diff --git a/packages/ai/src/providers/anthropic.ts b/packages/ai/src/providers/anthropic.ts index 6755c4c4..a52f7322 100644 --- a/packages/ai/src/providers/anthropic.ts +++ b/packages/ai/src/providers/anthropic.ts @@ -233,7 +233,7 @@ export const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicOpti name: isOAuthToken ? fromClaudeCodeName(event.content_block.name, context.tools) : event.content_block.name, - arguments: event.content_block.input as Record, + arguments: (event.content_block.input as Record) ?? {}, partialJson: "", index: event.index, }; @@ -619,7 +619,7 @@ function convertMessages( type: "tool_use", id: block.id, name: isOAuthToken ? toClaudeCodeName(block.name) : block.name, - input: block.arguments, + input: block.arguments ?? {}, }); } } diff --git a/packages/ai/src/providers/google-shared.ts b/packages/ai/src/providers/google-shared.ts index a34e2bd4..a12b454c 100644 --- a/packages/ai/src/providers/google-shared.ts +++ b/packages/ai/src/providers/google-shared.ts @@ -143,7 +143,7 @@ export function convertMessages(model: Model, contex // We include a note telling the model this is historical context to prevent mimicry. const isGemini3 = model.id.toLowerCase().includes("gemini-3"); if (isGemini3 && !thoughtSignature) { - const argsStr = JSON.stringify(block.arguments, null, 2); + const argsStr = JSON.stringify(block.arguments ?? {}, null, 2); parts.push({ text: `[Historical context: a different model called tool "${block.name}" with arguments: ${argsStr}. Do not mimic this format - use proper function calling.]`, }); @@ -151,7 +151,7 @@ export function convertMessages(model: Model, contex const part: Part = { functionCall: { name: block.name, - args: block.arguments, + args: block.arguments ?? {}, ...(requiresToolCallId(model.id) ? { id: block.id } : {}), }, };