diff --git a/src/agents/failover-error.test.ts b/src/agents/failover-error.test.ts index 38e3530f011..9f312d5c928 100644 --- a/src/agents/failover-error.test.ts +++ b/src/agents/failover-error.test.ts @@ -70,8 +70,8 @@ describe("failover-error", () => { expect(resolveFailoverReasonFromError({ status: 499 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 400 })).toBe("format"); expect(resolveFailoverReasonFromError({ status: 422 })).toBe("format"); - // Keep the status-only path behavior-preserving and conservative. - expect(resolveFailoverReasonFromError({ status: 500 })).toBeNull(); + // Transient server errors (500/502/503/504) should trigger failover as timeout. + expect(resolveFailoverReasonFromError({ status: 500 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 502 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 503 })).toBe("timeout"); expect(resolveFailoverReasonFromError({ status: 504 })).toBe("timeout"); diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index ff94ea58831..0167e7f8d0f 100644 --- a/src/agents/pi-embedded-helpers/errors.ts +++ b/src/agents/pi-embedded-helpers/errors.ts @@ -494,7 +494,7 @@ export function classifyFailoverReasonFromHttpStatus( } return "timeout"; } - if (status === 502 || status === 504) { + if (status === 500 || status === 502 || status === 504) { return "timeout"; } if (status === 529) {