import assert from "node:assert/strict"; import test from "node:test"; import { parseCompactionSummary } from "./compaction-summary.ts"; test("separates pi file metadata tags from the visible compaction summary", () => { const parsed = parseCompactionSummary(`## Goal Keep the important user intent. /tmp/a.ts /tmp/b.ts /tmp/changed.ts `); assert.equal(parsed.body, "## Goal\nKeep the important user intent."); assert.deepEqual(parsed.readFiles, ["/tmp/a.ts", "/tmp/b.ts"]); assert.deepEqual(parsed.modifiedFiles, ["/tmp/changed.ts"]); }); test("leaves normal summaries unchanged", () => { const summary = "## Goal\nNo file metadata here."; assert.deepEqual(parseCompactionSummary(summary), { body: summary, readFiles: [], modifiedFiles: [], }); }); test("keeps file-like tags that are part of the summary body", () => { const summary = `## Critical Context The user asked what this compact metadata means: example. More summary text after the mention.`; assert.deepEqual(parseCompactionSummary(summary), { body: summary, readFiles: [], modifiedFiles: [], }); });