in packages/core/src/codewhisperer/commands/startTransformByQ.ts [686:765]
export async function postTransformationJob() {
updateJobHistory()
if (jobPlanProgress['uploadCode'] !== StepProgress.Succeeded) {
jobPlanProgress['uploadCode'] = StepProgress.Failed
}
if (jobPlanProgress['buildCode'] !== StepProgress.Succeeded) {
jobPlanProgress['buildCode'] = StepProgress.Failed
}
if (jobPlanProgress['generatePlan'] !== StepProgress.Succeeded) {
jobPlanProgress['generatePlan'] = StepProgress.Failed
}
if (jobPlanProgress['transformCode'] !== StepProgress.Succeeded) {
jobPlanProgress['transformCode'] = StepProgress.Failed
}
let chatMessage = transformByQState.getJobFailureErrorChatMessage()
const diffMessage = CodeWhispererConstants.diffMessage(transformByQState.getMultipleDiffs())
if (transformByQState.isSucceeded()) {
chatMessage = CodeWhispererConstants.jobCompletedChatMessage(diffMessage)
} else if (transformByQState.isPartiallySucceeded()) {
chatMessage = CodeWhispererConstants.jobPartiallyCompletedChatMessage(diffMessage)
}
transformByQState.getChatControllers()?.transformationFinished.fire({
message: chatMessage,
tabID: ChatSessionManager.Instance.getSession().tabID,
})
const durationInMs = calculateTotalLatency(CodeTransformTelemetryState.instance.getStartTime())
const resultStatusMessage = transformByQState.getStatus()
if (transformByQState.getTransformationType() !== TransformationType.SQL_CONVERSION) {
// the below is only applicable when user is doing a Java 8/11 language upgrade
const versionInfo = await getVersionData()
const mavenVersionInfoMessage = `${versionInfo[0]} (${transformByQState.getMavenName()})`
const javaVersionInfoMessage = `${versionInfo[1]} (${transformByQState.getMavenName()})`
telemetry.codeTransform_totalRunTime.emit({
buildSystemVersion: mavenVersionInfoMessage,
codeTransformSessionId: CodeTransformTelemetryState.instance.getSessionId(),
codeTransformJobId: transformByQState.getJobId(),
codeTransformResultStatusMessage: resultStatusMessage,
codeTransformRunTimeLatency: durationInMs,
codeTransformLocalJavaVersion: javaVersionInfoMessage,
result: resultStatusMessage === TransformByQStatus.Succeeded ? MetadataResult.Pass : MetadataResult.Fail,
reason: `${resultStatusMessage}-${chatMessage}`,
})
}
if (transformByQState.isSucceeded()) {
void vscode.window.showInformationMessage(CodeWhispererConstants.jobCompletedNotification(diffMessage), {
title: localizedText.ok,
})
} else if (transformByQState.isPartiallySucceeded()) {
void vscode.window
.showInformationMessage(
CodeWhispererConstants.jobPartiallyCompletedNotification(diffMessage),
CodeWhispererConstants.amazonQFeedbackText
)
.then((choice) => {
if (choice === CodeWhispererConstants.amazonQFeedbackText) {
void submitFeedback(
placeholder,
CodeWhispererConstants.amazonQFeedbackKey,
getFeedbackCommentData()
)
}
})
}
if (transformByQState.getPayloadFilePath() !== '') {
// delete original upload ZIP at very end of transformation
fs.rmSync(transformByQState.getPayloadFilePath(), { recursive: true, force: true })
}
// attempt download for user
// TODO: refactor as explained here https://github.com/aws/aws-toolkit-vscode/pull/6519/files#r1946873107
if (transformByQState.isSucceeded() || transformByQState.isPartiallySucceeded()) {
await vscode.commands.executeCommand('aws.amazonq.transformationHub.reviewChanges.startReview')
}
}