import test from "node:test"; import assert from "node:assert/strict"; import { parseTrace, compareBranch, parseExchange, toExchange, attachFindings } from "../replay-core.js"; const trace = { schema_version: "deltastore-replay-trace-v1", trace_id: "t", original_trajectory: [{event_id:"e1"},{event_id:"e2"}], checkpoints: [{checkpoint_id:"c1",event_id:"e2"}], branches: [{branch_id:"b",parent_checkpoint_id:"c1",events:[{event_id:"b1"}],final_outcome:{task_success:true}}], final_outcome:{task_success:false} }; test("parses and compares a checkpoint branch", () => { const parsed = parseTrace(trace); const comparison = compareBranch(parsed, "b"); assert.equal(comparison.sharedPrefix.length, 2); assert.equal(comparison.alternate[0].event_id, "b1"); }); test("rejects unsupported traces", () => { assert.throws(() => parseTrace({ schema_version: "wrong" })); }); test("validates exchange findings locally", () => { const exchange = { schema_version: "solstice-agent-trace-exchange/v1", trace_id: "t", events: [{event_id:"e1",sequence:1,event_type:"message"}], findings: [], checkpoints: [], branches: [], source:{}, task:{}, outcomes:{}, redaction:{}, provenance:{} }; const enriched = attachFindings(parseExchange(exchange), [{trace_id:"t", category:"injection", evidence_refs:["e1"]}]); assert.equal(enriched.findings.length, 1); assert.throws(() => attachFindings(exchange, [{trace_id:"other", evidence_refs:["e1"]}])); }); test("converts the bundled legacy demo to exchange v1", () => { const exchange = toExchange(trace); assert.equal(exchange.schema_version, "solstice-agent-trace-exchange/v1"); assert.equal(exchange.events[0].event_id, "e1"); assert.equal(exchange.branches[0].branch_id, "b"); assert.equal(exchange.findings.length, 0); });