(message: NormalizedMessage)
| 2763 | } |
| 2764 | |
| 2765 | export function getToolUseID(message: NormalizedMessage): string | null { |
| 2766 | switch (message.type) { |
| 2767 | case 'attachment': |
| 2768 | if (isHookAttachmentMessage(message)) { |
| 2769 | return message.attachment.toolUseID |
| 2770 | } |
| 2771 | return null |
| 2772 | case 'assistant': |
| 2773 | if (message.message.content[0]?.type !== 'tool_use') { |
| 2774 | return null |
| 2775 | } |
| 2776 | return message.message.content[0].id |
| 2777 | case 'user': |
| 2778 | if (message.sourceToolUseID) { |
| 2779 | return message.sourceToolUseID |
| 2780 | } |
| 2781 | |
| 2782 | if (message.message.content[0]?.type !== 'tool_result') { |
| 2783 | return null |
| 2784 | } |
| 2785 | return message.message.content[0].tool_use_id |
| 2786 | case 'progress': |
| 2787 | return message.toolUseID |
| 2788 | case 'system': |
| 2789 | return message.subtype === 'informational' |
| 2790 | ? (message.toolUseID ?? null) |
| 2791 | : null |
| 2792 | } |
| 2793 | } |
| 2794 | |
| 2795 | export function filterUnresolvedToolUses(messages: Message[]): Message[] { |
| 2796 | // Collect all tool_use IDs and tool_result IDs directly from message content blocks. |
no test coverage detected