UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

53 lines (52 loc) 1.77 kB
import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js"; import { n as resolveImageFallbackDefaultProvider, t as resolveImageFallbackCandidates } from "./model-fallback-candidates-BMvvbJ_T.js"; import { f as runFallbackAttempt, h as throwFallbackFailureSummary } from "./model-fallback-attempt-hBQW6kuE.js"; //#region src/agents/model-fallback-image.ts async function runWithImageModelFallback(params) { const candidates = resolveImageFallbackCandidates({ cfg: params.cfg, defaultProvider: resolveImageFallbackDefaultProvider(params.cfg), modelOverride: params.modelOverride }); if (candidates.length === 0) throw new Error("No image model configured. Set agents.defaults.imageModel.primary or agents.defaults.imageModel.fallbacks."); const attempts = []; let lastError; for (const [i, candidate] of candidates.entries()) { const attemptRun = await runFallbackAttempt({ run: params.run, ...candidate, attempts, attempt: i + 1, total: candidates.length, abortSignal: params.abortSignal }).catch((error) => { params.abortSignal?.throwIfAborted(); throw error; }); if ("success" in attemptRun) return attemptRun.success; const err = attemptRun.error; lastError = err; attempts.push({ provider: candidate.provider, model: candidate.model, error: formatErrorMessage(err) }); await params.onError?.({ provider: candidate.provider, model: candidate.model, error: err, attempt: i + 1, total: candidates.length }); } return throwFallbackFailureSummary({ attempts, candidates, lastError, label: "image models", formatAttempt: (attempt) => `${attempt.provider}/${attempt.model}: ${attempt.error}`, cfg: params.cfg }); } //#endregion export { runWithImageModelFallback as t };