import { afterEach, beforeEach, describe, expect, it } from "bun:test"; import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { ToolSessionContextStore } from "../../src/session/toolContextStore.js"; describe("ToolSessionContextStore", () => { let tempDir: string; let store: ToolSessionContextStore; beforeEach(async () => { tempDir = await mkdtemp(join(tmpdir(), "tjwater-tool-context-")); store = new ToolSessionContextStore(tempDir); await store.initialize(); }); afterEach(async () => { await rm(tempDir, { force: true, recursive: true }); }); it("writes and reads runtime session context by opencode session id", async () => { await store.write({ accessToken: "token-1", actorKey: "actor-1", allowLearningWrite: true, clientSessionId: "chat-session-1", learningMode: "interactive", projectId: "project-id-1", projectKey: "project-1", sessionId: "runtime-session-1", traceId: "trace-1", }); const runtimeContext = await store.read("runtime-session-1"); expect(runtimeContext?.accessToken).toBe("token-1"); expect(runtimeContext?.clientSessionId).toBe("chat-session-1"); expect(runtimeContext?.sessionId).toBe("runtime-session-1"); }); });