From ee4d96aa19aff79339068e6287d42a58ce03a02c Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 7 May 2024 13:13:57 -0700 Subject: [PATCH 01/71] Move remaining CodeWhisperer code into Q plugin --- .../chat/jetbrains-community/build.gradle.kts | 2 + .../jetbrains-community/build.gradle.kts | 2 + .../jetbrains-community/build.gradle.kts | 6 +- .../CodeWhispererCodeScanIntegrationTest.kt | 0 ...odeWhispererCodeScanJavaIntegrationTest.kt | 0 .../CodeWhispererCompletionIntegrationTest.kt | 0 .../CodeWhispererIntegrationTestBase.kt | 0 ...hispererReferenceTrackerIntegrationTest.kt | 0 .../jetbrains-community/src/Hello.kt | 15 - .../CodeWhispererModelConfigurator.kt | 0 .../CodeWhispererExplorerActionManager.kt | 0 .../actions/CodeWhispererActionPromoter.kt | 0 .../CodeWhispererConnectOnGithubAction.kt | 0 .../actions/CodeWhispererLearnMoreAction.kt | 2 +- .../CodeWhispererProvideFeedbackAction.kt | 0 .../CodeWhispererRecommendationAction.kt | 0 .../CodeWhispererShowSettingsAction.kt | 0 .../actions/CodeWhispererWhatIsAction.kt | 3 +- .../ConnectWithAwsToContinueActionWarn.kt | 0 .../CodeWhispererCodeScanException.kt | 0 ...WhispererCodeScanHighlightingFilesPanel.kt | 0 .../codescan/CodeWhispererCodeScanManager.kt | 0 .../CodeWhispererCodeScanResultsView.kt | 0 .../codescan/CodeWhispererCodeScanSession.kt | 0 .../CodeWhispererCodeScanTreeModel.kt | 0 .../actions/CodeWhispererCodeScanRunAction.kt | 0 .../CodeWhispererStopCodeScanAction.kt | 0 .../CodeWhispererCodeScanDocumentListener.kt | 0 ...spererCodeScanEditorMouseMotionListener.kt | 0 .../CodeWhispererCodeScanFileListener.kt | 0 .../CodeWhispererCodeScanTreeMouseListener.kt | 0 .../sessionconfig/CodeScanSessionConfig.kt | 0 .../credentials/CodeWhispererClientAdaptor.kt | 0 .../credentials/CodeWhispererLoginType.kt | 0 .../CodeWhispererCustomization.kt | 0 .../CodeWhispererCustomizationDialog.kt | 0 .../CodeWhispererCustomizationListener.kt | 0 .../CodeWhispererModelConfigurator.kt | 0 .../editor/CodeWhispererEditorListener.kt | 0 .../editor/CodeWhispererEditorManager.kt | 0 .../editor/CodeWhispererEditorUtil.kt | 0 .../editor/CodeWhispererEnterHandler.kt | 0 .../editor/CodeWhispererTypedHandler.kt | 0 .../CodeWhispererExplorerActionManager.kt | 0 .../explorer/QStatusBarLoggedInActionGroup.kt | 0 .../explorer/actions/ActionFactory.kt | 0 .../explorer/actions/Customize.kt | 0 .../codewhisperer/explorer/actions/Learn.kt | 0 .../explorer/actions/OpenCodeReference.kt | 0 .../codewhisperer/explorer/actions/Pause.kt | 0 .../explorer/actions/PauseCodeScans.kt | 0 .../codewhisperer/explorer/actions/Resume.kt | 0 .../explorer/actions/ResumeCodeScans.kt | 0 .../CodeWhispererFallbackImportAdder.kt | 0 .../importadder/CodeWhispererImportAdder.kt | 0 .../CodeWhispererImportAdderListener.kt | 0 .../CodeWhispererJavaImportAdder.kt | 0 .../CodeWhispererPythonImportAdder.kt | 0 .../inlay/CodeWhispererInlayBlockRenderer.kt | 0 .../inlay/CodeWhispererInlayInlineRenderer.kt | 0 .../inlay/CodeWhispererInlayManager.kt | 0 .../inlay/CodeWhispererInlayRenderer.kt | 0 .../language/CodeWhispererLanguageManager.kt | 0 .../CodeWhispererProgrammingLanguage.kt | 0 .../CodeWhispereJavaClassResolver.kt | 0 .../CodeWhispererClassResolver.kt | 0 .../CodeWhispererPythonClassResolver.kt | 0 .../language/languages/CodeWhispererC.kt | 0 .../language/languages/CodeWhispererCpp.kt | 0 .../language/languages/CodeWhispererCsharp.kt | 0 .../language/languages/CodeWhispererGo.kt | 0 .../language/languages/CodeWhispererJava.kt | 0 .../languages/CodeWhispererJavaScript.kt | 0 .../language/languages/CodeWhispererJson.kt | 0 .../language/languages/CodeWhispererJsx.kt | 0 .../language/languages/CodeWhispererKotlin.kt | 0 .../language/languages/CodeWhispererPhp.kt | 0 .../languages/CodeWhispererPlainText.kt | 0 .../language/languages/CodeWhispererPython.kt | 0 .../language/languages/CodeWhispererRuby.kt | 0 .../language/languages/CodeWhispererRust.kt | 0 .../language/languages/CodeWhispererScala.kt | 0 .../language/languages/CodeWhispererShell.kt | 0 .../language/languages/CodeWhispererSql.kt | 0 .../language/languages/CodeWhispererTf.kt | 0 .../language/languages/CodeWhispererTsx.kt | 0 .../languages/CodeWhispererTypeScript.kt | 0 .../languages/CodeWhispererUnknownLanguage.kt | 0 .../language/languages/CodeWhispererYaml.kt | 0 .../layout/CodeWhispererLayoutConfig.kt | 0 .../learn/LearnCodeWhispererEditor.kt | 0 .../learn/LearnCodeWhispererEditorProvider.kt | 0 .../learn/LearnCodeWhispererManager.kt | 0 .../learn/LearnCodeWhispererUIComponents.kt | 0 .../learn/LearnCodeWhispererVirtualFile.kt | 12 - .../codewhisperer/model/CodeWhispererModel.kt | 0 .../popup/CodeWhispererPopupComponents.kt | 0 .../popup/CodeWhispererPopupListener.kt | 0 .../popup/CodeWhispererPopupManager.kt | 0 .../popup/CodeWhispererUIChangeListener.kt | 0 .../CodeWhispererEditorActionHandler.kt | 0 .../CodeWhispererPopupBackspaceHandler.kt | 0 .../CodeWhispererPopupEnterHandler.kt | 0 .../CodeWhispererPopupLeftArrowHandler.kt | 0 .../CodeWhispererPopupRightArrowHandler.kt | 0 .../handlers/CodeWhispererPopupTabHandler.kt | 0 .../CodeWhispererPopupTypedHandler.kt | 0 ...CodeWhispererAcceptButtonActionListener.kt | 0 .../listeners/CodeWhispererActionListener.kt | 0 .../CodeWhispererNextButtonActionListener.kt | 0 .../CodeWhispererPrevButtonActionListener.kt | 0 .../listeners/CodeWhispererScrollListener.kt | 0 .../CodeWhispererAutoTriggerHandler.kt | 0 .../CodeWhispererAutoTriggerService.kt | 0 .../CodeWhispererAutomatedTriggerType.kt | 0 .../CodeWhispererClassifierConstants.kt | 0 .../CodeWhispererFeatureConfigService.kt | 0 .../service/CodeWhispererInvocationStatus.kt | 0 .../CodeWhispererLicenseInfoManager.kt | 0 .../CodeWhispererRecommendationManager.kt | 0 .../service/CodeWhispererService.kt | 0 .../service/CodeWhispererUserGroupSettings.kt | 0 .../settings/CodeWhispererConfigurable.kt | 0 .../settings/CodeWhispererSettings.kt | 0 ...hispererIntelliSenseAutoTriggerListener.kt | 0 .../CodeWhispererProjectStartupActivity.kt | 0 ...WhispererProjectStartupSettingsListener.kt | 0 .../status/CodeWhispererStatusBarWidget.kt | 0 .../CodeWhispererStatusBarWidgetFactory.kt | 0 .../CodeWhispererCodeCoverageTracker.kt | 0 .../CodeWhispererTelemetryService.kt | 0 .../CodeWhispererUserModificationTracker.kt | 4 - ...odeWhispererCodeReferenceActionListener.kt | 0 .../CodeWhispererCodeReferenceComponents.kt | 0 .../CodeWhispererCodeReferenceManager.kt | 0 ...WhispererCodeReferenceToolWindowFactory.kt | 0 .../services/codewhisperer/util/BM25.kt | 0 .../util/CodeWhispererColorUtil.kt | 0 .../util/CodeWhispererConstants.kt | 5 +- .../util/CodeWhispererEndpointCustomizer.kt | 0 .../util/CodeWhispererFileContextProvider.kt | 0 .../util/CodeWhispererFileCrawler.kt | 0 .../util/CodeWhispererMetadata.kt | 0 .../util/CodeWhispererSdkMapperUtil.kt | 0 .../codewhisperer/util/CodeWhispererUtil.kt | 0 .../util/JavaCodeWhispererFileCrawler.kt | 0 .../JavascriptCodeWhispererFileCrawler.kt | 0 .../util/PythonCodeWhispererFileCrawler.kt | 0 .../util/SupplementalContextStrategy.kt | 0 .../TypescriptCodeWhispererFileCrawler.kt | 0 .../services/codewhisperer/Bm25Test.kt | 0 .../codewhisperer/CodeWhispererAcceptTest.kt | 0 .../CodeWhispererActionNodeTest.kt | 0 .../codewhisperer/CodeWhispererActionTest.kt | 0 .../CodeWhispererBasicTestBase.kt | 0 .../CodeWhispererClientAdaptorTest.kt | 0 .../codewhisperer/CodeWhispererClientTest.kt | 0 .../CodeWhispererCodeCoverageTrackerTest.kt | 0 .../CodeWhispererConfigurableTest.kt | 0 .../CodeWhispererConstantsTest.kt | 0 .../CodeWhispererEditorUtilTest.kt | 0 .../CodeWhispererEndpointCustomizerTest.kt | 0 .../CodeWhispererExplorerActionManagerTest.kt | 0 .../CodeWhispererFeatureConfigServiceTest.kt | 0 .../CodeWhispererFileContextProviderTest.kt | 0 .../CodeWhispererFileCrawlerTest.kt | 0 .../CodeWhispererLanguageManagerTest.kt | 0 .../CodeWhispererLicenseInfoManagerTest.kt | 0 .../CodeWhispererModelConfiguratorTest.kt | 0 .../CodeWhispererNavigationTest.kt | 0 .../CodeWhispererRecommendationManagerTest.kt | 0 .../CodeWhispererReferenceManagerTest.kt | 0 .../CodeWhispererReferencesTest.kt | 0 .../CodeWhispererRightContextTest.kt | 0 .../CodeWhispererSdkMapperUtilTest.kt | 0 .../codewhisperer/CodeWhispererServiceTest.kt | 0 .../CodeWhispererSettingsTest.kt | 0 .../codewhisperer/CodeWhispererStateTest.kt | 0 .../CodeWhispererTelemetryServiceTest.kt | 0 .../CodeWhispererTelemetryTest.kt | 0 .../codewhisperer/CodeWhispererTestBase.kt | 0 .../codewhisperer/CodeWhispererTestUtil.kt | 0 .../CodeWhispererTypeaheadTest.kt | 0 .../CodeWhispererUserActionsTest.kt | 0 .../CodeWhispererUserGroupSettingsTest.kt | 0 .../CodeWhispererUserInputTest.kt | 0 .../codewhisperer/CodeWhispererUtilTest.kt | 0 .../codescan/CodeWhispererCodeFileScanTest.kt | 0 .../codescan/CodeWhispererCodeScanTest.kt | 0 .../codescan/CodeWhispererCodeScanTestBase.kt | 0 .../CodeWhispererProjectCodeScanTest.kt | 0 .../CodeWhispererFallbackImportAdderTest.kt | 0 .../CodeWhispererImportAdderTestBase.kt | 0 .../CodeWhispererJavaImportAdderTest.kt | 0 .../CodeWhispererPythonImportAdderTest.kt | 0 .../util/CodeWhispererUtilTest.kt | 0 .../importadder/CodeWhispererJSImportAdder.kt | 0 .../importadder/CodeWhispererJSImportUtil.kt | 0 .../CodeWhispererJSImportAdderTest.kt | 0 .../jetbrains-community/build.gradle.kts | 4 - .../amazonq/gettingstarted/QActionGroups.kt | 0 .../gettingstarted/QGettingStartedUtils.kt | 0 .../QGettingStartedVirtualFile.kt | 0 .../services/codewhisperer/learn/QFileType.kt | 17 + .../UserModificationTrackingEntry.kt | 10 + .../InsertedCodeModificationEntry.kt | 0 .../chat/telemetry/QTelemetryUtils.kt | 0 .../jetbrains/settings/MeetQSettings.kt | 0 .../feedback/CodeWhispererFeedbackDialog.kt | 0 .../ui/feedback/FeatureDevFeedbackDialog.kt | 0 plugins/core/build.gradle.kts | 8 +- .../{toolkit => core}/core/build.gradle.kts | 4 +- .../core/detekt-baseline-integrationTest.xml | 0 .../core/detekt-baseline-main.xml | 0 .../core/detekt-baseline-test.xml | 0 .../core/detekt-baseline.xml | 0 .../aws/toolkits/core/s3/BucketUtilsTest.kt | 0 .../aws/toolkits/core/ToolkitClientManager.kt | 0 .../core/clients/SdkClientProvider.kt | 0 .../core/region/ToolkitRegionProvider.kt | 0 .../aws/toolkits/core/ConnectionSettings.kt | 0 .../toolkits/core/ToolkitClientCustomizer.kt | 0 .../aws/toolkits/core/ToolkitClientManager.kt | 0 .../core/clients/ClientBuilderUtils.kt | 0 .../core/clients/SdkClientProvider.kt | 0 .../core/credentials/AwsCredentials.kt | 0 .../credentials/CredentialProviderFactory.kt | 0 .../credentials/CredentialsChangeEvent.kt | 0 .../core/credentials/SsoUrlIdentifier.kt | 0 .../credentials/ToolkitCredentialsProvider.kt | 0 .../ToolkitCredentialsProviderManager.kt | 0 .../core/lambda/LambdaArchitecture.kt | 0 .../aws/toolkits/core/lambda/LambdaRuntime.kt | 0 .../core/lambda/LambdaSampleEventProvider.kt | 0 .../aws/toolkits/core/lambda/LambdaUtils.kt | 0 .../aws/toolkits/core/region/AwsPartition.kt | 0 .../aws/toolkits/core/region/AwsRegion.kt | 0 .../aws/toolkits/core/region/Partitions.kt | 0 .../core/region/ToolkitRegionProvider.kt | 0 .../aws/toolkits/core/s3/BucketUtils.kt | 0 .../core/telemetry/CachedIdentityStorage.kt | 0 .../toolkits/core/telemetry/MetricEvent.kt | 0 .../core/telemetry/TelemetryBatcher.kt | 0 .../core/telemetry/TelemetryPublisher.kt | 0 .../aws/toolkits/core/utils/AttributeBag.kt | 0 .../toolkits/core/utils/CollectionUtils.kt | 0 .../aws/toolkits/core/utils/Either.kt | 0 .../aws/toolkits/core/utils/ExceptionUtils.kt | 0 .../aws/toolkits/core/utils/LogUtils.kt | 0 .../aws/toolkits/core/utils/PathUtils.kt | 0 .../core/utils/RemoteResourceResolver.kt | 0 .../aws/toolkits/core/utils/SensitiveField.kt | 0 .../aws/toolkits/core/utils/StringUtils.kt | 0 .../aws/toolkits/core/utils/TextUtils.kt | 0 .../aws/toolkits/core/utils/Waiter.kt | 0 .../aws/toolkits/core/utils/ZipUtils.kt | 0 .../core/tst-resources/jsonSampleFailure.json | 0 .../core/tst-resources/jsonSampleSuccess.json | 0 .../core/tst-resources/sampleLambdaEvent.json | 0 .../core/tst-resources/xmlSampleFailure.xml | 0 .../core/tst-resources/xmlSampleSuccess.xml | 0 .../AwsCredentialsExtensionsTest.kt | 0 .../aws/toolkits/core/credentials/Mocks.kt | 0 .../core/credentials/SsoUrlIdentifierTest.kt | 0 .../lambda/LambdaSampleEventProviderTest.kt | 0 .../core/parser/EndpointsJsonValidatorTest.kt | 0 .../parser/LambdaManifestValidatorTest.kt | 0 .../LambdaSampleEventJsonValidatorTest.kt | 0 .../aws/toolkits/core/region/AwsRegionTest.kt | 0 .../core/region/PartitionParserTest.kt | 0 .../core/rules/ECSTemporaryServiceRule.kt | 0 .../core/rules/EcrTemporaryRepositoryRule.kt | 0 .../core/rules/EnvironmentVariableHelper.kt | 0 .../core/rules/S3TemporaryBucketRule.kt | 0 .../core/rules/SystemPropertyHelper.kt | 0 .../core/telemetry/TelemetryBatcherTest.kt | 0 .../core/utils/CollectionUtilsTest.kt | 0 .../core/utils/CompletionStageUtils.kt | 0 .../core/utils/DelegateSdkConsumers.kt | 0 .../aws/toolkits/core/utils/EitherTest.kt | 0 .../toolkits/core/utils/ExceptionUtilsTest.kt | 0 .../core/utils/IntegrationTestCredentials.kt | 0 .../aws/toolkits/core/utils/LogUtilsTest.kt | 0 .../core/utils/RemoteResourceResolverTest.kt | 0 .../aws/toolkits/core/utils/RuleUtils.kt | 0 .../aws/toolkits/core/utils/RuleUtilsTest.kt | 0 .../aws/toolkits/core/utils/ZipUtilsTest.kt | 0 .../core/utils/test/AssertJAsserts.kt | 0 .../aws/toolkits/core/utils/test/TestUtils.kt | 0 .../toolkits/core/utils/test/TestUtilsTest.kt | 0 .../core/jetbrains-community/build.gradle.kts | 22 +- .../resources/MessagesBundle.properties | 1885 +++++++++++++++++ .../aws/toolkits/jetbrains/ToolkitPlaces.kt | 2 +- .../credentials/actions/SsoLogoutAction.kt | 7 +- .../gettingstarted/GettingStartedAuthUtils.kt | 244 +++ .../core/gettingstarted/IdcRolePopup.kt | 0 .../SetupAuthenticationDialog.kt | 30 +- .../editor/GettingStartedPanelUtils.kt | 30 +- .../editor/GettingStartedTelemetryUtils.kt | 4 +- .../jetbrains/services/amazonq/QConstants.kt | 9 + .../toolkits/jetbrains/ui/AsyncComboBox.kt | 2 +- .../jetbrains/ui/KeyValueTextField.kt | 0 .../jetbrains/ui/feedback/FeedbackDialog.kt | 30 +- .../aws/toolkits/jetbrains/utils/PsiUtils.kt | 0 .../jetbrains/utils/RemoteEnvUtils.kt | 5 +- .../aws/toolkits/jetbrains/utils/TextUtils.kt | 0 .../utils/ui/ResizingColumnRenderer.kt | 0 .../toolkits/jetbrains/utils/ui/UiUtils.kt | 0 .../resources/build.gradle.kts | 0 .../resources/MessagesBundle.properties | 0 .../toolkits/resources/BundledResources.kt | 0 .../aws/toolkits/resources/Localization.kt | 0 .../resources/BundledResourcesTest.kt | 0 .../codegen-resources/ssooidc/service-2.json | 8 +- .../toolkit/jetbrains-core/build.gradle.kts | 52 +- .../actions/CredentialsHelpAction.kt | 4 +- .../gettingstarted/GettingStartedAuthUtils.kt | 276 +-- .../gettingstarted/GettingStartedOnStartup.kt | 1 + .../core/gettingstarted/ToolkitAuthUtils.kt | 52 + .../editor/GettingStartedPanel.kt | 3 +- .../core/startup/QMigrationActivity.kt | 4 +- .../explorer/nodes/CodeWhispererActionNode.kt | 22 - .../nodes/CodeWhispererReconnectNode.kt | 23 - .../explorer/nodes/CustomizationNode.kt | 42 - .../nodes/FreeTierUsageLimitHitNode.kt | 18 - .../explorer/nodes/GetStartedNode.kt | 59 - .../explorer/nodes/LearnCodeWhispererNode.kt | 23 - .../explorer/nodes/OpenCodeReferenceNode.kt | 21 - .../explorer/nodes/PauseCodeScanNode.kt | 22 - .../explorer/nodes/PauseCodeWhispererNode.kt | 21 - .../explorer/nodes/ResumeCodeScanNode.kt | 31 - .../explorer/nodes/ResumeCodeWhispererNode.kt | 21 - .../explorer/nodes/WhatIsCodeWhispererNode.kt | 25 - .../jetbrains/ui/feedback/Constants.kt | 7 - .../ui/feedback/ToolkitFeedbackDialog.kt | 41 + .../jetbrains-gateway/build.gradle.kts | 2 +- .../AWS.Localization/AWS.Localization.csproj | 2 +- .../jetbrains-ultimate/build.gradle.kts | 3 +- plugins/toolkit/toolbox/build.gradle.kts | 69 + ui-tests/build.gradle.kts | 5 +- 340 files changed, 2407 insertions(+), 814 deletions(-) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanIntegrationTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanJavaIntegrationTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCompletionIntegrationTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererIntegrationTestBase.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceTrackerIntegrationTest.kt (100%) delete mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/src/Hello.kt rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererConnectOnGithubAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt (87%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererProvideFeedbackAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererShowSettingsAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt (90%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/ConnectWithAwsToContinueActionWarn.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanHighlightingFilesPanel.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanResultsView.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTreeModel.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererCodeScanRunAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererStopCodeScanAction.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanDocumentListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanFileListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanTreeMouseListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/sessionconfig/CodeScanSessionConfig.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererLoginType.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomization.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationDialog.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEnterHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererTypedHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/QStatusBarLoggedInActionGroup.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ActionFactory.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Customize.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Learn.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/OpenCodeReference.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Pause.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/PauseCodeScans.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Resume.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ResumeCodeScans.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdder.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdder.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdder.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdder.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayBlockRenderer.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayInlineRenderer.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayRenderer.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererProgrammingLanguage.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispereJavaClassResolver.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererClassResolver.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererPythonClassResolver.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererC.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCpp.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCsharp.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererGo.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJava.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJavaScript.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJson.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJsx.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererKotlin.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPhp.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPlainText.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPython.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRuby.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRust.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererScala.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererShell.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererSql.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTf.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTsx.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTypeScript.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererUnknownLanguage.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererYaml.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/layout/CodeWhispererLayoutConfig.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditorProvider.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt (72%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererUIChangeListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererEditorActionHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupBackspaceHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupEnterHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupLeftArrowHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupRightArrowHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTabHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTypedHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererAcceptButtonActionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererActionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererNextButtonActionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererPrevButtonActionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererScrollListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerHandler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerService.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutomatedTriggerType.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererClassifierConstants.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererFeatureConfigService.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererInvocationStatus.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererLicenseInfoManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererRecommendationManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererUserGroupSettings.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererSettings.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererIntelliSenseAutoTriggerListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupActivity.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupSettingsListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidgetFactory.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt (99%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceActionListener.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceComponents.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceManager.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceToolWindowFactory.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/BM25.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererColorUtil.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt (97%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererEndpointCustomizer.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererMetadata.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererSdkMapperUtil.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtil.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/SupplementalContextStrategy.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/Bm25Test.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererAcceptTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererBasicTestBase.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeCoverageTrackerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConfigurableTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConstantsTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEditorUtilTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEndpointCustomizerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererExplorerActionManagerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFeatureConfigServiceTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLanguageManagerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLicenseInfoManagerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererModelConfiguratorTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererNavigationTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRecommendationManagerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceManagerTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferencesTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRightContextTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSdkMapperUtilTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererStateTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryServiceTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestUtil.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTypeaheadTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserActionsTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserGroupSettingsTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserInputTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUtilTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeFileScanTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTestBase.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererProjectCodeScanTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdderTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdderTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdderTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/tst/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtilTest.kt (100%) rename plugins/{toolkit => amazonq/codewhisperer}/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdder.kt (100%) rename plugins/{toolkit => amazonq/codewhisperer}/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportUtil.kt (100%) rename plugins/{toolkit => amazonq/codewhisperer}/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdderTest.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QActionGroups.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedUtils.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedVirtualFile.kt (100%) create mode 100644 plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/QFileType.kt create mode 100644 plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/UserModificationTrackingEntry.kt rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/InsertedCodeModificationEntry.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/QTelemetryUtils.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/ui/feedback/CodeWhispererFeedbackDialog.kt (100%) rename plugins/{toolkit/jetbrains-core => amazonq/shared/jetbrains-community}/src/software/aws/toolkits/jetbrains/ui/feedback/FeatureDevFeedbackDialog.kt (100%) rename plugins/{toolkit => core}/core/build.gradle.kts (84%) rename plugins/{toolkit => core}/core/detekt-baseline-integrationTest.xml (100%) rename plugins/{toolkit => core}/core/detekt-baseline-main.xml (100%) rename plugins/{toolkit => core}/core/detekt-baseline-test.xml (100%) rename plugins/{toolkit => core}/core/detekt-baseline.xml (100%) rename plugins/{toolkit => core}/core/it/software/aws/toolkits/core/s3/BucketUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt (100%) rename plugins/{toolkit => core}/core/src/migration/software/aws/toolkits/core/clients/SdkClientProvider.kt (100%) rename plugins/{toolkit => core}/core/src/migration/software/aws/toolkits/core/region/ToolkitRegionProvider.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/ConnectionSettings.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/ToolkitClientCustomizer.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/ToolkitClientManager.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/clients/ClientBuilderUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/clients/SdkClientProvider.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/AwsCredentials.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/CredentialProviderFactory.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/CredentialsChangeEvent.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/SsoUrlIdentifier.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProvider.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProviderManager.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/lambda/LambdaArchitecture.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/lambda/LambdaUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/region/AwsPartition.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/region/AwsRegion.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/region/Partitions.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/region/ToolkitRegionProvider.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/s3/BucketUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/telemetry/CachedIdentityStorage.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/telemetry/MetricEvent.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/telemetry/TelemetryBatcher.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/telemetry/TelemetryPublisher.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/AttributeBag.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/CollectionUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/Either.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/ExceptionUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/LogUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/PathUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/RemoteResourceResolver.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/SensitiveField.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/StringUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/TextUtils.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/Waiter.kt (100%) rename plugins/{toolkit => core}/core/src/software/aws/toolkits/core/utils/ZipUtils.kt (100%) rename plugins/{toolkit => core}/core/tst-resources/jsonSampleFailure.json (100%) rename plugins/{toolkit => core}/core/tst-resources/jsonSampleSuccess.json (100%) rename plugins/{toolkit => core}/core/tst-resources/sampleLambdaEvent.json (100%) rename plugins/{toolkit => core}/core/tst-resources/xmlSampleFailure.xml (100%) rename plugins/{toolkit => core}/core/tst-resources/xmlSampleSuccess.xml (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/credentials/AwsCredentialsExtensionsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/credentials/Mocks.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/credentials/SsoUrlIdentifierTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/lambda/LambdaSampleEventProviderTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/parser/EndpointsJsonValidatorTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/parser/LambdaManifestValidatorTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/parser/LambdaSampleEventJsonValidatorTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/region/AwsRegionTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/region/PartitionParserTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/rules/ECSTemporaryServiceRule.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/rules/EcrTemporaryRepositoryRule.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/rules/EnvironmentVariableHelper.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/rules/S3TemporaryBucketRule.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/rules/SystemPropertyHelper.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/telemetry/TelemetryBatcherTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/CollectionUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/CompletionStageUtils.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/DelegateSdkConsumers.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/EitherTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/ExceptionUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/IntegrationTestCredentials.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/LogUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/RemoteResourceResolverTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/RuleUtils.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/RuleUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/ZipUtilsTest.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/test/TestUtils.kt (100%) rename plugins/{toolkit => core}/core/tst/software/aws/toolkits/core/utils/test/TestUtilsTest.kt (100%) create mode 100644 plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt (87%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt (83%) create mode 100644 plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopup.kt (100%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt (96%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt (89%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt (95%) create mode 100644 plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QConstants.kt rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt (99%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/ui/KeyValueTextField.kt (100%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt (89%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/utils/PsiUtils.kt (100%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt (80%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt (100%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/utils/ui/ResizingColumnRenderer.kt (100%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt (100%) rename plugins/{toolkit => core}/resources/build.gradle.kts (100%) rename plugins/{toolkit => core}/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties (100%) rename plugins/{toolkit => core}/resources/src/software/aws/toolkits/resources/BundledResources.kt (100%) rename plugins/{toolkit => core}/resources/src/software/aws/toolkits/resources/Localization.kt (100%) rename plugins/{toolkit => core}/resources/tst/software/aws/toolkits/resources/BundledResourcesTest.kt (100%) create mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitAuthUtils.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererActionNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererReconnectNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CustomizationNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/FreeTierUsageLimitHitNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/GetStartedNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/LearnCodeWhispererNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/OpenCodeReferenceNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeScanNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeWhispererNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeScanNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeWhispererNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/WhatIsCodeWhispererNode.kt delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/Constants.kt create mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/ToolkitFeedbackDialog.kt create mode 100644 plugins/toolkit/toolbox/build.gradle.kts diff --git a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts index 5c35fa1362d..ee03943c631 100644 --- a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts @@ -17,6 +17,8 @@ intellij { dependencies { implementation(project(":plugin-amazonq:shared:jetbrains-community")) + // everything references codewhisperer, which is not ideal + implementation(project(":plugin-amazonq:codewhisperer:jetbrains-community")) compileOnly(project(":plugin-core:jetbrains-community")) diff --git a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts index adb471ab308..af259791b04 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts @@ -19,6 +19,8 @@ dependencies { implementation(project(":plugin-amazonq:shared:jetbrains-community")) // hack because transform has a chat entrypoint implementation(project(":plugin-amazonq:chat:jetbrains-community")) + // hack because everything references codewhisperer + implementation(project(":plugin-amazonq:codewhisperer:jetbrains-community")) compileOnly(project(":plugin-core:jetbrains-community")) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index f79946fafbb..3c0a4b6f050 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -12,7 +12,9 @@ intellijToolkit { } dependencies { - implementation(project(":plugin-amazonq:shared:jetbrains-community")) - compileOnly(project(":plugin-core:jetbrains-community")) + + implementation(project(":plugin-amazonq:shared:jetbrains-community")) + // CodeWhispererTelemetryService uses a CircularFifoQueue, previously transitive from zjsonpatch + implementation(libs.commons.collections) } diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanIntegrationTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanIntegrationTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanIntegrationTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanIntegrationTest.kt diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanJavaIntegrationTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanJavaIntegrationTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanJavaIntegrationTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeScanJavaIntegrationTest.kt diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCompletionIntegrationTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCompletionIntegrationTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCompletionIntegrationTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCompletionIntegrationTest.kt diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererIntegrationTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererIntegrationTestBase.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererIntegrationTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererIntegrationTestBase.kt diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceTrackerIntegrationTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceTrackerIntegrationTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceTrackerIntegrationTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/it/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceTrackerIntegrationTest.kt diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/Hello.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/Hello.kt deleted file mode 100644 index 2138f4845ba..00000000000 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/Hello.kt +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.project.DumbAware -import com.intellij.openapi.ui.MessageDialogBuilder -import software.aws.toolkits.resources.AmazonQBundle - -class Hello : AnAction(AmazonQBundle.message("q.hello")), DumbAware { - override fun actionPerformed(e: AnActionEvent) { - MessageDialogBuilder.okCancel("title", AmazonQBundle.message("q.hello")) - .ask(e.project) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt diff --git a/plugins/toolkit/jetbrains-core/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/migration/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererConnectOnGithubAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererConnectOnGithubAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererConnectOnGithubAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererConnectOnGithubAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt similarity index 87% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt index f075c6812ea..f359a646f54 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererLearnMoreAction.kt @@ -8,7 +8,7 @@ import com.intellij.ide.BrowserUtil import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.DumbAware -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.Q_MARKETPLACE_URI +import software.aws.toolkits.jetbrains.services.amazonq.QConstants.Q_MARKETPLACE_URI import software.aws.toolkits.resources.message import java.net.URI diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererProvideFeedbackAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererProvideFeedbackAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererProvideFeedbackAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererProvideFeedbackAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererShowSettingsAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererShowSettingsAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererShowSettingsAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererShowSettingsAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt similarity index 90% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt index 8cbedcbd541..cb00ef84a1b 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.DumbAware +import software.aws.toolkits.jetbrains.services.amazonq.QConstants import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants import software.aws.toolkits.resources.message @@ -30,6 +31,6 @@ class CodeWhispererWhatIsAction : } override fun actionPerformed(e: AnActionEvent) { - BrowserUtil.browse(URI(CodeWhispererConstants.Q_MARKETPLACE_URI)) + BrowserUtil.browse(URI(QConstants.Q_MARKETPLACE_URI)) } } diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/ConnectWithAwsToContinueActionWarn.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/ConnectWithAwsToContinueActionWarn.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/ConnectWithAwsToContinueActionWarn.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/ConnectWithAwsToContinueActionWarn.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanHighlightingFilesPanel.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanHighlightingFilesPanel.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanHighlightingFilesPanel.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanHighlightingFilesPanel.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanResultsView.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanResultsView.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanResultsView.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanResultsView.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTreeModel.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTreeModel.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTreeModel.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTreeModel.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererCodeScanRunAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererCodeScanRunAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererCodeScanRunAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererCodeScanRunAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererStopCodeScanAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererStopCodeScanAction.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererStopCodeScanAction.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/actions/CodeWhispererStopCodeScanAction.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanDocumentListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanDocumentListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanDocumentListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanDocumentListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanFileListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanFileListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanFileListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanFileListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanTreeMouseListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanTreeMouseListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanTreeMouseListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanTreeMouseListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/sessionconfig/CodeScanSessionConfig.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/sessionconfig/CodeScanSessionConfig.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/sessionconfig/CodeScanSessionConfig.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/sessionconfig/CodeScanSessionConfig.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererLoginType.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererLoginType.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererLoginType.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererLoginType.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomization.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomization.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomization.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomization.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationDialog.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationDialog.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationDialog.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationDialog.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererCustomizationListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/customization/CodeWhispererModelConfigurator.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEnterHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEnterHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEnterHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEnterHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererTypedHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererTypedHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererTypedHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererTypedHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/CodeWhispererExplorerActionManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/QStatusBarLoggedInActionGroup.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/QStatusBarLoggedInActionGroup.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/QStatusBarLoggedInActionGroup.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/QStatusBarLoggedInActionGroup.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ActionFactory.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ActionFactory.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ActionFactory.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ActionFactory.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Customize.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Customize.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Customize.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Customize.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Learn.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Learn.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Learn.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Learn.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/OpenCodeReference.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/OpenCodeReference.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/OpenCodeReference.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/OpenCodeReference.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Pause.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Pause.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Pause.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Pause.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/PauseCodeScans.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/PauseCodeScans.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/PauseCodeScans.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/PauseCodeScans.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Resume.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Resume.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Resume.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/Resume.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ResumeCodeScans.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ResumeCodeScans.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ResumeCodeScans.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/actions/ResumeCodeScans.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdder.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdder.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdder.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdder.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdder.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdder.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdder.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdder.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdder.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdder.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdder.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdder.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdder.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdder.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdder.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdder.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayBlockRenderer.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayBlockRenderer.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayBlockRenderer.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayBlockRenderer.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayInlineRenderer.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayInlineRenderer.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayInlineRenderer.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayInlineRenderer.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayRenderer.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayRenderer.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayRenderer.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/inlay/CodeWhispererInlayRenderer.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererProgrammingLanguage.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererProgrammingLanguage.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererProgrammingLanguage.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererProgrammingLanguage.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispereJavaClassResolver.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispereJavaClassResolver.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispereJavaClassResolver.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispereJavaClassResolver.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererClassResolver.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererClassResolver.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererClassResolver.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererClassResolver.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererPythonClassResolver.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererPythonClassResolver.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererPythonClassResolver.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/classresolver/CodeWhispererPythonClassResolver.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererC.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererC.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererC.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererC.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCpp.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCpp.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCpp.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCpp.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCsharp.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCsharp.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCsharp.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererCsharp.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererGo.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererGo.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererGo.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererGo.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJava.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJava.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJava.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJava.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJavaScript.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJavaScript.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJavaScript.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJavaScript.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJson.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJson.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJson.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJson.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJsx.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJsx.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJsx.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererJsx.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererKotlin.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererKotlin.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererKotlin.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererKotlin.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPhp.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPhp.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPhp.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPhp.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPlainText.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPlainText.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPlainText.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPlainText.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPython.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPython.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPython.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererPython.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRuby.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRuby.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRuby.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRuby.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRust.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRust.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRust.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererRust.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererScala.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererScala.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererScala.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererScala.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererShell.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererShell.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererShell.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererShell.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererSql.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererSql.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererSql.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererSql.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTf.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTf.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTf.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTf.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTsx.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTsx.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTsx.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTsx.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTypeScript.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTypeScript.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTypeScript.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererTypeScript.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererUnknownLanguage.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererUnknownLanguage.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererUnknownLanguage.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererUnknownLanguage.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererYaml.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererYaml.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererYaml.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/languages/CodeWhispererYaml.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/layout/CodeWhispererLayoutConfig.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/layout/CodeWhispererLayoutConfig.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/layout/CodeWhispererLayoutConfig.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/layout/CodeWhispererLayoutConfig.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditorProvider.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditorProvider.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditorProvider.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditorProvider.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt similarity index 72% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt index b3713448c62..00566800911 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt @@ -3,9 +3,7 @@ package software.aws.toolkits.jetbrains.services.codewhisperer.learn -import com.intellij.openapi.fileTypes.FileType import com.intellij.testFramework.LightVirtualFile -import icons.AwsIcons /** * Light virtual file to represent a Learn CodeWhisperer tutorial file, used to open the custom editor @@ -24,13 +22,3 @@ class LearnCodeWhispererVirtualFile : LightVirtualFile("Examples: Amazon Q inlin override fun getFileType() = QFileType() } - -class QFileType : FileType { - override fun getName() = "Learn Q Inline Suggestions" - override fun getDescription() = "Learn Q inline suggestions" - - override fun getDefaultExtension() = "" - override fun getIcon() = AwsIcons.Logos.AWS_Q_GRADIENT_SMALL - - override fun isBinary() = false -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererUIChangeListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererUIChangeListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererUIChangeListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererUIChangeListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererEditorActionHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererEditorActionHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererEditorActionHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererEditorActionHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupBackspaceHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupBackspaceHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupBackspaceHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupBackspaceHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupEnterHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupEnterHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupEnterHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupEnterHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupLeftArrowHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupLeftArrowHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupLeftArrowHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupLeftArrowHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupRightArrowHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupRightArrowHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupRightArrowHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupRightArrowHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTabHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTabHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTabHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTabHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTypedHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTypedHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTypedHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/handlers/CodeWhispererPopupTypedHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererAcceptButtonActionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererAcceptButtonActionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererAcceptButtonActionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererAcceptButtonActionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererActionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererActionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererActionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererActionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererNextButtonActionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererNextButtonActionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererNextButtonActionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererNextButtonActionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererPrevButtonActionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererPrevButtonActionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererPrevButtonActionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererPrevButtonActionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererScrollListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererScrollListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererScrollListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/listeners/CodeWhispererScrollListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerHandler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerHandler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerHandler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerHandler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerService.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerService.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerService.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutoTriggerService.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutomatedTriggerType.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutomatedTriggerType.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutomatedTriggerType.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererAutomatedTriggerType.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererClassifierConstants.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererClassifierConstants.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererClassifierConstants.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererClassifierConstants.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererFeatureConfigService.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererFeatureConfigService.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererFeatureConfigService.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererFeatureConfigService.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererInvocationStatus.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererInvocationStatus.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererInvocationStatus.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererInvocationStatus.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererLicenseInfoManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererLicenseInfoManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererLicenseInfoManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererLicenseInfoManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererRecommendationManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererRecommendationManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererRecommendationManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererRecommendationManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererUserGroupSettings.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererUserGroupSettings.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererUserGroupSettings.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererUserGroupSettings.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererSettings.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererSettings.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererSettings.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererSettings.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererIntelliSenseAutoTriggerListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererIntelliSenseAutoTriggerListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererIntelliSenseAutoTriggerListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererIntelliSenseAutoTriggerListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupActivity.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupActivity.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupActivity.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupActivity.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupSettingsListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupSettingsListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupSettingsListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/startup/CodeWhispererProjectStartupSettingsListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidgetFactory.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidgetFactory.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidgetFactory.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidgetFactory.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt similarity index 99% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt index 6e0c1c3eec4..64e30836234 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererUserModificationTracker.kt @@ -36,10 +36,6 @@ import java.util.concurrent.LinkedBlockingDeque import java.util.concurrent.atomic.AtomicBoolean import kotlin.math.min -interface UserModificationTrackingEntry { - val time: Instant -} - data class AcceptedSuggestionEntry( override val time: Instant, val vFile: VirtualFile?, diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceActionListener.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceActionListener.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceActionListener.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceActionListener.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceComponents.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceComponents.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceComponents.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceComponents.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceManager.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceManager.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceManager.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceToolWindowFactory.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceToolWindowFactory.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceToolWindowFactory.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/toolwindow/CodeWhispererCodeReferenceToolWindowFactory.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/BM25.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/BM25.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/BM25.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/BM25.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererColorUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererColorUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererColorUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererColorUtil.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt similarity index 97% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt index 4c170e78c7b..5d6548fd2f9 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.services.codewhisperer.util @@ -39,9 +39,6 @@ object CodeWhispererConstants { // avoid ThrottlingException as much as possible. const val INVOCATION_INTERVAL: Long = 2050 - const val Q_MARKETPLACE_URI = "https://aws.amazon.com/q/developer/" - - const val CODEWHISPERER_LOGIN_HELP_URI = "https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/auth-access.html" const val Q_CUSTOM_LEARN_MORE_URI = "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/customizations.html" const val Q_SUPPORTED_LANG_URI = "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-language-ide-support.html" const val CODEWHISPERER_CODE_SCAN_LEARN_MORE_URI = "https://docs.aws.amazon.com/codewhisperer/latest/userguide/security-scans.html" diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererEndpointCustomizer.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererEndpointCustomizer.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererEndpointCustomizer.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererEndpointCustomizer.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileContextProvider.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererMetadata.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererMetadata.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererMetadata.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererMetadata.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererSdkMapperUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererSdkMapperUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererSdkMapperUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererSdkMapperUtil.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtil.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavaCodeWhispererFileCrawler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/JavascriptCodeWhispererFileCrawler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/PythonCodeWhispererFileCrawler.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/SupplementalContextStrategy.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/SupplementalContextStrategy.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/SupplementalContextStrategy.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/SupplementalContextStrategy.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/TypescriptCodeWhispererFileCrawler.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/Bm25Test.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/Bm25Test.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/Bm25Test.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/Bm25Test.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererAcceptTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererAcceptTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererAcceptTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererAcceptTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererBasicTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererBasicTestBase.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererBasicTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererBasicTestBase.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeCoverageTrackerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeCoverageTrackerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeCoverageTrackerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererCodeCoverageTrackerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConfigurableTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConfigurableTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConfigurableTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConfigurableTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConstantsTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConstantsTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConstantsTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererConstantsTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEditorUtilTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEditorUtilTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEditorUtilTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEditorUtilTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEndpointCustomizerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEndpointCustomizerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEndpointCustomizerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererEndpointCustomizerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererExplorerActionManagerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererExplorerActionManagerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererExplorerActionManagerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererExplorerActionManagerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFeatureConfigServiceTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFeatureConfigServiceTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFeatureConfigServiceTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFeatureConfigServiceTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileCrawlerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLanguageManagerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLanguageManagerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLanguageManagerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLanguageManagerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLicenseInfoManagerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLicenseInfoManagerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLicenseInfoManagerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererLicenseInfoManagerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererModelConfiguratorTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererModelConfiguratorTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererModelConfiguratorTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererModelConfiguratorTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererNavigationTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererNavigationTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererNavigationTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererNavigationTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRecommendationManagerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRecommendationManagerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRecommendationManagerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRecommendationManagerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceManagerTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceManagerTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceManagerTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferenceManagerTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferencesTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferencesTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferencesTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererReferencesTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRightContextTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRightContextTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRightContextTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererRightContextTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSdkMapperUtilTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSdkMapperUtilTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSdkMapperUtilTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSdkMapperUtilTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererStateTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererStateTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererStateTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererStateTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryServiceTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryServiceTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryServiceTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryServiceTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestUtil.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTypeaheadTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTypeaheadTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTypeaheadTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTypeaheadTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserActionsTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserActionsTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserActionsTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserActionsTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserGroupSettingsTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserGroupSettingsTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserGroupSettingsTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserGroupSettingsTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserInputTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserInputTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserInputTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUserInputTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUtilTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUtilTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUtilTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererUtilTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeFileScanTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeFileScanTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeFileScanTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeFileScanTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTestBase.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTestBase.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererProjectCodeScanTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererProjectCodeScanTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererProjectCodeScanTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererProjectCodeScanTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdderTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdderTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdderTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererFallbackImportAdderTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdderTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdderTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdderTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJavaImportAdderTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdderTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdderTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdderTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererPythonImportAdderTest.kt diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtilTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtilTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtilTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererUtilTest.kt diff --git a/plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdder.kt b/plugins/amazonq/codewhisperer/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdder.kt similarity index 100% rename from plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdder.kt rename to plugins/amazonq/codewhisperer/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdder.kt diff --git a/plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportUtil.kt b/plugins/amazonq/codewhisperer/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportUtil.kt similarity index 100% rename from plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportUtil.kt rename to plugins/amazonq/codewhisperer/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportUtil.kt diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdderTest.kt b/plugins/amazonq/codewhisperer/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdderTest.kt similarity index 100% rename from plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdderTest.kt rename to plugins/amazonq/codewhisperer/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererJSImportAdderTest.kt diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts index b1e5fbfe772..10e8e5b7bc9 100644 --- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts @@ -19,10 +19,6 @@ intellij { dependencies { compileOnly(project(":plugin-core:jetbrains-community")) - // delete when fully split - compileOnlyApi(project(":plugin-toolkit:jetbrains-core")) - runtimeOnly(project(":plugin-toolkit:jetbrains-core", "jarNoPluginXmlArtifacts")) - // CodeWhispererTelemetryService uses a CircularFifoQueue implementation(libs.commons.collections) } diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QActionGroups.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QActionGroups.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QActionGroups.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QActionGroups.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedUtils.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedUtils.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedUtils.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedVirtualFile.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedVirtualFile.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedVirtualFile.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/gettingstarted/QGettingStartedVirtualFile.kt diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/QFileType.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/QFileType.kt new file mode 100644 index 00000000000..19cf0f99584 --- /dev/null +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/QFileType.kt @@ -0,0 +1,17 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.codewhisperer.learn + +import com.intellij.openapi.fileTypes.FileType +import icons.AwsIcons + +class QFileType : FileType { + override fun getName() = "Learn Q Inline Suggestions" + override fun getDescription() = "Learn Q inline suggestions" + + override fun getDefaultExtension() = "" + override fun getIcon() = AwsIcons.Logos.AWS_Q_GRADIENT_SMALL + + override fun isBinary() = false +} diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/UserModificationTrackingEntry.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/UserModificationTrackingEntry.kt new file mode 100644 index 00000000000..d02465ba3ea --- /dev/null +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/UserModificationTrackingEntry.kt @@ -0,0 +1,10 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.codewhisperer.telemetry + +import java.time.Instant + +interface UserModificationTrackingEntry { + val time: Instant +} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/InsertedCodeModificationEntry.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/InsertedCodeModificationEntry.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/InsertedCodeModificationEntry.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/InsertedCodeModificationEntry.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/QTelemetryUtils.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/QTelemetryUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/QTelemetryUtils.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/QTelemetryUtils.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/CodeWhispererFeedbackDialog.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/CodeWhispererFeedbackDialog.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/CodeWhispererFeedbackDialog.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/CodeWhispererFeedbackDialog.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeatureDevFeedbackDialog.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeatureDevFeedbackDialog.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeatureDevFeedbackDialog.kt rename to plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeatureDevFeedbackDialog.kt diff --git a/plugins/core/build.gradle.kts b/plugins/core/build.gradle.kts index ce46da49180..f46675d9375 100644 --- a/plugins/core/build.gradle.kts +++ b/plugins/core/build.gradle.kts @@ -5,14 +5,17 @@ import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions plugins { + id("java-library") id("toolkit-publishing-conventions") id("toolkit-patch-plugin-xml-conventions") id("toolkit-jvm-conventions") } dependencies { - implementation(project(":plugin-core:sdk-codegen")) - implementation(project(":plugin-core:jetbrains-community")) + api(project(":plugin-core:core")) + api(project(":plugin-core:sdk-codegen")) + api(project(":plugin-core:jetbrains-community")) + implementation(project(":plugin-core:resources")) implementation(project(":plugin-core:jetbrains-ultimate")) implementation(project(":plugin-core:webview")) } @@ -22,5 +25,4 @@ tasks.check { coreProject.forEach { dependsOn(":plugin-core:${it.name}:check") } - } diff --git a/plugins/toolkit/core/build.gradle.kts b/plugins/core/core/build.gradle.kts similarity index 84% rename from plugins/toolkit/core/build.gradle.kts rename to plugins/core/core/build.gradle.kts index ffac50034fa..e57c73a64ec 100644 --- a/plugins/toolkit/core/build.gradle.kts +++ b/plugins/core/core/build.gradle.kts @@ -9,10 +9,8 @@ plugins { } dependencies { - api(project(":plugin-toolkit:resources")) + compileOnlyApi(project(":plugin-core:resources")) compileOnlyApi(project(":plugin-core:sdk-codegen")) - // delete when fully split - runtimeOnly(project(":plugin-core:sdk-codegen")) api(libs.aws.cognitoidentity) api(libs.aws.ecr) diff --git a/plugins/toolkit/core/detekt-baseline-integrationTest.xml b/plugins/core/core/detekt-baseline-integrationTest.xml similarity index 100% rename from plugins/toolkit/core/detekt-baseline-integrationTest.xml rename to plugins/core/core/detekt-baseline-integrationTest.xml diff --git a/plugins/toolkit/core/detekt-baseline-main.xml b/plugins/core/core/detekt-baseline-main.xml similarity index 100% rename from plugins/toolkit/core/detekt-baseline-main.xml rename to plugins/core/core/detekt-baseline-main.xml diff --git a/plugins/toolkit/core/detekt-baseline-test.xml b/plugins/core/core/detekt-baseline-test.xml similarity index 100% rename from plugins/toolkit/core/detekt-baseline-test.xml rename to plugins/core/core/detekt-baseline-test.xml diff --git a/plugins/toolkit/core/detekt-baseline.xml b/plugins/core/core/detekt-baseline.xml similarity index 100% rename from plugins/toolkit/core/detekt-baseline.xml rename to plugins/core/core/detekt-baseline.xml diff --git a/plugins/toolkit/core/it/software/aws/toolkits/core/s3/BucketUtilsTest.kt b/plugins/core/core/it/software/aws/toolkits/core/s3/BucketUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/it/software/aws/toolkits/core/s3/BucketUtilsTest.kt rename to plugins/core/core/it/software/aws/toolkits/core/s3/BucketUtilsTest.kt diff --git a/plugins/toolkit/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt b/plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt similarity index 100% rename from plugins/toolkit/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt rename to plugins/core/core/src/migration/software/aws/toolkits/core/ToolkitClientManager.kt diff --git a/plugins/toolkit/core/src/migration/software/aws/toolkits/core/clients/SdkClientProvider.kt b/plugins/core/core/src/migration/software/aws/toolkits/core/clients/SdkClientProvider.kt similarity index 100% rename from plugins/toolkit/core/src/migration/software/aws/toolkits/core/clients/SdkClientProvider.kt rename to plugins/core/core/src/migration/software/aws/toolkits/core/clients/SdkClientProvider.kt diff --git a/plugins/toolkit/core/src/migration/software/aws/toolkits/core/region/ToolkitRegionProvider.kt b/plugins/core/core/src/migration/software/aws/toolkits/core/region/ToolkitRegionProvider.kt similarity index 100% rename from plugins/toolkit/core/src/migration/software/aws/toolkits/core/region/ToolkitRegionProvider.kt rename to plugins/core/core/src/migration/software/aws/toolkits/core/region/ToolkitRegionProvider.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/ConnectionSettings.kt b/plugins/core/core/src/software/aws/toolkits/core/ConnectionSettings.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/ConnectionSettings.kt rename to plugins/core/core/src/software/aws/toolkits/core/ConnectionSettings.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/ToolkitClientCustomizer.kt b/plugins/core/core/src/software/aws/toolkits/core/ToolkitClientCustomizer.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/ToolkitClientCustomizer.kt rename to plugins/core/core/src/software/aws/toolkits/core/ToolkitClientCustomizer.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/ToolkitClientManager.kt b/plugins/core/core/src/software/aws/toolkits/core/ToolkitClientManager.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/ToolkitClientManager.kt rename to plugins/core/core/src/software/aws/toolkits/core/ToolkitClientManager.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/clients/ClientBuilderUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/clients/ClientBuilderUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/clients/ClientBuilderUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/clients/ClientBuilderUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/clients/SdkClientProvider.kt b/plugins/core/core/src/software/aws/toolkits/core/clients/SdkClientProvider.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/clients/SdkClientProvider.kt rename to plugins/core/core/src/software/aws/toolkits/core/clients/SdkClientProvider.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/AwsCredentials.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/AwsCredentials.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/AwsCredentials.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/AwsCredentials.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/CredentialProviderFactory.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/CredentialProviderFactory.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/CredentialProviderFactory.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/CredentialProviderFactory.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/CredentialsChangeEvent.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/CredentialsChangeEvent.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/CredentialsChangeEvent.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/CredentialsChangeEvent.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/SsoUrlIdentifier.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/SsoUrlIdentifier.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/SsoUrlIdentifier.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/SsoUrlIdentifier.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProvider.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProvider.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProvider.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProvider.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProviderManager.kt b/plugins/core/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProviderManager.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProviderManager.kt rename to plugins/core/core/src/software/aws/toolkits/core/credentials/ToolkitCredentialsProviderManager.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaArchitecture.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaArchitecture.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaArchitecture.kt rename to plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaArchitecture.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt rename to plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt rename to plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaSampleEventProvider.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/lambda/LambdaUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/region/AwsPartition.kt b/plugins/core/core/src/software/aws/toolkits/core/region/AwsPartition.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/region/AwsPartition.kt rename to plugins/core/core/src/software/aws/toolkits/core/region/AwsPartition.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/region/AwsRegion.kt b/plugins/core/core/src/software/aws/toolkits/core/region/AwsRegion.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/region/AwsRegion.kt rename to plugins/core/core/src/software/aws/toolkits/core/region/AwsRegion.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/region/Partitions.kt b/plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/region/Partitions.kt rename to plugins/core/core/src/software/aws/toolkits/core/region/Partitions.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/region/ToolkitRegionProvider.kt b/plugins/core/core/src/software/aws/toolkits/core/region/ToolkitRegionProvider.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/region/ToolkitRegionProvider.kt rename to plugins/core/core/src/software/aws/toolkits/core/region/ToolkitRegionProvider.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/s3/BucketUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/s3/BucketUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/s3/BucketUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/s3/BucketUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/CachedIdentityStorage.kt b/plugins/core/core/src/software/aws/toolkits/core/telemetry/CachedIdentityStorage.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/CachedIdentityStorage.kt rename to plugins/core/core/src/software/aws/toolkits/core/telemetry/CachedIdentityStorage.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/MetricEvent.kt b/plugins/core/core/src/software/aws/toolkits/core/telemetry/MetricEvent.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/MetricEvent.kt rename to plugins/core/core/src/software/aws/toolkits/core/telemetry/MetricEvent.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/TelemetryBatcher.kt b/plugins/core/core/src/software/aws/toolkits/core/telemetry/TelemetryBatcher.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/TelemetryBatcher.kt rename to plugins/core/core/src/software/aws/toolkits/core/telemetry/TelemetryBatcher.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/TelemetryPublisher.kt b/plugins/core/core/src/software/aws/toolkits/core/telemetry/TelemetryPublisher.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/telemetry/TelemetryPublisher.kt rename to plugins/core/core/src/software/aws/toolkits/core/telemetry/TelemetryPublisher.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/AttributeBag.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/AttributeBag.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/AttributeBag.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/AttributeBag.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/CollectionUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/CollectionUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/CollectionUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/CollectionUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/Either.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/Either.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/Either.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/Either.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/ExceptionUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/ExceptionUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/ExceptionUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/ExceptionUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/LogUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/LogUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/LogUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/LogUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/PathUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/PathUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/PathUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/PathUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/RemoteResourceResolver.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/RemoteResourceResolver.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/RemoteResourceResolver.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/RemoteResourceResolver.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/SensitiveField.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/SensitiveField.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/SensitiveField.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/SensitiveField.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/StringUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/StringUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/StringUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/StringUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/TextUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/TextUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/TextUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/TextUtils.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/Waiter.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/Waiter.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/Waiter.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/Waiter.kt diff --git a/plugins/toolkit/core/src/software/aws/toolkits/core/utils/ZipUtils.kt b/plugins/core/core/src/software/aws/toolkits/core/utils/ZipUtils.kt similarity index 100% rename from plugins/toolkit/core/src/software/aws/toolkits/core/utils/ZipUtils.kt rename to plugins/core/core/src/software/aws/toolkits/core/utils/ZipUtils.kt diff --git a/plugins/toolkit/core/tst-resources/jsonSampleFailure.json b/plugins/core/core/tst-resources/jsonSampleFailure.json similarity index 100% rename from plugins/toolkit/core/tst-resources/jsonSampleFailure.json rename to plugins/core/core/tst-resources/jsonSampleFailure.json diff --git a/plugins/toolkit/core/tst-resources/jsonSampleSuccess.json b/plugins/core/core/tst-resources/jsonSampleSuccess.json similarity index 100% rename from plugins/toolkit/core/tst-resources/jsonSampleSuccess.json rename to plugins/core/core/tst-resources/jsonSampleSuccess.json diff --git a/plugins/toolkit/core/tst-resources/sampleLambdaEvent.json b/plugins/core/core/tst-resources/sampleLambdaEvent.json similarity index 100% rename from plugins/toolkit/core/tst-resources/sampleLambdaEvent.json rename to plugins/core/core/tst-resources/sampleLambdaEvent.json diff --git a/plugins/toolkit/core/tst-resources/xmlSampleFailure.xml b/plugins/core/core/tst-resources/xmlSampleFailure.xml similarity index 100% rename from plugins/toolkit/core/tst-resources/xmlSampleFailure.xml rename to plugins/core/core/tst-resources/xmlSampleFailure.xml diff --git a/plugins/toolkit/core/tst-resources/xmlSampleSuccess.xml b/plugins/core/core/tst-resources/xmlSampleSuccess.xml similarity index 100% rename from plugins/toolkit/core/tst-resources/xmlSampleSuccess.xml rename to plugins/core/core/tst-resources/xmlSampleSuccess.xml diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/AwsCredentialsExtensionsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/credentials/AwsCredentialsExtensionsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/AwsCredentialsExtensionsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/credentials/AwsCredentialsExtensionsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/Mocks.kt b/plugins/core/core/tst/software/aws/toolkits/core/credentials/Mocks.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/Mocks.kt rename to plugins/core/core/tst/software/aws/toolkits/core/credentials/Mocks.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/SsoUrlIdentifierTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/credentials/SsoUrlIdentifierTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/credentials/SsoUrlIdentifierTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/credentials/SsoUrlIdentifierTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/lambda/LambdaSampleEventProviderTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/lambda/LambdaSampleEventProviderTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/lambda/LambdaSampleEventProviderTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/lambda/LambdaSampleEventProviderTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/parser/EndpointsJsonValidatorTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/parser/EndpointsJsonValidatorTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/parser/EndpointsJsonValidatorTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/parser/EndpointsJsonValidatorTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/parser/LambdaManifestValidatorTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/parser/LambdaManifestValidatorTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/parser/LambdaManifestValidatorTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/parser/LambdaManifestValidatorTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/parser/LambdaSampleEventJsonValidatorTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/parser/LambdaSampleEventJsonValidatorTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/parser/LambdaSampleEventJsonValidatorTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/parser/LambdaSampleEventJsonValidatorTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/region/AwsRegionTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/region/AwsRegionTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/region/AwsRegionTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/region/AwsRegionTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/region/PartitionParserTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/region/PartitionParserTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/region/PartitionParserTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/region/PartitionParserTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/rules/ECSTemporaryServiceRule.kt b/plugins/core/core/tst/software/aws/toolkits/core/rules/ECSTemporaryServiceRule.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/rules/ECSTemporaryServiceRule.kt rename to plugins/core/core/tst/software/aws/toolkits/core/rules/ECSTemporaryServiceRule.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/rules/EcrTemporaryRepositoryRule.kt b/plugins/core/core/tst/software/aws/toolkits/core/rules/EcrTemporaryRepositoryRule.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/rules/EcrTemporaryRepositoryRule.kt rename to plugins/core/core/tst/software/aws/toolkits/core/rules/EcrTemporaryRepositoryRule.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/rules/EnvironmentVariableHelper.kt b/plugins/core/core/tst/software/aws/toolkits/core/rules/EnvironmentVariableHelper.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/rules/EnvironmentVariableHelper.kt rename to plugins/core/core/tst/software/aws/toolkits/core/rules/EnvironmentVariableHelper.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/rules/S3TemporaryBucketRule.kt b/plugins/core/core/tst/software/aws/toolkits/core/rules/S3TemporaryBucketRule.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/rules/S3TemporaryBucketRule.kt rename to plugins/core/core/tst/software/aws/toolkits/core/rules/S3TemporaryBucketRule.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/rules/SystemPropertyHelper.kt b/plugins/core/core/tst/software/aws/toolkits/core/rules/SystemPropertyHelper.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/rules/SystemPropertyHelper.kt rename to plugins/core/core/tst/software/aws/toolkits/core/rules/SystemPropertyHelper.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/telemetry/TelemetryBatcherTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/telemetry/TelemetryBatcherTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/telemetry/TelemetryBatcherTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/telemetry/TelemetryBatcherTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/CollectionUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/CollectionUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/CollectionUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/CollectionUtilsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/CompletionStageUtils.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/CompletionStageUtils.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/CompletionStageUtils.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/CompletionStageUtils.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/DelegateSdkConsumers.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/DelegateSdkConsumers.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/DelegateSdkConsumers.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/DelegateSdkConsumers.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/EitherTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/EitherTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/EitherTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/EitherTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/ExceptionUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/ExceptionUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/ExceptionUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/ExceptionUtilsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/IntegrationTestCredentials.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/IntegrationTestCredentials.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/IntegrationTestCredentials.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/IntegrationTestCredentials.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/LogUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/LogUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/LogUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/LogUtilsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RemoteResourceResolverTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/RemoteResourceResolverTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RemoteResourceResolverTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/RemoteResourceResolverTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RuleUtils.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/RuleUtils.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RuleUtils.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/RuleUtils.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RuleUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/RuleUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/RuleUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/RuleUtilsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/ZipUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/ZipUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/ZipUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/ZipUtilsTest.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/TestUtils.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/TestUtils.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/TestUtils.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/test/TestUtils.kt diff --git a/plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/TestUtilsTest.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/TestUtilsTest.kt similarity index 100% rename from plugins/toolkit/core/tst/software/aws/toolkits/core/utils/test/TestUtilsTest.kt rename to plugins/core/core/tst/software/aws/toolkits/core/utils/test/TestUtilsTest.kt diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 328fdcf4435..cbc3849319c 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -37,27 +37,15 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -// delete when fully split -val dummyPluginJar = tasks.register("dummyPluginJar") { - archiveFileName.set("dummy.jar") - - from(project(":plugin-core").file("src/main/resources")) -} - -tasks.prepareTestingSandbox { - dependsOn(dummyPluginJar) - - intoChild(pluginName.map { "$it/lib" }) - .from(dummyPluginJar) -} - dependencies { + compileOnlyApi(project(":plugin-core:core")) compileOnlyApi(project(":plugin-core:sdk-codegen")) compileOnlyApi(libs.aws.apacheClient) + compileOnlyApi(libs.aws.nettyClient) api(libs.aws.iam) - testFixturesApi(project(path = ":plugin-toolkit:core", configuration = "testArtifacts")) + testFixturesApi(project(path = ":plugin-core:core", configuration = "testArtifacts")) testFixturesApi(libs.mockk) testFixturesApi(libs.kotlin.coroutinesTest) testFixturesApi(libs.kotlin.coroutinesDebug) @@ -65,10 +53,6 @@ dependencies { // conflicts with transitive inclusion from docker plugin exclude(group = "org.apache.httpcomponents.client5") } - - // delete when fully split - compileOnlyApi(project(":plugin-toolkit:core")) - runtimeOnly(project(":plugin-toolkit:core")) } // fix implicit dependency on generated source diff --git a/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties new file mode 100644 index 00000000000..c343305ecbd --- /dev/null +++ b/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -0,0 +1,1885 @@ +# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 +action.apprunner.service.copyServiceUri.text=Copy Service URL +action.apprunner.service.openServiceUri.text=Open Service URL +action.aws.caws.devtools.actions.clone.text=Clone Repository +action.aws.caws.devtools.actions.copyCloneUrl.text=Copy Clone URL for Command Line +action.aws.caws.devtools.actions.learnMore.text=Learn More about CodeCatalyst +action.aws.caws.devtools.actions.learnMoreReAuth.text=Learn More about CodeCatalyst +action.aws.caws.devtools.actions.login.text=Start +action.aws.caws.devtools.actions.openGateway.text=Open Dev Environments in JetBrains Gateway +action.aws.caws.devtools.actions.reauthenticate.text=Re-authenticate to connect +action.aws.caws.rebuildAction.text=Rebuild Dev Environment +action.aws.caws.updateDevfile.text=Update Devfile... +action.aws.toolkit.caws.logout.text=Sign out +action.aws.toolkit.caws.profile.text=View Profile... +action.aws.toolkit.dynamoViewer.changeMaxResults.text=Max Results +action.aws.toolkit.dynamodb.delete_table.text=Delete Table... +action.aws.toolkit.ecr.repository.pull.text=Pull from Repository... +action.aws.toolkit.ecr.repository.push.text=Push to Repository... +action.aws.toolkit.jetbrains.core.services.cwc.commands.ExplainCodeAction.description = Explains the selected code +action.aws.toolkit.jetbrains.core.services.cwc.commands.ExplainCodeAction.text = Explain Code +action.aws.toolkit.jetbrains.core.services.cwc.commands.FixCodeAction.description = Fixes the selected code +action.aws.toolkit.jetbrains.core.services.cwc.commands.FixCodeAction.text = Fix Code +action.aws.toolkit.jetbrains.core.services.cwc.commands.OptimizeCodeAction.description = Optimizes the selected code +action.aws.toolkit.jetbrains.core.services.cwc.commands.OptimizeCodeAction.text = Optimize Code +action.aws.toolkit.jetbrains.core.services.cwc.commands.RefactorCodeAction.description = Refactors the selected code +action.aws.toolkit.jetbrains.core.services.cwc.commands.RefactorCodeAction.text = Refactor Code +action.aws.toolkit.jetbrains.core.services.cwc.commands.SendToPromptAction.description = Sends selected code to chat +action.aws.toolkit.jetbrains.core.services.cwc.commands.SendToPromptAction.text = Send to Prompt +action.aws.toolkit.open.arn.browser.text=Open ARN in AWS Console +action.aws.toolkit.open.telemetry.viewer.text=View AWS Telemetry +action.aws.toolkit.s3.open.bucket.viewer.prefixed.text=View Bucket with Prefix... +action.aws.toolkit.s3.open.bucket.viewer.text=View Bucket +action.aws.toolkit.toolwindow.explorer.newConnection.text=Setup authentication to begin +action.aws.toolkit.toolwindow.newConnection.text=Setup authentication... +action.aws.toolkit.toolwindow.sso.signout.text=Sign out of SSO +action.dynamic.open.text=Open Resource... +action.q.openchat.text=Open Chat Panel +amazonqFeatureDev.approach_gen.error_text=Sorry, we're experiencing an issue on our side. Would you like to try again? +amazonqFeatureDev.approach_gen.iteration_limit.error_text=You have reached the free tier limit for number of iterations on an implementation plan. Please proceed to generating code or start to discuss a new plan. +amazonqFeatureDev.chat_message.ask_for_new_task=What change would you like to make? +amazonqFeatureDev.chat_message.closed_session=Your session is now closed +amazonqFeatureDev.chat_message.requesting_changes=Requesting changes ... +amazonqFeatureDev.chat_message.start_code_generation=This may take a few minutes. I will send a notification when it's complete if you navigate away from this panel, but please keep the tab open. +amazonqFeatureDev.chat_message.uploading_code=Uploading code ... +amazonqFeatureDev.code_generation.failed_generation=Code generation failed +amazonqFeatureDev.code_generation.generating_code=Generating code ... +amazonqFeatureDev.code_generation.iteration_limit.error_text=You have reached the free tier limit for number of iterations on a code generation. Please proceed to accept the code or start a new conversation. +amazonqFeatureDev.code_generation.no_file_changes=Unable to generate any file changes +amazonqFeatureDev.code_generation.notification_message=Your code suggestions from Amazon Q are ready to review +amazonqFeatureDev.code_generation.notification_open_link=Open chat +amazonqFeatureDev.code_generation.notification_title=AWS Toolkit - Amazon Q FeatureDev +amazonqFeatureDev.code_generation.provide_code_feedback=How can the code be improved? +amazonqFeatureDev.code_generation.updated_code=Code has been updated. Would you like to work on another task? +amazonqFeatureDev.content_length.error_text=The project you have selected for source code is too large to use as context. Please select a different folder to use for this conversation +amazonqFeatureDev.create_new_plan=What change would you like to discuss? +amazonqFeatureDev.create_plan=Ok, let me create a plan. This may take a few minutes. +amazonqFeatureDev.create_plan.background_progress_title=Creating plans ... +amazonqFeatureDev.error_text=Sorry, we encountered a problem when processing your request. +amazonqFeatureDev.example_text=You can use /dev to:\n- Add a new feature or logic\n- Write tests\n- Fix a bug in your project\n- Generate a README for a file, folder, or project\n\nTo learn more, visit the [Amazon Q User Guide](https://docs.aws.amazon.com/amazonq/latest/aws-builder-use-ug/getting-started.html) +amazonqFeatureDev.exception.conversation_not_found=Conversation id must exist before continuing +amazonqFeatureDev.exception.export_parsing_error=Downloaded code results could not be parsed +amazonqFeatureDev.exception.insert_code_failed=Failed to insert code changes +amazonqFeatureDev.exception.message_not_found=Message was not found +amazonqFeatureDev.exception.monthly_limit_error=Sorry, you have reached the monthly limit for feature development. You can try again next month. +amazonqFeatureDev.exception.open_diff_failed=Failed to open diff +amazonqFeatureDev.exception.request_failed=Request failed +amazonqFeatureDev.exception.retry_request_failed=Retry request failed +amazonqFeatureDev.exception.upload_code=Amazon Q is unable to upload workspace artifacts to S3 for feature development. For more information, see the [Amazon Q documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security_iam_manage-access-with-policies.html) or contact your network or organization administrator. +amazonqFeatureDev.follow_instructions_for_authentication=Follow instructions to re-authenticate ... +amazonqFeatureDev.follow_up.close_session=Close session +amazonqFeatureDev.follow_up.generate_code=Generate code +amazonqFeatureDev.follow_up.incorrect_source_folder=The selected folder is not in an opened workspace folder. Add the selected folder to the workspace or pick a new folder +amazonqFeatureDev.follow_up.insert_code=Insert code +amazonqFeatureDev.follow_up.modified_source_folder=Changed source root to: {0} +amazonqFeatureDev.follow_up.modify_source_folder=Select files for context +amazonqFeatureDev.follow_up.new_plan=Discuss a new plan +amazonqFeatureDev.follow_up.new_task=Work on new task +amazonqFeatureDev.follow_up.provide_feedback_and_regenerate=Provide feedback to regenerate +amazonqFeatureDev.follow_up.retry=Retry +amazonqFeatureDev.follow_up.send_feedback=Send feedback +amazonqFeatureDev.no_retries.error_text=Sorry, we're unable to provide a response at this time. Please try again later or share feedback with our team to help us troubleshoot. +amazonqFeatureDev.placeholder.additional_improvements=Provide input on additional improvements +amazonqFeatureDev.placeholder.after_code_generation=Select an option above to proceed +amazonqFeatureDev.placeholder.after_monthly_limit=Chat input is disabled +amazonqFeatureDev.placeholder.closed_session=Your session is now closed +amazonqFeatureDev.placeholder.generating_approach=Generating plan... +amazonqFeatureDev.placeholder.generating_code=Generating code... +amazonqFeatureDev.placeholder.iterate_plan=How can this plan be improved? +amazonqFeatureDev.placeholder.new_plan=Briefly describe a task or issue +amazonqFeatureDev.placeholder.provide_code_feedback=Feedback, comments ... +amazonqFeatureDev.plan_generation.ask_for_feedback=Would you like to generate a suggestion for this? You'll review a file diff before inserting into your project. +apprunner.action.configure=Configure Service +apprunner.action.create.service=Create Service... +apprunner.action.delete.service=Delete Service... +apprunner.action.deploy=Deploy +apprunner.action.deploy.failed=Deployment Failed +apprunner.action.deploy.starting=Starting deployment +apprunner.action.deploy.unableToFindLogStream=Unable to find the log stream for deployment {0} +apprunner.action.pause=Pause... +apprunner.action.pause.confirm=Pause +apprunner.action.resume=Resume... +apprunner.action.resume.confirm=Resume +apprunner.creation.failed=Failed to create App Runner service +apprunner.creation.panel.cpu=CPU: +apprunner.creation.panel.cpu.missing=Select a CPU configuration +apprunner.creation.panel.deployment=Deployment type: +apprunner.creation.panel.deployment.automatic=Automatic +apprunner.creation.panel.deployment.automatic.tooltip=App Runner monitors your registry and deploys a new version of your service for each new revision +apprunner.creation.panel.deployment.manual=Manual +apprunner.creation.panel.deployment.manual.tooltip=Start each deployment yourself using the AWS CLI, Console, or Toolkit +apprunner.creation.panel.environment=Environment Variables: +apprunner.creation.panel.image.access_role=ECR access role: +apprunner.creation.panel.image.access_role.missing=Missing ECR access role for App Runner +apprunner.creation.panel.image.access_role.tooltip=This role gives App Runner permission to access ECR +apprunner.creation.panel.image.uri=Container image URI: +apprunner.creation.panel.image.uri.missing=Enter container image URI +apprunner.creation.panel.memory=Memory: +apprunner.creation.panel.memory.missing=Select memory amount +apprunner.creation.panel.name=Service name: +apprunner.creation.panel.name.missing=Enter a service name +apprunner.creation.panel.port=Port: +apprunner.creation.panel.repository.api=Configure all settings here +apprunner.creation.panel.repository.api.tooltip=Specify all settings for your service on creation +apprunner.creation.panel.repository.branch=Branch: +apprunner.creation.panel.repository.build_command=Build Command: +apprunner.creation.panel.repository.build_command.missing=Enter a build command +apprunner.creation.panel.repository.build_command.tooltip=This command runs in the root directory of your repository when a new code version is deployed. Use it to install dependencies or compile your code. +apprunner.creation.panel.repository.configuration=Configuration: +apprunner.creation.panel.repository.connection=Connection: +apprunner.creation.panel.repository.connection.help=App Runner deploys your source code by installing an app called "AWS Connector for GitHub" in your GitHub account. This connection must be set up through the console. +apprunner.creation.panel.repository.connection.missing=Select a connection +apprunner.creation.panel.repository.file=Provide a configuration file +apprunner.creation.panel.repository.file.tooltip=App Runner will read your configuration from the apprunner.yaml file in the root of your repository +apprunner.creation.panel.repository.runtime=Runtime: +apprunner.creation.panel.repository.runtime.missing=Select a runtime +apprunner.creation.panel.repository.runtime.tooltip=Runtime determines what tools are available in the build and runtime environments +apprunner.creation.panel.repository.url=Repository URL: +apprunner.creation.panel.repository.url.tooltip=The URL of the Git repository (e.g. "https://github.com/aws/aws-toolkit-jetbrains") +apprunner.creation.panel.source=Source: +apprunner.creation.panel.source.ecr=ECR +apprunner.creation.panel.source.ecr_public=ECR public +apprunner.creation.panel.source.repository=Source code repository +apprunner.creation.panel.start_command=Start Command: +apprunner.creation.panel.start_command.image.tooltip=The application’s container runs this command on launch. Leave blank to use the entry point command defined in the container image. +apprunner.creation.panel.start_command.missing=Enter a start command +apprunner.creation.panel.start_command.repo.tooltip=This command runs in the root directory of your service to start the service processes. Use it to start a webserver for your service. +apprunner.creation.started=Started creating App Runner service +apprunner.creation.started.title=App Runner +apprunner.creation.title=Create App Runner Service +apprunner.pause.failed=Failed to pause service {0}!\n{1} +apprunner.pause.succeeded=Pausing service {0} +apprunner.pause.warning=Your service will be unavailable while paused.

You can resume the service once the pause operation is complete.

Click pause to proceed pausing {0} +apprunner.resume.failed=Failed to resume {0}!\n{1} +apprunner.resume.succeeded=Resuming {0} +apprunner.resume.warning=Resume {0}? +apprunner.service.configure.title=Configure Service {0} +apprunner.service.resource_type=App Runner Service +apprunner.view_application_log_streams=View Application Log Streams +apprunner.view_service_log_streams=View Service Log Streams +apprunner.view_service_log_streams.error=Unable to open log group {0} +apprunner.view_service_log_streams.error_not_created=App Runner log group has not been created +aws.codewhispererq.tab.title=Amazon Q +aws.description=Amazon Web Services (AWS) is a secure cloud services platform, offering compute power, database storage, content delivery and other functionality to help businesses scale and grow. +aws.developer.tools.tab.title=Developer Tools +aws.getstarted.auth.panel.notSupport_text=Not supported for this feature +aws.getstarted.auth.panel_bullet_iam=IAM Credentials +aws.getstarted.auth.panel_bullets=IAM Identity Center\nAWS Builder ID +aws.getstarted.resource.panel_description=Work with S3, CloudWatch and more. +aws.getstarted.resource.panel_question_text=Don't have an AWS account? +aws.getstarted.resource.panel_title=AWS Explorer +aws.notification.auto_update.feature_intro.ok=OK +aws.notification.auto_update.feature_intro.title=AWS plugins will now auto update +aws.notification.auto_update.settings.title=Manage auto-updates +aws.notification.auto_update.title={0} plugin updated +aws.notification.credentials_missing=Error: AWS credentials not configured +aws.notification.do_not_show_again=Don't show again +aws.notification.sam_cli_not_valid=Error: {0}. Click here to reconfigure AWS SAM. +aws.notification.title=AWS Toolkit +aws.notification.title.amazonq=Amazon Q +aws.notification.title.amazonq.feature_dev=Amazon Q FeatureDev +aws.notification.title.codewhisperer=Amazon Q +aws.onboarding.getstarted.panel.bottom_text=Learn more about authenticating with the Toolkit +aws.onboarding.getstarted.panel.bottom_text_question=Why do these have different authentication requirements? +aws.onboarding.getstarted.panel.builderid_row_comment_text=Personal profile for builders +aws.onboarding.getstarted.panel.button_iam_login=Authenticate with IAM +aws.onboarding.getstarted.panel.comment_link_doc=Documentation +aws.onboarding.getstarted.panel.comment_link_github=Join us on GitHub +aws.onboarding.getstarted.panel.group_title=Select a feature to setup authentication +aws.onboarding.getstarted.panel.iam_row_comment_text=Long-term programmatic access +aws.onboarding.getstarted.panel.idc_row_comment_text=Successor to AWS Single Sign-on +aws.onboarding.getstarted.panel.login_with_iam=Use Professional License +aws.onboarding.getstarted.panel.share_feedback=Share Feedback +aws.onboarding.getstarted.panel.signup_iam_text=Sign up for free +aws.onboarding.getstarted.panel.title=Authenticate with AWS Toolkit +aws.q.migration.action.install.text=Install +aws.q.migration.action.manage_plugins.text=Manage plugins +aws.q.migration.action.read_more.text=Read more +aws.q.migration.action.restart.text=Restart +aws.q.migration.existing_users.notify.message=We've auto-installed it for you with all the same features and settings from CodeWhisperer and Amazon Q chat +aws.q.migration.existing_users.notify.title=Amazon Q is now its own plugin +aws.q.migration.failed_to_install.message=Amazon Q failed to install, click below to go to the plugin marketplace and install the plugin manually. +aws.q.migration.new_users.notify.message=Install it to use Amazon Q, a generative AI assistant, with chat and code suggestions. +aws.q.migration.new_users.notify.title=Amazon Q has moved to its own plugin +aws.settings.auto_detect=Auto-detected: {0} +aws.settings.auto_update.notification.message=Restart your IDE to apply the update. +aws.settings.auto_update.notification.no=Not now +aws.settings.auto_update.notification.yes=Restart +aws.settings.auto_update.notification_enable.text=Show notification on update success +aws.settings.auto_update.notification_enable.tooltip=If unchecked, updates will still get applied upon the next IDE restart. +aws.settings.auto_update.progress.message=Updating AWS plugins +aws.settings.auto_update.text=Automatically install plugin updates when available +aws.settings.aws_cli_settings=AWS CLI Settings +aws.settings.codewhisperer.automatic_import_adder=Imports recommendation +aws.settings.codewhisperer.automatic_import_adder.tooltip=Amazon Q will add import statements with code suggestions when necessary +aws.settings.codewhisperer.configurable.controlled_by_admin=\ Controlled by your admin +aws.settings.codewhisperer.configurable.opt_out.title=Share Amazon Q content with AWS +aws.settings.codewhisperer.configurable.opt_out.tooltip=When checked, your content processed by Amazon Q may be used for service improvement (except for content processed by the Amazon Q Developer Pro tier). Unchecking this box will cause AWS to delete any of your content used for that purpose. The information used to provide the Amazon Q service to you will not be affected. See the Service Terms for more detail. +aws.settings.codewhisperer.configurable.title=Amazon Q +aws.settings.codewhisperer.group.data_sharing=Data Sharing +aws.settings.codewhisperer.group.inline_suggestions=Inline Suggestions +aws.settings.codewhisperer.group.plugin_settings=Plugin Settings +aws.settings.codewhisperer.include_code_with_reference=Include suggestions with code references +aws.settings.codewhisperer.include_code_with_reference.tooltip=When checked, Amazon Q will include suggestions with code references. If you authenticate through IAM Identity Center, this setting is controlled by your Amazon Q Developer Pro administrator. Learn more +aws.settings.codewhisperer.warning=To use Amazon Q, login with AWS Builder ID or AWS IAM Identity Center. +aws.settings.dynamic_resources_configurable.clear_all=Clear All +aws.settings.dynamic_resources_configurable.select_all=Select All +aws.settings.dynamic_resources_configurable.suggest_types.dialog.message=Please suggest additional AWS resource types (e.g. AWS::S3::Bucket)\nyou would like to see supported in future releases.\n\n(max length: 2000 chars) +aws.settings.dynamic_resources_configurable.suggest_types.dialog.title=Additional Resource Type Suggestions +aws.settings.dynamic_resources_configurable.suggest_types.prompt=Don't see a resource type you expected? +aws.settings.dynamic_resources_configurable.title=Resources +aws.settings.executables.auto_resolved=(Auto-resolved: {0}) +aws.settings.executables.cannot_determine_version=Cannot determine version of {0}: {1} +aws.settings.executables.executable_invalid=Invalid {0} executable: {1} +aws.settings.executables.find.description=Select path to {0} executable +aws.settings.executables.resolution_exception=Exception occurred attempting to resolve {0} executable: {1} +aws.settings.find.description=Select path to {0} CLI executable +aws.settings.find.title={0} CLI Configuration +aws.settings.global_label=Global Settings +aws.settings.lambda.configurable.title=Lambda +aws.settings.learn_more=Learn more +aws.settings.sam.location=SAM CLI executable: +aws.settings.sam.show_all_gutter_icons=Show gutter icons for all potential AWS Lambda handlers +aws.settings.sam.show_all_gutter_icons_tooltip=When enabled, show gutter icons in source files for all potential Lambda handlers, even if they are not defined in a template or remotely. +aws.settings.serverless_label=Serverless Settings +aws.settings.show.label=Show AWS Settings +aws.settings.telemetry.description=Help us improve our product! Allow us to collect basic usage data. +aws.settings.telemetry.option=Send usage metrics to AWS +aws.settings.telemetry.prompt.message=Usage metrics are collected by default. Click here to adjust this behavior. +aws.settings.telemetry.prompt.title=AWS IDE plugins telemetry +aws.settings.title=AWS +aws.settings.toolkit.configurable.title=AWS Toolkit +aws.sso.signing.device.code=Proceed To Browser +aws.sso.signing.device.code.copy=Copy Code +aws.sso.signing.device.code.copy.dialog.text=To proceed, open the login page and confirm that the code matches: +aws.sso.signing.device.waiting=Waiting for browser authorization for code: {0} +aws.terminal.action=Open AWS local terminal +aws.terminal.action.tooltip=Start a local terminal with the current AWS connection settings injected as environment variables +aws.terminal.exception.failed_to_resolve_credentials=Unable to open AWS-aware Terminal, unable to resolve credentials: {0} +aws.terminal.exception.invalid_credentials=Unable to open AWS-aware Terminal, credentials aren't valid: {0} +aws.toolkit.experimental.description=Warning: These features are experimental, may contain bugs or usability problems, and may be
removed from the AWS Toolkit at any time. +aws.toolkit.experimental.enable=Enable +aws.toolkit.experimental.suggestion.description=The experimental feature "{0}" adds the following capability:
{1}.
Do you want to enable it? +aws.toolkit.experimental.suggestion.title=AWS Toolkit Experiment Suggestion +aws.toolkit.experimental.title=Experimental Features +aws.toolkit_deprecation.message=Support for {0} {1} is being deprecated - an upcoming release will require a version based on {2} or newer. +aws.toolkit_deprecation.message.gateway=Upgrade JetBrains Gateway to version {2} or newer to use the next release of the toolkit. Support for {0} {1} is being deprecated. +aws.toolkit_deprecation.title=AWS Toolkit deprecation notice +aws_builder_id.service_name=AWS Builder ID +aws_builder_id.sign_out=Sign out of AWS Builder ID +aws_connection.credentials.label=Credentials: +aws_connection.region.label=Region: +aws_connection.tab.label=AWS Connection +caws.add_repository=Add a repository to this project +caws.add_workspace=Create Dev Environment +caws.alias.instruction.text=Aliases can contain any combination of letters, numbers, dashes and underlines. +caws.backend.error.expired=The IDE backend is expired. Please create a new Dev Environment or update the Dev Environment settings. +caws.backend.error.unknown=Starting the IDE backend failed with exit code {0}. Any available backend logs are available below. +caws.branch_title=Branch: {0} +caws.check_connection=Check Connection and Continue +caws.clone.invalid_pat=Invalid PAT +caws.clone.invalid_pat.help=Cloning may have failed due to an invalid access token. Would you like the toolkit to recreate your access token? +caws.clone_dialog_description=Clone repository from Amazon CodeCatalyst +caws.clone_dialog_directory=Directory: +caws.clone_dialog_repository_loading_error=Failed to load repositories +caws.clone_dialog_title=Clone Repository +caws.compute.size.in.free.tier.comment=Some compute and storage options are not currently available for your space. These require upgrading the billing tier. +caws.configure_workspace=Configure +caws.configure_workspace_failed=Reconfigure Dev Environment Failed +caws.configure_workspace_not_running=Reconfigure Dev Environment is only available for running environments +caws.configure_workspace_tab_save_button=Save and restart +caws.configure_workspace_tab_title=Configure Dev Environment +caws.configure_workspace_title=Configure Dev Environment: {0} in {1} +caws.connected.builder_id=\ AWS Builder ID Connected +caws.connected.identity_center=\ IAM Identity Center Connected {0} +caws.connecting.checking=Checking state of Dev Environment +caws.connecting.in_progress=Connecting to Dev Environment +caws.connecting.waiting_for_environment=Launching Dev Environment (This may take a few minutes) +caws.connection_progress_panel_title=Amazon CodeCatalyst Dev Environment: {0} +caws.copy.url.select_repository=Select a repository to clone +caws.create_workspace=Create Dev Environment +caws.create_workspace_description=Create Dev Environments for your Amazon CodeCatalyst projects +caws.creating_branch=Creating source repository branch +caws.creating_project=Creating Project +caws.creating_workspace=Creating Dev Environment +caws.credential.setup.invalid_credentials_error=Credentials provided are not valid +caws.credential.setup.invalid_credentials_error_title=Invalid Credentials +caws.credential.setup.profile=AWS Profile +caws.credential.setup.requirements_message="You need AWS credentials to use this feature" +caws.credential.setup_access_key=AWS Access Key ID: +caws.credential.setup_access_key_validation_text=Access Key ID must not be empty +caws.credential.setup_default_region=Default Region: +caws.credential.setup_profile_name=Name: +caws.credential.setup_profile_name_validation_text=Profile name must not be empty +caws.credential.setup_secret_access_key=AWS Secret Access Key: +caws.credential.setup_secret_access_key_validation_text=Secret Access Key must not be empty +caws.delete_failed=Delete Dev Environment Failed +caws.delete_workspace=Delete +caws.delete_workspace_warning=Are you sure you wish to delete the Dev Environment? All data will be deleted +caws.delete_workspace_warning_title=Confirm Deletion +caws.devenv.continue.working.after.timeout=Your dev environment has had no activity in the past {0} minutes and will be terminated within 5 minutes. Press OK to continue working +caws.devenv.continue.working.after.timeout.title=Do you want to continue working? +caws.devfile.schema=Devfile Schema +caws.devtoolPanel.fetch.git.url=Fetching Git clone URL for {0} +caws.devtoolPanel.git_url_copied=Clone URL copied to clipboard +caws.devtoolPanel.title=CodeCatalyst +caws.download.thin_client=Downloading IDE thin client +caws.environment.status=Dev Environment is currently: {0} +caws.environment.view_pricing=Learn more about Dev Environment pricing +caws.expired.connection=\ Expired Connection +caws.free.tier.subscription.storage=Other storage options are not currently available for your space. These require upgrading the billing tier. +caws.getstarted.panel.description=Spend more time coding and less
time managing development
environments. +caws.getstarted.panel.link_text=Learn more about CodeCatalyst Spaces +caws.getstarted.panel.login=Connect to CodeCatalyst +caws.getstarted.panel.question.text=Don't have a CodeCatalyst Space? +caws.ide_version_validation_text=IDE version must be selected +caws.information.panel=A thin client on your machine makes development feel local, even when the heavy lifting is done on Amazon CodeCatalyst. +caws.information_panel=Create an on-demand Amazon CodeCatalyst Dev Environment to work on your code in the cloud. +caws.list_workspaces_failed=Failed to list Dev Environments +caws.loading.panel.credential_validation_text=Please select a credential profile from the drop down +caws.login=Sign in +caws.no_repo=No repository +caws.no_spaces=No spaces available +caws.one.branch.per.dev.env.comment=You cannot create more than one Dev Environment for a branch. If the chosen branch already has a Dev Environment, resume the existing Dev Environment. +caws.open.devfile=Open Devfile +caws.open.devfile.failed=Unable to open Devfile +caws.pause_action=Pause +caws.pause_warning=Are you sure you wish to pause the Dev Environment? +caws.pause_warning_title=Confirm Pause +caws.pause_workspace_failed=Pause Dev Environment Failed +caws.project=Project: +caws.project.autocreate.description=Created by AWS Toolkit for JetBrains +caws.rebuild.devfile.failed=Dev Environment rebuild with the provided Devfile failed: {0} +caws.rebuild.devfile.failed_server=Dev Environment returned the following:
{0} +caws.rebuild.failed.title=Rebuild Dev Environment +caws.rebuild.workspace.notification=Dev Environment requires rebuild +caws.reconnect.wait_for_client=Waiting for client to gracefully close +caws.repository=Source repository: +caws.spaces.error_loading=Error loading spaces +caws.spaces.refresh=Refresh spaces +caws.sso_profile_configuration_instruction_message=To configure SSO profile use the AWS CLI +caws.storage.value={0} GiB +caws.title=Amazon CodeCatalyst +caws.update_dev_environment=Update Dev Environment +caws.update_dev_environment.failed=Failed to update Dev Environment +caws.update_devfile=Update Dev Environment with this Devfile? This action will trigger a Dev Environment restart. +caws.update_devfile.failed=Failed to update Devfile +caws.update_devfile_title=Update Dev Environment +caws.updating_devfile=Updating Dev Environment with Devfile... +caws.view.projects_web=View project summary in Amazon CodeCatalyst... +caws.view.workspaces_web=View all Dev Environments for project in Amazon CodeCatalyst... +caws.workspace.backend.title=Amazon CodeCatalyst Dev Environment +caws.workspace.clone.info=The project source repository will be cloned to the Dev Environment directly. +caws.workspace.clone.info_repo=Choose the branch to clone, or create a branch for your work in this Dev Environment. +caws.workspace.clone.ssh_agent=Your SSH agent will be forwarded to the Dev Environment for authentication to the repository. +caws.workspace.connection.failed=Dev Environment connection failed +caws.workspace.creation.failed=Dev Environment creation failed +caws.workspace.details.additional_settings_header=Additional Settings +caws.workspace.details.alias.label=Dev Environment alias: +caws.workspace.details.backend_toolkit_location=Backend Toolkit Location: +caws.workspace.details.branch_existing=Existing Branch: +caws.workspace.details.branch_new=New Branch: +caws.workspace.details.branch_new_validation=New branch name is required +caws.workspace.details.branch_title=Branch: +caws.workspace.details.branch_validation=Branch selection is required +caws.workspace.details.clone_repo=Clone a repository +caws.workspace.details.create_branch_comment=Choose an existing branch or create a new branch. If you choose a third-party source repository, you must work in an existing branch. +caws.workspace.details.create_empty_dev_env=Create an empty Dev Environment +caws.workspace.details.create_from_existing_branch=Existing Branch +caws.workspace.details.create_from_new_branch=New Branch +caws.workspace.details.developer_tool_settings=Toolkit Developer Settings +caws.workspace.details.inactivity_timeout=Timeout: +caws.workspace.details.inactivity_timeout_comment=Dev Environment will be stopped after inactivity timeout. +caws.workspace.details.introduction_message=Create Amazon CodeCatalyst projects to start using Dev Environments. +caws.workspace.details.last_used=Last Used: {0} +caws.workspace.details.no_timeout=No timeout +caws.workspace.details.persistent_storage_comment=Storage cannot be edited from CodeCatalyst or IDE after creating Dev Environment. +caws.workspace.details.persistent_storage_title=Storage: +caws.workspace.details.project.comment=A Dev Environment must be associated with a project +caws.workspace.details.project.required=Project name must be provided +caws.workspace.details.project.title=Project name: +caws.workspace.details.project_specific_title=New Amazon CodeCatalyst Dev Environment for {0} +caws.workspace.details.project_validation=Project selection is required +caws.workspace.details.repository_validation=Repository selection is required +caws.workspace.details.s3_bucket=S3 Staging Bucket: +caws.workspace.details.select_org=Select a space above to continue +caws.workspace.details.title=New Amazon CodeCatalyst Dev Environment +caws.workspace.details.toolkit_location=Toolkit Location: +caws.workspace.details.unlinked_repo_url=Repo URL: +caws.workspace.details.use_bundled_toolkit=Use Bundled Toolkit +caws.workspace.ide_label=IDE: +caws.workspace.incompatible=(incompatible) +caws.workspace.instance_size=Compute: +caws.workspace.labels_label=Label: +caws.workspace.list_panel_search_empty_text=Search Dev Environments +caws.workspace.new=Create Dev Environment +caws.workspace.panel_other_repos=Other repositories +caws.workspace.settings=Dev Environment Configuration +caws.workspace.settings.repository_header=Repository +caws.write_credentials_to_file_progress=Writing credentials to shared credentials file +cloudformation.capabilities=CloudFormation Capabilities: +cloudformation.capabilities.auto_expand=Auto Expand +cloudformation.capabilities.auto_expand.toolTipText=Allows expansion of macros in templates +cloudformation.capabilities.iam=IAM +cloudformation.capabilities.iam.toolTipText=Allows templates that contain IAM resources to be deployed +cloudformation.capabilities.named_iam=Named IAM +cloudformation.capabilities.named_iam.toolTipText=Allows templates that contain IAM resources with custom names to be deployed +cloudformation.capabilities.toolTipText=CloudFormation capabilities represent potentially dangerous actions that must be user acknowledged for CloudFormation to perform. +cloudformation.create_stack.failed=Failed to create stack {0}: {1} +cloudformation.create_stack.failed_validation=Failed to create stack {0} due to validation error +cloudformation.create_stack.timeout=Failed to create stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. +cloudformation.delete_stack.failed=Failed to delete stack {0}: {1} +cloudformation.delete_stack.timeout=Failed to delete stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. +cloudformation.execute_change_set.failed=Failed to execute change set against {0} +cloudformation.execute_change_set.success=Successfully executed change set against {0} +cloudformation.execute_change_set.success.title=Successfully executed change set +cloudformation.invalid_property=Property {0} has invalid value {1} +cloudformation.key_not_found={0} not found on resource {1} +cloudformation.missing_property=Property {0} not found in {1} +cloudformation.service_name=AWS CloudFormation +cloudformation.stack.delete.action=Delete Stack... +cloudformation.stack.filter.show_completed=Show Completed +cloudformation.stack.logical_id=Logical ID +cloudformation.stack.logical_id.copy=Copy Logical ID +cloudformation.stack.outputs.description=Description +cloudformation.stack.outputs.export=Export Name +cloudformation.stack.outputs.export.copy=Copy Export Name +cloudformation.stack.outputs.key=Key +cloudformation.stack.outputs.key.copy=Copy Key +cloudformation.stack.outputs.value=Value +cloudformation.stack.outputs.value.copy=Copy Value +cloudformation.stack.physical_id=Physical ID +cloudformation.stack.physical_id.copy=Copy Physical ID +cloudformation.stack.reason=Status Reason +cloudformation.stack.status=Status +cloudformation.stack.tab_labels.events=Events +cloudformation.stack.tab_labels.outputs=Outputs +cloudformation.stack.tab_labels.resources=Resources +cloudformation.stack.type=Type +cloudformation.stack.view=View Stack Status +cloudformation.template_index.missing_type=Resource type must not be null for indexing +cloudformation.toolwindow.label=CloudFormation +cloudformation.update_stack.failed=Failed to update stack {0}: {1} +cloudformation.update_stack.failed_validation=Failed to update stack {0} due to validation error +cloudformation.update_stack.timeout=Failed to update stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. +cloudformation.yaml.invalid_root_type=Template does not start with a mapping: {0} +cloudformation.yaml.too_many_documents=There should only be 1 YAML document per file: {0} +cloudformation.yaml.too_many_files=Found {0} YAML files but only expected 1 +cloudwatch.logs.compare.start.end.date=Start date must be before end date +cloudwatch.logs.delete_log_group=Delete Log Group +cloudwatch.logs.download=Download Log Stream +cloudwatch.logs.download.description=Select a folder to save the Log Stream to +cloudwatch.logs.exception=CloudWatch Logs Exception +cloudwatch.logs.export=Export Log Stream +cloudwatch.logs.failed_to_load_more=Failed to load more +cloudwatch.logs.failed_to_load_stream=Failed to load log stream {0} +cloudwatch.logs.failed_to_load_streams=Failed to load log streams for log group {0} +cloudwatch.logs.failed_to_save_query=Failed to save query +cloudwatch.logs.filter_loggroup=Filter streams by prefix +cloudwatch.logs.filter_logs=Filter events +cloudwatch.logs.filtered_log_stream_title=Filtered Stream: {0} from {1} to {2} +cloudwatch.logs.last_event_time=Last Event Time +cloudwatch.logs.log_group_does_not_exist=Log group {0} does not exist +cloudwatch.logs.log_group_title=Group: {0} +cloudwatch.logs.log_groups=Log Groups +cloudwatch.logs.log_record=Log Record: {0} +cloudwatch.logs.log_record_field=Log Event Field +cloudwatch.logs.log_record_open_log_stream=View Log Stream +cloudwatch.logs.log_record_value=Log Event Value +cloudwatch.logs.log_stream_does_not_exist=Log stream {0} does not exist +cloudwatch.logs.log_stream_title=Stream: {0} +cloudwatch.logs.log_streams=Log Streams +cloudwatch.logs.no_end_date=End Date must be specified +cloudwatch.logs.no_events=No Events in Log Stream +cloudwatch.logs.no_events_query=No Events matching the query found in Log Stream {0} +cloudwatch.logs.no_log_group=At least one log group must be selected +cloudwatch.logs.no_log_streams=No Log Stream found +cloudwatch.logs.no_query_entered=Query must be specified +cloudwatch.logs.no_relative_time_number=Number must be specified +cloudwatch.logs.no_results_found=No results found +cloudwatch.logs.no_start_date=Start Date must be specified +cloudwatch.logs.no_term_entered=Search Term must be specified +cloudwatch.logs.open=View Log Streams +cloudwatch.logs.open_in_editor=Open in Editor +cloudwatch.logs.open_in_editor_failed=Open in editor failed +cloudwatch.logs.open_query_editor=Open Query Editor +cloudwatch.logs.opening_in_editor=Opening Stream {0} in editor +cloudwatch.logs.query=Query +cloudwatch.logs.query.form.ok_Button=Execute +cloudwatch.logs.query_editor_title=Query Log Groups +cloudwatch.logs.query_name=Query Name +cloudwatch.logs.query_name_missing=Query name is missing +cloudwatch.logs.query_result=Query Results +cloudwatch.logs.query_result_completion_status=Result +cloudwatch.logs.query_result_completion_successful=Query Execution Completed +cloudwatch.logs.query_results_table_error=Failed to load Query Results +cloudwatch.logs.query_saved_successfully=Query has been saved to your account! +cloudwatch.logs.query_tab_title=Query: {0} +cloudwatch.logs.save_action=Save to a File +cloudwatch.logs.save_query=Save Query +cloudwatch.logs.save_query_dialog_name=Enter Query Name +cloudwatch.logs.saved_query_status=Saved Query Status +cloudwatch.logs.saving_to_disk=Saving Stream {0} to disk +cloudwatch.logs.saving_to_disk_failed=Saving Stream {0} failed +cloudwatch.logs.saving_to_disk_succeeded=Finished saving Log Stream {0} to {1} +cloudwatch.logs.select_saved_query_dialog_name=Select Saved Query +cloudwatch.logs.show_logs_around=Show Logs Around +cloudwatch.logs.stream_save_to_file=Save {0} to a file +cloudwatch.logs.stream_too_big=Stream is Too Large +cloudwatch.logs.stream_too_big_message=Log stream {0} is too large to open in the editor +cloudwatch.logs.tail=Tail logs +cloudwatch.logs.time_days=Days +cloudwatch.logs.time_hours=Hours +cloudwatch.logs.time_minutes=Minutes +cloudwatch.logs.time_weeks=Weeks +cloudwatch.logs.toolwindow=CloudWatch Logs +cloudwatch.logs.validation.timerange=Time Range not Selected +cloudwatch.logs.view_log_stream=View Log Stream +cloudwatch.logs.view_log_streams=View Log Streams +cloudwatch.logs.wrap=Wrap logs +code.aws=Amazon CodeCatalyst +code.aws.value_prop_text=Amazon CodeCatalyst: Launch developer environments in the cloud within seconds. +code.aws.workspaces=Amazon CodeCatalyst +code.aws.workspaces.short=Dev Environments +codemodernizer.builderrordialog.description.title=Error occurred when building your project +codemodernizer.chat.form.user_selection.item.choose_module=Choose a module to transform +codemodernizer.chat.form.user_selection.item.choose_target_version=Choose the target code version +codemodernizer.chat.form.user_selection.title=Q - Code transformation +codemodernizer.chat.message.auth_prompt=Follow instructions to re-authenticate ... +codemodernizer.chat.message.button.cancel=Cancel +codemodernizer.chat.message.button.confirm=Confirm +codemodernizer.chat.message.button.open_transform_hub=Open Transformation Hub +codemodernizer.chat.message.button.stop_transform=Stop transformation +codemodernizer.chat.message.button.view_build=View build progress +codemodernizer.chat.message.button.view_diff=View diff +codemodernizer.chat.message.button.view_summary=View summary +codemodernizer.chat.message.error_request=Request failed +codemodernizer.chat.message.follow_up.new_transformation=Start a new transformation +codemodernizer.chat.message.local_build_begin=I'm building your module. This can take up to 10 minutes, depending on the size of your module. +codemodernizer.chat.message.local_build_failed=Sorry, I could not run the Maven clean install command to build your module. +codemodernizer.chat.message.local_build_success=I was able to build your project and will start transforming your code soon. +codemodernizer.chat.message.result.fail=Sorry, I could not complete the transformation. Try starting the transformation again. +codemodernizer.chat.message.result.partially_success=I upgraded part of your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated and the errors that prevented a complete transformation. +codemodernizer.chat.message.result.success=I successfully upgraded your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated. +codemodernizer.chat.message.result.zip_too_large=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 1GB. +codemodernizer.chat.message.resume_ongoing=I'm still transforming your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your module. To monitor progress, go to the Transformation Hub. +codemodernizer.chat.message.transform_begin=I'm starting to transform your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your module. To monitor progress, go to the Transformation Hub. +codemodernizer.chat.message.transform_cancelled_by_user=I cancelled your transformation. If you want to start another transformation, choose **Start a new transformation**. +codemodernizer.chat.message.transform_stopped_by_user=I stopped your transformation. If you want to start another transformation, choose **Start a new transformation**. +codemodernizer.chat.message.transform_stopping=I'm stopping your transformation... +codemodernizer.chat.message.validation.check_eligible_projects=I'm checking for open projects that are eligible for Code Transformation. +codemodernizer.chat.message.validation.check_passed=I can upgrade your Java {0} module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so I can find it. Go to **File** and then **Project Structure** and make sure the correct JDK is selected in the SDK field. +codemodernizer.chat.message.validation.error.more_info=For more information, see the [Amazon Q documentation]({0}). +codemodernizer.chat.message.validation.error.no_pom=Sorry, I could not find a module that I can upgrade. I could not find a pom.xml file in any of your open projects. Currently, I can only upgrade Java 8 or Java 11 projects built on Maven. +codemodernizer.chat.message.validation.error.other=Sorry, I could not find a module that I can upgrade. Currently, I can only upgrade Java 8 or Java 11 projects built on Maven. +codemodernizer.chat.message.validation.error.unsupported_java_version=Sorry, I could not find a module that I can upgrade. Currently, I can only upgrade Java 8 or Java 11 modules built on Maven. If you have a Java 8 or Java 11 module in your workspace, you might need to configure your project so I can find it. Go to **File** and then **Project Structure** and make sure the correct JDK is selected in the SDK field. +codemodernizer.chat.prompt.label.module=Module +codemodernizer.chat.prompt.label.target_version=Target JDK version +codemodernizer.chat.prompt.stop_transform=Stop transformation +codemodernizer.chat.prompt.title.details=Transformation details +codemodernizer.explorer.show_active_job_history=Show job details +codemodernizer.explorer.show_active_job_history_description=View your Code Transform active job details in the ToolWindow +codemodernizer.explorer.show_job_history=Show job history +codemodernizer.explorer.show_job_history_description=View your code transform job history and job details +codemodernizer.explorer.show_transformation_plan_title=View your code transformation plan +codemodernizer.explorer.show_transformation_summary_title=View your code transformation summary +codemodernizer.explorer.stop_migration_job=Stop Transformation +codemodernizer.manager.job_failed_content=The transformation job failed when you were away with reason: {0} +codemodernizer.manager.job_finished_content=The transformation job completed while you were away +codemodernizer.manager.job_finished_title=Job Finished +codemodernizer.manager.job_ongoing_content=Amazon Q is still transforming your code. To see the current status of the transformation, go to the Transformation Hub. +codemodernizer.manager.job_ongoing_title=Code Transformation ongoing +codemodernizer.migration_plan.body.info.action_column=Action +codemodernizer.migration_plan.body.info.appendix_title=Appendix +codemodernizer.migration_plan.body.info.changed_files_column=Files to be changed +codemodernizer.migration_plan.body.info.current_version_column=Current version +codemodernizer.migration_plan.body.info.dependency_name_column=Dependency +codemodernizer.migration_plan.body.info.dependency_replace_message=Dependencies to be replaced +codemodernizer.migration_plan.body.info.deprecated_code_column=Deprecated code +codemodernizer.migration_plan.body.info.deprecated_code_message=Deprecated code instances to be replaced +codemodernizer.migration_plan.body.info.file_column=File +codemodernizer.migration_plan.body.info.files_changed_message=Files to be changed +codemodernizer.migration_plan.body.info.job_statistic_message={0}: {1} +codemodernizer.migration_plan.body.info.lines_of_code_message=Lines of code in your application +codemodernizer.migration_plan.body.info.target_version_column=Target version +codemodernizer.migration_plan.body.steps_intro_subtitle=Amazon Q will use the proposed changes as guidance during the transformation. The final code updates might differ from this plan. Read more. +codemodernizer.migration_plan.body.steps_intro_title=Planned transformation changes +codemodernizer.migration_plan.body.steps_name={0} +codemodernizer.migration_plan.body.steps_scroll_top=Scroll to top +codemodernizer.migration_plan.header.awsq=Amazon Q reviewed your code and generated a transformation plan. Amazon Q will suggest code changes according to the plan, and you can review the updated code before accepting changes to your files. +codemodernizer.migration_plan.header.description=Plan to Transform your project +codemodernizer.migration_plan.header.title=Code Transformation plan by Amazon Q +codemodernizer.migration_plan.substeps.description_failed=Build failed +codemodernizer.migration_plan.substeps.description_stopped=Job is stopped +codemodernizer.migration_plan.substeps.description_succeed=Build succeeded +codemodernizer.migration_summary.header.title=Transformation summary +codemodernizer.notification.info.download.started.content=Downloading the updated code +codemodernizer.notification.info.download.started.title=Download Started +codemodernizer.notification.info.modernize_complete.content=Amazon Q upgraded your code to Java 17. You can review the diff to see the proposed changes and accept or reject them. The transformation summary has details about the files that were updated. +codemodernizer.notification.info.modernize_complete.title=Transform Complete +codemodernizer.notification.info.modernize_complete.view_diff=View diff +codemodernizer.notification.info.modernize_complete.view_summary=View transformation summary +codemodernizer.notification.info.modernize_failed.connection_failed=Amazon Q could not complete the transformation. Try starting the transformation again. {0} +codemodernizer.notification.info.modernize_failed.title=Transformation failed +codemodernizer.notification.info.modernize_failed.unknown_failure_reason=Unknown failure reason +codemodernizer.notification.info.modernize_ongoing.view_status=View status +codemodernizer.notification.info.modernize_partial_complete.content=Amazon Q upgraded part of your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated and the errors that prevented a complete transformation. +codemodernizer.notification.info.modernize_partial_complete.title=Transformation partially successful! +codemodernizer.notification.info.transformation_resume.content=Amazon Q was unable to resume polling for the job you started before closing the project. +codemodernizer.notification.info.transformation_resume.title=Unable to resume polling for job updates. +codemodernizer.notification.info.transformation_start_stopping.as_no_response=Amazon Q could not stop the transformation. +codemodernizer.notification.info.transformation_start_stopping.content=Amazon Q is stopping your transformation. This might take a few seconds. +codemodernizer.notification.info.transformation_start_stopping.failed_content=Amazon Q could not stop the transformation. +codemodernizer.notification.info.transformation_start_stopping.failed_title=Error stopping transformation +codemodernizer.notification.info.transformation_start_stopping.title=Transformation stopping +codemodernizer.notification.info.transformation_stop.content=You cancelled the transformation. To start a new transformation, return to the Q - Transform chat tab. +codemodernizer.notification.info.transformation_stop.title=Transformation cancelled +codemodernizer.notification.info.view_troubleshooting_guide=View troubleshooting guide +codemodernizer.notification.warn.invalid_project.description.reason.invalid_jdk_versions=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. +codemodernizer.notification.warn.invalid_project.description.reason.missing_content_roots=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. +codemodernizer.notification.warn.invalid_project.description.reason.no_valid_files=None of your open modules are supported by Amazon Q Code Transformation. Amazon Q could not find a pom.xml file in any of your open modules. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. +codemodernizer.notification.warn.invalid_project.description.reason.not_logged_in=Amazon Q cannot start the transformation as you are not logged in with Identity Center or Builder ID. Also ensure that you are not using IntelliJ version 232.8660.185 and that you are not developing on a remote host (uncommon). +codemodernizer.notification.warn.invalid_project.description.reason.remote_backend=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven, and cannot upgrade projects running on a remote host. +codemodernizer.notification.warn.maven_failed.content=Amazon Q could not run the Maven clean install command to build your module. +codemodernizer.notification.warn.maven_failed.title=Amazon Q Code Transform unable to zip dependencies +codemodernizer.notification.warn.on_resume.unknown_status_response.content=We received data from Amazon Q in a format that the plugin cannot handle. You may need to update the plugin and then try again. +codemodernizer.notification.warn.on_resume.unknown_status_response.title=Unable to resume job +codemodernizer.notification.warn.submit_feedback=Submit feedback +codemodernizer.notification.warn.unable_to_start_job=Amazon Q could not begin the transformation. Try starting the transformation again. {0} +codemodernizer.notification.warn.unknown_start_failure=Amazon Q could not begin the transformation. Try starting the transformation again. +codemodernizer.notification.warn.unknown_status_response=Amazon Q could not complete the transformation. Try starting the transformation again. +codemodernizer.notification.warn.view_diff_failed.content=Amazon Q could not download and parse the diff with your upgraded code. Try downloading it again. +codemodernizer.notification.warn.view_diff_failed.title=Failed to download and parse diff +codemodernizer.notification.warn.view_summary_failed.content=Unable to display the transformation summary due to an error. +codemodernizer.notification.warn.view_summary_failed.title=Unable to display transformation summary +codemodernizer.notification.warn.zip_creation_failed=Amazon Q could not zip the selected module and begin the transformation. Try starting the transformation again. {0} +codemodernizer.notification.warn.zip_creation_failed.reasons.unknown=An unexpected error occurred +codemodernizer.notification.warn.zip_too_large.content=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 1GB. +codemodernizer.notification.warn.zip_too_large.title=Project size exceeds 1GB limit +codemodernizer.patch.name=Patch with code changes required to upgrade to Java 17 +codemodernizer.toolwindow.banner.action.diff=View diff +codemodernizer.toolwindow.banner.action.feedback=Provide Feedback +codemodernizer.toolwindow.banner.action.plan=View transformation plan +codemodernizer.toolwindow.banner.action.summary=View transformation summary +codemodernizer.toolwindow.banner.job_failed_to_start=Job could not be started. +codemodernizer.toolwindow.banner.job_failed_while_running=Job failed. +codemodernizer.toolwindow.banner.job_is_running=Job is running. +codemodernizer.toolwindow.banner.job_is_stopped=Job is stopped. +codemodernizer.toolwindow.banner.job_starting=Job is starting. +codemodernizer.toolwindow.banner.no_ongoing_job=No job ongoing. +codemodernizer.toolwindow.banner.run_scan_complete=All steps of transformation successful +codemodernizer.toolwindow.banner.run_scan_info=Select 'Transform' in toolbar to upgrade this package. +codemodernizer.toolwindow.label=Transformation Hub - {0} +codemodernizer.toolwindow.label_no_job=Transformation Hub +codemodernizer.toolwindow.problems_mvn_window_not_found=Unable to display Code Transform results as the Maven window cannot be fetched. +codemodernizer.toolwindow.problems_window_not_found=Unable to display Code Transform results as the Problems View tool window cannot be fetched. +codemodernizer.toolwindow.progress.building=Build uploaded code in secure build environment +codemodernizer.toolwindow.progress.parent=Transformation progress +codemodernizer.toolwindow.progress.planning=Generate transformation plan +codemodernizer.toolwindow.progress.transforming=Transform your code to Java 17 using transformation plan +codemodernizer.toolwindow.progress.waiting=Waiting for job to start +codemodernizer.toolwindow.scan_display=Transformation details +codemodernizer.toolwindow.scan_in_progress=Amazon Q is scanning the project files and getting ready to start the job. To start the job, Amazon Q needs to upload the project artifacts. Once that's done, Q can start the transformation job. The estimated time for this operation ranges from a few seconds to several minutes. +codemodernizer.toolwindow.scan_in_progress.accepted=Files have been uploaded to Amazon Q, transformation job has been accepted and is preparing to start. +codemodernizer.toolwindow.scan_in_progress.building=Amazon Q is building your code using Java {0} in a secure build environment. +codemodernizer.toolwindow.scan_in_progress.failed=The step failed, fetching additional details... +codemodernizer.toolwindow.scan_in_progress.planning=Amazon Q is analyzing your code in order to generate a transformation plan. +codemodernizer.toolwindow.scan_in_progress.stopping=Stopping the job... +codemodernizer.toolwindow.scan_in_progress.transforming=Amazon Q is transforming your code. Details will appear soon. +codemodernizer.toolwindow.stop_scan=Stop job +codemodernizer.toolwindow.table.header.date=Date +codemodernizer.toolwindow.table.header.job_id=Job Id +codemodernizer.toolwindow.table.header.module_name=Module name +codemodernizer.toolwindow.table.header.run_length=Job running time +codemodernizer.toolwindow.table.header.status=Status +codemodernizer.toolwindow.transformation.history.header=Transformation job history +codemodernizer.toolwindow.transformation.progress.header=Transformation progress +codemodernizer.toolwindow.transformation.progress.running_time=Running time: {0} +codewhisperer.actions.connect_github.title=Connect with Us on GitHub +codewhisperer.actions.open_settings.title=Open Settings +codewhisperer.actions.send_feedback.title=Send Feedback +codewhisperer.actions.view_documentation.title=View Documentation +codewhisperer.codescan.apply_fix_button_label=Apply fix +codewhisperer.codescan.apply_fix_button_tooltip=Apply suggested fix +codewhisperer.codescan.build_artifacts_not_found=Cannot find build artifacts for the project. Try rebuilding the Java project in IDE or specify compilation output path in File | Project Structure... | Project | Compiler output: +codewhisperer.codescan.cannot_read_file=Error while reading file {0} +codewhisperer.codescan.cwe_label=Common Weakness Enumeration (CWE) +codewhisperer.codescan.detector_library_label=Detector library +codewhisperer.codescan.explain_button_label=Amazon Q: Explain +codewhisperer.codescan.file_ext_not_supported=File extension {0} is not supported for Amazon Q Security Scan feature. Please try again with a valid file format - java, python, javascript, typescript, csharp, yaml, json, tf, hcl, ruby, go. +codewhisperer.codescan.file_name_issues_count= {0} {1} {2, choice, 1#1 issue|2#{2,number} issues} +codewhisperer.codescan.file_not_found=Cannot find file {0} +codewhisperer.codescan.file_too_large=Selected file is larger than {0}. Please try again with a different file. +codewhisperer.codescan.fix_applied_fail=Apply fix command failed. {0} +codewhisperer.codescan.fix_available_label=Code fix available +codewhisperer.codescan.fix_button_label=Fix with Q +codewhisperer.codescan.java_module_not_found=Java plugin is required for scanning Java files, install Java plugin or perform the code scan in Intellij Idea instead. +codewhisperer.codescan.no_file_open=No file is open in an active editor. Please open a file in the editor to start the Security Scan. +codewhisperer.codescan.problems_window_not_found=Unable to display Security Scan results as the Problems View tool window cannot be fetched. +codewhisperer.codescan.run_scan=Run Project Scan +codewhisperer.codescan.run_scan_complete= Security Scan completed for {0, choice, 1#1 file|2#{0,number} files}. {1, choice, 0#No issues|1#1 issue|2#{1,number} issues} found in {2}. {3, choice, 0# |1# File size limit reached.} Last Run {5} +codewhisperer.codescan.run_scan_error=We encountered an error while scanning for security issues. Please try again. +codewhisperer.codescan.run_scan_info=Select 'Run' in toolbar to scan this package for security issues. +codewhisperer.codescan.scan_display=Amazon Q Security Issues +codewhisperer.codescan.scan_display_with_issues=Amazon Q Security Issues {0} +codewhisperer.codescan.scan_in_progress=Scanning active project and its dependencies... +codewhisperer.codescan.scan_recommendation= {0} {1} +codewhisperer.codescan.scan_recommendation_invalid= {0} {1} [No longer valid: Re-scan to validate the fix] +codewhisperer.codescan.scan_recommendation_invalid.tooltip_text=No longer valid. Re-scan to validate the fix. +codewhisperer.codescan.scan_timed_out=Security Scan failed. Amazon Q timed out. +codewhisperer.codescan.scanned_files_heading= {0} files were scanned during the last security scan. +codewhisperer.codescan.service_error=Security Scan failed. Amazon Q error encountered. Please try again. +codewhisperer.codescan.stop_scan=Stop Security Scan +codewhisperer.codescan.stop_scan_confirm_button=Stop scan +codewhisperer.codescan.stop_scan_confirm_message=Are you sure you want to stop ongoing security scan? This scan will be counted as one complete scan towards your monthly security scan limits. +codewhisperer.codescan.stopping_scan=Stopping Security Scan... +codewhisperer.codescan.suggested_fix_description=Why are we recommending this? +codewhisperer.codescan.suggested_fix_label=Suggested code fix preview +codewhisperer.codescan.upload_to_s3_failed=Amazon Q is unable to upload workspace artifacts to Amazon S3 for security scans. For more information, see the Amazon Q documentation or contact your network or organization administrator.
https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security_iam_manage-access-with-policies.html +codewhisperer.codescan.view_scanned_files=View {0} scanned files +codewhisperer.credential.login.dialog.exception.cancel_login=Login cancelled +codewhisperer.credential.login.dialog.ok_button=Connect +codewhisperer.credential.login.dialog.prompt=Select a connection option to start using Amazon Q +codewhisperer.credential.login.exception.general=Ran into unknown error: {0} +codewhisperer.credential.login.exception.general.oidc=Fail to fetch credential +codewhisperer.credential.login.exception.invalid_grant=Access denied +codewhisperer.credential.login.exception.invalid_input=Invalid start url, region, or scopes +codewhisperer.credential.login.exception.io=Unable to access SSO disk cache: {0} +codewhisperer.custom.dialog.customization.no_description=No description provided +codewhisperer.custom.dialog.model.default.comment=Receive suggestions from Amazon Q base model. +codewhisperer.custom.dialog.ok_button.text=Select +codewhisperer.custom.dialog.option.customization=Customization +codewhisperer.custom.dialog.option.customization.description=Receive Amazon Q suggestions based on your company's codebase. +codewhisperer.custom.dialog.option.customization.description.no_customization=Contact your administrator for access to Amazon Q customizations. After you have access, they will be displayed in the dropdown below. Learn more (external link) +codewhisperer.custom.dialog.option.default=Amazon Q foundation (Default) +codewhisperer.custom.dialog.option.no_data=No customizations available +codewhisperer.custom.dialog.panel.title=Select an Amazon Q customization +codewhisperer.custom.dialog.title=Amazon Q Customization +codewhisperer.experiment=Amazon Q +codewhisperer.explorer.code_reference.open=Open Code Reference Log +codewhisperer.explorer.customization.select=Select Customization +codewhisperer.explorer.enable=Start +codewhisperer.explorer.enabled=\ Enabled +codewhisperer.explorer.learn=Learn +codewhisperer.explorer.node.dismiss=Dismiss +codewhisperer.explorer.node.install_q=Install the Amazon Q Extension +codewhisperer.explorer.pause_auto=Pause Auto-Suggestions +codewhisperer.explorer.pause_auto_scans =Pause Auto-Scans +codewhisperer.explorer.paused=\ Paused +codewhisperer.explorer.reconnect=Reconnect +codewhisperer.explorer.resume_auto=Resume Auto-Suggestions +codewhisperer.explorer.resume_auto_scans =Resume Auto-Scans +codewhisperer.explorer.tooltip.comment=Start with auto-suggestions and find more features here! +codewhisperer.explorer.tooltip.title=Get started with Amazon Q +codewhisperer.explorer.usage_limit_hit=\ Free tier limit met, paused until {0} +codewhisperer.explorer.what_is=Learn More about Amazon Q +codewhisperer.gettingstarted.panel.comment=Build, maintain and transform applications
using generative AI. +codewhisperer.gettingstarted.panel.learn_more=Learn more +codewhisperer.gettingstarted.panel.learn_more.with.q=Learn more about Amazon Q and Codewhisperer +codewhisperer.gettingstarted.panel.licence_comment=Already have a license? +codewhisperer.gettingstarted.panel.login_button=Use for free, no AWS account required +codewhisperer.language.error={0} is currently not supported by Amazon Q +codewhisperer.learn_page.banner.dismiss=Dismiss +codewhisperer.learn_page.banner.message.new_user=You can always return to this page by clicking "Learn" in the Amazon Q status bar menu. +codewhisperer.learn_page.examples.description.part_1=Amazon Q inline suggestions support +codewhisperer.learn_page.examples.description.part_2=15 programming languages +codewhisperer.learn_page.examples.description.part_3=, including Java, JavaScript, Python, Go, and more. +codewhisperer.learn_page.examples.tasks.button=Try example +codewhisperer.learn_page.examples.tasks.description_1=Generate code suggestions as you type +codewhisperer.learn_page.examples.tasks.description_2.mac=Generate code suggestions manually using Option + C +codewhisperer.learn_page.examples.tasks.description_2.win=Generate code suggestions manually using Alt + C +codewhisperer.learn_page.examples.tasks.description_3=Generate unit test cases +codewhisperer.learn_page.examples.title=Generate code suggestions with examples +codewhisperer.learn_page.header.description=An AI assistant that reimagines your experience across the entire development lifecycle +codewhisperer.learn_page.header.title=Amazon Q inline code suggestions +codewhisperer.loading_licenses=Loading Licenses Info +codewhisperer.notification.accountless.error.action.connect=Connect with AWS +codewhisperer.notification.accountless.warn.action.connect=Connect with AWS to Continue +codewhisperer.notification.custom.new_customization=You have access to new Amazon Q customizations +codewhisperer.notification.custom.not_available=Selected Amazon Q customization is not available. Contact your administrator. Your instance of Amazon Q is using the foundation model. +codewhisperer.notification.custom.simple.button.got_it=Got it +codewhisperer.notification.custom.simple.button.select_another_customization=Select another customization +codewhisperer.notification.custom.simple.button.select_customization=Select customization +codewhisperer.notification.remote.ide_unsupported.message=Please update your IDE backend to a 2023.3 or later version to continue using Amazon Q inline suggestions. +codewhisperer.notification.remote.ide_unsupported.title=Amazon Q inline suggestion not supported in this IDE version +codewhisperer.notification.usage_limit.codescan.warn.content=Maximum project scan count reached for this month. +codewhisperer.notification.usage_limit.codesuggestion.warn.content=You have reached the monthly fair use limit of code recommendations. +codewhisperer.popup.button.accept=
 Insert Code 
\u21E5
+codewhisperer.popup.button.next=
Next
+codewhisperer.popup.button.prev=
Previous
+codewhisperer.popup.import_info=

If you insert code, "{0}"{2, choice, 0#|1# and {1} other import|2# and {1} other imports} will also be added.

+codewhisperer.popup.no_recommendations=No Amazon Q recommendations available at this point +codewhisperer.popup.pagination_info=Loading additional Amazon Q suggestions... +codewhisperer.popup.recommendation_info=Suggestion {0} of {1} from Amazon Q +codewhisperer.popup.reference.license_info.prefix= Reference code under  +codewhisperer.popup.reference.panel_link=View Log +codewhisperer.statusbar.display_name=Amazon Q +codewhisperer.statusbar.popup.title=Reconnect to Amazon Q? +codewhisperer.statusbar.sub_menu.connect_help.title=Connect / Help +codewhisperer.statusbar.sub_menu.inline.title=Inline Suggestions +codewhisperer.statusbar.sub_menu.other_features.title=Other Features +codewhisperer.statusbar.sub_menu.security_scans.title=Security Scans +codewhisperer.statusbar.tooltip=Amazon Q status +codewhisperer.toolwindow.entry.prefix=[{0}] ACCEPTED recommendation with the following code provided with reference under +codewhisperer.toolwindow.entry.suffix= {1, choice, 0#|1#. Added to {0}} at line {2} +codewhisperer.toolwindow.popup.text=Reference code under the {0} license from repository {1} +codewhisperer.toolwindow.settings=Amazon Q Settings +codewhisperer.toolwindow.settings.prefix=Don't want suggestions that include code with references? Uncheck this option in +codewhisperer.toolwindow.settings.prefix_sso=Your organization controls whether suggestions include code with references. To update these settings, please contact your admin +codewhisperer.trigger.document.unsupported=Amazon Q inline suggestion is not supported for this file +codewhisperer.trigger.error.client_side=Unable to show recommendations, please try again later +codewhisperer.trigger.error.server_side=Unable to get recommendations, please try again later +codewhisperer.trigger.ide.unsupported=Amazon Q inline suggestion is only supported in 2023.3+ IDE backends +codewhisperer.trigger.service=Invoke Amazon Q inline suggestions +common.none=None +configure.toolkit=Configure AWS Connection +configure.toolkit.upsert_credentials.action=Edit AWS Credential file(s)... +configure.toolkit.upsert_credentials.confirm_file_create=Credentials file {0} does not exist. Create it? +configure.toolkit.upsert_credentials.confirm_file_create.okay=Create +configure.toolkit.upsert_credentials.confirm_file_create.title=Create Credential File +configure.validate.no_region_specified=Must specify a region. +connection.pinning.unlink=Unlink connection from {0} +credentials.could_not_open=Could not open credential file {0} for editing +credentials.file.notification=AWS Toolkit profiles will be reloaded on save +credentials.individual_identity.connected=(connected to tools) +credentials.individual_identity.expired=(expired or invalid) +credentials.individual_identity.reconnect=Reconnect +credentials.individual_identity.signout=Sign out +credentials.invalid.description=Failed to validate your AWS credentials +credentials.invalid.invalid_selection=Please select a valid credential profile +credentials.invalid.more_info=More info... +credentials.invalid.not_found=''{0}'' (not found) +credentials.invalid.title=Invalid AWS Connection +credentials.mfa.action=Enter MFA code +credentials.mfa.display=''{0}'' requires MFA to connect +credentials.mfa.display.short=MFA code required +credentials.mfa.message=Enter MFA code for device: {0} +credentials.mfa.title=MFA Required to Connect to AWS Using {0} +credentials.pending.title=Waiting for sign in +credentials.pending.user_cancel.message=Login canceled by user +credentials.profile.assume_role.duplicate_source=profile ''{0}'' contains both properties ''source_profile'' and ''credential_source'' +credentials.profile.assume_role.invalid_credential_source=profile ''{0}'' is not using a valid ''credential_source'' +credentials.profile.assume_role.missing_source=profile ''{0}'' missing either property ''source_profile'' or ''credential_source'' +credentials.profile.circular_profiles=Profile ''{0}'' is invalid due to a circular profile dependency found between {1} +credentials.profile.credential_process.execution_exception_prefix=Failed to execute credential_process ({0}) +credentials.profile.credential_process.parse_exception_prefix=Failed to parse credential_process response +credentials.profile.credential_process.timeout_exception_prefix=Execution of credential_process ({0}) timed out +credentials.profile.failed_load=Failed to load AWS profiles +credentials.profile.missing_property=Profile ''{0}'' is missing required property {1} +credentials.profile.name=Profile:{0} +credentials.profile.not_configured=No active credential provider configured +credentials.profile.refresh_errors=Failed to load {0, choice, 1#1 profile|2#{0,number} profiles}. +credentials.profile.refresh_ok_message={0, choice, 1#1 profile|2#{0,number} profiles} found. +credentials.profile.refresh_ok_title=Reloaded AWS Credential Profiles +credentials.profile.source_profile_not_found=Profile ''{0}'' references source profile ''{1}'' which does not exist +credentials.profile.unsupported=Profile ''{0}'' is not using role-based, session-based, process-based, or basic credentials. +credentials.profile.validation_error=Failed to switch to profile ''{0}'' +credentials.refreshing=Refreshing tokens +credentials.retrieving=Retrieving AWS credentials +credentials.sono.login=Sign in with AWS Builder ID +credentials.sono.login.cancelled=AWS Builder ID login cancelled +credentials.sono.login.failed=AWS Builder ID login Failed +credentials.sono.login.message=Sign in with AWS Builder ID at {0}, code: {1} +credentials.sono.login.pending=Waiting for AWS Builder ID sign in +credentials.sono.login.refreshing=Refreshing tokens from AWS Builder ID +credentials.sono.login.title=AWS Builder ID Login Required +credentials.sso.action=Start AWS IAM Identity Center login +credentials.sso.display=''{0}'' requires you to re-login with AWS IAM Identity Center +credentials.sso.display.short=AWS IAM Identity Center login required +credentials.sso.login.cancelled=AWS IAM Identity Center login cancelled +credentials.sso.login.failed=AWS IAM Identity Center Login Failed +credentials.sso.login.message=Login to AWS at {0}, code: {1} +credentials.sso.login.open_browser=Open Browser +credentials.sso.login.pending=Waiting for AWS IAM Identity Center sign in +credentials.sso.login.refreshing=Refreshing tokens from AWS IAM Identity Center +credentials.sso.login.session=Sign in to SSO session ''{0}'' +credentials.sso.login.title=AWS IAM Identity Center Login Required +credentials.ssoSession.validation_error=Profile ''{0}'' references sso-session ''{1}'' which does not exist +credentials.switch.confirmation.comment=Use {0} with {1} while using {2} with other services. +credentials.switch.confirmation.no=Not now +credentials.switch.confirmation.title=Stay connected to {0} with {1}? +credentials.switch.confirmation.yes=Yes +credentials.switch.notification.title={0} will now always use {1} +credentials.welcome.provide=Provide AWS Credentials +datagrip.auth.secrets_manager=SecretsManager Auth +datagrip.secret_host=Use the url and port from the secret +datagrip.secret_id=Secret Name/ARN: +datagrip.secretsmanager.action=Connect with Secrets Manager... +datagrip.secretsmanager.action.confirm_continue=

{0}


Continue setting up the database?

+datagrip.secretsmanager.action.confirm_continue_title=The selected secret seems to be for a different database +datagrip.secretsmanager.action.title=Select a Secret +datagrip.secretsmanager.validating=Validating selected secret +datagrip.secretsmanager.validation.different_address=Secret {0} specifies a different database address ''{1}'' +datagrip.secretsmanager.validation.different_engine=Secret {0} specifies a different database engine ''{1}'' +datagrip.secretsmanager.validation.exception=Exception thrown while validating secret +datagrip.secretsmanager.validation.failed_to_get=Failed to retrieve secret {0} +datagrip.secretsmanager.validation.no_host=Secret {0} does not have a field named ''host'' +datagrip.secretsmanager.validation.no_password=Secret {0} does not have a field named ''password'' +datagrip.secretsmanager.validation.no_port=Secret {0} does not have a field named ''port'' +datagrip.secretsmanager.validation.no_secret=No SecretsManager secret specified +datagrip.secretsmanager.validation.no_username=Secret {0} does not have a field named ''username'' +datagrip.secretsmanager.validation.unkown_engine=Unknown database engine {0} +datagrip.validation.invalid_credential_specified=Invalid credential profile {0} selected! +datagrip.validation.invalid_region_specified=Invalid region {0} selected! +date.in.n.hours={0,choice, 0#0 hours|1#1 hour|2#{0,number} hours} +date.in.n.minutes={0,choice, 0#0 minutes|1#1 minute|2#{0,number} minutes} +delete_resource.confirmation_text=delete me +delete_resource.delete_failed=Failed to delete {0} ''{1}'' +delete_resource.deleted=Deleted {0} ''{1}'' +delete_resource.message=Are you sure you want to delete {0} ''{1}''?\n\nType "delete me" below to confirm. +delete_resource.title=Delete {0} {1} +developerTool.toolWindow.help=Need help? +developerTool.toolWindow.help.docs=Learn more about connecting to AWS +developerTool.toolWindow.help.github=Connect with us on GitHub +developerTool.toolWindow.title=Developer Tools +developerTool.toolWindow.welcome.connect=Connect to an account to get started: +developerTool.toolWindow.welcome.creds.about=You can connect to and switch between\naccounts at any time in the toolkit. +docker.not.found=Docker not found +dockerfile.building=Building Dockerfile: {0} +dockerfile.label=Dockerfile: +dynamic_resources.add_remove_resources_tooltip={0} resources available +dynamic_resources.begin_resource_creation=Started new {0} creation... +dynamic_resources.create_resource_action=Create {0} +dynamic_resources.create_resource_file_empty=Resource model is empty. Do you want to continue? +dynamic_resources.create_resource_file_empty_title=Empty Resource Model +dynamic_resources.create_resource_file_name=Create new {0} +dynamic_resources.create_resource_instruction=Creating a resource: Enter resource properties, click Create +dynamic_resources.delete_resource=Delete resource... +dynamic_resources.edit_resource_instruction=File is read-only, click Edit to begin editing the resource +dynamic_resources.editor.enableEditingResource_text=Edit +dynamic_resources.editor.submitResourceUpdateRequest_text=Update +dynamic_resources.experiment.description=Enables basic JSON-based create, update, and delete support for cloud resources through the Resources node in the AWS Explorer +dynamic_resources.experiment.title=JSON Resource Modification +dynamic_resources.fetch.fail.content=Failed to retrieve resource model for {0} +dynamic_resources.fetch.fail.title=Open resource model +dynamic_resources.fetch.fetch=Retrieving model +dynamic_resources.fetch.indicator_title=Open resource model for {0} +dynamic_resources.fetch.open=Opening model in IDE +dynamic_resources.loading_manifest=Loading AWS resource manifest +dynamic_resources.openFileForUpdate_text=Update resource... +dynamic_resources.openReadOnlyFile_text=View Resource +dynamic_resources.operation_status_failed=Failed to {1} {0}: {2} +dynamic_resources.operation_status_failed_no_message=Failed to {1} {0} +dynamic_resources.operation_status_notification_title={0} {1} status +dynamic_resources.operation_status_success=Successfully {1}d {0} +dynamic_resources.resource_creation={0} Creation +dynamic_resources.type.explorer.create_resource=Create resource... +dynamic_resources.type.explorer.view_documentation=View documentation +dynamic_resources.unavailable_in_region=Unavailable in {0} +dynamic_resources.update_resource_instruction=Click Update to save your changes +dynamic_resources.update_resource_no_changes_made=No changes made, do you want to continue editing? +dynamic_resources.update_resource_no_changes_made_title=Resource model unchanged +dynamodb.experiment.description=List, open and query Amazon DynamoDB tables +dynamodb.experiment.title=DynamoDB table viewer +dynamodb.viewer.open.failed=Failed to open DynamoDB table +dynamodb.viewer.open.failed.with_error=Failed to open DynamoDB table: {0} +dynamodb.viewer.search.index.global=Global +dynamodb.viewer.search.index.label=Table / Index: +dynamodb.viewer.search.index.local=Local +dynamodb.viewer.search.run.title=Run +dynamodb.viewer.search.title=Scan +ecr.copy_image_uri.action=Copy Tag URI +ecr.copy_uri.action=Copy Repository URI +ecr.create.app_runner_service.action=Create App Runner Service... +ecr.create.repo.action=Create Repository... +ecr.create.repo.title=Create ECR Repository +ecr.create.repo.validation.empty=Enter a name +ecr.delete.repo.action=Delete Repository... +ecr.delete.tag.action=Delete {0, choice, 1#Tag|2#{0,number} Tags}... +ecr.delete.tag.deleting=Deleting Tags +ecr.delete.tag.description=Are you sure you want to delete {0, choice, 1#1 tag|2#{0,number} tags} from repository {1}? +ecr.delete.tag.failed=Failed to delete {0, choice, 1#tag|2#{0,number} tags} from repository {1} +ecr.delete.tag.succeeded=Deleted {0, choice, 1#tag|2#{0,number} tags} from repository {1} +ecr.dockerfile.configuration.add=New configuration from Dockerfile... +ecr.dockerfile.configuration.edit=Edit Dockerfile configuration... +ecr.dockerfile.configuration.invalid=Invalid Dockerfile run configuration selected +ecr.dockerfile.configuration.invalid_server=Dockerfile run configuration has an invalid server connection +ecr.dockerfile.configuration.label=Dockerfile configuration: +ecr.dockerfile.label=Dockerfile: +ecr.image.not_selected=Image must be selected +ecr.pull.confirm=Pull +ecr.pull.progress=Pulling image from ECR: {0}:{1} +ecr.pull.title=Pull from ECR +ecr.push.confirm=Push +ecr.push.credential_fetch_failed=Failed to obtain authorization token from ECR +ecr.push.failed=Push failed: {0} +ecr.push.in_progress=Deployment with name '{0}' is already being pushed. +ecr.push.remoteTag=Remote Tag: +ecr.push.source=Local Image: +ecr.push.title=Push to ECR +ecr.push.type.dockerfile.label=Dockerfile +ecr.push.type.local_image.label=Local Image +ecr.push.unknown_exception=Failed to push to ECR +ecr.repo.label=ECR Repository: +ecr.repo.not_selected=ECR Repository must be selected +ecr.tag.invalid=Tag provided is not valid +ecs.clusters=Clusters +ecs.container_actions_group.label=Containers +ecs.execute_command.experiment.description=Enable executing commands and opening interactive terminal against a running ECS task/service +ecs.execute_command.experiment.title=ECS Execute Command +ecs.execute_command.label=Command: +ecs.execute_command.production_warning.checkbox_label=I confirm {0} is not a production service and wish to continue +ecs.execute_command_call_service=Executing command +ecs.execute_command_disable=Disable Command Execution +ecs.execute_command_disable_failed=Execute Command could not be disabled for {0} +ecs.execute_command_disable_in_progress=Cannot execute action since Execute Command is being disabled for {0} +ecs.execute_command_disable_progress_indicator_message=Disabling Command Execution for {0} +ecs.execute_command_disable_success=Execute Command for {0} has been disabled. +ecs.execute_command_disable_warning=Disabling command execution will change the state of resources in your AWS account, including but not limited to stopping and restarting the service.
Do you wish to continue? +ecs.execute_command_disable_warning_title=Disable Execute Command Warning +ecs.execute_command_enable=Enable Command Execution +ecs.execute_command_enable_failed=Execute Command could not be enabled for {0} +ecs.execute_command_enable_in_progress=Cannot execute action since Execute Command is being enabled for {0} +ecs.execute_command_enable_progress_indicator_message=Enabling Command Execution for {0} +ecs.execute_command_enable_success=Execute Command for {0} has been enabled. +ecs.execute_command_enable_warning=Enabling command execution will change the state of resources in your AWS account, including but not limited to stopping and restarting the service.
Altering the state of resources while the Execute Command is enabled can lead to unpredictable results.
Do you wish to continue? +ecs.execute_command_enable_warning_title=Enable Execute Command Warning +ecs.execute_command_failed=ECS Execute Command Failed +ecs.execute_command_no_command=Command to execute must be entered +ecs.execute_command_no_task_role_found_exception=No roles found +ecs.execute_command_permissions_not_verified=Permissions for ECS Exec could not be verified. Please ensure you have the right role and permissions before proceeding +ecs.execute_command_permissions_required_title=Permissions required for ECS Exec +ecs.execute_command_run=Run Command... +ecs.execute_command_run_command_default_text=Enter command... +ecs.execute_command_run_command_in_shell=Open Interactive Shell... +ecs.execute_command_shell.label=Shell: +ecs.execute_command_shell_comboBox_empty=Shell must be selected +ecs.execute_command_task.label=Task: +ecs.execute_command_task_comboBox_empty=Task must be selected +ecs.execute_command_task_role_invalid_warning=You may not have the Permissions Required for using the execute command
Please set up a Task Role with the required permissions and retry... +ecs.execute_command_task_role_invalid_warning_title=Set up Valid Task Role with Permissions +ecs.no_services_in_cluster=Cluster has no services +ecs.run_config.container.loading.error=Error loading containers: {0} +ecs.service.container_logs.action_label=View Logs +ecs.service.logs.cannot_determine_log_stream=Cannot determine log streams for service {0}. Note: only AWSLOGS LogDriver is supported. +ecs.service.logs.cannot_find_container_log_stream=Cannot determine log stream for container {0}. +ecs.service.logs.empty=No events found in log stream: {0} +ecs.service.logs.no_log_stream=Running task has not sent events to CloudWatch, opening Log Group instead. +ecs.service.logs.no_running_tasks=Service has no running tasks, opening Log Group instead. +ecs.service.logs.title=ECS Service Logs +ecs.service.not_found=Service {0} not found in cluster {1} +ecs.task_definition.json_schema_name=AWS ECS Task Definition +ecs.task_definitions=Task Definitions +environment.variables.dialog.title=Environment Variables +executableCommon.auto_managed=Managed by AWS Toolkit +executableCommon.auto_resolved=Auto-detected: {0} +executableCommon.cli_not_configured={0} executable not configured +executableCommon.configurable.title=External Tools +executableCommon.downloading=Downloading {0}... +executableCommon.empty_info={0} did not provide any output +executableCommon.failed_install=Failed to install {0} +executableCommon.installing=Installing {0} +executableCommon.latest_not_compatible=Latest version of {0} is not compatible with the toolkit''s supported range: {1} +executableCommon.missing_executable=Validation of {0} failed: {1} +executableCommon.not_installed=Not installed. +executableCommon.unexpected_output={0} provided unexpected output. Ensure that your {0} is up-to-date: "{1}" +executableCommon.updating=Updating {0} +executableCommon.validating=Validating {0} +executableCommon.version_parse_error=Could not parse {0} executable version from "{1}" +executableCommon.version_range_wrong=Bad {0} executable version. Expected version must be within the following ranges: {1} , but was {2} +executableCommon.version_too_high=Upgrade your AWS Toolkit plugin to resolve this issue. +executableCommon.version_too_low=Upgrade your {0} to resolve this issue. +executableCommon.version_too_low2=Upgrade {0} to resolve this issue. Minimum version for this feature is {1} +executableCommon.version_wrong=Bad {0} executable version. Expected {1} ≤ version < {2} but was {3}. +explorer.copy_arn=Copy Arn +explorer.copy_identifier=Copy identifier +explorer.create_new_issue=Create a New Issue on GitHub +explorer.empty_node=empty +explorer.error_loading_resources=Error Loading Resources ({0}) +explorer.error_loading_resources_default_details=check log for details +explorer.error_loading_resources_not_connected=check credentials/region +explorer.label=AWS Explorer +explorer.node.apprunner=App Runner +explorer.node.cloudformation=CloudFormation +explorer.node.cloudwatch=CloudWatch Logs +explorer.node.codemodernizer=CodeModernizer +explorer.node.dynamo=DynamoDB +explorer.node.ecr=ECR +explorer.node.ecs=ECS +explorer.node.lambda=Lambda +explorer.node.other=Resources +explorer.node.other.add_remove=Add or remove resource types... +explorer.node.rds=RDS +explorer.node.redshift=Redshift +explorer.node.s3=S3 +explorer.node.schemas=Schemas +explorer.node.sqs=SQS +explorer.registry.no.schema.resources=Registry has no Schemas +explorer.results_truncated=Results truncated, double click to load more +explorer.stack.no.serverless.resources=Stack has no Lambda Functions +explorer.toolwindow.title=Explorer +explorer.view_documentation=View Documentation +explorer.view_source=View Source on GitHub +feedback.comment.emptyText=optional +feedback.comment.label=Please enter your feedback +feedback.comment.textbox.initial.length=2000 characters remaining +feedback.comment.textbox.title=What do you like about {0}? What can we improve? +feedback.comment.textbox.title.amazonq=How was your experience with the upgrade of your Java application? +feedback.comment.textbox.title.amazonq.feature_dev=How has your experience with Amazon Q been? What can we improve? +feedback.connect.with.github.title=Join us on GitHub +feedback.customer.alert.info=Please don't add personally identifiable information (PII), confidential or sensitive information in your feedback.
Remove any PII when sharing file paths, error messages, etc. +feedback.description=Submit quick feedback about the AWS Toolkit for JetBrains +feedback.github.link=Have an issue or feature request?
Talk to us on GitHub instead! +feedback.initial.help.text=
Looking for help? View the Getting Started Guide or search our documentation +feedback.limit.label={0} characters remaining +feedback.report.issue.link=Report an issue +feedback.request.feature.link=Request a feature +feedback.share.feedback.title=Share Feedback +feedback.smiley.happyTooltip=Positive +feedback.smiley.question=How was your experience? +feedback.smiley.sadTooltip=Negative +feedback.submit_button=Share +feedback.submit_failed=An exception occurred while sharing your feedback: {0} +feedback.submit_failed_title=Failed to share feedback +feedback.submit_success=Thanks for the feedback! +feedback.submitting=Sharing... +feedback.title=Share Feedback for {0}... +feedback.title.amazonq=Send feedback for Code Transformation by Amazon Q +feedback.title.amazonq.feature_dev=Send feedback for Amazon Q +feedback.validation.comment_too_long=Comment is too long. +feedback.validation.empty_comment=Please provide a comment. +feedback.validation.no_sentiment=Please select how you're feeling. +feedback.view.source.code.link=View Source Code and Contribute +gateway.auth.different.account.already.signed.in=You are signed in with {0}. Do you want to continue? +gateway.auth.different.account.required=You are signed into a different account. \nDo you want to sign in with the account associated with {0}? +gateway.auth.different.account.sign.in=Sign in with a different account +gateway.connection.workflow.copy_scripts=Copy Scripts +gateway.connection.workflow.git_clone=Git Clone +gateway.connection.workflow.install_toolkit=Install AWS Toolkit +gateway.connection.workflow.prime_ssh_agent=Prime SSH Agent +gateway.connection.workflow.start_ide=Start IDE +gateway.connection.workflow.step_failed=\nStep failed exceptionally\n +gateway.connection.workflow.step_skipped=Step skipped +gateway.connection.workflow.step_successful=\nStep completed successfully\n +general.add.another=Add another +general.auth.reauthenticate=Reauthenticate +general.cancel=Cancel +general.close_button=Close +general.configure_button=Configure +general.confirm=Confirm +general.confirm_proceed=Please confirm before proceeding +general.create=Create +general.create_button=Create +general.create_in_progress=Creating... +general.default=Default +general.delete=Delete +general.delete_accessible_name=Delete confirmation box +general.details=(details) +general.execute_button=Execute +general.execution.canceled=canceled +general.execution.cli_error=Command did not exit successfully, exit code: {0}\n +general.execution.failed=failed +general.execution.running=running... +general.execution.success=completed successfully +general.file_not_found=File not found: "{0}" +general.get_started=Get started +general.help=Help +general.in_progress_button=In progress +general.logs=Logs +general.message=Message +general.more=More +general.name.label=Name: +general.no_changes=No changes were provided +general.notification.action.hide_forever=Don't show again +general.notification.action.hide_once=Dismiss +general.open.in.progress=Opening... +general.open_in_aws_console=Open in AWS Console +general.open_in_aws_console.error=Failed to open link in browser +general.open_in_aws_console.no_permission=Failed to open link in browser because user credentials are not allowed to perform sts:GetFederationToken +general.optional=Optional +general.policy=Policy +general.refresh=Refresh +general.reject=Reject +general.save=Save +general.select_button=Select +general.step.canceled={0} has been canceled +general.step.failed={0} has failed: {1} +general.time=Time +general.time.five_minutes=Five Minutes +general.time.one_minute=One Minute +general.time.ten_minutes=Ten Minutes +general.unknown_error=Unknown error. See IDE logs for more details. +general.update_button=Update +general.update_in_progress=Updating... +gettingstarted.auth.builderid.expired=AWS Builder ID Expired +gettingstarted.auth.config.issue=There was an issue reading your AWS config file(s): {0} +gettingstarted.auth.connected.builderid=Connected with AWS Builder ID +gettingstarted.auth.connected.iam=Connected with IAM +gettingstarted.auth.connected.idc=Connected with IAM Identity Center +gettingstarted.auth.iam.invalid=Invalid IAM Credentials +gettingstarted.auth.idc.expired=IAM Identity Center Expired +gettingstarted.auth.idc.sign.out.confirmation=Signing out will remove profiles associated with this connection from the ~/.aws/config file +gettingstarted.auth.idc.sign.out.confirmation.title=Confirm deletion of profile +gettingstarted.builderid.description=Personal profile for builders +gettingstarted.codecatalyst.open.explorer=Open CodeCatalyst menu +gettingstarted.codecatalyst.panel.create.space=Create a CodeCatalyst space +gettingstarted.codecatalyst.panel.setup=Set up CodeCatalyst +gettingstarted.codewhisperer.remote=Amazon Q chat are unavailable in JetBrains Gateway +gettingstarted.connecting.in.browser=Connecting in browser... +gettingstarted.editor.title=Authenticate with AWS Toolkit +gettingstarted.explorer.gotit.codecatalyst.body=Launch Dev Environments and find more features here. +gettingstarted.explorer.gotit.codecatalyst.title=Get started with CodeCatalyst +gettingstarted.explorer.gotit.explorer.body=IAM Credentials you add will be accessible from this dropdown. Add and edit credentials from the "..." menu. +gettingstarted.explorer.gotit.explorer.title=Switch and edit credentials +gettingstarted.explorer.iam.add=Add IAM Credentials +gettingstarted.explorer.iam.add.info=Provide IAM Credentials to work with AWS Services and Resources from the Explorer. +gettingstarted.explorer.iam.switch=Switch to an IAM role in the dropdown above to work with AWS Services and Resources in the Explorer +gettingstarted.explorer.new.setup=Setup Authentication +gettingstarted.explorer.new.setup.info=To get started with the Explorer, setup authentication to AWS +gettingstarted.explorer.open.menu=Open Resource Explorer +gettingstarted.iam.description=Long-term programmatic access +gettingstarted.panel.learn_more=Learn more +gettingstarted.panel.login_button=Use for free, no AWS account required +gettingstarted.setup.auth.failure.body=We are unable to connect or the process was cancelled. Please try again, visit documentation, or file an issue on GitHub to troubleshoot +gettingstarted.setup.auth.failure.title=Authentication Failed +gettingstarted.setup.auth.no_iam=Amazon Q do not support authentication with IAM Credentials +gettingstarted.setup.auth.success.body=You can start using {0} or setup another authentication method below. +gettingstarted.setup.auth.success.iam.body=We've connected your local credentials. Get started with the Resource Explorer or setup another feature below. +gettingstarted.setup.auth.success.iam.title=Connected to IAM Credentials +gettingstarted.setup.auth.success.title=Connected to {0} +gettingstarted.setup.builderid.bullets=Sign up for free\nComplement your existing AWS accounts\nSecure login with optional MFA +gettingstarted.setup.builderid.notice=AWS Builder ID is a new personal profile for builders. Learn more +gettingstarted.setup.codecatalyst.no_iam=CodeCatalyst does not support authentication with IAM Credentials +gettingstarted.setup.codewhisperer.use_builder_id=If you haven't been provided an Amazon Q license, use AWS Builder ID +gettingstarted.setup.codewhisperer.use_identity_center=If you have an Amazon Q license, please use IAM Identity Center +gettingstarted.setup.connect=Connect +gettingstarted.setup.error.not_empty=Must not be empty +gettingstarted.setup.error.not_selected=Selection must be made +gettingstarted.setup.explorer.no_builder_id=Resource Explorer does not support authentication with AWS Builder ID. +gettingstarted.setup.iam.access_key=Access Key ID: +gettingstarted.setup.iam.access_key.invalid=Access key must be alphanumeric and between 16 and 128 characters +gettingstarted.setup.iam.notice=Credentials will be automatically added to your local ~/.aws/config file as a profile.
Edit credential file directly... +gettingstarted.setup.iam.profile=Profile Name: +gettingstarted.setup.iam.profile.comment=Used by AWS Toolkit to list added credentials +gettingstarted.setup.iam.profile.exists=Profile with name ''{0}'' already exists +gettingstarted.setup.iam.profile.invalid_credentials=The provided credentials are not valid +gettingstarted.setup.iam.secret_key=Secret Access Key: +gettingstarted.setup.iam.session.exists=SSO Session with name ''{0}'' already exists +gettingstarted.setup.idc.no_builder_id=User should not perform Identity Center login with AWS Builder ID url +gettingstarted.setup.idc.profile.comment=User-specified name used to label credentials locally +gettingstarted.setup.idc.region=Region: +gettingstarted.setup.idc.role=Role: +gettingstarted.setup.idc.role.title=AWS Toolkit: Add IAM Identity Center Roles +gettingstarted.setup.idc.roleLabel=Select roles from IAM Identity Center to use with the AWS Toolkit +gettingstarted.setup.idc.startUrl=Start URL: +gettingstarted.setup.idc.startUrl.comment=URL for your organization, provided by an administrator or help desk +gettingstarted.setup.learnmore=Learn More +gettingstarted.setup.tabs.builderid=AWS Builder ID +gettingstarted.setup.tabs.iam=IAM Credentials +gettingstarted.setup.tabs.idc=IAM Identity Center +gettingstarted.setup.title=AWS Toolkit: Setup Authentication +group.aws.toolkit.dynamoViewer.toolbar.settings.text=Settings +group.aws.toolkit.jetbrains.core.services.cwc.actions.ContextMenuActions.text=Send to Amazon Q +group.aws.toolkit.s3viewer.contextMenu.copyGroup.text=Copy +iam.create.role.in_progress=Creating... +iam.create.role.managed_policies=Managed Policies: +iam.create.role.missing.role.name=Role name is required. +iam.create.role.name.label=Name: +iam.create.role.policy.editor.name=Permissions +iam.create.role.title=Create IAM Role +iam.create.role.trust.editor.name=Trust Relationships: +iam.name=IAM +iam_identity_center.name=IAM Identity Center +iam_identity_center.service_name=IAM Identity Center ({0}) +iam_identity_center.sign_out=Sign out of IAM Identity Center +lambda.build.java.unsupported_build_system=Module ''{0}'' is not managed by Maven or Gradle +lambda.build.module_with_no_content_root=Module ''{0}'' lacks a content root +lambda.build.typescript.compiler.annotation_results=Annotation Results: +lambda.build.typescript.compiler.creating_config=Creating TypeScript config from scratch +lambda.build.typescript.compiler.emitted_files=Emitted Files: +lambda.build.typescript.compiler.ide_error=TypeScript compiler failed to start +lambda.build.typescript.compiler.processed_files=Processed Files: +lambda.build.typescript.compiler.running=Running TypeScript compiler against temporary config file ''{0}'' +lambda.build.typescript.compiler.step=Compile TypeScript +lambda.build.typescript.compiler.using_base=Using TypeScript config ''{0}'' as a base +lambda.build.typescript.compiler.using_base_error=Unable to read existing TypeScript config ''{0}'' +lambda.build.unable_to_locate_handler_root=Unable to locate root directory of the handler +lambda.build.unable_to_locate_project_root=Unable to locate project directory for Module ''{0}'' +lambda.create.description.label=Description: +lambda.create.enable.xray.label=Enable AWS X-Ray +lambda.create.env_vars.label=Environment Variables: +lambda.create.function_name.label=Name: +lambda.create.iam.role.label=IAM Role: +lambda.create.memory.label=Memory (MB): +lambda.create.source_bucket.label=Source Bucket: +lambda.create.step.build=SAM Build +lambda.create.step.create_lambda=Creating new Lambda +lambda.create.step.package=SAM Package +lambda.create.step.update_lambda=Updating Lambda +lambda.create.timeout.label=Timeout (seconds): +lambda.create_new=Create new AWS Lambda... +lambda.credentials.tooltip=The existing AWS account connection to use for this configuration. +lambda.debug.attach.error=Debugger attach error +lambda.debug.attach.fail=Unable to attach to debugger process. +lambda.debug.docker.not_connected=Running/Debugging Lambdas locally requires Docker. Please make sure it is installed and running +lambda.debug.process.start.timeout=Timeout waiting for Debugger Worker process to start +lambda.debug.step.start_sam=Running SAM local invoke +lambda.debug.waiting=Waiting for debugger... +lambda.execute.function_error=Function error: {0} +lambda.execute.invoke=Invoking Lambda function: {0} +lambda.execute.logs=Logs: \n{0} +lambda.execute.output=Output: \n{0} +lambda.execute.service_error=Error invoking Lambda: {0} +lambda.function.architecture.label=Architecture: +lambda.function.architecture.tooltip=The AWS Lambda architecture to use when running this function. +lambda.function.code_updated.notification=Code updated for function ''{0}''. +lambda.function.configuration_updated.notification=Configuration updated for function ''{0}''. +lambda.function.created.notification=Function ''{0}'' created. +lambda.function.delete.action=Delete Function... +lambda.function.enableXRay.tooltip=Enables AWS X-Ray to detect, analyze, and optimize performance issues when this function runs. +lambda.function.env_vars.tooltip=The environment variables available to this function, specified as key/value pairs. +lambda.function.handler.tooltip=The name of the method within your code that AWS Lambda calls to execute your function. It must be a fully qualified name depending on the runtime. +lambda.function.iamRole.tooltip=The function's execution role. +lambda.function.label=Function: +lambda.function.memory.tooltip=The memory available to AWS Lambda when running this function, if needed. +lambda.function.name.tooltip=The function's name. It can only contain alphanumeric (A-Z, a-z, 0-9), underscore (_) and hyphen (-) characters and must not exceed 64 characters in length. +lambda.function.runtime.tooltip=The AWS Lambda runtime to use when running this function. +lambda.function.sourceBucket.tooltip=The Amazon S3 bucket in the same AWS Region to deploy this AWS Lambda function. +lambda.function.timeout.tooltip=The number of seconds until AWS Lambda stops running this function, if necessary. +lambda.function.updateCode.action=Update Function Code +lambda.function.updateConfiguration.action=Update Function Configuration +lambda.handler.label=Handler: +lambda.image.missing_debugger=Runtime ''{0}'' is unsupported for debugging image based Lambdas +lambda.image.sam_version_too_low=Sam CLI version {0} is too old to run image-based configurations, {1} or higher is required +lambda.input.label=Input +lambda.logs.does_not_exist=Lambda ''{0}'' has not sent events to CloudWatch +lambda.region.tooltip=The AWS Region to use for the connected AWS account. +lambda.run.configuration.handler_root_not_found=Failed to locate the root of the handler +lambda.run_configuration.credential_error=Error retrieving credentials: {0}. +lambda.run_configuration.credential_not_found_error=The credential provider with ID ''{0}'' could not be found. +lambda.run_configuration.debug_host=Debug Host: +lambda.run_configuration.description=Invoke AWS Lambda Function +lambda.run_configuration.fromTemplate.tooltip=The location and file name of the AWS SAM template to use for this configuration, and the resource in that template to associate with this configuration. +lambda.run_configuration.handler.validation.in_progress=Lambda handler validation is in progress +lambda.run_configuration.handler_not_found=Cannot find handler ''{0}'' in project. +lambda.run_configuration.input.file.label=File: +lambda.run_configuration.input.file.tooltip=The location and file name of the data to pass into the function. The data must follow the syntax for AWS Lambda event data. +lambda.run_configuration.input.samples.confirm=Selecting this template will replace the input text. Continue? +lambda.run_configuration.input.samples.confirm.title=Confirm Template Selection +lambda.run_configuration.input.samples.label=-- Event Templates -- +lambda.run_configuration.input.text.label=Text: +lambda.run_configuration.input.text.tooltip=The data to pass into the function. The data must follow the syntax for AWS Lambda event data. +lambda.run_configuration.input_file_error=Failed to load input file: {0} +lambda.run_configuration.local=Local +lambda.run_configuration.no_architecture_specified=Must specify an architecture. +lambda.run_configuration.no_credentials_specified=Select AWS credentials in 'AWS Connection' +lambda.run_configuration.no_function_specified=Must specify function name or ARN. +lambda.run_configuration.no_handler_specified=Must specify a handler. +lambda.run_configuration.no_input_specified=Must specify an input. +lambda.run_configuration.no_runtime_specified=Must specify a supported runtime. +lambda.run_configuration.remote=Remote +lambda.run_configuration.remote.function.tooltip=The name of the AWS Lambda function to use. +lambda.run_configuration.sam=SAM CLI +lambda.run_configuration.sam.additional_build_args=Build Args: +lambda.run_configuration.sam.additional_local_args=Local Invoke Args: +lambda.run_configuration.sam.docker_network=Docker Network: +lambda.run_configuration.sam.invalid_executable=Invalid SAM CLI executable configured: {0} +lambda.run_configuration.sam.no_function_specified=Function logical name must be specified. +lambda.run_configuration.sam.no_such_function=Function {0} doesn''t exist in template {1}. +lambda.run_configuration.sam.no_template_specified=Template must be specified. +lambda.run_configuration.sam.skip_image_pull=Skip checking for newer container images +lambda.run_configuration.sam.template_file_not_found=Template file not found. +lambda.run_configuration.sam.validating=Validating SAM executable... +lambda.run_configuration.sam.validation.in_progress=SAM executable validation is in progress +lambda.run_configuration.source.from_handler=From &handler +lambda.run_configuration.source.from_template=From &template +lambda.run_configuration.unsupported_architecture=The architecture ''{0}'' is unsupported. +lambda.run_configuration.unsupported_runtime=The runtime ''{0}'' is unsupported. +lambda.runtime.label=Runtime: +lambda.sam.additionalBuildArgs.tooltip=Additional args to add to the 'sam build' command +lambda.sam.additionalLocalArgs.tooltip=Additional args to add to the 'sam local invoke' command +lambda.sam.buildInContainer.tooltip=Builds the serverless application's functions inside an AWS Lambda-like Docker container locally before deployment. +lambda.sam.debugHost.tooltip=The host to connect the debugger to +lambda.sam.dockerNetwork.tooltip=The name or ID of an existing Docker network that the AWS Lambda Docker containers should connect to, along with the default bridge network. +lambda.sam.skipCheckingNewerContainerImage.tooltip=Skips pulling down the latest Docker image for the specified AWS Lambda runtime. +lambda.service_name=AWS Lambda +lambda.slider_validation=The specified value must be an integer and between {0} and {1} +lambda.upload.build_settings=Build Settings +lambda.upload.code_location_settings=Code Location Settings +lambda.upload.configuration_settings=Configuration Settings +lambda.upload.create.title=Create Function +lambda.upload.deployment_settings=Deployment Settings +lambda.upload.updateCode.title=Update Code for {0} +lambda.upload.updateConfiguration.title=Update Configuration for {0} +lambda.upload.update_settings_button.title=Update +lambda.upload_validation.dockerfile_not_found=Dockerfile not found +lambda.upload_validation.function_name=Function Name must be specified +lambda.upload_validation.function_name_invalid=Function names can only contain alphanumerics, hyphen (-) and underscore (_) +lambda.upload_validation.function_name_too_long=Function names must not exceed {0} characters in length +lambda.upload_validation.handler=Handler must be specified +lambda.upload_validation.handler_not_found=Must be able to locate the handler in the project in order to deploy to Lambda +lambda.upload_validation.iam_role=IAM role must be specified +lambda.upload_validation.iam_role.loading=Still loading IAM role... +lambda.upload_validation.module_not_found=Failed to locate module for {0} +lambda.upload_validation.repo=Repository must be specified in order to deploy to Lambda +lambda.upload_validation.runtime=Runtime must be specified +lambda.upload_validation.source_bucket=Bucket must be specified in order to deploy to Lambda +lambda.upload_validation.source_bucket.loading=Still loading S3 bucket... +lambda.upload_validation.unsupported_runtime=Deploying using the runtime {0} is not supported +lambda.workflow.create_new.name=Create new Lambda +lambda.workflow.create_new.wait_for_stable=Waiting for function to be created +lambda.workflow.update_code.name=Update Lambda code +lambda.workflow.update_code.wait_for_stable=Waiting for function to stabilize +lambda.workflow.update_code.wait_for_updatable=Waiting for function to transition to an updatable state +loading_resource.failed=Failed loading resources +loading_resource.loading=Loading... +loading_resource.still_loading=Resources are still loading +plugin.incompatible.fix=Disable incompatible plugins and restart IDE +plugin.incompatible.message=The plugin versions for Amazon Q, AWS Toolkit, and AWS Toolkit Core must match or conflicts may occur. +plugin.incompatible.title=AWS Plugin Incompatibility +q.connection.disconnected=You don't have access to Amazon Q. Please authenticate to get started. +q.connection.expired=Your Amazon Q session has timed out. Re-authenticate to continue. +q.connection.invalid=You don't have access to Amazon Q. Please authenticate to get started. +q.connection.need_scopes=You haven't enabled Amazon Q in Jetbrains. +q.enable.text=Enable Amazon Q to begin +q.learn.more=Learn More +q.migration.notification.title=Menu moved to status bar +q.node.title=Amazon Q +q.onboarding.button.text=Ask a question +q.onboarding.codewhisperer.description=Amazon Q inline suggestions are also enabled. +q.onboarding.description=Amazon Q is your generative-AI powered assistant. +q.onboarding.title=Meet Amazon Q +q.reauthenticate=Re-authenticate to connect +q.sign.in=Get Started +q.ui.prompt.transform=/transform +q.unavailable=\ Not supported in v2023.2.0 +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 +rds.iam_help=The "RDS Host" and "RDS Port" are used to sign the request to AWS. They must match the values in the service. To use a proxy, edit the "Host" and "Port" fields. +rds.mysql=MySQL +rds.port=RDS Port: +rds.postgres=PostgreSQL +rds.url=RDS Host: +rds.validation.aurora_mysql_ssl_required=Aurora MySQL requires SSL to be enabled to connect +rds.validation.no_iam_auth=Database {0} does not have IAM authentication enabled +rds.validation.no_instance_host=No RDS database host specified +rds.validation.no_instance_port=No RDS database port specified +rds.validation.setup_guide=See the RDS guide for IAM authentication +rds.validation.username=A non-empty username is required +redshift.auth.aws=IAM Auth +redshift.cluster_id=Cluster ID: +redshift.connect_aws_credentials=Connect with IAM... +redshift.validation.cluster_does_not_exist=Cluster {0} does not exist in region {1}! +redshift.validation.invalid_credential_specified=Invalid credential profile {0} selected! +redshift.validation.invalid_region_specified=Invalid region {0} selected! +redshift.validation.no_cluster_id=No cluster ID specified! +redshift.validation.username=A non-empty username is required +resource.delete.warning_text=Deletion of the {0} may take more than a minute to be reflected +run_configuration_extension.currently_selected=Use the currently selected credential profile/region +run_configuration_extension.feature.go.description=Allow injecting AWS Credentials via Environment Variables into GoLang based Run Configurations +run_configuration_extension.feature.go.title=AWS connected GoLang Run Configurations +run_configuration_extension.feature.java.description=Allow injecting AWS Credentials via Environment Variables into some Java-based Run Configurations +run_configuration_extension.feature.java.title=AWS connected Java Run Configurations +run_configuration_extension.feature.python.description=Allow injecting AWS Credentials via Environment Variables into some Python-based Run Configurations +run_configuration_extension.feature.python.title=AWS connected Python Run Configurations +run_configuration_extension.inject_aws_connection_exception=Exception occurred attempting to inject region/credentials +run_configuration_extension.manual=Other credential profile/region +s3.bucket.label=Bucket Name/URI +s3.bucket.load.fail.title=Access denied to bucket +s3.bucket.name.label=Bucket Name: +s3.copy.bucket.action=Copy Name +s3.copy.path=Copy Path +s3.copy.uri=Copy S3 URI +s3.copy.url=Copy URL +s3.copy.url.failed=Failed to copy URL +s3.create.bucket.create=Create +s3.create.bucket.missing.bucket.name=Bucket name is required. +s3.create.bucket.title=Create S3 Bucket +s3.delete.bucket.action=Delete S3 Bucket +s3.delete.object.action=Delete... +s3.delete.object.cancel=Cancel +s3.delete.object.description=Are you sure you want to delete {0, choice, 1#this file|2#{0,number} files}? +s3.delete.object.failed=Delete object failed +s3.download.object.action=Download... +s3.download.object.browse.description.multiple=Select folder to save files to +s3.download.object.browse.description.single=Select file or folder to save file to +s3.download.object.browse.title=Select Download Location... +s3.download.object.conflict.description=File ''{0}'' already exists in directory ''{1}'' +s3.download.object.conflict.overwrite=Overwrite +s3.download.object.conflict.overwrite_rest=Overwrite All Conflicts +s3.download.object.conflict.skip=Skip +s3.download.object.conflict.skip_rest=Skip All Conflicts +s3.download.object.failed=Failed to download object {0} +s3.download.object.progress=Downloading ''{0}'' +s3.error_loading=Failed to load children +s3.last_modified=Last Modified +s3.load_more=load more... +s3.load_more_failed=Failed to load more! load more... +s3.name=Name +s3.new.folder=New Folder... +s3.new.folder.name=Folder name: +s3.object.load.fail.title=Unable to load objects - Access denied +s3.open.file_too_big=The editor cannot open files larger than {0} +s3.open.viewer.bucket.failed=Failed to open bucket +s3.open.viewer.bucket_does_not_exist=Bucket {0} does not exist. +s3.open.viewer.failed=Failed to open file in editor. +s3.open.viewer.failed.unsupported=Failed to open file in editor. Unsupported file type. +s3.open.viewer.prefix.message=Specify S3 Key prefix: +s3.open.viewer.prefix.title=Enter Key Prefix +s3.prefix.filter=Filter by prefix +s3.prefix.label=Prefix: {0} +s3.rename.object.action=Rename... +s3.rename.object.failed=Failed to rename object +s3.rename.object.title=Rename: ''{0}'' to +s3.size=Size +s3.upload.directory.impossible=Cannot upload ''{0}'' because it is a directory +s3.upload.object.action=Upload... +s3.upload.object.failed=Failed to upload object {0} +s3.upload.object.progress=Uploading ''{0}'' +s3.version.history.view=Show versions +sam.build.failed=SAM build command failed +sam.build.running=Running SAM build +sam.build.succeeded=SAM build command succeeded +sam.build.title=SAM build +sam.cli.version.upgrade.instructions=Learn more about upgrading SAM CLI +sam.cli.version.upgrade.reason=Learn more about SAM sync improvements... +sam.cli.version.upgrade.required=Your SAM CLI version is {0} and does not include performance improvements for Sync Serverless Applications. To continue, please upgrade to SAM CLI version {1} or higher. +sam.cli.version.upgrade.required.windows=If you are on SAM CLI version 1.85, 1.86 or 1.86.1, it has known issues. Please consider re-installing / upgrading the latest version. +sam.cli.version.warning=SAM CLI version +sam.debug.attach=Attach Debugger +sam.debug.attach.parent=Attempt Debugger Attachment +sam.debug.dotnet_find_pid=Find DotNet process PID +sam.debug.find_container=Find Container +sam.executable.minimum_too_low_architecture=The architecture {0} requires a minimum SAM CLI version of {1} +sam.executable.minimum_too_low_runtime=The runtime {0} requires a minimum SAM CLI version of {1} +sam.init.description=AWS Serverless Application Model (AWS SAM) prescribes rules for expressing Serverless applications on AWS. +sam.init.error.no.architecture.selected=No architecture selected +sam.init.error.no.project.basepath=Unable to determine project basepath +sam.init.error.no.runtime.selected=No runtime selected +sam.init.error.no.solution.basepath=Unable to determine solution basepath +sam.init.error.no.template.selected=No template selected +sam.init.error.no.virtual.file=Unable to resolve location +sam.init.error.solution.create.fail=Unable to create solution +sam.init.error.subfolder_not_one=The SAM init root folder ''{0}'' should have only one sub folder. +sam.init.execution_error=Could not execute `sam init`! +sam.init.generating.schema=Generating Schema +sam.init.generating.template=Generating SAM template +sam.init.go.sdk=Go SDK: +sam.init.name=AWS Serverless Application +sam.init.node_interpreter.label=Node interpreter: +sam.init.packaging=Package Type: +sam.init.packaging.image=Image +sam.init.packaging.image.description=Artifact is an image uploaded to a ECR image repository +sam.init.packaging.zip=Zip +sam.init.packaging.zip.description=Artifact is a zip file uploaded to S3 +sam.init.sam_template.tooltip=The name of the AWS Serverless Application Model (AWS SAM) template to use. +sam.init.schema.aws_credentials_select=Select AWS Credentials +sam.init.schema.aws_credentials_select_region=Select AWS Region +sam.init.schema.label=Event Schema: +sam.init.schema.pleaseSelect=Choose the EventBridge serverless event schema +sam.init.schema.registry.name=Registry: {0} +sam.init.sdk.error=Check SDK settings +sam.init.sdk.label=SDK: +sam.init.sdk.runtime.not.selected=No runtime selected +sam.init.select_sam_template=SAM Template: +sam.init.template.dynamodb_cookiecutter.description=Sample SAM Template to interact with DynamoDB Events +sam.init.template.dynamodb_cookiecutter.name=AWS SAM DynamoDB Event Example +sam.init.template.event_bridge_hello_world.description=A Hello World app for Amazon EventBridge that invokes a Lambda for every EC2 instance state change in your account +sam.init.template.event_bridge_hello_world.name=AWS SAM EventBridge Hello World +sam.init.template.event_bridge_hello_world_gradle.name=AWS SAM EventBridge Hello World (Gradle) +sam.init.template.event_bridge_hello_world_maven.name=AWS SAM EventBridge Hello World (Maven) +sam.init.template.event_bridge_starter_app.description=A Starter app for Amazon EventBridge that invokes a Lambda based on a dynamic event trigger for an EventBridge Schema of your choice +sam.init.template.event_bridge_starter_app.name=AWS SAM EventBridge App from Scratch (for an Event schema) +sam.init.template.event_bridge_starter_app_gradle.name=AWS SAM EventBridge App from Scratch (for an Event schema) (Gradle) +sam.init.template.event_bridge_starter_app_maven.name=AWS SAM EventBridge App from Scratch (for an Event schema) (Maven) +sam.init.template.hello_world.description=A basic SAM app +sam.init.template.hello_world.name=AWS SAM Hello World +sam.init.template.hello_world_gradle.name=AWS SAM Hello World (Gradle) +sam.init.template.hello_world_maven.name=AWS SAM Hello World (Maven) +sam.init.template.hello_world_typescript.description=A sample app using TypeScript +sam.init.template.hello_world_typescript.name=AWS SAM TypeScript Hello World +schemas.schema.could_not_open=Could not fetch and display schema {0} contents +schemas.schema.download_code_bindings.action=Download Code Bindings +schemas.schema.download_code_bindings.download=Download +schemas.schema.download_code_bindings.failed_to_download=Unable to download schema code +schemas.schema.download_code_bindings.failed_to_extract=Unable to place schema code in workspace +schemas.schema.download_code_bindings.failed_to_extract_collision=Unable to place schema code in workspace because there is already a file {0} in the folder hierarchy +schemas.schema.download_code_bindings.failed_to_generate=Unable to generate schema code +schemas.schema.download_code_bindings.failed_to_poll=Unable to poll for generated schema code +schemas.schema.download_code_bindings.heading=Download code bindings for schema {0} in registry {1} +schemas.schema.download_code_bindings.language.label=Language: +schemas.schema.download_code_bindings.language.tooltip=The programming language of the Schema to download generated code bindings for +schemas.schema.download_code_bindings.latest= +schemas.schema.download_code_bindings.location.label=File Location: +schemas.schema.download_code_bindings.location.tooltip=Location for the generated Event schema code binding files to be placed into +schemas.schema.download_code_bindings.notification.downloading={0}: Downloading code... +schemas.schema.download_code_bindings.notification.extracting={0}: Extracting/copying code... +schemas.schema.download_code_bindings.notification.finished=Downloaded code for schema {0}! +schemas.schema.download_code_bindings.notification.generating={0}: Generating code (this may take a few seconds the first time)... +schemas.schema.download_code_bindings.notification.start=Downloading code for schema {0}... +schemas.schema.download_code_bindings.title=Download Code Bindings +schemas.schema.download_code_bindings.validation.fileLocation_invalid=Invalid code folder location +schemas.schema.download_code_bindings.validation.fileLocation_required=Schema code folder location must be specified +schemas.schema.download_code_bindings.validation.language_required=Schema code language must be specified +schemas.schema.download_code_bindings.validation.version_required=Schema version must be specified +schemas.schema.download_code_bindings.version.label=Version: +schemas.schema.download_code_bindings.version.tooltip=The version of the Schema to download generated code bindings for +schemas.schema.language.go1=Go 1+ +schemas.schema.language.java8=Java 8+ +schemas.schema.language.python3_6=Python 3.6+ +schemas.schema.language.typescript=Typescript 3+ +schemas.schema.view.action=View Schema +schemas.search.download.label=Download code for selected schema +schemas.search.error=Unable to search registry {0} +schemas.search.error.registry={0} ({1}) +schemas.search.header.text.allRegistries=Search across all registries +schemas.search.header.text.singleRegistry=Search "{0}" registry +schemas.search.no_results=No schemas found +schemas.search.searching=Searching for schemas... +schemas.search.title=EventBridge Schemas Search +schemas.search.version.prefix=Search matched version: {0} +schemas.service_name=Amazon EventBridge Schemas +serverless.application.deploy=Deploy Serverless Application +serverless.application.deploy.abort=Process aborted +serverless.application.deploy.action.description=Deploy Serverless Application +serverless.application.deploy.action.name=Deploy +serverless.application.deploy.button.bucket.create=Create +serverless.application.deploy.change_set=Change set ARN: +serverless.application.deploy.change_set.title=Deploy The Change Set? +serverless.application.deploy.change_set_not_found=Failed to locate change set ARN +serverless.application.deploy.error.bad_parse=Error parsing SAM template {0}\n\n {1} +serverless.application.deploy.error.no_resources=Cannot find any resources in SAM template {0} +serverless.application.deploy.error.unsupported_runtime_group=The runtime {0} is not supported for deploying the SAM template {1} +serverless.application.deploy.execute_change_set=Continue Deployment +serverless.application.deploy.execution_failed=SAM did not complete successfully +serverless.application.deploy.label.bucket=S3 Bucket: +serverless.application.deploy.label.repo=ECR Repository: +serverless.application.deploy.label.stack.new=Create Stack: +serverless.application.deploy.label.stack.select=Update Stack: +serverless.application.deploy.review_required=Require confirmation before deploying +serverless.application.deploy.step_name.build=Build +serverless.application.deploy.step_name.create_change_set=Create Change Set +serverless.application.deploy.step_name.package=Package +serverless.application.deploy.template.parameters=Template Parameters +serverless.application.deploy.title=Deploy Serverless Application +serverless.application.deploy.toast.template_file_failure=Could not detect template file +serverless.application.deploy.tooltip.createStack=The name of the AWS CloudFormation stack that is created when deploying this serverless application. +serverless.application.deploy.tooltip.deploymentConfirmation=Instructs AWS CloudFormation to wait for you to finish creating or updating the corresponding stack by executing the stack's current change set in AWS CloudFormation. +serverless.application.deploy.tooltip.ecrRepo=An Amazon Elastic Container Registry Repository in the same AWS Region to deploy the Lambda images to. +serverless.application.deploy.tooltip.s3Bucket=An Amazon S3 bucket in the same AWS Region to deploy this serverless application. +serverless.application.deploy.tooltip.template.parameters=The parameters that the AWS Toolkit detected in the project's AWS SAM template file for this serverless application. +serverless.application.deploy.tooltip.updateStack=The name of the existing AWS CloudFormation stack that is used when deploying this serverless application. +serverless.application.deploy.use_container=Build function inside a container +serverless.application.deploy.validation.ecr.repo.empty=Select an ECR Repository +serverless.application.deploy.validation.ecr.repo.loading=Still loading the list of ECR Repos... +serverless.application.deploy.validation.new.stack.name.duplicate=New stack name must be different than the existing stack name(s) +serverless.application.deploy.validation.new.stack.name.invalid=A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character. +serverless.application.deploy.validation.new.stack.name.missing=Enter the name of your new Stack +serverless.application.deploy.validation.new.stack.name.too.long=Stack names must not exceed {0} characters in length +serverless.application.deploy.validation.s3.bucket.empty=Select an S3 Bucket +serverless.application.deploy.validation.s3.bucket.loading=Still loading the list of S3 buckets... +serverless.application.deploy.validation.stack.loading=Still loading CloudFormation stacks... +serverless.application.deploy.validation.stack.missing=Specify a Stack to deploy to +serverless.application.deploy.validation.template.values.badRegex=AllowedPattern for {0} is not valid: {1} +serverless.application.deploy.validation.template.values.failsRegex=Template value for {0} does not match AllowedPattern defined in template: {1} +serverless.application.deploy.validation.template.values.notANumber=Template value for {0} is not a number: {1} +serverless.application.deploy.validation.template.values.tooBig=Template value for {0} is larger than MaxValue defined in template: {1} +serverless.application.deploy.validation.template.values.tooLong=Template value for {0} exceeds MaxLength defined in template: {1} +serverless.application.deploy.validation.template.values.tooShort=Template value for {0} does not meet MinLength defined in template: {1} +serverless.application.deploy.validation.template.values.tooSmall=Template value for {0} is smaller than MinValue defined in template: {1} +serverless.application.deploy_in_progress.title=Deploying Application {0} +serverless.application.sync=Sync Serverless Application (formerly Deploy) +serverless.application.sync.action.description=Sync Serverless Application with cloud +serverless.application.sync.action.name=Sync +serverless.application.sync.code=Sync Serverless Application (code only) +serverless.application.sync.confirm.dev.stack.title=Confirm development stack +serverless.application.sync.dev.mode.warning.text=The SAM CLI will use the AWS Lambda, Amazon API Gateway, and AWS StepFunctions APIs to upload your code without
performing a CloudFormation deployment. This will cause drift in your CloudFormation stack.

The sync command should only be used against a development stack.

Confirm that you are synchronizing a development stack.

+serverless.application.sync.error.bad_parse=Error parsing SAM template {0}\n\n {1} +serverless.application.sync.error.no_resources=Cannot find any resources in SAM template {0} +serverless.application.sync.error.unsupported_runtime_group=The runtime {0} is not supported for syncing the SAM template {1} +serverless.application.sync.execution_failed=SAM sync did not complete successfully +serverless.application.sync.fetch.stacks.progress.bar=Fetching stacks +serverless.application.sync.label.bucket=S3 Bucket: +serverless.application.sync.label.repo=ECR Repository: +serverless.application.sync.label.stack.new=Create Stack: +serverless.application.sync.label.stack.select=Update Stack: +serverless.application.sync.template.parameters=Template Parameters +serverless.application.sync.toast.template_file_failure=Could not detect template file +serverless.application.sync.tooltip.createStack=The name of the AWS CloudFormation stack that is created when syncing this Serverless application. +serverless.application.sync.tooltip.ecrRepo=An Amazon Elastic Container Registry Repository in the same AWS Region to deploy the Lambda images to. +serverless.application.sync.tooltip.s3Bucket=An Amazon S3 bucket in the same AWS Region to sync this serverless application. +serverless.application.sync.tooltip.template.parameters=The parameters that the AWS Toolkit detected in the project's AWS SAM template file for this Serverless application. +serverless.application.sync.tooltip.updateStack=The name of the existing AWS CloudFormation stack that is used when syncing this Serverless application. +serverless.application.sync.use_container=Build function inside a container +serverless.application.sync.validation.ecr.repo.empty=Select an ECR Repository +serverless.application.sync.validation.ecr.repo.loading=Still loading the list of ECR Repos... +serverless.application.sync.validation.new.stack.name.duplicate=New stack name must be different than the existing stack name(s) +serverless.application.sync.validation.new.stack.name.invalid=A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character. +serverless.application.sync.validation.new.stack.name.missing=Enter the name of your new Stack +serverless.application.sync.validation.new.stack.name.too.long=Stack names must not exceed {0} characters in length +serverless.application.sync.validation.s3.bucket.empty=Select an S3 Bucket +serverless.application.sync.validation.s3.bucket.loading=Still loading the list of S3 buckets... +serverless.application.sync.validation.stack.loading=Still loading CloudFormation stacks... +serverless.application.sync.validation.stack.missing=Specify a Stack to sync to +session_manager_plugin_installation_warning=ECS Exec makes use of AWS Systems Manager (SSM) Session Manager to establish a connection with the running container.
Please Install the Session Manager Plugin before proceeding! +session_manager_plugin_installation_warning_title=Install Session Manager Plugin +settings.credentials=IAM Credentials (Locally Configured) +settings.credentials.get_started=Connect to AWS to get started +settings.credentials.iam=IAM Credentials +settings.credentials.iam.add=Add IAM credentials to view resources +settings.credentials.iam.none_selected=No IAM credentials linked +settings.credentials.iam.select=Select from list above to view resources +settings.credentials.iam_and_regions=IAM Credentials & Regions +settings.credentials.individual_identity_sub_menu=Individual Identity +settings.credentials.none_selected=No credentials selected +settings.credentials.profile_sub_menu=All Local Credentials +settings.credentials.prompt_for_default_region_switch=Change region to default region: {0}? +settings.credentials.prompt_for_default_region_switch.always=Always +settings.credentials.prompt_for_default_region_switch.always.description=Always select default region when a credential is selected +settings.credentials.prompt_for_default_region_switch.ask.description=Ask before changing regions when a credential is selected +settings.credentials.prompt_for_default_region_switch.never=Never +settings.credentials.prompt_for_default_region_switch.never.description=Never change region when a credential is selected +settings.credentials.prompt_for_default_region_switch.setting_label=Default region handling: +settings.credentials.prompt_for_default_region_switch.yes=Yes +settings.credentials.recent=Recent IAM Credentials (Locally Configured) +settings.never_show_again=Never Show Again +settings.none_selected=No region or credentials selected +settings.partitions=Other Partitions +settings.profiles.always=Always show when profiles are loaded +settings.profiles.label=AWS profiles notification: +settings.profiles.never=Never show +settings.profiles.on_failure=Show when one or more profiles fail to load +settings.refresh.description=Refresh AWS Connection +settings.regions.none_selected=No region selected +settings.regions.recent=Recent Regions +settings.regions.region_sub_menu=All Regions +settings.retry=Retry +settings.states.initializing=Toolkit initializing... +settings.states.invalid=Unable to connect to AWS:\n{0} +settings.states.invalid.short=Unable to connect +settings.states.validating=Validating connection to AWS... +settings.states.validating.short=Validating connection +settings.statusbar.widget.connections.n={0} Connections +settings.statusbar.widget.expired.1={0} Expired +settings.statusbar.widget.expired.n={0} Connections Expired +settings.statusbar.widget.format=AWS: {0} +settings.title=AWS Connection Settings +sqs.configure.lambda=Configure Lambda Trigger... +sqs.configure.lambda.configure.tooltip=It may take a few seconds to configure. +sqs.configure.lambda.error=Failed to add trigger for function {0}. Try again later. +sqs.configure.lambda.function=Lambda Function: +sqs.configure.lambda.in_progress=Configuring... +sqs.configure.lambda.select=Select Lambda Function: +sqs.configure.lambda.success=Trigger successfully added to function {0} +sqs.configure.lambda.tooltip=

Configure the queue to trigger an AWS Lambda function when new messages arrive in the queue.

The queue and Lambda function must be in the same AWS Region.

+sqs.configure.lambda.validation.function=Lambda function must be specified. +sqs.confirm.iam=Create IAM Role +sqs.confirm.iam.create=Add Policy +sqs.confirm.iam.failed=Failed to create and attach role policy. +sqs.confirm.iam.in_progress=Creating... +sqs.confirm.iam.warning.sqs_queue_permissions=The selected Queue does not have permission to receive messages from the selected SNS Topic.

The following policy statement will be added to the queue policy:

+sqs.confirm.iam.warning.text=The selected Lambda function does not have permission to access SQS.

The following IAM role policy will be added to the function's execution role:

+sqs.copy.message=Copy {0, choice, 1#message|2#{0,number} messages} +sqs.create.fifo.label=FIFO +sqs.create.queue=Create Queue... +sqs.create.queue.create=Create +sqs.create.queue.failed=Failed to create queue {0} +sqs.create.queue.name.label=Queue Name: +sqs.create.queue.title=Create Queue +sqs.create.queue.tooltip=It may take up to 60 seconds for the queue to be visible in the AWS Explorer. +sqs.create.queue.type.label=Queue Type: +sqs.create.standard.label=Standard +sqs.create.validation.empty.queue.name=Queue name must be specified. +sqs.create.validation.long.queue.name=Queue name must not exceed {0} characters in length. +sqs.create.validation.queue.name.invalid=Queue names can only contain alphanumeric characters, hyphens (-), and underscores (_). +sqs.delete.message.action=Delete {0, choice, 1#message|2#{0,number} messages} +sqs.delete.message.failed=Failed to delete {0, choice, 1#message|2#{0,number} messages}. +sqs.delete.message.partial_successs=Failed to delete some messages! {0, choice, 1#message|2#{0,number} messages} were deleted. +sqs.delete.message.succeeded=Successfully deleted {0, choice, 1#1 message|2#{0,number} messages}. +sqs.delete.queue.action=Delete Queue... +sqs.edit.attributes=Edit Queue Parameters +sqs.edit.attributes.action=Edit Queue Parameters... +sqs.edit.attributes.delivery_delay=Delivery Delay (seconds): +sqs.edit.attributes.delivery_delay.tooltip=The amount of time to delay the first delivery of each message. +sqs.edit.attributes.failed=Failed to get queue parameters for queue {0} +sqs.edit.attributes.message_size=Maximum Message Size (bytes): +sqs.edit.attributes.message_size.tooltip=How many bytes a message can contain before it is rejected. Must be between {0} and {1} bytes. +sqs.edit.attributes.queue.attributes=Queue Parameters +sqs.edit.attributes.retention_period=Message Retention Period (seconds): +sqs.edit.attributes.retention_period.tooltip=The amount of time that a message is retained in the queue. Must be between {0} and {1} seconds. +sqs.edit.attributes.retrieving_from_service=Retrieving queue parameters from SQS +sqs.edit.attributes.save=Save +sqs.edit.attributes.updated=Updated queue parameters for {0}. +sqs.edit.attributes.visibility_timeout=Visibility Timeout (seconds): +sqs.edit.attributes.visibility_timeout.tooltip=The length of time that a received message will not be visible to other message consumers. +sqs.edit.attributes.wait_time=Receive Message Wait Time (seconds): +sqs.edit.attributes.wait_time.tooltip=The amount of time that polling will wait for messages to become available. +sqs.failed_to_load_total=Failed to load number of messages available +sqs.failed_to_poll_messages=Failed to view messages +sqs.failed_to_send_message=Failed to send message +sqs.fifo.queue.tooltip=Supports first-in-first-out delivery and message ordering is preserved. +sqs.message.deduplication_id.tooltip=

Used for deduplication of sent messages.

If a message with a particular message deduplication ID is sent successfully, any messages sent with the same message deduplication ID are accepted successfully but aren't delivered during the 5-minute deduplication interval.

+sqs.message.group_id.tooltip=

Specifies that a message belongs to a specific message group.

Messages that belong to the same message group are always processed in a strict order relative to the message group.

+sqs.message.message_body=Message Body +sqs.message.message_id=Message ID +sqs.message.no_messages=No messages retrieved +sqs.message.sender_id=Sender ID +sqs.message.timestamp=Sent Timestamp +sqs.message.validation.empty.deduplication_id=Enter a deduplication ID. +sqs.message.validation.empty.group_id=Enter a group ID. +sqs.message.validation.empty.message.body=Enter a message body +sqs.message.validation.long.id=ID exceeds the maximum length of 128 characters. +sqs.message_table_initial_text=Press "{0}" to load messages +sqs.messages.available.text={0, choice, 0#No messages|1#1 message|2#{0,number} messages} available +sqs.poll.message=View Messages +sqs.poll.warning.text=

Messages are returned to the queue immediately upon viewing.

+sqs.purge_queue=Purge Queue +sqs.purge_queue.action=Purge Queue... +sqs.purge_queue.confirm=Are you sure you want to purge queue {0} (approximately {1, choice, 1#1 message|2#{1,number} messages})? +sqs.purge_queue.confirm.title=Purge Queue? +sqs.purge_queue.failed=Failed to purge queue {0} +sqs.purge_queue.failed.60_seconds=Purge queue request already in progress for queue {0} +sqs.purge_queue.succeeded=Started purging queue {0} +sqs.queue.name.tooltip=

A queue name is case-sensitive and can have up to 80 characters of alphanumeric characters, hyphens (-), and underscores ( _ ).

If FIFO is selected, '.fifo' will be appended to the specified name.

+sqs.queue.polled.messages=Polled Messages +sqs.required.empty.text=(Required) +sqs.send.message=Send a Message +sqs.send.message.body.empty.text=Enter message body +sqs.send.message.clear.button=Clear +sqs.send.message.deduplication_id=Deduplication ID: +sqs.send.message.group_id=Group ID: +sqs.send.message.send.button=Send +sqs.send.message.success=Sent message ID: {0} +sqs.service_name=Amazon SQS +sqs.standard.queue.tooltip=Supports at-least-once delivery and message ordering is not preserved. +sqs.subscribe.sns=Subscribe to SNS topic... +sqs.subscribe.sns.failed=Failed to subscribe {0} to {1} +sqs.subscribe.sns.in_progress=Subscribing... +sqs.subscribe.sns.select=Select SNS topic +sqs.subscribe.sns.select.tooltip=Messages from the selected topic are sent to the queue. +sqs.subscribe.sns.subscribe=Subscribe +sqs.subscribe.sns.success=Subscribed successfully to topic {0}. +sqs.subscribe.sns.topic=SNS topic: +sqs.subscribe.sns.validation.empty_topic=Topic must be specified. +sqs.toolwindow=SQS +sqs.url.parse_error=Error parsing SQS queue URL +tags.title=Tags +toolkit.login.aws_builder_id.already_connected.cancel=Use existing AWS Builder ID +toolkit.login.aws_builder_id.already_connected.message=You already signed in with an AWS Builder ID.\nSign out to add another? +toolkit.login.aws_builder_id.already_connected.reconnect=Sign out +toolkit.login.aws_builder_id.already_connected.title=Sign out of current AWS Builder ID? +toolkit.login.dialog.aws_builder_id.comment=AWS Builder ID is a new personal profile for builders. Learn More +toolkit.login.dialog.aws_builder_id.title=Use a personal email to sign up and sign in with AWS Builder ID +toolkit.login.dialog.connect_button=Connect +toolkit.login.dialog.connect_inprogress=Waiting to Authenticate... +toolkit.login.dialog.iam.comment=Edit AWS credentials file(s) +toolkit.login.dialog.iam.text_field.access_key_id=Access Key ID: +toolkit.login.dialog.iam.text_field.secret_access_key=Secret Access Key: +toolkit.login.dialog.iam.title=Use IAM Credentials +toolkit.login.dialog.label=Select a connection option +toolkit.login.dialog.sso.comment=Sign in to your company's IAM Identity Center access portal login page. +toolkit.login.dialog.sso.text_field.region=Region: +toolkit.login.dialog.sso.text_field.start_url=Start URL: +toolkit.login.dialog.sso.title=Connect using AWS IAM Identity Center +toolkit.login.dialog.title=AWS Toolkit: Add Connection +toolkit.sso_expire.dialog.cancel_button=Cancel +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.aws.codewhisperer.codereference=Code Reference Log +toolwindow.stripe.aws.codewhisperer.codetransform=Transformation Hub diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt similarity index 87% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt index 11a9dde795c..f2d74100e2c 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ToolkitPlaces.kt @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt similarity index 83% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt index 21ce26c923d..c652811d170 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/actions/SsoLogoutAction.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.credentials.actions @@ -12,8 +12,6 @@ import software.aws.toolkits.jetbrains.core.credentials.ProfileSsoManagedBearerS import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManagerListener import software.aws.toolkits.jetbrains.core.credentials.deleteSsoConnection import software.aws.toolkits.jetbrains.core.credentials.logoutFromSsoConnection -import software.aws.toolkits.jetbrains.core.credentials.sono.CODECATALYST_SCOPES -import software.aws.toolkits.jetbrains.core.explorer.refreshDevToolTree import software.aws.toolkits.resources.message class SsoLogoutAction(private val value: AwsBearerTokenConnection) : DumbAwareAction(message("credentials.individual_identity.signout")) { @@ -31,8 +29,5 @@ class SsoLogoutAction(private val value: AwsBearerTokenConnection) : DumbAwareAc ApplicationManager.getApplication().messageBus.syncPublisher( ToolkitConnectionManagerListener.TOPIC ).activeConnectionChanged(null) - if (CODECATALYST_SCOPES.all { it in value.scopes }) { - e.project?.refreshDevToolTree() - } } } diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt new file mode 100644 index 00000000000..85477475f8f --- /dev/null +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt @@ -0,0 +1,244 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.core.gettingstarted + +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.project.Project +import com.intellij.ui.jcef.JBCefApp +import software.aws.toolkits.core.utils.tryOrNull +import software.aws.toolkits.jetbrains.core.credentials.LegacyManagedBearerSsoConnection +import software.aws.toolkits.jetbrains.core.credentials.ManagedBearerSsoConnection +import software.aws.toolkits.jetbrains.core.credentials.ProfileSsoManagedBearerSsoConnection +import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager +import software.aws.toolkits.jetbrains.core.credentials.loginSso +import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection +import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection +import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded +import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getAuthStatus +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getConnectionCount +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getEnabledConnections +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getSourceOfEntry +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getStartupState +import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider +import software.aws.toolkits.resources.message +import software.aws.toolkits.telemetry.AuthTelemetry +import software.aws.toolkits.telemetry.FeatureId +import software.aws.toolkits.telemetry.Result + +fun requestCredentialsForCodeWhisperer( + project: Project, + popupBuilderIdTab: Boolean = true, + initialConnectionCount: Int = getConnectionCount(), + initialAuthConnections: String = getEnabledConnections( + project + ), + isFirstInstance: Boolean = false, + connectionInitiatedFromExplorer: Boolean = false +): Boolean { + val authenticationDialog = SetupAuthenticationDialog( + project, + state = SetupAuthenticationDialogState().also { + if (popupBuilderIdTab) { + it.selectedTab.set(SetupAuthenticationTabs.BUILDER_ID) + } + }, + tabSettings = mapOf( + SetupAuthenticationTabs.IDENTITY_CENTER to AuthenticationTabSettings( + disabled = false, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.WARNING, + message("gettingstarted.setup.codewhisperer.use_builder_id"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + ) + ), + SetupAuthenticationTabs.BUILDER_ID to AuthenticationTabSettings( + disabled = false, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.WARNING, + message("gettingstarted.setup.codewhisperer.use_identity_center"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + ) + ), + SetupAuthenticationTabs.IAM_LONG_LIVED to AuthenticationTabSettings( + disabled = true, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.ERROR, + message("gettingstarted.setup.auth.no_iam"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + + ) + ) + ), + scopes = Q_SCOPES, + promptForIdcPermissionSet = false, + sourceOfEntry = SourceOfEntry.CODEWHISPERER, + featureId = FeatureId.Codewhisperer, + isFirstInstance = isFirstInstance, + connectionInitiatedFromExplorer = connectionInitiatedFromExplorer + ) + val isAuthenticationSuccessful = authenticationDialog.showAndGet() + if (isAuthenticationSuccessful) { + AuthTelemetry.addConnection( + project, + source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), + featureId = FeatureId.Codewhisperer, + credentialSourceId = authenticationDialog.authType, + isAggregated = true, + attempts = authenticationDialog.attempts + 1, + result = Result.Succeeded + ) + AuthTelemetry.addedConnections( + project, + source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), + authConnectionsCount = initialConnectionCount, + newAuthConnectionsCount = getConnectionCount() - initialConnectionCount, + enabledAuthConnections = initialAuthConnections, + newEnabledAuthConnections = getEnabledConnections(project), + attempts = authenticationDialog.attempts + 1, + result = Result.Succeeded + ) + } else { + AuthTelemetry.addConnection( + project, + source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), + featureId = FeatureId.Codewhisperer, + credentialSourceId = authenticationDialog.authType, + isAggregated = false, + attempts = authenticationDialog.attempts + 1, + result = Result.Cancelled, + ) + } + return isAuthenticationSuccessful +} + +@Deprecated("pending moving to Q package") +fun requestCredentialsForQ( + project: Project, + initialConnectionCount: Int = getConnectionCount(), + initialAuthConnections: String = getEnabledConnections( + project + ), + isFirstInstance: Boolean = false, + connectionInitiatedFromExplorer: Boolean = false, + connectionInitiatedFromQChatPanel: Boolean = false +): Boolean { + // try to scope upgrade if we have a codewhisperer connection + val codeWhispererConnection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(CodeWhispererConnection.getInstance()) + if (codeWhispererConnection is LegacyManagedBearerSsoConnection) { + codeWhispererConnection.let { + return tryOrNull { + loginSso(project, it.startUrl, it.region, Q_SCOPES) + } != null + } + } + + val dialogState = SetupAuthenticationDialogState().apply { + (codeWhispererConnection as? ProfileSsoManagedBearerSsoConnection)?.let { connection -> + idcTabState.apply { + profileName = connection.configSessionName + startUrl = connection.startUrl + region = AwsRegionProvider.getInstance().let { it.get(connection.region) ?: it.defaultRegion() } + } + + // default selected tab is IdC, but just in case + selectedTab.set(SetupAuthenticationTabs.IDENTITY_CENTER) + } ?: run { + selectedTab.set(SetupAuthenticationTabs.BUILDER_ID) + } + } + + val authenticationDialog = SetupAuthenticationDialog( + project, + state = dialogState, + tabSettings = mapOf( + SetupAuthenticationTabs.IDENTITY_CENTER to AuthenticationTabSettings( + disabled = false, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.WARNING, + message("gettingstarted.setup.codewhisperer.use_builder_id"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + ) + ), + SetupAuthenticationTabs.BUILDER_ID to AuthenticationTabSettings( + disabled = false, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.WARNING, + message("gettingstarted.setup.codewhisperer.use_identity_center"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + ) + ), + SetupAuthenticationTabs.IAM_LONG_LIVED to AuthenticationTabSettings( + disabled = true, + notice = SetupAuthenticationNotice( + SetupAuthenticationNotice.NoticeType.ERROR, + message("gettingstarted.setup.auth.no_iam"), + CODEWHISPERER_AUTH_LEARN_MORE_LINK + ) + ) + ), + scopes = Q_SCOPES, + promptForIdcPermissionSet = false, + sourceOfEntry = SourceOfEntry.Q, + featureId = FeatureId.Q, // TODO: Update Q in common + connectionInitiatedFromQChatPanel = connectionInitiatedFromQChatPanel + ) + + val isAuthenticationSuccessful = authenticationDialog.showAndGet() + if (isAuthenticationSuccessful) { + AuthTelemetry.addConnection( + project, + source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), + featureId = FeatureId.Q, + credentialSourceId = authenticationDialog.authType, + isAggregated = true, + attempts = authenticationDialog.attempts + 1, + result = Result.Succeeded + ) + AuthTelemetry.addedConnections( + project, + source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), + authConnectionsCount = initialConnectionCount, + newAuthConnectionsCount = getConnectionCount() - initialConnectionCount, + enabledAuthConnections = initialAuthConnections, + newEnabledAuthConnections = getEnabledConnections(project), + attempts = authenticationDialog.attempts + 1, + result = Result.Succeeded + ) + } else { + AuthTelemetry.addConnection( + project, + source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), + featureId = FeatureId.Q, + credentialSourceId = authenticationDialog.authType, + isAggregated = false, + attempts = authenticationDialog.attempts + 1, + result = Result.Cancelled, + ) + } + return isAuthenticationSuccessful +} + +fun reauthenticateWithQ(project: Project) { + val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(QConnection.getInstance()) + if (connection !is ManagedBearerSsoConnection) return + ApplicationManager.getApplication().executeOnPooledThread { + reauthConnectionIfNeeded(project, connection) + } +} + +fun emitUserState(project: Project) { + AuthTelemetry.userState( + project, + source = getStartupState().toString(), + authEnabledConnections = getEnabledConnections(project), + authStatus = getAuthStatus(project), + passive = true + ) +} + +const val CODEWHISPERER_AUTH_LEARN_MORE_LINK = "https://docs.aws.amazon.com/codewhisperer/latest/userguide/codewhisperer-auth.html" + +fun shouldShowNonWebviewUI(): Boolean = !JBCefApp.isSupported() diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopup.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopup.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopup.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopup.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt similarity index 96% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt index 959769f3eca..01f9ef851c7 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialog.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted @@ -45,6 +45,7 @@ import software.aws.toolkits.jetbrains.core.credentials.loginSso import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROLE_ACCESS_SCOPE import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getSourceOfEntry import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider import software.aws.toolkits.jetbrains.utils.runUnderProgressIfNeeded @@ -56,7 +57,6 @@ import software.aws.toolkits.telemetry.CredentialSourceId import software.aws.toolkits.telemetry.FeatureId import software.aws.toolkits.telemetry.Result import java.awt.BorderLayout -import java.util.Locale import java.util.Optional import javax.swing.Action import javax.swing.BorderFactory @@ -111,32 +111,6 @@ data class SetupAuthenticationNotice( } } -enum class SourceOfEntry { - RESOURCE_EXPLORER, - CODECATALYST, - CODEWHISPERER, - EXPLORER, - FIRST_STARTUP, - Q, - AMAZONQ_CHAT_PANEL, - UNKNOWN; - override fun toString(): String { - val value = this.name.lowercase() - // If the string in lowercase contains an _ eg RESOURCE_EXPLORER, this function returns camelCase of the string i.e resourceExplorer - return if (value.contains("_")) { - // convert to camelCase - ( - value.substringBefore("_") + - value.substringAfter("_").replaceFirstChar { - if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() - } - ) - } else { - value - } - } -} - interface AuthenticationDialog { val attempts: Int val authType: CredentialSourceId diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt similarity index 89% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt index 712779ab0b9..abb801519dd 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanelUtils.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted.editor @@ -18,8 +18,8 @@ import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererCon import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection import software.aws.toolkits.jetbrains.core.credentials.profiles.SsoSessionConstants import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL -import software.aws.toolkits.jetbrains.core.gettingstarted.SourceOfEntry import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend +import java.util.Locale enum class ActiveConnectionType { BUILDER_ID, @@ -172,3 +172,29 @@ fun getSourceOfEntry( val source = if (isStartup) SourceOfEntry.FIRST_STARTUP.toString() else src return if (isRunningOnRemoteBackend()) "REMOTE_$source" else source } + +enum class SourceOfEntry { + RESOURCE_EXPLORER, + CODECATALYST, + CODEWHISPERER, + EXPLORER, + FIRST_STARTUP, + Q, + AMAZONQ_CHAT_PANEL, + UNKNOWN; + override fun toString(): String { + val value = this.name.lowercase() + // If the string in lowercase contains an _ eg RESOURCE_EXPLORER, this function returns camelCase of the string i.e resourceExplorer + return if (value.contains("_")) { + // convert to camelCase + ( + value.substringBefore("_") + + value.substringAfter("_").replaceFirstChar { + if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() + } + ) + } else { + value + } + } +} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt similarity index 95% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt index 205346f30dc..66f8ecfda6b 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedTelemetryUtils.kt @@ -10,7 +10,7 @@ import software.aws.toolkits.core.utils.tryOrNull import software.aws.toolkits.jetbrains.core.credentials.CredentialManager import software.aws.toolkits.jetbrains.core.credentials.ToolkitAuthManager import software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileCredentialsIdentifierSso -import software.aws.toolkits.jetbrains.settings.GettingStartedSettings +import software.aws.toolkits.jetbrains.settings.AwsSettings import software.aws.toolkits.telemetry.AuthStatus import software.aws.toolkits.telemetry.StartUpState @@ -72,7 +72,7 @@ fun getEnabledConnections(project: Project?): String = fun getStartupState(): StartUpState { val hasStartedToolkitBefore = tryOrNull { - getPersistentStateComponentStorageLocation(GettingStartedSettings::class.java)?.exists() + getPersistentStateComponentStorageLocation(AwsSettings::class.java)?.exists() } ?: true return if (hasStartedToolkitBefore) StartUpState.Reloaded else StartUpState.FirstStartUp } diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QConstants.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QConstants.kt new file mode 100644 index 00000000000..3cc2bf81741 --- /dev/null +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QConstants.kt @@ -0,0 +1,9 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.amazonq + +object QConstants { + const val Q_MARKETPLACE_URI = "https://aws.amazon.com/q/developer/" + const val CODEWHISPERER_LOGIN_HELP_URI = "https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/auth-access.html" +} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt similarity index 99% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt index c900bea09db..c873a533fec 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/AsyncComboBox.kt @@ -1,4 +1,4 @@ -// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.ui diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/KeyValueTextField.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/KeyValueTextField.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/KeyValueTextField.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/KeyValueTextField.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt similarity index 89% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt index b2e99d84035..344594d5d4f 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt @@ -1,4 +1,4 @@ -// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.ui.feedback @@ -35,7 +35,6 @@ import software.aws.toolkits.jetbrains.AwsToolkit import software.aws.toolkits.jetbrains.core.coroutines.getCoroutineUiContext import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope import software.aws.toolkits.jetbrains.core.help.HelpIds -import software.aws.toolkits.jetbrains.feedback.sendFeedbackWithExperimentsMetadata import software.aws.toolkits.jetbrains.services.telemetry.ClientMetadata import software.aws.toolkits.jetbrains.utils.notifyInfo import software.aws.toolkits.resources.message @@ -43,16 +42,8 @@ import software.aws.toolkits.telemetry.FeedbackTelemetry import software.aws.toolkits.telemetry.Result import java.net.URLEncoder -class ToolkitFeedbackDialog(project: Project) : FeedbackDialog(project) { - override fun productName() = "AWS Toolkit" - override fun notificationTitle() = message("aws.notification.title") - - override fun getHelpId() = HelpIds.AWS_TOOLKIT_GETTING_STARTED.id - - override suspend fun sendFeedback() { - sendFeedbackWithExperimentsMetadata(sentiment, commentText) - } -} +const val FEEDBACK_SOURCE = "source" +const val ENABLED_EXPERIMENTS = "experimentsEnabled" abstract class FeedbackDialog( protected val project: Project, @@ -233,18 +224,3 @@ abstract class FeedbackDialog( } } } - -class ShowFeedbackDialogAction : DumbAwareAction(message("feedback.title", "Toolkit"), message("feedback.description"), AwsIcons.Misc.SMILE_GREY) { - override fun getActionUpdateThread() = ActionUpdateThread.BGT - - override fun actionPerformed(e: AnActionEvent) { - runInEdt { - ToolkitFeedbackDialog(e.getRequiredData(LangDataKeys.PROJECT)).show() - } - } - - override fun update(e: AnActionEvent) { - super.update(e) - e.presentation.icon = AwsIcons.Misc.SMILE_GREY - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/PsiUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/PsiUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/PsiUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/PsiUtils.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt similarity index 80% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt index 37d33131e74..b4688c25979 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/RemoteEnvUtils.kt @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.utils @@ -7,7 +7,6 @@ import com.intellij.idea.AppMode import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.extensions.ExtensionNotApplicableException import com.intellij.openapi.util.BuildNumber -import software.aws.toolkits.jetbrains.services.caws.CawsConstants /** * @return true if running in any type of remote environment @@ -17,7 +16,7 @@ fun isRunningOnRemoteBackend() = AppMode.isRemoteDevHost() /** * @return true if running in a codecatalyst remote environment */ -fun isCodeCatalystDevEnv() = System.getenv(CawsConstants.CAWS_ENV_ID_VAR) != null +fun isCodeCatalystDevEnv() = System.getenv("__DEV_ENVIRONMENT_ID") != null fun disableExtensionIfRemoteBackend() { if (isRunningOnRemoteBackend()) { diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ui/ResizingColumnRenderer.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/ResizingColumnRenderer.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ui/ResizingColumnRenderer.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/ResizingColumnRenderer.kt diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt rename to plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt diff --git a/plugins/toolkit/resources/build.gradle.kts b/plugins/core/resources/build.gradle.kts similarity index 100% rename from plugins/toolkit/resources/build.gradle.kts rename to plugins/core/resources/build.gradle.kts diff --git a/plugins/toolkit/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties similarity index 100% rename from plugins/toolkit/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties rename to plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties diff --git a/plugins/toolkit/resources/src/software/aws/toolkits/resources/BundledResources.kt b/plugins/core/resources/src/software/aws/toolkits/resources/BundledResources.kt similarity index 100% rename from plugins/toolkit/resources/src/software/aws/toolkits/resources/BundledResources.kt rename to plugins/core/resources/src/software/aws/toolkits/resources/BundledResources.kt diff --git a/plugins/toolkit/resources/src/software/aws/toolkits/resources/Localization.kt b/plugins/core/resources/src/software/aws/toolkits/resources/Localization.kt similarity index 100% rename from plugins/toolkit/resources/src/software/aws/toolkits/resources/Localization.kt rename to plugins/core/resources/src/software/aws/toolkits/resources/Localization.kt diff --git a/plugins/toolkit/resources/tst/software/aws/toolkits/resources/BundledResourcesTest.kt b/plugins/core/resources/tst/software/aws/toolkits/resources/BundledResourcesTest.kt similarity index 100% rename from plugins/toolkit/resources/tst/software/aws/toolkits/resources/BundledResourcesTest.kt rename to plugins/core/resources/tst/software/aws/toolkits/resources/BundledResourcesTest.kt diff --git a/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json b/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json index 36636bf987d..5b32e9bc707 100644 --- a/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json +++ b/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json @@ -5,6 +5,7 @@ "endpointPrefix":"oidc", "jsonVersion":"1.1", "protocol":"rest-json", + "protocols":["rest-json"], "serviceAbbreviation":"SSO OIDC", "serviceFullName":"AWS SSO OIDC", "serviceId":"SSO OIDC", @@ -74,7 +75,8 @@ {"shape":"InvalidScopeException"}, {"shape":"InvalidClientMetadataException"}, {"shape":"InternalServerException"}, - {"shape":"InvalidRedirectUriException"} + {"shape":"InvalidRedirectUriException"}, + {"shape":"UnsupportedGrantTypeException"} ], "documentation":"

Registers a client with IAM Identity Center. This allows clients to initiate device authorization. The output should be persisted for reuse through many authentication requests.

", "authtype":"none" @@ -516,11 +518,11 @@ }, "issuerUrl":{ "shape":"URI", - "documentation":"

This is the Identity Center Issuer URL associated with users Identity Center instance and is used for user access to resources through the client.

" + "documentation":"

The IAM Identity Center Issuer URL associated with an instance of IAM Identity Center. This value is needed for user access to resources through the client.

" }, "entitledApplicationArn":{ "shape":"ArnType", - "documentation":"

This Identity Center Application ARN is used to define administrator managed configuration for public client access to resources. At authorization, the scopes, grants, and redirect URI available to this client will be restricted by this Application resource.

" + "documentation":"

This IAM Identity Center application ARN is used to define administrator-managed configuration for public client access to resources. At authorization, the scopes, grants, and redirect URI available to this client will be restricted by this application resource.

" } } }, diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 373d613558c..e84621b0775 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -84,12 +84,6 @@ val gatewayArtifacts by configurations.creating { extendsFrom(configurations["implementation"], configurations["runtimeOnly"]) } -val jarNoPluginXmlArtifacts by configurations.creating { - isCanBeConsumed = true - isCanBeResolved = false - // only consumed without transitive depen -} - val gatewayJar = tasks.create("gatewayJar") { // META-INF/plugin.xml is a duplicate? // unclear why the exclude() statement didn't work @@ -114,22 +108,8 @@ val gatewayJar = tasks.create("gatewayJar") { } } -val jarNoPluginXml = tasks.create("jarNoPluginXml") { - duplicatesStrategy = DuplicatesStrategy.WARN - - dependsOn(tasks.instrumentedJar) - - archiveBaseName.set("aws-toolkit-jetbrains-IC-noPluginXml") - from(tasks.instrumentedJar.get().outputs.files.map { zipTree(it) }) { - exclude("**/plugin.xml") - exclude("**/plugin-intellij.xml") - exclude("**/inactive") - } -} - artifacts { add("gatewayArtifacts", gatewayJar) - add("jarNoPluginXmlArtifacts", jarNoPluginXml) } tasks.prepareSandbox { @@ -150,24 +130,6 @@ tasks.processTestResources { duplicatesStrategy = DuplicatesStrategy.INCLUDE } -// delete when fully split -// pull in shim to make tests pass -val dummyPluginJar = tasks.register("dummyPluginJar") { - archiveFileName.set("dummy.jar") - - from(project.file("test-plugin-shim.xml")) { - rename { "plugin-shim.xml" } - into("META-INF") - } -} - -tasks.prepareTestingSandbox { - dependsOn(dummyPluginJar) - - intoChild(pluginName.map { "$it/lib" }) - .from(dummyPluginJar) -} - dependencies { listOf( libs.aws.apprunner, @@ -191,28 +153,16 @@ dependencies { libs.aws.services, ).forEach { api(it) { isTransitive = false } } - listOf( - libs.aws.apacheClient, - libs.aws.nettyClient, - ).forEach { compileOnlyApi(it) { isTransitive = false } } - - compileOnlyApi(project(":plugin-toolkit:core")) + compileOnlyApi(project(":plugin-core:core")) compileOnlyApi(project(":plugin-core:jetbrains-community")) // TODO: remove Q dependency when split is fully done - implementation(project(":plugin-amazonq:mynah-ui")) implementation(libs.bundles.jackson) implementation(libs.zjsonpatch) - // CodeWhispererTelemetryService uses a CircularFifoQueue, transitive from zjsonpatch - implementation(libs.commons.collections) - testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) // slf4j is v1.7.36 for <233 // in <233, the classpass binding functionality picks up the wrong impl of StaticLoggerBinder (from the maven plugin instead of IDE platform) and causes a NoClassDefFoundError // instead of trying to fix the classpath, since it's built by gradle-intellij-plugin, shove slf4j >= 2.0.9 onto the test classpath, which uses a ServiceLoader and call it done testImplementation(libs.slf4j.api) testRuntimeOnly(libs.slf4j.jdk14) - - // delete when fully split - testRuntimeOnly(project(":plugin-amazonq", "moduleOnlyJars")) } diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/CredentialsHelpAction.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/CredentialsHelpAction.kt index 653e85bc1b6..c10ab2f5094 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/CredentialsHelpAction.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/credentials/actions/CredentialsHelpAction.kt @@ -8,14 +8,14 @@ import com.intellij.ide.BrowserUtil import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.application.runInEdt import com.intellij.openapi.project.DumbAwareAction -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants +import software.aws.toolkits.jetbrains.services.amazonq.QConstants import java.net.URI class CredentialsHelpAction : DumbAwareAction(AllIcons.General.ContextHelp) { override fun actionPerformed(e: AnActionEvent) { // TODO: update runInEdt { - BrowserUtil.browse(URI(CodeWhispererConstants.CODEWHISPERER_LOGIN_HELP_URI)) + BrowserUtil.browse(URI(QConstants.CODEWHISPERER_LOGIN_HELP_URI)) } } } diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt index 045820d0c58..f3ddccbb555 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt @@ -1,40 +1,18 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted import com.intellij.openapi.application.ApplicationInfo -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.runInEdt import com.intellij.openapi.project.Project -import com.intellij.openapi.ui.Messages import com.intellij.ui.jcef.JBCefApp -import software.aws.toolkits.core.utils.tryOrNull -import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection -import software.aws.toolkits.jetbrains.core.credentials.ConfigFilesFacade -import software.aws.toolkits.jetbrains.core.credentials.DefaultConfigFilesFacade -import software.aws.toolkits.jetbrains.core.credentials.LegacyManagedBearerSsoConnection -import software.aws.toolkits.jetbrains.core.credentials.ManagedBearerSsoConnection -import software.aws.toolkits.jetbrains.core.credentials.ProfileSsoManagedBearerSsoConnection -import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager -import software.aws.toolkits.jetbrains.core.credentials.UserConfigSsoSessionProfile -import software.aws.toolkits.jetbrains.core.credentials.authAndUpdateConfig -import software.aws.toolkits.jetbrains.core.credentials.loginSso -import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection -import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection -import software.aws.toolkits.jetbrains.core.credentials.profiles.SsoSessionConstants -import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded import software.aws.toolkits.jetbrains.core.credentials.sono.CODECATALYST_SCOPES -import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROLE_ACCESS_SCOPE -import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES import software.aws.toolkits.jetbrains.core.explorer.showWebview import software.aws.toolkits.jetbrains.core.explorer.webview.ToolkitWebviewPanel -import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getAuthStatus +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getConnectionCount import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getEnabledConnections import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getSourceOfEntry -import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getStartupState -import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider import software.aws.toolkits.jetbrains.core.webview.BrowserState import software.aws.toolkits.jetbrains.services.caws.CawsEndpoints.CAWS_DOCS import software.aws.toolkits.resources.message @@ -42,234 +20,6 @@ import software.aws.toolkits.telemetry.AuthTelemetry import software.aws.toolkits.telemetry.FeatureId import software.aws.toolkits.telemetry.Result -fun rolePopupFromConnection( - project: Project, - connection: AwsBearerTokenConnection, - configFilesFacade: ConfigFilesFacade = DefaultConfigFilesFacade(), - isFirstInstance: Boolean = false -) { - runInEdt { - if (!connection.id.startsWith(SsoSessionConstants.SSO_SESSION_SECTION_NAME)) { - // require reauth if it's not a profile-based sso connection - requestCredentialsForExplorer(project, isFirstInstance = isFirstInstance, connectionInitiatedFromExplorer = true) - } else { - val session = connection.id.substringAfter("${SsoSessionConstants.SSO_SESSION_SECTION_NAME}:") - - val tokenProvider = if (!connection.scopes.contains(IDENTITY_CENTER_ROLE_ACCESS_SCOPE)) { - val scopes = connection.scopes + IDENTITY_CENTER_ROLE_ACCESS_SCOPE - val profile = UserConfigSsoSessionProfile( - configSessionName = session, - ssoRegion = connection.region, - startUrl = connection.startUrl, - scopes = scopes - ) - - authAndUpdateConfig(project, profile, configFilesFacade, {}) { e, _ -> - Messages.showErrorDialog(project, e.message, message("gettingstarted.explorer.iam.add")) - } ?: return@runInEdt - } else { - reauthConnectionIfNeeded(project, connection) - connection - }.getConnectionSettings().tokenProvider - - IdcRolePopup(project, connection.region, session, tokenProvider).show() - } - } -} - -fun requestCredentialsForCodeWhisperer( - project: Project, - popupBuilderIdTab: Boolean = true, - initialConnectionCount: Int = getConnectionCount(), - initialAuthConnections: String = getEnabledConnections( - project - ), - isFirstInstance: Boolean = false, - connectionInitiatedFromExplorer: Boolean = false -): Boolean { - val authenticationDialog = SetupAuthenticationDialog( - project, - state = SetupAuthenticationDialogState().also { - if (popupBuilderIdTab) { - it.selectedTab.set(SetupAuthenticationTabs.BUILDER_ID) - } - }, - tabSettings = mapOf( - SetupAuthenticationTabs.IDENTITY_CENTER to AuthenticationTabSettings( - disabled = false, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.WARNING, - message("gettingstarted.setup.codewhisperer.use_builder_id"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - ) - ), - SetupAuthenticationTabs.BUILDER_ID to AuthenticationTabSettings( - disabled = false, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.WARNING, - message("gettingstarted.setup.codewhisperer.use_identity_center"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - ) - ), - SetupAuthenticationTabs.IAM_LONG_LIVED to AuthenticationTabSettings( - disabled = true, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.ERROR, - message("gettingstarted.setup.auth.no_iam"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - - ) - ) - ), - scopes = Q_SCOPES, - promptForIdcPermissionSet = false, - sourceOfEntry = SourceOfEntry.CODEWHISPERER, - featureId = FeatureId.Codewhisperer, - isFirstInstance = isFirstInstance, - connectionInitiatedFromExplorer = connectionInitiatedFromExplorer - ) - val isAuthenticationSuccessful = authenticationDialog.showAndGet() - if (isAuthenticationSuccessful) { - AuthTelemetry.addConnection( - project, - source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), - featureId = FeatureId.Codewhisperer, - credentialSourceId = authenticationDialog.authType, - isAggregated = true, - attempts = authenticationDialog.attempts + 1, - result = Result.Succeeded - ) - AuthTelemetry.addedConnections( - project, - source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), - authConnectionsCount = initialConnectionCount, - newAuthConnectionsCount = getConnectionCount() - initialConnectionCount, - enabledAuthConnections = initialAuthConnections, - newEnabledAuthConnections = getEnabledConnections(project), - attempts = authenticationDialog.attempts + 1, - result = Result.Succeeded - ) - } else { - AuthTelemetry.addConnection( - project, - source = getSourceOfEntry(SourceOfEntry.CODEWHISPERER, isFirstInstance, connectionInitiatedFromExplorer), - featureId = FeatureId.Codewhisperer, - credentialSourceId = authenticationDialog.authType, - isAggregated = false, - attempts = authenticationDialog.attempts + 1, - result = Result.Cancelled, - ) - } - return isAuthenticationSuccessful -} - -@Deprecated("pending moving to Q package") -fun requestCredentialsForQ( - project: Project, - initialConnectionCount: Int = getConnectionCount(), - initialAuthConnections: String = getEnabledConnections( - project - ), - isFirstInstance: Boolean = false, - connectionInitiatedFromExplorer: Boolean = false, - connectionInitiatedFromQChatPanel: Boolean = false -): Boolean { - // try to scope upgrade if we have a codewhisperer connection - val codeWhispererConnection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(CodeWhispererConnection.getInstance()) - if (codeWhispererConnection is LegacyManagedBearerSsoConnection) { - codeWhispererConnection.let { - return tryOrNull { - loginSso(project, it.startUrl, it.region, Q_SCOPES) - } != null - } - } - - val dialogState = SetupAuthenticationDialogState().apply { - (codeWhispererConnection as? ProfileSsoManagedBearerSsoConnection)?.let { connection -> - idcTabState.apply { - profileName = connection.configSessionName - startUrl = connection.startUrl - region = AwsRegionProvider.getInstance().let { it.get(connection.region) ?: it.defaultRegion() } - } - - // default selected tab is IdC, but just in case - selectedTab.set(SetupAuthenticationTabs.IDENTITY_CENTER) - } ?: run { - selectedTab.set(SetupAuthenticationTabs.BUILDER_ID) - } - } - - val authenticationDialog = SetupAuthenticationDialog( - project, - state = dialogState, - tabSettings = mapOf( - SetupAuthenticationTabs.IDENTITY_CENTER to AuthenticationTabSettings( - disabled = false, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.WARNING, - message("gettingstarted.setup.codewhisperer.use_builder_id"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - ) - ), - SetupAuthenticationTabs.BUILDER_ID to AuthenticationTabSettings( - disabled = false, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.WARNING, - message("gettingstarted.setup.codewhisperer.use_identity_center"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - ) - ), - SetupAuthenticationTabs.IAM_LONG_LIVED to AuthenticationTabSettings( - disabled = true, - notice = SetupAuthenticationNotice( - SetupAuthenticationNotice.NoticeType.ERROR, - message("gettingstarted.setup.auth.no_iam"), - CODEWHISPERER_AUTH_LEARN_MORE_LINK - ) - ) - ), - scopes = Q_SCOPES, - promptForIdcPermissionSet = false, - sourceOfEntry = SourceOfEntry.Q, - featureId = FeatureId.Q, // TODO: Update Q in common - connectionInitiatedFromQChatPanel = connectionInitiatedFromQChatPanel - ) - - val isAuthenticationSuccessful = authenticationDialog.showAndGet() - if (isAuthenticationSuccessful) { - AuthTelemetry.addConnection( - project, - source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), - featureId = FeatureId.Q, - credentialSourceId = authenticationDialog.authType, - isAggregated = true, - attempts = authenticationDialog.attempts + 1, - result = Result.Succeeded - ) - AuthTelemetry.addedConnections( - project, - source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), - authConnectionsCount = initialConnectionCount, - newAuthConnectionsCount = getConnectionCount() - initialConnectionCount, - enabledAuthConnections = initialAuthConnections, - newEnabledAuthConnections = getEnabledConnections(project), - attempts = authenticationDialog.attempts + 1, - result = Result.Succeeded - ) - } else { - AuthTelemetry.addConnection( - project, - source = getSourceOfEntry(SourceOfEntry.Q, isFirstInstance, connectionInitiatedFromExplorer, connectionInitiatedFromQChatPanel), - featureId = FeatureId.Q, - credentialSourceId = authenticationDialog.authType, - isAggregated = false, - attempts = authenticationDialog.attempts + 1, - result = Result.Cancelled, - ) - } - return isAuthenticationSuccessful -} - fun requestCredentialsForCodeCatalyst( project: Project?, popupBuilderIdTab: Boolean = true, @@ -363,14 +113,6 @@ fun requestCredentialsForCodeCatalyst( return isAuthenticationSuccessful } -fun reauthenticateWithQ(project: Project) { - val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(QConnection.getInstance()) - if (connection !is ManagedBearerSsoConnection) return - ApplicationManager.getApplication().executeOnPooledThread { - reauthConnectionIfNeeded(project, connection) - } -} - fun requestCredentialsForExplorer( project: Project, initialConnectionCount: Int = getConnectionCount(), @@ -438,17 +180,3 @@ fun requestCredentialsForExplorer( } return isAuthSuccessful } - -fun emitUserState(project: Project) { - AuthTelemetry.userState( - project, - source = getStartupState().toString(), - authEnabledConnections = getEnabledConnections(project), - authStatus = getAuthStatus(project), - passive = true - ) -} - -const val CODEWHISPERER_AUTH_LEARN_MORE_LINK = "https://docs.aws.amazon.com/codewhisperer/latest/userguide/codewhisperer-auth.html" - -fun shouldShowNonWebviewUI(): Boolean = !JBCefApp.isSupported() diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedOnStartup.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedOnStartup.kt index dae0aa98ab6..cbceeff6e71 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedOnStartup.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedOnStartup.kt @@ -12,6 +12,7 @@ import software.aws.toolkits.core.utils.getLogger import software.aws.toolkits.core.utils.tryOrNull import software.aws.toolkits.jetbrains.core.credentials.CredentialManager import software.aws.toolkits.jetbrains.core.gettingstarted.editor.GettingStartedPanel +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getConnectionCount import software.aws.toolkits.jetbrains.core.gettingstarted.editor.getEnabledConnections import software.aws.toolkits.jetbrains.settings.GettingStartedSettings diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitAuthUtils.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitAuthUtils.kt new file mode 100644 index 00000000000..876a2e74209 --- /dev/null +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitAuthUtils.kt @@ -0,0 +1,52 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.core.gettingstarted + +import com.intellij.openapi.application.runInEdt +import com.intellij.openapi.project.Project +import com.intellij.openapi.ui.Messages +import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection +import software.aws.toolkits.jetbrains.core.credentials.ConfigFilesFacade +import software.aws.toolkits.jetbrains.core.credentials.DefaultConfigFilesFacade +import software.aws.toolkits.jetbrains.core.credentials.UserConfigSsoSessionProfile +import software.aws.toolkits.jetbrains.core.credentials.authAndUpdateConfig +import software.aws.toolkits.jetbrains.core.credentials.profiles.SsoSessionConstants +import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded +import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROLE_ACCESS_SCOPE +import software.aws.toolkits.resources.message + +fun rolePopupFromConnection( + project: Project, + connection: AwsBearerTokenConnection, + configFilesFacade: ConfigFilesFacade = DefaultConfigFilesFacade(), + isFirstInstance: Boolean = false +) { + runInEdt { + if (!connection.id.startsWith(SsoSessionConstants.SSO_SESSION_SECTION_NAME)) { + // require reauth if it's not a profile-based sso connection + requestCredentialsForExplorer(project, isFirstInstance = isFirstInstance, connectionInitiatedFromExplorer = true) + } else { + val session = connection.id.substringAfter("${SsoSessionConstants.SSO_SESSION_SECTION_NAME}:") + + val tokenProvider = if (!connection.scopes.contains(IDENTITY_CENTER_ROLE_ACCESS_SCOPE)) { + val scopes = connection.scopes + IDENTITY_CENTER_ROLE_ACCESS_SCOPE + val profile = UserConfigSsoSessionProfile( + configSessionName = session, + ssoRegion = connection.region, + startUrl = connection.startUrl, + scopes = scopes + ) + + authAndUpdateConfig(project, profile, configFilesFacade, {}) { e, _ -> + Messages.showErrorDialog(project, e.message, message("gettingstarted.explorer.iam.add")) + } ?: return@runInEdt + } else { + reauthConnectionIfNeeded(project, connection) + connection + }.getConnectionSettings().tokenProvider + + IdcRolePopup(project, connection.region, session, tokenProvider).show() + } + } +} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt index 9ce5877586f..05710d50843 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/editor/GettingStartedPanel.kt @@ -63,7 +63,6 @@ import software.aws.toolkits.jetbrains.core.gettingstarted.requestCredentialsFor import software.aws.toolkits.jetbrains.core.gettingstarted.requestCredentialsForExplorer import software.aws.toolkits.jetbrains.services.caws.CawsEndpoints import software.aws.toolkits.jetbrains.services.caws.CawsResources -import software.aws.toolkits.jetbrains.services.codewhisperer.learn.LearnCodeWhispererEditorProvider import software.aws.toolkits.jetbrains.ui.feedback.ToolkitFeedbackDialog import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend import software.aws.toolkits.jetbrains.utils.ui.editorNotificationCompoundBorder @@ -874,7 +873,7 @@ class GettingStartedPanel( panelConnected = panel { row { button(message("codewhisperer.explorer.learn")) { - LearnCodeWhispererEditorProvider.openEditor(project) +// LearnCodeWhispererEditorProvider.openEditor(project) } } row { diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/QMigrationActivity.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/QMigrationActivity.kt index 2e47b3f2d71..c0031a00e2f 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/QMigrationActivity.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/startup/QMigrationActivity.kt @@ -23,7 +23,7 @@ import software.aws.toolkits.jetbrains.AwsToolkit import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants +import software.aws.toolkits.jetbrains.services.amazonq.QConstants import software.aws.toolkits.jetbrains.settings.AwsSettings import software.aws.toolkits.jetbrains.utils.notifyError import software.aws.toolkits.jetbrains.utils.notifyInfo @@ -111,7 +111,7 @@ class QMigrationActivity : StartupActivity.DumbAware { project = project, notificationActions = listOf( NotificationAction.createSimple(message("aws.q.migration.action.read_more.text")) { - BrowserUtil.browse(URI(CodeWhispererConstants.Q_MARKETPLACE_URI)) + BrowserUtil.browse(URI(QConstants.Q_MARKETPLACE_URI)) ToolkitTelemetry.showNotification( id = Q_STANDALONE_INSTALLED_ID, component = Component.ReadMore, diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererActionNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererActionNode.kt deleted file mode 100644 index 4af484e5ee3..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererActionNode.kt +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.AbstractActionTreeNode -import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerNode -import javax.swing.Icon - -abstract class CodeWhispererActionNode( - project: Project, - actionName: String, - val order: Int, - icon: Icon -) : AbstractActionTreeNode( - project, - actionName, - icon -) { - override fun getChildren(): List> = emptyList() -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererReconnectNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererReconnectNode.kt deleted file mode 100644 index ff6692b874f..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CodeWhispererReconnectNode.kt +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.reconnectCodeWhisperer -import software.aws.toolkits.resources.message -import software.aws.toolkits.telemetry.UiTelemetry -import java.awt.event.MouseEvent - -class CodeWhispererReconnectNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.reconnect"), - 0, - AllIcons.Actions.Execute -) { - override fun onDoubleClick(event: MouseEvent) { - UiTelemetry.click(project, "ReconnectNode") - reconnectCodeWhisperer(project) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CustomizationNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CustomizationNode.kt deleted file mode 100644 index 2de506b9914..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/CustomizationNode.kt +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.ide.projectView.PresentationData -import com.intellij.openapi.project.Project -import com.intellij.ui.SimpleTextAttributes -import icons.AwsIcons -import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager -import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection -import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class CustomizationNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.customization.select"), - 2, - AwsIcons.Resources.CodeWhisperer.CUSTOM -) { - override fun update(presentation: PresentationData) { - super.update(presentation) - - val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(CodeWhispererConnection.getInstance()) - val activeCustomization = CodeWhispererModelConfigurator.getInstance().activeCustomization(project) - - if (connection != null) { - val newCount = CodeWhispererModelConfigurator.getInstance().getNewUpdate(connection.id)?.count { it.isNew } ?: 0 - - if (newCount > 0) { - presentation.addText(" ($newCount new)", SimpleTextAttributes.GRAYED_ATTRIBUTES) - } else if (activeCustomization != null) { - presentation.addText(" ${activeCustomization.name}", SimpleTextAttributes.GRAYED_ATTRIBUTES) - } - } - } - - override fun onDoubleClick(event: MouseEvent) { - CodeWhispererModelConfigurator.getInstance().showConfigDialog(project) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/FreeTierUsageLimitHitNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/FreeTierUsageLimitHitNode.kt deleted file mode 100644 index fddb631e4e0..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/FreeTierUsageLimitHitNode.kt +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class FreeTierUsageLimitHitNode(nodeProject: Project, val date: String) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.usage_limit_hit", date), - -1, - AllIcons.Actions.Suspend -) { - override fun onDoubleClick(event: MouseEvent) {} -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/GetStartedNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/GetStartedNode.kt deleted file mode 100644 index 81a8464cb2d..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/GetStartedNode.kt +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.application.runInEdt -import com.intellij.openapi.project.Project -import com.intellij.openapi.startup.StartupActivity -import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager -import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection -import software.aws.toolkits.jetbrains.core.credentials.reauthConnectionIfNeeded -import software.aws.toolkits.jetbrains.core.gettingstarted.requestCredentialsForCodeWhisperer -import software.aws.toolkits.jetbrains.services.amazonq.gettingstarted.openMeetQPage -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled -import software.aws.toolkits.jetbrains.services.codewhisperer.startup.CodeWhispererProjectStartupActivity -import software.aws.toolkits.resources.message -import software.aws.toolkits.telemetry.UiTelemetry -import java.awt.event.MouseEvent - -class GetStartedNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("q.sign.in"), - 0, - AllIcons.CodeWithMe.CwmAccess -) { - override fun onDoubleClick(event: MouseEvent) { - enableCodeWhisperer(project) - UiTelemetry.click(project, "cw_signUp_Cta") - UiTelemetry.click(project, "auth_start_CodeWhisperer") - } - - /** - * 2 cases - * (1) User who don't have SSO based connection click on CodeWhisperer Start node - * (2) User who already have SSO based connection from previous operation via i.g. Toolkit Add Connection click on CodeWhisperer Start node - */ - private fun enableCodeWhisperer(project: Project) { - val connectionManager = ToolkitConnectionManager.getInstance(project) - connectionManager.activeConnectionForFeature(CodeWhispererConnection.getInstance())?.let { - reauthConnectionIfNeeded(project, it) - } ?: run { - runInEdt { - // Start from scratch if no active connection - if (requestCredentialsForCodeWhisperer(project)) { - if (!openMeetQPage(project)) { - return@runInEdt - } - } - } - } - - if (isCodeWhispererEnabled(project)) { - StartupActivity.POST_STARTUP_ACTIVITY.findExtension(CodeWhispererProjectStartupActivity::class.java)?.let { - it.runActivity(project) - } - } - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/LearnCodeWhispererNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/LearnCodeWhispererNode.kt deleted file mode 100644 index c7bed4b8034..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/LearnCodeWhispererNode.kt +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.openapi.project.Project -import icons.AwsIcons -import software.aws.toolkits.jetbrains.services.codewhisperer.learn.LearnCodeWhispererEditorProvider -import software.aws.toolkits.resources.message -import software.aws.toolkits.telemetry.UiTelemetry -import java.awt.event.MouseEvent - -class LearnCodeWhispererNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.learn"), - 4, - AwsIcons.Misc.LEARN -) { - override fun onDoubleClick(event: MouseEvent) { - UiTelemetry.click(project, "codewhisperer_Learn_ButtonClick") - LearnCodeWhispererEditorProvider.openEditor(project) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/OpenCodeReferenceNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/OpenCodeReferenceNode.kt deleted file mode 100644 index d259f6837b7..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/OpenCodeReferenceNode.kt +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.toolwindow.CodeWhispererCodeReferenceManager -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class OpenCodeReferenceNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.code_reference.open"), - 3, - AllIcons.Actions.Preview -) { - override fun onDoubleClick(event: MouseEvent) { - CodeWhispererCodeReferenceManager.getInstance(project).showCodeReferencePanel() - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeScanNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeScanNode.kt deleted file mode 100644 index dbfb3635c09..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeScanNode.kt +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class PauseCodeScanNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.pause_auto_scans"), - 1, - AllIcons.Actions.Pause -) { - - override fun onDoubleClick(event: MouseEvent) { - CodeWhispererExplorerActionManager.getInstance().setAutoCodeScan(project, false) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeWhispererNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeWhispererNode.kt deleted file mode 100644 index 303023cffe8..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/PauseCodeWhispererNode.kt +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class PauseCodeWhispererNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.pause_auto"), - 1, - AllIcons.Actions.Pause -) { - override fun onDoubleClick(event: MouseEvent) { - CodeWhispererExplorerActionManager.getInstance().setAutoSuggestion(project, false) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeScanNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeScanNode.kt deleted file mode 100644 index 1eed40a0a75..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeScanNode.kt +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanManager -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isUserBuilderId -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class ResumeCodeScanNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.resume_auto_scans"), - 1, - AllIcons.Actions.Resume -) { - - override fun onDoubleClick(event: MouseEvent) { - val actionManager = CodeWhispererExplorerActionManager.getInstance() - actionManager.setAutoCodeScan(project, true) - - // Run Proactive Code File Scan once toggle is enabled - if (!actionManager.isMonthlyQuotaForCodeScansExceeded() && !isUserBuilderId(project)) { - CodeWhispererCodeScanManager.getInstance(project).debouncedRunCodeScan(CodeWhispererConstants.CodeAnalysisScope.FILE) - } - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeWhispererNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeWhispererNode.kt deleted file mode 100644 index b7031502f47..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/ResumeCodeWhispererNode.kt +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager -import software.aws.toolkits.resources.message -import java.awt.event.MouseEvent - -class ResumeCodeWhispererNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.resume_auto"), - 1, - AllIcons.Actions.Resume -) { - override fun onDoubleClick(event: MouseEvent) { - CodeWhispererExplorerActionManager.getInstance().setAutoSuggestion(project, true) - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/WhatIsCodeWhispererNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/WhatIsCodeWhispererNode.kt deleted file mode 100644 index 0a4f370ff84..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/WhatIsCodeWhispererNode.kt +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.icons.AllIcons -import com.intellij.ide.BrowserUtil -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants -import software.aws.toolkits.resources.message -import software.aws.toolkits.telemetry.UiTelemetry -import java.awt.event.MouseEvent -import java.net.URI - -class WhatIsCodeWhispererNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - message("codewhisperer.explorer.what_is"), - 1, - AllIcons.Actions.Help -) { - override fun onDoubleClick(event: MouseEvent) { - BrowserUtil.browse(URI(CodeWhispererConstants.Q_MARKETPLACE_URI)) - UiTelemetry.click(project, "cw_learnMore_Cta") - } -} diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/Constants.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/Constants.kt deleted file mode 100644 index 4ebf0ab0046..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/Constants.kt +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.ui.feedback - -const val FEEDBACK_SOURCE = "source" -const val ENABLED_EXPERIMENTS = "experimentsEnabled" diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/ToolkitFeedbackDialog.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/ToolkitFeedbackDialog.kt new file mode 100644 index 00000000000..bbc6ec9002b --- /dev/null +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/ToolkitFeedbackDialog.kt @@ -0,0 +1,41 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.ui.feedback + +import com.intellij.openapi.actionSystem.ActionUpdateThread +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.LangDataKeys +import com.intellij.openapi.application.runInEdt +import com.intellij.openapi.project.DumbAwareAction +import com.intellij.openapi.project.Project +import icons.AwsIcons +import software.aws.toolkits.jetbrains.core.help.HelpIds +import software.aws.toolkits.jetbrains.feedback.sendFeedbackWithExperimentsMetadata +import software.aws.toolkits.resources.message + +class ToolkitFeedbackDialog(project: Project) : FeedbackDialog(project) { + override fun productName() = "AWS Toolkit" + override fun notificationTitle() = message("aws.notification.title") + + override fun getHelpId() = HelpIds.AWS_TOOLKIT_GETTING_STARTED.id + + override suspend fun sendFeedback() { + sendFeedbackWithExperimentsMetadata(sentiment, commentText) + } +} + +class ShowFeedbackDialogAction : DumbAwareAction(message("feedback.title", "Toolkit"), message("feedback.description"), AwsIcons.Misc.SMILE_GREY) { + override fun getActionUpdateThread() = ActionUpdateThread.BGT + + override fun actionPerformed(e: AnActionEvent) { + runInEdt { + ToolkitFeedbackDialog(e.getRequiredData(LangDataKeys.PROJECT)).show() + } + } + + override fun update(e: AnActionEvent) { + super.update(e) + e.presentation.icon = AwsIcons.Misc.SMILE_GREY + } +} diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index b65228d57ad..b5b2a367a0e 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -51,7 +51,7 @@ dependencies { // delete when fully split gatewayOnlyRuntimeOnly(project(":plugin-core:jetbrains-community")) - testImplementation(project(path = ":plugin-toolkit:core", configuration = "testArtifacts")) + testImplementation(project(path = ":plugin-core:core", configuration = "testArtifacts")) testCompileOnly(project(":plugin-toolkit:jetbrains-core")) testRuntimeOnly(project(":plugin-toolkit:jetbrains-core", "gatewayArtifacts")) testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) diff --git a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/AWS.Localization.csproj b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/AWS.Localization.csproj index f8326b90919..030e2dfdcd4 100644 --- a/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/AWS.Localization.csproj +++ b/plugins/toolkit/jetbrains-rider/ReSharper.AWS/src/AWS.Localization/AWS.Localization.csproj @@ -11,7 +11,7 @@ - + Resources/MessagesBundle.properties diff --git a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts index 08f36396430..7e03b8d8dc1 100644 --- a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts +++ b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts @@ -18,12 +18,11 @@ dependencies { testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) testImplementation(project(":plugin-toolkit:jetbrains-core")) testImplementation(project(path = ":plugin-toolkit:jetbrains-core", configuration = "testArtifacts")) - testImplementation(project(path = ":plugin-toolkit:core", configuration = "testArtifacts")) + testImplementation(project(path = ":plugin-core:core", configuration = "testArtifacts")) testImplementation(libs.mockk) // delete when fully split testRuntimeOnly(project(":plugin-core:jetbrains-ultimate")) - testRuntimeOnly(project(":plugin-amazonq", "moduleOnlyJars")) } intellijToolkit { diff --git a/plugins/toolkit/toolbox/build.gradle.kts b/plugins/toolkit/toolbox/build.gradle.kts new file mode 100644 index 00000000000..3709b4bfa45 --- /dev/null +++ b/plugins/toolkit/toolbox/build.gradle.kts @@ -0,0 +1,69 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import org.jetbrains.kotlin.com.intellij.openapi.util.SystemInfoRt +import java.nio.file.Path +import kotlin.io.path.div + +plugins { + id("toolkit-kotlin-conventions") + id("toolkit-detekt") +} + +repositories { + maven("https://packages.jetbrains.team/maven/p/tbx/gateway") +} + +dependencies { + implementation("com.jetbrains.toolbox.gateway:gateway-api:2.4.0.31127") + implementation("org.slf4j:slf4j-api:2.0.7") + implementation("org.slf4j:slf4j-jdk14:2.0.7") +} + +val pluginId = "sample" +// +val assemblePlugin by tasks.registering(Jar::class) { + archiveBaseName.set(pluginId) + from(sourceSets.main.get().output) +} + +val copyPlugin by tasks.creating(Copy::class.java) { + dependsOn(assemblePlugin) + + val userHome = System.getProperty("user.home").let { Path.of(it) } + val toolboxCachesDir = when { + SystemInfoRt.isWindows -> System.getenv("LOCALAPPDATA")?.let { Path.of(it) } ?: (userHome / "AppData" / "Local") + // currently this is the location that TBA uses on Linux + SystemInfoRt.isLinux -> System.getenv("XDG_DATA_HOME")?.let { Path.of(it) } ?: (userHome / ".local" / "share") + SystemInfoRt.isMac -> userHome / "Library" / "Caches" + else -> error("Unknown os") + } / "JetBrains" / "Toolbox" + + val pluginsDir = when { + SystemInfoRt.isWindows -> toolboxCachesDir / "cache" + SystemInfoRt.isLinux || SystemInfoRt.isMac -> toolboxCachesDir + else -> error("Unknown os") + } / "plugins" + + val targetDir = pluginsDir / pluginId + val runtimeClasspath by configurations.getting + + from(assemblePlugin.get().outputs.files) + + val excludedJarPrefixes = listOf("gateway-api") + val filteredClasspath = runtimeClasspath.filter { f -> + !excludedJarPrefixes.any { p -> f.name.startsWith(p) } + } + + from(filteredClasspath) { + include("*.jar") + exclude("kotlin*.jar") + } + + from("resources") { + include("extension.json") + include("icon.svg") + } + + into(targetDir) +} diff --git a/ui-tests/build.gradle.kts b/ui-tests/build.gradle.kts index ceedf35faf5..ed54f8a81b5 100644 --- a/ui-tests/build.gradle.kts +++ b/ui-tests/build.gradle.kts @@ -18,9 +18,8 @@ plugins { dependencies { testImplementation(gradleApi()) - testImplementation(project(":plugin-toolkit:core")) - testImplementation(project(path = ":plugin-toolkit:core", configuration = "testArtifacts")) - testImplementation(project(":plugin-toolkit:resources")) + testImplementation(project(":plugin-core:core")) + testImplementation(project(path = ":plugin-core:core", configuration = "testArtifacts")) testImplementation(libs.kotlin.coroutines) testImplementation(libs.junit5.jupiterApi) testImplementation(libs.intellijRemoteFixtures) From e7c772df8db4fad4a2363c34baa0310d9b5bff1c Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 9 May 2024 13:13:09 -0700 Subject: [PATCH 02/71] fix classpath --- ...ttingStartedAuthUtils.kt => ToolkitGettingStartedAuthUtils.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/{GettingStartedAuthUtils.kt => ToolkitGettingStartedAuthUtils.kt} (100%) diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitGettingStartedAuthUtils.kt similarity index 100% rename from plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/GettingStartedAuthUtils.kt rename to plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/gettingstarted/ToolkitGettingStartedAuthUtils.kt From c6b5f130952c2a43947f626261e6c11bc41c3d32 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 10 May 2024 12:59:40 -0700 Subject: [PATCH 03/71] build --- plugins/core/build.gradle.kts | 9 ++- .../codegen-resources/ssooidc/service-2.json | 8 +-- .../explorer/nodes/RunCodeScanNode.kt | 27 -------- plugins/toolkit/toolbox/build.gradle.kts | 69 ------------------- 4 files changed, 7 insertions(+), 106 deletions(-) delete mode 100644 plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/RunCodeScanNode.kt delete mode 100644 plugins/toolkit/toolbox/build.gradle.kts diff --git a/plugins/core/build.gradle.kts b/plugins/core/build.gradle.kts index f46675d9375..b1988fcf387 100644 --- a/plugins/core/build.gradle.kts +++ b/plugins/core/build.gradle.kts @@ -5,18 +5,17 @@ import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions plugins { - id("java-library") id("toolkit-publishing-conventions") id("toolkit-patch-plugin-xml-conventions") id("toolkit-jvm-conventions") } dependencies { - api(project(":plugin-core:core")) - api(project(":plugin-core:sdk-codegen")) - api(project(":plugin-core:jetbrains-community")) - implementation(project(":plugin-core:resources")) + implementation(project(":plugin-core:core")) + implementation(project(":plugin-core:jetbrains-community")) implementation(project(":plugin-core:jetbrains-ultimate")) + implementation(project(":plugin-core:resources")) + implementation(project(":plugin-core:sdk-codegen")) implementation(project(":plugin-core:webview")) } diff --git a/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json b/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json index 5b32e9bc707..36636bf987d 100644 --- a/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json +++ b/plugins/core/sdk-codegen/codegen-resources/ssooidc/service-2.json @@ -5,7 +5,6 @@ "endpointPrefix":"oidc", "jsonVersion":"1.1", "protocol":"rest-json", - "protocols":["rest-json"], "serviceAbbreviation":"SSO OIDC", "serviceFullName":"AWS SSO OIDC", "serviceId":"SSO OIDC", @@ -75,8 +74,7 @@ {"shape":"InvalidScopeException"}, {"shape":"InvalidClientMetadataException"}, {"shape":"InternalServerException"}, - {"shape":"InvalidRedirectUriException"}, - {"shape":"UnsupportedGrantTypeException"} + {"shape":"InvalidRedirectUriException"} ], "documentation":"

Registers a client with IAM Identity Center. This allows clients to initiate device authorization. The output should be persisted for reuse through many authentication requests.

", "authtype":"none" @@ -518,11 +516,11 @@ }, "issuerUrl":{ "shape":"URI", - "documentation":"

The IAM Identity Center Issuer URL associated with an instance of IAM Identity Center. This value is needed for user access to resources through the client.

" + "documentation":"

This is the Identity Center Issuer URL associated with users Identity Center instance and is used for user access to resources through the client.

" }, "entitledApplicationArn":{ "shape":"ArnType", - "documentation":"

This IAM Identity Center application ARN is used to define administrator-managed configuration for public client access to resources. At authorization, the scopes, grants, and redirect URI available to this client will be restricted by this application resource.

" + "documentation":"

This Identity Center Application ARN is used to define administrator managed configuration for public client access to resources. At authorization, the scopes, grants, and redirect URI available to this client will be restricted by this Application resource.

" } } }, diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/RunCodeScanNode.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/RunCodeScanNode.kt deleted file mode 100644 index 23bcdb15fb5..00000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/explorer/nodes/RunCodeScanNode.kt +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes - -import com.intellij.openapi.project.Project -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanManager -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants -import java.awt.event.MouseEvent - -class RunCodeScanNode(nodeProject: Project) : CodeWhispererActionNode( - nodeProject, - CodeWhispererCodeScanManager.getInstance(nodeProject).getActionButtonText(), - 2, - CodeWhispererCodeScanManager.getInstance(nodeProject).getActionButtonIconForExplorerNode() -) { - - private val codeScanManager = CodeWhispererCodeScanManager.getInstance(project) - - override fun onDoubleClick(event: MouseEvent) { - if (codeScanManager.isProjectScanInProgress()) { - codeScanManager.stopCodeScan() - } else { - codeScanManager.runCodeScan(CodeWhispererConstants.CodeAnalysisScope.PROJECT) - } - } -} diff --git a/plugins/toolkit/toolbox/build.gradle.kts b/plugins/toolkit/toolbox/build.gradle.kts deleted file mode 100644 index 3709b4bfa45..00000000000 --- a/plugins/toolkit/toolbox/build.gradle.kts +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import org.jetbrains.kotlin.com.intellij.openapi.util.SystemInfoRt -import java.nio.file.Path -import kotlin.io.path.div - -plugins { - id("toolkit-kotlin-conventions") - id("toolkit-detekt") -} - -repositories { - maven("https://packages.jetbrains.team/maven/p/tbx/gateway") -} - -dependencies { - implementation("com.jetbrains.toolbox.gateway:gateway-api:2.4.0.31127") - implementation("org.slf4j:slf4j-api:2.0.7") - implementation("org.slf4j:slf4j-jdk14:2.0.7") -} - -val pluginId = "sample" -// -val assemblePlugin by tasks.registering(Jar::class) { - archiveBaseName.set(pluginId) - from(sourceSets.main.get().output) -} - -val copyPlugin by tasks.creating(Copy::class.java) { - dependsOn(assemblePlugin) - - val userHome = System.getProperty("user.home").let { Path.of(it) } - val toolboxCachesDir = when { - SystemInfoRt.isWindows -> System.getenv("LOCALAPPDATA")?.let { Path.of(it) } ?: (userHome / "AppData" / "Local") - // currently this is the location that TBA uses on Linux - SystemInfoRt.isLinux -> System.getenv("XDG_DATA_HOME")?.let { Path.of(it) } ?: (userHome / ".local" / "share") - SystemInfoRt.isMac -> userHome / "Library" / "Caches" - else -> error("Unknown os") - } / "JetBrains" / "Toolbox" - - val pluginsDir = when { - SystemInfoRt.isWindows -> toolboxCachesDir / "cache" - SystemInfoRt.isLinux || SystemInfoRt.isMac -> toolboxCachesDir - else -> error("Unknown os") - } / "plugins" - - val targetDir = pluginsDir / pluginId - val runtimeClasspath by configurations.getting - - from(assemblePlugin.get().outputs.files) - - val excludedJarPrefixes = listOf("gateway-api") - val filteredClasspath = runtimeClasspath.filter { f -> - !excludedJarPrefixes.any { p -> f.name.startsWith(p) } - } - - from(filteredClasspath) { - include("*.jar") - exclude("kotlin*.jar") - } - - from("resources") { - include("extension.json") - include("icon.svg") - } - - into(targetDir) -} From d6c258375ddd94cbeb008d5a06ea7a683057191d Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 13 May 2024 16:32:34 -0700 Subject: [PATCH 04/71] compile --- .../src/main/kotlin/toolkit-kotlin-conventions.gradle.kts | 3 +++ .../services/codemodernizer/CodeModernizerManager.kt | 2 +- .../codewhisperer/jetbrains-community/build.gradle.kts | 2 ++ plugins/amazonq/shared/jetbrains-community/build.gradle.kts | 4 +++- plugins/core/jetbrains-community/build.gradle.kts | 3 --- plugins/toolkit/jetbrains-core/build.gradle.kts | 1 + 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts index 42d7312139f..6ea29f34e4b 100644 --- a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts @@ -20,6 +20,9 @@ dependencies { implementation(versionCatalog.findLibrary("kotlin-coroutines").get()) testImplementation(versionCatalog.findLibrary("kotlin-test").get()) + testImplementation(versionCatalog.findLibrary("kotlin-coroutinesDebug").get()) + testImplementation(versionCatalog.findLibrary("kotlin-coroutinesTest").get()) + testImplementation(versionCatalog.findLibrary("mockk").get()) } sourceSets { diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt index 514f7af8f05..cd2121677c9 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt @@ -74,7 +74,7 @@ import software.aws.toolkits.jetbrains.ui.feedback.CodeTransformFeedbackDialog import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend import software.aws.toolkits.jetbrains.utils.notifyStickyError import software.aws.toolkits.jetbrains.utils.notifyStickyInfo -import software.aws.toolkits.resources.AwsToolkitBundle.message +import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.CodeTransformCancelSrcComponents import software.aws.toolkits.telemetry.CodeTransformPreValidationError import java.io.File diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index 3c0a4b6f050..4f632da47be 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -17,4 +17,6 @@ dependencies { implementation(project(":plugin-amazonq:shared:jetbrains-community")) // CodeWhispererTelemetryService uses a CircularFifoQueue, previously transitive from zjsonpatch implementation(libs.commons.collections) + + testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) } diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts index 10e8e5b7bc9..b99bdceb243 100644 --- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts @@ -17,8 +17,10 @@ intellij { } dependencies { - compileOnly(project(":plugin-core:jetbrains-community")) + compileOnlyApi(project(":plugin-core:jetbrains-community")) // CodeWhispererTelemetryService uses a CircularFifoQueue implementation(libs.commons.collections) + + testFixturesApi(testFixtures(project(":plugin-core:jetbrains-community"))) } diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index cbc3849319c..8d5586f60c5 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -46,9 +46,6 @@ dependencies { api(libs.aws.iam) testFixturesApi(project(path = ":plugin-core:core", configuration = "testArtifacts")) - testFixturesApi(libs.mockk) - testFixturesApi(libs.kotlin.coroutinesTest) - testFixturesApi(libs.kotlin.coroutinesDebug) testFixturesApi(libs.wiremock) { // conflicts with transitive inclusion from docker plugin exclude(group = "org.apache.httpcomponents.client5") diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index e84621b0775..dd71ab09b4c 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -160,6 +160,7 @@ dependencies { implementation(libs.bundles.jackson) implementation(libs.zjsonpatch) + testFixturesApi(testFixtures(project(":plugin-core:jetbrains-community"))) // slf4j is v1.7.36 for <233 // in <233, the classpass binding functionality picks up the wrong impl of StaticLoggerBinder (from the maven plugin instead of IDE platform) and causes a NoClassDefFoundError // instead of trying to fix the classpath, since it's built by gradle-intellij-plugin, shove slf4j >= 2.0.9 onto the test classpath, which uses a ServiceLoader and call it done From b0b1e67a34bb11d41f7aed45a4960bc02689de74 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 15 May 2024 14:41:29 -0700 Subject: [PATCH 05/71] build --- .../toolkit-kotlin-conventions.gradle.kts | 9 +- .../constants/CodeTransformChatItems.kt | 2 +- .../controller/CodeTransformChatController.kt | 2 +- .../codemodernizer/file/PomFileAnnotator.kt | 2 +- .../jetbrains-community/build.gradle.kts | 3 +- .../actions/CodeWhispererWhatIsAction.kt | 1 - .../CodeWhispererActionNodeTest.kt | 96 ------------------- .../codewhisperer/CodeWhispererActionTest.kt | 6 +- .../CodeWhispererSettingsTest.kt | 10 -- .../CodeWhispererTelemetryTest.kt | 31 ------ .../CodeWhispererImportAdderTestBase.kt | 2 +- .../jetbrains-ultimate/build.gradle.kts | 3 + .../jetbrains-community/build.gradle.kts | 1 - .../jetbrains-ultimate/build.gradle.kts | 4 +- .../jetbrains/ui/feedback/FeedbackDialog.kt | 6 -- .../core/gettingstarted/IdcRolePopupTest.kt | 3 +- .../SetupAuthenticationDialogTest.kt | 3 +- .../core/gettingstarted/SourceOfEntryTest.kt | 3 +- .../jetbrains/ui/AsyncComboBoxTest.kt | 2 +- 19 files changed, 25 insertions(+), 164 deletions(-) delete mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt rename plugins/amazonq/codewhisperer/jetbrains-community/{tst => tstFixtures}/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt (98%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt (97%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt (98%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt (79%) rename plugins/{toolkit/jetbrains-core => core/jetbrains-community}/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt (97%) diff --git a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts index 6ea29f34e4b..4f4c6af3bce 100644 --- a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts @@ -6,6 +6,7 @@ import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask import software.aws.toolkits.gradle.jvmTarget plugins { + id("java-library") id("toolkit-detekt") id("toolkit-jvm-conventions") } @@ -19,10 +20,10 @@ dependencies { implementation(versionCatalog.findBundle("kotlin").get()) implementation(versionCatalog.findLibrary("kotlin-coroutines").get()) - testImplementation(versionCatalog.findLibrary("kotlin-test").get()) - testImplementation(versionCatalog.findLibrary("kotlin-coroutinesDebug").get()) - testImplementation(versionCatalog.findLibrary("kotlin-coroutinesTest").get()) - testImplementation(versionCatalog.findLibrary("mockk").get()) + testFixturesApi(versionCatalog.findLibrary("kotlin-test").get()) + testFixturesApi(versionCatalog.findLibrary("kotlin-coroutinesDebug").get()) + testFixturesApi(versionCatalog.findLibrary("kotlin-coroutinesTest").get()) + testFixturesApi(versionCatalog.findLibrary("mockk").get()) } sourceSets { diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt index 43ea5bcdd47..6524dce20d1 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt @@ -20,7 +20,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.ValidationR import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getModuleOrProjectNameForFile import software.aws.toolkits.jetbrains.services.cwc.clients.chat.model.FollowUpType import software.aws.toolkits.jetbrains.services.cwc.messages.FollowUp -import software.aws.toolkits.resources.AwsToolkitBundle.message +import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.CodeTransformPreValidationError private val cancelUserSelectionButton = Button( diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt index c684be8bb53..79caed3ab5a 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt @@ -69,7 +69,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getModuleOr import software.aws.toolkits.jetbrains.services.codemodernizer.utils.toVirtualFile import software.aws.toolkits.jetbrains.services.codemodernizer.utils.tryGetJdk import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType -import software.aws.toolkits.resources.AwsToolkitBundle.message +import software.aws.toolkits.resources.message class CodeTransformChatController( private val context: AmazonQAppInitContext, diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/file/PomFileAnnotator.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/file/PomFileAnnotator.kt index afdb286e25f..ded52e7bad7 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/file/PomFileAnnotator.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/file/PomFileAnnotator.kt @@ -24,7 +24,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.JBColor import software.aws.toolkits.jetbrains.services.codemodernizer.constants.CodeModernizerUIConstants.Companion.getLightYellowThemeBackgroundColor -import software.aws.toolkits.resources.AwsToolkitBundle.message +import software.aws.toolkits.resources.message import java.awt.Font import javax.swing.Icon diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index 4f632da47be..ee4e4301249 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -18,5 +18,6 @@ dependencies { // CodeWhispererTelemetryService uses a CircularFifoQueue, previously transitive from zjsonpatch implementation(libs.commons.collections) - testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) + testFixturesApi(testFixtures(project(":plugin-core:jetbrains-community"))) + testFixturesApi(project(path = ":plugin-toolkit:jetbrains-core", configuration = "testArtifacts")) } diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt index cb00ef84a1b..fa12a1dfd7b 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererWhatIsAction.kt @@ -11,7 +11,6 @@ import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.DumbAware import software.aws.toolkits.jetbrains.services.amazonq.QConstants import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants import software.aws.toolkits.resources.message import java.net.URI diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt deleted file mode 100644 index a8542ca7695..00000000000 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionNodeTest.kt +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.codewhisperer - -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.project.Project -import com.intellij.testFramework.ApplicationRule -import com.intellij.testFramework.DisposableRule -import com.intellij.testFramework.ProjectRule -import com.intellij.testFramework.TestActionEvent -import com.intellij.testFramework.replaceService -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.mockito.kotlin.mock -import org.mockito.kotlin.spy -import org.mockito.kotlin.verify -import org.mockito.kotlin.whenever -import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanManager -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.actions.OpenCodeReference -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes.CodeWhispererActionNode -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes.OpenCodeReferenceNode -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes.RunCodeScanNode -import software.aws.toolkits.jetbrains.services.codewhisperer.toolwindow.CodeWhispererCodeReferenceManager -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants - -class CodeWhispererActionNodeTest { - @JvmField - @Rule - val applicationRule = ApplicationRule() - - @JvmField - @Rule - val projectRule = ProjectRule() - - @JvmField - @Rule - val disposableRule = DisposableRule() - - private lateinit var project: Project - private lateinit var sut: CodeWhispererActionNode - private lateinit var explorerManager: CodeWhispererExplorerActionManager - private lateinit var connectionManager: ToolkitConnectionManager - private lateinit var codeScanManager: CodeWhispererCodeScanManager - - @Before - fun setup() { - project = projectRule.project - - explorerManager = spy() - ApplicationManager.getApplication().replaceService(CodeWhispererExplorerActionManager::class.java, explorerManager, disposableRule.disposable) - - connectionManager = mock() - project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) - - codeScanManager = mock() - project.replaceService(CodeWhispererCodeScanManager::class.java, codeScanManager, disposableRule.disposable) - } - - @Test - fun `openCodeReferenceNode`() { - val sut = OpenCodeReferenceNode(project) - val referenceManager: CodeWhispererCodeReferenceManager = mock() - project.replaceService(CodeWhispererCodeReferenceManager::class.java, referenceManager, disposableRule.disposable) - - sut.onDoubleClick(mock()) - - verify(referenceManager).showCodeReferencePanel() - } - - @Test - fun `openCodeReference`() { - val sut = OpenCodeReference() - val referenceManager: CodeWhispererCodeReferenceManager = mock() - project.replaceService(CodeWhispererCodeReferenceManager::class.java, referenceManager, disposableRule.disposable) - - sut.actionPerformed(TestActionEvent { projectRule.project }) - - verify(referenceManager).showCodeReferencePanel() - } - - @Test - fun `runCodeScanNode`() { - whenever(codeScanManager.getActionButtonIconForExplorerNode()).thenReturn(mock()) - whenever(codeScanManager.getActionButtonText()).thenReturn("") - - sut = RunCodeScanNode(project) - - sut.onDoubleClick(mock()) - - verify(codeScanManager).runCodeScan(CodeWhispererConstants.CodeAnalysisScope.PROJECT) - } -} diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt index 80f07a3689f..5b2ede8d4d3 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererActionTest.kt @@ -23,11 +23,11 @@ import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.doNothing import org.mockito.kotlin.eq +import software.aws.toolkits.jetbrains.services.amazonq.QConstants import software.aws.toolkits.jetbrains.services.codewhisperer.actions.CodeWhispererLearnMoreAction import software.aws.toolkits.jetbrains.services.codewhisperer.actions.CodeWhispererShowSettingsAction import software.aws.toolkits.jetbrains.services.codewhisperer.actions.CodeWhispererWhatIsAction import software.aws.toolkits.jetbrains.services.codewhisperer.settings.CodeWhispererConfigurable -import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants import java.net.URI class CodeWhispererActionTest : CodeWhispererTestBase() { @@ -50,7 +50,7 @@ class CodeWhispererActionTest : CodeWhispererTestBase() { @Test fun `CodeWhispererLearnMoreAction actionPerformed should open correct URI`() { val action = CodeWhispererLearnMoreAction() - testBrowserActionHelper(action, CodeWhispererConstants.Q_MARKETPLACE_URI) + testBrowserActionHelper(action, QConstants.Q_MARKETPLACE_URI) } @Test @@ -72,7 +72,7 @@ class CodeWhispererActionTest : CodeWhispererTestBase() { @Test fun `CodeWhispererWhatIsAction actionPerformed should open correct URI`() { val action = CodeWhispererWhatIsAction() - testBrowserActionHelper(action, CodeWhispererConstants.Q_MARKETPLACE_URI) + testBrowserActionHelper(action, QConstants.Q_MARKETPLACE_URI) } @Test diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt index c832ade9a55..bde3d169f52 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererSettingsTest.kt @@ -22,8 +22,6 @@ import org.mockito.kotlin.spy import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import software.aws.toolkits.jetbrains.core.ToolWindowHeadlessManagerImpl -import software.aws.toolkits.jetbrains.core.explorer.AwsToolkitExplorerFactory -import software.aws.toolkits.jetbrains.core.explorer.AwsToolkitExplorerToolWindow import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererLoginType import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExploreActionState import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled @@ -72,11 +70,6 @@ class CodeWhispererSettingsTest : CodeWhispererTestBase() { id = ProblemsView.ID ) ) - ToolWindowManager.getInstance(projectRule.project).registerToolWindow( - RegisterToolWindowTask( - id = AwsToolkitExplorerFactory.TOOLWINDOW_ID - ) - ) ToolWindowManager.getInstance(projectRule.project).registerToolWindow( RegisterToolWindowTask( id = CodeWhispererCodeReferenceToolWindowFactory.id @@ -118,9 +111,6 @@ class CodeWhispererSettingsTest : CodeWhispererTestBase() { } ?: fail("CodeWhisperer status bar widget not found") runInEdtAndWait { - assertThat( - AwsToolkitExplorerToolWindow.toolWindow(projectRule.project) - ).isNotNull assertThat(problemsWindow.contentManager.contentCount).isEqualTo(0) assertThat(codeReferenceWindow.isAvailable).isFalse assertThat(statusBarWidgetFactory.isAvailable(projectRule.project)).isTrue diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt index f8b54f65e12..78a12b37b66 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTelemetryTest.kt @@ -55,8 +55,6 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhisper import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.actions.Pause import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.actions.Resume -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes.PauseCodeWhispererNode -import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.nodes.ResumeCodeWhispererNode import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPython import software.aws.toolkits.jetbrains.services.codewhisperer.model.InvocationContext import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService @@ -768,35 +766,6 @@ class CodeWhispererTelemetryTest : CodeWhispererTestBase() { testSendEmptyUserDecisionEventForEmptyRecommendations(listOfMixedEmptyAndNonEmptyRecommendationResponse) } - @Test - fun `test toggle autoSugestion will emit autoSuggestionActivation telemetry (explorer)`() { - val metricCaptor = argumentCaptor() - doNothing().`when`(batcher).enqueue(metricCaptor.capture()) - - PauseCodeWhispererNode(projectRule.project).onDoubleClick(mock()) - assertEventsContainsFieldsAndCount( - metricCaptor.allValues, - awsModifySetting, - 1, - "settingId" to CodeWhispererConstants.AutoSuggestion.SETTING_ID, - "settingState" to CodeWhispererConstants.AutoSuggestion.DEACTIVATED - ) - - ResumeCodeWhispererNode(projectRule.project).onDoubleClick(mock()) - assertEventsContainsFieldsAndCount( - metricCaptor.allValues, - awsModifySetting, - 1, - "settingId" to CodeWhispererConstants.AutoSuggestion.SETTING_ID, - "settingState" to CodeWhispererConstants.AutoSuggestion.ACTIVATED - ) - assertEventsContainsFieldsAndCount( - metricCaptor.allValues, - awsModifySetting, - 2, - ) - } - @Test fun `test toggle autoSugestion will emit autoSuggestionActivation telemetry (popup)`() { val metricCaptor = argumentCaptor() diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt similarity index 98% rename from plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt rename to plugins/amazonq/codewhisperer/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt index cac558a90ce..7b9c598e437 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/services/codewhisperer/importadder/CodeWhispererImportAdderTestBase.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.services.codewhisperer.importadder diff --git a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts index ecbe654b0ab..f7428563903 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts @@ -16,4 +16,7 @@ dependencies { compileOnly(project(":plugin-amazonq:shared:jetbrains-ultimate")) compileOnly(project(":plugin-core:jetbrains-ultimate")) + + testImplementation(testFixtures(project(":plugin-amazonq:codewhisperer:jetbrains-community"))) + testImplementation(project(path = ":plugin-toolkit:jetbrains-ultimate", configuration = "testArtifacts")) } diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts index b99bdceb243..739b101506e 100644 --- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts @@ -4,7 +4,6 @@ import software.aws.toolkits.gradle.intellij.IdeFlavor plugins { - id("java-library") id("toolkit-intellij-subplugin") } diff --git a/plugins/amazonq/shared/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/shared/jetbrains-ultimate/build.gradle.kts index b844329e6c9..be7eae7ba3a 100644 --- a/plugins/amazonq/shared/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-ultimate/build.gradle.kts @@ -15,6 +15,6 @@ dependencies { compileOnly(project(":plugin-amazonq:shared:jetbrains-community")) compileOnly(project(":plugin-core:jetbrains-ultimate")) - // delete when fully split - implementation(project(":plugin-toolkit:jetbrains-ultimate")) + testFixturesApi(testFixtures(project(":plugin-core:jetbrains-community"))) + testFixturesApi(testFixtures(project(":plugin-core:jetbrains-ultimate"))) } diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt index 344594d5d4f..88bac900206 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt @@ -5,11 +5,6 @@ package software.aws.toolkits.jetbrains.ui.feedback import com.intellij.icons.AllIcons import com.intellij.ide.BrowserUtil -import com.intellij.openapi.actionSystem.ActionUpdateThread -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.LangDataKeys -import com.intellij.openapi.application.runInEdt -import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper import com.intellij.openapi.ui.Messages @@ -34,7 +29,6 @@ import software.amazon.awssdk.services.toolkittelemetry.model.Sentiment import software.aws.toolkits.jetbrains.AwsToolkit import software.aws.toolkits.jetbrains.core.coroutines.getCoroutineUiContext import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope -import software.aws.toolkits.jetbrains.core.help.HelpIds import software.aws.toolkits.jetbrains.services.telemetry.ClientMetadata import software.aws.toolkits.jetbrains.utils.notifyInfo import software.aws.toolkits.resources.message diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt similarity index 97% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt rename to plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt index bf2b64d29c9..ee4ddc49674 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted @@ -14,7 +14,6 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.junit.jupiter.api.extension.RegisterExtension -import org.mockito.kotlin.any import software.amazon.awssdk.profiles.Profile import software.amazon.awssdk.services.sso.SsoClient import software.amazon.awssdk.services.sso.model.RoleInfo diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt similarity index 98% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt rename to plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt index 2182220e29d..8d47279fea9 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted @@ -35,6 +35,7 @@ import software.aws.toolkits.jetbrains.core.credentials.authAndUpdateConfig import software.aws.toolkits.jetbrains.core.credentials.loginSso import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.region.MockRegionProviderExtension import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.FeatureId diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt similarity index 79% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt rename to plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt index 996c930af9c..de94abdc80a 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SourceOfEntryTest.kt @@ -1,9 +1,10 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.core.gettingstarted import org.assertj.core.api.Assertions.assertThat +import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import kotlin.test.Test class SourceOfEntryTest { diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt similarity index 97% rename from plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt rename to plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt index 3891a3da649..0b6b2f72b7a 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/ui/AsyncComboBoxTest.kt @@ -1,4 +1,4 @@ -// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.ui From 8b548da0af43170179193d413b5e95153314f152 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 15 May 2024 15:43:58 -0700 Subject: [PATCH 06/71] build --- .../codewhisperer/jetbrains-community/build.gradle.kts | 4 ++++ .../amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index ee4e4301249..66551026c43 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -11,6 +11,10 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } +intellij { + plugins.add(project(":plugin-core")) +} + dependencies { compileOnly(project(":plugin-core:jetbrains-community")) diff --git a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts index f7428563903..a4aa4970d79 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts @@ -11,6 +11,10 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IU) } +intellij { + plugins.add(project(":plugin-core")) +} + dependencies { compileOnly(project(":plugin-amazonq:codewhisperer:jetbrains-community")) compileOnly(project(":plugin-amazonq:shared:jetbrains-ultimate")) From 5b8d57f0e198c0a9d186d863fb98b7a05ac7345a Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 15 May 2024 16:03:50 -0700 Subject: [PATCH 07/71] build --- .../codewhisperer/jetbrains-community/build.gradle.kts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index 66551026c43..64d2482b6d0 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -25,3 +25,12 @@ dependencies { testFixturesApi(testFixtures(project(":plugin-core:jetbrains-community"))) testFixturesApi(project(path = ":plugin-toolkit:jetbrains-core", configuration = "testArtifacts")) } + +// hack because our test structure currently doesn't make complete sense +tasks.prepareTestingSandbox { + val pluginXmlJar = project(":plugin-amazonq").tasks.jar + + dependsOn(pluginXmlJar) + intoChild(pluginName.map { "$it/lib" }) + .from(pluginXmlJar) +} From 2aa3084290cef1aa4ce8f10661f1196ef254c8ca Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 15 May 2024 16:26:27 -0700 Subject: [PATCH 08/71] build --- .../jetbrains-community/detekt-baseline.xml | 16 ++++++++++++++++ plugins/core/core/build.gradle.kts | 1 + .../jetbrains-core/detekt-baseline-main.xml | 5 ----- .../jetbrains-core/detekt-baseline-test.xml | 2 -- .../toolkit/jetbrains-core/detekt-baseline.xml | 7 ------- 5 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline.xml diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline.xml b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline.xml new file mode 100644 index 00000000000..e3b8176cb93 --- /dev/null +++ b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline.xml @@ -0,0 +1,16 @@ + + + + + DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager$val (_, editor, _, caretPosition) = requestContext + DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager.<no name provided>$val (localEditor, highlighter, codeContent, referenceContent) = it + DestructuringDeclarationWithTooManyEntries:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$val (_, _, recommendationContext, popup) = states + DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualProject, actualEditor, actualTriggerTypeInfo, actualCaretPosition, actualFileContextInfo) = actualRequestContext + DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualRequestId, actualRecommendationDetail, _, actualIsDiscarded) = actualDetailContext + ExpressionBodySyntax:CodeWhispererSettingsTest.kt$CodeWhispererSettingsTest.<no name provided>$return myToolWindows[id] + ExpressionBodySyntax:CodeWhispererTelemetryService.kt$CodeWhispererTelemetryService$return previousUserTriggerDecisionTimestamp?.let { Duration.between(it, Instant.now()).toMillis().toDouble() } + FunctionOnlyReturningConstant:CodeWhispererCodeScanTestBase.kt$CodeWhispererCodeScanTestBase$protected fun getFakeRecommendationsOnNonExistentFile() + ImplicitDefaultLocale:CodeWhispererColorUtil.kt$CodeWhispererColorUtil$String.format("#%02x%02x%02x", this.red, this.green, this.blue) + LoopWithTooManyJumpStatements:CodeWhispererEditorManager.kt$CodeWhispererEditorManager$while + + diff --git a/plugins/core/core/build.gradle.kts b/plugins/core/core/build.gradle.kts index e57c73a64ec..f64ef32dbf5 100644 --- a/plugins/core/core/build.gradle.kts +++ b/plugins/core/core/build.gradle.kts @@ -25,6 +25,7 @@ dependencies { testImplementation(libs.junit4) testRuntimeOnly(libs.junit5.jupiterVintage) + testRuntimeOnly(project(":plugin-core:sdk-codegen")) } tasks.test { diff --git a/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml b/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml index 79305d14e7e..b8adf4e386a 100644 --- a/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml +++ b/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml @@ -9,9 +9,6 @@ CommentWrapping:S3VirtualBucket.kt$S3VirtualBucket$/* Unit tests refuse to open this in an editor if this is true */ CommentWrapping:SamInitSelectionPanel.kt$SamInitSelectionPanel$/* Only available in PyCharm! */ CommentWrapping:SamInitSelectionPanel.kt$SamInitSelectionPanel$/* Used in Rider to refresh the validation */ - DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager$val (_, editor, _, caretPosition) = requestContext - DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager.<no name provided>$val (localEditor, highlighter, codeContent, referenceContent) = it - DestructuringDeclarationWithTooManyEntries:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$val (_, _, recommendationContext, popup) = states DestructuringDeclarationWithTooManyEntries:JavaCodeScanSessionConfig.kt$JavaCodeScanSessionConfig$val (sourceFiles, srcPayloadSize, totalLines, buildPaths) = includeDependencies() ExpressionBodySyntax:CawsProjectListRenderer.kt$CawsProjectListRenderer.<no name provided>$return myContext ExpressionBodySyntax:CodeWhispererTelemetryService.kt$CodeWhispererTelemetryService$return previousUserTriggerDecisionTimestamp?.let { Duration.between(it, Instant.now()).toMillis().toDouble() } @@ -21,8 +18,6 @@ ForbiddenVoid:DownloadCodeForSchemaDialog.kt$DownloadCodeForSchemaDialog$Void ForbiddenVoid:SchemaViewer.kt$SchemaPreviewer$Void ForbiddenVoid:SchemaViewer.kt$SchemaViewer$Void - ImplicitDefaultLocale:CodeWhispererColorUtil.kt$CodeWhispererColorUtil$String.format("#%02x%02x%02x", this.red, this.green, this.blue) - LoopWithTooManyJumpStatements:CodeWhispererEditorManager.kt$CodeWhispererEditorManager$while LoopWithTooManyJumpStatements:DownloadObjectAction.kt$DownloadObjectAction$for NoNameShadowing:CloudControlApiResources.kt$CloudControlApiResources${ it.typeName() } NoNameShadowing:CodeStoragePanel.kt$CodeStoragePanel${ it.repositoryName == ecrDialog.repoName } diff --git a/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml b/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml index 7a3ab4006b4..bcd5942d706 100644 --- a/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml +++ b/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml @@ -2,8 +2,6 @@ - DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualProject, actualEditor, actualTriggerTypeInfo, actualCaretPosition, actualFileContextInfo) = actualRequestContext - DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualRequestId, actualRecommendationDetail, _, actualIsDiscarded) = actualDetailContext ExpressionBodySyntax:CodeWhispererSettingsTest.kt$CodeWhispererSettingsTest.<no name provided>$return myToolWindows[id] FunctionNaming:AwsSettingsConfigurableTest.kt$AwsSettingsConfigurableTest$@Test fun validate_fail_autodetectBadSam_andManuallySetToBadSam() FunctionNaming:AwsSettingsConfigurableTest.kt$AwsSettingsConfigurableTest$@Test fun validate_ok_autodetectBadSam() diff --git a/plugins/toolkit/jetbrains-core/detekt-baseline.xml b/plugins/toolkit/jetbrains-core/detekt-baseline.xml index 9f5c40e34af..fe04ee966cf 100644 --- a/plugins/toolkit/jetbrains-core/detekt-baseline.xml +++ b/plugins/toolkit/jetbrains-core/detekt-baseline.xml @@ -9,11 +9,6 @@ CommentWrapping:S3VirtualBucket.kt$S3VirtualBucket$/* Unit tests refuse to open this in an editor if this is true */ CommentWrapping:SamInitSelectionPanel.kt$SamInitSelectionPanel$/* Only available in PyCharm! */ CommentWrapping:SamInitSelectionPanel.kt$SamInitSelectionPanel$/* Used in Rider to refresh the validation */ - DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager$val (_, editor, _, caretPosition) = requestContext - DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager.<no name provided>$val (localEditor, highlighter, codeContent, referenceContent) = it - DestructuringDeclarationWithTooManyEntries:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$val (_, _, recommendationContext, popup) = states - DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualProject, actualEditor, actualTriggerTypeInfo, actualCaretPosition, actualFileContextInfo) = actualRequestContext - DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualRequestId, actualRecommendationDetail, _, actualIsDiscarded) = actualDetailContext DestructuringDeclarationWithTooManyEntries:JavaCodeScanSessionConfig.kt$JavaCodeScanSessionConfig$val (sourceFiles, srcPayloadSize, totalLines, buildPaths) = includeDependencies() ExpressionBodySyntax:CawsProjectListRenderer.kt$CawsProjectListRenderer.<no name provided>$return myContext ExpressionBodySyntax:CodeWhispererSettingsTest.kt$CodeWhispererSettingsTest.<no name provided>$return myToolWindows[id] @@ -70,8 +65,6 @@ FunctionNaming:SamVersionCacheTest.kt$SamVersionCacheTest$@Test fun errorCode_RandomError() FunctionNaming:SamVersionCacheTest.kt$SamVersionCacheTest$@Test fun successExecution_EmptyOutput() FunctionOnlyReturningConstant:CodeWhispererCodeScanTestBase.kt$CodeWhispererCodeScanTestBase$protected fun getFakeRecommendationsOnNonExistentFile() - ImplicitDefaultLocale:CodeWhispererColorUtil.kt$CodeWhispererColorUtil$String.format("#%02x%02x%02x", this.red, this.green, this.blue) - LoopWithTooManyJumpStatements:CodeWhispererEditorManager.kt$CodeWhispererEditorManager$while LoopWithTooManyJumpStatements:DownloadObjectAction.kt$DownloadObjectAction$for TopLevelPropertyNaming:EventsFetcherTest.kt$private const val nonEmptyMessage = "Second call on the same page must not return anything" TopLevelPropertyNaming:EventsFetcherTest.kt$private const val wrongPageMessage = "Wrong list of available pages" From 23e8a0de53c6d7a32a85e7eee9b5280b3cfdac08 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 16 May 2024 13:44:00 -0700 Subject: [PATCH 09/71] gw --- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index b5b2a367a0e..489e4286212 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -49,6 +49,7 @@ dependencies { gatewayOnlyRuntimeOnly(project(":plugin-toolkit:jetbrains-core", "gatewayArtifacts")) // delete when fully split + gatewayOnlyRuntimeOnly(project(":plugin-core:core")) gatewayOnlyRuntimeOnly(project(":plugin-core:jetbrains-community")) testImplementation(project(path = ":plugin-core:core", configuration = "testArtifacts")) From 39880b867d844d4a5e83f7488f1751d7e568707c Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 16 May 2024 14:45:40 -0700 Subject: [PATCH 10/71] core --- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 489e4286212..f0441ab7e4f 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -53,6 +53,7 @@ dependencies { gatewayOnlyRuntimeOnly(project(":plugin-core:jetbrains-community")) testImplementation(project(path = ":plugin-core:core", configuration = "testArtifacts")) + testImplementation(project(":plugin-core:core")) testCompileOnly(project(":plugin-toolkit:jetbrains-core")) testRuntimeOnly(project(":plugin-toolkit:jetbrains-core", "gatewayArtifacts")) testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) From 285d5cfa17ff833884cd59e2ba59c2806acaba13 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 20 May 2024 11:27:35 -0700 Subject: [PATCH 11/71] resources --- plugins/core/core/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/core/core/build.gradle.kts b/plugins/core/core/build.gradle.kts index f64ef32dbf5..53d51c179ff 100644 --- a/plugins/core/core/build.gradle.kts +++ b/plugins/core/core/build.gradle.kts @@ -25,6 +25,7 @@ dependencies { testImplementation(libs.junit4) testRuntimeOnly(libs.junit5.jupiterVintage) + testRuntimeOnly(project(":plugin-core:resources")) testRuntimeOnly(project(":plugin-core:sdk-codegen")) } From 18a38b48a471c1acdbb9f8cd19fb935d788a913f Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 20 May 2024 12:27:16 -0700 Subject: [PATCH 12/71] build --- .../resources/codewhisperer/licenses.json | 0 .../core/jetbrains-community/build.gradle.kts | 1 - .../resources/MessagesBundle.properties | 1885 ----------------- .../resources/codewhisperer/codescan.png | Bin 14873 -> 0 bytes .../resources/codewhisperer/workshop.png | Bin 13910 -> 0 bytes 5 files changed, 1886 deletions(-) rename plugins/{toolkit/jetbrains-core => amazonq/codewhisperer/jetbrains-community}/resources/codewhisperer/licenses.json (100%) delete mode 100644 plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties delete mode 100644 plugins/toolkit/jetbrains-core/resources/codewhisperer/codescan.png delete mode 100644 plugins/toolkit/jetbrains-core/resources/codewhisperer/workshop.png diff --git a/plugins/toolkit/jetbrains-core/resources/codewhisperer/licenses.json b/plugins/amazonq/codewhisperer/jetbrains-community/resources/codewhisperer/licenses.json similarity index 100% rename from plugins/toolkit/jetbrains-core/resources/codewhisperer/licenses.json rename to plugins/amazonq/codewhisperer/jetbrains-community/resources/codewhisperer/licenses.json diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 8d5586f60c5..bb4e37afc5d 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -39,7 +39,6 @@ intellijToolkit { dependencies { compileOnlyApi(project(":plugin-core:core")) - compileOnlyApi(project(":plugin-core:sdk-codegen")) compileOnlyApi(libs.aws.apacheClient) compileOnlyApi(libs.aws.nettyClient) diff --git a/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties deleted file mode 100644 index c343305ecbd..00000000000 --- a/plugins/core/jetbrains-community/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ /dev/null @@ -1,1885 +0,0 @@ -# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# SPDX-License-Identifier: Apache-2.0 -action.apprunner.service.copyServiceUri.text=Copy Service URL -action.apprunner.service.openServiceUri.text=Open Service URL -action.aws.caws.devtools.actions.clone.text=Clone Repository -action.aws.caws.devtools.actions.copyCloneUrl.text=Copy Clone URL for Command Line -action.aws.caws.devtools.actions.learnMore.text=Learn More about CodeCatalyst -action.aws.caws.devtools.actions.learnMoreReAuth.text=Learn More about CodeCatalyst -action.aws.caws.devtools.actions.login.text=Start -action.aws.caws.devtools.actions.openGateway.text=Open Dev Environments in JetBrains Gateway -action.aws.caws.devtools.actions.reauthenticate.text=Re-authenticate to connect -action.aws.caws.rebuildAction.text=Rebuild Dev Environment -action.aws.caws.updateDevfile.text=Update Devfile... -action.aws.toolkit.caws.logout.text=Sign out -action.aws.toolkit.caws.profile.text=View Profile... -action.aws.toolkit.dynamoViewer.changeMaxResults.text=Max Results -action.aws.toolkit.dynamodb.delete_table.text=Delete Table... -action.aws.toolkit.ecr.repository.pull.text=Pull from Repository... -action.aws.toolkit.ecr.repository.push.text=Push to Repository... -action.aws.toolkit.jetbrains.core.services.cwc.commands.ExplainCodeAction.description = Explains the selected code -action.aws.toolkit.jetbrains.core.services.cwc.commands.ExplainCodeAction.text = Explain Code -action.aws.toolkit.jetbrains.core.services.cwc.commands.FixCodeAction.description = Fixes the selected code -action.aws.toolkit.jetbrains.core.services.cwc.commands.FixCodeAction.text = Fix Code -action.aws.toolkit.jetbrains.core.services.cwc.commands.OptimizeCodeAction.description = Optimizes the selected code -action.aws.toolkit.jetbrains.core.services.cwc.commands.OptimizeCodeAction.text = Optimize Code -action.aws.toolkit.jetbrains.core.services.cwc.commands.RefactorCodeAction.description = Refactors the selected code -action.aws.toolkit.jetbrains.core.services.cwc.commands.RefactorCodeAction.text = Refactor Code -action.aws.toolkit.jetbrains.core.services.cwc.commands.SendToPromptAction.description = Sends selected code to chat -action.aws.toolkit.jetbrains.core.services.cwc.commands.SendToPromptAction.text = Send to Prompt -action.aws.toolkit.open.arn.browser.text=Open ARN in AWS Console -action.aws.toolkit.open.telemetry.viewer.text=View AWS Telemetry -action.aws.toolkit.s3.open.bucket.viewer.prefixed.text=View Bucket with Prefix... -action.aws.toolkit.s3.open.bucket.viewer.text=View Bucket -action.aws.toolkit.toolwindow.explorer.newConnection.text=Setup authentication to begin -action.aws.toolkit.toolwindow.newConnection.text=Setup authentication... -action.aws.toolkit.toolwindow.sso.signout.text=Sign out of SSO -action.dynamic.open.text=Open Resource... -action.q.openchat.text=Open Chat Panel -amazonqFeatureDev.approach_gen.error_text=Sorry, we're experiencing an issue on our side. Would you like to try again? -amazonqFeatureDev.approach_gen.iteration_limit.error_text=You have reached the free tier limit for number of iterations on an implementation plan. Please proceed to generating code or start to discuss a new plan. -amazonqFeatureDev.chat_message.ask_for_new_task=What change would you like to make? -amazonqFeatureDev.chat_message.closed_session=Your session is now closed -amazonqFeatureDev.chat_message.requesting_changes=Requesting changes ... -amazonqFeatureDev.chat_message.start_code_generation=This may take a few minutes. I will send a notification when it's complete if you navigate away from this panel, but please keep the tab open. -amazonqFeatureDev.chat_message.uploading_code=Uploading code ... -amazonqFeatureDev.code_generation.failed_generation=Code generation failed -amazonqFeatureDev.code_generation.generating_code=Generating code ... -amazonqFeatureDev.code_generation.iteration_limit.error_text=You have reached the free tier limit for number of iterations on a code generation. Please proceed to accept the code or start a new conversation. -amazonqFeatureDev.code_generation.no_file_changes=Unable to generate any file changes -amazonqFeatureDev.code_generation.notification_message=Your code suggestions from Amazon Q are ready to review -amazonqFeatureDev.code_generation.notification_open_link=Open chat -amazonqFeatureDev.code_generation.notification_title=AWS Toolkit - Amazon Q FeatureDev -amazonqFeatureDev.code_generation.provide_code_feedback=How can the code be improved? -amazonqFeatureDev.code_generation.updated_code=Code has been updated. Would you like to work on another task? -amazonqFeatureDev.content_length.error_text=The project you have selected for source code is too large to use as context. Please select a different folder to use for this conversation -amazonqFeatureDev.create_new_plan=What change would you like to discuss? -amazonqFeatureDev.create_plan=Ok, let me create a plan. This may take a few minutes. -amazonqFeatureDev.create_plan.background_progress_title=Creating plans ... -amazonqFeatureDev.error_text=Sorry, we encountered a problem when processing your request. -amazonqFeatureDev.example_text=You can use /dev to:\n- Add a new feature or logic\n- Write tests\n- Fix a bug in your project\n- Generate a README for a file, folder, or project\n\nTo learn more, visit the [Amazon Q User Guide](https://docs.aws.amazon.com/amazonq/latest/aws-builder-use-ug/getting-started.html) -amazonqFeatureDev.exception.conversation_not_found=Conversation id must exist before continuing -amazonqFeatureDev.exception.export_parsing_error=Downloaded code results could not be parsed -amazonqFeatureDev.exception.insert_code_failed=Failed to insert code changes -amazonqFeatureDev.exception.message_not_found=Message was not found -amazonqFeatureDev.exception.monthly_limit_error=Sorry, you have reached the monthly limit for feature development. You can try again next month. -amazonqFeatureDev.exception.open_diff_failed=Failed to open diff -amazonqFeatureDev.exception.request_failed=Request failed -amazonqFeatureDev.exception.retry_request_failed=Retry request failed -amazonqFeatureDev.exception.upload_code=Amazon Q is unable to upload workspace artifacts to S3 for feature development. For more information, see the [Amazon Q documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security_iam_manage-access-with-policies.html) or contact your network or organization administrator. -amazonqFeatureDev.follow_instructions_for_authentication=Follow instructions to re-authenticate ... -amazonqFeatureDev.follow_up.close_session=Close session -amazonqFeatureDev.follow_up.generate_code=Generate code -amazonqFeatureDev.follow_up.incorrect_source_folder=The selected folder is not in an opened workspace folder. Add the selected folder to the workspace or pick a new folder -amazonqFeatureDev.follow_up.insert_code=Insert code -amazonqFeatureDev.follow_up.modified_source_folder=Changed source root to: {0} -amazonqFeatureDev.follow_up.modify_source_folder=Select files for context -amazonqFeatureDev.follow_up.new_plan=Discuss a new plan -amazonqFeatureDev.follow_up.new_task=Work on new task -amazonqFeatureDev.follow_up.provide_feedback_and_regenerate=Provide feedback to regenerate -amazonqFeatureDev.follow_up.retry=Retry -amazonqFeatureDev.follow_up.send_feedback=Send feedback -amazonqFeatureDev.no_retries.error_text=Sorry, we're unable to provide a response at this time. Please try again later or share feedback with our team to help us troubleshoot. -amazonqFeatureDev.placeholder.additional_improvements=Provide input on additional improvements -amazonqFeatureDev.placeholder.after_code_generation=Select an option above to proceed -amazonqFeatureDev.placeholder.after_monthly_limit=Chat input is disabled -amazonqFeatureDev.placeholder.closed_session=Your session is now closed -amazonqFeatureDev.placeholder.generating_approach=Generating plan... -amazonqFeatureDev.placeholder.generating_code=Generating code... -amazonqFeatureDev.placeholder.iterate_plan=How can this plan be improved? -amazonqFeatureDev.placeholder.new_plan=Briefly describe a task or issue -amazonqFeatureDev.placeholder.provide_code_feedback=Feedback, comments ... -amazonqFeatureDev.plan_generation.ask_for_feedback=Would you like to generate a suggestion for this? You'll review a file diff before inserting into your project. -apprunner.action.configure=Configure Service -apprunner.action.create.service=Create Service... -apprunner.action.delete.service=Delete Service... -apprunner.action.deploy=Deploy -apprunner.action.deploy.failed=Deployment Failed -apprunner.action.deploy.starting=Starting deployment -apprunner.action.deploy.unableToFindLogStream=Unable to find the log stream for deployment {0} -apprunner.action.pause=Pause... -apprunner.action.pause.confirm=Pause -apprunner.action.resume=Resume... -apprunner.action.resume.confirm=Resume -apprunner.creation.failed=Failed to create App Runner service -apprunner.creation.panel.cpu=CPU: -apprunner.creation.panel.cpu.missing=Select a CPU configuration -apprunner.creation.panel.deployment=Deployment type: -apprunner.creation.panel.deployment.automatic=Automatic -apprunner.creation.panel.deployment.automatic.tooltip=App Runner monitors your registry and deploys a new version of your service for each new revision -apprunner.creation.panel.deployment.manual=Manual -apprunner.creation.panel.deployment.manual.tooltip=Start each deployment yourself using the AWS CLI, Console, or Toolkit -apprunner.creation.panel.environment=Environment Variables: -apprunner.creation.panel.image.access_role=ECR access role: -apprunner.creation.panel.image.access_role.missing=Missing ECR access role for App Runner -apprunner.creation.panel.image.access_role.tooltip=This role gives App Runner permission to access ECR -apprunner.creation.panel.image.uri=Container image URI: -apprunner.creation.panel.image.uri.missing=Enter container image URI -apprunner.creation.panel.memory=Memory: -apprunner.creation.panel.memory.missing=Select memory amount -apprunner.creation.panel.name=Service name: -apprunner.creation.panel.name.missing=Enter a service name -apprunner.creation.panel.port=Port: -apprunner.creation.panel.repository.api=Configure all settings here -apprunner.creation.panel.repository.api.tooltip=Specify all settings for your service on creation -apprunner.creation.panel.repository.branch=Branch: -apprunner.creation.panel.repository.build_command=Build Command: -apprunner.creation.panel.repository.build_command.missing=Enter a build command -apprunner.creation.panel.repository.build_command.tooltip=This command runs in the root directory of your repository when a new code version is deployed. Use it to install dependencies or compile your code. -apprunner.creation.panel.repository.configuration=Configuration: -apprunner.creation.panel.repository.connection=Connection: -apprunner.creation.panel.repository.connection.help=App Runner deploys your source code by installing an app called "AWS Connector for GitHub" in your GitHub account. This connection must be set up through the console. -apprunner.creation.panel.repository.connection.missing=Select a connection -apprunner.creation.panel.repository.file=Provide a configuration file -apprunner.creation.panel.repository.file.tooltip=App Runner will read your configuration from the apprunner.yaml file in the root of your repository -apprunner.creation.panel.repository.runtime=Runtime: -apprunner.creation.panel.repository.runtime.missing=Select a runtime -apprunner.creation.panel.repository.runtime.tooltip=Runtime determines what tools are available in the build and runtime environments -apprunner.creation.panel.repository.url=Repository URL: -apprunner.creation.panel.repository.url.tooltip=The URL of the Git repository (e.g. "https://github.com/aws/aws-toolkit-jetbrains") -apprunner.creation.panel.source=Source: -apprunner.creation.panel.source.ecr=ECR -apprunner.creation.panel.source.ecr_public=ECR public -apprunner.creation.panel.source.repository=Source code repository -apprunner.creation.panel.start_command=Start Command: -apprunner.creation.panel.start_command.image.tooltip=The application’s container runs this command on launch. Leave blank to use the entry point command defined in the container image. -apprunner.creation.panel.start_command.missing=Enter a start command -apprunner.creation.panel.start_command.repo.tooltip=This command runs in the root directory of your service to start the service processes. Use it to start a webserver for your service. -apprunner.creation.started=Started creating App Runner service -apprunner.creation.started.title=App Runner -apprunner.creation.title=Create App Runner Service -apprunner.pause.failed=Failed to pause service {0}!\n{1} -apprunner.pause.succeeded=Pausing service {0} -apprunner.pause.warning=Your service will be unavailable while paused.

You can resume the service once the pause operation is complete.

Click pause to proceed pausing {0} -apprunner.resume.failed=Failed to resume {0}!\n{1} -apprunner.resume.succeeded=Resuming {0} -apprunner.resume.warning=Resume {0}? -apprunner.service.configure.title=Configure Service {0} -apprunner.service.resource_type=App Runner Service -apprunner.view_application_log_streams=View Application Log Streams -apprunner.view_service_log_streams=View Service Log Streams -apprunner.view_service_log_streams.error=Unable to open log group {0} -apprunner.view_service_log_streams.error_not_created=App Runner log group has not been created -aws.codewhispererq.tab.title=Amazon Q -aws.description=Amazon Web Services (AWS) is a secure cloud services platform, offering compute power, database storage, content delivery and other functionality to help businesses scale and grow. -aws.developer.tools.tab.title=Developer Tools -aws.getstarted.auth.panel.notSupport_text=Not supported for this feature -aws.getstarted.auth.panel_bullet_iam=IAM Credentials -aws.getstarted.auth.panel_bullets=IAM Identity Center\nAWS Builder ID -aws.getstarted.resource.panel_description=Work with S3, CloudWatch and more. -aws.getstarted.resource.panel_question_text=Don't have an AWS account? -aws.getstarted.resource.panel_title=AWS Explorer -aws.notification.auto_update.feature_intro.ok=OK -aws.notification.auto_update.feature_intro.title=AWS plugins will now auto update -aws.notification.auto_update.settings.title=Manage auto-updates -aws.notification.auto_update.title={0} plugin updated -aws.notification.credentials_missing=Error: AWS credentials not configured -aws.notification.do_not_show_again=Don't show again -aws.notification.sam_cli_not_valid=Error: {0}. Click here to reconfigure AWS SAM. -aws.notification.title=AWS Toolkit -aws.notification.title.amazonq=Amazon Q -aws.notification.title.amazonq.feature_dev=Amazon Q FeatureDev -aws.notification.title.codewhisperer=Amazon Q -aws.onboarding.getstarted.panel.bottom_text=Learn more about authenticating with the Toolkit -aws.onboarding.getstarted.panel.bottom_text_question=Why do these have different authentication requirements? -aws.onboarding.getstarted.panel.builderid_row_comment_text=Personal profile for builders -aws.onboarding.getstarted.panel.button_iam_login=Authenticate with IAM -aws.onboarding.getstarted.panel.comment_link_doc=Documentation -aws.onboarding.getstarted.panel.comment_link_github=Join us on GitHub -aws.onboarding.getstarted.panel.group_title=Select a feature to setup authentication -aws.onboarding.getstarted.panel.iam_row_comment_text=Long-term programmatic access -aws.onboarding.getstarted.panel.idc_row_comment_text=Successor to AWS Single Sign-on -aws.onboarding.getstarted.panel.login_with_iam=Use Professional License -aws.onboarding.getstarted.panel.share_feedback=Share Feedback -aws.onboarding.getstarted.panel.signup_iam_text=Sign up for free -aws.onboarding.getstarted.panel.title=Authenticate with AWS Toolkit -aws.q.migration.action.install.text=Install -aws.q.migration.action.manage_plugins.text=Manage plugins -aws.q.migration.action.read_more.text=Read more -aws.q.migration.action.restart.text=Restart -aws.q.migration.existing_users.notify.message=We've auto-installed it for you with all the same features and settings from CodeWhisperer and Amazon Q chat -aws.q.migration.existing_users.notify.title=Amazon Q is now its own plugin -aws.q.migration.failed_to_install.message=Amazon Q failed to install, click below to go to the plugin marketplace and install the plugin manually. -aws.q.migration.new_users.notify.message=Install it to use Amazon Q, a generative AI assistant, with chat and code suggestions. -aws.q.migration.new_users.notify.title=Amazon Q has moved to its own plugin -aws.settings.auto_detect=Auto-detected: {0} -aws.settings.auto_update.notification.message=Restart your IDE to apply the update. -aws.settings.auto_update.notification.no=Not now -aws.settings.auto_update.notification.yes=Restart -aws.settings.auto_update.notification_enable.text=Show notification on update success -aws.settings.auto_update.notification_enable.tooltip=If unchecked, updates will still get applied upon the next IDE restart. -aws.settings.auto_update.progress.message=Updating AWS plugins -aws.settings.auto_update.text=Automatically install plugin updates when available -aws.settings.aws_cli_settings=AWS CLI Settings -aws.settings.codewhisperer.automatic_import_adder=Imports recommendation -aws.settings.codewhisperer.automatic_import_adder.tooltip=Amazon Q will add import statements with code suggestions when necessary -aws.settings.codewhisperer.configurable.controlled_by_admin=\ Controlled by your admin -aws.settings.codewhisperer.configurable.opt_out.title=Share Amazon Q content with AWS -aws.settings.codewhisperer.configurable.opt_out.tooltip=When checked, your content processed by Amazon Q may be used for service improvement (except for content processed by the Amazon Q Developer Pro tier). Unchecking this box will cause AWS to delete any of your content used for that purpose. The information used to provide the Amazon Q service to you will not be affected. See the Service Terms for more detail. -aws.settings.codewhisperer.configurable.title=Amazon Q -aws.settings.codewhisperer.group.data_sharing=Data Sharing -aws.settings.codewhisperer.group.inline_suggestions=Inline Suggestions -aws.settings.codewhisperer.group.plugin_settings=Plugin Settings -aws.settings.codewhisperer.include_code_with_reference=Include suggestions with code references -aws.settings.codewhisperer.include_code_with_reference.tooltip=When checked, Amazon Q will include suggestions with code references. If you authenticate through IAM Identity Center, this setting is controlled by your Amazon Q Developer Pro administrator. Learn more -aws.settings.codewhisperer.warning=To use Amazon Q, login with AWS Builder ID or AWS IAM Identity Center. -aws.settings.dynamic_resources_configurable.clear_all=Clear All -aws.settings.dynamic_resources_configurable.select_all=Select All -aws.settings.dynamic_resources_configurable.suggest_types.dialog.message=Please suggest additional AWS resource types (e.g. AWS::S3::Bucket)\nyou would like to see supported in future releases.\n\n(max length: 2000 chars) -aws.settings.dynamic_resources_configurable.suggest_types.dialog.title=Additional Resource Type Suggestions -aws.settings.dynamic_resources_configurable.suggest_types.prompt=Don't see a resource type you expected? -aws.settings.dynamic_resources_configurable.title=Resources -aws.settings.executables.auto_resolved=(Auto-resolved: {0}) -aws.settings.executables.cannot_determine_version=Cannot determine version of {0}: {1} -aws.settings.executables.executable_invalid=Invalid {0} executable: {1} -aws.settings.executables.find.description=Select path to {0} executable -aws.settings.executables.resolution_exception=Exception occurred attempting to resolve {0} executable: {1} -aws.settings.find.description=Select path to {0} CLI executable -aws.settings.find.title={0} CLI Configuration -aws.settings.global_label=Global Settings -aws.settings.lambda.configurable.title=Lambda -aws.settings.learn_more=Learn more -aws.settings.sam.location=SAM CLI executable: -aws.settings.sam.show_all_gutter_icons=Show gutter icons for all potential AWS Lambda handlers -aws.settings.sam.show_all_gutter_icons_tooltip=When enabled, show gutter icons in source files for all potential Lambda handlers, even if they are not defined in a template or remotely. -aws.settings.serverless_label=Serverless Settings -aws.settings.show.label=Show AWS Settings -aws.settings.telemetry.description=Help us improve our product! Allow us to collect basic usage data. -aws.settings.telemetry.option=Send usage metrics to AWS -aws.settings.telemetry.prompt.message=Usage metrics are collected by default. Click here to adjust this behavior. -aws.settings.telemetry.prompt.title=AWS IDE plugins telemetry -aws.settings.title=AWS -aws.settings.toolkit.configurable.title=AWS Toolkit -aws.sso.signing.device.code=Proceed To Browser -aws.sso.signing.device.code.copy=Copy Code -aws.sso.signing.device.code.copy.dialog.text=To proceed, open the login page and confirm that the code matches: -aws.sso.signing.device.waiting=Waiting for browser authorization for code: {0} -aws.terminal.action=Open AWS local terminal -aws.terminal.action.tooltip=Start a local terminal with the current AWS connection settings injected as environment variables -aws.terminal.exception.failed_to_resolve_credentials=Unable to open AWS-aware Terminal, unable to resolve credentials: {0} -aws.terminal.exception.invalid_credentials=Unable to open AWS-aware Terminal, credentials aren't valid: {0} -aws.toolkit.experimental.description=Warning: These features are experimental, may contain bugs or usability problems, and may be
removed from the AWS Toolkit at any time. -aws.toolkit.experimental.enable=Enable -aws.toolkit.experimental.suggestion.description=The experimental feature "{0}" adds the following capability:
{1}.
Do you want to enable it? -aws.toolkit.experimental.suggestion.title=AWS Toolkit Experiment Suggestion -aws.toolkit.experimental.title=Experimental Features -aws.toolkit_deprecation.message=Support for {0} {1} is being deprecated - an upcoming release will require a version based on {2} or newer. -aws.toolkit_deprecation.message.gateway=Upgrade JetBrains Gateway to version {2} or newer to use the next release of the toolkit. Support for {0} {1} is being deprecated. -aws.toolkit_deprecation.title=AWS Toolkit deprecation notice -aws_builder_id.service_name=AWS Builder ID -aws_builder_id.sign_out=Sign out of AWS Builder ID -aws_connection.credentials.label=Credentials: -aws_connection.region.label=Region: -aws_connection.tab.label=AWS Connection -caws.add_repository=Add a repository to this project -caws.add_workspace=Create Dev Environment -caws.alias.instruction.text=Aliases can contain any combination of letters, numbers, dashes and underlines. -caws.backend.error.expired=The IDE backend is expired. Please create a new Dev Environment or update the Dev Environment settings. -caws.backend.error.unknown=Starting the IDE backend failed with exit code {0}. Any available backend logs are available below. -caws.branch_title=Branch: {0} -caws.check_connection=Check Connection and Continue -caws.clone.invalid_pat=Invalid PAT -caws.clone.invalid_pat.help=Cloning may have failed due to an invalid access token. Would you like the toolkit to recreate your access token? -caws.clone_dialog_description=Clone repository from Amazon CodeCatalyst -caws.clone_dialog_directory=Directory: -caws.clone_dialog_repository_loading_error=Failed to load repositories -caws.clone_dialog_title=Clone Repository -caws.compute.size.in.free.tier.comment=Some compute and storage options are not currently available for your space. These require upgrading the billing tier. -caws.configure_workspace=Configure -caws.configure_workspace_failed=Reconfigure Dev Environment Failed -caws.configure_workspace_not_running=Reconfigure Dev Environment is only available for running environments -caws.configure_workspace_tab_save_button=Save and restart -caws.configure_workspace_tab_title=Configure Dev Environment -caws.configure_workspace_title=Configure Dev Environment: {0} in {1} -caws.connected.builder_id=\ AWS Builder ID Connected -caws.connected.identity_center=\ IAM Identity Center Connected {0} -caws.connecting.checking=Checking state of Dev Environment -caws.connecting.in_progress=Connecting to Dev Environment -caws.connecting.waiting_for_environment=Launching Dev Environment (This may take a few minutes) -caws.connection_progress_panel_title=Amazon CodeCatalyst Dev Environment: {0} -caws.copy.url.select_repository=Select a repository to clone -caws.create_workspace=Create Dev Environment -caws.create_workspace_description=Create Dev Environments for your Amazon CodeCatalyst projects -caws.creating_branch=Creating source repository branch -caws.creating_project=Creating Project -caws.creating_workspace=Creating Dev Environment -caws.credential.setup.invalid_credentials_error=Credentials provided are not valid -caws.credential.setup.invalid_credentials_error_title=Invalid Credentials -caws.credential.setup.profile=AWS Profile -caws.credential.setup.requirements_message="You need AWS credentials to use this feature" -caws.credential.setup_access_key=AWS Access Key ID: -caws.credential.setup_access_key_validation_text=Access Key ID must not be empty -caws.credential.setup_default_region=Default Region: -caws.credential.setup_profile_name=Name: -caws.credential.setup_profile_name_validation_text=Profile name must not be empty -caws.credential.setup_secret_access_key=AWS Secret Access Key: -caws.credential.setup_secret_access_key_validation_text=Secret Access Key must not be empty -caws.delete_failed=Delete Dev Environment Failed -caws.delete_workspace=Delete -caws.delete_workspace_warning=Are you sure you wish to delete the Dev Environment? All data will be deleted -caws.delete_workspace_warning_title=Confirm Deletion -caws.devenv.continue.working.after.timeout=Your dev environment has had no activity in the past {0} minutes and will be terminated within 5 minutes. Press OK to continue working -caws.devenv.continue.working.after.timeout.title=Do you want to continue working? -caws.devfile.schema=Devfile Schema -caws.devtoolPanel.fetch.git.url=Fetching Git clone URL for {0} -caws.devtoolPanel.git_url_copied=Clone URL copied to clipboard -caws.devtoolPanel.title=CodeCatalyst -caws.download.thin_client=Downloading IDE thin client -caws.environment.status=Dev Environment is currently: {0} -caws.environment.view_pricing=Learn more about Dev Environment pricing -caws.expired.connection=\ Expired Connection -caws.free.tier.subscription.storage=Other storage options are not currently available for your space. These require upgrading the billing tier. -caws.getstarted.panel.description=Spend more time coding and less
time managing development
environments. -caws.getstarted.panel.link_text=Learn more about CodeCatalyst Spaces -caws.getstarted.panel.login=Connect to CodeCatalyst -caws.getstarted.panel.question.text=Don't have a CodeCatalyst Space? -caws.ide_version_validation_text=IDE version must be selected -caws.information.panel=A thin client on your machine makes development feel local, even when the heavy lifting is done on Amazon CodeCatalyst. -caws.information_panel=Create an on-demand Amazon CodeCatalyst Dev Environment to work on your code in the cloud. -caws.list_workspaces_failed=Failed to list Dev Environments -caws.loading.panel.credential_validation_text=Please select a credential profile from the drop down -caws.login=Sign in -caws.no_repo=No repository -caws.no_spaces=No spaces available -caws.one.branch.per.dev.env.comment=You cannot create more than one Dev Environment for a branch. If the chosen branch already has a Dev Environment, resume the existing Dev Environment. -caws.open.devfile=Open Devfile -caws.open.devfile.failed=Unable to open Devfile -caws.pause_action=Pause -caws.pause_warning=Are you sure you wish to pause the Dev Environment? -caws.pause_warning_title=Confirm Pause -caws.pause_workspace_failed=Pause Dev Environment Failed -caws.project=Project: -caws.project.autocreate.description=Created by AWS Toolkit for JetBrains -caws.rebuild.devfile.failed=Dev Environment rebuild with the provided Devfile failed: {0} -caws.rebuild.devfile.failed_server=Dev Environment returned the following:
{0} -caws.rebuild.failed.title=Rebuild Dev Environment -caws.rebuild.workspace.notification=Dev Environment requires rebuild -caws.reconnect.wait_for_client=Waiting for client to gracefully close -caws.repository=Source repository: -caws.spaces.error_loading=Error loading spaces -caws.spaces.refresh=Refresh spaces -caws.sso_profile_configuration_instruction_message=To configure SSO profile use the AWS CLI -caws.storage.value={0} GiB -caws.title=Amazon CodeCatalyst -caws.update_dev_environment=Update Dev Environment -caws.update_dev_environment.failed=Failed to update Dev Environment -caws.update_devfile=Update Dev Environment with this Devfile? This action will trigger a Dev Environment restart. -caws.update_devfile.failed=Failed to update Devfile -caws.update_devfile_title=Update Dev Environment -caws.updating_devfile=Updating Dev Environment with Devfile... -caws.view.projects_web=View project summary in Amazon CodeCatalyst... -caws.view.workspaces_web=View all Dev Environments for project in Amazon CodeCatalyst... -caws.workspace.backend.title=Amazon CodeCatalyst Dev Environment -caws.workspace.clone.info=The project source repository will be cloned to the Dev Environment directly. -caws.workspace.clone.info_repo=Choose the branch to clone, or create a branch for your work in this Dev Environment. -caws.workspace.clone.ssh_agent=Your SSH agent will be forwarded to the Dev Environment for authentication to the repository. -caws.workspace.connection.failed=Dev Environment connection failed -caws.workspace.creation.failed=Dev Environment creation failed -caws.workspace.details.additional_settings_header=Additional Settings -caws.workspace.details.alias.label=Dev Environment alias: -caws.workspace.details.backend_toolkit_location=Backend Toolkit Location: -caws.workspace.details.branch_existing=Existing Branch: -caws.workspace.details.branch_new=New Branch: -caws.workspace.details.branch_new_validation=New branch name is required -caws.workspace.details.branch_title=Branch: -caws.workspace.details.branch_validation=Branch selection is required -caws.workspace.details.clone_repo=Clone a repository -caws.workspace.details.create_branch_comment=Choose an existing branch or create a new branch. If you choose a third-party source repository, you must work in an existing branch. -caws.workspace.details.create_empty_dev_env=Create an empty Dev Environment -caws.workspace.details.create_from_existing_branch=Existing Branch -caws.workspace.details.create_from_new_branch=New Branch -caws.workspace.details.developer_tool_settings=Toolkit Developer Settings -caws.workspace.details.inactivity_timeout=Timeout: -caws.workspace.details.inactivity_timeout_comment=Dev Environment will be stopped after inactivity timeout. -caws.workspace.details.introduction_message=Create Amazon CodeCatalyst projects to start using Dev Environments. -caws.workspace.details.last_used=Last Used: {0} -caws.workspace.details.no_timeout=No timeout -caws.workspace.details.persistent_storage_comment=Storage cannot be edited from CodeCatalyst or IDE after creating Dev Environment. -caws.workspace.details.persistent_storage_title=Storage: -caws.workspace.details.project.comment=A Dev Environment must be associated with a project -caws.workspace.details.project.required=Project name must be provided -caws.workspace.details.project.title=Project name: -caws.workspace.details.project_specific_title=New Amazon CodeCatalyst Dev Environment for {0} -caws.workspace.details.project_validation=Project selection is required -caws.workspace.details.repository_validation=Repository selection is required -caws.workspace.details.s3_bucket=S3 Staging Bucket: -caws.workspace.details.select_org=Select a space above to continue -caws.workspace.details.title=New Amazon CodeCatalyst Dev Environment -caws.workspace.details.toolkit_location=Toolkit Location: -caws.workspace.details.unlinked_repo_url=Repo URL: -caws.workspace.details.use_bundled_toolkit=Use Bundled Toolkit -caws.workspace.ide_label=IDE: -caws.workspace.incompatible=(incompatible) -caws.workspace.instance_size=Compute: -caws.workspace.labels_label=Label: -caws.workspace.list_panel_search_empty_text=Search Dev Environments -caws.workspace.new=Create Dev Environment -caws.workspace.panel_other_repos=Other repositories -caws.workspace.settings=Dev Environment Configuration -caws.workspace.settings.repository_header=Repository -caws.write_credentials_to_file_progress=Writing credentials to shared credentials file -cloudformation.capabilities=CloudFormation Capabilities: -cloudformation.capabilities.auto_expand=Auto Expand -cloudformation.capabilities.auto_expand.toolTipText=Allows expansion of macros in templates -cloudformation.capabilities.iam=IAM -cloudformation.capabilities.iam.toolTipText=Allows templates that contain IAM resources to be deployed -cloudformation.capabilities.named_iam=Named IAM -cloudformation.capabilities.named_iam.toolTipText=Allows templates that contain IAM resources with custom names to be deployed -cloudformation.capabilities.toolTipText=CloudFormation capabilities represent potentially dangerous actions that must be user acknowledged for CloudFormation to perform. -cloudformation.create_stack.failed=Failed to create stack {0}: {1} -cloudformation.create_stack.failed_validation=Failed to create stack {0} due to validation error -cloudformation.create_stack.timeout=Failed to create stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. -cloudformation.delete_stack.failed=Failed to delete stack {0}: {1} -cloudformation.delete_stack.timeout=Failed to delete stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. -cloudformation.execute_change_set.failed=Failed to execute change set against {0} -cloudformation.execute_change_set.success=Successfully executed change set against {0} -cloudformation.execute_change_set.success.title=Successfully executed change set -cloudformation.invalid_property=Property {0} has invalid value {1} -cloudformation.key_not_found={0} not found on resource {1} -cloudformation.missing_property=Property {0} not found in {1} -cloudformation.service_name=AWS CloudFormation -cloudformation.stack.delete.action=Delete Stack... -cloudformation.stack.filter.show_completed=Show Completed -cloudformation.stack.logical_id=Logical ID -cloudformation.stack.logical_id.copy=Copy Logical ID -cloudformation.stack.outputs.description=Description -cloudformation.stack.outputs.export=Export Name -cloudformation.stack.outputs.export.copy=Copy Export Name -cloudformation.stack.outputs.key=Key -cloudformation.stack.outputs.key.copy=Copy Key -cloudformation.stack.outputs.value=Value -cloudformation.stack.outputs.value.copy=Copy Value -cloudformation.stack.physical_id=Physical ID -cloudformation.stack.physical_id.copy=Copy Physical ID -cloudformation.stack.reason=Status Reason -cloudformation.stack.status=Status -cloudformation.stack.tab_labels.events=Events -cloudformation.stack.tab_labels.outputs=Outputs -cloudformation.stack.tab_labels.resources=Resources -cloudformation.stack.type=Type -cloudformation.stack.view=View Stack Status -cloudformation.template_index.missing_type=Resource type must not be null for indexing -cloudformation.toolwindow.label=CloudFormation -cloudformation.update_stack.failed=Failed to update stack {0}: {1} -cloudformation.update_stack.failed_validation=Failed to update stack {0} due to validation error -cloudformation.update_stack.timeout=Failed to update stack {0} in {1} seconds. View the latest status of the stack via the AWS Console. -cloudformation.yaml.invalid_root_type=Template does not start with a mapping: {0} -cloudformation.yaml.too_many_documents=There should only be 1 YAML document per file: {0} -cloudformation.yaml.too_many_files=Found {0} YAML files but only expected 1 -cloudwatch.logs.compare.start.end.date=Start date must be before end date -cloudwatch.logs.delete_log_group=Delete Log Group -cloudwatch.logs.download=Download Log Stream -cloudwatch.logs.download.description=Select a folder to save the Log Stream to -cloudwatch.logs.exception=CloudWatch Logs Exception -cloudwatch.logs.export=Export Log Stream -cloudwatch.logs.failed_to_load_more=Failed to load more -cloudwatch.logs.failed_to_load_stream=Failed to load log stream {0} -cloudwatch.logs.failed_to_load_streams=Failed to load log streams for log group {0} -cloudwatch.logs.failed_to_save_query=Failed to save query -cloudwatch.logs.filter_loggroup=Filter streams by prefix -cloudwatch.logs.filter_logs=Filter events -cloudwatch.logs.filtered_log_stream_title=Filtered Stream: {0} from {1} to {2} -cloudwatch.logs.last_event_time=Last Event Time -cloudwatch.logs.log_group_does_not_exist=Log group {0} does not exist -cloudwatch.logs.log_group_title=Group: {0} -cloudwatch.logs.log_groups=Log Groups -cloudwatch.logs.log_record=Log Record: {0} -cloudwatch.logs.log_record_field=Log Event Field -cloudwatch.logs.log_record_open_log_stream=View Log Stream -cloudwatch.logs.log_record_value=Log Event Value -cloudwatch.logs.log_stream_does_not_exist=Log stream {0} does not exist -cloudwatch.logs.log_stream_title=Stream: {0} -cloudwatch.logs.log_streams=Log Streams -cloudwatch.logs.no_end_date=End Date must be specified -cloudwatch.logs.no_events=No Events in Log Stream -cloudwatch.logs.no_events_query=No Events matching the query found in Log Stream {0} -cloudwatch.logs.no_log_group=At least one log group must be selected -cloudwatch.logs.no_log_streams=No Log Stream found -cloudwatch.logs.no_query_entered=Query must be specified -cloudwatch.logs.no_relative_time_number=Number must be specified -cloudwatch.logs.no_results_found=No results found -cloudwatch.logs.no_start_date=Start Date must be specified -cloudwatch.logs.no_term_entered=Search Term must be specified -cloudwatch.logs.open=View Log Streams -cloudwatch.logs.open_in_editor=Open in Editor -cloudwatch.logs.open_in_editor_failed=Open in editor failed -cloudwatch.logs.open_query_editor=Open Query Editor -cloudwatch.logs.opening_in_editor=Opening Stream {0} in editor -cloudwatch.logs.query=Query -cloudwatch.logs.query.form.ok_Button=Execute -cloudwatch.logs.query_editor_title=Query Log Groups -cloudwatch.logs.query_name=Query Name -cloudwatch.logs.query_name_missing=Query name is missing -cloudwatch.logs.query_result=Query Results -cloudwatch.logs.query_result_completion_status=Result -cloudwatch.logs.query_result_completion_successful=Query Execution Completed -cloudwatch.logs.query_results_table_error=Failed to load Query Results -cloudwatch.logs.query_saved_successfully=Query has been saved to your account! -cloudwatch.logs.query_tab_title=Query: {0} -cloudwatch.logs.save_action=Save to a File -cloudwatch.logs.save_query=Save Query -cloudwatch.logs.save_query_dialog_name=Enter Query Name -cloudwatch.logs.saved_query_status=Saved Query Status -cloudwatch.logs.saving_to_disk=Saving Stream {0} to disk -cloudwatch.logs.saving_to_disk_failed=Saving Stream {0} failed -cloudwatch.logs.saving_to_disk_succeeded=Finished saving Log Stream {0} to {1} -cloudwatch.logs.select_saved_query_dialog_name=Select Saved Query -cloudwatch.logs.show_logs_around=Show Logs Around -cloudwatch.logs.stream_save_to_file=Save {0} to a file -cloudwatch.logs.stream_too_big=Stream is Too Large -cloudwatch.logs.stream_too_big_message=Log stream {0} is too large to open in the editor -cloudwatch.logs.tail=Tail logs -cloudwatch.logs.time_days=Days -cloudwatch.logs.time_hours=Hours -cloudwatch.logs.time_minutes=Minutes -cloudwatch.logs.time_weeks=Weeks -cloudwatch.logs.toolwindow=CloudWatch Logs -cloudwatch.logs.validation.timerange=Time Range not Selected -cloudwatch.logs.view_log_stream=View Log Stream -cloudwatch.logs.view_log_streams=View Log Streams -cloudwatch.logs.wrap=Wrap logs -code.aws=Amazon CodeCatalyst -code.aws.value_prop_text=Amazon CodeCatalyst: Launch developer environments in the cloud within seconds. -code.aws.workspaces=Amazon CodeCatalyst -code.aws.workspaces.short=Dev Environments -codemodernizer.builderrordialog.description.title=Error occurred when building your project -codemodernizer.chat.form.user_selection.item.choose_module=Choose a module to transform -codemodernizer.chat.form.user_selection.item.choose_target_version=Choose the target code version -codemodernizer.chat.form.user_selection.title=Q - Code transformation -codemodernizer.chat.message.auth_prompt=Follow instructions to re-authenticate ... -codemodernizer.chat.message.button.cancel=Cancel -codemodernizer.chat.message.button.confirm=Confirm -codemodernizer.chat.message.button.open_transform_hub=Open Transformation Hub -codemodernizer.chat.message.button.stop_transform=Stop transformation -codemodernizer.chat.message.button.view_build=View build progress -codemodernizer.chat.message.button.view_diff=View diff -codemodernizer.chat.message.button.view_summary=View summary -codemodernizer.chat.message.error_request=Request failed -codemodernizer.chat.message.follow_up.new_transformation=Start a new transformation -codemodernizer.chat.message.local_build_begin=I'm building your module. This can take up to 10 minutes, depending on the size of your module. -codemodernizer.chat.message.local_build_failed=Sorry, I could not run the Maven clean install command to build your module. -codemodernizer.chat.message.local_build_success=I was able to build your project and will start transforming your code soon. -codemodernizer.chat.message.result.fail=Sorry, I could not complete the transformation. Try starting the transformation again. -codemodernizer.chat.message.result.partially_success=I upgraded part of your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated and the errors that prevented a complete transformation. -codemodernizer.chat.message.result.success=I successfully upgraded your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated. -codemodernizer.chat.message.result.zip_too_large=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 1GB. -codemodernizer.chat.message.resume_ongoing=I'm still transforming your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your module. To monitor progress, go to the Transformation Hub. -codemodernizer.chat.message.transform_begin=I'm starting to transform your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your module. To monitor progress, go to the Transformation Hub. -codemodernizer.chat.message.transform_cancelled_by_user=I cancelled your transformation. If you want to start another transformation, choose **Start a new transformation**. -codemodernizer.chat.message.transform_stopped_by_user=I stopped your transformation. If you want to start another transformation, choose **Start a new transformation**. -codemodernizer.chat.message.transform_stopping=I'm stopping your transformation... -codemodernizer.chat.message.validation.check_eligible_projects=I'm checking for open projects that are eligible for Code Transformation. -codemodernizer.chat.message.validation.check_passed=I can upgrade your Java {0} module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so I can find it. Go to **File** and then **Project Structure** and make sure the correct JDK is selected in the SDK field. -codemodernizer.chat.message.validation.error.more_info=For more information, see the [Amazon Q documentation]({0}). -codemodernizer.chat.message.validation.error.no_pom=Sorry, I could not find a module that I can upgrade. I could not find a pom.xml file in any of your open projects. Currently, I can only upgrade Java 8 or Java 11 projects built on Maven. -codemodernizer.chat.message.validation.error.other=Sorry, I could not find a module that I can upgrade. Currently, I can only upgrade Java 8 or Java 11 projects built on Maven. -codemodernizer.chat.message.validation.error.unsupported_java_version=Sorry, I could not find a module that I can upgrade. Currently, I can only upgrade Java 8 or Java 11 modules built on Maven. If you have a Java 8 or Java 11 module in your workspace, you might need to configure your project so I can find it. Go to **File** and then **Project Structure** and make sure the correct JDK is selected in the SDK field. -codemodernizer.chat.prompt.label.module=Module -codemodernizer.chat.prompt.label.target_version=Target JDK version -codemodernizer.chat.prompt.stop_transform=Stop transformation -codemodernizer.chat.prompt.title.details=Transformation details -codemodernizer.explorer.show_active_job_history=Show job details -codemodernizer.explorer.show_active_job_history_description=View your Code Transform active job details in the ToolWindow -codemodernizer.explorer.show_job_history=Show job history -codemodernizer.explorer.show_job_history_description=View your code transform job history and job details -codemodernizer.explorer.show_transformation_plan_title=View your code transformation plan -codemodernizer.explorer.show_transformation_summary_title=View your code transformation summary -codemodernizer.explorer.stop_migration_job=Stop Transformation -codemodernizer.manager.job_failed_content=The transformation job failed when you were away with reason: {0} -codemodernizer.manager.job_finished_content=The transformation job completed while you were away -codemodernizer.manager.job_finished_title=Job Finished -codemodernizer.manager.job_ongoing_content=Amazon Q is still transforming your code. To see the current status of the transformation, go to the Transformation Hub. -codemodernizer.manager.job_ongoing_title=Code Transformation ongoing -codemodernizer.migration_plan.body.info.action_column=Action -codemodernizer.migration_plan.body.info.appendix_title=Appendix -codemodernizer.migration_plan.body.info.changed_files_column=Files to be changed -codemodernizer.migration_plan.body.info.current_version_column=Current version -codemodernizer.migration_plan.body.info.dependency_name_column=Dependency -codemodernizer.migration_plan.body.info.dependency_replace_message=Dependencies to be replaced -codemodernizer.migration_plan.body.info.deprecated_code_column=Deprecated code -codemodernizer.migration_plan.body.info.deprecated_code_message=Deprecated code instances to be replaced -codemodernizer.migration_plan.body.info.file_column=File -codemodernizer.migration_plan.body.info.files_changed_message=Files to be changed -codemodernizer.migration_plan.body.info.job_statistic_message={0}: {1} -codemodernizer.migration_plan.body.info.lines_of_code_message=Lines of code in your application -codemodernizer.migration_plan.body.info.target_version_column=Target version -codemodernizer.migration_plan.body.steps_intro_subtitle=Amazon Q will use the proposed changes as guidance during the transformation. The final code updates might differ from this plan. Read more. -codemodernizer.migration_plan.body.steps_intro_title=Planned transformation changes -codemodernizer.migration_plan.body.steps_name={0} -codemodernizer.migration_plan.body.steps_scroll_top=Scroll to top -codemodernizer.migration_plan.header.awsq=Amazon Q reviewed your code and generated a transformation plan. Amazon Q will suggest code changes according to the plan, and you can review the updated code before accepting changes to your files. -codemodernizer.migration_plan.header.description=Plan to Transform your project -codemodernizer.migration_plan.header.title=Code Transformation plan by Amazon Q -codemodernizer.migration_plan.substeps.description_failed=Build failed -codemodernizer.migration_plan.substeps.description_stopped=Job is stopped -codemodernizer.migration_plan.substeps.description_succeed=Build succeeded -codemodernizer.migration_summary.header.title=Transformation summary -codemodernizer.notification.info.download.started.content=Downloading the updated code -codemodernizer.notification.info.download.started.title=Download Started -codemodernizer.notification.info.modernize_complete.content=Amazon Q upgraded your code to Java 17. You can review the diff to see the proposed changes and accept or reject them. The transformation summary has details about the files that were updated. -codemodernizer.notification.info.modernize_complete.title=Transform Complete -codemodernizer.notification.info.modernize_complete.view_diff=View diff -codemodernizer.notification.info.modernize_complete.view_summary=View transformation summary -codemodernizer.notification.info.modernize_failed.connection_failed=Amazon Q could not complete the transformation. Try starting the transformation again. {0} -codemodernizer.notification.info.modernize_failed.title=Transformation failed -codemodernizer.notification.info.modernize_failed.unknown_failure_reason=Unknown failure reason -codemodernizer.notification.info.modernize_ongoing.view_status=View status -codemodernizer.notification.info.modernize_partial_complete.content=Amazon Q upgraded part of your code to Java 17. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the files I updated and the errors that prevented a complete transformation. -codemodernizer.notification.info.modernize_partial_complete.title=Transformation partially successful! -codemodernizer.notification.info.transformation_resume.content=Amazon Q was unable to resume polling for the job you started before closing the project. -codemodernizer.notification.info.transformation_resume.title=Unable to resume polling for job updates. -codemodernizer.notification.info.transformation_start_stopping.as_no_response=Amazon Q could not stop the transformation. -codemodernizer.notification.info.transformation_start_stopping.content=Amazon Q is stopping your transformation. This might take a few seconds. -codemodernizer.notification.info.transformation_start_stopping.failed_content=Amazon Q could not stop the transformation. -codemodernizer.notification.info.transformation_start_stopping.failed_title=Error stopping transformation -codemodernizer.notification.info.transformation_start_stopping.title=Transformation stopping -codemodernizer.notification.info.transformation_stop.content=You cancelled the transformation. To start a new transformation, return to the Q - Transform chat tab. -codemodernizer.notification.info.transformation_stop.title=Transformation cancelled -codemodernizer.notification.info.view_troubleshooting_guide=View troubleshooting guide -codemodernizer.notification.warn.invalid_project.description.reason.invalid_jdk_versions=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. -codemodernizer.notification.warn.invalid_project.description.reason.missing_content_roots=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. -codemodernizer.notification.warn.invalid_project.description.reason.no_valid_files=None of your open modules are supported by Amazon Q Code Transformation. Amazon Q could not find a pom.xml file in any of your open modules. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven. -codemodernizer.notification.warn.invalid_project.description.reason.not_logged_in=Amazon Q cannot start the transformation as you are not logged in with Identity Center or Builder ID. Also ensure that you are not using IntelliJ version 232.8660.185 and that you are not developing on a remote host (uncommon). -codemodernizer.notification.warn.invalid_project.description.reason.remote_backend=None of your open modules are supported by Amazon Q Code Transformation. Currently, Amazon Q can only upgrade Java 8 or Java 11 projects built on Maven, and cannot upgrade projects running on a remote host. -codemodernizer.notification.warn.maven_failed.content=Amazon Q could not run the Maven clean install command to build your module. -codemodernizer.notification.warn.maven_failed.title=Amazon Q Code Transform unable to zip dependencies -codemodernizer.notification.warn.on_resume.unknown_status_response.content=We received data from Amazon Q in a format that the plugin cannot handle. You may need to update the plugin and then try again. -codemodernizer.notification.warn.on_resume.unknown_status_response.title=Unable to resume job -codemodernizer.notification.warn.submit_feedback=Submit feedback -codemodernizer.notification.warn.unable_to_start_job=Amazon Q could not begin the transformation. Try starting the transformation again. {0} -codemodernizer.notification.warn.unknown_start_failure=Amazon Q could not begin the transformation. Try starting the transformation again. -codemodernizer.notification.warn.unknown_status_response=Amazon Q could not complete the transformation. Try starting the transformation again. -codemodernizer.notification.warn.view_diff_failed.content=Amazon Q could not download and parse the diff with your upgraded code. Try downloading it again. -codemodernizer.notification.warn.view_diff_failed.title=Failed to download and parse diff -codemodernizer.notification.warn.view_summary_failed.content=Unable to display the transformation summary due to an error. -codemodernizer.notification.warn.view_summary_failed.title=Unable to display transformation summary -codemodernizer.notification.warn.zip_creation_failed=Amazon Q could not zip the selected module and begin the transformation. Try starting the transformation again. {0} -codemodernizer.notification.warn.zip_creation_failed.reasons.unknown=An unexpected error occurred -codemodernizer.notification.warn.zip_too_large.content=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 1GB. -codemodernizer.notification.warn.zip_too_large.title=Project size exceeds 1GB limit -codemodernizer.patch.name=Patch with code changes required to upgrade to Java 17 -codemodernizer.toolwindow.banner.action.diff=View diff -codemodernizer.toolwindow.banner.action.feedback=Provide Feedback -codemodernizer.toolwindow.banner.action.plan=View transformation plan -codemodernizer.toolwindow.banner.action.summary=View transformation summary -codemodernizer.toolwindow.banner.job_failed_to_start=Job could not be started. -codemodernizer.toolwindow.banner.job_failed_while_running=Job failed. -codemodernizer.toolwindow.banner.job_is_running=Job is running. -codemodernizer.toolwindow.banner.job_is_stopped=Job is stopped. -codemodernizer.toolwindow.banner.job_starting=Job is starting. -codemodernizer.toolwindow.banner.no_ongoing_job=No job ongoing. -codemodernizer.toolwindow.banner.run_scan_complete=All steps of transformation successful -codemodernizer.toolwindow.banner.run_scan_info=Select 'Transform' in toolbar to upgrade this package. -codemodernizer.toolwindow.label=Transformation Hub - {0} -codemodernizer.toolwindow.label_no_job=Transformation Hub -codemodernizer.toolwindow.problems_mvn_window_not_found=Unable to display Code Transform results as the Maven window cannot be fetched. -codemodernizer.toolwindow.problems_window_not_found=Unable to display Code Transform results as the Problems View tool window cannot be fetched. -codemodernizer.toolwindow.progress.building=Build uploaded code in secure build environment -codemodernizer.toolwindow.progress.parent=Transformation progress -codemodernizer.toolwindow.progress.planning=Generate transformation plan -codemodernizer.toolwindow.progress.transforming=Transform your code to Java 17 using transformation plan -codemodernizer.toolwindow.progress.waiting=Waiting for job to start -codemodernizer.toolwindow.scan_display=Transformation details -codemodernizer.toolwindow.scan_in_progress=Amazon Q is scanning the project files and getting ready to start the job. To start the job, Amazon Q needs to upload the project artifacts. Once that's done, Q can start the transformation job. The estimated time for this operation ranges from a few seconds to several minutes. -codemodernizer.toolwindow.scan_in_progress.accepted=Files have been uploaded to Amazon Q, transformation job has been accepted and is preparing to start. -codemodernizer.toolwindow.scan_in_progress.building=Amazon Q is building your code using Java {0} in a secure build environment. -codemodernizer.toolwindow.scan_in_progress.failed=The step failed, fetching additional details... -codemodernizer.toolwindow.scan_in_progress.planning=Amazon Q is analyzing your code in order to generate a transformation plan. -codemodernizer.toolwindow.scan_in_progress.stopping=Stopping the job... -codemodernizer.toolwindow.scan_in_progress.transforming=Amazon Q is transforming your code. Details will appear soon. -codemodernizer.toolwindow.stop_scan=Stop job -codemodernizer.toolwindow.table.header.date=Date -codemodernizer.toolwindow.table.header.job_id=Job Id -codemodernizer.toolwindow.table.header.module_name=Module name -codemodernizer.toolwindow.table.header.run_length=Job running time -codemodernizer.toolwindow.table.header.status=Status -codemodernizer.toolwindow.transformation.history.header=Transformation job history -codemodernizer.toolwindow.transformation.progress.header=Transformation progress -codemodernizer.toolwindow.transformation.progress.running_time=Running time: {0} -codewhisperer.actions.connect_github.title=Connect with Us on GitHub -codewhisperer.actions.open_settings.title=Open Settings -codewhisperer.actions.send_feedback.title=Send Feedback -codewhisperer.actions.view_documentation.title=View Documentation -codewhisperer.codescan.apply_fix_button_label=Apply fix -codewhisperer.codescan.apply_fix_button_tooltip=Apply suggested fix -codewhisperer.codescan.build_artifacts_not_found=Cannot find build artifacts for the project. Try rebuilding the Java project in IDE or specify compilation output path in File | Project Structure... | Project | Compiler output: -codewhisperer.codescan.cannot_read_file=Error while reading file {0} -codewhisperer.codescan.cwe_label=Common Weakness Enumeration (CWE) -codewhisperer.codescan.detector_library_label=Detector library -codewhisperer.codescan.explain_button_label=Amazon Q: Explain -codewhisperer.codescan.file_ext_not_supported=File extension {0} is not supported for Amazon Q Security Scan feature. Please try again with a valid file format - java, python, javascript, typescript, csharp, yaml, json, tf, hcl, ruby, go. -codewhisperer.codescan.file_name_issues_count= {0} {1} {2, choice, 1#1 issue|2#{2,number} issues} -codewhisperer.codescan.file_not_found=Cannot find file {0} -codewhisperer.codescan.file_too_large=Selected file is larger than {0}. Please try again with a different file. -codewhisperer.codescan.fix_applied_fail=Apply fix command failed. {0} -codewhisperer.codescan.fix_available_label=Code fix available -codewhisperer.codescan.fix_button_label=Fix with Q -codewhisperer.codescan.java_module_not_found=Java plugin is required for scanning Java files, install Java plugin or perform the code scan in Intellij Idea instead. -codewhisperer.codescan.no_file_open=No file is open in an active editor. Please open a file in the editor to start the Security Scan. -codewhisperer.codescan.problems_window_not_found=Unable to display Security Scan results as the Problems View tool window cannot be fetched. -codewhisperer.codescan.run_scan=Run Project Scan -codewhisperer.codescan.run_scan_complete= Security Scan completed for {0, choice, 1#1 file|2#{0,number} files}. {1, choice, 0#No issues|1#1 issue|2#{1,number} issues} found in {2}. {3, choice, 0# |1# File size limit reached.} Last Run {5} -codewhisperer.codescan.run_scan_error=We encountered an error while scanning for security issues. Please try again. -codewhisperer.codescan.run_scan_info=Select 'Run' in toolbar to scan this package for security issues. -codewhisperer.codescan.scan_display=Amazon Q Security Issues -codewhisperer.codescan.scan_display_with_issues=Amazon Q Security Issues {0} -codewhisperer.codescan.scan_in_progress=Scanning active project and its dependencies... -codewhisperer.codescan.scan_recommendation= {0} {1} -codewhisperer.codescan.scan_recommendation_invalid= {0} {1} [No longer valid: Re-scan to validate the fix] -codewhisperer.codescan.scan_recommendation_invalid.tooltip_text=No longer valid. Re-scan to validate the fix. -codewhisperer.codescan.scan_timed_out=Security Scan failed. Amazon Q timed out. -codewhisperer.codescan.scanned_files_heading= {0} files were scanned during the last security scan. -codewhisperer.codescan.service_error=Security Scan failed. Amazon Q error encountered. Please try again. -codewhisperer.codescan.stop_scan=Stop Security Scan -codewhisperer.codescan.stop_scan_confirm_button=Stop scan -codewhisperer.codescan.stop_scan_confirm_message=Are you sure you want to stop ongoing security scan? This scan will be counted as one complete scan towards your monthly security scan limits. -codewhisperer.codescan.stopping_scan=Stopping Security Scan... -codewhisperer.codescan.suggested_fix_description=Why are we recommending this? -codewhisperer.codescan.suggested_fix_label=Suggested code fix preview -codewhisperer.codescan.upload_to_s3_failed=Amazon Q is unable to upload workspace artifacts to Amazon S3 for security scans. For more information, see the Amazon Q documentation or contact your network or organization administrator.
https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security_iam_manage-access-with-policies.html -codewhisperer.codescan.view_scanned_files=View {0} scanned files -codewhisperer.credential.login.dialog.exception.cancel_login=Login cancelled -codewhisperer.credential.login.dialog.ok_button=Connect -codewhisperer.credential.login.dialog.prompt=Select a connection option to start using Amazon Q -codewhisperer.credential.login.exception.general=Ran into unknown error: {0} -codewhisperer.credential.login.exception.general.oidc=Fail to fetch credential -codewhisperer.credential.login.exception.invalid_grant=Access denied -codewhisperer.credential.login.exception.invalid_input=Invalid start url, region, or scopes -codewhisperer.credential.login.exception.io=Unable to access SSO disk cache: {0} -codewhisperer.custom.dialog.customization.no_description=No description provided -codewhisperer.custom.dialog.model.default.comment=Receive suggestions from Amazon Q base model. -codewhisperer.custom.dialog.ok_button.text=Select -codewhisperer.custom.dialog.option.customization=Customization -codewhisperer.custom.dialog.option.customization.description=Receive Amazon Q suggestions based on your company's codebase. -codewhisperer.custom.dialog.option.customization.description.no_customization=Contact your administrator for access to Amazon Q customizations. After you have access, they will be displayed in the dropdown below. Learn more (external link) -codewhisperer.custom.dialog.option.default=Amazon Q foundation (Default) -codewhisperer.custom.dialog.option.no_data=No customizations available -codewhisperer.custom.dialog.panel.title=Select an Amazon Q customization -codewhisperer.custom.dialog.title=Amazon Q Customization -codewhisperer.experiment=Amazon Q -codewhisperer.explorer.code_reference.open=Open Code Reference Log -codewhisperer.explorer.customization.select=Select Customization -codewhisperer.explorer.enable=Start -codewhisperer.explorer.enabled=\ Enabled -codewhisperer.explorer.learn=Learn -codewhisperer.explorer.node.dismiss=Dismiss -codewhisperer.explorer.node.install_q=Install the Amazon Q Extension -codewhisperer.explorer.pause_auto=Pause Auto-Suggestions -codewhisperer.explorer.pause_auto_scans =Pause Auto-Scans -codewhisperer.explorer.paused=\ Paused -codewhisperer.explorer.reconnect=Reconnect -codewhisperer.explorer.resume_auto=Resume Auto-Suggestions -codewhisperer.explorer.resume_auto_scans =Resume Auto-Scans -codewhisperer.explorer.tooltip.comment=Start with auto-suggestions and find more features here! -codewhisperer.explorer.tooltip.title=Get started with Amazon Q -codewhisperer.explorer.usage_limit_hit=\ Free tier limit met, paused until {0} -codewhisperer.explorer.what_is=Learn More about Amazon Q -codewhisperer.gettingstarted.panel.comment=Build, maintain and transform applications
using generative AI. -codewhisperer.gettingstarted.panel.learn_more=Learn more -codewhisperer.gettingstarted.panel.learn_more.with.q=Learn more about Amazon Q and Codewhisperer -codewhisperer.gettingstarted.panel.licence_comment=Already have a license? -codewhisperer.gettingstarted.panel.login_button=Use for free, no AWS account required -codewhisperer.language.error={0} is currently not supported by Amazon Q -codewhisperer.learn_page.banner.dismiss=Dismiss -codewhisperer.learn_page.banner.message.new_user=You can always return to this page by clicking "Learn" in the Amazon Q status bar menu. -codewhisperer.learn_page.examples.description.part_1=Amazon Q inline suggestions support -codewhisperer.learn_page.examples.description.part_2=15 programming languages -codewhisperer.learn_page.examples.description.part_3=, including Java, JavaScript, Python, Go, and more. -codewhisperer.learn_page.examples.tasks.button=Try example -codewhisperer.learn_page.examples.tasks.description_1=Generate code suggestions as you type -codewhisperer.learn_page.examples.tasks.description_2.mac=Generate code suggestions manually using Option + C -codewhisperer.learn_page.examples.tasks.description_2.win=Generate code suggestions manually using Alt + C -codewhisperer.learn_page.examples.tasks.description_3=Generate unit test cases -codewhisperer.learn_page.examples.title=Generate code suggestions with examples -codewhisperer.learn_page.header.description=An AI assistant that reimagines your experience across the entire development lifecycle -codewhisperer.learn_page.header.title=Amazon Q inline code suggestions -codewhisperer.loading_licenses=Loading Licenses Info -codewhisperer.notification.accountless.error.action.connect=Connect with AWS -codewhisperer.notification.accountless.warn.action.connect=Connect with AWS to Continue -codewhisperer.notification.custom.new_customization=You have access to new Amazon Q customizations -codewhisperer.notification.custom.not_available=Selected Amazon Q customization is not available. Contact your administrator. Your instance of Amazon Q is using the foundation model. -codewhisperer.notification.custom.simple.button.got_it=Got it -codewhisperer.notification.custom.simple.button.select_another_customization=Select another customization -codewhisperer.notification.custom.simple.button.select_customization=Select customization -codewhisperer.notification.remote.ide_unsupported.message=Please update your IDE backend to a 2023.3 or later version to continue using Amazon Q inline suggestions. -codewhisperer.notification.remote.ide_unsupported.title=Amazon Q inline suggestion not supported in this IDE version -codewhisperer.notification.usage_limit.codescan.warn.content=Maximum project scan count reached for this month. -codewhisperer.notification.usage_limit.codesuggestion.warn.content=You have reached the monthly fair use limit of code recommendations. -codewhisperer.popup.button.accept=
 Insert Code 
\u21E5
-codewhisperer.popup.button.next=
Next
-codewhisperer.popup.button.prev=
Previous
-codewhisperer.popup.import_info=

If you insert code, "{0}"{2, choice, 0#|1# and {1} other import|2# and {1} other imports} will also be added.

-codewhisperer.popup.no_recommendations=No Amazon Q recommendations available at this point -codewhisperer.popup.pagination_info=Loading additional Amazon Q suggestions... -codewhisperer.popup.recommendation_info=Suggestion {0} of {1} from Amazon Q -codewhisperer.popup.reference.license_info.prefix= Reference code under  -codewhisperer.popup.reference.panel_link=View Log -codewhisperer.statusbar.display_name=Amazon Q -codewhisperer.statusbar.popup.title=Reconnect to Amazon Q? -codewhisperer.statusbar.sub_menu.connect_help.title=Connect / Help -codewhisperer.statusbar.sub_menu.inline.title=Inline Suggestions -codewhisperer.statusbar.sub_menu.other_features.title=Other Features -codewhisperer.statusbar.sub_menu.security_scans.title=Security Scans -codewhisperer.statusbar.tooltip=Amazon Q status -codewhisperer.toolwindow.entry.prefix=[{0}] ACCEPTED recommendation with the following code provided with reference under -codewhisperer.toolwindow.entry.suffix= {1, choice, 0#|1#. Added to {0}} at line {2} -codewhisperer.toolwindow.popup.text=Reference code under the {0} license from repository {1} -codewhisperer.toolwindow.settings=Amazon Q Settings -codewhisperer.toolwindow.settings.prefix=Don't want suggestions that include code with references? Uncheck this option in -codewhisperer.toolwindow.settings.prefix_sso=Your organization controls whether suggestions include code with references. To update these settings, please contact your admin -codewhisperer.trigger.document.unsupported=Amazon Q inline suggestion is not supported for this file -codewhisperer.trigger.error.client_side=Unable to show recommendations, please try again later -codewhisperer.trigger.error.server_side=Unable to get recommendations, please try again later -codewhisperer.trigger.ide.unsupported=Amazon Q inline suggestion is only supported in 2023.3+ IDE backends -codewhisperer.trigger.service=Invoke Amazon Q inline suggestions -common.none=None -configure.toolkit=Configure AWS Connection -configure.toolkit.upsert_credentials.action=Edit AWS Credential file(s)... -configure.toolkit.upsert_credentials.confirm_file_create=Credentials file {0} does not exist. Create it? -configure.toolkit.upsert_credentials.confirm_file_create.okay=Create -configure.toolkit.upsert_credentials.confirm_file_create.title=Create Credential File -configure.validate.no_region_specified=Must specify a region. -connection.pinning.unlink=Unlink connection from {0} -credentials.could_not_open=Could not open credential file {0} for editing -credentials.file.notification=AWS Toolkit profiles will be reloaded on save -credentials.individual_identity.connected=(connected to tools) -credentials.individual_identity.expired=(expired or invalid) -credentials.individual_identity.reconnect=Reconnect -credentials.individual_identity.signout=Sign out -credentials.invalid.description=Failed to validate your AWS credentials -credentials.invalid.invalid_selection=Please select a valid credential profile -credentials.invalid.more_info=More info... -credentials.invalid.not_found=''{0}'' (not found) -credentials.invalid.title=Invalid AWS Connection -credentials.mfa.action=Enter MFA code -credentials.mfa.display=''{0}'' requires MFA to connect -credentials.mfa.display.short=MFA code required -credentials.mfa.message=Enter MFA code for device: {0} -credentials.mfa.title=MFA Required to Connect to AWS Using {0} -credentials.pending.title=Waiting for sign in -credentials.pending.user_cancel.message=Login canceled by user -credentials.profile.assume_role.duplicate_source=profile ''{0}'' contains both properties ''source_profile'' and ''credential_source'' -credentials.profile.assume_role.invalid_credential_source=profile ''{0}'' is not using a valid ''credential_source'' -credentials.profile.assume_role.missing_source=profile ''{0}'' missing either property ''source_profile'' or ''credential_source'' -credentials.profile.circular_profiles=Profile ''{0}'' is invalid due to a circular profile dependency found between {1} -credentials.profile.credential_process.execution_exception_prefix=Failed to execute credential_process ({0}) -credentials.profile.credential_process.parse_exception_prefix=Failed to parse credential_process response -credentials.profile.credential_process.timeout_exception_prefix=Execution of credential_process ({0}) timed out -credentials.profile.failed_load=Failed to load AWS profiles -credentials.profile.missing_property=Profile ''{0}'' is missing required property {1} -credentials.profile.name=Profile:{0} -credentials.profile.not_configured=No active credential provider configured -credentials.profile.refresh_errors=Failed to load {0, choice, 1#1 profile|2#{0,number} profiles}. -credentials.profile.refresh_ok_message={0, choice, 1#1 profile|2#{0,number} profiles} found. -credentials.profile.refresh_ok_title=Reloaded AWS Credential Profiles -credentials.profile.source_profile_not_found=Profile ''{0}'' references source profile ''{1}'' which does not exist -credentials.profile.unsupported=Profile ''{0}'' is not using role-based, session-based, process-based, or basic credentials. -credentials.profile.validation_error=Failed to switch to profile ''{0}'' -credentials.refreshing=Refreshing tokens -credentials.retrieving=Retrieving AWS credentials -credentials.sono.login=Sign in with AWS Builder ID -credentials.sono.login.cancelled=AWS Builder ID login cancelled -credentials.sono.login.failed=AWS Builder ID login Failed -credentials.sono.login.message=Sign in with AWS Builder ID at {0}, code: {1} -credentials.sono.login.pending=Waiting for AWS Builder ID sign in -credentials.sono.login.refreshing=Refreshing tokens from AWS Builder ID -credentials.sono.login.title=AWS Builder ID Login Required -credentials.sso.action=Start AWS IAM Identity Center login -credentials.sso.display=''{0}'' requires you to re-login with AWS IAM Identity Center -credentials.sso.display.short=AWS IAM Identity Center login required -credentials.sso.login.cancelled=AWS IAM Identity Center login cancelled -credentials.sso.login.failed=AWS IAM Identity Center Login Failed -credentials.sso.login.message=Login to AWS at {0}, code: {1} -credentials.sso.login.open_browser=Open Browser -credentials.sso.login.pending=Waiting for AWS IAM Identity Center sign in -credentials.sso.login.refreshing=Refreshing tokens from AWS IAM Identity Center -credentials.sso.login.session=Sign in to SSO session ''{0}'' -credentials.sso.login.title=AWS IAM Identity Center Login Required -credentials.ssoSession.validation_error=Profile ''{0}'' references sso-session ''{1}'' which does not exist -credentials.switch.confirmation.comment=Use {0} with {1} while using {2} with other services. -credentials.switch.confirmation.no=Not now -credentials.switch.confirmation.title=Stay connected to {0} with {1}? -credentials.switch.confirmation.yes=Yes -credentials.switch.notification.title={0} will now always use {1} -credentials.welcome.provide=Provide AWS Credentials -datagrip.auth.secrets_manager=SecretsManager Auth -datagrip.secret_host=Use the url and port from the secret -datagrip.secret_id=Secret Name/ARN: -datagrip.secretsmanager.action=Connect with Secrets Manager... -datagrip.secretsmanager.action.confirm_continue=

{0}


Continue setting up the database?

-datagrip.secretsmanager.action.confirm_continue_title=The selected secret seems to be for a different database -datagrip.secretsmanager.action.title=Select a Secret -datagrip.secretsmanager.validating=Validating selected secret -datagrip.secretsmanager.validation.different_address=Secret {0} specifies a different database address ''{1}'' -datagrip.secretsmanager.validation.different_engine=Secret {0} specifies a different database engine ''{1}'' -datagrip.secretsmanager.validation.exception=Exception thrown while validating secret -datagrip.secretsmanager.validation.failed_to_get=Failed to retrieve secret {0} -datagrip.secretsmanager.validation.no_host=Secret {0} does not have a field named ''host'' -datagrip.secretsmanager.validation.no_password=Secret {0} does not have a field named ''password'' -datagrip.secretsmanager.validation.no_port=Secret {0} does not have a field named ''port'' -datagrip.secretsmanager.validation.no_secret=No SecretsManager secret specified -datagrip.secretsmanager.validation.no_username=Secret {0} does not have a field named ''username'' -datagrip.secretsmanager.validation.unkown_engine=Unknown database engine {0} -datagrip.validation.invalid_credential_specified=Invalid credential profile {0} selected! -datagrip.validation.invalid_region_specified=Invalid region {0} selected! -date.in.n.hours={0,choice, 0#0 hours|1#1 hour|2#{0,number} hours} -date.in.n.minutes={0,choice, 0#0 minutes|1#1 minute|2#{0,number} minutes} -delete_resource.confirmation_text=delete me -delete_resource.delete_failed=Failed to delete {0} ''{1}'' -delete_resource.deleted=Deleted {0} ''{1}'' -delete_resource.message=Are you sure you want to delete {0} ''{1}''?\n\nType "delete me" below to confirm. -delete_resource.title=Delete {0} {1} -developerTool.toolWindow.help=Need help? -developerTool.toolWindow.help.docs=Learn more about connecting to AWS -developerTool.toolWindow.help.github=Connect with us on GitHub -developerTool.toolWindow.title=Developer Tools -developerTool.toolWindow.welcome.connect=Connect to an account to get started: -developerTool.toolWindow.welcome.creds.about=You can connect to and switch between\naccounts at any time in the toolkit. -docker.not.found=Docker not found -dockerfile.building=Building Dockerfile: {0} -dockerfile.label=Dockerfile: -dynamic_resources.add_remove_resources_tooltip={0} resources available -dynamic_resources.begin_resource_creation=Started new {0} creation... -dynamic_resources.create_resource_action=Create {0} -dynamic_resources.create_resource_file_empty=Resource model is empty. Do you want to continue? -dynamic_resources.create_resource_file_empty_title=Empty Resource Model -dynamic_resources.create_resource_file_name=Create new {0} -dynamic_resources.create_resource_instruction=Creating a resource: Enter resource properties, click Create -dynamic_resources.delete_resource=Delete resource... -dynamic_resources.edit_resource_instruction=File is read-only, click Edit to begin editing the resource -dynamic_resources.editor.enableEditingResource_text=Edit -dynamic_resources.editor.submitResourceUpdateRequest_text=Update -dynamic_resources.experiment.description=Enables basic JSON-based create, update, and delete support for cloud resources through the Resources node in the AWS Explorer -dynamic_resources.experiment.title=JSON Resource Modification -dynamic_resources.fetch.fail.content=Failed to retrieve resource model for {0} -dynamic_resources.fetch.fail.title=Open resource model -dynamic_resources.fetch.fetch=Retrieving model -dynamic_resources.fetch.indicator_title=Open resource model for {0} -dynamic_resources.fetch.open=Opening model in IDE -dynamic_resources.loading_manifest=Loading AWS resource manifest -dynamic_resources.openFileForUpdate_text=Update resource... -dynamic_resources.openReadOnlyFile_text=View Resource -dynamic_resources.operation_status_failed=Failed to {1} {0}: {2} -dynamic_resources.operation_status_failed_no_message=Failed to {1} {0} -dynamic_resources.operation_status_notification_title={0} {1} status -dynamic_resources.operation_status_success=Successfully {1}d {0} -dynamic_resources.resource_creation={0} Creation -dynamic_resources.type.explorer.create_resource=Create resource... -dynamic_resources.type.explorer.view_documentation=View documentation -dynamic_resources.unavailable_in_region=Unavailable in {0} -dynamic_resources.update_resource_instruction=Click Update to save your changes -dynamic_resources.update_resource_no_changes_made=No changes made, do you want to continue editing? -dynamic_resources.update_resource_no_changes_made_title=Resource model unchanged -dynamodb.experiment.description=List, open and query Amazon DynamoDB tables -dynamodb.experiment.title=DynamoDB table viewer -dynamodb.viewer.open.failed=Failed to open DynamoDB table -dynamodb.viewer.open.failed.with_error=Failed to open DynamoDB table: {0} -dynamodb.viewer.search.index.global=Global -dynamodb.viewer.search.index.label=Table / Index: -dynamodb.viewer.search.index.local=Local -dynamodb.viewer.search.run.title=Run -dynamodb.viewer.search.title=Scan -ecr.copy_image_uri.action=Copy Tag URI -ecr.copy_uri.action=Copy Repository URI -ecr.create.app_runner_service.action=Create App Runner Service... -ecr.create.repo.action=Create Repository... -ecr.create.repo.title=Create ECR Repository -ecr.create.repo.validation.empty=Enter a name -ecr.delete.repo.action=Delete Repository... -ecr.delete.tag.action=Delete {0, choice, 1#Tag|2#{0,number} Tags}... -ecr.delete.tag.deleting=Deleting Tags -ecr.delete.tag.description=Are you sure you want to delete {0, choice, 1#1 tag|2#{0,number} tags} from repository {1}? -ecr.delete.tag.failed=Failed to delete {0, choice, 1#tag|2#{0,number} tags} from repository {1} -ecr.delete.tag.succeeded=Deleted {0, choice, 1#tag|2#{0,number} tags} from repository {1} -ecr.dockerfile.configuration.add=New configuration from Dockerfile... -ecr.dockerfile.configuration.edit=Edit Dockerfile configuration... -ecr.dockerfile.configuration.invalid=Invalid Dockerfile run configuration selected -ecr.dockerfile.configuration.invalid_server=Dockerfile run configuration has an invalid server connection -ecr.dockerfile.configuration.label=Dockerfile configuration: -ecr.dockerfile.label=Dockerfile: -ecr.image.not_selected=Image must be selected -ecr.pull.confirm=Pull -ecr.pull.progress=Pulling image from ECR: {0}:{1} -ecr.pull.title=Pull from ECR -ecr.push.confirm=Push -ecr.push.credential_fetch_failed=Failed to obtain authorization token from ECR -ecr.push.failed=Push failed: {0} -ecr.push.in_progress=Deployment with name '{0}' is already being pushed. -ecr.push.remoteTag=Remote Tag: -ecr.push.source=Local Image: -ecr.push.title=Push to ECR -ecr.push.type.dockerfile.label=Dockerfile -ecr.push.type.local_image.label=Local Image -ecr.push.unknown_exception=Failed to push to ECR -ecr.repo.label=ECR Repository: -ecr.repo.not_selected=ECR Repository must be selected -ecr.tag.invalid=Tag provided is not valid -ecs.clusters=Clusters -ecs.container_actions_group.label=Containers -ecs.execute_command.experiment.description=Enable executing commands and opening interactive terminal against a running ECS task/service -ecs.execute_command.experiment.title=ECS Execute Command -ecs.execute_command.label=Command: -ecs.execute_command.production_warning.checkbox_label=I confirm {0} is not a production service and wish to continue -ecs.execute_command_call_service=Executing command -ecs.execute_command_disable=Disable Command Execution -ecs.execute_command_disable_failed=Execute Command could not be disabled for {0} -ecs.execute_command_disable_in_progress=Cannot execute action since Execute Command is being disabled for {0} -ecs.execute_command_disable_progress_indicator_message=Disabling Command Execution for {0} -ecs.execute_command_disable_success=Execute Command for {0} has been disabled. -ecs.execute_command_disable_warning=Disabling command execution will change the state of resources in your AWS account, including but not limited to stopping and restarting the service.
Do you wish to continue? -ecs.execute_command_disable_warning_title=Disable Execute Command Warning -ecs.execute_command_enable=Enable Command Execution -ecs.execute_command_enable_failed=Execute Command could not be enabled for {0} -ecs.execute_command_enable_in_progress=Cannot execute action since Execute Command is being enabled for {0} -ecs.execute_command_enable_progress_indicator_message=Enabling Command Execution for {0} -ecs.execute_command_enable_success=Execute Command for {0} has been enabled. -ecs.execute_command_enable_warning=Enabling command execution will change the state of resources in your AWS account, including but not limited to stopping and restarting the service.
Altering the state of resources while the Execute Command is enabled can lead to unpredictable results.
Do you wish to continue? -ecs.execute_command_enable_warning_title=Enable Execute Command Warning -ecs.execute_command_failed=ECS Execute Command Failed -ecs.execute_command_no_command=Command to execute must be entered -ecs.execute_command_no_task_role_found_exception=No roles found -ecs.execute_command_permissions_not_verified=Permissions for ECS Exec could not be verified. Please ensure you have the right role and permissions before proceeding -ecs.execute_command_permissions_required_title=Permissions required for ECS Exec -ecs.execute_command_run=Run Command... -ecs.execute_command_run_command_default_text=Enter command... -ecs.execute_command_run_command_in_shell=Open Interactive Shell... -ecs.execute_command_shell.label=Shell: -ecs.execute_command_shell_comboBox_empty=Shell must be selected -ecs.execute_command_task.label=Task: -ecs.execute_command_task_comboBox_empty=Task must be selected -ecs.execute_command_task_role_invalid_warning=You may not have the Permissions Required for using the execute command
Please set up a Task Role with the required permissions and retry... -ecs.execute_command_task_role_invalid_warning_title=Set up Valid Task Role with Permissions -ecs.no_services_in_cluster=Cluster has no services -ecs.run_config.container.loading.error=Error loading containers: {0} -ecs.service.container_logs.action_label=View Logs -ecs.service.logs.cannot_determine_log_stream=Cannot determine log streams for service {0}. Note: only AWSLOGS LogDriver is supported. -ecs.service.logs.cannot_find_container_log_stream=Cannot determine log stream for container {0}. -ecs.service.logs.empty=No events found in log stream: {0} -ecs.service.logs.no_log_stream=Running task has not sent events to CloudWatch, opening Log Group instead. -ecs.service.logs.no_running_tasks=Service has no running tasks, opening Log Group instead. -ecs.service.logs.title=ECS Service Logs -ecs.service.not_found=Service {0} not found in cluster {1} -ecs.task_definition.json_schema_name=AWS ECS Task Definition -ecs.task_definitions=Task Definitions -environment.variables.dialog.title=Environment Variables -executableCommon.auto_managed=Managed by AWS Toolkit -executableCommon.auto_resolved=Auto-detected: {0} -executableCommon.cli_not_configured={0} executable not configured -executableCommon.configurable.title=External Tools -executableCommon.downloading=Downloading {0}... -executableCommon.empty_info={0} did not provide any output -executableCommon.failed_install=Failed to install {0} -executableCommon.installing=Installing {0} -executableCommon.latest_not_compatible=Latest version of {0} is not compatible with the toolkit''s supported range: {1} -executableCommon.missing_executable=Validation of {0} failed: {1} -executableCommon.not_installed=Not installed. -executableCommon.unexpected_output={0} provided unexpected output. Ensure that your {0} is up-to-date: "{1}" -executableCommon.updating=Updating {0} -executableCommon.validating=Validating {0} -executableCommon.version_parse_error=Could not parse {0} executable version from "{1}" -executableCommon.version_range_wrong=Bad {0} executable version. Expected version must be within the following ranges: {1} , but was {2} -executableCommon.version_too_high=Upgrade your AWS Toolkit plugin to resolve this issue. -executableCommon.version_too_low=Upgrade your {0} to resolve this issue. -executableCommon.version_too_low2=Upgrade {0} to resolve this issue. Minimum version for this feature is {1} -executableCommon.version_wrong=Bad {0} executable version. Expected {1} ≤ version < {2} but was {3}. -explorer.copy_arn=Copy Arn -explorer.copy_identifier=Copy identifier -explorer.create_new_issue=Create a New Issue on GitHub -explorer.empty_node=empty -explorer.error_loading_resources=Error Loading Resources ({0}) -explorer.error_loading_resources_default_details=check log for details -explorer.error_loading_resources_not_connected=check credentials/region -explorer.label=AWS Explorer -explorer.node.apprunner=App Runner -explorer.node.cloudformation=CloudFormation -explorer.node.cloudwatch=CloudWatch Logs -explorer.node.codemodernizer=CodeModernizer -explorer.node.dynamo=DynamoDB -explorer.node.ecr=ECR -explorer.node.ecs=ECS -explorer.node.lambda=Lambda -explorer.node.other=Resources -explorer.node.other.add_remove=Add or remove resource types... -explorer.node.rds=RDS -explorer.node.redshift=Redshift -explorer.node.s3=S3 -explorer.node.schemas=Schemas -explorer.node.sqs=SQS -explorer.registry.no.schema.resources=Registry has no Schemas -explorer.results_truncated=Results truncated, double click to load more -explorer.stack.no.serverless.resources=Stack has no Lambda Functions -explorer.toolwindow.title=Explorer -explorer.view_documentation=View Documentation -explorer.view_source=View Source on GitHub -feedback.comment.emptyText=optional -feedback.comment.label=Please enter your feedback -feedback.comment.textbox.initial.length=2000 characters remaining -feedback.comment.textbox.title=What do you like about {0}? What can we improve? -feedback.comment.textbox.title.amazonq=How was your experience with the upgrade of your Java application? -feedback.comment.textbox.title.amazonq.feature_dev=How has your experience with Amazon Q been? What can we improve? -feedback.connect.with.github.title=Join us on GitHub -feedback.customer.alert.info=Please don't add personally identifiable information (PII), confidential or sensitive information in your feedback.
Remove any PII when sharing file paths, error messages, etc. -feedback.description=Submit quick feedback about the AWS Toolkit for JetBrains -feedback.github.link=Have an issue or feature request?
Talk to us on GitHub instead! -feedback.initial.help.text=
Looking for help? View the Getting Started Guide or search our documentation -feedback.limit.label={0} characters remaining -feedback.report.issue.link=Report an issue -feedback.request.feature.link=Request a feature -feedback.share.feedback.title=Share Feedback -feedback.smiley.happyTooltip=Positive -feedback.smiley.question=How was your experience? -feedback.smiley.sadTooltip=Negative -feedback.submit_button=Share -feedback.submit_failed=An exception occurred while sharing your feedback: {0} -feedback.submit_failed_title=Failed to share feedback -feedback.submit_success=Thanks for the feedback! -feedback.submitting=Sharing... -feedback.title=Share Feedback for {0}... -feedback.title.amazonq=Send feedback for Code Transformation by Amazon Q -feedback.title.amazonq.feature_dev=Send feedback for Amazon Q -feedback.validation.comment_too_long=Comment is too long. -feedback.validation.empty_comment=Please provide a comment. -feedback.validation.no_sentiment=Please select how you're feeling. -feedback.view.source.code.link=View Source Code and Contribute -gateway.auth.different.account.already.signed.in=You are signed in with {0}. Do you want to continue? -gateway.auth.different.account.required=You are signed into a different account. \nDo you want to sign in with the account associated with {0}? -gateway.auth.different.account.sign.in=Sign in with a different account -gateway.connection.workflow.copy_scripts=Copy Scripts -gateway.connection.workflow.git_clone=Git Clone -gateway.connection.workflow.install_toolkit=Install AWS Toolkit -gateway.connection.workflow.prime_ssh_agent=Prime SSH Agent -gateway.connection.workflow.start_ide=Start IDE -gateway.connection.workflow.step_failed=\nStep failed exceptionally\n -gateway.connection.workflow.step_skipped=Step skipped -gateway.connection.workflow.step_successful=\nStep completed successfully\n -general.add.another=Add another -general.auth.reauthenticate=Reauthenticate -general.cancel=Cancel -general.close_button=Close -general.configure_button=Configure -general.confirm=Confirm -general.confirm_proceed=Please confirm before proceeding -general.create=Create -general.create_button=Create -general.create_in_progress=Creating... -general.default=Default -general.delete=Delete -general.delete_accessible_name=Delete confirmation box -general.details=(details) -general.execute_button=Execute -general.execution.canceled=canceled -general.execution.cli_error=Command did not exit successfully, exit code: {0}\n -general.execution.failed=failed -general.execution.running=running... -general.execution.success=completed successfully -general.file_not_found=File not found: "{0}" -general.get_started=Get started -general.help=Help -general.in_progress_button=In progress -general.logs=Logs -general.message=Message -general.more=More -general.name.label=Name: -general.no_changes=No changes were provided -general.notification.action.hide_forever=Don't show again -general.notification.action.hide_once=Dismiss -general.open.in.progress=Opening... -general.open_in_aws_console=Open in AWS Console -general.open_in_aws_console.error=Failed to open link in browser -general.open_in_aws_console.no_permission=Failed to open link in browser because user credentials are not allowed to perform sts:GetFederationToken -general.optional=Optional -general.policy=Policy -general.refresh=Refresh -general.reject=Reject -general.save=Save -general.select_button=Select -general.step.canceled={0} has been canceled -general.step.failed={0} has failed: {1} -general.time=Time -general.time.five_minutes=Five Minutes -general.time.one_minute=One Minute -general.time.ten_minutes=Ten Minutes -general.unknown_error=Unknown error. See IDE logs for more details. -general.update_button=Update -general.update_in_progress=Updating... -gettingstarted.auth.builderid.expired=AWS Builder ID Expired -gettingstarted.auth.config.issue=There was an issue reading your AWS config file(s): {0} -gettingstarted.auth.connected.builderid=Connected with AWS Builder ID -gettingstarted.auth.connected.iam=Connected with IAM -gettingstarted.auth.connected.idc=Connected with IAM Identity Center -gettingstarted.auth.iam.invalid=Invalid IAM Credentials -gettingstarted.auth.idc.expired=IAM Identity Center Expired -gettingstarted.auth.idc.sign.out.confirmation=Signing out will remove profiles associated with this connection from the ~/.aws/config file -gettingstarted.auth.idc.sign.out.confirmation.title=Confirm deletion of profile -gettingstarted.builderid.description=Personal profile for builders -gettingstarted.codecatalyst.open.explorer=Open CodeCatalyst menu -gettingstarted.codecatalyst.panel.create.space=Create a CodeCatalyst space -gettingstarted.codecatalyst.panel.setup=Set up CodeCatalyst -gettingstarted.codewhisperer.remote=Amazon Q chat are unavailable in JetBrains Gateway -gettingstarted.connecting.in.browser=Connecting in browser... -gettingstarted.editor.title=Authenticate with AWS Toolkit -gettingstarted.explorer.gotit.codecatalyst.body=Launch Dev Environments and find more features here. -gettingstarted.explorer.gotit.codecatalyst.title=Get started with CodeCatalyst -gettingstarted.explorer.gotit.explorer.body=IAM Credentials you add will be accessible from this dropdown. Add and edit credentials from the "..." menu. -gettingstarted.explorer.gotit.explorer.title=Switch and edit credentials -gettingstarted.explorer.iam.add=Add IAM Credentials -gettingstarted.explorer.iam.add.info=Provide IAM Credentials to work with AWS Services and Resources from the Explorer. -gettingstarted.explorer.iam.switch=Switch to an IAM role in the dropdown above to work with AWS Services and Resources in the Explorer -gettingstarted.explorer.new.setup=Setup Authentication -gettingstarted.explorer.new.setup.info=To get started with the Explorer, setup authentication to AWS -gettingstarted.explorer.open.menu=Open Resource Explorer -gettingstarted.iam.description=Long-term programmatic access -gettingstarted.panel.learn_more=Learn more -gettingstarted.panel.login_button=Use for free, no AWS account required -gettingstarted.setup.auth.failure.body=We are unable to connect or the process was cancelled. Please try again, visit documentation, or file an issue on GitHub to troubleshoot -gettingstarted.setup.auth.failure.title=Authentication Failed -gettingstarted.setup.auth.no_iam=Amazon Q do not support authentication with IAM Credentials -gettingstarted.setup.auth.success.body=You can start using {0} or setup another authentication method below. -gettingstarted.setup.auth.success.iam.body=We've connected your local credentials. Get started with the Resource Explorer or setup another feature below. -gettingstarted.setup.auth.success.iam.title=Connected to IAM Credentials -gettingstarted.setup.auth.success.title=Connected to {0} -gettingstarted.setup.builderid.bullets=Sign up for free\nComplement your existing AWS accounts\nSecure login with optional MFA -gettingstarted.setup.builderid.notice=AWS Builder ID is a new personal profile for builders. Learn more -gettingstarted.setup.codecatalyst.no_iam=CodeCatalyst does not support authentication with IAM Credentials -gettingstarted.setup.codewhisperer.use_builder_id=If you haven't been provided an Amazon Q license, use AWS Builder ID -gettingstarted.setup.codewhisperer.use_identity_center=If you have an Amazon Q license, please use IAM Identity Center -gettingstarted.setup.connect=Connect -gettingstarted.setup.error.not_empty=Must not be empty -gettingstarted.setup.error.not_selected=Selection must be made -gettingstarted.setup.explorer.no_builder_id=Resource Explorer does not support authentication with AWS Builder ID. -gettingstarted.setup.iam.access_key=Access Key ID: -gettingstarted.setup.iam.access_key.invalid=Access key must be alphanumeric and between 16 and 128 characters -gettingstarted.setup.iam.notice=Credentials will be automatically added to your local ~/.aws/config file as a profile.
Edit credential file directly... -gettingstarted.setup.iam.profile=Profile Name: -gettingstarted.setup.iam.profile.comment=Used by AWS Toolkit to list added credentials -gettingstarted.setup.iam.profile.exists=Profile with name ''{0}'' already exists -gettingstarted.setup.iam.profile.invalid_credentials=The provided credentials are not valid -gettingstarted.setup.iam.secret_key=Secret Access Key: -gettingstarted.setup.iam.session.exists=SSO Session with name ''{0}'' already exists -gettingstarted.setup.idc.no_builder_id=User should not perform Identity Center login with AWS Builder ID url -gettingstarted.setup.idc.profile.comment=User-specified name used to label credentials locally -gettingstarted.setup.idc.region=Region: -gettingstarted.setup.idc.role=Role: -gettingstarted.setup.idc.role.title=AWS Toolkit: Add IAM Identity Center Roles -gettingstarted.setup.idc.roleLabel=Select roles from IAM Identity Center to use with the AWS Toolkit -gettingstarted.setup.idc.startUrl=Start URL: -gettingstarted.setup.idc.startUrl.comment=URL for your organization, provided by an administrator or help desk -gettingstarted.setup.learnmore=Learn More -gettingstarted.setup.tabs.builderid=AWS Builder ID -gettingstarted.setup.tabs.iam=IAM Credentials -gettingstarted.setup.tabs.idc=IAM Identity Center -gettingstarted.setup.title=AWS Toolkit: Setup Authentication -group.aws.toolkit.dynamoViewer.toolbar.settings.text=Settings -group.aws.toolkit.jetbrains.core.services.cwc.actions.ContextMenuActions.text=Send to Amazon Q -group.aws.toolkit.s3viewer.contextMenu.copyGroup.text=Copy -iam.create.role.in_progress=Creating... -iam.create.role.managed_policies=Managed Policies: -iam.create.role.missing.role.name=Role name is required. -iam.create.role.name.label=Name: -iam.create.role.policy.editor.name=Permissions -iam.create.role.title=Create IAM Role -iam.create.role.trust.editor.name=Trust Relationships: -iam.name=IAM -iam_identity_center.name=IAM Identity Center -iam_identity_center.service_name=IAM Identity Center ({0}) -iam_identity_center.sign_out=Sign out of IAM Identity Center -lambda.build.java.unsupported_build_system=Module ''{0}'' is not managed by Maven or Gradle -lambda.build.module_with_no_content_root=Module ''{0}'' lacks a content root -lambda.build.typescript.compiler.annotation_results=Annotation Results: -lambda.build.typescript.compiler.creating_config=Creating TypeScript config from scratch -lambda.build.typescript.compiler.emitted_files=Emitted Files: -lambda.build.typescript.compiler.ide_error=TypeScript compiler failed to start -lambda.build.typescript.compiler.processed_files=Processed Files: -lambda.build.typescript.compiler.running=Running TypeScript compiler against temporary config file ''{0}'' -lambda.build.typescript.compiler.step=Compile TypeScript -lambda.build.typescript.compiler.using_base=Using TypeScript config ''{0}'' as a base -lambda.build.typescript.compiler.using_base_error=Unable to read existing TypeScript config ''{0}'' -lambda.build.unable_to_locate_handler_root=Unable to locate root directory of the handler -lambda.build.unable_to_locate_project_root=Unable to locate project directory for Module ''{0}'' -lambda.create.description.label=Description: -lambda.create.enable.xray.label=Enable AWS X-Ray -lambda.create.env_vars.label=Environment Variables: -lambda.create.function_name.label=Name: -lambda.create.iam.role.label=IAM Role: -lambda.create.memory.label=Memory (MB): -lambda.create.source_bucket.label=Source Bucket: -lambda.create.step.build=SAM Build -lambda.create.step.create_lambda=Creating new Lambda -lambda.create.step.package=SAM Package -lambda.create.step.update_lambda=Updating Lambda -lambda.create.timeout.label=Timeout (seconds): -lambda.create_new=Create new AWS Lambda... -lambda.credentials.tooltip=The existing AWS account connection to use for this configuration. -lambda.debug.attach.error=Debugger attach error -lambda.debug.attach.fail=Unable to attach to debugger process. -lambda.debug.docker.not_connected=Running/Debugging Lambdas locally requires Docker. Please make sure it is installed and running -lambda.debug.process.start.timeout=Timeout waiting for Debugger Worker process to start -lambda.debug.step.start_sam=Running SAM local invoke -lambda.debug.waiting=Waiting for debugger... -lambda.execute.function_error=Function error: {0} -lambda.execute.invoke=Invoking Lambda function: {0} -lambda.execute.logs=Logs: \n{0} -lambda.execute.output=Output: \n{0} -lambda.execute.service_error=Error invoking Lambda: {0} -lambda.function.architecture.label=Architecture: -lambda.function.architecture.tooltip=The AWS Lambda architecture to use when running this function. -lambda.function.code_updated.notification=Code updated for function ''{0}''. -lambda.function.configuration_updated.notification=Configuration updated for function ''{0}''. -lambda.function.created.notification=Function ''{0}'' created. -lambda.function.delete.action=Delete Function... -lambda.function.enableXRay.tooltip=Enables AWS X-Ray to detect, analyze, and optimize performance issues when this function runs. -lambda.function.env_vars.tooltip=The environment variables available to this function, specified as key/value pairs. -lambda.function.handler.tooltip=The name of the method within your code that AWS Lambda calls to execute your function. It must be a fully qualified name depending on the runtime. -lambda.function.iamRole.tooltip=The function's execution role. -lambda.function.label=Function: -lambda.function.memory.tooltip=The memory available to AWS Lambda when running this function, if needed. -lambda.function.name.tooltip=The function's name. It can only contain alphanumeric (A-Z, a-z, 0-9), underscore (_) and hyphen (-) characters and must not exceed 64 characters in length. -lambda.function.runtime.tooltip=The AWS Lambda runtime to use when running this function. -lambda.function.sourceBucket.tooltip=The Amazon S3 bucket in the same AWS Region to deploy this AWS Lambda function. -lambda.function.timeout.tooltip=The number of seconds until AWS Lambda stops running this function, if necessary. -lambda.function.updateCode.action=Update Function Code -lambda.function.updateConfiguration.action=Update Function Configuration -lambda.handler.label=Handler: -lambda.image.missing_debugger=Runtime ''{0}'' is unsupported for debugging image based Lambdas -lambda.image.sam_version_too_low=Sam CLI version {0} is too old to run image-based configurations, {1} or higher is required -lambda.input.label=Input -lambda.logs.does_not_exist=Lambda ''{0}'' has not sent events to CloudWatch -lambda.region.tooltip=The AWS Region to use for the connected AWS account. -lambda.run.configuration.handler_root_not_found=Failed to locate the root of the handler -lambda.run_configuration.credential_error=Error retrieving credentials: {0}. -lambda.run_configuration.credential_not_found_error=The credential provider with ID ''{0}'' could not be found. -lambda.run_configuration.debug_host=Debug Host: -lambda.run_configuration.description=Invoke AWS Lambda Function -lambda.run_configuration.fromTemplate.tooltip=The location and file name of the AWS SAM template to use for this configuration, and the resource in that template to associate with this configuration. -lambda.run_configuration.handler.validation.in_progress=Lambda handler validation is in progress -lambda.run_configuration.handler_not_found=Cannot find handler ''{0}'' in project. -lambda.run_configuration.input.file.label=File: -lambda.run_configuration.input.file.tooltip=The location and file name of the data to pass into the function. The data must follow the syntax for AWS Lambda event data. -lambda.run_configuration.input.samples.confirm=Selecting this template will replace the input text. Continue? -lambda.run_configuration.input.samples.confirm.title=Confirm Template Selection -lambda.run_configuration.input.samples.label=-- Event Templates -- -lambda.run_configuration.input.text.label=Text: -lambda.run_configuration.input.text.tooltip=The data to pass into the function. The data must follow the syntax for AWS Lambda event data. -lambda.run_configuration.input_file_error=Failed to load input file: {0} -lambda.run_configuration.local=Local -lambda.run_configuration.no_architecture_specified=Must specify an architecture. -lambda.run_configuration.no_credentials_specified=Select AWS credentials in 'AWS Connection' -lambda.run_configuration.no_function_specified=Must specify function name or ARN. -lambda.run_configuration.no_handler_specified=Must specify a handler. -lambda.run_configuration.no_input_specified=Must specify an input. -lambda.run_configuration.no_runtime_specified=Must specify a supported runtime. -lambda.run_configuration.remote=Remote -lambda.run_configuration.remote.function.tooltip=The name of the AWS Lambda function to use. -lambda.run_configuration.sam=SAM CLI -lambda.run_configuration.sam.additional_build_args=Build Args: -lambda.run_configuration.sam.additional_local_args=Local Invoke Args: -lambda.run_configuration.sam.docker_network=Docker Network: -lambda.run_configuration.sam.invalid_executable=Invalid SAM CLI executable configured: {0} -lambda.run_configuration.sam.no_function_specified=Function logical name must be specified. -lambda.run_configuration.sam.no_such_function=Function {0} doesn''t exist in template {1}. -lambda.run_configuration.sam.no_template_specified=Template must be specified. -lambda.run_configuration.sam.skip_image_pull=Skip checking for newer container images -lambda.run_configuration.sam.template_file_not_found=Template file not found. -lambda.run_configuration.sam.validating=Validating SAM executable... -lambda.run_configuration.sam.validation.in_progress=SAM executable validation is in progress -lambda.run_configuration.source.from_handler=From &handler -lambda.run_configuration.source.from_template=From &template -lambda.run_configuration.unsupported_architecture=The architecture ''{0}'' is unsupported. -lambda.run_configuration.unsupported_runtime=The runtime ''{0}'' is unsupported. -lambda.runtime.label=Runtime: -lambda.sam.additionalBuildArgs.tooltip=Additional args to add to the 'sam build' command -lambda.sam.additionalLocalArgs.tooltip=Additional args to add to the 'sam local invoke' command -lambda.sam.buildInContainer.tooltip=Builds the serverless application's functions inside an AWS Lambda-like Docker container locally before deployment. -lambda.sam.debugHost.tooltip=The host to connect the debugger to -lambda.sam.dockerNetwork.tooltip=The name or ID of an existing Docker network that the AWS Lambda Docker containers should connect to, along with the default bridge network. -lambda.sam.skipCheckingNewerContainerImage.tooltip=Skips pulling down the latest Docker image for the specified AWS Lambda runtime. -lambda.service_name=AWS Lambda -lambda.slider_validation=The specified value must be an integer and between {0} and {1} -lambda.upload.build_settings=Build Settings -lambda.upload.code_location_settings=Code Location Settings -lambda.upload.configuration_settings=Configuration Settings -lambda.upload.create.title=Create Function -lambda.upload.deployment_settings=Deployment Settings -lambda.upload.updateCode.title=Update Code for {0} -lambda.upload.updateConfiguration.title=Update Configuration for {0} -lambda.upload.update_settings_button.title=Update -lambda.upload_validation.dockerfile_not_found=Dockerfile not found -lambda.upload_validation.function_name=Function Name must be specified -lambda.upload_validation.function_name_invalid=Function names can only contain alphanumerics, hyphen (-) and underscore (_) -lambda.upload_validation.function_name_too_long=Function names must not exceed {0} characters in length -lambda.upload_validation.handler=Handler must be specified -lambda.upload_validation.handler_not_found=Must be able to locate the handler in the project in order to deploy to Lambda -lambda.upload_validation.iam_role=IAM role must be specified -lambda.upload_validation.iam_role.loading=Still loading IAM role... -lambda.upload_validation.module_not_found=Failed to locate module for {0} -lambda.upload_validation.repo=Repository must be specified in order to deploy to Lambda -lambda.upload_validation.runtime=Runtime must be specified -lambda.upload_validation.source_bucket=Bucket must be specified in order to deploy to Lambda -lambda.upload_validation.source_bucket.loading=Still loading S3 bucket... -lambda.upload_validation.unsupported_runtime=Deploying using the runtime {0} is not supported -lambda.workflow.create_new.name=Create new Lambda -lambda.workflow.create_new.wait_for_stable=Waiting for function to be created -lambda.workflow.update_code.name=Update Lambda code -lambda.workflow.update_code.wait_for_stable=Waiting for function to stabilize -lambda.workflow.update_code.wait_for_updatable=Waiting for function to transition to an updatable state -loading_resource.failed=Failed loading resources -loading_resource.loading=Loading... -loading_resource.still_loading=Resources are still loading -plugin.incompatible.fix=Disable incompatible plugins and restart IDE -plugin.incompatible.message=The plugin versions for Amazon Q, AWS Toolkit, and AWS Toolkit Core must match or conflicts may occur. -plugin.incompatible.title=AWS Plugin Incompatibility -q.connection.disconnected=You don't have access to Amazon Q. Please authenticate to get started. -q.connection.expired=Your Amazon Q session has timed out. Re-authenticate to continue. -q.connection.invalid=You don't have access to Amazon Q. Please authenticate to get started. -q.connection.need_scopes=You haven't enabled Amazon Q in Jetbrains. -q.enable.text=Enable Amazon Q to begin -q.learn.more=Learn More -q.migration.notification.title=Menu moved to status bar -q.node.title=Amazon Q -q.onboarding.button.text=Ask a question -q.onboarding.codewhisperer.description=Amazon Q inline suggestions are also enabled. -q.onboarding.description=Amazon Q is your generative-AI powered assistant. -q.onboarding.title=Meet Amazon Q -q.reauthenticate=Re-authenticate to connect -q.sign.in=Get Started -q.ui.prompt.transform=/transform -q.unavailable=\ Not supported in v2023.2.0 -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 -rds.iam_help=The "RDS Host" and "RDS Port" are used to sign the request to AWS. They must match the values in the service. To use a proxy, edit the "Host" and "Port" fields. -rds.mysql=MySQL -rds.port=RDS Port: -rds.postgres=PostgreSQL -rds.url=RDS Host: -rds.validation.aurora_mysql_ssl_required=Aurora MySQL requires SSL to be enabled to connect -rds.validation.no_iam_auth=Database {0} does not have IAM authentication enabled -rds.validation.no_instance_host=No RDS database host specified -rds.validation.no_instance_port=No RDS database port specified -rds.validation.setup_guide=See the RDS guide for IAM authentication -rds.validation.username=A non-empty username is required -redshift.auth.aws=IAM Auth -redshift.cluster_id=Cluster ID: -redshift.connect_aws_credentials=Connect with IAM... -redshift.validation.cluster_does_not_exist=Cluster {0} does not exist in region {1}! -redshift.validation.invalid_credential_specified=Invalid credential profile {0} selected! -redshift.validation.invalid_region_specified=Invalid region {0} selected! -redshift.validation.no_cluster_id=No cluster ID specified! -redshift.validation.username=A non-empty username is required -resource.delete.warning_text=Deletion of the {0} may take more than a minute to be reflected -run_configuration_extension.currently_selected=Use the currently selected credential profile/region -run_configuration_extension.feature.go.description=Allow injecting AWS Credentials via Environment Variables into GoLang based Run Configurations -run_configuration_extension.feature.go.title=AWS connected GoLang Run Configurations -run_configuration_extension.feature.java.description=Allow injecting AWS Credentials via Environment Variables into some Java-based Run Configurations -run_configuration_extension.feature.java.title=AWS connected Java Run Configurations -run_configuration_extension.feature.python.description=Allow injecting AWS Credentials via Environment Variables into some Python-based Run Configurations -run_configuration_extension.feature.python.title=AWS connected Python Run Configurations -run_configuration_extension.inject_aws_connection_exception=Exception occurred attempting to inject region/credentials -run_configuration_extension.manual=Other credential profile/region -s3.bucket.label=Bucket Name/URI -s3.bucket.load.fail.title=Access denied to bucket -s3.bucket.name.label=Bucket Name: -s3.copy.bucket.action=Copy Name -s3.copy.path=Copy Path -s3.copy.uri=Copy S3 URI -s3.copy.url=Copy URL -s3.copy.url.failed=Failed to copy URL -s3.create.bucket.create=Create -s3.create.bucket.missing.bucket.name=Bucket name is required. -s3.create.bucket.title=Create S3 Bucket -s3.delete.bucket.action=Delete S3 Bucket -s3.delete.object.action=Delete... -s3.delete.object.cancel=Cancel -s3.delete.object.description=Are you sure you want to delete {0, choice, 1#this file|2#{0,number} files}? -s3.delete.object.failed=Delete object failed -s3.download.object.action=Download... -s3.download.object.browse.description.multiple=Select folder to save files to -s3.download.object.browse.description.single=Select file or folder to save file to -s3.download.object.browse.title=Select Download Location... -s3.download.object.conflict.description=File ''{0}'' already exists in directory ''{1}'' -s3.download.object.conflict.overwrite=Overwrite -s3.download.object.conflict.overwrite_rest=Overwrite All Conflicts -s3.download.object.conflict.skip=Skip -s3.download.object.conflict.skip_rest=Skip All Conflicts -s3.download.object.failed=Failed to download object {0} -s3.download.object.progress=Downloading ''{0}'' -s3.error_loading=Failed to load children -s3.last_modified=Last Modified -s3.load_more=load more... -s3.load_more_failed=Failed to load more! load more... -s3.name=Name -s3.new.folder=New Folder... -s3.new.folder.name=Folder name: -s3.object.load.fail.title=Unable to load objects - Access denied -s3.open.file_too_big=The editor cannot open files larger than {0} -s3.open.viewer.bucket.failed=Failed to open bucket -s3.open.viewer.bucket_does_not_exist=Bucket {0} does not exist. -s3.open.viewer.failed=Failed to open file in editor. -s3.open.viewer.failed.unsupported=Failed to open file in editor. Unsupported file type. -s3.open.viewer.prefix.message=Specify S3 Key prefix: -s3.open.viewer.prefix.title=Enter Key Prefix -s3.prefix.filter=Filter by prefix -s3.prefix.label=Prefix: {0} -s3.rename.object.action=Rename... -s3.rename.object.failed=Failed to rename object -s3.rename.object.title=Rename: ''{0}'' to -s3.size=Size -s3.upload.directory.impossible=Cannot upload ''{0}'' because it is a directory -s3.upload.object.action=Upload... -s3.upload.object.failed=Failed to upload object {0} -s3.upload.object.progress=Uploading ''{0}'' -s3.version.history.view=Show versions -sam.build.failed=SAM build command failed -sam.build.running=Running SAM build -sam.build.succeeded=SAM build command succeeded -sam.build.title=SAM build -sam.cli.version.upgrade.instructions=Learn more about upgrading SAM CLI -sam.cli.version.upgrade.reason=Learn more about SAM sync improvements... -sam.cli.version.upgrade.required=Your SAM CLI version is {0} and does not include performance improvements for Sync Serverless Applications. To continue, please upgrade to SAM CLI version {1} or higher. -sam.cli.version.upgrade.required.windows=If you are on SAM CLI version 1.85, 1.86 or 1.86.1, it has known issues. Please consider re-installing / upgrading the latest version. -sam.cli.version.warning=SAM CLI version -sam.debug.attach=Attach Debugger -sam.debug.attach.parent=Attempt Debugger Attachment -sam.debug.dotnet_find_pid=Find DotNet process PID -sam.debug.find_container=Find Container -sam.executable.minimum_too_low_architecture=The architecture {0} requires a minimum SAM CLI version of {1} -sam.executable.minimum_too_low_runtime=The runtime {0} requires a minimum SAM CLI version of {1} -sam.init.description=AWS Serverless Application Model (AWS SAM) prescribes rules for expressing Serverless applications on AWS. -sam.init.error.no.architecture.selected=No architecture selected -sam.init.error.no.project.basepath=Unable to determine project basepath -sam.init.error.no.runtime.selected=No runtime selected -sam.init.error.no.solution.basepath=Unable to determine solution basepath -sam.init.error.no.template.selected=No template selected -sam.init.error.no.virtual.file=Unable to resolve location -sam.init.error.solution.create.fail=Unable to create solution -sam.init.error.subfolder_not_one=The SAM init root folder ''{0}'' should have only one sub folder. -sam.init.execution_error=Could not execute `sam init`! -sam.init.generating.schema=Generating Schema -sam.init.generating.template=Generating SAM template -sam.init.go.sdk=Go SDK: -sam.init.name=AWS Serverless Application -sam.init.node_interpreter.label=Node interpreter: -sam.init.packaging=Package Type: -sam.init.packaging.image=Image -sam.init.packaging.image.description=Artifact is an image uploaded to a ECR image repository -sam.init.packaging.zip=Zip -sam.init.packaging.zip.description=Artifact is a zip file uploaded to S3 -sam.init.sam_template.tooltip=The name of the AWS Serverless Application Model (AWS SAM) template to use. -sam.init.schema.aws_credentials_select=Select AWS Credentials -sam.init.schema.aws_credentials_select_region=Select AWS Region -sam.init.schema.label=Event Schema: -sam.init.schema.pleaseSelect=Choose the EventBridge serverless event schema -sam.init.schema.registry.name=Registry: {0} -sam.init.sdk.error=Check SDK settings -sam.init.sdk.label=SDK: -sam.init.sdk.runtime.not.selected=No runtime selected -sam.init.select_sam_template=SAM Template: -sam.init.template.dynamodb_cookiecutter.description=Sample SAM Template to interact with DynamoDB Events -sam.init.template.dynamodb_cookiecutter.name=AWS SAM DynamoDB Event Example -sam.init.template.event_bridge_hello_world.description=A Hello World app for Amazon EventBridge that invokes a Lambda for every EC2 instance state change in your account -sam.init.template.event_bridge_hello_world.name=AWS SAM EventBridge Hello World -sam.init.template.event_bridge_hello_world_gradle.name=AWS SAM EventBridge Hello World (Gradle) -sam.init.template.event_bridge_hello_world_maven.name=AWS SAM EventBridge Hello World (Maven) -sam.init.template.event_bridge_starter_app.description=A Starter app for Amazon EventBridge that invokes a Lambda based on a dynamic event trigger for an EventBridge Schema of your choice -sam.init.template.event_bridge_starter_app.name=AWS SAM EventBridge App from Scratch (for an Event schema) -sam.init.template.event_bridge_starter_app_gradle.name=AWS SAM EventBridge App from Scratch (for an Event schema) (Gradle) -sam.init.template.event_bridge_starter_app_maven.name=AWS SAM EventBridge App from Scratch (for an Event schema) (Maven) -sam.init.template.hello_world.description=A basic SAM app -sam.init.template.hello_world.name=AWS SAM Hello World -sam.init.template.hello_world_gradle.name=AWS SAM Hello World (Gradle) -sam.init.template.hello_world_maven.name=AWS SAM Hello World (Maven) -sam.init.template.hello_world_typescript.description=A sample app using TypeScript -sam.init.template.hello_world_typescript.name=AWS SAM TypeScript Hello World -schemas.schema.could_not_open=Could not fetch and display schema {0} contents -schemas.schema.download_code_bindings.action=Download Code Bindings -schemas.schema.download_code_bindings.download=Download -schemas.schema.download_code_bindings.failed_to_download=Unable to download schema code -schemas.schema.download_code_bindings.failed_to_extract=Unable to place schema code in workspace -schemas.schema.download_code_bindings.failed_to_extract_collision=Unable to place schema code in workspace because there is already a file {0} in the folder hierarchy -schemas.schema.download_code_bindings.failed_to_generate=Unable to generate schema code -schemas.schema.download_code_bindings.failed_to_poll=Unable to poll for generated schema code -schemas.schema.download_code_bindings.heading=Download code bindings for schema {0} in registry {1} -schemas.schema.download_code_bindings.language.label=Language: -schemas.schema.download_code_bindings.language.tooltip=The programming language of the Schema to download generated code bindings for -schemas.schema.download_code_bindings.latest= -schemas.schema.download_code_bindings.location.label=File Location: -schemas.schema.download_code_bindings.location.tooltip=Location for the generated Event schema code binding files to be placed into -schemas.schema.download_code_bindings.notification.downloading={0}: Downloading code... -schemas.schema.download_code_bindings.notification.extracting={0}: Extracting/copying code... -schemas.schema.download_code_bindings.notification.finished=Downloaded code for schema {0}! -schemas.schema.download_code_bindings.notification.generating={0}: Generating code (this may take a few seconds the first time)... -schemas.schema.download_code_bindings.notification.start=Downloading code for schema {0}... -schemas.schema.download_code_bindings.title=Download Code Bindings -schemas.schema.download_code_bindings.validation.fileLocation_invalid=Invalid code folder location -schemas.schema.download_code_bindings.validation.fileLocation_required=Schema code folder location must be specified -schemas.schema.download_code_bindings.validation.language_required=Schema code language must be specified -schemas.schema.download_code_bindings.validation.version_required=Schema version must be specified -schemas.schema.download_code_bindings.version.label=Version: -schemas.schema.download_code_bindings.version.tooltip=The version of the Schema to download generated code bindings for -schemas.schema.language.go1=Go 1+ -schemas.schema.language.java8=Java 8+ -schemas.schema.language.python3_6=Python 3.6+ -schemas.schema.language.typescript=Typescript 3+ -schemas.schema.view.action=View Schema -schemas.search.download.label=Download code for selected schema -schemas.search.error=Unable to search registry {0} -schemas.search.error.registry={0} ({1}) -schemas.search.header.text.allRegistries=Search across all registries -schemas.search.header.text.singleRegistry=Search "{0}" registry -schemas.search.no_results=No schemas found -schemas.search.searching=Searching for schemas... -schemas.search.title=EventBridge Schemas Search -schemas.search.version.prefix=Search matched version: {0} -schemas.service_name=Amazon EventBridge Schemas -serverless.application.deploy=Deploy Serverless Application -serverless.application.deploy.abort=Process aborted -serverless.application.deploy.action.description=Deploy Serverless Application -serverless.application.deploy.action.name=Deploy -serverless.application.deploy.button.bucket.create=Create -serverless.application.deploy.change_set=Change set ARN: -serverless.application.deploy.change_set.title=Deploy The Change Set? -serverless.application.deploy.change_set_not_found=Failed to locate change set ARN -serverless.application.deploy.error.bad_parse=Error parsing SAM template {0}\n\n {1} -serverless.application.deploy.error.no_resources=Cannot find any resources in SAM template {0} -serverless.application.deploy.error.unsupported_runtime_group=The runtime {0} is not supported for deploying the SAM template {1} -serverless.application.deploy.execute_change_set=Continue Deployment -serverless.application.deploy.execution_failed=SAM did not complete successfully -serverless.application.deploy.label.bucket=S3 Bucket: -serverless.application.deploy.label.repo=ECR Repository: -serverless.application.deploy.label.stack.new=Create Stack: -serverless.application.deploy.label.stack.select=Update Stack: -serverless.application.deploy.review_required=Require confirmation before deploying -serverless.application.deploy.step_name.build=Build -serverless.application.deploy.step_name.create_change_set=Create Change Set -serverless.application.deploy.step_name.package=Package -serverless.application.deploy.template.parameters=Template Parameters -serverless.application.deploy.title=Deploy Serverless Application -serverless.application.deploy.toast.template_file_failure=Could not detect template file -serverless.application.deploy.tooltip.createStack=The name of the AWS CloudFormation stack that is created when deploying this serverless application. -serverless.application.deploy.tooltip.deploymentConfirmation=Instructs AWS CloudFormation to wait for you to finish creating or updating the corresponding stack by executing the stack's current change set in AWS CloudFormation. -serverless.application.deploy.tooltip.ecrRepo=An Amazon Elastic Container Registry Repository in the same AWS Region to deploy the Lambda images to. -serverless.application.deploy.tooltip.s3Bucket=An Amazon S3 bucket in the same AWS Region to deploy this serverless application. -serverless.application.deploy.tooltip.template.parameters=The parameters that the AWS Toolkit detected in the project's AWS SAM template file for this serverless application. -serverless.application.deploy.tooltip.updateStack=The name of the existing AWS CloudFormation stack that is used when deploying this serverless application. -serverless.application.deploy.use_container=Build function inside a container -serverless.application.deploy.validation.ecr.repo.empty=Select an ECR Repository -serverless.application.deploy.validation.ecr.repo.loading=Still loading the list of ECR Repos... -serverless.application.deploy.validation.new.stack.name.duplicate=New stack name must be different than the existing stack name(s) -serverless.application.deploy.validation.new.stack.name.invalid=A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character. -serverless.application.deploy.validation.new.stack.name.missing=Enter the name of your new Stack -serverless.application.deploy.validation.new.stack.name.too.long=Stack names must not exceed {0} characters in length -serverless.application.deploy.validation.s3.bucket.empty=Select an S3 Bucket -serverless.application.deploy.validation.s3.bucket.loading=Still loading the list of S3 buckets... -serverless.application.deploy.validation.stack.loading=Still loading CloudFormation stacks... -serverless.application.deploy.validation.stack.missing=Specify a Stack to deploy to -serverless.application.deploy.validation.template.values.badRegex=AllowedPattern for {0} is not valid: {1} -serverless.application.deploy.validation.template.values.failsRegex=Template value for {0} does not match AllowedPattern defined in template: {1} -serverless.application.deploy.validation.template.values.notANumber=Template value for {0} is not a number: {1} -serverless.application.deploy.validation.template.values.tooBig=Template value for {0} is larger than MaxValue defined in template: {1} -serverless.application.deploy.validation.template.values.tooLong=Template value for {0} exceeds MaxLength defined in template: {1} -serverless.application.deploy.validation.template.values.tooShort=Template value for {0} does not meet MinLength defined in template: {1} -serverless.application.deploy.validation.template.values.tooSmall=Template value for {0} is smaller than MinValue defined in template: {1} -serverless.application.deploy_in_progress.title=Deploying Application {0} -serverless.application.sync=Sync Serverless Application (formerly Deploy) -serverless.application.sync.action.description=Sync Serverless Application with cloud -serverless.application.sync.action.name=Sync -serverless.application.sync.code=Sync Serverless Application (code only) -serverless.application.sync.confirm.dev.stack.title=Confirm development stack -serverless.application.sync.dev.mode.warning.text=The SAM CLI will use the AWS Lambda, Amazon API Gateway, and AWS StepFunctions APIs to upload your code without
performing a CloudFormation deployment. This will cause drift in your CloudFormation stack.

The sync command should only be used against a development stack.

Confirm that you are synchronizing a development stack.

-serverless.application.sync.error.bad_parse=Error parsing SAM template {0}\n\n {1} -serverless.application.sync.error.no_resources=Cannot find any resources in SAM template {0} -serverless.application.sync.error.unsupported_runtime_group=The runtime {0} is not supported for syncing the SAM template {1} -serverless.application.sync.execution_failed=SAM sync did not complete successfully -serverless.application.sync.fetch.stacks.progress.bar=Fetching stacks -serverless.application.sync.label.bucket=S3 Bucket: -serverless.application.sync.label.repo=ECR Repository: -serverless.application.sync.label.stack.new=Create Stack: -serverless.application.sync.label.stack.select=Update Stack: -serverless.application.sync.template.parameters=Template Parameters -serverless.application.sync.toast.template_file_failure=Could not detect template file -serverless.application.sync.tooltip.createStack=The name of the AWS CloudFormation stack that is created when syncing this Serverless application. -serverless.application.sync.tooltip.ecrRepo=An Amazon Elastic Container Registry Repository in the same AWS Region to deploy the Lambda images to. -serverless.application.sync.tooltip.s3Bucket=An Amazon S3 bucket in the same AWS Region to sync this serverless application. -serverless.application.sync.tooltip.template.parameters=The parameters that the AWS Toolkit detected in the project's AWS SAM template file for this Serverless application. -serverless.application.sync.tooltip.updateStack=The name of the existing AWS CloudFormation stack that is used when syncing this Serverless application. -serverless.application.sync.use_container=Build function inside a container -serverless.application.sync.validation.ecr.repo.empty=Select an ECR Repository -serverless.application.sync.validation.ecr.repo.loading=Still loading the list of ECR Repos... -serverless.application.sync.validation.new.stack.name.duplicate=New stack name must be different than the existing stack name(s) -serverless.application.sync.validation.new.stack.name.invalid=A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character. -serverless.application.sync.validation.new.stack.name.missing=Enter the name of your new Stack -serverless.application.sync.validation.new.stack.name.too.long=Stack names must not exceed {0} characters in length -serverless.application.sync.validation.s3.bucket.empty=Select an S3 Bucket -serverless.application.sync.validation.s3.bucket.loading=Still loading the list of S3 buckets... -serverless.application.sync.validation.stack.loading=Still loading CloudFormation stacks... -serverless.application.sync.validation.stack.missing=Specify a Stack to sync to -session_manager_plugin_installation_warning=ECS Exec makes use of AWS Systems Manager (SSM) Session Manager to establish a connection with the running container.
Please Install the Session Manager Plugin before proceeding! -session_manager_plugin_installation_warning_title=Install Session Manager Plugin -settings.credentials=IAM Credentials (Locally Configured) -settings.credentials.get_started=Connect to AWS to get started -settings.credentials.iam=IAM Credentials -settings.credentials.iam.add=Add IAM credentials to view resources -settings.credentials.iam.none_selected=No IAM credentials linked -settings.credentials.iam.select=Select from list above to view resources -settings.credentials.iam_and_regions=IAM Credentials & Regions -settings.credentials.individual_identity_sub_menu=Individual Identity -settings.credentials.none_selected=No credentials selected -settings.credentials.profile_sub_menu=All Local Credentials -settings.credentials.prompt_for_default_region_switch=Change region to default region: {0}? -settings.credentials.prompt_for_default_region_switch.always=Always -settings.credentials.prompt_for_default_region_switch.always.description=Always select default region when a credential is selected -settings.credentials.prompt_for_default_region_switch.ask.description=Ask before changing regions when a credential is selected -settings.credentials.prompt_for_default_region_switch.never=Never -settings.credentials.prompt_for_default_region_switch.never.description=Never change region when a credential is selected -settings.credentials.prompt_for_default_region_switch.setting_label=Default region handling: -settings.credentials.prompt_for_default_region_switch.yes=Yes -settings.credentials.recent=Recent IAM Credentials (Locally Configured) -settings.never_show_again=Never Show Again -settings.none_selected=No region or credentials selected -settings.partitions=Other Partitions -settings.profiles.always=Always show when profiles are loaded -settings.profiles.label=AWS profiles notification: -settings.profiles.never=Never show -settings.profiles.on_failure=Show when one or more profiles fail to load -settings.refresh.description=Refresh AWS Connection -settings.regions.none_selected=No region selected -settings.regions.recent=Recent Regions -settings.regions.region_sub_menu=All Regions -settings.retry=Retry -settings.states.initializing=Toolkit initializing... -settings.states.invalid=Unable to connect to AWS:\n{0} -settings.states.invalid.short=Unable to connect -settings.states.validating=Validating connection to AWS... -settings.states.validating.short=Validating connection -settings.statusbar.widget.connections.n={0} Connections -settings.statusbar.widget.expired.1={0} Expired -settings.statusbar.widget.expired.n={0} Connections Expired -settings.statusbar.widget.format=AWS: {0} -settings.title=AWS Connection Settings -sqs.configure.lambda=Configure Lambda Trigger... -sqs.configure.lambda.configure.tooltip=It may take a few seconds to configure. -sqs.configure.lambda.error=Failed to add trigger for function {0}. Try again later. -sqs.configure.lambda.function=Lambda Function: -sqs.configure.lambda.in_progress=Configuring... -sqs.configure.lambda.select=Select Lambda Function: -sqs.configure.lambda.success=Trigger successfully added to function {0} -sqs.configure.lambda.tooltip=

Configure the queue to trigger an AWS Lambda function when new messages arrive in the queue.

The queue and Lambda function must be in the same AWS Region.

-sqs.configure.lambda.validation.function=Lambda function must be specified. -sqs.confirm.iam=Create IAM Role -sqs.confirm.iam.create=Add Policy -sqs.confirm.iam.failed=Failed to create and attach role policy. -sqs.confirm.iam.in_progress=Creating... -sqs.confirm.iam.warning.sqs_queue_permissions=The selected Queue does not have permission to receive messages from the selected SNS Topic.

The following policy statement will be added to the queue policy:

-sqs.confirm.iam.warning.text=The selected Lambda function does not have permission to access SQS.

The following IAM role policy will be added to the function's execution role:

-sqs.copy.message=Copy {0, choice, 1#message|2#{0,number} messages} -sqs.create.fifo.label=FIFO -sqs.create.queue=Create Queue... -sqs.create.queue.create=Create -sqs.create.queue.failed=Failed to create queue {0} -sqs.create.queue.name.label=Queue Name: -sqs.create.queue.title=Create Queue -sqs.create.queue.tooltip=It may take up to 60 seconds for the queue to be visible in the AWS Explorer. -sqs.create.queue.type.label=Queue Type: -sqs.create.standard.label=Standard -sqs.create.validation.empty.queue.name=Queue name must be specified. -sqs.create.validation.long.queue.name=Queue name must not exceed {0} characters in length. -sqs.create.validation.queue.name.invalid=Queue names can only contain alphanumeric characters, hyphens (-), and underscores (_). -sqs.delete.message.action=Delete {0, choice, 1#message|2#{0,number} messages} -sqs.delete.message.failed=Failed to delete {0, choice, 1#message|2#{0,number} messages}. -sqs.delete.message.partial_successs=Failed to delete some messages! {0, choice, 1#message|2#{0,number} messages} were deleted. -sqs.delete.message.succeeded=Successfully deleted {0, choice, 1#1 message|2#{0,number} messages}. -sqs.delete.queue.action=Delete Queue... -sqs.edit.attributes=Edit Queue Parameters -sqs.edit.attributes.action=Edit Queue Parameters... -sqs.edit.attributes.delivery_delay=Delivery Delay (seconds): -sqs.edit.attributes.delivery_delay.tooltip=The amount of time to delay the first delivery of each message. -sqs.edit.attributes.failed=Failed to get queue parameters for queue {0} -sqs.edit.attributes.message_size=Maximum Message Size (bytes): -sqs.edit.attributes.message_size.tooltip=How many bytes a message can contain before it is rejected. Must be between {0} and {1} bytes. -sqs.edit.attributes.queue.attributes=Queue Parameters -sqs.edit.attributes.retention_period=Message Retention Period (seconds): -sqs.edit.attributes.retention_period.tooltip=The amount of time that a message is retained in the queue. Must be between {0} and {1} seconds. -sqs.edit.attributes.retrieving_from_service=Retrieving queue parameters from SQS -sqs.edit.attributes.save=Save -sqs.edit.attributes.updated=Updated queue parameters for {0}. -sqs.edit.attributes.visibility_timeout=Visibility Timeout (seconds): -sqs.edit.attributes.visibility_timeout.tooltip=The length of time that a received message will not be visible to other message consumers. -sqs.edit.attributes.wait_time=Receive Message Wait Time (seconds): -sqs.edit.attributes.wait_time.tooltip=The amount of time that polling will wait for messages to become available. -sqs.failed_to_load_total=Failed to load number of messages available -sqs.failed_to_poll_messages=Failed to view messages -sqs.failed_to_send_message=Failed to send message -sqs.fifo.queue.tooltip=Supports first-in-first-out delivery and message ordering is preserved. -sqs.message.deduplication_id.tooltip=

Used for deduplication of sent messages.

If a message with a particular message deduplication ID is sent successfully, any messages sent with the same message deduplication ID are accepted successfully but aren't delivered during the 5-minute deduplication interval.

-sqs.message.group_id.tooltip=

Specifies that a message belongs to a specific message group.

Messages that belong to the same message group are always processed in a strict order relative to the message group.

-sqs.message.message_body=Message Body -sqs.message.message_id=Message ID -sqs.message.no_messages=No messages retrieved -sqs.message.sender_id=Sender ID -sqs.message.timestamp=Sent Timestamp -sqs.message.validation.empty.deduplication_id=Enter a deduplication ID. -sqs.message.validation.empty.group_id=Enter a group ID. -sqs.message.validation.empty.message.body=Enter a message body -sqs.message.validation.long.id=ID exceeds the maximum length of 128 characters. -sqs.message_table_initial_text=Press "{0}" to load messages -sqs.messages.available.text={0, choice, 0#No messages|1#1 message|2#{0,number} messages} available -sqs.poll.message=View Messages -sqs.poll.warning.text=

Messages are returned to the queue immediately upon viewing.

-sqs.purge_queue=Purge Queue -sqs.purge_queue.action=Purge Queue... -sqs.purge_queue.confirm=Are you sure you want to purge queue {0} (approximately {1, choice, 1#1 message|2#{1,number} messages})? -sqs.purge_queue.confirm.title=Purge Queue? -sqs.purge_queue.failed=Failed to purge queue {0} -sqs.purge_queue.failed.60_seconds=Purge queue request already in progress for queue {0} -sqs.purge_queue.succeeded=Started purging queue {0} -sqs.queue.name.tooltip=

A queue name is case-sensitive and can have up to 80 characters of alphanumeric characters, hyphens (-), and underscores ( _ ).

If FIFO is selected, '.fifo' will be appended to the specified name.

-sqs.queue.polled.messages=Polled Messages -sqs.required.empty.text=(Required) -sqs.send.message=Send a Message -sqs.send.message.body.empty.text=Enter message body -sqs.send.message.clear.button=Clear -sqs.send.message.deduplication_id=Deduplication ID: -sqs.send.message.group_id=Group ID: -sqs.send.message.send.button=Send -sqs.send.message.success=Sent message ID: {0} -sqs.service_name=Amazon SQS -sqs.standard.queue.tooltip=Supports at-least-once delivery and message ordering is not preserved. -sqs.subscribe.sns=Subscribe to SNS topic... -sqs.subscribe.sns.failed=Failed to subscribe {0} to {1} -sqs.subscribe.sns.in_progress=Subscribing... -sqs.subscribe.sns.select=Select SNS topic -sqs.subscribe.sns.select.tooltip=Messages from the selected topic are sent to the queue. -sqs.subscribe.sns.subscribe=Subscribe -sqs.subscribe.sns.success=Subscribed successfully to topic {0}. -sqs.subscribe.sns.topic=SNS topic: -sqs.subscribe.sns.validation.empty_topic=Topic must be specified. -sqs.toolwindow=SQS -sqs.url.parse_error=Error parsing SQS queue URL -tags.title=Tags -toolkit.login.aws_builder_id.already_connected.cancel=Use existing AWS Builder ID -toolkit.login.aws_builder_id.already_connected.message=You already signed in with an AWS Builder ID.\nSign out to add another? -toolkit.login.aws_builder_id.already_connected.reconnect=Sign out -toolkit.login.aws_builder_id.already_connected.title=Sign out of current AWS Builder ID? -toolkit.login.dialog.aws_builder_id.comment=AWS Builder ID is a new personal profile for builders. Learn More -toolkit.login.dialog.aws_builder_id.title=Use a personal email to sign up and sign in with AWS Builder ID -toolkit.login.dialog.connect_button=Connect -toolkit.login.dialog.connect_inprogress=Waiting to Authenticate... -toolkit.login.dialog.iam.comment=Edit AWS credentials file(s) -toolkit.login.dialog.iam.text_field.access_key_id=Access Key ID: -toolkit.login.dialog.iam.text_field.secret_access_key=Secret Access Key: -toolkit.login.dialog.iam.title=Use IAM Credentials -toolkit.login.dialog.label=Select a connection option -toolkit.login.dialog.sso.comment=Sign in to your company's IAM Identity Center access portal login page. -toolkit.login.dialog.sso.text_field.region=Region: -toolkit.login.dialog.sso.text_field.start_url=Start URL: -toolkit.login.dialog.sso.title=Connect using AWS IAM Identity Center -toolkit.login.dialog.title=AWS Toolkit: Add Connection -toolkit.sso_expire.dialog.cancel_button=Cancel -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.aws.codewhisperer.codereference=Code Reference Log -toolwindow.stripe.aws.codewhisperer.codetransform=Transformation Hub diff --git a/plugins/toolkit/jetbrains-core/resources/codewhisperer/codescan.png b/plugins/toolkit/jetbrains-core/resources/codewhisperer/codescan.png deleted file mode 100644 index 848f28cec0d08f6ea9c804548719b1538c37f2fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14873 zcmc(GRa{i@_pK;`ASK-)rGRv&fJlc(cXxLU2qIn5jkH5|cXz`ejnt4sciaR1fB&cZ zaR2u{-1ESPfiow*vG>|*tsSf&Cyt6ti2Ur?GgL{5Pm0f;yO-OVKmyeWQ2_99hAZ2X_n42cxG8vG(ModH(BKyx<-+>ye-AqW`|R%2U)>jLXdv z7WVZ21;6gU3%QO4_y$iO`#x~{!qflz=E5sclsAt@Jx&1r;|<iv(xW1}%$MRm%GP8(-eyCvmSq_20evlf=I07*le6sU~+pX6B&l zYY%Lk1U)meSMt&ddgL`Wf5JezWFO__(bEHSaz4q#^mf`9FMbvkeUaX^qfGxrQ!{X$ zhll*}Wj%;Ti!rf?vHip99mi*u1h1h7J3aENySuN+$ZTbtkdBUm!ot`gJ9gY<3~X3T z`*TPs``e2y^78Wj{_vd^An&-u`xZe*S*hKYPtJQw83M8jNm^yKv;!wo*^2ajYa#Q`b zM2f&`w0x}k`m4Sc5Rshw{lr1q?~<0#saS$zcUrl$E8GhUOX^#-a&pQSU~oTvEb@50 zBc6=rY0HqT{P$^tAFZuIg3C7>P#%keCAP@AI&PUH;>cZyZ8BZdw1IF>le@!xl8M{= zeyY|&Q=G9N8;5>~(qCK&u@N#34p;lnEws&BhTE>3KHdmTP5iRmJ00E9dHYW*)=&V# z!@`+D5{kz}3^H@hlkSkTw4~>>T{7c^QXK1mv`Lzpo6A4)R?YPbI$gd(xJE29oUefm z-_4d=7y8HQ@7-LJA1pQoa_RWsxHOUoE2fP_xZ8h0D$#C@NUBtnrG`#{*|dj5)J8bixD@sl&u^)ktbbb0tUBGG6SH3!bRQc#FwHTu zQR8H0W^T@HNzTvl@nVn(5frL0B#^rz_sXYt#mlD11mV-Gi?mhbCeiGfCu&l|nfIKU zo2017{H2v=UH!dzpxtymKRgfSR<|D(~ToO&ign}PyMD!Wur z(Qe9zRr7H_lvI9a!rq7s_ElElj!=Z5v*V_+->-DNu5kR;HB^hWj@nE?US4J1cNz;( zW#@nJJm0+2r{(8Ic^XS}&k~ByC*pPrhtST+$XFkMq(sZ?QtM_seh;^`gU1+sv z#)tXjQIQqNLDirbceI=x%d~ZAL^LqS8amRT(%J!;TUmJ& zSxW!pjE|2?p$o4OexW%r1y-~V;hbg$EiNtTix_8VbT{OqtR|`@ zy=i(JuTul}lFoi7k(+VD-qs6mUEPeN!&3D8Nfwh(tj>tlpQBQ=TB3t$C6E#d@$VP3 zLyZ<3*DaPQBg^>FBOX4>5+8Y8@1N6A5u0_3j;^|)b;h&Hm_aAXa>J)w(9lqlIpY#k zll7hEmQokAz-9~|8S(YE;|C@2O(OOK(w3(==vGG7O3Ps+FTvgr))e>#4 z6GJVZOvtJZZ!Kv2p7B__N+Nf+L`l|3|Jy_bYixW1#amX9gF*Sh8XO!P3AuC|m8?n59IDZe z#>zMcONC+zdQsqWs0chSOso~X*&9z+myBU}DArIZIc}!PAqOtzG4(<9fgF+@_pN0~ zr>Vje0`=tG*5v!cmQx8j?LuPbswF=~|Ep=4`I<-0s3aTQR$F^#-V1*6xF01fg&EsrRlmM{yuEjYB})0DS?}!aMUPaH z0SSS$;F$o)oE!<=W`jwyU@<3@81HQOr=eP{3kRo-nrXnuwgNAtd0=?3cgi3BtM!)# zjE`0_C`;})5E>}7jD^GmZv|#MSDNuY))F}(;$gnkV-mh;VuJPSqJ4Gu{5+y<>semX z>uemBW_b@?C$o7z+lK+A?21a;lr?kc_TJ8Q`>vw|A1^Q8=hjfoWA);d+fF{)6xjC8 z8PPlXQf6x&=S>uq619k7BCbTs38}<`$@zIoKl|Ta{f0_P4)k9HTI( zMIC*=`6Mnz@$Q}7X?1BNlYxN&shPBu6~pb_-B1lM=3(>cN$=mg8IMX=M4~^wSrByF zbCZGwh^esKO)kvOnCa_=hd(h6&r6rOc1xSWPOJU^Ns#`28~x#1&>`&u2p9F8WN@%h z-RNJj*X1r}JL8ZfY24L|*1K>dCORrAeB0)Gy5}#RQ#HAfTc0zWz&e4oFut@D(N4j5 zCH)i;8Te1gT=DVo+uBy1)!5Dld=Es+%*y&(E|^g7_Qr~n=)PC?9`!?U@#fV*8ef^m zw3OG;h9GyE+~xI^fua>L@o`gL10m?{E;|GLHLBPrBY46cq88V^XFfh(jaf1Z!NS09 zlo}i;x4+W>K;&$ZN+rn64PR0+_#Fd-h@BlXZ)3yQ%#5Ih@Az6*PnUt69mcdnDg_cF zp`OFZ@vviVTuOfoO}6fw%f*twNvU!K8GWy4*1-!59Gu{?GUh1=B)h)8dw~d5Q&5qGkdQQX1<&_y zG^V4#Qz|_;ND9P9eRXr;6JD%Yt2fyb&h4=`YxpuL2@I~Y-;GCNmf~B{lj5&)XXY-3DwO zophRy*tmFWedB9Eq2b*HarB1=H)P~Wez9mD3Jbsitrkm9nofZW{~&J5WzzI*Kg|tljYv~gjZU{NP!&F9BO5Hf}6v# z;-aFIDvX)|DeCHV4rj^!rBp?ljUMZyeLMqHhyUt|ai(_1tEBz(bW*KWmlu34R=v^P zp|WR&Q1JlG?OSZsmmOk!>%|wM!y!0>W3yBKrRQYKrL{Io{u_g=<*+v4E7v3?m4U1Z zBnso0HG`ii8R&tA>w!3D&AVK-Sy>gxm8QcTBm0{6dzbx)bA0BC#Hq)v-ve8H7fr+s zMEt-Nb%GfnKD=5-ha5sI-`Zu5*GDn5(seuSw_)y=gSrniamk!)cxIgq)xQf02m}tw z*Jy{TZ*H!VLgG~N=;-KKK-W%I3A^E*LW2PS`{c3xr)#TJ~H7P#4*!T(^ zoePJ!IQH`DD*1|2YHP2m)-{nrEjQOVC^93gy`4fyMLDyiWCT8KHqq>Brn${MBMOQX zbUH z5R-FGd=6LId(oJ82I4FwGGa_rP$w<=r~Kc$nQzItlj_k?tJm5Zw%?+3Nsa{vM||#S zs(%;XmPz84_E2uNDsplkd+8=4Eydb9RUmo3Pdp@>xq>YRmDzh?XNMC$tBo+6$km2># zXu^)ZCn@K!x8~hRwqJZ&E+OMss7*35Uo@lQfP)U2? zc+eq+rPLzeibfy*p_6fYjEjTwE#J*KRH3w~$;&?ger;p1ak$I-PRm=^_fMX3)UBUL zRc&o%emEYoyJ~#K)dVw*sGeR`5g+*9$-e+Zufr??4Khn+TrI&0+@cM z{EURNEw>gzDy15}Ns8OsFtWD#lda+7k>+Lrli8%gfu|6CDy^^HViAsol~`NL)s%~z zNpf;}B3$!KBgJ`8yW#OIS_EGiq1k4b6jqCJ z=X8_m@wbF(G?7ENgBeyl- zizeP>lO*v5=VwR08Lh3iTw|}EAWpgLCC1wBZXoI|B!$eW$!!}mIYqO~ZdC-x$-kPL z*UCkProdmz&4hcPmUq7WmJk~Wa*K{p$?sh|ar7&ztG;Wr^5Hk0oNK|s!JO7)gtz8G zM%zs7cEicai2zviz4wldjT^kHi%1v0br~6L@9ibZ%+#-Qg{9Xsh2nnrbbPvf3G=zy zHC(2Be4cA#4~l@8mk5`X!Ua6t-MR1HzyFbtkGJHp<~*77!1Kf3pWJXs3kVOCK=vya z#KOi8g6Mb?0G03Mdv@l1cXO^=FOdD_d}W=-9nI!Ydid1|o6PUzcbHgMN5=$dmdkm)fR`*pm{8BPwKN&+92{rQ=e z61uR!uU4#5q+X2)Y_IXD1uME2g9(gcKu}<3=S)_p`pA1PC@A>5prq&OH69C4sOysH zg0Vle#a>F9SzEKgYHO;)=ktIx{6$^axne zXJ%CV;Sp0PJVSE^rpN#I^0^`pa~6NA>Oar=i|OX+N$GfG0AA?=I4G26kieLXz2-r1 zKsa?Mo}^~p%E6-N@4`}XfXiaksxvw;wy;1p83fe~NHR*_48St@*x9F)vH|S6E;zGt z97li5|Lip@D+al*_3oxD_XmCYw+zHA2#! z-K-kJu$JFKD!*2<{R<*UaiWv<8e>mM0iQ|n; z49Z%`xNJ=Nk64+%K95D{2KILQ;Na`PNK&>7h53J&ck2hZ%ZyfqZ-0&;gF+d7A0N`E zd*9g5cw`F$>G4jvG@@#2r@e|tZbKjc_6xljJ62ig@8I3d@GZ8szuxh>B)9k9SoknT zY;5dga%^1OfaK(4#E3T}IKcp+G{wRGaV-EL?RVd+uj=lxaNAP}aq)&`8&L$f5Xv;r ze%r1oqi($g-J9##X2(Ww9Xta3Tg8!VCw!IMs_N$KP9^<#rr|D!?LEtvIr;f`x@6qn z26mFg)A>F=|7>9JT&}Mg2Nx$(?ZD7qiCs&PN-Y&&P3kcNlmI$lA(Z>8yQFNAFTfut zK^8dX4;Bl>q@+TwRAJe2b7b)@WP%P;UQCoXQ~D-S1>k3>0!qrsl)mMk=!79uGTYAE zEHlOG;kKh`T=SMWm`-Qc5;&IUdr2n0(`!Uqb+s`>UL>mMSMfe2frG6dNGx+;`JhOy zQD^SiaR5WY`xNs-b8l2_OE ztpi+!Wn?*TW~Qh6AAEdB#Vsrfk`gLac?J<2V48F!P0Em#`uEW4wsaa^Ob%xjd5BIx#pX=-^i1PHS2HiNMsE{9M zVv0b;2HoCo$J6yT#zh=+r{lHSZp*YCqt%D*RPQPlzvG-H(}pW*xo_VY=u@Zwo3uKB zBiO*_JFr6H&TskKNmxRPvBmx0R zV7Xm1P?mYTo`pA-2{uA<8x=pJ^2uMk4^$-`XM%r(DOU|5R3a5?ecc$C?_ayNd2c$D zLaSWlp6AEG%>0y;9mtqug50r-X`nk=gYhQG!OPy>_nRP+4kge9ql#oNuUY{PucUV1 z+xH~VdG!7pc-V;%%_@$MGj`$Voy^U~Qu41Mr1NVjeJ#b*KVYbAst;n&%2(iB5Aw?UEa+CZ~1u zx2f;!U_B81&FvU$(QI>)hgqX|{6^4NstLS_a^GcK@Tl}aw+ut&6R%BW^mtLMOm<{W zw6@|Budw^yV{&@QigWGWhZqVOsoiTV&&^oyUZGFMRk2H$1@h6~a9U8+LA}$`wDUq% z?RaI(#&PNn2I`$t5PY-#8o&c!KJbgV7&Wb{5o3@Fl}66}2r9-@>M6Aog{M_8Ido}M@3gOR@y2{EwyudPM)1T-u2x&s3rSz)Rb3-PAIKf>| z7gRpNuoA6C6O|ngY=LEK^TGh6w8^Zv=upf6hm(_Gm*NI!8QYzHe@BOiqX1!9RrChE za()VzZPIkNO+N_o@>$h&=FMf_MNVPEb`!QhE2GOVNB`3nv)|)4xfh=b`5K_U-jN=| zKYoar9Kma=@4LvMRjdnI5;=EQg$&Rkk;zp?tJ%tzUZFX^`-OmaXLFkB(d4)_Iw3K+G24;W9EJlISEhs#g1qWZ7qPRZS*y%@ER~I-aB7}9Cq?mOv z#scfHh#jBo`Hup+@#D5!`Vm{cbuC)cMqgwl=A~*P%7X` z$$d1Rg39|IyjEXiWuy%E|D}4o=O-=-ks&qL;HX699lItzVU3lGMa^-=;5y$;$u!;C#5-^B?yhg5hVJ)!U4g`@F92J5ZF#m4uqwp7Witb7rtJROw5 zkM!N4xVqX|-YL~wQu2|m21rC^Zf^g*`C9vfj+gbeoli(D`Q3sEZY4(_LWVNjp$3C8 zK`X6gO>IKLcA}5xd6WCp%*@|70VWDYPF&p3moANqx4Q4ZvDN*w054r{pVz_SE=3t}AFhPframy7lbIQbCcb zk_7nppCrw}?m8MO0rifPZ-|J#Z^q;9EwrHGF=>l94{N)5c>K-P=CePzeaX(wzH-s( ziCFJ`m6(+LJjFkbh^x|W|N0CuVt;Mzg^!OAc0z1cIk=x+@NVxlcdwOhr3E!+o=iKy zzB*97(`t5ERPwDtC4!U&*4E-7AR^?Ds46HZ`MW!A864+u1JdU=o}P&zY8t9X)o?K3 z1KVh4r--ccHuMM!V1|j%hTEuDc6QPo{C zED@gH&7zPG%*DY=2-E2l&+y{akerCho=&ezRO3!XTNoIKH(X$DH!|Nes22indhF~H z+1;+c2fLim@?tKicLEgL<$SfDzxA>(_x^6NjBFjG* zQMgb9#ndh(Z&}}V_!AWR$3uU=i;YuVIbk|C0EFxr zN%8y5VoglU79xY`>BaDn0jWKA^91;G{wWFki2@06@j!J!kKvs-lRijq28iYX;qOL* zOE#dpRCQAL04V=N z38h*b7t^}u0&bVg&(9iMVbO+oznZe1KcR4;IL!e3T%R+t0z&`nwWIrjQeS}7J3=>c zi&1%Lv$dXV_jh9hAlRqnK$@P2A<~0U^+qgSxfNNfdRCfM$E=<+GE`JldY#wKcD$*V zn|)s<^&y$YgjT1z#ad?2B*y7zATiI?3%Ralf!(y?1_IKvv$Idc=W~>E0s8x7fdgIq z>{RN9RDpm-<~DS%Y5D%Sk%Y1MXj&Ar*mKo5^G-EDpS?7IsV4HUO)G`52c1eAo3$$W zX=rHvOytJtl~0XYf!L4&<@@p&tu;U|cIwy56~6eZrM(tgI7zrK{kY z5;RiMbUTSzf~c~Utm(`nTq3tRSzd;H`;Cn)!|n>>M0Rt`XsWPO!Mpv70Hx^fb$pYfC0Wa}ydg&l+{F)A@aA)V>$ga;NFda?r1W%eO z=<3=QV9ADuZ{GH^<)y3v#GN&!H~XoXanJnxy#H&Ee>k{?f27)Dz*MVUJkSdV2T%Vf z>m`leV&Tnwf$)#J1U2^Ut3(#v8BNni&+-N#%J!H`w%XAhX3|H6rB_w}AyC=@f@a&^>nB9(P= ziX{-tD@@;Bz{%Z0iz)l%o7vnv3{RxWAxe9=`}ReHVxp*D*sul1JjW+B*l00uTNy z^vAJbx0i)tWHXTBvY`ifH}E)40E~ne(#K+MHz;$Umw^A1aNE}`Q@3iQKcdjZlhx|E z_UB>cjw#)?l6GJ;A*-ng^UaG$q1sKcH}EBikK?^AN23+wZtj-tKK4}!;SnEY>7vwX zr2R9)nTaSFB!94;HRVId%9t0B7I;iBW(Fx36nVoFzM%89e~Roi3$fhOz4&|9d%R@og%>h+0_Q|q^9KK?&`w3}3CwY0!#FD|+*Wo5lx zg^_(589@Wc*7j|uzmmg=EF><4s8=svM&1$l2no6M2`I~Pk1bAzx3{plV*K)EHjId-P83rL4mRW)zfsoS84V8S@;>!bYFLfh(5~9BPAu{hHmce6zuF>{I)h0KbhId8#OSf^d&@t0D~Do z(tgoY4b&GH!Eaawh-3^#3ES1Qse?G|xkANWYFz=U_ zXX1zk*{Tk~#>WUckBES2XVg}G_%v6vWo>TmZZuoxy#_esg!Ci0e3rDV)M^owr>D(g zc0v|A8GWg-(=qJ`QL?6Pvq^A|6M9Ra9@ zl$Mq^u|d%r9u~xIZDC{-tpx7i$Sq@f;Xi4 zErpw8bu;4QHGzHg#fssUF|ayQnd+X=QAkx`bFsFCG9_eca@YdxsZvH8XKR( zULrw!wM92FR*?&A&iA`w{kY|Fr6(S-9HJFx$^wM9KH{rGnBeV+&^??hY?1BaXs&v9 zlbCRd0k;r|hEM{Hl-Ee7^<-B!9G;aY0wL)-;Pc*MEqbSDr&@*En|KBds+(FVyVq@3 zp$SodJPS|MEWYU$>0WI3L*j7a2A>c!Oc+UME>BcEBI{h|gMp!8nYhS)RBCHw>@;~pVU1;##wd#p^KieCIIKP5p#VMtD0JTc=(D7Gl9FV6(nZ3DVfOaT#S6hGx&3?^=Aon*PLEWI?NguI?X63P z2k)-#p0}Kg=e{SG9yf^}e_7*8e^)-=pQnril-Ke3dDD@j14ObUM zBsrZ+z?L`4jFTWQcqdb`#)cJpI#+0U@VD=1%|vK_2r>;Zj8lp|UH0+30C`>i!3zqH z=s4Y;{M?$425$2@9H*^IO9?a{j8C>?wT@Xskf^4!KHnQZpPHKL;{b(~Qk}{sVMf}S zHzI)J=;I9^d|$Z9A9UIS!67&}?>Y}sKp`D@ab%i7p+u({*)Veiwc|w<^SPS$e6$G- zH~s!Wa58kKTWb;yMrfw*6|_5K_S(>SLV{iExN-Q!#Mqn0*~Pg8F?m$Uy)k2Q1p&S= zGCZ2uy3Lt{_&7=0Cd1RK)T*Co7weMtCVi86;Y350=zupccM_(^aAR?n)!h8zg(A-3 zxmTIgIy0?ZvfRB}Q|=Dd2mO_WtCMWe0_4yTz*RcS%P##w!A2(?{0hKNAq4~DyGhAW z_zr%B9o7B-p1J6xsBNK}X-hZ8Z6QfzM*&MU~-8XJgN z@*%0o-Ou26k0$V|HJqRM>AAWc?B>oyOAA>TjGmYn=Mm&JDpf5IFR3vPO2Q;#g0NP+ z64lmjzLK%@OhNK{tY?*8M?mYgs}NQkryA8CuqG7vrj&0jrwtR{{t#$TeI zl9tAN``!7hbE75o`n<@$MCYWh@hkK7-6O>@-t`xkBCo!jG|o6TF`AnM?D+ZK;hw6> zA&S#79-N1Q;#K=r)z9g-WiI7@@}xci7HdzsD3_{|^4jLGW;X0>8J&o7p5&5Z4s4r% z+#P$_Kf%L923l6KHZY8$RDNy!eVTRi_E;#e(|ieX5@|g@`;n8K-#fkj#H942F1XLe#>OcYfg^C^?r7J{So@uw zGCw-0-LIXn=$s_tN3y}-ddnrIxSbB8EBY1}CyuB`;pRqwvG~{e`nujx){n&a*jKtj zx>$Og)>^g!AGXf{r`?~HzEsUE8zZBkIEywCCl{y8%Db#-&m+vGFfQ?m1e~HYYTES=M?f>$8mhz@bCiPIkW;l!SOZzkECA)PqRP4L$DRtzQ<~ zN@ExtVy6&!=?_dcvN2A&aKdc$uF0+(L~)%MaRD6q1gskq6EoKz<9aq!&aK&e zL2K7%d0D^GtVleZ&#qA&hXxgu$EHV5fxu2jM`y3RH0empkt<1BJKo$aO)l^&DN^?Kc{lUo;$ug!(Y(6@g~cJFh&V4zljL|~Z5QY}nUJeij@SjYRviD%^>LOoNzrv#o-UU|l9HpXR6-ivcjMt@(2LZY zJG3%N`g+J8B{KGM0N$Q7S^uem6KDoy`y}P#N$0@h7rSgLuxWeOmzR$#`S;vtlRnk} z*X}I;>0+@5((+^N@#z!e|A?^tpY^)bX$KvhoB$0R_(dw4OplL{h4+)hrp=&SPf?3_ zVseX|kp`g?4G{t1`ip{^e`*syAjIB7Suip4+930Y0NnpqiCl1GiiVYzqDPw!wPpQy zy}Gdx3=oiBHLgqz4GllJo#}9gM%w^uoc)apTFGLaZ_P}NI4M1~J3<~c&40aeeLWJ9 zffopL#Pl$qvEsygbRS5TSyMB@@A{sBjuqXOi3yNH;2tg>u6$N}?$4H^e75>UL-OHs zfVP-7_!!?b|J07p&T=j7)YG%Iw#-h&KN4LNL)~h%HmLkm>?o27NPq>^ z*%=ifFz|5sp;wpm_XK}%?7ESgB=nJvb3j21$c?T5T7>HB>)*Y5*Abqg4vle%jZ0YL zYV~;S-QvCJ$Sc1E06b}qJeyOs;$rJZHcCcw&xI&Y+HPQA1mSUyzY!3yVJY{Ko3lz4 za9xsFj|>kN{-q=Q1Gn^BNm(d=1TswDb#VOI6P=p6IbR0@^lj47{j~01i^h?!CCO za<#iWJ;h{nbPnrZ%gx`nQy7zz^PzyK_~^&&r&~r9t5hp?yQ@~UyB?~oON*gjeUIDf zed7FY)J82k0`LQsge-PC!VSBtMVI(1ea)?Q!V)ZdQoR%9MA z95<3$TkpSPd@pQnPOv$e5~yBjl57#li219tn=W@JMvxXY<}cvdFNqm0?Tm?V|kr-l6#?LwQzyZ-v)%at0@5`o9M<)qD9gYd?wpyVU=G zZHxQ=bRiX5g(p|z+qV}{#?{9VA!-VE z+(FELf0tFl9rUSp+dQQ;F=$;35gHUy{};KE6D#)YZq+jqF&sCCk~kZ?>k;I(e4dC2 zK+JlJgFj54tT{9oSj(i|%-g=%mhk~sx}hoc(I^iD%PkqzFPx!K>gBMeoP_fEd%TvN XD~_7L%>|(4^O>ZW+@}%|J-`12e5EU^ diff --git a/plugins/toolkit/jetbrains-core/resources/codewhisperer/workshop.png b/plugins/toolkit/jetbrains-core/resources/codewhisperer/workshop.png deleted file mode 100644 index 91ce4ad32408d11e1eeeebbd04f5343aef9b36e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13910 zcmV-cHmS*pP)~FVGzlcJv&V5_JC5ymAKT+)?Ae#^)01?sq;n+QZ^kiI;`#2?)s>E< zbN)IyN75B&5SA^wq7&`IeNW4JMSUBl^Grt+)da%SQ)wEWiS_w0W z(uHN)=E}^k;C(Lmuc4(@hfs+{YZJ0|Rc4m?re@^^?e7{{3 zgB%(qyjyURP;JuD22?79eoubeWJu7)54@IBn*K$HWb|7JSgQgdg zBNiw6`c27iy7_u+-?*_0FoYim$gP8Op00R0x0~sN`B+|B_?^G+TsAkI) zE!U$i-#_QvS1s$h;DQZ@pMAC$L5Kij**O$7FT;M!UF|d3?tD&1y2XBU7)d` zM&LoDyt8E-*RDK__pIHGE0-NrAkl`7)^WUU@iDBNIf&u$42K3=RUZkL)noz#0s%6x zctFgreFx^GO+w31;ZVa0?Xprtls1aREX*F7f7FI#QPh@fKBB)qK z3ahJL9~nnP4C5hHMpH!rQ%eqnO6!oi&vm>8j4X|OLI(L{R%2!o9+j1fcUpvdCgNuz z0N85PAc3&`BE+k+y1Z@HtIiuayz#m9BzF!N%g(y^uN9?#uij|2RZ0&oW$YI-ouJ%X zrcI=>Q`cQ>W4L)$58iX(Zd|kM2=@24;xp@)<0~5%;HNug;qYJ!E?IOOZ(MZY5=_$@>KjMn)817{Q9B20n`vV1!)9-ZScbra+<@+0-^8z=f2MGQ4Jy z*@74#3s1kTmwu)+49>&C;tnH03w)*lqOCbEM`;_fIm9BaotTj%1T-7_#Wma&W$bqwQIR`lS8(+^`xwPw>TScg6s&mCZh7%c^NES`&v_kfT+lFx3@Pe&`O-!B+~0o$k3RM!cJJMf>lIKe zUAzD_1q_2jLl_tsGHU0vsZ%j^>J$SqKlq4kGu#yX5RMP}B`7w*k6v!+ssJ|#-8<`8LXjUN9-cpn=qHggo3ok%y zo=QOjo*-qzs5i1o$+8AoyUvlPa?o=7v#@Y&Hot^)coP45nu=a-I zA%rdIuQgCyw&)oC$E&(=_Ut}m$h_;hMfk~%E;S7lDCN?CE}dfDlu?z>KK$D1gBTdC z;Co6l`PSySI5^M}zr(;IlnQ%Y_H6QD>5_$b%PlwJzkaa}Pd&3SK{Y4p($}oPU;VH5 z8rt6f!H?pl9XsQ`pz=_XTjN%X%l4WE0gyz0HOkxpMS<68fwF3@E?=1q`BrDO2V8rlhyw!*?NY_yX#N`}q!1ym+I!TTdBC9WTKY2~n}wKJQSQ^Xsr&0u5=8VXl8x*=DzT@8VKU*{ znaWN2k;}JXkrM7*$J_A5rx)Xqy`9RGA{tPVrYcNvVx)?lz3s{sJBl;A29)N~k4=ZC zVuy-DKu-!R@@Im~BPY2A<5WXYR$u=B4j(y+TW-2mx$i4j_rxupR(oN%ph+hkd5ve!*D8!*R8OI_2c}+QKxOS56KfbE z=uX;R@iRebDuUEnS~a8KK=Ll))UUD$9<6lFS^NnVwG3r-Z7?I*Pgovz%^SFbpVOBVLxh-%Xlqm>9S;(?sjDMe2SeF8`Vg?&iCBJDl%fDz@3kiJ~2 z&_Y)!fI^rBUv9orBqfH{#DbfY%Fd<(g)r-P<uU;BZYF6fb8yGJ#%UoihT?o)2lA8wn2mzB3;tWG&oMj2Y$ z$uuP}H>xR)p5`o{F=z~)w?DDetlRkL>$c^TC8iAOGD^y>Nq_QqQku@PxTn)v)0Ps+HEX=Qx^a_g&j(w}5Lv1-7UzuY z?m7IlLBv94+uV3VhDOzI*&L&B2xZ9GPb@W3xb~JrJaU7r0#F4~^`YTh>j^hE<zr}GJIcY6urZFmp;)w9TzV+j^9xpqxW673vW8(AilL_9)7Ao^!P~C32z}; z0AWT?2U1J`rr(%20QWm<)AQyN86lTWFIC+I*cY)nS!eQIiA z!9d6BwGny+r}`%+T8Yc@2ynsTkc_GvYct_*su`4u2k+D)YL;S?9%h~PbrP!{+(UuQ^FvEa)rA? ziDyLGDVtwdW9#G=+R)lquy_R_1rDTfoZvtpTqvfmE?eA-x1YCH0Y)FX`&;qp^(z#R z&NiA9t#?gL;~rJu`-IZk)+nv*y=!;jFE86}rY--hrfIru$LpTKd?l%-BVy3tjT+Pq zL<@)$P?g%Hx33wnkY+xumvh6c&+uuZ5kIBv6?Krw`KEOBaWbk`ZtBfq348x0hCM=3S>Q7#cwyC~W<&w_Mj_-oS(Ql8Qz z>e{F|Hja}GDFE?cka&Uhd&V;mmTnQZDXCMY+NDWN%j*5Z$_+c@%m8^-L0bpiN9`oO z5`x!57JzM@Wn6G+8kMRPFiKbjOsjBH4x(8IvP4|^hP3&K5Q)M969sFdr(Q>K-;UV| zEcW5u7wo}8*l?XBZ$*Ry*>>?h*YVmN628&L|zTD znZ$)^T5+42R$Qch52&e!wo!b0%Uq=$WRx_<7_O~JURvYOHl6!l?!t8neE;x*-T2hi zFXGt))A6MZixem;ceV^`CQ5|Bl1x{3l7btwkOPfEaE<3c8#C>4?x-LUyh+;2l0unE z0!Uf1_50d$snz^o6Iq$818Fu*rjtxLNY65@QNc1B1rA3EkkX#?M!L%McI72%#aM5@ znXa&RQh~`k8RqEJPFTzeLC3d!ex-BJQ<6YHY2*27@N*L=iQx)QxY60)=KvaXi)%CL zWkH}9@i3+|vin}1Z2)6a&lCq1JZIj3cB;X0B=XBTSNf5R8acg(gjDEMLrMdo_bR;a z!kxJJ^n+$G%$M^9Bgd-WFFvvm&s z?va(z+i~O3DoBn@B6v5|PSVo^y-TvAE#FltVk4s{gFhikgq*}utwR=D(-lzE>oP^s zFEz+;AfV(?+6r>L7b5UFMp_cgYSAWb-xwW3t#8Quh5}4mELpdpTPQSmT8ckHcsYPR z=A?x8X%~56@#>_(8&|OaL`b}(g$GC^ikw84!K8wJA;D4zwbwA-o+-fPR0P*~9l0k6 ztlX0hA|*tzMxs;AY8zGt&KlaPdMp1?oHctuUDp^Ghv06CAaS&ntV_66<#E~KS%$FlAtb{S7O`Fo*%xgvG z>a`91Bl(&NZL6?0A@KeNE2^9sMagw(D9V%J8?v|;g}l&obd*aHAXwMN+g11&2bWyb0i42)&?f1Bpx4a)xTnX9(o*@M&Y ztiw_1FyAbeYpK-WiQ%A;uNjby z3UH0VjFa@DU`(^`L%T_8w|opjPmy~@JtdAt zQp#kEzLO5Y97y^C9TQst(1zX5KeZI!+&oXYNR^ved5S)M#a3)P){ZYdy9kdfFUX0} zYO>yzG7S{k{rc`TyOky}gu_EkCcnF%TcALr8Gre@?N~6i=14-Qn@Cw+m!SGG=qn2p zdi%6Kp8}PvVOF6)Mp}T30YnDRjhj?2=PsjLq_`?bfHXd))7zpGv9u}m^I|VaT+twH zI2{3bW)oVW)+=B;+6@rP{y{TMk@eIdoFvLWEnK^TY8T*rPz|$`B$0G#lK&L|Qtnmy z>*_BFP)I^5LnZQX!VroAt1bef{NTg~Z>Gfxf@+KxNt>1}+ImG`k+O*8nYnnr!cQ1C z^TGZWe0tq-d~?%0yydI|xKROzHd;P?phIa13$R|fPzT2|#tM4n>xFtDoN~jSGrM28 zpPTSirBVDqxnZ@JM5k=2)Io;_uP$(=jCd@@XkJGx7&YrAZ8L}EOcatVPC7-{;V)tD z(Jn_hCi6pX#%rZQZ3~j2B6AX<6i7rlMzK-SGA6B8LxK}|Ibyt)lIe3T)HFr!f2j`) zqt3iQl%Wyg1<6M^@~rpC@_*zd36WYvu;(RRkP(rlp54NfB$MM=@`cU)aQRFkH?iukKoDf>1Gp} zK7eRMX&l-{@nr=RhXnUTiJZBh_kAd1oVKVMZW$?rIj%je zZdyhiU63Adm@=M@02bM^K1q+@)DZTwB|0l5LM5}U#o`##h zxdspI?lMcpmrNhVx3|o}O)5@LV{))?xxucs^i1NltLW@q{T|-;u;btCY4p z>M1GX1p=0(B+6hgR5qjPjA>|^GsA4&o3IiEm`OsXTWzdH@p21PkQY^5CHarhN|4e$ zRkyeP#v8G4!Cdz~owMmwGg`-#7As3i_Y^oBWb>Nzpht7)Y9B|I)nP|zOM?)E-l%x) zDWO|{ND92N;712hYSW0I&odw3v^@&|dc)bD{%n=9O-#Ydy{))o!(tq!`)P>Sh@ch> zsOe}$hmN@VKIoIOI~7n&Z_B?kV)GFMRWw*=4@rA|@|0k7h4r?K>d9~e)R+Q_ff2K$ z8)WZCBf&k{UMdqN26J5ZzY%Fw{JYs!X0)1+Qi{nFGmU4chOzW#;0AS?}3 z^$w=ag{+DREm2(4Afplh?ja$4UHs~w*RURb?+O@1U| zL2|7jWCD?xWBQH-@i38Ak}%ua^@>jYPwx|<%_JDO#g>n+?GJVt6rs)Ir}`Xq@n8^iQY(vfjDGB*kw6cZ088E8JTB))M5qWib*s^;Z3V#cMA@Q?(iQ-uDpdHA0*UdLP8!KC%*5FF%5tR`%faOM3C}?oRwr z0mt(_Q{8t)Lh1xOV*znJ^%nP=PCsNmb~IA~(fWPU@rg%QV57=2vMq|BUEwt)w+Sq0 zhf@x;u*8TVIa)bwL^|e5JQhLzXvEaA=hFaEA)^`Z_Us+YMgc9U8VDz6cu_tU&wF6@yhspOqh{z+vq#c-CdGGZqP88Ahd z8{EpKBnkAe(+P_GdYYnaO!aoXv29chFymmG5Cs^2N^3t#X&8;b!lwyaR0MAqYc*6U zuUUIOHg4L2oxAsNMWG0Lj<@2j4GZzmu9->`IDpqL?p45X)a)JkPvr^F-y*3?KCZiw zCupE4P2;$9alZFrNyiX29O}ToJh>Q;?(4+RSS4)3=-S&K3t$qb2o9y3nINEaYLcg+ z+uTzdir7d&bgVI%ILEs^=Al2 z^JDm_#w3fyR|ZgonB0gSP;xTy=Gi0*Np)93StRw1+u9BQQO!hR(U{{CpH1BQg8T(b z#O!dzZ>DTcS(CCm)oZAYj;iV2ILdhdv4%m3 z+TM;0 z8#jY$rUp1<&>p$UV}RrHPc6Z{J7${`wBEG(Ag)`{qpbe(%pp3ImP{E+U%%v-0*d|S z^8{Oz!S630T4m1CsMQ6^>SF2e8lWV!kcBEjlIKL2{@a2q{x3#z5{Cru$OI`K3|Oud z3J7n;Aek!2*eTizI|ZY~<`%qLCajU+&viilOifWV6zT7Oi1Au_#HPgtb#&Jy<-0Zz zY>xj)Z$I658=1Y?l%7(**n7|xp2V= zb7=6Yt^sU4GF7Erg$ET-(9a~gECZ%v^Eo@36IC%J#vI*O2=1xQQX&GvDG8nLlH}6G zrRT3)ArLIi4@RD0LO7*=U5>3)rB$@><=hc⁢)Z(-`_fbacLbHl7xlTb>T!`A4b*uC{kl4BX}z9?i2d3 zn5E_%hqs>9ZFX(yEH0RL96OJ<;cp*aiKn`!H4@|I;Eh% zSd55z;Z;4*HY&x(f3#s#Pfy0v$LB@Lhlp41o(!l=6w2}vWi&Vs18Fb@5{1Vj6Y0T& zO~pib6lqYh7yO14QhNx%v>6vy&G)BdqfMwO;K-NTH#k7YlR!o~hnA8Hilpg^Rgmho zt+fUH{e$K^qM=q2>B$Z1sCnu6o@w~&pHIbEv-@%Vio<55neUIFQ5NCo1U`tf zei0t*!gD>tHgWrB=%>0~X()u!0drVzi8g70gbi5cG1nJT03lckt8ZrcPSR%k4Go%! zZ6qCGKQh&z^Ca=8IiUfc-f1_f{vHRd6j%T9le86p>0PH%jdt!pSCkbSKbNV91lf}T z7Fm*>b&)KAl)&g16=>U7mX$5tz~L}Q(0Ac5IDeGhG>J5IQE8gDwYI0fpQ1s#HZUTp zl<`nfkBI2RHNe@>Y90hgX+p4s_L>$h;*zzSb>pFF=3o4D;^6v2@}dmoqR2(?8gatx zRRXO~CD7g{1di48*%fvC`sxFCX!lGU9%=?edVpblCj5i2`7NO6-}Y)v8H@E^loQzA zHx;6zjh}i&K-~$tGp14617bi%S>XjGFd)`oTRVaaxlm7{oZ?K&0-PADKvqAfpuO#9?9=DyfIdNqPVY^TR9LbmmKr z^Gz^}ZfE_)`qi@r@Fy4VG+v{BdU6RK-`}Ym2wn&&zPh&yy)|q#n`T<`IL@Efhj*U8 z2WRTj)`weh=e8Baw?Bi{bTTUfa41R_>GqeQ0FZjoK9i)Jct%O#PUZ{6^xBUW1r~#& zMoo6>4B&O134;jeOwk_HX|g~RrK7;=WIGrsy($K#iLiXi_$F};pLIi4ZCI(8%SD!n z+AmEjnW5TJs=%C?2GdN8?90fkIZF*&ecISE9g20so>MqsUjKJiMQMy0=z zqR*YsTf@8iTT1OE>B7M!BMf93WJgqez46dgyzAbxajlwy>CI)Ix@xP5`^M(^Shq)S zXRnmlNqsx{{*h>Js^PLlz2+lFdTMuIs2zXv?AdsrdycAGQ%tMiG_q?4sEMH^5J)>p zu{5cs@o)JwO!qFz)h<|lV%J!`*o|3tBuPwOxKAcbHorI>8OFo=wy6s#q= zrJXOrtV@WLpdKrFqFh)PIv!{TMzu^NX($5`hw4FrwowL^d#0mfDyr2A%Sa?COZIYDMFaXQO)P7KYcFD+K5tH+a@ls{l7+{Nr$qbF^|wIod2uejykW694Qo1^=|^4E%WSd;>Zljm5Bl#4|2T#lfHLN=LmIEWm_8CgVu~fhOhtXn@tWmgXrC zL!-tG=;vvYe%8^ceZeOS9=^S&2aDc*^=imz|Xly@KCV zC&A0X_+dNROE)#H2qL@(dJbdS)G26bYK{THXXpzNL0l>2@ipPmh;brY5|fBLf@)4@ zbPcL0KsT;mc^Ctu8NR-0KK?@q?Ud#k-mQf0wsZI42K7vzTBQ%qwMXSe6bk`4naOa9 zQ5dmOe+U;p-Z2{w?&>l&4gF=af4TkzJbP$5?s#^g`G_?I3w@>SmfD-7&&AMRhC49W zhTETCg?n}_!oYad6_adPLHOGx6llPOoMbo6qBfCS(7iWEAo+=a&=QS6F2X5XdtsQ< zYX|hPe6|$?9TY?a%H=hQ@p8gYmXPtaNXmh4TIti36+_w%vQ*3`7livWsa!NarMad- zuqv*f^B2Dn+DYu)*KOjKEM9MPM@4OF0^In{PgtwjIIImg)ser z=;I?z`1g$q%#r>F`kV9m4M_ay{j1fyUys&%@h$}(dO5p3xJG~9gDyYM%PC>CaNZL# zO6V7ro;QZg85axiA6w=b(D==>4&d_|I1YB;bB`}YQ&u-Sf6txUr$FsxHI+JogF~$b zDE@uhvi$P|f@hzX8PFyZd>aaPWYZvdX{|G}-V_c9cCe8oZc-y5RSN>pFy~w9m8h-7 zG)1rJkdkY`lLT-{XwHQ>FDvz?&%bP(3wc<0%^)K}?@(g`+GL_*!cp>MF+>u>0`0CK znVyn}WoKO^!vWtR7=SWMD_b584`y9$@EwCj zn03S4h+I}Pt*)QIbxLD+of?Jp!Y@7L(4+a@6Z!XCQ!72ED0{#fHG1EwjFDQ+*XL5` z)u?(Y`(W8rC1prS5k=C{JtV%8#YheP#r83?l>XLp4xp=TRCz?D@jQ;zDmbb@??-zV z;QMsH_7G`ko-n%!&z_A|WJ2dkD$fP%k{n zTJou|sLKGTi6Ee~lF5e=m7?q!t4Qt=W(OdP!iGU*3K8E60s;|WWL%&UDTw(~H>O zeW-CENjwlGlo27q$p!7I{JmH2Rba6jbJ|DnQzdMlQU*l*z0v;Bd>1BNxRuLpd~$mJ zOkhWEyZMf(KFi~5<$cgL1`QyZPxWrw@mfHkn1Es{RG?tx-(yk5D|)K(_<>G5akvX# z-?a=6_smBBSaZ-ydFnY`Gx6u|dI$FGKY&f!wj&&&X#Sk8@Iog}sEeA;=Hh!Jq<@4E zk){?3gwI9#QO;G?@|W-`d~uy;kp);*?5@?uQQdDAIDW|*2DvLqRscpOSl_b#Bx&8R z)dWObme&%515I}u3A1pG4zwqzWn^NDTg z@uxQ^V9jvV<(D~4EGneowPmhy;0TrcGI_N8_1SB-;MbL#@}RO!d~)4#{Ns~Lu>EMR zvQrnAEC?1s$EF}kf00bDJpGFYSK*O;GnD)C7(RCSOUl!7A|^zZ%!bJ*;}#RS>Qhk) z`$Bhm#T<>dZFB|>4!0Y(Z|dM;{a<@)E1H{>7IeHfRA5RpI}#^@-_pJb-lMM&CXud^ zo<@^`&C7%KB5N-=Z8At!+*hk+QCekMTMi%-0d|8rywX7JHIlfZyrLyYLUuvO@EjOT z5v7;bQZtQA-IuQgjpPbAsyv0_p%f?xg!@q^IFF#i)A!ci_sUM~%Bu+ec=#k0uCB5GMe>%8f{hZDTCwLW!d?pQB0A&#PAw?o$FS_7>PC;at5u%ZhC6kf>HW^Jt;KH@} zSmG@c&^V>_R63_3o7QTkEPj-pAV|FOAlMH$@Cx5@5h#ZF#QQybTFdZ7J4N7AlD=q5 z(SU9n>Z9Xwd}wG(hUVehY380~8@CcOb_$PpIUOEJHErMh!A~$cI)>YR>&;3l%VGqS z!EaGQoS^J^oJyAQZ;?>DL%*tQ7Soi`@I#mEz~`>rY>b|%cTFur!x0I38uGW7Z^aj` z--JsS_Tm@2XBv-1cVA0-G;8P;@v5L;buG^Clq9Ap|2C=qm~lSnP{Aca2Hsk$SFXVD z$S4jU>rFPf2E5>ss5E57*N#DHG)jPX90!gO#w@{ud;1aI;S9O zZ8{|^NR`c?PZW_fFl|mw4zK`UXTdtj7nJh4HK3DfZ^>^PTMv^m8k?`iA0I$%X!N_4 z-UA1QXUtlBg?hRSlMLQYA&3?$5}c7=^z_}ye_x>9 z`SZ(m;5}=1V^PNl?%UCY4?b{)S)WmpnaS(P?hb6#-wH`pDI_{%^dhmK?J0ay2w6-y zDgsEfKXrZEK5A`g!C(BrJFx#y55D=MpP*i^M}$S~NSV}x%&R!8uZy;^M$e3J2x&tR zHiii3cl8eXUJ#?Ndry+IM1bf$&C~o8v}ui_y(PD8)M}1C(tr~LVGNHkCz2GF#-^G93c!JPFf!gy+(66))bfk7kI|Hn6fMSmCGhb3OCvn}m`L4U} zvg^Dim1u`NrZ_b-b;vVH%z4XF0c<0-0#l{!5VEc|;Gy$CP z%+2o#)GXPnkO~t4tCzvNVf6j+;VQoH)MDJRVIkgo;cnb;S`Ys2%B^_u$P|3>nI+~t z(D6F&lrv}b<9%y)D!@2_k$MI9ZkvTKZCHd|C)ybiwC_0~38F|xv%Lla-uEtjbJ=(? zJPJ87mLG7VH)s`Y7j6=?{r1|m=VQ_QdHCx0euS~{@jxFT^o0?26e}4NPFf2LjgKN2 zeA!FVgM;)8%>{`NEh)Y97bG7zz|-5f<#>xZxFshFrS^G>_<=sly=aagNo5_?UiXysy27_x8@1wPZvI z=k+YF20@Vj?0sGz4;miOgmI}pz2SLW{<@3sE7x9$r=Hn}W5N-#Mn z;o%*x-h(H)r{lRp9j=e`PS|z(I`Nb3vrL|6DNo7`rzvE7r{KQ#OyC zc-IAcFlWjr?t6I_KC^zg*(7#ksF{_~)jo!6m-m>nIwB2&)m0!;DFqP%@?40(j#M;@ zNvcn%(q~49e1xa!u+=bTch11y{PBCR@8BWa^_}mbZ(zU`mGd1D6#IH8C9J_k032kL zG+u#>zao4YtPmpjv^WuJU*X6|`JlM>E?e6;g3+57m9cD1e5G*1Ht91)<;0^8qut#F z`H~B5Y-I-#3D?hpy-f0Kpkes;DCmlyoOJw`xw)+%fhAKLPj zJAa~Y+|on^8tZ4wUaV7Gfd(N2h!D}N3)0>Drx+L-Qm)m5xa^{}xcI{J@$_>qps#NL zGBt9AjENLVio{jpplQ>9@nmSF*eRlxC< z)!kS;eFRVL@4!DiwgO*&VZH*AmOul^g9eQ2Rvy7q2h^10$P}D(2%W@1k8ZyE&QIE0*jnb^p1lt$ zP2;%8-Tq>LxwM3ddz4FAAaa`+`VxD z_Vu-*k;%#c#)`vA!${dM8dk0pEZD#aUVE3LzR{g-4yS>cpT6phRrvS^-ixzOKMf!M zmoMV}b&r)WcLTtn1-a2Zo!Bf1Z?15`r5XUOBN6z#4Br`ob*=Dn9fFP(64u$$)5_Wt zpg@-Amw~ELW|_G%i0Z>}%>lS%;a31RCkGgnjMv-N6X5h^cNwUaPUTS0o%$1NnzG-~E+OlG?cV-f=X94Q&RUdQhiN2xY_$f&6VLpc z5RvBT+L1bdi?cM60F?j+jd<3A#J01{# zG`LDIy9SN7`HNtP3r2GpdKG9{1#sz;zADp|H)UEIvZe|x!G(#iKd2o6T)=-(48AT! z*_<|+YJv1U$B1Omb+0S0rSW`dqvm+7N%=uXK2XcDHJk6g`*Y#D$s_u9Zdt!m{k(12 z>We?3Aoh()xNcFoyjohLsI)3$h_?mWIi>=grJ(uTPDf!t(~;&Ms&5;WW`vAdIs@7oWYtPSOg>WVDC Date: Mon, 20 May 2024 13:59:12 -0700 Subject: [PATCH 13/71] tst --- plugins/core/jetbrains-community/build.gradle.kts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index bb4e37afc5d..14f35a545f5 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -49,6 +49,10 @@ dependencies { // conflicts with transitive inclusion from docker plugin exclude(group = "org.apache.httpcomponents.client5") } + + testRuntimeOnly(project(":plugin-core:core")) + testRuntimeOnly(project(":plugin-core:resources")) + testRuntimeOnly(project(":plugin-core:sdk-codegen")) } // fix implicit dependency on generated source @@ -59,3 +63,12 @@ tasks.withType { tasks.withType { dependsOn(generateTelemetry) } + +// hack because our test structure currently doesn't make complete sense +tasks.prepareTestingSandbox { + val pluginXmlJar = project(":plugin-core").tasks.jar + + dependsOn(pluginXmlJar) + intoChild(pluginName.map { "$it/lib" }) + .from(pluginXmlJar) +} From 57223dd9f4fd7ea164aef138ce3c05e3ef7ea780 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 21 May 2024 13:53:41 -0700 Subject: [PATCH 14/71] build --- .../detekt-baseline-main.xml | 19 +++++++++++++++++++ .../detekt-baseline-test.xml | 12 ++++++++++++ .../toolkits/jetbrains/utils/ui/UiUtils.kt | 2 +- .../jetbrains-core/detekt-baseline-main.xml | 8 -------- .../jetbrains-core/detekt-baseline-test.xml | 2 -- 5 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-main.xml create mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-test.xml diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-main.xml b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-main.xml new file mode 100644 index 00000000000..fd94895b283 --- /dev/null +++ b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-main.xml @@ -0,0 +1,19 @@ + + + + + DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager$val (_, editor, _, caretPosition) = requestContext + DestructuringDeclarationWithTooManyEntries:CodeWhispererCodeReferenceManager.kt$CodeWhispererCodeReferenceManager.<no name provided>$val (localEditor, highlighter, codeContent, referenceContent) = it + DestructuringDeclarationWithTooManyEntries:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$val (_, _, recommendationContext, popup) = states + ExpressionBodySyntax:CodeWhispererTelemetryService.kt$CodeWhispererTelemetryService$return previousUserTriggerDecisionTimestamp?.let { Duration.between(it, Instant.now()).toMillis().toDouble() } + ImplicitDefaultLocale:CodeWhispererColorUtil.kt$CodeWhispererColorUtil$String.format("#%02x%02x%02x", this.red, this.green, this.blue) + LoopWithTooManyJumpStatements:CodeWhispererEditorManager.kt$CodeWhispererEditorManager$while + UnnecessaryFilter:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$filter { isValidRecommendation(it, userInput, typeahead) } + UseOrEmpty:CodeWhispererCodeReferenceComponents.kt$CodeWhispererCodeReferenceComponents$path ?: "" + UseOrEmpty:CodeWhispererCodeScanException.kt$file ?: "" + UseOrEmpty:CodeWhispererCodeScanManager.kt$CodeWhispererCodeScanManager$scanNodesLookup[file]?.mapNotNull { node -> val issue = node.userObject as CodeWhispererCodeScanIssue if (issue.textRange?.overlaps(range) == true) node else null } ?: listOf() + UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$e.requestId() ?: "" + UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$exceptionType?.let { "Exception Type: $it, " } ?: "" + UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$latency?.let { "Latency: $latency, " } ?: "" + + diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-test.xml b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-test.xml new file mode 100644 index 00000000000..528de159de2 --- /dev/null +++ b/plugins/amazonq/codewhisperer/jetbrains-community/detekt-baseline-test.xml @@ -0,0 +1,12 @@ + + + + + DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualProject, actualEditor, actualTriggerTypeInfo, actualCaretPosition, actualFileContextInfo) = actualRequestContext + DestructuringDeclarationWithTooManyEntries:CodeWhispererStateTest.kt$CodeWhispererStateTest$val (actualRequestId, actualRecommendationDetail, _, actualIsDiscarded) = actualDetailContext + ExpressionBodySyntax:CodeWhispererSettingsTest.kt$CodeWhispererSettingsTest.<no name provided>$return myToolWindows[id] + FunctionOnlyReturningConstant:CodeWhispererCodeScanTestBase.kt$CodeWhispererCodeScanTestBase$protected fun getFakeRecommendationsOnNonExistentFile() + UnnecessaryFilter:CodeWhispererTelemetryTest.kt$CodeWhispererTelemetryTest$filter { !it.content().startsWith(typeahead) } + UnnecessaryFilter:CodeWhispererTelemetryTest.kt$CodeWhispererTelemetryTest$filter { it.content().isEmpty() } + + diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt index 15e43554ab5..80b0dd598fa 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/ui/UiUtils.kt @@ -201,7 +201,7 @@ class WrappingCellRenderer( } textArea.lineWrap = (wrapOnSelection && isSelected) || (wrapOnToggle && wrap) - val text = (value as? String) ?: "" + val text = (value as? String).orEmpty() textArea.text = if (truncateAfterChars != null) { text.take(truncateAfterChars) } else { diff --git a/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml b/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml index b8adf4e386a..97346c318de 100644 --- a/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml +++ b/plugins/toolkit/jetbrains-core/detekt-baseline-main.xml @@ -42,7 +42,6 @@ UnnecessaryApply:ExperimentConfigurable.kt$ExperimentConfigurable$apply { component.icon = AllIcons.General.Warning } UnnecessaryApply:SendMessagePane.kt$SendMessagePane$apply { border = IdeBorderFactory.createBorder() } UnnecessaryApply:SendMessagePane.kt$SendMessagePane$apply { emptyText.text = message("sqs.send.message.body.empty.text") } - UnnecessaryFilter:CodeWhispererPopupManager.kt$CodeWhispererPopupManager$filter { isValidRecommendation(it, userInput, typeahead) } UnsafeCallOnNullableType:CachingAsyncEvaluator.kt$CachingAsyncEvaluator$cachePromise.blockingGet(0)!! UnsafeCallOnNullableType:CachingAsyncEvaluator.kt$CachingAsyncEvaluator$promise.blockingGet(blockingTime, blockingUnit)!! UnsafeCallOnNullableType:CreateFunctionDialog.kt$CreateFunctionDialog$view.configSettings.iamRole.selected()!! @@ -145,12 +144,6 @@ UseOrEmpty:AbstractActions.kt$SingleExplorerNodeActionGroup$e?.selectedNodes<T>()?.takeIf { it.size == 1 }?.first()?.let { getChildren(it, e) }?.toTypedArray() ?: emptyArray() UseOrEmpty:AbstractActions.kt$this?.getData(ExplorerDataKeys.SELECTED_NODES)?.mapNotNull { it as? T } ?: emptyList() UseOrEmpty:CodeScanSessionConfig.kt$CodeScanSessionConfig.Companion$file.extension ?: "" - UseOrEmpty:CodeWhispererCodeReferenceComponents.kt$CodeWhispererCodeReferenceComponents$path ?: "" - UseOrEmpty:CodeWhispererCodeScanException.kt$file ?: "" - UseOrEmpty:CodeWhispererCodeScanManager.kt$CodeWhispererCodeScanManager$scanNodesLookup[file]?.mapNotNull { node -> val issue = node.userObject as CodeWhispererCodeScanIssue if (issue.textRange?.overlaps(range) == true) node else null } ?: listOf() - UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$e.requestId() ?: "" - UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$exceptionType?.let { "Exception Type: $it, " } ?: "" - UseOrEmpty:CodeWhispererService.kt$CodeWhispererService$latency?.let { "Latency: $latency, " } ?: "" UseOrEmpty:ConfigureLambdaDialog.kt$ConfigureLambdaDialog$view.lambdaFunction.selected()?.functionName() ?: "" UseOrEmpty:CreationPanel.kt$CreationPanel$ecrUri ?: "" UseOrEmpty:CreationPanel.kt$CreationPanel$startCommand ?: "" @@ -184,7 +177,6 @@ UseOrEmpty:TemplateSettings.kt$TemplateSettings$path ?: "" UseOrEmpty:ToolConfigurable.kt$ToolConfigurable$settings.getExecutablePath(toolType) ?: "" UseOrEmpty:ToolkitToolWindow.kt$ToolkitToolWindow$it.getUserData(AWS_TOOLKIT_TAB_ID_KEY) ?: "" - UseOrEmpty:UiUtils.kt$WrappingCellRenderer$(value as? String) ?: "" UseOrEmpty:UpdateFunctionConfigDialog.kt$UpdateFunctionConfigDialog$initialSettings.envVariables ?: emptyMap() UseOrEmpty:Updater.kt$Updater$eventsAndButtonStates?.first ?: emptyList() UseOrEmpty:Updater.kt$Updater$stack?.outputs() ?: emptyList() diff --git a/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml b/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml index bcd5942d706..f0f6f0b45d9 100644 --- a/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml +++ b/plugins/toolkit/jetbrains-core/detekt-baseline-test.xml @@ -70,8 +70,6 @@ UnnecessaryApply:EventsFetcherTest.kt$EventsFetcherTest$apply { expectRange("4097", "4097", first, expectedSize = 1) } UnnecessaryApply:SendMessagePaneTest.kt$SendMessagePaneTest$apply { inputText.text = "" } UnnecessaryApply:SendMessagePaneTest.kt$SendMessagePaneTest$apply { inputText.text = MESSAGE } - UnnecessaryFilter:CodeWhispererTelemetryTest.kt$CodeWhispererTelemetryTest$filter { !it.content().startsWith(typeahead) } - UnnecessaryFilter:CodeWhispererTelemetryTest.kt$CodeWhispererTelemetryTest$filter { it.content().isEmpty() } UnsafeCallOnNullableType:FileInfoCacheTest.kt$FileInfoCacheTest$infoProvider.evaluate(tempFile.absolutePath).blockingGet(0)!! UnsafeCallOnNullableType:FileInfoCacheTest.kt$FileInfoCacheTest$pathPromise.blockingGet(0)!! UnsafeCallOnNullableType:FileInfoCacheTest.kt$FileInfoCacheTest$pathTempFile1Promise.blockingGet(0)!! From d4ca41af9eae5db67b96a1cabf81625200f510ed Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 21 May 2024 14:14:38 -0700 Subject: [PATCH 15/71] tst --- .../amazonq/clients/AmazonQStreamingClientTest.kt | 2 +- .../clients/FeatureDevClientTest.kt | 2 +- .../CodeWhispererCodeModernizerGumbyClientTest.kt | 2 +- .../CodeWhispererClientAdaptorTest.kt | 2 +- .../credentials/DefaultToolkitAuthManagerTest.kt | 14 +++++++------- .../DefaultToolkitConnectionManagerTest.kt | 14 +++++++------- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt index 3b86c211664..bd1c65d257f 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt @@ -65,7 +65,7 @@ class AmazonQStreamingClientTest : AmazonQTestBase() { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt index e4c1cedc23e..89da42b0c03 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt @@ -100,7 +100,7 @@ class FeatureDevClientTest : FeatureDevTestBase() { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt index 337a5e7fa65..114c949e317 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt @@ -99,7 +99,7 @@ class CodeWhispererCodeModernizerGumbyClientTest : CodeWhispererCodeModernizerTe connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt index d5043b1c2ab..e76a34d2e45 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt @@ -141,7 +141,7 @@ class CodeWhispererClientAdaptorTest { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt index cbef5fe80cd..824ac0adf57 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt @@ -217,11 +217,11 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - emptyList() + listOf("scopes") ) ) - loginSso(projectRule.project, "foo", "us-east-1", emptyList()) + loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) val tokenProvider = it.constructed()[0] verify(tokenProvider).state() @@ -244,12 +244,12 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - emptyList() + listOf("scopes") ) ) connectionManager.switchConnection(existingConnection) - loginSso(projectRule.project, "foo", "us-east-1", emptyList()) + loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) val tokenProvider = it.constructed()[0] verify(tokenProvider).resolveToken() @@ -270,12 +270,12 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - emptyList() + listOf("scopes") ) ) connectionManager.switchConnection(existingConnection) - loginSso(projectRule.project, "foo", "us-east-1", emptyList()) + loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) val tokenProvider = it.constructed()[0] verify(tokenProvider, timeout(5000)).reauthenticate() @@ -382,7 +382,7 @@ class DefaultToolkitAuthManagerTest { regionProvider.addRegion(Region.US_EAST_1) projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) - val profile = ManagedSsoProfile("us-east-1", "startUrl000") + val profile = ManagedSsoProfile("us-east-1", "startUrl000", listOf("scopes")) val connection = ToolkitAuthManager.getInstance().createConnection(profile) as ManagedBearerSsoConnection connectionManager.switchConnection(connection) diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt index 2a7752bd377..3d109e3b660 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt @@ -66,7 +66,7 @@ class DefaultToolkitConnectionManagerTest { credManager.clear() assertThat(sut.activeConnection()).isEqualTo(null) - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) sut.loadState(ToolkitConnectionManagerState(connection.id)) assertThat(sut.activeConnection()).isEqualTo(connection) @@ -77,7 +77,7 @@ class DefaultToolkitConnectionManagerTest { credManager.clear() assertThat(sut.activeConnection()).isEqualTo(null) - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) sut.loadState(ToolkitConnectionManagerState("sso;https://view.awsapps.com/start")) assertThat(sut.activeConnection()).isEqualTo(connection) @@ -95,7 +95,7 @@ class DefaultToolkitConnectionManagerTest { @Test fun `switch connection to null will fall back to IAM credential if applicable`() { - val bearerConnection = LegacyManagedBearerSsoConnection(aString(), "us-east-1", emptyList()) + val bearerConnection = LegacyManagedBearerSsoConnection(aString(), "us-east-1", listOf(aString())) configureSut(sut, bearerConnection) sut.switchConnection(null) @@ -106,9 +106,9 @@ class DefaultToolkitConnectionManagerTest { @Test fun `switch connection to null will fall back to the first SSO connection in the list if IAM credential is not available`() { credManager.clear() - val conneciton1 = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) - authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) - authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + val conneciton1 = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) configureSut(sut, conneciton1) sut.switchConnection(null) @@ -131,7 +131,7 @@ class DefaultToolkitConnectionManagerTest { ApplicationManager.getApplication().replaceService(ConnectionPinningManager::class.java, pinningMock, disposableRule.disposable) assertThat(sut.activeConnectionForFeature(feature)).isNull() - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) assertThat(sut.activeConnectionForFeature(feature)).isEqualTo(connection) } From 6a29ba702e786d20944b26b33cb265e61f126c3e Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 21 May 2024 14:36:03 -0700 Subject: [PATCH 16/71] Revert "tst" This reverts commit d4ca41af9eae5db67b96a1cabf81625200f510ed. --- .../amazonq/clients/AmazonQStreamingClientTest.kt | 2 +- .../clients/FeatureDevClientTest.kt | 2 +- .../CodeWhispererCodeModernizerGumbyClientTest.kt | 2 +- .../CodeWhispererClientAdaptorTest.kt | 2 +- .../credentials/DefaultToolkitAuthManagerTest.kt | 14 +++++++------- .../DefaultToolkitConnectionManagerTest.kt | 14 +++++++------- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt index bd1c65d257f..3b86c211664 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/clients/AmazonQStreamingClientTest.kt @@ -65,7 +65,7 @@ class AmazonQStreamingClientTest : AmazonQTestBase() { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt index 89da42b0c03..e4c1cedc23e 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/clients/FeatureDevClientTest.kt @@ -100,7 +100,7 @@ class FeatureDevClientTest : FeatureDevTestBase() { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt index 114c949e317..337a5e7fa65 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerGumbyClientTest.kt @@ -99,7 +99,7 @@ class CodeWhispererCodeModernizerGumbyClientTest : CodeWhispererCodeModernizerTe connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt index e76a34d2e45..d5043b1c2ab 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt @@ -141,7 +141,7 @@ class CodeWhispererClientAdaptorTest { connectionManager = mock { on { activeConnectionForFeature(any()) - } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf("scopes"))) as AwsBearerTokenConnection + } doReturn authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) as AwsBearerTokenConnection } projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt index 824ac0adf57..cbef5fe80cd 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt @@ -217,11 +217,11 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - listOf("scopes") + emptyList() ) ) - loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) + loginSso(projectRule.project, "foo", "us-east-1", emptyList()) val tokenProvider = it.constructed()[0] verify(tokenProvider).state() @@ -244,12 +244,12 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - listOf("scopes") + emptyList() ) ) connectionManager.switchConnection(existingConnection) - loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) + loginSso(projectRule.project, "foo", "us-east-1", emptyList()) val tokenProvider = it.constructed()[0] verify(tokenProvider).resolveToken() @@ -270,12 +270,12 @@ class DefaultToolkitAuthManagerTest { ManagedSsoProfile( "us-east-1", "foo", - listOf("scopes") + emptyList() ) ) connectionManager.switchConnection(existingConnection) - loginSso(projectRule.project, "foo", "us-east-1", listOf("scopes")) + loginSso(projectRule.project, "foo", "us-east-1", emptyList()) val tokenProvider = it.constructed()[0] verify(tokenProvider, timeout(5000)).reauthenticate() @@ -382,7 +382,7 @@ class DefaultToolkitAuthManagerTest { regionProvider.addRegion(Region.US_EAST_1) projectRule.project.replaceService(ToolkitConnectionManager::class.java, connectionManager, disposableRule.disposable) - val profile = ManagedSsoProfile("us-east-1", "startUrl000", listOf("scopes")) + val profile = ManagedSsoProfile("us-east-1", "startUrl000") val connection = ToolkitAuthManager.getInstance().createConnection(profile) as ManagedBearerSsoConnection connectionManager.switchConnection(connection) diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt index 3d109e3b660..2a7752bd377 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitConnectionManagerTest.kt @@ -66,7 +66,7 @@ class DefaultToolkitConnectionManagerTest { credManager.clear() assertThat(sut.activeConnection()).isEqualTo(null) - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) sut.loadState(ToolkitConnectionManagerState(connection.id)) assertThat(sut.activeConnection()).isEqualTo(connection) @@ -77,7 +77,7 @@ class DefaultToolkitConnectionManagerTest { credManager.clear() assertThat(sut.activeConnection()).isEqualTo(null) - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) sut.loadState(ToolkitConnectionManagerState("sso;https://view.awsapps.com/start")) assertThat(sut.activeConnection()).isEqualTo(connection) @@ -95,7 +95,7 @@ class DefaultToolkitConnectionManagerTest { @Test fun `switch connection to null will fall back to IAM credential if applicable`() { - val bearerConnection = LegacyManagedBearerSsoConnection(aString(), "us-east-1", listOf(aString())) + val bearerConnection = LegacyManagedBearerSsoConnection(aString(), "us-east-1", emptyList()) configureSut(sut, bearerConnection) sut.switchConnection(null) @@ -106,9 +106,9 @@ class DefaultToolkitConnectionManagerTest { @Test fun `switch connection to null will fall back to the first SSO connection in the list if IAM credential is not available`() { credManager.clear() - val conneciton1 = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) - authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) - authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + val conneciton1 = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) + authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) configureSut(sut, conneciton1) sut.switchConnection(null) @@ -131,7 +131,7 @@ class DefaultToolkitConnectionManagerTest { ApplicationManager.getApplication().replaceService(ConnectionPinningManager::class.java, pinningMock, disposableRule.disposable) assertThat(sut.activeConnectionForFeature(feature)).isNull() - val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), listOf(aString()))) + val connection = authManager.createConnection(ManagedSsoProfile("us-east-1", aString(), emptyList())) assertThat(sut.activeConnectionForFeature(feature)).isEqualTo(connection) } From 62ccb267e6e821b97c1d286ad3c639718e446afd Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 28 May 2024 10:57:15 -0700 Subject: [PATCH 17/71] wip --- .gitignore | 1 + buildSrc/build.gradle.kts | 1 + buildSrc/settings.gradle.kts | 3 +- .../toolkits/gradle/intellij/IdeVersions.kt | 91 +++++------ .../intellij/ToolkitIntelliJExtension.kt | 8 +- ...olkit-intellij-root-conventions.gradle.kts | 143 +++++++++--------- .../toolkit-integration-testing.gradle.kts | 6 - .../kotlin/toolkit-intellij-plugin.gradle.kts | 17 ++- .../toolkit-intellij-subplugin.gradle.kts | 86 ++++------- ...it-patch-plugin-xml-conventions.gradle.kts | 37 ----- ...oolkit-publish-root-conventions.gradle.kts | 77 ++++++++++ .../toolkit-publishing-conventions.gradle.kts | 24 +-- gradle/libs.versions.toml | 5 +- plugins/amazonq/build.gradle.kts | 20 +-- .../chat/jetbrains-community/build.gradle.kts | 8 +- .../jetbrains-community/build.gradle.kts | 12 +- .../jetbrains-community/build.gradle.kts | 12 +- .../jetbrains-ultimate/build.gradle.kts | 8 +- .../jetbrains-community/build.gradle.kts | 8 +- plugins/core/build.gradle.kts | 2 +- .../core/jetbrains-community/build.gradle.kts | 4 +- .../intellij-standalone/build.gradle.kts | 11 +- .../toolkit/jetbrains-core/build.gradle.kts | 69 +++++---- .../jetbrains-gateway/build.gradle.kts | 19 ++- .../toolkit/jetbrains-rider/build.gradle.kts | 30 ++-- .../jetbrains-ultimate/build.gradle.kts | 15 +- sandbox-all/build.gradle.kts | 18 +-- tmp-all/build.gradle.kts | 27 ++-- 28 files changed, 379 insertions(+), 383 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/toolkit-patch-plugin-xml-conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts diff --git a/.gitignore b/.gitignore index c095776755a..41dcb232c82 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .gradle +.intellijPlatform out/ target/ .idea diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 12c5caf9590..a8ffb0067fb 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { implementation(libs.bundles.jackson) implementation(libs.commonmark) implementation(libs.gradlePlugin.detekt) + implementation(libs.gradlePlugin.ideaExt) implementation(libs.gradlePlugin.intellij) implementation(libs.gradlePlugin.kotlin) implementation(libs.gradlePlugin.testLogger) diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index 2517d7c108d..b2c0d317cc5 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -40,8 +40,7 @@ dependencyResolutionManagement { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") content { // only allowed to pull snapshots of gradle-intellij-plugin from here - includeModule("org.jetbrains.intellij", "org.jetbrains.intellij.gradle.plugin") - includeModule("org.jetbrains.intellij.plugins", "gradle-intellij-plugin") + includeGroupByRegex("org\\.jetbrains\\.intellij\\.platform.*") } } } 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 7cb2bebc46e..7f0f17b2a94 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 @@ -11,8 +11,8 @@ import org.gradle.api.provider.ProviderFactory enum class IdeFlavor { GW, IC, IU, RD } object IdeVersions { - private val commonPlugins = arrayOf( - "vcs-git", + private val commonPlugins = listOf( + "Git4Idea", "org.jetbrains.plugins.terminal", "org.jetbrains.plugins.yaml" ) @@ -23,10 +23,12 @@ object IdeVersions { community = ProductProfile( sdkFlavor = IdeFlavor.IC, sdkVersion = "2023.2.2", - plugins = commonPlugins + listOf( - "java", + bundledPlugins = commonPlugins + listOf( + "com.intellij.java", "com.intellij.gradle", "org.jetbrains.idea.maven", + ), + marketplacePlugins = listOf( "PythonCore:232.8660.185", "Docker:232.8660.185" ) @@ -34,25 +36,20 @@ object IdeVersions { ultimate = ProductProfile( sdkFlavor = IdeFlavor.IU, sdkVersion = "2023.2.2", - plugins = commonPlugins + listOf( + bundledPlugins = commonPlugins + listOf( "JavaScript", - // Transitive dependency needed for javascript - // Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed - "com.intellij.css", "JavaScriptDebugger", "com.intellij.database", "com.jetbrains.codeWithMe", + ), + marketplacePlugins = listOf( "Pythonid:232.8660.185", "org.jetbrains.plugins.go:232.8660.142", - // https://github.com/JetBrains/gradle-intellij-plugin/issues/1056 - "org.intellij.intelliLang" ) ), rider = RiderProfile( sdkVersion = "2023.2", - plugins = commonPlugins + listOf( - "rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607 - ), + bundledPlugins = commonPlugins, netFrameworkTarget = "net472", rdGenVersion = "2023.2.3", nugetVersion = "2023.2.0" @@ -63,10 +60,12 @@ object IdeVersions { community = ProductProfile( sdkFlavor = IdeFlavor.IC, sdkVersion = "2023.3", - plugins = commonPlugins + listOf( - "java", + bundledPlugins = commonPlugins + listOf( + "com.intellij.java", "com.intellij.gradle", "org.jetbrains.idea.maven", + ), + marketplacePlugins = listOf( "PythonCore:233.11799.241", "Docker:233.11799.244" ) @@ -74,25 +73,20 @@ object IdeVersions { ultimate = ProductProfile( sdkFlavor = IdeFlavor.IU, sdkVersion = "2023.3", - plugins = commonPlugins + listOf( + bundledPlugins = commonPlugins + listOf( "JavaScript", - // Transitive dependency needed for javascript - // Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed - "com.intellij.css", "JavaScriptDebugger", "com.intellij.database", "com.jetbrains.codeWithMe", + ), + marketplacePlugins = listOf( "Pythonid:233.11799.241", "org.jetbrains.plugins.go:233.11799.196", - // https://github.com/JetBrains/gradle-intellij-plugin/issues/1056 - "org.intellij.intelliLang" ) ), rider = RiderProfile( sdkVersion = "2023.3", - plugins = commonPlugins + listOf( - "rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607 - ), + bundledPlugins = commonPlugins, netFrameworkTarget = "net472", rdGenVersion = "2023.3.2", nugetVersion = "2023.3.0" @@ -103,17 +97,17 @@ object IdeVersions { gateway = ProductProfile( sdkFlavor = IdeFlavor.GW, sdkVersion = "241.14494-EAP-CANDIDATE-SNAPSHOT", - plugins = arrayOf("org.jetbrains.plugins.terminal") + bundledPlugins = listOf("org.jetbrains.plugins.terminal") ), community = ProductProfile( sdkFlavor = IdeFlavor.IC, sdkVersion = "2024.1", - plugins = commonPlugins + listOf( - "java", + bundledPlugins = commonPlugins + listOf( + "com.intellij.java", "com.intellij.gradle", "org.jetbrains.idea.maven", - // transitive for python - "org.toml.lang:241.14494.150", + ), + marketplacePlugins = listOf( "PythonCore:241.14494.240", "Docker:241.14494.251" ) @@ -121,27 +115,20 @@ object IdeVersions { ultimate = ProductProfile( sdkFlavor = IdeFlavor.IU, sdkVersion = "2024.1", - plugins = commonPlugins + listOf( + bundledPlugins = commonPlugins + listOf( "JavaScript", - // Transitive dependency needed for javascript - // Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed - "com.intellij.css", "JavaScriptDebugger", "com.intellij.database", "com.jetbrains.codeWithMe", - // transitive for python - "org.toml.lang:241.14494.150", + ), + marketplacePlugins = listOf( "Pythonid:241.14494.314", "org.jetbrains.plugins.go:241.14494.240", - // https://github.com/JetBrains/gradle-intellij-plugin/issues/1056 - "org.intellij.intelliLang" ) ), rider = RiderProfile( sdkVersion = "2024.1", - plugins = commonPlugins + listOf( - "rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607 - ), + bundledPlugins = commonPlugins, netFrameworkTarget = "net472", rdGenVersion = "2024.1.1", nugetVersion = "2024.1.0" @@ -162,28 +149,18 @@ object IdeVersions { open class ProductProfile( val sdkFlavor: IdeFlavor, val sdkVersion: String, - val plugins: Array = emptyArray() -) { - fun version(): String? = if (!isLocalPath(sdkVersion)) { - sdkFlavor.name + "-" + sdkVersion - } else { - null - } - - fun localPath(): String? = sdkVersion.takeIf { - isLocalPath(it) - } - - private fun isLocalPath(str: String) = str.startsWith("/") || str.getOrNull(1) == ':' -} + val bundledPlugins: List = emptyList(), + val marketplacePlugins: List = emptyList() +) class RiderProfile( sdkVersion: String, - plugins: Array, val netFrameworkTarget: String, val rdGenVersion: String, // https://central.sonatype.com/artifact/com.jetbrains.rd/rd-gen/2023.2.3/versions - val nugetVersion: String // https://www.nuget.org/packages/JetBrains.Rider.SDK/ -) : ProductProfile(IdeFlavor.RD, sdkVersion, plugins) + val nugetVersion: String, // https://www.nuget.org/packages/JetBrains.Rider.SDK/ + bundledPlugins: List = emptyList(), + marketplacePlugins: List = emptyList(), +) : ProductProfile(IdeFlavor.RD, sdkVersion, bundledPlugins, marketplacePlugins) class Profile( val name: String, diff --git a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/ToolkitIntelliJExtension.kt b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/ToolkitIntelliJExtension.kt index fd9a5ee27ef..9cb147dcc0e 100644 --- a/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/ToolkitIntelliJExtension.kt +++ b/buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/ToolkitIntelliJExtension.kt @@ -15,12 +15,8 @@ abstract class ToolkitIntelliJExtension(private val providers: ProviderFactory) fun ideProfile() = IdeVersions.ideProfile(providers) - fun version(): Provider = productProfile().flatMap { profile -> - providers.provider { profile.version() } - } - - fun localPath(): Provider = productProfile().flatMap { profile -> - providers.provider { profile.localPath() } + fun version(): Provider = productProfile().flatMap { profile -> + providers.provider { profile.sdkVersion } } fun productProfile(): Provider = ideFlavor.flatMap { flavor -> diff --git a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts index b681fc6ab45..70e2a32248e 100644 --- a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts @@ -1,32 +1,26 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.invoke import org.gradle.kotlin.dsl.project import org.gradle.kotlin.dsl.provideDelegate -import org.gradle.kotlin.dsl.withType -import org.gradle.testing.jacoco.plugins.JacocoPluginExtension -import org.gradle.testing.jacoco.plugins.JacocoTaskExtension -import org.jetbrains.intellij.tasks.DownloadRobotServerPluginTask -import org.jetbrains.intellij.tasks.RunIdeForUiTestTask -import org.jetbrains.intellij.utils.OpenedPackages -import software.aws.toolkits.gradle.ciOnly +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformExtension import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { - id("org.jetbrains.intellij") id("toolkit-testing") // Needed so the coverage configurations are present id("toolkit-detekt") id("toolkit-publishing-conventions") + id("toolkit-publish-root-conventions") } -val toolkitIntelliJ = project.extensions.create("intellijToolkit").apply { +toolkitIntelliJ.apply { val runIdeVariant = providers.gradleProperty("runIdeVariant") ideFlavor.set(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC) } @@ -48,17 +42,20 @@ val gatewayResources = configurations.create("gatewayResources") { isCanBeConsumed = false } -intellij { - pluginName.set("aws-toolkit-jetbrains") - - localPath.set(toolkitIntelliJ.localPath()) - version.set(toolkitIntelliJ.version()) +repositories { + intellijPlatform { + defaultRepositories() + } +} - updateSinceUntilBuild.set(false) - instrumentCode.set(false) +intellijPlatform { + projectName = "aws-toolkit-jetbrains" + instrumentCode = false } tasks.prepareSandbox { + val pluginName = intellijPlatform.projectName + intoChild(pluginName.map { "$it/dotnet" }) .from(resharperDlls) @@ -72,6 +69,13 @@ tasks.test { } dependencies { + intellijPlatform { + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + create(type, version) + } + implementation(project(":plugin-toolkit:jetbrains-core")) implementation(project(":plugin-toolkit:jetbrains-ultimate")) project.findProject(":plugin-toolkit:jetbrains-gateway")?.let { @@ -84,58 +88,53 @@ dependencies { resharperDlls(project(":plugin-toolkit:jetbrains-rider", configuration = "resharperDlls")) } +// not available in gradle plugin 2.0 yet // Enable coverage for the UI test target IDE -ciOnly { - extensions.getByType().applyTo(tasks.withType()) -} -tasks.withType { - // TODO: https://github.com/gradle/gradle/issues/15383 - version.set(versionCatalogs.named("libs").findVersion("intellijRemoteRobot").get().requiredVersion) -} -tasks.withType().all { - systemProperty("robot-server.port", remoteRobotPort) - // mac magic - systemProperty("ide.mac.message.dialogs.as.sheets", "false") - systemProperty("jbScreenMenuBar.enabled", "false") - systemProperty("apple.laf.useScreenMenuBar", "false") - systemProperty("ide.mac.file.chooser.native", "false") - - systemProperty("jb.consents.confirmation.enabled", "false") - // This does some magic in EndUserAgreement.java to make it not show the privacy policy - systemProperty("jb.privacy.policy.text", "") - systemProperty("ide.show.tips.on.startup.default.value", false) - - systemProperty("aws.telemetry.skip_prompt", "true") - systemProperty("aws.suppress_deprecation_prompt", true) - systemProperty("idea.trust.all.projects", "true") - - // These are experiments to enable for UI tests - systemProperty("aws.experiment.connectedLocalTerminal", true) - systemProperty("aws.experiment.dynamoDb", true) - - debugOptions { - enabled.set(true) - suspend.set(false) - } - - jvmArgs( - OpenedPackages + listOf( - // very noisy in UI tests - "--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED", - ) - ) - - ciOnly { - configure { - // sync with testing-subplugin - // don't instrument sdk, icons, etc. - includes = listOf("software.aws.toolkits.*") - excludes = listOf("software.aws.toolkits.telemetry.*") - - // 221+ uses a custom classloader and jacoco fails to find classes - isIncludeNoLocationClasses = true - - output = JacocoTaskExtension.Output.TCP_CLIENT // Dump to our jacoco server instead of to a file - } - } -} +//ciOnly { +// extensions.getByType().applyTo(tasks.withType()) +//} +//tasks.withType { +// // TODO: https://github.com/gradle/gradle/issues/15383 +// version.set(versionCatalogs.named("libs").findVersion("intellijRemoteRobot").get().requiredVersion) +//} +// +//tasks.withType().all { +// systemProperty("robot-server.port", remoteRobotPort) +// // mac magic +// systemProperty("ide.mac.message.dialogs.as.sheets", "false") +// systemProperty("jbScreenMenuBar.enabled", "false") +// systemProperty("apple.laf.useScreenMenuBar", "false") +// systemProperty("ide.mac.file.chooser.native", "false") +// +// systemProperty("jb.consents.confirmation.enabled", "false") +// // This does some magic in EndUserAgreement.java to make it not show the privacy policy +// systemProperty("jb.privacy.policy.text", "") +// systemProperty("ide.show.tips.on.startup.default.value", false) +// +// systemProperty("aws.telemetry.skip_prompt", "true") +// systemProperty("aws.suppress_deprecation_prompt", true) +// systemProperty("idea.trust.all.projects", "true") +// +// // These are experiments to enable for UI tests +// systemProperty("aws.experiment.connectedLocalTerminal", true) +// systemProperty("aws.experiment.dynamoDb", true) +// +// debugOptions { +// enabled.set(true) +// suspend.set(false) +// } +// +// ciOnly { +// configure { +// // sync with testing-subplugin +// // don't instrument sdk, icons, etc. +// includes = listOf("software.aws.toolkits.*") +// excludes = listOf("software.aws.toolkits.telemetry.*") +// +// // 221+ uses a custom classloader and jacoco fails to find classes +// isIncludeNoLocationClasses = true +// +// output = JacocoTaskExtension.Output.TCP_CLIENT // Dump to our jacoco server instead of to a file +// } +// } +//} diff --git a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts index 1b18c62d891..91bf3a36280 100644 --- a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts @@ -71,12 +71,6 @@ tasks.check { afterEvaluate { plugins.withType { - // weird implicit dependency issue, maybe with how the task graph works? - // or because tests are on the ide classpath for some reason? - tasks.named("classpathIndexCleanup") { - mustRunAfter(tasks.named("compileIntegrationTestKotlin")) - } - // intellij plugin overrides with instrumented classes that we don't want or need integTestTask.configure { testClassesDirs = integrationTests.output.classesDirs diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index ea9dd0a2119..7f91ccc7ae5 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -1,5 +1,20 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension -project.extensions.create("intellijToolkit") +private val toolkitIntelliJ = project.extensions.create("intellijToolkit") + +plugins { + id("org.jetbrains.intellij.platform") +} + +intellijPlatform { + instrumentCode = false +} + +repositories { + intellijPlatform { + defaultRepositories() + } +} diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts index 3c44813a4cc..59676dbfad9 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts @@ -3,10 +3,8 @@ import org.gradle.internal.os.OperatingSystem import org.gradle.testing.jacoco.plugins.JacocoTaskExtension.Output -import org.jetbrains.intellij.tasks.DownloadRobotServerPluginTask -import org.jetbrains.intellij.tasks.PatchPluginXmlTask -import org.jetbrains.intellij.tasks.RunIdeForUiTestTask -import org.jetbrains.intellij.utils.OpenedPackages +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.tasks.PatchPluginXmlTask import software.aws.toolkits.gradle.buildMetadata import software.aws.toolkits.gradle.ciOnly import software.aws.toolkits.gradle.findFolders @@ -22,8 +20,6 @@ plugins { id("toolkit-intellij-plugin") id("toolkit-kotlin-conventions") id("toolkit-testing") - id("org.jetbrains.intellij") - id("toolkit-patch-plugin-xml-conventions") } // TODO: https://github.com/gradle/gradle/issues/15383 @@ -82,18 +78,36 @@ tasks.processTestResources { } // Run after the project has been evaluated so that the extension (intellijToolkit) has been configured -intellij { +intellijPlatform { // find the name of first subproject depth, or root if not applied to a subproject hierarchy - val projectName = generateSequence(project) { it.parent }.first { it.depth <= 1 }.name - pluginName.convention(projectName) - - localPath.set(toolkitIntelliJ.localPath()) - version.set(toolkitIntelliJ.version()) - - plugins.set(toolkitIntelliJ.productProfile().map { it.plugins.toMutableList() }) - - downloadSources.set(toolkitIntelliJ.ideFlavor.map { it == IdeFlavor.IC && !project.isCi() }) - instrumentCode.set(toolkitIntelliJ.ideFlavor.map { it == IdeFlavor.IC || it == IdeFlavor.IU }) + projectName.convention(generateSequence(project) { it.parent }.first { it.depth <= 1 }.name) + instrumentCode = true +} + +dependencies { + intellijPlatform { + instrumentationTools() + + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + create(type, version) + + bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins }) + plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins }) +// toolkitIntelliJ.productProfile().map { profile -> +//// profile.bundledPlugins.apply { +//// if (isNotEmpty()) { +//// bundledPlugins(this) +//// } +//// } +// profile.marketplacePlugins.apply { +// if (isNotEmpty()) { +// plugins(this) +// } +// } +// } + } } tasks.jar { @@ -106,24 +120,12 @@ tasks.buildSearchableOptions { enabled = false } -// https://github.com/JetBrains/gradle-intellij-plugin/blob/829786d5d196ab942d7e6eb3e472ac0af776d3fa/src/main/kotlin/org/jetbrains/intellij/tasks/RunIdeBase.kt#L315 -val openedPackages = OpenedPackages + with(OperatingSystem.current()) { - when { - isWindows -> listOf( - "--add-opens=java.base/sun.nio.fs=ALL-UNNAMED", - ) - else -> emptyList() - } -} - tasks.withType().all { - systemProperty("log.dir", intellij.sandboxDir.map { "$it-test/logs" }.get()) + systemProperty("log.dir", intellijPlatform.sandboxContainer.map { "$it-test/logs" }.get()) systemProperty("testDataPath", project.rootDir.resolve("testdata").absolutePath) val jetbrainsCoreTestResources = project(":plugin-toolkit:jetbrains-core").projectDir.resolve("tst-resources") systemProperty("idea.log.config.properties.file", jetbrainsCoreTestResources.resolve("toolkit-test-log.properties")) systemProperty("org.gradle.project.ideProfileName", ideProfile.name) - - jvmArgs(openedPackages) } tasks.withType { @@ -159,18 +161,6 @@ tasks.runIde { systemProperty("ide.plugins.snapshot.on.unload.fail", true) systemProperty("memory.snapshots.path", project.rootDir) systemProperty("idea.auto.reload.plugins", false) - - val alternativeIde = providers.environmentVariable("ALTERNATIVE_IDE") - if (alternativeIde.isPresent) { - // remove the trailing slash if there is one or else it will not work - val value = alternativeIde.get() - val path = File(value.trimEnd('/')) - if (path.exists()) { - ideDir.set(path) - } else { - throw GradleException("ALTERNATIVE_IDE path not found $value") - } - } } // rewrite `runtimeElements` to use the `instrumentedJar` variant @@ -180,7 +170,7 @@ tasks.runIde { configurations.runtimeElements { // remove the default artifact and replace with the instrumented jar outgoing.artifacts.clear() - outgoing.artifacts(configurations.instrumentedJar.map { it.artifacts }) + outgoing.artifact(tasks.instrumentedJar) // replace default classes with instrumented classes outgoing.variants { @@ -192,13 +182,3 @@ configurations.runtimeElements { } } } - -// 1.x declares dependsOn, but we want mustRunAfter -// https://github.com/JetBrains/intellij-platform-gradle-plugin/blob/47e2de88e86ffdefd3f6f45c2bb3181366ee4fa4/src/main/kotlin/org/jetbrains/intellij/IntelliJPlugin.kt#L1702 -tasks.classpathIndexCleanup { - dependsOn.clear() - - project.tasks - .runCatching { named("compileTestKotlin") } - .onSuccess { mustRunAfter(it) } -} diff --git a/buildSrc/src/main/kotlin/toolkit-patch-plugin-xml-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-patch-plugin-xml-conventions.gradle.kts deleted file mode 100644 index af7cf6ca8d3..00000000000 --- a/buildSrc/src/main/kotlin/toolkit-patch-plugin-xml-conventions.gradle.kts +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import org.jetbrains.intellij.tasks.BuildPluginTask -import org.jetbrains.intellij.tasks.PatchPluginXmlTask -import software.aws.toolkits.gradle.buildMetadata -import software.aws.toolkits.gradle.intellij.IdeVersions -import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension -import software.aws.toolkits.gradle.intellij.toolkitIntelliJ -import software.aws.toolkits.gradle.isCi - -plugins { - id("toolkit-intellij-plugin") -} - -val ideProfile = IdeVersions.ideProfile(project) -val toolkitVersion: String by project - -// please check changelog generation logic if this format is changed -version = "$toolkitVersion-${ideProfile.shortName}" - -tasks.withType().all { - sinceBuild.set(toolkitIntelliJ.ideProfile().map { it.sinceVersion }) - untilBuild.set(toolkitIntelliJ.ideProfile().map { it.untilVersion }) -} - -// attach the current commit hash on local builds -if (!project.isCi()) { - val buildMetadata = buildMetadata() - tasks.withType().all { - version.set("${project.version}+$buildMetadata") - } - - tasks.named("buildPlugin") { - archiveClassifier.set(buildMetadata) - } -} diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts new file mode 100644 index 00000000000..e59ba45f8c9 --- /dev/null +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -0,0 +1,77 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.tasks.BuildPluginTask +import org.jetbrains.intellij.platform.gradle.tasks.PatchPluginXmlTask +import software.aws.toolkits.gradle.buildMetadata +import software.aws.toolkits.gradle.intellij.IdeFlavor +import software.aws.toolkits.gradle.intellij.IdeVersions +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ +import software.aws.toolkits.gradle.isCi + +// publish-root should imply publishing-conventions, but we keep separate so that gateway always has the GW flavor +plugins { + id("toolkit-intellij-plugin") +} + +val ideProfile = IdeVersions.ideProfile(project) +val toolkitVersion: String by project + +// please check changelog generation logic if this format is changed +version = "$toolkitVersion-${ideProfile.shortName}" + +tasks.withType().all { + sinceBuild.set(toolkitIntelliJ.ideProfile().map { it.sinceVersion }) + untilBuild.set(toolkitIntelliJ.ideProfile().map { it.untilVersion }) +} + +// attach the current commit hash on local builds +if (!project.isCi()) { + val buildMetadata = buildMetadata() + tasks.withType().all { + pluginVersion.set("${project.version}+$buildMetadata") + } + + tasks.named("buildPlugin") { + archiveClassifier.set(buildMetadata) + } +} + +dependencies { + intellijPlatform { + pluginVerifier() + + val alternativeIde = providers.environmentVariable("ALTERNATIVE_IDE") + if (alternativeIde.isPresent) { + // remove the trailing slash if there is one or else it will not work + val value = alternativeIde.get() + val path = File(value.trimEnd('/')) + if (path.exists()) { + local(path) + } else { + throw GradleException("ALTERNATIVE_IDE path not found $value") + } + } else { + val runIdeVariant = providers.gradleProperty("runIdeVariant") + + // prefer versions declared in IdeVersions + val (type,version) = if (runIdeVariant.isPresent) { + toolkitIntelliJ.apply { + ideFlavor.set(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC) + } + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + type to version + } else { + val type = runIdeVariant.map { IntelliJPlatformType.fromCode(it) } + val version = IdeVersions.ideProfile(providers).map { it.name } + + type to version + } + + create(type, version) + } + } +} diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index e9c97acefe4..f3468b93387 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -3,20 +3,17 @@ import software.aws.toolkits.gradle.intellij.IdeVersions plugins { - id("org.jetbrains.intellij") + id("org.jetbrains.intellij.platform") } -val ideProfile = IdeVersions.ideProfile(project) +intellijPlatform { + publishing { + val publishToken: String by project + val publishChannel: String by project -val publishToken: String by project -val publishChannel: String by project - -intellij { - version.set(ideProfile.community.version()) - localPath.set(ideProfile.community.localPath()) - - updateSinceUntilBuild.set(false) - instrumentCode.set(false) + token.set(publishToken) + channels.set(publishChannel.split(",").map { it.trim() }) + } } configurations { @@ -36,8 +33,3 @@ configurations { tasks.check { dependsOn(tasks.verifyPlugin) } - -tasks.publishPlugin { - token.set(publishToken) - channels.set(publishChannel.split(",").map { it.trim() }) -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5d03ab57a74..66dab77a14f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ assertJ = "3.20.2" # Upgrading leads to SAM errors: https://youtrack.jetbrains.c awsSdk = "2.25.33" commonmark = "0.17.1" detekt = "1.23.6" -intellijGradle = "1.17.3" +intellijGradle = "2.0.0-beta4" intellijRemoteRobot = "0.11.22" jackson = "2.16.1" jacoco = "0.8.12" @@ -70,7 +70,8 @@ detekt-api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = detekt-formattingRules = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } detekt-test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version.ref = "detekt" } gradlePlugin-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } -gradlePlugin-intellij = { module = "org.jetbrains.intellij:org.jetbrains.intellij.gradle.plugin", version.ref = "intellijGradle" } +gradlePlugin-ideaExt = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version = "1.1.8" } +gradlePlugin-intellij = { module = "org.jetbrains.intellij.platform:intellij-platform-gradle-plugin", version.ref = "intellijGradle" } gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } gradlePlugin-testLogger = { module = "com.adarshr:gradle-test-logger-plugin", version.ref = "testLogger" } gradlePlugin-testRetry = { module = "org.gradle:test-retry-gradle-plugin", version.ref = "testRetry" } diff --git a/plugins/amazonq/build.gradle.kts b/plugins/amazonq/build.gradle.kts index b7afaf82e2f..071421e90b1 100644 --- a/plugins/amazonq/build.gradle.kts +++ b/plugins/amazonq/build.gradle.kts @@ -1,19 +1,21 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import software.aws.toolkits.gradle.changelog.tasks.GeneratePluginChangeLog import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { id("toolkit-publishing-conventions") - id("toolkit-patch-plugin-xml-conventions") + id("toolkit-publish-root-conventions") id("toolkit-jvm-conventions") } val changelog = tasks.register("pluginChangeLog") { includeUnreleased.set(true) - changeLogFile.set(project.file("$buildDir/changelog/change-notes.xml")) + changeLogFile.value(layout.buildDirectory.file("/changelog/change-notes.xml")) } tasks.jar { @@ -23,15 +25,11 @@ tasks.jar { } } -intellij { - plugins.set( - listOf( - project(":plugin-core") - ) - ) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + implementation(project(":plugin-amazonq:chat")) implementation(project(":plugin-amazonq:codetransform")) implementation(project(":plugin-amazonq:codewhisperer")) @@ -62,7 +60,5 @@ tasks.check { subDirs.forEach { insideService-> dependsOn(":plugin-amazonq:${serviceSubDir.name}:${insideService.name}:check") } - } - } diff --git a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts index ee03943c631..daf5d50d116 100644 --- a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts @@ -11,11 +11,11 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + implementation(project(":plugin-amazonq:shared:jetbrains-community")) // everything references codewhisperer, which is not ideal implementation(project(":plugin-amazonq:codewhisperer:jetbrains-community")) diff --git a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts index af259791b04..89d55f7e815 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts @@ -11,11 +11,11 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + implementation(project(":plugin-amazonq:shared:jetbrains-community")) // hack because transform has a chat entrypoint implementation(project(":plugin-amazonq:chat:jetbrains-community")) @@ -28,10 +28,10 @@ dependencies { } // hack because our test structure currently doesn't make complete sense -tasks.prepareTestingSandbox { +tasks.prepareTestSandbox { val pluginXmlJar = project(":plugin-amazonq").tasks.jar dependsOn(pluginXmlJar) - intoChild(pluginName.map { "$it/lib" }) + intoChild(intellijPlatform.projectName.map { "$it/lib" }) .from(pluginXmlJar) } diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index 64d2482b6d0..e1ca17cf9b0 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -11,11 +11,11 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + compileOnly(project(":plugin-core:jetbrains-community")) implementation(project(":plugin-amazonq:shared:jetbrains-community")) @@ -27,10 +27,10 @@ dependencies { } // hack because our test structure currently doesn't make complete sense -tasks.prepareTestingSandbox { +tasks.prepareTestSandbox { val pluginXmlJar = project(":plugin-amazonq").tasks.jar dependsOn(pluginXmlJar) - intoChild(pluginName.map { "$it/lib" }) + intoChild(intellijPlatform.projectName.map { "$it/lib" }) .from(pluginXmlJar) } diff --git a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts index a4aa4970d79..f12aa9c7fe8 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts @@ -11,11 +11,11 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IU) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + compileOnly(project(":plugin-amazonq:codewhisperer:jetbrains-community")) compileOnly(project(":plugin-amazonq:shared:jetbrains-ultimate")) diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts index 739b101506e..d7943798eec 100644 --- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts @@ -11,11 +11,11 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + compileOnlyApi(project(":plugin-core:jetbrains-community")) // CodeWhispererTelemetryService uses a CircularFifoQueue diff --git a/plugins/core/build.gradle.kts b/plugins/core/build.gradle.kts index b1988fcf387..c28bb4dadb2 100644 --- a/plugins/core/build.gradle.kts +++ b/plugins/core/build.gradle.kts @@ -6,7 +6,7 @@ import software.aws.toolkits.gradle.intellij.IdeVersions plugins { id("toolkit-publishing-conventions") - id("toolkit-patch-plugin-xml-conventions") + id("toolkit-publish-root-conventions") id("toolkit-jvm-conventions") } diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 14f35a545f5..3f23e7104e0 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -65,10 +65,10 @@ tasks.withType { } // hack because our test structure currently doesn't make complete sense -tasks.prepareTestingSandbox { +tasks.prepareTestSandbox { val pluginXmlJar = project(":plugin-core").tasks.jar dependsOn(pluginXmlJar) - intoChild(pluginName.map { "$it/lib" }) + intoChild(intellijPlatform.projectName.map { "$it/lib" }) .from(pluginXmlJar) } diff --git a/plugins/toolkit/intellij-standalone/build.gradle.kts b/plugins/toolkit/intellij-standalone/build.gradle.kts index 0e9d4f3d79a..cf5fef93662 100644 --- a/plugins/toolkit/intellij-standalone/build.gradle.kts +++ b/plugins/toolkit/intellij-standalone/build.gradle.kts @@ -5,9 +5,14 @@ plugins { id("temp-toolkit-intellij-root-conventions") } -intellij { - pluginName.set("aws-toolkit-jetbrains-standalone") - plugins.add(project(":plugin-core")) +intellijPlatform { + projectName = "aws-toolkit-jetbrains-standalone" +} + +dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } } tasks.check { diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 44e4768ba8e..a6c149cad16 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -4,12 +4,13 @@ import com.jetbrains.plugin.structure.base.utils.inputStream import com.jetbrains.plugin.structure.base.utils.simpleName import com.jetbrains.plugin.structure.intellij.utils.JDOMUtil -import org.jetbrains.intellij.transformXml import software.aws.toolkits.gradle.buildMetadata import software.aws.toolkits.gradle.changelog.tasks.GeneratePluginChangeLog import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions import software.aws.toolkits.gradle.isCi +import java.io.StringWriter +import java.nio.file.Path val toolkitVersion: String by project val ideProfile = IdeVersions.ideProfile(project) @@ -26,8 +27,10 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } -intellij { - plugins.add(project(":plugin-core")) +dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } } val changelog = tasks.register("pluginChangeLog") { @@ -53,33 +56,33 @@ tasks.integrationTest { systemProperty("aws.dev.useDAG", true) } -val gatewayPluginXml = tasks.create("patchPluginXmlForGateway") { - pluginXmlFiles.set(tasks.patchPluginXml.map { it.pluginXmlFiles }.get()) - destinationDir.set(project.buildDir.resolve("patchedPluginXmlFilesGW")) +val gatewayPluginXml = tasks.create("patchPluginXmlForGateway") { +// pluginXmlFiles.set(tasks.patchPluginXml.map { it.pluginXmlFiles }.get()) +// destinationDir.set(project.buildDir.resolve("patchedPluginXmlFilesGW")) val buildSuffix = if (!project.isCi()) "+${buildMetadata()}" else "" - version.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") +// version.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") // jetbrains expects gateway plugin to be dynamic - doLast { - pluginXmlFiles.get() - .map(File::toPath) - .forEach { p -> - val path = destinationDir.get() - .asFile.toPath().toAbsolutePath() - .resolve(p.simpleName) - - val document = path.inputStream().use { inputStream -> - JDOMUtil.loadDocument(inputStream) - } - - document.rootElement - .getAttribute("require-restart") - .setValue("false") - - transformXml(document, path) - } - } +// doLast { +// pluginXmlFiles.get() +// .map(File::toPath) +// .forEach { p -> +// val path = destinationDir.get() +// .asFile.toPath().toAbsolutePath() +// .resolve(p.simpleName) +// +// val document = path.inputStream().use { inputStream -> +// JDOMUtil.loadDocument(inputStream) +// } +// +// document.rootElement +// .getAttribute("require-restart") +// .setValue("false") +// +// transformXml(document, path) +// } +// } } val gatewayArtifacts by configurations.creating { @@ -172,3 +175,17 @@ dependencies { testImplementation(libs.slf4j.api) testRuntimeOnly(libs.slf4j.jdk14) } +// +//fun transformXml(document: Document, path: Path) { +// val xmlOutput = XMLOutputter() +// xmlOutput.format.apply { +// indent = " " +// omitDeclaration = true +// textMode = Format.TextMode.TRIM +// } +// +// StringWriter().use { +// xmlOutput.output(document, it) +// path.writeText(it.toString()) +// } +//} diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index f0441ab7e4f..948c21b23ce 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import net.bytebuddy.utility.RandomString -import org.jetbrains.intellij.tasks.PrepareSandboxTask +import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor plugins { @@ -13,15 +13,14 @@ plugins { id("toolkit-integration-testing") } -intellij { - pluginName.set("aws-toolkit-jetbrains") - type.set("GW") -} - intellijToolkit { ideFlavor.set(IdeFlavor.GW) } +intellijPlatform { + projectName = "aws-toolkit-jetbrains" +} + sourceSets { create("gatewayOnly") { java { @@ -119,19 +118,19 @@ tasks.jar { } tasks.withType().all { - intoChild(pluginName.map { "$it/gateway-resources" }) + intoChild(intellijPlatform.projectName.map { "$it/gateway-resources" }) .from(gatewayResourcesDir) } listOf( tasks.prepareSandbox, - tasks.prepareTestingSandbox + tasks.prepareTestSandbox ).forEach { it.configure { - runtimeClasspathFiles.set(gatewayOnlyRuntimeClasspath) + runtimeClasspath.setFrom(gatewayOnlyRuntimeClasspath) dependsOn(gatewayOnlyResourcesJar) - intoChild(pluginName.map { "$it/lib" }) + intoChild(intellijPlatform.projectName.map { "$it/lib" }) .from(gatewayOnlyResourcesJar) } } diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index 4184d547054..b9a93fc1185 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -6,7 +6,7 @@ import com.jetbrains.rd.generator.gradle.RdGenPlugin import com.jetbrains.rd.generator.gradle.RdGenTask import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask -import org.jetbrains.intellij.tasks.PrepareSandboxTask +import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions import java.nio.file.Path @@ -40,11 +40,6 @@ intellijToolkit { ideFlavor.set(IdeFlavor.RD) } -intellij { - type.set("RD") - plugins.add(project(":plugin-core")) -} - sourceSets { main { java.srcDirs(layout.buildDirectory.dir("generated-src")) @@ -52,6 +47,10 @@ sourceSets { } dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } + implementation(project(":plugin-toolkit:jetbrains-core")) testImplementation(project(":plugin-toolkit:jetbrains-core")) @@ -100,11 +99,11 @@ configure { verbose = true hashFolder = rdgenDir.toString() - classpath({ - val ijDependency = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() - println("Calculating classpath for rdgen, intellij.ideaDependency is: $ijDependency") - File(ijDependency, "lib/rd").resolve("rider-model.jar").absolutePath - }) +// classpath({ +// val ijDependency = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() +// println("Calculating classpath for rdgen, intellij.ideaDependency is: $ijDependency") +// File(ijDependency, "lib/rd").resolve("rider-model.jar").absolutePath +// }) sources(projectDir.resolve("protocol/model")) packages = "model" @@ -233,7 +232,8 @@ val buildReSharperPlugin = tasks.register("buildReSharperPlugin") { } fun getNugetPackagesPath(): File { - val sdkPath = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() +// val sdkPath = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() + val sdkPath = "" println("SDK path: $sdkPath") val riderSdk = File(sdkPath, "lib/DotNetSdkForRdPlugins") @@ -287,15 +287,15 @@ tasks.clean { // `runIde` depends on `prepareSandbox` task and then executes IJ inside the sandbox dir // `prepareSandbox` depends on the standard Java `jar` and then copies everything into the sandbox dir -intellij { +intellijPlatform { // kotlin and .NET parts of the plugin need to be in the same plugin base directroy - pluginName.set("aws-toolkit-jetbrains") + projectName = "aws-toolkit-jetbrains" } tasks.withType().all { dependsOn(resharperDllsDir) - intoChild(pluginName.map { "$it/dotnet" }) + intoChild(intellijPlatform.projectName.map { "$it/dotnet" }) .from(resharperDllsDir) } diff --git a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts index 7e03b8d8dc1..bee30edb03a 100644 --- a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts +++ b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts @@ -11,7 +11,14 @@ plugins { id("toolkit-integration-testing") } +intellijToolkit { + ideFlavor.set(IdeFlavor.IU) +} + dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + } compileOnlyApi(project(":plugin-toolkit:jetbrains-core")) compileOnlyApi(project(":plugin-core:jetbrains-ultimate")) @@ -24,11 +31,3 @@ dependencies { // delete when fully split testRuntimeOnly(project(":plugin-core:jetbrains-ultimate")) } - -intellijToolkit { - ideFlavor.set(IdeFlavor.IU) -} - -intellij { - plugins.add(project(":plugin-core")) -} diff --git a/sandbox-all/build.gradle.kts b/sandbox-all/build.gradle.kts index a3de6d379d3..d6c5b8b53dd 100644 --- a/sandbox-all/build.gradle.kts +++ b/sandbox-all/build.gradle.kts @@ -1,12 +1,13 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { id("toolkit-intellij-plugin") - id("org.jetbrains.intellij") + id("org.jetbrains.intellij.platform") } toolkitIntelliJ.apply { @@ -14,21 +15,6 @@ toolkitIntelliJ.apply { ideFlavor.set(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC) } -intellij { - version.set(toolkitIntelliJ.version()) - localPath.set(toolkitIntelliJ.localPath()) - plugins.set( - listOf( - project(":plugin-core"), - project(":plugin-amazonq"), - project(":plugin-toolkit:intellij-standalone"), - ) - ) - - updateSinceUntilBuild.set(false) - instrumentCode.set(false) -} - tasks.buildPlugin { doFirst { throw GradleException("This project does not produce an artifact. Use project-specific command, e.g. :plugin-toolkit:intellij-standalone:runIde") diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 47c3593dadb..84767de1a7c 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -1,26 +1,25 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { - id("org.jetbrains.intellij") + id("toolkit-intellij-plugin") id("toolkit-kotlin-conventions") id("toolkit-testing") } -intellij { - val ideProfile = IdeVersions.ideProfile(project) - version.set(ideProfile.community.version()) - localPath.set(ideProfile.community.localPath()) - plugins.set( - listOf( - project(":plugin-core"), - project(":plugin-amazonq"), - "aws.toolkit:2.19-${ideProfile.shortName}" - ) - ) +intellijToolkit { + ideFlavor.set(IdeFlavor.IC) +} - updateSinceUntilBuild.set(false) - instrumentCode.set(false) +dependencies { + intellijPlatform { + localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-amazonq")) + plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) + } } From a428d4f31c986d837141b84f1d454bd791690ee8 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 29 May 2024 10:03:19 -0400 Subject: [PATCH 18/71] wip --- ...olkit-intellij-root-conventions.gradle.kts | 6 ---- .../kotlin/toolkit-intellij-plugin.gradle.kts | 13 ++++++++ .../toolkit-intellij-subplugin.gradle.kts | 32 ------------------- ...oolkit-publish-root-conventions.gradle.kts | 13 +++----- gradle.properties | 3 ++ gradle/libs.versions.toml | 3 +- plugins/amazonq/build.gradle.kts | 3 +- 7 files changed, 25 insertions(+), 48 deletions(-) diff --git a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts index 70e2a32248e..50ae3dac4a5 100644 --- a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts @@ -42,12 +42,6 @@ val gatewayResources = configurations.create("gatewayResources") { isCanBeConsumed = false } -repositories { - intellijPlatform { - defaultRepositories() - } -} - intellijPlatform { projectName = "aws-toolkit-jetbrains" instrumentCode = false diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 7f91ccc7ae5..2dc4600bebb 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -13,8 +13,21 @@ intellijPlatform { instrumentCode = false } +// there is an issue if this is declared more than once in a project (either directly or through script plugins) repositories { intellijPlatform { defaultRepositories() } } + +// hack for fix in beta4 +// - In plugin 'org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin$Inject' type 'org.jetbrains.intellij.platform.gradle.tasks.GenerateManifestTask' property 'kotlinStdlibBundled' doesn't have a configured value. +// +// Reason: This property isn't marked as optional and no value has been configured. +// +// Possible solutions: +// 1. Assign a value to 'kotlinStdlibBundled'. +// 2. Mark property 'kotlinStdlibBundled' as optional. +tasks.generateManifest { + kotlinStdlibBundled = false +} diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts index 59676dbfad9..e99a7f45b0c 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts @@ -95,18 +95,6 @@ dependencies { bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins }) plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins }) -// toolkitIntelliJ.productProfile().map { profile -> -//// profile.bundledPlugins.apply { -//// if (isNotEmpty()) { -//// bundledPlugins(this) -//// } -//// } -// profile.marketplacePlugins.apply { -// if (isNotEmpty()) { -// plugins(this) -// } -// } -// } } } @@ -162,23 +150,3 @@ tasks.runIde { systemProperty("memory.snapshots.path", project.rootDir) systemProperty("idea.auto.reload.plugins", false) } - -// rewrite `runtimeElements` to use the `instrumentedJar` variant -// there should never be a reason to use the default artifact at runtime, but `testFixturesRuntimeElements` pulls in `runtimeElements` -// which is causing conflict between the `runtimeElements` and `instrumentedJar` variants -// additionally more cleanly solves another headache from the IDE defaulting to instrumented classes while navigating between modules -configurations.runtimeElements { - // remove the default artifact and replace with the instrumented jar - outgoing.artifacts.clear() - outgoing.artifact(tasks.instrumentedJar) - - // replace default classes with instrumented classes - outgoing.variants { - get("classes").apply { - artifacts.clear() - artifact(tasks.instrumentCode) { - type = ArtifactTypeDefinition.JVM_CLASS_DIRECTORY - } - } - } -} diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index e59ba45f8c9..5857cd2b8c3 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -56,19 +56,16 @@ dependencies { val runIdeVariant = providers.gradleProperty("runIdeVariant") // prefer versions declared in IdeVersions - val (type,version) = if (runIdeVariant.isPresent) { - toolkitIntelliJ.apply { - ideFlavor.set(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC) - } + toolkitIntelliJ.apply { + ideFlavor.convention(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC) + } + val (type, version) = if (runIdeVariant.isPresent) { val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } val version = toolkitIntelliJ.version() type to version } else { - val type = runIdeVariant.map { IntelliJPlatformType.fromCode(it) } - val version = IdeVersions.ideProfile(providers).map { it.name } - - type to version + provider { IntelliJPlatformType.IntellijIdeaCommunity } to toolkitIntelliJ.version() } create(type, version) diff --git a/gradle.properties b/gradle.properties index bdbaca13100..972390ee6f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,3 +25,6 @@ systemProp.gradle.enterprise.testretry.enabled=false # outputs to build/reports/kotlin-build kotlin.build.report.output=file + +# don't bundle Kotlin stdlib with plugin +kotlin.stdlib.default.dependency=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 66dab77a14f..cdc132826f9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,6 +6,7 @@ assertJ = "3.20.2" # Upgrading leads to SAM errors: https://youtrack.jetbrains.c awsSdk = "2.25.33" commonmark = "0.17.1" detekt = "1.23.6" +intellijExt = "1.1.8" intellijGradle = "2.0.0-beta4" intellijRemoteRobot = "0.11.22" jackson = "2.16.1" @@ -70,7 +71,7 @@ detekt-api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = detekt-formattingRules = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } detekt-test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version.ref = "detekt" } gradlePlugin-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } -gradlePlugin-ideaExt = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version = "1.1.8" } +gradlePlugin-ideaExt = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version.ref = "intellijExt" } gradlePlugin-intellij = { module = "org.jetbrains.intellij.platform:intellij-platform-gradle-plugin", version.ref = "intellijGradle" } gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } gradlePlugin-testLogger = { module = "com.adarshr:gradle-test-logger-plugin", version.ref = "testLogger" } diff --git a/plugins/amazonq/build.gradle.kts b/plugins/amazonq/build.gradle.kts index 071421e90b1..b545e9ac525 100644 --- a/plugins/amazonq/build.gradle.kts +++ b/plugins/amazonq/build.gradle.kts @@ -15,7 +15,7 @@ plugins { val changelog = tasks.register("pluginChangeLog") { includeUnreleased.set(true) - changeLogFile.value(layout.buildDirectory.file("/changelog/change-notes.xml")) + changeLogFile.value(layout.buildDirectory.file("changelog/change-notes.xml")) } tasks.jar { @@ -27,6 +27,7 @@ tasks.jar { dependencies { intellijPlatform { + // https://github.com/JetBrains/intellij-platform-gradle-plugin/issues/1620 localPlugin(project(":plugin-core")) } From b2b8f756babbb9e572ff6981ad39d5e1cff8a29a Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 29 May 2024 11:16:00 -0400 Subject: [PATCH 19/71] core zip --- .../kotlin/toolkit-publish-root-conventions.gradle.kts | 10 ++++++++++ plugins/amazonq/build.gradle.kts | 3 +-- .../amazonq/chat/jetbrains-community/build.gradle.kts | 2 +- .../codetransform/jetbrains-community/build.gradle.kts | 2 +- .../codewhisperer/jetbrains-community/build.gradle.kts | 2 +- .../codewhisperer/jetbrains-ultimate/build.gradle.kts | 2 +- .../shared/jetbrains-community/build.gradle.kts | 2 +- plugins/toolkit/intellij-standalone/build.gradle.kts | 2 +- plugins/toolkit/jetbrains-core/build.gradle.kts | 2 +- plugins/toolkit/jetbrains-rider/build.gradle.kts | 2 +- plugins/toolkit/jetbrains-ultimate/build.gradle.kts | 2 +- tmp-all/build.gradle.kts | 4 ++-- 12 files changed, 22 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index 5857cd2b8c3..b2054aa789d 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -72,3 +72,13 @@ dependencies { } } } + +// hack around: https://github.com/JetBrains/intellij-platform-gradle-plugin/issues/1620 +val pluginZip by configurations.creating { + isCanBeConsumed = true + isCanBeResolved = false +} + +artifacts { + add("pluginZip", tasks.buildPlugin) +} diff --git a/plugins/amazonq/build.gradle.kts b/plugins/amazonq/build.gradle.kts index b545e9ac525..bda309b8991 100644 --- a/plugins/amazonq/build.gradle.kts +++ b/plugins/amazonq/build.gradle.kts @@ -27,8 +27,7 @@ tasks.jar { dependencies { intellijPlatform { - // https://github.com/JetBrains/intellij-platform-gradle-plugin/issues/1620 - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } implementation(project(":plugin-amazonq:chat")) diff --git a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts index daf5d50d116..45a5490a2c8 100644 --- a/plugins/amazonq/chat/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/chat/jetbrains-community/build.gradle.kts @@ -13,7 +13,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } implementation(project(":plugin-amazonq:shared:jetbrains-community")) diff --git a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts index 89d55f7e815..e1d4800874a 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codetransform/jetbrains-community/build.gradle.kts @@ -13,7 +13,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } implementation(project(":plugin-amazonq:shared:jetbrains-community")) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts index e1ca17cf9b0..0dc093f25cf 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-community/build.gradle.kts @@ -13,7 +13,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } compileOnly(project(":plugin-core:jetbrains-community")) diff --git a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts index f12aa9c7fe8..a1578ab0c85 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts @@ -13,7 +13,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } compileOnly(project(":plugin-amazonq:codewhisperer:jetbrains-community")) diff --git a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts index d7943798eec..30cfdb7bb05 100644 --- a/plugins/amazonq/shared/jetbrains-community/build.gradle.kts +++ b/plugins/amazonq/shared/jetbrains-community/build.gradle.kts @@ -13,7 +13,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } compileOnlyApi(project(":plugin-core:jetbrains-community")) diff --git a/plugins/toolkit/intellij-standalone/build.gradle.kts b/plugins/toolkit/intellij-standalone/build.gradle.kts index cf5fef93662..560176ddf54 100644 --- a/plugins/toolkit/intellij-standalone/build.gradle.kts +++ b/plugins/toolkit/intellij-standalone/build.gradle.kts @@ -11,7 +11,7 @@ intellijPlatform { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } } diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index a6c149cad16..105156078d9 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -29,7 +29,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } } diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index b9a93fc1185..407b8a2725c 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -48,7 +48,7 @@ sourceSets { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } implementation(project(":plugin-toolkit:jetbrains-core")) diff --git a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts index bee30edb03a..68282360d2b 100644 --- a/plugins/toolkit/jetbrains-ultimate/build.gradle.kts +++ b/plugins/toolkit/jetbrains-ultimate/build.gradle.kts @@ -17,7 +17,7 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) + localPlugin(project(":plugin-core", "pluginZip")) } compileOnlyApi(project(":plugin-toolkit:jetbrains-core")) compileOnlyApi(project(":plugin-core:jetbrains-ultimate")) diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 84767de1a7c..76282e3a5d6 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -18,8 +18,8 @@ intellijToolkit { dependencies { intellijPlatform { - localPlugin(project(":plugin-core")) - localPlugin(project(":plugin-amazonq")) + localPlugin(project(":plugin-core", "pluginZip")) + localPlugin(project(":plugin-amazonq", "pluginZip")) plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) } } From 944392944d1a565de8e3510f2fd261ccc6fa16af Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 29 May 2024 11:17:43 -0400 Subject: [PATCH 20/71] sandbox --- sandbox-all/build.gradle.kts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sandbox-all/build.gradle.kts b/sandbox-all/build.gradle.kts index d6c5b8b53dd..d5031b98cb3 100644 --- a/sandbox-all/build.gradle.kts +++ b/sandbox-all/build.gradle.kts @@ -7,7 +7,6 @@ import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { id("toolkit-intellij-plugin") - id("org.jetbrains.intellij.platform") } toolkitIntelliJ.apply { @@ -20,3 +19,16 @@ tasks.buildPlugin { throw GradleException("This project does not produce an artifact. Use project-specific command, e.g. :plugin-toolkit:intellij-standalone:runIde") } } + +dependencies { + intellijPlatform { + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + create(type, version) + + localPlugin(project(":plugin-core", "pluginZip")) + localPlugin(project(":plugin-amazonq", "pluginZip")) + localPlugin(project(":plugin-toolkit:intellij-standalone", "pluginZip")) + } +} From 5014ac7f3cf69e0777924295541cde919f0e85fd Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 30 May 2024 10:51:45 -0400 Subject: [PATCH 21/71] rider --- .../kotlin/toolkit-intellij-plugin.gradle.kts | 12 ---------- gradle/libs.versions.toml | 2 +- .../toolkit/jetbrains-rider/build.gradle.kts | 22 ++++++++++++------- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 2dc4600bebb..072a89f3d89 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -19,15 +19,3 @@ repositories { defaultRepositories() } } - -// hack for fix in beta4 -// - In plugin 'org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin$Inject' type 'org.jetbrains.intellij.platform.gradle.tasks.GenerateManifestTask' property 'kotlinStdlibBundled' doesn't have a configured value. -// -// Reason: This property isn't marked as optional and no value has been configured. -// -// Possible solutions: -// 1. Assign a value to 'kotlinStdlibBundled'. -// 2. Mark property 'kotlinStdlibBundled' as optional. -tasks.generateManifest { - kotlinStdlibBundled = false -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cdc132826f9..13cab3d95bf 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ awsSdk = "2.25.33" commonmark = "0.17.1" detekt = "1.23.6" intellijExt = "1.1.8" -intellijGradle = "2.0.0-beta4" +intellijGradle = "2.0.0-beta5" intellijRemoteRobot = "0.11.22" jackson = "2.16.1" jacoco = "0.8.12" diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index 407b8a2725c..fad209eb7a0 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -95,15 +95,22 @@ val rdgenDir = File("$nonLazyBuildDir/rdgen/") rdgenDir.mkdirs() +// https://github.com/JetBrains/resharper-unity/blob/master/rider/build.gradle.kts +val rdLibDirectory: () -> File = { file(intellijPlatform.platformPath.resolve("lib/rd/")) } + +val rdModelJarFile: File by lazy { + val jarFile = File(rdLibDirectory(), "rider-model.jar").canonicalFile + assert(jarFile.isFile) + return@lazy jarFile +} + configure { verbose = true hashFolder = rdgenDir.toString() -// classpath({ -// val ijDependency = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() -// println("Calculating classpath for rdgen, intellij.ideaDependency is: $ijDependency") -// File(ijDependency, "lib/rd").resolve("rider-model.jar").absolutePath -// }) + classpath({ + rdModelJarFile + }) sources(projectDir.resolve("protocol/model")) packages = "model" @@ -232,11 +239,10 @@ val buildReSharperPlugin = tasks.register("buildReSharperPlugin") { } fun getNugetPackagesPath(): File { -// val sdkPath = tasks.setupDependencies.flatMap { it.idea }.map { it.classes }.get() - val sdkPath = "" + val sdkPath = rdLibDirectory() println("SDK path: $sdkPath") - val riderSdk = File(sdkPath, "lib/DotNetSdkForRdPlugins") + val riderSdk = File("lib/DotNetSdkForRdPlugins") println("NuGet packages: $riderSdk") if (!riderSdk.isDirectory) error("$riderSdk does not exist or not a directory") From b5fc1911b634dc80f48cbf3483891a6f399439e5 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 31 May 2024 11:03:45 -0400 Subject: [PATCH 22/71] rider --- .../src/main/kotlin/toolkit-intellij-subplugin.gradle.kts | 2 +- .../main/kotlin/toolkit-publish-root-conventions.gradle.kts | 1 + gradle.properties | 3 +++ plugins/toolkit/jetbrains-rider/build.gradle.kts | 6 ++---- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts index e99a7f45b0c..b513a5acccc 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts @@ -92,7 +92,7 @@ dependencies { val version = toolkitIntelliJ.version() create(type, version) - + jetbrainsRuntime() bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins }) plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins }) } diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index b2054aa789d..b8b1ccb6352 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -69,6 +69,7 @@ dependencies { } create(type, version) + jetbrainsRuntime() } } } diff --git a/gradle.properties b/gradle.properties index 972390ee6f7..37d6cf5c04f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,3 +28,6 @@ kotlin.build.report.output=file # don't bundle Kotlin stdlib with plugin kotlin.stdlib.default.dependency=false + +# need the maven variant to build rider correctly +org.jetbrains.intellij.platform.buildFeature.useBinaryReleases=false diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index fad209eb7a0..2c2eb9ad6ef 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -177,8 +177,6 @@ val prepareBuildProps = tasks.register("prepareBuildProps") { val prepareNuGetConfig = tasks.register("prepareNuGetConfig") { group = backendGroup - dependsOn(tasks.setupDependencies) - val nugetConfigPath = File(projectDir, "NuGet.Config") // FIX_WHEN_MIN_IS_211 remove the projectDir one above val nugetConfigPath211 = Path.of(projectDir.absolutePath, "testData", "NuGet.config").toFile() @@ -239,10 +237,10 @@ val buildReSharperPlugin = tasks.register("buildReSharperPlugin") { } fun getNugetPackagesPath(): File { - val sdkPath = rdLibDirectory() + val sdkPath = intellijPlatform.platformPath println("SDK path: $sdkPath") - val riderSdk = File("lib/DotNetSdkForRdPlugins") + val riderSdk = sdkPath.resolve("lib").resolve("DotNetSdkForRdPlugins").toAbsolutePath().toFile() println("NuGet packages: $riderSdk") if (!riderSdk.isDirectory) error("$riderSdk does not exist or not a directory") From bce0184dd4006a105f1cec37e6c93eff9a6b76eb Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 31 May 2024 11:30:25 -0400 Subject: [PATCH 23/71] jbr --- buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 072a89f3d89..09e273254ee 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -17,5 +17,6 @@ intellijPlatform { repositories { intellijPlatform { defaultRepositories() + jetbrainsRuntime() } } From 18be2a1803c9330843ac95ad11d4f96b97c937f8 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 31 May 2024 11:54:33 -0400 Subject: [PATCH 24/71] platform dep --- sandbox-all/build.gradle.kts | 1 + tmp-all/build.gradle.kts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/sandbox-all/build.gradle.kts b/sandbox-all/build.gradle.kts index d5031b98cb3..c6527e55636 100644 --- a/sandbox-all/build.gradle.kts +++ b/sandbox-all/build.gradle.kts @@ -26,6 +26,7 @@ dependencies { val version = toolkitIntelliJ.version() create(type, version) + jetbrainsRuntime() localPlugin(project(":plugin-core", "pluginZip")) localPlugin(project(":plugin-amazonq", "pluginZip")) diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 76282e3a5d6..f1b020336f0 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -18,6 +18,12 @@ intellijToolkit { dependencies { intellijPlatform { + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + create(type, version) + jetbrainsRuntime() + localPlugin(project(":plugin-core", "pluginZip")) localPlugin(project(":plugin-amazonq", "pluginZip")) plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) From 4f881f8d46f9c212abdfa2f85f06aa30cfaf3860 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 5 Jun 2024 09:26:45 -0700 Subject: [PATCH 25/71] build --- .../main/kotlin/toolkit-intellij-plugin.gradle.kts | 8 ++++++++ .../toolkit-publish-root-conventions.gradle.kts | 9 +++++++++ plugins/toolkit/jetbrains-core/build.gradle.kts | 13 +++---------- .../jetbrains/services/lambda/sam/SamCommonUtils.kt | 4 ++-- tmp-all/build.gradle.kts | 1 - 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 09e273254ee..5a87aff6af6 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.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.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.TestFrameworkType import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension private val toolkitIntelliJ = project.extensions.create("intellijToolkit") @@ -20,3 +21,10 @@ repositories { jetbrainsRuntime() } } + +dependencies { + intellijPlatform { + testFramework(TestFrameworkType.Platform.JUnit4) + testFramework(TestFrameworkType.Platform.JUnit5) + } +} diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index b8b1ccb6352..d549543b231 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -38,6 +38,15 @@ if (!project.isCi()) { } } +intellijPlatform { + instrumentCode = true + verifyPlugin { + ides { + recommended() + } + } +} + dependencies { intellijPlatform { pluginVerifier() diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 105156078d9..fab235950a0 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -1,16 +1,9 @@ // Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import com.jetbrains.plugin.structure.base.utils.inputStream -import com.jetbrains.plugin.structure.base.utils.simpleName -import com.jetbrains.plugin.structure.intellij.utils.JDOMUtil -import software.aws.toolkits.gradle.buildMetadata import software.aws.toolkits.gradle.changelog.tasks.GeneratePluginChangeLog import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions -import software.aws.toolkits.gradle.isCi -import java.io.StringWriter -import java.nio.file.Path val toolkitVersion: String by project val ideProfile = IdeVersions.ideProfile(project) @@ -60,7 +53,7 @@ val gatewayPluginXml = tasks.create Date: Thu, 6 Jun 2024 10:37:18 -0700 Subject: [PATCH 26/71] wip --- build.gradle.kts | 2 +- .../aws/toolkits/gradle/intellij/IdeVersions.kt | 1 - .../src/main/kotlin/toolkit-intellij-plugin.gradle.kts | 2 +- .../main/kotlin/toolkit-intellij-subplugin.gradle.kts | 10 +++++++--- gradle/libs.versions.toml | 2 +- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 9 +++++++++ sandbox-all/build.gradle.kts | 6 +++--- tmp-all/build.gradle.kts | 6 +++--- 8 files changed, 25 insertions(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 84a37b04328..eb3b6c8cb3d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,7 +32,7 @@ allprojects { configurations.all { resolutionStrategy { failOnDynamicVersions() - failOnChangingVersions() +// failOnChangingVersions() } } } 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 7f0f17b2a94..a67268d71d7 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 @@ -97,7 +97,6 @@ object IdeVersions { gateway = ProductProfile( sdkFlavor = IdeFlavor.GW, sdkVersion = "241.14494-EAP-CANDIDATE-SNAPSHOT", - bundledPlugins = listOf("org.jetbrains.plugins.terminal") ), community = ProductProfile( sdkFlavor = IdeFlavor.IC, diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 5a87aff6af6..be4b39db398 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -24,7 +24,7 @@ repositories { dependencies { intellijPlatform { - testFramework(TestFrameworkType.Platform.JUnit4) +// testFramework(TestFrameworkType.Platform.JUnit4) testFramework(TestFrameworkType.Platform.JUnit5) } } diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts index b513a5acccc..d3940c8a464 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts @@ -88,10 +88,14 @@ dependencies { intellijPlatform { instrumentationTools() - val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } - val version = toolkitIntelliJ.version() + // annoying resolution issue that we dont wan't to bother fixing + if (!project.name.contains("jetbrains-gateway")) { + val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) } + val version = toolkitIntelliJ.version() + + create(type, version) + } - create(type, version) jetbrainsRuntime() bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins }) plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins }) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 95806f0d9c4..55995531a40 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ awsSdk = "2.25.33" commonmark = "0.17.1" detekt = "1.23.6" intellijExt = "1.1.8" -intellijGradle = "2.0.0-beta5" +intellijGradle = "2.0.0-beta6" intellijRemoteRobot = "0.11.22" jackson = "2.16.1" jacoco = "0.8.12" diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 948c21b23ce..31702c942d2 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -4,6 +4,7 @@ import net.bytebuddy.utility.RandomString import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { id("toolkit-kotlin-conventions") @@ -42,6 +43,14 @@ val gatewayOnlyResourcesJar by tasks.registering(Jar::class) { from(processGatewayOnlyResources) } +configurations["intellijPlatformDependency"].dependencies.addLater(toolkitIntelliJ.version().map { + dependencies.create( + group = "com.jetbrains.gateway", + name = "JetBrainsGateway", + version = it, + ) +}) + dependencies { // link against :j-c: and rely on :intellij:buildPlugin to pull in :j-c:instrumentedJar, but gateway variant when runIde/buildPlugin from :jetbrains-gateway compileOnly(project(":plugin-toolkit:jetbrains-core")) diff --git a/sandbox-all/build.gradle.kts b/sandbox-all/build.gradle.kts index c6527e55636..25fa98872f6 100644 --- a/sandbox-all/build.gradle.kts +++ b/sandbox-all/build.gradle.kts @@ -28,8 +28,8 @@ dependencies { create(type, version) jetbrainsRuntime() - localPlugin(project(":plugin-core", "pluginZip")) - localPlugin(project(":plugin-amazonq", "pluginZip")) - localPlugin(project(":plugin-toolkit:intellij-standalone", "pluginZip")) +// localPlugin(project(":plugin-core", "pluginZip")) +// localPlugin(project(":plugin-amazonq", "pluginZip")) +// localPlugin(project(":plugin-toolkit:intellij-standalone", "pluginZip")) } } diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index d338f79acfc..65ce8915306 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -23,8 +23,8 @@ dependencies { create(type, version) jetbrainsRuntime() - localPlugin(project(":plugin-core", "pluginZip")) - localPlugin(project(":plugin-amazonq", "pluginZip")) - plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) +// localPlugin(project(":plugin-core", "pluginZip")) +// localPlugin(project(":plugin-amazonq", "pluginZip")) +// plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) } } From 3216bda29e4b38a695618acfb5509a9b1c440a04 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 6 Jun 2024 13:36:09 -0700 Subject: [PATCH 27/71] build --- .../kotlin/toolkit-intellij-plugin.gradle.kts | 1 + .../codescan/CodeWhispererCodeScanManager.kt | 16 +++++++++++++++- .../aws/toolkits/jetbrains/utils/TextUtils.kt | 16 ---------------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index be4b39db398..64c3b00c6b5 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -24,6 +24,7 @@ repositories { dependencies { intellijPlatform { + instrumentationTools() // testFramework(TestFrameworkType.Platform.JUnit4) testFramework(TestFrameworkType.Platform.JUnit5) } diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt index 58a6f78d102..0462e8925ee 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt @@ -74,7 +74,6 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.util.runIfIdcConne import software.aws.toolkits.jetbrains.utils.isQConnected import software.aws.toolkits.jetbrains.utils.isQExpired import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend -import software.aws.toolkits.jetbrains.utils.offsetSuggestedFix import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.Result import java.time.Duration @@ -786,3 +785,18 @@ data class CodeWhispererCodeScanIssue( return TextRange.create(startOffset, endOffset) } } + +private fun offsetSuggestedFix(suggestedFix: SuggestedFix, lines: Int): SuggestedFix { + val updatedCode = suggestedFix.code.replace( + Regex("""(@@ -)(\d+)(,\d+ \+)(\d+)(,\d+ @@)""") + ) { result -> + val prefix = result.groupValues[1] + val startLine = result.groupValues[2].toInt() + lines + val middle = result.groupValues[3] + val endLine = result.groupValues[4].toInt() + lines + val suffix = result.groupValues[5] + "$prefix$startLine$middle$endLine$suffix" + } + + return suggestedFix.copy(code = updatedCode) +} diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt index 37e46b0e03c..d723e62d0aa 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt @@ -12,7 +12,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiFileFactory import com.intellij.psi.codeStyle.CodeStyleManager -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix fun formatText(project: Project, language: Language, content: String): String { var result = content @@ -43,18 +42,3 @@ fun applyPatch(patch: String, fileContent: String, filePath: String): String { val unifiedPatch = generateUnifiedPatch(patch, filePath) return GenericPatchApplier.applySomehow(fileContent, unifiedPatch.hunks).patchedText } - -fun offsetSuggestedFix(suggestedFix: SuggestedFix, lines: Int): SuggestedFix { - val updatedCode = suggestedFix.code.replace( - Regex("""(@@ -)(\d+)(,\d+ \+)(\d+)(,\d+ @@)""") - ) { result -> - val prefix = result.groupValues[1] - val startLine = result.groupValues[2].toInt() + lines - val middle = result.groupValues[3] - val endLine = result.groupValues[4].toInt() + lines - val suffix = result.groupValues[5] - "$prefix$startLine$middle$endLine$suffix" - } - - return suggestedFix.copy(code = updatedCode) -} From a6fd06db418efe80896097dbc19c34d39f86e3b4 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 7 Jun 2024 14:12:17 -0700 Subject: [PATCH 28/71] framework --- buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts | 2 -- plugins/core/jetbrains-community/build.gradle.kts | 5 +++++ .../software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 64c3b00c6b5..8cc810ace9f 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -25,7 +25,5 @@ repositories { dependencies { intellijPlatform { instrumentationTools() -// testFramework(TestFrameworkType.Platform.JUnit4) - testFramework(TestFrameworkType.Platform.JUnit5) } } diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 3f23e7104e0..3fc4b4e5b06 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -3,6 +3,7 @@ import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask +import org.jetbrains.intellij.platform.gradle.TestFrameworkType import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.telemetry.generator.gradle.GenerateTelemetry @@ -38,6 +39,10 @@ intellijToolkit { } dependencies { + intellijPlatform { + testFramework(TestFrameworkType.Platform.JUnit4) + testFramework(TestFrameworkType.Plugin.Java) + } compileOnlyApi(project(":plugin-core:core")) compileOnlyApi(libs.aws.apacheClient) compileOnlyApi(libs.aws.nettyClient) diff --git a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt index 23ff0f07b9e..4d20a789818 100644 --- a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt +++ b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt @@ -34,9 +34,10 @@ val CompletableFutureAssert.hasException get() = this.wait().isCompletedE fun , ACTUAL : Throwable> AbstractThrowableAssert.hasCauseWithMessage( message: String ): AbstractThrowableAssert { - satisfies { parentThrowable -> + // https://github.com/assertj/assertj/issues/2357 + satisfies(Consumer { parentThrowable -> assertThat(parentThrowable.cause).isNotNull.hasMessage(message) - } + }) return this } From 0c4310c3d285257383fd8b55f1b818af3e0b0920 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 10 Jun 2024 12:59:30 -0700 Subject: [PATCH 29/71] framework --- plugins/core/jetbrains-community/build.gradle.kts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 3fc4b4e5b06..2a118496ffe 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -38,11 +38,19 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IC) } +// expose intellij test framework to fixture consumers +configurations.testFixturesCompileOnlyApi { + extendsFrom( + configurations.intellijPlatformTestDependencies.get() + ) +} + dependencies { intellijPlatform { testFramework(TestFrameworkType.Platform.JUnit4) testFramework(TestFrameworkType.Plugin.Java) } + compileOnlyApi(project(":plugin-core:core")) compileOnlyApi(libs.aws.apacheClient) compileOnlyApi(libs.aws.nettyClient) From 17072f0de2ae130e389e54e2b250746fe1c79f89 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 10 Jun 2024 13:45:14 -0700 Subject: [PATCH 30/71] tst --- .../jetbrains/utils/OffsetSuggestedFix.kt | 21 ++++ .../utils/OffsetSuggestedFixKtTest.kt | 112 ++++++++++++++++++ .../aws/toolkits/jetbrains/utils/TextUtils.kt | 16 --- .../toolkits/jetbrains/utils/TextUtilsTest.kt | 105 ---------------- 4 files changed, 133 insertions(+), 121 deletions(-) create mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFix.kt create mode 100644 plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFix.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFix.kt new file mode 100644 index 00000000000..05668904fee --- /dev/null +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFix.kt @@ -0,0 +1,21 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.utils + +import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix + +fun offsetSuggestedFix(suggestedFix: SuggestedFix, lines: Int): SuggestedFix { + val updatedCode = suggestedFix.code.replace( + Regex("""(@@ -)(\d+)(,\d+ \+)(\d+)(,\d+ @@)""") + ) { result -> + val prefix = result.groupValues[1] + val startLine = result.groupValues[2].toInt() + lines + val middle = result.groupValues[3] + val endLine = result.groupValues[4].toInt() + lines + val suffix = result.groupValues[5] + "$prefix$startLine$middle$endLine$suffix" + } + + return suggestedFix.copy(code = updatedCode) +} diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt new file mode 100644 index 00000000000..0e876282db2 --- /dev/null +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt @@ -0,0 +1,112 @@ +package software.aws.toolkits.jetbrains.utils + +import org.assertj.core.api.Assertions.assertThat +import org.junit.Assert +import org.junit.Test +import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix + +class OffsetSuggestedFixKtTest { + @Test + fun offsetSuggestedFixUpdateLineNumbersWithInsertion() { + val suggestedFix = SuggestedFix( + code = """ + @@ -1,3 +1,4 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!") + } + """.trimIndent(), + description = "Add a variable for the greeting" + ) + + val expectedCode = """ + @@ -2,3 +2,4 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!") + } + """.trimIndent() + + val result = offsetSuggestedFix(suggestedFix, 1) + assertThat(expectedCode).isEqualTo(result.code) + } + + @Test + fun offsetSuggestedFixUpdateMultipleLineNumbersWithInsertion() { + val suggestedFix = SuggestedFix( + code = """ + @@ -1,3 +1,5 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!")) + + println("Hello, Welcome to Amazon Q") + } + """.trimIndent(), + description = "Add a variable for the greeting with multiple lines" + ) + + val expectedCode = """ + @@ -4,3 +4,5 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!")) + + println("Hello, Welcome to Amazon Q") + } + """.trimIndent() + + val result = offsetSuggestedFix(suggestedFix, 3) + assertThat(expectedCode).isEqualTo(result.code) + } + + @Test + fun offsetSuggestedFixUpdateLineNumbersWithDeletion() { + val suggestedFix = SuggestedFix( + code = """ + @@ -24,3 +24,4 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!") + } + """.trimIndent(), + description = "Add a variable for the greeting" + ) + + val expectedCode = """ + @@ -19,3 +19,4 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!") + } + """.trimIndent() + + val result = offsetSuggestedFix(suggestedFix, -5) + assertThat(expectedCode).isEqualTo(result.code) + } + + @Test + fun offsetSuggestedFixUpdateMultipleLineNumbersWithDeletion() { + val suggestedFix = SuggestedFix( + code = """ + @@ -10,3 +10,5 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!")) + + println("Hello, Welcome to Amazon Q") + } + """.trimIndent(), + description = "Add a variable for the greeting with multiple lines" + ) + + val expectedCode = """ + @@ -8,3 +8,5 @@ + fun main() { + + val greeting = "Hello, Suggested Fix is Here!" + println("Hello, Suggested Fix is Here!")) + + println("Hello, Welcome to Amazon Q") + } + """.trimIndent() + + val result = offsetSuggestedFix(suggestedFix, -2) + assertThat(expectedCode).isEqualTo(result.code) + } +} diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt index 37e46b0e03c..d723e62d0aa 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/utils/TextUtils.kt @@ -12,7 +12,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiFileFactory import com.intellij.psi.codeStyle.CodeStyleManager -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix fun formatText(project: Project, language: Language, content: String): String { var result = content @@ -43,18 +42,3 @@ fun applyPatch(patch: String, fileContent: String, filePath: String): String { val unifiedPatch = generateUnifiedPatch(patch, filePath) return GenericPatchApplier.applySomehow(fileContent, unifiedPatch.hunks).patchedText } - -fun offsetSuggestedFix(suggestedFix: SuggestedFix, lines: Int): SuggestedFix { - val updatedCode = suggestedFix.code.replace( - Regex("""(@@ -)(\d+)(,\d+ \+)(\d+)(,\d+ @@)""") - ) { result -> - val prefix = result.groupValues[1] - val startLine = result.groupValues[2].toInt() + lines - val middle = result.groupValues[3] - val endLine = result.groupValues[4].toInt() + lines - val suffix = result.groupValues[5] - "$prefix$startLine$middle$endLine$suffix" - } - - return suggestedFix.copy(code = updatedCode) -} diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/TextUtilsTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/TextUtilsTest.kt index d9ae27320c4..e058e9fdca3 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/TextUtilsTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/TextUtilsTest.kt @@ -8,11 +8,9 @@ import com.intellij.testFramework.ProjectRule import com.intellij.testFramework.runInEdtAndWait import org.assertj.core.api.Assertions.assertThat import org.intellij.lang.annotations.Language -import org.junit.Assert.assertEquals import org.junit.Rule import org.junit.Test import software.aws.toolkits.core.utils.convertMarkdownToHTML -import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix class TextUtilsTest { @Rule @@ -157,107 +155,4 @@ class TextUtilsTest { val actual = applyPatch(inputPatch, fileContent, inputFilePath) assertThat(actual).isEqualTo("dummy\ndummy\ndummy\ndummy\nfirst line\nthird line\nforth line") } - - fun offsetSuggestedFixUpdateLineNumbersWithInsertion() { - val suggestedFix = SuggestedFix( - code = """ - @@ -1,3 +1,4 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!") - } - """.trimIndent(), - description = "Add a variable for the greeting" - ) - - val expectedCode = """ - @@ -2,3 +2,4 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!") - } - """.trimIndent() - - val result = offsetSuggestedFix(suggestedFix, 1) - assertEquals(expectedCode, result.code) - } - - @Test - fun offsetSuggestedFixUpdateMultipleLineNumbersWithInsertion() { - val suggestedFix = SuggestedFix( - code = """ - @@ -1,3 +1,5 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!")) - + println("Hello, Welcome to Amazon Q") - } - """.trimIndent(), - description = "Add a variable for the greeting with multiple lines" - ) - - val expectedCode = """ - @@ -4,3 +4,5 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!")) - + println("Hello, Welcome to Amazon Q") - } - """.trimIndent() - - val result = offsetSuggestedFix(suggestedFix, 3) - assertEquals(expectedCode, result.code) - } - - @Test - fun offsetSuggestedFixUpdateLineNumbersWithDeletion() { - val suggestedFix = SuggestedFix( - code = """ - @@ -24,3 +24,4 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!") - } - """.trimIndent(), - description = "Add a variable for the greeting" - ) - - val expectedCode = """ - @@ -19,3 +19,4 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!") - } - """.trimIndent() - - val result = offsetSuggestedFix(suggestedFix, -5) - assertEquals(expectedCode, result.code) - } - - @Test - fun offsetSuggestedFixUpdateMultipleLineNumbersWithDeletion() { - val suggestedFix = SuggestedFix( - code = """ - @@ -10,3 +10,5 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!")) - + println("Hello, Welcome to Amazon Q") - } - """.trimIndent(), - description = "Add a variable for the greeting with multiple lines" - ) - - val expectedCode = """ - @@ -8,3 +8,5 @@ - fun main() { - + val greeting = "Hello, Suggested Fix is Here!" - println("Hello, Suggested Fix is Here!")) - + println("Hello, Welcome to Amazon Q") - } - """.trimIndent() - - val result = offsetSuggestedFix(suggestedFix, -2) - assertEquals(expectedCode, result.code) - } } From 5d6233efb7d14059c808ebb2ff1b2dfdddbee52a Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 10 Jun 2024 14:38:10 -0700 Subject: [PATCH 31/71] lint --- .../aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt index 0e876282db2..ed4a35482ea 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/utils/OffsetSuggestedFixKtTest.kt @@ -1,7 +1,9 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + package software.aws.toolkits.jetbrains.utils import org.assertj.core.api.Assertions.assertThat -import org.junit.Assert import org.junit.Test import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.SuggestedFix From 0c9c3524c2608f8e2419be948813c32b182c19ba Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 11 Jun 2024 12:31:06 -0700 Subject: [PATCH 32/71] build --- .../toolkits/gradle/intellij/IdeVersions.kt | 1 + ...olkit-intellij-root-conventions.gradle.kts | 4 +-- .../toolkit-integration-testing.gradle.kts | 8 +++++ gradle.properties | 2 +- gradle/libs.versions.toml | 2 +- .../core/utils/test/AssertJAsserts.kt | 9 ++++++ .../core/jetbrains-community/build.gradle.kts | 3 +- .../DefaultAwsConnectionManagerTest.kt | 5 ++-- .../DefaultConfigFilesFacadeTest.kt | 17 +++++------ .../DefaultToolkitAuthManagerTest.kt | 13 +++++---- .../core/credentials/sso/DiskCacheTest.kt | 6 +--- .../core/gettingstarted/IdcRolePopupTest.kt | 3 +- .../SetupAuthenticationDialogTest.kt | 5 ++-- .../telemetry/TelemetryServiceTest.kt | 9 ++++-- .../jetbrains/utils/AssertJMatchers.kt | 12 ++++++-- ...ctiveBearerTokenProviderIntegrationTest.kt | 2 +- .../ConnectionSettingsMenuBuilderTest.kt | 3 +- .../ContainerCredentialProviderFactoryTest.kt | 5 ++-- ...stanceRoleCredentialProviderFactoryTest.kt | 3 +- ...wsConnectionExtensionSettingsEditorTest.kt | 3 +- .../notification/MinimumVersionChangeTest.kt | 3 +- .../core/region/AwsRegionProviderTest.kt | 3 +- .../core/tools/FourPartVersionTest.kt | 3 +- .../core/tools/SemanticVersionTest.kt | 3 +- .../core/toolwindow/ToolkitToolWindowTest.kt | 3 +- .../cloudformation/stack/UpdaterTest.kt | 3 +- .../yaml/YamlCloudFormationTemplateTest.kt | 3 +- .../cloudwatch/logs/TableUtilsTest.kt | 7 +++-- .../DynamicResourceResourceTypeNodeTest.kt | 5 ++-- .../ArnPsiReferenceProviderTest.kt | 3 +- .../LambdaRunLineMarkerContributorTest.kt | 5 ++-- .../steps/BuildViewStepEmitterTest.kt | 29 ++++++++++--------- .../gateway/connection/ScpCommandLineTest.kt | 3 +- .../welcomescreen/ConfigureActionTest.kt | 2 +- .../toolkit/jetbrains-rider/build.gradle.kts | 2 ++ .../jetbrains/utils/OpenSolutionFileParams.kt | 0 .../remoteDev/caws/UpdateDevfileAction.kt | 4 +-- .../AddSecretsManagerConnectionTest.kt | 3 +- .../actions/CreateConfigurationActionTest.kt | 15 +++++----- .../actions/CreateDataSourceActionTest.kt | 3 +- settings.gradle.kts | 3 ++ tmp-all/build.gradle.kts | 3 ++ 42 files changed, 138 insertions(+), 85 deletions(-) rename plugins/toolkit/jetbrains-rider/{src-232+ => tst-232+}/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt (100%) 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 a67268d71d7..7f0f17b2a94 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 @@ -97,6 +97,7 @@ object IdeVersions { gateway = ProductProfile( sdkFlavor = IdeFlavor.GW, sdkVersion = "241.14494-EAP-CANDIDATE-SNAPSHOT", + bundledPlugins = listOf("org.jetbrains.plugins.terminal") ), community = ProductProfile( sdkFlavor = IdeFlavor.IC, diff --git a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts index 50ae3dac4a5..88df86a5198 100644 --- a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts @@ -78,8 +78,8 @@ dependencies { gatewayResources(project(":plugin-toolkit:jetbrains-gateway", configuration = "gatewayResources")) } - implementation(project(":plugin-toolkit:jetbrains-rider")) - resharperDlls(project(":plugin-toolkit:jetbrains-rider", configuration = "resharperDlls")) +// implementation(project(":plugin-toolkit:jetbrains-rider")) +// resharperDlls(project(":plugin-toolkit:jetbrains-rider", configuration = "resharperDlls")) } // not available in gradle plugin 2.0 yet diff --git a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts index 91bf3a36280..8aecffb581b 100644 --- a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts @@ -29,10 +29,18 @@ sourceSets { } } +configurations.getByName("integrationTestCompileOnly") { + extendsFrom(configurations.getByName(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME)) +} + configurations.getByName("integrationTestCompileClasspath") { extendsFrom(configurations.getByName(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME)) } +configurations.getByName("integrationTestRuntimeOnly") { + extendsFrom(configurations.getByName(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME)) +} + configurations.getByName("integrationTestRuntimeClasspath") { extendsFrom(configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME)) isCanBeResolved = true diff --git a/gradle.properties b/gradle.properties index 5ca00e1e957..aa8b12bf968 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ toolkitVersion=3.11-SNAPSHOT publishToken= publishChannel= -ideProfileName=2023.3 +ideProfileName=2024.1 remoteRobotPort=8080 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 55995531a40..d0ad4f677cd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] apache-commons-collections = "4.4" apache-commons-io = "2.16.0" -assertJ = "3.20.2" # Upgrading leads to SAM errors: https://youtrack.jetbrains.com/issue/KT-17765 +assertJ = "3.26.0" # match with /settings.gradle.kts awsSdk = "2.25.33" commonmark = "0.17.1" diff --git a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt index 106d7720e8e..d133b453b08 100644 --- a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt +++ b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt @@ -3,9 +3,13 @@ package software.aws.toolkits.core.utils.test +import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.IterableAssert import org.assertj.core.api.ListAssert import org.assertj.core.api.ObjectAssert +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.attribute.PosixFilePermissions @Suppress("UNCHECKED_CAST") val ObjectAssert.notNull: ObjectAssert @@ -18,3 +22,8 @@ inline fun IterableAssert<*>.hasOnlyElementsOfType(): It @Suppress("UNCHECKED_CAST") inline fun ListAssert<*>.hasOnlyOneElementOfType(): ObjectAssert = (hasOnlyElementsOfType(SubType::class.java) as ListAssert).singleElement() + +fun assertPosixPermissions(path: Path, expected: String) { + val perms = PosixFilePermissions.toString(Files.getPosixFilePermissions(path)) + assertThat(perms).isEqualTo(expected) +} diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 2a118496ffe..6e875a14588 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -48,6 +48,7 @@ configurations.testFixturesCompileOnlyApi { dependencies { intellijPlatform { testFramework(TestFrameworkType.Platform.JUnit4) + testFramework(TestFrameworkType.Platform.JUnit5) testFramework(TestFrameworkType.Plugin.Java) } @@ -63,7 +64,7 @@ dependencies { exclude(group = "org.apache.httpcomponents.client5") } - testRuntimeOnly(project(":plugin-core:core")) + testImplementation(project(":plugin-core:core")) testRuntimeOnly(project(":plugin-core:resources")) testRuntimeOnly(project(":plugin-core:sdk-codegen")) } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt index 1cfe6d100e4..fb222426679 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt @@ -26,6 +26,7 @@ import software.aws.toolkits.jetbrains.core.region.getDefaultRegion import software.aws.toolkits.jetbrains.services.sts.StsResources import software.aws.toolkits.jetbrains.utils.deserializeState import software.aws.toolkits.jetbrains.utils.rules.HeavyJavaCodeInsightTestFixtureRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.jetbrains.utils.serializeState import java.nio.file.Files import java.util.concurrent.CompletableFuture @@ -89,7 +90,7 @@ class DefaultAwsConnectionManagerTest { manager.noStateLoaded() manager.waitUntilConnectionStateIsStable() - assertThat(manager.selectedCredentialIdentifier).notNull.satisfies { + assertThat(manager.selectedCredentialIdentifier).notNull.satisfiesKt { assertThat(it.id).isEqualTo(credentials.id) } } @@ -112,7 +113,7 @@ class DefaultAwsConnectionManagerTest { manager.waitUntilConnectionStateIsStable() - assertThat(manager.selectedRegion).notNull.satisfies { + assertThat(manager.selectedRegion).notNull.satisfiesKt { assertThat(it.id).isEqualTo("us-west-2") } } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt index d479bb306ae..4a3b6ce8a2b 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt @@ -4,14 +4,15 @@ package software.aws.toolkits.jetbrains.core.credentials import org.assertj.core.api.Assertions.assertThat -import org.assertj.core.api.IterableAssert import org.junit.Assume import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder import software.amazon.awssdk.profiles.Profile import software.aws.toolkits.core.utils.createParentDirectories +import software.aws.toolkits.core.utils.test.assertPosixPermissions import software.aws.toolkits.core.utils.writeText +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Files import java.nio.file.Paths import java.nio.file.attribute.PosixFilePermission @@ -33,8 +34,8 @@ class DefaultConfigFilesFacadeTest { assertThat(file).exists().hasContent(DefaultConfigFilesFacade.TEMPLATE) assumeNoException { - assertThat(Files.getPosixFilePermissions(file)).matches("rw-------") - assertThat(Files.getPosixFilePermissions(file.parent)).matches("rwxr-xr-x") + assertPosixPermissions(file, "rw-------") + assertPosixPermissions(file.parent, "rwxr-xr-x") } } @@ -50,8 +51,8 @@ class DefaultConfigFilesFacadeTest { sut.createConfigFile() assumeNoException { - assertThat(Files.getPosixFilePermissions(file)).matches("rw-------") - assertThat(Files.getPosixFilePermissions(file.parent)).matches("rwxrwxrwx") + assertPosixPermissions(file, "rw-------") + assertPosixPermissions(file.parent, "rwxrwxrwx") } } @@ -106,7 +107,7 @@ class DefaultConfigFilesFacadeTest { assertThat(sut.readAllProfiles()) .hasSize(1) - .satisfies { + .satisfiesKt { val entry = it.entries.first() assertThat(entry.key).isEqualTo("profileName") assertThat(entry.value).isEqualTo( @@ -596,10 +597,6 @@ class DefaultConfigFilesFacadeTest { ) } - private fun IterableAssert.matches(permissionString: String) { - containsOnly(*PosixFilePermissions.fromString(permissionString).toTypedArray()) - } - private inline fun assumeNoException(block: () -> Unit) { try { block() diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt index 824ac0adf57..8104d89d809 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt @@ -31,6 +31,7 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.InteractiveBe import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule import software.aws.toolkits.jetbrains.utils.isInstanceOf import software.aws.toolkits.jetbrains.utils.isInstanceOfSatisfying +import software.aws.toolkits.jetbrains.utils.satisfiesKt class DefaultToolkitAuthManagerTest { @JvmField @@ -90,7 +91,7 @@ class DefaultToolkitAuthManagerTest { ) sut.createConnection(profile) - assertThat(sut.state?.ssoProfiles).satisfies { profiles -> + assertThat(sut.state?.ssoProfiles).satisfiesKt { profiles -> assertThat(profiles).isNotNull() assertThat(profiles).singleElement().isEqualTo(profile) } @@ -110,7 +111,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfies { + assertThat(sut.listConnections()).singleElement().satisfiesKt { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("") assertThat(connection.region).isEqualTo(profile.ssoRegion) @@ -138,7 +139,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfies { + assertThat(sut.listConnections()).singleElement().satisfiesKt { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("") assertThat(connection.region).isEqualTo(profile.ssoRegion) @@ -164,7 +165,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfies { + assertThat(sut.listConnections()).singleElement().satisfiesKt { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("add") assertThat(connection.region).isEqualTo("us-east-1") @@ -182,7 +183,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfies { + assertThat(sut.listConnections()).singleElement().satisfiesKt { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("add") assertThat(connection.region).isEqualTo("us-east-1") @@ -332,7 +333,7 @@ class DefaultToolkitAuthManagerTest { val newScopes = listOf("existing1", "new1") loginSso(projectRule.project, "foo", "us-east-1", newScopes) - assertThat(connectionManager.activeConnection() as AwsBearerTokenConnection).satisfies { connection -> + assertThat(connectionManager.activeConnection() as AwsBearerTokenConnection).satisfiesKt { connection -> assertThat(connection.scopes.toSet()).isEqualTo(setOf("existing1", "existing2", "existing3", "new1")) } assertThat(sut.listConnections()).singleElement().isInstanceOfSatisfying { connection -> diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt index 89c7cb597a6..670925a8ee4 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt @@ -12,6 +12,7 @@ import org.junit.jupiter.api.condition.DisabledOnOs import org.junit.jupiter.api.condition.OS import org.junit.jupiter.api.io.TempDir import software.aws.toolkits.core.utils.readText +import software.aws.toolkits.core.utils.test.assertPosixPermissions import software.aws.toolkits.core.utils.writeText import java.nio.file.Files import java.nio.file.Path @@ -709,9 +710,4 @@ class DiskCacheTest { .usingRecursiveComparison() .isEqualTo(sut.loadAccessToken(key2)) } - - private fun assertPosixPermissions(path: Path, expected: String) { - val perms = PosixFilePermissions.toString(Files.getPosixFilePermissions(path)) - assertThat(perms).isEqualTo(expected) - } } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt index ee4ddc49674..dc541b8fd51 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt @@ -21,6 +21,7 @@ import software.aws.toolkits.core.utils.test.aString import software.aws.toolkits.jetbrains.core.MockClientManagerExtension import software.aws.toolkits.jetbrains.core.credentials.ConfigFilesFacade import software.aws.toolkits.jetbrains.core.region.MockRegionProviderExtension +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message @ExtendWith(MockKExtension::class) @@ -53,7 +54,7 @@ class IdcRolePopupTest { } } - assertThat(validation).singleElement().satisfies { + assertThat(validation).singleElement().satisfiesKt { assertThat(it.okEnabled).isFalse() assertThat(it.message).contains(message("gettingstarted.setup.error.not_selected")) } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt index 8d47279fea9..8a34a861c3c 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt @@ -37,6 +37,7 @@ import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.region.MockRegionProviderExtension +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.FeatureId @@ -212,7 +213,7 @@ class SetupAuthenticationDialogTest { } } - assertThat(validation).satisfies { + assertThat(validation).satisfiesKt { assertThat(it).hasSize(2) assertThat(it).allSatisfy { error -> assertThat(error.message).contains("Must not be empty") @@ -266,7 +267,7 @@ class SetupAuthenticationDialogTest { } } - assertThat(validation).satisfies { + assertThat(validation).satisfiesKt { assertThat(it).hasSize(3) assertThat(it).allSatisfy { error -> assertThat(error.message).contains("Must not be empty") diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt index c15b2a76615..fc92c007083 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt @@ -37,6 +37,7 @@ import software.aws.toolkits.jetbrains.core.credentials.waitUntilConnectionState import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule import software.aws.toolkits.jetbrains.services.sts.StsResources import software.aws.toolkits.jetbrains.settings.AwsSettings +import software.aws.toolkits.jetbrains.utils.isInstanceOfSatisfying import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit @@ -267,9 +268,11 @@ class TelemetryServiceTest { private fun assertMetricEventsContains(events: Collection, eventName: String, awsAccount: String, awsRegion: String) { assertThat(events).filteredOn { event -> event.data.any { it.name == eventName } - }.anySatisfy { - assertThat(it.awsAccount).isEqualTo(awsAccount) - assertThat(it.awsRegion).isEqualTo(awsRegion) + }.anySatisfy { element -> + assertThat(element).isInstanceOfSatisfying { + assertThat(it.awsAccount).isEqualTo(awsAccount) + assertThat(it.awsRegion).isEqualTo(awsRegion) + } } } } diff --git a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt index 4d20a789818..614078a6406 100644 --- a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt +++ b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt @@ -4,6 +4,7 @@ package software.aws.toolkits.jetbrains.utils import org.assertj.core.api.AbstractAssert +import org.assertj.core.api.AbstractIterableAssert import org.assertj.core.api.AbstractThrowableAssert import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.CompletableFutureAssert @@ -31,13 +32,18 @@ val CompletionStage.value get() = toCompletableFuture().get(TIMEOUT.toMil val CompletableFutureAssert.hasException get() = this.wait().isCompletedExceptionally +// https://github.com/assertj/assertj/issues/2357 +@Suppress("UNCHECKED_CAST") +fun AbstractAssert<*, T>.satisfiesKt(requirements: Consumer): AbstractAssert<*, T> { + return this.satisfies(requirements) as AbstractAssert<*, T> +} + fun , ACTUAL : Throwable> AbstractThrowableAssert.hasCauseWithMessage( message: String ): AbstractThrowableAssert { - // https://github.com/assertj/assertj/issues/2357 - satisfies(Consumer { parentThrowable -> + satisfiesKt { parentThrowable -> assertThat(parentThrowable.cause).isNotNull.hasMessage(message) - }) + } return this } diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt index 52d447608f3..937190bb9f2 100644 --- a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt +++ b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt @@ -74,7 +74,7 @@ class InteractiveBearerTokenProviderIntegrationTest { id = "test" ) - assertThat(sut.resolveToken()).satisfies { + assertThat(sut.resolveToken()).satisfiesKt { assertThat(it).isNotNull() assertThat(it).isNotEqualTo(initialToken) } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt index 3c4455a3c50..8f209164740 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt @@ -22,6 +22,7 @@ import software.aws.toolkits.jetbrains.core.credentials.ConnectionSettingsMenuBu import software.aws.toolkits.jetbrains.core.credentials.MockAwsConnectionManager.ProjectAccountSettingsManagerRule import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message class ConnectionSettingsMenuBuilderTest { @@ -87,7 +88,7 @@ class ConnectionSettingsMenuBuilderTest { .build() val actions = group.getChildren().filterIsInstance() - assertThat(actions).singleElement().satisfies { + assertThat(actions).singleElement().satisfiesKt { assertThat(it.isPopup).isTrue assertThat(it.templatePresentation.text).isEqualTo(message("settings.partitions")) assertThat(it.getChildren()).hasSize(otherPartitions.size) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt index 57b36e03ee4..960a862f9ec 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt @@ -23,6 +23,7 @@ import software.aws.toolkits.core.credentials.CredentialType import software.aws.toolkits.core.credentials.CredentialsChangeEvent import software.aws.toolkits.core.credentials.CredentialsChangeListener import software.aws.toolkits.core.rules.SystemPropertyHelper +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.time.Instant import java.time.format.DateTimeFormatter @@ -66,7 +67,7 @@ class ContainerCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfies { + assertThat(credentialChangeEvent.firstValue).satisfiesKt { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) @@ -80,7 +81,7 @@ class ContainerCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfies { + assertThat(credentialChangeEvent.firstValue).satisfiesKt { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt index 4d41cffbe65..e137ecb4d3c 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt @@ -26,6 +26,7 @@ import software.aws.toolkits.core.credentials.CredentialType import software.aws.toolkits.core.credentials.CredentialsChangeEvent import software.aws.toolkits.core.credentials.CredentialsChangeListener import software.aws.toolkits.core.rules.SystemPropertyHelper +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.time.Instant import java.time.format.DateTimeFormatter @@ -99,7 +100,7 @@ class InstanceRoleCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfies { + assertThat(credentialChangeEvent.firstValue).satisfiesKt { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt index f63362eb720..dd591e843e5 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt @@ -12,6 +12,7 @@ import org.assertj.core.api.ObjectAssert import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.settings.AwsSettingsRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt class AwsConnectionExtensionSettingsEditorTest { @@ -129,7 +130,7 @@ class AwsConnectionExtensionSettingsEditorTest { private fun ObjectAssert>.isPersistedAs( expected: AwsCredentialInjectionOptions.() -> Unit ) { - satisfies { + satisfiesKt { val updatedConfiguration = createConfiguration { } it.applyTo(updatedConfiguration) assertThat(updatedConfiguration.extensionOptions()).usingRecursiveComparison().isEqualTo(AwsCredentialInjectionOptions(expected)) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt index b8c9de2c256..d4e66a00a22 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt @@ -22,6 +22,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.stub import software.aws.toolkits.core.rules.SystemPropertyHelper import software.aws.toolkits.jetbrains.utils.rules.NotificationListenerRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.util.Calendar class MinimumVersionChangeTest { @@ -108,7 +109,7 @@ class MinimumVersionChangeTest { sut.runActivity(projectRule.project) - assertThat(notifications.notifications).singleElement().satisfies { + assertThat(notifications.notifications).singleElement().satisfiesKt { assertThat(it.content).matches("""Support for [\w ]+ 2012\.3 is being deprecated .*""".toPattern()) assertThat(it.actions).singleElement() } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt index 0b9e9637d39..c39d23ad90c 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt @@ -19,6 +19,7 @@ import software.aws.toolkits.core.utils.RemoteResourceResolver import software.aws.toolkits.core.utils.exists import software.aws.toolkits.core.utils.writeText import software.aws.toolkits.jetbrains.core.RemoteResourceResolverProvider +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths @@ -150,7 +151,7 @@ class AwsRegionProviderTest { val awsRegionProvider = AwsRegionProvider() - assertThat(awsRegionProvider.defaultPartition()).satisfies { + assertThat(awsRegionProvider.defaultPartition()).satisfiesKt { assertThat(it.id).isEqualTo("moon") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt index 50ac7ccc4ea..009ce0c04ab 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt @@ -7,6 +7,7 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.Test import software.aws.toolkits.jetbrains.utils.isInstanceOf +import software.aws.toolkits.jetbrains.utils.satisfiesKt class FourPartVersionTest { @Test @@ -33,7 +34,7 @@ class FourPartVersionTest { @Test fun `parts are correct`() { - assertThat(FourPartVersion(1, 2, 3, 4)).satisfies { + assertThat(FourPartVersion(1, 2, 3, 4)).satisfiesKt { assertThat(it.major).isEqualTo(1) assertThat(it.minor).isEqualTo(2) assertThat(it.patch).isEqualTo(3) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt index 879d7ee65a4..b153070ecb7 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt @@ -7,6 +7,7 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.Test import software.aws.toolkits.jetbrains.utils.isInstanceOf +import software.aws.toolkits.jetbrains.utils.satisfiesKt class SemanticVersionTest { @Test @@ -31,7 +32,7 @@ class SemanticVersionTest { @Test fun `parts are correct`() { - assertThat(SemanticVersion(1, 2, 3)).satisfies { + assertThat(SemanticVersion(1, 2, 3)).satisfiesKt { assertThat(it.major).isEqualTo(1) assertThat(it.minor).isEqualTo(2) assertThat(it.patch).isEqualTo(3) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt index fcf118bb06b..426d83393e3 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt @@ -11,6 +11,7 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Rule import org.junit.Test +import software.aws.toolkits.jetbrains.utils.satisfiesKt import javax.swing.JLabel class ToolkitToolWindowTest { @@ -56,7 +57,7 @@ class ToolkitToolWindowTest { runInEdt { sut.removeContent(tab) - assertThat(jbToolWindowManager.getToolWindow(sut.toolWindowId)?.contentManager).satisfies { + assertThat(jbToolWindowManager.getToolWindow(sut.toolWindowId)?.contentManager).satisfiesKt { it!! assertThat(it.contentCount).isEqualTo(1) assertThat(it.getContent(0)).isEqualTo(tab2) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt index e1ac98461b2..f55b63cd87c 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt @@ -28,6 +28,7 @@ import software.amazon.awssdk.services.cloudformation.model.StackResource import software.amazon.awssdk.services.cloudformation.model.StackStatus import software.aws.toolkits.core.utils.delegateMock import software.aws.toolkits.jetbrains.core.MockClientManagerRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.util.concurrent.Semaphore import java.util.concurrent.TimeUnit @@ -167,7 +168,7 @@ class UpdaterTest { val captor = argumentCaptor>() verify(treeView).fillResources(captor.capture()) - assertThat(captor.firstValue).singleElement().satisfies { + assertThat(captor.firstValue).singleElement().satisfiesKt { assertThat(it.logicalResourceId()).isEqualTo("L1") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt index b0b94abbaa3..3f020695c00 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt @@ -23,6 +23,7 @@ import software.aws.toolkits.jetbrains.services.cloudformation.CloudFormationTem import software.aws.toolkits.jetbrains.services.cloudformation.LambdaFunction import software.aws.toolkits.jetbrains.services.cloudformation.SamFunction import software.aws.toolkits.jetbrains.utils.rules.CodeInsightTestFixtureRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message import java.io.File @@ -133,7 +134,7 @@ Parameters: runInEdtAndWait { assertThat(template.parameters().toList()).hasSize(2) val tableTag = template.parameters().firstOrNull { it.logicalName == "TableTag" } - assertThat(tableTag).notNull.satisfies { tag -> + assertThat(tableTag).notNull.satisfiesKt { tag -> assertThat(tag.defaultValue()).isNull() assertThat(tag.description()).isNotNull() assertThat(tag.constraintDescription()).isNull() diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt index 6de090d4e3c..d2ecf7bde47 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt @@ -13,6 +13,7 @@ import org.mockito.kotlin.whenever import software.amazon.awssdk.services.cloudwatchlogs.model.LogStream import software.aws.toolkits.jetbrains.services.cloudwatch.logs.editor.LogStreamsDateColumn import software.aws.toolkits.jetbrains.services.cloudwatch.logs.editor.LogStreamsStreamColumn +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.text.SimpleDateFormat import java.time.ZoneId import java.time.ZonedDateTime @@ -35,7 +36,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("M/d/yy", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfies { + assertThat(table).satisfiesKt { assertThat(it.getValueAt(0, 0)).isEqualTo("7/11/21") assertThat(it.getValueAt(1, 0)).isEqualTo("6/11/21") assertThat(it.getValueAt(2, 0)).isEqualTo("2/1/21") @@ -47,7 +48,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("MMM d, y", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfies { + assertThat(table).satisfiesKt { assertThat(it.getValueAt(0, 0)).isEqualTo("Jul 11, 2021") assertThat(it.getValueAt(1, 0)).isEqualTo("Jun 11, 2021") assertThat(it.getValueAt(2, 0)).isEqualTo("Feb 1, 2021") @@ -59,7 +60,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("d MMM y", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfies { + assertThat(table).satisfiesKt { assertThat(it.getValueAt(0, 0)).isEqualTo("11 Jul 2021") assertThat(it.getValueAt(1, 0)).isEqualTo("11 Jun 2021") assertThat(it.getValueAt(2, 0)).isEqualTo("1 Feb 2021") diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt index b5cd2556439..1fd61c38d43 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt @@ -15,6 +15,7 @@ import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerEmptyNode import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerErrorNode import software.aws.toolkits.jetbrains.core.id import software.aws.toolkits.jetbrains.services.dynamic.CloudControlApiResources +import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message class DynamicResourceResourceTypeNodeTest { @@ -35,7 +36,7 @@ class DynamicResourceResourceTypeNodeTest { val sut = DynamicResourceResourceTypeNode(projectRule.project, type) - assertThat(sut.children).hasOnlyOneElementOfType().satisfies { + assertThat(sut.children).hasOnlyOneElementOfType().satisfiesKt { assertThat(it.displayName()).isEqualTo(identifier) } } @@ -47,7 +48,7 @@ class DynamicResourceResourceTypeNodeTest { val sut = DynamicResourceResourceTypeNode(projectRule.project, type) - assertThat(sut.children).hasOnlyOneElementOfType().satisfies { + assertThat(sut.children).hasOnlyOneElementOfType().satisfiesKt { assertThat(it.displayName()).startsWith(message("dynamic_resources.unavailable_in_region", "")) } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt index 1a70aec35e4..a5821e1e95a 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt @@ -18,6 +18,7 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.utils.rules.CodeInsightTestFixtureRule +import software.aws.toolkits.jetbrains.utils.satisfiesKt class ArnPsiReferenceProviderTest { @Rule @@ -68,7 +69,7 @@ class ArnPsiReferenceProviderTest { val (str, match) = pair assertThat(ArnPsiReferenceProvider.ARN_REGEX.findAll(str).toList()) .withFailMessage { "Input should have partially matched regex with single result but did not: $str" } - .satisfies { + .satisfiesKt { assertThat(it).hasSize(1) assertThat(it.first().value).isEqualTo(match) } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt index 9ffa60fc569..95a1dfc8aa8 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt @@ -12,6 +12,7 @@ import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.utils.rules.JavaCodeInsightTestFixtureRule import software.aws.toolkits.jetbrains.utils.rules.openFile +import software.aws.toolkits.jetbrains.utils.satisfiesKt class LambdaRunLineMarkerContributorTest { @@ -36,7 +37,7 @@ Resources: runAndAssertionMarks(projectRule.fixture) { marks -> assertThat(marks).hasSize(1) - assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfies { + assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfiesKt { assertThat(it!!.text).isEqualTo("ServerlessFunction") } } @@ -58,7 +59,7 @@ Resources: ) runAndAssertionMarks(projectRule.fixture) { marks -> assertThat(marks).hasSize(1) - assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfies { + assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfiesKt { assertThat(it!!.text).isEqualTo("LambdaFunction") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt index 0fd6a97517b..9042043e277 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt @@ -22,6 +22,7 @@ import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify +import software.aws.toolkits.jetbrains.utils.satisfiesKt class BuildViewStepEmitterTest { @Rule @@ -43,7 +44,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(StartEvent::class.java) { assertThat(it.message).isEqualTo(stepId) @@ -64,7 +65,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -88,21 +89,21 @@ class BuildViewStepEmitterTest { assertThat(allValues).hasSize(3) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo("ChildStep has failed: Test exception") assertThat(it.isStdOut).isFalse() } - assertThat(secondValue).satisfies { + assertThat(secondValue).satisfiesKt { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo("ChildStep has failed: Test exception") assertThat(it.isStdOut).isFalse() } - assertThat(thirdValue).satisfies { + assertThat(thirdValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -121,7 +122,7 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).contains("ParentStep has failed: java.lang.NullPointerException", "at") @@ -139,7 +140,7 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).contains("ParentStep has been canceled") @@ -161,7 +162,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -183,14 +184,14 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) assertThat(it.isStdOut).isTrue() } - assertThat(secondValue).satisfies { + assertThat(secondValue).satisfiesKt { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) @@ -211,14 +212,14 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) assertThat(it.isStdOut).isFalse() } - assertThat(secondValue).satisfies { + assertThat(secondValue).satisfiesKt { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) @@ -240,7 +241,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(childId1) }.isInstanceOfSatisfying(StartEvent::class.java) { assertThat(it.message).isEqualTo(childId2) @@ -260,7 +261,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfies { + assertThat(firstValue).satisfiesKt { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) diff --git a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt index 5869eb60638..7f2990bd418 100644 --- a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt +++ b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt @@ -15,6 +15,7 @@ import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder import software.aws.toolkits.core.utils.test.notNull +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Path import java.nio.file.attribute.PosixFilePermission import java.util.UUID @@ -102,7 +103,7 @@ class ScpCommandLineTest { val paths = sut.executeScpTest() - assertThat(paths).singleElement().notNull.satisfies { + assertThat(paths).singleElement().notNull.satisfiesKt { assertThat(it.fileName.toString()).isEqualTo(uuid) // is nested assertThat(it.parent.fileName.toString()).isEqualTo(directory.name) diff --git a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt index 8b7eabceace..da43b4aea73 100644 --- a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt +++ b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt @@ -147,7 +147,7 @@ package software.aws.toolkits.jetbrains.gateway.welcomescreen // argumentCaptor().apply { // verify(client).startEnvironment(capture()) // -// assertThat(firstValue.ides()).satisfies { +// assertThat(firstValue.ides()).satisfiesKt { // assertThat(it.size).isEqualTo(1) // assertThat(it.first()).isEqualTo(IdeConfiguration.builder().runtime("ecrImage").build()) // } diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index 2c2eb9ad6ef..9e51a335876 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -6,6 +6,7 @@ import com.jetbrains.rd.generator.gradle.RdGenPlugin import com.jetbrains.rd.generator.gradle.RdGenTask import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask +import org.jetbrains.intellij.platform.gradle.TestFrameworkType import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions @@ -49,6 +50,7 @@ sourceSets { dependencies { intellijPlatform { localPlugin(project(":plugin-core", "pluginZip")) + testFramework(TestFrameworkType.Plugin.ReSharper) } implementation(project(":plugin-toolkit:jetbrains-core")) diff --git a/plugins/toolkit/jetbrains-rider/src-232+/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt b/plugins/toolkit/jetbrains-rider/tst-232+/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt similarity index 100% rename from plugins/toolkit/jetbrains-rider/src-232+/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt rename to plugins/toolkit/jetbrains-rider/tst-232+/software/aws/toolkits/jetbrains/utils/OpenSolutionFileParams.kt diff --git a/plugins/toolkit/jetbrains-ultimate/src-232+/software/aws/toolkits/jetbrains/remoteDev/caws/UpdateDevfileAction.kt b/plugins/toolkit/jetbrains-ultimate/src-232+/software/aws/toolkits/jetbrains/remoteDev/caws/UpdateDevfileAction.kt index b6a5d776206..d2ec34cc023 100644 --- a/plugins/toolkit/jetbrains-ultimate/src-232+/software/aws/toolkits/jetbrains/remoteDev/caws/UpdateDevfileAction.kt +++ b/plugins/toolkit/jetbrains-ultimate/src-232+/software/aws/toolkits/jetbrains/remoteDev/caws/UpdateDevfileAction.kt @@ -7,8 +7,8 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.application.WriteAction import com.intellij.openapi.application.runReadAction -import com.intellij.openapi.application.runWriteActionAndWait import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressManager @@ -51,7 +51,7 @@ class UpdateDevfileAction : AnAction() { getFilePathForDevfile() } - runWriteActionAndWait { + WriteAction.runAndWait { FileDocumentManager.getInstance().saveAllDocuments() } diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt index a9f04a4c3ef..a25ca627fc1 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt @@ -17,6 +17,7 @@ import software.aws.toolkits.jetbrains.datagrip.REGION_ID_PROPERTY import software.aws.toolkits.jetbrains.datagrip.auth.SECRET_ID_PROPERTY import software.aws.toolkits.jetbrains.datagrip.auth.SecretsManagerAuth import software.aws.toolkits.jetbrains.datagrip.auth.SecretsManagerDbSecret +import software.aws.toolkits.jetbrains.utils.satisfiesKt class AddSecretsManagerConnectionTest { @Rule @@ -51,7 +52,7 @@ class AddSecretsManagerConnectionTest { secretArn, "adapter" ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.isTemporary).isFalse() assertThat(it.sslCfg?.myEnabled).isTrue() assertThat(it.url).isEqualTo("jdbc:adapter://$address:$port") diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt index 0487a2538a7..b8cde556777 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt @@ -33,6 +33,7 @@ import software.aws.toolkits.jetbrains.services.rds.RdsDatasourceConfiguration import software.aws.toolkits.jetbrains.services.rds.RdsNode import software.aws.toolkits.jetbrains.services.rds.auth.IamAuth import software.aws.toolkits.jetbrains.services.sts.StsResources +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.util.concurrent.CompletableFuture class CreateConfigurationActionTest { @@ -82,7 +83,7 @@ class CreateConfigurationActionTest { val node = createNode() val registry = DataSourceRegistry(projectRule.project) CreateIamDataSourceAction().createDatasource(node, registry) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.isTemporary).isFalse() assertThat(it.username).isEqualTo(username) } @@ -100,7 +101,7 @@ class CreateConfigurationActionTest { val node = createNode() val registry = DataSourceRegistry(projectRule.project) CreateIamDataSourceAction().createDatasource(node, registry) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.isTemporary).isFalse() assertThat(it.username).isEqualTo(masterUsername) } @@ -119,7 +120,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.isTemporary).isFalse() assertThat(it.url).contains(port.toString()) assertThat(it.url).contains(address) @@ -141,7 +142,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.username).isLowerCase().isEqualTo(username.lowercase()) assertThat(it.driverClass).contains("postgres") assertThat(it.url).contains(JDBC_POSTGRES) @@ -160,7 +161,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.username).isLowerCase().isEqualTo(username.lowercase()) assertThat(it.driverClass).contains("postgres") assertThat(it.url).contains(JDBC_POSTGRES) @@ -179,7 +180,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.username).isEqualTo(username) assertThat(it.driverClass).contains("mysql") assertThat(it.url).contains(JDBC_MYSQL) @@ -199,7 +200,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.username).isEqualTo(username) assertThat(it.driverClass).contains("mariadb") assertThat(it.url).contains(JDBC_MYSQL_AURORA) diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt index 2a3caec0538..230c040eef4 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt @@ -18,6 +18,7 @@ import software.aws.toolkits.jetbrains.datagrip.REGION_ID_PROPERTY import software.aws.toolkits.jetbrains.services.redshift.auth.CLUSTER_ID_PROPERTY import software.aws.toolkits.jetbrains.services.redshift.auth.IamAuth import software.aws.toolkits.jetbrains.services.redshift.createDatasource +import software.aws.toolkits.jetbrains.utils.satisfiesKt class CreateDataSourceActionTest { @Rule @@ -53,7 +54,7 @@ class CreateDataSourceActionTest { .dbName(dbName) .build() ) - assertThat(registry.newDataSources).singleElement().satisfies { + assertThat(registry.newDataSources).singleElement().satisfiesKt { assertThat(it.isTemporary).isFalse() assertThat(it.sslCfg?.myEnabled).isTrue() assertThat(it.url).isEqualTo("jdbc:redshift://$address:$port/$dbName") diff --git a/settings.gradle.kts b/settings.gradle.kts index 1f6c2d4e89f..f0a77ac357f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -120,6 +120,9 @@ file("plugins").listFiles()?.forEach root@ { .filter { it.isDirectory && it.resolve("build.gradle.kts").isFile } .iterator() .forEach { + if (it.name == "jetbrains-rider") { + return@forEach + } if (it.name == "jetbrains-gateway") { when (providers.gradleProperty("ideProfileName").get()) { // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 65ce8915306..e19b9507cc1 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.TestFrameworkType import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.toolkitIntelliJ @@ -26,5 +27,7 @@ dependencies { // localPlugin(project(":plugin-core", "pluginZip")) // localPlugin(project(":plugin-amazonq", "pluginZip")) // plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) + + testFramework(TestFrameworkType.Platform.JUnit5) } } From 4cd0b0c62f6f080abe61a83d50ddc80a6a4f6f18 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 11 Jun 2024 17:02:24 -0700 Subject: [PATCH 33/71] build --- .../toolkit-integration-testing.gradle.kts | 23 ++++++++++--------- .../core/utils/test/AssertJAsserts.kt | 6 ++--- .../DefaultConfigFilesFacadeTest.kt | 3 --- .../jetbrains/utils/AssertJMatchers.kt | 13 ++++++++--- ...ctiveBearerTokenProviderIntegrationTest.kt | 1 + .../jetbrains-gateway/build.gradle.kts | 16 +++++++------ .../services/rds/RdsExplorerNodeTest.kt | 9 ++++---- 7 files changed, 40 insertions(+), 31 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts index 8aecffb581b..ffc030fb2f8 100644 --- a/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts @@ -1,10 +1,11 @@ +// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import org.jetbrains.intellij.platform.gradle.Constants.Configurations.Attributes import software.aws.toolkits.gradle.ciOnly import software.aws.toolkits.gradle.findFolders import software.aws.toolkits.gradle.intellij.IdeVersions -// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - plugins { id("java") id("idea") @@ -29,20 +30,20 @@ sourceSets { } } -configurations.getByName("integrationTestCompileOnly") { - extendsFrom(configurations.getByName(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME)) -} - configurations.getByName("integrationTestCompileClasspath") { extendsFrom(configurations.getByName(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME)) -} - -configurations.getByName("integrationTestRuntimeOnly") { - extendsFrom(configurations.getByName(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME)) + attributes { + attribute(Attributes.extracted, true) + attribute(Attributes.collected, true) + } } configurations.getByName("integrationTestRuntimeClasspath") { extendsFrom(configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME)) + attributes { + attribute(Attributes.extracted, true) + attribute(Attributes.collected, true) + } isCanBeResolved = true } diff --git a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt index d133b453b08..ee005af612a 100644 --- a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt +++ b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt @@ -3,8 +3,8 @@ package software.aws.toolkits.core.utils.test +import org.assertj.core.api.AbstractIterableAssert import org.assertj.core.api.Assertions.assertThat -import org.assertj.core.api.IterableAssert import org.assertj.core.api.ListAssert import org.assertj.core.api.ObjectAssert import java.nio.file.Files @@ -16,8 +16,8 @@ val ObjectAssert.notNull: ObjectAssert get() = this.isNotNull as ObjectAssert @Suppress("UNCHECKED_CAST") -inline fun IterableAssert<*>.hasOnlyElementsOfType(): IterableAssert = - hasOnlyElementsOfType(SubType::class.java) as IterableAssert +inline fun AbstractIterableAssert<*, *, *, *>.hasOnlyElementsOfTypeKt() = + hasOnlyElementsOfType(SubType::class.java) as AbstractIterableAssert<*, Iterable, SubType, *> @Suppress("UNCHECKED_CAST") inline fun ListAssert<*>.hasOnlyOneElementOfType(): ObjectAssert = diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt index 4a3b6ce8a2b..13e31e993c9 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt @@ -13,10 +13,7 @@ import software.aws.toolkits.core.utils.createParentDirectories import software.aws.toolkits.core.utils.test.assertPosixPermissions import software.aws.toolkits.core.utils.writeText import software.aws.toolkits.jetbrains.utils.satisfiesKt -import java.nio.file.Files import java.nio.file.Paths -import java.nio.file.attribute.PosixFilePermission -import java.nio.file.attribute.PosixFilePermissions class DefaultConfigFilesFacadeTest { diff --git a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt index 614078a6406..28149be11ed 100644 --- a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt +++ b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt @@ -34,9 +34,16 @@ val CompletableFutureAssert.hasException get() = this.wait().isCompletedE // https://github.com/assertj/assertj/issues/2357 @Suppress("UNCHECKED_CAST") -fun AbstractAssert<*, T>.satisfiesKt(requirements: Consumer): AbstractAssert<*, T> { - return this.satisfies(requirements) as AbstractAssert<*, T> -} +fun > AbstractIterableAssert<*, I, E, *>.allSatisfyKt(requirements: Consumer) = + allSatisfy(requirements) as AbstractIterableAssert<*, I, E, *> + +@Suppress("UNCHECKED_CAST") +fun > AbstractIterableAssert<*, I, E, *>.anySatisfyKt(requirements: Consumer) = + anySatisfy(requirements) as AbstractIterableAssert<*, I, E, *> + +@Suppress("UNCHECKED_CAST") +fun AbstractAssert<*, T>.satisfiesKt(requirements: Consumer) = + satisfies(requirements) as AbstractAssert<*, T> fun , ACTUAL : Throwable> AbstractThrowableAssert.hasCauseWithMessage( message: String diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt index 937190bb9f2..98f1177c3c3 100644 --- a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt +++ b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt @@ -21,6 +21,7 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.DeviceGrantAccessTok import software.aws.toolkits.jetbrains.core.credentials.sso.DiskCache import software.aws.toolkits.jetbrains.utils.extensions.SsoLogin import software.aws.toolkits.jetbrains.utils.extensions.SsoLoginExtension +import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Path import java.time.Instant diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 31702c942d2..4dd3593a4dc 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -43,13 +43,15 @@ val gatewayOnlyResourcesJar by tasks.registering(Jar::class) { from(processGatewayOnlyResources) } -configurations["intellijPlatformDependency"].dependencies.addLater(toolkitIntelliJ.version().map { - dependencies.create( - group = "com.jetbrains.gateway", - name = "JetBrainsGateway", - version = it, - ) -}) +configurations["intellijPlatformDependency"].dependencies.addLater( + toolkitIntelliJ.version().map { + dependencies.create( + group = "com.jetbrains.gateway", + name = "JetBrainsGateway", + version = it, + ) + } +) dependencies { // link against :j-c: and rely on :intellij:buildPlugin to pull in :j-c:instrumentedJar, but gateway variant when runIde/buildPlugin from :jetbrains-gateway diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt index 8058a19cda3..19ed6a6e045 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt @@ -9,11 +9,12 @@ import org.junit.Rule import org.junit.Test import software.aws.toolkits.core.utils.RuleUtils import software.aws.toolkits.core.utils.test.aString -import software.aws.toolkits.core.utils.test.hasOnlyElementsOfType +import software.aws.toolkits.core.utils.test.hasOnlyElementsOfTypeKt import software.aws.toolkits.jetbrains.core.MockResourceCacheRule import software.aws.toolkits.jetbrains.core.explorer.nodes.RdsExplorerRootNode import software.aws.toolkits.jetbrains.services.rds.resources.LIST_SUPPORTED_CLUSTERS import software.aws.toolkits.jetbrains.services.rds.resources.LIST_SUPPORTED_INSTANCES +import software.aws.toolkits.jetbrains.utils.allSatisfyKt class RdsExplorerNodeTest { @JvmField @@ -48,8 +49,8 @@ class RdsExplorerNodeTest { val databasesNames = instances.values + clusters.values assertThat(serviceRootNode.children) .hasSize(databasesNames.size) - .hasOnlyElementsOfType() - .allSatisfy { + .hasOnlyElementsOfTypeKt() + .allSatisfyKt { assertThat(it.resourceType()).isEqualTo("instance") }.extracting { it.database.identifier @@ -75,7 +76,7 @@ class RdsExplorerNodeTest { val serviceRootNode = sut.buildServiceRootNode(projectRule.project) assertThat(serviceRootNode.children) - .hasOnlyElementsOfType() + .hasOnlyElementsOfTypeKt() .extracting { it.database }.containsOnly(db) From 7a328212aff3e92709ed035a7c6ec04e02db0377 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 13 Jun 2024 08:46:58 +0000 Subject: [PATCH 34/71] tst --- plugins/toolkit/jetbrains-core/build.gradle.kts | 3 +++ plugins/toolkit/jetbrains-core/test-plugin-shim.xml | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 plugins/toolkit/jetbrains-core/test-plugin-shim.xml diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index fab235950a0..9b4bdfa292c 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -123,6 +123,9 @@ tasks.prepareSandbox { tasks.testJar { // classpath.index is a duplicate duplicatesStrategy = DuplicatesStrategy.INCLUDE + + // not sure why this is getting pulled in + exclude("**/plugin.xml") } tasks.processTestResources { diff --git a/plugins/toolkit/jetbrains-core/test-plugin-shim.xml b/plugins/toolkit/jetbrains-core/test-plugin-shim.xml deleted file mode 100644 index cb9a42454d4..00000000000 --- a/plugins/toolkit/jetbrains-core/test-plugin-shim.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - aws.toolkit.core - - From 1b3afa7aed2c3ce40c795fc5d7cc631ef208a2bb Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 13 Jun 2024 19:27:22 +0000 Subject: [PATCH 35/71] no gw --- settings.gradle.kts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index f0a77ac357f..670539c561a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -124,12 +124,13 @@ file("plugins").listFiles()?.forEach root@ { return@forEach } if (it.name == "jetbrains-gateway") { - when (providers.gradleProperty("ideProfileName").get()) { - // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt - "2023.2", "2023.3" -> { - return@forEach - } - } + return@forEach +// when (providers.gradleProperty("ideProfileName").get()) { +// // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt +// "2023.2", "2023.3" -> { +// return@forEach +// } +// } } val projectName = path.joinToString(separator = ":", prefix = ":") From e482711d02eb242e58e8403afc84e752411696e5 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 13 Jun 2024 20:18:58 +0000 Subject: [PATCH 36/71] build --- .../toolkit-publish-root-conventions.gradle.kts | 4 +++- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 6 ++++++ settings.gradle.kts | 14 +++++++------- tmp-all/build.gradle.kts | 1 + 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index d549543b231..d3bf4cc01c7 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -42,7 +42,9 @@ intellijPlatform { instrumentCode = true verifyPlugin { ides { - recommended() + // recommended() appears to resolve latest EAP for a product?git + ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) + ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) } } } diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 4dd3593a4dc..21d39701207 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import net.bytebuddy.utility.RandomString +import org.jetbrains.intellij.platform.gradle.TestFrameworkType import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.toolkitIntelliJ @@ -54,6 +55,11 @@ configurations["intellijPlatformDependency"].dependencies.addLater( ) dependencies { + intellijPlatform { + testFramework(TestFrameworkType.Platform.JUnit5) + testFramework(TestFrameworkType.Platform.Bundled) + } + // link against :j-c: and rely on :intellij:buildPlugin to pull in :j-c:instrumentedJar, but gateway variant when runIde/buildPlugin from :jetbrains-gateway compileOnly(project(":plugin-toolkit:jetbrains-core")) gatewayOnlyRuntimeOnly(project(":plugin-toolkit:jetbrains-core", "gatewayArtifacts")) diff --git a/settings.gradle.kts b/settings.gradle.kts index 670539c561a..e2a2b3b9fd1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -124,13 +124,13 @@ file("plugins").listFiles()?.forEach root@ { return@forEach } if (it.name == "jetbrains-gateway") { - return@forEach -// when (providers.gradleProperty("ideProfileName").get()) { -// // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt -// "2023.2", "2023.3" -> { -// return@forEach -// } -// } +// return@forEach + when (providers.gradleProperty("ideProfileName").get()) { + // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt + "2023.2", "2023.3" -> { + return@forEach + } + } } val projectName = path.joinToString(separator = ":", prefix = ":") diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index e19b9507cc1..69b139d2f89 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { // localPlugin(project(":plugin-amazonq", "pluginZip")) // plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) + testFramework(TestFrameworkType.Platform.Bundled) testFramework(TestFrameworkType.Platform.JUnit5) } } From df03f93ab08403a5f5e03c342a1075ee9cb5a6d1 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 14 Jun 2024 13:01:44 -0700 Subject: [PATCH 37/71] bump --- gradle/libs.versions.toml | 2 +- .../amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts | 4 ---- plugins/core/jetbrains-community/build.gradle.kts | 4 ++-- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 4 ++-- tmp-all/build.gradle.kts | 4 ++-- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d0ad4f677cd..cf0494ec79e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ awsSdk = "2.25.33" commonmark = "0.17.1" detekt = "1.23.6" intellijExt = "1.1.8" -intellijGradle = "2.0.0-beta6" +intellijGradle = "2.0.0-beta7" intellijRemoteRobot = "0.11.22" jackson = "2.16.1" jacoco = "0.8.12" diff --git a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts index d65aeae6bba..a1578ab0c85 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts +++ b/plugins/amazonq/codewhisperer/jetbrains-ultimate/build.gradle.kts @@ -11,10 +11,6 @@ intellijToolkit { ideFlavor.set(IdeFlavor.IU) } -intellij { - plugins.add(project(":plugin-core")) -} - dependencies { intellijPlatform { localPlugin(project(":plugin-core", "pluginZip")) diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 6e875a14588..44f29d47874 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -47,8 +47,8 @@ configurations.testFixturesCompileOnlyApi { dependencies { intellijPlatform { - testFramework(TestFrameworkType.Platform.JUnit4) - testFramework(TestFrameworkType.Platform.JUnit5) + testFramework(TestFrameworkType.Platform) + testFramework(TestFrameworkType.JUnit5) testFramework(TestFrameworkType.Plugin.Java) } diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 21d39701207..e3385aec72e 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -56,8 +56,8 @@ configurations["intellijPlatformDependency"].dependencies.addLater( dependencies { intellijPlatform { - testFramework(TestFrameworkType.Platform.JUnit5) - testFramework(TestFrameworkType.Platform.Bundled) + testFramework(TestFrameworkType.JUnit5) + testFramework(TestFrameworkType.Bundled) } // link against :j-c: and rely on :intellij:buildPlugin to pull in :j-c:instrumentedJar, but gateway variant when runIde/buildPlugin from :jetbrains-gateway diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 69b139d2f89..8e242ac00cb 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -28,7 +28,7 @@ dependencies { // localPlugin(project(":plugin-amazonq", "pluginZip")) // plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) - testFramework(TestFrameworkType.Platform.Bundled) - testFramework(TestFrameworkType.Platform.JUnit5) + testFramework(TestFrameworkType.Bundled) + testFramework(TestFrameworkType.JUnit5) } } From c20ca03ecc4b255b97cec583ff0840b6dbe56f16 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 14 Jun 2024 14:46:10 -0700 Subject: [PATCH 38/71] verify --- .../main/kotlin/toolkit-publish-root-conventions.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index d3bf4cc01c7..a09345f7624 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -4,6 +4,7 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.tasks.BuildPluginTask import org.jetbrains.intellij.platform.gradle.tasks.PatchPluginXmlTask +import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask import software.aws.toolkits.gradle.buildMetadata import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions @@ -41,6 +42,9 @@ if (!project.isCi()) { intellijPlatform { instrumentCode = true verifyPlugin { + // need to tune this + failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) + ides { // recommended() appears to resolve latest EAP for a product?git ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) From 09b8d1d9e999755ea93cea28daadd1e2839312f3 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 14 Jun 2024 15:39:40 -0700 Subject: [PATCH 39/71] gw --- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index e3385aec72e..147a82fa510 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -56,6 +56,8 @@ configurations["intellijPlatformDependency"].dependencies.addLater( dependencies { intellijPlatform { + pluginVerifier() + testFramework(TestFrameworkType.JUnit5) testFramework(TestFrameworkType.Bundled) } From a054a6dfc258d260f96abd5039485398299d38ee Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 17 Jun 2024 14:49:12 -0700 Subject: [PATCH 40/71] build --- .../toolkit-intellij-subplugin.gradle.kts | 5 ++++ ...oolkit-publish-root-conventions.gradle.kts | 12 +-------- .../toolkit-publishing-conventions.gradle.kts | 14 ++++++++++ .../jetbrains-gateway/build.gradle.kts | 26 +------------------ 4 files changed, 21 insertions(+), 36 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts index d3940c8a464..517e0316b7c 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts @@ -100,6 +100,11 @@ dependencies { bundledPlugins(toolkitIntelliJ.productProfile().map { it.bundledPlugins }) plugins(toolkitIntelliJ.productProfile().map { it.marketplacePlugins }) } + + // FIX_WHEN_MIN_IS_233: something weird with dependency transform in 232-only (pulling in 13.0?) but doesn't worth investigating at the moment + if (providers.gradleProperty("ideProfileName").getOrNull() == "2023.2") { + compileOnly("org.jetbrains:annotations:24.0.0") + } } tasks.jar { diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index a09345f7624..e760a8e283a 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -40,17 +40,7 @@ if (!project.isCi()) { } intellijPlatform { - instrumentCode = true - verifyPlugin { - // need to tune this - failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) - - ides { - // recommended() appears to resolve latest EAP for a product?git - ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) - ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) - } - } + instrumentCode = false } dependencies { diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index f3468b93387..eeefd2eac0b 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -1,6 +1,9 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType +import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask import software.aws.toolkits.gradle.intellij.IdeVersions +import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { id("org.jetbrains.intellij.platform") @@ -14,6 +17,17 @@ intellijPlatform { token.set(publishToken) channels.set(publishChannel.split(",").map { it.trim() }) } + + verifyPlugin { + // need to tune this + failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) + + ides { + // recommended() appears to resolve latest EAP for a product?git + ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) + ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) + } + } } configurations { diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 147a82fa510..43c2197348d 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -13,6 +13,7 @@ plugins { id("toolkit-testing") id("toolkit-intellij-subplugin") id("toolkit-integration-testing") + id("toolkit-publishing-conventions") } intellijToolkit { @@ -164,32 +165,7 @@ tasks.buildPlugin { archiveClassifier.set(classifier) } -val publishToken: String by project -val publishChannel: String by project -tasks.publishPlugin { - token.set(publishToken) - channels.set(publishChannel.split(",").map { it.trim() }) -} - tasks.integrationTest { val testToken = RandomString.make(32) environment("CWM_HOST_STATUS_OVER_HTTP_TOKEN", testToken) } - -configurations { - all { - // IDE provides netty - exclude("io.netty") - } - - // Make sure we exclude stuff we either A) ships with IDE, B) we don't use to cut down on size - runtimeClasspath { - exclude(group = "org.slf4j") - exclude(group = "org.jetbrains.kotlin") - exclude(group = "org.jetbrains.kotlinx") - } -} - -tasks.check { - dependsOn(tasks.verifyPlugin) -} From f10de8254462ae455a1e83f53f17fe05c5de37ec Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 17 Jun 2024 15:32:40 -0700 Subject: [PATCH 41/71] pp --- .../src/main/kotlin/toolkit-publishing-conventions.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index eeefd2eac0b..ab1538104a8 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -6,7 +6,7 @@ import software.aws.toolkits.gradle.intellij.IdeVersions import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { - id("org.jetbrains.intellij.platform") + id("toolkit-intellij-plugin") } intellijPlatform { @@ -23,7 +23,7 @@ intellijPlatform { failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) ides { - // recommended() appears to resolve latest EAP for a product?git + // recommended() appears to resolve latest EAP for a product? ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) } From 4e0129c952caf5e13c874adba283ed65c8cad2d1 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 17 Jun 2024 16:13:05 -0700 Subject: [PATCH 42/71] gw --- .../kotlin/toolkit-publish-root-conventions.gradle.kts | 8 ++++++++ .../kotlin/toolkit-publishing-conventions.gradle.kts | 9 +-------- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 7 +++++++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts index e760a8e283a..16dacf82497 100644 --- a/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publish-root-conventions.gradle.kts @@ -41,6 +41,14 @@ if (!project.isCi()) { intellijPlatform { instrumentCode = false + + verifyPlugin { + ides { + // recommended() appears to resolve latest EAP for a product? + ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) + ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) + } + } } dependencies { diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index ab1538104a8..3289ed65fb4 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -3,10 +3,9 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask import software.aws.toolkits.gradle.intellij.IdeVersions -import software.aws.toolkits.gradle.intellij.toolkitIntelliJ plugins { - id("toolkit-intellij-plugin") + id("org.jetbrains.intellij.platform") } intellijPlatform { @@ -21,12 +20,6 @@ intellijPlatform { verifyPlugin { // need to tune this failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) - - ides { - // recommended() appears to resolve latest EAP for a product? - ide(provider { IntelliJPlatformType.IntellijIdeaCommunity }, toolkitIntelliJ.version()) - ide(provider { IntelliJPlatformType.IntellijIdeaUltimate }, toolkitIntelliJ.version()) - } } } diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 43c2197348d..c85bb55901d 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import net.bytebuddy.utility.RandomString +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.TestFrameworkType import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor @@ -22,6 +23,12 @@ intellijToolkit { intellijPlatform { projectName = "aws-toolkit-jetbrains" + + verifyPlugin { + ides { + ide(provider { IntelliJPlatformType.Gateway }, toolkitIntelliJ.version()) + } + } } sourceSets { From a900c26b622d4a9f78e9207b5bc3bf95575cced1 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 17 Jun 2024 16:29:45 -0700 Subject: [PATCH 43/71] gw --- .../jetbrains-gateway/build.gradle.kts | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index c85bb55901d..3bccaaf3bc0 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -23,12 +23,6 @@ intellijToolkit { intellijPlatform { projectName = "aws-toolkit-jetbrains" - - verifyPlugin { - ides { - ide(provider { IntelliJPlatformType.Gateway }, toolkitIntelliJ.version()) - } - } } sourceSets { @@ -52,15 +46,20 @@ val gatewayOnlyResourcesJar by tasks.registering(Jar::class) { from(processGatewayOnlyResources) } -configurations["intellijPlatformDependency"].dependencies.addLater( - toolkitIntelliJ.version().map { - dependencies.create( - group = "com.jetbrains.gateway", - name = "JetBrainsGateway", - version = it, - ) - } -) +listOf( + "intellijPlatformDependency", + "intellijPluginVerifierIdesDependency", +).forEach { configurationName -> + configurations[configurationName].dependencies.addLater( + toolkitIntelliJ.version().map { + dependencies.create( + group = "com.jetbrains.gateway", + name = "JetBrainsGateway", + version = it, + ) + } + ) +} dependencies { intellijPlatform { From 3cb7153e1ab3b0ed3be9e5178281d83d1a2bd2e4 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 18 Jun 2024 10:25:06 -0700 Subject: [PATCH 44/71] lint --- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 3bccaaf3bc0..1207ed7988a 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 import net.bytebuddy.utility.RandomString -import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.TestFrameworkType import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import software.aws.toolkits.gradle.intellij.IdeFlavor From 4b4b6ad43dbe533acaa308a3a3bcc53f6625012e Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 18 Jun 2024 10:31:31 -0700 Subject: [PATCH 45/71] win --- buildspec/windowsTests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/buildspec/windowsTests.yml b/buildspec/windowsTests.yml index c4773bd168d..a6b922eaf38 100644 --- a/buildspec/windowsTests.yml +++ b/buildspec/windowsTests.yml @@ -36,8 +36,9 @@ phases: $Env:CODEARTIFACT_AUTH_TOKEN=aws codeartifact get-authorization-token --domain $Env:CODEARTIFACT_DOMAIN_NAME --query authorizationToken --output text --duration-seconds 3600 } - # Rider is very expensive (spikes our CI jobs to 50% CPU, so let it do the prep work in parallel, but run tests later - ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue + # Rider is very expensive (spikes our CI jobs to 50% CPU, so let it do the prep work in parallel, but run tests later + # ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue + ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check --info --console plain --continue if ($LastExitCode -ne 0) { Write-Host "Command failed with exit code $LastExitCode" exit -1 From 3dad65c46cd577dcae9e1d178c6701ba2301b71f Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Thu, 20 Jun 2024 10:21:23 -0700 Subject: [PATCH 46/71] Update settings.gradle.kts --- settings.gradle.kts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index e2a2b3b9fd1..1f6c2d4e89f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -120,11 +120,7 @@ file("plugins").listFiles()?.forEach root@ { .filter { it.isDirectory && it.resolve("build.gradle.kts").isFile } .iterator() .forEach { - if (it.name == "jetbrains-rider") { - return@forEach - } if (it.name == "jetbrains-gateway") { -// return@forEach when (providers.gradleProperty("ideProfileName").get()) { // buildSrc is evaluated after settings so we can't key off of IdeVersions.kt "2023.2", "2023.3" -> { From 01abc5bb96aceae1be717ca3c44d4855ed07503b Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 20 Jun 2024 12:30:49 -0700 Subject: [PATCH 47/71] tst framework --- plugins/toolkit/jetbrains-rider/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/toolkit/jetbrains-rider/build.gradle.kts b/plugins/toolkit/jetbrains-rider/build.gradle.kts index 9e51a335876..d08d4f70242 100644 --- a/plugins/toolkit/jetbrains-rider/build.gradle.kts +++ b/plugins/toolkit/jetbrains-rider/build.gradle.kts @@ -50,6 +50,7 @@ sourceSets { dependencies { intellijPlatform { localPlugin(project(":plugin-core", "pluginZip")) + testFramework(TestFrameworkType.Bundled) testFramework(TestFrameworkType.Plugin.ReSharper) } From f1b198ea8416a46834445e993558b80b719c569e Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 20 Jun 2024 12:50:38 -0700 Subject: [PATCH 48/71] revert assertj changes --- .../core/utils/test/AssertJAsserts.kt | 15 ++-------- .../DefaultAwsConnectionManagerTest.kt | 5 ++-- .../DefaultConfigFilesFacadeTest.kt | 20 ++++++++----- .../DefaultToolkitAuthManagerTest.kt | 13 ++++----- .../core/credentials/sso/DiskCacheTest.kt | 6 +++- .../core/gettingstarted/IdcRolePopupTest.kt | 3 +- .../SetupAuthenticationDialogTest.kt | 5 ++-- .../telemetry/TelemetryServiceTest.kt | 9 ++---- .../jetbrains/utils/AssertJMatchers.kt | 16 +--------- ...ctiveBearerTokenProviderIntegrationTest.kt | 3 +- .../ConnectionSettingsMenuBuilderTest.kt | 3 +- .../ContainerCredentialProviderFactoryTest.kt | 5 ++-- ...stanceRoleCredentialProviderFactoryTest.kt | 3 +- ...wsConnectionExtensionSettingsEditorTest.kt | 3 +- .../notification/MinimumVersionChangeTest.kt | 3 +- .../core/region/AwsRegionProviderTest.kt | 3 +- .../core/tools/FourPartVersionTest.kt | 3 +- .../core/tools/SemanticVersionTest.kt | 3 +- .../core/toolwindow/ToolkitToolWindowTest.kt | 3 +- .../cloudformation/stack/UpdaterTest.kt | 3 +- .../yaml/YamlCloudFormationTemplateTest.kt | 3 +- .../cloudwatch/logs/TableUtilsTest.kt | 7 ++--- .../DynamicResourceResourceTypeNodeTest.kt | 5 ++-- .../ArnPsiReferenceProviderTest.kt | 3 +- .../LambdaRunLineMarkerContributorTest.kt | 5 ++-- .../steps/BuildViewStepEmitterTest.kt | 29 +++++++++---------- .../gateway/connection/ScpCommandLineTest.kt | 3 +- .../welcomescreen/ConfigureActionTest.kt | 2 +- .../AddSecretsManagerConnectionTest.kt | 3 +- .../services/rds/RdsExplorerNodeTest.kt | 9 +++--- .../actions/CreateConfigurationActionTest.kt | 15 +++++----- .../actions/CreateDataSourceActionTest.kt | 3 +- 32 files changed, 86 insertions(+), 128 deletions(-) diff --git a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt index ee005af612a..106d7720e8e 100644 --- a/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt +++ b/plugins/core/core/tst/software/aws/toolkits/core/utils/test/AssertJAsserts.kt @@ -3,27 +3,18 @@ package software.aws.toolkits.core.utils.test -import org.assertj.core.api.AbstractIterableAssert -import org.assertj.core.api.Assertions.assertThat +import org.assertj.core.api.IterableAssert import org.assertj.core.api.ListAssert import org.assertj.core.api.ObjectAssert -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.attribute.PosixFilePermissions @Suppress("UNCHECKED_CAST") val ObjectAssert.notNull: ObjectAssert get() = this.isNotNull as ObjectAssert @Suppress("UNCHECKED_CAST") -inline fun AbstractIterableAssert<*, *, *, *>.hasOnlyElementsOfTypeKt() = - hasOnlyElementsOfType(SubType::class.java) as AbstractIterableAssert<*, Iterable, SubType, *> +inline fun IterableAssert<*>.hasOnlyElementsOfType(): IterableAssert = + hasOnlyElementsOfType(SubType::class.java) as IterableAssert @Suppress("UNCHECKED_CAST") inline fun ListAssert<*>.hasOnlyOneElementOfType(): ObjectAssert = (hasOnlyElementsOfType(SubType::class.java) as ListAssert).singleElement() - -fun assertPosixPermissions(path: Path, expected: String) { - val perms = PosixFilePermissions.toString(Files.getPosixFilePermissions(path)) - assertThat(perms).isEqualTo(expected) -} diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt index fb222426679..1cfe6d100e4 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt @@ -26,7 +26,6 @@ import software.aws.toolkits.jetbrains.core.region.getDefaultRegion import software.aws.toolkits.jetbrains.services.sts.StsResources import software.aws.toolkits.jetbrains.utils.deserializeState import software.aws.toolkits.jetbrains.utils.rules.HeavyJavaCodeInsightTestFixtureRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.jetbrains.utils.serializeState import java.nio.file.Files import java.util.concurrent.CompletableFuture @@ -90,7 +89,7 @@ class DefaultAwsConnectionManagerTest { manager.noStateLoaded() manager.waitUntilConnectionStateIsStable() - assertThat(manager.selectedCredentialIdentifier).notNull.satisfiesKt { + assertThat(manager.selectedCredentialIdentifier).notNull.satisfies { assertThat(it.id).isEqualTo(credentials.id) } } @@ -113,7 +112,7 @@ class DefaultAwsConnectionManagerTest { manager.waitUntilConnectionStateIsStable() - assertThat(manager.selectedRegion).notNull.satisfiesKt { + assertThat(manager.selectedRegion).notNull.satisfies { assertThat(it.id).isEqualTo("us-west-2") } } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt index 13e31e993c9..d479bb306ae 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultConfigFilesFacadeTest.kt @@ -4,16 +4,18 @@ package software.aws.toolkits.jetbrains.core.credentials import org.assertj.core.api.Assertions.assertThat +import org.assertj.core.api.IterableAssert import org.junit.Assume import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder import software.amazon.awssdk.profiles.Profile import software.aws.toolkits.core.utils.createParentDirectories -import software.aws.toolkits.core.utils.test.assertPosixPermissions import software.aws.toolkits.core.utils.writeText -import software.aws.toolkits.jetbrains.utils.satisfiesKt +import java.nio.file.Files import java.nio.file.Paths +import java.nio.file.attribute.PosixFilePermission +import java.nio.file.attribute.PosixFilePermissions class DefaultConfigFilesFacadeTest { @@ -31,8 +33,8 @@ class DefaultConfigFilesFacadeTest { assertThat(file).exists().hasContent(DefaultConfigFilesFacade.TEMPLATE) assumeNoException { - assertPosixPermissions(file, "rw-------") - assertPosixPermissions(file.parent, "rwxr-xr-x") + assertThat(Files.getPosixFilePermissions(file)).matches("rw-------") + assertThat(Files.getPosixFilePermissions(file.parent)).matches("rwxr-xr-x") } } @@ -48,8 +50,8 @@ class DefaultConfigFilesFacadeTest { sut.createConfigFile() assumeNoException { - assertPosixPermissions(file, "rw-------") - assertPosixPermissions(file.parent, "rwxrwxrwx") + assertThat(Files.getPosixFilePermissions(file)).matches("rw-------") + assertThat(Files.getPosixFilePermissions(file.parent)).matches("rwxrwxrwx") } } @@ -104,7 +106,7 @@ class DefaultConfigFilesFacadeTest { assertThat(sut.readAllProfiles()) .hasSize(1) - .satisfiesKt { + .satisfies { val entry = it.entries.first() assertThat(entry.key).isEqualTo("profileName") assertThat(entry.value).isEqualTo( @@ -594,6 +596,10 @@ class DefaultConfigFilesFacadeTest { ) } + private fun IterableAssert.matches(permissionString: String) { + containsOnly(*PosixFilePermissions.fromString(permissionString).toTypedArray()) + } + private inline fun assumeNoException(block: () -> Unit) { try { block() diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt index 8104d89d809..824ac0adf57 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt @@ -31,7 +31,6 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.InteractiveBe import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule import software.aws.toolkits.jetbrains.utils.isInstanceOf import software.aws.toolkits.jetbrains.utils.isInstanceOfSatisfying -import software.aws.toolkits.jetbrains.utils.satisfiesKt class DefaultToolkitAuthManagerTest { @JvmField @@ -91,7 +90,7 @@ class DefaultToolkitAuthManagerTest { ) sut.createConnection(profile) - assertThat(sut.state?.ssoProfiles).satisfiesKt { profiles -> + assertThat(sut.state?.ssoProfiles).satisfies { profiles -> assertThat(profiles).isNotNull() assertThat(profiles).singleElement().isEqualTo(profile) } @@ -111,7 +110,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfiesKt { + assertThat(sut.listConnections()).singleElement().satisfies { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("") assertThat(connection.region).isEqualTo(profile.ssoRegion) @@ -139,7 +138,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfiesKt { + assertThat(sut.listConnections()).singleElement().satisfies { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("") assertThat(connection.region).isEqualTo(profile.ssoRegion) @@ -165,7 +164,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfiesKt { + assertThat(sut.listConnections()).singleElement().satisfies { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("add") assertThat(connection.region).isEqualTo("us-east-1") @@ -183,7 +182,7 @@ class DefaultToolkitAuthManagerTest { ) ) - assertThat(sut.listConnections()).singleElement().satisfiesKt { + assertThat(sut.listConnections()).singleElement().satisfies { assertThat(it).isInstanceOfSatisfying { connection -> assertThat(connection.sessionName).isEqualTo("add") assertThat(connection.region).isEqualTo("us-east-1") @@ -333,7 +332,7 @@ class DefaultToolkitAuthManagerTest { val newScopes = listOf("existing1", "new1") loginSso(projectRule.project, "foo", "us-east-1", newScopes) - assertThat(connectionManager.activeConnection() as AwsBearerTokenConnection).satisfiesKt { connection -> + assertThat(connectionManager.activeConnection() as AwsBearerTokenConnection).satisfies { connection -> assertThat(connection.scopes.toSet()).isEqualTo(setOf("existing1", "existing2", "existing3", "new1")) } assertThat(sut.listConnections()).singleElement().isInstanceOfSatisfying { connection -> diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt index 670925a8ee4..89c7cb597a6 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/sso/DiskCacheTest.kt @@ -12,7 +12,6 @@ import org.junit.jupiter.api.condition.DisabledOnOs import org.junit.jupiter.api.condition.OS import org.junit.jupiter.api.io.TempDir import software.aws.toolkits.core.utils.readText -import software.aws.toolkits.core.utils.test.assertPosixPermissions import software.aws.toolkits.core.utils.writeText import java.nio.file.Files import java.nio.file.Path @@ -710,4 +709,9 @@ class DiskCacheTest { .usingRecursiveComparison() .isEqualTo(sut.loadAccessToken(key2)) } + + private fun assertPosixPermissions(path: Path, expected: String) { + val perms = PosixFilePermissions.toString(Files.getPosixFilePermissions(path)) + assertThat(perms).isEqualTo(expected) + } } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt index dc541b8fd51..ee4ddc49674 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/IdcRolePopupTest.kt @@ -21,7 +21,6 @@ import software.aws.toolkits.core.utils.test.aString import software.aws.toolkits.jetbrains.core.MockClientManagerExtension import software.aws.toolkits.jetbrains.core.credentials.ConfigFilesFacade import software.aws.toolkits.jetbrains.core.region.MockRegionProviderExtension -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message @ExtendWith(MockKExtension::class) @@ -54,7 +53,7 @@ class IdcRolePopupTest { } } - assertThat(validation).singleElement().satisfiesKt { + assertThat(validation).singleElement().satisfies { assertThat(it.okEnabled).isFalse() assertThat(it.message).contains(message("gettingstarted.setup.error.not_selected")) } diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt index 8a34a861c3c..8d47279fea9 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/gettingstarted/SetupAuthenticationDialogTest.kt @@ -37,7 +37,6 @@ import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_URL import software.aws.toolkits.jetbrains.core.gettingstarted.editor.SourceOfEntry import software.aws.toolkits.jetbrains.core.region.MockRegionProviderExtension -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.FeatureId @@ -213,7 +212,7 @@ class SetupAuthenticationDialogTest { } } - assertThat(validation).satisfiesKt { + assertThat(validation).satisfies { assertThat(it).hasSize(2) assertThat(it).allSatisfy { error -> assertThat(error.message).contains("Must not be empty") @@ -267,7 +266,7 @@ class SetupAuthenticationDialogTest { } } - assertThat(validation).satisfiesKt { + assertThat(validation).satisfies { assertThat(it).hasSize(3) assertThat(it).allSatisfy { error -> assertThat(error.message).contains("Must not be empty") diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt index fc92c007083..c15b2a76615 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/telemetry/TelemetryServiceTest.kt @@ -37,7 +37,6 @@ import software.aws.toolkits.jetbrains.core.credentials.waitUntilConnectionState import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule import software.aws.toolkits.jetbrains.services.sts.StsResources import software.aws.toolkits.jetbrains.settings.AwsSettings -import software.aws.toolkits.jetbrains.utils.isInstanceOfSatisfying import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit @@ -268,11 +267,9 @@ class TelemetryServiceTest { private fun assertMetricEventsContains(events: Collection, eventName: String, awsAccount: String, awsRegion: String) { assertThat(events).filteredOn { event -> event.data.any { it.name == eventName } - }.anySatisfy { element -> - assertThat(element).isInstanceOfSatisfying { - assertThat(it.awsAccount).isEqualTo(awsAccount) - assertThat(it.awsRegion).isEqualTo(awsRegion) - } + }.anySatisfy { + assertThat(it.awsAccount).isEqualTo(awsAccount) + assertThat(it.awsRegion).isEqualTo(awsRegion) } } } diff --git a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt index 28149be11ed..23ff0f07b9e 100644 --- a/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt +++ b/plugins/core/jetbrains-community/tstFixtures/software/aws/toolkits/jetbrains/utils/AssertJMatchers.kt @@ -4,7 +4,6 @@ package software.aws.toolkits.jetbrains.utils import org.assertj.core.api.AbstractAssert -import org.assertj.core.api.AbstractIterableAssert import org.assertj.core.api.AbstractThrowableAssert import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.CompletableFutureAssert @@ -32,23 +31,10 @@ val CompletionStage.value get() = toCompletableFuture().get(TIMEOUT.toMil val CompletableFutureAssert.hasException get() = this.wait().isCompletedExceptionally -// https://github.com/assertj/assertj/issues/2357 -@Suppress("UNCHECKED_CAST") -fun > AbstractIterableAssert<*, I, E, *>.allSatisfyKt(requirements: Consumer) = - allSatisfy(requirements) as AbstractIterableAssert<*, I, E, *> - -@Suppress("UNCHECKED_CAST") -fun > AbstractIterableAssert<*, I, E, *>.anySatisfyKt(requirements: Consumer) = - anySatisfy(requirements) as AbstractIterableAssert<*, I, E, *> - -@Suppress("UNCHECKED_CAST") -fun AbstractAssert<*, T>.satisfiesKt(requirements: Consumer) = - satisfies(requirements) as AbstractAssert<*, T> - fun , ACTUAL : Throwable> AbstractThrowableAssert.hasCauseWithMessage( message: String ): AbstractThrowableAssert { - satisfiesKt { parentThrowable -> + satisfies { parentThrowable -> assertThat(parentThrowable.cause).isNotNull.hasMessage(message) } return this diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt index 98f1177c3c3..52d447608f3 100644 --- a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt +++ b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/core/credentials/sso/bearer/InteractiveBearerTokenProviderIntegrationTest.kt @@ -21,7 +21,6 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.DeviceGrantAccessTok import software.aws.toolkits.jetbrains.core.credentials.sso.DiskCache import software.aws.toolkits.jetbrains.utils.extensions.SsoLogin import software.aws.toolkits.jetbrains.utils.extensions.SsoLoginExtension -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Path import java.time.Instant @@ -75,7 +74,7 @@ class InteractiveBearerTokenProviderIntegrationTest { id = "test" ) - assertThat(sut.resolveToken()).satisfiesKt { + assertThat(sut.resolveToken()).satisfies { assertThat(it).isNotNull() assertThat(it).isNotEqualTo(initialToken) } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt index 8f209164740..3c4455a3c50 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/ConnectionSettingsMenuBuilderTest.kt @@ -22,7 +22,6 @@ import software.aws.toolkits.jetbrains.core.credentials.ConnectionSettingsMenuBu import software.aws.toolkits.jetbrains.core.credentials.MockAwsConnectionManager.ProjectAccountSettingsManagerRule import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message class ConnectionSettingsMenuBuilderTest { @@ -88,7 +87,7 @@ class ConnectionSettingsMenuBuilderTest { .build() val actions = group.getChildren().filterIsInstance() - assertThat(actions).singleElement().satisfiesKt { + assertThat(actions).singleElement().satisfies { assertThat(it.isPopup).isTrue assertThat(it.templatePresentation.text).isEqualTo(message("settings.partitions")) assertThat(it.getChildren()).hasSize(otherPartitions.size) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt index 960a862f9ec..57b36e03ee4 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/ContainerCredentialProviderFactoryTest.kt @@ -23,7 +23,6 @@ import software.aws.toolkits.core.credentials.CredentialType import software.aws.toolkits.core.credentials.CredentialsChangeEvent import software.aws.toolkits.core.credentials.CredentialsChangeListener import software.aws.toolkits.core.rules.SystemPropertyHelper -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.time.Instant import java.time.format.DateTimeFormatter @@ -67,7 +66,7 @@ class ContainerCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfiesKt { + assertThat(credentialChangeEvent.firstValue).satisfies { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) @@ -81,7 +80,7 @@ class ContainerCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfiesKt { + assertThat(credentialChangeEvent.firstValue).satisfies { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt index e137ecb4d3c..4d41cffbe65 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/metadataservice/InstanceRoleCredentialProviderFactoryTest.kt @@ -26,7 +26,6 @@ import software.aws.toolkits.core.credentials.CredentialType import software.aws.toolkits.core.credentials.CredentialsChangeEvent import software.aws.toolkits.core.credentials.CredentialsChangeListener import software.aws.toolkits.core.rules.SystemPropertyHelper -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.time.Instant import java.time.format.DateTimeFormatter @@ -100,7 +99,7 @@ class InstanceRoleCredentialProviderFactoryTest { sut.setUp(profileLoadCallback) assertThat(credentialChangeEvent.allValues.size).isEqualTo(1) - assertThat(credentialChangeEvent.firstValue).satisfiesKt { + assertThat(credentialChangeEvent.firstValue).satisfies { assertThat(it.modified).isEmpty() assertThat(it.removed).isEmpty() assertThat(it.added).hasSize(1) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt index dd591e843e5..f63362eb720 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/execution/AwsConnectionExtensionSettingsEditorTest.kt @@ -12,7 +12,6 @@ import org.assertj.core.api.ObjectAssert import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.settings.AwsSettingsRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt class AwsConnectionExtensionSettingsEditorTest { @@ -130,7 +129,7 @@ class AwsConnectionExtensionSettingsEditorTest { private fun ObjectAssert>.isPersistedAs( expected: AwsCredentialInjectionOptions.() -> Unit ) { - satisfiesKt { + satisfies { val updatedConfiguration = createConfiguration { } it.applyTo(updatedConfiguration) assertThat(updatedConfiguration.extensionOptions()).usingRecursiveComparison().isEqualTo(AwsCredentialInjectionOptions(expected)) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt index d4e66a00a22..b8c9de2c256 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/notification/MinimumVersionChangeTest.kt @@ -22,7 +22,6 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.stub import software.aws.toolkits.core.rules.SystemPropertyHelper import software.aws.toolkits.jetbrains.utils.rules.NotificationListenerRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.util.Calendar class MinimumVersionChangeTest { @@ -109,7 +108,7 @@ class MinimumVersionChangeTest { sut.runActivity(projectRule.project) - assertThat(notifications.notifications).singleElement().satisfiesKt { + assertThat(notifications.notifications).singleElement().satisfies { assertThat(it.content).matches("""Support for [\w ]+ 2012\.3 is being deprecated .*""".toPattern()) assertThat(it.actions).singleElement() } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt index c39d23ad90c..0b9e9637d39 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/region/AwsRegionProviderTest.kt @@ -19,7 +19,6 @@ import software.aws.toolkits.core.utils.RemoteResourceResolver import software.aws.toolkits.core.utils.exists import software.aws.toolkits.core.utils.writeText import software.aws.toolkits.jetbrains.core.RemoteResourceResolverProvider -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths @@ -151,7 +150,7 @@ class AwsRegionProviderTest { val awsRegionProvider = AwsRegionProvider() - assertThat(awsRegionProvider.defaultPartition()).satisfiesKt { + assertThat(awsRegionProvider.defaultPartition()).satisfies { assertThat(it.id).isEqualTo("moon") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt index 009ce0c04ab..50ac7ccc4ea 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/FourPartVersionTest.kt @@ -7,7 +7,6 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.Test import software.aws.toolkits.jetbrains.utils.isInstanceOf -import software.aws.toolkits.jetbrains.utils.satisfiesKt class FourPartVersionTest { @Test @@ -34,7 +33,7 @@ class FourPartVersionTest { @Test fun `parts are correct`() { - assertThat(FourPartVersion(1, 2, 3, 4)).satisfiesKt { + assertThat(FourPartVersion(1, 2, 3, 4)).satisfies { assertThat(it.major).isEqualTo(1) assertThat(it.minor).isEqualTo(2) assertThat(it.patch).isEqualTo(3) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt index b153070ecb7..879d7ee65a4 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/tools/SemanticVersionTest.kt @@ -7,7 +7,6 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.Test import software.aws.toolkits.jetbrains.utils.isInstanceOf -import software.aws.toolkits.jetbrains.utils.satisfiesKt class SemanticVersionTest { @Test @@ -32,7 +31,7 @@ class SemanticVersionTest { @Test fun `parts are correct`() { - assertThat(SemanticVersion(1, 2, 3)).satisfiesKt { + assertThat(SemanticVersion(1, 2, 3)).satisfies { assertThat(it.major).isEqualTo(1) assertThat(it.minor).isEqualTo(2) assertThat(it.patch).isEqualTo(3) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt index 426d83393e3..fcf118bb06b 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/core/toolwindow/ToolkitToolWindowTest.kt @@ -11,7 +11,6 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Rule import org.junit.Test -import software.aws.toolkits.jetbrains.utils.satisfiesKt import javax.swing.JLabel class ToolkitToolWindowTest { @@ -57,7 +56,7 @@ class ToolkitToolWindowTest { runInEdt { sut.removeContent(tab) - assertThat(jbToolWindowManager.getToolWindow(sut.toolWindowId)?.contentManager).satisfiesKt { + assertThat(jbToolWindowManager.getToolWindow(sut.toolWindowId)?.contentManager).satisfies { it!! assertThat(it.contentCount).isEqualTo(1) assertThat(it.getContent(0)).isEqualTo(tab2) diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt index f55b63cd87c..e1ac98461b2 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/stack/UpdaterTest.kt @@ -28,7 +28,6 @@ import software.amazon.awssdk.services.cloudformation.model.StackResource import software.amazon.awssdk.services.cloudformation.model.StackStatus import software.aws.toolkits.core.utils.delegateMock import software.aws.toolkits.jetbrains.core.MockClientManagerRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.time.Duration import java.util.concurrent.Semaphore import java.util.concurrent.TimeUnit @@ -168,7 +167,7 @@ class UpdaterTest { val captor = argumentCaptor>() verify(treeView).fillResources(captor.capture()) - assertThat(captor.firstValue).singleElement().satisfiesKt { + assertThat(captor.firstValue).singleElement().satisfies { assertThat(it.logicalResourceId()).isEqualTo("L1") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt index 3f020695c00..b0b94abbaa3 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudformation/yaml/YamlCloudFormationTemplateTest.kt @@ -23,7 +23,6 @@ import software.aws.toolkits.jetbrains.services.cloudformation.CloudFormationTem import software.aws.toolkits.jetbrains.services.cloudformation.LambdaFunction import software.aws.toolkits.jetbrains.services.cloudformation.SamFunction import software.aws.toolkits.jetbrains.utils.rules.CodeInsightTestFixtureRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message import java.io.File @@ -134,7 +133,7 @@ Parameters: runInEdtAndWait { assertThat(template.parameters().toList()).hasSize(2) val tableTag = template.parameters().firstOrNull { it.logicalName == "TableTag" } - assertThat(tableTag).notNull.satisfiesKt { tag -> + assertThat(tableTag).notNull.satisfies { tag -> assertThat(tag.defaultValue()).isNull() assertThat(tag.description()).isNotNull() assertThat(tag.constraintDescription()).isNull() diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt index d2ecf7bde47..6de090d4e3c 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/cloudwatch/logs/TableUtilsTest.kt @@ -13,7 +13,6 @@ import org.mockito.kotlin.whenever import software.amazon.awssdk.services.cloudwatchlogs.model.LogStream import software.aws.toolkits.jetbrains.services.cloudwatch.logs.editor.LogStreamsDateColumn import software.aws.toolkits.jetbrains.services.cloudwatch.logs.editor.LogStreamsStreamColumn -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.text.SimpleDateFormat import java.time.ZoneId import java.time.ZonedDateTime @@ -36,7 +35,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("M/d/yy", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfiesKt { + assertThat(table).satisfies { assertThat(it.getValueAt(0, 0)).isEqualTo("7/11/21") assertThat(it.getValueAt(1, 0)).isEqualTo("6/11/21") assertThat(it.getValueAt(2, 0)).isEqualTo("2/1/21") @@ -48,7 +47,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("MMM d, y", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfiesKt { + assertThat(table).satisfies { assertThat(it.getValueAt(0, 0)).isEqualTo("Jul 11, 2021") assertThat(it.getValueAt(1, 0)).isEqualTo("Jun 11, 2021") assertThat(it.getValueAt(2, 0)).isEqualTo("Feb 1, 2021") @@ -60,7 +59,7 @@ class TableUtilsTest { val dateFormat = SimpleDateFormat("d MMM y", Locale.ENGLISH) val table = JBTable(createTestMode(dateFormat)) - assertThat(table).satisfiesKt { + assertThat(table).satisfies { assertThat(it.getValueAt(0, 0)).isEqualTo("11 Jul 2021") assertThat(it.getValueAt(1, 0)).isEqualTo("11 Jun 2021") assertThat(it.getValueAt(2, 0)).isEqualTo("1 Feb 2021") diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt index 1fd61c38d43..b5cd2556439 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/dynamic/explorer/DynamicResourceResourceTypeNodeTest.kt @@ -15,7 +15,6 @@ import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerEmptyNode import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerErrorNode import software.aws.toolkits.jetbrains.core.id import software.aws.toolkits.jetbrains.services.dynamic.CloudControlApiResources -import software.aws.toolkits.jetbrains.utils.satisfiesKt import software.aws.toolkits.resources.message class DynamicResourceResourceTypeNodeTest { @@ -36,7 +35,7 @@ class DynamicResourceResourceTypeNodeTest { val sut = DynamicResourceResourceTypeNode(projectRule.project, type) - assertThat(sut.children).hasOnlyOneElementOfType().satisfiesKt { + assertThat(sut.children).hasOnlyOneElementOfType().satisfies { assertThat(it.displayName()).isEqualTo(identifier) } } @@ -48,7 +47,7 @@ class DynamicResourceResourceTypeNodeTest { val sut = DynamicResourceResourceTypeNode(projectRule.project, type) - assertThat(sut.children).hasOnlyOneElementOfType().satisfiesKt { + assertThat(sut.children).hasOnlyOneElementOfType().satisfies { assertThat(it.displayName()).startsWith(message("dynamic_resources.unavailable_in_region", "")) } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt index a5821e1e95a..1a70aec35e4 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/federation/psireferences/ArnPsiReferenceProviderTest.kt @@ -18,7 +18,6 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.utils.rules.CodeInsightTestFixtureRule -import software.aws.toolkits.jetbrains.utils.satisfiesKt class ArnPsiReferenceProviderTest { @Rule @@ -69,7 +68,7 @@ class ArnPsiReferenceProviderTest { val (str, match) = pair assertThat(ArnPsiReferenceProvider.ARN_REGEX.findAll(str).toList()) .withFailMessage { "Input should have partially matched regex with single result but did not: $str" } - .satisfiesKt { + .satisfies { assertThat(it).hasSize(1) assertThat(it.first().value).isEqualTo(match) } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt index 95a1dfc8aa8..9ffa60fc569 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/template/LambdaRunLineMarkerContributorTest.kt @@ -12,7 +12,6 @@ import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.utils.rules.JavaCodeInsightTestFixtureRule import software.aws.toolkits.jetbrains.utils.rules.openFile -import software.aws.toolkits.jetbrains.utils.satisfiesKt class LambdaRunLineMarkerContributorTest { @@ -37,7 +36,7 @@ Resources: runAndAssertionMarks(projectRule.fixture) { marks -> assertThat(marks).hasSize(1) - assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfiesKt { + assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfies { assertThat(it!!.text).isEqualTo("ServerlessFunction") } } @@ -59,7 +58,7 @@ Resources: ) runAndAssertionMarks(projectRule.fixture) { marks -> assertThat(marks).hasSize(1) - assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfiesKt { + assertThat(marks.first().lineMarkerInfo.element).isNotNull.satisfies { assertThat(it!!.text).isEqualTo("LambdaFunction") } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt index 9042043e277..0fd6a97517b 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/utils/execution/steps/BuildViewStepEmitterTest.kt @@ -22,7 +22,6 @@ import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.verify -import software.aws.toolkits.jetbrains.utils.satisfiesKt class BuildViewStepEmitterTest { @Rule @@ -44,7 +43,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(StartEvent::class.java) { assertThat(it.message).isEqualTo(stepId) @@ -65,7 +64,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -89,21 +88,21 @@ class BuildViewStepEmitterTest { assertThat(allValues).hasSize(3) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo("ChildStep has failed: Test exception") assertThat(it.isStdOut).isFalse() } - assertThat(secondValue).satisfiesKt { + assertThat(secondValue).satisfies { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo("ChildStep has failed: Test exception") assertThat(it.isStdOut).isFalse() } - assertThat(thirdValue).satisfiesKt { + assertThat(thirdValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -122,7 +121,7 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).contains("ParentStep has failed: java.lang.NullPointerException", "at") @@ -140,7 +139,7 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).contains("ParentStep has been canceled") @@ -162,7 +161,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(parentId) assertThat(it.id).isEqualTo(stepId) }.isInstanceOfSatisfying(FinishEvent::class.java) { @@ -184,14 +183,14 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) assertThat(it.isStdOut).isTrue() } - assertThat(secondValue).satisfiesKt { + assertThat(secondValue).satisfies { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) @@ -212,14 +211,14 @@ class BuildViewStepEmitterTest { argumentCaptor().apply { verify(buildView, times(2)).onEvent(eq(PARENT_ID), capture()) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) assertThat(it.isStdOut).isFalse() } - assertThat(secondValue).satisfiesKt { + assertThat(secondValue).satisfies { assertThat(it.parentId).isEqualTo(stepId) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) @@ -241,7 +240,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(childId1) }.isInstanceOfSatisfying(StartEvent::class.java) { assertThat(it.message).isEqualTo(childId2) @@ -261,7 +260,7 @@ class BuildViewStepEmitterTest { verify(buildView).onEvent(eq(PARENT_ID), capture()) assertThat(allValues).hasSize(1) - assertThat(firstValue).satisfiesKt { + assertThat(firstValue).satisfies { assertThat(it.parentId).isEqualTo(PARENT_ID) }.isInstanceOfSatisfying(OutputBuildEvent::class.java) { assertThat(it.message).isEqualTo(message) diff --git a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt index 7f2990bd418..5869eb60638 100644 --- a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt +++ b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/ScpCommandLineTest.kt @@ -15,7 +15,6 @@ import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder import software.aws.toolkits.core.utils.test.notNull -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.nio.file.Path import java.nio.file.attribute.PosixFilePermission import java.util.UUID @@ -103,7 +102,7 @@ class ScpCommandLineTest { val paths = sut.executeScpTest() - assertThat(paths).singleElement().notNull.satisfiesKt { + assertThat(paths).singleElement().notNull.satisfies { assertThat(it.fileName.toString()).isEqualTo(uuid) // is nested assertThat(it.parent.fileName.toString()).isEqualTo(directory.name) diff --git a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt index da43b4aea73..8b7eabceace 100644 --- a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt +++ b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/welcomescreen/ConfigureActionTest.kt @@ -147,7 +147,7 @@ package software.aws.toolkits.jetbrains.gateway.welcomescreen // argumentCaptor().apply { // verify(client).startEnvironment(capture()) // -// assertThat(firstValue.ides()).satisfiesKt { +// assertThat(firstValue.ides()).satisfies { // assertThat(it.size).isEqualTo(1) // assertThat(it.first()).isEqualTo(IdeConfiguration.builder().runtime("ecrImage").build()) // } diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt index a25ca627fc1..a9f04a4c3ef 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/actions/AddSecretsManagerConnectionTest.kt @@ -17,7 +17,6 @@ import software.aws.toolkits.jetbrains.datagrip.REGION_ID_PROPERTY import software.aws.toolkits.jetbrains.datagrip.auth.SECRET_ID_PROPERTY import software.aws.toolkits.jetbrains.datagrip.auth.SecretsManagerAuth import software.aws.toolkits.jetbrains.datagrip.auth.SecretsManagerDbSecret -import software.aws.toolkits.jetbrains.utils.satisfiesKt class AddSecretsManagerConnectionTest { @Rule @@ -52,7 +51,7 @@ class AddSecretsManagerConnectionTest { secretArn, "adapter" ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.isTemporary).isFalse() assertThat(it.sslCfg?.myEnabled).isTrue() assertThat(it.url).isEqualTo("jdbc:adapter://$address:$port") diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt index 19ed6a6e045..8058a19cda3 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/RdsExplorerNodeTest.kt @@ -9,12 +9,11 @@ import org.junit.Rule import org.junit.Test import software.aws.toolkits.core.utils.RuleUtils import software.aws.toolkits.core.utils.test.aString -import software.aws.toolkits.core.utils.test.hasOnlyElementsOfTypeKt +import software.aws.toolkits.core.utils.test.hasOnlyElementsOfType import software.aws.toolkits.jetbrains.core.MockResourceCacheRule import software.aws.toolkits.jetbrains.core.explorer.nodes.RdsExplorerRootNode import software.aws.toolkits.jetbrains.services.rds.resources.LIST_SUPPORTED_CLUSTERS import software.aws.toolkits.jetbrains.services.rds.resources.LIST_SUPPORTED_INSTANCES -import software.aws.toolkits.jetbrains.utils.allSatisfyKt class RdsExplorerNodeTest { @JvmField @@ -49,8 +48,8 @@ class RdsExplorerNodeTest { val databasesNames = instances.values + clusters.values assertThat(serviceRootNode.children) .hasSize(databasesNames.size) - .hasOnlyElementsOfTypeKt() - .allSatisfyKt { + .hasOnlyElementsOfType() + .allSatisfy { assertThat(it.resourceType()).isEqualTo("instance") }.extracting { it.database.identifier @@ -76,7 +75,7 @@ class RdsExplorerNodeTest { val serviceRootNode = sut.buildServiceRootNode(projectRule.project) assertThat(serviceRootNode.children) - .hasOnlyElementsOfTypeKt() + .hasOnlyElementsOfType() .extracting { it.database }.containsOnly(db) diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt index b8cde556777..0487a2538a7 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/rds/actions/CreateConfigurationActionTest.kt @@ -33,7 +33,6 @@ import software.aws.toolkits.jetbrains.services.rds.RdsDatasourceConfiguration import software.aws.toolkits.jetbrains.services.rds.RdsNode import software.aws.toolkits.jetbrains.services.rds.auth.IamAuth import software.aws.toolkits.jetbrains.services.sts.StsResources -import software.aws.toolkits.jetbrains.utils.satisfiesKt import java.util.concurrent.CompletableFuture class CreateConfigurationActionTest { @@ -83,7 +82,7 @@ class CreateConfigurationActionTest { val node = createNode() val registry = DataSourceRegistry(projectRule.project) CreateIamDataSourceAction().createDatasource(node, registry) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.isTemporary).isFalse() assertThat(it.username).isEqualTo(username) } @@ -101,7 +100,7 @@ class CreateConfigurationActionTest { val node = createNode() val registry = DataSourceRegistry(projectRule.project) CreateIamDataSourceAction().createDatasource(node, registry) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.isTemporary).isFalse() assertThat(it.username).isEqualTo(masterUsername) } @@ -120,7 +119,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.isTemporary).isFalse() assertThat(it.url).contains(port.toString()) assertThat(it.url).contains(address) @@ -142,7 +141,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.username).isLowerCase().isEqualTo(username.lowercase()) assertThat(it.driverClass).contains("postgres") assertThat(it.url).contains(JDBC_POSTGRES) @@ -161,7 +160,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.username).isLowerCase().isEqualTo(username.lowercase()) assertThat(it.driverClass).contains("postgres") assertThat(it.url).contains(JDBC_POSTGRES) @@ -180,7 +179,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.username).isEqualTo(username) assertThat(it.driverClass).contains("mysql") assertThat(it.url).contains(JDBC_MYSQL) @@ -200,7 +199,7 @@ class CreateConfigurationActionTest { database = database ) ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.username).isEqualTo(username) assertThat(it.driverClass).contains("mariadb") assertThat(it.url).contains(JDBC_MYSQL_AURORA) diff --git a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt index 230c040eef4..2a3caec0538 100644 --- a/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt +++ b/plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/redshift/actions/CreateDataSourceActionTest.kt @@ -18,7 +18,6 @@ import software.aws.toolkits.jetbrains.datagrip.REGION_ID_PROPERTY import software.aws.toolkits.jetbrains.services.redshift.auth.CLUSTER_ID_PROPERTY import software.aws.toolkits.jetbrains.services.redshift.auth.IamAuth import software.aws.toolkits.jetbrains.services.redshift.createDatasource -import software.aws.toolkits.jetbrains.utils.satisfiesKt class CreateDataSourceActionTest { @Rule @@ -54,7 +53,7 @@ class CreateDataSourceActionTest { .dbName(dbName) .build() ) - assertThat(registry.newDataSources).singleElement().satisfiesKt { + assertThat(registry.newDataSources).singleElement().satisfies { assertThat(it.isTemporary).isFalse() assertThat(it.sslCfg?.myEnabled).isTrue() assertThat(it.url).isEqualTo("jdbc:redshift://$address:$port/$dbName") From b71ad6528d0b22cad50a11761ac31796d95c9b5d Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 20 Jun 2024 15:16:21 -0700 Subject: [PATCH 49/71] cleanup --- ...olkit-intellij-root-conventions.gradle.kts | 100 +++++++++--------- buildspec/windowsTests.yml | 3 +- gradle/libs.versions.toml | 2 +- .../toolkit/jetbrains-core/build.gradle.kts | 80 +++++++------- sandbox-all/build.gradle.kts | 6 +- tmp-all/build.gradle.kts | 6 +- 6 files changed, 100 insertions(+), 97 deletions(-) diff --git a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts index 88df86a5198..196bb3bdabc 100644 --- a/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/temp-toolkit-intellij-root-conventions.gradle.kts @@ -8,6 +8,9 @@ import org.gradle.kotlin.dsl.project import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformExtension +import org.jetbrains.intellij.platform.gradle.plugins.project.DownloadRobotServerPluginTask +import org.jetbrains.intellij.platform.gradle.tasks.TestIdeUiTask +import software.aws.toolkits.gradle.ciOnly import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension @@ -78,57 +81,52 @@ dependencies { gatewayResources(project(":plugin-toolkit:jetbrains-gateway", configuration = "gatewayResources")) } -// implementation(project(":plugin-toolkit:jetbrains-rider")) -// resharperDlls(project(":plugin-toolkit:jetbrains-rider", configuration = "resharperDlls")) + implementation(project(":plugin-toolkit:jetbrains-rider")) + resharperDlls(project(":plugin-toolkit:jetbrains-rider", configuration = "resharperDlls")) } -// not available in gradle plugin 2.0 yet // Enable coverage for the UI test target IDE -//ciOnly { -// extensions.getByType().applyTo(tasks.withType()) -//} -//tasks.withType { -// // TODO: https://github.com/gradle/gradle/issues/15383 -// version.set(versionCatalogs.named("libs").findVersion("intellijRemoteRobot").get().requiredVersion) -//} -// -//tasks.withType().all { -// systemProperty("robot-server.port", remoteRobotPort) -// // mac magic -// systemProperty("ide.mac.message.dialogs.as.sheets", "false") -// systemProperty("jbScreenMenuBar.enabled", "false") -// systemProperty("apple.laf.useScreenMenuBar", "false") -// systemProperty("ide.mac.file.chooser.native", "false") -// -// systemProperty("jb.consents.confirmation.enabled", "false") -// // This does some magic in EndUserAgreement.java to make it not show the privacy policy -// systemProperty("jb.privacy.policy.text", "") -// systemProperty("ide.show.tips.on.startup.default.value", false) -// -// systemProperty("aws.telemetry.skip_prompt", "true") -// systemProperty("aws.suppress_deprecation_prompt", true) -// systemProperty("idea.trust.all.projects", "true") -// -// // These are experiments to enable for UI tests -// systemProperty("aws.experiment.connectedLocalTerminal", true) -// systemProperty("aws.experiment.dynamoDb", true) -// -// debugOptions { -// enabled.set(true) -// suspend.set(false) -// } -// -// ciOnly { -// configure { -// // sync with testing-subplugin -// // don't instrument sdk, icons, etc. -// includes = listOf("software.aws.toolkits.*") -// excludes = listOf("software.aws.toolkits.telemetry.*") -// -// // 221+ uses a custom classloader and jacoco fails to find classes -// isIncludeNoLocationClasses = true -// -// output = JacocoTaskExtension.Output.TCP_CLIENT // Dump to our jacoco server instead of to a file -// } -// } -//} +ciOnly { + extensions.getByType().applyTo(tasks.withType()) +} + +tasks.withType().all { + systemProperty("robot-server.port", remoteRobotPort) + // mac magic + systemProperty("ide.mac.message.dialogs.as.sheets", "false") + systemProperty("jbScreenMenuBar.enabled", "false") + systemProperty("apple.laf.useScreenMenuBar", "false") + systemProperty("ide.mac.file.chooser.native", "false") + + systemProperty("jb.consents.confirmation.enabled", "false") + // This does some magic in EndUserAgreement.java to make it not show the privacy policy + systemProperty("jb.privacy.policy.text", "") + systemProperty("ide.show.tips.on.startup.default.value", false) + + systemProperty("aws.telemetry.skip_prompt", "true") + systemProperty("aws.suppress_deprecation_prompt", true) + systemProperty("idea.trust.all.projects", "true") + + // These are experiments to enable for UI tests + systemProperty("aws.experiment.connectedLocalTerminal", true) + systemProperty("aws.experiment.dynamoDb", true) + + debugOptions { + enabled.set(true) + suspend.set(false) + } + + ciOnly { + configure { + // sync with testing-subplugin + // don't instrument sdk, icons, etc. + includes = listOf("software.aws.toolkits.*") + excludes = listOf("software.aws.toolkits.telemetry.*") + + // 221+ uses a custom classloader and jacoco fails to find classes + isIncludeNoLocationClasses = true + + output = JacocoTaskExtension.Output.TCP_CLIENT // Dump to our jacoco server instead of to a file + } + } +} diff --git a/buildspec/windowsTests.yml b/buildspec/windowsTests.yml index a6b922eaf38..b9347ee8587 100644 --- a/buildspec/windowsTests.yml +++ b/buildspec/windowsTests.yml @@ -37,8 +37,7 @@ phases: } # Rider is very expensive (spikes our CI jobs to 50% CPU, so let it do the prep work in parallel, but run tests later - # ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue - ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check --info --console plain --continue + ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue if ($LastExitCode -ne 0) { Write-Host "Command failed with exit code $LastExitCode" exit -1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cf0494ec79e..98939961d1a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] apache-commons-collections = "4.4" apache-commons-io = "2.16.0" -assertJ = "3.26.0" +assertJ = "3.20.2" # Upgrading leads to SAM errors: https://youtrack.jetbrains.com/issue/KT-17765 # match with /settings.gradle.kts awsSdk = "2.25.33" commonmark = "0.17.1" diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 9b4bdfa292c..bb99088a32f 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -1,9 +1,19 @@ // Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import com.jetbrains.plugin.structure.intellij.utils.JDOMUtil +import org.jdom2.Document +import org.jdom2.output.Format +import org.jdom2.output.XMLOutputter +import software.aws.toolkits.gradle.buildMetadata import software.aws.toolkits.gradle.changelog.tasks.GeneratePluginChangeLog import software.aws.toolkits.gradle.intellij.IdeFlavor import software.aws.toolkits.gradle.intellij.IdeVersions +import software.aws.toolkits.gradle.isCi +import java.io.StringWriter +import java.nio.file.Path +import kotlin.io.path.inputStream +import kotlin.io.path.writeText val toolkitVersion: String by project val ideProfile = IdeVersions.ideProfile(project) @@ -50,32 +60,28 @@ tasks.integrationTest { } val gatewayPluginXml = tasks.create("patchPluginXmlForGateway") { -// pluginXmlFiles.set(tasks.patchPluginXml.map { it.pluginXmlFiles }.get()) -// destinationDir.set(project.buildDir.resolve("patchedPluginXmlFilesGW")) + inputFile.set(tasks.patchPluginXml.map { it.outputFile.get() }) -// val buildSuffix = if (!project.isCi()) "+${buildMetadata()}" else "" -// version.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") + val buildSuffix = if (!project.isCi()) "+${buildMetadata()}" else "" + pluginVersion.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") // jetbrains expects gateway plugin to be dynamic -// doLast { -// pluginXmlFiles.get() -// .map(File::toPath) -// .forEach { p -> -// val path = destinationDir.get() -// .asFile.toPath().toAbsolutePath() -// .resolve(p.simpleName) -// -// val document = path.inputStream().use { inputStream -> -// JDOMUtil.loadDocument(inputStream) -// } -// -// document.rootElement -// .getAttribute("require-restart") -// .setValue("false") -// -// transformXml(document, path) -// } -// } + doLast { + outputFile.asFile + .map(File::toPath) + .get() + .let { path -> + val document = path.inputStream().use { inputStream -> + JDOMUtil.loadDocument(inputStream) + } + + document.rootElement + .getAttribute("require-restart") + .setValue("false") + + transformXml(document, path) + } + } } val gatewayArtifacts by configurations.creating { @@ -171,17 +177,17 @@ dependencies { testImplementation(libs.slf4j.api) testRuntimeOnly(libs.slf4j.jdk14) } -// -// fun transformXml(document: Document, path: Path) { -// val xmlOutput = XMLOutputter() -// xmlOutput.format.apply { -// indent = " " -// omitDeclaration = true -// textMode = Format.TextMode.TRIM -// } -// -// StringWriter().use { -// xmlOutput.output(document, it) -// path.writeText(it.toString()) -// } -// } + +fun transformXml(document: Document, path: Path) { + val xmlOutput = XMLOutputter() + xmlOutput.format.apply { + indent = " " + omitDeclaration = true + textMode = Format.TextMode.TRIM + } + + StringWriter().use { + xmlOutput.output(document, it) + path.writeText(text = it.toString()) + } +} diff --git a/sandbox-all/build.gradle.kts b/sandbox-all/build.gradle.kts index 25fa98872f6..c6527e55636 100644 --- a/sandbox-all/build.gradle.kts +++ b/sandbox-all/build.gradle.kts @@ -28,8 +28,8 @@ dependencies { create(type, version) jetbrainsRuntime() -// localPlugin(project(":plugin-core", "pluginZip")) -// localPlugin(project(":plugin-amazonq", "pluginZip")) -// localPlugin(project(":plugin-toolkit:intellij-standalone", "pluginZip")) + localPlugin(project(":plugin-core", "pluginZip")) + localPlugin(project(":plugin-amazonq", "pluginZip")) + localPlugin(project(":plugin-toolkit:intellij-standalone", "pluginZip")) } } diff --git a/tmp-all/build.gradle.kts b/tmp-all/build.gradle.kts index 8e242ac00cb..ef51e37350c 100644 --- a/tmp-all/build.gradle.kts +++ b/tmp-all/build.gradle.kts @@ -24,9 +24,9 @@ dependencies { create(type, version) jetbrainsRuntime() -// localPlugin(project(":plugin-core", "pluginZip")) -// localPlugin(project(":plugin-amazonq", "pluginZip")) -// plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) + localPlugin(project(":plugin-core", "pluginZip")) + localPlugin(project(":plugin-amazonq", "pluginZip")) + plugin(toolkitIntelliJ.ideProfile().map { "aws.toolkit:2.19-${it.shortName}" }) testFramework(TestFrameworkType.Bundled) testFramework(TestFrameworkType.JUnit5) From 7650a80341ba2dce71dcb92f1a16a7b233e2e944 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 20 Jun 2024 15:43:08 -0700 Subject: [PATCH 50/71] xml --- plugins/toolkit/jetbrains-core/build.gradle.kts | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index bb99088a32f..d8a536db953 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -60,8 +60,6 @@ tasks.integrationTest { } val gatewayPluginXml = tasks.create("patchPluginXmlForGateway") { - inputFile.set(tasks.patchPluginXml.map { it.outputFile.get() }) - val buildSuffix = if (!project.isCi()) "+${buildMetadata()}" else "" pluginVersion.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") From 7fe97e44f134a12b886efe12ea620ec9c3668af1 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:49:57 -0700 Subject: [PATCH 51/71] Update toolkit-kotlin-conventions.gradle.kts --- .../src/main/kotlin/toolkit-kotlin-conventions.gradle.kts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts index 4f4c6af3bce..5497874da62 100644 --- a/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-kotlin-conventions.gradle.kts @@ -21,7 +21,10 @@ dependencies { implementation(versionCatalog.findLibrary("kotlin-coroutines").get()) testFixturesApi(versionCatalog.findLibrary("kotlin-test").get()) - testFixturesApi(versionCatalog.findLibrary("kotlin-coroutinesDebug").get()) + testFixturesApi(versionCatalog.findLibrary("kotlin-coroutinesDebug").get()) { + // IDE provides JNA and results in conflicts + exclude(group = "net.java.dev.jna", module = "jna") + } testFixturesApi(versionCatalog.findLibrary("kotlin-coroutinesTest").get()) testFixturesApi(versionCatalog.findLibrary("mockk").get()) } From 1c432208dfc74c08259fd46d08c372e5747a39fb Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 24 Jun 2024 11:35:19 -0700 Subject: [PATCH 52/71] deps --- plugins/toolkit/jetbrains-core/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index d8a536db953..295103d28bb 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -94,7 +94,7 @@ val gatewayJar = tasks.create("gatewayJar") { // unclear why the exclude() statement didn't work duplicatesStrategy = DuplicatesStrategy.WARN - dependsOn(tasks.instrumentedJar) + dependsOn(tasks.instrumentedJar, gatewayPluginXml) archiveBaseName.set("aws-toolkit-jetbrains-IC-GW") from(tasks.instrumentedJar.get().outputs.files.map { zipTree(it) }) { From e8c23667268e1cb0a42e8abdbabb67fc39962d8d Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 24 Jun 2024 12:27:49 -0700 Subject: [PATCH 53/71] gw dep --- plugins/toolkit/jetbrains-core/build.gradle.kts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 295103d28bb..744a37c040d 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -59,13 +59,16 @@ tasks.integrationTest { systemProperty("aws.dev.useDAG", true) } -val gatewayPluginXml = tasks.create("patchPluginXmlForGateway") { +val gatewayPluginXml = tasks.create("pluginXmlForGateway") { val buildSuffix = if (!project.isCi()) "+${buildMetadata()}" else "" pluginVersion.set("GW-$toolkitVersion-${ideProfile.shortName}$buildSuffix") +} +val patchedGatewayPluginXml by tasks.creating { + dependsOn(gatewayPluginXml) // jetbrains expects gateway plugin to be dynamic doLast { - outputFile.asFile + gatewayPluginXml.outputFile.asFile .map(File::toPath) .get() .let { path -> @@ -94,7 +97,7 @@ val gatewayJar = tasks.create("gatewayJar") { // unclear why the exclude() statement didn't work duplicatesStrategy = DuplicatesStrategy.WARN - dependsOn(tasks.instrumentedJar, gatewayPluginXml) + dependsOn(tasks.instrumentedJar, patchedGatewayPluginXml) archiveBaseName.set("aws-toolkit-jetbrains-IC-GW") from(tasks.instrumentedJar.get().outputs.files.map { zipTree(it) }) { @@ -103,7 +106,7 @@ val gatewayJar = tasks.create("gatewayJar") { exclude("**/inactive") } - from(gatewayPluginXml) { + from(patchedGatewayPluginXml) { into("META-INF") } From a6d0ef725949ffb5a917abfabaa8d1ee3bd79625 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 24 Jun 2024 12:34:02 -0700 Subject: [PATCH 54/71] gw jar --- plugins/toolkit/jetbrains-core/build.gradle.kts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/toolkit/jetbrains-core/build.gradle.kts b/plugins/toolkit/jetbrains-core/build.gradle.kts index 744a37c040d..56f2dfa5a91 100644 --- a/plugins/toolkit/jetbrains-core/build.gradle.kts +++ b/plugins/toolkit/jetbrains-core/build.gradle.kts @@ -64,8 +64,12 @@ val gatewayPluginXml = tasks.create("gatewayJar") { // unclear why the exclude() statement didn't work duplicatesStrategy = DuplicatesStrategy.WARN - dependsOn(tasks.instrumentedJar, patchedGatewayPluginXml) + dependsOn(tasks.instrumentedJar, patchGatewayPluginXml) archiveBaseName.set("aws-toolkit-jetbrains-IC-GW") from(tasks.instrumentedJar.get().outputs.files.map { zipTree(it) }) { @@ -106,7 +110,7 @@ val gatewayJar = tasks.create("gatewayJar") { exclude("**/inactive") } - from(patchedGatewayPluginXml) { + from(patchGatewayPluginXml) { into("META-INF") } From 9b9d43f0d88c8039e3359b2bb5bd66f7d2d17bb7 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 25 Jun 2024 11:59:52 -0700 Subject: [PATCH 55/71] Update build.gradle.kts --- plugins/core/jetbrains-community/build.gradle.kts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/core/jetbrains-community/build.gradle.kts b/plugins/core/jetbrains-community/build.gradle.kts index 44f29d47874..e177e9045d4 100644 --- a/plugins/core/jetbrains-community/build.gradle.kts +++ b/plugins/core/jetbrains-community/build.gradle.kts @@ -45,6 +45,12 @@ configurations.testFixturesCompileOnlyApi { ) } +// intellij java-test-framework pollutes test classpath with extracted java plugins +configurations.testFixturesApi { + exclude("com.jetbrains.intellij.java", "java") + exclude("com.jetbrains.intellij.java", "java-impl") +} + dependencies { intellijPlatform { testFramework(TestFrameworkType.Platform) From f428dc70f770dbb3f5fc7369ae8994217080eed1 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:57:22 -0700 Subject: [PATCH 56/71] Update toolkit-publishing-conventions.gradle.kts --- .../main/kotlin/toolkit-publishing-conventions.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index 3289ed65fb4..3a1049db05c 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -40,3 +40,8 @@ configurations { tasks.check { dependsOn(tasks.verifyPlugin) } + +tasks.verifyPlugin { + // hack to run serially because the CLI tool writes random directories in current user home directory + inputs.file("$rootDir/dummy.mutex") +} From 1795f5fc905874615dcd06c5abcba9e29cb8fd9c Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:33:27 -0700 Subject: [PATCH 57/71] Update toolkit-publishing-conventions.gradle.kts --- .../src/main/kotlin/toolkit-publishing-conventions.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index 3a1049db05c..42b76b6f6da 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -43,5 +43,5 @@ tasks.check { tasks.verifyPlugin { // hack to run serially because the CLI tool writes random directories in current user home directory - inputs.file("$rootDir/dummy.mutex") + inputs.file("$rootDir/README.md") } From 2a035c71d90eb2bbfe6ff0112f5ab0e02aa6da82 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 25 Jun 2024 17:06:22 -0700 Subject: [PATCH 58/71] buildscans --- buildspec/linuxTests.yml | 2 +- buildspec/windowsTests.yml | 2 +- settings.gradle.kts | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/buildspec/linuxTests.yml b/buildspec/linuxTests.yml index 91487a48596..db93597f250 100644 --- a/buildspec/linuxTests.yml +++ b/buildspec/linuxTests.yml @@ -32,7 +32,7 @@ phases: fi - chmod +x gradlew - - su codebuild-user -c "./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME check coverageReport --info --console plain --continue" + - su codebuild-user -c "./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME check coverageReport --info --console plain --continue -scan" - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin - VCS_COMMIT_ID="${CODEBUILD_RESOLVED_SOURCE_VERSION}" - CI_BUILD_URL=$(echo $CODEBUILD_BUILD_URL | sed 's/#/%23/g') # Encode `#` in the URL because otherwise the url is clipped in the Codecov.io site diff --git a/buildspec/windowsTests.yml b/buildspec/windowsTests.yml index b9347ee8587..781a02d843a 100644 --- a/buildspec/windowsTests.yml +++ b/buildspec/windowsTests.yml @@ -37,7 +37,7 @@ phases: } # Rider is very expensive (spikes our CI jobs to 50% CPU, so let it do the prep work in parallel, but run tests later - ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue + ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue --scan if ($LastExitCode -ne 0) { Write-Host "Command failed with exit code $LastExitCode" exit -1 diff --git a/settings.gradle.kts b/settings.gradle.kts index 1f6c2d4e89f..2b61e4ea125 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -49,12 +49,15 @@ if (regionEnv.isPresent && bucketEnv.isPresent && prefixEnv.isPresent) { } plugins { - id("com.gradle.enterprise").version("3.15.1") + id("com.gradle.enterprise").version("3.17.5") id("com.github.burrunan.s3-build-cache").version("1.5") } gradleEnterprise { buildScan { + termsOfServiceUrl = "https://gradle.com/help/legal-terms-of-use" + termsOfServiceAgree = "yes" + obfuscation { username { "" } hostname { "" } From 7bc85cb527e3b9c2187d0401dd3cefc315f6d34e Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 25 Jun 2024 19:38:02 -0700 Subject: [PATCH 59/71] Update windowsTests.yml --- buildspec/windowsTests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildspec/windowsTests.yml b/buildspec/windowsTests.yml index 781a02d843a..30a27348451 100644 --- a/buildspec/windowsTests.yml +++ b/buildspec/windowsTests.yml @@ -37,7 +37,7 @@ phases: } # Rider is very expensive (spikes our CI jobs to 50% CPU, so let it do the prep work in parallel, but run tests later - ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue --scan + ./gradlew -PideProfileName="$Env:ALTERNATIVE_IDE_PROFILE_NAME" check :plugin-toolkit:jetbrains-rider:compileTestKotlin --info --console plain --continue --scan --stacktrace if ($LastExitCode -ne 0) { Write-Host "Command failed with exit code $LastExitCode" exit -1 From afee4d51ea5c612a65c513518cb08399c02964f2 Mon Sep 17 00:00:00 2001 From: Laxman Reddy <141967714+laileni-aws@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:31:12 -0700 Subject: [PATCH 60/71] Security scans: Improving telemetry error messages (#4600) * Improving telemetry error messages * Adding reasonDesc param to telemetry error messages --- ...-95a98e96-ceb3-4a13-b05a-5a135a805ac0.json | 4 ++ .../CodeWhispererCodeScanException.kt | 26 ++++++----- .../codescan/CodeWhispererCodeScanManager.kt | 19 +++++--- .../codescan/CodeWhispererCodeScanSession.kt | 44 ++++++++++--------- .../codewhisperer/model/CodeWhispererModel.kt | 3 +- .../codescan/CodeWhispererCodeScanTest.kt | 28 ++++++++++++ .../resources/MessagesBundle.properties | 2 +- 7 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 .changes/next-release/bugfix-95a98e96-ceb3-4a13-b05a-5a135a805ac0.json diff --git a/.changes/next-release/bugfix-95a98e96-ceb3-4a13-b05a-5a135a805ac0.json b/.changes/next-release/bugfix-95a98e96-ceb3-4a13-b05a-5a135a805ac0.json new file mode 100644 index 00000000000..ae3750a4a45 --- /dev/null +++ b/.changes/next-release/bugfix-95a98e96-ceb3-4a13-b05a-5a135a805ac0.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "Security Scan: Improved telemetry error messages" +} \ No newline at end of file diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt index 5fd3ef4f1fe..f615a8f52f2 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanException.kt @@ -5,33 +5,35 @@ package software.aws.toolkits.jetbrains.services.codewhisperer.codescan import software.aws.toolkits.resources.message -open class CodeWhispererCodeScanException(override val message: String?) : RuntimeException() +open class CodeScanException(override val message: String, open val code: String?) : RuntimeException(message) -open class CodeWhispererCodeScanServerException(override val message: String?) : RuntimeException() +open class CodeWhispererCodeScanException(override val message: String, override val code: String?) : CodeScanException(message, code) + +open class CodeWhispererCodeScanServerException(override val message: String, override val code: String?) : CodeScanException(message, code) internal fun noFileOpenError(): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.no_file_open")) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.no_file_open"), "NoSourceFilesError") -internal fun codeScanFailed(errorMessage: String): Nothing = - throw Exception(errorMessage) +internal fun codeScanFailed(errorMessage: String, code: String?): Nothing = + throw CodeScanException(errorMessage, code) internal fun cannotFindFile(errorMessage: String, filepath: String): Nothing = error(message("codewhisperer.codescan.file_not_found", filepath, errorMessage)) internal fun cannotFindBuildArtifacts(): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.build_artifacts_not_found")) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.build_artifacts_not_found"), "NoSourceFilesError") internal fun fileFormatNotSupported(format: String): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_ext_not_supported", format)) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_ext_not_supported", format), "FileFormatNotSupportedError") internal fun fileTooLarge(): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_too_large")) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_too_large"), "ProjectSizeExceeded") -internal fun codeScanServerException(errorMessage: String): Nothing = - throw CodeWhispererCodeScanServerException(errorMessage) +internal fun codeScanServerException(errorMessage: String, code: String?): Nothing = + throw CodeWhispererCodeScanServerException(errorMessage, code) internal fun invalidSourceZipError(): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.invalid_source_zip_telemetry")) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.invalid_source_zip_telemetry"), "InvalidSourceZip") internal fun noSupportedFilesError(): Nothing = - throw CodeWhispererCodeScanException(message("codewhisperer.codescan.unsupported_language_error")) + throw CodeWhispererCodeScanException(message("codewhisperer.codescan.unsupported_language_error"), "NoSourceFilesError") diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt index 11b44bffadf..20d447185c3 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt @@ -281,13 +281,14 @@ class CodeWhispererCodeScanManager(val project: Project) { isProjectScanInProgress.set(false) } val errorMessage = handleError(coroutineContext, e, scope) - codeScanResponseContext = codeScanResponseContext.copy(reason = errorMessage) - } catch (e: Exception) { + codeScanResponseContext = codeScanResponseContext.copy(reasonDesc = errorMessage) + codeScanResponseContext = codeScanResponseContext.copy(reason = "DefaultError") + } catch (e: CodeScanException) { if (scope == CodeWhispererConstants.CodeAnalysisScope.PROJECT) { isProjectScanInProgress.set(false) } - val errorMessage = handleException(coroutineContext, e, scope) - codeScanResponseContext = codeScanResponseContext.copy(reason = errorMessage) + codeScanResponseContext = codeScanResponseContext.copy(reasonDesc = handleException(coroutineContext, e, scope)) + codeScanResponseContext = codeScanResponseContext.copy(reason = e.code ?: "DefaultError") } finally { // After code scan afterCodeScan(scope) @@ -336,7 +337,7 @@ class CodeWhispererCodeScanManager(val project: Project) { private fun getCodeScanExceptionMessage(e: CodeWhispererCodeScanException): String? { val message = e.message return when { - message.isNullOrBlank() -> null + message.isBlank() -> null message == message("codewhisperer.codescan.invalid_source_zip_telemetry") -> { message("codewhisperer.codescan.run_scan_error") } @@ -345,8 +346,12 @@ class CodeWhispererCodeScanManager(val project: Project) { } private fun getCodeScanServerExceptionMessage(e: CodeWhispererCodeScanServerException): String? = - e.message?.takeIf { it.startsWith("UploadArtifactToS3Exception:") } - ?.let { message("codewhisperer.codescan.upload_to_s3_failed") } + e.code?.let { + when (it) { + "UploadArtifactToS3Error" -> message("codewhisperer.codescan.upload_to_s3_failed") + else -> null + } + } fun handleException(coroutineContext: CoroutineContext, e: Exception, scope: CodeWhispererConstants.CodeAnalysisScope): String { val errorMessage = when (e) { diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt index 2dbbcf9f3f5..75978d34c92 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt @@ -154,7 +154,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { } } val errorMessage = createCodeScanResponse.errorMessage()?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry") - codeScanFailed(errorMessage) + codeScanFailed(errorMessage, "CreateCodeScanFailedError") } val jobId = createCodeScanResponse.jobId() codeScanResponseContext = codeScanResponseContext.copy(codeScanJobId = jobId) @@ -191,7 +191,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { } } val errorMessage = getCodeScanResponse.errorMessage()?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry") - codeScanFailed(errorMessage) + codeScanFailed(errorMessage, "DefaultError") } } @@ -286,13 +286,8 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { ) } catch (e: Exception) { LOG.debug { "Create Upload URL failed: ${e.message}" } - - val errorMessage = when { - e.message?.contains("Your account is not authorized to make this call.") == true -> "Your account is not authorized to make this call." - e.message?.contains("Service returned HTTP status code 407") == true -> "Service returned HTTP status code 407" - else -> e.message ?: message("codewhisperer.codescan.run_scan_error_telemetry") - } - throw codeScanServerException("CreateUploadUrlException: $errorMessage") + val errorMessage = getTelemetryErrorMessage(e) + throw codeScanServerException(errorMessage, "CreateUploadUrlError") } private fun getUploadIntent(scope: CodeWhispererConstants.CodeAnalysisScope): UploadIntent = when (scope) { @@ -325,7 +320,8 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { } } catch (e: Exception) { LOG.debug { "Artifact failed to upload in the S3 bucket: ${e.message}" } - throw codeScanServerException("UploadArtifactToS3Exception: " + e.message?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry")) + val errorMessage = getTelemetryErrorMessage(e) + throw codeScanServerException(errorMessage, "UploadArtifactToS3Error") } } @@ -347,15 +343,8 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { ) } catch (e: Exception) { LOG.debug { "Creating security scan failed: ${e.message}" } - val errorMessage = when { - e.message?.contains("Too many requests, please wait before trying again.") == true -> "Too many requests, please wait before trying again." - e.message?.contains("Improperly formed request.") == true -> "Improperly formed request." - e.message?.contains("Service returned HTTP status code 407") == true -> "Service returned HTTP status code 407" - e.message?.contains("Encountered an unexpected error when processing the request, please try again.") == true -> - "Encountered an unexpected error when processing the request, please try again." - else -> e.message ?: message("codewhisperer.codescan.run_scan_error_telemetry") - } - throw codeScanServerException("CreateCodeScanException: $errorMessage") + val errorMessage = getTelemetryErrorMessage(e) + throw codeScanServerException(errorMessage, "CreateCodeScanError") } } @@ -367,7 +356,8 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { ) } catch (e: Exception) { LOG.debug { "Getting security scan failed: ${e.message}" } - throw codeScanServerException("GetCodeScanException: " + e.message?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry")) + val errorMessage = getTelemetryErrorMessage(e) + throw codeScanServerException(errorMessage, "GetCodeScanError") } fun listCodeScanFindings(jobId: String, nextToken: String?): ListCodeScanFindingsResponse = try { @@ -380,7 +370,8 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { ) } catch (e: Exception) { LOG.debug { "Listing security scan failed: ${e.message}" } - throw codeScanServerException("ListCodeScanFindingsException: " + e.message?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry")) + val errorMessage = getTelemetryErrorMessage(e) + throw codeScanServerException(errorMessage, "ListCodeScanFindingsError") } fun mapToCodeScanIssues(recommendations: List): List { @@ -441,6 +432,17 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) { sleep(CODE_SCAN_POLLING_INTERVAL_IN_SECONDS * TOTAL_MILLIS_IN_SECOND) } + fun getTelemetryErrorMessage(e: Exception): String = when { + e.message?.contains("Resource not found.") == true -> "Resource not found." + e.message?.contains("Service returned HTTP status code 407") == true -> "Service returned HTTP status code 407" + e.message?.contains("Service returned HTTP status code 403") == true -> "Service returned HTTP status code 403" + e.message?.contains("invalid_grant: Invalid token provided") == true -> "invalid_grant: Invalid token provided" + e.message?.contains("Connect timed out") == true -> "Unable to execute HTTP request: Connect timed out" // Error: Connect to host failed + e.message?.contains("Encountered an unexpected error when processing the request, please try again.") == true -> + "Encountered an unexpected error when processing the request, please try again." + else -> e.message ?: message("codewhisperer.codescan.run_scan_error_telemetry") + } + private fun isProjectScope(): Boolean = sessionContext.codeAnalysisScope == CodeWhispererConstants.CodeAnalysisScope.PROJECT companion object { diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt index 0c3fa699555..e54e4e27117 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt @@ -155,7 +155,8 @@ data class CodeScanResponseContext( val codeScanJobId: String? = null, val codeScanTotalIssues: Int = 0, val codeScanIssuesWithFixes: Int = 0, - val reason: String? = null + val reason: String? = null, + val reasonDesc: String? = null ) data class LatencyContext( diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt index c47b9929245..eb466dd1aa2 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanTest.kt @@ -154,6 +154,34 @@ class CodeWhispererCodeScanTest : CodeWhispererCodeScanTestBase(PythonCodeInsigh assertThat(res).hasSize(1) } + @Test + fun `test getTelemetryErrorMessage should return the correct error message`() { + val exceptions = listOf( + Exception("Resource not found."), + Exception("Service returned HTTP status code 407"), + Exception("Service returned HTTP status code 403"), + Exception("invalid_grant: Invalid token provided"), + Exception("Connect timed out"), + Exception("Encountered an unexpected error when processing the request, please try again."), + Exception("Some other error message") + ) + + val expectedMessages = listOf( + "Resource not found.", + "Service returned HTTP status code 407", + "Service returned HTTP status code 403", + "invalid_grant: Invalid token provided", + "Unable to execute HTTP request: Connect timed out", + "Encountered an unexpected error when processing the request, please try again.", + "Some other error message" + ) + + exceptions.forEachIndexed { index, exception -> + val actualMessage = codeScanSessionSpy.getTelemetryErrorMessage(exception) + assertThat(expectedMessages[index]).isEqualTo(actualMessage) + } + } + @Test fun `test run() - happypath`() { assertNotNull(sessionConfigSpy) 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 a6acc3b5bdf..2034446a85a 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -763,7 +763,7 @@ codewhisperer.codescan.file_ext_not_supported=File extension {0} is not supporte codewhisperer.codescan.file_name_issues_count= {0} {1} {2, choice, 1#1 issue|2#{2,number} issues} codewhisperer.codescan.file_not_found=For file path {0} with error message: {0} codewhisperer.codescan.file_too_large=Amazon Q: The selected file exceeds the input artifact limit. Try again with a smaller file. For more information about scan limits, see the Amazon Q documentation. -codewhisperer.codescan.file_too_large_telemetry=Payload size limit reached. +codewhisperer.codescan.file_too_large_telemetry=Payload size limit reached codewhisperer.codescan.fix_applied_fail=Apply fix command failed. {0} codewhisperer.codescan.fix_available_label=Code fix available codewhisperer.codescan.fix_button_label=Fix with Q From 35732a304ad07f04c34f2f56d4ba28f2d9404de8 Mon Sep 17 00:00:00 2001 From: Vladimir Rudnev Date: Wed, 26 Jun 2024 10:04:59 +0500 Subject: [PATCH 61/71] Moved to the new customization API of new solution dialog. (#4153) Rewrite integration with the New Solution dialog in Rider to use the new API. Without this, in 2024.1 the plugin won't provide any extension for the New Solution dialog. Co-authored-by: Richard Li <742829+rli@users.noreply.github.com> --- ...-c4caad07-a1b3-4b15-af0f-6425bf2b9570.json | 4 + .../resources/MessagesBundle.properties | 1 + .../META-INF/ext-rider-wizard.xml | 8 ++ .../META-INF/ext-rider-wizard.xml | 8 ++ .../resources/META-INF/ext-rider.xml | 6 +- .../dotnet/DotNetSamProjectGenerator.kt | 0 .../dotnet/DotNetSamProjectGeneratorRoot.kt | 0 .../lambda/dotnet/DotNetSamProjectProvider.kt | 0 .../dotnet/DotNetSamProjectGenerator.kt | 93 ++++++++++++++++++ .../dotnet/DotNetSamProjectGeneratorRoot.kt | 95 +++++++++++++++++++ .../lambda/dotnet/DotNetSamProjectProvider.kt | 35 +++++++ 11 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 .changes/next-release/bugfix-c4caad07-a1b3-4b15-af0f-6425bf2b9570.json create mode 100644 plugins/toolkit/jetbrains-rider/resources-232-233/META-INF/ext-rider-wizard.xml create mode 100644 plugins/toolkit/jetbrains-rider/resources-241+/META-INF/ext-rider-wizard.xml rename plugins/toolkit/jetbrains-rider/{src => src-232-233}/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt (100%) rename plugins/toolkit/jetbrains-rider/{src => src-232-233}/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt (100%) rename plugins/toolkit/jetbrains-rider/{src => src-232-233}/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt (100%) create mode 100644 plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt create mode 100644 plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt create mode 100644 plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt diff --git a/.changes/next-release/bugfix-c4caad07-a1b3-4b15-af0f-6425bf2b9570.json b/.changes/next-release/bugfix-c4caad07-a1b3-4b15-af0f-6425bf2b9570.json new file mode 100644 index 00000000000..264079bdf01 --- /dev/null +++ b/.changes/next-release/bugfix-c4caad07-a1b3-4b15-af0f-6425bf2b9570.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "Rewrite integration with the New Solution dialog in Rider to use the new API." +} 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 2034446a85a..0533a11c4f8 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -1617,6 +1617,7 @@ sam.init.execution_error=Could not execute `sam init`! sam.init.generating.schema=Generating Schema sam.init.generating.template=Generating SAM template sam.init.go.sdk=Go SDK: +sam.init.group.name=Other sam.init.name=AWS Serverless Application sam.init.node_interpreter.label=Node interpreter: sam.init.packaging=Package Type: diff --git a/plugins/toolkit/jetbrains-rider/resources-232-233/META-INF/ext-rider-wizard.xml b/plugins/toolkit/jetbrains-rider/resources-232-233/META-INF/ext-rider-wizard.xml new file mode 100644 index 00000000000..fdbb218c743 --- /dev/null +++ b/plugins/toolkit/jetbrains-rider/resources-232-233/META-INF/ext-rider-wizard.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/toolkit/jetbrains-rider/resources-241+/META-INF/ext-rider-wizard.xml b/plugins/toolkit/jetbrains-rider/resources-241+/META-INF/ext-rider-wizard.xml new file mode 100644 index 00000000000..dea2b34d19a --- /dev/null +++ b/plugins/toolkit/jetbrains-rider/resources-241+/META-INF/ext-rider-wizard.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/toolkit/jetbrains-rider/resources/META-INF/ext-rider.xml b/plugins/toolkit/jetbrains-rider/resources/META-INF/ext-rider.xml index 1cb9d9f784d..708693095af 100644 --- a/plugins/toolkit/jetbrains-rider/resources/META-INF/ext-rider.xml +++ b/plugins/toolkit/jetbrains-rider/resources/META-INF/ext-rider.xml @@ -1,7 +1,10 @@ - + + + + @@ -18,7 +21,6 @@ - diff --git a/plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt b/plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt similarity index 100% rename from plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt rename to plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt diff --git a/plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt b/plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt similarity index 100% rename from plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt rename to plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt diff --git a/plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt b/plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt similarity index 100% rename from plugins/toolkit/jetbrains-rider/src/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt rename to plugins/toolkit/jetbrains-rider/src-232-233/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt diff --git a/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt new file mode 100644 index 00000000000..95f22dfec47 --- /dev/null +++ b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGenerator.kt @@ -0,0 +1,93 @@ +// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.lambda.dotnet + +import com.intellij.openapi.module.ModuleManager +import com.intellij.openapi.progress.DumbProgressIndicator +import com.intellij.openapi.progress.blockingContext +import com.intellij.openapi.project.rootManager +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.vfs.LocalFileSystem +import com.jetbrains.rd.util.lifetime.Lifetime +import com.jetbrains.rider.ideaInterop.fileTypes.msbuild.CsprojFileType +import com.jetbrains.rider.projectView.SolutionManager +import com.jetbrains.rider.projectView.projectTemplates.NewProjectDialogContext +import com.jetbrains.rider.projectView.projectTemplates.ProjectTemplatesSharedModel +import com.jetbrains.rider.projectView.projectTemplates.utils.ProjectTemplatesExpanderUtils +import kotlinx.coroutines.launch +import software.aws.toolkits.jetbrains.core.coroutines.applicationCoroutineScope +import software.aws.toolkits.resources.message +import java.io.File + +class DotNetSamProjectGenerator( + lifetime: Lifetime, + private val context: NewProjectDialogContext, + sharedModel: ProjectTemplatesSharedModel +) : DotNetSamProjectGeneratorRoot(lifetime, context, sharedModel) { + override suspend fun expandTemplate(): suspend () -> Unit = { + val samPanel = getSamPanel() + val generator = getSamGenerator() + val samSettings = samPanel.getNewProjectSettings() + + val solutionDirectory = getSolutionDirectory() + ?: throw Exception(message("sam.init.error.no.solution.basepath")) + + val fileSystem = LocalFileSystem.getInstance() + if (!solutionDirectory.exists()) { + FileUtil.createDirectory(solutionDirectory) + } + + val outDirVf = blockingContext { + fileSystem.refreshAndFindFileByIoFile(solutionDirectory) + ?: throw Exception(message("sam.init.error.no.virtual.file")) + } + + val samProjectBuilder = generator.createModuleBuilder() + samProjectBuilder.runSamInit( + context.project, + projectNameProperty.get(), + samSettings, + null, + outDirVf + ) + + // Create solution file + val projectFiles = + File(solutionDirectory, "src").walk().filter { it.extension == CsprojFileType.defaultExtension } + + File(solutionDirectory, "test").walk().filter { it.extension == CsprojFileType.defaultExtension } + + // Get the rest of generated files and copy to "SolutionItems" default folder in project structure + val solutionFiles = solutionDirectory.listFiles()?.filter { it.isFile }?.toList() ?: emptyList() + + val solutionFile = ProjectTemplatesExpanderUtils.expandSolution( + name = solutionNameProperty.get(), + directory = solutionDirectory, + projectFiles = projectFiles.toList(), + protocolHost = context.protocolHost, + solutionFiles = solutionFiles + ) ?: throw Exception(message("sam.init.error.solution.create.fail")) + + applicationCoroutineScope().launch { + val project = + SolutionManager.openExistingSolution( + projectToClose = null, + forceOpenInNewFrame = false, + solutionFile = solutionFile, + forceConsiderTrusted = true + ) ?: return@launch + if (createGitRepositoryProperty.get() && repositoryInitializer.canInit()) { + repositoryInitializer.execute(project) + } + + val modifiableModel = ModuleManager.getInstance(project).modules.firstOrNull()?.rootManager?.modifiableModel ?: return@launch + try { + val progressIndicator = DumbProgressIndicator() + + samProjectBuilder.runPostSamInit(project, modifiableModel, progressIndicator, samSettings, outDirVf) + } finally { + modifiableModel.dispose() + } + } + } +} diff --git a/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt new file mode 100644 index 00000000000..72d1a69ac57 --- /dev/null +++ b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectGeneratorRoot.kt @@ -0,0 +1,95 @@ +// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.lambda.dotnet + +import com.intellij.openapi.ui.DialogPanel +import com.intellij.openapi.ui.ValidationInfo +import com.intellij.ui.dsl.builder.Align +import com.intellij.ui.dsl.builder.panel +import com.jetbrains.rd.util.lifetime.Lifetime +import com.jetbrains.rider.model.RdProjectTemplate2 +import com.jetbrains.rider.projectView.projectTemplates.NewProjectDialogContext +import com.jetbrains.rider.projectView.projectTemplates.ProjectTemplatesSharedModel +import com.jetbrains.rider.projectView.projectTemplates.StatusMessageType +import com.jetbrains.rider.projectView.projectTemplates.StatusMessages +import com.jetbrains.rider.projectView.projectTemplates.generators.ProjectTemplateGeneratorBase +import software.aws.toolkits.jetbrains.services.lambda.BuiltInRuntimeGroups +import software.aws.toolkits.jetbrains.services.lambda.RuntimeGroup +import software.aws.toolkits.jetbrains.services.lambda.wizard.SamInitSelectionPanel +import software.aws.toolkits.jetbrains.services.lambda.wizard.SamProjectGenerator +import software.aws.toolkits.jetbrains.utils.DotNetRuntimeUtils +import javax.swing.JComponent + +abstract class DotNetSamProjectGeneratorRoot( + lifetime: Lifetime, + private val context: NewProjectDialogContext, + sharedModel: ProjectTemplatesSharedModel +) : ProjectTemplateGeneratorBase( + lifetime, + context, + sharedModel, + createProject = true +) { + companion object { + private const val SAM_HELLO_WORLD_PROJECT_NAME = "HelloWorld" + } + + override val defaultName = SAM_HELLO_WORLD_PROJECT_NAME + + // TODO: Decouple SamProjectGenerator from the framework wizards so we can re-use its panels + private val generator = SamProjectGenerator() + private val samPanel = SamInitSelectionPanel( + generator.wizardFragments, + // Only show templates for DotNet in Rider + runtimeFilter = { RuntimeGroup.getById(BuiltInRuntimeGroups.Dotnet).supportedRuntimes.contains(it) }, + // needed to rerun the validation when the wizard is changed + wizardUpdateCallback = { validateData() } + ) + + fun getSamPanel() = samPanel + + fun getSamGenerator() = generator + + init { + /** + * The project name is generated inside SAM CLI generator and cannot be re-defined via parameters. + * Hardcode the project name to the generated one - "HelloWorld". + */ + projectNameProperty.set(SAM_HELLO_WORLD_PROJECT_NAME) + sameDirectoryProperty.set(false) + + initSamPanel() + } + + override fun getComponent(): JComponent { + val component = super.getComponent() + projectNameTextField?.component?.isEnabled = false + sameDirectoryCheckbox?.component?.isEnabled = false + return component + } + + override fun createTemplateSpecificPanel(): DialogPanel { + val panel = panel { row { cell(samPanel.mainPanel).align(Align.FILL).resizableColumn() }.resizableRow() } + validateData() + return panel + } + + override fun checkIsAbleToExpand(template: RdProjectTemplate2?, validations: Map) { + // we don't care about template here. + canExpand.set(validations.isEmpty()) + } + + private fun validateData() { + // first validateData comes from SamInitSelectionPanel constructor... + samPanel.validate()?.let { + context.statusMessages.add(StatusMessages.Error(it.message)) + return + } + context.statusMessages.removeIf { it.type == StatusMessageType.Error } + } + + private fun initSamPanel() { + samPanel.setRuntime(DotNetRuntimeUtils.getCurrentDotNetCoreRuntime()) + } +} diff --git a/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt new file mode 100644 index 00000000000..fbc8242b264 --- /dev/null +++ b/plugins/toolkit/jetbrains-rider/src-241+/software/aws/toolkits/jetbrains/services/lambda/dotnet/DotNetSamProjectProvider.kt @@ -0,0 +1,35 @@ +// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.lambda.dotnet + +import com.jetbrains.rd.util.lifetime.Lifetime +import com.jetbrains.rd.util.reactive.IProperty +import com.jetbrains.rd.util.reactive.Property +import com.jetbrains.rider.projectView.projectTemplates.NewProjectDialogContext +import com.jetbrains.rider.projectView.projectTemplates.ProjectTemplatesSharedModel +import com.jetbrains.rider.projectView.projectTemplates.generators.ProjectTemplateGenerator +import com.jetbrains.rider.projectView.projectTemplates.providers.ProjectTemplateProvider +import com.jetbrains.rider.projectView.projectTemplates.templateTypes.ProjectTemplateType +import icons.AwsIcons +import software.aws.toolkits.resources.message + +class DotNetSamProjectProvider : ProjectTemplateProvider { + + override val isReady = Property(true) + + override fun load(lifetime: Lifetime, context: NewProjectDialogContext): IProperty?> = + Property(setOf(RiderSamProject())) + + private class RiderSamProject : ProjectTemplateType { + override val group = message("sam.init.group.name") + override val icon = AwsIcons.Resources.SERVERLESS_APP + override val name = message("sam.init.name") + override val order = 90 + + override fun createGenerator(lifetime: Lifetime, context: NewProjectDialogContext, sharedModel: ProjectTemplatesSharedModel): ProjectTemplateGenerator = + DotNetSamProjectGenerator(lifetime, context, sharedModel) + + override fun getKeywords() = setOf(name) + } +} From e426af7a04b8c73c032cf48e3f648e4c278383de Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 25 Jun 2024 22:09:15 -0700 Subject: [PATCH 62/71] verif --- .../src/main/kotlin/toolkit-publishing-conventions.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index 42b76b6f6da..df210355ad5 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -18,6 +18,7 @@ intellijPlatform { } verifyPlugin { + subsystemsToCheck.set(VerifyPluginTask.Subsystems.WITHOUT_ANDROID) // need to tune this failureLevel.set(listOf(VerifyPluginTask.FailureLevel.INVALID_PLUGIN)) } From d43e7be034856c20c87cb2416ed5c9ff940960c4 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Tue, 25 Jun 2024 22:13:12 -0700 Subject: [PATCH 63/71] verif --- .../src/main/kotlin/toolkit-publishing-conventions.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index df210355ad5..e7e6a285696 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -43,6 +43,6 @@ tasks.check { } tasks.verifyPlugin { - // hack to run serially because the CLI tool writes random directories in current user home directory - inputs.file("$rootDir/README.md") + // give each instance its own home dir + systemProperty("plugin.verifier.home.dir", temporaryDir) } From e3104ff3f87cffb8a5895be370c162cfacf5579d Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Wed, 26 Jun 2024 12:12:38 -0700 Subject: [PATCH 64/71] Update build.gradle.kts --- plugins/toolkit/jetbrains-gateway/build.gradle.kts | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/toolkit/jetbrains-gateway/build.gradle.kts b/plugins/toolkit/jetbrains-gateway/build.gradle.kts index 46ef0215734..b1c19d835e9 100644 --- a/plugins/toolkit/jetbrains-gateway/build.gradle.kts +++ b/plugins/toolkit/jetbrains-gateway/build.gradle.kts @@ -83,8 +83,6 @@ dependencies { testRuntimeOnly(project(":plugin-toolkit:jetbrains-core", "gatewayArtifacts")) testImplementation(testFixtures(project(":plugin-core:jetbrains-community"))) testImplementation(project(path = ":plugin-toolkit:jetbrains-core", configuration = "testArtifacts")) - testImplementation(libs.kotlin.coroutinesTest) - testImplementation(libs.kotlin.coroutinesDebug) testImplementation(libs.wiremock) testImplementation(libs.bundles.sshd) } From 892b5053daeae5c9691151500442f6569795ad60 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 13:30:43 -0700 Subject: [PATCH 65/71] split verify for memory --- buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts | 4 ++++ .../main/kotlin/toolkit-publishing-conventions.gradle.kts | 6 ++---- buildspec/linuxTests.yml | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 8cc810ace9f..0e05bba0f28 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -27,3 +27,7 @@ dependencies { instrumentationTools() } } + +tasks.verifyPlugin { + isEnabled = false +} diff --git a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts index e7e6a285696..4ff8a69bce3 100644 --- a/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-publishing-conventions.gradle.kts @@ -38,11 +38,9 @@ configurations { } } -tasks.check { - dependsOn(tasks.verifyPlugin) -} - +// not run as part of check because of memory pressue issues tasks.verifyPlugin { + isEnabled = true // give each instance its own home dir systemProperty("plugin.verifier.home.dir", temporaryDir) } diff --git a/buildspec/linuxTests.yml b/buildspec/linuxTests.yml index db93597f250..b5c8b0b1806 100644 --- a/buildspec/linuxTests.yml +++ b/buildspec/linuxTests.yml @@ -33,7 +33,7 @@ phases: - chmod +x gradlew - su codebuild-user -c "./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME check coverageReport --info --console plain --continue -scan" - - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin + - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin verifyPlugin - VCS_COMMIT_ID="${CODEBUILD_RESOLVED_SOURCE_VERSION}" - CI_BUILD_URL=$(echo $CODEBUILD_BUILD_URL | sed 's/#/%23/g') # Encode `#` in the URL because otherwise the url is clipped in the Codecov.io site - CI_BUILD_ID="${CODEBUILD_BUILD_ID}" From 29b78d4024fdef189156d131635ade7a58a49eb3 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Wed, 26 Jun 2024 13:30:22 -0700 Subject: [PATCH 66/71] Decrease failure noise by increase flaky test failure threshold (#4617) Sometimes we get exactly 5 failing flaky tests --- buildSrc/src/main/kotlin/toolkit-testing.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/toolkit-testing.gradle.kts b/buildSrc/src/main/kotlin/toolkit-testing.gradle.kts index 817dc27bcff..54a0df0d41f 100644 --- a/buildSrc/src/main/kotlin/toolkit-testing.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-testing.gradle.kts @@ -66,7 +66,7 @@ tasks.withType().all { ciOnly { retry { failOnPassedAfterRetry.set(false) - maxFailures.set(5) + maxFailures.set(50) maxRetries.set(2) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 417b0ca22e7..975664ccc31 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -25,7 +25,7 @@ mockk = "1.13.10" node-gradle = "7.0.2" telemetryGenerator = "1.0.216" testLogger = "4.0.0" -testRetry = "1.5.2" +testRetry = "1.5.9" # test-only; platform provides slf4j transitively at runtime. <233, 1.7.36; >=233, 2.0.9 slf4j = "2.0.9" sshd = "2.12.1" From f742a25d3d1c13651887663e438c01bfb63fd781 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 14:29:12 -0700 Subject: [PATCH 67/71] verify --- buildspec/linuxTests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buildspec/linuxTests.yml b/buildspec/linuxTests.yml index b5c8b0b1806..23cc8daa4e3 100644 --- a/buildspec/linuxTests.yml +++ b/buildspec/linuxTests.yml @@ -33,7 +33,10 @@ phases: - chmod +x gradlew - su codebuild-user -c "./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME check coverageReport --info --console plain --continue -scan" - - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin verifyPlugin + - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin :plugin-toolkit:intellij-standalone:verifyPlugin :plugin-core:verifyPlugin :plugin-amazonq:verifyPlugin + - if ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME projects --console plain | grep -q "Project ':plugin-toolkit:jetbrains-gateway'"; then + ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:jetbrains-gateway:buildPlugin :plugin-toolkit:jetbrains-gateway:verifyPlugin + fi - VCS_COMMIT_ID="${CODEBUILD_RESOLVED_SOURCE_VERSION}" - CI_BUILD_URL=$(echo $CODEBUILD_BUILD_URL | sed 's/#/%23/g') # Encode `#` in the URL because otherwise the url is clipped in the Codecov.io site - CI_BUILD_ID="${CODEBUILD_BUILD_ID}" From 4ec6a95e87a94579d1a4f58da95c98d08d0af067 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 15:09:36 -0700 Subject: [PATCH 68/71] syntax --- buildspec/linuxTests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/buildspec/linuxTests.yml b/buildspec/linuxTests.yml index 23cc8daa4e3..82969e9e262 100644 --- a/buildspec/linuxTests.yml +++ b/buildspec/linuxTests.yml @@ -34,8 +34,9 @@ phases: - chmod +x gradlew - su codebuild-user -c "./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME check coverageReport --info --console plain --continue -scan" - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:intellij-standalone:buildPlugin :plugin-core:buildPlugin :plugin-amazonq:buildPlugin :plugin-toolkit:intellij-standalone:verifyPlugin :plugin-core:verifyPlugin :plugin-amazonq:verifyPlugin - - if ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME projects --console plain | grep -q "Project ':plugin-toolkit:jetbrains-gateway'"; then - ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:jetbrains-gateway:buildPlugin :plugin-toolkit:jetbrains-gateway:verifyPlugin + - | + if ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME projects --console plain | grep -q "Project ':plugin-toolkit:jetbrains-gateway'"; then + ./gradlew -PideProfileName=$ALTERNATIVE_IDE_PROFILE_NAME :plugin-toolkit:jetbrains-gateway:buildPlugin :plugin-toolkit:jetbrains-gateway:verifyPlugin fi - VCS_COMMIT_ID="${CODEBUILD_RESOLVED_SOURCE_VERSION}" - CI_BUILD_URL=$(echo $CODEBUILD_BUILD_URL | sed 's/#/%23/g') # Encode `#` in the URL because otherwise the url is clipped in the Codecov.io site From 7f3d3516fbe69b33cfa354e1c15e988bd489cd0e Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 16:11:05 -0700 Subject: [PATCH 69/71] bump rider --- .../software/aws/toolkits/gradle/intellij/IdeVersions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 7f0f17b2a94..8012cb4ee92 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 @@ -48,11 +48,11 @@ object IdeVersions { ) ), rider = RiderProfile( - sdkVersion = "2023.2", + sdkVersion = "2023.2.5", bundledPlugins = commonPlugins, netFrameworkTarget = "net472", rdGenVersion = "2023.2.3", - nugetVersion = "2023.2.0" + nugetVersion = "2023.2.5" ) ), Profile( From 5a136dc9aa0d0d06c503e6b0c54806660c113b52 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 17:20:21 -0700 Subject: [PATCH 70/71] noop? --- .../main/kotlin/toolkit-intellij-plugin.gradle.kts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts index 0e05bba0f28..b81305889cf 100644 --- a/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts +++ b/buildSrc/src/main/kotlin/toolkit-intellij-plugin.gradle.kts @@ -2,6 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType import org.jetbrains.intellij.platform.gradle.TestFrameworkType +import org.jetbrains.intellij.platform.gradle.tasks.aware.RunnableIdeAware +import software.aws.toolkits.gradle.ciOnly import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension private val toolkitIntelliJ = project.extensions.create("intellijToolkit") @@ -31,3 +33,15 @@ dependencies { tasks.verifyPlugin { isEnabled = false } + +// CI keeps running out of RAM, so limit IDE instance count to 4 +ciOnly { + abstract class NoopBuildService : BuildService {} + val noopService = gradle.sharedServices.registerIfAbsent("noopService", NoopBuildService::class.java) { + maxParallelUsages = 4 + } + + tasks.matching { it is RunnableIdeAware }.all { + usesService(noopService) + } +} From 3868539857ed13588e3633ce2888adc56132a9fb Mon Sep 17 00:00:00 2001 From: Richard Li Date: Wed, 26 Jun 2024 18:07:43 -0700 Subject: [PATCH 71/71] log --- .../gateway/connection/SshCommandLineTest.kt | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/SshCommandLineTest.kt b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/SshCommandLineTest.kt index d5bc11e5b70..0c4d093a85f 100644 --- a/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/SshCommandLineTest.kt +++ b/plugins/toolkit/jetbrains-gateway/tst/software/aws/toolkits/jetbrains/gateway/connection/SshCommandLineTest.kt @@ -8,6 +8,9 @@ import com.github.tomakehurst.wiremock.client.WireMock.any import com.github.tomakehurst.wiremock.client.WireMock.anyUrl import com.github.tomakehurst.wiremock.core.WireMockConfiguration import com.github.tomakehurst.wiremock.junit.WireMockClassRule +import com.intellij.execution.process.ProcessEvent +import com.intellij.execution.process.ProcessListener +import com.intellij.openapi.util.Key import com.intellij.testFramework.ApplicationRule import com.intellij.util.io.HttpRequests import com.intellij.util.net.NetUtils @@ -63,7 +66,29 @@ class SshCommandLineTest { SshCommandLine("localhost", port = sshServer.server.port) .knownHostsLocation(tempFolder.newFile().toPath()) .localPortForward(localPort, wireMockPort) - .executeInBackground() + .executeInBackground( + object : ProcessListener { + override fun startNotified(event: ProcessEvent) { + println("ssh client: startNotified") + } + + override fun processTerminated(event: ProcessEvent) { + println("ssh client: processTerminated, exit: ${event.exitCode}") + } + + override fun processWillTerminate(event: ProcessEvent, willBeDestroyed: Boolean) { + println("ssh client: processWillTerminate, willBeDestroyed: $willBeDestroyed") + } + + override fun onTextAvailable(event: ProcessEvent, outputType: Key<*>) { + println("ssh client: onTextAvailable: ${event.text}") + } + + override fun processNotStarted() { + println("ssh client: processNotStarted") + } + } + ) // race between ssh background process and client spinUntil(5_000) { sshServer.clientIsConnected() }