openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
123 lines (122 loc) • 6 kB
JavaScript
import { a as asOptionalRecord } from "./record-coerce-TIsquoVR.mjs";
import { r as isIncognitoSessionKey } from "./session-key-CmZ4o9-l.mjs";
import { r as getCliSessionBinding } from "./cli-session-binding-Dx1VbkI8.mjs";
import { n as readLegacyCompactionMetrics } from "./legacy-compaction-history-DS8GebGO.mjs";
import { _ as captureTranscriptRedactionSnapshot } from "./session-accessor.sqlite-transcript-store-D63Niwm2.mjs";
import { t as resolveCurrentUserProfileDisplay } from "./current-user-profile-display-DwUynhPw.mjs";
import { d as projectForwardedMessages, u as prepareForwardedMessageCronJobNameResolver } from "./chat-display-projection.history-DcguyM30.mjs";
import { a as readSessionMessageByIdAsync, g as session_transcript_readers_exports, t as captureIncognitoSessionHistoryReader } from "./session-transcript-readers-Bka5K3vB.mjs";
import { t as encodeChatHistoryResponsePage } from "./chat-history-response-page-Dku5t8Hs.mjs";
import { n as projectChatHistoryWithReplies } from "./chat-history-reply-messages-DIvwfidN.mjs";
import { t as readChatHistoryPageKernel } from "./chat-history-page-kernel-B4POshUm.mjs";
import os from "node:os";
//#region src/gateway/server-methods/chat-history-pages.ts
function prepareChatHistoryParams(input) {
return getCliSessionBinding(input.entry, "claude-cli")?.sessionId ? {
...input,
cliHistoryHomeDir: process.env.HOME || os.homedir(),
cliHistoryRedaction: captureTranscriptRedactionSnapshot()
} : input;
}
function chatHistoryScope(params) {
return {
agentId: params.sessionAgentId,
sessionId: params.sessionId ?? "",
sessionKey: params.canonicalKey,
storePath: params.storePath,
sessionEntry: params.entry
};
}
async function readChatHistoryMessageById(input, suppliedIncognito) {
const incognito = suppliedIncognito ?? captureIncognitoSessionHistoryReader(chatHistoryScope(input));
if (incognito) {
const captured = structuredClone(input);
return incognito.consume(chatHistoryScope(captured), async (readers) => {
if (getCliSessionBinding(captured.entry, "claude-cli")?.sessionId) {
const { readProcessHeldCliHistoryMessage } = await import("./cli-session-history.process-held-ByiZkY_w.mjs");
return readProcessHeldCliHistoryMessage(prepareChatHistoryParams(captured), incognito);
}
return readers.readSessionMessageByIdAsync(chatHistoryScope(captured), captured.messageId, {
allowResetArchiveFallback: true,
historyVisibility: { sessionStartedAt: captured.entry?.sessionStartedAt }
});
});
}
if (!getCliSessionBinding(input.entry, "claude-cli")?.sessionId || !input.storePath) return readSessionMessageByIdAsync(chatHistoryScope(input), input.messageId, {
allowResetArchiveFallback: true,
historyVisibility: { sessionStartedAt: input.entry?.sessionStartedAt }
});
const params = prepareChatHistoryParams(input);
if (params.entry?.incognito || isIncognitoSessionKey(params.canonicalKey)) {
const { readProcessHeldCliHistoryMessage } = await import("./cli-session-history.process-held-ByiZkY_w.mjs");
return readProcessHeldCliHistoryMessage(params);
}
const { readSessionHistoryPageInWorker } = await import("./session-history-worker-runtime-BomeKrsu.mjs");
return readSessionHistoryPageInWorker({
kind: "rpc-message",
params: {
...params,
storePath: input.storePath
}
});
}
async function readChatHistoryPage(input, signal, suppliedIncognito) {
signal?.throwIfAborted();
const incognito = suppliedIncognito ?? (input.sessionId && input.storePath ? captureIncognitoSessionHistoryReader(chatHistoryScope(input), signal) : void 0);
const binding = getCliSessionBinding(input.entry, "claude-cli");
const params = prepareChatHistoryParams(incognito ? structuredClone(input) : input);
if (incognito) {
const useCliHistory = Boolean(binding?.sessionId && !params.ignoreCliSessionImports);
return incognito.consume(chatHistoryScope(params), async () => {
let page;
if (useCliHistory) {
const { readProcessHeldCliHistory } = await import("./cli-session-history.process-held-ByiZkY_w.mjs");
page = await readProcessHeldCliHistory(params, signal, incognito);
} else page = await incognito.rpc({
...params,
encodeResponse: false
});
const messages = await refreshForwardedLabels(page.messages);
signal?.throwIfAborted();
const refreshed = {
...page,
messages
};
return useCliHistory ? refreshed : encodeChatHistoryResponsePage(refreshed, params);
});
}
if (params.sessionId && params.storePath && (params.entry?.incognito || isIncognitoSessionKey(params.canonicalKey)) && binding?.sessionId && !params.ignoreCliSessionImports) {
const { readProcessHeldCliHistory } = await import("./cli-session-history.process-held-ByiZkY_w.mjs");
const page = await readProcessHeldCliHistory(params, signal);
return {
...page,
messages: await refreshForwardedLabels(page.messages)
};
}
if (!params.sessionId || !params.storePath || params.entry?.incognito || isIncognitoSessionKey(params.canonicalKey)) {
const page = await readChatHistoryPageKernel(params, {
readers: session_transcript_readers_exports,
resolveCurrentUserProfileDisplay,
resolveCronJobName: () => void 0
});
return {
...page,
messages: await refreshForwardedLabels(page.messages)
};
}
const { readSessionHistoryPageInWorker } = await import("./session-history-worker-runtime-BomeKrsu.mjs");
return readSessionHistoryPageInWorker({
kind: "rpc",
params: {
...params,
compactionMetrics: readLegacyCompactionMetrics(params.entry),
sessionId: params.sessionId,
storePath: params.storePath
}
}, signal);
}
async function refreshForwardedLabels(messages) {
return projectChatHistoryWithReplies(messages.filter((message) => asOptionalRecord(message) !== void 0), async (displayMessages) => projectForwardedMessages(displayMessages, await prepareForwardedMessageCronJobNameResolver(displayMessages)));
}
//#endregion
export { readChatHistoryPage as n, readChatHistoryMessageById as t };