registry.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. from __future__ import annotations
  2. from typing import Dict, Iterable, List
  3. from backend.agents.base import BaseAgent
  4. from backend.agents.profiles import default_profiles
  5. from backend.agents.adapters.deep_research import DeepResearchAdapter
  6. from backend.agents.adapters.rss_digest import RSSDigestAdapter
  7. from backend.models import AgentProfile
  8. class AgentRegistry:
  9. def __init__(self) -> None:
  10. self._agents: Dict[str, BaseAgent] = {}
  11. def register(self, agent: BaseAgent) -> None:
  12. self._agents[agent.agent_id] = agent
  13. def get(self, agent_id: str) -> BaseAgent:
  14. return self._agents[agent_id]
  15. def list_profiles(self) -> List[AgentProfile]:
  16. return [agent.profile for agent in self._agents.values()]
  17. def ids(self) -> Iterable[str]:
  18. return self._agents.keys()
  19. def build_default_registry() -> AgentRegistry:
  20. registry = AgentRegistry()
  21. profiles = {profile.agent_id: profile for profile in default_profiles()}
  22. registry.register(DeepResearchAdapter(profiles["deep_research"]))
  23. registry.register(RSSDigestAdapter(profiles["rss_digest"]))
  24. return registry