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