{% extends "base.html" %} {% import "_links.html" as links with context %} {% block title %}Chains — Cairn Dashboard{% endblock %} {% block content %}

Session chains

Tool calls grouped per session, in call order; a new chain starts after {{ gap_minutes }} minutes of inactivity.

{% if chains_truncated %}

showing {{ chains | length }} of {{ total_chains }} chains

{% endif %} {% include "window_control.html" %} {% if chains %}
{% for chain in chains %}
{{ chain.session_id }} {{ chain.call_count }} call{{ "s" if chain.call_count != 1 }} · {{ chain.started_at | epoch }}{% if chain.call_count > 1 %} → {{ chain.ended_at | epoch }} · span {{ (chain.ended_at - chain.started_at) | span }}{% endif %}
    {% for c in chain.calls %}
  1. {{ c.tool_name }} {{ c.status }} {{ c.invoked_at | offset(chain.started_at) }} · {{ c.duration_ms | duration }}
  2. {% endfor %}
{% if chain.truncated_calls %} {#- FR-003: the expand anchor keeps the window AND the selected store (links.url); empty selection keeps the bare href. -#} {% set q = {'expand': chain.session_id} %} {%- if window != "all" %}{% set _ = q.update({'window': window}) %}{% endif %}

showing {{ chain.shown_calls }} of {{ chain.call_count }} calls · expand

{% endif %}
{% endfor %}
{% else %}

No tool calls recorded yet.

{% endif %}
{% endblock %} {% block scripts %}{% endblock %}