( msg: AssistantMessage | NormalizedAssistantMessage, breakdown: MessageBreakdown, )
| 780 | } |
| 781 | |
| 782 | function processAssistantMessage( |
| 783 | msg: AssistantMessage | NormalizedAssistantMessage, |
| 784 | breakdown: MessageBreakdown, |
| 785 | ): void { |
| 786 | // Process each content block individually |
| 787 | for (const block of msg.message.content) { |
| 788 | const blockStr = jsonStringify(block) |
| 789 | const blockTokens = roughTokenCountEstimation(blockStr) |
| 790 | |
| 791 | if ('type' in block && block.type === 'tool_use') { |
| 792 | breakdown.toolCallTokens += blockTokens |
| 793 | const toolName = ('name' in block ? block.name : undefined) || 'unknown' |
| 794 | breakdown.toolCallsByType.set( |
| 795 | toolName, |
| 796 | (breakdown.toolCallsByType.get(toolName) || 0) + blockTokens, |
| 797 | ) |
| 798 | } else { |
| 799 | // Text blocks or other non-tool content |
| 800 | breakdown.assistantMessageTokens += blockTokens |
| 801 | } |
| 802 | } |
| 803 | } |
| 804 | |
| 805 | function processUserMessage( |
| 806 | msg: UserMessage | NormalizedUserMessage, |
no test coverage detected