From 09a1db3b088293d48d84d62e86c02b69b40ed3ee Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 22 Oct 2026 11:45:25 -0500 Subject: [PATCH] fix(ai): recognize more context overflow errors (#57982) --- packages/ai/src/provider-error.ts | 8 +++++--- packages/ai/test/provider-error.test.ts | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/ai/src/provider-error.ts b/packages/ai/src/provider-error.ts index 286a5ae41f2..daef5c9735a 100644 --- a/packages/ai/src/provider-error.ts +++ b/packages/ai/src/provider-error.ts @@ -17,7 +17,9 @@ import { isRecord } from "./utils/record.js" const patterns = [ /prompt is too long/i, - /input is too long for requested model/i, + /input is too long for (?:the )?(?:requested|selected) model/i, + // OpenCode Go + /too large for the model'?s configured input limit/i, // Cloudflare Workers AI reports this as HTTP 413. /exceeded this model context window limit/i, /exceeds the context window/i, @@ -44,8 +46,8 @@ const patterns = [ /context[_ ]length[_ ]exceeded/i, /context length is only \d+ tokens/i, /input length.*exceeds.*context length/i, - // Z.ai code 1261 arrives as `Prompt too long` or `Prompt 超长`. - /prompt (?:too long|超长)/i, + // Z.ai code 1261 arrives as `Prompt too long`, `Prompt exceeds max length` or `Prompt 超长`. + /prompt (?:too long|exceeds max length|超长)/i, /too large for model with \d+ maximum context length/i, /prompt has [\d,]+ tokens?, but the configured context size is [\d,]+ tokens?/i, /model_context_window_exceeded/i, diff --git a/packages/ai/test/provider-error.test.ts b/packages/ai/test/provider-error.test.ts index c325698cd59..3ae46bb983c 100644 --- a/packages/ai/test/provider-error.test.ts +++ b/packages/ai/test/provider-error.test.ts @@ -17,6 +17,9 @@ describe("provider error classification", () => { "Too many tokens", "Input validation error: `inputs` tokens + `max_new_tokens` must be <= 131073. Given: 600035 `inputs` tokens and 16 `max_new_tokens`", "Token limit exceeded", + "Prompt exceeds max length", + "The input is too long for the selected model.", + "This text request is too large for the model's configured input limit.", ] expect(messages.every(isContextOverflow)).toBe(true)