From 478a926676be7c82ab546914d5a655f50ae0b5bb Mon Sep 17 00:00:00 2001 From: zhangguoyun Date: Mon, 17 Nov 2025 13:53:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84GitLab=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=EF=BC=8C=E4=BC=98=E5=8C=96Merge=20Request?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gitlab-index.js | 344 ++++++++++++++++++++++++------------------------ 1 file changed, 172 insertions(+), 172 deletions(-) diff --git a/gitlab-index.js b/gitlab-index.js index 87c6d17..87061ec 100644 --- a/gitlab-index.js +++ b/gitlab-index.js @@ -119,185 +119,185 @@ const gitlabApiClient = { } }; -// /** -// * 创建Merge Request工具 -// */ -// server.registerTool( -// "create_merge_request", -// { -// description: "在指定的GitLab项目中创建一个新的Merge Request", -// inputSchema: z.object({ -// projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), -// sourceBranch: z.string().describe("源分支名称"), -// targetBranch: z.string().describe("目标分支名称"), -// title: z.string().describe("Merge Request的标题"), -// description: z.string().optional().describe("Merge Request的描述"), -// assigneeId: z.number().optional().describe("负责人ID"), -// reviewerIds: z.array(z.number()).optional().describe("审阅者ID数组"), -// }), -// }, -// async ({ projectId, sourceBranch, targetBranch, title, description = "", assigneeId, reviewerIds }) => { -// try { -// const result = await gitlabApiClient.createMergeRequest( -// projectId, -// sourceBranch, -// targetBranch, -// title, -// description, -// assigneeId, -// reviewerIds -// ); +/** + * 创建Merge Request工具 + */ +server.registerTool( + "create_merge_request", + { + description: "在指定的GitLab项目中创建一个新的Merge Request", + inputSchema: z.object({ + projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), + sourceBranch: z.string().describe("源分支名称"), + targetBranch: z.string().describe("目标分支名称"), + title: z.string().describe("Merge Request的标题"), + description: z.string().optional().describe("Merge Request的描述"), + assigneeId: z.number().optional().describe("负责人ID"), + reviewerIds: z.array(z.number()).optional().describe("审阅者ID数组"), + }), + }, + async ({ projectId, sourceBranch, targetBranch, title, description = "", assigneeId, reviewerIds }) => { + try { + const result = await gitlabApiClient.createMergeRequest( + projectId, + sourceBranch, + targetBranch, + title, + description, + assigneeId, + reviewerIds + ); -// return { -// content: [ -// { -// type: "text", -// text: `成功创建Merge Request: ${result.web_url}\n标题: ${result.title}\n状态: ${result.state}`, -// }, -// ], -// }; -// } catch (error) { -// return { -// content: [ -// { -// type: "text", -// text: `创建Merge Request失败: ${error.message}`, -// }, -// ], -// isError: true, -// }; -// } -// } -// ); + return { + content: [ + { + type: "text", + text: `成功创建Merge Request: ${result.web_url}\n标题: ${result.title}\n状态: ${result.state}`, + }, + ], + }; + } catch (error) { + return { + content: [ + { + type: "text", + text: `创建Merge Request失败: ${error.message}`, + }, + ], + isError: true, + }; + } + } +); -// /** -// * 合并Merge Request工具 -// */ -// server.registerTool( -// "merge_merge_request", -// { -// description: "合并指定的GitLab Merge Request", -// inputSchema: z.object({ -// projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), -// mrIid: z.number().describe("Merge Request的内部ID"), -// mergeCommitMessage: z.string().optional().describe("合并提交的消息"), -// shouldRemoveSourceBranch: z.boolean().optional().describe("是否在合并后删除源分支"), -// mergeWhenPipelineSucceeds: z.boolean().optional().describe("是否在CI管道成功后合并"), -// }), -// }, -// async ({ -// projectId, -// mrIid, -// mergeCommitMessage = "", -// shouldRemoveSourceBranch = false, -// mergeWhenPipelineSucceeds = false -// }) => { -// try { -// const result = await gitlabApiClient.mergeMergeRequest( -// projectId, -// mrIid, -// mergeCommitMessage, -// shouldRemoveSourceBranch, -// mergeWhenPipelineSucceeds -// ); +/** + * 合并Merge Request工具 + */ +server.registerTool( + "merge_merge_request", + { + description: "合并指定的GitLab Merge Request", + inputSchema: z.object({ + projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), + mrIid: z.number().describe("Merge Request的内部ID"), + mergeCommitMessage: z.string().optional().describe("合并提交的消息"), + shouldRemoveSourceBranch: z.boolean().optional().describe("是否在合并后删除源分支"), + mergeWhenPipelineSucceeds: z.boolean().optional().describe("是否在CI管道成功后合并"), + }), + }, + async ({ + projectId, + mrIid, + mergeCommitMessage = "", + shouldRemoveSourceBranch = false, + mergeWhenPipelineSucceeds = false + }) => { + try { + const result = await gitlabApiClient.mergeMergeRequest( + projectId, + mrIid, + mergeCommitMessage, + shouldRemoveSourceBranch, + mergeWhenPipelineSucceeds + ); -// return { -// content: [ -// { -// type: "text", -// text: `成功合并Merge Request #${mrIid}:\n状态: ${result.state}\n已合并时间: ${result.merged_at}`, -// }, -// ], -// }; -// } catch (error) { -// return { -// content: [ -// { -// type: "text", -// text: `合并Merge Request失败: ${error.message}`, -// }, -// ], -// isError: true, -// }; -// } -// } -// ); + return { + content: [ + { + type: "text", + text: `成功合并Merge Request #${mrIid}:\n状态: ${result.state}\n已合并时间: ${result.merged_at}`, + }, + ], + }; + } catch (error) { + return { + content: [ + { + type: "text", + text: `合并Merge Request失败: ${error.message}`, + }, + ], + isError: true, + }; + } + } +); -// /** -// * 获取Merge Request详情工具 -// */ -// server.registerTool( -// "get_merge_request", -// { -// description: "获取指定Merge Request的详细信息", -// inputSchema: z.object({ -// projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), -// mrIid: z.number().describe("Merge Request的内部ID"), -// }), -// }, -// async ({ projectId, mrIid }) => { -// try { -// const result = await gitlabApiClient.getMergeRequest(projectId, mrIid); +/** + * 获取Merge Request详情工具 + */ +server.registerTool( + "get_merge_request", + { + description: "获取指定Merge Request的详细信息", + inputSchema: z.object({ + projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), + mrIid: z.number().describe("Merge Request的内部ID"), + }), + }, + async ({ projectId, mrIid }) => { + try { + const result = await gitlabApiClient.getMergeRequest(projectId, mrIid); -// return { -// content: [ -// { -// type: "text", -// text: `Merge Request #${mrIid} 详情:\n标题: ${result.title}\n作者: ${result.author.name}\n状态: ${result.state}\n源分支: ${result.source_branch}\n目标分支: ${result.target_branch}\n创建时间: ${result.created_at}\n更新时间: ${result.updated_at}`, -// }, -// ], -// }; -// } catch (error) { -// return { -// content: [ -// { -// type: "text", -// text: `获取Merge Request详情失败: ${error.message}`, -// }, -// ], -// isError: true, -// }; -// } -// } -// ); + return { + content: [ + { + type: "text", + text: `Merge Request #${mrIid} 详情:\n标题: ${result.title}\n作者: ${result.author.name}\n状态: ${result.state}\n源分支: ${result.source_branch}\n目标分支: ${result.target_branch}\n创建时间: ${result.created_at}\n更新时间: ${result.updated_at}`, + }, + ], + }; + } catch (error) { + return { + content: [ + { + type: "text", + text: `获取Merge Request详情失败: ${error.message}`, + }, + ], + isError: true, + }; + } + } +); -// /** -// * 关闭Merge Request工具 -// */ -// server.registerTool( -// "close_merge_request", -// { -// description: "关闭指定的GitLab Merge Request而不合并", -// inputSchema: z.object({ -// projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), -// mrIid: z.number().describe("Merge Request的内部ID"), -// }), -// }, -// async ({ projectId, mrIid }) => { -// try { -// const result = await gitlabApiClient.closeMergeRequest(projectId, mrIid); +/** + * 关闭Merge Request工具 + */ +server.registerTool( + "close_merge_request", + { + description: "关闭指定的GitLab Merge Request而不合并", + inputSchema: z.object({ + projectId: z.string().describe("GitLab项目的ID或URL编码的路径"), + mrIid: z.number().describe("Merge Request的内部ID"), + }), + }, + async ({ projectId, mrIid }) => { + try { + const result = await gitlabApiClient.closeMergeRequest(projectId, mrIid); -// return { -// content: [ -// { -// type: "text", -// text: `成功关闭Merge Request #${mrIid}:\n标题: ${result.title}\n当前状态: ${result.state}`, -// }, -// ], -// }; -// } catch (error) { -// return { -// content: [ -// { -// type: "text", -// text: `关闭Merge Request失败: ${error.message}`, -// }, -// ], -// isError: true, -// }; -// } -// } -// ); + return { + content: [ + { + type: "text", + text: `成功关闭Merge Request #${mrIid}:\n标题: ${result.title}\n当前状态: ${result.state}`, + }, + ], + }; + } catch (error) { + return { + content: [ + { + type: "text", + text: `关闭Merge Request失败: ${error.message}`, + }, + ], + isError: true, + }; + } + } +); server.registerTool(