summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/provider/transform.ts23
1 files changed, 22 insertions, 1 deletions
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index cb732fc58..5e9da5c08 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -52,7 +52,28 @@ function normalizeMessages(
): ModelMessage[] {
// Anthropic rejects messages with empty content - filter out empty string messages
// and remove empty text/reasoning parts from array content
- if (model.api.npm === "@ai-sdk/anthropic" || model.api.npm === "@ai-sdk/amazon-bedrock") {
+ if (model.api.npm === "@ai-sdk/anthropic") {
+ msgs = msgs
+ .map((msg) => {
+ if (typeof msg.content === "string") {
+ if (msg.content === "") return undefined
+ return msg
+ }
+ if (!Array.isArray(msg.content)) return msg
+ const filtered = msg.content.filter((part) => {
+ if (part.type === "text" || part.type === "reasoning") {
+ return part.text !== ""
+ }
+ return true
+ })
+ if (filtered.length === 0) return undefined
+ return { ...msg, content: filtered }
+ })
+ .filter((msg): msg is ModelMessage => msg !== undefined && msg.content !== "")
+ }
+
+ // Bedrock specific transforms
+ if (model.api.npm === "@ai-sdk/amazon-bedrock") {
msgs = msgs
.map((msg) => {
if (typeof msg.content === "string") {