import { parsePatchFiles } from "@pierre/diffs/utils/parsePatchFiles"; export interface TurnDiffFileSummary { readonly path: string; readonly additions: number; readonly deletions: number; } export function parseTurnDiffFilesFromUnifiedDiff( diff: string, ): ReadonlyArray { const normalized = diff.replace(/\r\n/g, "\n").trim(); if (normalized.length === 0) { return []; } const parsedPatches = parsePatchFiles(normalized); const files = parsedPatches.flatMap((patch) => patch.files.map((file) => ({ path: file.name, additions: file.hunks.reduce((total, hunk) => total + hunk.additionLines, 0), deletions: file.hunks.reduce((total, hunk) => total + hunk.deletionLines, 0), })), ); return files.toSorted((left, right) => left.path.localeCompare(right.path)); }