public void sendMessageToChatServer()

in plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatCommunicationManager.java [86:154]


    public void sendMessageToChatServer(final Command command, final Object params) {
        chatMessageProvider.thenAcceptAsync(chatMessageProvider -> {
            try {
                switch (command) {
                case CHAT_SEND_PROMPT:
                    ChatRequestParams chatRequestParams = jsonHandler.convertObject(params, ChatRequestParams.class);
                    chatRequestParams.setContext(chatRequestParams.getPrompt().context());
                    addEditorState(chatRequestParams, true);
                    sendEncryptedChatMessage(chatRequestParams.getTabId(), token -> {
                        String encryptedMessage = lspEncryptionManager.encrypt(chatRequestParams);

                        EncryptedChatParams encryptedChatRequestParams = new EncryptedChatParams(encryptedMessage,
                                token);

                        return chatMessageProvider.sendChatPrompt(chatRequestParams.getTabId(),
                                encryptedChatRequestParams);
                    });
                    break;
                case CHAT_QUICK_ACTION:
                    QuickActionParams quickActionParams = jsonHandler.convertObject(params, QuickActionParams.class);
                    sendEncryptedChatMessage(quickActionParams.getTabId(), token -> {
                        String encryptedMessage = lspEncryptionManager.encrypt(quickActionParams);

                        EncryptedQuickActionParams encryptedQuickActionParams = new EncryptedQuickActionParams(
                                encryptedMessage, token);

                        return chatMessageProvider.sendQuickAction(quickActionParams.getTabId(),
                                encryptedQuickActionParams);
                    });
                    break;
                case CHAT_READY:
                    chatMessageProvider.sendChatReady();
                    break;
                case CHAT_TAB_ADD:
                    GenericTabParams tabParamsForAdd = jsonHandler.convertObject(params, GenericTabParams.class);
                    chatMessageProvider.sendTabAdd(tabParamsForAdd);
                    break;
                case CHAT_TAB_REMOVE:
                    GenericTabParams tabParamsForRemove = jsonHandler.convertObject(params, GenericTabParams.class);
                    chatMessageProvider.sendTabRemove(tabParamsForRemove);
                    break;
                case CHAT_TAB_CHANGE:
                    GenericTabParams tabParamsForChange = jsonHandler.convertObject(params, GenericTabParams.class);
                    chatMessageProvider.sendTabChange(tabParamsForChange);
                    break;
                case CHAT_FOLLOW_UP_CLICK:
                    FollowUpClickParams followUpClickParams = jsonHandler.convertObject(params,
                            FollowUpClickParams.class);
                    chatMessageProvider.followUpClick(followUpClickParams);
                    break;
                case CHAT_END_CHAT:
                    GenericTabParams tabParamsForEndChat = jsonHandler.convertObject(params, GenericTabParams.class);
                    chatMessageProvider.endChat(tabParamsForEndChat);
                    break;
                case CHAT_FEEDBACK:
                    var feedbackParams = jsonHandler.convertObject(params, FeedbackParams.class);
                    chatMessageProvider.sendFeedback(feedbackParams);
                    break;
                case TELEMETRY_EVENT:
                    chatMessageProvider.sendTelemetryEvent(params);
                    break;
                default:
                    throw new AmazonQPluginException("Unexpected command received from Chat UI: " + command.toString());
                }
            } catch (Exception e) {
                throw new AmazonQPluginException("Error occurred when sending message to server", e);
            }
        }, ThreadingUtils.getWorkerPool());
    }