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