@vibescope/mcp-server 0.3.0 → 0.3.3
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/dist/api-client/blockers.d.ts +46 -0
- package/dist/api-client/blockers.js +43 -0
- package/dist/api-client/cost.d.ts +112 -0
- package/dist/api-client/cost.js +76 -0
- package/dist/api-client/decisions.d.ts +55 -0
- package/dist/api-client/decisions.js +32 -0
- package/dist/api-client/discovery.d.ts +62 -0
- package/dist/api-client/discovery.js +21 -0
- package/dist/api-client/ideas.d.ts +75 -0
- package/dist/api-client/ideas.js +36 -0
- package/dist/api-client/index.d.ts +749 -0
- package/dist/api-client/index.js +291 -0
- package/dist/api-client/project.d.ts +132 -0
- package/dist/api-client/project.js +45 -0
- package/dist/api-client/session.d.ts +163 -0
- package/dist/api-client/session.js +52 -0
- package/dist/api-client/tasks.d.ts +328 -0
- package/dist/api-client/tasks.js +132 -0
- package/dist/api-client/types.d.ts +25 -0
- package/dist/api-client/types.js +4 -0
- package/dist/api-client/worktrees.d.ts +33 -0
- package/dist/api-client/worktrees.js +26 -0
- package/dist/api-client.d.ts +9 -0
- package/dist/api-client.js +104 -25
- package/dist/cli-init.d.ts +17 -0
- package/dist/cli-init.js +445 -0
- package/dist/cli.js +0 -0
- package/dist/handlers/cloud-agents.d.ts +21 -0
- package/dist/handlers/cloud-agents.js +91 -0
- package/dist/handlers/discovery.js +7 -0
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.js +3 -0
- package/dist/handlers/session.js +3 -1
- package/dist/handlers/tasks.js +10 -12
- package/dist/handlers/types.d.ts +2 -1
- package/dist/handlers/validation.js +5 -1
- package/dist/index.js +8 -3
- package/dist/token-tracking.js +2 -2
- package/dist/tools/blockers.d.ts +13 -0
- package/dist/tools/blockers.js +119 -0
- package/dist/tools/bodies-of-work.d.ts +19 -0
- package/dist/tools/bodies-of-work.js +280 -0
- package/dist/tools/cloud-agents.d.ts +9 -0
- package/dist/tools/cloud-agents.js +67 -0
- package/dist/tools/connectors.d.ts +14 -0
- package/dist/tools/connectors.js +188 -0
- package/dist/tools/cost.d.ts +11 -0
- package/dist/tools/cost.js +108 -0
- package/dist/tools/decisions.d.ts +12 -0
- package/dist/tools/decisions.js +108 -0
- package/dist/tools/deployment.d.ts +24 -0
- package/dist/tools/deployment.js +439 -0
- package/dist/tools/discovery.d.ts +10 -0
- package/dist/tools/discovery.js +73 -0
- package/dist/tools/fallback.d.ts +11 -0
- package/dist/tools/fallback.js +108 -0
- package/dist/tools/file-checkouts.d.ts +13 -0
- package/dist/tools/file-checkouts.js +141 -0
- package/dist/tools/findings.d.ts +13 -0
- package/dist/tools/findings.js +98 -0
- package/dist/tools/git-issues.d.ts +11 -0
- package/dist/tools/git-issues.js +127 -0
- package/dist/tools/ideas.d.ts +13 -0
- package/dist/tools/ideas.js +159 -0
- package/dist/tools/index.d.ts +71 -0
- package/dist/tools/index.js +98 -0
- package/dist/tools/milestones.d.ts +12 -0
- package/dist/tools/milestones.js +115 -0
- package/dist/tools/organizations.d.ts +17 -0
- package/dist/tools/organizations.js +221 -0
- package/dist/tools/progress.d.ts +9 -0
- package/dist/tools/progress.js +70 -0
- package/dist/tools/project.d.ts +13 -0
- package/dist/tools/project.js +199 -0
- package/dist/tools/requests.d.ts +10 -0
- package/dist/tools/requests.js +65 -0
- package/dist/tools/roles.d.ts +11 -0
- package/dist/tools/roles.js +109 -0
- package/dist/tools/session.d.ts +15 -0
- package/dist/tools/session.js +178 -0
- package/dist/tools/sprints.d.ts +18 -0
- package/dist/tools/sprints.js +295 -0
- package/dist/tools/tasks.d.ts +27 -0
- package/dist/tools/tasks.js +539 -0
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.js +6 -0
- package/dist/tools/validation.d.ts +10 -0
- package/dist/tools/validation.js +72 -0
- package/dist/tools/worktrees.d.ts +9 -0
- package/dist/tools/worktrees.js +63 -0
- package/dist/utils.d.ts +66 -0
- package/dist/utils.js +102 -0
- package/docs/TOOLS.md +55 -2
- package/package.json +5 -3
- package/scripts/generate-docs.ts +1 -1
- package/src/api-client/blockers.ts +86 -0
- package/src/api-client/cost.ts +185 -0
- package/src/api-client/decisions.ts +87 -0
- package/src/api-client/discovery.ts +81 -0
- package/src/api-client/ideas.ts +112 -0
- package/src/api-client/index.ts +378 -0
- package/src/api-client/project.ts +179 -0
- package/src/api-client/session.ts +220 -0
- package/src/api-client/tasks.ts +450 -0
- package/src/api-client/types.ts +32 -0
- package/src/api-client/worktrees.ts +53 -0
- package/src/api-client.test.ts +136 -9
- package/src/api-client.ts +125 -27
- package/src/cli-init.ts +504 -0
- package/src/handlers/__test-utils__.ts +2 -0
- package/src/handlers/cloud-agents.ts +138 -0
- package/src/handlers/discovery.ts +7 -0
- package/src/handlers/index.ts +3 -0
- package/src/handlers/session.ts +3 -1
- package/src/handlers/tasks.ts +10 -12
- package/src/handlers/tool-categories.test.ts +1 -1
- package/src/handlers/types.ts +2 -1
- package/src/handlers/validation.ts +6 -1
- package/src/index.test.ts +2 -2
- package/src/index.ts +8 -2
- package/src/token-tracking.ts +3 -2
- package/src/tools/blockers.ts +122 -0
- package/src/tools/bodies-of-work.ts +283 -0
- package/src/tools/cloud-agents.ts +70 -0
- package/src/tools/connectors.ts +191 -0
- package/src/tools/cost.ts +111 -0
- package/src/tools/decisions.ts +111 -0
- package/src/tools/deployment.ts +442 -0
- package/src/tools/discovery.ts +76 -0
- package/src/tools/fallback.ts +111 -0
- package/src/tools/file-checkouts.ts +145 -0
- package/src/tools/findings.ts +101 -0
- package/src/tools/git-issues.ts +130 -0
- package/src/tools/ideas.ts +162 -0
- package/src/tools/index.ts +131 -0
- package/src/tools/milestones.ts +118 -0
- package/src/tools/organizations.ts +224 -0
- package/src/tools/progress.ts +73 -0
- package/src/tools/project.ts +202 -0
- package/src/tools/requests.ts +68 -0
- package/src/tools/roles.ts +112 -0
- package/src/tools/session.ts +181 -0
- package/src/tools/sprints.ts +298 -0
- package/src/tools/tasks.ts +542 -0
- package/src/tools/tools.test.ts +222 -0
- package/src/tools/types.ts +9 -0
- package/src/tools/validation.ts +75 -0
- package/src/tools/worktrees.ts +66 -0
- package/src/tools.test.ts +1 -1
- package/src/utils.test.ts +229 -0
- package/src/utils.ts +117 -0
- package/dist/tools.d.ts +0 -2
- package/dist/tools.js +0 -3602
- package/src/tools.ts +0 -3607
|
@@ -0,0 +1,280 @@
|
|
|
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
|
+
export const bodiesOfWorkTools = [
|
|
19
|
+
{
|
|
20
|
+
name: 'create_body_of_work',
|
|
21
|
+
description: `Create a new body of work to group tasks into phases (pre/core/post).
|
|
22
|
+
Bodies of work allow organizing related tasks with optional auto-deployment on completion.`,
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
project_id: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Project UUID',
|
|
29
|
+
},
|
|
30
|
+
title: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Title for the body of work',
|
|
33
|
+
},
|
|
34
|
+
description: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Optional description',
|
|
37
|
+
},
|
|
38
|
+
auto_deploy_on_completion: {
|
|
39
|
+
type: 'boolean',
|
|
40
|
+
description: 'Automatically request deployment when all tasks complete (default: false)',
|
|
41
|
+
},
|
|
42
|
+
deploy_environment: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
enum: ['development', 'staging', 'production'],
|
|
45
|
+
description: 'Target environment for auto-deploy (default: production)',
|
|
46
|
+
},
|
|
47
|
+
deploy_version_bump: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
enum: ['patch', 'minor', 'major'],
|
|
50
|
+
description: 'Version bump for auto-deploy (default: minor)',
|
|
51
|
+
},
|
|
52
|
+
deploy_trigger: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
enum: ['all_completed', 'all_completed_validated'],
|
|
55
|
+
description: 'When to trigger auto-deploy: all_completed (immediate) or all_completed_validated (requires validation, default)',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
required: ['project_id', 'title'],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'update_body_of_work',
|
|
63
|
+
description: `Update a body of work's settings.`,
|
|
64
|
+
inputSchema: {
|
|
65
|
+
type: 'object',
|
|
66
|
+
properties: {
|
|
67
|
+
body_of_work_id: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Body of work UUID',
|
|
70
|
+
},
|
|
71
|
+
title: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'Updated title',
|
|
74
|
+
},
|
|
75
|
+
description: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Updated description',
|
|
78
|
+
},
|
|
79
|
+
auto_deploy_on_completion: {
|
|
80
|
+
type: 'boolean',
|
|
81
|
+
description: 'Auto-deploy setting',
|
|
82
|
+
},
|
|
83
|
+
deploy_environment: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
enum: ['development', 'staging', 'production'],
|
|
86
|
+
description: 'Target environment',
|
|
87
|
+
},
|
|
88
|
+
deploy_version_bump: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
enum: ['patch', 'minor', 'major'],
|
|
91
|
+
description: 'Version bump type',
|
|
92
|
+
},
|
|
93
|
+
deploy_trigger: {
|
|
94
|
+
type: 'string',
|
|
95
|
+
enum: ['all_completed', 'all_completed_validated'],
|
|
96
|
+
description: 'When to trigger auto-deploy',
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
required: ['body_of_work_id'],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'get_body_of_work',
|
|
104
|
+
description: `Get a body of work with all its tasks organized by phase.`,
|
|
105
|
+
inputSchema: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
properties: {
|
|
108
|
+
body_of_work_id: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
description: 'Body of work UUID',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
required: ['body_of_work_id'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'get_bodies_of_work',
|
|
118
|
+
description: `List bodies of work for a project with task counts per phase.`,
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
project_id: {
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: 'Project UUID',
|
|
125
|
+
},
|
|
126
|
+
status: {
|
|
127
|
+
type: 'string',
|
|
128
|
+
enum: ['draft', 'active', 'completed', 'cancelled'],
|
|
129
|
+
description: 'Filter by status (optional)',
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
required: ['project_id'],
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'delete_body_of_work',
|
|
137
|
+
description: `Delete a body of work. Tasks are preserved but no longer grouped.`,
|
|
138
|
+
inputSchema: {
|
|
139
|
+
type: 'object',
|
|
140
|
+
properties: {
|
|
141
|
+
body_of_work_id: {
|
|
142
|
+
type: 'string',
|
|
143
|
+
description: 'Body of work UUID',
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
required: ['body_of_work_id'],
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'add_task_to_body_of_work',
|
|
151
|
+
description: `Add a task to a body of work in a specific phase.
|
|
152
|
+
Phases control execution order: pre tasks run first, then core, then post.`,
|
|
153
|
+
inputSchema: {
|
|
154
|
+
type: 'object',
|
|
155
|
+
properties: {
|
|
156
|
+
body_of_work_id: {
|
|
157
|
+
type: 'string',
|
|
158
|
+
description: 'Body of work UUID',
|
|
159
|
+
},
|
|
160
|
+
task_id: {
|
|
161
|
+
type: 'string',
|
|
162
|
+
description: 'Task UUID to add',
|
|
163
|
+
},
|
|
164
|
+
phase: {
|
|
165
|
+
type: 'string',
|
|
166
|
+
enum: ['pre', 'core', 'post'],
|
|
167
|
+
description: 'Task phase (default: core)',
|
|
168
|
+
},
|
|
169
|
+
order_index: {
|
|
170
|
+
type: 'number',
|
|
171
|
+
description: 'Order within phase (auto-assigned if not specified)',
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
required: ['body_of_work_id', 'task_id'],
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'remove_task_from_body_of_work',
|
|
179
|
+
description: `Remove a task from its body of work. The task is preserved.`,
|
|
180
|
+
inputSchema: {
|
|
181
|
+
type: 'object',
|
|
182
|
+
properties: {
|
|
183
|
+
task_id: {
|
|
184
|
+
type: 'string',
|
|
185
|
+
description: 'Task UUID to remove',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
required: ['task_id'],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: 'activate_body_of_work',
|
|
193
|
+
description: `Activate a draft body of work to start execution.
|
|
194
|
+
Requires at least one task. Once active, tasks can be worked on following phase order.`,
|
|
195
|
+
inputSchema: {
|
|
196
|
+
type: 'object',
|
|
197
|
+
properties: {
|
|
198
|
+
body_of_work_id: {
|
|
199
|
+
type: 'string',
|
|
200
|
+
description: 'Body of work UUID',
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
required: ['body_of_work_id'],
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'add_task_dependency',
|
|
208
|
+
description: `Add a dependency between tasks in a body of work.
|
|
209
|
+
The dependent task cannot start until the dependency is completed. Prevents circular dependencies.`,
|
|
210
|
+
inputSchema: {
|
|
211
|
+
type: 'object',
|
|
212
|
+
properties: {
|
|
213
|
+
body_of_work_id: {
|
|
214
|
+
type: 'string',
|
|
215
|
+
description: 'Body of work UUID',
|
|
216
|
+
},
|
|
217
|
+
task_id: {
|
|
218
|
+
type: 'string',
|
|
219
|
+
description: 'Task that depends on another task',
|
|
220
|
+
},
|
|
221
|
+
depends_on_task_id: {
|
|
222
|
+
type: 'string',
|
|
223
|
+
description: 'Task that must complete first',
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
required: ['body_of_work_id', 'task_id', 'depends_on_task_id'],
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'remove_task_dependency',
|
|
231
|
+
description: `Remove a dependency between tasks.`,
|
|
232
|
+
inputSchema: {
|
|
233
|
+
type: 'object',
|
|
234
|
+
properties: {
|
|
235
|
+
task_id: {
|
|
236
|
+
type: 'string',
|
|
237
|
+
description: 'Task UUID',
|
|
238
|
+
},
|
|
239
|
+
depends_on_task_id: {
|
|
240
|
+
type: 'string',
|
|
241
|
+
description: 'Dependency task UUID',
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
required: ['task_id', 'depends_on_task_id'],
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'get_task_dependencies',
|
|
249
|
+
description: `Get task dependencies for a body of work or specific task.`,
|
|
250
|
+
inputSchema: {
|
|
251
|
+
type: 'object',
|
|
252
|
+
properties: {
|
|
253
|
+
body_of_work_id: {
|
|
254
|
+
type: 'string',
|
|
255
|
+
description: 'Body of work UUID (optional if task_id provided)',
|
|
256
|
+
},
|
|
257
|
+
task_id: {
|
|
258
|
+
type: 'string',
|
|
259
|
+
description: 'Specific task UUID (optional if body_of_work_id provided)',
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: 'get_next_body_of_work_task',
|
|
266
|
+
description: `Get the next available task from a body of work.
|
|
267
|
+
Considers phase order (pre → core → post) and task dependencies.
|
|
268
|
+
Only returns tasks where all dependencies are completed.`,
|
|
269
|
+
inputSchema: {
|
|
270
|
+
type: 'object',
|
|
271
|
+
properties: {
|
|
272
|
+
body_of_work_id: {
|
|
273
|
+
type: 'string',
|
|
274
|
+
description: 'Body of work UUID',
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
required: ['body_of_work_id'],
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
];
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Agent Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing cloud-spawned agents:
|
|
5
|
+
* - cleanup_stale_cloud_agents
|
|
6
|
+
* - list_cloud_agents
|
|
7
|
+
*/
|
|
8
|
+
export const cloudAgentTools = [
|
|
9
|
+
{
|
|
10
|
+
name: 'cleanup_stale_cloud_agents',
|
|
11
|
+
description: `Clean up stale cloud agents that failed to start or lost connection.
|
|
12
|
+
|
|
13
|
+
Finds agents stuck in 'starting' status (or optionally 'running' with no heartbeat)
|
|
14
|
+
and marks them as failed. Only operates on the current session's project.
|
|
15
|
+
|
|
16
|
+
Use this when:
|
|
17
|
+
- You see agents stuck in "starting" status on the dashboard
|
|
18
|
+
- Cloud agents failed to spawn but weren't cleaned up
|
|
19
|
+
- You want to clear ghost agents from a previous session
|
|
20
|
+
|
|
21
|
+
SECURITY: This only affects agents in YOUR current project. Cannot access other users' projects.`,
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
project_id: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Project UUID (required)'
|
|
28
|
+
},
|
|
29
|
+
stale_minutes: {
|
|
30
|
+
type: 'number',
|
|
31
|
+
description: 'Consider agents stale after this many minutes (default: 5)'
|
|
32
|
+
},
|
|
33
|
+
include_running: {
|
|
34
|
+
type: 'boolean',
|
|
35
|
+
description: 'Also clean up "running" agents with no recent heartbeat (default: false)'
|
|
36
|
+
},
|
|
37
|
+
dry_run: {
|
|
38
|
+
type: 'boolean',
|
|
39
|
+
description: 'If true, just report what would be cleaned without actually cleaning (default: false)'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
required: ['project_id']
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'list_cloud_agents',
|
|
47
|
+
description: `List cloud agents for a project.
|
|
48
|
+
|
|
49
|
+
Returns all spawned cloud agents for the project with their current status.
|
|
50
|
+
Use this to check the state of cloud agents before/after cleanup.`,
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: 'object',
|
|
53
|
+
properties: {
|
|
54
|
+
project_id: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Project UUID (required)'
|
|
57
|
+
},
|
|
58
|
+
status: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
enum: ['starting', 'running', 'stopped', 'failed', 'all'],
|
|
61
|
+
description: 'Filter by status (default: all)'
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
required: ['project_id']
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for external integrations (Slack, Discord, webhooks, etc.):
|
|
5
|
+
* - get_connectors
|
|
6
|
+
* - get_connector
|
|
7
|
+
* - add_connector
|
|
8
|
+
* - update_connector
|
|
9
|
+
* - delete_connector
|
|
10
|
+
* - test_connector
|
|
11
|
+
* - get_connector_events
|
|
12
|
+
*/
|
|
13
|
+
import type { Tool } from './types.js';
|
|
14
|
+
export declare const connectorTools: Tool[];
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for external integrations (Slack, Discord, webhooks, etc.):
|
|
5
|
+
* - get_connectors
|
|
6
|
+
* - get_connector
|
|
7
|
+
* - add_connector
|
|
8
|
+
* - update_connector
|
|
9
|
+
* - delete_connector
|
|
10
|
+
* - test_connector
|
|
11
|
+
* - get_connector_events
|
|
12
|
+
*/
|
|
13
|
+
export const connectorTools = [
|
|
14
|
+
{
|
|
15
|
+
name: 'get_connectors',
|
|
16
|
+
description: `List connectors for a project. Connectors enable sending events to external services (Slack, Discord, webhooks, etc.).`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
project_id: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Project UUID',
|
|
23
|
+
},
|
|
24
|
+
type: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
enum: ['webhook', 'slack', 'discord', 'github', 'custom'],
|
|
27
|
+
description: 'Filter by connector type (optional)',
|
|
28
|
+
},
|
|
29
|
+
status: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
enum: ['active', 'disabled'],
|
|
32
|
+
description: 'Filter by status (optional)',
|
|
33
|
+
},
|
|
34
|
+
limit: {
|
|
35
|
+
type: 'number',
|
|
36
|
+
description: 'Max connectors to return (default: 50)',
|
|
37
|
+
},
|
|
38
|
+
offset: {
|
|
39
|
+
type: 'number',
|
|
40
|
+
description: 'Pagination offset (default: 0)',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
required: ['project_id'],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'get_connector',
|
|
48
|
+
description: `Get a single connector with full details including configuration (sensitive fields are masked).`,
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: 'object',
|
|
51
|
+
properties: {
|
|
52
|
+
connector_id: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'Connector UUID',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
required: ['connector_id'],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'add_connector',
|
|
62
|
+
description: `Add a new connector for external integrations. Supports webhook, Slack, Discord, GitHub, and custom connectors.`,
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: {
|
|
66
|
+
project_id: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Project UUID',
|
|
69
|
+
},
|
|
70
|
+
name: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'Connector name (e.g., "Slack Notifications")',
|
|
73
|
+
},
|
|
74
|
+
type: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
enum: ['webhook', 'slack', 'discord', 'github', 'custom'],
|
|
77
|
+
description: 'Connector type',
|
|
78
|
+
},
|
|
79
|
+
description: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: 'Optional description',
|
|
82
|
+
},
|
|
83
|
+
config: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
description: 'Type-specific configuration (e.g., { webhook_url: "..." } for Slack)',
|
|
86
|
+
},
|
|
87
|
+
events: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
description: 'Event subscriptions (e.g., { task_completed: true, blocker_added: true })',
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
required: ['project_id', 'name', 'type'],
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'update_connector',
|
|
97
|
+
description: `Update a connector's configuration, events, or status.`,
|
|
98
|
+
inputSchema: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
connector_id: {
|
|
102
|
+
type: 'string',
|
|
103
|
+
description: 'Connector UUID',
|
|
104
|
+
},
|
|
105
|
+
name: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'Updated name',
|
|
108
|
+
},
|
|
109
|
+
description: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'Updated description',
|
|
112
|
+
},
|
|
113
|
+
config: {
|
|
114
|
+
type: 'object',
|
|
115
|
+
description: 'Updated configuration (merged with existing)',
|
|
116
|
+
},
|
|
117
|
+
events: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
description: 'Updated event subscriptions',
|
|
120
|
+
},
|
|
121
|
+
status: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
enum: ['active', 'disabled'],
|
|
124
|
+
description: 'Enable or disable the connector',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
required: ['connector_id'],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'delete_connector',
|
|
132
|
+
description: `Delete a connector.`,
|
|
133
|
+
inputSchema: {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
connector_id: {
|
|
137
|
+
type: 'string',
|
|
138
|
+
description: 'Connector UUID',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
required: ['connector_id'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'test_connector',
|
|
146
|
+
description: `Test a connector by sending a test event. Returns success/failure status.`,
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: {
|
|
150
|
+
connector_id: {
|
|
151
|
+
type: 'string',
|
|
152
|
+
description: 'Connector UUID to test',
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
required: ['connector_id'],
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: 'get_connector_events',
|
|
160
|
+
description: `Get event history for a connector or project. Shows delivery status and errors.`,
|
|
161
|
+
inputSchema: {
|
|
162
|
+
type: 'object',
|
|
163
|
+
properties: {
|
|
164
|
+
connector_id: {
|
|
165
|
+
type: 'string',
|
|
166
|
+
description: 'Connector UUID (optional if project_id provided)',
|
|
167
|
+
},
|
|
168
|
+
project_id: {
|
|
169
|
+
type: 'string',
|
|
170
|
+
description: 'Project UUID (optional if connector_id provided)',
|
|
171
|
+
},
|
|
172
|
+
status: {
|
|
173
|
+
type: 'string',
|
|
174
|
+
enum: ['pending', 'sent', 'failed', 'retrying'],
|
|
175
|
+
description: 'Filter by delivery status (optional)',
|
|
176
|
+
},
|
|
177
|
+
limit: {
|
|
178
|
+
type: 'number',
|
|
179
|
+
description: 'Max events to return (default: 50)',
|
|
180
|
+
},
|
|
181
|
+
offset: {
|
|
182
|
+
type: 'number',
|
|
183
|
+
description: 'Pagination offset (default: 0)',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for cost monitoring and alerts:
|
|
5
|
+
* - get_cost_summary
|
|
6
|
+
* - add_cost_alert
|
|
7
|
+
* - update_cost_alert
|
|
8
|
+
* - delete_cost_alert
|
|
9
|
+
*/
|
|
10
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
export declare const costTools: Tool[];
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for cost monitoring and alerts:
|
|
5
|
+
* - get_cost_summary
|
|
6
|
+
* - add_cost_alert
|
|
7
|
+
* - update_cost_alert
|
|
8
|
+
* - delete_cost_alert
|
|
9
|
+
*/
|
|
10
|
+
export const costTools = [
|
|
11
|
+
{
|
|
12
|
+
name: 'get_cost_summary',
|
|
13
|
+
description: 'Get cost summary (daily/weekly/monthly) for a project.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
project_id: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Project UUID',
|
|
20
|
+
},
|
|
21
|
+
period: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
enum: ['daily', 'weekly', 'monthly'],
|
|
24
|
+
description: 'Summary period (default: daily)',
|
|
25
|
+
},
|
|
26
|
+
limit: {
|
|
27
|
+
type: 'number',
|
|
28
|
+
description: 'Max records to return (default: 30)',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ['project_id'],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'add_cost_alert',
|
|
36
|
+
description: 'Add a cost alert threshold.',
|
|
37
|
+
inputSchema: {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
project_id: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Project UUID (null for all projects)',
|
|
43
|
+
},
|
|
44
|
+
threshold_amount: {
|
|
45
|
+
type: 'number',
|
|
46
|
+
description: 'Amount in USD that triggers the alert',
|
|
47
|
+
},
|
|
48
|
+
threshold_period: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
enum: ['daily', 'weekly', 'monthly'],
|
|
51
|
+
description: 'Period for the threshold',
|
|
52
|
+
},
|
|
53
|
+
alert_type: {
|
|
54
|
+
type: 'string',
|
|
55
|
+
enum: ['warning', 'critical'],
|
|
56
|
+
description: 'Alert severity (default: warning)',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
required: ['threshold_amount', 'threshold_period'],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'update_cost_alert',
|
|
64
|
+
description: 'Update a cost alert.',
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: 'object',
|
|
67
|
+
properties: {
|
|
68
|
+
alert_id: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
description: 'Alert UUID',
|
|
71
|
+
},
|
|
72
|
+
threshold_amount: {
|
|
73
|
+
type: 'number',
|
|
74
|
+
description: 'New threshold amount in USD',
|
|
75
|
+
},
|
|
76
|
+
threshold_period: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
enum: ['daily', 'weekly', 'monthly'],
|
|
79
|
+
description: 'New period',
|
|
80
|
+
},
|
|
81
|
+
alert_type: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
enum: ['warning', 'critical'],
|
|
84
|
+
description: 'New alert type',
|
|
85
|
+
},
|
|
86
|
+
enabled: {
|
|
87
|
+
type: 'boolean',
|
|
88
|
+
description: 'Enable or disable the alert',
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
required: ['alert_id'],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'delete_cost_alert',
|
|
96
|
+
description: 'Delete a cost alert.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
alert_id: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
description: 'Alert UUID to delete',
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
required: ['alert_id'],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for recording architectural and technical decisions:
|
|
5
|
+
* - log_decision
|
|
6
|
+
* - get_decision
|
|
7
|
+
* - get_decisions
|
|
8
|
+
* - get_decisions_stats
|
|
9
|
+
* - delete_decision
|
|
10
|
+
*/
|
|
11
|
+
import type { Tool } from './types.js';
|
|
12
|
+
export declare const decisionTools: Tool[];
|