mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 11:01:24 +00:00
fix(agents): make image sanitization dimension configurable
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import type { AgentMessage, AgentToolResult } from "@mariozechner/pi-agent-core";
|
||||
import type { ImageSanitizationLimits } from "../image-sanitization.js";
|
||||
import type { ToolCallIdMode } from "../tool-call-id.js";
|
||||
import { sanitizeToolCallIdsForCloudCodeAssist } from "../tool-call-id.js";
|
||||
import { sanitizeContentBlocksImages } from "../tool-images.js";
|
||||
@@ -45,12 +46,16 @@ export async function sanitizeSessionMessagesImages(
|
||||
allowBase64Only?: boolean;
|
||||
includeCamelCase?: boolean;
|
||||
};
|
||||
},
|
||||
} & ImageSanitizationLimits,
|
||||
): Promise<AgentMessage[]> {
|
||||
const sanitizeMode = options?.sanitizeMode ?? "full";
|
||||
const allowNonImageSanitization = sanitizeMode === "full";
|
||||
const imageSanitization = {
|
||||
maxDimensionPx: options?.maxDimensionPx,
|
||||
maxBytes: options?.maxBytes,
|
||||
};
|
||||
// We sanitize historical session messages because Anthropic can reject a request
|
||||
// if the transcript contains oversized base64 images (see MAX_IMAGE_DIMENSION_PX).
|
||||
// if the transcript contains oversized base64 images (default max side 1200px).
|
||||
const sanitizedIds =
|
||||
allowNonImageSanitization && options?.sanitizeToolCallIds
|
||||
? sanitizeToolCallIdsForCloudCodeAssist(messages, options.toolCallIdMode)
|
||||
@@ -69,6 +74,7 @@ export async function sanitizeSessionMessagesImages(
|
||||
const nextContent = (await sanitizeContentBlocksImages(
|
||||
content,
|
||||
label,
|
||||
imageSanitization,
|
||||
)) as unknown as typeof toolMsg.content;
|
||||
out.push({ ...toolMsg, content: nextContent });
|
||||
continue;
|
||||
@@ -81,6 +87,7 @@ export async function sanitizeSessionMessagesImages(
|
||||
const nextContent = (await sanitizeContentBlocksImages(
|
||||
content as unknown as ContentBlock[],
|
||||
label,
|
||||
imageSanitization,
|
||||
)) as unknown as typeof userMsg.content;
|
||||
out.push({ ...userMsg, content: nextContent });
|
||||
continue;
|
||||
@@ -95,6 +102,7 @@ export async function sanitizeSessionMessagesImages(
|
||||
const nextContent = (await sanitizeContentBlocksImages(
|
||||
content as unknown as ContentBlock[],
|
||||
label,
|
||||
imageSanitization,
|
||||
)) as unknown as typeof assistantMsg.content;
|
||||
out.push({ ...assistantMsg, content: nextContent });
|
||||
} else {
|
||||
@@ -108,6 +116,7 @@ export async function sanitizeSessionMessagesImages(
|
||||
const nextContent = (await sanitizeContentBlocksImages(
|
||||
content as unknown as ContentBlock[],
|
||||
label,
|
||||
imageSanitization,
|
||||
)) as unknown as typeof assistantMsg.content;
|
||||
out.push({ ...assistantMsg, content: nextContent });
|
||||
continue;
|
||||
@@ -129,6 +138,7 @@ export async function sanitizeSessionMessagesImages(
|
||||
const finalContent = (await sanitizeContentBlocksImages(
|
||||
filteredContent as unknown as ContentBlock[],
|
||||
label,
|
||||
imageSanitization,
|
||||
)) as unknown as typeof assistantMsg.content;
|
||||
if (finalContent.length === 0) {
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user