feat: add program manager
ref: N25B-299
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
import json
|
||||
|
||||
from pydantic import ValidationError
|
||||
|
||||
from control_backend.agents.base import BaseAgent
|
||||
from control_backend.core.agent_system import InternalMessage
|
||||
from control_backend.core.config import settings
|
||||
from control_backend.schemas.belief_message import BeliefMessage
|
||||
from control_backend.schemas.belief_message import Belief, BeliefMessage
|
||||
|
||||
|
||||
class BDIBeliefCollectorAgent(BaseAgent):
|
||||
@@ -60,10 +62,30 @@ class BDIBeliefCollectorAgent(BaseAgent):
|
||||
self.logger.debug("Received empty beliefs set.")
|
||||
return
|
||||
|
||||
def try_create_belief(name, arguments) -> Belief | None:
|
||||
"""
|
||||
Create a belief object from name and arguments, or return None silently if the input is
|
||||
not correct.
|
||||
|
||||
:param name: The name of the belief.
|
||||
:param arguments: The arguments of the belief.
|
||||
:return: A Belief object if the input is valid or None.
|
||||
"""
|
||||
try:
|
||||
return Belief(name=name, arguments=arguments)
|
||||
except ValidationError:
|
||||
return None
|
||||
|
||||
beliefs = [
|
||||
belief
|
||||
for name, arguments in beliefs.items()
|
||||
if (belief := try_create_belief(name, arguments)) is not None
|
||||
]
|
||||
|
||||
self.logger.debug("Forwarding %d beliefs.", len(beliefs))
|
||||
for belief_name, belief_list in beliefs.items():
|
||||
for belief in belief_list:
|
||||
self.logger.debug(" - %s %s", belief_name, str(belief))
|
||||
for belief in beliefs:
|
||||
for argument in belief.arguments:
|
||||
self.logger.debug(" - %s %s", belief.name, argument)
|
||||
|
||||
await self._send_beliefs_to_bdi(beliefs, origin=origin)
|
||||
|
||||
@@ -71,7 +93,7 @@ class BDIBeliefCollectorAgent(BaseAgent):
|
||||
"""TODO: implement (after we have emotional recognition)"""
|
||||
pass
|
||||
|
||||
async def _send_beliefs_to_bdi(self, beliefs: dict, origin: str | None = None):
|
||||
async def _send_beliefs_to_bdi(self, beliefs: list[Belief], origin: str | None = None):
|
||||
"""
|
||||
Sends a unified belief packet to the BDI agent.
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user