diff --git a/src/agents/failover-error.test.ts b/src/agents/failover-error.test.ts index 413e9da8c..ec7e7a195 100644 --- a/src/agents/failover-error.test.ts +++ b/src/agents/failover-error.test.ts @@ -18,6 +18,8 @@ describe("failover-error", () => { expect(resolveFailoverReasonFromError({ status: 502 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 503 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 504 })).toBe("timeout"); + // Anthropic 529 (overloaded) should trigger failover as rate_limit. + expect(resolveFailoverReasonFromError({ status: 529 })).toBe("rate_limit"); }); it("infers format errors from error messages", () => { diff --git a/src/agents/failover-error.ts b/src/agents/failover-error.ts index 5b3884b29..97cdd3ae6 100644 --- a/src/agents/failover-error.ts +++ b/src/agents/failover-error.ts @@ -178,6 +178,9 @@ export function resolveFailoverReasonFromError(err: unknown): FailoverReason | n if (status === 502 || status === 503 || status === 504) { return "timeout"; } + if (status === 529) { + return "rate_limit"; + } if (status === 400) { return "format"; }