feat: 云端 MCP 工具 12→20(pause/goal-resume/followup/agents/workers/metrics/members/models)

This commit is contained in:
host committed 2026-10-30 04:15:16 +08:00
1 parent 0787496427
commit b71cff5ee2
2 files changed
+90

No files matched your search

+38
View File
@@ -49,6 +49,22 @@ class FakeTransport:
return 200, {"id": "t1", "status": "queued"}
if path == "/tasks/t1/merge":
return 200, {"id": "t1", "status": "merged"}
if path == "/tasks/t1/pause":
return 200, {"id": "t1", "status": "paused"}
if path == "/tasks/t1/goal-resume":
return 200, {"id": "t1", "status": "queued"}
if path == "/tasks/t1/followups" and method == "POST":
return 200, {"id": "t1", "mode": "queued"}
if path == "/tasks/t1/agents":
return 200, {"agents": []}
if path == "/workers":
return 200, {"workers_total": 2}
if path == "/metrics":
return 200, {"total_tasks": 3}
if path == "/projects/p1/members":
return 200, {"members": []}
if path == "/models":
return 200, {"models": []}
if path == "/tasks/nope":
return 404, {"error": "not found"}
return 400, {"error": "bad request"}
@@ -143,6 +159,28 @@ class MCPServerTestCase(unittest.TestCase):
self.assertFalse(is_error)
self.assertEqual(payload["status"], "merged")
def test_expanded_tools_translate_to_rest(self):
cases = [
("pause_task", {"task_id": "t1"}, ("POST", "/tasks/t1/pause")),
("goal_resume_task", {"task_id": "t1"},
("POST", "/tasks/t1/goal-resume")),
("create_followup", {"task_id": "t1", "body": "hi"},
("POST", "/tasks/t1/followups")),
("get_task_agents", {"task_id": "t1"},
("GET", "/tasks/t1/agents")),
("list_workers", {}, ("GET", "/workers")),
("get_metrics", {}, ("GET", "/metrics")),
("list_project_members", {"project_id": "p1"},
("GET", "/projects/p1/members")),
("get_models", {}, ("GET", "/models")),
]
for name, args, expected in cases:
is_error, payload = self.server.call_tool(name, args)
self.assertFalse(is_error, name)
self.assertEqual(self.transport.calls[-1][:2], expected, name)
is_error, _ = self.server.call_tool("create_followup", {"task_id": "t1"})
self.assertTrue(is_error)
def test_missing_arg_is_error_not_rest_call(self):
before = len(self.transport.calls)
is_error, payload = self.server.call_tool("list_tasks", {})