(message: NormalizedMessage)
| 2788 | } |
| 2789 | |
| 2790 | export function getToolUseID(message: NormalizedMessage): string | null { |
| 2791 | switch (message.type) { |
| 2792 | case 'attachment': |
| 2793 | if (isHookAttachmentMessage(message)) { |
| 2794 | return message.attachment.toolUseID |
| 2795 | } |
| 2796 | return null |
| 2797 | case 'assistant': |
| 2798 | if (message.message.content[0]?.type !== 'tool_use') { |
| 2799 | return null |
| 2800 | } |
| 2801 | return message.message.content[0].id |
| 2802 | case 'user': |
| 2803 | if (message.sourceToolUseID) { |
| 2804 | return message.sourceToolUseID |
| 2805 | } |
| 2806 | |
| 2807 | if (message.message.content[0]?.type !== 'tool_result') { |
| 2808 | return null |
| 2809 | } |
| 2810 | return message.message.content[0].tool_use_id |
| 2811 | case 'progress': |
| 2812 | return message.toolUseID |
| 2813 | case 'system': |
| 2814 | return message.subtype === 'informational' |
| 2815 | ? (message.toolUseID ?? null) |
| 2816 | : null |
| 2817 | } |
| 2818 | } |
| 2819 | |
| 2820 | export function filterUnresolvedToolUses(messages: Message[]): Message[] { |
| 2821 | // Collect all tool_use IDs and tool_result IDs directly from message content blocks. |
no test coverage detected