Skip to content

Commit ad0a3af

Browse files
committed
fix request and prompt
1 parent cb2a169 commit ad0a3af

File tree

5 files changed

+18
-29
lines changed

5 files changed

+18
-29
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/file/FileContextExtractor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class FileContextExtractor(private val fqnWebviewAdapter: FqnWebviewAdapter?, pr
2222
} ?: return null
2323

2424
val fileLanguage = computeOnEdt {
25-
languageExtractor.extractLanguageNameFromCurrentFile(editor, project)
25+
languageExtractor.extractLanguageNameFromCurrentFile(editor)
2626
}
2727
val fileText = computeOnEdt {
2828
editor.document.text

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/file/util/LanguageExtractor.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,9 @@
33

44
package software.aws.toolkits.jetbrains.services.cwc.editor.context.file.util
55

6-
import com.intellij.openapi.application.runReadAction
7-
import com.intellij.openapi.editor.Document
86
import com.intellij.openapi.editor.Editor
9-
import com.intellij.openapi.project.Project
10-
import com.intellij.psi.PsiDocumentManager
11-
import com.intellij.psi.PsiFile
7+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
128

139
class LanguageExtractor {
14-
fun extractLanguageNameFromCurrentFile(editor: Editor, project: Project): String? =
15-
runReadAction {
16-
val doc: Document = editor.document
17-
val psiFile: PsiFile? = PsiDocumentManager.getInstance(project).getPsiFile(doc)
18-
psiFile?.fileType?.name?.lowercase()
19-
}
10+
fun extractLanguageNameFromCurrentFile(editor: Editor): String = editor.virtualFile.programmingLanguage().languageId
2011
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/focusArea/FocusAreaContextExtractor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class FocusAreaContextExtractor(private val fqnWebviewAdapter: FqnWebviewAdapter
106106

107107
// Retrieve <codeNames> from trimmedFileText
108108
val fileLanguage = computeOnEdt {
109-
languageExtractor.extractLanguageNameFromCurrentFile(editor, project)
109+
languageExtractor.extractLanguageNameFromCurrentFile(editor)
110110
}
111111
val fileText = editor.document.text
112112
val fileName = FileEditorManager.getInstance(project).selectedFiles.first().name

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/inline/InlineChatController.kt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.customization.Code
5555
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
5656
import software.aws.toolkits.jetbrains.services.cwc.clients.chat.model.ChatRequestData
5757
import software.aws.toolkits.jetbrains.services.cwc.clients.chat.model.TriggerType
58+
import software.aws.toolkits.jetbrains.services.cwc.clients.chat.v1.ChatSessionFactoryV1
5859
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.messenger.ChatPromptHandler
5960
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.TelemetryHelper
6061
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.userIntent.UserIntentRecognizer
@@ -63,6 +64,7 @@ import software.aws.toolkits.jetbrains.services.cwc.editor.context.ExtractionTri
6364
import software.aws.toolkits.jetbrains.services.cwc.inline.listeners.InlineChatFileListener
6465
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessage
6566
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType
67+
import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionInfo
6668
import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionStorage
6769
import software.aws.toolkits.telemetry.FeatureId
6870
import java.util.UUID
@@ -601,23 +603,16 @@ class InlineChatController(
601603
val startTime = System.currentTimeMillis()
602604
var firstResponseLatency = 0.0
603605
val messages = mutableListOf<ChatMessage>()
604-
val triggerId = UUID.randomUUID().toString()
605606
val intentRecognizer = UserIntentRecognizer()
606607

607-
val language = editor.virtualFile?.programmingLanguage()
608-
var prompt = ""
609-
if (selectedCode.isNotBlank()) { prompt += "<selected_code>$selectedCode</selected_code>\n" }
610-
prompt += "<instruction>$message</instruction>\n"
611-
prompt += "<context>${if (editor.document.text.isNotEmpty()) editor.document.text.take(8000) else "file written in $language"}</context>"
612-
613-
logger.debug { "Inline chat prompt: $prompt" }
614-
615608
val contextExtractor = ActiveFileContextExtractor.create(fqnWebviewAdapter = null, project = project)
616609
val fileContext = contextExtractor.extractContextForTrigger(ExtractionTriggerType.ChatMessage)
617610

611+
val tabId = UUID.randomUUID().toString()
612+
618613
val requestData = ChatRequestData(
619-
tabId = "inlineChat-editor",
620-
message = prompt,
614+
tabId = tabId,
615+
message = message,
621616
activeFileContext = fileContext,
622617
userIntent = intentRecognizer.getUserIntentFromPromptChatMessage(message, null),
623618
triggerType = TriggerType.Inline,
@@ -626,16 +621,15 @@ class InlineChatController(
626621
useRelevantDocuments = false
627622
)
628623

629-
val sessionInfo = sessionStorage.getSession("inlineChat-editor", project)
624+
val sessionInfo = sessionStorage.getSession(tabId, project)
630625
val mutex = Mutex()
631626

632-
sessionInfo.history.add(requestData)
633627
var errorMessage = ""
634628
var prevMessage = ""
635629
val chat = sessionInfo.scope.async {
636630
ChatPromptHandler(telemetryHelper).handle(
637-
"inlineChat-editor",
638-
triggerId,
631+
tabId,
632+
UUID.randomUUID().toString(),
639633
requestData,
640634
sessionInfo,
641635
shouldAddIndexInProgressMessage = false,

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/inline/InlineChatPopupFactory.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import com.intellij.ui.awt.RelativePoint
1717
import kotlinx.coroutines.CoroutineScope
1818
import kotlinx.coroutines.launch
1919
import kotlinx.coroutines.runBlocking
20+
import kotlinx.coroutines.withContext
21+
import software.aws.toolkits.jetbrains.core.coroutines.EDT
2022
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererColorUtil.POPUP_BUTTON_BORDER
2123
import software.aws.toolkits.resources.AmazonQBundle.message
2224
import java.awt.Point
@@ -77,7 +79,9 @@ class InlineChatPopupFactory(
7779
val rejectAction = {
7880
rejectHandler.invoke()
7981
}
80-
addCodeActionsPanel(acceptAction, rejectAction)
82+
withContext(EDT) {
83+
addCodeActionsPanel(acceptAction, rejectAction)
84+
}
8185
}
8286
}
8387
}

0 commit comments

Comments
 (0)