UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

73 lines (72 loc) • 4.25 kB
import { c as normalizeOptionalLowercaseString, l as normalizeOptionalString } from "./string-coerce-6kR-86XC.mjs"; import { r as resolveCollapsedSessionAuthPinSource } from "./auth-profile-override-provenance-DEDEMC3M.mjs"; import { i as resolveProviderIdForAuth } from "./provider-auth-aliases-CsUniyj5.mjs"; import { i as isUserModelAuthProfileId } from "./profile-usage-stats-CsXf5PwL.mjs"; import { a as findPersistedAuthProfileCredential, s as getRuntimeAuthProfileStoreSnapshot } from "./store-a3_lxCDn.mjs"; import { t as resolveModelProviderAuthConfig } from "./model-auth-provider-route-WMtQQmC3.mjs"; import { a as applyModelOverrideToSessionEntry } from "./model-overrides-h9qKlxn9.mjs"; //#region src/sessions/auth-profile-preservation.ts function resolvePinnedAuthProfileProvider(params) { return getRuntimeAuthProfileStoreSnapshot(params.agentDir)?.profiles[params.profileId]?.provider ?? findPersistedAuthProfileCredential({ agentDir: params.agentDir, profileId: params.profileId })?.provider ?? params.cfg.auth?.profiles?.[params.profileId]?.provider; } /** Checks whether a pinned session auth profile can authenticate the selected provider. */ function shouldPreserveSessionAuthProfileOverride(params) { const profileOverride = normalizeOptionalString(params.entry.authProfileOverride); const provider = normalizeOptionalLowercaseString(params.provider); if (!profileOverride || !provider) return false; const resolvesToTargetProvider = (rawProvider, storedCredential = false) => { const candidate = normalizeOptionalLowercaseString(rawProvider); const lookupParams = { config: params.cfg, ...params.metadataSnapshot ? { metadataSnapshot: params.metadataSnapshot } : {} }; return Boolean(candidate && resolveProviderIdForAuth(candidate, { ...lookupParams, storedCredential }) === resolveProviderIdForAuth(provider, lookupParams)); }; const recordedProvider = resolvePinnedAuthProfileProvider({ cfg: params.cfg, agentDir: params.agentDir, profileId: profileOverride }); if (recordedProvider) return resolvesToTargetProvider(recordedProvider, true); const delimiterIndex = profileOverride.indexOf(":"); if (delimiterIndex < 0 || isUserModelAuthProfileId(profileOverride)) return resolvesToTargetProvider(params.currentProvider); return resolvesToTargetProvider(profileOverride.slice(0, delimiterIndex), true); } /** Missing credentials preserve explicit same-provider intent until authentication reports recovery. */ function shouldPreserveUnavailableSessionAuthProfileOverride(params) { const profileId = normalizeOptionalString(params.entry.authProfileOverride); return Boolean(profileId && !params.store.profiles[profileId] && resolveCollapsedSessionAuthPinSource(params.entry) === "user" && shouldPreserveSessionAuthProfileOverride(params)); } /** Applies a user model selection without dropping a compatible pinned auth profile. */ function applyModelOverrideWithAuthProfileCompatibility(params) { return applyModelOverrideToSessionEntry({ entry: params.entry, selection: params.selection, ...params.profileOverride ? { profileOverride: params.profileOverride } : {}, ...params.profileOverrideSource ? { profileOverrideSource: params.profileOverrideSource } : {}, ...params.selectionSource ? { selectionSource: params.selectionSource } : {}, ...params.explicitDefaultSelection ? { explicitDefaultSelection: params.explicitDefaultSelection } : {}, ...params.markLiveSwitchPending !== void 0 ? { markLiveSwitchPending: params.markLiveSwitchPending } : {}, preserveAuthProfileOverride: !params.profileOverride && shouldPreserveSessionAuthProfileOverride({ cfg: resolveModelProviderAuthConfig({ config: params.cfg, provider: params.selection.provider, modelId: params.selection.model, metadataSnapshot: params.metadataSnapshot }), agentDir: params.agentDir, entry: params.entry, currentProvider: params.currentProvider, provider: params.selection.provider, ...params.metadataSnapshot ? { metadataSnapshot: params.metadataSnapshot } : {} }) }); } //#endregion export { shouldPreserveSessionAuthProfileOverride as n, shouldPreserveUnavailableSessionAuthProfileOverride as r, applyModelOverrideWithAuthProfileCompatibility as t };