@@ -23,14 +23,14 @@ import { AuthUtil } from './authUtil'
2323import { isAwsError } from '../../shared/errors'
2424import { getLogger } from '../../shared/logger'
2525import { session } from './codeWhispererSession'
26- import { CodeWhispererSupplementalContext } from '../models/model'
26+ import { AcceptedSuggestionEntry , CodeWhispererSupplementalContext } from '../models/model'
2727import { FeatureConfigProvider } from '../../shared/featureConfig'
2828import { CodeScanRemediationsEventType } from '../client/codewhispereruserclient'
29+ import { InsertedCode } from '../../codewhispererChat/controllers/chat/model'
2930
3031export class TelemetryHelper {
3132 // Some variables for client component latency
3233 private sdkApiCallEndTime = 0
33- private firstSuggestionShowTime = 0
3434 private allPaginationEndTime = 0
3535 private firstResponseRequestId = ''
3636 // variables for user trigger decision
@@ -41,8 +41,6 @@ export class TelemetryHelper {
4141 private typeAheadLength = 0
4242 private timeSinceLastModification = 0
4343 private lastTriggerDecisionTime = 0
44- private invocationTime = 0
45- private timeToFirstRecommendation = 0
4644 private classifierResult ?: number = undefined
4745 private classifierThreshold ?: number = undefined
4846 // variables for tracking end to end sessions
@@ -285,7 +283,7 @@ export class TelemetryHelper {
285283 codewhispererTimeSinceLastUserDecision : this . lastTriggerDecisionTime
286284 ? performance . now ( ) - this . lastTriggerDecisionTime
287285 : undefined ,
288- codewhispererTimeToFirstRecommendation : this . timeToFirstRecommendation ,
286+ codewhispererTimeToFirstRecommendation : session . timeToFirstRecommendation ,
289287 codewhispererTriggerCharacter : autoTriggerType === 'SpecialCharacters' ? this . triggerChar : undefined ,
290288 codewhispererSuggestionState : aggregatedSuggestionState ,
291289 codewhispererPreviousSuggestionState : this . prevTriggerDecision ,
@@ -305,11 +303,11 @@ export class TelemetryHelper {
305303 this . prevTriggerDecision = this . getAggregatedSuggestionState ( this . sessionDecisions )
306304 this . lastTriggerDecisionTime = performance . now ( )
307305
308- // When we send a userTriggerDecision of Empty or Discard, we set the time users see the first
309- // suggestion to be now .
310- let e2eLatency = this . firstSuggestionShowTime - session . invokeSuggestionStartTime
311- if ( e2eLatency < 0 ) {
312- e2eLatency = performance . now ( ) - session . invokeSuggestionStartTime
306+ // When we send a userTriggerDecision for neither Accept nor Reject, service side should not use this value
307+ // and client side will set this value to 0.0 .
308+ let e2eLatency = session . firstSuggestionShowTime - session . invokeSuggestionStartTime
309+ if ( aggregatedSuggestionState != 'Reject' && aggregatedSuggestionState != 'Accept' ) {
310+ e2eLatency = 0.0
313311 }
314312
315313 client
@@ -327,8 +325,11 @@ export class TelemetryHelper {
327325 completionType : this . getSendTelemetryCompletionType ( aggregatedCompletionType ) ,
328326 suggestionState : this . getSendTelemetrySuggestionState ( aggregatedSuggestionState ) ,
329327 recommendationLatencyMilliseconds : e2eLatency ,
328+ triggerToResponseLatencyMilliseconds : session . timeToFirstRecommendation ,
329+ perceivedLatencyMilliseconds : session . getPerceivedLatency (
330+ this . sessionDecisions [ 0 ] . codewhispererTriggerType
331+ ) ,
330332 timestamp : new Date ( Date . now ( ) ) ,
331- triggerToResponseLatencyMilliseconds : this . timeToFirstRecommendation ,
332333 suggestionReferenceCount : referenceCount ,
333334 generatedLine : generatedLines ,
334335 numberOfRecommendations : suggestionCount ,
@@ -377,16 +378,6 @@ export class TelemetryHelper {
377378 this . timeSinceLastModification = timeSinceLastModification
378379 }
379380
380- public setInvocationStartTime ( invocationTime : number ) {
381- this . invocationTime = invocationTime
382- }
383-
384- public setTimeToFirstRecommendation ( timeToFirstRecommendation : number ) {
385- if ( this . invocationTime ) {
386- this . timeToFirstRecommendation = timeToFirstRecommendation - this . invocationTime
387- }
388- }
389-
390381 public setTraceId ( traceId : string ) {
391382 this . traceId = traceId
392383 }
@@ -396,7 +387,7 @@ export class TelemetryHelper {
396387 this . triggerChar = ''
397388 this . typeAheadLength = 0
398389 this . timeSinceLastModification = 0
399- this . timeToFirstRecommendation = 0
390+ session . timeToFirstRecommendation = 0
400391 this . classifierResult = undefined
401392 this . classifierThreshold = undefined
402393 }
@@ -479,7 +470,7 @@ export class TelemetryHelper {
479470 session . sdkApiCallStartTime = 0
480471 this . sdkApiCallEndTime = 0
481472 session . fetchCredentialStartTime = 0
482- this . firstSuggestionShowTime = 0
473+ session . firstSuggestionShowTime = 0
483474 this . allPaginationEndTime = 0
484475 this . firstResponseRequestId = ''
485476 }
@@ -503,8 +494,8 @@ export class TelemetryHelper {
503494 }
504495
505496 public setFirstSuggestionShowTime ( ) {
506- if ( this . firstSuggestionShowTime === 0 && this . sdkApiCallEndTime !== 0 ) {
507- this . firstSuggestionShowTime = performance . now ( )
497+ if ( session . firstSuggestionShowTime === 0 && this . sdkApiCallEndTime !== 0 ) {
498+ session . firstSuggestionShowTime = performance . now ( )
508499 }
509500 }
510501
@@ -517,16 +508,16 @@ export class TelemetryHelper {
517508 // report client component latency after all pagination call finish
518509 // and at least one suggestion is shown to the user
519510 public tryRecordClientComponentLatency ( ) {
520- if ( this . firstSuggestionShowTime === 0 || this . allPaginationEndTime === 0 ) {
511+ if ( session . firstSuggestionShowTime === 0 || this . allPaginationEndTime === 0 ) {
521512 return
522513 }
523514 telemetry . codewhisperer_clientComponentLatency . emit ( {
524515 codewhispererRequestId : this . firstResponseRequestId ,
525516 codewhispererSessionId : session . sessionId ,
526517 codewhispererFirstCompletionLatency : this . sdkApiCallEndTime - session . sdkApiCallStartTime ,
527- codewhispererEndToEndLatency : this . firstSuggestionShowTime - session . invokeSuggestionStartTime ,
518+ codewhispererEndToEndLatency : session . firstSuggestionShowTime - session . invokeSuggestionStartTime ,
528519 codewhispererAllCompletionsLatency : this . allPaginationEndTime - session . sdkApiCallStartTime ,
529- codewhispererPostprocessingLatency : this . firstSuggestionShowTime - this . sdkApiCallEndTime ,
520+ codewhispererPostprocessingLatency : session . firstSuggestionShowTime - this . sdkApiCallEndTime ,
530521 codewhispererCredentialFetchingLatency : session . sdkApiCallStartTime - session . fetchCredentialStartTime ,
531522 codewhispererPreprocessingLatency : session . fetchCredentialStartTime - session . invokeSuggestionStartTime ,
532523 codewhispererCompletionType : 'Line' ,
0 commit comments