UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

97 lines (96 loc) 3.27 kB
import { t as normalizeOptionalSecretInput } from "../../normalize-secret-input-Df_qhWv_.js"; import "../../provider-auth-BeZ7NZUU.js"; import { t as createProviderApiKeyAuthMethod } from "../../provider-api-key-auth-mNtReYE0.js"; import { t as definePluginEntry } from "../../plugin-entry-zfBGJaNO.js"; import { i as buildOpenAICompatibleProviderCatalog } from "../../provider-catalog-live-runtime-EZZSw18v.js"; import { i as applyLitellmConfig, r as LITELLM_DEFAULT_MODEL_REF } from "../../onboard-1qeSg7iJ.js"; import { t as buildLitellmImageGenerationProvider } from "../../image-generation-provider-BKUG6yOG.js"; import { t as buildLitellmProvider } from "../../provider-catalog-CR5_9b7m.js"; //#region extensions/litellm/index.ts const PROVIDER_ID = "litellm"; function applyCustomBaseUrlForNonInteractiveSetup(cfg, customBaseUrl) { const baseUrl = normalizeOptionalSecretInput(customBaseUrl)?.replace(/\/+$/, ""); if (!baseUrl) return cfg; const existingProvider = cfg.models?.providers?.[PROVIDER_ID]; return { ...cfg, models: { ...cfg.models, providers: { ...cfg.models?.providers, [PROVIDER_ID]: { ...existingProvider, baseUrl, models: existingProvider?.models ?? [] } } } }; } var litellm_default = definePluginEntry({ id: PROVIDER_ID, name: "LiteLLM Provider", description: "Bundled LiteLLM provider plugin", register(api) { const apiKeyAuth = createProviderApiKeyAuthMethod({ providerId: PROVIDER_ID, methodId: "api-key", label: "LiteLLM API key", hint: "Unified gateway for 100+ LLM providers", optionKey: "litellmApiKey", flagName: "--litellm-api-key", envVar: "LITELLM_API_KEY", promptMessage: "Enter LiteLLM API key", defaultModel: LITELLM_DEFAULT_MODEL_REF, applyConfig: (cfg) => applyLitellmConfig(cfg), noteTitle: "LiteLLM", noteMessage: [ "LiteLLM provides a unified API to 100+ LLM providers.", "Get your API key from your LiteLLM proxy or https://litellm.ai", "Default proxy runs on http://localhost:4000" ].join("\n"), wizard: { choiceId: `${PROVIDER_ID}-api-key`, choiceLabel: "LiteLLM API key", groupId: PROVIDER_ID, groupLabel: "LiteLLM", groupHint: "Unified LLM gateway (100+ providers)", methodId: "api-key" } }); api.registerProvider({ id: PROVIDER_ID, label: "LiteLLM", docsPath: "/providers/litellm", envVars: ["LITELLM_API_KEY"], auth: [{ ...apiKeyAuth, runNonInteractive: async (ctx) => { const runNonInteractive = apiKeyAuth.runNonInteractive; if (!runNonInteractive) return null; return await runNonInteractive({ ...ctx, config: applyCustomBaseUrlForNonInteractiveSetup(ctx.config, ctx.opts.customBaseUrl) }); } }], catalog: { order: "simple", run: (ctx) => buildOpenAICompatibleProviderCatalog({ ctx, providerId: PROVIDER_ID, buildProvider: buildLitellmProvider, allowExplicitBaseUrl: true, modelDiscovery: { endpointPath: "v1/models" } }) }, staticCatalog: { order: "simple", run: async () => ({ provider: buildLitellmProvider() }) } }); api.registerImageGenerationProvider(buildLitellmImageGenerationProvider()); } }); //#endregion export { litellm_default as default };