Skip to content

Commit 598776c

Browse files
feat: send ide diagnostics for inline completions
1 parent f1dc9b8 commit 598776c

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/amazonq/src/app/inline/completion.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ import {
3535
inlineCompletionsDebounceDelay,
3636
noInlineSuggestionsMsg,
3737
ReferenceInlineProvider,
38+
getDiagnosticsDifferences,
39+
getDiagnosticsOfCurrentFile,
40+
toIdeDiagnostics,
3841
} from 'aws-core-vscode/codewhisperer'
3942
import { InlineGeneratingMessage } from './inlineGeneratingMessage'
4043
import { 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()

packages/amazonq/src/app/inline/sessionManager.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
import * as vscode from 'vscode'
66
import { InlineCompletionItemWithReferences } from '@aws/language-server-runtimes-types'
7+
import { FileDiagnostic, getDiagnosticsOfCurrentFile } from 'aws-core-vscode/codewhisperer'
78

89
// TODO: add more needed data to the session interface
910
interface CodeWhispererSession {
@@ -14,6 +15,7 @@ interface CodeWhispererSession {
1415
requestStartTime: number
1516
firstCompletionDisplayLatency?: number
1617
startPosition: vscode.Position
18+
diagnosticsBeforeAccept: FileDiagnostic | undefined
1719
}
1820

1921
export class SessionManager {
@@ -29,13 +31,15 @@ export class SessionManager {
2931
startPosition: vscode.Position,
3032
firstCompletionDisplayLatency?: number
3133
) {
34+
const diagnosticsBeforeAccept = getDiagnosticsOfCurrentFile()
3235
this.activeSession = {
3336
sessionId,
3437
suggestions,
3538
isRequestInProgress: true,
3639
requestStartTime,
3740
startPosition,
3841
firstCompletionDisplayLatency,
42+
diagnosticsBeforeAccept,
3943
}
4044
}
4145

0 commit comments

Comments
 (0)