Skip to content

Commit 9cfda7d

Browse files
committed
Adding codeblockLanguage to InsertAtCursor and CopyToClipBoard events for UTG
1 parent d697f44 commit 9cfda7d

File tree

9 files changed

+60
-12
lines changed

9 files changed

+60
-12
lines changed

packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ export class Connector {
111111
eventId?: string,
112112
codeBlockIndex?: number,
113113
totalCodeBlocks?: number,
114-
userIntent?: string
114+
userIntent?: string,
115+
codeBlockLanguage?: string
115116
): void => {
116117
this.sendMessageToExtension({
117118
tabID: tabID,
@@ -125,6 +126,7 @@ export class Connector {
125126
codeBlockIndex,
126127
totalCodeBlocks,
127128
userIntent,
129+
codeBlockLanguage,
128130
})
129131
}
130132

@@ -137,7 +139,8 @@ export class Connector {
137139
eventId?: string,
138140
codeBlockIndex?: number,
139141
totalCodeBlocks?: number,
140-
userIntent?: string
142+
userIntent?: string,
143+
codeBlockLanguage?: string
141144
): void => {
142145
this.sendMessageToExtension({
143146
tabID: tabID,
@@ -151,6 +154,7 @@ export class Connector {
151154
codeBlockIndex,
152155
totalCodeBlocks,
153156
userIntent,
157+
codeBlockLanguage,
154158
})
155159
}
156160

@@ -295,6 +299,7 @@ export class Connector {
295299
canBeVoted: true,
296300
codeReference: messageData.codeReference,
297301
userIntent: messageData.userIntent,
302+
codeBlockLanguage: messageData.codeBlockLanguage,
298303
}
299304

300305
// If it is not there we will not set it
@@ -328,6 +333,7 @@ export class Connector {
328333
messageId: messageData.messageID,
329334
codeReference: messageData.codeReference,
330335
userIntent: messageData.userIntent,
336+
codeBlockLanguage: messageData.codeBlockLanguage,
331337
followUp:
332338
messageData.followUps !== undefined && messageData.followUps.length > 0
333339
? {

packages/core/src/amazonq/webview/ui/connector.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export interface ChatPayload {
4444
export interface CWCChatItem extends ChatItem {
4545
traceId?: string
4646
userIntent?: UserIntent
47+
codeBlockLanguage?: string
4748
}
4849

4950
export interface ConnectorProps {
@@ -232,7 +233,8 @@ export class Connector {
232233
eventId?: string,
233234
codeBlockIndex?: number,
234235
totalCodeBlocks?: number,
235-
userIntent?: string
236+
userIntent?: string,
237+
codeBlockLanguage?: string
236238
): void => {
237239
switch (this.tabsStorage.getTab(tabID)?.type) {
238240
case 'cwc':
@@ -245,7 +247,8 @@ export class Connector {
245247
eventId,
246248
codeBlockIndex,
247249
totalCodeBlocks,
248-
userIntent
250+
userIntent,
251+
codeBlockLanguage
249252
)
250253
break
251254
case 'featuredev':
@@ -263,7 +266,8 @@ export class Connector {
263266
eventId?: string,
264267
codeBlockIndex?: number,
265268
totalCodeBlocks?: number,
266-
userIntent?: string
269+
userIntent?: string,
270+
codeBlockLanguage?: string
267271
): void => {
268272
switch (this.tabsStorage.getTab(tabID)?.type) {
269273
case 'cwc':
@@ -276,7 +280,8 @@ export class Connector {
276280
eventId,
277281
codeBlockIndex,
278282
totalCodeBlocks,
279-
userIntent
283+
userIntent,
284+
codeBlockLanguage
280285
)
281286
break
282287
case 'featuredev':

packages/core/src/amazonq/webview/ui/main.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const createMynahUI = (ideApi: any, amazonQEnabled: boolean) => {
2323
// eslint-disable-next-line prefer-const
2424
let connector: Connector
2525
//Store the mapping between messageId and messageUserIntent for amazonq_interactWithMessage telemetry
26-
const messageUserIntentMap = new Map<string, string>()
26+
const messageUserIntentMap = new Map<string, string[]>()
2727

2828
window.addEventListener('error', (e) => {
2929
const { error, message } = e
@@ -213,8 +213,12 @@ export const createMynahUI = (ideApi: any, amazonQEnabled: boolean) => {
213213
? { type: ChatItemType.CODE_RESULT, fileList: item.fileList }
214214
: {}),
215215
})
216-
if (item.messageId !== undefined && item.userIntent !== undefined) {
217-
messageUserIntentMap.set(item.messageId, item.userIntent)
216+
if (
217+
item.messageId !== undefined &&
218+
item.userIntent !== undefined &&
219+
item.codeBlockLanguage !== undefined
220+
) {
221+
messageUserIntentMap.set(item.messageId, [item.userIntent, item.codeBlockLanguage])
218222
}
219223
ideApi.postMessage({
220224
command: 'update-chat-message-telemetry',
@@ -453,7 +457,8 @@ export const createMynahUI = (ideApi: any, amazonQEnabled: boolean) => {
453457
eventId,
454458
codeBlockIndex,
455459
totalCodeBlocks,
456-
messageUserIntentMap.get(messageId) ?? undefined
460+
messageUserIntentMap.get(messageId)?.[0] ?? undefined,
461+
messageUserIntentMap.get(messageId)?.[1] ?? undefined
457462
)
458463
},
459464
onCopyCodeToClipboard: (
@@ -475,7 +480,8 @@ export const createMynahUI = (ideApi: any, amazonQEnabled: boolean) => {
475480
eventId,
476481
codeBlockIndex,
477482
totalCodeBlocks,
478-
messageUserIntentMap.get(messageId) ?? undefined
483+
messageUserIntentMap.get(messageId)?.[0] ?? undefined,
484+
messageUserIntentMap.get(messageId)?.[1] ?? undefined
479485
)
480486
mynahUI.notify({
481487
type: NotificationType.SUCCESS,

packages/core/src/codewhispererChat/controllers/chat/messenger/messenger.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export class Messenger {
8787
triggerID,
8888
messageID: '',
8989
userIntent: undefined,
90+
codeBlockLanguage: undefined,
9091
},
9192
tabID
9293
)
@@ -131,6 +132,7 @@ export class Messenger {
131132
let codeReference: CodeReference[] = []
132133
let followUps: FollowUp[] = []
133134
let relatedSuggestions: Suggestion[] = []
135+
let codeBlockLanguage: string = 'plaintext'
134136

135137
if (response.generateAssistantResponseResponse === undefined) {
136138
throw new ToolkitError(
@@ -182,7 +184,7 @@ export class Messenger {
182184
chatEvent.assistantResponseEvent.content.length > 0
183185
) {
184186
message += chatEvent.assistantResponseEvent.content
185-
187+
codeBlockLanguage = this.extractCodeBlockLanguage(message)
186188
this.dispatcher.sendChatMessage(
187189
new ChatMessage(
188190
{
@@ -195,6 +197,7 @@ export class Messenger {
195197
triggerID,
196198
messageID,
197199
userIntent: triggerPayload.userIntent,
200+
codeBlockLanguage: codeBlockLanguage,
198201
},
199202
tabID
200203
)
@@ -272,6 +275,7 @@ export class Messenger {
272275
triggerID,
273276
messageID,
274277
userIntent: triggerPayload.userIntent,
278+
codeBlockLanguage: codeBlockLanguage,
275279
},
276280
tabID
277281
)
@@ -290,6 +294,7 @@ export class Messenger {
290294
triggerID,
291295
messageID,
292296
userIntent: triggerPayload.userIntent,
297+
codeBlockLanguage: undefined,
293298
},
294299
tabID
295300
)
@@ -307,6 +312,7 @@ export class Messenger {
307312
triggerID,
308313
messageID,
309314
userIntent: triggerPayload.userIntent,
315+
codeBlockLanguage: undefined,
310316
},
311317
tabID
312318
)
@@ -334,6 +340,12 @@ export class Messenger {
334340
})
335341
}
336342

343+
private extractCodeBlockLanguage(message: string): string {
344+
const firstLine = message.split('\n')[0]
345+
const match = firstLine.match(/^```(\w+)/)
346+
return match ? match[1] : 'plaintext'
347+
}
348+
337349
public sendErrorMessage(errorMessage: string | undefined, tabID: string, requestID: string | undefined) {
338350
this.showChatExceptionMessage(
339351
{
@@ -431,6 +443,7 @@ export class Messenger {
431443
triggerID,
432444
messageID: 'static_message_' + triggerID,
433445
userIntent: undefined,
446+
codeBlockLanguage: undefined,
434447
},
435448
tabID
436449
)

packages/core/src/codewhispererChat/controllers/chat/model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export interface InsertCodeAtCursorPosition {
4646
eventId: string
4747
codeBlockIndex: number
4848
totalCodeBlocks: number
49+
codeBlockLanguage: string
4950
}
5051

5152
export interface CopyCodeToClipboard {
@@ -59,6 +60,7 @@ export interface CopyCodeToClipboard {
5960
eventId: string
6061
codeBlockIndex: number
6162
totalCodeBlocks: number
63+
codeBlockLanguage: string
6264
}
6365

6466
export type ChatPromptCommandType =

packages/core/src/codewhispererChat/controllers/chat/telemetryHelper.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ export class CWCTelemetryHelper {
198198
cwsprChatCodeBlockIndex: message.codeBlockIndex,
199199
cwsprChatTotalCodeBlocks: message.totalCodeBlocks,
200200
cwsprChatHasProjectContext: this.responseWithProjectContext.get(message.messageId),
201+
cwsprChatCodeBlockLanaguge: message.codeBlockLanguage,
201202
}
202203
break
203204
case 'code_was_copied_to_clipboard':
@@ -215,6 +216,7 @@ export class CWCTelemetryHelper {
215216
cwsprChatCodeBlockIndex: message.codeBlockIndex,
216217
cwsprChatTotalCodeBlocks: message.totalCodeBlocks,
217218
cwsprChatHasProjectContext: this.responseWithProjectContext.get(message.messageId),
219+
cwsprChatCodeBlockLanaguge: message.codeBlockLanguage,
218220
}
219221
break
220222
case 'follow-up-was-clicked':

packages/core/src/codewhispererChat/view/connector/connector.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export interface ChatMessageProps {
142142
readonly triggerID: string
143143
readonly messageID: string
144144
readonly userIntent: string | undefined
145+
readonly codeBlockLanguage: string | undefined
145146
}
146147

147148
export class ChatMessage extends UiMessage {
@@ -155,6 +156,7 @@ export class ChatMessage extends UiMessage {
155156
readonly triggerID: string
156157
readonly messageID: string | undefined
157158
readonly userIntent: string | undefined
159+
readonly codeBlockLanguage: string | undefined
158160
override type = 'chatMessage'
159161

160162
constructor(props: ChatMessageProps, tabID: string) {
@@ -168,6 +170,7 @@ export class ChatMessage extends UiMessage {
168170
this.triggerID = props.triggerID
169171
this.messageID = props.messageID
170172
this.userIntent = props.userIntent
173+
this.codeBlockLanguage = props.codeBlockLanguage
171174
}
172175
}
173176

packages/core/src/codewhispererChat/view/messages/messageListener.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ export class UIMessageListener {
159159
eventId: msg.eventId,
160160
codeBlockIndex: msg.codeBlockIndex,
161161
totalCodeBlocks: msg.totalCodeBlocks,
162+
codeBlockLanguage: msg.codeBlockLanguage,
162163
})
163164
}
164165

@@ -174,6 +175,7 @@ export class UIMessageListener {
174175
eventId: msg.eventId,
175176
codeBlockIndex: msg.codeBlockIndex,
176177
totalCodeBlocks: msg.totalCodeBlocks,
178+
codeBlockLanguage: msg.codeBlockLanguage,
177179
})
178180
}
179181

packages/core/src/shared/telemetry/vscodeTelemetry.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@
7878
"type": "boolean",
7979
"description": "true if query has project level context, false otherwise."
8080
},
81+
{
82+
"name": "cwsprChatCodeBlockLanaguge",
83+
"type": "string",
84+
"description": "programming language generated by the Q chat"
85+
},
8186
{
8287
"name": "cwsprChatProjectContextQueryMs",
8388
"type": "int",
@@ -900,6 +905,10 @@
900905
{
901906
"type": "cwsprChatHasProjectContext",
902907
"required": false
908+
},
909+
{
910+
"type": "cwsprChatCodeBlockLanaguge",
911+
"required": false
903912
}
904913
]
905914
},

0 commit comments

Comments
 (0)