/
man4j
/
agent-server
Обзор
Документация
Войти
/
man4j
/
agent-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/agent_server/config/agents.py
66 строк
2 KB
Vladimir
fixes
25 апр 2026, 18:59
25 апр 2026, 18:59
53a2633
Код
Авторство
О чём код?
import os from dataclasses import dataclass from pathlib import Path from agent_server.config.paths import AGENTS_DIR @dataclass(frozen=True) class AgentDefinition: id: str dir_path: Path system_prompt_file: Path summary_prompt_file: Path | None = None skills_dir: Path | None = None def get_agent_dir(agent_id: str) -> Path: value = (agent_id or "").strip() if not value: raise ValueError("Agent id must not be empty") agent_dir = AGENTS_DIR / value if not agent_dir.exists() or not agent_dir.is_dir(): raise ValueError(f"Agent directory not found: {agent_dir}") return agent_dir def load_agent_definition(agent_id: str) -> AgentDefinition: agent_dir = get_agent_dir(agent_id) system_prompt_file = agent_dir / "system_prompt.txt" summary_prompt_file = agent_dir / "summary_prompt.txt" skills_dir = agent_dir / "skills" if not system_prompt_file.exists(): raise ValueError(f"Agent system prompt file not found: {system_prompt_file}") return AgentDefinition( id=agent_id, dir_path=agent_dir, system_prompt_file=system_prompt_file, summary_prompt_file=summary_prompt_file if summary_prompt_file.exists() else None, skills_dir=skills_dir if skills_dir.exists() and skills_dir.is_dir() else None, ) def _load_text_file(path: str | os.PathLike) -> str: with open(path, encoding="utf-8") as f: return f.read() def load_system_prompt( system_prompt_file: str | os.PathLike, *, skills_dir: str | os.PathLike | None = None, ) -> str: parts = [_load_text_file(system_prompt_file)] if skills_dir: for skill_file in sorted(Path(skills_dir).glob("*.txt")): skill_text = _load_text_file(skill_file).strip() if skill_text: parts.append(skill_text) return "\n\n".join(parts)