@@ -97,6 +97,10 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => {
9797 . min ( 1 , t ( "settings:codeIndex.validation.ollamaBaseUrlRequired" ) )
9898 . url ( t ( "settings:codeIndex.validation.invalidOllamaUrl" ) ) ,
9999 codebaseIndexEmbedderModelId : z . string ( ) . min ( 1 , t ( "settings:codeIndex.validation.modelIdRequired" ) ) ,
100+ codebaseIndexEmbedderModelDimension : z
101+ . number ( )
102+ . min ( 1 , t ( "settings:codeIndex.validation.modelDimensionRequired" ) )
103+ . optional ( ) ,
100104 } )
101105
102106 case "openai-compatible" :
@@ -709,40 +713,50 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
709713 < label className = "text-sm font-medium" >
710714 { t ( "settings:codeIndex.modelLabel" ) }
711715 </ label >
712- < VSCodeDropdown
713- value = { currentSettings . codebaseIndexEmbedderModelId }
714- onChange = { ( e : any ) =>
716+ < VSCodeTextField
717+ value = { currentSettings . codebaseIndexEmbedderModelId || "" }
718+ onInput = { ( e : any ) =>
715719 updateSetting ( "codebaseIndexEmbedderModelId" , e . target . value )
716720 }
721+ placeholder = { t ( "settings:codeIndex.modelPlaceholder" ) }
717722 className = { cn ( "w-full" , {
718723 "border-red-500" : formErrors . codebaseIndexEmbedderModelId ,
719- } ) } >
720- < VSCodeOption value = "" className = "p-2" >
721- { t ( "settings:codeIndex.selectModel" ) }
722- </ VSCodeOption >
723- { getAvailableModels ( ) . map ( ( modelId ) => {
724- const model =
725- codebaseIndexModels ?. [
726- currentSettings . codebaseIndexEmbedderProvider
727- ] ?. [ modelId ]
728- return (
729- < VSCodeOption key = { modelId } value = { modelId } className = "p-2" >
730- { modelId } { " " }
731- { model
732- ? t ( "settings:codeIndex.modelDimensions" , {
733- dimension : model . dimension ,
734- } )
735- : "" }
736- </ VSCodeOption >
737- )
738724 } ) }
739- </ VSCodeDropdown >
725+ / >
740726 { formErrors . codebaseIndexEmbedderModelId && (
741727 < p className = "text-xs text-vscode-errorForeground mt-1 mb-0" >
742728 { formErrors . codebaseIndexEmbedderModelId }
743729 </ p >
744730 ) }
745731 </ div >
732+
733+ < div className = "space-y-2" >
734+ < label className = "text-sm font-medium" >
735+ { t ( "settings:codeIndex.modelDimensionLabel" ) }
736+ </ label >
737+ < VSCodeTextField
738+ value = {
739+ currentSettings . codebaseIndexEmbedderModelDimension ?. toString ( ) ||
740+ ""
741+ }
742+ onInput = { ( e : any ) => {
743+ const value = e . target . value
744+ ? parseInt ( e . target . value , 10 ) || undefined
745+ : undefined
746+ updateSetting ( "codebaseIndexEmbedderModelDimension" , value )
747+ } }
748+ placeholder = { t ( "settings:codeIndex.modelDimensionPlaceholder" ) }
749+ className = { cn ( "w-full" , {
750+ "border-red-500" :
751+ formErrors . codebaseIndexEmbedderModelDimension ,
752+ } ) }
753+ />
754+ { formErrors . codebaseIndexEmbedderModelDimension && (
755+ < p className = "text-xs text-vscode-errorForeground mt-1 mb-0" >
756+ { formErrors . codebaseIndexEmbedderModelDimension }
757+ </ p >
758+ ) }
759+ </ div >
746760 </ >
747761 ) }
748762
@@ -835,7 +849,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
835849 }
836850 onInput = { ( e : any ) => {
837851 const value = e . target . value
838- ? parseInt ( e . target . value )
852+ ? parseInt ( e . target . value , 10 ) || undefined
839853 : undefined
840854 updateSetting ( "codebaseIndexEmbedderModelDimension" , value )
841855 } }
0 commit comments