diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatCommunicationManager.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatCommunicationManager.java index 0771d961..4d3a919e 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatCommunicationManager.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatCommunicationManager.java @@ -10,11 +10,11 @@ public final class ChatCommunicationManager { private final JsonHandler jsonHandler; - private final ChatMessageProvider chatMessageProivder; + private final ChatMessageProvider chatMessageProvider; public ChatCommunicationManager() { this.jsonHandler = new JsonHandler(); - this.chatMessageProivder = new ChatMessageProvider(); + this.chatMessageProvider = new ChatMessageProvider(); } public void sendMessageToChatServerAsync(final Command command, final Object params) { @@ -22,9 +22,12 @@ public void sendMessageToChatServerAsync(final Command command, final Object par String jsonParams = jsonHandler.serialize(params); switch (command) { + case CHAT_READY: + chatMessageProvider.sendChatReady(); + break; case CHAT_TAB_ADD: GenericTabParams tabParams = jsonHandler.deserialize(jsonParams, GenericTabParams.class); - chatMessageProivder.sendTabAdd(tabParams); + chatMessageProvider.sendTabAdd(tabParams); break; default: PluginLogger.error("Unhandled chat command: " + command.toString()); diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java index 9a663fa6..530104e1 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java @@ -22,12 +22,13 @@ public ChatMessageProvider() { } } + public void sendChatReady() { + PluginLogger.info("Sending " + Command.CHAT_READY + " message to Amazon Q LSP server"); + amazonQLspServer.chatReady(); + } + public void sendTabAdd(final GenericTabParams tabParams) { - try { - PluginLogger.info("Sending " + Command.CHAT_TAB_ADD + " message to Amazon Q LSP server"); - amazonQLspServer.tabAdd(tabParams).get(); - } catch (InterruptedException | ExecutionException e) { - PluginLogger.error("Error occurred while sending message to Amazon Q LSP server for command " + Command.CHAT_TAB_ADD); - } + PluginLogger.info("Sending " + Command.CHAT_TAB_ADD + " message to Amazon Q LSP server"); + amazonQLspServer.tabAdd(tabParams); } } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java index d152aaea..f07f091c 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java @@ -9,7 +9,6 @@ import org.eclipse.lsp4j.jsonrpc.services.JsonNotification; import org.eclipse.lsp4j.services.LanguageServer; -import software.aws.toolkits.eclipse.amazonq.chat.models.ChatResult; import software.aws.toolkits.eclipse.amazonq.chat.models.GenericTabParams; import software.aws.toolkits.eclipse.amazonq.lsp.model.InlineCompletionParams; import software.aws.toolkits.eclipse.amazonq.lsp.model.InlineCompletionResponse; @@ -21,7 +20,10 @@ public interface AmazonQLspServer extends LanguageServer { CompletableFuture inlineCompletionWithReferences(InlineCompletionParams params); @JsonNotification("aws/chat/tabAdd") - CompletableFuture tabAdd(GenericTabParams params); + void tabAdd(GenericTabParams params); + + @JsonNotification("aws/chat/ready") + void chatReady(); @JsonRequest("aws/credentials/token/update") CompletableFuture updateTokenCredentials(UpdateCredentialsPayload payload); diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatViewActionHandler.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatViewActionHandler.java index 9a87fc40..21924486 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatViewActionHandler.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatViewActionHandler.java @@ -26,6 +26,7 @@ public final void handleCommand(final ParsedCommand parsedCommand, final Browser switch (command) { case CHAT_READY: + chatCommunicationManager.sendMessageToChatServerAsync(command, params); break; case CHAT_TAB_ADD: chatCommunicationManager.sendMessageToChatServerAsync(command, params); diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java index fa091f41..8e9b26d6 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java @@ -17,6 +17,7 @@ import jakarta.inject.Inject; import software.aws.toolkits.eclipse.amazonq.lsp.manager.LspConstants; import software.aws.toolkits.eclipse.amazonq.util.AuthUtils; +import software.aws.toolkits.eclipse.amazonq.util.PluginLogger; import software.aws.toolkits.eclipse.amazonq.util.PluginUtils; import software.aws.toolkits.eclipse.amazonq.util.ThreadingUtils; import software.aws.toolkits.eclipse.amazonq.views.actions.AmazonQCommonActions; @@ -54,8 +55,12 @@ public final void createPartControl(final Composite parent) { new BrowserFunction(browser, "ideCommand") { @Override public Object function(final Object[] arguments) { - commandParser.parseCommand(arguments) + try { + commandParser.parseCommand(arguments) .ifPresent(parsedCommand -> actionHandler.handleCommand(parsedCommand, browser)); + } catch (Exception e) { + PluginLogger.error("Error processing message from Browser", e); + } return null; } };