Skip to content

Commit b08d901

Browse files
authored
fix: route gateway history through session accessor target (#96179)
1 parent a8f387b commit b08d901

4 files changed

Lines changed: 7 additions & 10 deletions

File tree

scripts/check-session-accessor-boundary.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ export const migratedSessionAccessorFiles = new Set([
9797
"src/cron/service/timer.ts",
9898
"src/gateway/session-compaction-checkpoints.ts",
9999
"src/gateway/session-history-state.ts",
100+
"src/gateway/sessions-history-http.ts",
100101
"src/gateway/session-utils.ts",
101102
"src/gateway/managed-image-attachments.ts",
102103
"src/gateway/server-methods/artifacts.ts",

src/gateway/sessions-history-http.revocation.test.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ vi.mock("../config/config.js", () => ({
2424
}),
2525
}));
2626

27-
vi.mock("../config/sessions.js", () => ({
28-
loadSessionStore: () => ({ entries: [] }),
29-
}));
30-
3127
vi.mock("../sessions/transcript-events.js", () => ({
3228
onInternalSessionTranscriptUpdate: (cb: typeof transcriptUpdateHandler) => {
3329
transcriptUpdateHandler = cb;
@@ -83,11 +79,12 @@ vi.mock("./http-utils.js", () => ({
8379
}));
8480

8581
vi.mock("./session-utils.js", () => ({
86-
resolveGatewaySessionStoreTarget: () => ({
82+
resolveGatewaySessionStoreTargetWithStore: () => ({
8783
storePath: "/tmp",
8884
storeKeys: ["agent:main"],
8985
canonicalKey: "agent:main",
9086
agentId: "main",
87+
store: {},
9188
}),
9289
resolveFreshestSessionEntryFromStoreKeys: () => ({
9390
sessionId: "session-1",

src/gateway/sessions-history-http.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
normalizeOptionalString,
77
} from "@openclaw/normalization-core/string-coerce";
88
import { getRuntimeConfig } from "../config/io.js";
9-
import { loadSessionStore } from "../config/sessions.js";
109
import { createSubsystemLogger } from "../logging/subsystem.js";
1110
import { normalizeAgentId } from "../routing/session-key.js";
1211
import { onInternalSessionTranscriptUpdate } from "../sessions/transcript-events.js";
@@ -38,7 +37,7 @@ import {
3837
} from "./session-transcript-readers.js";
3938
import {
4039
resolveFreshestSessionEntryFromStoreKeys,
41-
resolveGatewaySessionStoreTarget,
40+
resolveGatewaySessionStoreTargetWithStore,
4241
resolveSessionTranscriptCandidates,
4342
} from "./session-utils.js";
4443

@@ -129,9 +128,8 @@ export async function handleSessionHistoryHttpRequest(
129128
}
130129
const { cfg } = authResult;
131130

132-
const target = resolveGatewaySessionStoreTarget({ cfg, key: sessionKey });
133-
const store = loadSessionStore(target.storePath);
134-
const entry = resolveFreshestSessionEntryFromStoreKeys(store, target.storeKeys);
131+
const target = resolveGatewaySessionStoreTargetWithStore({ cfg, key: sessionKey });
132+
const entry = resolveFreshestSessionEntryFromStoreKeys(target.store, target.storeKeys);
135133
if (!entry?.sessionId) {
136134
sendJson(res, 404, {
137135
ok: false,

test/scripts/check-session-accessor-boundary.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ describe("session accessor boundary guard", () => {
4747
"src/cron/service/timer.ts",
4848
"src/gateway/session-compaction-checkpoints.ts",
4949
"src/gateway/session-history-state.ts",
50+
"src/gateway/sessions-history-http.ts",
5051
"src/gateway/session-utils.ts",
5152
"src/gateway/managed-image-attachments.ts",
5253
"src/gateway/server-methods/artifacts.ts",

0 commit comments

Comments
 (0)