Skip to content

Commit 2e9cdda

Browse files
committed
add sendChatUpdate
1 parent eff0aa5 commit 2e9cdda

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-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,10 +3,13 @@
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
89
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
910
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
11+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
12+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
1013
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
1114
import java.util.concurrent.CompletableFuture
1215

@@ -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: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ import org.eclipse.lsp4j.ShowMessageRequestParams
1616
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
1717
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1818
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
19+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
1920
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
21+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
2022
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
2123
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
24+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
2225
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
2326
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.SsoProfileData
2427
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
@@ -130,4 +133,25 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
130133
error("Cannot handle partial chat")
131134
}
132135
}
136+
137+
override fun sendChatUpdate(params: ChatUpdateParams): CompletableFuture<Unit> {
138+
// Process the chat update notification from the server
139+
// This notification is used to add or update messages in a specific tab
140+
val tabId = params.tabId
141+
val state = params.state
142+
val data = params.data
143+
144+
val encryptionManager = AmazonQLspService.getInstance(project).encryptionManager
145+
146+
val uiMessage = ChatCommunicationManager.convertToJsonToSendToChat(
147+
command = SEND_CHAT_COMMAND_PROMPT,
148+
tabId = tabId,
149+
params = encryptionManager.decrypt(params.toString()),
150+
isPartialResult = false
151+
)
152+
153+
AsyncChatUiListener.notifyPartialMessageUpdate(uiMessage)
154+
155+
return CompletableFuture.completedFuture(Unit)
156+
}
133157
}
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
@@ -18,3 +18,4 @@ const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
1818
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
1919
const val CHAT_OPEN_TAB = "aws/chat/openTab"
2020
const val CHAT_BUTTON_CLICK = "aws/chat/buttonClick"
21+
const val CHAT_SEND_UPDATE = "aws/chat/sendChatUpdate"

0 commit comments

Comments
 (0)