diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspConstants.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspConstants.kt index 0c93dec0550..c3a7f0ad7db 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspConstants.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspConstants.kt @@ -13,4 +13,5 @@ object AmazonQLspConstants { const val LSP_ENABLE_TELEMETRY_EVENTS_CONFIGURATION_KEY = "enableTelemetryEventsToDestination" const val LSP_CUSTOMIZATION_CONFIGURATION_KEY = "customization" const val LSP_WORKSPACE_CONTEXT_ENABLED_KEY = "workspaceContext" + const val LSP_PROJECT_CONTEXT_KEY = "projectContext" } diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt index 1c9b5530cf6..aa2418fc2fa 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt @@ -1,8 +1,9 @@ // Copyright 2025 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.lsp +import com.google.gson.Gson import com.google.gson.ToNumberPolicy import com.intellij.execution.configurations.GeneralCommandLine import com.intellij.execution.impl.ExecutionManagerImpl @@ -43,7 +44,7 @@ import org.eclipse.lsp4j.WorkspaceClientCapabilities import org.eclipse.lsp4j.jsonrpc.Launcher import org.eclipse.lsp4j.jsonrpc.Launcher.Builder import org.eclipse.lsp4j.jsonrpc.MessageConsumer -import org.eclipse.lsp4j.jsonrpc.messages.Message +import org.eclipse.lsp4j.jsonrpc.messages.NotificationMessage import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage import org.eclipse.lsp4j.launch.LSPLauncher import org.slf4j.event.Level @@ -56,6 +57,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.auth.DefaultAuthCred import software.aws.toolkits.jetbrains.services.amazonq.lsp.dependencies.DefaultModuleDependenciesService import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AmazonQLspTypeAdapterFactory +import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsExtendedInitializeResult import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.createExtendedClientMetadata @@ -287,6 +289,16 @@ private class AmazonQServerInstance(private val project: Project, private val cs AwsServerCapabilitiesProvider.getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities()) AmazonQLspService.getInstance(project).notifyInitializeMessageReceived() } + if (message is NotificationMessage && message.method == "aws/chat/sendContextCommands") { + val showContextCommands = """ + { + "command":"aws/chat/sendContextCommands", + "params": ${Gson().toJson(message.params)} + } + """.trimIndent() + + AsyncChatUiListener.notifyPartialMessageUpdate(showContextCommands) + } consumer?.consume(message) } } @@ -373,18 +385,6 @@ private class AmazonQServerInstance(private val project: Project, private val cs } } - class MessageTracer { - private val traceLogger = LOG.atLevel(if (isDeveloperMode()) Level.INFO else Level.DEBUG) - - fun trace(direction: String, message: Message) { - traceLogger.log { - buildString { - append("$direction: ") - append(message.toString()) - } - } - } - } companion object { private val LOG = getLogger() }