From 0f2efb57a77deaf952b233b305c25a6524a8b61c Mon Sep 17 00:00:00 2001 From: BashOpsDev Date: Thu, 18 Jun 2026 19:14:29 -0400 Subject: [PATCH 1/2] fix(review-agent): fetch private GitHub PR diffs via API --- .../review-agent/nodes/githubPrParser.test.ts | 29 ++++++++++++++----- .../review-agent/nodes/githubPrParser.ts | 23 +++++++++++---- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.test.ts b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.test.ts index d06cdd889..e8a9b6729 100644 --- a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.test.ts +++ b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.test.ts @@ -79,15 +79,30 @@ describe('githubPrParser', () => { expect(result.description).toBe(''); }); - test('fetches diff using the pull request diff_url', async () => { - const mockRequest = vi.fn().mockResolvedValue({ data: '' }); - const octokit = { request: mockRequest } as unknown as Octokit; - const pr = makePullRequest({ diff_url: 'https://github.com/my-org/my-repo/pull/7.diff' }); +test('fetches diff using the GitHub pulls API with diff accept header', async () => { + const mockRequest = vi.fn().mockResolvedValue({ data: '' }); + const octokit = { request: mockRequest } as unknown as Octokit; + const pr = makePullRequest({ + owner: 'my-org', + repo: 'my-repo', + number: 7, + diff_url: 'https://github.com/my-org/my-repo/pull/7.diff', + }); - await githubPrParser(octokit, pr); + await githubPrParser(octokit, pr); - expect(mockRequest).toHaveBeenCalledWith('https://github.com/my-org/my-repo/pull/7.diff'); - }); + expect(mockRequest).toHaveBeenCalledWith( + 'GET /repos/{owner}/{repo}/pulls/{pull_number}', + { + owner: 'my-org', + repo: 'my-repo', + pull_number: 7, + headers: { + accept: 'application/vnd.github.diff', + }, + } + ); +}); test('returns empty file_diffs for an empty diff', async () => { const octokit = makeMockOctokit(''); diff --git a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts index b633450ea..fc6070150 100644 --- a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts +++ b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts @@ -11,12 +11,23 @@ export const githubPrParser = async (octokit: Octokit, pullRequest: GitHubPullRe let parsedDiff: parse.File[] = []; try { - const diff = await octokit.request(pullRequest.diff_url); - parsedDiff = parse(diff.data); - } catch (error) { - logger.error("Error fetching diff: ", error); - throw error; - } + const { owner, name: repo } = pullRequest.base.repo; + const pull_number = pullRequest.number; + + const diff = await octokit.request("GET /repos/{owner}/{repo}/pulls/{pull_number}", { + owner: owner.login, + repo, + pull_number, + headers: { + accept: "application/vnd.github.diff", + }, + }); + + parsedDiff = parse(diff.data as string); +} catch (error) { + logger.error("Error fetching diff: ", error); + throw error; +} const sourcebotFileDiffs: (sourcebot_file_diff | null)[] = parsedDiff.map((file) => { if (!file.from || !file.to) { From a43e11b49ca7bba4a4397655d6e99a8e91510221 Mon Sep 17 00:00:00 2001 From: BashOpsDev Date: Thu, 18 Jun 2026 19:49:42 -0400 Subject: [PATCH 2/2] style(review-agent): use camelCase local variable --- .../features/agents/review-agent/nodes/githubPrParser.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts index fc6070150..4064c04f0 100644 --- a/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts +++ b/packages/web/src/features/agents/review-agent/nodes/githubPrParser.ts @@ -12,12 +12,12 @@ export const githubPrParser = async (octokit: Octokit, pullRequest: GitHubPullRe let parsedDiff: parse.File[] = []; try { const { owner, name: repo } = pullRequest.base.repo; - const pull_number = pullRequest.number; + const pullNumber = pullRequest.number; const diff = await octokit.request("GET /repos/{owner}/{repo}/pulls/{pull_number}", { owner: owner.login, repo, - pull_number, + pull_number: pullNumber, headers: { accept: "application/vnd.github.diff", }, @@ -75,4 +75,4 @@ export const githubPrParser = async (octokit: Octokit, pullRequest: GitHubPullRe number: pullRequest.number, head_sha: pullRequest.head.sha } -} \ No newline at end of file +}