From 44c865ae4459767f5afb23b9a9e2c6ccbdabca64 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Wed, 30 Jul 2025 14:45:14 +0000 Subject: [PATCH] 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 --- packages/types/src/codebase-index.ts | 1 + .../src/components/chat/CodeIndexPopover.tsx | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/packages/types/src/codebase-index.ts b/packages/types/src/codebase-index.ts index a914224e9f..595789bb1a 100644 --- a/packages/types/src/codebase-index.ts +++ b/packages/types/src/codebase-index.ts @@ -50,6 +50,7 @@ export const codebaseIndexModelsSchema = z.object({ "openai-compatible": z.record(z.string(), z.object({ dimension: z.number() })).optional(), gemini: z.record(z.string(), z.object({ dimension: z.number() })).optional(), mistral: z.record(z.string(), z.object({ dimension: z.number() })).optional(), + jina: z.record(z.string(), z.object({ dimension: z.number() })).optional(), }) export type CodebaseIndexModels = z.infer diff --git a/webview-ui/src/components/chat/CodeIndexPopover.tsx b/webview-ui/src/components/chat/CodeIndexPopover.tsx index c85aaf6ea5..53e106ac9e 100644 --- a/webview-ui/src/components/chat/CodeIndexPopover.tsx +++ b/webview-ui/src/components/chat/CodeIndexPopover.tsx @@ -136,6 +136,13 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => { .min(1, t("settings:codeIndex.validation.modelSelectionRequired")), }) + case "jina": + return baseSchema.extend({ + codebaseIndexEmbedderModelId: z + .string() + .min(1, t("settings:codeIndex.validation.modelSelectionRequired")), + }) + default: return baseSchema } @@ -628,6 +635,9 @@ export const CodeIndexPopover: React.FC = ({ {t("settings:codeIndex.mistralProvider")} + + {t("settings:codeIndex.jinaProvider")} + @@ -1020,6 +1030,49 @@ export const CodeIndexPopover: React.FC = ({ )} + {currentSettings.codebaseIndexEmbedderProvider === "jina" && ( + <> +
+ + + updateSetting("codebaseIndexEmbedderModelId", e.target.value) + } + className={cn("w-full", { + "border-red-500": formErrors.codebaseIndexEmbedderModelId, + })}> + + {t("settings:codeIndex.selectModel")} + + {getAvailableModels().map((modelId) => { + const model = + codebaseIndexModels?.[ + currentSettings.codebaseIndexEmbedderProvider + ]?.[modelId] + return ( + + {modelId}{" "} + {model + ? t("settings:codeIndex.modelDimensions", { + dimension: model.dimension, + }) + : ""} + + ) + })} + + {formErrors.codebaseIndexEmbedderModelId && ( +

+ {formErrors.codebaseIndexEmbedderModelId} +

+ )} +
+ + )} + {/* Qdrant Settings */}