diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt index 6490a145721..04d6947319a 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.ui.jcef.JBCefJSQuery import org.cef.CefApp +import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfile @@ -154,7 +155,7 @@ class Browser(parent: Disposable, private val webUri: URI, val project: Project) pairProgrammingAcknowledged: ${!MeetQSettings.getInstance().amazonQChatPairProgramming} }, hybridChatConnector, - {} + ${CodeWhispererFeatureConfigService.getInstance().getFeatureConfigJsonString()} ); } diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/CodeWhispererFeatureConfigService.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/CodeWhispererFeatureConfigService.kt index 0fa47c27024..f3d9dafc8e7 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/CodeWhispererFeatureConfigService.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/CodeWhispererFeatureConfigService.kt @@ -1,8 +1,10 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +@file:Suppress("BannedImports") package software.aws.toolkits.jetbrains.services.amazonq +import com.google.gson.Gson import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.project.Project @@ -17,7 +19,6 @@ import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomization import software.aws.toolkits.jetbrains.utils.isQExpired - @Service class CodeWhispererFeatureConfigService { private val featureConfigs = mutableMapOf() @@ -82,6 +83,17 @@ class CodeWhispererFeatureConfigService { fun getChatWSContext(): Boolean = getFeatureValueForKey(CHAT_WS_CONTEXT).stringValue() == "TREATMENT" + // convert into mynahUI parsable string + // format: '[["key1", {"name":"Feature1","variation":"A","value":true}]]' + fun getFeatureConfigJsonString(): String { + val jsonString = featureConfigs.entries.map { (key, value) -> + "[\"$key\",${Gson().toJson(value)}]" + } + return """ + '$jsonString' + """.trimIndent() + } + // Get the feature value for the given key. // In case of a misconfiguration, it will return a default feature value of Boolean false. private fun getFeatureValueForKey(name: String): FeatureValue =