fix(agent): Enable model fallback for prompt-phase quota/rate limit errors
When a prompt submission fails with quota or rate limit errors, throw FailoverError instead of the raw promptError. This enables the model fallback system to try alternative models. Previously, rate limit errors during the prompt phase (before streaming) were thrown directly, bypassing fallback. Only response-phase errors triggered model fallback. Now checks if fallback models are configured and the error is failover- eligible. If so, wraps in FailoverError to trigger the fallback chain.
This commit is contained in:
@@ -318,6 +318,19 @@ export async function runEmbeddedPiAgent(
|
||||
thinkLevel = fallbackThinking;
|
||||
continue;
|
||||
}
|
||||
// FIX: Throw FailoverError for prompt errors when fallbacks configured
|
||||
// This enables model fallback for quota/rate limit errors during prompt submission
|
||||
const promptFallbackConfigured =
|
||||
(params.config?.agents?.defaults?.model?.fallbacks?.length ?? 0) > 0;
|
||||
if (promptFallbackConfigured && isFailoverErrorMessage(errorText)) {
|
||||
throw new FailoverError(errorText, {
|
||||
reason: promptFailoverReason ?? "unknown",
|
||||
provider,
|
||||
model: modelId,
|
||||
profileId: lastProfileId,
|
||||
status: resolveFailoverStatus(promptFailoverReason ?? "unknown"),
|
||||
});
|
||||
}
|
||||
throw promptError;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user