Skip to content

Commit 23e107d

Browse files
authored
AmazonQ: Add startUrl to Amazon Q telemetry events. (#4142)
1 parent 0495d56 commit 23e107d

File tree

7 files changed

+61
-8
lines changed

7 files changed

+61
-8
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Add startUrl in Amazon Q telemetry events"
4+
}

jetbrains-core/resources/telemetryOverride.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,10 @@
317317
},
318318
{
319319
"type": "cwsprChatConversationType"
320+
},
321+
{
322+
"type": "credentialStartUrl",
323+
"required": false
320324
}
321325
]
322326
},
@@ -390,6 +394,10 @@
390394
},
391395
{
392396
"type": "cwsprChatConversationType"
397+
},
398+
{
399+
"type": "credentialStartUrl",
400+
"required": false
393401
}
394402
]
395403
},
@@ -432,6 +440,10 @@
432440
},
433441
{
434442
"type": "cwsprChatConversationType"
443+
},
444+
{
445+
"type": "credentialStartUrl",
446+
"required": false
435447
}
436448
]
437449
},
@@ -459,6 +471,10 @@
459471
{
460472
"type": "cwsprChatHasReference",
461473
"required": false
474+
},
475+
{
476+
"type": "credentialStartUrl",
477+
"required": false
462478
}
463479
]
464480
},
@@ -474,6 +490,10 @@
474490
},
475491
{
476492
"type": "cwsprChatModificationPercentage"
493+
},
494+
{
495+
"type": "credentialStartUrl",
496+
"required": false
477497
}
478498
]
479499
},
@@ -505,6 +525,10 @@
505525
{
506526
"type": "cwsprChatCommandName",
507527
"required": false
528+
},
529+
{
530+
"type": "credentialStartUrl",
531+
"required": false
508532
}
509533
]
510534
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWh
2121
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererUserGroupSettings
2222
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getConnectionStartUrl
2323
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.InsertedCodeModificationEntry
24+
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
2425
import software.aws.toolkits.jetbrains.settings.AwsSettings
2526
import software.aws.toolkits.telemetry.AmazonqTelemetry
2627
import software.aws.toolkits.telemetry.CodewhispererCompletionType
@@ -197,7 +198,8 @@ class CodeWhispererUserModificationTracker(private val project: Project) : Dispo
197198
AmazonqTelemetry.modifyCode(
198199
cwsprChatConversationId = insertedCode.conversationId,
199200
cwsprChatMessageId = insertedCode.messageId,
200-
cwsprChatModificationPercentage = percentage
201+
cwsprChatModificationPercentage = percentage,
202+
credentialStartUrl = getStartUrl(project)
201203
)
202204
CodeWhispererClientAdaptor.getInstance(project).sendChatUserModificationTelemetry(insertedCode.conversationId, insertedCode.messageId, null, percentage)
203205
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/auth/AuthController.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import software.aws.toolkits.jetbrains.core.gettingstarted.editor.checkBearerCon
1313
import software.aws.toolkits.jetbrains.core.gettingstarted.reauthenticateWithQ
1414
import software.aws.toolkits.jetbrains.core.gettingstarted.requestCredentialsForQ
1515
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.TelemetryHelper
16+
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
1617
import software.aws.toolkits.resources.message
1718
import software.aws.toolkits.telemetry.CwsprChatCommandType
1819
import software.aws.toolkits.telemetry.UiTelemetry
@@ -70,7 +71,7 @@ class AuthController {
7071
reauthenticateWithQ(project)
7172
}
7273
}
73-
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Auth, type.name)
74+
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Auth, type.name, getStartUrl(project))
7475
}
7576

7677
companion object {

jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/ChatController.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import software.aws.toolkits.jetbrains.services.cwc.controller.chat.StaticTextRe
5656
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.messenger.ChatPromptHandler
5757
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.InsertedCodeModificationEntry
5858
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.TelemetryHelper
59+
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
5960
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.userIntent.UserIntentRecognizer
6061
import software.aws.toolkits.jetbrains.services.cwc.editor.context.ActiveFileContext
6162
import software.aws.toolkits.jetbrains.services.cwc.editor.context.ActiveFileContextExtractor
@@ -100,7 +101,7 @@ class ChatController private constructor(
100101

101102
override suspend fun processClearQuickAction(message: IncomingCwcMessage.ClearChat) {
102103
chatSessionStorage.deleteSession(message.tabId)
103-
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Clear)
104+
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Clear, startUrl = getStartUrl(context.project))
104105
}
105106

106107
override suspend fun processHelpQuickAction(message: IncomingCwcMessage.Help) {
@@ -115,7 +116,7 @@ class ChatController private constructor(
115116
triggerId = triggerId,
116117
response = StaticTextResponse.Help,
117118
)
118-
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Help)
119+
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Help, startUrl = getStartUrl(context.project))
119120
}
120121

121122
override suspend fun processTransformQuickAction(message: IncomingCwcMessage.Transform) {
@@ -148,7 +149,7 @@ class ChatController private constructor(
148149
)
149150
}
150151
}
151-
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Transform)
152+
TelemetryHelper.recordTelemetryChatRunCommand(CwsprChatCommandType.Transform, startUrl = getStartUrl(context.project))
152153
}
153154

154155
override suspend fun processPromptChatMessage(message: IncomingCwcMessage.ChatPrompt) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry
5+
6+
import com.intellij.openapi.project.Project
7+
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
8+
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
9+
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
10+
11+
fun getStartUrl(project: Project): String? {
12+
val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(QConnection.getInstance()) as? AwsBearerTokenConnection?
13+
return connection?.startUrl
14+
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
7171
fun recordStartConversation(tabId: String, data: ChatRequestData) {
7272
val sessionHistory = sessionStorage.getSession(tabId)?.history ?: return
7373
if (sessionHistory.size > 1) return
74-
7574
AmazonqTelemetry.startConversation(
7675
cwsprChatConversationId = getConversationId(tabId).orEmpty(),
7776
cwsprChatTriggerInteraction = getTelemetryTriggerType(data.triggerType),
7877
cwsprChatConversationType = CwsprChatConversationType.Chat,
7978
cwsprChatUserIntent = data.userIntent?.let { getTelemetryUserIntent(it) },
8079
cwsprChatHasCodeSnippet = data.activeFileContext.focusAreaContext?.codeSelection?.isNotEmpty() ?: false,
8180
cwsprChatProgrammingLanguage = data.activeFileContext.fileContext?.fileLanguage,
81+
credentialStartUrl = getStartUrl(context.project)
8282
)
8383
}
8484

@@ -104,6 +104,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
104104
cwsprChatRequestLength = data.message.length,
105105
cwsprChatResponseLength = responseLength,
106106
cwsprChatConversationType = CwsprChatConversationType.Chat,
107+
credentialStartUrl = getStartUrl(context.project)
107108
)
108109

109110
val programmingLanguage = data.activeFileContext.fileContext?.fileLanguage
@@ -136,6 +137,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
136137
cwsprChatResponseCode = responseCode,
137138
cwsprChatRequestLength = data.message.length,
138139
cwsprChatConversationType = CwsprChatConversationType.Chat,
140+
credentialStartUrl = getStartUrl(context.project)
139141
)
140142
}
141143

@@ -151,6 +153,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
151153
"downvote" -> CwsprChatInteractionType.Downvote
152154
else -> CwsprChatInteractionType.Unknown
153155
},
156+
credentialStartUrl = getStartUrl(context.project)
154157
)
155158
ChatInteractWithMessageEvent.builder().apply {
156159
conversationId(getConversationId(message.tabId).orEmpty())
@@ -170,6 +173,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
170173
cwsprChatConversationId = getConversationId(message.tabId).orEmpty(),
171174
cwsprChatMessageId = message.messageId.orEmpty(),
172175
cwsprChatInteractionType = CwsprChatInteractionType.ClickFollowUp,
176+
credentialStartUrl = getStartUrl(context.project)
173177
)
174178
ChatInteractWithMessageEvent.builder().apply {
175179
conversationId(getConversationId(message.tabId).orEmpty())
@@ -186,6 +190,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
186190
cwsprChatAcceptedCharactersLength = message.code.length,
187191
cwsprChatInteractionTarget = message.insertionTargetType,
188192
cwsprChatHasReference = null,
193+
credentialStartUrl = getStartUrl(context.project)
189194
)
190195
ChatInteractWithMessageEvent.builder().apply {
191196
conversationId(getConversationId(message.tabId).orEmpty())
@@ -204,6 +209,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
204209
cwsprChatAcceptedCharactersLength = message.code.length,
205210
cwsprChatInteractionTarget = message.insertionTargetType,
206211
cwsprChatHasReference = null,
212+
credentialStartUrl = getStartUrl(context.project)
207213
)
208214
ChatInteractWithMessageEvent.builder().apply {
209215
conversationId(getConversationId(message.tabId).orEmpty())
@@ -229,6 +235,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
229235
cwsprChatInteractionType = linkInteractionType,
230236
cwsprChatInteractionTarget = message.link,
231237
cwsprChatHasReference = null,
238+
credentialStartUrl = getStartUrl(context.project)
232239
)
233240
ChatInteractWithMessageEvent.builder().apply {
234241
conversationId(getConversationId(message.tabId).orEmpty())
@@ -343,8 +350,8 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
343350
AmazonqTelemetry.closeChat(passive = true)
344351
}
345352

346-
fun recordTelemetryChatRunCommand(type: CwsprChatCommandType, name: String? = null) {
347-
AmazonqTelemetry.runCommand(cwsprChatCommandType = type, cwsprChatCommandName = name)
353+
fun recordTelemetryChatRunCommand(type: CwsprChatCommandType, name: String? = null, startUrl: String? = null) {
354+
AmazonqTelemetry.runCommand(cwsprChatCommandType = type, cwsprChatCommandName = name, credentialStartUrl = startUrl)
348355
}
349356
}
350357
}

0 commit comments

Comments
 (0)