""" Tool 目录 API 端点 提供 GET /api/tools 和 GET /api/tools/{tool_name}。 """ from fastapi import APIRouter, HTTPException, Query from typing import Optional from app.plugins.tool_catalog import tool_catalog_service router = APIRouter() @router.get("/") async def get_tools( plugin: Optional[str] = Query(None, description="按插件名过滤"), source: Optional[str] = Query(None, description="按来源过滤"), availability: Optional[str] = Query(None, description="按可用状态过滤"), q: Optional[str] = Query(None, description="搜索关键词"), ): """获取 Tool 目录列表 Args: plugin: 按插件名过滤 source: 按来源过滤 availability: 按可用状态过滤(available/unavailable/incomplete) q: 搜索关键词(匹配名称、显示名、用途) Returns: ToolCatalogItem 列表 """ return tool_catalog_service.get_all_tools( plugin_name=plugin, source=source, availability=availability, q=q, ) @router.get("/{tool_name}") async def get_tool(tool_name: str): """获取单个 Tool 详情 Args: tool_name: 工具标识符 Returns: ToolCatalogItem Raises: HTTPException: 工具不存在时返回 404 """ tool = tool_catalog_service.get_tool(tool_name) if tool is None: raise HTTPException( status_code=404, detail=f"工具 {tool_name} 不存在", ) return tool