FlyBrain-Lab / src /tools /registry.py
timfromhcs's picture
FlyBrain v4.1.0 Space build (REAL_SUBGRAPH, CPU-only, honest backend)
3d46076 verified
Raw History Blame Contribute Delete
1.04 kB
from typing import Dict, List, Any, Optional
from src.tools.base import ToolConnector
class ToolRegistry:
def __init__(self):
self._connectors: Dict[str, ToolConnector] = {}
def register(self, connector: ToolConnector):
self._connectors[connector.name] = connector
def get(self, name: str) -> Optional[ToolConnector]:
return self._connectors.get(name)
def list_tools(self) -> List[Dict[str, Any]]:
return [
{
"name": c.name,
"description": c.description,
"input_schema": c.input_schema,
"output_schema": c.output_schema,
"execution_count": len(c.execution_history)
}
for c in self._connectors.values()
]
def execute(self, tool_name: str, params: Dict[str, Any]) -> Dict[str, Any]:
connector = self.get(tool_name)
if not connector:
raise KeyError(f"Tool connector '{tool_name}' not registered!")
return connector.run(params)