import { join } from "node:path"; import { config } from "../config.js"; import { atomicWriteJson, ensureDirectory, readJsonFile, removeFileIfExists, } from "../utils/fileStore.js"; export type ToolSessionContext = { actorKey: string; clientSessionId: string; projectId?: string; projectKey: string; sessionId: string; traceId: string; }; export class ToolSessionContextStore { constructor(private readonly baseDir = config.SESSION_CONTEXT_STORAGE_DIR) {} async initialize() { await ensureDirectory(this.baseDir); } async write(context: ToolSessionContext) { await atomicWriteJson(this.filePath(context.sessionId), context); } async read(sessionId: string) { return await readJsonFile(this.filePath(sessionId)); } async remove(sessionId: string) { await removeFileIfExists(this.filePath(sessionId)); } private filePath(sessionId: string) { return join(this.baseDir, `${sessionId}.json`); } }