From b785493b97a54fadd118ab3444eb748b3e711bd5 Mon Sep 17 00:00:00 2001 From: Twirre Meulenbelt <43213592+TwirreM@users.noreply.github.com> Date: Wed, 12 Nov 2025 11:47:59 +0100 Subject: [PATCH] fix: messages are None when no message is received ref: N25B-265 --- src/control_backend/agents/bdi/behaviours/belief_setter.py | 4 +++- .../agents/bdi/behaviours/receive_llm_resp_behaviour.py | 4 +++- .../agents/bdi/behaviours/text_belief_extractor.py | 4 ++-- .../agents/belief_collector/behaviours/continuous_collect.py | 4 +++- src/control_backend/agents/llm/llm.py | 4 +++- src/control_backend/agents/ri_command_agent.py | 4 +++- 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/control_backend/agents/bdi/behaviours/belief_setter.py b/src/control_backend/agents/bdi/behaviours/belief_setter.py index 195fb76..ba68b69 100644 --- a/src/control_backend/agents/bdi/behaviours/belief_setter.py +++ b/src/control_backend/agents/bdi/behaviours/belief_setter.py @@ -17,7 +17,9 @@ class BeliefSetterBehaviour(CyclicBehaviour): async def run(self): """Polls for messages and processes them.""" - msg = await self.receive() + msg = await self.receive(timeout=1) + if not msg: + return self.agent.logger.debug( "Received message from %s with thread '%s' and body: %s", msg.sender, diff --git a/src/control_backend/agents/bdi/behaviours/receive_llm_resp_behaviour.py b/src/control_backend/agents/bdi/behaviours/receive_llm_resp_behaviour.py index a891eca..5d68494 100644 --- a/src/control_backend/agents/bdi/behaviours/receive_llm_resp_behaviour.py +++ b/src/control_backend/agents/bdi/behaviours/receive_llm_resp_behaviour.py @@ -11,7 +11,9 @@ class ReceiveLLMResponseBehaviour(CyclicBehaviour): """ async def run(self): - msg = await self.receive() + msg = await self.receive(timeout=1) + if not msg: + return sender = msg.sender.node match sender: diff --git a/src/control_backend/agents/bdi/behaviours/text_belief_extractor.py b/src/control_backend/agents/bdi/behaviours/text_belief_extractor.py index 8a8273e..ca6bcae 100644 --- a/src/control_backend/agents/bdi/behaviours/text_belief_extractor.py +++ b/src/control_backend/agents/bdi/behaviours/text_belief_extractor.py @@ -38,8 +38,8 @@ class BeliefFromText(CyclicBehaviour): beliefs = {"mood": ["X"], "car": ["Y"]} async def run(self): - msg = await self.receive() - if msg is None: + msg = await self.receive(timeout=1) + if not msg: return sender = msg.sender.node diff --git a/src/control_backend/agents/belief_collector/behaviours/continuous_collect.py b/src/control_backend/agents/belief_collector/behaviours/continuous_collect.py index 4dc62e8..c9bf4c9 100644 --- a/src/control_backend/agents/belief_collector/behaviours/continuous_collect.py +++ b/src/control_backend/agents/belief_collector/behaviours/continuous_collect.py @@ -14,7 +14,9 @@ class ContinuousBeliefCollector(CyclicBehaviour): """ async def run(self): - msg = await self.receive() + msg = await self.receive(timeout=1) + if not msg: + return await self._process_message(msg) async def _process_message(self, msg: Message): diff --git a/src/control_backend/agents/llm/llm.py b/src/control_backend/agents/llm/llm.py index 4aec46b..e115509 100644 --- a/src/control_backend/agents/llm/llm.py +++ b/src/control_backend/agents/llm/llm.py @@ -30,7 +30,9 @@ class LLMAgent(BaseAgent): Receives SPADE messages and processes only those originating from the configured BDI agent. """ - msg = await self.receive() + msg = await self.receive(timeout=1) + if not msg: + return sender = msg.sender.node self.agent.logger.debug( diff --git a/src/control_backend/agents/ri_command_agent.py b/src/control_backend/agents/ri_command_agent.py index ac561ed..e467ff5 100644 --- a/src/control_backend/agents/ri_command_agent.py +++ b/src/control_backend/agents/ri_command_agent.py @@ -54,7 +54,9 @@ class RICommandAgent(BaseAgent): """Behaviour for sending commands received from other Python agents.""" async def run(self): - message: spade.agent.Message = await self.receive(timeout=0.1) + message: spade.agent.Message = await self.receive(timeout=1) + if not message: + return if message and message.to == self.agent.jid: try: speech_command = SpeechCommand.model_validate_json(message.body)