From 722373a7d9aba3379cc21702355f72d2c713ceef Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 22 May 2025 11:05:05 -0700 Subject: [PATCH 1/2] fix(amazonq): include failure context in chat failure message --- .../services/amazonq/webview/BrowserConnector.kt | 2 +- .../amazonq/lsp/flareChat/ChatCommunicationManager.kt | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt index d8c20387c82..cfd037cd960 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt @@ -479,7 +479,7 @@ class BrowserConnector( } catch (_: CancellationException) { LOG.warn { "Cancelled chat generation" } } catch (e: Exception) { - LOG.error(e) { "Failed to send chat message" } + LOG.warn(e) { "Failed to send chat message" } browser.postChat(chatCommunicationManager.getErrorUiMessage(tabId, e, partialResultToken)) } } diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt index 84a712094b1..43a0cf58f86 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt @@ -4,6 +4,7 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat import com.google.gson.Gson +import com.google.gson.JsonObject import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.project.Project @@ -11,6 +12,7 @@ import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.eclipse.lsp4j.ProgressParams +import org.eclipse.lsp4j.jsonrpc.ResponseErrorException import software.aws.toolkits.core.utils.getLogger import software.aws.toolkits.core.utils.warn import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager @@ -122,8 +124,13 @@ class ChatCommunicationManager(private val cs: CoroutineScope) { token?.let { removePartialChatMessage(it) } + var errorMessage: String? = null + if (exception is ResponseErrorException) { + errorMessage = (exception.responseError.data as? JsonObject)?.get("body")?.asString ?: exception.responseError.message + } + val errorTitle = "An error occurred while processing your request." - val errorMessage = "Details: ${exception.message}" + errorMessage = errorMessage ?: "Details: ${exception.message}" val errorParams = Gson().toJson(ErrorParams(tabId, null, errorMessage, errorTitle)).toString() val isPartialResult = false val uiMessage = """ From abd247d1dc7c2fc40a385b8da37a581142f5183d Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 22 May 2025 11:41:43 -0700 Subject: [PATCH 2/2] gson --- .../amazonq/lsp/flareChat/ChatCommunicationManager.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt index 43a0cf58f86..db65c2af57d 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt @@ -14,6 +14,7 @@ import kotlinx.coroutines.launch import org.eclipse.lsp4j.ProgressParams import org.eclipse.lsp4j.jsonrpc.ResponseErrorException import software.aws.toolkits.core.utils.getLogger +import software.aws.toolkits.core.utils.tryOrNull import software.aws.toolkits.core.utils.warn import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection @@ -24,6 +25,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LSPAny import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.AuthFollowUpClickedParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.AuthFollowupType import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_ERROR_PARAMS +import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatMessage import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ErrorParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GetSerializedChatResult import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT @@ -126,7 +128,9 @@ class ChatCommunicationManager(private val cs: CoroutineScope) { } var errorMessage: String? = null if (exception is ResponseErrorException) { - errorMessage = (exception.responseError.data as? JsonObject)?.get("body")?.asString ?: exception.responseError.message + errorMessage = tryOrNull { + Gson().fromJson(exception.responseError.data as JsonObject, ChatMessage::class.java).body + } ?: exception.responseError.message } val errorTitle = "An error occurred while processing your request."