@vibescope/mcp-server 0.5.0 → 0.5.1
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/CHANGELOG.md +84 -84
- package/README.md +194 -194
- package/dist/api-client/tasks.d.ts +1 -0
- package/dist/cli-init.js +21 -21
- package/dist/cli.js +26 -26
- package/dist/handlers/tasks.js +7 -1
- package/dist/handlers/tool-docs.js +1216 -1216
- package/dist/index.js +73 -73
- package/dist/templates/agent-guidelines.d.ts +1 -1
- package/dist/templates/agent-guidelines.js +205 -205
- package/dist/templates/help-content.js +1621 -1621
- package/dist/tools/bodies-of-work.js +6 -6
- package/dist/tools/cloud-agents.js +22 -22
- package/dist/tools/milestones.js +2 -2
- package/dist/tools/requests.js +1 -1
- package/dist/tools/session.js +11 -11
- package/dist/tools/sprints.js +9 -9
- package/dist/tools/tasks.js +43 -35
- package/dist/tools/worktrees.js +14 -14
- package/dist/utils.js +11 -11
- package/docs/TOOLS.md +2687 -2685
- package/package.json +53 -53
- package/scripts/generate-docs.ts +212 -212
- package/scripts/version-bump.ts +203 -203
- package/src/api-client/blockers.ts +86 -86
- package/src/api-client/bodies-of-work.ts +194 -194
- package/src/api-client/chat.ts +50 -50
- package/src/api-client/connectors.ts +152 -152
- package/src/api-client/cost.ts +185 -185
- package/src/api-client/decisions.ts +87 -87
- package/src/api-client/deployment.ts +313 -313
- package/src/api-client/discovery.ts +81 -81
- package/src/api-client/fallback.ts +52 -52
- package/src/api-client/file-checkouts.ts +115 -115
- package/src/api-client/findings.ts +100 -100
- package/src/api-client/git-issues.ts +88 -88
- package/src/api-client/ideas.ts +112 -112
- package/src/api-client/index.ts +592 -592
- package/src/api-client/milestones.ts +83 -83
- package/src/api-client/organizations.ts +185 -185
- package/src/api-client/progress.ts +94 -94
- package/src/api-client/project.ts +181 -181
- package/src/api-client/requests.ts +54 -54
- package/src/api-client/session.ts +220 -220
- package/src/api-client/sprints.ts +227 -227
- package/src/api-client/subtasks.ts +57 -57
- package/src/api-client/tasks.ts +451 -450
- package/src/api-client/types.ts +32 -32
- package/src/api-client/validation.ts +60 -60
- package/src/api-client/worktrees.ts +53 -53
- package/src/api-client.test.ts +847 -847
- package/src/api-client.ts +2728 -2728
- package/src/cli-init.ts +558 -558
- package/src/cli.test.ts +284 -284
- package/src/cli.ts +204 -204
- package/src/handlers/__test-setup__.ts +240 -240
- package/src/handlers/__test-utils__.ts +89 -89
- package/src/handlers/blockers.test.ts +468 -468
- package/src/handlers/blockers.ts +172 -172
- package/src/handlers/bodies-of-work.test.ts +704 -704
- package/src/handlers/bodies-of-work.ts +526 -526
- package/src/handlers/chat.test.ts +185 -185
- package/src/handlers/chat.ts +101 -101
- package/src/handlers/cloud-agents.test.ts +438 -438
- package/src/handlers/cloud-agents.ts +156 -156
- package/src/handlers/connectors.test.ts +834 -834
- package/src/handlers/connectors.ts +229 -229
- package/src/handlers/cost.test.ts +462 -462
- package/src/handlers/cost.ts +285 -285
- package/src/handlers/decisions.test.ts +382 -382
- package/src/handlers/decisions.ts +153 -153
- package/src/handlers/deployment.test.ts +551 -551
- package/src/handlers/deployment.ts +570 -570
- package/src/handlers/discovery.test.ts +206 -206
- package/src/handlers/discovery.ts +433 -433
- package/src/handlers/fallback.test.ts +537 -537
- package/src/handlers/fallback.ts +194 -194
- package/src/handlers/file-checkouts.test.ts +750 -750
- package/src/handlers/file-checkouts.ts +185 -185
- package/src/handlers/findings.test.ts +633 -633
- package/src/handlers/findings.ts +239 -239
- package/src/handlers/git-issues.test.ts +631 -631
- package/src/handlers/git-issues.ts +136 -136
- package/src/handlers/ideas.test.ts +644 -644
- package/src/handlers/ideas.ts +207 -207
- package/src/handlers/index.ts +93 -93
- package/src/handlers/milestones.test.ts +475 -475
- package/src/handlers/milestones.ts +180 -180
- package/src/handlers/organizations.test.ts +826 -826
- package/src/handlers/organizations.ts +315 -315
- package/src/handlers/progress.test.ts +269 -269
- package/src/handlers/progress.ts +77 -77
- package/src/handlers/project.test.ts +546 -546
- package/src/handlers/project.ts +245 -245
- package/src/handlers/requests.test.ts +303 -303
- package/src/handlers/requests.ts +99 -99
- package/src/handlers/roles.test.ts +305 -305
- package/src/handlers/roles.ts +219 -219
- package/src/handlers/session.test.ts +998 -998
- package/src/handlers/session.ts +1105 -1105
- package/src/handlers/sprints.test.ts +732 -732
- package/src/handlers/sprints.ts +537 -537
- package/src/handlers/tasks.test.ts +931 -931
- package/src/handlers/tasks.ts +1144 -1137
- package/src/handlers/tool-categories.test.ts +66 -66
- package/src/handlers/tool-docs.test.ts +511 -511
- package/src/handlers/tool-docs.ts +1595 -1595
- package/src/handlers/types.test.ts +259 -259
- package/src/handlers/types.ts +176 -176
- package/src/handlers/validation.test.ts +582 -582
- package/src/handlers/validation.ts +164 -164
- package/src/handlers/version.ts +63 -63
- package/src/index.test.ts +674 -674
- package/src/index.ts +884 -884
- package/src/setup.test.ts +243 -243
- package/src/setup.ts +410 -410
- package/src/templates/agent-guidelines.ts +233 -233
- package/src/templates/help-content.ts +1751 -1751
- package/src/token-tracking.test.ts +463 -463
- package/src/token-tracking.ts +167 -167
- package/src/tools/blockers.ts +122 -122
- package/src/tools/bodies-of-work.ts +283 -283
- package/src/tools/chat.ts +72 -72
- package/src/tools/cloud-agents.ts +101 -101
- package/src/tools/connectors.ts +191 -191
- package/src/tools/cost.ts +111 -111
- package/src/tools/decisions.ts +111 -111
- package/src/tools/deployment.ts +455 -455
- package/src/tools/discovery.ts +76 -76
- package/src/tools/fallback.ts +111 -111
- package/src/tools/features.ts +154 -154
- package/src/tools/file-checkouts.ts +145 -145
- package/src/tools/findings.ts +101 -101
- package/src/tools/git-issues.ts +130 -130
- package/src/tools/ideas.ts +162 -162
- package/src/tools/index.ts +145 -145
- package/src/tools/milestones.ts +118 -118
- package/src/tools/organizations.ts +224 -224
- package/src/tools/persona-templates.ts +25 -25
- package/src/tools/progress.ts +73 -73
- package/src/tools/project.ts +210 -210
- package/src/tools/requests.ts +68 -68
- package/src/tools/roles.ts +112 -112
- package/src/tools/session.ts +181 -181
- package/src/tools/sprints.ts +298 -298
- package/src/tools/tasks.ts +583 -575
- package/src/tools/tools.test.ts +222 -222
- package/src/tools/types.ts +9 -9
- package/src/tools/validation.ts +75 -75
- package/src/tools/version.ts +34 -34
- package/src/tools/worktrees.ts +66 -66
- package/src/tools.test.ts +416 -416
- package/src/utils.test.ts +1014 -1014
- package/src/utils.ts +586 -586
- package/src/validators.test.ts +223 -223
- package/src/validators.ts +249 -249
- package/src/version.ts +162 -162
- package/tsconfig.json +16 -16
- package/vitest.config.ts +14 -14
- package/dist/tools.d.ts +0 -2
- package/dist/tools.js +0 -3602
|
@@ -1,283 +1,283 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bodies of Work Tool Definitions
|
|
3
|
-
*
|
|
4
|
-
* Tools for managing grouped task collections:
|
|
5
|
-
* - create_body_of_work
|
|
6
|
-
* - update_body_of_work
|
|
7
|
-
* - get_body_of_work
|
|
8
|
-
* - get_bodies_of_work
|
|
9
|
-
* - delete_body_of_work
|
|
10
|
-
* - add_task_to_body_of_work
|
|
11
|
-
* - remove_task_from_body_of_work
|
|
12
|
-
* - activate_body_of_work
|
|
13
|
-
* - add_task_dependency
|
|
14
|
-
* - remove_task_dependency
|
|
15
|
-
* - get_task_dependencies
|
|
16
|
-
* - get_next_body_of_work_task
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import type { Tool } from './types.js';
|
|
20
|
-
|
|
21
|
-
export const bodiesOfWorkTools: Tool[] = [
|
|
22
|
-
{
|
|
23
|
-
name: 'create_body_of_work',
|
|
24
|
-
description: `Create a new body of work to group tasks into phases (pre/core/post).
|
|
25
|
-
Bodies of work allow organizing related tasks with optional auto-deployment on completion.`,
|
|
26
|
-
inputSchema: {
|
|
27
|
-
type: 'object',
|
|
28
|
-
properties: {
|
|
29
|
-
project_id: {
|
|
30
|
-
type: 'string',
|
|
31
|
-
description: 'Project UUID',
|
|
32
|
-
},
|
|
33
|
-
title: {
|
|
34
|
-
type: 'string',
|
|
35
|
-
description: 'Title for the body of work',
|
|
36
|
-
},
|
|
37
|
-
description: {
|
|
38
|
-
type: 'string',
|
|
39
|
-
description: 'Optional description',
|
|
40
|
-
},
|
|
41
|
-
auto_deploy_on_completion: {
|
|
42
|
-
type: 'boolean',
|
|
43
|
-
description: 'Automatically request deployment when all tasks complete (default: false)',
|
|
44
|
-
},
|
|
45
|
-
deploy_environment: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
enum: ['development', 'staging', 'production'],
|
|
48
|
-
description: 'Target environment for auto-deploy (default: production)',
|
|
49
|
-
},
|
|
50
|
-
deploy_version_bump: {
|
|
51
|
-
type: 'string',
|
|
52
|
-
enum: ['patch', 'minor', 'major'],
|
|
53
|
-
description: 'Version bump for auto-deploy (default: minor)',
|
|
54
|
-
},
|
|
55
|
-
deploy_trigger: {
|
|
56
|
-
type: 'string',
|
|
57
|
-
enum: ['all_completed', 'all_completed_validated'],
|
|
58
|
-
description: 'When to trigger auto-deploy: all_completed (immediate) or all_completed_validated (requires validation, default)',
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
required: ['project_id', 'title'],
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'update_body_of_work',
|
|
66
|
-
description: `Update a body of work's settings.`,
|
|
67
|
-
inputSchema: {
|
|
68
|
-
type: 'object',
|
|
69
|
-
properties: {
|
|
70
|
-
body_of_work_id: {
|
|
71
|
-
type: 'string',
|
|
72
|
-
description: 'Body of work UUID',
|
|
73
|
-
},
|
|
74
|
-
title: {
|
|
75
|
-
type: 'string',
|
|
76
|
-
description: 'Updated title',
|
|
77
|
-
},
|
|
78
|
-
description: {
|
|
79
|
-
type: 'string',
|
|
80
|
-
description: 'Updated description',
|
|
81
|
-
},
|
|
82
|
-
auto_deploy_on_completion: {
|
|
83
|
-
type: 'boolean',
|
|
84
|
-
description: 'Auto-deploy setting',
|
|
85
|
-
},
|
|
86
|
-
deploy_environment: {
|
|
87
|
-
type: 'string',
|
|
88
|
-
enum: ['development', 'staging', 'production'],
|
|
89
|
-
description: 'Target environment',
|
|
90
|
-
},
|
|
91
|
-
deploy_version_bump: {
|
|
92
|
-
type: 'string',
|
|
93
|
-
enum: ['patch', 'minor', 'major'],
|
|
94
|
-
description: 'Version bump type',
|
|
95
|
-
},
|
|
96
|
-
deploy_trigger: {
|
|
97
|
-
type: 'string',
|
|
98
|
-
enum: ['all_completed', 'all_completed_validated'],
|
|
99
|
-
description: 'When to trigger auto-deploy',
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
required: ['body_of_work_id'],
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: 'get_body_of_work',
|
|
107
|
-
description: `Get a body of work with all its tasks organized by phase.`,
|
|
108
|
-
inputSchema: {
|
|
109
|
-
type: 'object',
|
|
110
|
-
properties: {
|
|
111
|
-
body_of_work_id: {
|
|
112
|
-
type: 'string',
|
|
113
|
-
description: 'Body of work UUID',
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
required: ['body_of_work_id'],
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
name: 'get_bodies_of_work',
|
|
121
|
-
description: `List bodies of work for a project with task counts per phase.`,
|
|
122
|
-
inputSchema: {
|
|
123
|
-
type: 'object',
|
|
124
|
-
properties: {
|
|
125
|
-
project_id: {
|
|
126
|
-
type: 'string',
|
|
127
|
-
description: 'Project UUID',
|
|
128
|
-
},
|
|
129
|
-
status: {
|
|
130
|
-
type: 'string',
|
|
131
|
-
enum: ['draft', 'active', 'completed', 'cancelled'],
|
|
132
|
-
description: 'Filter by status (optional)',
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
required: ['project_id'],
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
name: 'delete_body_of_work',
|
|
140
|
-
description: `Delete a body of work. Tasks are preserved but no longer grouped.`,
|
|
141
|
-
inputSchema: {
|
|
142
|
-
type: 'object',
|
|
143
|
-
properties: {
|
|
144
|
-
body_of_work_id: {
|
|
145
|
-
type: 'string',
|
|
146
|
-
description: 'Body of work UUID',
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
required: ['body_of_work_id'],
|
|
150
|
-
},
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
name: 'add_task_to_body_of_work',
|
|
154
|
-
description: `Add a task to a body of work in a specific phase.
|
|
155
|
-
Phases control execution order: pre tasks run first, then core, then post.`,
|
|
156
|
-
inputSchema: {
|
|
157
|
-
type: 'object',
|
|
158
|
-
properties: {
|
|
159
|
-
body_of_work_id: {
|
|
160
|
-
type: 'string',
|
|
161
|
-
description: 'Body of work UUID',
|
|
162
|
-
},
|
|
163
|
-
task_id: {
|
|
164
|
-
type: 'string',
|
|
165
|
-
description: 'Task UUID to add',
|
|
166
|
-
},
|
|
167
|
-
phase: {
|
|
168
|
-
type: 'string',
|
|
169
|
-
enum: ['pre', 'core', 'post'],
|
|
170
|
-
description: 'Task phase (default: core)',
|
|
171
|
-
},
|
|
172
|
-
order_index: {
|
|
173
|
-
type: 'number',
|
|
174
|
-
description: 'Order within phase (auto-assigned if not specified)',
|
|
175
|
-
},
|
|
176
|
-
},
|
|
177
|
-
required: ['body_of_work_id', 'task_id'],
|
|
178
|
-
},
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
name: 'remove_task_from_body_of_work',
|
|
182
|
-
description: `Remove a task from its body of work. The task is preserved.`,
|
|
183
|
-
inputSchema: {
|
|
184
|
-
type: 'object',
|
|
185
|
-
properties: {
|
|
186
|
-
task_id: {
|
|
187
|
-
type: 'string',
|
|
188
|
-
description: 'Task UUID to remove',
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
required: ['task_id'],
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
name: 'activate_body_of_work',
|
|
196
|
-
description: `Activate a draft body of work to start execution.
|
|
197
|
-
Requires at least one task. Once active, tasks can be worked on following phase order.`,
|
|
198
|
-
inputSchema: {
|
|
199
|
-
type: 'object',
|
|
200
|
-
properties: {
|
|
201
|
-
body_of_work_id: {
|
|
202
|
-
type: 'string',
|
|
203
|
-
description: 'Body of work UUID',
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
required: ['body_of_work_id'],
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
name: 'add_task_dependency',
|
|
211
|
-
description: `Add a dependency between tasks in a body of work.
|
|
212
|
-
The dependent task cannot start until the dependency is completed. Prevents circular dependencies.`,
|
|
213
|
-
inputSchema: {
|
|
214
|
-
type: 'object',
|
|
215
|
-
properties: {
|
|
216
|
-
body_of_work_id: {
|
|
217
|
-
type: 'string',
|
|
218
|
-
description: 'Body of work UUID',
|
|
219
|
-
},
|
|
220
|
-
task_id: {
|
|
221
|
-
type: 'string',
|
|
222
|
-
description: 'Task that depends on another task',
|
|
223
|
-
},
|
|
224
|
-
depends_on_task_id: {
|
|
225
|
-
type: 'string',
|
|
226
|
-
description: 'Task that must complete first',
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
required: ['body_of_work_id', 'task_id', 'depends_on_task_id'],
|
|
230
|
-
},
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
name: 'remove_task_dependency',
|
|
234
|
-
description: `Remove a dependency between tasks.`,
|
|
235
|
-
inputSchema: {
|
|
236
|
-
type: 'object',
|
|
237
|
-
properties: {
|
|
238
|
-
task_id: {
|
|
239
|
-
type: 'string',
|
|
240
|
-
description: 'Task UUID',
|
|
241
|
-
},
|
|
242
|
-
depends_on_task_id: {
|
|
243
|
-
type: 'string',
|
|
244
|
-
description: 'Dependency task UUID',
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
required: ['task_id', 'depends_on_task_id'],
|
|
248
|
-
},
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
name: 'get_task_dependencies',
|
|
252
|
-
description: `Get task dependencies for a body of work or specific task.`,
|
|
253
|
-
inputSchema: {
|
|
254
|
-
type: 'object',
|
|
255
|
-
properties: {
|
|
256
|
-
body_of_work_id: {
|
|
257
|
-
type: 'string',
|
|
258
|
-
description: 'Body of work UUID (optional if task_id provided)',
|
|
259
|
-
},
|
|
260
|
-
task_id: {
|
|
261
|
-
type: 'string',
|
|
262
|
-
description: 'Specific task UUID (optional if body_of_work_id provided)',
|
|
263
|
-
},
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
name: 'get_next_body_of_work_task',
|
|
269
|
-
description: `Get the next available task from a body of work.
|
|
270
|
-
Considers phase order (pre → core → post) and task dependencies.
|
|
271
|
-
Only returns tasks where all dependencies are completed.`,
|
|
272
|
-
inputSchema: {
|
|
273
|
-
type: 'object',
|
|
274
|
-
properties: {
|
|
275
|
-
body_of_work_id: {
|
|
276
|
-
type: 'string',
|
|
277
|
-
description: 'Body of work UUID',
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
required: ['body_of_work_id'],
|
|
281
|
-
},
|
|
282
|
-
},
|
|
283
|
-
];
|
|
1
|
+
/**
|
|
2
|
+
* Bodies of Work Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing grouped task collections:
|
|
5
|
+
* - create_body_of_work
|
|
6
|
+
* - update_body_of_work
|
|
7
|
+
* - get_body_of_work
|
|
8
|
+
* - get_bodies_of_work
|
|
9
|
+
* - delete_body_of_work
|
|
10
|
+
* - add_task_to_body_of_work
|
|
11
|
+
* - remove_task_from_body_of_work
|
|
12
|
+
* - activate_body_of_work
|
|
13
|
+
* - add_task_dependency
|
|
14
|
+
* - remove_task_dependency
|
|
15
|
+
* - get_task_dependencies
|
|
16
|
+
* - get_next_body_of_work_task
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import type { Tool } from './types.js';
|
|
20
|
+
|
|
21
|
+
export const bodiesOfWorkTools: Tool[] = [
|
|
22
|
+
{
|
|
23
|
+
name: 'create_body_of_work',
|
|
24
|
+
description: `Create a new body of work to group tasks into phases (pre/core/post).
|
|
25
|
+
Bodies of work allow organizing related tasks with optional auto-deployment on completion.`,
|
|
26
|
+
inputSchema: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
project_id: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Project UUID',
|
|
32
|
+
},
|
|
33
|
+
title: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Title for the body of work',
|
|
36
|
+
},
|
|
37
|
+
description: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
description: 'Optional description',
|
|
40
|
+
},
|
|
41
|
+
auto_deploy_on_completion: {
|
|
42
|
+
type: 'boolean',
|
|
43
|
+
description: 'Automatically request deployment when all tasks complete (default: false)',
|
|
44
|
+
},
|
|
45
|
+
deploy_environment: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
enum: ['development', 'staging', 'production'],
|
|
48
|
+
description: 'Target environment for auto-deploy (default: production)',
|
|
49
|
+
},
|
|
50
|
+
deploy_version_bump: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
enum: ['patch', 'minor', 'major'],
|
|
53
|
+
description: 'Version bump for auto-deploy (default: minor)',
|
|
54
|
+
},
|
|
55
|
+
deploy_trigger: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
enum: ['all_completed', 'all_completed_validated'],
|
|
58
|
+
description: 'When to trigger auto-deploy: all_completed (immediate) or all_completed_validated (requires validation, default)',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
required: ['project_id', 'title'],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'update_body_of_work',
|
|
66
|
+
description: `Update a body of work's settings.`,
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: {
|
|
70
|
+
body_of_work_id: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'Body of work UUID',
|
|
73
|
+
},
|
|
74
|
+
title: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
description: 'Updated title',
|
|
77
|
+
},
|
|
78
|
+
description: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'Updated description',
|
|
81
|
+
},
|
|
82
|
+
auto_deploy_on_completion: {
|
|
83
|
+
type: 'boolean',
|
|
84
|
+
description: 'Auto-deploy setting',
|
|
85
|
+
},
|
|
86
|
+
deploy_environment: {
|
|
87
|
+
type: 'string',
|
|
88
|
+
enum: ['development', 'staging', 'production'],
|
|
89
|
+
description: 'Target environment',
|
|
90
|
+
},
|
|
91
|
+
deploy_version_bump: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
enum: ['patch', 'minor', 'major'],
|
|
94
|
+
description: 'Version bump type',
|
|
95
|
+
},
|
|
96
|
+
deploy_trigger: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
enum: ['all_completed', 'all_completed_validated'],
|
|
99
|
+
description: 'When to trigger auto-deploy',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
required: ['body_of_work_id'],
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'get_body_of_work',
|
|
107
|
+
description: `Get a body of work with all its tasks organized by phase.`,
|
|
108
|
+
inputSchema: {
|
|
109
|
+
type: 'object',
|
|
110
|
+
properties: {
|
|
111
|
+
body_of_work_id: {
|
|
112
|
+
type: 'string',
|
|
113
|
+
description: 'Body of work UUID',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
required: ['body_of_work_id'],
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'get_bodies_of_work',
|
|
121
|
+
description: `List bodies of work for a project with task counts per phase.`,
|
|
122
|
+
inputSchema: {
|
|
123
|
+
type: 'object',
|
|
124
|
+
properties: {
|
|
125
|
+
project_id: {
|
|
126
|
+
type: 'string',
|
|
127
|
+
description: 'Project UUID',
|
|
128
|
+
},
|
|
129
|
+
status: {
|
|
130
|
+
type: 'string',
|
|
131
|
+
enum: ['draft', 'active', 'completed', 'cancelled'],
|
|
132
|
+
description: 'Filter by status (optional)',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
required: ['project_id'],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'delete_body_of_work',
|
|
140
|
+
description: `Delete a body of work. Tasks are preserved but no longer grouped.`,
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: 'object',
|
|
143
|
+
properties: {
|
|
144
|
+
body_of_work_id: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
description: 'Body of work UUID',
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
required: ['body_of_work_id'],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: 'add_task_to_body_of_work',
|
|
154
|
+
description: `Add a task to a body of work in a specific phase.
|
|
155
|
+
Phases control execution order: pre tasks run first, then core, then post.`,
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: 'object',
|
|
158
|
+
properties: {
|
|
159
|
+
body_of_work_id: {
|
|
160
|
+
type: 'string',
|
|
161
|
+
description: 'Body of work UUID',
|
|
162
|
+
},
|
|
163
|
+
task_id: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
description: 'Task UUID to add',
|
|
166
|
+
},
|
|
167
|
+
phase: {
|
|
168
|
+
type: 'string',
|
|
169
|
+
enum: ['pre', 'core', 'post'],
|
|
170
|
+
description: 'Task phase (default: core)',
|
|
171
|
+
},
|
|
172
|
+
order_index: {
|
|
173
|
+
type: 'number',
|
|
174
|
+
description: 'Order within phase (auto-assigned if not specified)',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
required: ['body_of_work_id', 'task_id'],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: 'remove_task_from_body_of_work',
|
|
182
|
+
description: `Remove a task from its body of work. The task is preserved.`,
|
|
183
|
+
inputSchema: {
|
|
184
|
+
type: 'object',
|
|
185
|
+
properties: {
|
|
186
|
+
task_id: {
|
|
187
|
+
type: 'string',
|
|
188
|
+
description: 'Task UUID to remove',
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
required: ['task_id'],
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'activate_body_of_work',
|
|
196
|
+
description: `Activate a draft body of work to start execution.
|
|
197
|
+
Requires at least one task. Once active, tasks can be worked on following phase order.`,
|
|
198
|
+
inputSchema: {
|
|
199
|
+
type: 'object',
|
|
200
|
+
properties: {
|
|
201
|
+
body_of_work_id: {
|
|
202
|
+
type: 'string',
|
|
203
|
+
description: 'Body of work UUID',
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
required: ['body_of_work_id'],
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: 'add_task_dependency',
|
|
211
|
+
description: `Add a dependency between tasks in a body of work.
|
|
212
|
+
The dependent task cannot start until the dependency is completed. Prevents circular dependencies.`,
|
|
213
|
+
inputSchema: {
|
|
214
|
+
type: 'object',
|
|
215
|
+
properties: {
|
|
216
|
+
body_of_work_id: {
|
|
217
|
+
type: 'string',
|
|
218
|
+
description: 'Body of work UUID',
|
|
219
|
+
},
|
|
220
|
+
task_id: {
|
|
221
|
+
type: 'string',
|
|
222
|
+
description: 'Task that depends on another task',
|
|
223
|
+
},
|
|
224
|
+
depends_on_task_id: {
|
|
225
|
+
type: 'string',
|
|
226
|
+
description: 'Task that must complete first',
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
required: ['body_of_work_id', 'task_id', 'depends_on_task_id'],
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'remove_task_dependency',
|
|
234
|
+
description: `Remove a dependency between tasks.`,
|
|
235
|
+
inputSchema: {
|
|
236
|
+
type: 'object',
|
|
237
|
+
properties: {
|
|
238
|
+
task_id: {
|
|
239
|
+
type: 'string',
|
|
240
|
+
description: 'Task UUID',
|
|
241
|
+
},
|
|
242
|
+
depends_on_task_id: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
description: 'Dependency task UUID',
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
required: ['task_id', 'depends_on_task_id'],
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
name: 'get_task_dependencies',
|
|
252
|
+
description: `Get task dependencies for a body of work or specific task.`,
|
|
253
|
+
inputSchema: {
|
|
254
|
+
type: 'object',
|
|
255
|
+
properties: {
|
|
256
|
+
body_of_work_id: {
|
|
257
|
+
type: 'string',
|
|
258
|
+
description: 'Body of work UUID (optional if task_id provided)',
|
|
259
|
+
},
|
|
260
|
+
task_id: {
|
|
261
|
+
type: 'string',
|
|
262
|
+
description: 'Specific task UUID (optional if body_of_work_id provided)',
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: 'get_next_body_of_work_task',
|
|
269
|
+
description: `Get the next available task from a body of work.
|
|
270
|
+
Considers phase order (pre → core → post) and task dependencies.
|
|
271
|
+
Only returns tasks where all dependencies are completed.`,
|
|
272
|
+
inputSchema: {
|
|
273
|
+
type: 'object',
|
|
274
|
+
properties: {
|
|
275
|
+
body_of_work_id: {
|
|
276
|
+
type: 'string',
|
|
277
|
+
description: 'Body of work UUID',
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
required: ['body_of_work_id'],
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
];
|