@@ -12,6 +12,7 @@ import { useRouterModels } from "@src/components/ui/hooks/useRouterModels"
1212import { vscode } from "@src/utils/vscode"
1313
1414import { inputEventTransform } from "../transforms"
15+ import { ModelRecord } from "@roo/api"
1516
1617type LMStudioProps = {
1718 apiConfiguration : ProviderSettings
@@ -21,7 +22,7 @@ type LMStudioProps = {
2122export const LMStudio = ( { apiConfiguration, setApiConfigurationField } : LMStudioProps ) => {
2223 const { t } = useAppTranslation ( )
2324
24- const [ lmStudioModels , setLmStudioModels ] = useState < string [ ] > ( [ ] )
25+ const [ lmStudioModels , setLmStudioModels ] = useState < ModelRecord > ( { } )
2526 const routerModels = useRouterModels ( )
2627
2728 const handleInputChange = useCallback (
@@ -41,7 +42,7 @@ export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudi
4142 switch ( message . type ) {
4243 case "lmStudioModels" :
4344 {
44- const newModels = message . lmStudioModels ?? [ ]
45+ const newModels = message . lmStudioModels ?? { }
4546 setLmStudioModels ( newModels )
4647 }
4748 break
@@ -62,7 +63,7 @@ export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudi
6263 if ( ! selectedModel ) return false
6364
6465 // Check if model exists in local LM Studio models
65- if ( lmStudioModels . length > 0 && lmStudioModels . includes ( selectedModel ) ) {
66+ if ( Object . keys ( lmStudioModels ) . length > 0 && selectedModel in lmStudioModels ) {
6667 return false // Model is available locally
6768 }
6869
@@ -83,7 +84,7 @@ export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudi
8384 if ( ! draftModel ) return false
8485
8586 // Check if model exists in local LM Studio models
86- if ( lmStudioModels . length > 0 && lmStudioModels . includes ( draftModel ) ) {
87+ if ( Object . keys ( lmStudioModels ) . length > 0 && draftModel in lmStudioModels ) {
8788 return false // Model is available locally
8889 }
8990
@@ -125,15 +126,15 @@ export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudi
125126 </ div >
126127 </ div >
127128 ) }
128- { lmStudioModels . length > 0 && (
129+ { Object . keys ( lmStudioModels ) . length > 0 && (
129130 < VSCodeRadioGroup
130131 value = {
131- lmStudioModels . includes ( apiConfiguration ?. lmStudioModelId || "" )
132+ ( apiConfiguration ?. lmStudioModelId || "" ) in lmStudioModels
132133 ? apiConfiguration ?. lmStudioModelId
133134 : ""
134135 }
135136 onChange = { handleInputChange ( "lmStudioModelId" ) } >
136- { lmStudioModels . map ( ( model ) => (
137+ { Object . keys ( lmStudioModels ) . map ( ( model ) => (
137138 < VSCodeRadio key = { model } value = { model } checked = { apiConfiguration ?. lmStudioModelId === model } >
138139 { model }
139140 </ VSCodeRadio >
@@ -175,23 +176,23 @@ export const LMStudio = ({ apiConfiguration, setApiConfigurationField }: LMStudi
175176 </ div >
176177 ) }
177178 </ div >
178- { lmStudioModels . length > 0 && (
179+ { Object . keys ( lmStudioModels ) . length > 0 && (
179180 < >
180181 < div className = "font-medium" > { t ( "settings:providers.lmStudio.selectDraftModel" ) } </ div >
181182 < VSCodeRadioGroup
182183 value = {
183- lmStudioModels . includes ( apiConfiguration ?. lmStudioDraftModelId || "" )
184+ ( apiConfiguration ?. lmStudioDraftModelId || "" ) in lmStudioModels
184185 ? apiConfiguration ?. lmStudioDraftModelId
185186 : ""
186187 }
187188 onChange = { handleInputChange ( "lmStudioDraftModelId" ) } >
188- { lmStudioModels . map ( ( model ) => (
189+ { Object . keys ( lmStudioModels ) . map ( ( model ) => (
189190 < VSCodeRadio key = { `draft-${ model } ` } value = { model } >
190191 { model }
191192 </ VSCodeRadio >
192193 ) ) }
193194 </ VSCodeRadioGroup >
194- { lmStudioModels . length === 0 && (
195+ { Object . keys ( lmStudioModels ) . length === 0 && (
195196 < div
196197 className = "text-sm rounded-xs p-2"
197198 style = { {
0 commit comments