diff --git a/src/agents/failover-error.test.ts b/src/agents/failover-error.test.ts index 38e3530f01..9f312d5c92 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 ff94ea5883..0167e7f8d0 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) {