From 064064a31ad00bf5c3c4ea4beb21b01f33d3949d Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Mon, 10 Nov 2025 14:19:08 -0700 Subject: [PATCH] Add none --- .../components/settings/ThinkingBudget.tsx | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/webview-ui/src/components/settings/ThinkingBudget.tsx b/webview-ui/src/components/settings/ThinkingBudget.tsx index c8d57fa8fc..31cf3a04ad 100644 --- a/webview-ui/src/components/settings/ThinkingBudget.tsx +++ b/webview-ui/src/components/settings/ThinkingBudget.tsx @@ -27,6 +27,7 @@ interface ThinkingBudgetProps { ) => void modelInfo?: ModelInfo } +type ReasoningEffortWithMinimalOrNone = ReasoningEffortWithMinimal | "none" // Helper function to determine if minimal option should be shown const shouldShowMinimalOption = ( @@ -58,10 +59,10 @@ export const ThinkingBudget = ({ apiConfiguration, setApiConfigurationField, mod // Default reasoning effort - use model's default if available // GPT-5 models have "medium" as their default in the model configuration - const modelDefaultReasoningEffort = modelInfo?.reasoningEffort as ReasoningEffortWithMinimal | undefined - const defaultReasoningEffort: ReasoningEffortWithMinimal = modelDefaultReasoningEffort || "medium" - const currentReasoningEffort: ReasoningEffortWithMinimal = - (apiConfiguration.reasoningEffort as ReasoningEffortWithMinimal | undefined) || defaultReasoningEffort + const modelDefaultReasoningEffort = modelInfo?.reasoningEffort as ReasoningEffortWithMinimalOrNone | undefined + const defaultReasoningEffort: ReasoningEffortWithMinimalOrNone = modelDefaultReasoningEffort || "medium" + const currentReasoningEffort: ReasoningEffortWithMinimalOrNone = + (apiConfiguration.reasoningEffort as ReasoningEffortWithMinimalOrNone | undefined) || defaultReasoningEffort // Determine if minimal option should be shown const showMinimalOption = shouldShowMinimalOption( @@ -71,15 +72,24 @@ export const ThinkingBudget = ({ apiConfiguration, setApiConfigurationField, mod modelDefaultReasoningEffort, ) + const showNoneOption = currentReasoningEffort === "none" || modelDefaultReasoningEffort === "none" + // Build available reasoning efforts list const baseEfforts = [...reasoningEfforts] as ReasoningEffortWithMinimal[] - const availableReasoningEfforts: ReadonlyArray = showMinimalOption - ? (["minimal", ...baseEfforts] as ReasoningEffortWithMinimal[]) - : baseEfforts + const availableReasoningEfforts: ReadonlyArray = [ + ...(showNoneOption ? (["none"] as const) : []), + ...(showMinimalOption ? (["minimal"] as const) : []), + ...baseEfforts, + ] // Set default reasoning effort when model supports it and no value is set useEffect(() => { - if (isReasoningEffortSupported && !apiConfiguration.reasoningEffort && defaultReasoningEffort) { + if ( + isReasoningEffortSupported && + !apiConfiguration.reasoningEffort && + defaultReasoningEffort && + defaultReasoningEffort !== "none" + ) { setApiConfigurationField("reasoningEffort", defaultReasoningEffort, false) } }, [isReasoningEffortSupported, apiConfiguration.reasoningEffort, defaultReasoningEffort, setApiConfigurationField]) @@ -178,8 +188,12 @@ export const ThinkingBudget = ({ apiConfiguration, setApiConfigurationField, mod