diff --git a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
index 7cdd1213628..aa474c06e03 100644
--- a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
+++ b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt
@@ -163,6 +163,7 @@ object IdeVersions {
"com.intellij.java",
"com.intellij.gradle",
"org.jetbrains.idea.maven",
+ "com.jetbrains.codeWithMe",
"com.intellij.properties"
),
marketplacePlugins = listOf(
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQToolWindowFactory.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQToolWindowFactory.kt
index 6e1841499aa..0883a83b657 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQToolWindowFactory.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQToolWindowFactory.kt
@@ -133,8 +133,12 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
}
}
+ /**
+ * Only applies to local
+ * On remote, since we are using PROJECTOR_INSTANCING, this will never run
+ */
override fun init(toolWindow: ToolWindow) {
- toolWindow.stripeTitle = message("q.window.title")
+ toolWindow.stripeTitle = message("toolwindow.stripe.amazon.q.window")
toolWindow.component.addComponentListener(
object : ComponentAdapter() {
override fun componentResized(e: ComponentEvent) {
@@ -143,6 +147,8 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
LOG.debug {
"Amazon Q Tool window stretched to a width less than the minimum allowed width, resizing to the minimum allowed width"
}
+
+ // can't implement equivalent on remote as stretchWidth impl is noop
(toolWindow as ToolWindowEx).stretchWidth(MINIMUM_TOOLWINDOW_WIDTH - newWidth)
}
}
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt
index f176710bf3a..e6e96874632 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt
@@ -16,6 +16,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMes
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfile
import software.aws.toolkits.jetbrains.services.amazonq.util.HighlightCommand
import software.aws.toolkits.jetbrains.services.amazonq.util.createBrowser
+import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.EditorThemeAdapter
+import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.ThemeBrowserAdapter
import software.aws.toolkits.jetbrains.settings.MeetQSettings
import java.nio.file.Path
import java.nio.file.Paths
@@ -128,26 +130,26 @@ class Browser(parent: Disposable, private val mynahAsset: Path, val project: Pro
// https://github.com/highlightjs/highlight.js/issues/1387
// language=HTML
val jsScripts = """
-
+
""".trimIndent()
- addQuickActionCommands(
- isCodeTransformAvailable,
- isFeatureDevAvailable,
- isDocAvailable,
- isCodeTestAvailable,
- isCodeScanAvailable,
- highlightCommand,
- activeProfile
- )
+ // language=HTML
return """
-
+
AWS Q
$jsScripts
+ Amazon Q is loading...
+
""".trimIndent()
}
- private fun addQuickActionCommands(
- isCodeTransformAvailable: Boolean,
- isFeatureDevAvailable: Boolean,
- isDocAvailable: Boolean,
- isCodeTestAvailable: Boolean,
- isCodeScanAvailable: Boolean,
- highlightCommand: HighlightCommand?,
- activeProfile: QRegionProfile?,
- ) {
- // TODO: Remove this once chat has been integrated with agents. This is added temporarily to keep detekt happy.
- isCodeScanAvailable
- isCodeTestAvailable
- isDocAvailable
- isFeatureDevAvailable
- isCodeTransformAvailable
- MAX_ONBOARDING_PAGE_COUNT
- OBJECT_MAPPER
- highlightCommand
- activeProfile
- }
-
companion object {
private const val MAX_ONBOARDING_PAGE_COUNT = 3
private val OBJECT_MAPPER = jacksonObjectMapper()
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt
index 0f994cfb35e..f0c725e8a48 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt
@@ -201,7 +201,8 @@ class BrowserConnector(
themeSource
.distinctUntilChanged()
.onEach {
- themeBrowserAdapter.updateThemeInBrowser(chatBrowser, it, uiReady)
+ uiReady.await()
+ themeBrowserAdapter.updateThemeInBrowser(chatBrowser, it)
}
.launchIn(this)
}
@@ -619,7 +620,7 @@ class BrowserConnector(
$isDocAvailable,
$isCodeScanAvailable,
$isCodeTestAvailable,
- { postMessage: () => {} }
+ { postMessage: () => {} },
);
const commands = tempConnector.initialQuickActions?.slice(0, 2) || [];
diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/ThemeBrowserAdapter.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/ThemeBrowserAdapter.kt
index b3bb829f4ba..b42c96a01e8 100644
--- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/ThemeBrowserAdapter.kt
+++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/ThemeBrowserAdapter.kt
@@ -3,7 +3,6 @@
package software.aws.toolkits.jetbrains.services.amazonq.webview.theme
-import kotlinx.coroutines.CompletableDeferred
import org.cef.browser.CefBrowser
import java.awt.Color
import java.awt.Font
@@ -19,13 +18,12 @@ class ThemeBrowserAdapter {
browser.executeJavaScript("window.changeTheme(${theme.darkMode})", browser.url, 0)
}
- suspend fun updateThemeInBrowser(browser: CefBrowser, theme: AmazonQTheme, uiReady: CompletableDeferred) {
- uiReady.await()
+ fun updateThemeInBrowser(browser: CefBrowser, theme: AmazonQTheme) {
val codeToUpdateTheme = buildJsCodeToUpdateTheme(theme)
browser.executeJavaScript(codeToUpdateTheme, browser.url, 0)
}
- private fun buildJsCodeToUpdateTheme(theme: AmazonQTheme) = buildString {
+ fun buildJsCodeToUpdateTheme(theme: AmazonQTheme) = buildString {
val (bg, altBg, inputBg) = determineInputAndBgColor(theme)
appendDarkMode(theme.darkMode)
diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/connectorAdapter.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/connectorAdapter.ts
index 0015e5a940c..c89f92d0a01 100644
--- a/plugins/amazonq/mynah-ui/src/mynah-ui/connectorAdapter.ts
+++ b/plugins/amazonq/mynah-ui/src/mynah-ui/connectorAdapter.ts
@@ -7,15 +7,6 @@ import { isTabType } from './ui/storages/tabsStorage'
import { WebviewUIHandler } from './ui/main'
import { TabDataGenerator } from './ui/tabs/generator'
import { ChatClientAdapter, ChatEventHandler } from '@aws/chat-client'
-import { FqnExtractor } from "./fqn/extractor";
-
-export * from "./ui/main";
-
-declare global {
- interface Window { fqnExtractor: FqnExtractor; }
-}
-
-window.fqnExtractor = new FqnExtractor();
export const initiateAdapter = (showWelcomePage: boolean,
disclaimerAcknowledged: boolean,
@@ -25,11 +16,12 @@ export const initiateAdapter = (showWelcomePage: boolean,
isCodeScanEnabled: boolean,
isCodeTestEnabled: boolean,
ideApiPostMessage: (message: any) => void,
- profileName?: string) : HybridChatAdapter => {
- return new HybridChatAdapter(showWelcomePage, disclaimerAcknowledged, isFeatureDevEnabled, isCodeTransformEnabled, isDocEnabled, isCodeScanEnabled, isCodeTestEnabled, ideApiPostMessage, profileName)
+ highlightCommand?: QuickActionCommand,
+ profileName?: string,
+) : HybridChatAdapter => {
+ return new HybridChatAdapter(showWelcomePage, disclaimerAcknowledged, isFeatureDevEnabled, isCodeTransformEnabled, isDocEnabled, isCodeScanEnabled, isCodeTestEnabled, ideApiPostMessage, highlightCommand, profileName)
}
-
// Ref: https://github.com/aws/aws-toolkit-vscode/blob/e9ea8082ffe0b9968a873437407d0b6b31b9e1a5/packages/core/src/amazonq/webview/ui/connectorAdapter.ts#L14
export class HybridChatAdapter implements ChatClientAdapter {
private uiHandler?: WebviewUIHandler
@@ -46,6 +38,7 @@ export class HybridChatAdapter implements ChatClientAdapter {
private isCodeScanEnabled: boolean,
private isCodeTestEnabled: boolean,
private ideApiPostMessage: (message: any) => void,
+ private highlightCommand?: QuickActionCommand,
private profileName?: string,
) {}
@@ -67,6 +60,7 @@ export class HybridChatAdapter implements ChatClientAdapter {
isDocEnabled: this.isDocEnabled,
isCodeScanEnabled: this.isCodeScanEnabled,
isCodeTestEnabled: this.isCodeTestEnabled,
+ highlightCommand: this.highlightCommand,
profileName: this.profileName,
hybridChat: true,
})
diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/extractor.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/extractor.ts
deleted file mode 100644
index 2c598c087c1..00000000000
--- a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/extractor.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-/*!
- * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-
-// @ts-ignore
-import {findNames, findNamesWithInExtent} from './find-names';
-import {extractContextFromJavaImports} from "./java-import-reader";
-
-
-export interface FullyQualifiedName {
- source: string[],
- symbol: string[],
-}
-
-export interface FullyQualifiedNames {
- used: FullyQualifiedName[];
-}
-
-export interface CodeQuery {
- simpleNames: string[];
- fullyQualifiedNames: FullyQualifiedNames;
-}
-
-export interface CodeSelection {
- selectedCode: string;
- file?: {
- range: {
- start: {
- row: string;
- column: string;
- };
- end: {
- row: string;
- column: string;
- };
- };
- name: string;
- };
-}
-
-export class FqnExtractor {
-
- async readImports(fileText: string, languageId: string): Promise> {
- const names = await findNames(fileText, languageId);
-
- if (names.fullyQualified === undefined) {
- return new Set()
- }
-
- if (languageId === 'java') {
- return new Set(extractContextFromJavaImports(names));
- }
-
- return new Set(names.fullyQualified?.declaredSymbols
- .map((symbol: { source: string[] }): string => {
- return symbol.source[0].replace('@', '')
- })
- .filter((source: string) => source.length !== 0))
- }
-
- async extractCodeQuery(fileText: string, languageId: string, selection: CodeSelection): Promise<{ codeQuery: CodeQuery | undefined, namesWereTruncated: boolean }> {
- const names = selection === undefined ? await findNames(fileText, languageId) :
- await findNamesWithInExtent(fileText, languageId, selection.file?.range.start.row, selection.file?.range.start.column, selection.file?.range.end.row, selection.file?.range.end.column);
- if (names === undefined || Object.keys(names).length === 0) {
- return {codeQuery: undefined, namesWereTruncated: false}
- }
-
- const {simpleNames, simpleNamesListWasLongerThanMaxLength} = this.prepareSimpleNames(names);
-
- const {usedFullyQualifiedNames, namesWereTruncated} = this.prepareFqns(names);
-
- return {
- codeQuery: {
- simpleNames: simpleNames,
- fullyQualifiedNames: { used: Array.from(usedFullyQualifiedNames) }
- },
- namesWereTruncated: simpleNamesListWasLongerThanMaxLength || namesWereTruncated
- }
- }
-
- private prepareSimpleNames(names: any): { simpleNames: string[], simpleNamesListWasLongerThanMaxLength: boolean } {
- let simpleNames: string[] = names.simple.usedSymbols
- .concat(names.simple.declaredSymbols)
- .map((elem: any) => elem.symbol.trim())
- .filter((name: string) => name.length < 129 && name.length > 1);
-
- const maxSimpleNames = 100;
- let simpleNamesListWasLongerThanMaxLength = false;
-
- if (simpleNames.length > maxSimpleNames) {
- simpleNamesListWasLongerThanMaxLength = true
-
- simpleNames = [...new Set(simpleNames)]
-
- if (simpleNames.length > maxSimpleNames) {
- simpleNames = simpleNames.sort((a, b) => a.length - b.length)
- simpleNames.splice(0, simpleNames.length - maxSimpleNames)
- }
- }
-
- return {simpleNames, simpleNamesListWasLongerThanMaxLength}
- }
-
- private prepareFqns(names: any): {
- readonly usedFullyQualifiedNames: Set
- readonly namesWereTruncated: boolean
- } {
- const usedFullyQualifiedNames: Set = new Set(
- names.fullyQualified.usedSymbols.map((name: any) => ({ source: name.source, symbol: name.symbol }))
- )
-
- const maxUsedFullyQualifiedNamesLength = 25
-
- if (usedFullyQualifiedNames.size > maxUsedFullyQualifiedNamesLength) {
- const usedFullyQualifiedNamesSorted = Array.from(usedFullyQualifiedNames).sort(
- (name, other) => name.source.length + name.symbol.length - (other.source.length + other.symbol.length)
- )
- return {
- usedFullyQualifiedNames: new Set(
- usedFullyQualifiedNamesSorted.slice(0, maxUsedFullyQualifiedNamesLength)
- ),
- namesWereTruncated: true,
- }
- }
-
- return {
- usedFullyQualifiedNames,
- namesWereTruncated: false,
- }
- }
-
-}
diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/find-names.js b/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/find-names.js
deleted file mode 100644
index e14e589dab2..00000000000
--- a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/find-names.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-// SPDX-License-Identifier: Apache-2.0
-
-import { Java, Python, TypeScript, Tsx } from '@aws/fully-qualified-names'
-
-export async function findNames(inputCode, languageId) {
- const fqn = await import('@aws/fully-qualified-names')
- switch (languageId) {
- case 'java':
- return await fqn.Java.findNames(inputCode);
- case 'javascript':
- case 'javascriptreact':
- case 'typescriptreact':
- return await fqn.Tsx.findNames(inputCode);
- case 'python':
- return await fqn.Python.findNames(inputCode);
- case 'typescript':
- return await fqn.TypeScript.findNames(inputCode);
- default:
- return {}
- }
-}
-
-export class Selection {
- startLine;
- startColumn;
- endLine;
- endColumn;
-
-}
-
-
-export async function findNamesWithInExtent(fileText, languageId, startLine,startColumn, endLine, endColumn ){
- const fqn = await import('@aws/fully-qualified-names')
-
- const startLocation = new fqn.Location(startLine, startColumn)
- const endLocation = new fqn.Location(endLine, endColumn)
- const extent = new fqn.Extent(startLocation, endLocation)
-
- switch (languageId) {
- case 'java':
- return await fqn.Java.findNamesWithInExtent(fileText, extent)
- case 'javascript':
- case 'javascriptreact':
- case 'typescriptreact':
- return await fqn.Tsx.findNamesWithInExtent(fileText, extent)
- case 'python':
- return await fqn.Python.findNamesWithInExtent(fileText, extent)
- case 'typescript':
- return await fqn.TypeScript.findNamesWithInExtent(fileText, extent)
- default:
- return {}
- }
-}
diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/java-import-reader.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/java-import-reader.ts
deleted file mode 100644
index 8209a444db3..00000000000
--- a/plugins/amazonq/mynah-ui/src/mynah-ui/fqn/java-import-reader.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/*!
- * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-
-export interface JavaImport {
- tld: string
- organisation?: string
- packages?: string[]
-}
-
-export function extractContextFromJavaImports(names: any): string[] {
- return names.fullyQualified?.declaredSymbols
- .map((symbol: any): JavaImport => {
- const sourcesCount = symbol.source.length
- return {
- tld: symbol.source[0],
- organisation: sourcesCount > 1 ? symbol.source[1] : undefined,
- packages: sourcesCount > 2 ? symbol.source.slice(2) : undefined,
- }
- })
- .map((javaImport: JavaImport): string => {
- const importStatement = toString(javaImport)
- if (commonJavaImportsPrefixesRegex.test(importStatement)) {
- return ''
- } else if (importStatement.startsWith(awsJavaSdkV1Prefix)) {
- //@ts-ignore
- return javaImport.packages?.at(1) ?? ''
- } else if (importStatement.startsWith(awsJavaSdkV2Prefix)) {
- //@ts-ignore
- return javaImport.packages?.at(2) ?? ''
- } else {
- //@ts-ignore
- return javaImport.packages?.at(0) ?? javaImport.organisation ?? javaImport.tld
- }
- })
- .filter((context: string) => context !== '')
-}
-
-function toString(javaImport: JavaImport): string {
- let importSegments: string[] = []
- importSegments.push(javaImport.tld)
- if (javaImport.organisation !== undefined) {
- importSegments.push(javaImport.organisation)
- }
- if (javaImport.packages !== undefined) {
- importSegments = importSegments.concat(javaImport.packages)
- }
- return importSegments.join('.') + '.'
-}
-
-const commonJavaImportsPrefixesRegex = new RegExp(
- '^(java.|javax.|org.slf4j.|org.apache.log4j.|org.apache.logging.log4j.|org.junit.|org.testng.)'
-)
-
-const awsJavaSdkV1Prefix = 'com.amazonaws.services'
-
-const awsJavaSdkV2Prefix = 'software.amazon.awssdk.services'
diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/index.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/index.ts
deleted file mode 100644
index 1658ec7e5b8..00000000000
--- a/plugins/amazonq/mynah-ui/src/mynah-ui/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/*!
- * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-import { FqnExtractor } from "./fqn/extractor";
-
-export * from "./ui/main";
-
-declare global {
- interface Window { fqnExtractor: FqnExtractor; }
-}
-
-window.fqnExtractor = new FqnExtractor();
diff --git a/plugins/amazonq/mynah-ui/webpack.media.config.js b/plugins/amazonq/mynah-ui/webpack.media.config.js
index c11715ddf97..60bd564b664 100644
--- a/plugins/amazonq/mynah-ui/webpack.media.config.js
+++ b/plugins/amazonq/mynah-ui/webpack.media.config.js
@@ -3,60 +3,9 @@
'use strict';
const path = require('path');
-const CopyWebpackPlugin = require('copy-webpack-plugin');
/**@type {import('webpack').Configuration}*/
-const config = {
- plugins: [
- new CopyWebpackPlugin({
- patterns: [
- { from: './node_modules/web-tree-sitter/tree-sitter.wasm', to: ''}
- ]
- })
- ],
- target: 'web',
- entry: './src/mynah-ui/index.ts',
- output: {
- path: path.resolve(__dirname, 'build/assets/js'),
- filename: 'mynah-ui.js',
- library: 'mynahUI',
- libraryTarget: 'var',
- devtoolModuleFilenameTemplate: '../[resource-path]',
- },
- devtool: 'source-map',
- resolve: {
- extensions: ['.ts', '.js', '.wasm'],
- fallback: {
- fs: false,
- path: false,
- util: false
- }
- },
- experiments: { asyncWebAssembly: true },
- module: {
- rules: [
- {test: /\.(sa|sc|c)ss$/, use: ['style-loader', 'css-loader', 'sass-loader']},
- {
- test: /\.ts$/,
- exclude: /node_modules/,
- use: [
- {
- loader: 'ts-loader',
- },
- ],
- },
- ],
- },
-};
-
const connectorAdapter = {
- plugins: [
- new CopyWebpackPlugin({
- patterns: [
- { from: './node_modules/web-tree-sitter/tree-sitter.wasm', to: ''}
- ]
- })
- ],
target: 'web',
entry: './src/mynah-ui/connectorAdapter.ts',
output: {
@@ -73,7 +22,7 @@ const connectorAdapter = {
fs: false,
path: false,
util: false
- }
+ },
},
experiments: { asyncWebAssembly: true },
module: {
@@ -91,4 +40,5 @@ const connectorAdapter = {
],
},
};
-module.exports = [config, connectorAdapter];
+
+module.exports = [connectorAdapter];
diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts
index bb04cda998e..205c6806b86 100644
--- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts
+++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts
@@ -1,6 +1,7 @@
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
+import org.jetbrains.intellij.platform.gradle.models.Coordinates
import software.aws.toolkits.gradle.intellij.IdeFlavor
plugins {
@@ -14,6 +15,7 @@ intellijToolkit {
dependencies {
intellijPlatform {
localPlugin(project(":plugin-core"))
+ platformDependency(Coordinates(groupId = "com.jetbrains.intellij.rd", artifactId = "rd-platform"))
}
compileOnlyApi(project(":plugin-core:jetbrains-community"))
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
index 34a87e04737..9a211e8b7f6 100644
--- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
@@ -126,7 +126,13 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
}
override fun showMessage(messageParams: MessageParams) {
- notify(messageParams.type.toNotificationType(), message("q.window.title"), getCleanedContent(messageParams.message, true), project, emptyList())
+ notify(
+ messageParams.type.toNotificationType(),
+ message("toolwindow.stripe.amazon.q.window"),
+ getCleanedContent(messageParams.message, true),
+ project,
+ emptyList()
+ )
}
override fun showMessageRequest(requestParams: ShowMessageRequestParams): CompletableFuture {
@@ -137,7 +143,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
notify(
requestParams.type.toNotificationType(),
- message("q.window.title"),
+ message("toolwindow.stripe.amazon.q.window"),
getCleanedContent(requestParams.message, true),
project,
requestParams.actions.map { item ->
diff --git a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties
index 122ee65b787..991ca2e98d5 100644
--- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties
+++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties
@@ -1664,7 +1664,6 @@ q.sign.in=Get Started
q.ui.prompt.transform=/transform
q.unavailable=\ Amazon Q Chat is not supported in IDE versions <= v2024.2.1
q.unavailable.node=Please update to the latest IDE version
-q.window.title=Amazon Q Chat
rds.aurora=Aurora
rds.iam_config=Connect with IAM...
rds.iam_connection_display_name=AWS IAM
@@ -2118,5 +2117,6 @@ toolkit.sso_expire.dialog.no_button=Don't show again
toolkit.sso_expire.dialog.title=Connection Expired
toolkit.sso_expire.dialog.yes_button=Re-authenticate
toolkit.sso_expire.dialog_message=Your Amazon Q connection has expired. Please re-authenticate.
+toolwindow.stripe.amazon.q.window=Amazon Q Chat
toolwindow.stripe.aws.codewhisperer.codereference=Code Reference Log
toolwindow.stripe.aws.codewhisperer.codetransform=Transformation Hub