openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
66 lines (65 loc) • 2.36 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-1VuiLaaR.mjs";
import { l as resolveAgentIdFromSessionKey } from "./session-key-C09ow4h0.mjs";
import { l as resolveSessionStorePathCore } from "./paths-dpReqUI8.mjs";
import { r as getCliSessionBinding } from "./cli-session-binding-CMk8AbZT.mjs";
import { o as loadSessionEntryReadOnly } from "./session-accessor.sqlite-entry-Dn_MsDKD.mjs";
import "./session-accessor-BDmTPdtx.mjs";
import { a as resolveSessionResetPolicy, i as evaluateSessionFreshness } from "./reset-BvpOh-VC.mjs";
import { a as resolveSessionLifecycleTimestamps } from "./lifecycle-BU4MFl1q.mjs";
//#region src/config/sessions/entry-freshness.ts
function hasProviderOwnedSession(entry) {
const provider = normalizeOptionalString(entry?.providerOverride ?? entry?.modelProvider);
return Boolean(provider && getCliSessionBinding(entry, provider));
}
/** Resolves one session entry's reset freshness using the runtime lifecycle rules. */
function resolveSessionEntryResetFreshness(params) {
const agentId = params.agentId ?? resolveAgentIdFromSessionKey(params.sessionKey, params.defaultAgentId);
const sessionCfg = params.sessionCfg;
const storePath = params.storePath ?? resolveSessionStorePathCore(sessionCfg?.store, {
agentId,
env: params.env
});
const entry = loadSessionEntryReadOnly({
...params,
agentId,
storePath
});
const resetType = params.resetType;
const resetPolicy = resolveSessionResetPolicy({
sessionCfg,
resetType,
resetOverride: params.resetOverride
});
const lifecycleTimestamps = resolveSessionLifecycleTimestamps({
entry,
agentId,
sessionKey: params.sessionKey,
storePath
});
const base = {
lifecycleTimestamps,
resetPolicy,
resetType
};
if (!entry) return {
state: "missing",
entry: void 0,
freshness: void 0,
...base
};
const freshness = resetPolicy.configured !== true && hasProviderOwnedSession(entry) ? { fresh: true } : evaluateSessionFreshness({
updatedAt: entry.updatedAt,
sessionStartedAt: lifecycleTimestamps.sessionStartedAt,
lastInteractionAt: lifecycleTimestamps.lastInteractionAt,
now: params.now ?? Date.now(),
policy: resetPolicy
});
return {
state: freshness.fresh ? "fresh" : "stale",
entry,
freshness,
...base
};
}
//#endregion
export { resolveSessionEntryResetFreshness as n, hasProviderOwnedSession as t };