Software_Engineer_Agent / backend /tools /tool_registry.py
G-Madhuri's picture
deploy to hf space
7e2f74d
Raw
History Blame Contribute Delete
1.86 kB
from typing import Dict, Any, List
from tools.base_tool import BaseTool
from tools.repository_search_tool import RepositorySearchTool
from tools.graph_query_tool import GraphQueryTool
from tools.dependency_lookup_tool import DependencyLookupTool
from tools.file_reader_tool import FileReaderTool
from tools.architecture_lookup_tool import ArchitectureLookupTool
from tools.api_lookup_tool import ApiLookupTool
class ToolRegistry:
"""
Registry for managing and executing repository intelligence tools.
Compatible with agent planners and the Model Context Protocol (MCP).
"""
def __init__(self):
self._tools: Dict[str, BaseTool] = {}
def register(self, tool: BaseTool):
self._tools[tool.name] = tool
def get_tool(self, name: str) -> BaseTool:
return self._tools.get(name)
def list_tools(self) -> List[Dict[str, str]]:
return [
{"name": tool.name, "description": tool.description}
for tool in self._tools.values()
]
def execute_tool(self, name: str, **kwargs) -> Any:
tool = self.get_tool(name)
if not tool:
return {"error": f"Tool '{name}' not found in registry."}
try:
return tool.execute(**kwargs)
except Exception as e:
return {"error": f"Error executing tool '{name}': {str(e)}"}
# Global tool registry instance
tool_registry = ToolRegistry()
def setup_default_registry(vector_store, retriever):
"""Utility to register all standard repository tools with dependencies."""
tool_registry.register(RepositorySearchTool(retriever))
tool_registry.register(FileReaderTool(vector_store))
tool_registry.register(GraphQueryTool())
tool_registry.register(DependencyLookupTool())
tool_registry.register(ArchitectureLookupTool())
tool_registry.register(ApiLookupTool())