feat(temple): add Temple modal with Tools browser and Skills management
This commit is contained in:
76
backend/app/schemas/tools.py
Normal file
76
backend/app/schemas/tools.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""Tools API Schemas"""
|
||||
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class ToolCommand(BaseModel):
|
||||
"""单个工具命令"""
|
||||
|
||||
name: str
|
||||
description: str
|
||||
parameters: dict = {}
|
||||
|
||||
|
||||
class ToolStats(BaseModel):
|
||||
"""工具调用统计"""
|
||||
|
||||
call_count: int = 0
|
||||
error_count: int = 0
|
||||
total_duration_ms: int = 0
|
||||
avg_duration_ms: int = 0
|
||||
error_rate: float = 0.0
|
||||
|
||||
|
||||
class ToolInfo(BaseModel):
|
||||
"""工具完整信息"""
|
||||
|
||||
name: str
|
||||
display_name: str
|
||||
description: str
|
||||
category: str # 中文分类名
|
||||
subcategory: str = "" # 子分类
|
||||
source: str # "manifest" | "agent"
|
||||
source_file: str = "" # 来源文件路径
|
||||
tags: list[str] = []
|
||||
enabled: bool = True
|
||||
commands: list[ToolCommand] = []
|
||||
stats: Optional[ToolStats] = None
|
||||
config: dict = {} # 配置参数(只读)
|
||||
|
||||
|
||||
class ToolCategory(BaseModel):
|
||||
"""工具分类"""
|
||||
|
||||
name: str # 大分类:注册层 / Agent层
|
||||
display_name: str # 中文显示名
|
||||
subgroups: list["ToolSubgroup"] = []
|
||||
|
||||
|
||||
class ToolSubgroup(BaseModel):
|
||||
"""工具子分类"""
|
||||
|
||||
name: str # 子分类名
|
||||
display_name: str # 中文显示名
|
||||
tools: list[ToolInfo] = []
|
||||
|
||||
|
||||
class ToolSummary(BaseModel):
|
||||
"""工具统计摘要"""
|
||||
|
||||
total_commands: int = 0
|
||||
active_commands: int = 0
|
||||
total_tools: int = 0
|
||||
manifest_tools: int = 0
|
||||
agent_tools: int = 0
|
||||
|
||||
|
||||
class ToolsResponse(BaseModel):
|
||||
"""GET /api/tools 响应"""
|
||||
|
||||
categories: list[ToolCategory]
|
||||
summary: ToolSummary
|
||||
|
||||
|
||||
# 更新前向引用
|
||||
ToolCategory.model_rebuild()
|
||||
Reference in New Issue
Block a user