Skip to content

Commit 46559e6

Browse files
committed
update
1 parent ed00af6 commit 46559e6

File tree

3 files changed

+39
-26
lines changed

3 files changed

+39
-26
lines changed

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

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Promp
9191
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.PromptInputOptionChangeParams
9292
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
9393
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
94-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_ERROR_MESSAGE
94+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_ERROR_PARAMS
9595
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.STOP_CHAT_RESPONSE
9696
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
9797
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickNotification
@@ -212,6 +212,8 @@ class BrowserConnector(
212212
}
213213
}
214214

215+
216+
215217
private fun handleFlareChatMessages(browser: Browser, node: JsonNode) {
216218
when (node.command) {
217219
SEND_CHAT_COMMAND_PROMPT -> {
@@ -439,17 +441,9 @@ class BrowserConnector(
439441
browser.postChat(res)
440442
} catch (e: Exception) {
441443
LOG.error { "Failed to perform chat tab bar action $e" }
442-
if (params.tabId != null) {
443-
browser.postChat(
444-
ChatCommunicationManager.convertToJsonToSendToChat(
445-
CHAT_ERROR_MESSAGE,
446-
params.tabId.toString(),
447-
getErrorUiMessage(e),
448-
isPartialResult = false
449-
)
450-
)
444+
params.tabId?.let {
445+
chatCommunicationManager.sendErrorToUi(it, e, null)
451446
}
452-
453447
}
454448
}
455449
}
@@ -510,25 +504,12 @@ class BrowserConnector(
510504
chatCommunicationManager.removeInflightRequestForTab(tabId)
511505
} catch (e: Exception) {
512506
LOG.error { "Failed to send chat message $e" }
513-
chatCommunicationManager.removePartialChatMessage(partialResultToken)
514-
browser.postChat(
515-
ChatCommunicationManager.convertToJsonToSendToChat(
516-
CHAT_ERROR_MESSAGE,
517-
tabId,
518-
getErrorUiMessage(e),
519-
isPartialResult = false
520-
)
521-
)
507+
chatCommunicationManager.sendErrorToUi(tabId, e, partialResultToken)
522508
}
523509

524510
}
525511
}
526512

527-
private fun getErrorUiMessage(e: Exception) = Gson().toJson(
528-
ChatUiMessageParams(
529-
title = "An error occurred while processing your request.",
530-
body = "Details: ${e.message}"
531-
)).toString()
532513

533514
private fun cancelInflightRequests(tabId: String) {
534515
chatCommunicationManager.getInflightRequestForTab(tabId)?.let { request ->

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat
55

66
import com.google.gson.Gson
7+
import com.google.gson.JsonElement
78
import com.intellij.openapi.components.Service
89
import com.intellij.openapi.components.service
910
import com.intellij.openapi.project.Project
1011
import org.eclipse.lsp4j.ProgressParams
1112
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1213
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ProgressNotificationUtils.getObject
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ErrorParams
1315
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GetSerializedChatResult
1416
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
1517
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_ERROR_PARAMS
1619
import java.util.UUID
1720
import java.util.concurrent.CompletableFuture
1821
import java.util.concurrent.ConcurrentHashMap
@@ -70,13 +73,42 @@ class ChatCommunicationManager {
7073
}
7174
}
7275

76+
fun sendErrorToUi(tabId: String, exception: Exception, token: String?) {
77+
token?.let {
78+
removePartialChatMessage(it)
79+
}
80+
val errorTitle = "An error occurred while processing your request."
81+
val errorMessage = "Details: ${exception.message}"
82+
val errorParams = Gson().toJsonTree(ErrorParams(tabId, null, errorMessage, errorTitle))
83+
sendErrorMessageToChatUi(CHAT_ERROR_PARAMS, tabId, errorParams, false)
84+
}
85+
86+
private fun sendErrorMessageToChatUi(command: String, tabId: String, partialChatResult: JsonElement, isPartialResult: Boolean) {
87+
val uiMessage = """
88+
{
89+
"command":"$command",
90+
"tabId": "$tabId",
91+
"params": $partialChatResult,
92+
"isPartialResult": $isPartialResult
93+
}
94+
""".trimIndent()
95+
AsyncChatUiListener.notifyPartialMessageUpdate(uiMessage)
96+
}
97+
7398
companion object {
7499
fun getInstance(project: Project) = project.service<ChatCommunicationManager>()
75100

76101
val pendingSerializedChatRequests = ConcurrentHashMap<String, CompletableFuture<GetSerializedChatResult>>()
77102
fun completeSerializedChatResponse(requestId: String, content: String) {
78103
pendingSerializedChatRequests.remove(requestId)?.complete(GetSerializedChatResult((content)))
79104
}
105+
fun getErrorUiMessage(tabId: String, e: Exception): String = Gson().toJson(
106+
ErrorParams(
107+
title = "An error occurred while processing your request.",
108+
message = "Details: ${e.message}",
109+
tabID = tabId,
110+
triggerType = TODO(),
111+
)).toString()
80112

81113
fun convertToJsonToSendToChat(command: String, tabId: String, params: String, isPartialResult: Boolean): String =
82114
"""

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ const val CHAT_SEND_UPDATE = "aws/chat/sendChatUpdate"
3131
const val CHAT_CREATE_PROMPT = "aws/chat/createPrompt"
3232
const val SHOW_SAVE_FILE_DIALOG_REQUEST_METHOD = "aws/showSaveFileDialog"
3333
const val GET_SERIALIZED_CHAT_REQUEST_METHOD = "aws/chat/getSerializedChat"
34-
const val CHAT_ERROR_MESSAGE = "errorMessage"
34+
const val CHAT_ERROR_PARAMS = "errorMessage"
3535
const val STOP_CHAT_RESPONSE = "stopChatResponse"

0 commit comments

Comments
 (0)