Background
The current dashboard can show memory records, but it cannot accurately replay a coding-agent session. A precise timeline needs structured event records rather than reconstructing history from the current memory snapshot.
Depends on #1039 for structured observation ingest. A later persistent memory_events store can improve precision beyond snapshot-based views.
Proposed design
Add session/timeline API surfaces:
GET /api/v1/memories/sessions with filters for user_id, agent_id, run_id, time range, pagination, and sorting.
GET /api/v1/memories/session-stats for overview cards and charts.
GET /api/v1/memories/timeline with run_id, event_type, q, cursor pagination, order, and include_source=false.
- Return a
precision or capabilities field, e.g. event_log vs memory_snapshot, so the UI does not imply exact replay when only snapshots are available.
- Add
run_id filtering to the existing memory list path where supported by the service/storage layer.
Recommended future event model:
event_id, occurred_at, run_id, user_id, agent_id, actor_id,
memory_id, event_type, pipeline_mode, content_before,
content_after, content_preview, metadata, source_id,
facts_count, candidate_count, reason_status
Dashboard design
Add a Sessions/Timeline section under dashboard/src:
- Session summary cards: sessions, events, changed memories, no-op rate.
- Session table: run ID, user/agent, first/last seen, event count, memory count, latest preview.
- Timeline rail: SOURCE -> ADD/UPDATE/DELETE/NONE and hook/observation events.
- Event detail sheet: content preview, before/after diff, metadata JSON, source preview, linked memory.
- Precision banner when the backend reports snapshot mode.
No-LLM behavior
Show pipeline_mode=simple or raw observation events. Do not show fact extraction/profile/graph details unless the event data actually contains them.
Full LLM behavior
Show richer extraction results when present: SOURCE, facts, candidate memories, ADD/UPDATE/DELETE/NONE distribution, before/after diffs, and event-level inference mode. Do not infer event mode only from global server status.
Acceptance criteria
- Session list and timeline APIs support pagination and filters.
- Timeline uses cursor/keyset pagination for event streams.
- API route order does not conflict with
/memories/{memory_id}.
- Dashboard handles empty data, snapshot precision, and event-log precision.
- Large source content is previewed by default and loaded on demand.
Tests
- Backend tests for sessions, stats, timeline, route order, run ID filtering, empty data, and precision modes.
- Frontend tests for API normalization, empty states, filters, pagination, and detail sheet.
- Dashboard regression/Playwright tests for navigation, rendering, filtering, and performance thresholds.
Background
The current dashboard can show memory records, but it cannot accurately replay a coding-agent session. A precise timeline needs structured event records rather than reconstructing history from the current memory snapshot.
Depends on #1039 for structured observation ingest. A later persistent
memory_eventsstore can improve precision beyond snapshot-based views.Proposed design
Add session/timeline API surfaces:
GET /api/v1/memories/sessionswith filters foruser_id,agent_id,run_id, time range, pagination, and sorting.GET /api/v1/memories/session-statsfor overview cards and charts.GET /api/v1/memories/timelinewithrun_id,event_type,q, cursor pagination, order, andinclude_source=false.precisionorcapabilitiesfield, e.g.event_logvsmemory_snapshot, so the UI does not imply exact replay when only snapshots are available.run_idfiltering to the existing memory list path where supported by the service/storage layer.Recommended future event model:
Dashboard design
Add a Sessions/Timeline section under
dashboard/src:No-LLM behavior
Show
pipeline_mode=simpleor raw observation events. Do not show fact extraction/profile/graph details unless the event data actually contains them.Full LLM behavior
Show richer extraction results when present: SOURCE, facts, candidate memories, ADD/UPDATE/DELETE/NONE distribution, before/after diffs, and event-level inference mode. Do not infer event mode only from global server status.
Acceptance criteria
/memories/{memory_id}.Tests