Skip to content

Commit 9f49bfa

Browse files
feat: send ide diagnostics for inline completions
1 parent 74ac902 commit 9f49bfa

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'
@@ -123,6 +126,13 @@ export class InlineCompletionManager implements Disposable {
123126
firstCompletionDisplayLatency?: number
124127
) => {
125128
// TODO: also log the seen state for other suggestions in session
129+
// Calculate timing metrics before diagnostic delay
130+
const totalSessionDisplayTime = Date.now() - requestStartTime
131+
await new Promise((resolve) => setTimeout(resolve, 1000))
132+
const diagnosticDiff = getDiagnosticsDifferences(
133+
this.sessionManager.getActiveSession()?.diagnosticsBeforeAccept,
134+
getDiagnosticsOfCurrentFile()
135+
)
126136
const params: LogInlineCompletionSessionResultsParams = {
127137
sessionId: sessionId,
128138
completionSessionResult: {
@@ -132,8 +142,10 @@ export class InlineCompletionManager implements Disposable {
132142
discarded: false,
133143
},
134144
},
135-
totalSessionDisplayTime: Date.now() - requestStartTime,
145+
totalSessionDisplayTime: totalSessionDisplayTime,
136146
firstCompletionDisplayLatency: firstCompletionDisplayLatency,
147+
addedDiagnostics: diagnosticDiff.added.map((it) => toIdeDiagnostics(it)),
148+
removedDiagnostics: diagnosticDiff.removed.map((it) => toIdeDiagnostics(it)),
137149
}
138150
this.languageClient.sendNotification(this.logSessionResultMessageName, params)
139151
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
export interface CodeWhispererSession {
@@ -14,6 +15,7 @@ export 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)