(options: {
targetDir: string;
targetRepo: string;
sha: string;
baseSha: string;
metadata: CommitMetadata;
additionalPrompt: string;
})
| 180 | } |
| 181 | |
| 182 | function promptForCommit(options: { |
| 183 | targetDir: string; |
| 184 | targetRepo: string; |
| 185 | sha: string; |
| 186 | baseSha: string; |
| 187 | metadata: CommitMetadata; |
| 188 | additionalPrompt: string; |
| 189 | }): string { |
| 190 | const prompt = readFileSync(join(ROOT, "prompts", "review-commit.md"), "utf8"); |
| 191 | const coAuthors = options.metadata.coAuthors.length |
| 192 | ? options.metadata.coAuthors.map((value) => `- ${value}`).join("\n") |
| 193 | : "- none"; |
| 194 | const additionalPrompt = options.additionalPrompt.trim() |
| 195 | ? `\n## Additional Manual Prompt\n\n${options.additionalPrompt.trim()}\n` |
| 196 | : ""; |
| 197 | return `${prompt} |
| 198 | |
| 199 | ## Commit Under Review |
| 200 | |
| 201 | - Target repo: ${options.targetRepo} |
| 202 | - Commit SHA: ${options.sha} |
| 203 | - Base SHA: ${options.baseSha} |
| 204 | - Range: ${options.baseSha}..${options.sha} |
| 205 | - Subject: ${options.metadata.subject} |
| 206 | - Author: ${personLabel(options.metadata.authorName, options.metadata.githubAuthor)} |
| 207 | - Committer: ${personLabel(options.metadata.committerName, options.metadata.githubCommitter)} |
| 208 | - GitHub author: ${options.metadata.githubAuthor || "unknown"} |
| 209 | - GitHub committer: ${options.metadata.githubCommitter || "unknown"} |
| 210 | - Authored at: ${options.metadata.authoredAt} |
| 211 | - Committed at: ${options.metadata.committedAt} |
| 212 | - Co-authors: |
| 213 | ${coAuthors} |
| 214 | |
| 215 | ${commitDiffSummary(options.targetDir, options.baseSha, options.sha)} |
| 216 | ${additionalPrompt}`; |
| 217 | } |
| 218 | |
| 219 | function stripMarkdownFence(markdown: string): string { |
| 220 | const trimmed = markdown.trim(); |
no test coverage detected