fix: prevent infinite retry loop for images exceeding 5MB

- Change MAX_IMAGE_BYTES from 6MB to 5MB to match Anthropic API limit
- Add isImageSizeError() to detect image size errors from API
- Handle image size errors with user-friendly message instead of retry
- Prevent failover for image size errors (not retriable)

Fixes #2271
This commit is contained in:
{Suksham-sharma}
2026-01-27 22:21:51 +05:30
committed by Shadow
parent 24902880de
commit b59ea0e3f3
5 changed files with 34 additions and 2 deletions

View File

@@ -34,6 +34,7 @@ import {
isContextOverflowError,
isFailoverAssistantError,
isFailoverErrorMessage,
isImageSizeError,
parseImageDimensionError,
isRateLimitAssistantError,
isTimeoutErrorMessage,
@@ -440,6 +441,29 @@ export async function runEmbeddedPiAgent(
},
};
}
// Handle image size errors with a user-friendly message (no retry needed)
if (isImageSizeError(errorText)) {
return {
payloads: [
{
text:
"Image too large for the model (max 5MB). " +
"Please compress or resize the image and try again.",
isError: true,
},
],
meta: {
durationMs: Date.now() - started,
agentMeta: {
sessionId: sessionIdUsed,
provider,
model: model.id,
},
systemPromptReport: attempt.systemPromptReport,
error: { kind: "image_size", message: errorText },
},
};
}
const promptFailoverReason = classifyFailoverReason(errorText);
if (promptFailoverReason && promptFailoverReason !== "timeout" && lastProfileId) {
await markAuthProfileFailure({