{% from "_macros.html" import icon %} {# The whole thread. Returned after a rewind or a compaction, either of which changes an arbitrary number of messages at once -- replacing the lot is simpler and less error-prone than working out which individual bubbles to remove. Also included by chat/index.html, so the conversation is described in exactly one place. Deliberately has no root element: it is swapped with innerHTML into #thread, and an outerHTML swap would take the container with it. #} {% if compacted %} {# Summarised turns are kept and still readable -- they have only stopped being sent. A compaction that summarised badly is then a bad turn rather than a lost conversation. #}
{{ icon("archive", "icon--sm") }} {{ compacted | length }} earlier messages, summarised {{ icon("chevron-down", "icon--sm reasoning__chevron") }}

These are no longer sent to the model; a summary of them goes instead. They are kept here so nothing is lost.

{% for message in compacted %} {% with body_html = bodies.get(message.id, "") %} {% include "chat/_message.html" %} {% endwith %} {% endfor %}
{% endif %} {% for message in messages %} {% with body_html = bodies.get(message.id, "") %} {% include "chat/_message.html" %} {% endwith %} {% endfor %}