"""LangChain tool definitions for the ReAct agent.""" from app.tools.kb import kb_search from app.tools.tickets import ticket_list, ticket_detail from app.tools.document import generate_document from app.tools.sandbox import sandbox_run from app.tools.serper import serper_search # Mapping from frontend tool names to LangChain tool objects. # "search" is no longer here — it is handled via Jina MCP in chat.py. # "serper" uses Google Serper REST API, independent from Jina MCP. _TOOL_MAP: dict[str, list] = { "knowledge": [kb_search], "tickets": [ticket_list, ticket_detail], "document": [generate_document], "sandbox": [sandbox_run], "serper": [serper_search], } def resolve_tools(tool_keys: list[str]) -> tuple[list, bool]: """Return (regular_tools, needs_jina_mcp).""" needs_jina_mcp = "search" in tool_keys tools = [] for key in tool_keys: if key in _TOOL_MAP: tools.extend(_TOOL_MAP[key]) return tools, needs_jina_mcp