openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
67 lines (66 loc) • 2.39 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js";
import { f as resolveAgentIdFromSessionKey } from "./session-key-BnWWjqNc.js";
import { o as resolveSessionStorePathCore } from "./paths-CXdaYWF_.js";
import "./session-accessor-YsytfDtG.js";
import { u as loadSessionEntryReadOnly } from "./session-accessor.sqlite-entry-CWk3jL7s.js";
import { n as getCliSessionBinding } from "./cli-session-binding-Aa6nlDa8.js";
import { d as resolveSessionLifecycleTimestamps } from "./lifecycle-BaroCBMc.js";
import { n as resolveSessionResetPolicy, t as evaluateSessionFreshness } from "./reset-policy-Bcf937ne.js";
import "./reset-DkY1cXo4.js";
//#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 };