(message: Message)
| 107 | } |
| 108 | |
| 109 | export function castAssistantMessage(message: Message): Message | null { |
| 110 | if (message.role !== 'assistant') { |
| 111 | return message |
| 112 | } |
| 113 | if (typeof message.content === 'string') { |
| 114 | return userMessage( |
| 115 | `<previous_assistant_message>${message.content}${closeXml('previous_assistant_message')}`, |
| 116 | ) |
| 117 | } |
| 118 | const content = buildArray( |
| 119 | message.content.map((m) => { |
| 120 | if (m.type === 'text') { |
| 121 | return { |
| 122 | ...m, |
| 123 | text: `<previous_assistant_message>${m.text}${closeXml('previous_assistant_message')}`, |
| 124 | } |
| 125 | } |
| 126 | return null |
| 127 | }), |
| 128 | ) |
| 129 | return content |
| 130 | ? { |
| 131 | role: 'user' as const, |
| 132 | content, |
| 133 | } |
| 134 | : null |
| 135 | } |
| 136 | |
| 137 | // Number of terminal command outputs to keep in full form before simplifying |
| 138 | const numTerminalCommandsToKeep = 5 |
no test coverage detected