Kode-cli/src/commands/pr_comments.ts
2025-08-10 19:57:17 +08:00

60 lines
1.9 KiB
TypeScript

import { Command } from '../commands'
export default {
type: 'prompt',
name: 'pr-comments',
description: 'Get comments from a GitHub pull request',
progressMessage: 'fetching PR comments',
isEnabled: true,
isHidden: false,
userFacingName() {
return 'pr-comments'
},
async getPromptForCommand(args: string) {
return [
{
role: 'user',
content: [
{
type: 'text',
text: `You are an AI assistant integrated into a git-based version control system. Your task is to fetch and display comments from a GitHub pull request.
Follow these steps:
1. Use \`gh pr view --json number,headRepository\` to get the PR number and repository info
2. Use \`gh api /repos/{owner}/{repo}/issues/{number}/comments\` to get PR-level comments
3. Use \`gh api /repos/{owner}/{repo}/pulls/{number}/comments\` to get review comments. Pay particular attention to the following fields: \`body\`, \`diff_hunk\`, \`path\`, \`line\`, etc. If the comment references some code, consider fetching it using eg \`gh api /repos/{owner}/{repo}/contents/{path}?ref={branch} | jq .content -r | base64 -d\`
4. Parse and format all comments in a readable way
5. Return ONLY the formatted comments, with no additional text
Format the comments as:
## Comments
[For each comment thread:]
- @author file.ts#line:
\`\`\`diff
[diff_hunk from the API response]
\`\`\`
> quoted comment text
[any replies indented]
If there are no comments, return "No comments found."
Remember:
1. Only show the actual comments, no explanatory text
2. Include both PR-level and code review comments
3. Preserve the threading/nesting of comment replies
4. Show the file and line number context for code review comments
5. Use jq to parse the JSON responses from the GitHub API
${args ? 'Additional user input: ' + args : ''}
`,
},
],
},
]
},
} satisfies Command