From d36a4670cba3245077508755bdcc1d34d5417e52 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 09:44:42 -0800 Subject: [PATCH 01/11] Feature - add shared telemetry metrics for AmazonQ Transform --- telemetry/definitions/commonDefinitions.json | 567 ++++++++++++++++++- 1 file changed, 566 insertions(+), 1 deletion(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index a946eeebe..9db3eb0d9 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -915,6 +915,150 @@ "name": "amazonqEndOfTheConversationLatency", "type": "double", "description": "Total time from start to end" + }, + { + "name": "codeTransformJavaSourceVersionsAllowed", + "type": "string", + "description": "Allowed Java versions to transform from.", + "allowedValues": [ + "JDK_1_8", + "JDK_11" + ] + }, + { + "name": "codeTransformJavaTargetVersionsAllowed", + "type": "string", + "description": "Allowed Java versions to transform to.", + "allowedValues": [ + "JDK_17" + ] + }, + { + "name": "codeTransformJobId", + "type": "string", + "description": "A string id for the current job running in the background." + }, + { + "name": "codeTransformStatus", + "type": "string", + "description": "A string to identify the API status." + }, + { + "name": "codeTransformRequestId", + "type": "string", + "description": "A string id for the api request that was fired." + }, + { + "name": "codeTransformTotalByteSize", + "type": "int", + "description": "An integer representing the byte size of the upload or download." + }, + { + "name": "codeTransformUploadId", + "type": "string", + "description": "A unique upload id representing the uploadId to s3 bucket." + }, + { + "name": "codeTransformResultStatusMessage", + "type": "string", + "description": "A general string field to represent the result of the project" + }, + { + "name": "codeTransformRuntimeError", + "type": "string", + "description": "A general string field to represent runtime errors in the project." + }, + { + "name": "codeTransformApiErrorMessage", + "type": "string", + "description": "A general string field to represent API specific errors in the project." + }, + { + "name": "codeTransformSessionId", + "type": "string", + "description": "A general string field to represent the IDE session from when users start the modernization process." + }, + { + "name": "codeTransformRunTimeLatency", + "type": "int", + "description": "A millisecond value of the total runtime latency." + }, + { + "name": "codeTransformStartSrcComponents", + "type": "string", + "description": "Names of components that can start a transform job.", + "allowedValues": [ + "devToolsStartButton", + "bottomPanelSideNavButton" + ] + }, + { + "name": "codeTransformCancelSrcComponents", + "type": "string", + "description": "Names of components that can cancel a transform job.", + "allowedValues": [ + "apiError", + "loadingPanelStopButton", + "devToolsStopButton", + "bottomPanelSideNavButton" + ] + }, + { + "name": "codeTransformVCSViewerSrcComponents", + "type": "string", + "description": "Names of components that can initiate the patch viewer.", + "allowedValues": [ + "toastNotification", + "treeView", + "treeViewHeader" + ] + }, + { + "name": "codeTransformPatchViewerCancelSrcComponents", + "type": "string", + "description": "Names of components that can cancel the patch viewer.", + "allowedValues": [ + "apiError", + "cancelButton" + ] + }, + { + "name": "codeTransformApiNames", + "type": "string", + "description": "Names of allowed api calls in code transform service.", + "allowedValues": [ + "StartTransformation", + "StopTransformation", + "GetTransformation", + "GetTransformationPlan", + "UploadZip", + "CreateUploadUrl", + "ExportResultArchive" + ] + }, + { + "name": "codeTransformPreValidationError", + "type": "string", + "description": "Names of the pre-validation errors that can occur in the project", + "allowedValues": [ + "No pom.xml file found", + "No Java project found", + "Mixed Java project and another language found", + "Project selected is not Java 8 or Java 11", + "Only Maven projects supported", + "Empty project", + "Non SSO login", + "Project running on backend" + ] + }, + { + "name": "codeTransformMavenBuildCommand", + "type": "string", + "description": "Type of maven command", + "allowedValues": [ + "mvn", + "mvnw" + ] } ], "metrics": [ @@ -3294,6 +3438,427 @@ { "type": "codecatalyst_devEnvironmentWorkflowStep"}, { "type": "codecatalyst_devEnvironmentWorkflowError", "required": false } ] + }, + { + "name": "codeTransform_isVisibleToUser", + "passive": true, + "description": "The code transform button will only be available to start transform when a Java module or build configuration is found in the repository.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_totalRunTime", + "passive": true, + "description": "The code transform button will only be available to start transform when a Java module or build configuration is found in the repository.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRunTimeLatency", + "required": true + }, + { + "type": "codeTransformResultStatusMessage", + "required": false + } + ] + }, + { + "name": "codeTransform_isDoubleClickedToTriggerUserModal", + "description": "The code transform button in the devtools to initiate the pre transform user modal window.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformStartSrcComponents", + "required": true + } + ] + }, + { + "name": "codeTransform_isDoubleClickedToTriggerInvalidProject", + "description": "The code transform button in the devtools to initiate the job but there is a validation error.", + "metadata": [ + { + "type": "codeTransformPreValidationError", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { "type": "result", "required": true }, + { "type": "reason", "required": true } + ] + }, + { + "name": "codeTransform_jobIsStartedFromUserPopupClick", + "description": "The user initiates a transform job from the pre transform user modal window.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_jobIsResumedAfterIdeClose", + "description": "The user was previously running a transformation and came back to IDE to see it still running", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": true + }, + { + "type": "codeTransformStatus", + "required": true + } + ] + }, + { + "name": "codeTransform_jobIsClosedDuringIdeRun", + "description": "The user closes their IDE and stops viewing the transformation.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": true + }, + { + "type": "codeTransformStatus", + "required": true + } + ] + }, + { + "name": "codeTransform_jobIsStartedFromChatPrompt", + "description": "The user initiates a transform job from Amazon Q chat prompt.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_jobIsCanceledFromUserPopupClick", + "description": "The code transform button to initiate the pre transform user modal.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_jobStartedCompleteFromPopupDialog", + "passive": true, + "description": "After modal validation of inputs, code execution will start and we will fire this event.", + "metadata": [ + { + "type": "codeTransformJavaSourceVersionsAllowed", + "required": true + }, + { + "type": "codeTransformJavaTargetVersionsAllowed", + "required": true + }, + { + "type": "codeTransformConfigurationFilePath", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_jobStatusChanged", + "passive": true, + "description": "During the transformation progress, log the status steps returning from the API.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": true + }, + { + "type": "codeTransformStatus", + "required": true + } + ] + }, + { + "name": "codeTransform_configurationFileSelectedChanged", + "description": "Fire a change event when users select a new configuration/module file from the dropdown.", + "metadata": [ + { + "type": "codeTransformConfigurationFilePath", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_jobIsCancelledByUser", + "description": "After a job is running the user has the ability to cancel the job.", + "metadata": [ + { + "type": "codeTransformCancelSrcComponents", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRuntimeError", + "required": false + } + ] + }, + { + "name": "codeTransform_jobCreateZipEndTime", + "description": "A timestamp for when the job is ending upload zip contents", + "metadata": [ + { + "type": "codeTransformTotalByteSize", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRunTimeLatency", + "required": true + } + ] + }, + { + "name": "codeTransform_jobArtifactDownloadAndDeserializeTime", + "description": "A timestamp for when the job is ending download zip contents", + "metadata": [ + { + "type": "codeTransformJobId", + "required": true + }, + { + "type": "codeTransformTotalByteSize", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRunTimeLatency", + "required": true + }, + { + "type": "codeTransformRuntimeError", + "required": false + } + ] + }, + { + "name": "codeTransform_vcsViewerClicked", + "description": "An interactivity measured when users click to view diff results.", + "metadata": [ + { + "type": "codeTransformVCSViewerSrcComponents", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_vcsDiffViewerVisible", + "description": "A timestamp for when the diff view is being displayed to the user.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_vcsViewerCanceled", + "description": "An interactivity measured when users cancel a patch view.", + "metadata": [ + { + "type": "codeTransformPatchViewerCancelSrcComponents", + "required": true + }, + { + "type": "codeTransformRuntimeError", + "required": false + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_vcsViewerSubmitted", + "description": "An interactivity measured when users submit their patch view results.", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_logApiLatency", + "passive": true, + "description": "A general logging measure for all client side API's latency.", + "metadata": [ + { + "type": "codeTransformApiNames", + "required": true + }, + { + "type": "codeTransformRunTimeLatency", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRequestId", + "required": false + }, + { + "type": "codeTransformJobId", + "required": false + }, + { + "type": "codeTransformUploadId", + "required": false + }, + { + "type": "codeTransformTotalByteSize", + "required": false + } + ] + }, + { + "name": "codeTransform_logGeneralError", + "passive": true, + "description": "A general logging measure for all client side API errors.", + "metadata": [ + { + "type": "codeTransformApiErrorMessage", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_logApiError", + "passive": true, + "description": "A general logging measure for all client side API errors.", + "metadata": [ + { + "type": "codeTransformApiErrorMessage", + "required": true + }, + { + "type": "codeTransformApiNames", + "required": true + }, + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformRequestId", + "required": false + }, + { + "type": "codeTransformJobId", + "required": false + } + ] + }, + { + "name": "codeTransform_dependenciesCopied", + "description": "It copies over at least 1 dependency", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + } + ] + }, + { + "name": "codeTransform_mvnBuildFailed", + "description": "The maven command build failed", + "metadata": [ + { + "type": "codeTransformSessionId", + "required": true + }, + { + "type": "codeTransformMavenBuildCommand", + "required": true + }, + { + "type": "reason", + "required": false + } + ] } ] -} +} \ No newline at end of file From e6197ca771c6c0b1d398f5fd6e03ebe5a7dec4ac Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 09:50:04 -0800 Subject: [PATCH 02/11] Chore - remove type codeTransformConfigurationFilePath --- telemetry/definitions/commonDefinitions.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index 9db3eb0d9..83e3713b4 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3578,10 +3578,6 @@ "type": "codeTransformJavaTargetVersionsAllowed", "required": true }, - { - "type": "codeTransformConfigurationFilePath", - "required": true - }, { "type": "codeTransformSessionId", "required": true @@ -3611,10 +3607,6 @@ "name": "codeTransform_configurationFileSelectedChanged", "description": "Fire a change event when users select a new configuration/module file from the dropdown.", "metadata": [ - { - "type": "codeTransformConfigurationFilePath", - "required": true - }, { "type": "codeTransformSessionId", "required": true From 66ae21fcfd5dca68aacc163237eb06f777f2fad6 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 10:03:20 -0800 Subject: [PATCH 03/11] Chore - update metric description definitions text --- telemetry/definitions/commonDefinitions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index 83e3713b4..f04ddc4f4 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3826,7 +3826,7 @@ }, { "name": "codeTransform_dependenciesCopied", - "description": "It copies over at least 1 dependency", + "description": "The repo copies over at least one dependency successfully.", "metadata": [ { "type": "codeTransformSessionId", @@ -3836,7 +3836,7 @@ }, { "name": "codeTransform_mvnBuildFailed", - "description": "The maven command build failed", + "description": "The maven command build failed.", "metadata": [ { "type": "codeTransformSessionId", From 088e482817f81f087a83942364fae3646dfaf85f Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 11:14:49 -0800 Subject: [PATCH 04/11] Chore - remove isVisibleToUser field --- telemetry/definitions/commonDefinitions.json | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index f04ddc4f4..b38b62e77 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3439,17 +3439,6 @@ { "type": "codecatalyst_devEnvironmentWorkflowError", "required": false } ] }, - { - "name": "codeTransform_isVisibleToUser", - "passive": true, - "description": "The code transform button will only be available to start transform when a Java module or build configuration is found in the repository.", - "metadata": [ - { - "type": "codeTransformSessionId", - "required": true - } - ] - }, { "name": "codeTransform_totalRunTime", "passive": true, From a16a54d8c9b21c15ea846171adda77cf2176e0f4 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 11:31:21 -0800 Subject: [PATCH 05/11] Chore - add newline character to file --- telemetry/definitions/commonDefinitions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index b38b62e77..f7751cd6a 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3842,4 +3842,4 @@ ] } ] -} \ No newline at end of file +} From c24e11a1e5338e6c99a50ecb73e3acc055f8f9bd Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 11:46:07 -0800 Subject: [PATCH 06/11] Chore - update description for total runtime --- telemetry/definitions/commonDefinitions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index f7751cd6a..752cdcdf8 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3442,7 +3442,7 @@ { "name": "codeTransform_totalRunTime", "passive": true, - "description": "The code transform button will only be available to start transform when a Java module or build configuration is found in the repository.", + "description": "We want to log the total run time in the users experience for the IDE. The total runtime should end when all API's have finished running and the users is prompted for next step actions.", "metadata": [ { "type": "codeTransformSessionId", From a43ecffdff2e48dda40e4d4af2a9d2650385168b Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 12:22:57 -0800 Subject: [PATCH 07/11] Chore - fix build isssue to replace allowedValues spaces with underscores --- .../DefinitionsBuilder.cs | 2 +- telemetry/vscode/src/generate.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs index 8f34c85cb..f956aeea6 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs @@ -210,7 +210,7 @@ private CodeTypeDeclaration GenerateEnumStruct(MetricType type) { // eg: public static readonly Runtime Dotnetcore21 = new Runtime("dotnetcore2.1") CodeMemberField field = new CodeMemberField($"readonly {type.GetGeneratedTypeName()}", - allowedValue.ToPascalCase().Replace(".", "").Replace("-", "")) + allowedValue.Replace(" ", "_").ToPascalCase().Replace(".", "").Replace("-", "")) { InitExpression = new CodeObjectCreateExpression(type.GetGeneratedTypeName(), new CodeExpression[] {new CodePrimitiveExpression(allowedValue)}), diff --git a/telemetry/vscode/src/generate.ts b/telemetry/vscode/src/generate.ts index 7e4242bd4..980bf2506 100644 --- a/telemetry/vscode/src/generate.ts +++ b/telemetry/vscode/src/generate.ts @@ -81,7 +81,10 @@ function getArgsFromMetadata(m: MetadataType): string { name, kind: StructureKind.TypeAlias, isExported: true, - type: m.allowedValues.map(v => `'${v}'`).join(' | '), + type: m.allowedValues.map(v => { + const modifiedVal = typeof v === "string" ? v.replace(/\s/g, "_") : v; + return `'${modifiedVal}'` + }).join(' | '), }) } From 76c203a55147f3a98be72e33ee820fcf44380986 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 5 Dec 2023 12:24:21 -0800 Subject: [PATCH 08/11] Chore - follow up with jetbrains underscore conversion --- .../aws/toolkits/telemetry/generator/TelemetryGenerator.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telemetry/jetbrains/src/main/kotlin/software/aws/toolkits/telemetry/generator/TelemetryGenerator.kt b/telemetry/jetbrains/src/main/kotlin/software/aws/toolkits/telemetry/generator/TelemetryGenerator.kt index 3d7a8bb70..ec3ab27d4 100644 --- a/telemetry/jetbrains/src/main/kotlin/software/aws/toolkits/telemetry/generator/TelemetryGenerator.kt +++ b/telemetry/jetbrains/src/main/kotlin/software/aws/toolkits/telemetry/generator/TelemetryGenerator.kt @@ -85,7 +85,7 @@ private fun FileSpec.Builder.generateTelemetryEnumType(item: TelemetryMetricType item.allowedValues!!.forEach { enumValue -> enum.addEnumConstant( - enumValue.toString().toTypeFormat(), TypeSpec.anonymousClassBuilder() + enumValue.toString().replace(Regex("\\s"), "_").toTypeFormat(), TypeSpec.anonymousClassBuilder() .addSuperclassConstructorParameter("%S", enumValue.toString()) .build() ) From ddd32ed544ae9c59b2c7b2f8b65a00ebc754c713 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 30 Jan 2024 14:16:24 -0800 Subject: [PATCH 09/11] Chore - maven build toolkit proposal --- telemetry/definitions/commonDefinitions.json | 24 +++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index 4cdf7d018..1e4bab208 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -1078,7 +1078,7 @@ ] }, { - "name": "codeTransformMavenBuildCommand", + "name": "codeTransformCommandExecutables", "type": "string", "description": "Type of maven command", "allowedValues": [ @@ -1086,6 +1086,16 @@ "mvnw", "IDEBundledMaven" ] + }, + { + "name": "codeTransformCommandNames", + "type": "string", + "description": "Type of maven, gradle and other command line arguments run in the IDE", + "allowedValues": [ + "MavenInstall", + "MavenCopy", + "JavaP" + ] } ], "metrics": [ @@ -3904,12 +3914,20 @@ "required": true }, { - "type": "codeTransformMavenBuildCommand", + "type": "codeTransformCommandExecutables", + "required": true + }, + { + "type": "codeTransformRuntimeError", "required": true }, { "type": "reason", - "required": false + "required": true + }, + { + "type": "result", + "required": true } ] } From 673d90cdb15c862ba2ce31c18c0ab5376bdeba3b Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Tue, 30 Jan 2024 14:42:33 -0800 Subject: [PATCH 10/11] Chore - Add invalid project updates as well --- telemetry/definitions/commonDefinitions.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index 1e4bab208..334b76486 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3566,6 +3566,14 @@ "type": "codeTransformSessionId", "required": true }, + { + "type": "codeTransformRuntimeError", + "required": true + }, + { + "type": "codeTransformCommandNames", + "required": true + }, { "type": "result", "required": true }, { "type": "reason", "required": true } ] From 39ffb9c38384b7840fbcca9aa7af36c53a384b10 Mon Sep 17 00:00:00 2001 From: Nick Ardecky Date: Thu, 1 Feb 2024 10:07:43 -0800 Subject: [PATCH 11/11] Chore - add prevalidation metric for projects called projectDetails --- telemetry/definitions/commonDefinitions.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/telemetry/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index 334b76486..9c6ee0766 100644 --- a/telemetry/definitions/commonDefinitions.json +++ b/telemetry/definitions/commonDefinitions.json @@ -3540,6 +3540,26 @@ } ] }, + { + "name": "codeTransform_projectDetails", + "description": "The code transform has requirements for a valid project and Amazon Q needs to log information about users project environment.", + "metadata": [ + { + "type": "codeTransformPreValidationError", + "required": false + }, + { + "type": "codeTransformRuntimeError", + "required": false + }, + { + "type": "codeTransformCommandNames", + "required": false + }, + { "type": "result", "required": false }, + { "type": "reason", "required": false } + ] + }, { "name": "codeTransform_isDoubleClickedToTriggerUserModal", "description": "The code transform button in the devtools to initiate the pre transform user modal window.",