Skip to content

Commit 261f7c6

Browse files
authored
Merge branch 'feature/q-lsp-chat' into manodnyb/fixSupportedAuthError
2 parents 6d96e79 + 47046c3 commit 261f7c6

File tree

5 files changed

+59
-35
lines changed

5 files changed

+59
-35
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/ActionRegistrar.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import kotlinx.coroutines.flow.asSharedFlow
1111
import kotlinx.coroutines.runBlocking
1212
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
1313
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMessage
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GENERIC_COMMAND
1415
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GenericCommandParams
16+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_TO_PROMPT
1517
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendToPromptParams
1618
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TriggerType
1719
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
@@ -36,23 +38,19 @@ class ActionRegistrar {
3638
val fileContext = contextExtractor.extractContextForTrigger(ExtractionTriggerType.ContextMenu)
3739
val codeSelection = "\n```\n${fileContext.focusAreaContext?.codeSelection?.trimIndent()?.trim()}\n```\n"
3840
var uiMessage: FlareUiMessage? = null
39-
if (command.verb != "sendToPrompt") {
41+
if (command.verb != SEND_TO_PROMPT) {
4042
val params = GenericCommandParams(selection = codeSelection, triggerType = TriggerType.CONTEXT_MENU, genericCommand = command.name)
41-
uiMessage = FlareUiMessage(command = "genericCommand", params = params)
43+
uiMessage = FlareUiMessage(command = GENERIC_COMMAND, params = params)
4244
} else {
4345
val params = SendToPromptParams(selection = codeSelection, triggerType = TriggerType.CONTEXT_MENU)
44-
uiMessage = FlareUiMessage(command = "sendToPrompt", params = params)
46+
uiMessage = FlareUiMessage(command = SEND_TO_PROMPT, params = params)
4547
}
4648
AsyncChatUiListener.notifyPartialMessageUpdate(uiMessage)
4749
}
4850
}
4951
}
5052
}
5153

52-
fun reportMessageClick(command: EditorContextCommand, issue: MutableMap<String, String>, project: Project) {
53-
_messages.tryEmit(CodeScanIssueActionMessage(command, issue, project))
54-
}
55-
5654
// provide singleton access
5755
companion object {
5856
val instance = ActionRegistrar()

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/codescan/actions/CodeScanQActions.kt

Lines changed: 0 additions & 25 deletions
This file was deleted.

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/codescan/actions/ExplainCodeIssueAction.kt

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,55 @@
33

44
package software.aws.toolkits.jetbrains.services.cwc.commands.codescan.actions
55

6-
import software.aws.toolkits.jetbrains.services.cwc.commands.EditorContextCommand
6+
import com.intellij.openapi.actionSystem.ActionManager
7+
import com.intellij.openapi.actionSystem.AnAction
8+
import com.intellij.openapi.actionSystem.AnActionEvent
9+
import com.intellij.openapi.actionSystem.DataKey
10+
import com.intellij.openapi.application.ApplicationManager
11+
import com.intellij.openapi.project.DumbAware
12+
import kotlinx.coroutines.runBlocking
13+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMessage
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
16+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_TO_PROMPT
17+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendToPromptParams
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TriggerType
719

8-
class ExplainCodeIssueAction : CodeScanQActions(EditorContextCommand.ExplainCodeScanIssue)
20+
class ExplainCodeIssueAction : AnAction(), DumbAware {
21+
override fun actionPerformed(e: AnActionEvent) {
22+
val issueDataKey = DataKey.create<MutableMap<String, String>>("amazonq.codescan.explainissue")
23+
val issueContext = e.getData(issueDataKey) ?: return
24+
25+
ActionManager.getInstance().getAction("q.openchat").actionPerformed(e)
26+
27+
ApplicationManager.getApplication().executeOnPooledThread {
28+
runBlocking {
29+
// https://github.com/aws/aws-toolkit-vscode/blob/master/packages/amazonq/src/lsp/chat/commands.ts#L30
30+
val codeSelection = "\n```\n${issueContext["code"]?.trimIndent()?.trim()}\n```\n"
31+
32+
val prompt = "Explain the issue \n\n " +
33+
"Issue: \"${issueContext["title"]}\" \n" +
34+
"Code: $codeSelection"
35+
36+
val modelPrompt = "Explain the issue ${issueContext["title"]} \n\n " +
37+
"Issue: \"${issueContext["title"]}\" \n" +
38+
"Description: ${issueContext["description"]} \n" +
39+
"Code: $codeSelection and generate the code demonstrating the fix"
40+
41+
val params = SendToPromptParams(
42+
selection = codeSelection,
43+
triggerType = TriggerType.CONTEXT_MENU,
44+
prompt = ChatPrompt(
45+
prompt = prompt,
46+
escapedPrompt = modelPrompt,
47+
command = null
48+
),
49+
autoSubmit = true
50+
)
51+
52+
val uiMessage = FlareUiMessage(SEND_TO_PROMPT, params)
53+
AsyncChatUiListener.notifyPartialMessageUpdate(uiMessage)
54+
}
55+
}
56+
}
57+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ContextCom
99
data class ChatPrompt(
1010
val prompt: String,
1111
val escapedPrompt: String,
12-
val command: String,
12+
val command: String?,
1313
)
1414

1515
data class SendChatPromptRequest(

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const val DID_REMOVE_FILE = "aws/didRemoveFileOrDirectory"
3838
const val DID_CREATE_DIRECTORY = "aws/didCreateDirectory"
3939

4040
const val GET_SERIALIZED_CHAT_REQUEST_METHOD = "aws/chat/getSerializedChat"
41+
const val GENERIC_COMMAND = "genericCommand"
4142

4243
const val OPEN_FILE_DIFF = "aws/openFileDiff"
4344
const val OPEN_SETTINGS = "openSettings"
@@ -47,4 +48,5 @@ const val PROMPT_INPUT_OPTIONS_CHANGE = "aws/chat/promptInputOptionChange"
4748
const val SEND_CHAT_COMMAND_PROMPT = "aws/chat/sendChatPrompt"
4849
const val SHOW_SAVE_FILE_DIALOG_REQUEST_METHOD = "aws/showSaveFileDialog"
4950
const val STOP_CHAT_RESPONSE = "stopChatResponse"
51+
const val SEND_TO_PROMPT = "sendToPrompt"
5052
const val TELEMETRY_EVENT = "telemetry/event"

0 commit comments

Comments
 (0)