Skip to content
26 changes: 10 additions & 16 deletions src/core/config/__tests__/importExport.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ describe("importExport", () => {
codebaseIndexEmbedderBaseUrl: "http://localhost:11434", // Wrong URL from Ollama
// OpenAI Compatible settings are now stored directly in codebaseIndexConfig
codebaseIndexOpenAiCompatibleBaseUrl: "https://custom-openai-api.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: 1536,
codebaseIndexEmbedderModelDimension: 1536,
},
}

Expand Down Expand Up @@ -673,7 +673,7 @@ describe("importExport", () => {
codebaseIndexEmbedderBaseUrl: "",
// OpenAI Compatible settings are now stored directly in codebaseIndexConfig
codebaseIndexOpenAiCompatibleBaseUrl: "https://api.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: 768,
codebaseIndexEmbedderModelDimension: 768,
},
}

Expand All @@ -688,9 +688,7 @@ describe("importExport", () => {

const exportedData = (safeWriteJson as Mock).mock.calls[0][1]
// Settings are now exported as-is from codebaseIndexConfig
expect(
exportedData.globalSettings.codebaseIndexConfig.codebaseIndexOpenAiCompatibleModelDimension,
).toBe(768)
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexEmbedderModelDimension).toBe(768)
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexOpenAiCompatibleBaseUrl).toBe(
"https://api.example.com/v1",
)
Expand Down Expand Up @@ -731,7 +729,7 @@ describe("importExport", () => {
codebaseIndexEmbedderBaseUrl: "http://localhost:11434", // Wrong URL from Ollama
// OpenAI Compatible settings are now stored directly in codebaseIndexConfig
codebaseIndexOpenAiCompatibleBaseUrl: "https://openai-compatible.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: 1536,
codebaseIndexEmbedderModelDimension: 1536,
},
}

Expand All @@ -749,9 +747,7 @@ describe("importExport", () => {
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexOpenAiCompatibleBaseUrl).toBe(
"https://openai-compatible.example.com/v1",
)
expect(
exportedData.globalSettings.codebaseIndexConfig.codebaseIndexOpenAiCompatibleModelDimension,
).toBe(1536)
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexEmbedderModelDimension).toBe(1536)
// The generic embedder base URL is still there
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexEmbedderBaseUrl).toBe(
"http://localhost:11434",
Expand Down Expand Up @@ -921,7 +917,6 @@ describe("importExport", () => {
codebaseIndexEmbedderModelDimension: 1536,
// OpenAI Compatible settings are now stored directly here
codebaseIndexOpenAiCompatibleBaseUrl: "https://imported-url.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: 1536,
},
},
})
Expand Down Expand Up @@ -956,7 +951,7 @@ describe("importExport", () => {
expect.objectContaining({
codebaseIndexConfig: expect.objectContaining({
codebaseIndexOpenAiCompatibleBaseUrl: "https://imported-url.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: 1536,
codebaseIndexEmbedderModelDimension: 1536,
}),
}),
)
Expand Down Expand Up @@ -1105,7 +1100,6 @@ describe("importExport", () => {
codebaseIndexEmbedderModelDimension: testModelDimension,
// OpenAI Compatible settings are now stored directly in codebaseIndexConfig
codebaseIndexOpenAiCompatibleBaseUrl: "https://api.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: testModelDimension,
},
}

Expand Down Expand Up @@ -1160,7 +1154,7 @@ describe("importExport", () => {

// Step 9: Verify that the model dimension was preserved exactly in global settings
const importedGlobalSettings = mockContextProxy.setValues.mock.calls[0][0]
expect(importedGlobalSettings.codebaseIndexConfig?.codebaseIndexOpenAiCompatibleModelDimension).toBe(
expect(importedGlobalSettings.codebaseIndexConfig?.codebaseIndexEmbedderModelDimension).toBe(
testModelDimension,
)
expect(importedGlobalSettings.codebaseIndexConfig?.codebaseIndexOpenAiCompatibleBaseUrl).toBe(
Expand Down Expand Up @@ -1198,7 +1192,7 @@ describe("importExport", () => {
codebaseIndexEmbedderBaseUrl: "https://api.example.com/v1",
// OpenAI Compatible settings are now stored directly in codebaseIndexConfig
codebaseIndexOpenAiCompatibleBaseUrl: "https://api.example.com/v1",
codebaseIndexOpenAiCompatibleModelDimension: testModelDimension, // 0 is a valid value
codebaseIndexEmbedderModelDimension: testModelDimension, // 0 is a valid value
},
}

Expand All @@ -1219,7 +1213,7 @@ describe("importExport", () => {

// Verify the exported data includes the model dimension even when it's 0
const exportedData = (safeWriteJson as Mock).mock.calls[0][1]
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexOpenAiCompatibleModelDimension).toBe(0)
expect(exportedData.globalSettings.codebaseIndexConfig.codebaseIndexEmbedderModelDimension).toBe(0)

// Test import roundtrip
const exportedFileContent = JSON.stringify(exportedData)
Expand Down Expand Up @@ -1247,7 +1241,7 @@ describe("importExport", () => {

// Verify that model dimension 0 was preserved in global settings
const setValuesCall = mockContextProxy.setValues.mock.calls[0][0]
expect(setValuesCall.codebaseIndexConfig?.codebaseIndexOpenAiCompatibleModelDimension).toBe(0)
expect(setValuesCall.codebaseIndexConfig?.codebaseIndexEmbedderModelDimension).toBe(0)
})

it("should handle missing model dimension gracefully", async () => {
Expand Down
2 changes: 1 addition & 1 deletion src/core/webview/webviewMessageHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1967,8 +1967,8 @@ export const webviewMessageHandler = async (
codebaseIndexEmbedderProvider: settings.codebaseIndexEmbedderProvider,
codebaseIndexEmbedderBaseUrl: settings.codebaseIndexEmbedderBaseUrl,
codebaseIndexEmbedderModelId: settings.codebaseIndexEmbedderModelId,
codebaseIndexEmbedderModelDimension: settings.codebaseIndexEmbedderModelDimension, // Generic dimension
codebaseIndexOpenAiCompatibleBaseUrl: settings.codebaseIndexOpenAiCompatibleBaseUrl,
codebaseIndexOpenAiCompatibleModelDimension: settings.codebaseIndexOpenAiCompatibleModelDimension,
codebaseIndexSearchMaxResults: settings.codebaseIndexSearchMaxResults,
codebaseIndexSearchMinScore: settings.codebaseIndexSearchMinScore,
}
Expand Down
14 changes: 12 additions & 2 deletions src/i18n/locales/ca/embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"vectorStore": {
"qdrantConnectionFailed": "No s'ha pogut connectar a la base de dades vectorial Qdrant. Assegura't que Qdrant estigui funcionant i sigui accessible a {{qdrantUrl}}. Error: {{errorMessage}}"
},
"validation": {
"validation": {
"authenticationFailed": "Ha fallat l'autenticació. Comproveu la vostra clau d'API a la configuració.",
"connectionFailed": "No s'ha pogut connectar al servei d'incrustació. Comproveu la vostra configuració de connexió i assegureu-vos que el servei estigui funcionant.",
"modelNotAvailable": "El model especificat no està disponible. Comproveu la vostra configuració de model.",
Expand All @@ -36,6 +36,16 @@
"invalidApiKey": "Clau d'API no vàlida. Comproveu la vostra configuració de clau d'API.",
"invalidBaseUrl": "URL base no vàlida. Comproveu la vostra configuració d'URL.",
"invalidModel": "Model no vàlid. Comproveu la vostra configuració de model.",
"invalidResponse": "Resposta no vàlida del servei d'incrustació. Comproveu la vostra configuració."
"invalidResponse": "Resposta no vàlida del servei d'incrustació. Comproveu la vostra configuració.",
"serviceFactory": {
"openAiConfigMissing": "Falta la configuració d'OpenAI per crear l'embedder",
"ollamaConfigMissing": "Falta la configuració d'Ollama per crear l'embedder",
"openAiCompatibleConfigMissing": "Falta la configuració compatible amb OpenAI per crear l'embedder",
"geminiConfigMissing": "Falta la configuració de Gemini per crear l'embedder",
"invalidEmbedderType": "Tipus d'embedder configurat no vàlid: {{embedderProvider}}",
"vectorDimensionNotDeterminedOpenAiCompatible": "No s'ha pogut determinar la dimensió del vector per al model '{{modelId}}' amb el proveïdor '{{provider}}'. Assegura't que la 'Dimensió d'incrustació' estigui configurada correctament als paràmetres del proveïdor compatible amb OpenAI.",
"vectorDimensionNotDetermined": "No s'ha pogut determinar la dimensió del vector per al model '{{modelId}}' amb el proveïdor '{{provider}}'. Comprova els perfils del model o la configuració.",
"qdrantUrlMissing": "Falta l'URL de Qdrant per crear l'emmagatzematge de vectors",
"codeIndexingNotConfigured": "No es poden crear serveis: La indexació de codi no està configurada correctament"
}
}
14 changes: 12 additions & 2 deletions src/i18n/locales/de/embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"vectorStore": {
"qdrantConnectionFailed": "Verbindung zur Qdrant-Vektordatenbank fehlgeschlagen. Stelle sicher, dass Qdrant läuft und unter {{qdrantUrl}} erreichbar ist. Fehler: {{errorMessage}}"
},
"validation": {
"validation": {
"authenticationFailed": "Authentifizierung fehlgeschlagen. Bitte überprüfe deinen API-Schlüssel in den Einstellungen.",
"connectionFailed": "Verbindung zum Embedder-Dienst fehlgeschlagen. Bitte überprüfe deine Verbindungseinstellungen und stelle sicher, dass der Dienst läuft.",
"modelNotAvailable": "Das angegebene Modell ist nicht verfügbar. Bitte überprüfe deine Modellkonfiguration.",
Expand All @@ -36,6 +36,16 @@
"invalidApiKey": "Ungültiger API-Schlüssel. Bitte überprüfe deine API-Schlüssel-Konfiguration.",
"invalidBaseUrl": "Ungültige Basis-URL. Bitte überprüfe deine URL-Konfiguration.",
"invalidModel": "Ungültiges Modell. Bitte überprüfe deine Modellkonfiguration.",
"invalidResponse": "Ungültige Antwort vom Embedder-Dienst. Bitte überprüfe deine Konfiguration."
"invalidResponse": "Ungültige Antwort vom Embedder-Dienst. Bitte überprüfe deine Konfiguration.",
"serviceFactory": {
"openAiConfigMissing": "OpenAI-Konfiguration fehlt für die Erstellung des Embedders",
"ollamaConfigMissing": "Ollama-Konfiguration fehlt für die Erstellung des Embedders",
"openAiCompatibleConfigMissing": "OpenAI-kompatible Konfiguration fehlt für die Erstellung des Embedders",
"geminiConfigMissing": "Gemini-Konfiguration fehlt für die Erstellung des Embedders",
"invalidEmbedderType": "Ungültiger Embedder-Typ konfiguriert: {{embedderProvider}}",
"vectorDimensionNotDeterminedOpenAiCompatible": "Konnte die Vektordimension für Modell '{{modelId}}' mit Anbieter '{{provider}}' nicht bestimmen. Stelle sicher, dass die 'Embedding-Dimension' in den OpenAI-kompatiblen Anbietereinstellungen korrekt eingestellt ist.",
"vectorDimensionNotDetermined": "Konnte die Vektordimension für Modell '{{modelId}}' mit Anbieter '{{provider}}' nicht bestimmen. Überprüfe die Modellprofile oder Konfiguration.",
"qdrantUrlMissing": "Qdrant-URL fehlt für die Erstellung des Vektorspeichers",
"codeIndexingNotConfigured": "Kann keine Dienste erstellen: Code-Indizierung ist nicht richtig konfiguriert"
}
}
11 changes: 11 additions & 0 deletions src/i18n/locales/en/embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,16 @@
"invalidBaseUrl": "Invalid base URL. Please check your URL configuration.",
"invalidModel": "Invalid model. Please check your model configuration.",
"invalidResponse": "Invalid response from embedder service. Please check your configuration."
},
"serviceFactory": {
"openAiConfigMissing": "OpenAI configuration missing for embedder creation",
"ollamaConfigMissing": "Ollama configuration missing for embedder creation",
"openAiCompatibleConfigMissing": "OpenAI Compatible configuration missing for embedder creation",
"geminiConfigMissing": "Gemini configuration missing for embedder creation",
"invalidEmbedderType": "Invalid embedder type configured: {{embedderProvider}}",
"vectorDimensionNotDeterminedOpenAiCompatible": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Please ensure the 'Embedding Dimension' is correctly set in the OpenAI-Compatible provider settings.",
"vectorDimensionNotDetermined": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Check model profiles or configuration.",
"qdrantUrlMissing": "Qdrant URL missing for vector store creation",
"codeIndexingNotConfigured": "Cannot create services: Code indexing is not properly configured"
}
}
14 changes: 12 additions & 2 deletions src/i18n/locales/es/embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"vectorStore": {
"qdrantConnectionFailed": "Error al conectar con la base de datos vectorial Qdrant. Asegúrate de que Qdrant esté funcionando y sea accesible en {{qdrantUrl}}. Error: {{errorMessage}}"
},
"validation": {
"validation": {
"authenticationFailed": "Error de autenticación. Comprueba tu clave de API en los ajustes.",
"connectionFailed": "Error al conectar con el servicio de embedder. Comprueba los ajustes de conexión y asegúrate de que el servicio esté funcionando.",
"modelNotAvailable": "El modelo especificado no está disponible. Comprueba la configuración de tu modelo.",
Expand All @@ -36,6 +36,16 @@
"invalidApiKey": "Clave de API no válida. Comprueba la configuración de tu clave de API.",
"invalidBaseUrl": "URL base no válida. Comprueba la configuración de tu URL.",
"invalidModel": "Modelo no válido. Comprueba la configuración de tu modelo.",
"invalidResponse": "Respuesta no válida del servicio de embedder. Comprueba tu configuración."
"invalidResponse": "Respuesta no válida del servicio de embedder. Comprueba tu configuración.",
"serviceFactory": {
"openAiConfigMissing": "Falta la configuración de OpenAI para crear el incrustador",
"ollamaConfigMissing": "Falta la configuración de Ollama para crear el incrustador",
"openAiCompatibleConfigMissing": "Falta la configuración compatible con OpenAI para crear el incrustador",
"geminiConfigMissing": "Falta la configuración de Gemini para crear el incrustador",
"invalidEmbedderType": "Tipo de incrustador configurado inválido: {{embedderProvider}}",
"vectorDimensionNotDeterminedOpenAiCompatible": "No se pudo determinar la dimensión del vector para el modelo '{{modelId}}' con el proveedor '{{provider}}'. Asegúrate de que la 'Dimensión de incrustación' esté configurada correctamente en los ajustes del proveedor compatible con OpenAI.",
"vectorDimensionNotDetermined": "No se pudo determinar la dimensión del vector para el modelo '{{modelId}}' con el proveedor '{{provider}}'. Verifica los perfiles del modelo o la configuración.",
"qdrantUrlMissing": "Falta la URL de Qdrant para crear el almacén de vectores",
"codeIndexingNotConfigured": "No se pueden crear servicios: La indexación de código no está configurada correctamente"
}
}
14 changes: 12 additions & 2 deletions src/i18n/locales/fr/embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"vectorStore": {
"qdrantConnectionFailed": "Échec de la connexion à la base de données vectorielle Qdrant. Veuillez vous assurer que Qdrant fonctionne et est accessible à {{qdrantUrl}}. Erreur : {{errorMessage}}"
},
"validation": {
"validation": {
"authenticationFailed": "Échec de l'authentification. Veuillez vérifier votre clé API dans les paramètres.",
"connectionFailed": "Échec de la connexion au service d'embedding. Veuillez vérifier vos paramètres de connexion et vous assurer que le service est en cours d'exécution.",
"modelNotAvailable": "Le modèle spécifié n'est pas disponible. Veuillez vérifier la configuration de votre modèle.",
Expand All @@ -36,6 +36,16 @@
"invalidApiKey": "Clé API invalide. Veuillez vérifier votre configuration de clé API.",
"invalidBaseUrl": "URL de base invalide. Veuillez vérifier votre configuration d'URL.",
"invalidModel": "Modèle invalide. Veuillez vérifier votre configuration de modèle.",
"invalidResponse": "Réponse invalide du service d'embedder. Veuillez vérifier votre configuration."
"invalidResponse": "Réponse invalide du service d'embedder. Veuillez vérifier votre configuration.",
"serviceFactory": {
"openAiConfigMissing": "Configuration OpenAI manquante pour la création de l'embedder",
"ollamaConfigMissing": "Configuration Ollama manquante pour la création de l'embedder",
"openAiCompatibleConfigMissing": "Configuration compatible OpenAI manquante pour la création de l'embedder",
"geminiConfigMissing": "Configuration Gemini manquante pour la création de l'embedder",
"invalidEmbedderType": "Type d'embedder configuré invalide : {{embedderProvider}}",
"vectorDimensionNotDeterminedOpenAiCompatible": "Impossible de déterminer la dimension du vecteur pour le modèle '{{modelId}}' avec le fournisseur '{{provider}}'. Assure-toi que la 'Dimension d'embedding' est correctement définie dans les paramètres du fournisseur compatible OpenAI.",
"vectorDimensionNotDetermined": "Impossible de déterminer la dimension du vecteur pour le modèle '{{modelId}}' avec le fournisseur '{{provider}}'. Vérifie les profils du modèle ou la configuration.",
"qdrantUrlMissing": "URL Qdrant manquante pour la création du stockage de vecteurs",
"codeIndexingNotConfigured": "Impossible de créer les services : L'indexation du code n'est pas correctement configurée"
}
}
Loading
Loading