hope / registry.py
Cunt1257's picture
Upload 11 files
a67fbf4 verified
Raw
History Blame Contribute Delete
1.02 kB
from typing import Dict, Optional, Type
from .base import BaseAgent
class AgentRegistry:
_agents: Dict[str, Type[BaseAgent]] = {}
@classmethod
def register(cls, agent_type: Optional[str] = None):
"""Decorator to register an agent class."""
def decorator(agent_cls: Type[BaseAgent]) -> Type[BaseAgent]:
key = agent_type or agent_cls.__name__
cls._agents[key] = agent_cls
return agent_cls
return decorator
@classmethod
def get(cls, agent_type: str) -> Type[BaseAgent]:
if agent_type not in cls._agents:
raise KeyError(f"Agent type '{agent_type}' not registered. "
f"Available: {list(cls._agents.keys())}")
return cls._agents[agent_type]
@classmethod
def list_types(cls) -> list:
return list(cls._agents.keys())
@classmethod
def create(cls, agent_type: str, **kwargs) -> BaseAgent:
return cls.get(agent_type)(**kwargs)
registry = AgentRegistry()