Skip to content

Commit a7cc967

Browse files
committed
emit copyCodeToClipboard for chat
1 parent 98a43b5 commit a7cc967

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ 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_COPY_CODE_TO_CLIPBOARD
3132
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
3233
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
3334
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
35+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyCodeToClipboardNotification
3436
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
3537
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
3638
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
@@ -205,6 +207,12 @@ class BrowserConnector(
205207

206208
showResult(result, partialResultToken, tabId, encryptionManager, browser)
207209
}
210+
CHAT_COPY_CODE_TO_CLIPBOARD -> {
211+
val requestFromUi = serializer.deserializeChatMessages(node, CopyCodeToClipboardNotification::class.java)
212+
AmazonQLspService.executeIfRunning(project) { server ->
213+
server.copyCodeToClipboard(requestFromUi.params)
214+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
215+
}
208216
}
209217
}
210218

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
99
import org.eclipse.lsp4j.services.LanguageServer
1010
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigurationFromServerParams
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
12+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyCodeToClipboardParams
1213
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
1314
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
1415
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
@@ -37,4 +38,7 @@ interface AmazonQLanguageServer : LanguageServer {
3738

3839
@JsonRequest("aws/chat/sendChatQuickAction")
3940
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
41+
42+
@JsonNotification("aws/chat/copyCodeToClipboard")
43+
fun copyCodeToClipboard(params: CopyCodeToClipboardParams): CompletableFuture<Unit>
4044
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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 CopyCodeToClipboardNotification(
7+
val command: String,
8+
val params: CopyCodeToClipboardParams,
9+
)
10+
11+
data class CopyCodeToClipboardParams(
12+
val tabId: String,
13+
val messageId: String,
14+
val code: String? = null,
15+
val type: String? = null,
16+
val referenceTrackerInformation: List<ReferenceTrackerInformation>? = null,
17+
val eventId: String? = null,
18+
val codeBlockIndex: Int? = null,
19+
val totalCodeBlocks: Int? = null,
20+
)

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
@@ -5,3 +5,4 @@ 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_COPY_CODE_TO_CLIPBOARD = "copyToClipboard"

0 commit comments

Comments
 (0)