(contentParts)
| 237 | } |
| 238 | |
| 239 | function createComplexContentHTML(contentParts) { |
| 240 | let html = '<div class="message-content-full">'; |
| 241 | |
| 242 | contentParts.forEach((part) => { |
| 243 | if (part.type === "text") { |
| 244 | const lines = part.text.split("\n"); |
| 245 | if (lines.length <= 5) { |
| 246 | html += `<div class="message-text"><pre>${escapeHtml( |
| 247 | part.text, |
| 248 | )}</pre></div>`; |
| 249 | } else { |
| 250 | const preview = lines.slice(0, 5).join("\n"); |
| 251 | const moreLines = lines.length - 5; |
| 252 | html += ` |
| 253 | <div class="message-preview-short clickable-message" title="Click to expand (${moreLines} more lines)"> |
| 254 | <div class="message-text"><pre>${escapeHtml(preview)}</pre></div> |
| 255 | <div class="expand-indicator">▼ ${moreLines} more lines</div> |
| 256 | </div> |
| 257 | <div class="message-content-expanded" style="display: none;" title="Content expanded - click collapse button below to hide"> |
| 258 | <div class="message-text"><pre>${escapeHtml(part.text)}</pre></div> |
| 259 | <div class="collapse-indicator clickable-message" title="Click to collapse">▲ Click to collapse</div> |
| 260 | </div> |
| 261 | `; |
| 262 | } |
| 263 | } else { |
| 264 | html += `<div class="message-part"><strong>${ |
| 265 | part.type.charAt(0).toUpperCase() + part.type.slice(1) |
| 266 | }:</strong><pre>${JSON.stringify(part, null, 2)}</pre></div>`; |
| 267 | } |
| 268 | }); |
| 269 | |
| 270 | html += "</div>"; |
| 271 | return html; |
| 272 | } |
| 273 | |
| 274 | function createToolCallContentHTML(message) { |
| 275 | // Render a mini-swe-agent v2 tool-call assistant message: the reasoning text (if any) |
no test coverage detected