from typing import Callable, Dict, Any
from .tool_executor import available_functions
from .tool_definitions import tool_definitions

class ToolRegistry:
    def __init__(self):
        self.tools: Dict[str, Callable] = {}
        self._register_core_tools()

    def _register_core_tools(self):
        for tool in tool_definitions:
            func = available_functions.get(tool['name'])
            self.register(tool['name'], func)

    def register(self, name: str, method: Callable) -> None:
        if name in self.tools:
            raise ValueError(f"Tool {name} already registered")
        self.tools[name] = method

    def get_method(self, name: str) -> Callable:
        if name not in self.tools:
            raise KeyError(f"Tool {name} not found in registry")
        return self.tools[name]

# Singleton instance
tool_registry = ToolRegistry()