diff --git a/src/api/transform/__tests__/reasoning.spec.ts b/src/api/transform/__tests__/reasoning.spec.ts index fc0983d741..b6fb4816fc 100644 --- a/src/api/transform/__tests__/reasoning.spec.ts +++ b/src/api/transform/__tests__/reasoning.spec.ts @@ -530,21 +530,54 @@ describe("reasoning.ts", () => { expect(result).toEqual({ reasoning_effort: undefined }) }) - it("should handle all reasoning effort values", () => { - const efforts: Array<"low" | "medium" | "high"> = ["low", "medium", "high"] + it("should handle all reasoning effort values including minimal", () => { + const efforts: Array = ["minimal", "low", "medium", "high"] efforts.forEach((effort) => { const modelWithEffort: ModelInfo = { ...baseModel, + supportsReasoningEffort: true, + } + + const settingsWithEffort: ProviderSettings = { reasoningEffort: effort, } - const options = { ...baseOptions, model: modelWithEffort, reasoningEffort: effort } + const options = { + ...baseOptions, + model: modelWithEffort, + settings: settingsWithEffort, + reasoningEffort: effort, + } const result = getOpenAiReasoning(options) + // All effort values including "minimal" should be passed through for OpenAI (e.g., GPT-5) expect(result).toEqual({ reasoning_effort: effort }) }) }) + it("should handle minimal reasoning effort specifically", () => { + const modelWithEffort: ModelInfo = { + ...baseModel, + supportsReasoningEffort: true, + } + + const settingsWithMinimal: ProviderSettings = { + reasoningEffort: "minimal", + } + + const options = { + ...baseOptions, + model: modelWithEffort, + settings: settingsWithMinimal, + reasoningEffort: "minimal" as ReasoningEffortWithMinimal, + } + + const result = getOpenAiReasoning(options) + + // "minimal" should be passed through for OpenAI models like GPT-5 + expect(result).toEqual({ reasoning_effort: "minimal" }) + }) + it("should not be affected by reasoningBudget parameter", () => { const modelWithEffort: ModelInfo = { ...baseModel, diff --git a/src/api/transform/reasoning.ts b/src/api/transform/reasoning.ts index fff288e3f0..367c463662 100644 --- a/src/api/transform/reasoning.ts +++ b/src/api/transform/reasoning.ts @@ -62,12 +62,8 @@ export const getOpenAiReasoning = ({ return undefined } - // If model has reasoning effort capability, return object even if effort is undefined - // This preserves the reasoning_effort field in the API call - if (reasoningEffort === "minimal") { - return undefined - } - + // If model has reasoning effort capability, return object with the effort + // OpenAI models (including GPT-5) support all effort levels including "minimal" return { reasoning_effort: reasoningEffort } }