50 lines
No EOL
1.2 KiB
Python
50 lines
No EOL
1.2 KiB
Python
"""Agent registry for MAX surface."""
|
|
import os
|
|
import yaml
|
|
from typing import List, Optional
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class AgentConfig:
|
|
id: str
|
|
label: str
|
|
base_url: str
|
|
workspace_path: str
|
|
|
|
|
|
@dataclass
|
|
class AgentRegistry:
|
|
agents: List[AgentConfig] = field(default_factory=list)
|
|
|
|
def get_agent_for_user(self, user_id: str) -> AgentConfig:
|
|
return self.agents[0]
|
|
|
|
def get_agent_by_id(self, agent_id: str) -> Optional[AgentConfig]:
|
|
for agent in self.agents:
|
|
if agent.id == agent_id:
|
|
return agent
|
|
return None
|
|
|
|
|
|
def load_agent_registry(path: str) -> AgentRegistry:
|
|
with open(path, "r") as f:
|
|
data = yaml.safe_load(f)
|
|
|
|
registry = AgentRegistry()
|
|
for a in data.get("agents", []):
|
|
registry.agents.append(AgentConfig(
|
|
id=a["id"],
|
|
label=a.get("label", ""),
|
|
base_url=a["base_url"],
|
|
workspace_path=a["workspace_path"],
|
|
))
|
|
return registry
|
|
|
|
|
|
def load_from_env() -> AgentRegistry:
|
|
path = os.environ.get(
|
|
"MAX_AGENT_REGISTRY_PATH",
|
|
"/app/config/max-agents.yaml",
|
|
)
|
|
return load_agent_registry(path) |