import { expect, it } from "bun:test"; import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { SessionWorkspaceStore } from "../../src/sessions/workspace-store.js"; import { SessionUiStateStore } from "../../src/sessions/uiStateStore.js"; it("restores plan history independently of chat messages after reconnecting", async () => { const directory = await mkdtemp(join(tmpdir(), "tjwater-plan-state-")); try { const store = new SessionUiStateStore(new SessionWorkspaceStore(directory)); const executionPlans = [{ revision: 1, nodes: [{ id: "sampling", status: "waiting" }] }]; await store.write({ sessionId: "session-1", actorKey: "actor-test", projectKey: "project-test" }, { sessionId: "session-1", messages: [], executionPlans }); const reloaded = await new SessionUiStateStore(new SessionWorkspaceStore(directory)).read({ sessionId: "session-1", actorKey: "actor-test", projectKey: "project-test" }); expect(reloaded?.executionPlans).toEqual(executionPlans); expect(await store.read({ sessionId: "other-session", actorKey: "actor-test", projectKey: "project-test" })).toBeNull(); } finally { await rm(directory, { recursive: true, force: true }); } });