diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index f72a763f8..532085f6e 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -12,6 +12,7 @@ - Fixed Mistral streams being aborted mid-generation (e.g. during long thinking) after the request timeout; the timeout now applies only to waiting for response headers ([#10609](https://github.com/earendil-works/pi/issues/10609)) - Fixed OpenRouter router models such as `openrouter/auto` showing a cost of -$1,000,000 per 1M tokens; OpenRouter's negative placeholder prices are now 0 - Fixed Anthropic `strict: "prefer"` tools failing when the provider rejects the strict tool set for grammar size, tool count, or union limits; requests now retry once with preferred tools non-strict while keeping `strict: "require"` tools strict ([#10409](https://github.com/earendil-works/pi/issues/10409)) +- Fixed "The upstream provider returned an error" not being retried as a transient provider error ([#10842](https://github.com/earendil-works/pi/issues/10842)) ## [1.1.0] - 2026-10-07 diff --git a/packages/ai/src/utils/retry.ts b/packages/ai/src/utils/retry.ts index 692f7f9de..8f3128c19 100644 --- a/packages/ai/src/utils/retry.ts +++ b/packages/ai/src/utils/retry.ts @@ -48,8 +48,9 @@ const RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([ "internal.?error", // Wrapper/provider text for transient upstream failures, including OpenRouter - // "Provider returned error" responses (#2264). - "provider.?returned.?error", + // "Provider returned error" responses (#2264) and gateway wording such as + // "The upstream provider returned an error" (#10842). + "provider.?returned.?(?:an.?)?error", "exceeded request buffer limit while retrying upstream", // Network, proxy, and fetch transport failures. This includes OpenAI Codex