@@ -49,6 +49,7 @@ interface ReasoningModelSelectorProps {
4949 setGroqApiKey : ( key : string ) => void ;
5050 customReasoningApiKey ?: string ;
5151 setCustomReasoningApiKey ?: ( key : string ) => void ;
52+ mode ?: "cloud" | "local" ;
5253}
5354
5455function GpuStatusBadge ( ) {
@@ -319,9 +320,10 @@ export default function ReasoningModelSelector({
319320 setGroqApiKey,
320321 customReasoningApiKey = "" ,
321322 setCustomReasoningApiKey,
323+ mode,
322324} : ReasoningModelSelectorProps ) {
323325 const { t } = useTranslation ( ) ;
324- const [ selectedMode , setSelectedMode ] = useState < "cloud" | "local" > ( "cloud" ) ;
326+ const [ selectedMode , setSelectedMode ] = useState < "cloud" | "local" > ( mode || "cloud" ) ;
325327 const [ selectedCloudProvider , setSelectedCloudProvider ] = useState ( "openai" ) ;
326328 const [ selectedLocalProvider , setSelectedLocalProvider ] = useState ( "qwen" ) ;
327329 const [ customModelOptions , setCustomModelOptions ] = useState < CloudModelOption [ ] > ( [ ] ) ;
@@ -492,6 +494,8 @@ export default function ReasoningModelSelector({
492494 return customModelOptions ;
493495 } , [ isCustomBaseDirty , customModelOptions ] ) ;
494496
497+ const effectiveMode = mode || selectedMode ;
498+
495499 const cloudProviderIds = [ "openai" , "anthropic" , "gemini" , "groq" , "custom" ] ;
496500 const cloudProviders = cloudProviderIds . map ( ( id ) => ( {
497501 id,
@@ -729,22 +733,24 @@ export default function ReasoningModelSelector({
729733
730734 return (
731735 < div className = "space-y-4" >
732- < div className = "space-y-2" >
733- < ProviderTabs
734- providers = { MODE_TABS }
735- selectedId = { selectedMode }
736- onSelect = { ( id ) => handleModeChange ( id as "cloud" | "local" ) }
737- renderIcon = { renderModeIcon }
738- colorScheme = "purple"
739- />
740- < p className = "text-xs text-muted-foreground text-center" >
741- { selectedMode === "local"
742- ? t ( "reasoning.mode.localDescription" )
743- : t ( "reasoning.mode.cloudDescription" ) }
744- </ p >
745- </ div >
736+ { ! mode && (
737+ < div className = "space-y-2" >
738+ < ProviderTabs
739+ providers = { MODE_TABS }
740+ selectedId = { effectiveMode }
741+ onSelect = { ( id ) => handleModeChange ( id as "cloud" | "local" ) }
742+ renderIcon = { renderModeIcon }
743+ colorScheme = "purple"
744+ />
745+ < p className = "text-xs text-muted-foreground text-center" >
746+ { effectiveMode === "local"
747+ ? t ( "reasoning.mode.localDescription" )
748+ : t ( "reasoning.mode.cloudDescription" ) }
749+ </ p >
750+ </ div >
751+ ) }
746752
747- { selectedMode === "cloud" ? (
753+ { effectiveMode === "cloud" ? (
748754 < div className = "space-y-2" >
749755 < div className = "border border-border rounded-lg overflow-hidden" >
750756 < ProviderTabs
0 commit comments