hermes-agent/tests/hermes_state
Brooklyn Nicholson ec0c8d9c20 feat(state): sessions carry read/unread state
Adds a last_read_at watermark to the sessions table so surfaces (CLI,
TUI, desktop) can badge unread conversations. Read state derives from
the watermark vs latest activity, so new messages flip a conversation
back to unread with zero writes on the message path. NULL means never
tracked, so shipping the column doesn't badge pre-existing history.

set_session_read() stamps the whole compression lineage, matching the
archive/pin semantics; list_sessions_rich() rows carry a derived
`unread` key. DB layer only — no surface exposes it yet.
2026-08-04 12:32:27 -06:00
..
test_append_messages_batch.py refactor(state): fold simplify findings — reuse _insert_message_rows, share guards, chunk seeds 2026-08-03 20:43:38 +05:30
test_aux_usage_accounting.py
test_conversation_root.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_get_anchored_view.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_get_messages_around.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_resolve_resume_session_id.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_restore_alternation_repair.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_session_archiving.py
test_session_md_export.py test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s 2026-07-29 13:39:40 -07:00
test_session_read_state.py feat(state): sessions carry read/unread state 2026-08-04 12:32:27 -06:00