| from app.plugins.models import PluginStatus |
| from app.plugins.tool_catalog import ToolCatalogService |
|
|
|
|
| class _Registry: |
| def get_tool_docs(self): |
| return { |
| "demo_plugin_run": { |
| "plugin": "demo_plugin", |
| "tool": "run", |
| "title": "运行任务", |
| "description": "执行演示任务", |
| "availability": "available", |
| "unavailable_reason": None, |
| "incomplete_reasons": None, |
| } |
| } |
|
|
|
|
| class _PluginManager: |
| def get_plugin_status(self, plugin_name: str): |
| return PluginStatus.ENABLED |
|
|
| def get_unavailable_reason(self, plugin_name: str): |
| return None |
|
|
|
|
| def test_sync_mcp_tools_adds_registered_tools_to_catalog(): |
| service = ToolCatalogService() |
|
|
| service.sync_mcp_tools(_Registry(), _PluginManager()) |
|
|
| tools = service.get_all_tools() |
| assert len(tools) == 1 |
| assert tools[0].name == "demo_plugin_run" |
| assert tools[0].source == "mcp" |
| assert tools[0].plugin_name == "demo_plugin" |
|
|