improve pr approach
This commit is contained in:
@@ -5,4 +5,6 @@ export const instructions = `- use the ${mcpServerName} MCP server to interact w
|
|||||||
- do not under any circumstances use the gh cli
|
- do not under any circumstances use the gh cli
|
||||||
- if prompted by a comment to respond to create a new issue, pr or anything else, after succeeding,
|
- if prompted by a comment to respond to create a new issue, pr or anything else, after succeeding,
|
||||||
also respond to the original comment with a very brief message containing a link to it
|
also respond to the original comment with a very brief message containing a link to it
|
||||||
|
- if prompted for to review a pr, use the diff_hint returned by mcp__${mcpServerName}__get_pull_request to get the diff
|
||||||
|
and analyze the diff to determine the review type and body
|
||||||
`;
|
`;
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
add a github review for the following PR: https://github.com/pullfrogai/scratch/pull/14
|
add a github review for the following PR: https://github.com/pullfrogai/scratch/pull/16
|
||||||
|
|||||||
+33
-12
@@ -7,7 +7,7 @@ export const PullRequestInfo = type({
|
|||||||
|
|
||||||
export const PullRequestInfoTool = tool({
|
export const PullRequestInfoTool = tool({
|
||||||
name: "get_pull_request",
|
name: "get_pull_request",
|
||||||
description: "Retrieve detailed information and diff for a specific pull request by number.",
|
description: "Retrieve detailed information for a specific pull request by number, with a suggested local diff command.",
|
||||||
parameters: PullRequestInfo,
|
parameters: PullRequestInfo,
|
||||||
execute: contextualize(async ({ pull_number }, ctx) => {
|
execute: contextualize(async ({ pull_number }, ctx) => {
|
||||||
const pr = await ctx.octokit.rest.pulls.get({
|
const pr = await ctx.octokit.rest.pulls.get({
|
||||||
@@ -16,19 +16,40 @@ export const PullRequestInfoTool = tool({
|
|||||||
pull_number,
|
pull_number,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch diff using raw request
|
const data = pr.data;
|
||||||
const diff = await ctx.octokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', {
|
|
||||||
owner: ctx.owner,
|
const baseBranch = data.base?.ref;
|
||||||
repo: ctx.name,
|
const headBranch = data.head?.ref;
|
||||||
pull_number,
|
const headSha = data.head?.sha;
|
||||||
headers: {
|
|
||||||
Accept: 'application/vnd.github.v3.diff',
|
// Suggest a local diff command similar to claude-code-action
|
||||||
},
|
// Consumers can run this in a repo checkout to view the diff without API diff access
|
||||||
});
|
const diff_hint = baseBranch
|
||||||
|
? `git fetch origin ${baseBranch} --depth=20 && git diff origin/${baseBranch}...${headSha || "HEAD"}`
|
||||||
|
: undefined;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...pr.data,
|
number: data.number,
|
||||||
diff: diff.data,
|
url: data.html_url,
|
||||||
|
title: data.title,
|
||||||
|
state: data.state,
|
||||||
|
draft: data.draft,
|
||||||
|
merged: data.merged,
|
||||||
|
mergeable: data.mergeable,
|
||||||
|
user: data.user?.login,
|
||||||
|
created_at: data.created_at,
|
||||||
|
updated_at: data.updated_at,
|
||||||
|
head: headBranch,
|
||||||
|
head_sha: headSha,
|
||||||
|
base: baseBranch,
|
||||||
|
base_sha: data.base?.sha,
|
||||||
|
additions: data.additions,
|
||||||
|
deletions: data.deletions,
|
||||||
|
changed_files: data.changed_files,
|
||||||
|
labels: (data.labels || []).map((l) => (typeof l === "string" ? l : l.name)).filter(Boolean),
|
||||||
|
requested_reviewers: (data.requested_reviewers || []).map((u) => u.login),
|
||||||
|
requested_teams: (data.requested_teams || []).map((t) => t.slug),
|
||||||
|
diff_hint,
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user