Skip to content

Commit 3307059

Browse files
committed
Merge remote-tracking branch 'origin/feature/q-lsp-chat' into manodnyb/addEventsForRefreshingFiles
2 parents 8c6014d + 241386d commit 3307059

File tree

20 files changed

+535
-353
lines changed

20 files changed

+535
-353
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ class MessageSerializer @VisibleForTesting constructor() {
4040
inline fun <reified T> deserializeChatMessages(value: JsonNode): T =
4141
objectMapper.treeToValue<T>(value)
4242

43+
inline fun <reified T> deserializeChatMessages(value: JsonNode, clazz: Class<T>): T =
44+
objectMapper.treeToValue(value, clazz)
45+
4346
// Provide singleton global access
4447
companion object {
4548
private val instance = MessageSerializer()

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

Lines changed: 166 additions & 166 deletions
Large diffs are not rendered by default.

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ data class AmazonQTheme(
3737
val warning: Color,
3838
val error: Color,
3939

40-
val cardBackground: Color,
41-
4240
val editorFont: Font,
4341
val editorBackground: Color,
4442
val editorForeground: Color,
@@ -49,5 +47,5 @@ data class AmazonQTheme(
4947
val editorKeyword: Color,
5048
val editorString: Color,
5149
val editorProperty: Color,
52-
50+
val editorClassName: Color,
5351
)

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ enum class CssVariable(
1313
FontFamily("--mynah-font-family"),
1414

1515
TextColorDefault("--mynah-color-text-default"),
16+
TextColorAlt("--mynah-color-text-alternate"),
1617
TextColorStrong("--mynah-color-text-strong"),
1718
TextColorWeak("--mynah-color-text-weak"),
1819
TextColorLink("--mynah-color-text-link"),
@@ -25,7 +26,7 @@ enum class CssVariable(
2526
ColorDeep("--mynah-color-deep"),
2627
ColorDeepReverse("--mynah-color-deep-reverse"),
2728
BorderDefault("--mynah-color-border-default"),
28-
InputBackground("--mynah-color-input-bg"),
29+
InputBackground("--mynah-input-bg"),
2930

3031
SyntaxBackground("--mynah-color-syntax-bg"),
3132
SyntaxVariable("--mynah-color-syntax-variable"),
@@ -36,6 +37,9 @@ enum class CssVariable(
3637
SyntaxProperty("--mynah-color-syntax-property"),
3738
SyntaxComment("--mynah-color-syntax-comment"),
3839
SyntaxCode("--mynah-color-syntax-code"),
40+
SyntaxKeyword("--mynah-color-syntax-keyword"),
41+
SyntaxString("--mynah-color-syntax-string"),
42+
SyntaxClassName("--mynah-color-syntax-class-name"),
3943
SyntaxCodeFontFamily("--mynah-syntax-code-font-family"),
4044
SyntaxCodeFontSize("--mynah-syntax-code-font-size"),
4145

@@ -50,10 +54,9 @@ enum class CssVariable(
5054
SecondaryButtonBackground("--mynah-color-alternate"),
5155
SecondaryButtonForeground("--mynah-color-alternate-reverse"),
5256

53-
CodeText("--mynah-color-code-text"),
54-
5557
MainBackground("--mynah-color-main"),
5658
MainForeground("--mynah-color-main-reverse"),
5759

5860
CardBackground("--mynah-card-bg"),
61+
CardBackgroundAlt("--mynah-card-bg-alternate"),
5962
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,17 @@ class EditorThemeAdapter {
113113
warning = themeColor("Component.warningFocusColor", default = 0xE2A53A),
114114
error = themeColor("ProgressBar.failedColor", default = 0xD64F4F, darkDefault = 0xE74848),
115115

116-
cardBackground = cardBackground,
117-
118116
editorFont = currentScheme.getFont(EditorFontType.PLAIN),
119-
editorBackground = chatBackground,
120-
editorForeground = text,
117+
editorBackground = currentScheme.defaultBackground,
118+
editorForeground = currentScheme.defaultForeground,
121119
editorVariable = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.LOCAL_VARIABLE),
122120
editorOperator = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.OPERATION_SIGN),
123121
editorFunction = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.FUNCTION_DECLARATION),
124122
editorComment = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.LINE_COMMENT),
125123
editorKeyword = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.KEYWORD),
126124
editorString = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.STRING),
127125
editorProperty = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.INSTANCE_FIELD),
126+
editorClassName = currentScheme.foregroundColor(DefaultLanguageHighlighterColors.CLASS_NAME),
128127
)
129128
}
130129

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@ class ThemeBrowserAdapter {
3535
append(CssVariable.FontFamily, theme.font.toCssFontFamily())
3636

3737
append(CssVariable.TextColorDefault, theme.defaultText)
38+
append(CssVariable.TextColorAlt, theme.defaultText)
3839
append(CssVariable.TextColorStrong, theme.textFieldForeground)
3940
append(CssVariable.TextColorInput, theme.textFieldForeground)
4041
append(CssVariable.TextColorLink, theme.linkText)
4142
append(CssVariable.TextColorWeak, theme.inactiveText)
4243

4344
append(CssVariable.Background, theme.background)
4445
append(CssVariable.BackgroundAlt, theme.background)
45-
append(CssVariable.CardBackground, theme.cardBackground)
46+
append(CssVariable.CardBackground, theme.editorBackground)
47+
append(CssVariable.CardBackgroundAlt, theme.editorBackground)
4648
append(CssVariable.BorderDefault, theme.border)
4749
append(CssVariable.TabActive, theme.activeTab)
4850

@@ -63,6 +65,7 @@ class ThemeBrowserAdapter {
6365

6466
append(CssVariable.SyntaxCodeFontFamily, theme.editorFont.toCssFontFamily("monospace"))
6567
append(CssVariable.SyntaxCodeFontSize, theme.editorFont.toCssSize())
68+
append(CssVariable.SyntaxCode, theme.editorForeground)
6669
append(CssVariable.SyntaxBackground, theme.editorBackground)
6770
append(CssVariable.SyntaxVariable, theme.editorVariable)
6871
append(CssVariable.SyntaxOperator, theme.editorOperator)
@@ -71,7 +74,9 @@ class ThemeBrowserAdapter {
7174
append(CssVariable.SyntaxAttributeValue, theme.editorKeyword)
7275
append(CssVariable.SyntaxAttribute, theme.editorString)
7376
append(CssVariable.SyntaxProperty, theme.editorProperty)
74-
append(CssVariable.SyntaxCode, theme.editorForeground)
77+
append(CssVariable.SyntaxKeyword, theme.editorKeyword)
78+
append(CssVariable.SyntaxString, theme.editorString)
79+
append(CssVariable.SyntaxClassName, theme.editorClassName)
7580

7681
append(CssVariable.MainBackground, theme.buttonBackground)
7782
append(CssVariable.MainForeground, theme.buttonForeground)

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqCodeTest/controller/CodeTestChatController.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitConte
5656
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthController
5757
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionReference
5858
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionReferencePosition
59+
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
5960
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
6061
import software.aws.toolkits.jetbrains.services.amazonq.project.RelevantDocument
6162
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.CodeWhispererUTGChatManager
@@ -110,6 +111,12 @@ import java.util.UUID
110111
import software.amazon.awssdk.services.codewhispererstreaming.model.Position as StreamingPosition
111112
import software.amazon.awssdk.services.codewhispererstreaming.model.Range as StreamingRange
112113

114+
data class TestCommandMessage(
115+
val sender: String = "codetest",
116+
val command: String = "test",
117+
val type: String = "addAnswer",
118+
) : AmazonQMessage
119+
113120
class CodeTestChatController(
114121
private val context: AmazonQAppInitContext,
115122
private val chatSessionStorage: ChatSessionStorage,

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
3-
3+
@file:Suppress("BannedImports")
44
package software.aws.toolkits.jetbrains.services.cwc.commands
55

6+
import com.google.gson.Gson
67
import com.intellij.openapi.application.ApplicationManager
78
import com.intellij.openapi.project.Project
89
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -14,6 +15,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Gener
1415
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendToPromptParams
1516
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TriggerType
1617
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
18+
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.controller.TestCommandMessage
1719
import software.aws.toolkits.jetbrains.services.cwc.editor.context.ActiveFileContextExtractor
1820
import software.aws.toolkits.jetbrains.services.cwc.editor.context.ExtractionTriggerType
1921

@@ -25,8 +27,7 @@ class ActionRegistrar {
2527

2628
fun reportMessageClick(command: EditorContextCommand, project: Project) {
2729
if (command == EditorContextCommand.GenerateUnitTests) {
28-
// pre-existing old chat code path
29-
_messages.tryEmit(ContextMenuActionMessage(command, project))
30+
AsyncChatUiListener.notifyPartialMessageUpdate(Gson().toJson(TestCommandMessage()))
3031
} else {
3132
// new agentic chat route
3233
ApplicationManager.getApplication().executeOnPooledThread {

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/ChatController.kt

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import software.aws.toolkits.jetbrains.core.coroutines.EDT
3838
import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitContext
3939
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthController
4040
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthNeededState
41-
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
4241
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessagePublisher
4342
import software.aws.toolkits.jetbrains.services.amazonq.onboarding.OnboardingPageInteraction
4443
import software.aws.toolkits.jetbrains.services.amazonq.onboarding.OnboardingPageInteractionType
@@ -52,7 +51,6 @@ import software.aws.toolkits.jetbrains.services.cwc.clients.chat.model.TriggerTy
5251
import software.aws.toolkits.jetbrains.services.cwc.clients.chat.v1.ChatSessionFactoryV1
5352
import software.aws.toolkits.jetbrains.services.cwc.commands.CodeScanIssueActionMessage
5453
import software.aws.toolkits.jetbrains.services.cwc.commands.ContextMenuActionMessage
55-
import software.aws.toolkits.jetbrains.services.cwc.commands.EditorContextCommand
5654
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.StaticPrompt
5755
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.StaticTextResponse
5856
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.messenger.ChatPromptHandler
@@ -76,12 +74,6 @@ import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionStorage
7674
import software.aws.toolkits.telemetry.CwsprChatCommandType
7775
import java.util.UUID
7876

79-
data class TestCommandMessage(
80-
val sender: String = "codetest",
81-
val command: String = "test",
82-
val type: String = "addAnswer",
83-
) : AmazonQMessage
84-
8577
class ChatController private constructor(
8678
private val context: AmazonQAppInitContext,
8779
private val chatSessionStorage: ChatSessionStorage,
@@ -285,16 +277,7 @@ class ChatController private constructor(
285277

286278
// JB specific (not in vscode)
287279
override suspend fun processContextMenuCommand(message: ContextMenuActionMessage) {
288-
// Extract context
289-
if (message.project != context.project) {
290-
return
291-
}
292-
293-
if (message.command == EditorContextCommand.GenerateUnitTests) {
294-
// Publish an event to "codetest" tab with command as "test" and type as "addAnswer"
295-
val messageToPublish = TestCommandMessage()
296-
context.messagesFromAppToUi.publish(messageToPublish)
297-
}
280+
// No-op since context commands are handled elsewhere. This function will be deprecated once we remove this class
298281
}
299282

300283
private suspend fun processPromptActions(

plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ private handleDocCommand(chatPrompt: ChatPrompt, tabID: string, taskName: string
331331
this.showScanInTab(affectedTabId)
332332
}
333333

334-
private handleCodeTestCommand(chatPrompt: ChatPrompt, tabID: string, eventId: string | undefined) {
334+
private handleCodeTestCommand(chatPrompt: ChatPrompt, tabID: string | undefined, eventId: string | undefined) {
335335
if (!this.isCodeTestEnabled) {
336336
return
337337
}
@@ -343,10 +343,17 @@ private handleDocCommand(chatPrompt: ChatPrompt, tabID: string, taskName: string
343343
this.connector.startTestGen(testTabId, realPromptText)
344344
return
345345
}
346+
/**
347+
* right click -> generate test has no tab id
348+
* we have to manually create one if a testgen tab
349+
* wasn't previously created
350+
*/
351+
if (!tabID) {
352+
tabID = this.mynahUI?.updateStore('', {})
353+
}
346354
const affectedTabId: string | undefined = this.addTab(tabID)
347355

348356
// if there is no test tab, open a new one
349-
350357
if (affectedTabId === undefined) {
351358
this.mynahUI?.notify({
352359
content: uiComponentsTexts.noMoreTabsTooltip,

0 commit comments

Comments
 (0)