From b442cc4af75675389656e1f6e657157858e07c7b Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 10 Jun 2025 12:31:55 -0700 Subject: [PATCH 1/2] fix(amazonq): implement window/showMessageRequest and change text per feedback --- .../resources/AmazonQBundle.properties | 2 +- .../amazonq/lsp/AmazonQLanguageClientImpl.kt | 40 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/resources/software/aws/toolkits/resources/AmazonQBundle.properties b/plugins/amazonq/shared/jetbrains-community/resources/software/aws/toolkits/resources/AmazonQBundle.properties index 2a1fb1068ed..e780cdb6154 100644 --- a/plugins/amazonq/shared/jetbrains-community/resources/software/aws/toolkits/resources/AmazonQBundle.properties +++ b/plugins/amazonq/shared/jetbrains-community/resources/software/aws/toolkits/resources/AmazonQBundle.properties @@ -9,7 +9,7 @@ amazonqInlineChat.popup.title=Enter Instructions for Q amazonq.refresh.panel=Refresh Chat Session amazonq.title=Amazon Q amazonq.workspace.settings.open.prompt=Workspace index is now enabled. You can disable it from Amazon Q settings. -action.q.manage.subscription.text=Manage Subscription +action.q.manage.subscription.text=Manage Q Developer Pro Subscription action.q.profile.usage.text=You changed your profile action.q.profile.usage=You''re using the ''{0}'' profile for Amazon Q. action.q.switchProfiles.text=Change Profile diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index 577b51cf612..74076f69ae6 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -1,11 +1,13 @@ // 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.intellij.diff.DiffContentFactory import com.intellij.diff.requests.SimpleDiffRequest import com.intellij.ide.BrowserUtil +import com.intellij.notification.NotificationAction import com.intellij.notification.NotificationType import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.fileChooser.FileChooserFactory @@ -112,19 +114,28 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC } override fun showMessage(messageParams: MessageParams) { - val type = when (messageParams.type) { - MessageType.Error -> NotificationType.ERROR - MessageType.Warning -> NotificationType.WARNING - MessageType.Info, MessageType.Log -> NotificationType.INFORMATION - } - - notify(type, message("q.window.title"), getCleanedContent(messageParams.message, true), project, emptyList()) + notify(messageParams.type.toNotificationType(), message("q.window.title"), getCleanedContent(messageParams.message, true), project, emptyList()) } - override fun showMessageRequest(requestParams: ShowMessageRequestParams): CompletableFuture? { - println(requestParams) + override fun showMessageRequest(requestParams: ShowMessageRequestParams): CompletableFuture { + val future = CompletableFuture() + if (requestParams.actions.isNullOrEmpty()) { + future.complete(null) + } + + notify( + requestParams.type.toNotificationType(), + message("q.window.title"), + getCleanedContent(requestParams.message, true), + project, + requestParams.actions.map { item -> + NotificationAction.create(item.title) { + future.complete(item) + } + } + ) - return CompletableFuture.completedFuture(null) + return future } override fun logMessage(message: MessageParams) { @@ -280,6 +291,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC ) ) } + AmazonQLspConstants.LSP_Q_CONFIGURATION_KEY -> { add( AmazonQLspConfiguration( @@ -327,6 +339,12 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC private fun File.toVirtualFile() = LocalFileSystem.getInstance().findFileByIoFile(this) + private fun MessageType.toNotificationType() = when (this) { + MessageType.Error -> NotificationType.ERROR + MessageType.Warning -> NotificationType.WARNING + MessageType.Info, MessageType.Log -> NotificationType.INFORMATION + } + override fun openFileDiff(params: OpenFileDiffParams): CompletableFuture = CompletableFuture.supplyAsync( { @@ -352,6 +370,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC contentFactory.create(project, originalContent, virtualFile) to contentFactory.createEmpty() } + else -> { val newContent = params.fileContent.orEmpty() isNewFile = newContent == originalContent @@ -360,6 +379,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC contentFactory.createEmpty() to contentFactory.create(project, newContent, virtualFile) } + else -> { contentFactory.create(project, originalContent, virtualFile) to contentFactory.create(project, newContent, virtualFile) From 5a1f148c340b542b98c61c5118ed0b0f6e21747d Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 10 Jun 2025 17:14:31 -0700 Subject: [PATCH 2/2] 242 --- .../jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index 74076f69ae6..31887b5fb6e 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -129,7 +129,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC getCleanedContent(requestParams.message, true), project, requestParams.actions.map { item -> - NotificationAction.create(item.title) { + NotificationAction.createSimple(item.title) { future.complete(item) } }