diff --git a/package-lock.json b/package-lock.json index d6b4fa0a059..c78d59f157f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vscode-nls-dev": "^4.0.4" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.305", + "@aws-toolkits/telemetry": "^1.0.307", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", @@ -4806,9 +4806,9 @@ } }, "node_modules/@aws-toolkits/telemetry": { - "version": "1.0.305", - "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.305.tgz", - "integrity": "sha512-6OEW2ke7vx3yAv7MYthUZ7RZfJMUMqH3rCH3MtL84WmkylVu9nF+/RrAM4S3uKyS/EBuGPp/vZIEFBLdHbZWYg==", + "version": "1.0.307", + "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.307.tgz", + "integrity": "sha512-YYpVM0AI2qTP2OgR3J7DFvj/WLiuFQVB7upZh1i45mflae3EWprTPs0wGV5M9wI3PTFRR4zWnxhfL5Du08p9DQ==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index c984acd9cd9..7d134193361 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "skippedTestReport": "ts-node ./scripts/skippedTestReport.ts ./packages/amazonq/test/e2e/" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.305", + "@aws-toolkits/telemetry": "^1.0.307", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", diff --git a/packages/amazonq/.changes/next-release/Bug Fix-b89574ec-9f50-4b4c-b548-30bfce5d0999.json b/packages/amazonq/.changes/next-release/Bug Fix-b89574ec-9f50-4b4c-b548-30bfce5d0999.json new file mode 100644 index 00000000000..db14e5a1922 --- /dev/null +++ b/packages/amazonq/.changes/next-release/Bug Fix-b89574ec-9f50-4b4c-b548-30bfce5d0999.json @@ -0,0 +1,4 @@ +{ + "type": "Bug Fix", + "description": "/review: Zip files are created with the wrong file path for file scans in multifolder workspaces." +} diff --git a/packages/core/src/amazonqTest/chat/controller/controller.ts b/packages/core/src/amazonqTest/chat/controller/controller.ts index 96309e8714b..bd7b10ae4fb 100644 --- a/packages/core/src/amazonqTest/chat/controller/controller.ts +++ b/packages/core/src/amazonqTest/chat/controller/controller.ts @@ -286,7 +286,7 @@ export class TestController { } TelemetryHelper.instance.sendTestGenerationToolkitEvent( session, - true, + session.isSupportedLanguage, true, isCancel ? 'Cancelled' : 'Failed', session.startTestGenerationRequestId, @@ -295,7 +295,15 @@ export class TestController { session.isCodeBlockSelected, session.artifactsUploadDuration, session.srcPayloadSize, - session.srcZipFileSize + session.srcZipFileSize, + session.charsOfCodeAccepted, + session.numberOfTestsGenerated, + session.linesOfCodeGenerated, + session.charsOfCodeGenerated, + session.numberOfTestsGenerated, + session.linesOfCodeGenerated, + undefined, + isCancel ? 'CANCELLED' : 'FAILED' ) if (session.stopIteration) { // Error from Science @@ -502,6 +510,7 @@ export class TestController { unsupportedMessage = `I'm sorry, but /test only supports Python and Java
I will still generate a suggestion below.` } this.messenger.sendMessage(unsupportedMessage, tabID, 'answer') + session.isSupportedLanguage = false await this.onCodeGeneration( session, userPrompt, @@ -529,6 +538,7 @@ export class TestController { ) } session.isCodeBlockSelected = selectionRange !== undefined + session.isSupportedLanguage = true /** * Zip the project @@ -792,7 +802,9 @@ export class TestController { session.linesOfCodeAccepted, session.charsOfCodeGenerated, session.numberOfTestsGenerated, - session.linesOfCodeGenerated + session.linesOfCodeGenerated, + undefined, + 'ACCEPTED' ) await this.endSession(message, FollowUpTypes.SkipBuildAndFinish) @@ -918,7 +930,9 @@ export class TestController { 0, session.charsOfCodeGenerated, session.numberOfTestsGenerated, - session.linesOfCodeGenerated + session.linesOfCodeGenerated, + undefined, + 'REJECTED' ) telemetry.ui_click.emit({ elementId: 'unitTestGeneration_rejectDiff' }) } diff --git a/packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts b/packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts index b89be5c7144..ac317864c5b 100644 --- a/packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts +++ b/packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts @@ -296,7 +296,8 @@ export class Messenger { undefined, undefined, undefined, - 'TestGenCancelled' + 'TestGenCancelled', + 'CANCELLED' ) this.dispatcher.sendUpdatePromptProgress( new UpdatePromptProgressMessage(tabID, cancellingProgressField) @@ -310,7 +311,19 @@ export class Messenger { 'Succeeded', messageId, performance.now() - session.testGenerationStartTime, - undefined + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + 'ACCEPTED' ) this.dispatcher.sendUpdatePromptProgress( new UpdatePromptProgressMessage(tabID, testGenCompletedField) diff --git a/packages/core/src/amazonqTest/chat/session/session.ts b/packages/core/src/amazonqTest/chat/session/session.ts index e6fb850a3fb..16809ad7cef 100644 --- a/packages/core/src/amazonqTest/chat/session/session.ts +++ b/packages/core/src/amazonqTest/chat/session/session.ts @@ -35,6 +35,7 @@ export class Session { public testGenerationJob: TestGenerationJob | undefined // Start Test generation + public isSupportedLanguage: boolean = false public conversationState: ConversationState = ConversationState.IDLE public shortAnswer: ShortAnswer | undefined public sourceFilePath: string = '' diff --git a/packages/core/src/codewhisperer/util/telemetryHelper.ts b/packages/core/src/codewhisperer/util/telemetryHelper.ts index 2612718f1ef..fd800bf06a9 100644 --- a/packages/core/src/codewhisperer/util/telemetryHelper.ts +++ b/packages/core/src/codewhisperer/util/telemetryHelper.ts @@ -13,6 +13,7 @@ import { CodewhispererPreviousSuggestionState, CodewhispererUserDecision, CodewhispererUserTriggerDecision, + Status, telemetry, } from '../../shared/telemetry/telemetry' import { CodewhispererCompletionType, CodewhispererSuggestionState } from '../../shared/telemetry/telemetry' @@ -85,12 +86,13 @@ export class TelemetryHelper { generatedCharactersCount?: number, generatedCount?: number, generatedLinesCount?: number, - reason?: string + reason?: string, + status?: Status ) { telemetry.amazonq_utgGenerateTests.emit({ cwsprChatProgrammingLanguage: session.fileLanguage ?? 'plaintext', hasUserPromptSupplied: session.hasUserPromptSupplied, - isSupportedLanguage: isSupportedLanguage, + isSupportedLanguage: session.isSupportedLanguage, isFileInWorkspace: isFileInWorkspace, result: result, artifactsUploadDuration: artifactsUploadDuration, @@ -110,6 +112,7 @@ export class TelemetryHelper { requestId: requestId, reasonDesc: reasonDesc, reason: reason, + status: status, }) } diff --git a/packages/core/src/codewhisperer/util/zipUtil.ts b/packages/core/src/codewhisperer/util/zipUtil.ts index 40ef6d48e84..7403fcb0862 100644 --- a/packages/core/src/codewhisperer/util/zipUtil.ts +++ b/packages/core/src/codewhisperer/util/zipUtil.ts @@ -117,7 +117,8 @@ export class ZipUtil { // Note: workspaceFolder.name is not the same as the file system folder name, // use the fsPath value instead const projectName = path.basename(workspaceFolder.uri.fsPath) - const relativePath = vscode.workspace.asRelativePath(uri) + // Set includeWorkspaceFolder to false because we are already manually prepending the projectName + const relativePath = vscode.workspace.asRelativePath(uri, false) const zipEntryPath = this.getZipEntryPath(projectName, relativePath) zip.addFile(zipEntryPath, Buffer.from(content, 'utf-8'))