Skip to content

[Feature]: Add session timeline APIs and dashboard views for coding-agent memory #1048

@wayyoungboy

Description

@wayyoungboy

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions