diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index bfa23f06a..ad32ea8c6 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -11,6 +11,7 @@ - Fixed Amazon Bedrock prompt-cache points for Claude Fable 5 and Claude Sonnet 5 ([#6235](https://github.com/earendil-works/pi/issues/6235)). - Fixed DS4 server context overflow detection for `Prompt has ... tokens, but the configured context size is ... tokens` errors ([#6262](https://github.com/earendil-works/pi/issues/6262)). - Fixed OpenAI Codex WebSocket sessions to rotate cached connections before the backend's 60-minute limit, avoiding connection-limit failures on long sessions ([#6268](https://github.com/earendil-works/pi/issues/6268)). +- Fixed retry classification for Cloudflare 524 timeout responses ([#6239](https://github.com/earendil-works/pi/issues/6239)). ### Added diff --git a/packages/ai/src/utils/retry.ts b/packages/ai/src/utils/retry.ts index d3a95a0a4..6f1dd0fd5 100644 --- a/packages/ai/src/utils/retry.ts +++ b/packages/ai/src/utils/retry.ts @@ -33,6 +33,7 @@ const RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([ "502", "503", "504", + "524", "service.?unavailable", "server.?error", "internal.?error", diff --git a/packages/ai/test/retry.test.ts b/packages/ai/test/retry.test.ts index 17273c70b..9ae6d86f8 100644 --- a/packages/ai/test/retry.test.ts +++ b/packages/ai/test/retry.test.ts @@ -33,6 +33,11 @@ describe("provider retry classification", () => { expect( isRetryableAssistantError(fauxAssistantMessage("", { stopReason: "error", errorMessage: "overloaded_error" })), ).toBe(true); + expect( + isRetryableAssistantError( + fauxAssistantMessage("", { stopReason: "error", errorMessage: "524 status code (no body)" }), + ), + ).toBe(true); expect(isRetryableAssistantError(fauxAssistantMessage("not an error"))).toBe(false); }); });