From 4be25a6866e7168c7f8d502ad016ba18822877d6 Mon Sep 17 00:00:00 2001 From: ShionElia Date: Wed, 18 Mar 2026 10:40:45 +0000 Subject: [PATCH] fix: remove overly broad 'an error occurred' pattern Per Greptile review feedback, the plain 'an error occurred' substring match is too permissive and could trigger false failovers for application-level errors that aren't transient provider failures. Removed this pattern from isGenericProviderError() and updated tests to verify that generic 'an error occurred' alone does NOT match, while specific patterns like 'an unknown error occurred' still do. --- src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts | 5 +++-- src/agents/pi-embedded-helpers/errors.ts | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts index 141368bf366..fd78372f2e0 100644 --- a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts +++ b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts @@ -862,15 +862,16 @@ describe("classifyFailoverReason", () => { }); it("classifies generic provider errors as timeout", () => { expect(classifyFailoverReason("An unknown error occurred")).toBe("timeout"); - expect(classifyFailoverReason("An error occurred")).toBe("timeout"); expect(classifyFailoverReason("Internal server error")).toBe("timeout"); expect(classifyFailoverReason("Service unavailable")).toBe("timeout"); // Case-insensitive expect(classifyFailoverReason("AN UNKNOWN ERROR OCCURRED")).toBe("timeout"); - expect(classifyFailoverReason("an error occurred while processing")).toBe("timeout"); // Wrapped in provider payload expect(classifyFailoverReason('{"error":{"message":"An unknown error occurred"}}')).toBe( "timeout", ); + // "an error occurred" alone should NOT match (too broad) + expect(classifyFailoverReason("An error occurred")).toBeNull(); + expect(classifyFailoverReason("A validation error occurred")).toBeNull(); }); }); diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index 99adc32149f..1b737fd4775 100644 --- a/src/agents/pi-embedded-helpers/errors.ts +++ b/src/agents/pi-embedded-helpers/errors.ts @@ -853,7 +853,6 @@ function isGenericProviderError(raw: string): boolean { const lower = raw.toLowerCase(); return ( lower.includes("an unknown error occurred") || - lower.includes("an error occurred") || lower.includes("internal server error") || lower.includes("service unavailable") );