in server/aws-lsp-codewhisperer/src/language-server/inline-completion/codeWhispererServer.ts [140:207]
errorCode: isAwsError(error) ? error.code : undefined,
httpStatusCode: isAwsError(error) ? error.statusCode : undefined,
},
})
}
const emitPerceivedLatencyTelemetry = (telemetry: Telemetry, session: CodeWhispererSession) => {
const data: CodeWhispererPerceivedLatencyEvent = {
codewhispererRequestId: session.responseContext?.requestId,
codewhispererSessionId: session.responseContext?.codewhispererSessionId,
codewhispererCompletionType:
session.suggestions.length > 0 ? getCompletionType(session.suggestions[0]) : undefined,
codewhispererTriggerType: session.triggerType,
duration: session.firstCompletionDisplayLatency,
codewhispererLanguage: session.language,
credentialStartUrl: session.credentialStartUrl,
}
telemetry.emitMetric({
name: 'codewhisperer_perceivedLatency',
data,
})
}
const emitUserTriggerDecisionTelemetry = async (
telemetry: Telemetry,
telemetryService: TelemetryService,
session: CodeWhispererSession,
timeSinceLastUserModification?: number
) => {
// Prevent reporting user decision if it was already sent
if (session.reportedUserDecision) {
return
}
// Can not emit previous trigger decision if it's not available on the session
if (!session.getAggregatedUserTriggerDecision()) {
return
}
await emitAggregatedUserTriggerDecisionTelemetry(telemetryService, session, timeSinceLastUserModification)
session.reportedUserDecision = true
}
const emitAggregatedUserTriggerDecisionTelemetry = (
telemetryService: TelemetryService,
session: CodeWhispererSession,
timeSinceLastUserModification?: number
) => {
return telemetryService.emitUserTriggerDecision(session, timeSinceLastUserModification)
}
const mergeSuggestionsWithRightContext = (
rightFileContext: string,
suggestions: Suggestion[],
range?: Range
): InlineCompletionItemWithReferences[] => {
return suggestions.map(suggestion => {
const insertText: string = truncateOverlapWithRightContext(rightFileContext, suggestion.content)
let references = suggestion.references
?.filter(
ref =>
!(
ref.recommendationContentSpan?.start && insertText.length <= ref.recommendationContentSpan.start
) && insertText.length
)
.map(r => {