Skip to content

Commit dbaae88

Browse files
committed
fix: add embedder validation to prevent misleading status indicators (#4398)
1 parent a83e8c0 commit dbaae88

33 files changed

+1617
-13
lines changed

src/core/webview/webviewMessageHandler.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,9 +1875,26 @@ export const webviewMessageHandler = async (
18751875
// Auto-start indexing if now enabled and configured
18761876
if (provider.codeIndexManager.isFeatureEnabled && provider.codeIndexManager.isFeatureConfigured) {
18771877
if (!provider.codeIndexManager.isInitialized) {
1878-
await provider.codeIndexManager.initialize(provider.contextProxy)
1878+
try {
1879+
// Initialize will validate embedder configuration
1880+
const { requiresRestart } = await provider.codeIndexManager.initialize(
1881+
provider.contextProxy,
1882+
)
1883+
1884+
// If initialization succeeded (no exception thrown), start indexing
1885+
provider.codeIndexManager.startIndexing()
1886+
} catch (error) {
1887+
// Log the specific validation error for debugging
1888+
provider.log(
1889+
`Code index initialization failed during settings save: ${error instanceof Error ? error.message : String(error)}`,
1890+
)
1891+
// Re-throw to maintain existing error handling behavior
1892+
throw error
1893+
}
1894+
} else {
1895+
// Already initialized, just start indexing
1896+
provider.codeIndexManager.startIndexing()
18791897
}
1880-
provider.codeIndexManager.startIndexing()
18811898
}
18821899
}
18831900

src/i18n/locales/ca/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"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}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Ha fallat l'autenticació. Comproveu la vostra clau d'API a la configuració.",
25+
"connectionFailed": "No s'ha pogut connectar al servei d'incrustació. Comproveu la vostra configuració de connexió i assegureu-vos que el servei estigui funcionant.",
26+
"modelNotAvailable": "El model especificat no està disponible. Comproveu la vostra configuració de model.",
27+
"configurationError": "Configuració d'incrustació no vàlida. Reviseu la vostra configuració.",
28+
"serviceUnavailable": "El servei d'incrustació no està disponible. Assegureu-vos que estigui funcionant i sigui accessible.",
29+
"invalidEndpoint": "Punt final d'API no vàlid. Comproveu la vostra configuració d'URL."
2230
}
2331
}

src/i18n/locales/de/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Verbindung zur Qdrant-Vektordatenbank fehlgeschlagen. Stelle sicher, dass Qdrant läuft und unter {{qdrantUrl}} erreichbar ist. Fehler: {{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Authentifizierung fehlgeschlagen. Bitte überprüfe deinen API-Schlüssel in den Einstellungen.",
25+
"connectionFailed": "Verbindung zum Embedder-Dienst fehlgeschlagen. Bitte überprüfe deine Verbindungseinstellungen und stelle sicher, dass der Dienst läuft.",
26+
"modelNotAvailable": "Das angegebene Modell ist nicht verfügbar. Bitte überprüfe deine Modellkonfiguration.",
27+
"configurationError": "Ungültige Embedder-Konfiguration. Bitte überprüfe deine Einstellungen.",
28+
"serviceUnavailable": "Der Embedder-Dienst ist nicht verfügbar. Bitte stelle sicher, dass er läuft und erreichbar ist.",
29+
"invalidEndpoint": "Ungültiger API-Endpunkt. Bitte überprüfe deine URL-Konfiguration."
2230
}
2331
}

src/i18n/locales/en/embeddings.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
"couldNotReadErrorBody": "Could not read error body",
1111
"requestFailed": "Ollama API request failed with status {{status}} {{statusText}}: {{errorBody}}",
1212
"invalidResponseStructure": "Invalid response structure from Ollama API: \"embeddings\" array not found or not an array.",
13-
"embeddingFailed": "Ollama embedding failed: {{message}}"
13+
"embeddingFailed": "Ollama embedding failed: {{message}}",
14+
"serviceNotRunning": "Ollama service is not running at {{baseUrl}}",
15+
"serviceUnavailable": "Ollama service is unavailable (status: {{status}})",
16+
"modelNotFound": "Ollama model not found: {{modelId}}",
17+
"modelNotEmbeddingCapable": "Ollama model is not embedding capable: {{modelId}}",
18+
"hostNotFound": "Ollama host not found: {{baseUrl}}"
1419
},
1520
"scanner": {
1621
"unknownErrorProcessingFile": "Unknown error processing file {{filePath}}",
@@ -19,5 +24,13 @@
1924
},
2025
"vectorStore": {
2126
"qdrantConnectionFailed": "Failed to connect to Qdrant vector database. Please ensure Qdrant is running and accessible at {{qdrantUrl}}. Error: {{errorMessage}}"
27+
},
28+
"validation": {
29+
"authenticationFailed": "Authentication failed. Please check your API key in the settings.",
30+
"connectionFailed": "Failed to connect to the embedder service. Please check your connection settings and ensure the service is running.",
31+
"modelNotAvailable": "The specified model is not available. Please check your model configuration.",
32+
"configurationError": "Invalid embedder configuration. Please review your settings.",
33+
"serviceUnavailable": "The embedder service is not available. Please ensure it is running and accessible.",
34+
"invalidEndpoint": "Invalid API endpoint. Please check your URL configuration."
2235
}
2336
}

src/i18n/locales/es/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"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}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Error de autenticación. Comprueba tu clave de API en los ajustes.",
25+
"connectionFailed": "Error al conectar con el servicio de embedder. Comprueba los ajustes de conexión y asegúrate de que el servicio esté funcionando.",
26+
"modelNotAvailable": "El modelo especificado no está disponible. Comprueba la configuración de tu modelo.",
27+
"configurationError": "Configuración de embedder no válida. Revisa tus ajustes.",
28+
"serviceUnavailable": "El servicio de embedder no está disponible. Asegúrate de que esté funcionando y sea accesible.",
29+
"invalidEndpoint": "Punto de conexión de API no válido. Comprueba la configuración de tu URL."
2230
}
2331
}

src/i18n/locales/fr/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Échec de la connexion à la base de données vectorielle Qdrant. Veuillez vous assurer que Qdrant fonctionne et est accessible à {{qdrantUrl}}. Erreur : {{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Échec de l'authentification. Veuillez vérifier votre clé API dans les paramètres.",
25+
"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.",
26+
"modelNotAvailable": "Le modèle spécifié n'est pas disponible. Veuillez vérifier la configuration de votre modèle.",
27+
"configurationError": "Configuration de l'embedder invalide. Veuillez vérifier vos paramètres.",
28+
"serviceUnavailable": "Le service d'embedding n'est pas disponible. Veuillez vous assurer qu'il est en cours d'exécution and accessible.",
29+
"invalidEndpoint": "Point de terminaison d'API invalide. Veuillez vérifier votre configuration d'URL."
2230
}
2331
}

src/i18n/locales/hi/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Qdrant वेक्टर डेटाबेस से कनेक्ट करने में विफल। कृपया सुनिश्चित करें कि Qdrant चल रहा है और {{qdrantUrl}} पर पहुंच योग्य है। त्रुटि: {{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "प्रमाणीकरण विफल। कृपया सेटिंग्स में अपनी एपीआई कुंजी जांचें।",
25+
"connectionFailed": "एम्बेडर सेवा से कनेक्ट करने में विफल। कृपया अपनी कनेक्शन सेटिंग्स जांचें और सुनिश्चित करें कि सेवा चल रही है।",
26+
"modelNotAvailable": "निर्दिष्ट मॉडल उपलब्ध नहीं है। कृपया अपनी मॉडल कॉन्फ़िगरेशन जांचें।",
27+
"configurationError": "अमान्य एम्बेडर कॉन्फ़िगरेशन। कृपया अपनी सेटिंग्स की समीक्षा करें।",
28+
"serviceUnavailable": "एम्बेडर सेवा उपलब्ध नहीं है। कृपया सुनिश्चित करें कि यह चल रहा है और पहुंच योग्य है।",
29+
"invalidEndpoint": "अमान्य एपीआई एंडपॉइंट। कृपया अपनी यूआरएल कॉन्फ़िगरेशन जांचें।"
2230
}
2331
}

src/i18n/locales/id/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Gagal terhubung ke database vektor Qdrant. Pastikan Qdrant berjalan dan dapat diakses di {{qdrantUrl}}. Error: {{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Autentikasi gagal. Silakan periksa kunci API Anda di pengaturan.",
25+
"connectionFailed": "Gagal terhubung ke layanan embedder. Silakan periksa pengaturan koneksi Anda dan pastikan layanan berjalan.",
26+
"modelNotAvailable": "Model yang ditentukan tidak tersedia. Silakan periksa konfigurasi model Anda.",
27+
"configurationError": "Konfigurasi embedder tidak valid. Harap tinjau pengaturan Anda.",
28+
"serviceUnavailable": "Layanan embedder tidak tersedia. Pastikan layanan tersebut berjalan dan dapat diakses.",
29+
"invalidEndpoint": "Endpoint API tidak valid. Silakan periksa konfigurasi URL Anda."
2230
}
2331
}

src/i18n/locales/it/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Impossibile connettersi al database vettoriale Qdrant. Assicurati che Qdrant sia in esecuzione e accessibile su {{qdrantUrl}}. Errore: {{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "Autenticazione fallita. Controlla la tua chiave API nelle impostazioni.",
25+
"connectionFailed": "Connessione al servizio di embedder fallita. Controlla le impostazioni di connessione e assicurati che il servizio sia in esecuzione.",
26+
"modelNotAvailable": "Il modello specificato non è disponibile. Controlla la configurazione del tuo modello.",
27+
"configurationError": "Configurazione dell'embedder non valida. Rivedi le tue impostazioni.",
28+
"serviceUnavailable": "Il servizio di embedder non è disponibile. Assicurati che sia in esecuzione e accessibile.",
29+
"invalidEndpoint": "Endpoint API non valido. Controlla la configurazione del tuo URL."
2230
}
2331
}

src/i18n/locales/ja/embeddings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,13 @@
1919
},
2020
"vectorStore": {
2121
"qdrantConnectionFailed": "Qdrantベクターデータベースへの接続に失敗しました。Qdrantが実行中で{{qdrantUrl}}でアクセス可能であることを確認してください。エラー:{{errorMessage}}"
22+
},
23+
"validation": {
24+
"authenticationFailed": "認証に失敗しました。設定でAPIキーを確認してください。",
25+
"connectionFailed": "エンベッダーサービスへの接続に失敗しました。接続設定を確認し、サービスが実行されていることを確認してください。",
26+
"modelNotAvailable": "指定されたモデルは利用できません。モデル構成を確認してください。",
27+
"configurationError": "無効なエンベッダー構成です。設定を確認してください。",
28+
"serviceUnavailable": "エンベッダーサービスは利用できません。実行中でアクセス可能であることを確認してください。",
29+
"invalidEndpoint": "無効なAPIエンドポイントです。URL構成を確認してください。"
2230
}
2331
}

0 commit comments

Comments
 (0)