Files

40 lines
1.1 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import type {
ExtensionAPI,
ExtensionContext,
} from "@earendil-works/pi-coding-agent";
import { registerWorkflowRecovery } from "./index.ts";
import type { ContextTransitionRuntime } from "./context-transition.ts";
test("session startup invokes persisted Workflow recovery", async () => {
let sessionStart:
| ((event: { reason: string }, ctx: ExtensionContext) => Promise<void>)
| undefined;
const pi = {
on(event: string, handler: typeof sessionStart) {
if (event === "session_start") sessionStart = handler;
},
} as unknown as ExtensionAPI;
let recoveries = 0;
registerWorkflowRecovery(pi, {
store: {} as never,
engineForContext: async () =>
({
async recover() {
recoveries++;
return [];
},
}) as never,
} as ContextTransitionRuntime);
assert.ok(sessionStart);
await sessionStart(
{ reason: "startup" },
{
ui: { notify: () => {} },
} as unknown as ExtensionContext,
);
assert.equal(recoveries, 1);
});