Spaces:
Running
Running
| """Tool registry for AI agent. | |
| [Task]: T009 | |
| [From]: specs/004-ai-chatbot/plan.md | |
| This module provides a simple registry for tools that the AI agent can use. | |
| Note: We're using OpenAI Agents SDK's built-in tool calling mechanism, | |
| not the full Model Context Protocol server. | |
| """ | |
| from typing import Any, Callable, Dict | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| # Tool registry - maps tool names to their functions | |
| tool_registry: Dict[str, Callable] = {} | |
| def register_tool(name: str, func: Callable) -> None: | |
| """Register a tool function. | |
| Args: | |
| name: Tool name | |
| func: Tool function (async) | |
| """ | |
| tool_registry[name] = func | |
| logger.info(f"Registered tool: {name}") | |
| def get_tool(name: str) -> Callable: | |
| """Get a registered tool by name. | |
| Args: | |
| name: Tool name | |
| Returns: | |
| The tool function | |
| Raises: | |
| ValueError: If tool not found | |
| """ | |
| if name not in tool_registry: | |
| raise ValueError(f"Tool '{name}' not found. Available tools: {list(tool_registry.keys())}") | |
| return tool_registry[name] | |
| def list_tools() -> list[str]: | |
| """List all registered tools. | |
| Returns: | |
| List of tool names | |
| """ | |
| return list(tool_registry.keys()) | |
| # Note: Tools are registered in the tools/__init__.py module | |
| # The OpenAI Agents SDK will call these functions directly | |
| # based on the agent's instructions and user input | |