Merge remote-tracking branch 'origin/dev' into feat/belief-collector

This commit is contained in:
Pim Hutting
2025-10-29 15:14:42 +01:00
35 changed files with 2169 additions and 116 deletions

View File

@@ -1,19 +1,20 @@
# Standard library imports
import asyncio
import json
# External imports
import contextlib
import logging
import zmq
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import logging
from spade.agent import Agent, Message
from spade.behaviour import OneShotBehaviour
import zmq
# Internal imports
from control_backend.agents.ri_communication_agent import RICommunicationAgent
from control_backend.agents.bdi.bdi_core import BDICoreAgent
from control_backend.agents.vad_agent import VADAgent
from control_backend.agents.llm.llm import LLMAgent
from control_backend.api.v1.router import api_router
from control_backend.core.config import AgentSettings, settings
from control_backend.core.config import settings
from control_backend.core.zmq_context import context
@@ -26,6 +27,7 @@ from control_backend.agents.mock_agents.belief_text_mock import BeliefTextAgent
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
@contextlib.asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("%s starting up.", app.title)
@@ -37,43 +39,62 @@ async def lifespan(app: FastAPI):
app.state.internal_comm_socket = internal_comm_socket
logger.info("Internal publishing socket bound to %s", internal_comm_socket)
# Initiate agents
host = settings.agent_settings.host
# Initiate agents
bdi_core = BDICoreAgent(
settings.agent_settings.bdi_core_agent_name + '@' + host,
settings.agent_settings.bdi_core_agent_name + '@' + settings.agent_settings.host,
settings.agent_settings.bdi_core_agent_name,
"src/control_backend/agents/bdi/rules.asl"
)
belief_collector = BeliefCollectorAgent(
settings.agent_settings.belief_collector_agent_name + '@' + host,
settings.agent_settings.belief_collector_agent_name + '@' + settings.agent_settings.host,
settings.agent_settings.belief_collector_agent_name
)
belief_text_mock = BeliefTextAgent(
settings.agent_settings.belief_text_agent_mock_name + '@' + host,
settings.agent_settings.belief_text_agent_mock_name + '@' + settings.agent_settings.host,
settings.agent_settings.belief_text_agent_mock_name
)
ri_communication_agent = RICommunicationAgent(
settings.agent_settings.ri_communication_agent_name + "@" + settings.agent_settings.host,
settings.agent_settings.ri_communication_agent_name,
address="tcp://*:5555",
bind=True,
)
llm_agent = LLMAgent(settings.agent_settings.llm_agent_name + '@' + settings.agent_settings.host,
settings.agent_settings.llm_agent_name)
_temp_vad_agent = VADAgent("tcp://localhost:5558", False)
await bdi_core.start()
await belief_collector.start()
await belief_text_mock.start()
await ri_communication_agent.start()
await llm_agent.start()
await bdi_core.start()
await _temp_vad_agent.start()
yield
logger.info("%s shutting down.", app.title)
# if __name__ == "__main__":
app = FastAPI(title=settings.app_title, lifespan=lifespan)
# This middleware allows other origins to communicate with us
app.add_middleware(
CORSMiddleware, # https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS
allow_origins=[settings.ui_url], # address of our UI application
allow_methods=["*"], # GET, POST, etc.
CORSMiddleware, # https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS
allow_origins=[settings.ui_url], # address of our UI application
allow_methods=["*"], # GET, POST, etc.
)
app.include_router(api_router, prefix="") # TODO: make prefix /api/v1
app.include_router(api_router, prefix="") # TODO: make prefix /api/v1
@app.get("/")
async def root():