@vibescope/mcp-server 0.4.4 → 0.4.6
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/bodies-of-work.d.ts +125 -0
- package/dist/api-client/bodies-of-work.js +78 -0
- package/dist/api-client/chat.d.ts +26 -0
- package/dist/api-client/chat.js +20 -0
- package/dist/api-client/connectors.d.ts +104 -0
- package/dist/api-client/connectors.js +46 -0
- package/dist/api-client/deployment.d.ts +190 -0
- package/dist/api-client/deployment.js +113 -0
- package/dist/api-client/file-checkouts.d.ts +71 -0
- package/dist/api-client/file-checkouts.js +43 -0
- package/dist/api-client/git-issues.d.ts +55 -0
- package/dist/api-client/git-issues.js +34 -0
- package/dist/api-client/index.d.ts +619 -1
- package/dist/api-client/index.js +148 -0
- package/dist/api-client/organizations.d.ts +101 -0
- package/dist/api-client/organizations.js +86 -0
- package/dist/api-client/progress.d.ts +61 -0
- package/dist/api-client/progress.js +34 -0
- package/dist/api-client/project.d.ts +1 -0
- package/dist/api-client/requests.d.ts +28 -0
- package/dist/api-client/requests.js +28 -0
- package/dist/api-client/sprints.d.ts +153 -0
- package/dist/api-client/sprints.js +82 -0
- package/dist/api-client/subtasks.d.ts +37 -0
- package/dist/api-client/subtasks.js +23 -0
- package/dist/api-client.d.ts +23 -0
- package/dist/api-client.js +15 -0
- package/dist/cli-init.js +21 -21
- package/dist/cli.js +26 -26
- package/dist/handlers/blockers.js +4 -0
- package/dist/handlers/chat.d.ts +23 -0
- package/dist/handlers/chat.js +84 -0
- package/dist/handlers/deployment.d.ts +3 -0
- package/dist/handlers/deployment.js +23 -0
- package/dist/handlers/discovery.js +13 -0
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.js +3 -0
- package/dist/handlers/project.js +4 -2
- package/dist/handlers/session.js +7 -0
- package/dist/handlers/tasks.js +7 -0
- package/dist/handlers/tool-docs.js +1204 -1131
- package/dist/index.js +73 -73
- package/dist/templates/agent-guidelines.d.ts +1 -1
- package/dist/templates/agent-guidelines.js +205 -187
- package/dist/templates/help-content.js +1621 -1621
- package/dist/tools/bodies-of-work.js +6 -6
- package/dist/tools/chat.d.ts +1 -0
- package/dist/tools/chat.js +24 -0
- package/dist/tools/cloud-agents.js +22 -22
- package/dist/tools/deployment.js +13 -0
- package/dist/tools/features.d.ts +13 -0
- package/dist/tools/features.js +151 -0
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.js +4 -1
- package/dist/tools/milestones.js +2 -2
- package/dist/tools/project.js +4 -0
- 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 +35 -35
- package/dist/tools/worktrees.js +14 -14
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +3602 -0
- package/dist/utils.js +11 -11
- package/docs/TOOLS.md +2663 -2545
- 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 -0
- package/src/api-client/chat.ts +50 -0
- package/src/api-client/connectors.ts +152 -0
- package/src/api-client/cost.ts +185 -185
- package/src/api-client/decisions.ts +87 -87
- package/src/api-client/deployment.ts +313 -0
- package/src/api-client/discovery.ts +81 -81
- package/src/api-client/fallback.ts +52 -52
- package/src/api-client/file-checkouts.ts +115 -0
- package/src/api-client/findings.ts +100 -100
- package/src/api-client/git-issues.ts +88 -0
- package/src/api-client/ideas.ts +112 -112
- package/src/api-client/index.ts +592 -426
- package/src/api-client/milestones.ts +83 -83
- package/src/api-client/organizations.ts +185 -0
- package/src/api-client/progress.ts +94 -0
- package/src/api-client/project.ts +180 -179
- package/src/api-client/requests.ts +54 -0
- package/src/api-client/session.ts +220 -220
- package/src/api-client/sprints.ts +227 -0
- package/src/api-client/subtasks.ts +57 -0
- package/src/api-client/tasks.ts +450 -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 -850
- package/src/api-client.ts +2707 -2672
- package/src/cli-init.ts +557 -557
- package/src/cli.test.ts +284 -284
- package/src/cli.ts +204 -204
- package/src/handlers/__test-setup__.ts +240 -236
- package/src/handlers/__test-utils__.ts +89 -89
- package/src/handlers/blockers.test.ts +468 -468
- package/src/handlers/blockers.ts +172 -163
- 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 -0
- package/src/handlers/chat.ts +101 -0
- 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 -541
- package/src/handlers/discovery.test.ts +206 -206
- package/src/handlers/discovery.ts +427 -414
- 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 -90
- 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 +242 -239
- 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 -1093
- 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 +1133 -1121
- package/src/handlers/tool-categories.test.ts +66 -66
- package/src/handlers/tool-docs.test.ts +511 -511
- package/src/handlers/tool-docs.ts +1571 -1491
- 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 +807 -807
- package/src/setup.test.ts +233 -233
- package/src/setup.ts +404 -404
- package/src/templates/agent-guidelines.ts +233 -215
- 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 -46
- 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 -442
- package/src/tools/discovery.ts +76 -76
- package/src/tools/fallback.ts +111 -111
- package/src/tools/features.ts +154 -0
- 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 +141 -137
- package/src/tools/milestones.ts +118 -118
- package/src/tools/organizations.ts +224 -224
- package/src/tools/progress.ts +73 -73
- package/src/tools/project.ts +206 -202
- 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 +550 -550
- 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 +109 -109
- package/tsconfig.json +16 -16
- package/vitest.config.ts +14 -14
|
@@ -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
|
+
];
|
package/src/tools/chat.ts
CHANGED
|
@@ -1,46 +1,72 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project chat tools:
|
|
3
|
-
* - send_project_message
|
|
4
|
-
* - get_project_messages
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Project chat tools:
|
|
3
|
+
* - send_project_message
|
|
4
|
+
* - get_project_messages
|
|
5
|
+
* - post_progress
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Tool } from './types.js';
|
|
9
|
+
|
|
10
|
+
export const chatTools: Tool[] = [
|
|
11
|
+
{
|
|
12
|
+
name: 'send_project_message',
|
|
13
|
+
description: 'Send a message to the project chat channel. All agents and the project owner can see messages here. Use this to communicate status updates, ask questions, report blockers, or coordinate with other agents.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
project_id: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Project UUID',
|
|
20
|
+
},
|
|
21
|
+
message: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Message content (supports markdown)',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
required: ['project_id', 'message'],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'get_project_messages',
|
|
31
|
+
description: 'Read recent messages from the project chat channel. Use this to check if the user or other agents have posted anything.',
|
|
32
|
+
inputSchema: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
properties: {
|
|
35
|
+
project_id: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Project UUID',
|
|
38
|
+
},
|
|
39
|
+
limit: {
|
|
40
|
+
type: 'number',
|
|
41
|
+
description: 'Number of recent messages to fetch (default: 20, max: 100)',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
required: ['project_id'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'post_progress',
|
|
49
|
+
description:
|
|
50
|
+
'Post a structured progress update to the project chat. Use this at key milestones during your work: when starting a task, creating a PR, hitting a blocker, or completing a task. Messages are attributed to your agent and shown with a type icon.',
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: 'object',
|
|
53
|
+
properties: {
|
|
54
|
+
project_id: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Project UUID',
|
|
57
|
+
},
|
|
58
|
+
message: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Progress update message (supports markdown)',
|
|
61
|
+
},
|
|
62
|
+
type: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
enum: ['info', 'milestone', 'blocker', 'question'],
|
|
65
|
+
description:
|
|
66
|
+
'Type of update: info (general update), milestone (key achievement), blocker (something blocking progress), question (asking for input). Defaults to info.',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
required: ['project_id', 'message'],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|