Skip to content

Commit f8f92c4

Browse files
feat(amazonq): client emits messages on TabEvents (#5574)
* Set up Flare chat connection * Partial chat results * feedback * detekt * syntax error * detekt * detekt * Add quick actions to chat * adding commands from initialize result * add tabEvent message handling * added trace logging * configure param deserialization * feedback --------- Co-authored-by: Manodnya Bhoite <[email protected]> Co-authored-by: manodnyab <[email protected]>
1 parent 78f1d42 commit f8f92c4

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_
3535
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
3636
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_READY
3737
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
38+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_ADD
39+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_CHANGE
40+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_REMOVE
3841
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatNotification
3942
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
4043
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
@@ -55,6 +58,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_
5558
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
5659
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickNotification
5760
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
61+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventParams
62+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventRequest
5863
import software.aws.toolkits.jetbrains.services.amazonq.util.command
5964
import software.aws.toolkits.jetbrains.services.amazonq.util.tabType
6065
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme
@@ -233,6 +238,22 @@ class BrowserConnector(
233238
server.chatReady()
234239
}
235240
}
241+
CHAT_TAB_ADD -> {
242+
handleChatNotification<TabEventRequest, TabEventParams>(node) { server, params ->
243+
server.tabAdd(params)
244+
}
245+
}
246+
CHAT_TAB_REMOVE -> {
247+
handleChatNotification<TabEventRequest, TabEventParams>(node) { server, params ->
248+
chatCommunicationManager.removePartialChatMessage(params.tabId)
249+
server.tabRemove(params)
250+
}
251+
}
252+
CHAT_TAB_CHANGE -> {
253+
handleChatNotification<TabEventRequest, TabEventParams>(node) { server, params ->
254+
server.tabChange(params)
255+
}
256+
}
236257
CHAT_LINK_CLICK -> {
237258
handleChatNotification<LinkClickNotification, LinkClickParams>(node) { server, params ->
238259
server.linkClick(params)

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_
1717
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
1818
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_READY
1919
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
20+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_ADD
21+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_CHANGE
22+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_TAB_REMOVE
2023
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
2124
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
2225
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FeedbackParams
@@ -25,6 +28,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoL
2528
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
2629
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
2730
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
31+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventParams
2832
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
2933
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
3034
import java.util.concurrent.CompletableFuture
@@ -52,6 +56,15 @@ interface AmazonQLanguageServer : LanguageServer {
5256
@JsonRequest(SEND_CHAT_COMMAND_PROMPT)
5357
fun sendChatPrompt(params: EncryptedChatParams): CompletableFuture<String>
5458

59+
@JsonNotification(CHAT_TAB_ADD)
60+
fun tabAdd(params: TabEventParams): CompletableFuture<Unit>
61+
62+
@JsonNotification(CHAT_TAB_REMOVE)
63+
fun tabRemove(params: TabEventParams): CompletableFuture<Unit>
64+
65+
@JsonNotification(CHAT_TAB_CHANGE)
66+
fun tabChange(params: TabEventParams): CompletableFuture<Unit>
67+
5568
@JsonRequest(CHAT_QUICK_ACTION)
5669
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
5770

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ const val CHAT_INFO_LINK_CLICK = "aws/chat/infoLinkClick"
1111
const val CHAT_SOURCE_LINK_CLICK = "aws/chat/sourceLinkClick"
1212
const val CHAT_FEEDBACK = "aws/chat/feedback"
1313
const val CHAT_FOLLOW_UP_CLICK = "aws/chat/followUpClick"
14+
const val CHAT_TAB_ADD = "aws/chat/tabAdd"
15+
const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
16+
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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 TabEventRequest(
7+
override val command: String,
8+
override val params: TabEventParams,
9+
) : ChatNotification<TabEventParams>
10+
11+
data class TabEventParams(
12+
val tabId: String,
13+
)

0 commit comments

Comments
 (0)