fix(agents): keep fallback chain reachable on configured fallback models (#25922)

This commit is contained in:
Peter Steinberger
2026-02-25 01:46:20 +00:00
parent 559b5eab71
commit bf5a96ad63
3 changed files with 56 additions and 5 deletions

View File

@@ -206,12 +206,24 @@ function resolveFallbackCandidates(params: {
if (params.fallbacksOverride !== undefined) {
return params.fallbacksOverride;
}
// Skip configured fallback chain when the user runs a non-default override.
// In that case, retry should return directly to configured primary.
if (!sameModelCandidate(normalizedPrimary, configuredPrimary)) {
return []; // Override model failed → go straight to configured default
const configuredFallbacks = resolveAgentModelFallbackValues(
params.cfg?.agents?.defaults?.model,
);
if (sameModelCandidate(normalizedPrimary, configuredPrimary)) {
return configuredFallbacks;
}
return resolveAgentModelFallbackValues(params.cfg?.agents?.defaults?.model);
// Preserve resilience after failover: when current model is one of the
// configured fallback refs, keep traversing the configured fallback chain.
const isConfiguredFallback = configuredFallbacks.some((raw) => {
const resolved = resolveModelRefFromString({
raw: String(raw ?? ""),
defaultProvider,
aliasIndex,
});
return resolved ? sameModelCandidate(resolved.ref, normalizedPrimary) : false;
});
// Keep legacy override behavior for ad-hoc models outside configured chain.
return isConfiguredFallback ? configuredFallbacks : [];
})();
for (const raw of modelFallbacks) {