@vibescope/mcp-server 0.4.5 → 0.4.7
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/project.d.ts +1 -0
- package/dist/api-client.d.ts +4 -1
- package/dist/api-client.js +24 -7
- package/dist/cli-init.js +25 -24
- package/dist/cli.js +26 -26
- package/dist/handlers/chat.d.ts +2 -0
- package/dist/handlers/chat.js +25 -0
- package/dist/handlers/discovery.js +12 -0
- package/dist/handlers/project.js +4 -2
- package/dist/handlers/tool-docs.js +1203 -1137
- package/dist/handlers/version.js +1 -1
- package/dist/index.js +159 -87
- package/dist/setup.js +13 -7
- 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/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/dist/version.d.ts +9 -3
- package/dist/version.js +56 -8
- package/docs/TOOLS.md +2663 -2559
- 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 +180 -179
- 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 +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 -847
- package/src/api-client.ts +2723 -2706
- package/src/cli-init.ts +558 -557
- 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 -69
- 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 +427 -415
- 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 +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 -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 +1133 -1133
- 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 -1499
- 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 -807
- package/src/setup.test.ts +243 -233
- package/src/setup.ts +410 -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 -455
- 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 +162 -109
- package/tsconfig.json +16 -16
- package/vitest.config.ts +14 -14
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
export const bodiesOfWorkTools = [
|
|
19
19
|
{
|
|
20
20
|
name: 'create_body_of_work',
|
|
21
|
-
description: `Create a new body of work to group tasks into phases (pre/core/post).
|
|
21
|
+
description: `Create a new body of work to group tasks into phases (pre/core/post).
|
|
22
22
|
Bodies of work allow organizing related tasks with optional auto-deployment on completion.`,
|
|
23
23
|
inputSchema: {
|
|
24
24
|
type: 'object',
|
|
@@ -148,7 +148,7 @@ Bodies of work allow organizing related tasks with optional auto-deployment on c
|
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
name: 'add_task_to_body_of_work',
|
|
151
|
-
description: `Add a task to a body of work in a specific phase.
|
|
151
|
+
description: `Add a task to a body of work in a specific phase.
|
|
152
152
|
Phases control execution order: pre tasks run first, then core, then post.`,
|
|
153
153
|
inputSchema: {
|
|
154
154
|
type: 'object',
|
|
@@ -190,7 +190,7 @@ Phases control execution order: pre tasks run first, then core, then post.`,
|
|
|
190
190
|
},
|
|
191
191
|
{
|
|
192
192
|
name: 'activate_body_of_work',
|
|
193
|
-
description: `Activate a draft body of work to start execution.
|
|
193
|
+
description: `Activate a draft body of work to start execution.
|
|
194
194
|
Requires at least one task. Once active, tasks can be worked on following phase order.`,
|
|
195
195
|
inputSchema: {
|
|
196
196
|
type: 'object',
|
|
@@ -205,7 +205,7 @@ Requires at least one task. Once active, tasks can be worked on following phase
|
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
207
|
name: 'add_task_dependency',
|
|
208
|
-
description: `Add a dependency between tasks in a body of work.
|
|
208
|
+
description: `Add a dependency between tasks in a body of work.
|
|
209
209
|
The dependent task cannot start until the dependency is completed. Prevents circular dependencies.`,
|
|
210
210
|
inputSchema: {
|
|
211
211
|
type: 'object',
|
|
@@ -263,8 +263,8 @@ The dependent task cannot start until the dependency is completed. Prevents circ
|
|
|
263
263
|
},
|
|
264
264
|
{
|
|
265
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.
|
|
266
|
+
description: `Get the next available task from a body of work.
|
|
267
|
+
Considers phase order (pre → core → post) and task dependencies.
|
|
268
268
|
Only returns tasks where all dependencies are completed.`,
|
|
269
269
|
inputSchema: {
|
|
270
270
|
type: 'object',
|
package/dist/tools/chat.d.ts
CHANGED
package/dist/tools/chat.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Project chat tools:
|
|
3
3
|
* - send_project_message
|
|
4
4
|
* - get_project_messages
|
|
5
|
+
* - post_progress
|
|
5
6
|
*/
|
|
6
7
|
export const chatTools = [
|
|
7
8
|
{
|
|
@@ -40,4 +41,27 @@ export const chatTools = [
|
|
|
40
41
|
required: ['project_id'],
|
|
41
42
|
},
|
|
42
43
|
},
|
|
44
|
+
{
|
|
45
|
+
name: 'post_progress',
|
|
46
|
+
description: '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.',
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
project_id: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
description: 'Project UUID',
|
|
53
|
+
},
|
|
54
|
+
message: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Progress update message (supports markdown)',
|
|
57
|
+
},
|
|
58
|
+
type: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
enum: ['info', 'milestone', 'blocker', 'question'],
|
|
61
|
+
description: 'Type of update: info (general update), milestone (key achievement), blocker (something blocking progress), question (asking for input). Defaults to info.',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
required: ['project_id', 'message'],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
43
67
|
];
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
export const cloudAgentTools = [
|
|
9
9
|
{
|
|
10
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
|
-
|
|
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
21
|
SECURITY: This only affects agents in YOUR current project. Cannot access other users' projects.`,
|
|
22
22
|
inputSchema: {
|
|
23
23
|
type: 'object',
|
|
@@ -44,9 +44,9 @@ SECURITY: This only affects agents in YOUR current project. Cannot access other
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
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.
|
|
47
|
+
description: `List cloud agents for a project.
|
|
48
|
+
|
|
49
|
+
Returns all spawned cloud agents for the project with their current status.
|
|
50
50
|
Use this to check the state of cloud agents before/after cleanup.`,
|
|
51
51
|
inputSchema: {
|
|
52
52
|
type: 'object',
|
|
@@ -66,15 +66,15 @@ Use this to check the state of cloud agents before/after cleanup.`,
|
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
name: 'update_agent_status',
|
|
69
|
-
description: `Report what you're currently doing. This updates the status message shown on the dashboard.
|
|
70
|
-
|
|
71
|
-
Call this at key milestones during boot and work:
|
|
72
|
-
- "Installing dependencies..."
|
|
73
|
-
- "Running start_work_session..."
|
|
74
|
-
- "Working on: <task title>"
|
|
75
|
-
- "Running tests..."
|
|
76
|
-
- "Committing changes..."
|
|
77
|
-
|
|
69
|
+
description: `Report what you're currently doing. This updates the status message shown on the dashboard.
|
|
70
|
+
|
|
71
|
+
Call this at key milestones during boot and work:
|
|
72
|
+
- "Installing dependencies..."
|
|
73
|
+
- "Running start_work_session..."
|
|
74
|
+
- "Working on: <task title>"
|
|
75
|
+
- "Running tests..."
|
|
76
|
+
- "Committing changes..."
|
|
77
|
+
|
|
78
78
|
Keep messages short (under 80 chars). The dashboard shows this in real-time.`,
|
|
79
79
|
inputSchema: {
|
|
80
80
|
type: 'object',
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing feature specs (between ideas and tasks):
|
|
5
|
+
* - add_feature
|
|
6
|
+
* - update_feature
|
|
7
|
+
* - get_feature
|
|
8
|
+
* - get_features
|
|
9
|
+
* - delete_feature
|
|
10
|
+
* - link_idea_to_feature
|
|
11
|
+
*/
|
|
12
|
+
import type { Tool } from './types.js';
|
|
13
|
+
export declare const featureTools: Tool[];
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing feature specs (between ideas and tasks):
|
|
5
|
+
* - add_feature
|
|
6
|
+
* - update_feature
|
|
7
|
+
* - get_feature
|
|
8
|
+
* - get_features
|
|
9
|
+
* - delete_feature
|
|
10
|
+
* - link_idea_to_feature
|
|
11
|
+
*/
|
|
12
|
+
export const featureTools = [
|
|
13
|
+
{
|
|
14
|
+
name: 'add_feature',
|
|
15
|
+
description: `Create a new feature spec. Features sit between ideas (quick thoughts) and tasks (actionable work). Use features to flesh out a concept into a full spec before breaking it into tasks. Starts as 'draft'.`,
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
project_id: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Project UUID',
|
|
22
|
+
},
|
|
23
|
+
title: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Feature title',
|
|
26
|
+
},
|
|
27
|
+
body: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'Markdown spec content — requirements, user stories, acceptance criteria, technical approach',
|
|
30
|
+
},
|
|
31
|
+
priority: {
|
|
32
|
+
type: 'number',
|
|
33
|
+
minimum: 1,
|
|
34
|
+
maximum: 5,
|
|
35
|
+
description: 'Priority 1-5 (1 = highest, default: 2)',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ['project_id', 'title'],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'update_feature',
|
|
43
|
+
description: `Update a feature's title, body, status, or priority.`,
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
feature_id: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'Feature UUID',
|
|
50
|
+
},
|
|
51
|
+
title: {
|
|
52
|
+
type: 'string',
|
|
53
|
+
description: 'Updated title',
|
|
54
|
+
},
|
|
55
|
+
body: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'Updated markdown spec content',
|
|
58
|
+
},
|
|
59
|
+
status: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
enum: ['draft', 'refining', 'specced', 'ready', 'building', 'shipped'],
|
|
62
|
+
description: 'New status',
|
|
63
|
+
},
|
|
64
|
+
priority: {
|
|
65
|
+
type: 'number',
|
|
66
|
+
minimum: 1,
|
|
67
|
+
maximum: 5,
|
|
68
|
+
description: 'Updated priority (1 = highest)',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
required: ['feature_id'],
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'get_feature',
|
|
76
|
+
description: `Get a single feature by ID. More token-efficient than get_features when you need details for a specific feature.`,
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: 'object',
|
|
79
|
+
properties: {
|
|
80
|
+
feature_id: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: 'Feature UUID',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
required: ['feature_id'],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'get_features',
|
|
90
|
+
description: `Get features for a project, optionally filtered by status. Features represent fleshed-out specs between ideas and tasks.`,
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
project_id: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Project UUID',
|
|
97
|
+
},
|
|
98
|
+
status: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
enum: ['draft', 'refining', 'specced', 'ready', 'building', 'shipped'],
|
|
101
|
+
description: 'Filter by status (optional)',
|
|
102
|
+
},
|
|
103
|
+
limit: {
|
|
104
|
+
type: 'number',
|
|
105
|
+
description: 'Max number of features to return (default 20, max 100)',
|
|
106
|
+
},
|
|
107
|
+
offset: {
|
|
108
|
+
type: 'number',
|
|
109
|
+
description: 'Number of features to skip for pagination (default 0)',
|
|
110
|
+
},
|
|
111
|
+
search_query: {
|
|
112
|
+
type: 'string',
|
|
113
|
+
description: 'Search features by title or body content',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
required: ['project_id'],
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'delete_feature',
|
|
121
|
+
description: `Delete a feature spec. This also removes all linked idea and task associations.`,
|
|
122
|
+
inputSchema: {
|
|
123
|
+
type: 'object',
|
|
124
|
+
properties: {
|
|
125
|
+
feature_id: {
|
|
126
|
+
type: 'string',
|
|
127
|
+
description: 'Feature UUID',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
required: ['feature_id'],
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'link_idea_to_feature',
|
|
135
|
+
description: `Link an existing idea to a feature spec. This associates the idea as inspiration for the feature.`,
|
|
136
|
+
inputSchema: {
|
|
137
|
+
type: 'object',
|
|
138
|
+
properties: {
|
|
139
|
+
feature_id: {
|
|
140
|
+
type: 'string',
|
|
141
|
+
description: 'Feature UUID',
|
|
142
|
+
},
|
|
143
|
+
idea_id: {
|
|
144
|
+
type: 'string',
|
|
145
|
+
description: 'Idea UUID to link',
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
required: ['feature_id', 'idea_id'],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
];
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ import { gitIssueTools } from './git-issues.js';
|
|
|
31
31
|
import { connectorTools } from './connectors.js';
|
|
32
32
|
import { cloudAgentTools } from './cloud-agents.js';
|
|
33
33
|
import { versionTools } from './version.js';
|
|
34
|
+
import { featureTools } from './features.js';
|
|
34
35
|
/**
|
|
35
36
|
* All MCP tool definitions combined
|
|
36
37
|
*/
|
|
@@ -69,5 +70,6 @@ export declare const toolCategories: {
|
|
|
69
70
|
readonly connectors: string[];
|
|
70
71
|
readonly cloudAgents: string[];
|
|
71
72
|
readonly version: string[];
|
|
73
|
+
readonly features: string[];
|
|
72
74
|
};
|
|
73
|
-
export { sessionTools, costTools, discoveryTools, worktreeTools, projectTools, taskTools, progressTools, blockerTools, decisionTools, ideaTools, findingTools, validationTools, deploymentTools, fallbackTools, requestTools, milestoneTools, bodiesOfWorkTools, organizationTools, fileCheckoutTools, roleTools, sprintTools, gitIssueTools, connectorTools, cloudAgentTools, versionTools, };
|
|
75
|
+
export { sessionTools, costTools, discoveryTools, worktreeTools, projectTools, taskTools, progressTools, blockerTools, decisionTools, ideaTools, findingTools, validationTools, deploymentTools, fallbackTools, requestTools, milestoneTools, bodiesOfWorkTools, organizationTools, fileCheckoutTools, roleTools, sprintTools, gitIssueTools, connectorTools, cloudAgentTools, versionTools, featureTools, };
|
package/dist/tools/index.js
CHANGED
|
@@ -31,6 +31,7 @@ import { connectorTools } from './connectors.js';
|
|
|
31
31
|
import { cloudAgentTools } from './cloud-agents.js';
|
|
32
32
|
import { versionTools } from './version.js';
|
|
33
33
|
import { chatTools } from './chat.js';
|
|
34
|
+
import { featureTools } from './features.js';
|
|
34
35
|
/**
|
|
35
36
|
* All MCP tool definitions combined
|
|
36
37
|
*/
|
|
@@ -61,6 +62,7 @@ export const tools = [
|
|
|
61
62
|
...cloudAgentTools,
|
|
62
63
|
...versionTools,
|
|
63
64
|
...chatTools,
|
|
65
|
+
...featureTools,
|
|
64
66
|
];
|
|
65
67
|
/**
|
|
66
68
|
* Build the complete tool list from all domain modules
|
|
@@ -98,6 +100,7 @@ export const toolCategories = {
|
|
|
98
100
|
connectors: connectorTools.map((t) => t.name),
|
|
99
101
|
cloudAgents: cloudAgentTools.map((t) => t.name),
|
|
100
102
|
version: versionTools.map((t) => t.name),
|
|
103
|
+
features: featureTools.map((t) => t.name),
|
|
101
104
|
};
|
|
102
105
|
// Re-export domain tools for selective imports
|
|
103
|
-
export { sessionTools, costTools, discoveryTools, worktreeTools, projectTools, taskTools, progressTools, blockerTools, decisionTools, ideaTools, findingTools, validationTools, deploymentTools, fallbackTools, requestTools, milestoneTools, bodiesOfWorkTools, organizationTools, fileCheckoutTools, roleTools, sprintTools, gitIssueTools, connectorTools, cloudAgentTools, versionTools, };
|
|
106
|
+
export { sessionTools, costTools, discoveryTools, worktreeTools, projectTools, taskTools, progressTools, blockerTools, decisionTools, ideaTools, findingTools, validationTools, deploymentTools, fallbackTools, requestTools, milestoneTools, bodiesOfWorkTools, organizationTools, fileCheckoutTools, roleTools, sprintTools, gitIssueTools, connectorTools, cloudAgentTools, versionTools, featureTools, };
|
package/dist/tools/milestones.js
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
export const milestoneTools = [
|
|
12
12
|
{
|
|
13
13
|
name: 'add_milestone',
|
|
14
|
-
description: `Add a milestone to a task.
|
|
15
|
-
Milestones help break down large tasks into smaller trackable steps.
|
|
14
|
+
description: `Add a milestone to a task.
|
|
15
|
+
Milestones help break down large tasks into smaller trackable steps.
|
|
16
16
|
Use this to show progress on complex tasks and help gauge completion.`,
|
|
17
17
|
inputSchema: {
|
|
18
18
|
type: 'object',
|
package/dist/tools/project.js
CHANGED
|
@@ -160,6 +160,10 @@ export const projectTools = [
|
|
|
160
160
|
items: { type: 'string' },
|
|
161
161
|
description: 'Array of preferred fallback activities (e.g., ["code_review", "security_review"]). Null means all allowed.',
|
|
162
162
|
},
|
|
163
|
+
allow_agent_task_creation: {
|
|
164
|
+
type: 'boolean',
|
|
165
|
+
description: 'Allow agents to create tasks via add_task (default: false). When disabled, agents receive a helpful error directing them to log suggestions in their completion summary instead.',
|
|
166
|
+
},
|
|
163
167
|
},
|
|
164
168
|
required: ['project_id'],
|
|
165
169
|
},
|
package/dist/tools/requests.js
CHANGED
|
@@ -45,7 +45,7 @@ export const requestTools = [
|
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
name: 'answer_question',
|
|
48
|
-
description: `Answer a question from the user. Use this when the user has asked a question via the dashboard.
|
|
48
|
+
description: `Answer a question from the user. Use this when the user has asked a question via the dashboard.
|
|
49
49
|
The answer will be displayed to the user and the question marked as answered.`,
|
|
50
50
|
inputSchema: {
|
|
51
51
|
type: 'object',
|
package/dist/tools/session.js
CHANGED
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
export const sessionTools = [
|
|
15
15
|
{
|
|
16
16
|
name: 'start_work_session',
|
|
17
|
-
description: `CALL THIS FIRST when beginning work on a project.
|
|
18
|
-
Returns session info, persona, role, and next_task. Start the next_task IMMEDIATELY without asking the user.
|
|
19
|
-
|
|
20
|
-
IMPORTANT: If the user gives you direct work that isn't tracked as a task (e.g., "add feature X", "fix bug Y"), you MUST call add_task() first to create a task before starting work. This ensures all work is tracked and visible on the dashboard.
|
|
21
|
-
|
|
17
|
+
description: `CALL THIS FIRST when beginning work on a project.
|
|
18
|
+
Returns session info, persona, role, and next_task. Start the next_task IMMEDIATELY without asking the user.
|
|
19
|
+
|
|
20
|
+
IMPORTANT: If the user gives you direct work that isn't tracked as a task (e.g., "add feature X", "fix bug Y"), you MUST call add_task() first to create a task before starting work. This ensures all work is tracked and visible on the dashboard.
|
|
21
|
+
|
|
22
22
|
Use mode:'full' for complete context, mode:'lite' (default) for minimal tokens.`,
|
|
23
23
|
inputSchema: {
|
|
24
24
|
type: 'object',
|
|
@@ -61,8 +61,8 @@ Use mode:'full' for complete context, mode:'lite' (default) for minimal tokens.`
|
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
name: 'confirm_agent_setup',
|
|
64
|
-
description: `Confirm that agent setup is complete for this project. Call this after creating your agent's configuration file (e.g., .claude/CLAUDE.md, .gemini/GEMINI.md).
|
|
65
|
-
|
|
64
|
+
description: `Confirm that agent setup is complete for this project. Call this after creating your agent's configuration file (e.g., .claude/CLAUDE.md, .gemini/GEMINI.md).
|
|
65
|
+
|
|
66
66
|
This marks your agent type as fully onboarded to the project, so you won't receive setup instructions again.`,
|
|
67
67
|
inputSchema: {
|
|
68
68
|
type: 'object',
|
|
@@ -104,10 +104,10 @@ This marks your agent type as fully onboarded to the project, so you won't recei
|
|
|
104
104
|
},
|
|
105
105
|
{
|
|
106
106
|
name: 'report_token_usage',
|
|
107
|
-
description: `Report actual Claude API token usage for accurate cost tracking.
|
|
108
|
-
|
|
109
|
-
IMPORTANT: MCP can only estimate tokens from tool I/O (~1-5% of actual usage). Call this tool after each API response to report actual usage from the Claude API response headers.
|
|
110
|
-
|
|
107
|
+
description: `Report actual Claude API token usage for accurate cost tracking.
|
|
108
|
+
|
|
109
|
+
IMPORTANT: MCP can only estimate tokens from tool I/O (~1-5% of actual usage). Call this tool after each API response to report actual usage from the Claude API response headers.
|
|
110
|
+
|
|
111
111
|
The Claude API response includes 'usage.input_tokens' and 'usage.output_tokens' - pass those values here for accurate cost attribution.`,
|
|
112
112
|
inputSchema: {
|
|
113
113
|
type: 'object',
|
package/dist/tools/sprints.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
export const sprintTools = [
|
|
18
18
|
{
|
|
19
19
|
name: 'create_sprint',
|
|
20
|
-
description: `Create a new sprint. Sprints are time-bounded bodies of work with velocity tracking.
|
|
20
|
+
description: `Create a new sprint. Sprints are time-bounded bodies of work with velocity tracking.
|
|
21
21
|
Sprints start in 'planning' status where tasks can be added with story points.`,
|
|
22
22
|
inputSchema: {
|
|
23
23
|
type: 'object',
|
|
@@ -106,8 +106,8 @@ Sprints start in 'planning' status where tasks can be added with story points.`,
|
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
name: 'get_sprint',
|
|
109
|
-
description: `Get a sprint with all its tasks organized by phase (pre/core/post).
|
|
110
|
-
Includes progress percentage, velocity points, and committed points.
|
|
109
|
+
description: `Get a sprint with all its tasks organized by phase (pre/core/post).
|
|
110
|
+
Includes progress percentage, velocity points, and committed points.
|
|
111
111
|
Use summary_only: true to get task counts and next task instead of full task arrays (saves tokens).`,
|
|
112
112
|
inputSchema: {
|
|
113
113
|
type: 'object',
|
|
@@ -126,7 +126,7 @@ Use summary_only: true to get task counts and next task instead of full task arr
|
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
name: 'get_sprints',
|
|
129
|
-
description: `List sprints for a project with velocity metrics.
|
|
129
|
+
description: `List sprints for a project with velocity metrics.
|
|
130
130
|
Returns sprints sorted by sprint_number descending (most recent first).`,
|
|
131
131
|
inputSchema: {
|
|
132
132
|
type: 'object',
|
|
@@ -164,7 +164,7 @@ Returns sprints sorted by sprint_number descending (most recent first).`,
|
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
name: 'start_sprint',
|
|
167
|
-
description: `Start a sprint. Transitions from 'planning' to 'active' status.
|
|
167
|
+
description: `Start a sprint. Transitions from 'planning' to 'active' status.
|
|
168
168
|
Locks the committed_points at the current total story points.`,
|
|
169
169
|
inputSchema: {
|
|
170
170
|
type: 'object',
|
|
@@ -179,7 +179,7 @@ Locks the committed_points at the current total story points.`,
|
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
name: 'complete_sprint',
|
|
182
|
-
description: `Complete a sprint. Handles retrospective phase and auto-deployment if configured.
|
|
182
|
+
description: `Complete a sprint. Handles retrospective phase and auto-deployment if configured.
|
|
183
183
|
Status flow: active → in_review → retrospective → completed`,
|
|
184
184
|
inputSchema: {
|
|
185
185
|
type: 'object',
|
|
@@ -202,7 +202,7 @@ Status flow: active → in_review → retrospective → completed`,
|
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
204
|
name: 'add_task_to_sprint',
|
|
205
|
-
description: `Add a task to a sprint with optional story points.
|
|
205
|
+
description: `Add a task to a sprint with optional story points.
|
|
206
206
|
Tasks can be added during 'planning' status. Story points contribute to committed_points.`,
|
|
207
207
|
inputSchema: {
|
|
208
208
|
type: 'object',
|
|
@@ -248,7 +248,7 @@ Tasks can be added during 'planning' status. Story points contribute to committe
|
|
|
248
248
|
},
|
|
249
249
|
{
|
|
250
250
|
name: 'get_sprint_backlog',
|
|
251
|
-
description: `Get tasks from backlog/pending that can be added to a sprint with pagination.
|
|
251
|
+
description: `Get tasks from backlog/pending that can be added to a sprint with pagination.
|
|
252
252
|
Returns tasks not already assigned to any body of work or sprint.`,
|
|
253
253
|
inputSchema: {
|
|
254
254
|
type: 'object',
|
|
@@ -275,7 +275,7 @@ Returns tasks not already assigned to any body of work or sprint.`,
|
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
name: 'get_sprint_velocity',
|
|
278
|
-
description: `Get velocity metrics for completed sprints.
|
|
278
|
+
description: `Get velocity metrics for completed sprints.
|
|
279
279
|
Returns committed vs completed points and average velocity.`,
|
|
280
280
|
inputSchema: {
|
|
281
281
|
type: 'object',
|
package/dist/tools/tasks.js
CHANGED
|
@@ -164,8 +164,8 @@ export const taskTools = [
|
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
name: 'get_next_task',
|
|
167
|
-
description: `Get highest priority pending task. Start it IMMEDIATELY by calling update_task(task_id, status: "in_progress").
|
|
168
|
-
|
|
167
|
+
description: `Get highest priority pending task. Start it IMMEDIATELY by calling update_task(task_id, status: "in_progress").
|
|
168
|
+
|
|
169
169
|
Do NOT ask the user for permission. Follow the directive in the response.`,
|
|
170
170
|
inputSchema: {
|
|
171
171
|
type: 'object',
|
|
@@ -180,12 +180,12 @@ Do NOT ask the user for permission. Follow the directive in the response.`,
|
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
name: 'add_task',
|
|
183
|
-
description: `Add a new task. Priority 1=highest, 5=lowest. Include estimated_minutes. Use blocking=true for deployment finalization tasks that must complete before other work.
|
|
184
|
-
|
|
185
|
-
WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "fix this bug") that isn't already tracked as a task in Vibescope, you MUST create a task first using this tool. This ensures:
|
|
186
|
-
- The work is visible on the dashboard
|
|
187
|
-
- Progress can be tracked
|
|
188
|
-
- Other agents won't duplicate the work
|
|
183
|
+
description: `Add a new task. Priority 1=highest, 5=lowest. Include estimated_minutes. Use blocking=true for deployment finalization tasks that must complete before other work.
|
|
184
|
+
|
|
185
|
+
WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "fix this bug") that isn't already tracked as a task in Vibescope, you MUST create a task first using this tool. This ensures:
|
|
186
|
+
- The work is visible on the dashboard
|
|
187
|
+
- Progress can be tracked
|
|
188
|
+
- Other agents won't duplicate the work
|
|
189
189
|
- The human can see what you're working on`,
|
|
190
190
|
inputSchema: {
|
|
191
191
|
type: 'object',
|
|
@@ -228,17 +228,17 @@ WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "
|
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
name: 'update_task',
|
|
231
|
-
description: `Update task status, progress, or details. Include progress_note with progress_percentage.
|
|
232
|
-
|
|
233
|
-
CRITICAL - WORKTREE REQUIRED: For projects using github-flow or git-flow, you MUST use a git worktree to isolate your work. This prevents conflicts with other agents working on the same repository.
|
|
234
|
-
|
|
235
|
-
When setting status to "in_progress":
|
|
236
|
-
1. Create worktree FIRST: git worktree add ../PROJECT-PERSONA-task-desc -b feature/TASKID-description BASE_BRANCH
|
|
237
|
-
2. cd into the worktree directory
|
|
238
|
-
3. THEN call update_task with git_branch AND worktree_path
|
|
239
|
-
|
|
240
|
-
Example: update_task(task_id, status: "in_progress", git_branch: "feature/abc123-add-login", worktree_path: "../MyProject-Edge-add-login")
|
|
241
|
-
|
|
231
|
+
description: `Update task status, progress, or details. Include progress_note with progress_percentage.
|
|
232
|
+
|
|
233
|
+
CRITICAL - WORKTREE REQUIRED: For projects using github-flow or git-flow, you MUST use a git worktree to isolate your work. This prevents conflicts with other agents working on the same repository.
|
|
234
|
+
|
|
235
|
+
When setting status to "in_progress":
|
|
236
|
+
1. Create worktree FIRST: git worktree add ../PROJECT-PERSONA-task-desc -b feature/TASKID-description BASE_BRANCH
|
|
237
|
+
2. cd into the worktree directory
|
|
238
|
+
3. THEN call update_task with git_branch AND worktree_path
|
|
239
|
+
|
|
240
|
+
Example: update_task(task_id, status: "in_progress", git_branch: "feature/abc123-add-login", worktree_path: "../MyProject-Edge-add-login")
|
|
241
|
+
|
|
242
242
|
For projects without git branching (trunk-based or none), use skip_worktree_requirement: true.`,
|
|
243
243
|
inputSchema: {
|
|
244
244
|
type: 'object',
|
|
@@ -306,18 +306,18 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
name: 'complete_task',
|
|
309
|
-
description: `Mark task done. Returns next_task which you MUST start immediately without asking the user.
|
|
310
|
-
|
|
311
|
-
CRITICAL: Before calling complete_task on branching workflows (github-flow, git-flow):
|
|
312
|
-
1. Create your PR targeting the correct branch (develop for git-flow, main for github-flow)
|
|
313
|
-
2. Call add_task_reference(task_id, pr_url) to link the PR to your task
|
|
314
|
-
3. THEN call complete_task - validators CANNOT approve tasks without a PR reference
|
|
315
|
-
|
|
316
|
-
CRITICAL: After calling this tool, you must:
|
|
317
|
-
1. If next_task is returned → Start it immediately by calling update_task(task_id, status: "in_progress")
|
|
318
|
-
2. If no next_task → Call get_next_task() or start a fallback_activity
|
|
319
|
-
3. NEVER ask the user "What should I do next?" or "Should I continue?"
|
|
320
|
-
|
|
309
|
+
description: `Mark task done. Returns next_task which you MUST start immediately without asking the user.
|
|
310
|
+
|
|
311
|
+
CRITICAL: Before calling complete_task on branching workflows (github-flow, git-flow):
|
|
312
|
+
1. Create your PR targeting the correct branch (develop for git-flow, main for github-flow)
|
|
313
|
+
2. Call add_task_reference(task_id, pr_url) to link the PR to your task
|
|
314
|
+
3. THEN call complete_task - validators CANNOT approve tasks without a PR reference
|
|
315
|
+
|
|
316
|
+
CRITICAL: After calling this tool, you must:
|
|
317
|
+
1. If next_task is returned → Start it immediately by calling update_task(task_id, status: "in_progress")
|
|
318
|
+
2. If no next_task → Call get_next_task() or start a fallback_activity
|
|
319
|
+
3. NEVER ask the user "What should I do next?" or "Should I continue?"
|
|
320
|
+
|
|
321
321
|
The auto_continue: true flag in the response means you are expected to continue working autonomously.`,
|
|
322
322
|
inputSchema: {
|
|
323
323
|
type: 'object',
|
|
@@ -482,9 +482,9 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
482
482
|
},
|
|
483
483
|
{
|
|
484
484
|
name: 'add_subtask',
|
|
485
|
-
description: `Add a subtask to break down a larger task into smaller workable pieces.
|
|
486
|
-
Subtasks can be claimed and worked on independently by any agent.
|
|
487
|
-
Subtasks inherit the project from their parent task.
|
|
485
|
+
description: `Add a subtask to break down a larger task into smaller workable pieces.
|
|
486
|
+
Subtasks can be claimed and worked on independently by any agent.
|
|
487
|
+
Subtasks inherit the project from their parent task.
|
|
488
488
|
Max depth is 1 (subtasks cannot have their own subtasks).`,
|
|
489
489
|
inputSchema: {
|
|
490
490
|
type: 'object',
|
|
@@ -518,7 +518,7 @@ Max depth is 1 (subtasks cannot have their own subtasks).`,
|
|
|
518
518
|
},
|
|
519
519
|
{
|
|
520
520
|
name: 'get_subtasks',
|
|
521
|
-
description: `Get subtasks for a parent task with pagination.
|
|
521
|
+
description: `Get subtasks for a parent task with pagination.
|
|
522
522
|
Returns subtasks with aggregate completion stats.`,
|
|
523
523
|
inputSchema: {
|
|
524
524
|
type: 'object',
|