fix(model): treat 'bad request' as retryable error for GitHub Copilot fallback (#3130)

GitHub Copilot performs rolling model updates which sometimes return
'400 Bad Request' when a model is temporarily unavailable. This error
was not in the retryable message patterns, causing model fallback to
not trigger and users getting stuck.

Changes:
- Added 'bad request' to RETRYABLE_MESSAGE_PATTERNS in model-error-classifier.ts
- Added test cases for 'bad request' pattern matching

Fixes #3130
This commit is contained in:
YeonGyu-Kim
2026-04-05 10:17:50 +09:00
parent 1562b7d148
commit 0cbfdec76e
2 changed files with 23 additions and 0 deletions
+22
View File
@@ -149,6 +149,28 @@ describe("model-error-classifier", () => {
//#then //#then
expect(result).toBe(false) expect(result).toBe(false)
}) })
test("treats 'bad request' message as retryable (GitHub Copilot rolling update)", () => {
//#given
const error = { message: "400 Bad Request" }
//#when
const result = shouldRetryError(error)
//#then
expect(result).toBe(true)
})
test("treats 'bad request' lowercase as retryable", () => {
//#given
const error = { message: "bad request: model temporarily unavailable" }
//#when
const result = shouldRetryError(error)
//#then
expect(result).toBe(true)
})
}) })
export {} export {}
+1
View File
@@ -52,6 +52,7 @@ const RETRYABLE_MESSAGE_PATTERNS = [
"over limit", "over limit",
"overloaded", "overloaded",
"bad gateway", "bad gateway",
"bad request",
"unknown provider", "unknown provider",
"provider not found", "provider not found",
"model_not_supported", "model_not_supported",