| 445 | * Includes only user and assistant messages. |
| 446 | */ |
| 447 | const convertToAdMessages = (messages: Message[]): AdMessage[] => { |
| 448 | const adMessages: AdMessage[] = messages |
| 449 | .filter( |
| 450 | (message) => message.role === 'assistant' || message.role === 'user', |
| 451 | ) |
| 452 | .filter( |
| 453 | (message) => |
| 454 | !message.tags || !message.tags.includes('INSTRUCTIONS_PROMPT'), |
| 455 | ) |
| 456 | .map((message) => ({ |
| 457 | role: message.role, |
| 458 | content: message.content |
| 459 | .filter((c) => c.type === 'text') |
| 460 | .map((c) => c.text.trim()) |
| 461 | .filter((c) => c !== '') |
| 462 | .join('\n\n') |
| 463 | .trim(), |
| 464 | })) |
| 465 | .filter((message) => message.content !== '') |
| 466 | |
| 467 | return adMessages |
| 468 | } |
| 469 | |
| 470 | /** Device info sent to the ads API for targeting */ |
| 471 | type DeviceInfo = { |