mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 07:21:52 +00:00
refactor: keep legacy session json paths out of runtime
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { expandHomePrefix, resolveRequiredHomeDir } from "../../infra/home-dir.js";
|
||||
import { resolveRequiredHomeDir } from "../../infra/home-dir.js";
|
||||
import { DEFAULT_AGENT_ID, normalizeAgentId } from "../../routing/session-key.js";
|
||||
import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js";
|
||||
import { resolveStateDir } from "../paths.js";
|
||||
@@ -283,38 +283,3 @@ export function resolveSessionFilePath(
|
||||
}
|
||||
return resolveSessionTranscriptPathInDir(sessionId, sessionsDir);
|
||||
}
|
||||
|
||||
export function resolveLegacySessionStorePath(
|
||||
store?: string,
|
||||
opts?: { agentId?: string; env?: NodeJS.ProcessEnv },
|
||||
) {
|
||||
const agentId = normalizeAgentId(opts?.agentId ?? DEFAULT_AGENT_ID);
|
||||
const env = opts?.env ?? process.env;
|
||||
const homedir = () => resolveRequiredHomeDir(env, os.homedir);
|
||||
if (!store) {
|
||||
return path.join(resolveAgentSessionsDir(agentId, env, homedir), "sessions.json");
|
||||
}
|
||||
if (store.includes("{agentId}")) {
|
||||
const expanded = store.replaceAll("{agentId}", agentId);
|
||||
if (expanded.startsWith("~")) {
|
||||
return path.resolve(
|
||||
expandHomePrefix(expanded, {
|
||||
home: resolveRequiredHomeDir(env, homedir),
|
||||
env,
|
||||
homedir,
|
||||
}),
|
||||
);
|
||||
}
|
||||
return path.resolve(expanded);
|
||||
}
|
||||
if (store.startsWith("~")) {
|
||||
return path.resolve(
|
||||
expandHomePrefix(store, {
|
||||
home: resolveRequiredHomeDir(env, homedir),
|
||||
env,
|
||||
homedir,
|
||||
}),
|
||||
);
|
||||
}
|
||||
return path.resolve(store);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import { afterEach, describe, expect, it } from "vitest";
|
||||
import { writeTextAtomic } from "../../infra/json-files.js";
|
||||
import { closeOpenClawAgentDatabasesForTest } from "../../state/openclaw-agent-db.js";
|
||||
import { closeOpenClawStateDatabaseForTest } from "../../state/openclaw-state-db.js";
|
||||
import { resolveLegacySessionStorePath } from "./paths.js";
|
||||
import { resolveSessionTranscriptsDirForAgent } from "./paths.js";
|
||||
import {
|
||||
importJsonSessionStoreToSqlite,
|
||||
loadSqliteSessionEntries,
|
||||
@@ -26,6 +26,16 @@ function createTempDir(): string {
|
||||
return fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-sqlite-session-store-"));
|
||||
}
|
||||
|
||||
function resolveLegacySessionJsonFixturePath(params: {
|
||||
agentId: string;
|
||||
env: NodeJS.ProcessEnv;
|
||||
}): string {
|
||||
return path.join(
|
||||
resolveSessionTranscriptsDirForAgent(params.agentId, params.env),
|
||||
"sessions.json",
|
||||
);
|
||||
}
|
||||
|
||||
afterEach(() => {
|
||||
closeOpenClawAgentDatabasesForTest();
|
||||
closeOpenClawStateDatabaseForTest();
|
||||
@@ -113,7 +123,7 @@ describe("SQLite session store backend", () => {
|
||||
it("routes the production session row API through SQLite", () => {
|
||||
const stateDir = createTempDir();
|
||||
const env = { OPENCLAW_STATE_DIR: stateDir };
|
||||
const storePath = resolveLegacySessionStorePath(undefined, {
|
||||
const storePath = resolveLegacySessionJsonFixturePath({
|
||||
agentId: "ops",
|
||||
env,
|
||||
});
|
||||
@@ -226,7 +236,7 @@ describe("SQLite session store backend", () => {
|
||||
it("uses SQLite by default for canonical per-agent session rows", () => {
|
||||
const stateDir = createTempDir();
|
||||
const env = { OPENCLAW_STATE_DIR: stateDir };
|
||||
const storePath = resolveLegacySessionStorePath(undefined, {
|
||||
const storePath = resolveLegacySessionJsonFixturePath({
|
||||
agentId: "ops",
|
||||
env,
|
||||
});
|
||||
@@ -247,7 +257,7 @@ describe("SQLite session store backend", () => {
|
||||
it("does not import a legacy canonical sessions.json on first SQLite open", async () => {
|
||||
const stateDir = createTempDir();
|
||||
process.env.OPENCLAW_STATE_DIR = stateDir;
|
||||
const storePath = resolveLegacySessionStorePath(undefined, {
|
||||
const storePath = resolveLegacySessionJsonFixturePath({
|
||||
agentId: "ops",
|
||||
env: process.env,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user