/
ncit
/
multiagentsystem
Обзор
Документация
Войти
/
ncit
/
multiagentsystem
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
api/src/agents/tools/registry.py
53 строки
2 KB
Nikita
feat: initial multi-agent platform scaffold
09 июн 2026, 00:48
09 июн 2026, 00:48
19cef10
Код
Авторство
О чём код?
"""Tool registry — modular, pluggable tools for agents. Each tool ID maps to an Agno tool instance. Tools are shared across agents (stateless singletons). """ from __future__ import annotations from typing import Any from agno.tools.duckduckgo import DuckDuckGoTools from agno.tools.python import PythonTools from agno.tools.sql import SQLTools # ─── Pre-instantiated tool singletons ───────────────────────────────────────── _TOOLS: dict[str, Any] = { # Coding "run_python": PythonTools(), "run_javascript": PythonTools(), # TODO: dedicated JS runner # Web "web_search": DuckDuckGoTools(), # TODO: implement these as custom Agno tools # "dalle": DalleTool(), # "stable_diffusion": StableDiffusionTool(), # "scrape_url": ScraperTool(), # "sql_query": SQLTools(db_url=settings.database_url), # "git_ops": GitTool(), # "chart_gen": ChartTool(), # "unity_script": UnityTool(), # "godot_script": GodotTool(), } def load_tools(tool_ids: list[str]) -> list[Any]: """Load tools by ID from the registry. Unknown IDs are silently skipped (allows forward-compat with user configs). """ return [t for tid in tool_ids if (t := _TOOLS.get(tid)) is not None] def list_tools() -> list[dict[str, str]]: """Return all registered tools.""" return [ {"id": tid, "name": type(t).__name__} for tid, t in _TOOLS.items() ] def register_tool(tool_id: str, tool: Any) -> None: """Register a custom tool at runtime (power user / admin API).""" _TOOLS[tool_id] = tool