diff --git a/src/github/index.ts b/src/github/index.ts index 06cdc7d4..66cae6a1 100644 --- a/src/github/index.ts +++ b/src/github/index.ts @@ -18,6 +18,7 @@ import { GitHubSearchResponseSchema, GitHubTreeSchema, GitHubCommitSchema, + GitHubListCommitsSchema, CreateRepositoryOptionsSchema, CreateIssueOptionsSchema, CreatePullRequestOptionsSchema, @@ -42,7 +43,8 @@ import { CreatePullRequestSchema, ForkRepositorySchema, CreateBranchSchema, - ListCommitsSchema + ListCommitsSchema, + GitHubListCommits } from './schemas.js'; import { z } from 'zod'; import { zodToJsonSchema } from 'zod-to-json-schema'; @@ -474,7 +476,7 @@ async function listCommits( page: number = 1, perPage: number = 30, sha?: string, -): Promise { +): Promise { const url = new URL(`https://api.github.com/repos/${owner}/${repo}/commits`); url.searchParams.append("page", page.toString()); url.searchParams.append("per_page", perPage.toString()); @@ -499,7 +501,7 @@ async function listCommits( throw new Error(`GitHub API error: ${response.statusText}`); } - return GitHubCommitSchema.array().parse(await response.json()); + return GitHubListCommitsSchema.parse(await response.json()); } server.setRequestHandler(ListToolsRequestSchema, async () => { diff --git a/src/github/schemas.ts b/src/github/schemas.ts index defc2569..ad9f30c8 100644 --- a/src/github/schemas.ts +++ b/src/github/schemas.ts @@ -93,6 +93,25 @@ export const GitHubTreeSchema = z.object({ truncated: z.boolean() }); +export const GitHubListCommitsSchema = z.array(z.object({ + sha: z.string(), + node_id: z.string(), + commit: z.object({ + author: GitHubAuthorSchema, + committer: GitHubAuthorSchema, + message: z.string(), + tree: z.object({ + sha: z.string(), + url: z.string() + }), + url: z.string(), + comment_count: z.number(), + }), + url: z.string(), + html_url: z.string(), + comments_url: z.string() +})); + export const GitHubCommitSchema = z.object({ sha: z.string(), node_id: z.string(), @@ -378,6 +397,7 @@ export type GitHubContent = z.infer; export type FileOperation = z.infer; export type GitHubTree = z.infer; export type GitHubCommit = z.infer; +export type GitHubListCommits = z.infer; export type GitHubReference = z.infer; export type CreateRepositoryOptions = z.infer; export type CreateIssueOptions = z.infer;