UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

34 lines (33 loc) 1.67 kB
import { n as resolveProviderIdForAuth } from "./provider-auth-aliases-DhA9c2am.js"; import { r as resolveManifestProviderAuthChoices } from "./provider-auth-choices-DsRM415K.js"; import { a as supportsSetupTextInference, i as supportsSetupManualSecret } from "./setup-inference-auth-options-DDoD9isn.js"; //#region src/gateway/server-methods/model-provider-capabilities.ts function resolveModelProviderCapabilities(params) { const lookup = { ...params, env: params.env ?? process.env, includeUntrustedWorkspacePlugins: false }; const resolveProvider = (provider) => resolveProviderIdForAuth(provider, lookup); const { providers, modelCatalogProviders } = params.metadataSnapshot.owners; const modelProviders = new Set([...providers.keys(), ...modelCatalogProviders.keys()].map(resolveProvider)); const capabilities = /* @__PURE__ */ new Map(); for (const choice of resolveManifestProviderAuthChoices(lookup)) { const provider = resolveProvider(choice.providerId); if (!modelProviders.has(provider) || !supportsSetupTextInference(choice.onboardingScopes)) continue; const current = capabilities.get(provider); const apiKeySupported = choice.methodId === "api-key"; const quickApiKeySetup = apiKeySupported && supportsSetupManualSecret(choice); capabilities.set(provider, { provider, apiKeySupported: current?.apiKeySupported === true || apiKeySupported, quickApiKeySetup: current?.quickApiKeySetup === true || quickApiKeySetup }); } return { capabilities: [...capabilities.values()].toSorted((a, b) => a.provider.localeCompare(b.provider)), resolveProvider }; } //#endregion export { resolveModelProviderCapabilities as t };