UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

66 lines (65 loc) • 2.36 kB
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 };