"""Agent tools registry -- maps tool name strings to actual tool functions.""" from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from langchain_core.tools import BaseTool from app.agents.fallback import fallback_respond from app.agents.order_actions import cancel_order from app.agents.order_lookup import get_order_status, get_tracking_info _TOOL_MAP: dict[str, BaseTool] = { "get_order_status": get_order_status, "get_tracking_info": get_tracking_info, "cancel_order": cancel_order, "fallback_respond": fallback_respond, } def get_tools_by_names(tool_names: list[str]) -> list[BaseTool]: """Resolve tool name strings from YAML config to actual tool objects.""" tools = [] for name in tool_names: if name not in _TOOL_MAP: available = ", ".join(sorted(_TOOL_MAP.keys())) raise ValueError(f"Unknown tool '{name}'. Available tools: {available}") tools.append(_TOOL_MAP[name]) return tools