(message: Message)
| 100 | const toolProgressLastSentTime = new Map<string, number>() |
| 101 | |
| 102 | export function* normalizeMessage(message: Message): Generator<SDKMessage> { |
| 103 | switch (message.type) { |
| 104 | case 'assistant': |
| 105 | for (const _ of normalizeMessages([message])) { |
| 106 | // Skip empty messages (e.g., "(no content)") that shouldn't be output to SDK |
| 107 | if (!isNotEmptyMessage(_)) { |
| 108 | continue |
| 109 | } |
| 110 | yield { |
| 111 | type: 'assistant', |
| 112 | message: _.message, |
| 113 | parent_tool_use_id: null, |
| 114 | session_id: getSessionId(), |
| 115 | uuid: _.uuid, |
| 116 | error: _.error, |
| 117 | } |
| 118 | } |
| 119 | return |
| 120 | case 'progress': |
| 121 | if ( |
| 122 | message.data.type === 'agent_progress' || |
| 123 | message.data.type === 'skill_progress' |
| 124 | ) { |
| 125 | for (const _ of normalizeMessages([message.data.message])) { |
| 126 | switch (_.type) { |
| 127 | case 'assistant': |
| 128 | // Skip empty messages (e.g., "(no content)") that shouldn't be output to SDK |
| 129 | if (!isNotEmptyMessage(_)) { |
| 130 | break |
| 131 | } |
| 132 | yield { |
| 133 | type: 'assistant', |
| 134 | message: _.message, |
| 135 | parent_tool_use_id: message.parentToolUseID, |
| 136 | session_id: getSessionId(), |
| 137 | uuid: _.uuid, |
| 138 | error: _.error, |
| 139 | } |
| 140 | break |
| 141 | case 'user': |
| 142 | yield { |
| 143 | type: 'user', |
| 144 | message: _.message, |
| 145 | parent_tool_use_id: message.parentToolUseID, |
| 146 | session_id: getSessionId(), |
| 147 | uuid: _.uuid, |
| 148 | timestamp: _.timestamp, |
| 149 | isSynthetic: _.isMeta || _.isVisibleInTranscriptOnly, |
| 150 | tool_use_result: _.mcpMeta |
| 151 | ? { content: _.toolUseResult, ..._.mcpMeta } |
| 152 | : _.toolUseResult, |
| 153 | } |
| 154 | break |
| 155 | } |
| 156 | } |
| 157 | } else if ( |
| 158 | message.data.type === 'bash_progress' || |
| 159 | message.data.type === 'powershell_progress' |
no test coverage detected