@vibescope/mcp-server 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client/project.d.ts +2 -1
- package/dist/api-client.d.ts +8 -1
- package/dist/api-client.js +2 -0
- package/dist/handlers/discovery.js +6 -0
- package/dist/handlers/project.js +5 -3
- package/dist/handlers/tasks.js +5 -1
- package/dist/handlers/tool-docs.js +22 -0
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.js +4 -1
- package/dist/tools/persona-templates.d.ts +8 -0
- package/dist/tools/persona-templates.js +22 -0
- package/dist/tools/project.js +6 -2
- package/dist/tools/tasks.js +25 -0
- package/docs/TOOLS.md +25 -3
- package/package.json +1 -1
- package/src/api-client/project.ts +2 -1
- package/src/api-client.ts +6 -1
- package/src/handlers/discovery.ts +6 -0
- package/src/handlers/project.ts +6 -3
- package/src/handlers/tasks.ts +5 -1
- package/src/handlers/tool-docs.ts +24 -0
- package/src/tools/index.ts +4 -0
- package/src/tools/persona-templates.ts +25 -0
- package/src/tools/project.ts +6 -2
- package/src/tools/tasks.ts +25 -0
- package/dist/tools.d.ts +0 -2
- package/dist/tools.js +0 -3602
|
@@ -96,7 +96,8 @@ export interface ProjectMethods {
|
|
|
96
96
|
require_time_estimates?: boolean;
|
|
97
97
|
fallback_activities_enabled?: boolean;
|
|
98
98
|
preferred_fallback_activities?: string[];
|
|
99
|
-
|
|
99
|
+
allow_local_agent_task_creation?: boolean;
|
|
100
|
+
allow_cloud_agent_task_creation?: boolean;
|
|
100
101
|
}): Promise<ApiResponse<{
|
|
101
102
|
success: boolean;
|
|
102
103
|
project_id: string;
|
package/dist/api-client.d.ts
CHANGED
|
@@ -247,7 +247,8 @@ export declare class VibescopeApiClient {
|
|
|
247
247
|
require_time_estimates?: boolean;
|
|
248
248
|
fallback_activities_enabled?: boolean;
|
|
249
249
|
preferred_fallback_activities?: string[];
|
|
250
|
-
|
|
250
|
+
allow_local_agent_task_creation?: boolean;
|
|
251
|
+
allow_cloud_agent_task_creation?: boolean;
|
|
251
252
|
}): Promise<ApiResponse<{
|
|
252
253
|
success: boolean;
|
|
253
254
|
project_id: string;
|
|
@@ -486,6 +487,12 @@ export declare class VibescopeApiClient {
|
|
|
486
487
|
completeTask(taskId: string, params: {
|
|
487
488
|
summary?: string;
|
|
488
489
|
session_id?: string;
|
|
490
|
+
commit_hash?: string;
|
|
491
|
+
check_results?: Array<{
|
|
492
|
+
command: string;
|
|
493
|
+
passed: boolean;
|
|
494
|
+
output?: string;
|
|
495
|
+
}>;
|
|
489
496
|
}): Promise<ApiResponse<{
|
|
490
497
|
success: boolean;
|
|
491
498
|
directive: string;
|
package/dist/api-client.js
CHANGED
|
@@ -285,6 +285,8 @@ export class VibescopeApiClient {
|
|
|
285
285
|
return this.proxy('complete_task', {
|
|
286
286
|
task_id: taskId,
|
|
287
287
|
summary: params.summary,
|
|
288
|
+
...(params.commit_hash ? { commit_hash: params.commit_hash } : {}),
|
|
289
|
+
...(params.check_results ? { check_results: params.check_results } : {}),
|
|
288
290
|
}, params.session_id ? { session_id: params.session_id, persona: null, instance_id: '' } : undefined);
|
|
289
291
|
}
|
|
290
292
|
async deleteTask(taskId) {
|
|
@@ -340,6 +340,12 @@ export const TOOL_CATEGORIES = {
|
|
|
340
340
|
{ name: 'update_mcp_server', brief: 'Self-update the MCP server' },
|
|
341
341
|
],
|
|
342
342
|
},
|
|
343
|
+
persona_templates: {
|
|
344
|
+
description: 'Persona templates — behavioral archetypes that shape agent behavior',
|
|
345
|
+
tools: [
|
|
346
|
+
{ name: 'get_persona_templates', brief: 'List available persona templates for a project' },
|
|
347
|
+
],
|
|
348
|
+
},
|
|
343
349
|
features: {
|
|
344
350
|
description: 'Feature specs — flesh out ideas into full specs before breaking into tasks',
|
|
345
351
|
tools: [
|
package/dist/handlers/project.js
CHANGED
|
@@ -50,7 +50,8 @@ const updateProjectSchema = {
|
|
|
50
50
|
require_time_estimates: { type: 'boolean' },
|
|
51
51
|
fallback_activities_enabled: { type: 'boolean' },
|
|
52
52
|
preferred_fallback_activities: { type: 'array' },
|
|
53
|
-
|
|
53
|
+
allow_local_agent_task_creation: { type: 'boolean' },
|
|
54
|
+
allow_cloud_agent_task_creation: { type: 'boolean' },
|
|
54
55
|
};
|
|
55
56
|
const updateProjectReadmeSchema = {
|
|
56
57
|
project_id: { type: 'string', required: true, validate: uuidValidator },
|
|
@@ -112,7 +113,7 @@ export const createProject = async (args, _ctx) => {
|
|
|
112
113
|
export const updateProject = async (args, _ctx) => {
|
|
113
114
|
const { project_id, name, description, goal, git_url, tech_stack, status, git_workflow, git_main_branch, git_develop_branch, git_auto_branch, git_auto_tag, deployment_instructions,
|
|
114
115
|
// New project settings
|
|
115
|
-
git_delete_branch_on_merge, require_pr_for_validation, auto_merge_on_approval, validation_required, default_task_priority, require_time_estimates, fallback_activities_enabled, preferred_fallback_activities,
|
|
116
|
+
git_delete_branch_on_merge, require_pr_for_validation, auto_merge_on_approval, validation_required, default_task_priority, require_time_estimates, fallback_activities_enabled, preferred_fallback_activities, allow_local_agent_task_creation, allow_cloud_agent_task_creation } = parseArgs(args, updateProjectSchema);
|
|
116
117
|
const apiClient = getApiClient();
|
|
117
118
|
const response = await apiClient.updateProject(project_id, {
|
|
118
119
|
name,
|
|
@@ -136,7 +137,8 @@ export const updateProject = async (args, _ctx) => {
|
|
|
136
137
|
require_time_estimates,
|
|
137
138
|
fallback_activities_enabled,
|
|
138
139
|
preferred_fallback_activities: preferred_fallback_activities,
|
|
139
|
-
|
|
140
|
+
allow_local_agent_task_creation: allow_local_agent_task_creation,
|
|
141
|
+
allow_cloud_agent_task_creation: allow_cloud_agent_task_creation
|
|
140
142
|
});
|
|
141
143
|
if (!response.ok) {
|
|
142
144
|
return { result: { error: response.error || 'Failed to update project' }, isError: true };
|
package/dist/handlers/tasks.js
CHANGED
|
@@ -67,6 +67,8 @@ const completeTaskSchema = {
|
|
|
67
67
|
task_id: { type: 'string', required: true, validate: uuidValidator },
|
|
68
68
|
summary: { type: 'string' },
|
|
69
69
|
session_id: { type: 'string' },
|
|
70
|
+
commit_hash: { type: 'string' },
|
|
71
|
+
check_results: { type: 'object' },
|
|
70
72
|
};
|
|
71
73
|
const deleteTaskSchema = {
|
|
72
74
|
task_id: { type: 'string', required: true, validate: uuidValidator },
|
|
@@ -429,11 +431,13 @@ export const updateTask = async (args, ctx) => {
|
|
|
429
431
|
return { result };
|
|
430
432
|
};
|
|
431
433
|
export const completeTask = async (args, ctx) => {
|
|
432
|
-
const { task_id, summary, session_id: explicit_session_id } = parseArgs(args, completeTaskSchema);
|
|
434
|
+
const { task_id, summary, session_id: explicit_session_id, commit_hash, check_results } = parseArgs(args, completeTaskSchema);
|
|
433
435
|
const api = getApiClient();
|
|
434
436
|
const response = await api.completeTask(task_id, {
|
|
435
437
|
summary,
|
|
436
438
|
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
439
|
+
commit_hash,
|
|
440
|
+
check_results: check_results,
|
|
437
441
|
});
|
|
438
442
|
if (!response.ok) {
|
|
439
443
|
return { result: { error: response.error || 'Failed to complete task' }, isError: true };
|
|
@@ -1300,6 +1300,17 @@ Read recent project chat messages to stay informed about project communication.
|
|
|
1300
1300
|
- count: Number of messages returned
|
|
1301
1301
|
|
|
1302
1302
|
**Example:** get_project_messages(project_id: "123e4567-e89b-12d3-a456-426614174000", limit: 10)`,
|
|
1303
|
+
post_progress: `# post_progress
|
|
1304
|
+
Post a structured progress update to the project chat. Use at key milestones: starting a task, creating a PR, hitting a blocker, or completing work.
|
|
1305
|
+
|
|
1306
|
+
**Parameters:**
|
|
1307
|
+
- project_id (required): Project UUID
|
|
1308
|
+
- message (required): Progress update message (supports markdown)
|
|
1309
|
+
- type (optional): Update type — info (general), milestone (key achievement), blocker (blocking issue), question (asking for input). Default: info
|
|
1310
|
+
|
|
1311
|
+
**Returns:** Confirmation with message_id and timestamp.
|
|
1312
|
+
|
|
1313
|
+
**Example:** post_progress(project_id: "123e4567-e89b-12d3-a456-426614174000", message: "PR #42 created for auth feature", type: "milestone")`,
|
|
1303
1314
|
// Version management tools
|
|
1304
1315
|
check_mcp_version: `# check_mcp_version
|
|
1305
1316
|
Check for available MCP server updates and version information.
|
|
@@ -1331,6 +1342,17 @@ Self-update the MCP server to the latest available version.
|
|
|
1331
1342
|
**Example:** update_mcp_server()
|
|
1332
1343
|
|
|
1333
1344
|
**Note:** This operation may temporarily disconnect active sessions during restart.`,
|
|
1345
|
+
// Persona template tools
|
|
1346
|
+
get_persona_templates: `# get_persona_templates
|
|
1347
|
+
List available persona templates for a project. Returns both global defaults and project-specific templates.
|
|
1348
|
+
|
|
1349
|
+
**Parameters:**
|
|
1350
|
+
- project_id (required): Project UUID
|
|
1351
|
+
|
|
1352
|
+
**Returns:**
|
|
1353
|
+
- templates: Array of persona templates with id, name, description, focus_areas, icon, is_default, scope (global/project)
|
|
1354
|
+
|
|
1355
|
+
**Example:** get_persona_templates(project_id: "123e4567-e89b-12d3-a456-426614174000")`,
|
|
1334
1356
|
add_feature: `# add_feature
|
|
1335
1357
|
Create a draft feature spec. Features sit between ideas (quick thoughts) and tasks (actionable work).
|
|
1336
1358
|
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ import { connectorTools } from './connectors.js';
|
|
|
32
32
|
import { cloudAgentTools } from './cloud-agents.js';
|
|
33
33
|
import { versionTools } from './version.js';
|
|
34
34
|
import { featureTools } from './features.js';
|
|
35
|
+
import { personaTemplateTools } from './persona-templates.js';
|
|
35
36
|
/**
|
|
36
37
|
* All MCP tool definitions combined
|
|
37
38
|
*/
|
|
@@ -71,5 +72,6 @@ export declare const toolCategories: {
|
|
|
71
72
|
readonly cloudAgents: string[];
|
|
72
73
|
readonly version: string[];
|
|
73
74
|
readonly features: string[];
|
|
75
|
+
readonly personaTemplates: string[];
|
|
74
76
|
};
|
|
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, };
|
|
77
|
+
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, personaTemplateTools, };
|
package/dist/tools/index.js
CHANGED
|
@@ -32,6 +32,7 @@ import { cloudAgentTools } from './cloud-agents.js';
|
|
|
32
32
|
import { versionTools } from './version.js';
|
|
33
33
|
import { chatTools } from './chat.js';
|
|
34
34
|
import { featureTools } from './features.js';
|
|
35
|
+
import { personaTemplateTools } from './persona-templates.js';
|
|
35
36
|
/**
|
|
36
37
|
* All MCP tool definitions combined
|
|
37
38
|
*/
|
|
@@ -63,6 +64,7 @@ export const tools = [
|
|
|
63
64
|
...versionTools,
|
|
64
65
|
...chatTools,
|
|
65
66
|
...featureTools,
|
|
67
|
+
...personaTemplateTools,
|
|
66
68
|
];
|
|
67
69
|
/**
|
|
68
70
|
* Build the complete tool list from all domain modules
|
|
@@ -101,6 +103,7 @@ export const toolCategories = {
|
|
|
101
103
|
cloudAgents: cloudAgentTools.map((t) => t.name),
|
|
102
104
|
version: versionTools.map((t) => t.name),
|
|
103
105
|
features: featureTools.map((t) => t.name),
|
|
106
|
+
personaTemplates: personaTemplateTools.map((t) => t.name),
|
|
104
107
|
};
|
|
105
108
|
// Re-export domain tools for selective imports
|
|
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, };
|
|
109
|
+
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, personaTemplateTools, };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Template Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing persona templates:
|
|
5
|
+
* - get_persona_templates
|
|
6
|
+
*/
|
|
7
|
+
export const personaTemplateTools = [
|
|
8
|
+
{
|
|
9
|
+
name: 'get_persona_templates',
|
|
10
|
+
description: 'List available persona templates for a project. Returns both global defaults and project-specific templates. Persona templates define behavioral archetypes (e.g., Code Reviewer, QA Engineer) that shape agent behavior.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
project_id: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
description: 'Project UUID',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
required: ['project_id'],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
];
|
package/dist/tools/project.js
CHANGED
|
@@ -160,9 +160,13 @@ 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
|
-
|
|
163
|
+
allow_local_agent_task_creation: {
|
|
164
164
|
type: 'boolean',
|
|
165
|
-
description: 'Allow agents to create tasks via add_task (default:
|
|
165
|
+
description: 'Allow local agents (running on developer machine) to create tasks via add_task (default: true).',
|
|
166
|
+
},
|
|
167
|
+
allow_cloud_agent_task_creation: {
|
|
168
|
+
type: 'boolean',
|
|
169
|
+
description: 'Allow cloud/remote agents to create tasks via add_task (default: false).',
|
|
166
170
|
},
|
|
167
171
|
},
|
|
168
172
|
required: ['project_id'],
|
package/dist/tools/tasks.js
CHANGED
|
@@ -222,6 +222,10 @@ WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "
|
|
|
222
222
|
enum: ['haiku', 'sonnet', 'opus'],
|
|
223
223
|
description: 'Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning)',
|
|
224
224
|
},
|
|
225
|
+
assigned_agent_name: {
|
|
226
|
+
type: 'string',
|
|
227
|
+
description: 'Pre-assign this task to a specific agent by persona name. Only that agent will pick it up via get_next_task.',
|
|
228
|
+
},
|
|
225
229
|
},
|
|
226
230
|
required: ['project_id', 'title'],
|
|
227
231
|
},
|
|
@@ -292,6 +296,10 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
292
296
|
enum: ['haiku', 'sonnet', 'opus'],
|
|
293
297
|
description: 'Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning)',
|
|
294
298
|
},
|
|
299
|
+
assigned_agent_name: {
|
|
300
|
+
type: ['string', 'null'],
|
|
301
|
+
description: 'Pre-assign this task to a specific agent by persona name. Set to null to unassign. Only the assigned agent will pick it up via get_next_task.',
|
|
302
|
+
},
|
|
295
303
|
skip_worktree_requirement: {
|
|
296
304
|
type: 'boolean',
|
|
297
305
|
description: 'Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false',
|
|
@@ -334,6 +342,23 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
334
342
|
type: 'string',
|
|
335
343
|
description: 'Session ID from start_work_session. Required for cloud agents using mcporter.',
|
|
336
344
|
},
|
|
345
|
+
commit_hash: {
|
|
346
|
+
type: 'string',
|
|
347
|
+
description: 'Git commit hash (7-40 hex chars) of your last commit. Stored on the task for verification.',
|
|
348
|
+
},
|
|
349
|
+
check_results: {
|
|
350
|
+
type: 'array',
|
|
351
|
+
description: 'Results of pre-completion checks (required if project has pre_completion_commands configured). Each item: { command, passed, output? }',
|
|
352
|
+
items: {
|
|
353
|
+
type: 'object',
|
|
354
|
+
properties: {
|
|
355
|
+
command: { type: 'string', description: 'The command that was run' },
|
|
356
|
+
passed: { type: 'boolean', description: 'Whether the command succeeded' },
|
|
357
|
+
output: { type: 'string', description: 'First 500 chars of output if failed' },
|
|
358
|
+
},
|
|
359
|
+
required: ['command', 'passed'],
|
|
360
|
+
},
|
|
361
|
+
},
|
|
337
362
|
},
|
|
338
363
|
required: ['task_id'],
|
|
339
364
|
},
|
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-03-
|
|
5
|
+
> Generated: 2026-03-10
|
|
6
6
|
>
|
|
7
|
-
> Total tools:
|
|
7
|
+
> Total tools: 168
|
|
8
8
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
- [cloud_agents](#cloud-agents) - Cloud agent management and cleanup (3 tools)
|
|
37
37
|
- [chat](#chat) - Project-wide chat channel for agent and user communication (3 tools)
|
|
38
38
|
- [version](#version) - MCP server version management and updates (2 tools)
|
|
39
|
+
- [persona_templates](#persona-templates) - Persona templates — behavioral archetypes that shape agent behavior (1 tools)
|
|
39
40
|
- [features](#features) - Feature specs — flesh out ideas into full specs before breaking into tasks (6 tools)
|
|
40
41
|
|
|
41
42
|
## session
|
|
@@ -245,7 +246,8 @@ Update project details (name, description, goal, settings).
|
|
|
245
246
|
| `require_time_estimates` | `boolean` | No | Require estimated_minutes when creating tasks (default: false) |
|
|
246
247
|
| `fallback_activities_enabled` | `boolean` | No | Allow agents to perform background activities when no tasks available (default: true) |
|
|
247
248
|
| `preferred_fallback_activities` | `string[]` | No | Array of preferred fallback activities (e.g., ["code_review", "security_review"]). Null means all allowed. |
|
|
248
|
-
| `
|
|
249
|
+
| `allow_local_agent_task_creation` | `boolean` | No | Allow local agents (running on developer machine) to create tasks via add_task (default: true). |
|
|
250
|
+
| `allow_cloud_agent_task_creation` | `boolean` | No | Allow cloud/remote agents to create tasks via add_task (default: false). |
|
|
249
251
|
|
|
250
252
|
---
|
|
251
253
|
|
|
@@ -380,6 +382,7 @@ WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "
|
|
|
380
382
|
| `estimated_minutes` | `number` | No | Estimated time to complete in minutes (min: 1) |
|
|
381
383
|
| `blocking` | `boolean` | No | When true, this task blocks all other work until complete (used for deployment finalization) |
|
|
382
384
|
| `model_capability` | `"haiku" | "sonnet" | "opus"` | No | Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning) |
|
|
385
|
+
| `assigned_agent_name` | `string` | No | Pre-assign this task to a specific agent by persona name. Only that agent will pick it up via get_next_task. |
|
|
383
386
|
|
|
384
387
|
---
|
|
385
388
|
|
|
@@ -417,6 +420,7 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
417
420
|
| `worktree_path` | `string` | No | Git worktree path for this task (e.g., "../project-task-abc123"). Store this for cleanup tracking across sessions. |
|
|
418
421
|
| `worktree_hostname` | `string` | No | Machine hostname where worktree was created (os.hostname()). Required with worktree_path to enable machine-aware cleanup. |
|
|
419
422
|
| `model_capability` | `"haiku" | "sonnet" | "opus"` | No | Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning) |
|
|
423
|
+
| `assigned_agent_name` | `string,null` | No | Pre-assign this task to a specific agent by persona name. Set to null to unassign. Only the assigned agent will pick it up via get_next_task. |
|
|
420
424
|
| `skip_worktree_requirement` | `boolean` | No | Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false |
|
|
421
425
|
| `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. |
|
|
422
426
|
|
|
@@ -451,6 +455,8 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
451
455
|
| `task_id` | `string` | Yes | Task UUID |
|
|
452
456
|
| `summary` | `string` | No | Brief summary of what was done. This is stored on the task as completion_summary and displayed when reviewing completed tasks. |
|
|
453
457
|
| `session_id` | `string` | No | Session ID from start_work_session. Required for cloud agents using mcporter. |
|
|
458
|
+
| `commit_hash` | `string` | No | Git commit hash (7-40 hex chars) of your last commit. Stored on the task for verification. |
|
|
459
|
+
| `check_results` | `object[]` | No | Results of pre-completion checks (required if project has pre_completion_commands configured). Each item: { command, passed, output? } |
|
|
454
460
|
|
|
455
461
|
---
|
|
456
462
|
|
|
@@ -2574,6 +2580,22 @@ Update the Vibescope MCP server to the latest version. Runs npm install to fetch
|
|
|
2574
2580
|
|
|
2575
2581
|
---
|
|
2576
2582
|
|
|
2583
|
+
## persona_templates
|
|
2584
|
+
|
|
2585
|
+
*Persona templates — behavioral archetypes that shape agent behavior*
|
|
2586
|
+
|
|
2587
|
+
### get_persona_templates
|
|
2588
|
+
|
|
2589
|
+
List available persona templates for a project. Returns both global defaults and project-specific templates. Persona templates define behavioral archetypes (e.g., Code Reviewer, QA Engineer) that shape agent behavior.
|
|
2590
|
+
|
|
2591
|
+
**Parameters:**
|
|
2592
|
+
|
|
2593
|
+
| Parameter | Type | Required | Description |
|
|
2594
|
+
|-----------|------|----------|-------------|
|
|
2595
|
+
| `project_id` | `string` | Yes | Project UUID |
|
|
2596
|
+
|
|
2597
|
+
---
|
|
2598
|
+
|
|
2577
2599
|
## features
|
|
2578
2600
|
|
|
2579
2601
|
*Feature specs — flesh out ideas into full specs before breaking into tasks*
|
package/package.json
CHANGED
|
@@ -101,7 +101,8 @@ export interface ProjectMethods {
|
|
|
101
101
|
require_time_estimates?: boolean;
|
|
102
102
|
fallback_activities_enabled?: boolean;
|
|
103
103
|
preferred_fallback_activities?: string[];
|
|
104
|
-
|
|
104
|
+
allow_local_agent_task_creation?: boolean;
|
|
105
|
+
allow_cloud_agent_task_creation?: boolean;
|
|
105
106
|
}): Promise<ApiResponse<{
|
|
106
107
|
success: boolean;
|
|
107
108
|
project_id: string;
|
package/src/api-client.ts
CHANGED
|
@@ -449,7 +449,8 @@ export class VibescopeApiClient {
|
|
|
449
449
|
require_time_estimates?: boolean;
|
|
450
450
|
fallback_activities_enabled?: boolean;
|
|
451
451
|
preferred_fallback_activities?: string[];
|
|
452
|
-
|
|
452
|
+
allow_local_agent_task_creation?: boolean;
|
|
453
|
+
allow_cloud_agent_task_creation?: boolean;
|
|
453
454
|
}): Promise<ApiResponse<{
|
|
454
455
|
success: boolean;
|
|
455
456
|
project_id: string;
|
|
@@ -754,6 +755,8 @@ export class VibescopeApiClient {
|
|
|
754
755
|
async completeTask(taskId: string, params: {
|
|
755
756
|
summary?: string;
|
|
756
757
|
session_id?: string;
|
|
758
|
+
commit_hash?: string;
|
|
759
|
+
check_results?: Array<{ command: string; passed: boolean; output?: string }>;
|
|
757
760
|
}): Promise<ApiResponse<{
|
|
758
761
|
success: boolean;
|
|
759
762
|
directive: string;
|
|
@@ -778,6 +781,8 @@ export class VibescopeApiClient {
|
|
|
778
781
|
return this.proxy('complete_task', {
|
|
779
782
|
task_id: taskId,
|
|
780
783
|
summary: params.summary,
|
|
784
|
+
...(params.commit_hash ? { commit_hash: params.commit_hash } : {}),
|
|
785
|
+
...(params.check_results ? { check_results: params.check_results } : {}),
|
|
781
786
|
}, params.session_id ? { session_id: params.session_id, persona: null, instance_id: '' } : undefined);
|
|
782
787
|
}
|
|
783
788
|
|
|
@@ -348,6 +348,12 @@ export const TOOL_CATEGORIES: Record<string, { description: string; tools: Array
|
|
|
348
348
|
{ name: 'update_mcp_server', brief: 'Self-update the MCP server' },
|
|
349
349
|
],
|
|
350
350
|
},
|
|
351
|
+
persona_templates: {
|
|
352
|
+
description: 'Persona templates — behavioral archetypes that shape agent behavior',
|
|
353
|
+
tools: [
|
|
354
|
+
{ name: 'get_persona_templates', brief: 'List available persona templates for a project' },
|
|
355
|
+
],
|
|
356
|
+
},
|
|
351
357
|
features: {
|
|
352
358
|
description: 'Feature specs — flesh out ideas into full specs before breaking into tasks',
|
|
353
359
|
tools: [
|
package/src/handlers/project.ts
CHANGED
|
@@ -64,7 +64,8 @@ const updateProjectSchema = {
|
|
|
64
64
|
require_time_estimates: { type: 'boolean' as const },
|
|
65
65
|
fallback_activities_enabled: { type: 'boolean' as const },
|
|
66
66
|
preferred_fallback_activities: { type: 'array' as const },
|
|
67
|
-
|
|
67
|
+
allow_local_agent_task_creation: { type: 'boolean' as const },
|
|
68
|
+
allow_cloud_agent_task_creation: { type: 'boolean' as const },
|
|
68
69
|
};
|
|
69
70
|
|
|
70
71
|
const updateProjectReadmeSchema = {
|
|
@@ -167,7 +168,8 @@ export const updateProject: Handler = async (args, _ctx) => {
|
|
|
167
168
|
require_time_estimates,
|
|
168
169
|
fallback_activities_enabled,
|
|
169
170
|
preferred_fallback_activities,
|
|
170
|
-
|
|
171
|
+
allow_local_agent_task_creation,
|
|
172
|
+
allow_cloud_agent_task_creation
|
|
171
173
|
} = parseArgs(args, updateProjectSchema);
|
|
172
174
|
|
|
173
175
|
const apiClient = getApiClient();
|
|
@@ -193,7 +195,8 @@ export const updateProject: Handler = async (args, _ctx) => {
|
|
|
193
195
|
require_time_estimates,
|
|
194
196
|
fallback_activities_enabled,
|
|
195
197
|
preferred_fallback_activities: preferred_fallback_activities as string[] | undefined,
|
|
196
|
-
|
|
198
|
+
allow_local_agent_task_creation: allow_local_agent_task_creation as boolean | undefined,
|
|
199
|
+
allow_cloud_agent_task_creation: allow_cloud_agent_task_creation as boolean | undefined
|
|
197
200
|
});
|
|
198
201
|
|
|
199
202
|
if (!response.ok) {
|
package/src/handlers/tasks.ts
CHANGED
|
@@ -85,6 +85,8 @@ const completeTaskSchema = {
|
|
|
85
85
|
task_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
86
86
|
summary: { type: 'string' as const },
|
|
87
87
|
session_id: { type: 'string' as const },
|
|
88
|
+
commit_hash: { type: 'string' as const },
|
|
89
|
+
check_results: { type: 'object' as const },
|
|
88
90
|
};
|
|
89
91
|
|
|
90
92
|
const deleteTaskSchema = {
|
|
@@ -529,12 +531,14 @@ export const updateTask: Handler = async (args, ctx) => {
|
|
|
529
531
|
};
|
|
530
532
|
|
|
531
533
|
export const completeTask: Handler = async (args, ctx) => {
|
|
532
|
-
const { task_id, summary, session_id: explicit_session_id } = parseArgs(args, completeTaskSchema);
|
|
534
|
+
const { task_id, summary, session_id: explicit_session_id, commit_hash, check_results } = parseArgs(args, completeTaskSchema);
|
|
533
535
|
|
|
534
536
|
const api = getApiClient();
|
|
535
537
|
const response = await api.completeTask(task_id, {
|
|
536
538
|
summary,
|
|
537
539
|
session_id: explicit_session_id || ctx.session.currentSessionId || undefined,
|
|
540
|
+
commit_hash,
|
|
541
|
+
check_results: check_results as unknown as Array<{ command: string; passed: boolean; output?: string }>,
|
|
538
542
|
});
|
|
539
543
|
|
|
540
544
|
if (!response.ok) {
|
|
@@ -1464,6 +1464,18 @@ Read recent project chat messages to stay informed about project communication.
|
|
|
1464
1464
|
|
|
1465
1465
|
**Example:** get_project_messages(project_id: "123e4567-e89b-12d3-a456-426614174000", limit: 10)`,
|
|
1466
1466
|
|
|
1467
|
+
post_progress: `# post_progress
|
|
1468
|
+
Post a structured progress update to the project chat. Use at key milestones: starting a task, creating a PR, hitting a blocker, or completing work.
|
|
1469
|
+
|
|
1470
|
+
**Parameters:**
|
|
1471
|
+
- project_id (required): Project UUID
|
|
1472
|
+
- message (required): Progress update message (supports markdown)
|
|
1473
|
+
- type (optional): Update type — info (general), milestone (key achievement), blocker (blocking issue), question (asking for input). Default: info
|
|
1474
|
+
|
|
1475
|
+
**Returns:** Confirmation with message_id and timestamp.
|
|
1476
|
+
|
|
1477
|
+
**Example:** post_progress(project_id: "123e4567-e89b-12d3-a456-426614174000", message: "PR #42 created for auth feature", type: "milestone")`,
|
|
1478
|
+
|
|
1467
1479
|
// Version management tools
|
|
1468
1480
|
check_mcp_version: `# check_mcp_version
|
|
1469
1481
|
Check for available MCP server updates and version information.
|
|
@@ -1497,6 +1509,18 @@ Self-update the MCP server to the latest available version.
|
|
|
1497
1509
|
|
|
1498
1510
|
**Note:** This operation may temporarily disconnect active sessions during restart.`,
|
|
1499
1511
|
|
|
1512
|
+
// Persona template tools
|
|
1513
|
+
get_persona_templates: `# get_persona_templates
|
|
1514
|
+
List available persona templates for a project. Returns both global defaults and project-specific templates.
|
|
1515
|
+
|
|
1516
|
+
**Parameters:**
|
|
1517
|
+
- project_id (required): Project UUID
|
|
1518
|
+
|
|
1519
|
+
**Returns:**
|
|
1520
|
+
- templates: Array of persona templates with id, name, description, focus_areas, icon, is_default, scope (global/project)
|
|
1521
|
+
|
|
1522
|
+
**Example:** get_persona_templates(project_id: "123e4567-e89b-12d3-a456-426614174000")`,
|
|
1523
|
+
|
|
1500
1524
|
add_feature: `# add_feature
|
|
1501
1525
|
Create a draft feature spec. Features sit between ideas (quick thoughts) and tasks (actionable work).
|
|
1502
1526
|
|
package/src/tools/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ import { cloudAgentTools } from './cloud-agents.js';
|
|
|
36
36
|
import { versionTools } from './version.js';
|
|
37
37
|
import { chatTools } from './chat.js';
|
|
38
38
|
import { featureTools } from './features.js';
|
|
39
|
+
import { personaTemplateTools } from './persona-templates.js';
|
|
39
40
|
|
|
40
41
|
/**
|
|
41
42
|
* All MCP tool definitions combined
|
|
@@ -68,6 +69,7 @@ export const tools: Tool[] = [
|
|
|
68
69
|
...versionTools,
|
|
69
70
|
...chatTools,
|
|
70
71
|
...featureTools,
|
|
72
|
+
...personaTemplateTools,
|
|
71
73
|
];
|
|
72
74
|
|
|
73
75
|
/**
|
|
@@ -108,6 +110,7 @@ export const toolCategories = {
|
|
|
108
110
|
cloudAgents: cloudAgentTools.map((t) => t.name),
|
|
109
111
|
version: versionTools.map((t) => t.name),
|
|
110
112
|
features: featureTools.map((t) => t.name),
|
|
113
|
+
personaTemplates: personaTemplateTools.map((t) => t.name),
|
|
111
114
|
} as const;
|
|
112
115
|
|
|
113
116
|
// Re-export domain tools for selective imports
|
|
@@ -138,4 +141,5 @@ export {
|
|
|
138
141
|
cloudAgentTools,
|
|
139
142
|
versionTools,
|
|
140
143
|
featureTools,
|
|
144
|
+
personaTemplateTools,
|
|
141
145
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Template Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing persona templates:
|
|
5
|
+
* - get_persona_templates
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Tool } from './types.js';
|
|
9
|
+
|
|
10
|
+
export const personaTemplateTools: Tool[] = [
|
|
11
|
+
{
|
|
12
|
+
name: 'get_persona_templates',
|
|
13
|
+
description: 'List available persona templates for a project. Returns both global defaults and project-specific templates. Persona templates define behavioral archetypes (e.g., Code Reviewer, QA Engineer) that shape agent behavior.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
project_id: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Project UUID',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ['project_id'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
];
|
package/src/tools/project.ts
CHANGED
|
@@ -163,9 +163,13 @@ export const projectTools: Tool[] = [
|
|
|
163
163
|
items: { type: 'string' },
|
|
164
164
|
description: 'Array of preferred fallback activities (e.g., ["code_review", "security_review"]). Null means all allowed.',
|
|
165
165
|
},
|
|
166
|
-
|
|
166
|
+
allow_local_agent_task_creation: {
|
|
167
167
|
type: 'boolean',
|
|
168
|
-
description: 'Allow agents to create tasks via add_task (default:
|
|
168
|
+
description: 'Allow local agents (running on developer machine) to create tasks via add_task (default: true).',
|
|
169
|
+
},
|
|
170
|
+
allow_cloud_agent_task_creation: {
|
|
171
|
+
type: 'boolean',
|
|
172
|
+
description: 'Allow cloud/remote agents to create tasks via add_task (default: false).',
|
|
169
173
|
},
|
|
170
174
|
},
|
|
171
175
|
required: ['project_id'],
|
package/src/tools/tasks.ts
CHANGED
|
@@ -225,6 +225,10 @@ WHEN TO USE: If the user gives you work directly (e.g., "implement feature X", "
|
|
|
225
225
|
enum: ['haiku', 'sonnet', 'opus'],
|
|
226
226
|
description: 'Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning)',
|
|
227
227
|
},
|
|
228
|
+
assigned_agent_name: {
|
|
229
|
+
type: 'string',
|
|
230
|
+
description: 'Pre-assign this task to a specific agent by persona name. Only that agent will pick it up via get_next_task.',
|
|
231
|
+
},
|
|
228
232
|
},
|
|
229
233
|
required: ['project_id', 'title'],
|
|
230
234
|
},
|
|
@@ -295,6 +299,10 @@ For projects without git branching (trunk-based or none), use skip_worktree_requ
|
|
|
295
299
|
enum: ['haiku', 'sonnet', 'opus'],
|
|
296
300
|
description: 'Recommended model capability: haiku (simple tasks), sonnet (standard), opus (complex reasoning)',
|
|
297
301
|
},
|
|
302
|
+
assigned_agent_name: {
|
|
303
|
+
type: ['string', 'null'],
|
|
304
|
+
description: 'Pre-assign this task to a specific agent by persona name. Set to null to unassign. Only the assigned agent will pick it up via get_next_task.',
|
|
305
|
+
},
|
|
298
306
|
skip_worktree_requirement: {
|
|
299
307
|
type: 'boolean',
|
|
300
308
|
description: 'Skip git_branch requirement for projects without branching workflows (trunk-based or none). Default: false',
|
|
@@ -337,6 +345,23 @@ The auto_continue: true flag in the response means you are expected to continue
|
|
|
337
345
|
type: 'string',
|
|
338
346
|
description: 'Session ID from start_work_session. Required for cloud agents using mcporter.',
|
|
339
347
|
},
|
|
348
|
+
commit_hash: {
|
|
349
|
+
type: 'string',
|
|
350
|
+
description: 'Git commit hash (7-40 hex chars) of your last commit. Stored on the task for verification.',
|
|
351
|
+
},
|
|
352
|
+
check_results: {
|
|
353
|
+
type: 'array',
|
|
354
|
+
description: 'Results of pre-completion checks (required if project has pre_completion_commands configured). Each item: { command, passed, output? }',
|
|
355
|
+
items: {
|
|
356
|
+
type: 'object',
|
|
357
|
+
properties: {
|
|
358
|
+
command: { type: 'string', description: 'The command that was run' },
|
|
359
|
+
passed: { type: 'boolean', description: 'Whether the command succeeded' },
|
|
360
|
+
output: { type: 'string', description: 'First 500 chars of output if failed' },
|
|
361
|
+
},
|
|
362
|
+
required: ['command', 'passed'],
|
|
363
|
+
},
|
|
364
|
+
},
|
|
340
365
|
},
|
|
341
366
|
required: ['task_id'],
|
|
342
367
|
},
|
package/dist/tools.d.ts
DELETED