(message: Message)
| 765 | }; |
| 766 | } |
| 767 | export function selectableUserMessagesFilter(message: Message): message is UserMessage { |
| 768 | if (message.type !== 'user') { |
| 769 | return false; |
| 770 | } |
| 771 | if (Array.isArray(message.message.content) && message.message.content[0]?.type === 'tool_result') { |
| 772 | return false; |
| 773 | } |
| 774 | if (isSyntheticMessage(message)) { |
| 775 | return false; |
| 776 | } |
| 777 | if (message.isMeta) { |
| 778 | return false; |
| 779 | } |
| 780 | if (message.isCompactSummary || message.isVisibleInTranscriptOnly) { |
| 781 | return false; |
| 782 | } |
| 783 | const content = message.message.content; |
| 784 | const lastBlock = typeof content === 'string' ? null : content[content.length - 1]; |
| 785 | const messageText = typeof content === 'string' ? content.trim() : lastBlock && isTextBlock(lastBlock) ? lastBlock.text.trim() : ''; |
| 786 | |
| 787 | // Filter out non-user-authored messages (command outputs, task notifications, ticks). |
| 788 | if (messageText.indexOf(`<${LOCAL_COMMAND_STDOUT_TAG}>`) !== -1 || messageText.indexOf(`<${LOCAL_COMMAND_STDERR_TAG}>`) !== -1 || messageText.indexOf(`<${BASH_STDOUT_TAG}>`) !== -1 || messageText.indexOf(`<${BASH_STDERR_TAG}>`) !== -1 || messageText.indexOf(`<${TASK_NOTIFICATION_TAG}>`) !== -1 || messageText.indexOf(`<${TICK_TAG}>`) !== -1 || messageText.indexOf(`<${TEAMMATE_MESSAGE_TAG}`) !== -1) { |
| 789 | return false; |
| 790 | } |
| 791 | return true; |
| 792 | } |
| 793 | |
| 794 | /** |
| 795 | * Checks if all messages after the given index are synthetic (interruptions, cancels, etc.) |
no test coverage detected