{# Template for rendering a single message in static mode #} {% set message_role_upper = message.role[0]|upper + message.role[1:] if message.role else 'Unknown' %}
{{ message_role_upper }} #{{ loop.index }}
{% if message.content is string %} {# Simple string content #} {% set line_count = message.content.count('\n') + 1 %} {% if line_count <= 5 %} {# Short message: show in full #}
{{ message.content }}
{% else %} {# Long message: show preview with expand #} {% set lines_list = message.content.split('\n') %} {% set preview_lines = lines_list[:5] %} {% set preview = preview_lines | join('\n') %} {% set more_lines = line_count - 5 %}
{{ preview }}
▼ {{ more_lines }} more lines
{% endif %} {% elif message.content is iterable and message.content is not string %} {# Complex content (e.g., user messages with multiple parts) #}
{% for part in message.content %} {% if part.type == 'text' %} {% set part_line_count = part.text.count('\n') + 1 %} {% if part_line_count <= 5 %}
{{ part.text }}
{% else %} {% set part_lines_list = part.text.split('\n') %} {% set part_preview_lines = part_lines_list[:5] %} {% set part_preview = part_preview_lines | join('\n') %} {% set part_more_lines = part_line_count - 5 %}
{{ part_preview }}
▼ {{ part_more_lines }} more lines
{% endif %} {% else %}
{{ part.type[0]|upper + part.type[1:] }}:
{{ part | tojson(indent=2) }}
{% endif %} {% endfor %}
{% else %} {# Fallback for other content types #}
{{ message.content | tojson(indent=2) }}
{% endif %}