Skip to content

Commit b0c1cdf

Browse files
committed
add support for q config section
1 parent 7d3b55c commit b0c1cdf

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credential
1818
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.SsoProfileData
1919
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
2020
import java.util.concurrent.CompletableFuture
21+
import migration.software.aws.toolkits.jetbrains.settings.AwsSettings
2122

2223
/**
2324
* Concrete implementation of [AmazonQLanguageClient] to handle messages sent from server
@@ -87,6 +88,13 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
8788
)
8889
)
8990
}
91+
AmazonQLspConstants.LSP_Q_CONFIGURATION_KEY -> {
92+
add(
93+
AmazonQLspConfiguration(
94+
optOutTelemetry = AwsSettings.getInstance().isTelemetryEnabled
95+
)
96+
)
97+
}
9098
}
9199
}
92100
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.amazonq.lsp
5+
6+
import com.google.gson.annotations.SerializedName
7+
8+
data class AmazonQLspConfiguration(
9+
@SerializedName(AmazonQLspConstants.LSP_OPT_OUT_TELEMETRY_CONFIGURATION_KEY)
10+
val optOutTelemetry: Boolean? = null,
11+
12+
@SerializedName(AmazonQLspConstants.LSP_ENABLE_TELEMETRY_EVENTS_CONFIGURATION_KEY)
13+
val enableTelemetryEvents: Boolean? = null,
14+
)

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspConstants.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,10 @@ object AmazonQLspConstants {
88
const val LSP_CW_CONFIGURATION_KEY = "aws.codeWhisperer"
99
const val LSP_CW_OPT_OUT_KEY = "shareCodeWhispererContentWithAWS"
1010
const val LSP_CODE_REFERENCES_OPT_OUT_KEY = "includeSuggestionsWithCodeReferences"
11+
const val LSP_Q_CONFIGURATION_KEY = "aws.q"
12+
const val LSP_OPT_OUT_TELEMETRY_CONFIGURATION_KEY = "optOutTelemetry"
13+
const val LSP_ENABLE_TELEMETRY_EVENTS_CONFIGURATION_KEY = "enableTelemetryEventsToDestination"
14+
const val LSP_CUSTOMIZATION_CONFIGURATION_KEY = "customization";
15+
16+
1117
}

plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImplTest.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import org.eclipse.lsp4j.ConfigurationItem
1515
import org.eclipse.lsp4j.ConfigurationParams
1616
import org.junit.jupiter.api.Test
1717
import org.junit.jupiter.api.extension.ExtendWith
18+
import migration.software.aws.toolkits.jetbrains.settings.AwsSettings
1819
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
1920
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
2021
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
@@ -107,6 +108,44 @@ class AmazonQLanguageClientImplTest {
107108
)
108109
}
109110

111+
@Test
112+
fun `configuration for Amazon Q respects telemetry enabled`() {
113+
AwsSettings.getInstance().isTelemetryEnabled = true
114+
assertThat(sut.configuration(configurationParams("aws.q")).get())
115+
.singleElement()
116+
.isEqualTo(
117+
AmazonQLspConfiguration(
118+
optOutTelemetry = true
119+
)
120+
)
121+
}
122+
123+
@Test
124+
fun `configuration for Amazon Q respects telemetry disabled`() {
125+
AwsSettings.getInstance().isTelemetryEnabled = false
126+
assertThat(sut.configuration(configurationParams("aws.q")).get())
127+
.singleElement()
128+
.isEqualTo(
129+
AmazonQLspConfiguration(
130+
optOutTelemetry = false
131+
)
132+
)
133+
}
134+
135+
@Test
136+
fun `Gson serializes AmazonQLspConfiguration correctly`() {
137+
val sut = AmazonQLspConfiguration(
138+
optOutTelemetry = true
139+
)
140+
assertThat(Gson().toJson(sut)).isEqualToIgnoringWhitespace(
141+
"""
142+
{
143+
"optOutTelemetry": true
144+
}
145+
""".trimIndent()
146+
)
147+
}
148+
110149
private fun configurationParams(vararg attributes: String) = ConfigurationParams(
111150
attributes.map {
112151
ConfigurationItem().apply {

0 commit comments

Comments
 (0)