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) | 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); });