{% comment %} Full-width, chronological agent trajectory timeline for one repetition. Context: rep (see infra.ui._rep_view). Renders only when rep.agentic_timeline is present; every row anchor is unique even for repeated span ids (suffixes -2, -3, …), and finding/judge jump links resolve through them. The "Focus" button toggles a wide mode that pushes the app chrome aside. {% endcomment %} {% if rep.agentic_timeline %}

Trajectory timeline

{% if rep.agentic_timeline.captured > rep.agentic_timeline.total %}{{ rep.agentic_timeline.total }} of {{ rep.agentic_timeline.captured }} captured spans (judge evidence subset){% else %}{{ rep.agentic_timeline.total }} step{{ rep.agentic_timeline.total|pluralize }}{% endif %}, in execution order · click a step for its arguments and result

    {% for s in rep.agentic_timeline.rows %}
  1. {{ s.icon }} {% if not forloop.last %}{% endif %}
    {{ s.label|default:s.kind|default:"STEP" }} {% if s.is_error %}error{% endif %} {% if s.user_input %}👤{% endif %} {% if s.llm_role == "reply" %}reply {% elif s.llm_role == "retrieval step" %}for retrieval {% elif s.llm_role == "tool call" %}tool call{% endif %} {{ s.name }} {% if s.is_redundant_rerun %} ↻ duplicate call {% endif %} {% if s.redundant_reason %}redundant{% endif %} {% if s.is_tool_decision and s.decision_detail %} {{ s.decision_detail }} {% elif s.arguments %}{{ s.arguments }} {% elif s.tool_name %}· {{ s.tool_name }}{% endif %} {% if s.duration_ms > 0 %}({{ s.duration_ms }} ms){% endif %} {% if s.offset_ms is not None %}{{ s.offset_ms }} ms{% endif %} {% if s.kb_chips %}
    📚 {{ s.kb_chips|length }} source{{ s.kb_chips|length|pluralize }} {% if s.kb_hosts %}· {{ s.kb_hosts|join:", " }}{% if s.kb_hosts_more %} +{{ s.kb_hosts_more }}{% endif %}{% endif %} {% for c in s.kb_chips %} {% if c.href %} {% if c.ext %}{{ c.ext }}{% endif %} {{ c.label }}{% if c.sublabel %} › {{ c.sublabel }}{% endif %} {% if c.seen_in %}↺{% endif %} {% if c.href %}{% else %}{% endif %} {% endfor %} {% if s.kb_hidden %}{% endif %}
    {% endif %}
    {% if s.content_blocks %} {% for label, value in s.content_blocks %}

    {{ label }}

    {{ value }}
    {% endfor %} {% else %}

    No content was captured for this step.

    {% endif %}
    Raw span JSON
    {{ s.raw_json }}
  2. {% endfor %}
{% endif %}