@chorus-aidlc/chorus-openclaw-plugin 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -11
- package/openclaw.plugin.json +1 -0
- package/package.json +2 -1
- package/skills/chorus/SKILL.md +396 -0
- package/skills/develop/SKILL.md +290 -0
- package/skills/idea/SKILL.md +306 -0
- package/skills/proposal/SKILL.md +399 -0
- package/skills/quick-dev/SKILL.md +174 -0
- package/skills/review/SKILL.md +282 -0
- package/src/commands.ts +23 -0
- package/src/tools/admin-tools.ts +14 -5
- package/src/tools/common-tools.ts +54 -25
- package/src/tools/dev-tools.ts +12 -4
- package/src/tools/pm-tools.ts +38 -17
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { ChorusMcpClient } from "../mcp-client.js";
|
|
2
2
|
|
|
3
|
+
function toolResult(result: unknown) {
|
|
4
|
+
return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }], details: result };
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
8
|
export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
5
9
|
api.registerTool({
|
|
6
10
|
name: "chorus_checkin",
|
|
11
|
+
label: "Check-in",
|
|
7
12
|
description: "Agent check-in. Returns persona, roles, and pending assignments. Recommended at session start.",
|
|
8
13
|
parameters: {
|
|
9
14
|
type: "object",
|
|
@@ -12,12 +17,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
12
17
|
},
|
|
13
18
|
async execute() {
|
|
14
19
|
const result = await mcpClient.callTool("chorus_checkin", {});
|
|
15
|
-
return
|
|
20
|
+
return toolResult(result);
|
|
16
21
|
},
|
|
17
22
|
});
|
|
18
23
|
|
|
19
24
|
api.registerTool({
|
|
20
25
|
name: "chorus_get_notifications",
|
|
26
|
+
label: "Get Notifications",
|
|
21
27
|
description: "Get notifications. By default fetches unread and auto-marks them as read.",
|
|
22
28
|
parameters: {
|
|
23
29
|
type: "object",
|
|
@@ -32,12 +38,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
32
38
|
if (status) args.status = status;
|
|
33
39
|
if (autoMarkRead !== undefined) args.autoMarkRead = autoMarkRead;
|
|
34
40
|
const result = await mcpClient.callTool("chorus_get_notifications", args);
|
|
35
|
-
return
|
|
41
|
+
return toolResult(result);
|
|
36
42
|
},
|
|
37
43
|
});
|
|
38
44
|
|
|
39
45
|
api.registerTool({
|
|
40
46
|
name: "chorus_get_project",
|
|
47
|
+
label: "Get Project",
|
|
41
48
|
description: "Get project details and context",
|
|
42
49
|
parameters: {
|
|
43
50
|
type: "object",
|
|
@@ -49,12 +56,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
49
56
|
},
|
|
50
57
|
async execute(_id: string, { projectUuid }: { projectUuid: string }) {
|
|
51
58
|
const result = await mcpClient.callTool("chorus_get_project", { projectUuid });
|
|
52
|
-
return
|
|
59
|
+
return toolResult(result);
|
|
53
60
|
},
|
|
54
61
|
});
|
|
55
62
|
|
|
56
63
|
api.registerTool({
|
|
57
64
|
name: "chorus_get_task",
|
|
65
|
+
label: "Get Task",
|
|
58
66
|
description: "Get detailed information and context for a single task",
|
|
59
67
|
parameters: {
|
|
60
68
|
type: "object",
|
|
@@ -66,12 +74,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
66
74
|
},
|
|
67
75
|
async execute(_id: string, { taskUuid }: { taskUuid: string }) {
|
|
68
76
|
const result = await mcpClient.callTool("chorus_get_task", { taskUuid });
|
|
69
|
-
return
|
|
77
|
+
return toolResult(result);
|
|
70
78
|
},
|
|
71
79
|
});
|
|
72
80
|
|
|
73
81
|
api.registerTool({
|
|
74
82
|
name: "chorus_get_idea",
|
|
83
|
+
label: "Get Idea",
|
|
75
84
|
description: "Get detailed information for a single idea",
|
|
76
85
|
parameters: {
|
|
77
86
|
type: "object",
|
|
@@ -83,12 +92,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
83
92
|
},
|
|
84
93
|
async execute(_id: string, { ideaUuid }: { ideaUuid: string }) {
|
|
85
94
|
const result = await mcpClient.callTool("chorus_get_idea", { ideaUuid });
|
|
86
|
-
return
|
|
95
|
+
return toolResult(result);
|
|
87
96
|
},
|
|
88
97
|
});
|
|
89
98
|
|
|
90
99
|
api.registerTool({
|
|
91
100
|
name: "chorus_get_available_tasks",
|
|
101
|
+
label: "Available Tasks",
|
|
92
102
|
description: "Get tasks available to claim in a project (status=open). Optionally filter by proposal UUIDs.",
|
|
93
103
|
parameters: {
|
|
94
104
|
type: "object",
|
|
@@ -103,12 +113,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
103
113
|
const args: Record<string, unknown> = { projectUuid };
|
|
104
114
|
if (proposalUuids && proposalUuids.length > 0) args.proposalUuids = proposalUuids;
|
|
105
115
|
const result = await mcpClient.callTool("chorus_get_available_tasks", args);
|
|
106
|
-
return
|
|
116
|
+
return toolResult(result);
|
|
107
117
|
},
|
|
108
118
|
});
|
|
109
119
|
|
|
110
120
|
api.registerTool({
|
|
111
121
|
name: "chorus_get_available_ideas",
|
|
122
|
+
label: "Available Ideas",
|
|
112
123
|
description: "Get ideas available to claim in a project (status=open)",
|
|
113
124
|
parameters: {
|
|
114
125
|
type: "object",
|
|
@@ -120,7 +131,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
120
131
|
},
|
|
121
132
|
async execute(_id: string, { projectUuid }: { projectUuid: string }) {
|
|
122
133
|
const result = await mcpClient.callTool("chorus_get_available_ideas", { projectUuid });
|
|
123
|
-
return
|
|
134
|
+
return toolResult(result);
|
|
124
135
|
},
|
|
125
136
|
});
|
|
126
137
|
|
|
@@ -128,6 +139,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
128
139
|
|
|
129
140
|
api.registerTool({
|
|
130
141
|
name: "chorus_list_projects",
|
|
142
|
+
label: "List Projects",
|
|
131
143
|
description: "List all projects for the current company. Returns projects with counts of ideas, documents, tasks, and proposals.",
|
|
132
144
|
parameters: {
|
|
133
145
|
type: "object",
|
|
@@ -142,12 +154,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
142
154
|
if (page !== undefined) args.page = page;
|
|
143
155
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
144
156
|
const result = await mcpClient.callTool("chorus_list_projects", args);
|
|
145
|
-
return
|
|
157
|
+
return toolResult(result);
|
|
146
158
|
},
|
|
147
159
|
});
|
|
148
160
|
|
|
149
161
|
api.registerTool({
|
|
150
162
|
name: "chorus_list_tasks",
|
|
163
|
+
label: "List Tasks",
|
|
151
164
|
description: "List tasks for a project. Can filter by status, priority, and proposal UUIDs.",
|
|
152
165
|
parameters: {
|
|
153
166
|
type: "object",
|
|
@@ -170,12 +183,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
170
183
|
if (page !== undefined) args.page = page;
|
|
171
184
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
172
185
|
const result = await mcpClient.callTool("chorus_list_tasks", args);
|
|
173
|
-
return
|
|
186
|
+
return toolResult(result);
|
|
174
187
|
},
|
|
175
188
|
});
|
|
176
189
|
|
|
177
190
|
api.registerTool({
|
|
178
191
|
name: "chorus_get_ideas",
|
|
192
|
+
label: "List Ideas",
|
|
179
193
|
description: "List ideas for a project. Can filter by status.",
|
|
180
194
|
parameters: {
|
|
181
195
|
type: "object",
|
|
@@ -194,12 +208,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
194
208
|
if (page !== undefined) args.page = page;
|
|
195
209
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
196
210
|
const result = await mcpClient.callTool("chorus_get_ideas", args);
|
|
197
|
-
return
|
|
211
|
+
return toolResult(result);
|
|
198
212
|
},
|
|
199
213
|
});
|
|
200
214
|
|
|
201
215
|
api.registerTool({
|
|
202
216
|
name: "chorus_get_proposals",
|
|
217
|
+
label: "List Proposals",
|
|
203
218
|
description: "List proposals for a project. Can filter by status.",
|
|
204
219
|
parameters: {
|
|
205
220
|
type: "object",
|
|
@@ -218,12 +233,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
218
233
|
if (page !== undefined) args.page = page;
|
|
219
234
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
220
235
|
const result = await mcpClient.callTool("chorus_get_proposals", args);
|
|
221
|
-
return
|
|
236
|
+
return toolResult(result);
|
|
222
237
|
},
|
|
223
238
|
});
|
|
224
239
|
|
|
225
240
|
api.registerTool({
|
|
226
241
|
name: "chorus_get_documents",
|
|
242
|
+
label: "List Documents",
|
|
227
243
|
description: "List documents for a project. Can filter by type.",
|
|
228
244
|
parameters: {
|
|
229
245
|
type: "object",
|
|
@@ -242,12 +258,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
242
258
|
if (page !== undefined) args.page = page;
|
|
243
259
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
244
260
|
const result = await mcpClient.callTool("chorus_get_documents", args);
|
|
245
|
-
return
|
|
261
|
+
return toolResult(result);
|
|
246
262
|
},
|
|
247
263
|
});
|
|
248
264
|
|
|
249
265
|
api.registerTool({
|
|
250
266
|
name: "chorus_get_document",
|
|
267
|
+
label: "Get Document",
|
|
251
268
|
description: "Get the detailed content of a single document.",
|
|
252
269
|
parameters: {
|
|
253
270
|
type: "object",
|
|
@@ -259,12 +276,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
259
276
|
},
|
|
260
277
|
async execute(_id: string, { documentUuid }: { documentUuid: string }) {
|
|
261
278
|
const result = await mcpClient.callTool("chorus_get_document", { documentUuid });
|
|
262
|
-
return
|
|
279
|
+
return toolResult(result);
|
|
263
280
|
},
|
|
264
281
|
});
|
|
265
282
|
|
|
266
283
|
api.registerTool({
|
|
267
284
|
name: "chorus_get_unblocked_tasks",
|
|
285
|
+
label: "Unblocked Tasks",
|
|
268
286
|
description: "Get tasks that are ready to start — status is open/assigned and all dependencies are resolved (done/closed). Optionally filter by proposal UUIDs. Note: to_verify is NOT considered resolved.",
|
|
269
287
|
parameters: {
|
|
270
288
|
type: "object",
|
|
@@ -279,12 +297,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
279
297
|
const args: Record<string, unknown> = { projectUuid };
|
|
280
298
|
if (proposalUuids && proposalUuids.length > 0) args.proposalUuids = proposalUuids;
|
|
281
299
|
const result = await mcpClient.callTool("chorus_get_unblocked_tasks", args);
|
|
282
|
-
return
|
|
300
|
+
return toolResult(result);
|
|
283
301
|
},
|
|
284
302
|
});
|
|
285
303
|
|
|
286
304
|
api.registerTool({
|
|
287
305
|
name: "chorus_get_activity",
|
|
306
|
+
label: "Activity Stream",
|
|
288
307
|
description: "Get the activity stream for a project. Shows all actions taken by agents and users.",
|
|
289
308
|
parameters: {
|
|
290
309
|
type: "object",
|
|
@@ -301,12 +320,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
301
320
|
if (page !== undefined) args.page = page;
|
|
302
321
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
303
322
|
const result = await mcpClient.callTool("chorus_get_activity", args);
|
|
304
|
-
return
|
|
323
|
+
return toolResult(result);
|
|
305
324
|
},
|
|
306
325
|
});
|
|
307
326
|
|
|
308
327
|
api.registerTool({
|
|
309
328
|
name: "chorus_get_comments",
|
|
329
|
+
label: "Get Comments",
|
|
310
330
|
description: "Get comments for an Idea, Proposal, Task, or Document. Useful for understanding context, decisions, and feedback.",
|
|
311
331
|
parameters: {
|
|
312
332
|
type: "object",
|
|
@@ -324,12 +344,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
324
344
|
if (page !== undefined) args.page = page;
|
|
325
345
|
if (pageSize !== undefined) args.pageSize = pageSize;
|
|
326
346
|
const result = await mcpClient.callTool("chorus_get_comments", args);
|
|
327
|
-
return
|
|
347
|
+
return toolResult(result);
|
|
328
348
|
},
|
|
329
349
|
});
|
|
330
350
|
|
|
331
351
|
api.registerTool({
|
|
332
352
|
name: "chorus_get_elaboration",
|
|
353
|
+
label: "Get Elaboration",
|
|
333
354
|
description: "Get the full elaboration state for an Idea, including all rounds, questions, answers, and progress summary.",
|
|
334
355
|
parameters: {
|
|
335
356
|
type: "object",
|
|
@@ -341,12 +362,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
341
362
|
},
|
|
342
363
|
async execute(_id: string, { ideaUuid }: { ideaUuid: string }) {
|
|
343
364
|
const result = await mcpClient.callTool("chorus_get_elaboration", { ideaUuid });
|
|
344
|
-
return
|
|
365
|
+
return toolResult(result);
|
|
345
366
|
},
|
|
346
367
|
});
|
|
347
368
|
|
|
348
369
|
api.registerTool({
|
|
349
370
|
name: "chorus_get_my_assignments",
|
|
371
|
+
label: "My Assignments",
|
|
350
372
|
description: "Get all Ideas and Tasks currently assigned to you.",
|
|
351
373
|
parameters: {
|
|
352
374
|
type: "object",
|
|
@@ -355,7 +377,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
355
377
|
},
|
|
356
378
|
async execute() {
|
|
357
379
|
const result = await mcpClient.callTool("chorus_get_my_assignments", {});
|
|
358
|
-
return
|
|
380
|
+
return toolResult(result);
|
|
359
381
|
},
|
|
360
382
|
});
|
|
361
383
|
|
|
@@ -363,6 +385,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
363
385
|
|
|
364
386
|
api.registerTool({
|
|
365
387
|
name: "chorus_get_project_groups",
|
|
388
|
+
label: "List Groups",
|
|
366
389
|
description: "List all project groups. Returns groups with project counts and completion rates.",
|
|
367
390
|
parameters: {
|
|
368
391
|
type: "object",
|
|
@@ -371,12 +394,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
371
394
|
},
|
|
372
395
|
async execute() {
|
|
373
396
|
const result = await mcpClient.callTool("chorus_get_project_groups", {});
|
|
374
|
-
return
|
|
397
|
+
return toolResult(result);
|
|
375
398
|
},
|
|
376
399
|
});
|
|
377
400
|
|
|
378
401
|
api.registerTool({
|
|
379
402
|
name: "chorus_get_project_group",
|
|
403
|
+
label: "Get Group",
|
|
380
404
|
description: "Get a single project group with its projects and stats.",
|
|
381
405
|
parameters: {
|
|
382
406
|
type: "object",
|
|
@@ -388,7 +412,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
388
412
|
},
|
|
389
413
|
async execute(_id: string, { groupUuid }: { groupUuid: string }) {
|
|
390
414
|
const result = await mcpClient.callTool("chorus_get_project_group", { groupUuid });
|
|
391
|
-
return
|
|
415
|
+
return toolResult(result);
|
|
392
416
|
},
|
|
393
417
|
});
|
|
394
418
|
|
|
@@ -396,6 +420,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
396
420
|
|
|
397
421
|
api.registerTool({
|
|
398
422
|
name: "chorus_add_comment",
|
|
423
|
+
label: "Add Comment",
|
|
399
424
|
description: "Add a comment to an Idea, Proposal, Task, or Document",
|
|
400
425
|
parameters: {
|
|
401
426
|
type: "object",
|
|
@@ -409,12 +434,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
409
434
|
},
|
|
410
435
|
async execute(_id: string, { targetType, targetUuid, content }: { targetType: string; targetUuid: string; content: string }) {
|
|
411
436
|
const result = await mcpClient.callTool("chorus_add_comment", { targetType, targetUuid, content });
|
|
412
|
-
return
|
|
437
|
+
return toolResult(result);
|
|
413
438
|
},
|
|
414
439
|
});
|
|
415
440
|
|
|
416
441
|
api.registerTool({
|
|
417
442
|
name: "chorus_search_mentionables",
|
|
443
|
+
label: "Search Mentionables",
|
|
418
444
|
description: "Search for users and agents that can be @mentioned. Returns name, type, and UUID. Use the UUID to write mentions as @[Name](type:uuid) in comment text.",
|
|
419
445
|
parameters: {
|
|
420
446
|
type: "object",
|
|
@@ -429,7 +455,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
429
455
|
const args: Record<string, unknown> = { query };
|
|
430
456
|
if (limit !== undefined) args.limit = limit;
|
|
431
457
|
const result = await mcpClient.callTool("chorus_search_mentionables", args);
|
|
432
|
-
return
|
|
458
|
+
return toolResult(result);
|
|
433
459
|
},
|
|
434
460
|
});
|
|
435
461
|
|
|
@@ -437,6 +463,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
437
463
|
|
|
438
464
|
api.registerTool({
|
|
439
465
|
name: "chorus_create_tasks",
|
|
466
|
+
label: "Create Tasks",
|
|
440
467
|
description:
|
|
441
468
|
"Batch create tasks in a project. Two modes:\n\n" +
|
|
442
469
|
"**Quick Task** (skip Idea→Proposal): omit proposalUuid. Ideal for bug fixes, small features, post-delivery patches.\n" +
|
|
@@ -476,12 +503,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
476
503
|
const args: Record<string, any> = { projectUuid, tasks };
|
|
477
504
|
if (proposalUuid !== undefined) args.proposalUuid = proposalUuid;
|
|
478
505
|
const result = await mcpClient.callTool("chorus_create_tasks", args);
|
|
479
|
-
return
|
|
506
|
+
return toolResult(result);
|
|
480
507
|
},
|
|
481
508
|
});
|
|
482
509
|
|
|
483
510
|
api.registerTool({
|
|
484
511
|
name: "chorus_update_task",
|
|
512
|
+
label: "Update Task",
|
|
485
513
|
description:
|
|
486
514
|
"Update a task — edit fields, manage dependencies, or change status.\n\n" +
|
|
487
515
|
"**Field editing** (any role): title, description, priority, storyPoints, addDependsOn/removeDependsOn (incremental dependency management).\n\n" +
|
|
@@ -516,12 +544,13 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
516
544
|
if (addDependsOn !== undefined) args.addDependsOn = addDependsOn;
|
|
517
545
|
if (removeDependsOn !== undefined) args.removeDependsOn = removeDependsOn;
|
|
518
546
|
const result = await mcpClient.callTool("chorus_update_task", args);
|
|
519
|
-
return
|
|
547
|
+
return toolResult(result);
|
|
520
548
|
},
|
|
521
549
|
});
|
|
522
550
|
|
|
523
551
|
api.registerTool({
|
|
524
552
|
name: "chorus_search",
|
|
553
|
+
label: "Search",
|
|
525
554
|
description: "Search across tasks, ideas, proposals, documents, projects, and project groups.",
|
|
526
555
|
parameters: {
|
|
527
556
|
type: "object",
|
|
@@ -540,7 +569,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
540
569
|
if (scopeUuid) args.scopeUuid = scopeUuid;
|
|
541
570
|
if (entityTypes) args.entityTypes = entityTypes;
|
|
542
571
|
const result = await mcpClient.callTool("chorus_search", args);
|
|
543
|
-
return
|
|
572
|
+
return toolResult(result);
|
|
544
573
|
},
|
|
545
574
|
});
|
|
546
575
|
}
|
package/src/tools/dev-tools.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { ChorusMcpClient } from "../mcp-client.js";
|
|
2
2
|
|
|
3
|
+
function toolResult(result: unknown) {
|
|
4
|
+
return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }], details: result };
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
8
|
export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
5
9
|
api.registerTool({
|
|
6
10
|
name: "chorus_claim_task",
|
|
11
|
+
label: "Claim Task",
|
|
7
12
|
description: "Claim an open task (open -> assigned)",
|
|
8
13
|
parameters: {
|
|
9
14
|
type: "object",
|
|
@@ -15,7 +20,7 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
15
20
|
},
|
|
16
21
|
async execute(_id: string, { taskUuid }: { taskUuid: string }) {
|
|
17
22
|
const result = await mcpClient.callTool("chorus_claim_task", { taskUuid });
|
|
18
|
-
return
|
|
23
|
+
return toolResult(result);
|
|
19
24
|
},
|
|
20
25
|
});
|
|
21
26
|
|
|
@@ -23,6 +28,7 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
23
28
|
|
|
24
29
|
api.registerTool({
|
|
25
30
|
name: "chorus_report_work",
|
|
31
|
+
label: "Report Work",
|
|
26
32
|
description: "Report work progress or completion on a task",
|
|
27
33
|
parameters: {
|
|
28
34
|
type: "object",
|
|
@@ -40,12 +46,13 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
40
46
|
if (status) args.status = status;
|
|
41
47
|
if (sessionUuid) args.sessionUuid = sessionUuid;
|
|
42
48
|
const result = await mcpClient.callTool("chorus_report_work", args);
|
|
43
|
-
return
|
|
49
|
+
return toolResult(result);
|
|
44
50
|
},
|
|
45
51
|
});
|
|
46
52
|
|
|
47
53
|
api.registerTool({
|
|
48
54
|
name: "chorus_submit_for_verify",
|
|
55
|
+
label: "Submit for Verify",
|
|
49
56
|
description: "Submit task for human verification (in_progress -> to_verify)",
|
|
50
57
|
parameters: {
|
|
51
58
|
type: "object",
|
|
@@ -60,12 +67,13 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
60
67
|
const args: Record<string, unknown> = { taskUuid };
|
|
61
68
|
if (summary) args.summary = summary;
|
|
62
69
|
const result = await mcpClient.callTool("chorus_submit_for_verify", args);
|
|
63
|
-
return
|
|
70
|
+
return toolResult(result);
|
|
64
71
|
},
|
|
65
72
|
});
|
|
66
73
|
|
|
67
74
|
api.registerTool({
|
|
68
75
|
name: "chorus_report_criteria_self_check",
|
|
76
|
+
label: "Self-Check AC",
|
|
69
77
|
description: "Report self-check results on acceptance criteria for a task you're working on. For required criteria, keep working until all pass. Only mark optional criteria as failed if out of scope.",
|
|
70
78
|
parameters: {
|
|
71
79
|
type: "object",
|
|
@@ -90,7 +98,7 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
|
|
|
90
98
|
},
|
|
91
99
|
async execute(_id: string, { taskUuid, criteria }: { taskUuid: string; criteria: Array<{ uuid: string; devStatus: string; devEvidence?: string }> }) {
|
|
92
100
|
const result = await mcpClient.callTool("chorus_report_criteria_self_check", { taskUuid, criteria });
|
|
93
|
-
return
|
|
101
|
+
return toolResult(result);
|
|
94
102
|
},
|
|
95
103
|
});
|
|
96
104
|
|