@vibescope/mcp-server 0.0.1 → 0.1.0
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/README.md +113 -98
- package/dist/api-client.d.ts +1114 -0
- package/dist/api-client.js +698 -0
- package/dist/cli.d.ts +1 -6
- package/dist/cli.js +39 -240
- package/dist/config/tool-categories.d.ts +31 -0
- package/dist/config/tool-categories.js +253 -0
- package/dist/handlers/blockers.js +57 -58
- package/dist/handlers/bodies-of-work.d.ts +2 -0
- package/dist/handlers/bodies-of-work.js +106 -476
- package/dist/handlers/cost.d.ts +1 -0
- package/dist/handlers/cost.js +35 -113
- package/dist/handlers/decisions.d.ts +2 -0
- package/dist/handlers/decisions.js +28 -27
- package/dist/handlers/deployment.js +112 -828
- package/dist/handlers/discovery.js +31 -0
- package/dist/handlers/fallback.d.ts +2 -0
- package/dist/handlers/fallback.js +39 -134
- package/dist/handlers/findings.js +43 -67
- package/dist/handlers/git-issues.d.ts +9 -13
- package/dist/handlers/git-issues.js +80 -225
- package/dist/handlers/ideas.d.ts +3 -0
- package/dist/handlers/ideas.js +53 -134
- package/dist/handlers/index.d.ts +2 -0
- package/dist/handlers/index.js +6 -0
- package/dist/handlers/milestones.d.ts +2 -0
- package/dist/handlers/milestones.js +51 -98
- package/dist/handlers/organizations.js +79 -275
- package/dist/handlers/progress.d.ts +2 -0
- package/dist/handlers/progress.js +25 -123
- package/dist/handlers/project.js +42 -221
- package/dist/handlers/requests.d.ts +2 -0
- package/dist/handlers/requests.js +23 -83
- package/dist/handlers/session.js +99 -585
- package/dist/handlers/sprints.d.ts +32 -0
- package/dist/handlers/sprints.js +274 -0
- package/dist/handlers/tasks.d.ts +7 -10
- package/dist/handlers/tasks.js +230 -900
- package/dist/handlers/tool-docs.d.ts +8 -0
- package/dist/handlers/tool-docs.js +657 -0
- package/dist/handlers/types.d.ts +11 -3
- package/dist/handlers/validation.d.ts +1 -1
- package/dist/handlers/validation.js +26 -153
- package/dist/index.js +473 -160
- package/dist/knowledge.js +106 -9
- package/dist/tools.js +4 -0
- package/dist/validators.d.ts +21 -0
- package/dist/validators.js +91 -0
- package/package.json +2 -3
- package/src/api-client.ts +1752 -0
- package/src/cli.test.ts +128 -302
- package/src/cli.ts +41 -285
- package/src/handlers/__test-setup__.ts +210 -0
- package/src/handlers/__test-utils__.ts +4 -134
- package/src/handlers/blockers.test.ts +114 -124
- package/src/handlers/blockers.ts +68 -70
- package/src/handlers/bodies-of-work.test.ts +236 -831
- package/src/handlers/bodies-of-work.ts +194 -525
- package/src/handlers/cost.test.ts +149 -113
- package/src/handlers/cost.ts +44 -132
- package/src/handlers/decisions.test.ts +111 -209
- package/src/handlers/decisions.ts +35 -27
- package/src/handlers/deployment.test.ts +193 -239
- package/src/handlers/deployment.ts +140 -895
- package/src/handlers/discovery.test.ts +20 -67
- package/src/handlers/discovery.ts +32 -0
- package/src/handlers/fallback.test.ts +128 -361
- package/src/handlers/fallback.ts +62 -148
- package/src/handlers/findings.test.ts +127 -345
- package/src/handlers/findings.ts +49 -66
- package/src/handlers/git-issues.test.ts +623 -0
- package/src/handlers/git-issues.ts +174 -0
- package/src/handlers/ideas.test.ts +229 -343
- package/src/handlers/ideas.ts +69 -143
- package/src/handlers/index.ts +6 -0
- package/src/handlers/milestones.test.ts +167 -281
- package/src/handlers/milestones.ts +54 -93
- package/src/handlers/organizations.test.ts +275 -467
- package/src/handlers/organizations.ts +84 -294
- package/src/handlers/progress.test.ts +112 -218
- package/src/handlers/progress.ts +29 -142
- package/src/handlers/project.test.ts +203 -226
- package/src/handlers/project.ts +48 -238
- package/src/handlers/requests.test.ts +74 -342
- package/src/handlers/requests.ts +25 -83
- package/src/handlers/session.test.ts +241 -206
- package/src/handlers/session.ts +110 -657
- package/src/handlers/sprints.test.ts +711 -0
- package/src/handlers/sprints.ts +497 -0
- package/src/handlers/tasks.test.ts +608 -353
- package/src/handlers/tasks.ts +248 -1025
- package/src/handlers/types.ts +12 -4
- package/src/handlers/validation.test.ts +189 -572
- package/src/handlers/validation.ts +29 -166
- package/src/index.ts +473 -184
- package/src/knowledge.ts +107 -9
- package/src/tools.ts +2506 -0
- package/src/validators.test.ts +223 -223
- package/src/validators.ts +127 -0
- package/tsconfig.json +1 -1
- package/vitest.config.ts +14 -13
- package/dist/cli.test.d.ts +0 -1
- package/dist/cli.test.js +0 -367
- package/dist/handlers/__test-utils__.d.ts +0 -72
- package/dist/handlers/__test-utils__.js +0 -176
- package/dist/handlers/checkouts.d.ts +0 -37
- package/dist/handlers/checkouts.js +0 -377
- package/dist/handlers/knowledge-query.d.ts +0 -22
- package/dist/handlers/knowledge-query.js +0 -253
- package/dist/handlers/knowledge.d.ts +0 -12
- package/dist/handlers/knowledge.js +0 -108
- package/dist/handlers/roles.d.ts +0 -30
- package/dist/handlers/roles.js +0 -281
- package/dist/handlers/tasks.test.d.ts +0 -1
- package/dist/handlers/tasks.test.js +0 -431
- package/dist/utils.test.d.ts +0 -1
- package/dist/utils.test.js +0 -532
- package/dist/validators.test.d.ts +0 -1
- package/dist/validators.test.js +0 -176
- package/src/tmpclaude-0078-cwd +0 -1
- package/src/tmpclaude-0ee1-cwd +0 -1
- package/src/tmpclaude-2dd5-cwd +0 -1
- package/src/tmpclaude-344c-cwd +0 -1
- package/src/tmpclaude-3860-cwd +0 -1
- package/src/tmpclaude-4b63-cwd +0 -1
- package/src/tmpclaude-5c73-cwd +0 -1
- package/src/tmpclaude-5ee3-cwd +0 -1
- package/src/tmpclaude-6795-cwd +0 -1
- package/src/tmpclaude-709e-cwd +0 -1
- package/src/tmpclaude-9839-cwd +0 -1
- package/src/tmpclaude-d829-cwd +0 -1
- package/src/tmpclaude-e072-cwd +0 -1
- package/src/tmpclaude-f6ee-cwd +0 -1
- package/tmpclaude-0439-cwd +0 -1
- package/tmpclaude-132f-cwd +0 -1
- package/tmpclaude-15bb-cwd +0 -1
- package/tmpclaude-165a-cwd +0 -1
- package/tmpclaude-1ba9-cwd +0 -1
- package/tmpclaude-21a3-cwd +0 -1
- package/tmpclaude-2a38-cwd +0 -1
- package/tmpclaude-2adf-cwd +0 -1
- package/tmpclaude-2f56-cwd +0 -1
- package/tmpclaude-3626-cwd +0 -1
- package/tmpclaude-3727-cwd +0 -1
- package/tmpclaude-40bc-cwd +0 -1
- package/tmpclaude-436f-cwd +0 -1
- package/tmpclaude-4783-cwd +0 -1
- package/tmpclaude-4b6d-cwd +0 -1
- package/tmpclaude-4ba4-cwd +0 -1
- package/tmpclaude-51e6-cwd +0 -1
- package/tmpclaude-5ecf-cwd +0 -1
- package/tmpclaude-6f97-cwd +0 -1
- package/tmpclaude-7fb2-cwd +0 -1
- package/tmpclaude-825c-cwd +0 -1
- package/tmpclaude-8baf-cwd +0 -1
- package/tmpclaude-8d9f-cwd +0 -1
- package/tmpclaude-975c-cwd +0 -1
- package/tmpclaude-9983-cwd +0 -1
- package/tmpclaude-a045-cwd +0 -1
- package/tmpclaude-ac4a-cwd +0 -1
- package/tmpclaude-b593-cwd +0 -1
- package/tmpclaude-b891-cwd +0 -1
- package/tmpclaude-c032-cwd +0 -1
- package/tmpclaude-cf43-cwd +0 -1
- package/tmpclaude-d040-cwd +0 -1
- package/tmpclaude-dcdd-cwd +0 -1
- package/tmpclaude-dcee-cwd +0 -1
- package/tmpclaude-e16b-cwd +0 -1
- package/tmpclaude-ecd2-cwd +0 -1
- package/tmpclaude-f48d-cwd +0 -1
package/src/handlers/fallback.ts
CHANGED
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
* - stop_fallback_activity
|
|
7
7
|
* - get_activity_history
|
|
8
8
|
* - get_activity_schedules
|
|
9
|
+
*
|
|
10
|
+
* MIGRATED: Uses Vibescope API client instead of direct Supabase
|
|
9
11
|
*/
|
|
10
12
|
|
|
11
13
|
import type { Handler, HandlerRegistry } from './types.js';
|
|
12
14
|
import { validateRequired, validateUUID } from '../validators.js';
|
|
13
15
|
import { FALLBACK_ACTIVITIES } from '../utils.js';
|
|
16
|
+
import { getApiClient } from '../api-client.js';
|
|
14
17
|
|
|
15
18
|
const VALID_ACTIVITIES = [
|
|
16
19
|
'feature_ideation',
|
|
@@ -36,21 +39,14 @@ export const startFallbackActivity: Handler = async (args, ctx) => {
|
|
|
36
39
|
throw new Error(`Invalid activity. Must be one of: ${VALID_ACTIVITIES.join(', ')}`);
|
|
37
40
|
}
|
|
38
41
|
|
|
39
|
-
const {
|
|
40
|
-
const
|
|
42
|
+
const { session } = ctx;
|
|
43
|
+
const apiClient = getApiClient();
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
const { error: updateError } = await supabase
|
|
44
|
-
.from('agent_sessions')
|
|
45
|
-
.update({
|
|
46
|
-
current_fallback_activity: activity,
|
|
47
|
-
current_task_id: null, // Clear any task when starting fallback
|
|
48
|
-
status: 'active',
|
|
49
|
-
last_synced_at: new Date().toISOString(),
|
|
50
|
-
})
|
|
51
|
-
.eq('id', currentSessionId);
|
|
45
|
+
const response = await apiClient.startFallbackActivity(project_id, activity, session.currentSessionId || undefined);
|
|
52
46
|
|
|
53
|
-
if (
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
throw new Error(`Failed to start fallback activity: ${response.error}`);
|
|
49
|
+
}
|
|
54
50
|
|
|
55
51
|
// Get the activity details for the response
|
|
56
52
|
const activityInfo = FALLBACK_ACTIVITIES.find((a) => a.activity === activity);
|
|
@@ -62,7 +58,7 @@ export const startFallbackActivity: Handler = async (args, ctx) => {
|
|
|
62
58
|
title: activityInfo?.title || activity,
|
|
63
59
|
description: activityInfo?.description || '',
|
|
64
60
|
prompt: activityInfo?.prompt || '',
|
|
65
|
-
message: `Started fallback activity: ${activityInfo?.title || activity}`,
|
|
61
|
+
message: response.data?.message || `Started fallback activity: ${activityInfo?.title || activity}`,
|
|
66
62
|
},
|
|
67
63
|
};
|
|
68
64
|
};
|
|
@@ -73,91 +69,19 @@ export const stopFallbackActivity: Handler = async (args, ctx) => {
|
|
|
73
69
|
validateRequired(project_id, 'project_id');
|
|
74
70
|
validateUUID(project_id, 'project_id');
|
|
75
71
|
|
|
76
|
-
const {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
// Get the current session's fallback activity before clearing it
|
|
80
|
-
const { data: sessionData, error: sessionError } = await supabase
|
|
81
|
-
.from('agent_sessions')
|
|
82
|
-
.select('current_fallback_activity')
|
|
83
|
-
.eq('id', currentSessionId)
|
|
84
|
-
.single();
|
|
85
|
-
|
|
86
|
-
if (sessionError) throw sessionError;
|
|
87
|
-
|
|
88
|
-
const activityType = sessionData?.current_fallback_activity;
|
|
89
|
-
|
|
90
|
-
// Log the activity completion to history if there was an active activity
|
|
91
|
-
if (activityType) {
|
|
92
|
-
const completedAt = new Date().toISOString();
|
|
72
|
+
const { session } = ctx;
|
|
73
|
+
const apiClient = getApiClient();
|
|
93
74
|
|
|
94
|
-
|
|
95
|
-
await supabase.from('background_activity_history').insert({
|
|
96
|
-
project_id,
|
|
97
|
-
activity_type: activityType,
|
|
98
|
-
completed_at: completedAt,
|
|
99
|
-
completed_by_session_id: currentSessionId,
|
|
100
|
-
summary: summary || null,
|
|
101
|
-
});
|
|
75
|
+
const response = await apiClient.stopFallbackActivity(project_id, summary, session.currentSessionId || undefined);
|
|
102
76
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
.from('background_activity_schedules')
|
|
106
|
-
.select('*')
|
|
107
|
-
.eq('project_id', project_id)
|
|
108
|
-
.eq('activity_type', activityType)
|
|
109
|
-
.eq('enabled', true)
|
|
110
|
-
.single();
|
|
111
|
-
|
|
112
|
-
if (schedule) {
|
|
113
|
-
let nextRunAt: string | null = null;
|
|
114
|
-
let enabled = true;
|
|
115
|
-
|
|
116
|
-
// Calculate next run time based on schedule type
|
|
117
|
-
const completedDate = new Date(completedAt);
|
|
118
|
-
switch (schedule.schedule_type) {
|
|
119
|
-
case 'once':
|
|
120
|
-
enabled = false;
|
|
121
|
-
break;
|
|
122
|
-
case 'daily':
|
|
123
|
-
completedDate.setDate(completedDate.getDate() + 1);
|
|
124
|
-
nextRunAt = completedDate.toISOString();
|
|
125
|
-
break;
|
|
126
|
-
case 'weekly':
|
|
127
|
-
completedDate.setDate(completedDate.getDate() + 7);
|
|
128
|
-
nextRunAt = completedDate.toISOString();
|
|
129
|
-
break;
|
|
130
|
-
case 'monthly':
|
|
131
|
-
completedDate.setDate(completedDate.getDate() + 30);
|
|
132
|
-
nextRunAt = completedDate.toISOString();
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
await supabase
|
|
137
|
-
.from('background_activity_schedules')
|
|
138
|
-
.update({ next_run_at: nextRunAt, enabled })
|
|
139
|
-
.eq('id', schedule.id);
|
|
140
|
-
}
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
throw new Error(`Failed to stop fallback activity: ${response.error}`);
|
|
141
79
|
}
|
|
142
80
|
|
|
143
|
-
// Clear the current session's fallback activity
|
|
144
|
-
const { error: updateError } = await supabase
|
|
145
|
-
.from('agent_sessions')
|
|
146
|
-
.update({
|
|
147
|
-
current_fallback_activity: null,
|
|
148
|
-
status: 'idle',
|
|
149
|
-
last_synced_at: new Date().toISOString(),
|
|
150
|
-
})
|
|
151
|
-
.eq('id', currentSessionId);
|
|
152
|
-
|
|
153
|
-
if (updateError) throw updateError;
|
|
154
|
-
|
|
155
81
|
return {
|
|
156
82
|
result: {
|
|
157
83
|
success: true,
|
|
158
|
-
message:
|
|
159
|
-
? `Fallback activity '${activityType}' completed and logged to history`
|
|
160
|
-
: 'Fallback activity stopped',
|
|
84
|
+
message: 'Fallback activity stopped',
|
|
161
85
|
},
|
|
162
86
|
};
|
|
163
87
|
};
|
|
@@ -172,48 +96,33 @@ export const getActivityHistory: Handler = async (args, ctx) => {
|
|
|
172
96
|
validateRequired(project_id, 'project_id');
|
|
173
97
|
validateUUID(project_id, 'project_id');
|
|
174
98
|
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
.
|
|
195
|
-
|
|
196
|
-
if (activity_type) {
|
|
197
|
-
query = query.eq('activity_type', activity_type);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const { data: history, error } = await query;
|
|
201
|
-
|
|
202
|
-
if (error) throw error;
|
|
203
|
-
|
|
204
|
-
// Also get the most recent completion for each activity type
|
|
205
|
-
const latestByType: Record<string, unknown> = {};
|
|
206
|
-
for (const entry of history || []) {
|
|
207
|
-
if (!latestByType[entry.activity_type]) {
|
|
208
|
-
latestByType[entry.activity_type] = entry;
|
|
209
|
-
}
|
|
99
|
+
const apiClient = getApiClient();
|
|
100
|
+
|
|
101
|
+
// Use proxy for get_activity_history operation
|
|
102
|
+
const response = await apiClient.proxy<{
|
|
103
|
+
history: Array<{
|
|
104
|
+
id: string;
|
|
105
|
+
activity_type: string;
|
|
106
|
+
completed_at: string;
|
|
107
|
+
summary?: string;
|
|
108
|
+
}>;
|
|
109
|
+
latest_by_type?: Record<string, unknown>;
|
|
110
|
+
count: number;
|
|
111
|
+
}>('get_activity_history', {
|
|
112
|
+
project_id,
|
|
113
|
+
activity_type,
|
|
114
|
+
limit
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
throw new Error(`Failed to get activity history: ${response.error}`);
|
|
210
119
|
}
|
|
211
120
|
|
|
212
121
|
return {
|
|
213
122
|
result: {
|
|
214
|
-
history: history || [],
|
|
215
|
-
latest_by_type:
|
|
216
|
-
count:
|
|
123
|
+
history: response.data?.history || [],
|
|
124
|
+
latest_by_type: response.data?.latest_by_type || {},
|
|
125
|
+
count: response.data?.count || 0,
|
|
217
126
|
},
|
|
218
127
|
};
|
|
219
128
|
};
|
|
@@ -224,27 +133,32 @@ export const getActivitySchedules: Handler = async (args, ctx) => {
|
|
|
224
133
|
validateRequired(project_id, 'project_id');
|
|
225
134
|
validateUUID(project_id, 'project_id');
|
|
226
135
|
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
136
|
+
const apiClient = getApiClient();
|
|
137
|
+
|
|
138
|
+
// Use proxy for get_activity_schedules operation
|
|
139
|
+
const response = await apiClient.proxy<{
|
|
140
|
+
schedules: Array<{
|
|
141
|
+
id: string;
|
|
142
|
+
activity_type: string;
|
|
143
|
+
schedule_type: string;
|
|
144
|
+
next_run_at?: string;
|
|
145
|
+
enabled: boolean;
|
|
146
|
+
}>;
|
|
147
|
+
due_activities: string[];
|
|
148
|
+
count: number;
|
|
149
|
+
}>('get_activity_schedules', {
|
|
150
|
+
project_id
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
throw new Error(`Failed to get activity schedules: ${response.error}`);
|
|
155
|
+
}
|
|
242
156
|
|
|
243
157
|
return {
|
|
244
158
|
result: {
|
|
245
|
-
schedules: schedules || [],
|
|
246
|
-
due_activities:
|
|
247
|
-
count:
|
|
159
|
+
schedules: response.data?.schedules || [],
|
|
160
|
+
due_activities: response.data?.due_activities || [],
|
|
161
|
+
count: response.data?.count || 0,
|
|
248
162
|
},
|
|
249
163
|
};
|
|
250
164
|
};
|