diff --git a/extensions/positron-assistant/src/anthropic.ts b/extensions/positron-assistant/src/anthropic.ts index 4d7daa69549..ae68929dd84 100644 --- a/extensions/positron-assistant/src/anthropic.ts +++ b/extensions/positron-assistant/src/anthropic.ts @@ -589,11 +589,12 @@ function toAnthropicTools(tools: readonly vscode.LanguageModelChatTool[]): Anthr } function toAnthropicTool(tool: vscode.LanguageModelChatTool): Anthropic.ToolUnion { + // Anthropic requires a type for all tools; default to 'object' if not provided. + // See similar handling for the vercel SDK in AILanguageModel provideLanguageModelChatResponse in extensions/positron-assistant/src/models.ts const input_schema = tool.inputSchema as Anthropic.Tool.InputSchema ?? { type: 'object', properties: {}, }; - // Anthropic requires a type for all tools; default to 'object' if not provided. if (!input_schema.type) { log.warn(`[anthropic] Tool '${tool.name}' is missing input schema type; defaulting to 'object'`); input_schema.type = 'object'; diff --git a/extensions/positron-assistant/src/models.ts b/extensions/positron-assistant/src/models.ts index 62c5e6741c3..d34c5f37046 100644 --- a/extensions/positron-assistant/src/models.ts +++ b/extensions/positron-assistant/src/models.ts @@ -442,9 +442,19 @@ abstract class AILanguageModel implements positron.ai.LanguageModelChatProvider if (options.tools && options.tools.length > 0) { tools = options.tools.reduce((acc: Record, tool: vscode.LanguageModelChatTool) => { + // Some providers like AWS Bedrock require a type for all tool input schemas; default to 'object' if not provided. + // See similar handling for Anthropic in toAnthropicTool in extensions/positron-assistant/src/anthropic.ts + const input_schema = tool.inputSchema as Record ?? { + type: 'object', + properties: {}, + }; + if (!input_schema.type) { + log.warn(`Tool '${tool.name}' is missing input schema type; defaulting to 'object'`); + input_schema.type = 'object'; + } acc[tool.name] = ai.tool({ description: tool.description, - parameters: ai.jsonSchema(tool.inputSchema ?? { type: 'object', properties: {} }), + parameters: ai.jsonSchema(input_schema), }); return acc; }, {});