From bcbad6f8b10047090d3c85f18bebcfa557ced122 Mon Sep 17 00:00:00 2001 From: Cristina Poncela Cubeiro <140309543+cristinaponcela@users.noreply.github.com> Date: Wed, 28 Oct 2026 15:45:03 +0100 Subject: [PATCH] fix(ai): detect Bedrock Mantle context overflow errors --- packages/ai/src/utils/overflow.ts | 3 +++ packages/ai/test/overflow.test.ts | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/packages/ai/src/utils/overflow.ts b/packages/ai/src/utils/overflow.ts index 36ae26b49..8caaeb8e4 100644 --- a/packages/ai/src/utils/overflow.ts +++ b/packages/ai/src/utils/overflow.ts @@ -14,6 +14,7 @@ import type { AssistantMessage } from "../types.ts"; * - OpenAI/LiteLLM: "Requested token count exceeds the model's maximum context length of 131072 tokens" * - LiteLLM pre-call check: "litellm.ContextWindowExceededError: ... Context Window exceeded for given call." * - OpenAI-compatible: "Input length (265330) exceeds model's maximum context length (262144)." + * - Amazon Bedrock Mantle (OpenAI Responses): "invalid_prompt: prompt tokens (330095) exceed model maximum (278528) for base model ..." * - Google: "The input token count (1196265) exceeds the maximum number of tokens allowed (1048575)" * - xAI: "This model's maximum prompt length is 131072 but the request contains 537812 tokens" * - Groq: "Please reduce the length of the messages or completion" @@ -43,6 +44,7 @@ const OVERFLOW_PATTERNS = [ /input is too long for requested model/i, // Amazon Bedrock /exceeds the context window/i, // OpenAI (Completions & Responses API) /exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i, // OpenAI-compatible proxies (LiteLLM) + /prompt tokens \([\d,]+\) exceed model maximum/i, // Amazon Bedrock Mantle (OpenAI Responses observed error; exact text is not documented by AWS) /context window exceeded/i, // LiteLLM pre-call check (ContextWindowExceededError) /input token count.*exceeds the maximum/i, // Google (Gemini) /maximum prompt length is \d+/i, // xAI (Grok) @@ -101,6 +103,7 @@ const NON_OVERFLOW_PATTERNS = [ * **Reliable detection (returns error with detectable message):** * - Anthropic: "prompt is too long: X tokens > Y maximum" or "request_too_large" * - OpenAI (Completions & Responses): "exceeds the context window", "exceeds the model's maximum context length of X tokens", or "exceeds model's maximum context length (X)" + * - Amazon Bedrock Mantle (OpenAI Responses): "invalid_prompt: prompt tokens (X) exceed model maximum (Y) for base model ..." * - Google Gemini: "input token count exceeds the maximum" * - xAI (Grok): "maximum prompt length is X but request contains Y" * - Groq: "reduce the length of the messages" diff --git a/packages/ai/test/overflow.test.ts b/packages/ai/test/overflow.test.ts index 1cab5e92e..bd2a454ea 100644 --- a/packages/ai/test/overflow.test.ts +++ b/packages/ai/test/overflow.test.ts @@ -106,6 +106,13 @@ describe("isContextOverflow", () => { expect(isContextOverflow(message, 262144)).toBe(true); }); + it("detects Amazon Bedrock Mantle OpenAI Responses prompt-token maximum errors", () => { + const message = createErrorMessage( + "Amazon Bedrock Mantle OpenAI Responses API error (400): invalid_prompt: prompt tokens (330095) exceed model maximum (278528) for base model abc", + ); + expect(isContextOverflow(message, 272000)).toBe(true); + }); + it("detects OpenRouter Poolside maximum allowed input length errors", () => { const message = createErrorMessage( "Provider returned error: Input length 131393 exceeds the maximum allowed input length of 131040 tokens.",