(message: Message)
| 164 | } |
| 165 | |
| 166 | function convertToolMessage(message: Message): ModelMessageWithAuxiliaryData[] { |
| 167 | if (message.role === 'system') { |
| 168 | return [ |
| 169 | { |
| 170 | ...message, |
| 171 | content: message.content.map(({ text }) => text).join('\n\n'), |
| 172 | }, |
| 173 | ] |
| 174 | } |
| 175 | if (message.role === 'user') { |
| 176 | return [cloneDeep(message)] |
| 177 | } |
| 178 | if (message.role === 'assistant') { |
| 179 | if (typeof message.content === 'string') { |
| 180 | return [ |
| 181 | cloneDeep({ |
| 182 | ...message, |
| 183 | content: [{ type: 'text' as const, text: message.content }], |
| 184 | }), |
| 185 | ] |
| 186 | } |
| 187 | return message.content.map((c) => { |
| 188 | return assistantToCodebuffMessage({ |
| 189 | ...message, |
| 190 | content: c, |
| 191 | }) |
| 192 | }) |
| 193 | } |
| 194 | if (message.role === 'tool') { |
| 195 | return convertToolResultMessage(message) |
| 196 | } |
| 197 | message satisfies never |
| 198 | throw new Error( |
| 199 | `Invalid message role: ${(message as { role: unknown }).role}`, |
| 200 | ) |
| 201 | } |
| 202 | |
| 203 | function convertToolMessages( |
| 204 | messages: Message[], |
no test coverage detected