From 666e9a7f96fef94c0ca56f176162a870fe9ff157 Mon Sep 17 00:00:00 2001 From: Jordan Ang Date: Wed, 18 Sep 2024 13:14:00 -0700 Subject: [PATCH 1/2] Send chat/ready message to lsp and fix addTab issue --- .../amazonq/chat/ChatCommunicationManager.java | 9 ++++++--- .../eclipse/amazonq/chat/ChatMessageProvider.java | 13 +++++++------ .../eclipse/amazonq/lsp/AmazonQLspServer.java | 5 ++++- .../amazonq/views/AmazonQChatViewActionHandler.java | 1 + .../eclipse/amazonq/views/AmazonQChatWebview.java | 7 ++++++- 5 files changed, 24 insertions(+), 11 deletions(-) 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..56ed06b8 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java @@ -21,13 +21,14 @@ public ChatMessageProvider() { PluginLogger.error("Error occurred while retrieving Amazon Q LSP server. Failed to instantiate 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..3d2d23c6 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java @@ -21,7 +21,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; } }; From b570c6494f6b9ed6d4f16772f0c3763bf95a673b Mon Sep 17 00:00:00 2001 From: Jordan Ang Date: Wed, 18 Sep 2024 14:33:36 -0700 Subject: [PATCH 2/2] Fix checkstyle errors --- .../aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java | 2 +- .../aws/toolkits/eclipse/amazonq/lsp/AmazonQLspServer.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) 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 56ed06b8..530104e1 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java @@ -21,7 +21,7 @@ public ChatMessageProvider() { PluginLogger.error("Error occurred while retrieving Amazon Q LSP server. Failed to instantiate ChatMessageProvider."); } } - + public void sendChatReady() { PluginLogger.info("Sending " + Command.CHAT_READY + " message to Amazon Q LSP server"); amazonQLspServer.chatReady(); 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 3d2d23c6..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; @@ -22,7 +21,7 @@ public interface AmazonQLspServer extends LanguageServer { @JsonNotification("aws/chat/tabAdd") void tabAdd(GenericTabParams params); - + @JsonNotification("aws/chat/ready") void chatReady();