UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

102 lines (101 loc) 3.79 kB
import { c as normalizeOptionalString } from "../../string-coerce-mnp54Vah.js"; import { c as isRecord } from "../../utils-CCC-BEJH.js"; import "../../string-coerce-runtime-CEGJWkQ_.js"; import { t as definePluginEntry } from "../../plugin-entry-C7DUzV0e.js"; import { l as normalizeProviderId } from "../../provider-model-shared-D-lyTLvb.js"; import { t as createProviderApiKeyAuthMethod } from "../../provider-api-key-auth-VMMQYUA9.js"; import "../../provider-auth-api-key-nSdfYNnB.js"; import { a as normalizeKimiCodingModelId, i as buildKimiCodingProvider } from "../../provider-catalog-nrg9oGFW.js"; import { r as applyKimiCodeConfig, t as KIMI_CODING_MODEL_REF } from "../../onboard-DEUygfTv.js"; import { t as KIMI_REPLAY_POLICY } from "../../replay-policy-Nzl7UaSb.js"; import { a as wrapKimiProviderStream } from "../../stream-DeQ91GNt.js"; //#region extensions/kimi-coding/index.ts const PLUGIN_ID = "kimi"; const PROVIDER_ID = "kimi"; function findExplicitProviderConfig(providers, providerId) { if (!providers) return; const normalizedProviderId = normalizeProviderId(providerId); const match = Object.entries(providers).find(([configuredProviderId]) => normalizeProviderId(configuredProviderId) === normalizedProviderId); return isRecord(match?.[1]) ? match[1] : void 0; } var kimi_coding_default = definePluginEntry({ id: PLUGIN_ID, name: "Kimi Provider", description: "Bundled Kimi provider plugin", register(api) { api.registerProvider({ id: PROVIDER_ID, label: "Kimi", aliases: ["kimi-code", "kimi-coding"], docsPath: "/providers/moonshot", envVars: ["KIMI_API_KEY", "KIMICODE_API_KEY"], auth: [createProviderApiKeyAuthMethod({ providerId: PROVIDER_ID, methodId: "api-key", label: "Kimi Code API key (subscription)", hint: "Kimi K2.6 + Kimi", optionKey: "kimiCodeApiKey", flagName: "--kimi-code-api-key", envVar: "KIMI_API_KEY", promptMessage: "Enter Kimi API key", defaultModel: KIMI_CODING_MODEL_REF, expectedProviders: [ "kimi", "kimi-code", "kimi-coding" ], applyConfig: (cfg) => applyKimiCodeConfig(cfg), noteMessage: ["Kimi uses a dedicated coding endpoint and API key.", "Get your API key at: https://www.kimi.com/code/en"].join("\n"), noteTitle: "Kimi", wizard: { choiceId: "kimi-code-api-key", choiceLabel: "Kimi Code API key (subscription)", groupId: "moonshot", groupLabel: "Moonshot AI (Kimi K2.6)", groupHint: "Kimi K2.6" } })], catalog: { order: "simple", run: async (ctx) => { const apiKey = ctx.resolveProviderApiKey(PROVIDER_ID).apiKey; if (!apiKey) return null; const explicitProvider = findExplicitProviderConfig(ctx.config.models?.providers, PROVIDER_ID); const builtInProvider = buildKimiCodingProvider(); const explicitBaseUrl = normalizeOptionalString(explicitProvider?.baseUrl) ?? ""; const explicitHeaders = isRecord(explicitProvider?.headers) ? explicitProvider.headers : void 0; return { provider: { ...builtInProvider, ...explicitBaseUrl ? { baseUrl: explicitBaseUrl } : {}, ...explicitHeaders ? { headers: { ...builtInProvider.headers, ...explicitHeaders } } : {}, apiKey } }; } }, buildReplayPolicy: () => KIMI_REPLAY_POLICY, normalizeResolvedModel: ({ model }) => { const normalizedId = normalizeKimiCodingModelId(model.id); return normalizedId === model.id ? void 0 : { ...model, id: normalizedId }; }, resolveThinkingProfile: () => ({ levels: [{ id: "off", label: "off" }, { id: "low", label: "on" }], defaultLevel: "off" }), wrapStreamFn: wrapKimiProviderStream }); } }); //#endregion export { kimi_coding_default as default };