Skip to content

Commit 980710d

Browse files
authored
telemetry(amazonq inline): perceivedLatency calculated incorrectly #5871
The perceivedLatency is currently calculated and sent when we send STE, by then lastUserModificationTime is no longer accurate. Instead calculate perceivedLatency when we show the suggestions and use the lastUserModificationTime at that time to be accurate. JB PR: aws/aws-toolkit-jetbrains#5013
1 parent caba5dd commit 980710d

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

packages/core/src/codewhisperer/service/inlineCompletionItemProvider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ export class CWInlineCompletionItemProvider implements vscode.InlineCompletionIt
169169
ImportAdderProvider.instance.onShowRecommendation(document, this.startPos.line, r)
170170
this.nextMove = 0
171171
TelemetryHelper.instance.setFirstSuggestionShowTime()
172+
session.setPerceivedLatency()
172173
this._onDidShow.fire()
173174
if (matchedCount >= 2 || this.nextToken !== '') {
174175
const result = [item]

packages/core/src/codewhisperer/util/codeWhispererSession.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class CodeWhispererSession {
4343
invokeSuggestionStartTime = 0
4444
timeToFirstRecommendation = 0
4545
firstSuggestionShowTime = 0
46+
perceivedLatency = 0
4647

4748
public static get instance() {
4849
return (this.#instance ??= new CodeWhispererSession())
@@ -91,6 +92,17 @@ class CodeWhispererSession {
9192
}
9293
}
9394

95+
setPerceivedLatency() {
96+
if (this.perceivedLatency !== 0) {
97+
return
98+
}
99+
if (this.triggerType === 'OnDemand') {
100+
this.perceivedLatency = this.timeToFirstRecommendation
101+
} else {
102+
this.perceivedLatency = this.firstSuggestionShowTime - vsCodeState.lastUserModificationTime
103+
}
104+
}
105+
94106
reset() {
95107
this.sessionId = ''
96108
this.requestContext = { request: {} as any, supplementalMetadata: {} as any }

packages/core/src/codewhisperer/util/telemetryHelper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,7 @@ export class TelemetryHelper {
325325
suggestionState: this.getSendTelemetrySuggestionState(aggregatedSuggestionState),
326326
recommendationLatencyMilliseconds: e2eLatency,
327327
triggerToResponseLatencyMilliseconds: session.timeToFirstRecommendation,
328-
perceivedLatencyMilliseconds: session.getPerceivedLatency(
329-
this.sessionDecisions[0].codewhispererTriggerType
330-
),
328+
perceivedLatencyMilliseconds: session.perceivedLatency,
331329
timestamp: new Date(Date.now()),
332330
suggestionReferenceCount: referenceCount,
333331
generatedLine: generatedLines,
@@ -388,6 +386,7 @@ export class TelemetryHelper {
388386
this.typeAheadLength = 0
389387
this.timeSinceLastModification = 0
390388
session.timeToFirstRecommendation = 0
389+
session.perceivedLatency = 0
391390
this.classifierResult = undefined
392391
this.classifierThreshold = undefined
393392
}

0 commit comments

Comments
 (0)