Skip to content

Commit eb8b5a2

Browse files
author
延枚
committed
优化index.ts文件结构
1 parent d005525 commit eb8b5a2

15 files changed

+1677
-1545
lines changed

index.ts

Lines changed: 13 additions & 1545 deletions
Large diffs are not rendered by default.

tool-handlers/code-management.ts

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
import * as branches from '../operations/codeup/branches.js';
2+
import * as files from '../operations/codeup/files.js';
3+
import * as repositories from '../operations/codeup/repositories.js';
4+
import * as changeRequests from '../operations/codeup/changeRequests.js';
5+
import * as changeRequestComments from '../operations/codeup/changeRequestComments.js';
6+
import * as compare from '../operations/codeup/compare.js';
7+
import * as types from '../common/types.js';
8+
import { z } from 'zod';
9+
10+
export const handleCodeManagementTools = async (request: any) => {
11+
switch (request.params.name) {
12+
// Branch Operations
13+
case "create_branch": {
14+
const args = types.CreateBranchSchema.parse(request.params.arguments);
15+
const branch = await branches.createBranchFunc(
16+
args.organizationId,
17+
args.repositoryId,
18+
args.branch,
19+
args.ref
20+
);
21+
return {
22+
content: [{ type: "text", text: JSON.stringify(branch, null, 2) }],
23+
};
24+
}
25+
26+
case "get_branch": {
27+
const args = types.GetBranchSchema.parse(request.params.arguments);
28+
const branch = await branches.getBranchFunc(
29+
args.organizationId,
30+
args.repositoryId,
31+
args.branchName
32+
);
33+
return {
34+
content: [{ type: "text", text: JSON.stringify(branch, null, 2) }],
35+
};
36+
}
37+
38+
case "delete_branch": {
39+
const args = types.DeleteBranchSchema.parse(request.params.arguments);
40+
const result = await branches.deleteBranchFunc(
41+
args.organizationId,
42+
args.repositoryId,
43+
args.branchName
44+
);
45+
return {
46+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
47+
};
48+
}
49+
50+
case "list_branches": {
51+
const args = types.ListBranchesSchema.parse(request.params.arguments);
52+
const branchList = await branches.listBranchesFunc(
53+
args.organizationId,
54+
args.repositoryId,
55+
args.page,
56+
args.perPage,
57+
args.sort,
58+
args.search ?? undefined
59+
);
60+
return {
61+
content: [{ type: "text", text: JSON.stringify(branchList, null, 2) }],
62+
};
63+
}
64+
65+
// File Operations
66+
case "get_file_blobs": {
67+
const args = types.GetFileBlobsSchema.parse(request.params.arguments);
68+
const fileContent = await files.getFileBlobsFunc(
69+
args.organizationId,
70+
args.repositoryId,
71+
args.filePath,
72+
args.ref
73+
);
74+
return {
75+
content: [{ type: "text", text: JSON.stringify(fileContent, null, 2) }],
76+
};
77+
}
78+
79+
case "create_file": {
80+
const args = types.CreateFileSchema.parse(request.params.arguments);
81+
const result = await files.createFileFunc(
82+
args.organizationId,
83+
args.repositoryId,
84+
args.filePath,
85+
args.content,
86+
args.commitMessage,
87+
args.branch,
88+
args.encoding
89+
);
90+
return {
91+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
92+
};
93+
}
94+
95+
case "update_file": {
96+
const args = types.UpdateFileSchema.parse(request.params.arguments);
97+
const result = await files.updateFileFunc(
98+
args.organizationId,
99+
args.repositoryId,
100+
args.filePath,
101+
args.content,
102+
args.commitMessage,
103+
args.branch,
104+
args.encoding
105+
);
106+
return {
107+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
108+
};
109+
}
110+
111+
case "delete_file": {
112+
const args = types.DeleteFileSchema.parse(request.params.arguments);
113+
const result = await files.deleteFileFunc(
114+
args.organizationId,
115+
args.repositoryId,
116+
args.filePath,
117+
args.commitMessage,
118+
args.branch
119+
);
120+
return {
121+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
122+
};
123+
}
124+
125+
case "list_files": {
126+
const args = types.ListFilesSchema.parse(request.params.arguments);
127+
const fileList = await files.listFilesFunc(
128+
args.organizationId,
129+
args.repositoryId,
130+
args.path,
131+
args.ref,
132+
args.type
133+
);
134+
return {
135+
content: [{ type: "text", text: JSON.stringify(fileList, null, 2) }],
136+
};
137+
}
138+
139+
case "compare": {
140+
const args = types.GetCompareSchema.parse(request.params.arguments);
141+
const compareResult = await compare.getCompareFunc(
142+
args.organizationId,
143+
args.repositoryId,
144+
args.from,
145+
args.to,
146+
args.sourceType ?? undefined,
147+
args.targetType ?? undefined,
148+
args.straight ?? undefined
149+
);
150+
151+
return {
152+
content: [{ type: "text", text: JSON.stringify(compareResult, null, 2) }],
153+
};
154+
}
155+
156+
// Repository Operations
157+
case "get_repository": {
158+
const args = types.GetRepositorySchema.parse(request.params.arguments);
159+
const repository = await repositories.getRepositoryFunc(
160+
args.organizationId,
161+
args.repositoryId
162+
);
163+
return {
164+
content: [{ type: "text", text: JSON.stringify(repository, null, 2) }],
165+
};
166+
}
167+
168+
case "list_repositories": {
169+
const args = types.ListRepositoriesSchema.parse(request.params.arguments);
170+
const repositoryList = await repositories.listRepositoriesFunc(
171+
args.organizationId,
172+
args.page,
173+
args.perPage,
174+
args.orderBy,
175+
args.sort,
176+
args.search ?? undefined,
177+
args.archived
178+
);
179+
return {
180+
content: [{ type: "text", text: JSON.stringify(repositoryList, null, 2) }],
181+
};
182+
}
183+
184+
// Change Request Operations
185+
case "get_change_request": {
186+
const args = types.GetChangeRequestSchema.parse(request.params.arguments);
187+
const changeRequest = await changeRequests.getChangeRequestFunc(
188+
args.organizationId,
189+
args.repositoryId,
190+
args.localId
191+
);
192+
return {
193+
content: [{ type: "text", text: JSON.stringify(changeRequest, null, 2) }],
194+
};
195+
}
196+
197+
case "list_change_requests": {
198+
const args = types.ListChangeRequestsSchema.parse(request.params.arguments);
199+
const changeRequestList = await changeRequests.listChangeRequestsFunc(
200+
args.organizationId,
201+
args.page,
202+
args.perPage,
203+
args.projectIds ?? undefined,
204+
args.authorIds ?? undefined,
205+
args.reviewerIds ?? undefined,
206+
args.state ?? undefined,
207+
args.search ?? undefined,
208+
args.orderBy,
209+
args.sort,
210+
args.createdBefore ?? undefined,
211+
args.createdAfter ?? undefined
212+
);
213+
return {
214+
content: [{ type: "text", text: JSON.stringify(changeRequestList, null, 2) }],
215+
};
216+
}
217+
218+
case "create_change_request": {
219+
const args = types.CreateChangeRequestSchema.parse(request.params.arguments);
220+
const changeRequest = await changeRequests.createChangeRequestFunc(
221+
args.organizationId,
222+
args.repositoryId,
223+
args.title,
224+
args.sourceBranch,
225+
args.targetBranch,
226+
args.description ?? undefined,
227+
args.sourceProjectId,
228+
args.targetProjectId,
229+
args.reviewerUserIds ?? undefined,
230+
args.workItemIds ?? undefined,
231+
args.createFrom
232+
);
233+
return {
234+
content: [{ type: "text", text: JSON.stringify(changeRequest, null, 2) }],
235+
};
236+
}
237+
238+
case "create_change_request_comment": {
239+
const args = types.CreateChangeRequestCommentSchema.parse(request.params.arguments);
240+
const comment = await changeRequestComments.createChangeRequestCommentFunc(
241+
args.organizationId,
242+
args.repositoryId,
243+
args.localId,
244+
args.comment_type,
245+
args.content,
246+
args.draft,
247+
args.resolved,
248+
args.patchset_biz_id,
249+
args.file_path ?? undefined,
250+
args.line_number ?? undefined,
251+
args.from_patchset_biz_id ?? undefined,
252+
args.to_patchset_biz_id ?? undefined,
253+
args.parent_comment_biz_id ?? undefined
254+
);
255+
return {
256+
content: [{ type: "text", text: JSON.stringify(comment, null, 2) }],
257+
};
258+
}
259+
260+
case "list_change_request_comments": {
261+
const args = types.ListChangeRequestCommentsSchema.parse(request.params.arguments);
262+
const comments = await changeRequestComments.listChangeRequestCommentsFunc(
263+
args.organizationId,
264+
args.repositoryId,
265+
args.localId,
266+
args.patchSetBizIds ?? undefined,
267+
args.commentType,
268+
args.state,
269+
args.resolved,
270+
args.filePath ?? undefined
271+
);
272+
return {
273+
content: [{ type: "text", text: JSON.stringify(comments, null, 2) }],
274+
};
275+
}
276+
277+
case "list_change_request_patch_sets": {
278+
const args = types.ListChangeRequestPatchSetsSchema.parse(request.params.arguments);
279+
const patchSets = await changeRequests.listChangeRequestPatchSetsFunc(
280+
args.organizationId,
281+
args.repositoryId,
282+
args.localId
283+
);
284+
285+
return {
286+
content: [{ type: "text", text: JSON.stringify(patchSets, null, 2) }],
287+
};
288+
}
289+
290+
default:
291+
return null;
292+
}
293+
};

tool-handlers/index.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { handleCodeManagementTools } from './code-management.js';
2+
import { handleOrganizationTools } from './organization.js';
3+
import { handleProjectManagementTools } from './project-management.js';
4+
import { handlePipelineTools } from './pipeline.js';
5+
import { handlePackageManagementTools } from './packages.js';
6+
import { handleServiceConnectionTools } from './service-connections.js';
7+
8+
export const handleToolRequest = async (request: any) => {
9+
// Try each handler in sequence until one returns a result
10+
const handlers = [
11+
handleCodeManagementTools,
12+
handleOrganizationTools,
13+
handleProjectManagementTools,
14+
handlePipelineTools,
15+
handlePackageManagementTools,
16+
handleServiceConnectionTools
17+
];
18+
19+
for (const handler of handlers) {
20+
const result = await handler(request);
21+
if (result !== null) {
22+
return result;
23+
}
24+
}
25+
26+
// If no handler matched, throw an error
27+
throw new Error(`Unknown tool: ${request.params.name}`);
28+
};

0 commit comments

Comments
 (0)