mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-22 06:08:13 +00:00
test: use sqlite locators in gateway session tests
This commit is contained in:
@@ -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<string, unknown>) {
|
||||
}
|
||||
|
||||
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,
|
||||
|
||||
@@ -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" }],
|
||||
});
|
||||
|
||||
|
||||
@@ -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<string, SessionEntry> {
|
||||
};
|
||||
}
|
||||
|
||||
function sqliteTranscript(sessionId: string): string {
|
||||
return createSqliteSessionTranscriptLocator({ agentId: "main", sessionId });
|
||||
}
|
||||
|
||||
function withTranscriptStoreFixture<T>(params: {
|
||||
prefix: string;
|
||||
transcriptId: string;
|
||||
@@ -64,7 +69,7 @@ function withTranscriptStoreFixture<T>(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 },
|
||||
{
|
||||
|
||||
@@ -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}` } },
|
||||
|
||||
Reference in New Issue
Block a user