Skip to content

Commit 2fafb49

Browse files
feat(amazonq): emit fileClick when user clicks file in q chat. (#5649)
* handle fileClick events in q chat * detekt
1 parent 2e025dc commit 2fafb49

File tree

4 files changed

+36
-5
lines changed

4 files changed

+36
-5
lines changed

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Butto
3838
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_BUTTON_CLICK
3939
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_COPY_CODE_TO_CLIPBOARD
4040
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FEEDBACK
41+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FILE_CLICK
4142
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
4243
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
4344
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INSERT_TO_CURSOR
@@ -60,6 +61,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Encry
6061
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
6162
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FeedbackNotification
6263
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FeedbackParams
64+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FileClickNotification
65+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FileClickParams
6366
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickNotification
6467
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickParams
6568
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickNotification
@@ -287,33 +290,33 @@ class BrowserConnector(
287290
server.linkClick(params)
288291
}
289292
}
290-
291293
CHAT_INFO_LINK_CLICK -> {
292294
handleChatNotification<InfoLinkClickNotification, InfoLinkClickParams>(node) { server, params ->
293295
server.infoLinkClick(params)
294296
}
295297
}
296-
297298
CHAT_SOURCE_LINK_CLICK -> {
298299
handleChatNotification<SourceLinkClickNotification, SourceLinkClickParams>(node) { server, params ->
299300
server.sourceLinkClick(params)
300301
}
301302
}
302-
303+
CHAT_FILE_CLICK -> {
304+
handleChatNotification<FileClickNotification, FileClickParams>(node) { server, params ->
305+
server.fileClick(params)
306+
}
307+
}
303308
PROMPT_INPUT_OPTIONS_CHANGE -> {
304309
handleChatNotification<PromptInputOptionChangeNotification, PromptInputOptionChangeParams>(node) {
305310
server, params ->
306311
server.promptInputOptionsChange(params)
307312
}
308313
}
309-
310314
CHAT_PROMPT_OPTION_ACKNOWLEDGED -> {
311315
val acknowledgedMessage = node.get("params").get("messageId")
312316
if (acknowledgedMessage.asText() == "programmerModeCardId") {
313317
MeetQSettings.getInstance().amazonQChatPairProgramming = false
314318
}
315319
}
316-
317320
CHAT_FOLLOW_UP_CLICK -> {
318321
handleChatNotification<FollowUpClickNotification, FollowUpClickParams>(node) { server, params ->
319322
server.followUpClick(params)

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Butto
1515
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_BUTTON_CLICK
1616
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_COPY_CODE_TO_CLIPBOARD_NOTIFICATION
1717
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FEEDBACK
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FILE_CLICK
1819
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
1920
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INFO_LINK_CLICK
2021
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INSERT_TO_CURSOR_NOTIFICATION
@@ -29,6 +30,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyC
2930
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
3031
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
3132
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FeedbackParams
33+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FileClickParams
3234
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickParams
3335
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
3436
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InsertToCursorPositionParams
@@ -104,6 +106,9 @@ interface AmazonQLanguageServer : LanguageServer {
104106
@JsonNotification(CHAT_FOLLOW_UP_CLICK)
105107
fun followUpClick(params: FollowUpClickParams): CompletableFuture<Unit>
106108

109+
@JsonNotification(CHAT_FILE_CLICK)
110+
fun fileClick(params: FileClickParams): CompletableFuture<Unit>
111+
107112
@JsonRequest(CHAT_BUTTON_CLICK)
108113
fun buttonClick(params: ButtonClickParams): CompletableFuture<ButtonClickResult>
109114
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
5+
6+
data class FileClickNotification(
7+
override val command: String,
8+
override val params: FileClickParams,
9+
) : ChatNotification<FileClickParams>
10+
11+
data class FileClickParams(
12+
val tabId: String,
13+
val filePath: String,
14+
val action: FileAction? = null,
15+
val messageId: String? = null,
16+
val fullPath: String? = null,
17+
)
18+
19+
enum class FileAction {
20+
ACCEPT_CHANGE,
21+
REJECT_CHANGE,
22+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const val PROMPT_INPUT_OPTIONS_CHANGE = "aws/chat/promptInputOptionChange"
1313
const val CHAT_PROMPT_OPTION_ACKNOWLEDGED = "chatPromptOptionAcknowledged"
1414
const val CHAT_FEEDBACK = "aws/chat/feedback"
1515
const val CHAT_FOLLOW_UP_CLICK = "aws/chat/followUpClick"
16+
const val CHAT_FILE_CLICK = "aws/chat/fileClick"
1617
const val CHAT_TAB_ADD = "aws/chat/tabAdd"
1718
const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
1819
const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"

0 commit comments

Comments
 (0)