mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-10 03:28:03 +00:00
fix: improve code index error handling and add text-embedding-v4 support
- Enhanced error handling in startIndexing to show detailed validation errors - Added support for text-embedding-v4 model in OpenAI Compatible provider - Added user-friendly error messages with proper translations - Fixes #7356
This commit is contained in:
parent
b433d1f7a2
commit
f31560a743
3 changed files with 98 additions and 6 deletions
|
|
@ -2266,7 +2266,32 @@ export const webviewMessageHandler = async (
|
|||
}
|
||||
if (manager.isFeatureEnabled && manager.isFeatureConfigured) {
|
||||
if (!manager.isInitialized) {
|
||||
await manager.initialize(provider.contextProxy)
|
||||
try {
|
||||
await manager.initialize(provider.contextProxy)
|
||||
} catch (initError) {
|
||||
// Initialization failed - send detailed error to user
|
||||
const errorMessage = initError instanceof Error ? initError.message : String(initError)
|
||||
provider.log(`Code index initialization failed: ${errorMessage}`)
|
||||
|
||||
// Send error status to webview with user-friendly message
|
||||
provider.postMessageToWebview({
|
||||
type: "indexingStatusUpdate",
|
||||
values: {
|
||||
systemStatus: "Error",
|
||||
message: errorMessage,
|
||||
processedItems: 0,
|
||||
totalItems: 0,
|
||||
currentItemUnit: "items",
|
||||
},
|
||||
})
|
||||
|
||||
// Show error notification to user
|
||||
vscode.window.showErrorMessage(
|
||||
t("embeddings:validation.initializationFailed", { error: errorMessage }) ||
|
||||
`Code indexing initialization failed: ${errorMessage}`,
|
||||
)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// startIndexing now handles error recovery internally
|
||||
|
|
@ -2274,13 +2299,75 @@ export const webviewMessageHandler = async (
|
|||
|
||||
// If startIndexing recovered from error, we need to reinitialize
|
||||
if (!manager.isInitialized) {
|
||||
await manager.initialize(provider.contextProxy)
|
||||
// Try starting again after initialization
|
||||
manager.startIndexing()
|
||||
try {
|
||||
await manager.initialize(provider.contextProxy)
|
||||
// Try starting again after initialization
|
||||
manager.startIndexing()
|
||||
} catch (reinitError) {
|
||||
// Re-initialization failed - send detailed error to user
|
||||
const errorMessage =
|
||||
reinitError instanceof Error ? reinitError.message : String(reinitError)
|
||||
provider.log(`Code index re-initialization failed: ${errorMessage}`)
|
||||
|
||||
// Send error status to webview
|
||||
provider.postMessageToWebview({
|
||||
type: "indexingStatusUpdate",
|
||||
values: {
|
||||
systemStatus: "Error",
|
||||
message: errorMessage,
|
||||
processedItems: 0,
|
||||
totalItems: 0,
|
||||
currentItemUnit: "items",
|
||||
},
|
||||
})
|
||||
|
||||
// Show error notification to user
|
||||
vscode.window.showErrorMessage(
|
||||
t("embeddings:validation.initializationFailed", { error: errorMessage }) ||
|
||||
`Code indexing initialization failed: ${errorMessage}`,
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Feature is not enabled or not configured
|
||||
const message = !manager.isFeatureEnabled
|
||||
? t("embeddings:validation.featureDisabled") || "Code indexing is disabled"
|
||||
: t("embeddings:validation.notConfigured") || "Code indexing is not properly configured"
|
||||
|
||||
provider.postMessageToWebview({
|
||||
type: "indexingStatusUpdate",
|
||||
values: {
|
||||
systemStatus: "Error",
|
||||
message: message,
|
||||
processedItems: 0,
|
||||
totalItems: 0,
|
||||
currentItemUnit: "items",
|
||||
},
|
||||
})
|
||||
|
||||
vscode.window.showErrorMessage(message)
|
||||
}
|
||||
} catch (error) {
|
||||
provider.log(`Error starting indexing: ${error instanceof Error ? error.message : String(error)}`)
|
||||
const errorMessage = error instanceof Error ? error.message : String(error)
|
||||
provider.log(`Error starting indexing: ${errorMessage}`)
|
||||
|
||||
// Send error status to webview
|
||||
provider.postMessageToWebview({
|
||||
type: "indexingStatusUpdate",
|
||||
values: {
|
||||
systemStatus: "Error",
|
||||
message: errorMessage,
|
||||
processedItems: 0,
|
||||
totalItems: 0,
|
||||
currentItemUnit: "items",
|
||||
},
|
||||
})
|
||||
|
||||
// Show error notification to user
|
||||
vscode.window.showErrorMessage(
|
||||
t("embeddings:validation.startIndexingFailed", { error: errorMessage }) ||
|
||||
`Failed to start indexing: ${errorMessage}`,
|
||||
)
|
||||
}
|
||||
break
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,11 @@
|
|||
"invalidModel": "Invalid model. Please check your model configuration.",
|
||||
"invalidResponse": "Invalid response from embedder service. Please check your configuration.",
|
||||
"apiKeyRequired": "API key is required for this embedder",
|
||||
"baseUrlRequired": "Base URL is required for this embedder"
|
||||
"baseUrlRequired": "Base URL is required for this embedder",
|
||||
"initializationFailed": "Code indexing initialization failed: {{error}}",
|
||||
"featureDisabled": "Code indexing is disabled. Please enable it in the settings.",
|
||||
"notConfigured": "Code indexing is not properly configured. Please check your settings.",
|
||||
"startIndexingFailed": "Failed to start indexing: {{error}}"
|
||||
},
|
||||
"serviceFactory": {
|
||||
"openAiConfigMissing": "OpenAI configuration missing for embedder creation",
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ export const EMBEDDING_MODEL_PROFILES: EmbeddingModelProfiles = {
|
|||
"text-embedding-3-small": { dimension: 1536, scoreThreshold: 0.4 },
|
||||
"text-embedding-3-large": { dimension: 3072, scoreThreshold: 0.4 },
|
||||
"text-embedding-ada-002": { dimension: 1536, scoreThreshold: 0.4 },
|
||||
"text-embedding-v4": { dimension: 1536, scoreThreshold: 0.4 }, // Added support for text-embedding-v4
|
||||
"nomic-embed-code": {
|
||||
dimension: 3584,
|
||||
scoreThreshold: 0.15,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue