openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
34 lines (33 loc) • 1.67 kB
JavaScript
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 };