UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

89 lines (88 loc) 4.66 kB
import { c as resolveProviderModelMaterializationAuthMode, l as resolveProviderModelRouteAuthRequirement } from "./openai-model-routes-Bte2KVl5.js"; import { L as shouldPreferProviderRuntimeResolvedModel } from "./provider-runtime-BRJDPNgk.js"; import { t as agentRuntimeAuthPlanMatchesTarget } from "./prepare-auth-Ci9igqt8.js"; import { t as materializePreparedRuntimeModel } from "./materialize-model-DTezazoG.js"; //#region src/agents/runtime-plan/credential-scoped-model.ts function providerUsesCredentialScopedModelMetadata(params) { return shouldPreferProviderRuntimeResolvedModel({ provider: params.provider, config: params.config, workspaceDir: params.workspaceDir, env: params.env ?? process.env, context: { config: params.config, agentDir: params.agentDir, workspaceDir: params.workspaceDir, provider: params.provider, modelId: params.modelId } }); } /** Reuses forwarded model auth only when the prepared plan owns the exact target. */ function resolveReusableRuntimeModelAuth(params) { const plan = params.plan && agentRuntimeAuthPlanMatchesTarget(params.plan, { provider: params.provider, modelId: params.modelId }) ? params.plan : void 0; const authProfileId = params.authProfileId ?? plan?.forwardedAuthProfileId; const authProfileMode = resolveProviderModelMaterializationAuthMode(plan?.selectedAuthMode); return { plan, authProfileId, modelAuth: authProfileId !== void 0 ? { authProfileId } : authProfileMode !== void 0 ? { authProfileMode } : void 0 }; } /** Direct auth after a profile attempt must drop credential-scoped model metadata. */ function shouldForceDirectAuthFallbackModelResolve(params) { return params.attempt.kind === "direct" && params.priorProfileAttempted; } /** Re-resolves when the selected profile or direct credential can change provider metadata. */ function shouldForceCredentialScopedModelResolve(plan, requestedProfileId, providerUsesProfileScopedModelMetadata = false) { return Boolean(plan.forwardedAuthProfileId || requestedProfileId || providerUsesProfileScopedModelMetadata && plan.selectedAuthMode); } /** Re-resolves metadata whenever the prepared credential can change provider limits. */ function shouldMaterializeAuthPlanModel(plan, requestedProfileId, providerUsesProfileScopedModelMetadata = false) { return Boolean(plan.modelRoute || shouldForceCredentialScopedModelResolve(plan, requestedProfileId, providerUsesProfileScopedModelMetadata)); } function resolveCredentialScopedAuthAttemptModelDecision(params) { const forceResolve = shouldForceDirectAuthFallbackModelResolve(params); const shouldMaterialize = shouldMaterializeAuthPlanModel(params.attempt.plan, params.requestedProfileId, params.providerUsesProfileScopedModelMetadata) || forceResolve; return { forceResolve, shouldMaterialize, authRequirement: params.attempt.plan.modelRoute?.authRequirement ?? (shouldMaterialize && params.providerUsesProfileScopedModelMetadata ? resolveProviderModelRouteAuthRequirement(params.attempt.plan.selectedAuthMode) : void 0) }; } function hasPreparedAuthAttemptModelMetadata(params) { return params.attempts.some((attempt) => params.providerUsesProfileScopedModelMetadata && (attempt.kind === "profile" || Boolean(attempt.plan.forwardedAuthProfileId)) || Boolean(attempt.plan.modelRoute) || attempt.allowAuthProfileFallback !== void 0); } function createPreparedRuntimeModelMaterializer(params) { const materializedRouteModels = /* @__PURE__ */ new WeakMap(); const materializeUncached = async (plan, forceResolve = false) => { const model = params.getModel(); if (params.nativeModelOwned) return model; return await materializePreparedRuntimeModel({ plan, provider: params.provider, modelId: params.modelId, config: params.config, model, forceResolve: forceResolve || shouldForceCredentialScopedModelResolve(plan, params.requestedProfileId, params.providerUsesProfileScopedModelMetadata), resolveModel: (request) => params.resolveModel(request) }) ?? model; }; const materialize = (plan) => { if (!plan.modelRoute) return materializeUncached(plan); const cached = materializedRouteModels.get(plan); if (cached) return cached; const materialized = materializeUncached(plan); materializedRouteModels.set(plan, materialized); return materialized; }; return { materialize, materializeUncached }; } //#endregion export { resolveReusableRuntimeModelAuth as a, resolveCredentialScopedAuthAttemptModelDecision as i, hasPreparedAuthAttemptModelMetadata as n, shouldForceDirectAuthFallbackModelResolve as o, providerUsesCredentialScopedModelMetadata as r, createPreparedRuntimeModelMaterializer as t };