@vibescope/mcp-server 0.3.13 → 0.3.15
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/fallback.d.ts +33 -0
- package/dist/api-client/fallback.js +21 -0
- package/dist/api-client/findings.d.ts +34 -62
- package/dist/api-client/findings.js +20 -39
- package/dist/api-client/index.d.ts +47 -54
- package/dist/api-client/index.js +26 -10
- package/dist/api-client/milestones.d.ts +36 -37
- package/dist/api-client/milestones.js +17 -30
- package/dist/api-client/validation.d.ts +35 -0
- package/dist/api-client/validation.js +23 -0
- package/dist/api-client.js +8 -1
- package/dist/handlers/cloud-agents.js +4 -12
- package/dist/handlers/discovery.js +1 -0
- package/dist/handlers/findings.js +1 -1
- package/dist/handlers/ideas.js +1 -1
- package/dist/handlers/session.js +1 -0
- package/dist/handlers/tool-docs.js +344 -0
- package/docs/TOOLS.md +30 -34
- package/package.json +1 -1
- package/src/api-client/fallback.ts +52 -0
- package/src/api-client/findings.ts +56 -110
- package/src/api-client/index.ts +34 -14
- package/src/api-client/milestones.ts +47 -67
- package/src/api-client/validation.ts +60 -0
- package/src/api-client.ts +10 -1
- package/src/handlers/cloud-agents.test.ts +438 -0
- package/src/handlers/cloud-agents.ts +7 -17
- package/src/handlers/discovery.ts +1 -0
- package/src/handlers/findings.ts +1 -1
- package/src/handlers/ideas.ts +1 -1
- package/src/handlers/session.ts +1 -0
- package/src/handlers/tool-docs.test.ts +511 -0
- package/src/handlers/tool-docs.ts +382 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation API Methods
|
|
3
|
+
*
|
|
4
|
+
* Handles task validation workflow for code review and approval.
|
|
5
|
+
*/
|
|
6
|
+
import type { ApiResponse, ProxyFn } from './types.js';
|
|
7
|
+
export interface TaskAwaitingValidation {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
completed_at?: string;
|
|
11
|
+
completed_by_session_id?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ValidationMethods {
|
|
14
|
+
getTasksAwaitingValidation(projectId: string): Promise<ApiResponse<{
|
|
15
|
+
tasks: TaskAwaitingValidation[];
|
|
16
|
+
}>>;
|
|
17
|
+
claimValidation(taskId: string, sessionId?: string): Promise<ApiResponse<{
|
|
18
|
+
success: boolean;
|
|
19
|
+
task_id: string;
|
|
20
|
+
}>>;
|
|
21
|
+
validateTask(taskId: string, params: {
|
|
22
|
+
approved: boolean;
|
|
23
|
+
validation_notes?: string;
|
|
24
|
+
skip_pr_check?: boolean;
|
|
25
|
+
pr_checks_passing?: boolean;
|
|
26
|
+
create_fix_task?: boolean;
|
|
27
|
+
}, sessionId?: string): Promise<ApiResponse<{
|
|
28
|
+
success: boolean;
|
|
29
|
+
approved: boolean;
|
|
30
|
+
task_id: string;
|
|
31
|
+
message?: string;
|
|
32
|
+
workflow?: string;
|
|
33
|
+
}>>;
|
|
34
|
+
}
|
|
35
|
+
export declare function createValidationMethods(proxy: ProxyFn): ValidationMethods;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation API Methods
|
|
3
|
+
*
|
|
4
|
+
* Handles task validation workflow for code review and approval.
|
|
5
|
+
*/
|
|
6
|
+
export function createValidationMethods(proxy) {
|
|
7
|
+
return {
|
|
8
|
+
async getTasksAwaitingValidation(projectId) {
|
|
9
|
+
return proxy('get_tasks_awaiting_validation', { project_id: projectId });
|
|
10
|
+
},
|
|
11
|
+
async claimValidation(taskId, sessionId) {
|
|
12
|
+
return proxy('claim_validation', { task_id: taskId }, sessionId ? {
|
|
13
|
+
session_id: sessionId
|
|
14
|
+
} : undefined);
|
|
15
|
+
},
|
|
16
|
+
async validateTask(taskId, params, sessionId) {
|
|
17
|
+
return proxy('validate_task', {
|
|
18
|
+
task_id: taskId,
|
|
19
|
+
...params
|
|
20
|
+
}, sessionId ? { session_id: sessionId } : undefined);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
package/dist/api-client.js
CHANGED
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
* HTTP client for communicating with the Vibescope API.
|
|
5
5
|
* All database operations are handled server-side through these endpoints.
|
|
6
6
|
*/
|
|
7
|
+
import crypto from 'crypto';
|
|
7
8
|
const DEFAULT_API_URL = 'https://vibescope.dev';
|
|
9
|
+
// Stable instance ID for this process — persists across start_work_session calls
|
|
10
|
+
// so the API can recognise reconnections after context clears
|
|
11
|
+
const PROCESS_INSTANCE_ID = crypto.randomUUID();
|
|
8
12
|
// Retry configuration defaults
|
|
9
13
|
const DEFAULT_RETRY_STATUS_CODES = [429, 503, 504];
|
|
10
14
|
const DEFAULT_MAX_RETRIES = 3;
|
|
@@ -133,7 +137,10 @@ export class VibescopeApiClient {
|
|
|
133
137
|
}
|
|
134
138
|
// Session endpoints
|
|
135
139
|
async startSession(params) {
|
|
136
|
-
return this.request('POST', '/api/mcp/sessions/start',
|
|
140
|
+
return this.request('POST', '/api/mcp/sessions/start', {
|
|
141
|
+
...params,
|
|
142
|
+
instance_id: PROCESS_INSTANCE_ID,
|
|
143
|
+
});
|
|
137
144
|
}
|
|
138
145
|
async heartbeat(sessionId, options) {
|
|
139
146
|
return this.request('POST', '/api/mcp/sessions/heartbeat', {
|
|
@@ -27,12 +27,8 @@ const listCloudAgentsSchema = {
|
|
|
27
27
|
* Clean up stale cloud agents that failed to start or lost connection.
|
|
28
28
|
* Only operates on agents in the specified project (security scoped).
|
|
29
29
|
*/
|
|
30
|
-
export const cleanupStaleCloudAgents = async (args,
|
|
30
|
+
export const cleanupStaleCloudAgents = async (args, _ctx) => {
|
|
31
31
|
const { project_id, stale_minutes, include_running, dry_run } = parseArgs(args, cleanupStaleAgentsSchema);
|
|
32
|
-
// Ensure user has an active session with this project (security check)
|
|
33
|
-
if (ctx.session.currentProjectId && ctx.session.currentProjectId !== project_id) {
|
|
34
|
-
return error('Cannot cleanup agents for a different project than your current session');
|
|
35
|
-
}
|
|
36
32
|
const apiClient = getApiClient();
|
|
37
33
|
// Call the cleanup endpoint via fetch (since it's a new endpoint not in the client)
|
|
38
34
|
const response = await apiClient.proxy('cleanup_stale_cloud_agents', {
|
|
@@ -41,7 +37,7 @@ export const cleanupStaleCloudAgents = async (args, ctx) => {
|
|
|
41
37
|
includeRunning: include_running,
|
|
42
38
|
dryRun: dry_run,
|
|
43
39
|
});
|
|
44
|
-
if (!response.ok) {
|
|
40
|
+
if (!response.ok || !response.data) {
|
|
45
41
|
return error(response.error || 'Failed to cleanup stale agents');
|
|
46
42
|
}
|
|
47
43
|
const data = response.data;
|
|
@@ -63,18 +59,14 @@ export const cleanupStaleCloudAgents = async (args, ctx) => {
|
|
|
63
59
|
/**
|
|
64
60
|
* List cloud agents for a project with optional status filter.
|
|
65
61
|
*/
|
|
66
|
-
export const listCloudAgents = async (args,
|
|
62
|
+
export const listCloudAgents = async (args, _ctx) => {
|
|
67
63
|
const { project_id, status } = parseArgs(args, listCloudAgentsSchema);
|
|
68
|
-
// Ensure user has an active session with this project (security check)
|
|
69
|
-
if (ctx.session.currentProjectId && ctx.session.currentProjectId !== project_id) {
|
|
70
|
-
return error('Cannot list agents for a different project than your current session');
|
|
71
|
-
}
|
|
72
64
|
const apiClient = getApiClient();
|
|
73
65
|
const response = await apiClient.proxy('list_cloud_agents', {
|
|
74
66
|
project_id,
|
|
75
67
|
status: status === 'all' ? undefined : status,
|
|
76
68
|
});
|
|
77
|
-
if (!response.ok) {
|
|
69
|
+
if (!response.ok || !response.data) {
|
|
78
70
|
return error(response.error || 'Failed to list cloud agents');
|
|
79
71
|
}
|
|
80
72
|
return success({
|
|
@@ -319,6 +319,7 @@ export const TOOL_CATEGORIES = {
|
|
|
319
319
|
cloud_agents: {
|
|
320
320
|
description: 'Cloud agent management and cleanup',
|
|
321
321
|
tools: [
|
|
322
|
+
{ name: 'update_agent_status', brief: 'Update agent dashboard status message' },
|
|
322
323
|
{ name: 'cleanup_stale_cloud_agents', brief: 'Clean up stale cloud agents' },
|
|
323
324
|
{ name: 'list_cloud_agents', brief: 'List cloud agents for project' },
|
|
324
325
|
],
|
|
@@ -13,7 +13,7 @@ import { parseArgs, uuidValidator, createEnumValidator } from '../validators.js'
|
|
|
13
13
|
import { getApiClient } from '../api-client.js';
|
|
14
14
|
const VALID_FINDING_CATEGORIES = ['performance', 'security', 'code_quality', 'accessibility', 'documentation', 'architecture', 'testing', 'other'];
|
|
15
15
|
const VALID_FINDING_SEVERITIES = ['info', 'low', 'medium', 'high', 'critical'];
|
|
16
|
-
const VALID_FINDING_STATUSES = ['open', 'addressed', 'dismissed', 'wontfix'];
|
|
16
|
+
const VALID_FINDING_STATUSES = ['open', 'in_development', 'implemented', 'addressed', 'dismissed', 'wontfix'];
|
|
17
17
|
// Argument schemas for type-safe parsing
|
|
18
18
|
const addFindingSchema = {
|
|
19
19
|
project_id: { type: 'string', required: true, validate: uuidValidator },
|
package/dist/handlers/ideas.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { parseArgs, uuidValidator, priorityValidator, minutesValidator, createEnumValidator, } from '../validators.js';
|
|
14
14
|
import { getApiClient } from '../api-client.js';
|
|
15
|
-
const VALID_IDEA_STATUSES = ['raw', 'exploring', 'planned', 'in_development', 'shipped'];
|
|
15
|
+
const VALID_IDEA_STATUSES = ['raw', 'exploring', 'planned', 'in_development', 'implemented', 'shipped'];
|
|
16
16
|
// Argument schemas for type-safe parsing
|
|
17
17
|
const addIdeaSchema = {
|
|
18
18
|
project_id: { type: 'string', required: true, validate: uuidValidator },
|
package/dist/handlers/session.js
CHANGED
|
@@ -292,6 +292,7 @@ export const startWorkSession = async (args, ctx) => {
|
|
|
292
292
|
}
|
|
293
293
|
agentRules.push('COMPLETE TASKS: Always call complete_task() after creating a PR. This is mandatory.');
|
|
294
294
|
agentRules.push('REVIEW REQUIRED: All tasks must be reviewed by another agent before merging.');
|
|
295
|
+
agentRules.push('STATUS UPDATES: Call update_agent_status(status_message: "Working on: TASK_TITLE") whenever you start a new task, and update_task(task_id, status: "in_progress") to claim it.');
|
|
295
296
|
result.AGENT_RULES = agentRules;
|
|
296
297
|
// Add next action at end - pending requests take priority over validation, then regular tasks
|
|
297
298
|
if (hasUrgentQuestions) {
|
|
@@ -980,4 +980,348 @@ Query aggregated project knowledge in a single call. Reduces token usage by comb
|
|
|
980
980
|
**Token savings:** Replaces multiple tool calls (get_findings, get_decisions, get_blockers, etc.) with one call.
|
|
981
981
|
|
|
982
982
|
**Example:** query_knowledge_base(project_id, categories: ["findings", "decisions"], limit: 10)`,
|
|
983
|
+
// Session tools (additional)
|
|
984
|
+
report_token_usage: `# report_token_usage
|
|
985
|
+
Report actual token usage from Claude API responses.
|
|
986
|
+
|
|
987
|
+
**Parameters:**
|
|
988
|
+
- session_id (optional): Session UUID (uses current session if not provided)
|
|
989
|
+
- input_tokens (required): Number of input tokens
|
|
990
|
+
- output_tokens (required): Number of output tokens
|
|
991
|
+
- model (optional): Model used (e.g., "claude-3-opus")
|
|
992
|
+
|
|
993
|
+
**Returns:** Updated token usage summary`,
|
|
994
|
+
signal_idle: `# signal_idle
|
|
995
|
+
Signal that the agent is idle and available for work.
|
|
996
|
+
|
|
997
|
+
**Parameters:**
|
|
998
|
+
- session_id (optional): Session UUID (uses current session if not provided)
|
|
999
|
+
|
|
1000
|
+
**Returns:** Idle status confirmation, may include suggested activities`,
|
|
1001
|
+
confirm_agent_setup: `# confirm_agent_setup
|
|
1002
|
+
Confirm that agent setup is complete after following setup instructions.
|
|
1003
|
+
|
|
1004
|
+
**Parameters:**
|
|
1005
|
+
- project_id (required): Project UUID
|
|
1006
|
+
- agent_type (required): Type of agent (e.g., "claude", "gemini")
|
|
1007
|
+
|
|
1008
|
+
**Returns:** Setup confirmation status`,
|
|
1009
|
+
// Project tools (additional)
|
|
1010
|
+
get_project_summary: `# get_project_summary
|
|
1011
|
+
Get unified project statistics overview in a single call.
|
|
1012
|
+
|
|
1013
|
+
**Parameters:**
|
|
1014
|
+
- project_id (required): Project UUID
|
|
1015
|
+
|
|
1016
|
+
**Returns:** Task counts, blocker counts, finding counts, decision counts, and more`,
|
|
1017
|
+
// Blocker tools (additional)
|
|
1018
|
+
get_blocker: `# get_blocker
|
|
1019
|
+
Get a single blocker by ID.
|
|
1020
|
+
|
|
1021
|
+
**Parameters:**
|
|
1022
|
+
- blocker_id (required): Blocker UUID
|
|
1023
|
+
|
|
1024
|
+
**Returns:** Blocker details including description, status, resolution`,
|
|
1025
|
+
get_blockers_stats: `# get_blockers_stats
|
|
1026
|
+
Get aggregate blocker statistics.
|
|
1027
|
+
|
|
1028
|
+
**Parameters:**
|
|
1029
|
+
- project_id (required): Project UUID
|
|
1030
|
+
|
|
1031
|
+
**Returns:** Open/resolved counts, breakdown by age`,
|
|
1032
|
+
// Decision tools (additional)
|
|
1033
|
+
get_decision: `# get_decision
|
|
1034
|
+
Get a single decision by ID.
|
|
1035
|
+
|
|
1036
|
+
**Parameters:**
|
|
1037
|
+
- decision_id (required): Decision UUID
|
|
1038
|
+
|
|
1039
|
+
**Returns:** Decision details including title, description, rationale`,
|
|
1040
|
+
get_decisions_stats: `# get_decisions_stats
|
|
1041
|
+
Get aggregate decision statistics.
|
|
1042
|
+
|
|
1043
|
+
**Parameters:**
|
|
1044
|
+
- project_id (required): Project UUID
|
|
1045
|
+
|
|
1046
|
+
**Returns:** Total count, recent decisions count`,
|
|
1047
|
+
// Idea tools (additional)
|
|
1048
|
+
get_idea: `# get_idea
|
|
1049
|
+
Get a single idea by ID.
|
|
1050
|
+
|
|
1051
|
+
**Parameters:**
|
|
1052
|
+
- idea_id (required): Idea UUID
|
|
1053
|
+
|
|
1054
|
+
**Returns:** Idea details including title, description, status`,
|
|
1055
|
+
// Finding tools (additional)
|
|
1056
|
+
get_finding: `# get_finding
|
|
1057
|
+
Get a single finding by ID.
|
|
1058
|
+
|
|
1059
|
+
**Parameters:**
|
|
1060
|
+
- finding_id (required): Finding UUID
|
|
1061
|
+
|
|
1062
|
+
**Returns:** Finding details including title, category, severity, status`,
|
|
1063
|
+
get_findings_stats: `# get_findings_stats
|
|
1064
|
+
Get aggregate finding statistics.
|
|
1065
|
+
|
|
1066
|
+
**Parameters:**
|
|
1067
|
+
- project_id (required): Project UUID
|
|
1068
|
+
|
|
1069
|
+
**Returns:** Counts by category, severity, and status`,
|
|
1070
|
+
// Deployment tools (additional)
|
|
1071
|
+
get_deployment_requirements_stats: `# get_deployment_requirements_stats
|
|
1072
|
+
Get aggregate deployment requirement statistics.
|
|
1073
|
+
|
|
1074
|
+
**Parameters:**
|
|
1075
|
+
- project_id (required): Project UUID
|
|
1076
|
+
|
|
1077
|
+
**Returns:** Counts by stage and status`,
|
|
1078
|
+
// Worktree tools
|
|
1079
|
+
get_stale_worktrees: `# get_stale_worktrees
|
|
1080
|
+
Find orphaned worktrees that need cleanup.
|
|
1081
|
+
|
|
1082
|
+
**Parameters:**
|
|
1083
|
+
- project_id (required): Project UUID
|
|
1084
|
+
- hostname (optional): Filter to worktrees created on this machine
|
|
1085
|
+
|
|
1086
|
+
**Returns:** List of stale worktrees with task info and cleanup commands`,
|
|
1087
|
+
clear_worktree_path: `# clear_worktree_path
|
|
1088
|
+
Clear worktree path from a task after cleanup.
|
|
1089
|
+
|
|
1090
|
+
**Parameters:**
|
|
1091
|
+
- task_id (required): Task UUID
|
|
1092
|
+
|
|
1093
|
+
**Note:** Call this AFTER running git worktree remove`,
|
|
1094
|
+
// Role tools
|
|
1095
|
+
get_role_settings: `# get_role_settings
|
|
1096
|
+
Get project role settings and configuration.
|
|
1097
|
+
|
|
1098
|
+
**Parameters:**
|
|
1099
|
+
- project_id (required): Project UUID
|
|
1100
|
+
|
|
1101
|
+
**Returns:** Role configuration including allowed roles, default role`,
|
|
1102
|
+
update_role_settings: `# update_role_settings
|
|
1103
|
+
Configure project role behavior.
|
|
1104
|
+
|
|
1105
|
+
**Parameters:**
|
|
1106
|
+
- project_id (required): Project UUID
|
|
1107
|
+
- default_role (optional): Default role for new sessions
|
|
1108
|
+
- allowed_roles (optional): Array of allowed role names
|
|
1109
|
+
|
|
1110
|
+
**Returns:** Updated role settings`,
|
|
1111
|
+
set_session_role: `# set_session_role
|
|
1112
|
+
Set the role for the current session.
|
|
1113
|
+
|
|
1114
|
+
**Parameters:**
|
|
1115
|
+
- session_id (optional): Session UUID (uses current session)
|
|
1116
|
+
- role (required): Role name (e.g., "developer", "validator", "deployer")
|
|
1117
|
+
|
|
1118
|
+
**Returns:** Updated session with new role`,
|
|
1119
|
+
get_agents_by_role: `# get_agents_by_role
|
|
1120
|
+
List active agents grouped by role.
|
|
1121
|
+
|
|
1122
|
+
**Parameters:**
|
|
1123
|
+
- project_id (required): Project UUID
|
|
1124
|
+
|
|
1125
|
+
**Returns:** Agents organized by role`,
|
|
1126
|
+
// File checkout/lock tools
|
|
1127
|
+
checkout_file: `# checkout_file
|
|
1128
|
+
Lock a file for editing to prevent conflicts with other agents.
|
|
1129
|
+
|
|
1130
|
+
**Parameters:**
|
|
1131
|
+
- project_id (required): Project UUID
|
|
1132
|
+
- file_path (required): Path to the file to lock
|
|
1133
|
+
- reason (optional): Why you need to edit this file
|
|
1134
|
+
|
|
1135
|
+
**Returns:** Checkout confirmation with expiry time`,
|
|
1136
|
+
checkin_file: `# checkin_file
|
|
1137
|
+
Release a file lock after editing.
|
|
1138
|
+
|
|
1139
|
+
**Parameters:**
|
|
1140
|
+
- project_id (required): Project UUID
|
|
1141
|
+
- file_path (required): Path to the file to release
|
|
1142
|
+
|
|
1143
|
+
**Returns:** Checkin confirmation`,
|
|
1144
|
+
get_file_checkouts: `# get_file_checkouts
|
|
1145
|
+
List current file locks.
|
|
1146
|
+
|
|
1147
|
+
**Parameters:**
|
|
1148
|
+
- project_id (required): Project UUID
|
|
1149
|
+
- file_path (optional): Filter to specific file
|
|
1150
|
+
|
|
1151
|
+
**Returns:** List of active file checkouts`,
|
|
1152
|
+
get_file_checkouts_stats: `# get_file_checkouts_stats
|
|
1153
|
+
Get file checkout statistics.
|
|
1154
|
+
|
|
1155
|
+
**Parameters:**
|
|
1156
|
+
- project_id (required): Project UUID
|
|
1157
|
+
|
|
1158
|
+
**Returns:** Active checkout count, breakdown by agent`,
|
|
1159
|
+
abandon_checkout: `# abandon_checkout
|
|
1160
|
+
Force-release a file lock (use with caution).
|
|
1161
|
+
|
|
1162
|
+
**Parameters:**
|
|
1163
|
+
- project_id (required): Project UUID
|
|
1164
|
+
- file_path (required): Path to the file to release
|
|
1165
|
+
|
|
1166
|
+
**Note:** Only use when the original agent is unreachable`,
|
|
1167
|
+
is_file_available: `# is_file_available
|
|
1168
|
+
Check if a file is available for checkout.
|
|
1169
|
+
|
|
1170
|
+
**Parameters:**
|
|
1171
|
+
- project_id (required): Project UUID
|
|
1172
|
+
- file_path (required): Path to check
|
|
1173
|
+
|
|
1174
|
+
**Returns:** Availability status, current holder if locked`,
|
|
1175
|
+
// Connector tools
|
|
1176
|
+
get_connectors: `# get_connectors
|
|
1177
|
+
List project connectors (integrations).
|
|
1178
|
+
|
|
1179
|
+
**Parameters:**
|
|
1180
|
+
- project_id (required): Project UUID
|
|
1181
|
+
|
|
1182
|
+
**Returns:** Array of configured connectors`,
|
|
1183
|
+
get_connector: `# get_connector
|
|
1184
|
+
Get connector details.
|
|
1185
|
+
|
|
1186
|
+
**Parameters:**
|
|
1187
|
+
- connector_id (required): Connector UUID
|
|
1188
|
+
|
|
1189
|
+
**Returns:** Connector configuration and status`,
|
|
1190
|
+
add_connector: `# add_connector
|
|
1191
|
+
Create a new external integration connector.
|
|
1192
|
+
|
|
1193
|
+
**Parameters:**
|
|
1194
|
+
- project_id (required): Project UUID
|
|
1195
|
+
- type (required): Connector type (webhook, slack, discord, etc.)
|
|
1196
|
+
- name (required): Display name
|
|
1197
|
+
- config (required): Type-specific configuration
|
|
1198
|
+
|
|
1199
|
+
**Returns:** Created connector details`,
|
|
1200
|
+
update_connector: `# update_connector
|
|
1201
|
+
Update connector configuration.
|
|
1202
|
+
|
|
1203
|
+
**Parameters:**
|
|
1204
|
+
- connector_id (required): Connector UUID
|
|
1205
|
+
- name (optional): New display name
|
|
1206
|
+
- config (optional): Updated configuration
|
|
1207
|
+
- enabled (optional): Enable/disable connector
|
|
1208
|
+
|
|
1209
|
+
**Returns:** Updated connector details`,
|
|
1210
|
+
delete_connector: `# delete_connector
|
|
1211
|
+
Remove a connector.
|
|
1212
|
+
|
|
1213
|
+
**Parameters:**
|
|
1214
|
+
- connector_id (required): Connector UUID
|
|
1215
|
+
|
|
1216
|
+
**Returns:** Deletion confirmation`,
|
|
1217
|
+
test_connector: `# test_connector
|
|
1218
|
+
Send a test event to verify connector configuration.
|
|
1219
|
+
|
|
1220
|
+
**Parameters:**
|
|
1221
|
+
- connector_id (required): Connector UUID
|
|
1222
|
+
|
|
1223
|
+
**Returns:** Test result with success/failure details`,
|
|
1224
|
+
get_connector_events: `# get_connector_events
|
|
1225
|
+
Get event history for a connector.
|
|
1226
|
+
|
|
1227
|
+
**Parameters:**
|
|
1228
|
+
- connector_id (required): Connector UUID
|
|
1229
|
+
- limit (optional): Max events to return (default: 50)
|
|
1230
|
+
|
|
1231
|
+
**Returns:** Array of sent events with status`,
|
|
1232
|
+
// Cloud agent tools
|
|
1233
|
+
update_agent_status: `# update_agent_status
|
|
1234
|
+
Update your status message on the dashboard. Call this after start_work_session and whenever you start a new task.
|
|
1235
|
+
|
|
1236
|
+
**Parameters:**
|
|
1237
|
+
- status_message (required): Status text shown on dashboard (e.g. "Working on: Task title")
|
|
1238
|
+
- agent_name (required): Your agent name
|
|
1239
|
+
- project_id (required): Project UUID
|
|
1240
|
+
|
|
1241
|
+
**Example:** update_agent_status(status_message: "Working on: Progress Report Modal", agent_name: "Leon", project_id: "...")`,
|
|
1242
|
+
cleanup_stale_cloud_agents: `# cleanup_stale_cloud_agents
|
|
1243
|
+
Clean up stale cloud agents that failed to start or lost connection.
|
|
1244
|
+
|
|
1245
|
+
**Parameters:**
|
|
1246
|
+
- project_id (required): Project UUID
|
|
1247
|
+
- stale_minutes (optional): Minutes of inactivity before considered stale (default: 5)
|
|
1248
|
+
- include_running (optional): Include running agents in cleanup (default: false)
|
|
1249
|
+
- dry_run (optional): Preview what would be cleaned without actually cleaning (default: false)
|
|
1250
|
+
|
|
1251
|
+
**Returns:**
|
|
1252
|
+
- cleaned: Number of agents cleaned up
|
|
1253
|
+
- failed: Number of cleanup failures
|
|
1254
|
+
- agents: Array of affected agents with status
|
|
1255
|
+
|
|
1256
|
+
**Example:** cleanup_stale_cloud_agents(project_id, stale_minutes: 10, dry_run: true)`,
|
|
1257
|
+
list_cloud_agents: `# list_cloud_agents
|
|
1258
|
+
List cloud agents for a project with optional status filter.
|
|
1259
|
+
|
|
1260
|
+
**Parameters:**
|
|
1261
|
+
- project_id (required): Project UUID
|
|
1262
|
+
- status (optional): Filter by status - starting, running, stopped, failed, or all (default: all)
|
|
1263
|
+
|
|
1264
|
+
**Returns:**
|
|
1265
|
+
- agents: Array of agents with id, name, status, created_at, last_heartbeat, public_ip, ecs_task_id
|
|
1266
|
+
- count: Total number of agents returned
|
|
1267
|
+
|
|
1268
|
+
**Example:** list_cloud_agents(project_id, status: "running")`,
|
|
1269
|
+
// Chat tools
|
|
1270
|
+
send_project_message: `# send_project_message
|
|
1271
|
+
Send a message to the project chat channel for agent and user communication.
|
|
1272
|
+
|
|
1273
|
+
**Parameters:**
|
|
1274
|
+
- project_id (required): Project UUID
|
|
1275
|
+
- message (required): Message content to send
|
|
1276
|
+
- author_name (optional): Name of the message sender (defaults to session persona)
|
|
1277
|
+
|
|
1278
|
+
**Returns:**
|
|
1279
|
+
- message_id: UUID of the sent message
|
|
1280
|
+
- timestamp: When the message was sent
|
|
1281
|
+
|
|
1282
|
+
**Example:** send_project_message(project_id: "123e4567-e89b-12d3-a456-426614174000", message: "Deployment completed successfully")`,
|
|
1283
|
+
get_project_messages: `# get_project_messages
|
|
1284
|
+
Read recent project chat messages to stay informed about project communication.
|
|
1285
|
+
|
|
1286
|
+
**Parameters:**
|
|
1287
|
+
- project_id (required): Project UUID
|
|
1288
|
+
- limit (optional): Number of recent messages to retrieve (default: 20, max: 100)
|
|
1289
|
+
- since (optional): ISO timestamp to get messages after this time
|
|
1290
|
+
|
|
1291
|
+
**Returns:**
|
|
1292
|
+
- messages: Array of messages with id, author_name, message, timestamp
|
|
1293
|
+
- count: Number of messages returned
|
|
1294
|
+
|
|
1295
|
+
**Example:** get_project_messages(project_id: "123e4567-e89b-12d3-a456-426614174000", limit: 10)`,
|
|
1296
|
+
// Version management tools
|
|
1297
|
+
check_mcp_version: `# check_mcp_version
|
|
1298
|
+
Check for available MCP server updates and version information.
|
|
1299
|
+
|
|
1300
|
+
**Parameters:**
|
|
1301
|
+
- check_remote (optional): Whether to check remote registry for updates (default: true)
|
|
1302
|
+
|
|
1303
|
+
**Returns:**
|
|
1304
|
+
- current_version: Currently running MCP server version
|
|
1305
|
+
- latest_version: Latest available version (if check_remote is true)
|
|
1306
|
+
- update_available: Boolean indicating if an update is available
|
|
1307
|
+
- release_notes: Summary of changes in latest version (if available)
|
|
1308
|
+
|
|
1309
|
+
**Example:** check_mcp_version(check_remote: true)`,
|
|
1310
|
+
update_mcp_server: `# update_mcp_server
|
|
1311
|
+
Self-update the MCP server to the latest available version.
|
|
1312
|
+
|
|
1313
|
+
**Parameters:**
|
|
1314
|
+
- version (optional): Specific version to update to (defaults to latest)
|
|
1315
|
+
- restart_after_update (optional): Whether to restart after update (default: true)
|
|
1316
|
+
- backup_config (optional): Whether to backup current config (default: true)
|
|
1317
|
+
|
|
1318
|
+
**Returns:**
|
|
1319
|
+
- success: Boolean indicating if update succeeded
|
|
1320
|
+
- old_version: Previous version before update
|
|
1321
|
+
- new_version: Version after update
|
|
1322
|
+
- restart_required: Whether manual restart is needed
|
|
1323
|
+
|
|
1324
|
+
**Example:** update_mcp_server()
|
|
1325
|
+
|
|
1326
|
+
**Note:** This operation may temporarily disconnect active sessions during restart.`,
|
|
983
1327
|
};
|
package/docs/TOOLS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Auto-generated from tool definitions. Do not edit manually.
|
|
4
4
|
>
|
|
5
|
-
> Generated: 2026-02-
|
|
5
|
+
> Generated: 2026-02-21
|
|
6
6
|
>
|
|
7
7
|
> Total tools: 159
|
|
8
8
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
- [roles](#roles) - Agent role management (4 tools)
|
|
34
34
|
- [file_locks](#file-locks) - File checkout/locking for multi-agent (6 tools)
|
|
35
35
|
- [connectors](#connectors) - External integration connectors (7 tools)
|
|
36
|
-
- [cloud_agents](#cloud-agents) - Cloud agent management and cleanup (
|
|
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 (2 tools)
|
|
38
38
|
- [version](#version) - MCP server version management and updates (2 tools)
|
|
39
39
|
|
|
@@ -2416,6 +2416,34 @@ Get event history for a connector or project. Shows delivery status and errors.
|
|
|
2416
2416
|
|
|
2417
2417
|
*Cloud agent management and cleanup*
|
|
2418
2418
|
|
|
2419
|
+
### update_agent_status
|
|
2420
|
+
|
|
2421
|
+
Report what you're currently doing. This updates the status message shown on the dashboard.
|
|
2422
|
+
|
|
2423
|
+
Call this at key milestones during boot and work:
|
|
2424
|
+
|
|
2425
|
+
- "Installing dependencies..."
|
|
2426
|
+
|
|
2427
|
+
- "Running start_work_session..."
|
|
2428
|
+
|
|
2429
|
+
- "Working on: <task title>"
|
|
2430
|
+
|
|
2431
|
+
- "Running tests..."
|
|
2432
|
+
|
|
2433
|
+
- "Committing changes..."
|
|
2434
|
+
|
|
2435
|
+
Keep messages short (under 80 chars). The dashboard shows this in real-time.
|
|
2436
|
+
|
|
2437
|
+
**Parameters:**
|
|
2438
|
+
|
|
2439
|
+
| Parameter | Type | Required | Description |
|
|
2440
|
+
|-----------|------|----------|-------------|
|
|
2441
|
+
| `status_message` | `string` | Yes | Short status message to display on dashboard (max 80 chars) |
|
|
2442
|
+
| `project_id` | `string` | No | Project UUID (optional if session has project context) |
|
|
2443
|
+
| `agent_name` | `string` | No | Agent name (used to find the spawned_agents record) |
|
|
2444
|
+
|
|
2445
|
+
---
|
|
2446
|
+
|
|
2419
2447
|
### cleanup_stale_cloud_agents
|
|
2420
2448
|
|
|
2421
2449
|
Clean up stale cloud agents that failed to start or lost connection.
|
|
@@ -2515,35 +2543,3 @@ Update the Vibescope MCP server to the latest version. Runs npm install to fetch
|
|
|
2515
2543
|
| `global` | `boolean` | No | If true, update the global installation (npm install -g). If false, update locally. Default: true. |
|
|
2516
2544
|
|
|
2517
2545
|
---
|
|
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
|
@@ -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
|
+
}
|