|
|
@@ -97,6 +97,10 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => {
|
|
|
.min(1, t("settings:codeIndex.validation.ollamaBaseUrlRequired"))
|
|
|
.url(t("settings:codeIndex.validation.invalidOllamaUrl")),
|
|
|
codebaseIndexEmbedderModelId: z.string().min(1, t("settings:codeIndex.validation.modelIdRequired")),
|
|
|
+ codebaseIndexEmbedderModelDimension: z
|
|
|
+ .number()
|
|
|
+ .min(1, t("settings:codeIndex.validation.modelDimensionRequired"))
|
|
|
+ .optional(),
|
|
|
})
|
|
|
|
|
|
case "openai-compatible":
|
|
|
@@ -709,40 +713,50 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|
|
<label className="text-sm font-medium">
|
|
|
{t("settings:codeIndex.modelLabel")}
|
|
|
</label>
|
|
|
- <VSCodeDropdown
|
|
|
- value={currentSettings.codebaseIndexEmbedderModelId}
|
|
|
- onChange={(e: any) =>
|
|
|
+ <VSCodeTextField
|
|
|
+ value={currentSettings.codebaseIndexEmbedderModelId || ""}
|
|
|
+ onInput={(e: any) =>
|
|
|
updateSetting("codebaseIndexEmbedderModelId", e.target.value)
|
|
|
}
|
|
|
+ placeholder={t("settings:codeIndex.modelPlaceholder")}
|
|
|
className={cn("w-full", {
|
|
|
"border-red-500": formErrors.codebaseIndexEmbedderModelId,
|
|
|
- })}>
|
|
|
- <VSCodeOption value="" className="p-2">
|
|
|
- {t("settings:codeIndex.selectModel")}
|
|
|
- </VSCodeOption>
|
|
|
- {getAvailableModels().map((modelId) => {
|
|
|
- const model =
|
|
|
- codebaseIndexModels?.[
|
|
|
- currentSettings.codebaseIndexEmbedderProvider
|
|
|
- ]?.[modelId]
|
|
|
- return (
|
|
|
- <VSCodeOption key={modelId} value={modelId} className="p-2">
|
|
|
- {modelId}{" "}
|
|
|
- {model
|
|
|
- ? t("settings:codeIndex.modelDimensions", {
|
|
|
- dimension: model.dimension,
|
|
|
- })
|
|
|
- : ""}
|
|
|
- </VSCodeOption>
|
|
|
- )
|
|
|
})}
|
|
|
- </VSCodeDropdown>
|
|
|
+ />
|
|
|
{formErrors.codebaseIndexEmbedderModelId && (
|
|
|
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
|
|
|
{formErrors.codebaseIndexEmbedderModelId}
|
|
|
</p>
|
|
|
)}
|
|
|
</div>
|
|
|
+
|
|
|
+ <div className="space-y-2">
|
|
|
+ <label className="text-sm font-medium">
|
|
|
+ {t("settings:codeIndex.modelDimensionLabel")}
|
|
|
+ </label>
|
|
|
+ <VSCodeTextField
|
|
|
+ value={
|
|
|
+ currentSettings.codebaseIndexEmbedderModelDimension?.toString() ||
|
|
|
+ ""
|
|
|
+ }
|
|
|
+ onInput={(e: any) => {
|
|
|
+ const value = e.target.value
|
|
|
+ ? parseInt(e.target.value, 10) || undefined
|
|
|
+ : undefined
|
|
|
+ updateSetting("codebaseIndexEmbedderModelDimension", value)
|
|
|
+ }}
|
|
|
+ placeholder={t("settings:codeIndex.modelDimensionPlaceholder")}
|
|
|
+ className={cn("w-full", {
|
|
|
+ "border-red-500":
|
|
|
+ formErrors.codebaseIndexEmbedderModelDimension,
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ {formErrors.codebaseIndexEmbedderModelDimension && (
|
|
|
+ <p className="text-xs text-vscode-errorForeground mt-1 mb-0">
|
|
|
+ {formErrors.codebaseIndexEmbedderModelDimension}
|
|
|
+ </p>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
</>
|
|
|
)}
|
|
|
|
|
|
@@ -835,7 +849,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|
|
}
|
|
|
onInput={(e: any) => {
|
|
|
const value = e.target.value
|
|
|
- ? parseInt(e.target.value)
|
|
|
+ ? parseInt(e.target.value, 10) || undefined
|
|
|
: undefined
|
|
|
updateSetting("codebaseIndexEmbedderModelDimension", value)
|
|
|
}}
|