also looking at this
fix(review): persist review state where it is read back
#1404
6 files
+176
-14
| @@ -4,7 +4,6 @@ import type { CommandContext, CommandHandler, CommandOutcome } from './dispatche | ||
| 4 | 4 | import process from 'node:process' |
| 5 | 5 | import { createAiClient } from '../ai' |
| 6 | 6 | import { attemptFix } from '../ci/fix' |
| 7 | import { serializeReviewState } from '../review/marker' | |
| 8 | 7 | |
| 9 | 8 | /** Everything the built-in handlers need to act. */ |
| 10 | 9 | export interface HandlerDeps { |
| @@ -144,16 +143,15 @@ async function setPaused(deps: HandlerDeps, prNumber: number, paused: boolean): | ||
| 144 | 143 | if (!pr) |
| 145 | 144 | return |
| 146 | 145 | |
| 147 | const { parseReviewState } = await import('../review/marker') | |
| 146 | const { parseReviewState, upsertReviewState } = await import('../review/marker') | |
| 148 | 147 | const state = parseReviewState(pr.body) |
| 149 | 148 | |
| 150 | const marker = serializeReviewState({ | |
| 151 | reviewedSha: state?.reviewedSha ?? '', | |
| 152 | fingerprints: state?.fingerprints ?? [], | |
| 153 | reviewedAt: state?.reviewedAt ?? new Date().toISOString(), | |
| 154 | ...(paused ? { paused: true } : {}), | |
| 149 | await deps.provider.updatePullRequest(prNumber, { | |
| 150 | body: upsertReviewState(pr.body, { | |
| 151 | reviewedSha: state?.reviewedSha ?? '', | |
| 152 | fingerprints: state?.fingerprints ?? [], | |
| 153 | reviewedAt: state?.reviewedAt ?? new Date().toISOString(), | |
| 154 | ...(paused ? { paused: true } : {}), | |
| 155 | }), | |
| 155 | 156 | }) |
| 156 | ||
| 157 | const body = pr.body.replace(/<!--\s*buddy:review[\s\S]*?-->/, '').trimEnd() | |
| 158 | await deps.provider.updatePullRequest(prNumber, { body: `${body}\n\n${marker}` }) | |
| 159 | 157 | } |