Skip to content

Commit 44c865a

Browse files
committed
fix: complete Jina provider support in type definitions and UI
- Add "jina" to EmbedderProvider types in 5 files - Add Jina model profiles to embeddingModels.ts - Add Jina case to getDefaultModelId function - Add "jina" to codebaseIndexModelsSchema in packages/types - Add Jina provider option to CodeIndexPopover UI - Add Jina validation case for form validation Fixes TypeScript compilation errors for Jina embedding provider
1 parent 0416643 commit 44c865a

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

packages/types/src/codebase-index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export const codebaseIndexModelsSchema = z.object({
5050
"openai-compatible": z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5151
gemini: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5252
mistral: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
53+
jina: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5354
})
5455

5556
export type CodebaseIndexModels = z.infer<typeof codebaseIndexModelsSchema>

webview-ui/src/components/chat/CodeIndexPopover.tsx

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => {
136136
.min(1, t("settings:codeIndex.validation.modelSelectionRequired")),
137137
})
138138

139+
case "jina":
140+
return baseSchema.extend({
141+
codebaseIndexEmbedderModelId: z
142+
.string()
143+
.min(1, t("settings:codeIndex.validation.modelSelectionRequired")),
144+
})
145+
139146
default:
140147
return baseSchema
141148
}
@@ -628,6 +635,9 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
628635
<SelectItem value="mistral">
629636
{t("settings:codeIndex.mistralProvider")}
630637
</SelectItem>
638+
<SelectItem value="jina">
639+
{t("settings:codeIndex.jinaProvider")}
640+
</SelectItem>
631641
</SelectContent>
632642
</Select>
633643
</div>
@@ -1020,6 +1030,49 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
10201030
</>
10211031
)}
10221032

1033+
{currentSettings.codebaseIndexEmbedderProvider === "jina" && (
1034+
<>
1035+
<div className="space-y-2">
1036+
<label className="text-sm font-medium">
1037+
{t("settings:codeIndex.modelLabel")}
1038+
</label>
1039+
<VSCodeDropdown
1040+
value={currentSettings.codebaseIndexEmbedderModelId}
1041+
onChange={(e: any) =>
1042+
updateSetting("codebaseIndexEmbedderModelId", e.target.value)
1043+
}
1044+
className={cn("w-full", {
1045+
"border-red-500": formErrors.codebaseIndexEmbedderModelId,
1046+
})}>
1047+
<VSCodeOption value="" className="p-2">
1048+
{t("settings:codeIndex.selectModel")}
1049+
</VSCodeOption>
1050+
{getAvailableModels().map((modelId) => {
1051+
const model =
1052+
codebaseIndexModels?.[
1053+
currentSettings.codebaseIndexEmbedderProvider
1054+
]?.[modelId]
1055+
return (
1056+
<VSCodeOption key={modelId} value={modelId} className="p-2">
1057+
{modelId}{" "}
1058+
{model
1059+
? t("settings:codeIndex.modelDimensions", {
1060+
dimension: model.dimension,
1061+
})
1062+
: ""}
1063+
</VSCodeOption>
1064+
)
1065+
})}
1066+
</VSCodeDropdown>
1067+
{formErrors.codebaseIndexEmbedderModelId && (
1068+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
1069+
{formErrors.codebaseIndexEmbedderModelId}
1070+
</p>
1071+
)}
1072+
</div>
1073+
</>
1074+
)}
1075+
10231076
{/* Qdrant Settings */}
10241077
<div className="space-y-2">
10251078
<label className="text-sm font-medium">

0 commit comments

Comments
 (0)