Skip to content

Commit 680a6f1

Browse files
authored
Merge branch 'main' into user-intent
2 parents 56f9d5e + e857be9 commit 680a6f1

File tree

18 files changed

+113
-108
lines changed

18 files changed

+113
-108
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Automatically terminate orphaned process for `@workspace` helper"
4+
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ mockitoKotlin = "5.4.0"
2525
mockk = "1.13.10"
2626
nimbus-jose-jwt = "9.40"
2727
node-gradle = "7.0.2"
28-
telemetryGenerator = "1.0.259"
28+
telemetryGenerator = "1.0.262"
2929
testLogger = "4.0.0"
3030
testRetry = "1.5.10"
3131
# test-only; platform provides slf4j transitively at runtime

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,18 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
102102
cwsprChatUserIntent = data.userIntent?.let { getTelemetryUserIntent(it) },
103103
cwsprChatHasCodeSnippet = data.activeFileContext.focusAreaContext?.codeSelection?.isNotEmpty() ?: false,
104104
cwsprChatProgrammingLanguage = data.activeFileContext.fileContext?.fileLanguage,
105-
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length,
106-
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size,
107-
cwsprChatResponseCodeSnippetCount = numberOfCodeBlocks,
108-
cwsprChatResponseCode = statusCode,
109-
cwsprChatSourceLinkCount = response.relatedSuggestions?.size,
105+
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length?.toLong(),
106+
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size?.toLong(),
107+
cwsprChatResponseCodeSnippetCount = numberOfCodeBlocks.toLong(),
108+
cwsprChatResponseCode = statusCode.toLong(),
109+
cwsprChatSourceLinkCount = response.relatedSuggestions?.size?.toLong(),
110110
cwsprChatReferencesCount = 0, // TODO
111-
cwsprChatFollowUpCount = response.followUps?.size,
112-
cwsprChatTimeToFirstChunk = getResponseStreamTimeToFirstChunk(response.tabId).toInt(),
111+
cwsprChatFollowUpCount = response.followUps?.size?.toLong(),
112+
cwsprChatTimeToFirstChunk = getResponseStreamTimeToFirstChunk(response.tabId).toLong(),
113113
cwsprChatTimeBetweenChunks = "[${getResponseStreamTimeBetweenChunks(response.tabId).joinToString(",")}]",
114-
cwsprChatFullResponseLatency = responseStreamTotalTime[response.tabId] ?: 0,
115-
cwsprChatRequestLength = data.message.length,
116-
cwsprChatResponseLength = responseLength,
114+
cwsprChatFullResponseLatency = responseStreamTotalTime[response.tabId]?.toLong() ?: 0,
115+
cwsprChatRequestLength = data.message.length.toLong(),
116+
cwsprChatResponseLength = responseLength.toLong(),
117117
cwsprChatConversationType = CwsprChatConversationType.Chat,
118118
credentialStartUrl = getStartUrl(context.project),
119119
codewhispererCustomizationArn = data.customization?.arn,
@@ -152,10 +152,10 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
152152
cwsprChatUserIntent = data.userIntent?.let { getTelemetryUserIntent(it) },
153153
cwsprChatHasCodeSnippet = data.activeFileContext.focusAreaContext?.codeSelection?.isNotEmpty() ?: false,
154154
cwsprChatProgrammingLanguage = data.activeFileContext.fileContext?.fileLanguage,
155-
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length,
156-
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size,
157-
cwsprChatResponseCode = responseCode,
158-
cwsprChatRequestLength = data.message.length,
155+
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length?.toLong(),
156+
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size?.toLong(),
157+
cwsprChatResponseCode = responseCode.toLong(),
158+
cwsprChatRequestLength = data.message.length.toLong(),
159159
cwsprChatConversationType = CwsprChatConversationType.Chat,
160160
credentialStartUrl = getStartUrl(context.project)
161161
)
@@ -212,12 +212,12 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
212212
cwsprChatMessageId = message.messageId,
213213
cwsprChatUserIntent = message.userIntent?.let { getTelemetryUserIntent(it) },
214214
cwsprChatInteractionType = CwsprChatInteractionType.CopySnippet,
215-
cwsprChatAcceptedCharactersLength = message.code.length,
215+
cwsprChatAcceptedCharactersLength = message.code.length.toLong(),
216216
cwsprChatInteractionTarget = message.insertionTargetType,
217217
cwsprChatHasReference = null,
218218
credentialStartUrl = getStartUrl(context.project),
219-
cwsprChatCodeBlockIndex = message.codeBlockIndex,
220-
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
219+
cwsprChatCodeBlockIndex = message.codeBlockIndex?.toLong(),
220+
cwsprChatTotalCodeBlocks = message.totalCodeBlocks?.toLong(),
221221
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
222222
)
223223
ChatInteractWithMessageEvent.builder().apply {
@@ -236,13 +236,13 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
236236
cwsprChatMessageId = message.messageId,
237237
cwsprChatUserIntent = message.userIntent?.let { getTelemetryUserIntent(it) },
238238
cwsprChatInteractionType = CwsprChatInteractionType.InsertAtCursor,
239-
cwsprChatAcceptedCharactersLength = message.code.length,
240-
cwsprChatAcceptedNumberOfLines = message.code.lines().size,
239+
cwsprChatAcceptedCharactersLength = message.code.length.toLong(),
240+
cwsprChatAcceptedNumberOfLines = message.code.lines().size.toLong(),
241241
cwsprChatInteractionTarget = message.insertionTargetType,
242242
cwsprChatHasReference = null,
243243
credentialStartUrl = getStartUrl(context.project),
244-
cwsprChatCodeBlockIndex = message.codeBlockIndex,
245-
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
244+
cwsprChatCodeBlockIndex = message.codeBlockIndex?.toLong(),
245+
cwsprChatTotalCodeBlocks = message.totalCodeBlocks?.toLong(),
246246
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
247247
)
248248
ChatInteractWithMessageEvent.builder().apply {
@@ -424,11 +424,11 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
424424
AmazonqTelemetry.indexWorkspace(
425425
project = null,
426426
duration = duration,
427-
amazonqIndexFileCount = fileCount,
428-
amazonqIndexFileSizeInMB = fileSize,
427+
amazonqIndexFileCount = fileCount.toLong(),
428+
amazonqIndexFileSizeInMB = fileSize.toLong(),
429429
success = isSuccess,
430-
amazonqIndexMemoryUsageInMB = memoryUsage,
431-
amazonqIndexCpuUsagePercentage = cpuUsage,
430+
amazonqIndexMemoryUsageInMB = memoryUsage?.toLong(),
431+
amazonqIndexCpuUsagePercentage = cpuUsage?.toLong(),
432432
credentialStartUrl = startUrl
433433
)
434434
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/manifest/ManifestManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import software.aws.toolkits.jetbrains.core.getTextFromUrl
1515

1616
class ManifestManager {
1717
private val cloudFrontUrl = "https://aws-toolkit-language-servers.amazonaws.com/q-context/manifest.json"
18-
val currentVersion = "0.1.9"
18+
val currentVersion = "0.1.10"
1919
val currentOs = getOs()
2020
private val arch = CpuArch.CURRENT
2121
private val mapper = jacksonObjectMapper()

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ class CodeTransformTelemetryManager(private val project: Project) {
8989

9090
fun uploadProject(payloadSize: Int, startTime: Instant, dependenciesCopied: Boolean = false, telemetryErrorMessage: String? = null) {
9191
CodetransformTelemetry.uploadProject(
92-
codeTransformRunTimeLatency = calculateTotalLatency(startTime, Instant.now()),
92+
codeTransformRunTimeLatency = calculateTotalLatency(startTime, Instant.now()).toLong(),
9393
codeTransformSessionId = sessionId,
94-
codeTransformTotalByteSize = payloadSize,
94+
codeTransformTotalByteSize = payloadSize.toLong(),
9595
codeTransformDependenciesCopied = dependenciesCopied,
9696
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
9797
reason = telemetryErrorMessage,
@@ -101,7 +101,7 @@ class CodeTransformTelemetryManager(private val project: Project) {
101101
fun jobStart(transformStartTime: Instant, jobId: JobId?, telemetryErrorMessage: String? = null) = CodetransformTelemetry.jobStart(
102102
codeTransformSessionId = sessionId,
103103
codeTransformJobId = jobId?.id.orEmpty(),
104-
codeTransformRunTimeLatency = calculateTotalLatency(transformStartTime, Instant.now()), // subtract current time by project start time
104+
codeTransformRunTimeLatency = calculateTotalLatency(transformStartTime, Instant.now()).toLong(), // subtract current time by project start time
105105
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
106106
reason = telemetryErrorMessage,
107107
)
@@ -117,9 +117,9 @@ class CodeTransformTelemetryManager(private val project: Project) {
117117
codeTransformArtifactType = artifactType,
118118
codeTransformJobId = jobId.id,
119119
codeTransformRuntimeError = telemetryErrorMessage,
120-
codeTransformRunTimeLatency = calculateTotalLatency(downloadStartTime, Instant.now()),
120+
codeTransformRunTimeLatency = calculateTotalLatency(downloadStartTime, Instant.now()).toLong(),
121121
codeTransformSessionId = sessionId,
122-
codeTransformTotalByteSize = totalDownloadBytes,
122+
codeTransformTotalByteSize = totalDownloadBytes.toLong(),
123123
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
124124
reason = telemetryErrorMessage,
125125
)
@@ -175,7 +175,7 @@ class CodeTransformTelemetryManager(private val project: Project) {
175175
codeTransformRunTimeLatency = calculateTotalLatency(
176176
CodeTransformTelemetryState.instance.getStartTime(),
177177
Instant.now()
178-
),
178+
).toLong(),
179179
codeTransformLocalJavaVersion = getJavaVersionFromProjectSetting(project),
180180
)
181181

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ interface CodeWhispererClientAdaptor : Disposable {
104104
fun sendCodePercentageTelemetry(
105105
language: CodeWhispererProgrammingLanguage,
106106
customizationArn: String?,
107-
acceptedTokenCount: Int,
108-
totalTokenCount: Int,
109-
unmodifiedAcceptedTokenCount: Int?
107+
acceptedTokenCount: Long,
108+
totalTokenCount: Long,
109+
unmodifiedAcceptedTokenCount: Long?
110110
): SendTelemetryEventResponse
111111

112112
fun sendUserModificationTelemetry(
@@ -337,18 +337,18 @@ open class CodeWhispererClientAdaptorImpl(override val project: Project) : CodeW
337337
override fun sendCodePercentageTelemetry(
338338
language: CodeWhispererProgrammingLanguage,
339339
customizationArn: String?,
340-
acceptedTokenCount: Int,
341-
totalTokenCount: Int,
342-
unmodifiedAcceptedTokenCount: Int?
340+
acceptedTokenCount: Long,
341+
totalTokenCount: Long,
342+
unmodifiedAcceptedTokenCount: Long?
343343
): SendTelemetryEventResponse = bearerClient().sendTelemetryEvent { requestBuilder ->
344344
requestBuilder.telemetryEvent { telemetryEventBuilder ->
345345
telemetryEventBuilder.codeCoverageEvent {
346346
it.programmingLanguage { languageBuilder -> languageBuilder.languageName(language.toCodeWhispererRuntimeLanguage().languageId) }
347347
it.customizationArn(customizationArn)
348-
it.acceptedCharacterCount(acceptedTokenCount)
349-
it.totalCharacterCount(totalTokenCount)
348+
it.acceptedCharacterCount(acceptedTokenCount.toInt())
349+
it.totalCharacterCount(totalTokenCount.toInt())
350350
it.timestamp(Instant.now())
351-
it.unmodifiedAcceptedCharacterCount(unmodifiedAcceptedTokenCount)
351+
it.unmodifiedAcceptedCharacterCount(unmodifiedAcceptedTokenCount?.toInt())
352352
}
353353
}
354354
requestBuilder.optOutPreference(getTelemetryOptOutPreference())

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import java.time.Duration
3838
import java.time.Instant
3939
import java.util.concurrent.atomic.AtomicBoolean
4040
import java.util.concurrent.atomic.AtomicInteger
41-
import kotlin.math.roundToInt
41+
import kotlin.math.roundToLong
4242

4343
// TODO: reset code coverage calculator on logging out connection?
4444
abstract class CodeWhispererCodeCoverageTracker(
@@ -49,15 +49,15 @@ abstract class CodeWhispererCodeCoverageTracker(
4949
private val fileToTokens: MutableMap<Document, CodeCoverageTokens>,
5050
private val myServiceInvocationCount: AtomicInteger
5151
) : Disposable {
52-
val percentage: Int?
53-
get() = if (totalTokensSize != 0) calculatePercentage(acceptedTokensSize, totalTokensSize) else null
54-
val acceptedTokensSize: Int
52+
val percentage: Long?
53+
get() = if (totalTokensSize != 0L) calculatePercentage(acceptedTokensSize, totalTokensSize) else null
54+
val acceptedTokensSize: Long
5555
get() = fileToTokens.map {
5656
it.value.acceptedTokens.get()
5757
}.fold(0) { acc, next ->
5858
acc + next
5959
}
60-
val totalTokensSize: Int
60+
val totalTokensSize: Long
6161
get() = fileToTokens.map {
6262
it.value.totalTokens.get()
6363
}.fold(0) { acc, next ->
@@ -203,7 +203,7 @@ abstract class CodeWhispererCodeCoverageTracker(
203203
if (myServiceInvocationCount.get() <= 0) return
204204

205205
// accepted char count without considering modification
206-
var rawAcceptedCharacterCount = 0
206+
var rawAcceptedCharacterCount = 0L
207207
rangeMarkers.forEach { rangeMarker ->
208208
if (!rangeMarker.isValid) return@forEach
209209
// if users add more code upon the recommendation generated from CodeWhisperer, we consider those added part as userToken but not CwsprTokens
@@ -253,7 +253,7 @@ abstract class CodeWhispererCodeCoverageTracker(
253253
codewhispererLanguage = language.toTelemetryType(),
254254
codewhispererPercentage = percentage,
255255
codewhispererTotalTokens = totalTokensSize,
256-
successCount = myServiceInvocationCount.get(),
256+
successCount = myServiceInvocationCount.get().toLong(),
257257
codewhispererCustomizationArn = customizationArn,
258258
codewhispererUserGroup = CodeWhispererUserGroupSettings.getInstance().getUserGroup().name,
259259
credentialStartUrl = getCodeWhispererStartUrl(project)
@@ -284,7 +284,7 @@ abstract class CodeWhispererCodeCoverageTracker(
284284
private val LOG = getLogger<CodeWhispererCodeCoverageTracker>()
285285
private val instances: MutableMap<CodeWhispererProgrammingLanguage, CodeWhispererCodeCoverageTracker> = mutableMapOf()
286286

287-
fun calculatePercentage(acceptedTokens: Int, totalTokens: Int): Int = ((acceptedTokens.toDouble() * 100) / totalTokens).roundToInt()
287+
fun calculatePercentage(acceptedTokens: Long, totalTokens: Long): Long = ((acceptedTokens.toDouble() * 100) / totalTokens).roundToLong()
288288
fun getInstance(project: Project, language: CodeWhispererProgrammingLanguage): CodeWhispererCodeCoverageTracker =
289289
when (val instance = instances[language]) {
290290
null -> {

0 commit comments

Comments
 (0)