message / app /api /tools.py
hunian
feat: 重构插件平台后端运行时和状态契约
10b8d56
Raw
History Blame Contribute Delete
1.52 kB
"""
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