@vibescope/mcp-server 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +84 -84
  2. package/README.md +194 -194
  3. package/dist/cli.js +26 -26
  4. package/dist/handlers/tool-docs.js +828 -828
  5. package/dist/index.js +73 -73
  6. package/dist/templates/agent-guidelines.js +185 -185
  7. package/dist/token-tracking.js +4 -2
  8. package/dist/tools.js +65 -65
  9. package/dist/utils.js +11 -11
  10. package/docs/TOOLS.md +2053 -2053
  11. package/package.json +1 -1
  12. package/scripts/generate-docs.ts +212 -212
  13. package/scripts/version-bump.ts +203 -203
  14. package/src/api-client.test.ts +723 -723
  15. package/src/api-client.ts +2499 -2499
  16. package/src/cli.ts +212 -212
  17. package/src/handlers/__test-setup__.ts +236 -236
  18. package/src/handlers/__test-utils__.ts +87 -87
  19. package/src/handlers/blockers.test.ts +468 -468
  20. package/src/handlers/blockers.ts +163 -163
  21. package/src/handlers/bodies-of-work.test.ts +704 -704
  22. package/src/handlers/bodies-of-work.ts +526 -526
  23. package/src/handlers/connectors.test.ts +834 -834
  24. package/src/handlers/connectors.ts +229 -229
  25. package/src/handlers/cost.test.ts +462 -462
  26. package/src/handlers/cost.ts +285 -285
  27. package/src/handlers/decisions.test.ts +382 -382
  28. package/src/handlers/decisions.ts +153 -153
  29. package/src/handlers/deployment.test.ts +551 -551
  30. package/src/handlers/deployment.ts +541 -541
  31. package/src/handlers/discovery.test.ts +206 -206
  32. package/src/handlers/discovery.ts +390 -390
  33. package/src/handlers/fallback.test.ts +537 -537
  34. package/src/handlers/fallback.ts +194 -194
  35. package/src/handlers/file-checkouts.test.ts +750 -750
  36. package/src/handlers/file-checkouts.ts +185 -185
  37. package/src/handlers/findings.test.ts +633 -633
  38. package/src/handlers/findings.ts +239 -239
  39. package/src/handlers/git-issues.test.ts +631 -631
  40. package/src/handlers/git-issues.ts +136 -136
  41. package/src/handlers/ideas.test.ts +644 -644
  42. package/src/handlers/ideas.ts +207 -207
  43. package/src/handlers/index.ts +84 -84
  44. package/src/handlers/milestones.test.ts +475 -475
  45. package/src/handlers/milestones.ts +180 -180
  46. package/src/handlers/organizations.test.ts +826 -826
  47. package/src/handlers/organizations.ts +315 -315
  48. package/src/handlers/progress.test.ts +269 -269
  49. package/src/handlers/progress.ts +77 -77
  50. package/src/handlers/project.test.ts +546 -546
  51. package/src/handlers/project.ts +239 -239
  52. package/src/handlers/requests.test.ts +303 -303
  53. package/src/handlers/requests.ts +99 -99
  54. package/src/handlers/roles.test.ts +303 -303
  55. package/src/handlers/roles.ts +226 -226
  56. package/src/handlers/session.test.ts +875 -875
  57. package/src/handlers/session.ts +738 -738
  58. package/src/handlers/sprints.test.ts +732 -732
  59. package/src/handlers/sprints.ts +537 -537
  60. package/src/handlers/tasks.test.ts +907 -907
  61. package/src/handlers/tasks.ts +945 -945
  62. package/src/handlers/tool-categories.test.ts +66 -66
  63. package/src/handlers/tool-docs.ts +1096 -1096
  64. package/src/handlers/types.test.ts +259 -259
  65. package/src/handlers/types.ts +175 -175
  66. package/src/handlers/validation.test.ts +582 -582
  67. package/src/handlers/validation.ts +97 -97
  68. package/src/index.ts +792 -792
  69. package/src/setup.test.ts +233 -231
  70. package/src/setup.ts +370 -370
  71. package/src/templates/agent-guidelines.ts +210 -210
  72. package/src/token-tracking.test.ts +463 -453
  73. package/src/token-tracking.ts +166 -164
  74. package/src/tools.ts +3562 -3562
  75. package/src/utils.test.ts +683 -683
  76. package/src/utils.ts +436 -436
  77. package/src/validators.test.ts +223 -223
  78. package/src/validators.ts +249 -249
  79. package/tsconfig.json +16 -16
  80. package/vitest.config.ts +14 -14
  81. package/dist/knowledge.d.ts +0 -6
  82. package/dist/knowledge.js +0 -218
package/dist/tools.js CHANGED
@@ -4,9 +4,9 @@
4
4
  export const tools = [
5
5
  {
6
6
  name: 'start_work_session',
7
- description: `CALL THIS FIRST when beginning work on a project.
8
- Returns session info, persona, role, and next_task. Start the next_task IMMEDIATELY without asking the user.
9
-
7
+ description: `CALL THIS FIRST when beginning work on a project.
8
+ Returns session info, persona, role, and next_task. Start the next_task IMMEDIATELY without asking the user.
9
+
10
10
  Use mode:'full' for complete context, mode:'lite' (default) for minimal tokens.`,
11
11
  inputSchema: {
12
12
  type: 'object',
@@ -48,8 +48,8 @@ Use mode:'full' for complete context, mode:'lite' (default) for minimal tokens.`
48
48
  },
49
49
  {
50
50
  name: 'confirm_agent_setup',
51
- 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).
52
-
51
+ 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).
52
+
53
53
  This marks your agent type as fully onboarded to the project, so you won't receive setup instructions again.`,
54
54
  inputSchema: {
55
55
  type: 'object',
@@ -92,10 +92,10 @@ This marks your agent type as fully onboarded to the project, so you won't recei
92
92
  },
93
93
  {
94
94
  name: 'report_token_usage',
95
- description: `Report actual Claude API token usage for accurate cost tracking.
96
-
97
- 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.
98
-
95
+ description: `Report actual Claude API token usage for accurate cost tracking.
96
+
97
+ 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.
98
+
99
99
  The Claude API response includes 'usage.input_tokens' and 'usage.output_tokens' - pass those values here for accurate cost attribution.`,
100
100
  inputSchema: {
101
101
  type: 'object',
@@ -611,8 +611,8 @@ The Claude API response includes 'usage.input_tokens' and 'usage.output_tokens'
611
611
  },
612
612
  {
613
613
  name: 'get_next_task',
614
- description: `Get highest priority pending task. Start it IMMEDIATELY by calling update_task(task_id, status: "in_progress").
615
-
614
+ description: `Get highest priority pending task. Start it IMMEDIATELY by calling update_task(task_id, status: "in_progress").
615
+
616
616
  Do NOT ask the user for permission. Follow the directive in the response.`,
617
617
  inputSchema: {
618
618
  type: 'object',
@@ -669,12 +669,12 @@ Do NOT ask the user for permission. Follow the directive in the response.`,
669
669
  },
670
670
  {
671
671
  name: 'update_task',
672
- description: `Update task status, progress, or details. Include progress_note with progress_percentage.
673
-
674
- IMPORTANT: When setting status to "in_progress", you MUST provide git_branch AND worktree_path to enable cleanup tracking.
675
- Create worktree first: git worktree add ../PROJECT-task-TASKID -b feature/TASKID-description BASE_BRANCH
676
- Then call: update_task(task_id, status: "in_progress", git_branch: "feature/TASKID-description", worktree_path: "../PROJECT-task-TASKID")
677
-
672
+ description: `Update task status, progress, or details. Include progress_note with progress_percentage.
673
+
674
+ IMPORTANT: When setting status to "in_progress", you MUST provide git_branch AND worktree_path to enable cleanup tracking.
675
+ Create worktree first: git worktree add ../PROJECT-task-TASKID -b feature/TASKID-description BASE_BRANCH
676
+ Then call: update_task(task_id, status: "in_progress", git_branch: "feature/TASKID-description", worktree_path: "../PROJECT-task-TASKID")
677
+
678
678
  For projects without git branching (trunk-based or none), use skip_worktree_requirement: true.`,
679
679
  inputSchema: {
680
680
  type: 'object',
@@ -736,18 +736,18 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
736
736
  },
737
737
  {
738
738
  name: 'complete_task',
739
- description: `Mark task done. Returns next_task which you MUST start immediately without asking the user.
740
-
741
- CRITICAL: Before calling complete_task on branching workflows (github-flow, git-flow):
742
- 1. Create your PR targeting the correct branch (develop for git-flow, main for github-flow)
743
- 2. Call add_task_reference(task_id, pr_url) to link the PR to your task
744
- 3. THEN call complete_task - validators CANNOT approve tasks without a PR reference
745
-
746
- CRITICAL: After calling this tool, you must:
747
- 1. If next_task is returned → Start it immediately by calling update_task(task_id, status: "in_progress")
748
- 2. If no next_task → Call get_next_task() or start a fallback_activity
749
- 3. NEVER ask the user "What should I do next?" or "Should I continue?"
750
-
739
+ description: `Mark task done. Returns next_task which you MUST start immediately without asking the user.
740
+
741
+ CRITICAL: Before calling complete_task on branching workflows (github-flow, git-flow):
742
+ 1. Create your PR targeting the correct branch (develop for git-flow, main for github-flow)
743
+ 2. Call add_task_reference(task_id, pr_url) to link the PR to your task
744
+ 3. THEN call complete_task - validators CANNOT approve tasks without a PR reference
745
+
746
+ CRITICAL: After calling this tool, you must:
747
+ 1. If next_task is returned → Start it immediately by calling update_task(task_id, status: "in_progress")
748
+ 2. If no next_task → Call get_next_task() or start a fallback_activity
749
+ 3. NEVER ask the user "What should I do next?" or "Should I continue?"
750
+
751
751
  The auto_continue: true flag in the response means you are expected to continue working autonomously.`,
752
752
  inputSchema: {
753
753
  type: 'object',
@@ -1388,9 +1388,9 @@ The auto_continue: true flag in the response means you are expected to continue
1388
1388
  // =========================================================================
1389
1389
  {
1390
1390
  name: 'add_subtask',
1391
- description: `Add a subtask to break down a larger task into smaller workable pieces.
1392
- Subtasks can be claimed and worked on independently by any agent.
1393
- Subtasks inherit the project from their parent task.
1391
+ description: `Add a subtask to break down a larger task into smaller workable pieces.
1392
+ Subtasks can be claimed and worked on independently by any agent.
1393
+ Subtasks inherit the project from their parent task.
1394
1394
  Max depth is 1 (subtasks cannot have their own subtasks).`,
1395
1395
  inputSchema: {
1396
1396
  type: 'object',
@@ -1424,7 +1424,7 @@ Max depth is 1 (subtasks cannot have their own subtasks).`,
1424
1424
  },
1425
1425
  {
1426
1426
  name: 'get_subtasks',
1427
- description: `Get subtasks for a parent task with pagination.
1427
+ description: `Get subtasks for a parent task with pagination.
1428
1428
  Returns subtasks with aggregate completion stats.`,
1429
1429
  inputSchema: {
1430
1430
  type: 'object',
@@ -1452,17 +1452,17 @@ Returns subtasks with aggregate completion stats.`,
1452
1452
  },
1453
1453
  {
1454
1454
  name: 'get_stale_worktrees',
1455
- description: `Get worktrees that need cleanup.
1456
-
1457
- Returns tasks with worktree_path set where:
1458
- - Task is completed or cancelled (worktree should have been cleaned up)
1459
- - Task has been abandoned (no activity for 24+ hours while in_progress)
1460
-
1461
- IMPORTANT: Pass hostname (os.hostname()) to only see worktrees created on THIS machine.
1462
- Worktrees created on other machines cannot be removed locally.
1463
-
1464
- For each stale worktree:
1465
- 1. Run: git worktree remove <worktree_path>
1455
+ description: `Get worktrees that need cleanup.
1456
+
1457
+ Returns tasks with worktree_path set where:
1458
+ - Task is completed or cancelled (worktree should have been cleaned up)
1459
+ - Task has been abandoned (no activity for 24+ hours while in_progress)
1460
+
1461
+ IMPORTANT: Pass hostname (os.hostname()) to only see worktrees created on THIS machine.
1462
+ Worktrees created on other machines cannot be removed locally.
1463
+
1464
+ For each stale worktree:
1465
+ 1. Run: git worktree remove <worktree_path>
1466
1466
  2. Call: clear_worktree_path(task_id)`,
1467
1467
  inputSchema: {
1468
1468
  type: 'object',
@@ -1489,9 +1489,9 @@ For each stale worktree:
1489
1489
  },
1490
1490
  {
1491
1491
  name: 'clear_worktree_path',
1492
- description: `Clear the worktree_path from a task after cleanup.
1493
-
1494
- Call this AFTER removing the worktree with git worktree remove.
1492
+ description: `Clear the worktree_path from a task after cleanup.
1493
+
1494
+ Call this AFTER removing the worktree with git worktree remove.
1495
1495
  This marks the task as cleaned up so it won't appear in get_stale_worktrees.`,
1496
1496
  inputSchema: {
1497
1497
  type: 'object',
@@ -2151,7 +2151,7 @@ This marks the task as cleaned up so it won't appear in get_stale_worktrees.`,
2151
2151
  },
2152
2152
  {
2153
2153
  name: 'answer_question',
2154
- description: `Answer a question from the user. Use this when the user has asked a question via the dashboard.
2154
+ description: `Answer a question from the user. Use this when the user has asked a question via the dashboard.
2155
2155
  The answer will be displayed to the user and the question marked as answered.`,
2156
2156
  inputSchema: {
2157
2157
  type: 'object',
@@ -2173,8 +2173,8 @@ The answer will be displayed to the user and the question marked as answered.`,
2173
2173
  // ============================================================================
2174
2174
  {
2175
2175
  name: 'add_milestone',
2176
- description: `Add a milestone to a task.
2177
- Milestones help break down large tasks into smaller trackable steps.
2176
+ description: `Add a milestone to a task.
2177
+ Milestones help break down large tasks into smaller trackable steps.
2178
2178
  Use this to show progress on complex tasks and help gauge completion.`,
2179
2179
  inputSchema: {
2180
2180
  type: 'object',
@@ -2279,7 +2279,7 @@ Use this to show progress on complex tasks and help gauge completion.`,
2279
2279
  // ============================================================================
2280
2280
  {
2281
2281
  name: 'create_body_of_work',
2282
- description: `Create a new body of work to group tasks into phases (pre/core/post).
2282
+ description: `Create a new body of work to group tasks into phases (pre/core/post).
2283
2283
  Bodies of work allow organizing related tasks with optional auto-deployment on completion.`,
2284
2284
  inputSchema: {
2285
2285
  type: 'object',
@@ -2409,7 +2409,7 @@ Bodies of work allow organizing related tasks with optional auto-deployment on c
2409
2409
  },
2410
2410
  {
2411
2411
  name: 'add_task_to_body_of_work',
2412
- description: `Add a task to a body of work in a specific phase.
2412
+ description: `Add a task to a body of work in a specific phase.
2413
2413
  Phases control execution order: pre tasks run first, then core, then post.`,
2414
2414
  inputSchema: {
2415
2415
  type: 'object',
@@ -2451,7 +2451,7 @@ Phases control execution order: pre tasks run first, then core, then post.`,
2451
2451
  },
2452
2452
  {
2453
2453
  name: 'activate_body_of_work',
2454
- description: `Activate a draft body of work to start execution.
2454
+ description: `Activate a draft body of work to start execution.
2455
2455
  Requires at least one task. Once active, tasks can be worked on following phase order.`,
2456
2456
  inputSchema: {
2457
2457
  type: 'object',
@@ -2466,7 +2466,7 @@ Requires at least one task. Once active, tasks can be worked on following phase
2466
2466
  },
2467
2467
  {
2468
2468
  name: 'add_task_dependency',
2469
- description: `Add a dependency between tasks in a body of work.
2469
+ description: `Add a dependency between tasks in a body of work.
2470
2470
  The dependent task cannot start until the dependency is completed. Prevents circular dependencies.`,
2471
2471
  inputSchema: {
2472
2472
  type: 'object',
@@ -2524,8 +2524,8 @@ The dependent task cannot start until the dependency is completed. Prevents circ
2524
2524
  },
2525
2525
  {
2526
2526
  name: 'get_next_body_of_work_task',
2527
- description: `Get the next available task from a body of work.
2528
- Considers phase order (pre → core → post) and task dependencies.
2527
+ description: `Get the next available task from a body of work.
2528
+ Considers phase order (pre → core → post) and task dependencies.
2529
2529
  Only returns tasks where all dependencies are completed.`,
2530
2530
  inputSchema: {
2531
2531
  type: 'object',
@@ -2983,7 +2983,7 @@ Only returns tasks where all dependencies are completed.`,
2983
2983
  // ============================================================================
2984
2984
  {
2985
2985
  name: 'create_sprint',
2986
- description: `Create a new sprint. Sprints are time-bounded bodies of work with velocity tracking.
2986
+ description: `Create a new sprint. Sprints are time-bounded bodies of work with velocity tracking.
2987
2987
  Sprints start in 'planning' status where tasks can be added with story points.`,
2988
2988
  inputSchema: {
2989
2989
  type: 'object',
@@ -3072,8 +3072,8 @@ Sprints start in 'planning' status where tasks can be added with story points.`,
3072
3072
  },
3073
3073
  {
3074
3074
  name: 'get_sprint',
3075
- description: `Get a sprint with all its tasks organized by phase (pre/core/post).
3076
- Includes progress percentage, velocity points, and committed points.
3075
+ description: `Get a sprint with all its tasks organized by phase (pre/core/post).
3076
+ Includes progress percentage, velocity points, and committed points.
3077
3077
  Use summary_only: true to get task counts and next task instead of full task arrays (saves tokens).`,
3078
3078
  inputSchema: {
3079
3079
  type: 'object',
@@ -3092,7 +3092,7 @@ Use summary_only: true to get task counts and next task instead of full task arr
3092
3092
  },
3093
3093
  {
3094
3094
  name: 'get_sprints',
3095
- description: `List sprints for a project with velocity metrics.
3095
+ description: `List sprints for a project with velocity metrics.
3096
3096
  Returns sprints sorted by sprint_number descending (most recent first).`,
3097
3097
  inputSchema: {
3098
3098
  type: 'object',
@@ -3130,7 +3130,7 @@ Returns sprints sorted by sprint_number descending (most recent first).`,
3130
3130
  },
3131
3131
  {
3132
3132
  name: 'start_sprint',
3133
- description: `Start a sprint. Transitions from 'planning' to 'active' status.
3133
+ description: `Start a sprint. Transitions from 'planning' to 'active' status.
3134
3134
  Locks the committed_points at the current total story points.`,
3135
3135
  inputSchema: {
3136
3136
  type: 'object',
@@ -3145,7 +3145,7 @@ Locks the committed_points at the current total story points.`,
3145
3145
  },
3146
3146
  {
3147
3147
  name: 'complete_sprint',
3148
- description: `Complete a sprint. Handles retrospective phase and auto-deployment if configured.
3148
+ description: `Complete a sprint. Handles retrospective phase and auto-deployment if configured.
3149
3149
  Status flow: active → in_review → retrospective → completed`,
3150
3150
  inputSchema: {
3151
3151
  type: 'object',
@@ -3168,7 +3168,7 @@ Status flow: active → in_review → retrospective → completed`,
3168
3168
  },
3169
3169
  {
3170
3170
  name: 'add_task_to_sprint',
3171
- description: `Add a task to a sprint with optional story points.
3171
+ description: `Add a task to a sprint with optional story points.
3172
3172
  Tasks can be added during 'planning' status. Story points contribute to committed_points.`,
3173
3173
  inputSchema: {
3174
3174
  type: 'object',
@@ -3214,7 +3214,7 @@ Tasks can be added during 'planning' status. Story points contribute to committe
3214
3214
  },
3215
3215
  {
3216
3216
  name: 'get_sprint_backlog',
3217
- description: `Get tasks from backlog/pending that can be added to a sprint with pagination.
3217
+ description: `Get tasks from backlog/pending that can be added to a sprint with pagination.
3218
3218
  Returns tasks not already assigned to any body of work or sprint.`,
3219
3219
  inputSchema: {
3220
3220
  type: 'object',
@@ -3241,7 +3241,7 @@ Returns tasks not already assigned to any body of work or sprint.`,
3241
3241
  },
3242
3242
  {
3243
3243
  name: 'get_sprint_velocity',
3244
- description: `Get velocity metrics for completed sprints.
3244
+ description: `Get velocity metrics for completed sprints.
3245
3245
  Returns committed vs completed points and average velocity.`,
3246
3246
  inputSchema: {
3247
3247
  type: 'object',
package/dist/utils.js CHANGED
@@ -141,17 +141,17 @@ export const FALLBACK_ACTIVITIES = [
141
141
  activity: 'worktree_cleanup',
142
142
  title: 'Clean up stale worktrees',
143
143
  description: 'Find and remove git worktrees from completed or abandoned tasks.',
144
- prompt: `Clean up stale git worktrees to reclaim disk space and prevent confusion:
145
-
146
- 1. Call get_stale_worktrees(project_id) to find worktrees needing cleanup
147
- 2. For each stale worktree returned:
148
- a. Check if the worktree directory exists: ls -la <worktree_path>
149
- b. If it exists, remove it: git worktree remove <worktree_path>
150
- c. If removal fails (untracked files), use: git worktree remove --force <worktree_path>
151
- d. Call clear_worktree_path(task_id) to mark it as cleaned up
152
- 3. Run 'git worktree list' to verify cleanup
153
- 4. Log any issues encountered with add_blocker if worktrees cannot be removed
154
-
144
+ prompt: `Clean up stale git worktrees to reclaim disk space and prevent confusion:
145
+
146
+ 1. Call get_stale_worktrees(project_id) to find worktrees needing cleanup
147
+ 2. For each stale worktree returned:
148
+ a. Check if the worktree directory exists: ls -la <worktree_path>
149
+ b. If it exists, remove it: git worktree remove <worktree_path>
150
+ c. If removal fails (untracked files), use: git worktree remove --force <worktree_path>
151
+ d. Call clear_worktree_path(task_id) to mark it as cleaned up
152
+ 3. Run 'git worktree list' to verify cleanup
153
+ 4. Log any issues encountered with add_blocker if worktrees cannot be removed
154
+
155
155
  This prevents disk bloat from accumulated worktrees and keeps the workspace clean.`,
156
156
  },
157
157
  ];