CheddahBot/cheddahbot/agent_registry.py

50 lines
1.3 KiB
Python

"""Multi-agent registry.
Holds multiple Agent instances keyed by name. The first registered
agent is the default (used by scheduler and as fallback).
"""
from __future__ import annotations
import logging
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .agent import Agent
log = logging.getLogger(__name__)
class AgentRegistry:
"""Registry of named Agent instances."""
def __init__(self):
self._agents: dict[str, Agent] = {}
self._default_name: str | None = None
def register(self, name: str, agent: Agent, is_default: bool = False):
"""Register an agent by name."""
self._agents[name] = agent
if is_default or self._default_name is None:
self._default_name = name
log.info("Registered agent: %s (default=%s)", name, name == self._default_name)
def get(self, name: str) -> Agent | None:
return self._agents.get(name)
def list_agents(self) -> list[str]:
return list(self._agents.keys())
@property
def default(self) -> Agent | None:
if self._default_name:
return self._agents.get(self._default_name)
return None
@property
def default_name(self) -> str:
return self._default_name or "default"
def __len__(self) -> int:
return len(self._agents)