95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import { isValidContextContinuation } from "./continuation.ts";
|
|
|
|
function state(overrides: Record<string, unknown> = {}) {
|
|
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,
|
|
);
|
|
});
|