@vibescope/mcp-server 0.3.9 → 0.3.11
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/handlers/session.js +17 -0
- package/dist/handlers/tasks.js +6 -4
- package/dist/tools/tasks.js +8 -0
- package/docs/TOOLS.md +34 -2
- package/package.json +1 -1
- package/src/handlers/session.ts +18 -0
- package/src/handlers/tasks.ts +6 -4
- package/src/tools/tasks.ts +8 -0
package/dist/handlers/session.js
CHANGED
|
@@ -151,6 +151,23 @@ export const startWorkSession = async (args, ctx) => {
|
|
|
151
151
|
result.persona = data.persona;
|
|
152
152
|
result.role = data.role;
|
|
153
153
|
result.project = data.project;
|
|
154
|
+
// For cloud agents: include workspace setup instructions if repo not yet cloned
|
|
155
|
+
// Cloud agents pass git_url; check if workspace needs setup
|
|
156
|
+
if (git_url && data.project?.git_url) {
|
|
157
|
+
result.workspace_setup = {
|
|
158
|
+
message: 'If the project repo is NOT already cloned to your workspace, follow these steps:',
|
|
159
|
+
steps: [
|
|
160
|
+
`git clone ${data.project.git_url} ~/workspace/project`,
|
|
161
|
+
'cd ~/workspace/project',
|
|
162
|
+
...(data.project.git_workflow === 'git-flow'
|
|
163
|
+
? [`git checkout ${data.project.git_develop_branch || 'develop'}`]
|
|
164
|
+
: []),
|
|
165
|
+
'Install dependencies (check for pnpm-lock.yaml, package-lock.json, etc.)',
|
|
166
|
+
'If using SvelteKit: run `pnpm exec svelte-kit sync` or equivalent',
|
|
167
|
+
],
|
|
168
|
+
note: 'Skip these steps if ~/workspace/project already exists and has the repo.',
|
|
169
|
+
};
|
|
170
|
+
}
|
|
154
171
|
// Inform agent if git_url was normalized (helps explain URL matching behavior)
|
|
155
172
|
if (gitUrlWasNormalized) {
|
|
156
173
|
result.git_url_normalized = {
|
package/dist/handlers/tasks.js
CHANGED
|
@@ -60,10 +60,12 @@ const updateTaskSchema = {
|
|
|
60
60
|
worktree_path: { type: 'string' },
|
|
61
61
|
task_type: { type: 'string', validate: createEnumValidator(VALID_TASK_TYPES) },
|
|
62
62
|
skip_worktree_requirement: { type: 'boolean', default: false },
|
|
63
|
+
session_id: { type: 'string' },
|
|
63
64
|
};
|
|
64
65
|
const completeTaskSchema = {
|
|
65
66
|
task_id: { type: 'string', required: true, validate: uuidValidator },
|
|
66
67
|
summary: { type: 'string' },
|
|
68
|
+
session_id: { type: 'string' },
|
|
67
69
|
};
|
|
68
70
|
const deleteTaskSchema = {
|
|
69
71
|
task_id: { type: 'string', required: true, validate: uuidValidator },
|
|
@@ -278,7 +280,7 @@ export const addTask = async (args, ctx) => {
|
|
|
278
280
|
return { result };
|
|
279
281
|
};
|
|
280
282
|
export const updateTask = async (args, ctx) => {
|
|
281
|
-
const { task_id, title, description, priority, status, progress_percentage, progress_note, estimated_minutes, git_branch, worktree_path, task_type, skip_worktree_requirement } = parseArgs(args, updateTaskSchema);
|
|
283
|
+
const { task_id, title, description, priority, status, progress_percentage, progress_note, estimated_minutes, git_branch, worktree_path, task_type, skip_worktree_requirement, session_id: explicit_session_id } = parseArgs(args, updateTaskSchema);
|
|
282
284
|
const updates = { title, description, priority, status, progress_percentage, estimated_minutes, git_branch, worktree_path, task_type };
|
|
283
285
|
// Enforce worktree creation: require git_branch when marking task as in_progress
|
|
284
286
|
// This ensures multi-agent collaboration works properly with isolated worktrees
|
|
@@ -300,7 +302,7 @@ export const updateTask = async (args, ctx) => {
|
|
|
300
302
|
const response = await api.updateTask(task_id, {
|
|
301
303
|
...updates,
|
|
302
304
|
progress_note,
|
|
303
|
-
session_id: ctx.session.currentSessionId || undefined,
|
|
305
|
+
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
304
306
|
});
|
|
305
307
|
if (!response.ok) {
|
|
306
308
|
// Check for specific error types
|
|
@@ -426,11 +428,11 @@ export const updateTask = async (args, ctx) => {
|
|
|
426
428
|
return { result };
|
|
427
429
|
};
|
|
428
430
|
export const completeTask = async (args, ctx) => {
|
|
429
|
-
const { task_id, summary } = parseArgs(args, completeTaskSchema);
|
|
431
|
+
const { task_id, summary, session_id: explicit_session_id } = parseArgs(args, completeTaskSchema);
|
|
430
432
|
const api = getApiClient();
|
|
431
433
|
const response = await api.completeTask(task_id, {
|
|
432
434
|
summary,
|
|
433
|
-
session_id: ctx.session.currentSessionId || undefined,
|
|
435
|
+
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
434
436
|
});
|
|
435
437
|
if (!response.ok) {
|
|
436
438
|
return { result: { error: response.error || 'Failed to complete task' }, isError: true };
|
package/dist/tools/tasks.js
CHANGED
|
@@ -296,6 +296,10 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
296
296
|
type: 'boolean',
|
|
297
297
|
description: 'Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false',
|
|
298
298
|
},
|
|
299
|
+
session_id: {
|
|
300
|
+
type: 'string',
|
|
301
|
+
description: 'Session ID from start_work_session. Required for cloud agents using mcporter (session context is not preserved between calls). Links the task to your agent on the dashboard.',
|
|
302
|
+
},
|
|
299
303
|
},
|
|
300
304
|
required: ['task_id'],
|
|
301
305
|
},
|
|
@@ -326,6 +330,10 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
326
330
|
type: 'string',
|
|
327
331
|
description: 'Brief summary of what was done. This is stored on the task as completion_summary and displayed when reviewing completed tasks.',
|
|
328
332
|
},
|
|
333
|
+
session_id: {
|
|
334
|
+
type: 'string',
|
|
335
|
+
description: 'Session ID from start_work_session. Required for cloud agents using mcporter.',
|
|
336
|
+
},
|
|
329
337
|
},
|
|
330
338
|
required: ['task_id'],
|
|
331
339
|
},
|
package/docs/TOOLS.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> Auto-generated from tool definitions. Do not edit manually.
|
|
4
4
|
>
|
|
5
|
-
> Generated: 2026-02-
|
|
5
|
+
> Generated: 2026-02-15
|
|
6
6
|
>
|
|
7
|
-
> Total tools:
|
|
7
|
+
> Total tools: 159
|
|
8
8
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
@@ -2513,3 +2513,35 @@ Update the Vibescope MCP server to the latest version. Runs npm install to fetch
|
|
|
2513
2513
|
| `global` | `boolean` | No | If true, update the global installation (npm install -g). If false, update locally. Default: true. |
|
|
2514
2514
|
|
|
2515
2515
|
---
|
|
2516
|
+
|
|
2517
|
+
## Uncategorized
|
|
2518
|
+
|
|
2519
|
+
*Tools not yet assigned to a category*
|
|
2520
|
+
|
|
2521
|
+
### update_agent_status
|
|
2522
|
+
|
|
2523
|
+
Report what you're currently doing. This updates the status message shown on the dashboard.
|
|
2524
|
+
|
|
2525
|
+
Call this at key milestones during boot and work:
|
|
2526
|
+
|
|
2527
|
+
- "Installing dependencies..."
|
|
2528
|
+
|
|
2529
|
+
- "Running start_work_session..."
|
|
2530
|
+
|
|
2531
|
+
- "Working on: <task title>"
|
|
2532
|
+
|
|
2533
|
+
- "Running tests..."
|
|
2534
|
+
|
|
2535
|
+
- "Committing changes..."
|
|
2536
|
+
|
|
2537
|
+
Keep messages short (under 80 chars). The dashboard shows this in real-time.
|
|
2538
|
+
|
|
2539
|
+
**Parameters:**
|
|
2540
|
+
|
|
2541
|
+
| Parameter | Type | Required | Description |
|
|
2542
|
+
|-----------|------|----------|-------------|
|
|
2543
|
+
| `status_message` | `string` | Yes | Short status message to display on dashboard (max 80 chars) |
|
|
2544
|
+
| `project_id` | `string` | No | Project UUID (optional if session has project context) |
|
|
2545
|
+
| `agent_name` | `string` | No | Agent name (used to find the spawned_agents record) |
|
|
2546
|
+
|
|
2547
|
+
---
|
package/package.json
CHANGED
package/src/handlers/session.ts
CHANGED
|
@@ -183,6 +183,24 @@ export const startWorkSession: Handler = async (args, ctx) => {
|
|
|
183
183
|
result.role = data.role;
|
|
184
184
|
result.project = data.project;
|
|
185
185
|
|
|
186
|
+
// For cloud agents: include workspace setup instructions if repo not yet cloned
|
|
187
|
+
// Cloud agents pass git_url; check if workspace needs setup
|
|
188
|
+
if (git_url && data.project?.git_url) {
|
|
189
|
+
result.workspace_setup = {
|
|
190
|
+
message: 'If the project repo is NOT already cloned to your workspace, follow these steps:',
|
|
191
|
+
steps: [
|
|
192
|
+
`git clone ${data.project.git_url} ~/workspace/project`,
|
|
193
|
+
'cd ~/workspace/project',
|
|
194
|
+
...(data.project.git_workflow === 'git-flow'
|
|
195
|
+
? [`git checkout ${data.project.git_develop_branch || 'develop'}`]
|
|
196
|
+
: []),
|
|
197
|
+
'Install dependencies (check for pnpm-lock.yaml, package-lock.json, etc.)',
|
|
198
|
+
'If using SvelteKit: run `pnpm exec svelte-kit sync` or equivalent',
|
|
199
|
+
],
|
|
200
|
+
note: 'Skip these steps if ~/workspace/project already exists and has the repo.',
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
|
|
186
204
|
// Inform agent if git_url was normalized (helps explain URL matching behavior)
|
|
187
205
|
if (gitUrlWasNormalized) {
|
|
188
206
|
result.git_url_normalized = {
|
package/src/handlers/tasks.ts
CHANGED
|
@@ -77,11 +77,13 @@ const updateTaskSchema = {
|
|
|
77
77
|
worktree_path: { type: 'string' as const },
|
|
78
78
|
task_type: { type: 'string' as const, validate: createEnumValidator(VALID_TASK_TYPES) },
|
|
79
79
|
skip_worktree_requirement: { type: 'boolean' as const, default: false },
|
|
80
|
+
session_id: { type: 'string' as const },
|
|
80
81
|
};
|
|
81
82
|
|
|
82
83
|
const completeTaskSchema = {
|
|
83
84
|
task_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
84
85
|
summary: { type: 'string' as const },
|
|
86
|
+
session_id: { type: 'string' as const },
|
|
85
87
|
};
|
|
86
88
|
|
|
87
89
|
const deleteTaskSchema = {
|
|
@@ -367,7 +369,7 @@ export const addTask: Handler = async (args, ctx) => {
|
|
|
367
369
|
};
|
|
368
370
|
|
|
369
371
|
export const updateTask: Handler = async (args, ctx) => {
|
|
370
|
-
const { task_id, title, description, priority, status, progress_percentage, progress_note, estimated_minutes, git_branch, worktree_path, task_type, skip_worktree_requirement } = parseArgs(args, updateTaskSchema);
|
|
372
|
+
const { task_id, title, description, priority, status, progress_percentage, progress_note, estimated_minutes, git_branch, worktree_path, task_type, skip_worktree_requirement, session_id: explicit_session_id } = parseArgs(args, updateTaskSchema);
|
|
371
373
|
const updates = { title, description, priority, status, progress_percentage, estimated_minutes, git_branch, worktree_path, task_type };
|
|
372
374
|
|
|
373
375
|
// Enforce worktree creation: require git_branch when marking task as in_progress
|
|
@@ -391,7 +393,7 @@ export const updateTask: Handler = async (args, ctx) => {
|
|
|
391
393
|
const response = await api.updateTask(task_id, {
|
|
392
394
|
...updates,
|
|
393
395
|
progress_note,
|
|
394
|
-
session_id: ctx.session.currentSessionId || undefined,
|
|
396
|
+
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
395
397
|
});
|
|
396
398
|
|
|
397
399
|
if (!response.ok) {
|
|
@@ -526,12 +528,12 @@ export const updateTask: Handler = async (args, ctx) => {
|
|
|
526
528
|
};
|
|
527
529
|
|
|
528
530
|
export const completeTask: Handler = async (args, ctx) => {
|
|
529
|
-
const { task_id, summary } = parseArgs(args, completeTaskSchema);
|
|
531
|
+
const { task_id, summary, session_id: explicit_session_id } = parseArgs(args, completeTaskSchema);
|
|
530
532
|
|
|
531
533
|
const api = getApiClient();
|
|
532
534
|
const response = await api.completeTask(task_id, {
|
|
533
535
|
summary,
|
|
534
|
-
session_id: ctx.session.currentSessionId || undefined,
|
|
536
|
+
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
535
537
|
});
|
|
536
538
|
|
|
537
539
|
if (!response.ok) {
|
package/src/tools/tasks.ts
CHANGED
|
@@ -299,6 +299,10 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
299
299
|
type: 'boolean',
|
|
300
300
|
description: 'Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false',
|
|
301
301
|
},
|
|
302
|
+
session_id: {
|
|
303
|
+
type: 'string',
|
|
304
|
+
description: 'Session ID from start_work_session. Required for cloud agents using mcporter (session context is not preserved between calls). Links the task to your agent on the dashboard.',
|
|
305
|
+
},
|
|
302
306
|
},
|
|
303
307
|
required: ['task_id'],
|
|
304
308
|
},
|
|
@@ -329,6 +333,10 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
329
333
|
type: 'string',
|
|
330
334
|
description: 'Brief summary of what was done. This is stored on the task as completion_summary and displayed when reviewing completed tasks.',
|
|
331
335
|
},
|
|
336
|
+
session_id: {
|
|
337
|
+
type: 'string',
|
|
338
|
+
description: 'Session ID from start_work_session. Required for cloud agents using mcporter.',
|
|
339
|
+
},
|
|
332
340
|
},
|
|
333
341
|
required: ['task_id'],
|
|
334
342
|
},
|