From 36d15862df634f276095a5fad5fe8fbd58511966 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Wed, 17 Dec 2025 15:32:59 -0500 Subject: [PATCH] fix: enable native tools by default for OpenAI compatible provider Add defaultToolProtocol: 'native' to openAiModelInfoSaneDefaults so that the OpenAI compatible provider uses native tool calling by default. Previously, even though supportsNativeTools was set to true, the absence of defaultToolProtocol caused resolveToolProtocol() to fall through to the XML fallback. Also adds a test case to verify this behavior. --- packages/types/src/providers/openai.ts | 1 + src/utils/__tests__/resolveToolProtocol.spec.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/types/src/providers/openai.ts b/packages/types/src/providers/openai.ts index 1e7b44a45a0..47b883e0e10 100644 --- a/packages/types/src/providers/openai.ts +++ b/packages/types/src/providers/openai.ts @@ -551,6 +551,7 @@ export const openAiModelInfoSaneDefaults: ModelInfo = { inputPrice: 0, outputPrice: 0, supportsNativeTools: true, + defaultToolProtocol: "native", } // https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation diff --git a/src/utils/__tests__/resolveToolProtocol.spec.ts b/src/utils/__tests__/resolveToolProtocol.spec.ts index d5f12b0b22f..68d3f3a2de8 100644 --- a/src/utils/__tests__/resolveToolProtocol.spec.ts +++ b/src/utils/__tests__/resolveToolProtocol.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from "vitest" import { resolveToolProtocol } from "../resolveToolProtocol" -import { TOOL_PROTOCOL } from "@roo-code/types" +import { TOOL_PROTOCOL, openAiModelInfoSaneDefaults } from "@roo-code/types" import type { ProviderSettings, ModelInfo } from "@roo-code/types" describe("resolveToolProtocol", () => { @@ -316,5 +316,14 @@ describe("resolveToolProtocol", () => { const result = resolveToolProtocol(settings, modelInfo) expect(result).toBe(TOOL_PROTOCOL.XML) // Model default wins }) + + it("should use native tools for OpenAI compatible provider with default model info", () => { + const settings: ProviderSettings = { + apiProvider: "openai", + } + // Using the actual openAiModelInfoSaneDefaults to verify the fix + const result = resolveToolProtocol(settings, openAiModelInfoSaneDefaults) + expect(result).toBe(TOOL_PROTOCOL.NATIVE) // Should use native tools by default + }) }) })