UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

119 lines (118 loc) • 4.57 kB
import { a as writeRuntimeJson, o as writeRuntimeStdout } from "./runtime-DlO3PTAd.mjs"; import { t as formatCliCommand } from "./command-format-DwEdrDKL.mjs"; import { l as toAgentModelListLike, o as resolveAgentModelFallbackValues } from "./model-input-C9K4a_6k.mjs"; import { t as modelKey } from "./model-key-5zORvMDY.mjs"; import { r as logConfigUpdated } from "./logging-BBc-wU1i.mjs"; import { a as mergePrimaryFallbackConfig, c as resolveModelTarget, f as upsertCanonicalModelConfigEntry, n as ensureFlagCompatibility, o as resolveModelKeysFromEntries, s as resolveModelRefsFromEntries, u as updateConfig } from "./shared-zVYpFkgx.mjs"; import { t as loadModelsConfig } from "./load-config-CI2enNTl.mjs"; //#region src/commands/models/fallbacks-shared.ts function listCommandForFallbackKey(key) { return key === "imageModel" ? "models image-fallbacks list" : "models fallbacks list"; } function getFallbacks(cfg, key) { return resolveAgentModelFallbackValues(cfg.agents?.defaults?.[key]); } function patchDefaultsFallbacks(cfg, params) { const existing = toAgentModelListLike(cfg.agents?.defaults?.[params.key]); return { ...cfg, agents: { ...cfg.agents, defaults: { ...cfg.agents?.defaults, [params.key]: mergePrimaryFallbackConfig(existing, { fallbacks: params.fallbacks }), ...params.models ? { models: params.models } : void 0 } } }; } async function listFallbacksCommand(params, opts, runtime) { ensureFlagCompatibility(opts); const fallbacks = getFallbacks(await loadModelsConfig({ commandName: listCommandForFallbackKey(params.key), runtime }), params.key); if (opts.json) { writeRuntimeJson(runtime, { fallbacks }); return; } if (opts.plain) { for (const entry of fallbacks) writeRuntimeStdout(runtime, entry); return; } runtime.log(`${params.label} (${fallbacks.length}):`); if (fallbacks.length === 0) { runtime.log("- none"); return; } for (const entry of fallbacks) runtime.log(`- ${entry}`); } async function addFallbackCommand(params, modelRaw, runtime) { const updated = await updateConfig((cfg, context) => { const { runtimeConfig } = context; const resolved = resolveModelTarget({ raw: modelRaw, cfg: runtimeConfig }); const nextModels = { ...cfg.agents?.defaults?.models }; const targetKey = upsertCanonicalModelConfigEntry(nextModels, resolved, context); const existing = getFallbacks(cfg, params.key); const existingKeys = resolveModelKeysFromEntries({ cfg: runtimeConfig, entries: getFallbacks(runtimeConfig, params.key) }); return patchDefaultsFallbacks(cfg, { key: params.key, fallbacks: existingKeys.includes(targetKey) ? existing : [...existing, targetKey], models: nextModels }); }, (_, { runtimeConfig }) => [resolveModelTarget({ raw: modelRaw, cfg: runtimeConfig }), ...resolveModelRefsFromEntries({ cfg: runtimeConfig, entries: getFallbacks(runtimeConfig, params.key) })]); logConfigUpdated(runtime); runtime.log(`${params.label}: ${getFallbacks(updated, params.key).join(", ")}`); } async function removeFallbackCommand(params, modelRaw, runtime) { const updated = await updateConfig((cfg, { runtimeConfig }) => { const resolved = resolveModelTarget({ raw: modelRaw, cfg: runtimeConfig }); const targetKey = modelKey(resolved.provider, resolved.model); const existing = getFallbacks(cfg, params.key); const existingKeys = resolveModelKeysFromEntries({ cfg: runtimeConfig, entries: getFallbacks(runtimeConfig, params.key) }); const filtered = existing.filter((_, index) => existingKeys[index] !== targetKey); if (filtered.length === existing.length) throw new Error(`${params.notFoundLabel} not found: ${targetKey}. Run ${formatCliCommand(`openclaw ${listCommandForFallbackKey(params.key)}`)} to see configured fallbacks.`); return patchDefaultsFallbacks(cfg, { key: params.key, fallbacks: filtered }); }, (_, { runtimeConfig }) => [resolveModelTarget({ raw: modelRaw, cfg: runtimeConfig }), ...resolveModelRefsFromEntries({ cfg: runtimeConfig, entries: getFallbacks(runtimeConfig, params.key) })]); logConfigUpdated(runtime); runtime.log(`${params.label}: ${getFallbacks(updated, params.key).join(", ")}`); } async function clearFallbacksCommand(params, runtime) { await updateConfig((cfg) => { return patchDefaultsFallbacks(cfg, { key: params.key, fallbacks: [] }); }); logConfigUpdated(runtime); runtime.log(params.clearedMessage); } //#endregion export { addFallbackCommand, clearFallbacksCommand, listFallbacksCommand, removeFallbackCommand };