@@ -35,6 +35,9 @@ import {
3535 inlineCompletionsDebounceDelay ,
3636 noInlineSuggestionsMsg ,
3737 ReferenceInlineProvider ,
38+ getDiagnosticsDifferences ,
39+ getDiagnosticsOfCurrentFile ,
40+ toIdeDiagnostics ,
3841} from 'aws-core-vscode/codewhisperer'
3942import { InlineGeneratingMessage } from './inlineGeneratingMessage'
4043import { LineTracker } from './stateTracker/lineTracker'
@@ -98,6 +101,13 @@ export class InlineCompletionManager implements Disposable {
98101 firstCompletionDisplayLatency ?: number
99102 ) => {
100103 // TODO: also log the seen state for other suggestions in session
104+ // Calculate timing metrics before diagnostic delay
105+ const totalSessionDisplayTime = Date . now ( ) - requestStartTime
106+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) )
107+ const diagnosticDiff = getDiagnosticsDifferences (
108+ this . sessionManager . getActiveSession ( ) ?. diagnosticsBeforeAccept ,
109+ getDiagnosticsOfCurrentFile ( )
110+ )
101111 const params : LogInlineCompletionSessionResultsParams = {
102112 sessionId : sessionId ,
103113 completionSessionResult : {
@@ -107,8 +117,10 @@ export class InlineCompletionManager implements Disposable {
107117 discarded : false ,
108118 } ,
109119 } ,
110- totalSessionDisplayTime : Date . now ( ) - requestStartTime ,
120+ totalSessionDisplayTime : totalSessionDisplayTime ,
111121 firstCompletionDisplayLatency : firstCompletionDisplayLatency ,
122+ addedDiagnostics : diagnosticDiff . added . map ( ( it ) => toIdeDiagnostics ( it ) ) ,
123+ removedDiagnostics : diagnosticDiff . removed . map ( ( it ) => toIdeDiagnostics ( it ) ) ,
112124 }
113125 this . languageClient . sendNotification ( this . logSessionResultMessageName , params )
114126 this . disposable . dispose ( )
0 commit comments