@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
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Issues Handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles git issue management:
|
|
5
|
+
* - add_git_issue: Record a git-related issue (conflicts, push failures, etc.)
|
|
6
|
+
* - resolve_git_issue: Mark a git issue as resolved
|
|
7
|
+
* - get_git_issues: List git issues for a project
|
|
8
|
+
* - delete_git_issue: Remove a git issue
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { Handler, HandlerRegistry } from './types.js';
|
|
12
|
+
import { validateRequired, validateUUID } from '../validators.js';
|
|
13
|
+
import { getApiClient } from '../api-client.js';
|
|
14
|
+
|
|
15
|
+
const VALID_GIT_ISSUE_TYPES = [
|
|
16
|
+
'merge_conflict',
|
|
17
|
+
'push_failed',
|
|
18
|
+
'rebase_needed',
|
|
19
|
+
'branch_diverged',
|
|
20
|
+
'pr_not_mergeable',
|
|
21
|
+
] as const;
|
|
22
|
+
|
|
23
|
+
const VALID_GIT_ISSUE_STATUSES = ['open', 'resolved'] as const;
|
|
24
|
+
|
|
25
|
+
type GitIssueType = (typeof VALID_GIT_ISSUE_TYPES)[number];
|
|
26
|
+
type GitIssueStatus = (typeof VALID_GIT_ISSUE_STATUSES)[number];
|
|
27
|
+
|
|
28
|
+
export const addGitIssue: Handler = async (args, ctx) => {
|
|
29
|
+
const {
|
|
30
|
+
project_id,
|
|
31
|
+
issue_type,
|
|
32
|
+
branch,
|
|
33
|
+
target_branch,
|
|
34
|
+
pr_url,
|
|
35
|
+
conflicting_files,
|
|
36
|
+
error_message,
|
|
37
|
+
task_id,
|
|
38
|
+
} = args as {
|
|
39
|
+
project_id: string;
|
|
40
|
+
issue_type: string;
|
|
41
|
+
branch: string;
|
|
42
|
+
target_branch?: string;
|
|
43
|
+
pr_url?: string;
|
|
44
|
+
conflicting_files?: string[];
|
|
45
|
+
error_message?: string;
|
|
46
|
+
task_id?: string;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
validateRequired(project_id, 'project_id');
|
|
50
|
+
validateUUID(project_id, 'project_id');
|
|
51
|
+
validateRequired(issue_type, 'issue_type');
|
|
52
|
+
validateRequired(branch, 'branch');
|
|
53
|
+
|
|
54
|
+
if (!VALID_GIT_ISSUE_TYPES.includes(issue_type as GitIssueType)) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`Invalid issue_type. Valid types: ${VALID_GIT_ISSUE_TYPES.join(', ')}`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (task_id) {
|
|
61
|
+
validateUUID(task_id, 'task_id');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const apiClient = getApiClient();
|
|
65
|
+
const response = await apiClient.addGitIssue(project_id, {
|
|
66
|
+
issue_type: issue_type as GitIssueType,
|
|
67
|
+
branch,
|
|
68
|
+
target_branch,
|
|
69
|
+
pr_url,
|
|
70
|
+
conflicting_files,
|
|
71
|
+
error_message,
|
|
72
|
+
task_id
|
|
73
|
+
}, ctx.session.currentSessionId || undefined);
|
|
74
|
+
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
throw new Error(response.error || 'Failed to add git issue');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return { result: response.data };
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const resolveGitIssue: Handler = async (args, ctx) => {
|
|
83
|
+
const { git_issue_id, resolution_note, auto_resolved } = args as {
|
|
84
|
+
git_issue_id: string;
|
|
85
|
+
resolution_note?: string;
|
|
86
|
+
auto_resolved?: boolean;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
validateRequired(git_issue_id, 'git_issue_id');
|
|
90
|
+
validateUUID(git_issue_id, 'git_issue_id');
|
|
91
|
+
|
|
92
|
+
const apiClient = getApiClient();
|
|
93
|
+
const response = await apiClient.resolveGitIssue(git_issue_id, {
|
|
94
|
+
resolution_note,
|
|
95
|
+
auto_resolved
|
|
96
|
+
}, ctx.session.currentSessionId || undefined);
|
|
97
|
+
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
throw new Error(response.error || 'Failed to resolve git issue');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return { result: response.data };
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const getGitIssues: Handler = async (args, ctx) => {
|
|
106
|
+
const {
|
|
107
|
+
project_id,
|
|
108
|
+
status = 'open',
|
|
109
|
+
issue_type,
|
|
110
|
+
branch,
|
|
111
|
+
limit = 50,
|
|
112
|
+
} = args as {
|
|
113
|
+
project_id: string;
|
|
114
|
+
status?: string;
|
|
115
|
+
issue_type?: string;
|
|
116
|
+
branch?: string;
|
|
117
|
+
limit?: number;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
validateRequired(project_id, 'project_id');
|
|
121
|
+
validateUUID(project_id, 'project_id');
|
|
122
|
+
|
|
123
|
+
if (status && !VALID_GIT_ISSUE_STATUSES.includes(status as GitIssueStatus)) {
|
|
124
|
+
throw new Error(
|
|
125
|
+
`Invalid status. Valid statuses: ${VALID_GIT_ISSUE_STATUSES.join(', ')}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (issue_type && !VALID_GIT_ISSUE_TYPES.includes(issue_type as GitIssueType)) {
|
|
130
|
+
throw new Error(
|
|
131
|
+
`Invalid issue_type. Valid types: ${VALID_GIT_ISSUE_TYPES.join(', ')}`
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const apiClient = getApiClient();
|
|
136
|
+
const response = await apiClient.getGitIssues(project_id, {
|
|
137
|
+
status,
|
|
138
|
+
issue_type,
|
|
139
|
+
branch,
|
|
140
|
+
limit
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
throw new Error(response.error || 'Failed to fetch git issues');
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { result: response.data };
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const deleteGitIssue: Handler = async (args, ctx) => {
|
|
151
|
+
const { git_issue_id } = args as { git_issue_id: string };
|
|
152
|
+
|
|
153
|
+
validateRequired(git_issue_id, 'git_issue_id');
|
|
154
|
+
validateUUID(git_issue_id, 'git_issue_id');
|
|
155
|
+
|
|
156
|
+
const apiClient = getApiClient();
|
|
157
|
+
const response = await apiClient.deleteGitIssue(git_issue_id);
|
|
158
|
+
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
throw new Error(response.error || 'Failed to delete git issue');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return { result: response.data };
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Git Issues handlers registry
|
|
168
|
+
*/
|
|
169
|
+
export const gitIssueHandlers: HandlerRegistry = {
|
|
170
|
+
add_git_issue: addGitIssue,
|
|
171
|
+
resolve_git_issue: resolveGitIssue,
|
|
172
|
+
get_git_issues: getGitIssues,
|
|
173
|
+
delete_git_issue: deleteGitIssue,
|
|
174
|
+
};
|