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 @@ -17,26 +17,36 @@
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.future.await
import kotlinx.coroutines.launch
import org.cef.browser.CefBrowser
import org.eclipse.lsp4j.Position
import org.eclipse.lsp4j.Range
import software.aws.toolkits.jetbrains.services.amazonq.apps.AppConnection
import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageSerializer
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.getTextDocumentIdentifier
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatNotification
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickNotification
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickNotification
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickNotification
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.util.command
import software.aws.toolkits.jetbrains.services.amazonq.util.tabType
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme
Expand Down Expand Up @@ -205,6 +215,23 @@

showResult(result, partialResultToken, tabId, encryptionManager, browser)
}
CHAT_LINK_CLICK -> {
handleChatNotification<LinkClickNotification, LinkClickParams>(node) { server, params ->

Check warning on line 219 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L219

Added line #L219 was not covered by tests
server.linkClick(params)
}
}

CHAT_INFO_LINK_CLICK -> {
handleChatNotification<InfoLinkClickNotification, InfoLinkClickParams>(node) { server, params ->

Check warning on line 225 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L225

Added line #L225 was not covered by tests
server.infoLinkClick(params)
}
}

CHAT_SOURCE_LINK_CLICK -> {
handleChatNotification<SourceLinkClickNotification, SourceLinkClickParams>(node) { server, params ->

Check warning on line 231 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L231

Added line #L231 was not covered by tests
server.sourceLinkClick(params)
}
}
}
}

Expand All @@ -226,4 +253,14 @@
browser.postChat(messageToChat)
}
}

private inline fun <reified T, R> handleChatNotification(
node: JsonNode,
crossinline serverAction: (server: AmazonQLanguageServer, params: R) -> CompletableFuture<*>,
): CompletableFuture<*> where T : ChatNotification<R> {
val requestFromUi = serializer.deserializeChatMessages<T>(node)
return AmazonQLspService.executeIfRunning(project) { server ->
serverAction(server, requestFromUi.params)

Check warning on line 263 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L263

Added line #L263 was not covered by tests
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@ import org.eclipse.lsp4j.services.LanguageServer
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigurationFromServerParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.UpdateConfigurationParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
import java.util.concurrent.CompletableFuture
Expand Down Expand Up @@ -43,4 +49,13 @@ interface AmazonQLanguageServer : LanguageServer {

@JsonRequest(CHAT_QUICK_ACTION)
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>

@JsonNotification(CHAT_LINK_CLICK)
fun linkClick(params: LinkClickParams): CompletableFuture<Unit>

@JsonNotification(CHAT_INFO_LINK_CLICK)
fun infoLinkClick(params: InfoLinkClickParams): CompletableFuture<Unit>

@JsonNotification(CHAT_SOURCE_LINK_CLICK)
fun sourceLinkClick(params: SourceLinkClickParams): CompletableFuture<Unit>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

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

interface ChatNotification<T> {
val command: String
val params: T
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ 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_LINK_CLICK = "aws/chat/linkClick"
const val CHAT_INFO_LINK_CLICK = "aws/chat/infoLinkClick"
const val CHAT_SOURCE_LINK_CLICK = "aws/chat/sourceLinkClick"
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat

data class InfoLinkClickNotification(
override val command: String,
override val params: InfoLinkClickParams,

Check warning on line 7 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L5-L7

Added lines #L5 - L7 were not covered by tests
) : ChatNotification<InfoLinkClickParams>

data class SourceLinkClickNotification(
override val command: String,
override val params: SourceLinkClickParams,

Check warning on line 12 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L10-L12

Added lines #L10 - L12 were not covered by tests
) : ChatNotification<SourceLinkClickParams>

data class LinkClickNotification(
override val command: String,
override val params: LinkClickParams,

Check warning on line 17 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L15-L17

Added lines #L15 - L17 were not covered by tests
) : ChatNotification<LinkClickParams>

data class InfoLinkClickParams(
val tabId: String,
val link: String,
val eventId: String? = null,
)

Check warning on line 24 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L20-L24

Added lines #L20 - L24 were not covered by tests

data class LinkClickParams(
val tabId: String,
val link: String,
val eventId: String? = null,
val messageId: String,
)

Check warning on line 31 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L26-L31

Added lines #L26 - L31 were not covered by tests

data class SourceLinkClickParams(
val tabId: String,
val link: String,
val eventId: String? = null,
val messageId: String,
)

Check warning on line 38 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/LinkClick.kt#L33-L38

Added lines #L33 - L38 were not covered by tests
Loading