diff --git a/src/swf_common_lib/base_agent.py b/src/swf_common_lib/base_agent.py index 8a70bbe..4d0ed3d 100644 --- a/src/swf_common_lib/base_agent.py +++ b/src/swf_common_lib/base_agent.py @@ -281,6 +281,12 @@ def run(self): import traceback traceback.print_exc() finally: + # Report exit status before disconnecting + try: + self.report_agent_status("EXITED", "Agent shutdown") + except Exception as e: + logging.warning(f"Failed to report exit status: {e}") + if self.conn and self.conn.is_connected(): self.conn.disconnect() self.mq_connected = False @@ -397,11 +403,18 @@ def send_message(self, destination, message_body): Sends a JSON message to a specific destination. Auto-injects 'sender' (agent_name) and 'namespace' (if configured) into message. + Warns if namespace is not configured - messages without namespace cannot be + filtered by namespace-aware agents. """ # Auto-inject sender and namespace message_body['sender'] = self.agent_name if self.namespace: message_body['namespace'] = self.namespace + else: + logging.warning( + f"Sending message without namespace (msg_type={message_body.get('msg_type', 'unknown')}). " + "Configure namespace in testbed.toml to enable namespace filtering." + ) try: self.conn.send(body=json.dumps(message_body), destination=destination)