Merge pull request #14 from chad-loder/fix-fork-repository-parameters

Fix GitLab API fork repository parameter handling
This commit is contained in:
bbang-dduck
2025-03-18 15:59:42 +09:00
committed by GitHub
2 changed files with 18 additions and 7 deletions

View File

@ -894,11 +894,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
switch (request.params.name) { switch (request.params.name) {
case "fork_repository": { case "fork_repository": {
const args = ForkRepositorySchema.parse(request.params.arguments); const forkArgs = ForkRepositorySchema.parse(request.params.arguments);
const fork = await forkProject(args.project_id, args.namespace); try {
const forkedProject = await forkProject(forkArgs.project_id, forkArgs.namespace);
return { return {
content: [{ type: "text", text: JSON.stringify(fork, null, 2) }], content: [{ type: "text", text: JSON.stringify(forkedProject, null, 2) }],
}; };
} catch (forkError) {
console.error("Error forking repository:", forkError);
let forkErrorMessage = "Failed to fork repository";
if (forkError instanceof Error) {
forkErrorMessage = `${forkErrorMessage}: ${forkError.message}`;
}
return {
content: [{ type: "text", text: JSON.stringify({ error: forkErrorMessage }, null, 2) }],
};
}
} }
case "create_branch": { case "create_branch": {

View File

@ -159,12 +159,12 @@ export const GitLabForkParentSchema = z.object({
username: z.string(), // Changed from login to match GitLab API username: z.string(), // Changed from login to match GitLab API
id: z.number(), id: z.number(),
avatar_url: z.string(), avatar_url: z.string(),
}), }).optional(), // Made optional to handle cases where GitLab API doesn't include it
web_url: z.string(), // Changed from html_url to match GitLab API web_url: z.string(), // Changed from html_url to match GitLab API
}); });
export const GitLabForkSchema = GitLabRepositorySchema.extend({ export const GitLabForkSchema = GitLabRepositorySchema.extend({
forked_from_project: GitLabForkParentSchema, // Changed from parent to match GitLab API forked_from_project: GitLabForkParentSchema.optional(), // Made optional to handle cases where GitLab API doesn't include it
}); });
// Issue related schemas // Issue related schemas