{% extends "dashboard/base.html" %} {% from "partials/_macros.html" import pill, relative_time, empty_state, info_toggle %} {% from "partials/_list_chrome.html" import list_controls, list_pagination %} {% block page %} {% call info_toggle(key='events', title="What is the event log?") %}

Every session start/end, every decision filed or resolved, every handoff, every route decision, every tool verification, and every task transition writes a row here. The event log is the source of truth for "what happened" — Overview's 24-hour rollup is computed from these rows.

Filter by kind (e.g. decision_filed, handoff_picked_up) or search by message/session to scope down. Newest first.

{% endcall %} {% set kind_opts = [('', 'All kinds')] %} {% for k in kind_options %}{% set _ = kind_opts.append((k, k)) %}{% endfor %} {{ list_controls( '/dashboard/events', search_value=search_value, search_placeholder='Search message / kind / session…', filters=[ {'name': 'kind', 'label': 'Kind', 'value': kind_filter, 'options': kind_opts}, ], per_page=per_page, ) }}
{% if events %} {% for e in events %} {% endfor %}
TimeKindMessageSession
{{ relative_time(e.created_at) }} {{ pill(e.kind, tone='accent') }} {{ e.message }} {{ e.session_id or '' }}
{% else %} {{ empty_state( 'No events match the current filter', body='Events appear here as sessions interact with brains.', icon_name='activity' ) }} {% endif %}
{{ list_pagination( '/dashboard/events', page=page, per_page=per_page, total=total, search_value=search_value, filters=[{'name': 'kind', 'value': kind_filter}], shown=events|length, ) }} {% endblock %}