"""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)