Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
import org.eclipse.lsp4j.services.LanguageClient
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LSPAny
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_CONTEXT_COMMANDS
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GET_SERIALIZED_CHAT_REQUEST_METHOD
Expand Down Expand Up @@ -43,4 +45,7 @@ interface AmazonQLanguageClient : LanguageClient {

@JsonNotification(OPEN_FILE_DIFF)
fun openFileDiff(params: OpenFileDiffParams): CompletableFuture<Unit>

@JsonNotification(CHAT_SEND_CONTEXT_COMMANDS)
fun sendContextCommands(params: LSPAny): CompletableFuture<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LSPAny
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_OPEN_TAB
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_CONTEXT_COMMANDS
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatUpdateParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GET_SERIALIZED_CHAT_REQUEST_METHOD
Expand Down Expand Up @@ -340,6 +342,19 @@
ApplicationManager.getApplication()::invokeLater
)

override fun sendContextCommands(params: LSPAny): CompletableFuture<Unit> {
val showContextCommands = """

Check warning on line 346 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L346

Added line #L346 was not covered by tests
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a util for this ChatCommunicationManager.convertNotificationToJsonForChat

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i dont like that pattern
#5693

"command":"$CHAT_SEND_CONTEXT_COMMANDS",
"params": ${Gson().toJson(params)}

Check warning on line 349 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L349

Added line #L349 was not covered by tests
}
""".trimIndent()

Check warning on line 351 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L351

Added line #L351 was not covered by tests

AsyncChatUiListener.notifyPartialMessageUpdate(showContextCommands)

Check warning on line 353 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L353

Added line #L353 was not covered by tests

return CompletableFuture.completedFuture(Unit)

Check warning on line 355 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt#L355

Added line #L355 was not covered by tests
}

companion object {
private val LOG = getLogger<AmazonQLanguageClientImpl>()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
@file:Suppress("BannedImports")
package software.aws.toolkits.jetbrains.services.amazonq.lsp

import com.google.gson.Gson
import com.google.gson.ToNumberPolicy
import com.intellij.execution.configurations.GeneralCommandLine
import com.intellij.execution.impl.ExecutionManagerImpl
Expand Down Expand Up @@ -44,7 +43,6 @@
import org.eclipse.lsp4j.jsonrpc.Launcher
import org.eclipse.lsp4j.jsonrpc.Launcher.Builder
import org.eclipse.lsp4j.jsonrpc.MessageConsumer
import org.eclipse.lsp4j.jsonrpc.messages.NotificationMessage
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
import org.eclipse.lsp4j.launch.LSPLauncher
import org.slf4j.event.Level
Expand All @@ -57,7 +55,6 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.dependencies.DefaultModuleDependenciesService
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AmazonQLspTypeAdapterFactory
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsExtendedInitializeResult
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.createExtendedClientMetadata
Expand Down Expand Up @@ -282,23 +279,12 @@

launcher = LSPLauncher.Builder<AmazonQLanguageServer>()
.wrapMessages { consumer ->
MessageConsumer {
message ->
MessageConsumer { message ->

Check warning on line 282 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt#L282

Added line #L282 was not covered by tests
if (message is ResponseMessage && message.result is AwsExtendedInitializeResult) {
val result = message.result as AwsExtendedInitializeResult
AwsServerCapabilitiesProvider.getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities())
AmazonQLspService.getInstance(project).notifyInitializeMessageReceived()
}
if (message is NotificationMessage && message.method == "aws/chat/sendContextCommands") {
val showContextCommands = """
{
"command":"aws/chat/sendContextCommands",
"params": ${Gson().toJson(message.params)}
}
""".trimIndent()

AsyncChatUiListener.notifyPartialMessageUpdate(showContextCommands)
}
consumer?.consume(message)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,40 @@

package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat

const val SEND_CHAT_COMMAND_PROMPT = "aws/chat/sendChatPrompt"
const val CHAT_QUICK_ACTION = "aws/chat/sendChatQuickAction"
const val CHAT_READY = "aws/chat/ready"
const val CHAT_LINK_CLICK = "aws/chat/linkClick"
const val CHAT_INFO_LINK_CLICK = "aws/chat/infoLinkClick"
const val CHAT_SOURCE_LINK_CLICK = "aws/chat/sourceLinkClick"
const val PROMPT_INPUT_OPTIONS_CHANGE = "aws/chat/promptInputOptionChange"
const val CHAT_PROMPT_OPTION_ACKNOWLEDGED = "chatPromptOptionAcknowledged"
const val CHAT_FEEDBACK = "aws/chat/feedback"
const val CHAT_FOLLOW_UP_CLICK = "aws/chat/followUpClick"
const val CHAT_LIST_CONVERSATIONS = "aws/chat/listConversations"
const val CHAT_CONVERSATION_CLICK = "aws/chat/conversationClick"
const val CHAT_FILE_CLICK = "aws/chat/fileClick"
const val CHAT_TAB_ADD = "aws/chat/tabAdd"
const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
const val CHAT_OPEN_TAB = "aws/chat/openTab"
const val CHAT_BUTTON_CLICK = "aws/chat/buttonClick"
const val CHAT_DISCLAIMER_ACKNOWLEDGED = "disclaimerAcknowledged"
const val CHAT_CONVERSATION_CLICK = "aws/chat/conversationClick"
const val CHAT_COPY_CODE_TO_CLIPBOARD = "copyToClipboard"
const val CHAT_COPY_CODE_TO_CLIPBOARD_NOTIFICATION = "aws/chat/copyCodeToClipboard"
const val CHAT_CREATE_PROMPT = "aws/chat/createPrompt"
const val CHAT_DISCLAIMER_ACKNOWLEDGED = "disclaimerAcknowledged"
const val CHAT_ERROR_PARAMS = "errorMessage"
const val CHAT_FEEDBACK = "aws/chat/feedback"
const val CHAT_FILE_CLICK = "aws/chat/fileClick"
const val CHAT_FOLLOW_UP_CLICK = "aws/chat/followUpClick"
const val CHAT_INFO_LINK_CLICK = "aws/chat/infoLinkClick"
const val CHAT_INSERT_TO_CURSOR = "insertToCursorPosition"
const val CHAT_INSERT_TO_CURSOR_NOTIFICATION = "aws/chat/insertToCursorPosition"
const val CHAT_TAB_BAR_ACTIONS = "aws/chat/tabBarAction"
const val CHAT_LINK_CLICK = "aws/chat/linkClick"
const val CHAT_LIST_CONVERSATIONS = "aws/chat/listConversations"
const val CHAT_OPEN_TAB = "aws/chat/openTab"
const val CHAT_PROMPT_OPTION_ACKNOWLEDGED = "chatPromptOptionAcknowledged"
const val CHAT_QUICK_ACTION = "aws/chat/sendChatQuickAction"
const val CHAT_READY = "aws/chat/ready"
const val CHAT_SEND_CONTEXT_COMMANDS = "aws/chat/sendContextCommands"
const val CHAT_SEND_UPDATE = "aws/chat/sendChatUpdate"
const val CHAT_CREATE_PROMPT = "aws/chat/createPrompt"
const val SHOW_SAVE_FILE_DIALOG_REQUEST_METHOD = "aws/showSaveFileDialog"
const val CHAT_SOURCE_LINK_CLICK = "aws/chat/sourceLinkClick"
const val CHAT_TAB_ADD = "aws/chat/tabAdd"
const val CHAT_TAB_BAR_ACTIONS = "aws/chat/tabBarAction"
const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"

const val GET_SERIALIZED_CHAT_REQUEST_METHOD = "aws/chat/getSerializedChat"

const val OPEN_FILE_DIFF = "aws/openFileDiff"
const val CHAT_ERROR_PARAMS = "errorMessage"

const val PROMPT_INPUT_OPTIONS_CHANGE = "aws/chat/promptInputOptionChange"

const val SEND_CHAT_COMMAND_PROMPT = "aws/chat/sendChatPrompt"
const val SHOW_SAVE_FILE_DIALOG_REQUEST_METHOD = "aws/showSaveFileDialog"
const val STOP_CHAT_RESPONSE = "stopChatResponse"
const val OPEN_SETTINGS = "openSettings"
Loading