( uiMessage: UIMessage, )
| 154 | * @returns An array of ModelMessages preserving part ordering |
| 155 | */ |
| 156 | export function uiMessageToModelMessages( |
| 157 | uiMessage: UIMessage, |
| 158 | ): Array<ModelMessage> { |
| 159 | // Skip system messages - they're handled via systemPrompts, not ModelMessages |
| 160 | if (uiMessage.role === 'system') { |
| 161 | return [] |
| 162 | } |
| 163 | |
| 164 | // For non-assistant messages (user), use the simpler path since they |
| 165 | // don't have tool calls or tool results to interleave |
| 166 | if (uiMessage.role !== 'assistant') { |
| 167 | return [buildUserOrToolMessage(uiMessage)] |
| 168 | } |
| 169 | |
| 170 | // For assistant messages, walk parts in order to preserve interleaving |
| 171 | return buildAssistantMessages(uiMessage) |
| 172 | } |
| 173 | |
| 174 | /** |
| 175 | * Build a single ModelMessage for user messages (simple path). |
no test coverage detected