clawdbot-d02: route plugin session reads through accessor

This commit is contained in:
Josh Lehman
2026-05-31 18:21:03 -07:00
parent 356385045f
commit a4796220e4
5 changed files with 26 additions and 5 deletions
@@ -0,0 +1,13 @@
import { describe, expect, it } from "vitest";
import {
listSessionEntries as listAccessorSessionEntries,
loadSessionEntry,
} from "../config/sessions/session-accessor.js";
import { getSessionEntry, listSessionEntries } from "./session-store-runtime.js";
describe("session-store-runtime", () => {
it("routes read helpers through the session accessor seam", () => {
expect(getSessionEntry).toBe(loadSessionEntry);
expect(listSessionEntries).toBe(listAccessorSessionEntries);
});
});
+5 -2
View File
@@ -1,5 +1,9 @@
// Narrow session-store helpers for channel hot paths.
import {
listSessionEntries,
loadSessionEntry as getSessionEntry,
} from "../config/sessions/session-accessor.js";
import { loadSessionStore as loadSessionStoreImpl } from "../config/sessions/store-load.js";
/**
@@ -8,6 +12,7 @@ import { loadSessionStore as loadSessionStoreImpl } from "../config/sessions/sto
* legacy mutable whole-store shape and will remain a compatibility escape hatch.
*/
export const loadSessionStore = loadSessionStoreImpl;
export { getSessionEntry, listSessionEntries };
export { resolveSessionStoreEntry } from "../config/sessions/store-entry.js";
export {
@@ -22,8 +27,6 @@ export { resolveGroupSessionKey } from "../config/sessions/group.js";
export { canonicalizeMainSessionAlias } from "../config/sessions/main-session.js";
export {
clearSessionStoreCacheForTest,
getSessionEntry,
listSessionEntries,
patchSessionEntry,
readSessionUpdatedAt,
recordSessionMetaFromInbound,
+3
View File
@@ -6,6 +6,7 @@ import {
setRuntimeConfigSnapshot,
type OpenClawConfig,
} from "../../config/config.js";
import { listSessionEntries, loadSessionEntry } from "../../config/sessions/session-accessor.js";
import { onAgentEvent } from "../../infra/agent-events.js";
import {
requestHeartbeat,
@@ -321,6 +322,8 @@ describe("plugin runtime command execution", () => {
"updateSessionStoreEntry",
"resolveSessionFilePath",
]);
expect(runtime.agent.session.getSessionEntry).toBe(loadSessionEntry);
expect(runtime.agent.session.listSessionEntries).toBe(listSessionEntries);
},
},
{
+3 -1
View File
@@ -12,8 +12,10 @@ import { normalizeThinkLevel, resolveThinkingProfile } from "../../auto-reply/th
import { getRuntimeConfig } from "../../config/config.js";
import { resolveSessionFilePath, resolveStorePath } from "../../config/sessions/paths.js";
import {
getSessionEntry,
listSessionEntries,
loadSessionEntry as getSessionEntry,
} from "../../config/sessions/session-accessor.js";
import {
loadSessionStore,
patchSessionEntry,
saveSessionStore,
+2 -2
View File
@@ -205,8 +205,8 @@ export type PluginRuntimeCore = {
ensureAgentWorkspace: typeof import("../../agents/workspace.js").ensureAgentWorkspace;
session: {
resolveStorePath: typeof import("../../config/sessions/paths.js").resolveStorePath;
getSessionEntry: typeof import("../../config/sessions/store.js").getSessionEntry;
listSessionEntries: typeof import("../../config/sessions/store.js").listSessionEntries;
getSessionEntry: typeof import("../../config/sessions/session-accessor.js").loadSessionEntry;
listSessionEntries: typeof import("../../config/sessions/session-accessor.js").listSessionEntries;
patchSessionEntry: typeof import("../../config/sessions/store.js").patchSessionEntry;
upsertSessionEntry: typeof import("../../config/sessions/store.js").upsertSessionEntry;
/**