From 3cad439de73d10ccd136aa2bc84349c1624b02c4 Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:06:22 -0700 Subject: [PATCH] docs(sessions): describe the `timings` block in JSONL exports User-visible export shape changed with no docs hunk. One paragraph in the JSONL section: what the block holds (ids/roles/counts/durations, text-free), why complete is always false, available=false when no message carries a timestamp, and that import ignores it. --- website/docs/user-guide/sessions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/user-guide/sessions.md b/website/docs/user-guide/sessions.md index 5b8d70245c..32389d862b 100644 --- a/website/docs/user-guide/sessions.md +++ b/website/docs/user-guide/sessions.md @@ -376,6 +376,8 @@ hermes sessions export backup.jsonl --redact Exported files contain one JSON object per line with full session metadata and all messages. +Each record also carries a `timings` block derived from the message timestamps, so a reader of an export attached to a bug report can tell a single long model gap from many small tool round-trips without reconstructing it by hand. It holds only ids, roles, counts and durations — `wall_clock_ms`, `largest_gap_ms`, `role_counts`, `tool_calls_emitted` and per-message `intervals` — never prompt text, tool arguments or results, so it survives `--redact` unchanged. Hermes does not persist a model/tool stopwatch, so `complete` is always `false`; when a session has no timestamped messages, `available` is `false` and `unavailable_reason` says why. The block is rebuilt on every export and ignored (and not counted toward size limits) on import. + #### HTML `--format html` writes a single self-contained HTML file — no remote dependencies — with styled message bubbles, collapsible tool output, and (for multi-session exports) a sidebar to switch between sessions: