diff --git a/src/control_backend/agents/bdi_agents/__init__.py b/src/control_backend/agents/bdi_agents/__init__.py index 76f4876..9b17f30 100644 --- a/src/control_backend/agents/bdi_agents/__init__.py +++ b/src/control_backend/agents/bdi_agents/__init__.py @@ -1 +1,5 @@ -from .bdi_core_agent import BDICoreAgent as BDICoreAgent +from .bdi_belief_collector_agent.bel_collector_agent import ( + BDIBeliefCollectorAgent as BDIBeliefCollectorAgent, +) +from .bdi_core_agent.bdi_core_agent import BDICoreAgent as BDICoreAgent +from .bdi_text_belief_agent.bdi_text_belief_agent import BDITextBeliefAgent as BDITextBeliefAgent diff --git a/src/control_backend/agents/bel_agents/bel_collector_agent/behaviours/continuous_collect.py b/src/control_backend/agents/bdi_agents/bdi_belief_collector_agent/behaviours/continuous_collect.py similarity index 100% rename from src/control_backend/agents/bel_agents/bel_collector_agent/behaviours/continuous_collect.py rename to src/control_backend/agents/bdi_agents/bdi_belief_collector_agent/behaviours/continuous_collect.py diff --git a/src/control_backend/agents/bel_agents/bel_collector_agent/bel_collector_agent.py b/src/control_backend/agents/bdi_agents/bdi_belief_collector_agent/bel_collector_agent.py similarity index 61% rename from src/control_backend/agents/bel_agents/bel_collector_agent/bel_collector_agent.py rename to src/control_backend/agents/bdi_agents/bdi_belief_collector_agent/bel_collector_agent.py index 5b633d5..39e55ff 100644 --- a/src/control_backend/agents/bel_agents/bel_collector_agent/bel_collector_agent.py +++ b/src/control_backend/agents/bdi_agents/bdi_belief_collector_agent/bel_collector_agent.py @@ -3,9 +3,9 @@ from control_backend.agents.base import BaseAgent from .behaviours.continuous_collect import ContinuousBeliefCollector -class BelCollectorAgent(BaseAgent): +class BDIBeliefCollectorAgent(BaseAgent): async def setup(self): - self.logger.info("BelCollectorAgent starting (%s)", self.jid) + self.logger.info("BDIBeliefCollectorAgent starting (%s)", self.jid) # Attach the continuous collector behaviour (listens and forwards to BDI) self.add_behaviour(ContinuousBeliefCollector()) - self.logger.info("BelCollectorAgent ready.") + self.logger.info("BDIBeliefCollectorAgent ready.") diff --git a/src/control_backend/agents/bdi_agents/bdi_core_agent.py b/src/control_backend/agents/bdi_agents/bdi_core_agent/bdi_core_agent.py similarity index 100% rename from src/control_backend/agents/bdi_agents/bdi_core_agent.py rename to src/control_backend/agents/bdi_agents/bdi_core_agent/bdi_core_agent.py diff --git a/src/control_backend/agents/bdi_agents/behaviours/belief_setter.py b/src/control_backend/agents/bdi_agents/bdi_core_agent/behaviours/belief_setter.py similarity index 97% rename from src/control_backend/agents/bdi_agents/behaviours/belief_setter.py rename to src/control_backend/agents/bdi_agents/bdi_core_agent/behaviours/belief_setter.py index 9ffb2f3..d96a239 100644 --- a/src/control_backend/agents/bdi_agents/behaviours/belief_setter.py +++ b/src/control_backend/agents/bdi_agents/bdi_core_agent/behaviours/belief_setter.py @@ -32,7 +32,7 @@ class BeliefSetterBehaviour(CyclicBehaviour): self.agent.logger.debug("Processing message from sender: %s", sender) match sender: - case settings.agent_settings.bel_collector_agent_name: + case settings.agent_settings.bdi_belief_collector_agent_name: self.agent.logger.debug( "Message is from the belief collector agent. Processing as belief message." ) diff --git a/src/control_backend/agents/bdi_agents/behaviours/receive_llm_resp_behaviour.py b/src/control_backend/agents/bdi_agents/bdi_core_agent/behaviours/receive_llm_resp_behaviour.py similarity index 100% rename from src/control_backend/agents/bdi_agents/behaviours/receive_llm_resp_behaviour.py rename to src/control_backend/agents/bdi_agents/bdi_core_agent/behaviours/receive_llm_resp_behaviour.py diff --git a/src/control_backend/agents/bdi_agents/rules.asl b/src/control_backend/agents/bdi_agents/bdi_core_agent/rules.asl similarity index 100% rename from src/control_backend/agents/bdi_agents/rules.asl rename to src/control_backend/agents/bdi_agents/bdi_core_agent/rules.asl diff --git a/src/control_backend/agents/bel_agents/bel_text_extract_agent/bel_text_extract_agent.py b/src/control_backend/agents/bdi_agents/bdi_text_belief_agent/bdi_text_belief_agent.py similarity index 83% rename from src/control_backend/agents/bel_agents/bel_text_extract_agent/bel_text_extract_agent.py rename to src/control_backend/agents/bdi_agents/bdi_text_belief_agent/bdi_text_belief_agent.py index 8716b4c..deaffa3 100644 --- a/src/control_backend/agents/bel_agents/bel_text_extract_agent/bel_text_extract_agent.py +++ b/src/control_backend/agents/bdi_agents/bdi_text_belief_agent/bdi_text_belief_agent.py @@ -3,6 +3,6 @@ from control_backend.agents.base import BaseAgent from .behaviours.text_belief_extractor import BeliefFromText -class BelTextExtractAgent(BaseAgent): +class BDITextBeliefAgent(BaseAgent): async def setup(self): self.add_behaviour(BeliefFromText()) diff --git a/src/control_backend/agents/bel_agents/bel_text_extract_agent/behaviours/text_belief_extractor.py b/src/control_backend/agents/bdi_agents/bdi_text_belief_agent/behaviours/text_belief_extractor.py similarity index 95% rename from src/control_backend/agents/bel_agents/bel_text_extract_agent/behaviours/text_belief_extractor.py rename to src/control_backend/agents/bdi_agents/bdi_text_belief_agent/behaviours/text_belief_extractor.py index 3606bd0..812bcc9 100644 --- a/src/control_backend/agents/bel_agents/bel_text_extract_agent/behaviours/text_belief_extractor.py +++ b/src/control_backend/agents/bdi_agents/bdi_text_belief_agent/behaviours/text_belief_extractor.py @@ -71,7 +71,7 @@ class BeliefFromText(CyclicBehaviour): belief_message = Message() belief_message.to = ( - settings.agent_settings.bel_collector_agent_name + settings.agent_settings.bdi_belief_collector_agent_name + "@" + settings.agent_settings.host ) @@ -95,7 +95,9 @@ class BeliefFromText(CyclicBehaviour): belief_msg = Message() belief_msg.to = ( - settings.agent_settings.bel_collector_agent_name + "@" + settings.agent_settings.host + settings.agent_settings.bdi_belief_collector_agent_name + + "@" + + settings.agent_settings.host ) belief_msg.body = payload belief_msg.thread = "beliefs" diff --git a/src/control_backend/agents/bel_agents/__init__.py b/src/control_backend/agents/bel_agents/__init__.py deleted file mode 100644 index 5f2ce21..0000000 --- a/src/control_backend/agents/bel_agents/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .bel_collector_agent.bel_collector_agent import BelCollectorAgent as BelCollectorAgent -from .bel_text_extract_agent.bel_text_extract_agent import ( - BelTextExtractAgent as BelTextExtractAgent, -) diff --git a/src/control_backend/agents/mock_agents/bel_text_agent.py b/src/control_backend/agents/mock_agents/bel_text_agent.py index 2808cae..2827307 100644 --- a/src/control_backend/agents/mock_agents/bel_text_agent.py +++ b/src/control_backend/agents/mock_agents/bel_text_agent.py @@ -11,7 +11,7 @@ class BelTextAgent(Agent): class SendOnceBehaviourBlfText(OneShotBehaviour): async def run(self): to_jid = ( - settings.agent_settings.bel_collector_agent_name + settings.agent_settings.bdi_belief_collector_agent_name + "@" + settings.agent_settings.host ) diff --git a/src/control_backend/agents/per_agents/per_transcription_agent/per_transcription_agent.py b/src/control_backend/agents/per_agents/per_transcription_agent/per_transcription_agent.py index 50571b8..e82b5d7 100644 --- a/src/control_backend/agents/per_agents/per_transcription_agent/per_transcription_agent.py +++ b/src/control_backend/agents/per_agents/per_transcription_agent/per_transcription_agent.py @@ -47,7 +47,7 @@ class PerTranscriptionAgent(BaseAgent): async def _share_transcription(self, transcription: str): """Share a transcription to the other agents that depend on it.""" receiver_jids = [ - settings.agent_settings.texbel_text_extractor_agent_name + settings.agent_settings.texbdi_text_belief_agent_name + "@" + settings.agent_settings.host, ] # Set message receivers here diff --git a/src/control_backend/core/config.py b/src/control_backend/core/config.py index 955ce16..150a06e 100644 --- a/src/control_backend/core/config.py +++ b/src/control_backend/core/config.py @@ -10,8 +10,8 @@ class ZMQSettings(BaseModel): class AgentSettings(BaseModel): host: str = "localhost" bdi_core_agent_agent_name: str = "bdi_core_agent" - bel_collector_agent_name: str = "bel_collector_agent" - bel_text_extractor_agent_name: str = "bel_text_extractor_agent" + bdi_belief_collector_agent_name: str = "bdi_belief_collector_agent" + bdi_text_belief_agent_name: str = "bdi_text_belief_agent" per_vad_agent_name: str = "per_vad_agent" llm_agent_name: str = "llm_agent" test_agent_name: str = "test_agent" diff --git a/src/control_backend/main.py b/src/control_backend/main.py index be0827e..008a8e3 100644 --- a/src/control_backend/main.py +++ b/src/control_backend/main.py @@ -9,10 +9,11 @@ from zmq.asyncio import Context # Act agents # BDI agents -from control_backend.agents.bdi_agents import BDICoreAgent - -# Believe Agents -from control_backend.agents.bel_agents import BelCollectorAgent, BelTextExtractAgent +from control_backend.agents.bdi_agents import ( + BDIBeliefCollectorAgent, + BDICoreAgent, + BDITextBeliefAgent, +) # Communication agents from control_backend.agents.com_agents import ComRIAgent @@ -104,22 +105,22 @@ async def lifespan(app: FastAPI): "asl": "src/control_backend/agents/bdi/rules.asl", }, ), - "BelCollectorAgent": ( - BelCollectorAgent, + "BDIBeliefCollectorAgent": ( + BDIBeliefCollectorAgent, { - "name": settings.agent_settings.bel_collector_agent_name, - "jid": f"{settings.agent_settings.bel_collector_agent_name}@" + "name": settings.agent_settings.bdi_belief_collector_agent_name, + "jid": f"{settings.agent_settings.bdi_belief_collector_agent_name}@" f"{settings.agent_settings.host}", - "password": settings.agent_settings.bel_collector_agent_name, + "password": settings.agent_settings.bdi_belief_collector_agent_name, }, ), "TBeliefExtractor": ( - BelTextExtractAgent, + BDITextBeliefAgent, { - "name": settings.agent_settings.bel_text_extractor_agent_name, - "jid": f"{settings.agent_settings.bel_text_extractor_agent_name}@" + "name": settings.agent_settings.bdi_text_belief_agent_name, + "jid": f"{settings.agent_settings.bdi_text_belief_agent_name}@" f"{settings.agent_settings.host}", - "password": settings.agent_settings.bel_text_extractor_agent_name, + "password": settings.agent_settings.bdi_text_belief_agent_name, }, ), "PerVADAgent": ( diff --git a/test/unit/agents/bdi/behaviours/test_belief_setter.py b/test/unit/agents/bdi/behaviours/test_belief_setter.py index 5a3b18e..238285a 100644 --- a/test/unit/agents/bdi/behaviours/test_belief_setter.py +++ b/test/unit/agents/bdi/behaviours/test_belief_setter.py @@ -4,10 +4,12 @@ from unittest.mock import AsyncMock, MagicMock, call import pytest -from control_backend.agents.bdi_agents.behaviours.belief_setter import BeliefSetterBehaviour +from control_backend.agents.bdi_agents.bdi_core_agent.behaviours.belief_setter import ( + BeliefSetterBehaviour, +) # Define a constant for the collector agent name to use in tests -COLLECTOR_AGENT_NAME = "bel_collector_agent" +COLLECTOR_AGENT_NAME = "bdi_belief_collector_agent" COLLECTOR_AGENT_JID = f"{COLLECTOR_AGENT_NAME}@test" @@ -25,7 +27,8 @@ def belief_setter(mock_agent, mocker): """Fixture to create an instance of BeliefSetterBehaviour with a mocked agent.""" # Patch the settings to use a predictable agent name mocker.patch( - "control_backend.agents.bdi_agents.behaviours.belief_setter.settings.agent_settings.bel_collector_agent_name", + "control_backend.agents.bdi_agents.bdi_core_agent." + "behaviours.belief_setter.settings.agent_settings.bdi_belief_collector_agent_name", COLLECTOR_AGENT_NAME, ) @@ -62,7 +65,7 @@ async def test_run_message_received(belief_setter, mocker): belief_setter._process_message.assert_called_once_with(msg) -def test_process_message_from_bel_collector_agent(belief_setter, mocker): +def test_process_message_from_bdi_belief_collector_agent(belief_setter, mocker): """ Test processing a message from the correct belief collector agent. """ diff --git a/test/unit/agents/belief_collector/behaviours/test_continuous_collect.py b/test/unit/agents/belief_collector/behaviours/test_continuous_collect.py index a21cc06..40136c6 100644 --- a/test/unit/agents/belief_collector/behaviours/test_continuous_collect.py +++ b/test/unit/agents/belief_collector/behaviours/test_continuous_collect.py @@ -3,7 +3,7 @@ from unittest.mock import AsyncMock, MagicMock import pytest -from control_backend.agents.bel_agents.bel_collector_agent.behaviours.continuous_collect import ( +from control_backend.agents.bdi_agents.bdi_belief_collector_agent.behaviours.continuous_collect import ( # noqa: E501 ContinuousBeliefCollector, ) @@ -20,7 +20,7 @@ def create_mock_message(sender_node: str, body: str) -> MagicMock: def mock_agent(mocker): """Fixture to create a mock Agent.""" agent = MagicMock() - agent.jid = "bel_collector_agent@test" + agent.jid = "bdi_belief_collector_agent@test" return agent diff --git a/test/unit/agents/belief_from_text/behaviours/test_belief_from_text.py b/test/unit/agents/belief_from_text/behaviours/test_belief_from_text.py index 4efd0e3..cd2fda1 100644 --- a/test/unit/agents/belief_from_text/behaviours/test_belief_from_text.py +++ b/test/unit/agents/belief_from_text/behaviours/test_belief_from_text.py @@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest from spade.message import Message -from control_backend.agents.bel_agents.bel_text_extract_agent.behaviours.text_belief_extractor import ( # noqa: E501, We can't shorten this import. +from control_backend.agents.bdi_agents.bdi_text_belief_agent.behaviours.text_belief_extractor import ( # noqa: E501, We can't shorten this import. BeliefFromText, ) @@ -18,14 +18,14 @@ def mock_settings(): # Create a mock object that mimics the nested structure settings_mock = MagicMock() settings_mock.agent_settings.per_transcription_agent_name = "transcriber" - settings_mock.agent_settings.bel_collector_agent_name = "collector" + settings_mock.agent_settings.bdi_belief_collector_agent_name = "collector" settings_mock.agent_settings.host = "fake.host" # Use patch to replace the settings object during the test # Adjust 'control_backend.behaviours.belief_from_text.settings' to where # your behaviour file imports it from. with patch( - "control_backend.agents.bel_agents.bel_text_extract_agent.behaviours.text_belief_extractor.settings", + "control_backend.agents.bdi_agents.bdi_text_belief_agent.behaviours.text_belief_extractor.settings", settings_mock, ): yield settings_mock @@ -122,7 +122,7 @@ async def test_run_message_from_transcriber_demo(behavior, mock_settings, monkey assert ( sent_msg.to - == mock_settings.agent_settings.bel_collector_agent_name + == mock_settings.agent_settings.bdi_belief_collector_agent_name + "@" + mock_settings.agent_settings.host ) @@ -162,7 +162,7 @@ async def test_process_transcription_success(behavior, mock_settings): # 2. Inspect the sent message sent_msg: Message = behavior.send.call_args[0][0] expected_to = ( - mock_settings.agent_settings.bel_collector_agent_name + mock_settings.agent_settings.bdi_belief_collector_agent_name + "@" + mock_settings.agent_settings.host )