@@ -115,18 +115,42 @@ export function registerLanguageServerEventListener(languageClient: LanguageClie
115
115
}
116
116
117
117
provider . onDidResolveWebview ( ( ) => {
118
- void provider . webview ?. postMessage ( {
119
- command : CHAT_OPTIONS ,
120
- params : chatOptions ,
121
- } )
118
+ // Give the webview a moment to fully initialize before sending messages
119
+ setTimeout ( ( ) => {
120
+ if ( provider . webview ) {
121
+ // Ensure webview is ready and properly initialized
122
+ const sendPromise = provider . webview
123
+ . postMessage ( {
124
+ command : CHAT_OPTIONS ,
125
+ params : chatOptions ,
126
+ } )
127
+ . then ( ( ) => {
128
+ // Log success only after message is confirmed sent
129
+ const quickActionCommands =
130
+ chatOptions ?. quickActions ?. quickActionsCommandGroups ?. [ 0 ] ?. commands || [ ]
131
+ const quickActionsDisplay = quickActionCommands . map ( ( cmd : any ) => cmd . command ) . join ( ', ' )
132
+ languageClient . info (
133
+ `[VSCode Client] Chat options flags: mcpServers=${ chatOptions ?. mcpServers } , history=${ chatOptions ?. history } , export=${ chatOptions ?. export } , quickActions=[${ quickActionsDisplay } ]`
134
+ )
135
+ } )
136
+
137
+ // Handle potential errors separately since PromiseLike might not have catch
138
+ sendPromise . then ( undefined , ( err : Error ) => {
139
+ // Log any errors that occur during message sending
140
+ languageClient . error ( `[VSCode Client] Failed to send CHAT_OPTIONS: ${ err . message } ` )
141
+ } )
142
+ } else {
143
+ languageClient . warn ( `[VSCode Client] Cannot send CHAT_OPTIONS: webview is not available` )
144
+ }
145
+ } , 100 ) // Short delay of 100ms to ensure webview is ready
122
146
} )
123
147
124
148
// This passes through metric data from LSP events to Toolkit telemetry with all fields from the LSP server
125
149
languageClient . onTelemetry ( ( e ) => {
126
150
const telemetryName : string = e . name
127
151
128
152
if ( telemetryName in telemetry ) {
129
- languageClient . info ( `[Telemetry] Emitting ${ telemetryName } telemetry: ${ JSON . stringify ( e . data ) } ` )
153
+ languageClient . info ( `[VSCode Telemetry] Emitting ${ telemetryName } telemetry: ${ JSON . stringify ( e . data ) } ` )
130
154
telemetry [ telemetryName as keyof TelemetryBase ] . emit ( e . data )
131
155
}
132
156
} )
0 commit comments