diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt index d15047c4fe8..cab313282b7 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt @@ -73,6 +73,7 @@ import javax.net.ssl.SSLHandshakeException const val MAX_ZIP_SIZE = 2000000000 // 2GB const val EXPLAINABILITY_V1 = "EXPLAINABILITY_V1" +const val SELECTIVE_TRANSFORMATION_V2 = "SELECTIVE_TRANSFORMATION_V2" // constants for handling SDKClientException const val CONNECTION_REFUSED_ERROR: String = "Connection refused" 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 9baf422c500..0a97693adc6 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 @@ -554,7 +554,7 @@ fun buildTransformResumingChatContent() = CodeTransformChatMessageContent( type = CodeTransformChatMessageType.PendingAnswer, ) -fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult): CodeTransformChatMessageContent { +fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, targetJdkVersion: String = ""): CodeTransformChatMessageContent { val resultMessage = when (result) { is CodeModernizerJobCompletedResult.JobAbortedZipTooLarge -> { "${message( @@ -568,7 +568,7 @@ fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult): C buildZipUploadFailedChatMessage(result.failureReason) } is CodeModernizerJobCompletedResult.JobCompletedSuccessfully -> { - message("codemodernizer.chat.message.result.success") + message("codemodernizer.chat.message.result.success", targetJdkVersion) } is CodeModernizerJobCompletedResult.JobPartiallySucceeded -> { message("codemodernizer.chat.message.result.partially_success") 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 8cf9e362fb6..629aabf0727 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 @@ -31,6 +31,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.CodeTransformTele import software.aws.toolkits.jetbrains.services.codemodernizer.EXPLAINABILITY_V1 import software.aws.toolkits.jetbrains.services.codemodernizer.HilTelemetryMetaData import software.aws.toolkits.jetbrains.services.codemodernizer.InboundAppMessagesHandler +import software.aws.toolkits.jetbrains.services.codemodernizer.SELECTIVE_TRANSFORMATION_V2 import software.aws.toolkits.jetbrains.services.codemodernizer.client.GumbyClient import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformActionMessage import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformCommand @@ -412,7 +413,7 @@ class CodeTransformChatController( it.sessionContext.customBuildCommand = customBuildCommand } // TODO: add CLIENT_SIDE_BUILD below when releasing CSB - val transformCapabilities = listOf(EXPLAINABILITY_V1) + val transformCapabilities = listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2) codeModernizerManager.codeTransformationSession?.let { it.sessionContext.transformCapabilities = transformCapabilities codeModernizerManager.runLocalMavenBuild(context.project, it) @@ -473,7 +474,7 @@ dependencyManagement: - identifier: "com.example:library1" targetVersion: "2.1.0" versionProperty: "library1.version" # Optional - originType: "FIRST_PARTY" # or "THIRD_PARTY" # Optional + originType: "FIRST_PARTY" # or "THIRD_PARTY" - identifier: "com.example:library2" targetVersion: "3.0.0" originType: "THIRD_PARTY" @@ -794,7 +795,10 @@ dependencyManagement: is DownloadArtifactResult.Success -> { if (downloadResult.artifact !is CodeModernizerArtifact) return artifactHandler.notifyUnableToApplyPatch("") codeTransformChatHelper.updateLastPendingMessage( - buildTransformResultChatContent(result) + buildTransformResultChatContent( + result, + codeModernizerManager.codeTransformationSession?.sessionContext?.targetJavaVersion.toString() + ) ) } is DownloadArtifactResult.DownloadFailure -> artifactHandler.notifyUnableToDownload(downloadResult.failureReason) diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerSessionContext.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerSessionContext.kt index 93bf8a20b1a..0f567285a09 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerSessionContext.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerSessionContext.kt @@ -49,6 +49,7 @@ const val CUSTOM_DEPENDENCY_VERSIONS_FILE_PATH = "custom-upgrades.yaml" const val UPLOAD_ZIP_MANIFEST_VERSION = "1.0" const val HIL_1P_UPGRADE_CAPABILITY = "HIL_1pDependency_VersionUpgrade" const val EXPLAINABILITY_V1 = "EXPLAINABILITY_V1" +const val SELECTIVE_TRANSFORMATION_V2 = "SELECTIVE_TRANSFORMATION_V2" const val CLIENT_SIDE_BUILD = "CLIENT_SIDE_BUILD" const val MAVEN_CONFIGURATION_FILE_NAME = "pom.xml" const val MAVEN_BUILD_RUN_UNIT_TESTS = "clean test" diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt index 9fb6b14a380..4dd20e630d0 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt @@ -11,8 +11,8 @@ data class ZipManifest( val version: String = UPLOAD_ZIP_MANIFEST_VERSION, val hilCapabilities: List = listOf(HIL_1P_UPGRADE_CAPABILITY), // TODO: add CLIENT_SIDE_BUILD to transformCapabilities when releasing CSB - // TODO: add AGENTIC_PLAN_V1 or something here AND in processCodeTransformSkipTests when backend allowlists everyone - val transformCapabilities: List = listOf(EXPLAINABILITY_V1), + val transformCapabilities: List = listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2), + val noInteractiveMode: Boolean = true, val customBuildCommand: String = MAVEN_BUILD_RUN_UNIT_TESTS, val requestedConversions: RequestedConversions? = null, // only used for SQL conversions for now ) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt index 975f191f4df..91918c92db2 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt @@ -30,7 +30,7 @@ class CodeTransformChatTest { fun `test that transform result chat item includes view summary button and view diff button with correct label when job fully succeeded`() { val result = CodeModernizerJobCompletedResult.JobCompletedSuccessfully(JobId("dummy-job-id-123")) val chatItem = buildTransformResultChatContent(result) - assertThat(chatItem.message).isEqualTo(message("codemodernizer.chat.message.result.success")) + assertThat(chatItem.message).contains("I successfully completed your transformation") assertThat(chatItem.buttons) .hasSize(2) .satisfiesKt { buttons -> diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index f4ac5c09799..ab7242be2ea 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -146,7 +146,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa root.children[0], JavaSdkVersion.JDK_1_8, JavaSdkVersion.JDK_11, - listOf(EXPLAINABILITY_V1), + listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2), MAVEN_BUILD_SKIP_UNIT_TESTS ) val mockFile = mock(File::class.java) @@ -164,6 +164,8 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa Path("manifest.json") -> { assertThat(fileContent).isNotNull() assertThat(fileContent).contains(MAVEN_BUILD_SKIP_UNIT_TESTS) + assertThat(fileContent).contains(SELECTIVE_TRANSFORMATION_V2) + assertThat(fileContent).contains("\"noInteractiveMode\":true") } Path("sources/src/tmp.txt") -> assertThat(fileContent).isEqualTo(fileText) Path("build-logs.txt") -> assertThat(fileContent).isNotNull() 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 9f769d120ab..b0b0f432707 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -681,7 +681,7 @@ codemodernizer.chat.message.result.fail_initial_build=I am having trouble buildi codemodernizer.chat.message.result.fail_initial_build_no_build_log=I am having trouble building your project in the secure build environment: {0}. codemodernizer.chat.message.result.fail_with_known_reason=Sorry, I couldn''t complete the transformation. {0} codemodernizer.chat.message.result.partially_success=I transformed part of your code. 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 completed your transformation. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the changes I'm proposing. +codemodernizer.chat.message.result.success=I successfully completed your transformation. You can review the diff to see my proposed changes and accept or reject them. The transformation summary has details about the changes I am proposing. If you want to upgrade additional libraries and other dependencies, run /transform with the transformed code and specify {0} as the source and target version. codemodernizer.chat.message.result.zip_too_large=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 2GB. 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.skip_tests=I will build your project using `mvn clean test` by default. If you would like me to build your project without running unit tests, I will use `mvn clean test-compile`.