Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
841947a
handle telemetry/event messages
samgst-amazon Mar 26, 2025
d660a3c
Update plugins/amazonq/shared/jetbrains-community/src/software/aws/to…
samgst-amazon Mar 26, 2025
c880e8d
Update plugins/amazonq/shared/jetbrains-community/src/software/aws/to…
samgst-amazon Mar 26, 2025
4831a5c
Merge branch 'feature/q-lsp' into samgst/q-lsp-telemetry
samgst-amazon Mar 26, 2025
085e456
parse metricUnit in util
samgst-amazon Mar 26, 2025
c3cd86f
Merge branch 'feature/q-lsp' into samgst/q-lsp-telemetry
samgst-amazon Mar 26, 2025
6d97ddc
warn for bad telemetryEvent case
samgst-amazon Mar 26, 2025
792b087
update test case
samgst-amazon Mar 26, 2025
0e22516
detekt
samgst-amazon Mar 27, 2025
37a0193
style
samgst-amazon Mar 27, 2025
e97eb33
style
samgst-amazon Mar 27, 2025
3219b41
Merge branch 'main' into samgst/q-lsp-telemetry
samgst-amazon Apr 18, 2025
e4309da
Merge branch 'main' into samgst/q-lsp-telemetry
rli May 8, 2025
f2507f2
Merge branch 'main' into samgst/q-lsp-telemetry
samgst-amazon May 9, 2025
e6083d3
Merge branch 'feature/q-lsp-chat' into samgst/q-lsp-telemetry
samgst-amazon May 9, 2025
f3f6f6f
merge error
samgst-amazon May 9, 2025
b698c0b
detekt
samgst-amazon May 9, 2025
c545757
handle mynah ui telemetry event
samgst-amazon May 9, 2025
a0881c2
detekt
samgst-amazon May 9, 2025
75c1a01
remove print
samgst-amazon May 9, 2025
666437e
send notification to server
samgst-amazon May 9, 2025
6b30379
detekt
samgst-amazon May 9, 2025
1058210
Merge branch 'feature/q-lsp-chat' into samgst/q-lsp-telemetry
samgst-amazon May 12, 2025
ea52630
fix data classes
samgst-amazon May 12, 2025
ac06230
remove createTime from datum builder
samgst-amazon May 13, 2025
ff7f920
detekt
samgst-amazon May 13, 2025
3652c52
Merge branch 'feature/q-lsp-chat' into samgst/q-lsp-telemetry
samgst-amazon May 13, 2025
cab6460
Merge branch 'feature/q-lsp-chat' into samgst/q-lsp-telemetry
samgst-amazon May 14, 2025
77457f2
Merge remote-tracking branch 'origin/samgst/q-lsp-telemetry' into sam…
samgst-amazon May 14, 2025
7d82d95
refactor lsp notification
samgst-amazon May 14, 2025
d8c3f12
remove unused data class
samgst-amazon May 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.STOP_CHAT_RESPONSE
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.StopResponseMessage
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TELEMETRY_EVENT
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString
import software.aws.toolkits.jetbrains.services.amazonq.util.command
Expand Down Expand Up @@ -439,6 +440,9 @@
ShowSettingsUtil.getInstance().showSettingsDialog(browser.project, CodeWhispererConfigurable::class.java)
}
}
TELEMETRY_EVENT -> {
handleChat(AmazonQChatServer.telemetryEvent, node)

Check warning on line 444 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L444

Added line #L444 was not covered by tests
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.PromptInputOptionChangeParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TELEMETRY_EVENT
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabBarActionParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventParams
import kotlin.reflect.KProperty
Expand Down Expand Up @@ -201,4 +202,9 @@
CHAT_CREATE_PROMPT,
CreatePromptParams::class.java
)

val telemetryEvent = JsonRpcNotification(
TELEMETRY_EVENT,
Any::class.java

Check warning on line 208 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQChatServer.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQChatServer.kt#L206-L208

Added lines #L206 - L208 were not covered by tests
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ShowSaveFileDialogResult
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.SsoProfileData
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.TelemetryParsingUtil
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
import software.aws.toolkits.resources.message
import java.io.File
Expand All @@ -60,8 +62,39 @@
* Concrete implementation of [AmazonQLanguageClient] to handle messages sent from server
*/
class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageClient {

private fun handleTelemetryMap(telemetryMap: Map<*, *>) {
try {

Check warning on line 67 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L67

Added line #L67 was not covered by tests
val name = telemetryMap["name"] as? String ?: return

@Suppress("UNCHECKED_CAST")

Check warning on line 70 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L70

Added line #L70 was not covered by tests
val data = telemetryMap["data"] as? Map<String, Any> ?: return
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the correct action here? are there any telemetry events we want to be emitting that would have no data?


TelemetryService.getInstance().record(project) {
datum(name) {
unit(TelemetryParsingUtil.parseMetricUnit(telemetryMap["unit"]))

Check warning on line 75 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L73-L75

Added lines #L73 - L75 were not covered by tests
value(telemetryMap["value"] as? Double ?: 1.0)
passive(telemetryMap["passive"] as? Boolean ?: false)

telemetryMap["result"]?.let { result ->
metadata("result", result.toString())

Check warning on line 80 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L80

Added line #L80 was not covered by tests
}

data.forEach { (key, value) ->
metadata(key, value.toString())
}
}
}
} catch (e: Exception) {
LOG.warn(e) { "Failed to process telemetry event: $telemetryMap" }

Check warning on line 89 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L83-L89

Added lines #L83 - L89 were not covered by tests
}
}

Check warning on line 91 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L91

Added line #L91 was not covered by tests

override fun telemetryEvent(`object`: Any) {
println(`object`)
when (`object`) {

Check warning on line 94 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L94

Added line #L94 was not covered by tests
is Map<*, *> -> handleTelemetryMap(`object`)
else -> LOG.warn { "Unexpected telemetry event: $`object`" }

Check warning on line 96 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L96

Added line #L96 was not covered by tests
}
}

override fun publishDiagnostics(diagnostics: PublishDiagnosticsParams) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ const val PROMPT_INPUT_OPTIONS_CHANGE = "aws/chat/promptInputOptionChange"
const val SEND_CHAT_COMMAND_PROMPT = "aws/chat/sendChatPrompt"
const val SHOW_SAVE_FILE_DIALOG_REQUEST_METHOD = "aws/showSaveFileDialog"
const val STOP_CHAT_RESPONSE = "stopChatResponse"
const val TELEMETRY_EVENT = "telemetry/event"
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

package software.aws.toolkits.jetbrains.services.amazonq.lsp.util

import software.amazon.awssdk.services.toolkittelemetry.model.MetricUnit

object TelemetryParsingUtil {

fun parseMetricUnit(value: Any?): MetricUnit =
when (value) {

Check warning on line 11 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/TelemetryParsingUtil.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/TelemetryParsingUtil.kt#L11

Added line #L11 was not covered by tests
is String -> MetricUnit.fromValue(value) ?: MetricUnit.NONE
is MetricUnit -> value
else -> MetricUnit.NONE
}

Check warning on line 15 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/TelemetryParsingUtil.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/TelemetryParsingUtil.kt#L14-L15

Added lines #L14 - L15 were not covered by tests
}
Loading
Loading