import pytest from aegis.core import Agent, AgentContext, AgentResult from aegis.core.registry import ( AgentNotFoundError, AgentRegistry, DuplicateAgentError, ) class StubAgent(Agent): def __init__(self, name: str) -> None: self.name = name async def run(self, context: AgentContext) -> AgentResult: return AgentResult( agent_name=self.name, success=True, output={"task": context.task.name}, ) def test_registry_registers_and_resolves_agent() -> None: agent = StubAgent("planner") registry = AgentRegistry() registry.register(agent) assert registry.get("planner") is agent assert registry.contains("planner") is True assert len(registry) == 1 def test_registry_rejects_duplicate_agent_names() -> None: registry = AgentRegistry([StubAgent("planner")]) with pytest.raises(DuplicateAgentError): registry.register(StubAgent("planner")) def test_registry_raises_when_agent_is_missing() -> None: registry = AgentRegistry() with pytest.raises(AgentNotFoundError): registry.get("missing") def test_registry_returns_sorted_names() -> None: registry = AgentRegistry( [ StubAgent("research"), StubAgent("planner"), ] ) assert registry.names() == ("planner", "research")