From 5f4b5d728375f173b9edcbafe727acbb1d947fc6 Mon Sep 17 00:00:00 2001 From: Altay Date: Fri, 17 Apr 2026 23:51:53 +0300 Subject: [PATCH] fix: route explicit 402 wrappers through classifier --- src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts | 3 +++ src/agents/pi-embedded-helpers/errors.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts index 029550a09f3..94e5d67adab 100644 --- a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts +++ b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts @@ -941,6 +941,9 @@ describe("classifyFailoverReasonFromHttpStatus – 402 temporary limits", () => it("keeps explicit 402 rate-limit messages in the rate_limit lane", () => { const transientMessage = "rate limit exceeded"; + expect(classifyFailoverReasonFromHttpStatus(402, `402: ${transientMessage}`)).toBe( + "rate_limit", + ); expect(classifyFailoverReason(`HTTP 402 Payment Required: ${transientMessage}`)).toBe( "rate_limit", ); diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index 5f09b7ffc08..2e8ae9f2536 100644 --- a/src/agents/pi-embedded-helpers/errors.ts +++ b/src/agents/pi-embedded-helpers/errors.ts @@ -609,7 +609,7 @@ function classifyFailoverClassificationFromHttpStatus( return toReasonClassification(reasonFrom402Text); } return typeof explicitStatus === "number" - ? toReasonClassification("billing") + ? toReasonClassification(classify402Message(message)) : messageClassification; } return toReasonClassification(classify402Message(message));