Skip to content

Commit 2982393

Browse files
feat(amazonq): handle sendChatUpdate notifications from the server (#5648)
* add sendChatUpdate * fix objectMapping * fix objectMapping * correct command * update implementation to generalize message sent to browser. * detekt * remove extra line
1 parent 299daed commit 2982393

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq.lsp
55

6+
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification
67
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
78
import org.eclipse.lsp4j.services.LanguageClient
9+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
10+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
811
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
912
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
1013
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
@@ -20,4 +23,7 @@ interface AmazonQLanguageClient : LanguageClient {
2023

2124
@JsonRequest("aws/chat/openTab")
2225
fun openTab(params: OpenTabParams): CompletableFuture<OpenTabResult>
26+
27+
@JsonNotification(CHAT_SEND_UPDATE)
28+
fun sendChatUpdate(params: ChatUpdateParams): CompletableFuture<Unit>
2329
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4+
@file:Suppress("BannedImports")
45
package software.aws.toolkits.jetbrains.services.amazonq.lsp
56

7+
import com.google.gson.Gson
68
import com.intellij.notification.NotificationType
79
import com.intellij.openapi.application.ApplicationManager
810
import com.intellij.openapi.fileEditor.FileEditorManager
@@ -23,7 +25,10 @@ import software.aws.toolkits.core.utils.warn
2325
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
2426
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
2527
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
28+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
2629
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
30+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
31+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
2732
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
2833
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
2934
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
@@ -164,6 +169,19 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
164169
}
165170
}
166171

172+
override fun sendChatUpdate(params: ChatUpdateParams): CompletableFuture<Unit> {
173+
val uiMessage = """
174+
{
175+
"command":"$CHAT_SEND_UPDATE",
176+
"params":${Gson().toJson(params)}
177+
}
178+
""".trimIndent()
179+
180+
AsyncChatUiListener.notifyPartialMessageUpdate(uiMessage)
181+
182+
return CompletableFuture.completedFuture(Unit)
183+
}
184+
167185
companion object {
168186
private val LOG = getLogger<AmazonQLanguageClientImpl>()
169187
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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 ChatUpdateParams(
7+
val tabId: String,
8+
val state: TabState? = null,
9+
val data: TabData? = null,
10+
)

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
@@ -24,4 +24,5 @@ const val CHAT_COPY_CODE_TO_CLIPBOARD = "copyToClipboard"
2424
const val CHAT_COPY_CODE_TO_CLIPBOARD_NOTIFICATION = "aws/chat/copyCodeToClipboard"
2525
const val CHAT_INSERT_TO_CURSOR = "insertToCursorPosition"
2626
const val CHAT_INSERT_TO_CURSOR_NOTIFICATION = "aws/chat/insertToCursorPosition"
27+
const val CHAT_SEND_UPDATE = "aws/chat/sendChatUpdate"
2728
const val CHAT_CREATE_PROMPT = "aws/chat/createPrompt"

0 commit comments

Comments
 (0)