openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
85 lines (84 loc) • 3.52 kB
JavaScript
import { o as resolveSessionStorePathCore } from "./paths-CXdaYWF_.js";
import { Ft as forkSessionEntryFromParentTarget, It as resolveSessionParentForkDecision, vt as forkSessionFromParentTranscript } from "./session-accessor-YsytfDtG.js";
import { n as MODEL_SELECTION_LOCKED_PARENT_FORK_MESSAGE, o as assertModelSelectionUnlocked } from "./model-overrides-Bm7jo7Di.js";
//#region src/auto-reply/reply/session-fork.ts
function resolveParentForkStorePath(params) {
return params.storePath ?? resolveSessionStorePathCore(params.config?.session?.store, { agentId: params.agentId });
}
async function resolveParentForkDecision(params) {
assertModelSelectionUnlocked(params.parentEntry, MODEL_SELECTION_LOCKED_PARENT_FORK_MESSAGE);
return await resolveSessionParentForkDecision({
parentEntry: params.parentEntry,
storePath: resolveParentForkStorePath(params)
});
}
async function forkSessionFromParent(params) {
assertModelSelectionUnlocked(params.parentEntry, MODEL_SELECTION_LOCKED_PARENT_FORK_MESSAGE);
const storePath = resolveParentForkStorePath(params);
const fork = await forkSessionFromParentTranscript({
agentId: params.agentId,
...params.commitGuard ? { commitGuard: params.commitGuard } : {},
parentEntry: params.parentEntry,
parentSessionKey: params.parentSessionKey,
sessionKey: params.sessionKey,
storePath,
...params.forkFrom ? { forkFrom: params.forkFrom } : {},
...params.targetStorePath ? { targetStorePath: params.targetStorePath } : {}
});
return fork.status === "created" ? fork.transcript : null;
}
async function forkSessionFromParentWithDecision(params) {
assertModelSelectionUnlocked(params.parentEntry, MODEL_SELECTION_LOCKED_PARENT_FORK_MESSAGE);
return await forkSessionFromParentTranscript({
agentId: params.agentId,
...params.commitGuard ? { commitGuard: params.commitGuard } : {},
enforceTokenLimit: true,
...params.maxTokens ? { maxTokens: params.maxTokens } : {},
parentEntry: params.parentEntry,
parentSessionKey: params.parentSessionKey,
sessionKey: params.sessionKey,
storePath: resolveParentForkStorePath(params),
...params.forkFrom ? { forkFrom: params.forkFrom } : {},
...params.targetStorePath ? { targetStorePath: params.targetStorePath } : {}
});
}
function normalizeForkTarget(params) {
const keys = /* @__PURE__ */ new Set();
const remember = (value) => {
const trimmed = value.trim();
if (trimmed) keys.add(trimmed);
};
remember(params.canonicalKey);
for (const key of params.storeKeys ?? []) remember(key);
return {
canonicalKey: params.canonicalKey,
storeKeys: [...keys]
};
}
/**
* Forks the parent transcript and persists the child session entry through one
* storage boundary operation.
*/
async function forkSessionEntryFromParent(params) {
const storePath = resolveParentForkStorePath(params);
return await forkSessionEntryFromParentTarget({
agentId: params.agentId,
commitGuard: params.commitGuard,
decisionSkipPatch: params.decisionSkipPatch,
fallbackEntry: params.fallbackEntry,
parentTarget: normalizeForkTarget({
canonicalKey: params.parentSessionKey,
storeKeys: params.parentStoreKeys
}),
patch: params.patch,
sessionTarget: normalizeForkTarget({
canonicalKey: params.sessionKey,
storeKeys: params.sessionStoreKeys
}),
skipForkWhen: params.skipForkWhen,
skipPatch: params.skipPatch,
storePath
});
}
//#endregion
export { resolveParentForkDecision as i, forkSessionFromParent as n, forkSessionFromParentWithDecision as r, forkSessionEntryFromParent as t };