in server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts [498:541]
private calculateHistoryCharacterCount(allMessages: Message[]): number {
let count = 0
for (const message of allMessages) {
// Count characters of all message text
count += message.body.length
// Count characters in tool uses
if (message.toolUses) {
try {
for (const toolUse of message.toolUses) {
count += JSON.stringify(toolUse).length
}
} catch (e) {
this.#features.logging.error(`Error counting toolUses: ${String(e)}`)
}
}
// Count characters in tool results
if (message.userInputMessageContext?.toolResults) {
try {
for (const toolResul of message.userInputMessageContext.toolResults) {
count += JSON.stringify(toolResul).length
}
} catch (e) {
this.#features.logging.error(`Error counting toolResults: ${String(e)}`)
}
}
if (message.userInputMessageContext?.editorState) {
try {
count += JSON.stringify(message.userInputMessageContext?.editorState).length
} catch (e) {
this.#features.logging.error(`Error counting editorState: ${String(e)}`)
}
}
if (message.userInputMessageContext?.additionalContext) {
try {
count += JSON.stringify(message.userInputMessageContext?.additionalContext).length
} catch (e) {
this.#features.logging.error(`Error counting additionalContext: ${String(e)}`)
}
}
}
return count
}