Skip to content

Commit 99f27eb

Browse files
committed
character counts for history and each message in history
fix
1 parent 168a865 commit 99f27eb

File tree

2 files changed

+50
-20
lines changed

2 files changed

+50
-20
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import { AdditionalContextPrompt } from '../../../amazonq/lsp/types'
4848
import { getUserPromptsDirectory, promptFileExtension } from '../../constants'
4949
import { isInDirectory } from '../../../shared/filesystemUtilities'
5050
import { CustomFormActionMessage } from '../../view/connector/connector'
51+
import { Database } from '../../../shared/db/chatDb/chatDb'
5152

5253
export function logSendTelemetryEventFailure(error: any) {
5354
let requestId: string | undefined
@@ -539,6 +540,11 @@ export class CWCTelemetryHelper {
539540

540541
const contextCounts = this.getAdditionalContextCounts(triggerPayload)
541542

543+
const chatHistoryDb = Database.getInstance()
544+
const historyMessages = chatHistoryDb.getMessages(tabID)
545+
const { total: chatHistoryCharacterCount, individualCounts: chatHistoryMessageCharacterCounts } =
546+
Database.getInstance().calculateDetailedCharacterCount(historyMessages)
547+
542548
const event: AmazonqAddMessage = {
543549
result: 'Succeeded',
544550
cwsprChatConversationId: this.getConversationId(message.tabID) ?? '',
@@ -595,8 +601,13 @@ export class CWCTelemetryHelper {
595601
cwsprChatWorkspaceContextLength: triggerPayload.contextLengths.workspaceContextLength,
596602
cwsprChatWorkspaceContextTruncatedLength: triggerPayload.contextLengths.truncatedWorkspaceContextLength,
597603
traceId,
604+
cwsprChatHistoryCharacterCount: chatHistoryCharacterCount,
605+
cwsprChatHistoryMessageCharacterCounts: chatHistoryMessageChåaracterCounts,
598606
}
599607

608+
// for testing: will removeå
609+
// const total2 = chatHistoryDb.calculateCharacterCount(historyMessages)
610+
600611
telemetry.amazonq_addMessage.emit(event)
601612
const language = this.isProgrammingLanguageSupported(triggerPayload.fileLanguage)
602613
? { languageName: triggerPayload.fileLanguage as string }

packages/core/src/shared/db/chatDb/chatDb.ts

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -416,34 +416,53 @@ export class Database {
416416
return messages
417417
}
418418

419+
// character counts for history and each message in history for telemetry purposes
420+
calculateDetailedCharacterCount(allMessages: Message[]): { total: number; individualCounts: number[] } {
421+
const individualCounts: number[] = []
422+
let total = 0
423+
424+
for (const message of allMessages) {
425+
const messageCount = this.calculateMessageCharacterCount(message)
426+
individualCounts.push(messageCount)
427+
total += messageCount
428+
}
429+
430+
this.logger.debug(`Current history characters: ${total}`)
431+
return { total, individualCounts }
432+
}
433+
419434
private calculateCharacterCount(allMessages: Message[]): number {
420435
let count = 0
421436
for (const message of allMessages) {
422-
// Count characters of all message text
423-
count += message.body.length
424-
425-
// Count characters in tool uses
426-
if (message.toolUses) {
427-
try {
428-
for (const toolUse of message.toolUses) {
429-
count += JSON.stringify(toolUse).length
430-
}
431-
} catch (e) {
432-
this.logger.error(`Error counting toolUses: ${String(e)}`)
437+
count += this.calculateMessageCharacterCount(message)
438+
}
439+
this.logger.debug(`Current history characters: ${count}`)
440+
return count
441+
}
442+
443+
private calculateMessageCharacterCount(message: Message): number {
444+
let count = message.body.length
445+
446+
// Count characters in tool uses
447+
if (message.toolUses) {
448+
try {
449+
for (const toolUse of message.toolUses) {
450+
count += JSON.stringify(toolUse).length
433451
}
452+
} catch (e) {
453+
this.logger.error(`Error counting toolUses: ${String(e)}`)
434454
}
435-
// Count characters in tool results
436-
if (message.userInputMessageContext?.toolResults) {
437-
try {
438-
for (const toolResul of message.userInputMessageContext.toolResults) {
439-
count += JSON.stringify(toolResul).length
440-
}
441-
} catch (e) {
442-
this.logger.error(`Error counting toolResults: ${String(e)}`)
455+
}
456+
// Count characters in tool results
457+
if (message.userInputMessageContext?.toolResults) {
458+
try {
459+
for (const toolResul of message.userInputMessageContext.toolResults) {
460+
count += JSON.stringify(toolResul).length
443461
}
462+
} catch (e) {
463+
this.logger.error(`Error counting toolResults: ${String(e)}`)
444464
}
445465
}
446-
this.logger.debug(`Current history characters: ${count}`)
447466
return count
448467
}
449468

0 commit comments

Comments
 (0)