diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs index 8f34c85c..f956aeea 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/definitions/commonDefinitions.json b/telemetry/definitions/commonDefinitions.json index a946eeeb..752cdcdf 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,408 @@ { "type": "codecatalyst_devEnvironmentWorkflowStep"}, { "type": "codecatalyst_devEnvironmentWorkflowError", "required": false } ] + }, + { + "name": "codeTransform_totalRunTime", + "passive": true, + "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", + "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": "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": "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": "The repo copies over at least one dependency successfully.", + "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 + } + ] } ] } 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 3d7a8bb7..ec3ab27d 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() ) diff --git a/telemetry/vscode/src/generate.ts b/telemetry/vscode/src/generate.ts index 7e4242bd..980bf250 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(' | '), }) }