UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

67 lines (66 loc) 2.39 kB
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 };