@@ -1807,6 +1807,43 @@ export const webviewMessageHandler = async (
18071807 break
18081808 }
18091809 case "codebaseIndexConfig" : {
1810+ // Handle test action separately
1811+ if ( message . action === "test" ) {
1812+ try {
1813+ if ( ! provider . codeIndexManager ) {
1814+ throw new Error ( "Code index manager not available" )
1815+ }
1816+
1817+ // Get the service factory from the manager
1818+ const serviceFactory = provider . codeIndexManager . getServiceFactory ( )
1819+ if ( ! serviceFactory ) {
1820+ throw new Error ( "Service factory not available" )
1821+ }
1822+
1823+ // Test the configuration
1824+ const isValid = await serviceFactory . validateEmbedderConfig ( )
1825+
1826+ // Send test result back to webview
1827+ provider . postMessageToWebview ( {
1828+ type : "codebaseIndexTestResult" ,
1829+ success : isValid ,
1830+ message : isValid ? "Configuration is valid" : "Configuration test failed" ,
1831+ } )
1832+ } catch ( error ) {
1833+ const errorMessage = error instanceof Error ? error . message : String ( error )
1834+ provider . log ( `[CodeIndexManager] Configuration test error: ${ errorMessage } ` )
1835+
1836+ // Send error result back to webview
1837+ provider . postMessageToWebview ( {
1838+ type : "codebaseIndexTestResult" ,
1839+ success : false ,
1840+ message : errorMessage ,
1841+ } )
1842+ }
1843+ break
1844+ }
1845+
1846+ // Normal configuration update flow
18101847 const codebaseIndexConfig = message . values ?? {
18111848 codebaseIndexEnabled : false ,
18121849 codebaseIndexQdrantUrl : "http://localhost:6333" ,
@@ -1823,16 +1860,42 @@ export const webviewMessageHandler = async (
18231860 // If now configured and enabled, start indexing automatically
18241861 if ( provider . codeIndexManager . isFeatureEnabled && provider . codeIndexManager . isFeatureConfigured ) {
18251862 if ( ! provider . codeIndexManager . isInitialized ) {
1826- await provider . codeIndexManager . initialize ( provider . contextProxy )
1863+ try {
1864+ await provider . codeIndexManager . initialize ( provider . contextProxy )
1865+ } catch ( initError ) {
1866+ // Initialization failed - send error status to webview
1867+ const errorMessage = initError instanceof Error ? initError . message : String ( initError )
1868+ provider . log ( `[CodeIndexManager] Initialization error: ${ errorMessage } ` )
1869+
1870+ // Send error status update to webview
1871+ const status = provider . codeIndexManager . getCurrentStatus ( )
1872+ provider . postMessageToWebview ( {
1873+ type : "indexingStatusUpdate" ,
1874+ values : status ,
1875+ } )
1876+
1877+ // Re-throw to prevent indexing attempt
1878+ throw initError
1879+ }
18271880 }
18281881 // Start indexing in background (no await)
18291882 provider . codeIndexManager . startIndexing ( )
18301883 }
18311884 }
18321885 } catch ( error ) {
1886+ const errorMessage = error instanceof Error ? error . message : String ( error )
18331887 provider . log (
1834- `[CodeIndexManager] Error during background CodeIndexManager configuration/indexing: ${ error . message || error } ` ,
1888+ `[CodeIndexManager] Error during background CodeIndexManager configuration/indexing: ${ errorMessage } ` ,
18351889 )
1890+
1891+ // Send error notification to webview if manager exists
1892+ if ( provider . codeIndexManager ) {
1893+ const status = provider . codeIndexManager . getCurrentStatus ( )
1894+ provider . postMessageToWebview ( {
1895+ type : "indexingStatusUpdate" ,
1896+ values : status ,
1897+ } )
1898+ }
18361899 }
18371900
18381901 await provider . postStateToWebview ( )
0 commit comments