import type { BugReportRecord } from "../shared/bug-reports"; import type { LinearSupportClient } from "./linear-support-client"; export async function purgeClosedBugReport( id: string, closedAt: string, deps: { record: () => Promise; linear: Pick; begin: () => Promise; reopen: () => Promise; removeFiles: (paths: string[]) => Promise; finish: () => Promise; now?: () => number; }, ) { const report = await deps.record(); if ( !report || report.state !== "done" || report.closed_at !== closedAt || !report.delete_after || Date.parse(report.delete_after) > (deps.now ?? Date.now)() ) return; if (!report.purge_started_at) { const issue = await deps.linear.issue(id); if (issue && issue.state?.type !== "completed") { await deps.reopen(); return; } } if (!(await deps.begin())) return; // Keep the local retry record until BOTH external deletions are confirmed. await deps.linear.remove(id); await deps.removeFiles([`${id}/input`, `${id}/screenshot.webp`]); await deps.finish(); }