@vibescope/mcp-server 0.4.0 → 0.4.2

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.
Files changed (70) hide show
  1. package/dist/api-client/fallback.d.ts +33 -0
  2. package/dist/api-client/fallback.js +21 -0
  3. package/dist/api-client/findings.d.ts +69 -0
  4. package/dist/api-client/findings.js +36 -0
  5. package/dist/api-client/index.d.ts +78 -1
  6. package/dist/api-client/index.js +74 -4
  7. package/dist/api-client/milestones.d.ts +59 -0
  8. package/dist/api-client/milestones.js +30 -0
  9. package/dist/api-client/validation.d.ts +35 -0
  10. package/dist/api-client/validation.js +23 -0
  11. package/dist/api-client.d.ts +4 -0
  12. package/dist/cli-init.d.ts +17 -0
  13. package/dist/cli-init.js +497 -0
  14. package/dist/handlers/cloud-agents.d.ts +4 -0
  15. package/dist/handlers/cloud-agents.js +26 -12
  16. package/dist/handlers/discovery.js +15 -0
  17. package/dist/handlers/findings.js +1 -1
  18. package/dist/handlers/ideas.js +1 -1
  19. package/dist/handlers/index.d.ts +1 -0
  20. package/dist/handlers/index.js +3 -0
  21. package/dist/handlers/session.js +115 -2
  22. package/dist/handlers/tasks.js +7 -5
  23. package/dist/handlers/tool-docs.js +344 -0
  24. package/dist/handlers/version.d.ts +5 -0
  25. package/dist/handlers/version.js +53 -0
  26. package/dist/index.js +7 -0
  27. package/dist/templates/agent-guidelines.d.ts +3 -1
  28. package/dist/templates/agent-guidelines.js +5 -1
  29. package/dist/templates/help-content.js +2 -2
  30. package/dist/tools/chat.d.ts +7 -0
  31. package/dist/tools/chat.js +43 -0
  32. package/dist/tools/cloud-agents.js +31 -0
  33. package/dist/tools/index.d.ts +3 -1
  34. package/dist/tools/index.js +6 -1
  35. package/dist/tools/project.js +1 -1
  36. package/dist/tools/tasks.js +8 -0
  37. package/dist/tools/version.d.ts +5 -0
  38. package/dist/tools/version.js +28 -0
  39. package/dist/version.d.ts +28 -0
  40. package/dist/version.js +91 -0
  41. package/docs/TOOLS.md +93 -3
  42. package/package.json +4 -2
  43. package/src/api-client/fallback.ts +52 -0
  44. package/src/api-client/findings.ts +100 -0
  45. package/src/api-client/index.ts +91 -9
  46. package/src/api-client/milestones.ts +83 -0
  47. package/src/api-client/validation.ts +60 -0
  48. package/src/api-client.ts +4 -0
  49. package/src/cli-init.ts +557 -0
  50. package/src/handlers/cloud-agents.test.ts +438 -0
  51. package/src/handlers/cloud-agents.ts +35 -17
  52. package/src/handlers/discovery.ts +15 -0
  53. package/src/handlers/findings.ts +1 -1
  54. package/src/handlers/ideas.ts +1 -1
  55. package/src/handlers/index.ts +3 -0
  56. package/src/handlers/session.ts +128 -2
  57. package/src/handlers/tasks.ts +7 -5
  58. package/src/handlers/tool-docs.test.ts +511 -0
  59. package/src/handlers/tool-docs.ts +382 -0
  60. package/src/handlers/version.ts +63 -0
  61. package/src/index.ts +9 -0
  62. package/src/templates/agent-guidelines.ts +6 -1
  63. package/src/templates/help-content.ts +2 -2
  64. package/src/tools/chat.ts +46 -0
  65. package/src/tools/cloud-agents.ts +31 -0
  66. package/src/tools/index.ts +6 -0
  67. package/src/tools/project.ts +1 -1
  68. package/src/tools/tasks.ts +8 -0
  69. package/src/tools/version.ts +34 -0
  70. package/src/version.ts +109 -0
@@ -5,7 +5,10 @@
5
5
  * in every project using Vibescope for agent tracking. These guidelines ensure
6
6
  * agents follow proper workflows and maintain visibility.
7
7
  */
8
- export const AGENT_GUIDELINES_TEMPLATE = `# Vibescope Agent Guidelines
8
+ export const VIBESCOPE_SECTION_START = '<!-- vibescope:start -->';
9
+ export const VIBESCOPE_SECTION_END = '<!-- vibescope:end -->';
10
+ export const AGENT_GUIDELINES_TEMPLATE = `${VIBESCOPE_SECTION_START}
11
+ # Vibescope Agent Guidelines
9
12
 
10
13
  ## Quick Start
11
14
 
@@ -182,6 +185,7 @@ claude mcp add vibescope npx @vibescope/mcp-server@latest \\
182
185
  1. Copy \`.mcp.json.example\` to \`.mcp.json\`
183
186
  2. Get \`VIBESCOPE_API_KEY\` from https://vibescope.dev/dashboard/settings
184
187
  3. Restart Claude Code
188
+ ${VIBESCOPE_SECTION_END}
185
189
  `;
186
190
  /**
187
191
  * Get the agent guidelines template
@@ -214,14 +214,14 @@ add_finding(
214
214
  title: "Fix exists but awaits deployment",
215
215
  category: "other",
216
216
  severity: "info",
217
- description: "The fix for [issue] was implemented in PR #XXX but hasn't been deployed yet.",
217
+ description: "The fix for [issue] was implemented in PR #{pr_number} but hasn't been deployed yet.",
218
218
  related_task_id: task_id
219
219
  )
220
220
  \`\`\`
221
221
 
222
222
  2. **Complete the task** (investigation is done):
223
223
  \`\`\`
224
- complete_task(task_id, summary: "Fix already exists in codebase (PR #XXX). Needs deployment to production.")
224
+ complete_task(task_id, summary: "Fix already exists in codebase (PR #{pr_number}). Needs deployment to production.")
225
225
  \`\`\`
226
226
 
227
227
  3. **Request deployment** if not already pending:
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Project chat tools:
3
+ * - send_project_message
4
+ * - get_project_messages
5
+ */
6
+ import type { Tool } from './types.js';
7
+ export declare const chatTools: Tool[];
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Project chat tools:
3
+ * - send_project_message
4
+ * - get_project_messages
5
+ */
6
+ export const chatTools = [
7
+ {
8
+ name: 'send_project_message',
9
+ 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.',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ project_id: {
14
+ type: 'string',
15
+ description: 'Project UUID',
16
+ },
17
+ message: {
18
+ type: 'string',
19
+ description: 'Message content (supports markdown)',
20
+ },
21
+ },
22
+ required: ['project_id', 'message'],
23
+ },
24
+ },
25
+ {
26
+ name: 'get_project_messages',
27
+ description: 'Read recent messages from the project chat channel. Use this to check if the user or other agents have posted anything.',
28
+ inputSchema: {
29
+ type: 'object',
30
+ properties: {
31
+ project_id: {
32
+ type: 'string',
33
+ description: 'Project UUID',
34
+ },
35
+ limit: {
36
+ type: 'number',
37
+ description: 'Number of recent messages to fetch (default: 20, max: 100)',
38
+ },
39
+ },
40
+ required: ['project_id'],
41
+ },
42
+ },
43
+ ];
@@ -63,5 +63,36 @@ Use this to check the state of cloud agents before/after cleanup.`,
63
63
  },
64
64
  required: ['project_id']
65
65
  }
66
+ },
67
+ {
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
+
78
+ Keep messages short (under 80 chars). The dashboard shows this in real-time.`,
79
+ inputSchema: {
80
+ type: 'object',
81
+ properties: {
82
+ status_message: {
83
+ type: 'string',
84
+ description: 'Short status message to display on dashboard (max 80 chars)'
85
+ },
86
+ project_id: {
87
+ type: 'string',
88
+ description: 'Project UUID (optional if session has project context)'
89
+ },
90
+ agent_name: {
91
+ type: 'string',
92
+ description: 'Agent name (used to find the spawned_agents record)'
93
+ }
94
+ },
95
+ required: ['status_message']
96
+ }
66
97
  }
67
98
  ];
@@ -30,6 +30,7 @@ import { sprintTools } from './sprints.js';
30
30
  import { gitIssueTools } from './git-issues.js';
31
31
  import { connectorTools } from './connectors.js';
32
32
  import { cloudAgentTools } from './cloud-agents.js';
33
+ import { versionTools } from './version.js';
33
34
  /**
34
35
  * All MCP tool definitions combined
35
36
  */
@@ -67,5 +68,6 @@ export declare const toolCategories: {
67
68
  readonly gitIssues: string[];
68
69
  readonly connectors: string[];
69
70
  readonly cloudAgents: string[];
71
+ readonly version: string[];
70
72
  };
71
- 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, };
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, };
@@ -29,6 +29,8 @@ import { sprintTools } from './sprints.js';
29
29
  import { gitIssueTools } from './git-issues.js';
30
30
  import { connectorTools } from './connectors.js';
31
31
  import { cloudAgentTools } from './cloud-agents.js';
32
+ import { versionTools } from './version.js';
33
+ import { chatTools } from './chat.js';
32
34
  /**
33
35
  * All MCP tool definitions combined
34
36
  */
@@ -57,6 +59,8 @@ export const tools = [
57
59
  ...gitIssueTools,
58
60
  ...connectorTools,
59
61
  ...cloudAgentTools,
62
+ ...versionTools,
63
+ ...chatTools,
60
64
  ];
61
65
  /**
62
66
  * Build the complete tool list from all domain modules
@@ -93,6 +97,7 @@ export const toolCategories = {
93
97
  gitIssues: gitIssueTools.map((t) => t.name),
94
98
  connectors: connectorTools.map((t) => t.name),
95
99
  cloudAgents: cloudAgentTools.map((t) => t.name),
100
+ version: versionTools.map((t) => t.name),
96
101
  };
97
102
  // Re-export domain tools for selective imports
98
- 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, };
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, };
@@ -61,7 +61,7 @@ export const projectTools = [
61
61
  },
62
62
  goal: {
63
63
  type: 'string',
64
- description: 'What does "done" look like for this project?',
64
+ description: 'High-level project goal or purpose (e.g. "A multiplayer card game platform")',
65
65
  },
66
66
  git_url: {
67
67
  type: 'string',
@@ -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
  },
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Version management tool definitions
3
+ */
4
+ import type { Tool } from './types.js';
5
+ export declare const versionTools: Tool[];
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Version management tool definitions
3
+ */
4
+ export const versionTools = [
5
+ {
6
+ name: 'check_mcp_version',
7
+ description: 'Check if the Vibescope MCP server is up to date. Compares the locally installed version against the latest published version on npm. Call this when starting a session or when the server instructions indicate an update is available.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {},
11
+ required: [],
12
+ },
13
+ },
14
+ {
15
+ name: 'update_mcp_server',
16
+ description: 'Update the Vibescope MCP server to the latest version. Runs npm install to fetch the latest version. After updating, the server must be restarted (the agent should ask the user to restart their MCP client/editor). Only call this when the user agrees to update.',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ global: {
21
+ type: 'boolean',
22
+ description: 'If true, update the global installation (npm install -g). If false, update locally. Default: true.',
23
+ },
24
+ },
25
+ required: [],
26
+ },
27
+ },
28
+ ];
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Version checking utilities
3
+ *
4
+ * Compares the locally installed version against the latest published
5
+ * version on npm to detect available updates.
6
+ */
7
+ export interface VersionInfo {
8
+ current: string;
9
+ latest: string | null;
10
+ updateAvailable: boolean;
11
+ error?: string;
12
+ }
13
+ /**
14
+ * Get the current locally installed version from package.json
15
+ */
16
+ export declare function getLocalVersion(): string;
17
+ /**
18
+ * Fetch the latest published version from npm registry
19
+ */
20
+ export declare function getLatestVersion(): Promise<string | null>;
21
+ /**
22
+ * Check if an update is available
23
+ */
24
+ export declare function checkVersion(): Promise<VersionInfo>;
25
+ /**
26
+ * Get the update warning message for server instructions, or null if up to date
27
+ */
28
+ export declare function getUpdateWarning(): Promise<string | null>;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Version checking utilities
3
+ *
4
+ * Compares the locally installed version against the latest published
5
+ * version on npm to detect available updates.
6
+ */
7
+ import { readFileSync } from 'fs';
8
+ import { resolve, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ const NPM_REGISTRY_URL = 'https://registry.npmjs.org/@vibescope/mcp-server';
11
+ const PACKAGE_NAME = '@vibescope/mcp-server';
12
+ /**
13
+ * Get the current locally installed version from package.json
14
+ */
15
+ export function getLocalVersion() {
16
+ try {
17
+ const __dirname = dirname(fileURLToPath(import.meta.url));
18
+ const pkgPath = resolve(__dirname, '..', 'package.json');
19
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
20
+ return pkg.version;
21
+ }
22
+ catch {
23
+ return 'unknown';
24
+ }
25
+ }
26
+ /**
27
+ * Fetch the latest published version from npm registry
28
+ */
29
+ export async function getLatestVersion() {
30
+ try {
31
+ const controller = new AbortController();
32
+ const timeout = setTimeout(() => controller.abort(), 5000);
33
+ const response = await fetch(`${NPM_REGISTRY_URL}/latest`, {
34
+ signal: controller.signal,
35
+ headers: { 'Accept': 'application/json' },
36
+ });
37
+ clearTimeout(timeout);
38
+ if (!response.ok)
39
+ return null;
40
+ const data = (await response.json());
41
+ return data.version ?? null;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Compare semver strings. Returns true if latest > current.
49
+ */
50
+ function isNewer(current, latest) {
51
+ const parse = (v) => v.split('.').map(Number);
52
+ const c = parse(current);
53
+ const l = parse(latest);
54
+ for (let i = 0; i < 3; i++) {
55
+ if ((l[i] ?? 0) > (c[i] ?? 0))
56
+ return true;
57
+ if ((l[i] ?? 0) < (c[i] ?? 0))
58
+ return false;
59
+ }
60
+ return false;
61
+ }
62
+ /**
63
+ * Check if an update is available
64
+ */
65
+ export async function checkVersion() {
66
+ const current = getLocalVersion();
67
+ const latest = await getLatestVersion();
68
+ if (!latest) {
69
+ return {
70
+ current,
71
+ latest: null,
72
+ updateAvailable: false,
73
+ error: 'Could not reach npm registry to check for updates',
74
+ };
75
+ }
76
+ return {
77
+ current,
78
+ latest,
79
+ updateAvailable: isNewer(current, latest),
80
+ };
81
+ }
82
+ /**
83
+ * Get the update warning message for server instructions, or null if up to date
84
+ */
85
+ export async function getUpdateWarning() {
86
+ const info = await checkVersion();
87
+ if (info.updateAvailable && info.latest) {
88
+ return `⚠️ UPDATE AVAILABLE: Vibescope MCP server v${info.current} is outdated. Latest version is v${info.latest}. Before starting work, inform the user that an update is available and recommend running the \`check_mcp_version\` tool, or ask them to update with: npm install -g ${PACKAGE_NAME}@latest (or npx @vibescope/mcp-server@latest for auto-update on next run).`;
89
+ }
90
+ return null;
91
+ }
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-06
5
+ > Generated: 2026-02-19
6
6
  >
7
- > Total tools: 154
7
+ > Total tools: 159
8
8
 
9
9
  ## Table of Contents
10
10
 
@@ -34,6 +34,8 @@
34
34
  - [file_locks](#file-locks) - File checkout/locking for multi-agent (6 tools)
35
35
  - [connectors](#connectors) - External integration connectors (7 tools)
36
36
  - [cloud_agents](#cloud-agents) - Cloud agent management and cleanup (2 tools)
37
+ - [chat](#chat) - Project-wide chat channel for agent and user communication (2 tools)
38
+ - [version](#version) - MCP server version management and updates (2 tools)
37
39
 
38
40
  ## session
39
41
 
@@ -207,7 +209,7 @@ Create a new project to track in Vibescope.
207
209
  |-----------|------|----------|-------------|
208
210
  | `name` | `string` | Yes | Project display name |
209
211
  | `description` | `string` | No | Brief project description |
210
- | `goal` | `string` | No | What does "done" look like for this project? |
212
+ | `goal` | `string` | No | High-level project goal or purpose (e.g. "A multiplayer card game platform") |
211
213
  | `git_url` | `string` | No | Git repository URL (if available) |
212
214
  | `tech_stack` | `string[]` | No | Technologies used (e.g., ["TypeScript", "React", "PostgreSQL"]) |
213
215
 
@@ -414,6 +416,7 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
414
416
  | `worktree_hostname` | `string` | No | Machine hostname where worktree was created (os.hostname()). Required with worktree_path to enable machine-aware cleanup. |
415
417
  | `model_capability` | `"haiku" | "sonnet" | "opus"` | No | Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning) |
416
418
  | `skip_worktree_requirement` | `boolean` | No | Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false |
419
+ | `session_id` | `string` | No | 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. |
417
420
 
418
421
  ---
419
422
 
@@ -445,6 +448,7 @@ The auto_continue: true flag in the response means you are expected to continue
445
448
  |-----------|------|----------|-------------|
446
449
  | `task_id` | `string` | Yes | Task UUID |
447
450
  | `summary` | `string` | No | Brief summary of what was done. This is stored on the task as completion_summary and displayed when reviewing completed tasks. |
451
+ | `session_id` | `string` | No | Session ID from start_work_session. Required for cloud agents using mcporter. |
448
452
 
449
453
  ---
450
454
 
@@ -2457,3 +2461,89 @@ Use this to check the state of cloud agents before/after cleanup.
2457
2461
  | `status` | `"starting" | "running" | "stopped" | "failed" | "all"` | No | Filter by status (default: all) |
2458
2462
 
2459
2463
  ---
2464
+
2465
+ ## chat
2466
+
2467
+ *Project-wide chat channel for agent and user communication*
2468
+
2469
+ ### send_project_message
2470
+
2471
+ 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.
2472
+
2473
+ **Parameters:**
2474
+
2475
+ | Parameter | Type | Required | Description |
2476
+ |-----------|------|----------|-------------|
2477
+ | `project_id` | `string` | Yes | Project UUID |
2478
+ | `message` | `string` | Yes | Message content (supports markdown) |
2479
+
2480
+ ---
2481
+
2482
+ ### get_project_messages
2483
+
2484
+ Read recent messages from the project chat channel. Use this to check if the user or other agents have posted anything.
2485
+
2486
+ **Parameters:**
2487
+
2488
+ | Parameter | Type | Required | Description |
2489
+ |-----------|------|----------|-------------|
2490
+ | `project_id` | `string` | Yes | Project UUID |
2491
+ | `limit` | `number` | No | Number of recent messages to fetch (default: 20, max: 100) |
2492
+
2493
+ ---
2494
+
2495
+ ## version
2496
+
2497
+ *MCP server version management and updates*
2498
+
2499
+ ### check_mcp_version
2500
+
2501
+ Check if the Vibescope MCP server is up to date. Compares the locally installed version against the latest published version on npm. Call this when starting a session or when the server instructions indicate an update is available.
2502
+
2503
+ **Parameters:** None
2504
+
2505
+ ---
2506
+
2507
+ ### update_mcp_server
2508
+
2509
+ Update the Vibescope MCP server to the latest version. Runs npm install to fetch the latest version. After updating, the server must be restarted (the agent should ask the user to restart their MCP client/editor). Only call this when the user agrees to update.
2510
+
2511
+ **Parameters:**
2512
+
2513
+ | Parameter | Type | Required | Description |
2514
+ |-----------|------|----------|-------------|
2515
+ | `global` | `boolean` | No | If true, update the global installation (npm install -g). If false, update locally. Default: true. |
2516
+
2517
+ ---
2518
+
2519
+ ## Uncategorized
2520
+
2521
+ *Tools not yet assigned to a category*
2522
+
2523
+ ### update_agent_status
2524
+
2525
+ Report what you're currently doing. This updates the status message shown on the dashboard.
2526
+
2527
+ Call this at key milestones during boot and work:
2528
+
2529
+ - "Installing dependencies..."
2530
+
2531
+ - "Running start_work_session..."
2532
+
2533
+ - "Working on: <task title>"
2534
+
2535
+ - "Running tests..."
2536
+
2537
+ - "Committing changes..."
2538
+
2539
+ Keep messages short (under 80 chars). The dashboard shows this in real-time.
2540
+
2541
+ **Parameters:**
2542
+
2543
+ | Parameter | Type | Required | Description |
2544
+ |-----------|------|----------|-------------|
2545
+ | `status_message` | `string` | Yes | Short status message to display on dashboard (max 80 chars) |
2546
+ | `project_id` | `string` | No | Project UUID (optional if session has project context) |
2547
+ | `agent_name` | `string` | No | Agent name (used to find the spawned_agents record) |
2548
+
2549
+ ---
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "@vibescope/mcp-server",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "MCP server for Vibescope - AI project tracking tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "bin": {
9
9
  "vibescope-mcp": "dist/index.js",
10
- "vibescope-cli": "dist/cli.js"
10
+ "vibescope-cli": "dist/cli.js",
11
+ "vibescope": "dist/cli-init.js",
12
+ "vibescope-init": "dist/cli-init.js"
11
13
  },
12
14
  "repository": {
13
15
  "type": "git",
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Fallback Activity API Methods
3
+ *
4
+ * Handles background activities when agents are idle with no pending tasks.
5
+ */
6
+
7
+ import type { ApiResponse, ProxyFn } from './types.js';
8
+
9
+ export interface FallbackActivityResult {
10
+ success: boolean;
11
+ activity: string;
12
+ message: string;
13
+ git_workflow?: {
14
+ workflow: string;
15
+ base_branch: string;
16
+ worktree_recommended: boolean;
17
+ note: string;
18
+ };
19
+ worktree_setup?: {
20
+ message: string;
21
+ commands: string[];
22
+ worktree_path: string;
23
+ branch_name: string;
24
+ cleanup_command: string;
25
+ report_worktree: string;
26
+ };
27
+ next_step?: string;
28
+ }
29
+
30
+ export interface FallbackMethods {
31
+ startFallbackActivity(projectId: string, activity: string, sessionId?: string): Promise<ApiResponse<FallbackActivityResult>>;
32
+
33
+ stopFallbackActivity(projectId: string, summary?: string, sessionId?: string): Promise<ApiResponse<{ success: boolean }>>;
34
+ }
35
+
36
+ export function createFallbackMethods(proxy: ProxyFn): FallbackMethods {
37
+ return {
38
+ async startFallbackActivity(projectId, activity, sessionId) {
39
+ return proxy('start_fallback_activity', {
40
+ project_id: projectId,
41
+ activity
42
+ }, sessionId ? { session_id: sessionId } : undefined);
43
+ },
44
+
45
+ async stopFallbackActivity(projectId, summary, sessionId) {
46
+ return proxy('stop_fallback_activity', {
47
+ project_id: projectId,
48
+ summary
49
+ }, sessionId ? { session_id: sessionId } : undefined);
50
+ }
51
+ };
52
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Findings API Methods
3
+ *
4
+ * Handles security findings, code quality issues, and audit findings.
5
+ */
6
+
7
+ import type { ApiResponse, ProxyFn } from './types.js';
8
+
9
+ export interface Finding {
10
+ id: string;
11
+ title: string;
12
+ description?: string;
13
+ category: string;
14
+ severity: string;
15
+ status: string;
16
+ file_path?: string;
17
+ line_number?: number;
18
+ resolution_note?: string;
19
+ created_at: string;
20
+ }
21
+
22
+ export interface FindingsStats {
23
+ total: number;
24
+ by_status: Record<string, number>;
25
+ by_severity: Record<string, number>;
26
+ by_category: Record<string, number>;
27
+ }
28
+
29
+ export interface FindingsMethods {
30
+ getFindings(projectId: string, params?: {
31
+ category?: string;
32
+ severity?: string;
33
+ status?: string;
34
+ limit?: number;
35
+ offset?: number;
36
+ search_query?: string;
37
+ summary_only?: boolean;
38
+ }): Promise<ApiResponse<{ findings: Finding[]; total_count?: number; has_more?: boolean }>>;
39
+
40
+ getFinding(findingId: string): Promise<ApiResponse<{ finding: Finding }>>;
41
+
42
+ getFindingsStats(projectId: string): Promise<ApiResponse<FindingsStats>>;
43
+
44
+ addFinding(projectId: string, params: {
45
+ title: string;
46
+ description?: string;
47
+ category?: string;
48
+ severity?: string;
49
+ file_path?: string;
50
+ line_number?: number;
51
+ related_task_id?: string;
52
+ }, sessionId?: string): Promise<ApiResponse<{ success: boolean; finding_id: string }>>;
53
+
54
+ updateFinding(findingId: string, updates: {
55
+ title?: string;
56
+ description?: string;
57
+ severity?: string;
58
+ status?: string;
59
+ resolution_note?: string;
60
+ }): Promise<ApiResponse<{ success: boolean; finding_id: string }>>;
61
+
62
+ deleteFinding(findingId: string): Promise<ApiResponse<{ success: boolean }>>;
63
+ }
64
+
65
+ export function createFindingsMethods(proxy: ProxyFn): FindingsMethods {
66
+ return {
67
+ async getFindings(projectId, params) {
68
+ return proxy('get_findings', {
69
+ project_id: projectId,
70
+ ...params
71
+ });
72
+ },
73
+
74
+ async getFinding(findingId) {
75
+ return proxy('get_finding', { finding_id: findingId });
76
+ },
77
+
78
+ async getFindingsStats(projectId) {
79
+ return proxy('get_findings_stats', { project_id: projectId });
80
+ },
81
+
82
+ async addFinding(projectId, params, sessionId) {
83
+ return proxy('add_finding', {
84
+ project_id: projectId,
85
+ ...params
86
+ }, sessionId ? { session_id: sessionId } : undefined);
87
+ },
88
+
89
+ async updateFinding(findingId, updates) {
90
+ return proxy('update_finding', {
91
+ finding_id: findingId,
92
+ ...updates
93
+ });
94
+ },
95
+
96
+ async deleteFinding(findingId) {
97
+ return proxy('delete_finding', { finding_id: findingId });
98
+ }
99
+ };
100
+ }