feat: package Pi extensions as Bun workspaces

This commit is contained in:
jb
2026-09-01 17:24:46 -04:00
parent 90f8090f61
commit 118b5bee06
214 changed files with 19566 additions and 5876 deletions
+39
View File
@@ -0,0 +1,39 @@
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);
});