main
py 46 lines 1.68 KB
Raw
1 from __future__ import annotations
2
3 from typing import Any
4
5 from plugins._orchestrator.helpers.adapters.a0 import AgentZeroAdapter
6 from plugins._orchestrator.helpers.adapters.base import TerminalAgentAdapter
7 from plugins._orchestrator.helpers.adapters.claude import ClaudeCodeAdapter
8 from plugins._orchestrator.helpers.adapters.codex import CodexAdapter
9 from plugins._orchestrator.helpers.adapters.cursor import CursorCliAdapter
10 from plugins._orchestrator.helpers.adapters.gemini import GeminiCliAdapter
11 from plugins._orchestrator.helpers.adapters.grok import GrokBuildAdapter
12 from plugins._orchestrator.helpers.adapters.hermes import HermesAgentAdapter
13 from plugins._orchestrator.helpers.adapters.opencode import OpenCodeAdapter
14
15 # Register new terminal agent adapters here.
16 _ADAPTERS: dict[str, TerminalAgentAdapter] = {
17 adapter.id: adapter
18 for adapter in (
19 AgentZeroAdapter(),
20 CodexAdapter(),
21 ClaudeCodeAdapter(),
22 CursorCliAdapter(),
23 GeminiCliAdapter(),
24 GrokBuildAdapter(),
25 HermesAgentAdapter(),
26 OpenCodeAdapter(),
27 )
28 }
29
30
31 def get_adapter(agent_id: str) -> TerminalAgentAdapter:
32 adapter = _ADAPTERS.get(str(agent_id or "").strip().lower())
33 if adapter is None:
34 known = ", ".join(sorted(_ADAPTERS))
35 raise ValueError(f"Unknown terminal agent '{agent_id}'. Available: {known}")
36 return adapter
37
38
39 def list_adapters() -> list[TerminalAgentAdapter]:
40 return list(_ADAPTERS.values())
41
42
43 def adapter_config(agent_id: str, plugin_config: dict[str, Any] | None) -> dict[str, Any]:
44 source = plugin_config if isinstance(plugin_config, dict) else {}
45 raw = source.get(agent_id)
46 return raw if isinstance(raw, dict) else {}