feat: add base agent and peer bus
This commit is contained in:
40
agent_service/agents/registry.py
Normal file
40
agent_service/agents/registry.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from __future__ import annotations
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AgentRegistry:
|
||||
def __init__(self):
|
||||
self._agents: dict = {} # agent_key -> BaseAgent instance
|
||||
self._active: set = set()
|
||||
self._capabilities: dict = {}
|
||||
|
||||
async def load_from_odoo(self, odoo_client):
|
||||
try:
|
||||
rows = await odoo_client.search_read(
|
||||
'ab.ai.agent.registry',
|
||||
[['is_active', '=', True]],
|
||||
['agent_key', 'name', 'capabilities_summary', 'sweep_enabled', 'sweep_interval_hours'])
|
||||
self._active = {r['agent_key'] for r in rows}
|
||||
self._capabilities = {r['agent_key']: r.get('capabilities_summary', '') for r in rows}
|
||||
logger.info('AgentRegistry loaded: active=%s', list(self._active))
|
||||
except Exception as exc:
|
||||
logger.error('AgentRegistry.load_from_odoo failed: %s', exc)
|
||||
|
||||
async def get_active_agents(self):
|
||||
return [{'agent_key': k, 'capabilities_summary': self._capabilities.get(k, '')}
|
||||
for k in self._active]
|
||||
|
||||
async def is_active(self, agent_key):
|
||||
return agent_key in self._active
|
||||
|
||||
async def sync(self, active_keys):
|
||||
self._active = set(active_keys)
|
||||
logger.info('AgentRegistry synced: active=%s', active_keys)
|
||||
|
||||
def register(self, agent_key, agent_instance):
|
||||
self._agents[agent_key] = agent_instance
|
||||
|
||||
def get_agent_instance(self, agent_key):
|
||||
return self._agents.get(agent_key)
|
||||
Reference in New Issue
Block a user