3.2: Create AgentRegistry
New file cheddahbot/agent_registry.py. Holds multiple Agent instances keyed by name with methods: register(), get(), list_agents(), and default property. First registered agent is the default. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cora-start
parent
6c2c28e9b0
commit
537e3bd528
|
|
@ -0,0 +1,49 @@
|
||||||
|
"""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)
|
||||||
Loading…
Reference in New Issue