From 1e23ff88be6ed82f4db9cc8d4b9840e5db854bb8 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 9 May 2026 05:30:21 +0100 Subject: [PATCH] test: use sqlite locators in gateway session tests --- .../server.sessions.preview-resolve.test.ts | 14 +++++++++----- src/gateway/server.sessions.store-rpc.test.ts | 12 ++++++++---- src/gateway/session-utils.search.test.ts | 7 ++++++- src/gateway/session-utils.test.ts | 9 +++++++-- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/gateway/server.sessions.preview-resolve.test.ts b/src/gateway/server.sessions.preview-resolve.test.ts index a8c5b39610e..94ab2ed4db4 100644 --- a/src/gateway/server.sessions.preview-resolve.test.ts +++ b/src/gateway/server.sessions.preview-resolve.test.ts @@ -1,6 +1,6 @@ -import path from "node:path"; import { expect, test } from "vitest"; import { listSessionEntries, type SessionEntry } from "../config/sessions.js"; +import { createSqliteSessionTranscriptLocator } from "../config/sessions/paths.js"; import { replaceSqliteSessionTranscriptEvents } from "../config/sessions/transcript-store.sqlite.js"; import { parseAgentSessionKey } from "../routing/session-key.js"; import { openOpenClawAgentDatabase } from "../state/openclaw-agent-db.js"; @@ -15,6 +15,10 @@ import { const { createSessionStoreDir, openClient } = setupGatewaySessionsTestHarness(); +function sqliteTranscript(sessionId: string, agentId = "main"): string { + return createSqliteSessionTranscriptLocator({ agentId, sessionId }); +} + function seedTranscript(params: { sessionId: string; transcriptPath: string; @@ -68,9 +72,9 @@ function seedRawSessionStore(store: Record) { } test("sessions.preview returns transcript previews", async () => { - const { dir } = await createSessionStoreDir(); + await createSessionStoreDir(); const sessionId = "sess-preview"; - const transcriptPath = path.join(dir, `${sessionId}.jsonl`); + const transcriptPath = sqliteTranscript(sessionId); const lines = createToolSummaryPreviewTranscriptLines(sessionId); seedTranscriptLines(sessionId, transcriptPath, lines); @@ -96,11 +100,11 @@ test("sessions.preview returns transcript previews", async () => { }); test("sessions.resolve and mutators use canonical main key without cleaning legacy ghost keys", async () => { - const { dir } = await createSessionStoreDir(); + await createSessionStoreDir(); testState.agentsConfig = { list: [{ id: "ops", default: true }] }; testState.sessionConfig = { mainKey: "work" }; const sessionId = "sess-alias-cleanup"; - const transcriptPath = path.join(dir, `${sessionId}.jsonl`); + const transcriptPath = sqliteTranscript(sessionId, "ops"); seedTranscript({ sessionId, transcriptPath, diff --git a/src/gateway/server.sessions.store-rpc.test.ts b/src/gateway/server.sessions.store-rpc.test.ts index 723ef689ee0..dcb0a6dc6de 100644 --- a/src/gateway/server.sessions.store-rpc.test.ts +++ b/src/gateway/server.sessions.store-rpc.test.ts @@ -1,6 +1,6 @@ -import path from "node:path"; import { expect, test, vi } from "vitest"; import { getSessionEntry } from "../config/sessions.js"; +import { createSqliteSessionTranscriptLocator } from "../config/sessions/paths.js"; import { loadSqliteSessionTranscriptEvents, replaceSqliteSessionTranscriptEvents, @@ -14,8 +14,12 @@ import { const { createSessionFixtureDir, openClient } = setupGatewaySessionsTestHarness(); +function sqliteTranscript(sessionId: string): string { + return createSqliteSessionTranscriptLocator({ agentId: "main", sessionId }); +} + test("lists and patches session entries via sessions.* RPC", async () => { - const { dir } = await createSessionFixtureDir(); + await createSessionFixtureDir(); const now = Date.now(); const recent = now - 30_000; const stale = now - 15 * 60_000; @@ -23,13 +27,13 @@ test("lists and patches session entries via sessions.* RPC", async () => { replaceSqliteSessionTranscriptEvents({ agentId: "main", sessionId: "sess-main", - transcriptPath: path.join(dir, "sess-main.jsonl"), + transcriptPath: sqliteTranscript("sess-main"), events: Array.from({ length: 10 }, (_, idx) => ({ role: "user", content: `line ${idx}` })), }); replaceSqliteSessionTranscriptEvents({ agentId: "main", sessionId: "sess-group", - transcriptPath: path.join(dir, "sess-group.jsonl"), + transcriptPath: sqliteTranscript("sess-group"), events: [{ role: "user", content: "group line 0" }], }); diff --git a/src/gateway/session-utils.search.test.ts b/src/gateway/session-utils.search.test.ts index ae2960b1261..b190f9c147d 100644 --- a/src/gateway/session-utils.search.test.ts +++ b/src/gateway/session-utils.search.test.ts @@ -8,6 +8,7 @@ import { } from "../agents/subagent-registry.test-helpers.js"; import type { OpenClawConfig } from "../config/config.js"; import type { SessionEntry } from "../config/sessions.js"; +import { createSqliteSessionTranscriptLocator } from "../config/sessions/paths.js"; import { replaceSqliteSessionTranscriptEvents } from "../config/sessions/transcript-store.sqlite.js"; import { registerAgentRunContext, resetAgentRunContextForTest } from "../infra/agent-events.js"; import { closeOpenClawStateDatabaseForTest } from "../state/openclaw-state-db.js"; @@ -46,6 +47,10 @@ function createLegacyRuntimeStore(model: string): Record { }; } +function sqliteTranscript(sessionId: string): string { + return createSqliteSessionTranscriptLocator({ agentId: "main", sessionId }); +} + function withTranscriptStoreFixture(params: { prefix: string; transcriptId: string; @@ -64,7 +69,7 @@ function withTranscriptStoreFixture(params: { replaceSqliteSessionTranscriptEvents({ agentId: "main", sessionId: params.transcriptId, - transcriptPath: path.join(tmpDir, `${params.transcriptId}.jsonl`), + transcriptPath: sqliteTranscript(params.transcriptId), events: [ { type: "session", version: 1, id: params.transcriptId }, { diff --git a/src/gateway/session-utils.test.ts b/src/gateway/session-utils.test.ts index 82f9f63acfa..c3279f3d3fb 100644 --- a/src/gateway/session-utils.test.ts +++ b/src/gateway/session-utils.test.ts @@ -5,6 +5,7 @@ import { afterEach, describe, expect, test, vi } from "vitest"; import { resetConfigRuntimeState } from "../config/config.js"; import type { OpenClawConfig } from "../config/config.js"; import type { SessionEntry } from "../config/sessions.js"; +import { createSqliteSessionTranscriptLocator } from "../config/sessions/paths.js"; import { replaceSqliteSessionTranscriptEvents } from "../config/sessions/transcript-store.sqlite.js"; import { createEmptyPluginRegistry } from "../plugins/registry-empty.js"; import { resetPluginRuntimeStateForTest, setActivePluginRegistry } from "../plugins/runtime.js"; @@ -78,6 +79,10 @@ function requireString(value: string | undefined, label: string): string { return value; } +function sqliteTranscript(sessionId: string): string { + return createSqliteSessionTranscriptLocator({ agentId: "main", sessionId }); +} + describe("gateway session utils", () => { afterEach(() => { resetConfigRuntimeState(); @@ -887,7 +892,7 @@ describe("listSessionsFromStore selected model display", () => { replaceSqliteSessionTranscriptEvents({ agentId: "main", sessionId, - transcriptPath: path.join(tmpDir, `${sessionId}.jsonl`), + transcriptPath: sqliteTranscript(sessionId), events: [ { type: "session", version: 1, id: sessionId }, { message: { role: "user", content: `title ${i}` } }, @@ -959,7 +964,7 @@ describe("listSessionsFromStore selected model display", () => { replaceSqliteSessionTranscriptEvents({ agentId: "main", sessionId, - transcriptPath: path.join(tmpDir, `${sessionId}.jsonl`), + transcriptPath: sqliteTranscript(sessionId), events: [ { type: "session", version: 1, id: sessionId }, { message: { role: "user", content: `title ${i}` } },