From 277d7bf27341eeb7fda98df1dccdfbd2f2560627 Mon Sep 17 00:00:00 2001 From: Shoubhit Dash Date: Mon, 31 Aug 2026 22:22:57 +0530 Subject: [PATCH] test(ai): reject unsupported bedrock image formats --- packages/ai/src/protocols/bedrock-messages.ts | 3 ++- .../ai/test/provider/bedrock-messages-basic.test.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/ai/src/protocols/bedrock-messages.ts b/packages/ai/src/protocols/bedrock-messages.ts index 1f8ec61432b..8ee5f561706 100644 --- a/packages/ai/src/protocols/bedrock-messages.ts +++ b/packages/ai/src/protocols/bedrock-messages.ts @@ -87,7 +87,7 @@ function mediaIssue( return typeof block.content === "string" ? undefined : block.content.map(mediaIssue).find((issue) => issue !== undefined) - if (block.type !== "image" && block.type !== "document") return + if (block.type !== "image" && block.type !== "document") return undefined if (block.source.type === "url" || block.source.type === "file") return "Bedrock Messages does not support URL or file-ID media sources" if ( @@ -97,6 +97,7 @@ function mediaIssue( return "Bedrock Messages requires a JPEG, PNG, WebP, or GIF image" if (block.source.type === "base64" && Encoding.decodeBase64(block.source.data)._tag === "Failure") return "Bedrock Messages media data must be valid base64" + return undefined } export const route = Route.make({ diff --git a/packages/ai/test/provider/bedrock-messages-basic.test.ts b/packages/ai/test/provider/bedrock-messages-basic.test.ts index 89e1f040c93..9777d10050e 100644 --- a/packages/ai/test/provider/bedrock-messages-basic.test.ts +++ b/packages/ai/test/provider/bedrock-messages-basic.test.ts @@ -151,3 +151,16 @@ it.effect("rejects Anthropic file IDs", () => expect(error.message).toContain("file-ID") }), ) + +it.effect("rejects unsupported image formats", () => + Effect.gen(function* () { + const error = yield* compileRequest( + LLM.request({ + model: AmazonBedrock.configure({ apiKey: "test" }).messages("claude"), + messages: [Message.user({ type: "media", mediaType: "image/svg+xml", data: "AQID" })], + }), + ).pipe(Effect.flip) + expect(error.reason._tag).toBe("InvalidRequest") + expect(error.message).toContain("JPEG, PNG, WebP, or GIF") + }), +)