|
|
@@ -91,6 +91,13 @@ def create_app(router: Router, session_manager: SessionManager = None) -> FastAP
|
|
|
"usage_example": g.usage_example,
|
|
|
})
|
|
|
|
|
|
+
|
|
|
+ # 构建 tool_id -> group_ids 反查表(避免 N*M 复杂度)
|
|
|
+ tool_to_groups: dict[str, list[str]] = {}
|
|
|
+ for g in router.registry.group_manager.list_all():
|
|
|
+ for tid in (g.tool_ids or []):
|
|
|
+ tool_to_groups.setdefault(tid, []).append(g.group_id)
|
|
|
+
|
|
|
tools = []
|
|
|
for tool in router.registry.list_all():
|
|
|
source = router.status_manager.get_primary_source(tool.tool_id)
|
|
|
@@ -101,7 +108,7 @@ def create_app(router: Router, session_manager: SessionManager = None) -> FastAP
|
|
|
"description": tool.description,
|
|
|
"category": tool.category,
|
|
|
"backend_runtime": tool.backend_runtime.value if tool.backend_runtime else "unknown",
|
|
|
- "group_ids": tool.group_ids,
|
|
|
+ "group_ids": tool_to_groups.get(tool.tool_id, []),
|
|
|
"input_schema": tool.input_schema,
|
|
|
"output_schema": tool.output_schema,
|
|
|
"state": route.state.value if route else "stopped",
|
|
|
@@ -123,6 +130,14 @@ def create_app(router: Router, session_manager: SessionManager = None) -> FastAP
|
|
|
@app.post("/search_tools")
|
|
|
async def search_tools(request: SearchToolsRequest):
|
|
|
kw = (request.keyword or "").lower()
|
|
|
+
|
|
|
+
|
|
|
+ # 构建 tool_id -> group_ids 反查表(避免 N*M 复杂度)
|
|
|
+ tool_to_groups: dict[str, list[str]] = {}
|
|
|
+ for g in router.registry.group_manager.list_all():
|
|
|
+ for tid in (g.tool_ids or []):
|
|
|
+ tool_to_groups.setdefault(tid, []).append(g.group_id)
|
|
|
+
|
|
|
tools = []
|
|
|
for tool in router.registry.list_all():
|
|
|
if kw:
|
|
|
@@ -155,7 +170,7 @@ def create_app(router: Router, session_manager: SessionManager = None) -> FastAP
|
|
|
"description": tool.description,
|
|
|
"category": tool.category,
|
|
|
"backend_runtime": tool.backend_runtime.value if tool.backend_runtime else "unknown",
|
|
|
- "group_ids": tool.group_ids,
|
|
|
+ "group_ids": tool_to_groups.get(tool.tool_id, []),
|
|
|
"input_schema": tool.input_schema,
|
|
|
"output_schema": tool.output_schema,
|
|
|
"params": params,
|