Skip to content

Commit c12ff9c

Browse files
committed
link click events
1 parent 98a43b5 commit c12ff9c

File tree

4 files changed

+77
-0
lines changed

4 files changed

+77
-0
lines changed

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,21 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
2828
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
2929
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
3030
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.getTextDocumentIdentifier
31+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
32+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
3133
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
34+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
3235
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
3336
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
3437
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
3538
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
3639
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
40+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickNotification
41+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickNotification
3742
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
3843
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
3944
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
45+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickNotification
4046
import software.aws.toolkits.jetbrains.services.amazonq.util.command
4147
import software.aws.toolkits.jetbrains.services.amazonq.util.tabType
4248
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme
@@ -205,6 +211,24 @@ class BrowserConnector(
205211

206212
showResult(result, partialResultToken, tabId, encryptionManager, browser)
207213
}
214+
CHAT_LINK_CLICK -> {
215+
val requestFromUi = serializer.deserializeChatMessages(node, LinkClickNotification::class.java)
216+
AmazonQLspService.executeIfRunning(project) { server ->
217+
server.linkClick(requestFromUi.params)
218+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
219+
}
220+
CHAT_INFO_LINK_CLICK -> {
221+
val requestFromUi = serializer.deserializeChatMessages(node, InfoLinkClickNotification::class.java)
222+
AmazonQLspService.executeIfRunning(project) { server ->
223+
server.infoLinkClick(requestFromUi.params)
224+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
225+
}
226+
CHAT_SOURCE_LINK_CLICK -> {
227+
val requestFromUi = serializer.deserializeChatMessages(node, SourceLinkClickNotification::class.java)
228+
AmazonQLspService.executeIfRunning(project) { server ->
229+
server.sourceLinkClick(requestFromUi.params)
230+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
231+
}
208232
}
209233
}
210234

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageServer.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigu
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
1212
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
1313
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
16+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
1417
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
1518
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
1619
import java.util.concurrent.CompletableFuture
@@ -37,4 +40,13 @@ interface AmazonQLanguageServer : LanguageServer {
3740

3841
@JsonRequest("aws/chat/sendChatQuickAction")
3942
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
43+
44+
@JsonNotification("aws/chat/linkClick")
45+
fun linkClick(params: LinkClickParams): CompletableFuture<Unit>
46+
47+
@JsonNotification("aws/chat/infoLinkClick")
48+
fun infoLinkClick(params: InfoLinkClickParams): CompletableFuture<Unit>
49+
50+
@JsonNotification("aws/chat/feedback/sourceLinkClick")
51+
fun sourceLinkClick(params: SourceLinkClickParams): CompletableFuture<Unit>
4052
}

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
55

66
const val SEND_CHAT_COMMAND_PROMPT = "aws/chat/sendChatPrompt"
77
const val CHAT_QUICK_ACTION = "aws/chat/sendChatQuickAction"
8+
const val CHAT_LINK_CLICK = "aws/chat/linkClick"
9+
const val CHAT_INFO_LINK_CLICK = "aws/chat/infoLinkClick"
10+
const val CHAT_SOURCE_LINK_CLICK = "aws/chat/sourceLinkClick"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
4+
5+
data class InfoLinkClickNotification(
6+
val command: String,
7+
val params: InfoLinkClickParams,
8+
)
9+
10+
data class SourceLinkClickNotification(
11+
val command: String,
12+
val params: SourceLinkClickParams,
13+
)
14+
15+
data class LinkClickNotification(
16+
val command: String,
17+
val params: LinkClickParams,
18+
)
19+
20+
data class InfoLinkClickParams(
21+
val tabId: String,
22+
val link: String,
23+
val eventId: String? = null,
24+
)
25+
26+
data class LinkClickParams(
27+
val tabId: String,
28+
val link: String,
29+
val eventId: String? = null,
30+
val messageId: String,
31+
)
32+
33+
data class SourceLinkClickParams(
34+
val tabId: String,
35+
val link: String,
36+
val eventId: String? = null,
37+
val messageId: String,
38+
)

0 commit comments

Comments
 (0)