From 7067cf7965eaa43206b352af7ab4b6dd20e79925 Mon Sep 17 00:00:00 2001 From: laileni Date: Fri, 19 Apr 2024 22:07:43 -0700 Subject: [PATCH] Adding params for Q chat metrics --- package-lock.json | 8 ++--- packages/core/package.json | 2 +- .../webview/ui/apps/cwChatConnector.ts | 16 ++++++++-- .../core/src/amazonq/webview/ui/connector.ts | 32 ++++++++++++++++--- packages/core/src/amazonq/webview/ui/main.ts | 22 +++++++++++-- .../controllers/chat/model.ts | 6 ++++ .../controllers/chat/telemetryHelper.ts | 4 +++ .../view/messages/messageListener.ts | 6 ++++ .../src/shared/telemetry/vscodeTelemetry.json | 18 +++++++++++ 9 files changed, 101 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff722d91a27..82232bc909e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3607,9 +3607,9 @@ } }, "node_modules/@aws/mynah-ui": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.5.5.tgz", - "integrity": "sha512-xvqr46XFfCWxcHsQURnDuHHs0GLJaCBanJpV22t9TBf/BNjzJN8aBM7AGYwXvZbykRKIGNpHnvQnKlMfVvr/aQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.6.1.tgz", + "integrity": "sha512-JdM8wC4auO98wq9F71cp53AQQDV6rYXI/1ZA5PRmhfkPqzQ5EM1qnt0fLvBr/VDueecsFC5UirBMtVOs0c10Yw==", "hasInstallScript": true, "dependencies": { "just-clone": "^6.2.0", @@ -19601,7 +19601,7 @@ "@aws-sdk/property-provider": "3.46.0", "@aws-sdk/smithy-client": "^3.46.0", "@aws-sdk/util-arn-parser": "^3.46.0", - "@aws/mynah-ui": "^4.5.5", + "@aws/mynah-ui": "^4.5.6", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "@iarna/toml": "^2.2.5", "@smithy/shared-ini-file-loader": "^2.2.8", diff --git a/packages/core/package.json b/packages/core/package.json index e3719715cd1..d5ff2c9c011 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4315,7 +4315,7 @@ "@aws-sdk/property-provider": "3.46.0", "@aws-sdk/smithy-client": "^3.46.0", "@aws-sdk/util-arn-parser": "^3.46.0", - "@aws/mynah-ui": "^4.5.5", + "@aws/mynah-ui": "^4.5.6", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "@iarna/toml": "^2.2.5", "@smithy/shared-ini-file-loader": "^2.2.8", diff --git a/packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts b/packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts index 392c476eb95..06549e3a9ee 100644 --- a/packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts +++ b/packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts @@ -92,7 +92,10 @@ export class Connector { messageId: string, code?: string, type?: 'selection' | 'block', - codeReference?: CodeReference[] + codeReference?: CodeReference[], + eventId?: string, + codeBlockIndex?: number, + totalCodeBlocks?: number ): void => { this.sendMessageToExtension({ tabID: tabID, @@ -102,6 +105,9 @@ export class Connector { tabType: 'cwc', insertionTargetType: type, codeReference, + eventId, + codeBlockIndex, + totalCodeBlocks, }) } @@ -110,7 +116,10 @@ export class Connector { messageId: string, code?: string, type?: 'selection' | 'block', - codeReference?: CodeReference[] + codeReference?: CodeReference[], + eventId?: string, + codeBlockIndex?: number, + totalCodeBlocks?: number ): void => { this.sendMessageToExtension({ tabID: tabID, @@ -120,6 +129,9 @@ export class Connector { tabType: 'cwc', insertionTargetType: type, codeReference, + eventId, + codeBlockIndex, + totalCodeBlocks, }) } diff --git a/packages/core/src/amazonq/webview/ui/connector.ts b/packages/core/src/amazonq/webview/ui/connector.ts index 91631186c1c..fc4c65662e1 100644 --- a/packages/core/src/amazonq/webview/ui/connector.ts +++ b/packages/core/src/amazonq/webview/ui/connector.ts @@ -206,11 +206,23 @@ export class Connector { messageId: string, code?: string, type?: 'selection' | 'block', - codeReference?: CodeReference[] + codeReference?: CodeReference[], + eventId?: string, + codeBlockIndex?: number, + totalCodeBlocks?: number ): void => { switch (this.tabsStorage.getTab(tabID)?.type) { case 'cwc': - this.cwChatConnector.onCodeInsertToCursorPosition(tabID, messageId, code, type, codeReference) + this.cwChatConnector.onCodeInsertToCursorPosition( + tabID, + messageId, + code, + type, + codeReference, + eventId, + codeBlockIndex, + totalCodeBlocks + ) break case 'featuredev': this.featureDevChatConnector.onCodeInsertToCursorPosition(tabID, code, type, codeReference) @@ -223,11 +235,23 @@ export class Connector { messageId: string, code?: string, type?: 'selection' | 'block', - codeReference?: CodeReference[] + codeReference?: CodeReference[], + eventId?: string, + codeBlockIndex?: number, + totalCodeBlocks?: number ): void => { switch (this.tabsStorage.getTab(tabID)?.type) { case 'cwc': - this.cwChatConnector.onCopyCodeToClipboard(tabID, messageId, code, type, codeReference) + this.cwChatConnector.onCopyCodeToClipboard( + tabID, + messageId, + code, + type, + codeReference, + eventId, + codeBlockIndex, + totalCodeBlocks + ) break case 'featuredev': this.featureDevChatConnector.onCopyCodeToClipboard(tabID, code, type, codeReference) diff --git a/packages/core/src/amazonq/webview/ui/main.ts b/packages/core/src/amazonq/webview/ui/main.ts index 493f3f35573..d02a7a88658 100644 --- a/packages/core/src/amazonq/webview/ui/main.ts +++ b/packages/core/src/amazonq/webview/ui/main.ts @@ -367,8 +367,26 @@ export const createMynahUI = (ideApi: any, amazonQEnabled: boolean) => { }) }, onCodeInsertToCursorPosition: connector.onCodeInsertToCursorPosition, - onCopyCodeToClipboard: (tabId, messageId, code, type, referenceTrackerInfo) => { - connector.onCopyCodeToClipboard(tabId, messageId, code, type, referenceTrackerInfo) + onCopyCodeToClipboard: ( + tabId, + messageId, + code, + type, + referenceTrackerInfo, + eventId, + codeBlockIndex, + totalCodeBlocks + ) => { + connector.onCopyCodeToClipboard( + tabId, + messageId, + code, + type, + referenceTrackerInfo, + eventId, + codeBlockIndex, + totalCodeBlocks + ) mynahUI.notify({ type: NotificationType.SUCCESS, content: 'Selected code is copied to clipboard', diff --git a/packages/core/src/codewhispererChat/controllers/chat/model.ts b/packages/core/src/codewhispererChat/controllers/chat/model.ts index 7746419de6a..1bbe81cde99 100644 --- a/packages/core/src/codewhispererChat/controllers/chat/model.ts +++ b/packages/core/src/codewhispererChat/controllers/chat/model.ts @@ -41,6 +41,9 @@ export interface InsertCodeAtCursorPosition { code: string insertionTargetType: string | undefined codeReference: CodeReference[] | undefined + eventId: string + codeBlockIndex: number + totalCodeBlocks: number } export interface CopyCodeToClipboard { @@ -50,6 +53,9 @@ export interface CopyCodeToClipboard { code: string insertionTargetType: string | undefined codeReference: CodeReference[] | undefined + eventId: string + codeBlockIndex: number + totalCodeBlocks: number } export type ChatPromptCommandType = diff --git a/packages/core/src/codewhispererChat/controllers/chat/telemetryHelper.ts b/packages/core/src/codewhispererChat/controllers/chat/telemetryHelper.ts index 7e4d13fcbd1..740d8b7569e 100644 --- a/packages/core/src/codewhispererChat/controllers/chat/telemetryHelper.ts +++ b/packages/core/src/codewhispererChat/controllers/chat/telemetryHelper.ts @@ -160,6 +160,8 @@ export class CWCTelemetryHelper { cwsprChatAcceptedCharactersLength: message.code.length, cwsprChatInteractionTarget: message.insertionTargetType, cwsprChatHasReference: message.codeReference && message.codeReference.length > 0, + cwsprChatCodeBlockIndex: message.codeBlockIndex, + cwsprChatTotalCodeBlocks: message.totalCodeBlocks, } break case 'code_was_copied_to_clipboard': @@ -173,6 +175,8 @@ export class CWCTelemetryHelper { cwsprChatAcceptedCharactersLength: message.code.length, cwsprChatInteractionTarget: message.insertionTargetType, cwsprChatHasReference: message.codeReference && message.codeReference.length > 0, + cwsprChatCodeBlockIndex: message.codeBlockIndex, + cwsprChatTotalCodeBlocks: message.totalCodeBlocks, } break case 'follow-up-was-clicked': diff --git a/packages/core/src/codewhispererChat/view/messages/messageListener.ts b/packages/core/src/codewhispererChat/view/messages/messageListener.ts index 70ec0389372..eec20af2090 100644 --- a/packages/core/src/codewhispererChat/view/messages/messageListener.ts +++ b/packages/core/src/codewhispererChat/view/messages/messageListener.ts @@ -157,6 +157,9 @@ export class UIMessageListener { code: msg.code, insertionTargetType: msg.insertionTargetType, codeReference: msg.codeReference, + eventId: msg.eventId, + codeBlockIndex: msg.codeBlockIndex, + totalCodeBlocks: msg.totalCodeBlocks, }) } @@ -168,6 +171,9 @@ export class UIMessageListener { code: msg.code, insertionTargetType: msg.insertionTargetType, codeReference: msg.codeReference, + eventId: msg.eventId, + codeBlockIndex: msg.codeBlockIndex, + totalCodeBlocks: msg.totalCodeBlocks, }) } diff --git a/packages/core/src/shared/telemetry/vscodeTelemetry.json b/packages/core/src/shared/telemetry/vscodeTelemetry.json index a68aef704eb..d209c6f5bb1 100644 --- a/packages/core/src/shared/telemetry/vscodeTelemetry.json +++ b/packages/core/src/shared/telemetry/vscodeTelemetry.json @@ -256,6 +256,16 @@ "type": "string", "description": "Identifies the entity within the message that user interacts with." }, + { + "name": "cwsprChatCodeBlockIndex", + "type": "int", + "description": "Index of the code block inside a message in the conversation." + }, + { + "name": "cwsprChatTotalCodeBlocks", + "type": "int", + "description": "Total number of code blocks inside a message in the conversation." + }, { "name": "cwsprChatAcceptedCharactersLength", "type": "int", @@ -823,6 +833,14 @@ { "type": "cwsprChatHasReference", "required": false + }, + { + "type": "cwsprChatCodeBlockIndex", + "required": false + }, + { + "type": "cwsprChatTotalCodeBlocks", + "required": false } ] },