import assert from "node:assert/strict"; import test from "node:test"; import { isValidContextContinuation } from "./continuation.ts"; function state(overrides: Record = {}) { return { revision: 5, status: "waiting", planArtifact: { revision: 2 }, openGate: { id: "gate-1", kind: "implementation-context", status: "open", }, implementationContext: { gateId: "gate-1", runRevision: 4, planRevision: 2, activeParentSessionId: "session-1", strategy: "fresh-session", status: "handoff-pending", method: "fresh-session", }, assignments: [], ...overrides, }; } test("continuation requires every persisted binding and the active parent", () => { assert.equal(isValidContextContinuation(state(), "session-1"), true); assert.equal(isValidContextContinuation(state(), "session-2"), false); assert.equal(isValidContextContinuation(state({ status: "running" }), "session-1"), false); assert.equal( isValidContextContinuation( state({ assignments: [ { status: "queued", executionToken: "active-token", }, ], }), "session-1", ), false, ); assert.equal( isValidContextContinuation( state({ revision: 6, }), "session-1", ), false, ); assert.equal( isValidContextContinuation( state({ implementationContext: { ...state().implementationContext, strategy: "smart-compact", }, }), "session-1", ), false, ); }); test("normal compaction continuation requires unavailable smart compaction state", () => { const context = { ...state().implementationContext, strategy: "smart-compact", status: "normal-compact-pending", method: "smart_compact", outcome: "unavailable", }; assert.equal( isValidContextContinuation( state({ implementationContext: context }), "session-1", ), true, ); assert.equal( isValidContextContinuation( state({ implementationContext: { ...context, outcome: "failed" }, }), "session-1", ), false, ); });