Skip to content

Commit dcab88d

Browse files
Merge branch 'feature/q-lsp-chat' into samgst/q-lsp-chat-openTab
2 parents f3fdda9 + 8c7eea3 commit dcab88d

File tree

4 files changed

+46
-0
lines changed

4 files changed

+46
-0
lines changed

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,19 @@ import kotlinx.coroutines.launch
2121
import org.cef.browser.CefBrowser
2222
import org.eclipse.lsp4j.Position
2323
import org.eclipse.lsp4j.Range
24+
import software.aws.toolkits.core.utils.getLogger
25+
import software.aws.toolkits.core.utils.warn
2426
import software.aws.toolkits.jetbrains.services.amazonq.apps.AppConnection
2527
import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageSerializer
2628
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
2729
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
2830
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
2931
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
3032
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.getTextDocumentIdentifier
33+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickNotification
34+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickParams
35+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickResult
36+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_BUTTON_CLICK
3137
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FEEDBACK
3238
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
3339
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
@@ -276,6 +282,15 @@ class BrowserConnector(
276282
server.followUpClick(params)
277283
}
278284
}
285+
CHAT_BUTTON_CLICK -> {
286+
handleChatNotification<ButtonClickNotification, ButtonClickParams>(node) { server, params ->
287+
server.buttonClick(params)
288+
}.thenApply { response ->
289+
if (response is ButtonClickResult && !response.success) {
290+
LOG.warn { "Failed to execute action associated with button with reason: ${response.failureReason}" }
291+
}
292+
}
293+
}
279294
}
280295
}
281296

@@ -307,4 +322,8 @@ class BrowserConnector(
307322
serverAction(server, requestFromUi.params)
308323
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
309324
}
325+
326+
companion object {
327+
private val LOG = getLogger<BrowserConnector>()
328+
}
310329
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import org.eclipse.lsp4j.services.LanguageServer
1010
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigurationFromServerParams
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
1212
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.UpdateConfigurationParams
13+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickParams
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickResult
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_BUTTON_CLICK
1316
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FEEDBACK
1417
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
1518
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
@@ -85,4 +88,7 @@ interface AmazonQLanguageServer : LanguageServer {
8588

8689
@JsonNotification(CHAT_FOLLOW_UP_CLICK)
8790
fun followUpClick(params: FollowUpClickParams): CompletableFuture<Unit>
91+
92+
@JsonRequest(CHAT_BUTTON_CLICK)
93+
fun buttonClick(params: ButtonClickParams): CompletableFuture<ButtonClickResult>
8894
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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.model.aws.chat
5+
6+
data class ButtonClickNotification(
7+
override val command: String,
8+
override val params: ButtonClickParams,
9+
) : ChatNotification<ButtonClickParams>
10+
11+
data class ButtonClickParams(
12+
val tabId: String,
13+
val messageId: String,
14+
val buttonId: String,
15+
)
16+
17+
data class ButtonClickResult(
18+
val success: Boolean,
19+
val failureReason: String?,
20+
)

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ const val CHAT_TAB_ADD = "aws/chat/tabAdd"
1515
const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
1616
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
1717
const val CHAT_OPEN_TAB = "aws/chat/openTab"
18+
const val CHAT_BUTTON_CLICK = "aws/chat/buttonClick"

0 commit comments

Comments
 (0)