@vibescope/mcp-server 0.2.3 → 0.2.5
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/CHANGELOG.md +84 -0
- package/README.md +194 -138
- package/dist/api-client.d.ts +276 -8
- package/dist/api-client.js +123 -8
- package/dist/cli.d.ts +6 -3
- package/dist/cli.js +28 -10
- package/dist/handlers/blockers.d.ts +11 -0
- package/dist/handlers/blockers.js +37 -2
- package/dist/handlers/bodies-of-work.d.ts +2 -0
- package/dist/handlers/bodies-of-work.js +30 -1
- package/dist/handlers/connectors.js +2 -2
- package/dist/handlers/decisions.d.ts +11 -0
- package/dist/handlers/decisions.js +37 -2
- package/dist/handlers/deployment.d.ts +6 -0
- package/dist/handlers/deployment.js +33 -5
- package/dist/handlers/discovery.js +27 -11
- package/dist/handlers/fallback.js +12 -6
- package/dist/handlers/file-checkouts.d.ts +1 -0
- package/dist/handlers/file-checkouts.js +17 -2
- package/dist/handlers/findings.d.ts +5 -0
- package/dist/handlers/findings.js +19 -2
- package/dist/handlers/git-issues.js +4 -2
- package/dist/handlers/ideas.d.ts +5 -0
- package/dist/handlers/ideas.js +19 -2
- package/dist/handlers/progress.js +2 -2
- package/dist/handlers/project.d.ts +1 -0
- package/dist/handlers/project.js +35 -2
- package/dist/handlers/requests.js +6 -3
- package/dist/handlers/roles.js +13 -2
- package/dist/handlers/session.d.ts +12 -0
- package/dist/handlers/session.js +288 -25
- package/dist/handlers/sprints.d.ts +2 -0
- package/dist/handlers/sprints.js +30 -1
- package/dist/handlers/tasks.d.ts +25 -2
- package/dist/handlers/tasks.js +228 -35
- package/dist/handlers/tool-docs.js +834 -767
- package/dist/index.js +73 -73
- package/dist/knowledge.d.ts +6 -0
- package/dist/knowledge.js +218 -0
- package/dist/setup.d.ts +22 -0
- package/dist/setup.js +313 -0
- package/dist/templates/agent-guidelines.d.ts +18 -0
- package/dist/templates/agent-guidelines.js +207 -0
- package/dist/tools.js +527 -174
- package/dist/utils.d.ts +5 -2
- package/dist/utils.js +101 -62
- package/docs/TOOLS.md +2053 -2053
- package/package.json +51 -46
- package/scripts/generate-docs.ts +212 -212
- package/scripts/version-bump.ts +203 -0
- package/src/api-client.test.ts +723 -723
- package/src/api-client.ts +2499 -2140
- package/src/cli.ts +27 -10
- package/src/handlers/__test-setup__.ts +236 -231
- package/src/handlers/__test-utils__.ts +87 -87
- package/src/handlers/blockers.test.ts +468 -392
- package/src/handlers/blockers.ts +163 -109
- package/src/handlers/bodies-of-work.test.ts +704 -704
- package/src/handlers/bodies-of-work.ts +526 -468
- package/src/handlers/connectors.test.ts +834 -834
- package/src/handlers/connectors.ts +229 -229
- package/src/handlers/cost.test.ts +462 -462
- package/src/handlers/cost.ts +285 -285
- package/src/handlers/decisions.test.ts +382 -313
- package/src/handlers/decisions.ts +153 -99
- package/src/handlers/deployment.test.ts +551 -470
- package/src/handlers/deployment.ts +541 -508
- package/src/handlers/discovery.test.ts +206 -206
- package/src/handlers/discovery.ts +390 -374
- package/src/handlers/fallback.test.ts +537 -536
- package/src/handlers/fallback.ts +194 -188
- package/src/handlers/file-checkouts.test.ts +750 -670
- package/src/handlers/file-checkouts.ts +185 -165
- package/src/handlers/findings.test.ts +633 -633
- package/src/handlers/findings.ts +239 -203
- package/src/handlers/git-issues.test.ts +631 -631
- package/src/handlers/git-issues.ts +136 -134
- package/src/handlers/ideas.test.ts +644 -644
- package/src/handlers/ideas.ts +207 -175
- package/src/handlers/index.ts +84 -84
- package/src/handlers/milestones.test.ts +475 -475
- package/src/handlers/milestones.ts +180 -180
- package/src/handlers/organizations.test.ts +826 -826
- package/src/handlers/organizations.ts +315 -315
- package/src/handlers/progress.test.ts +269 -269
- package/src/handlers/progress.ts +77 -77
- package/src/handlers/project.test.ts +546 -546
- package/src/handlers/project.ts +239 -194
- package/src/handlers/requests.test.ts +303 -272
- package/src/handlers/requests.ts +99 -96
- package/src/handlers/roles.test.ts +303 -303
- package/src/handlers/roles.ts +226 -208
- package/src/handlers/session.test.ts +875 -576
- package/src/handlers/session.ts +738 -425
- package/src/handlers/sprints.test.ts +732 -732
- package/src/handlers/sprints.ts +537 -477
- package/src/handlers/tasks.test.ts +907 -980
- package/src/handlers/tasks.ts +945 -716
- package/src/handlers/tool-categories.test.ts +66 -66
- package/src/handlers/tool-docs.ts +1096 -1024
- package/src/handlers/types.test.ts +259 -0
- package/src/handlers/types.ts +175 -175
- package/src/handlers/validation.test.ts +582 -582
- package/src/handlers/validation.ts +97 -97
- package/src/index.ts +792 -792
- package/src/setup.test.ts +231 -0
- package/src/setup.ts +370 -0
- package/src/templates/agent-guidelines.ts +210 -0
- package/src/token-tracking.test.ts +453 -453
- package/src/token-tracking.ts +164 -164
- package/src/tools.ts +3562 -3208
- package/src/utils.test.ts +683 -681
- package/src/utils.ts +436 -392
- package/src/validators.test.ts +223 -223
- package/src/validators.ts +249 -249
- package/tsconfig.json +16 -16
- package/vitest.config.ts +14 -14
package/src/handlers/ideas.ts
CHANGED
|
@@ -1,175 +1,207 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ideas Handlers
|
|
3
|
-
*
|
|
4
|
-
* Handles feature ideas tracking:
|
|
5
|
-
* - add_idea
|
|
6
|
-
* - update_idea
|
|
7
|
-
* - get_ideas
|
|
8
|
-
* - delete_idea
|
|
9
|
-
* - convert_idea_to_task
|
|
10
|
-
*
|
|
11
|
-
* MIGRATED: Uses Vibescope API client instead of direct Supabase
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import type { Handler, HandlerRegistry } from './types.js';
|
|
15
|
-
import {
|
|
16
|
-
parseArgs,
|
|
17
|
-
uuidValidator,
|
|
18
|
-
priorityValidator,
|
|
19
|
-
minutesValidator,
|
|
20
|
-
createEnumValidator,
|
|
21
|
-
} from '../validators.js';
|
|
22
|
-
import { getApiClient } from '../api-client.js';
|
|
23
|
-
|
|
24
|
-
const VALID_IDEA_STATUSES = ['raw', 'exploring', 'planned', 'in_development', 'shipped'] as const;
|
|
25
|
-
type IdeaStatus = typeof VALID_IDEA_STATUSES[number];
|
|
26
|
-
|
|
27
|
-
// Argument schemas for type-safe parsing
|
|
28
|
-
const addIdeaSchema = {
|
|
29
|
-
project_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
30
|
-
title: { type: 'string' as const, required: true as const },
|
|
31
|
-
description: { type: 'string' as const },
|
|
32
|
-
status: { type: 'string' as const, validate: createEnumValidator(VALID_IDEA_STATUSES) },
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const updateIdeaSchema = {
|
|
36
|
-
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
37
|
-
title: { type: 'string' as const },
|
|
38
|
-
description: { type: 'string' as const },
|
|
39
|
-
status: { type: 'string' as const, validate: createEnumValidator(VALID_IDEA_STATUSES) },
|
|
40
|
-
doc_url: { type: 'string' as const },
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Ideas Handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles feature ideas tracking:
|
|
5
|
+
* - add_idea
|
|
6
|
+
* - update_idea
|
|
7
|
+
* - get_ideas
|
|
8
|
+
* - delete_idea
|
|
9
|
+
* - convert_idea_to_task
|
|
10
|
+
*
|
|
11
|
+
* MIGRATED: Uses Vibescope API client instead of direct Supabase
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { Handler, HandlerRegistry } from './types.js';
|
|
15
|
+
import {
|
|
16
|
+
parseArgs,
|
|
17
|
+
uuidValidator,
|
|
18
|
+
priorityValidator,
|
|
19
|
+
minutesValidator,
|
|
20
|
+
createEnumValidator,
|
|
21
|
+
} from '../validators.js';
|
|
22
|
+
import { getApiClient } from '../api-client.js';
|
|
23
|
+
|
|
24
|
+
const VALID_IDEA_STATUSES = ['raw', 'exploring', 'planned', 'in_development', 'shipped'] as const;
|
|
25
|
+
type IdeaStatus = typeof VALID_IDEA_STATUSES[number];
|
|
26
|
+
|
|
27
|
+
// Argument schemas for type-safe parsing
|
|
28
|
+
const addIdeaSchema = {
|
|
29
|
+
project_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
30
|
+
title: { type: 'string' as const, required: true as const },
|
|
31
|
+
description: { type: 'string' as const },
|
|
32
|
+
status: { type: 'string' as const, validate: createEnumValidator(VALID_IDEA_STATUSES) },
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const updateIdeaSchema = {
|
|
36
|
+
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
37
|
+
title: { type: 'string' as const },
|
|
38
|
+
description: { type: 'string' as const },
|
|
39
|
+
status: { type: 'string' as const, validate: createEnumValidator(VALID_IDEA_STATUSES) },
|
|
40
|
+
doc_url: { type: 'string' as const },
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const getIdeaSchema = {
|
|
44
|
+
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const getIdeasSchema = {
|
|
48
|
+
project_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
49
|
+
status: { type: 'string' as const, validate: createEnumValidator(VALID_IDEA_STATUSES) },
|
|
50
|
+
limit: { type: 'number' as const, default: 10 },
|
|
51
|
+
offset: { type: 'number' as const, default: 0 },
|
|
52
|
+
search_query: { type: 'string' as const },
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const deleteIdeaSchema = {
|
|
56
|
+
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const convertIdeaToTaskSchema = {
|
|
60
|
+
idea_id: { type: 'string' as const, required: true as const, validate: uuidValidator },
|
|
61
|
+
priority: { type: 'number' as const, default: 3, validate: priorityValidator },
|
|
62
|
+
estimated_minutes: { type: 'number' as const, validate: minutesValidator },
|
|
63
|
+
update_status: { type: 'boolean' as const, default: true },
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const addIdea: Handler = async (args, ctx) => {
|
|
67
|
+
const { project_id, title, description, status } = parseArgs(args, addIdeaSchema);
|
|
68
|
+
|
|
69
|
+
const { session } = ctx;
|
|
70
|
+
const apiClient = getApiClient();
|
|
71
|
+
|
|
72
|
+
const response = await apiClient.addIdea(project_id, {
|
|
73
|
+
title,
|
|
74
|
+
description,
|
|
75
|
+
status: status as IdeaStatus | undefined
|
|
76
|
+
}, session.currentSessionId || undefined);
|
|
77
|
+
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
return { result: { error: response.error || 'Failed to add idea' }, isError: true };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return { result: { success: true, idea_id: response.data?.idea_id, title } };
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const updateIdea: Handler = async (args, _ctx) => {
|
|
86
|
+
const { idea_id, title, description, status, doc_url } = parseArgs(args, updateIdeaSchema);
|
|
87
|
+
|
|
88
|
+
const apiClient = getApiClient();
|
|
89
|
+
|
|
90
|
+
const response = await apiClient.updateIdea(idea_id, {
|
|
91
|
+
title,
|
|
92
|
+
description,
|
|
93
|
+
status: status as IdeaStatus | undefined,
|
|
94
|
+
doc_url
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
return { result: { error: response.error || 'Failed to update idea' }, isError: true };
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return { result: { success: true, idea_id } };
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Get a single idea by ID.
|
|
106
|
+
* More token-efficient than get_ideas when you need details for a specific idea.
|
|
107
|
+
*/
|
|
108
|
+
export const getIdea: Handler = async (args, _ctx) => {
|
|
109
|
+
const { idea_id } = parseArgs(args, getIdeaSchema);
|
|
110
|
+
|
|
111
|
+
const apiClient = getApiClient();
|
|
112
|
+
const response = await apiClient.proxy<{
|
|
113
|
+
idea: {
|
|
114
|
+
id: string;
|
|
115
|
+
title: string;
|
|
116
|
+
description?: string;
|
|
117
|
+
status: string;
|
|
118
|
+
doc_url?: string;
|
|
119
|
+
created_at: string;
|
|
120
|
+
updated_at: string;
|
|
121
|
+
};
|
|
122
|
+
}>('get_idea', { idea_id });
|
|
123
|
+
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
return { result: { error: response.error || 'Failed to get idea' }, isError: true };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return { result: response.data };
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export const getIdeas: Handler = async (args, _ctx) => {
|
|
132
|
+
const { project_id, status, limit, offset, search_query } = parseArgs(args, getIdeasSchema);
|
|
133
|
+
|
|
134
|
+
const apiClient = getApiClient();
|
|
135
|
+
|
|
136
|
+
const response = await apiClient.getIdeas(project_id, {
|
|
137
|
+
status: status as IdeaStatus | undefined,
|
|
138
|
+
limit: Math.min(limit ?? 10, 100),
|
|
139
|
+
offset,
|
|
140
|
+
search_query
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
return { result: { error: response.error || 'Failed to fetch ideas' }, isError: true };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return {
|
|
148
|
+
result: {
|
|
149
|
+
ideas: response.data?.ideas || [],
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export const deleteIdea: Handler = async (args, _ctx) => {
|
|
155
|
+
const { idea_id } = parseArgs(args, deleteIdeaSchema);
|
|
156
|
+
|
|
157
|
+
const apiClient = getApiClient();
|
|
158
|
+
|
|
159
|
+
const response = await apiClient.deleteIdea(idea_id);
|
|
160
|
+
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
return { result: { error: response.error || 'Failed to delete idea' }, isError: true };
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return { result: { success: true } };
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export const convertIdeaToTask: Handler = async (args, _ctx) => {
|
|
169
|
+
const { idea_id, priority, estimated_minutes, update_status } = parseArgs(args, convertIdeaToTaskSchema);
|
|
170
|
+
|
|
171
|
+
const apiClient = getApiClient();
|
|
172
|
+
|
|
173
|
+
// Use proxy for convert_idea_to_task operation
|
|
174
|
+
const response = await apiClient.proxy<{
|
|
175
|
+
success: boolean;
|
|
176
|
+
task_id?: string;
|
|
177
|
+
task_title?: string;
|
|
178
|
+
idea_id?: string;
|
|
179
|
+
idea_status?: string;
|
|
180
|
+
message?: string;
|
|
181
|
+
error?: string;
|
|
182
|
+
existing_task_id?: string;
|
|
183
|
+
}>('convert_idea_to_task', {
|
|
184
|
+
idea_id,
|
|
185
|
+
priority,
|
|
186
|
+
estimated_minutes,
|
|
187
|
+
update_status
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
if (!response.ok) {
|
|
191
|
+
return { result: { error: response.error || 'Failed to convert idea' }, isError: true };
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return { result: response.data };
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Ideas handlers registry
|
|
199
|
+
*/
|
|
200
|
+
export const ideaHandlers: HandlerRegistry = {
|
|
201
|
+
add_idea: addIdea,
|
|
202
|
+
update_idea: updateIdea,
|
|
203
|
+
get_idea: getIdea,
|
|
204
|
+
get_ideas: getIdeas,
|
|
205
|
+
delete_idea: deleteIdea,
|
|
206
|
+
convert_idea_to_task: convertIdeaToTask,
|
|
207
|
+
};
|
package/src/handlers/index.ts
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Handlers
|
|
3
|
-
*
|
|
4
|
-
* This module exports all tool handlers organized by category.
|
|
5
|
-
* Each handler receives a HandlerContext and returns a HandlerResult.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export * from './types.js';
|
|
9
|
-
export * from './milestones.js';
|
|
10
|
-
export * from './session.js';
|
|
11
|
-
export * from './ideas.js';
|
|
12
|
-
export * from './findings.js';
|
|
13
|
-
export * from './blockers.js';
|
|
14
|
-
export * from './decisions.js';
|
|
15
|
-
export * from './progress.js';
|
|
16
|
-
export * from './requests.js';
|
|
17
|
-
export * from './tasks.js';
|
|
18
|
-
export * from './project.js';
|
|
19
|
-
export * from './deployment.js';
|
|
20
|
-
export * from './validation.js';
|
|
21
|
-
export * from './fallback.js';
|
|
22
|
-
export * from './bodies-of-work.js';
|
|
23
|
-
export * from './discovery.js';
|
|
24
|
-
export * from './organizations.js';
|
|
25
|
-
export * from './cost.js';
|
|
26
|
-
export * from './git-issues.js';
|
|
27
|
-
export * from './sprints.js';
|
|
28
|
-
export * from './file-checkouts.js';
|
|
29
|
-
export * from './roles.js';
|
|
30
|
-
export * from './connectors.js';
|
|
31
|
-
|
|
32
|
-
import type { HandlerRegistry } from './types.js';
|
|
33
|
-
import { milestoneHandlers } from './milestones.js';
|
|
34
|
-
import { sessionHandlers } from './session.js';
|
|
35
|
-
import { ideaHandlers } from './ideas.js';
|
|
36
|
-
import { findingHandlers } from './findings.js';
|
|
37
|
-
import { blockerHandlers } from './blockers.js';
|
|
38
|
-
import { decisionHandlers } from './decisions.js';
|
|
39
|
-
import { progressHandlers } from './progress.js';
|
|
40
|
-
import { requestHandlers } from './requests.js';
|
|
41
|
-
import { taskHandlers } from './tasks.js';
|
|
42
|
-
import { projectHandlers } from './project.js';
|
|
43
|
-
import { deploymentHandlers } from './deployment.js';
|
|
44
|
-
import { validationHandlers } from './validation.js';
|
|
45
|
-
import { fallbackHandlers } from './fallback.js';
|
|
46
|
-
import { bodiesOfWorkHandlers } from './bodies-of-work.js';
|
|
47
|
-
import { discoveryHandlers } from './discovery.js';
|
|
48
|
-
import { organizationHandlers } from './organizations.js';
|
|
49
|
-
import { costHandlers } from './cost.js';
|
|
50
|
-
import { gitIssueHandlers } from './git-issues.js';
|
|
51
|
-
import { sprintHandlers } from './sprints.js';
|
|
52
|
-
import { fileCheckoutHandlers } from './file-checkouts.js';
|
|
53
|
-
import { roleHandlers } from './roles.js';
|
|
54
|
-
import { connectorHandlers } from './connectors.js';
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Build the complete handler registry from all modules
|
|
58
|
-
*/
|
|
59
|
-
export function buildHandlerRegistry(): HandlerRegistry {
|
|
60
|
-
return {
|
|
61
|
-
...milestoneHandlers,
|
|
62
|
-
...sessionHandlers,
|
|
63
|
-
...ideaHandlers,
|
|
64
|
-
...findingHandlers,
|
|
65
|
-
...blockerHandlers,
|
|
66
|
-
...decisionHandlers,
|
|
67
|
-
...progressHandlers,
|
|
68
|
-
...requestHandlers,
|
|
69
|
-
...taskHandlers,
|
|
70
|
-
...projectHandlers,
|
|
71
|
-
...deploymentHandlers,
|
|
72
|
-
...validationHandlers,
|
|
73
|
-
...fallbackHandlers,
|
|
74
|
-
...bodiesOfWorkHandlers,
|
|
75
|
-
...discoveryHandlers,
|
|
76
|
-
...organizationHandlers,
|
|
77
|
-
...costHandlers,
|
|
78
|
-
...gitIssueHandlers,
|
|
79
|
-
...sprintHandlers,
|
|
80
|
-
...fileCheckoutHandlers,
|
|
81
|
-
...roleHandlers,
|
|
82
|
-
...connectorHandlers,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Handlers
|
|
3
|
+
*
|
|
4
|
+
* This module exports all tool handlers organized by category.
|
|
5
|
+
* Each handler receives a HandlerContext and returns a HandlerResult.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export * from './milestones.js';
|
|
10
|
+
export * from './session.js';
|
|
11
|
+
export * from './ideas.js';
|
|
12
|
+
export * from './findings.js';
|
|
13
|
+
export * from './blockers.js';
|
|
14
|
+
export * from './decisions.js';
|
|
15
|
+
export * from './progress.js';
|
|
16
|
+
export * from './requests.js';
|
|
17
|
+
export * from './tasks.js';
|
|
18
|
+
export * from './project.js';
|
|
19
|
+
export * from './deployment.js';
|
|
20
|
+
export * from './validation.js';
|
|
21
|
+
export * from './fallback.js';
|
|
22
|
+
export * from './bodies-of-work.js';
|
|
23
|
+
export * from './discovery.js';
|
|
24
|
+
export * from './organizations.js';
|
|
25
|
+
export * from './cost.js';
|
|
26
|
+
export * from './git-issues.js';
|
|
27
|
+
export * from './sprints.js';
|
|
28
|
+
export * from './file-checkouts.js';
|
|
29
|
+
export * from './roles.js';
|
|
30
|
+
export * from './connectors.js';
|
|
31
|
+
|
|
32
|
+
import type { HandlerRegistry } from './types.js';
|
|
33
|
+
import { milestoneHandlers } from './milestones.js';
|
|
34
|
+
import { sessionHandlers } from './session.js';
|
|
35
|
+
import { ideaHandlers } from './ideas.js';
|
|
36
|
+
import { findingHandlers } from './findings.js';
|
|
37
|
+
import { blockerHandlers } from './blockers.js';
|
|
38
|
+
import { decisionHandlers } from './decisions.js';
|
|
39
|
+
import { progressHandlers } from './progress.js';
|
|
40
|
+
import { requestHandlers } from './requests.js';
|
|
41
|
+
import { taskHandlers } from './tasks.js';
|
|
42
|
+
import { projectHandlers } from './project.js';
|
|
43
|
+
import { deploymentHandlers } from './deployment.js';
|
|
44
|
+
import { validationHandlers } from './validation.js';
|
|
45
|
+
import { fallbackHandlers } from './fallback.js';
|
|
46
|
+
import { bodiesOfWorkHandlers } from './bodies-of-work.js';
|
|
47
|
+
import { discoveryHandlers } from './discovery.js';
|
|
48
|
+
import { organizationHandlers } from './organizations.js';
|
|
49
|
+
import { costHandlers } from './cost.js';
|
|
50
|
+
import { gitIssueHandlers } from './git-issues.js';
|
|
51
|
+
import { sprintHandlers } from './sprints.js';
|
|
52
|
+
import { fileCheckoutHandlers } from './file-checkouts.js';
|
|
53
|
+
import { roleHandlers } from './roles.js';
|
|
54
|
+
import { connectorHandlers } from './connectors.js';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Build the complete handler registry from all modules
|
|
58
|
+
*/
|
|
59
|
+
export function buildHandlerRegistry(): HandlerRegistry {
|
|
60
|
+
return {
|
|
61
|
+
...milestoneHandlers,
|
|
62
|
+
...sessionHandlers,
|
|
63
|
+
...ideaHandlers,
|
|
64
|
+
...findingHandlers,
|
|
65
|
+
...blockerHandlers,
|
|
66
|
+
...decisionHandlers,
|
|
67
|
+
...progressHandlers,
|
|
68
|
+
...requestHandlers,
|
|
69
|
+
...taskHandlers,
|
|
70
|
+
...projectHandlers,
|
|
71
|
+
...deploymentHandlers,
|
|
72
|
+
...validationHandlers,
|
|
73
|
+
...fallbackHandlers,
|
|
74
|
+
...bodiesOfWorkHandlers,
|
|
75
|
+
...discoveryHandlers,
|
|
76
|
+
...organizationHandlers,
|
|
77
|
+
...costHandlers,
|
|
78
|
+
...gitIssueHandlers,
|
|
79
|
+
...sprintHandlers,
|
|
80
|
+
...fileCheckoutHandlers,
|
|
81
|
+
...roleHandlers,
|
|
82
|
+
...connectorHandlers,
|
|
83
|
+
};
|
|
84
|
+
}
|