UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

88 lines (87 loc) • 3.74 kB
import { l as normalizeOptionalString } from "./string-coerce-1VuiLaaR.mjs"; import { l as resolveAgentIdFromSessionKey } from "./session-key-DY3MOX4N.mjs"; import { c as resolveSessionStorePathCore } from "./paths-Bonddxfk.mjs"; import { r as resolveSqliteSessionKey } from "./session-accessor.sqlite-scope-helpers-CfDTAEsL.mjs"; import { r as getCliSessionBinding } from "./cli-session-binding-Dx1VbkI8.mjs"; import { s as isNativeSessionEntryRead } from "./session-entry-read-ordered-D14zdHVq.mjs"; import { s as loadSessionEntryReadOnly } from "./session-accessor.sqlite-entry-DLa7_9ui.mjs"; import "./session-accessor-C3ljJ974.mjs"; import { c as withSessionEntriesFromStoresInWorker } from "./session-entry-read-runtime-BdnQjoL6.mjs"; import { a as resolveSessionResetPolicy, i as evaluateSessionFreshness } from "./reset-SWON9U-K.mjs"; import { n as resolveSessionLifecycleTimestamps } from "./lifecycle-BJGMGqxC.mjs"; //#region src/config/sessions/entry-freshness.ts function hasProviderOwnedSession(entry) { const provider = normalizeOptionalString(entry?.providerOverride ?? entry?.modelProvider); return Boolean(provider && getCliSessionBinding(entry, provider)); } function resolveFreshnessScope(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 }); return { ...params, agentId, storePath }; } /** @deprecated Runtime callers should await resolveSessionEntryResetFreshnessAsync. */ function resolveSessionEntryResetFreshness(params) { const scope = resolveFreshnessScope(params); const entry = loadSessionEntryReadOnly(scope); return resolvePreparedSessionEntryResetFreshness(params, entry, resolveSessionLifecycleTimestamps({ ...scope, entry })); } /** Entry and transcript fallback belong to the same retained worker snapshot. */ async function resolveSessionEntryResetFreshnessAsync(params) { const scope = resolveFreshnessScope(params); if (isNativeSessionEntryRead(scope, scope.agentId)) return resolveSessionEntryResetFreshness(scope); const sessionKey = resolveSqliteSessionKey(scope.sessionKey, scope.agentId); return withSessionEntriesFromStoresInWorker([{ ...scope, sessionKeys: [sessionKey], lifecycleSessionKey: sessionKey }], ([read]) => { read.assertCurrent(); return resolvePreparedSessionEntryResetFreshness(params, read.result.entries[0]?.entry, read.result.lifecycleTimestamps); }, { ordered: true }); } /** Consume entry and lifecycle facts from one retained read without opening another snapshot. */ function resolvePreparedSessionEntryResetFreshness(params, entry, lifecycleTimestamps) { const resetType = params.resetType; const resetPolicy = resolveSessionResetPolicy({ sessionCfg: params.sessionCfg, resetType, resetOverride: params.resetOverride }); 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 { resolveSessionEntryResetFreshnessAsync as i, resolvePreparedSessionEntryResetFreshness as n, resolveSessionEntryResetFreshness as r, hasProviderOwnedSession as t };