{% extends "base.html" %} {% from "_session.html" import event_row, more_control, tail_element, live_element, session_head, grafana_links, blocks_region, agents_region, older_list %} {% block title %}{% if not error and head.project %}{{ head.project }}{% else %}Session{% endif %} - cc-observatory{% endblock %} {% block content %} {% if error %}

Session

{% include "_error.html" %} {% else %} {{ live_element(live) }} {{ session_head(head) }} {{ grafana_links(grafana) }}
{{ blocks_region(blocks) }} {{ older_list("closed-blocks-older", "blocks") }} {{ more_control("blocks-more", blocks_more, "#closed-blocks-older", "Show older blocks") }}
{#- From Prometheus, on load and every minute (ui.py, "Tokens and cost"): not live. -#}

Tokens and cost

Loading tokens and cost…

From Claude Code's metrics in Prometheus, which can lag up to a minute behind the session.

{{ agents_region(agents) }} {{ older_list("agents-older", "agents") }} {{ more_control("agents-more", agents_more, "#agents-older", "Show older agents") }}

Hook timeline

Newest first. Metadata only: no prompts, tool inputs or outputs.

{{ tail_element(tail) }}
    {% for e in events %} {{ event_row(e) }} {% endfor %}
{% if not events %}

No hook events stored for this session yet.

{% endif %} {{ more_control("events-more", events_more, "#timeline", "Show older events") }}
{% endif %} {% endblock %}