Description
Read a selected stored session transcript and render it in the viewer, so a
stored session displays the same way a live one does. This turns the session
picked in the browse subtask into readable, richly rendered output.
Context
- Stored transcripts are JSONL: one JSON object per line, each a typed record
carrying at least type, timestamp, and sessionId (observed types
include non-visible bookkeeping records such as queue-operation). The exact
set of record types and their content fields is enumerated at implementation
against real transcripts.
- This stored shape is not the same as the live payloads the viewer
consumes today: the hooks POST {type:"user"...},
{type:"assistant_delta"...}, {type:"turn_end"} to /event. Rendering a
stored transcript therefore needs a mapping from stored JSONL records to the
render events the viewer already understands.
- The viewer's renderer registry is the markdown-it
fence rule (markdown,
math via KaTeX, PlantUML via the local PicoWeb bridge); stored content should
render through that same registry rather than a second rendering path.
Acceptance Criteria
- A selected stored session renders its user prompts and assistant messages in
transcript order.
- Renderable fenced blocks (markdown, math, PlantUML) render identically to the
live path, reusing the existing renderer registry.
- Record types with no user-visible output are skipped without breaking the
render.
- A long transcript loads and displays without hanging the viewer.
- Malformed or partially written lines are tolerated (skipped) rather than
aborting the whole render.
Description
Read a selected stored session transcript and render it in the viewer, so a
stored session displays the same way a live one does. This turns the session
picked in the browse subtask into readable, richly rendered output.
Context
carrying at least
type,timestamp, andsessionId(observed typesinclude non-visible bookkeeping records such as
queue-operation). The exactset of record types and their content fields is enumerated at implementation
against real transcripts.
consumes today: the hooks POST
{type:"user"...},{type:"assistant_delta"...},{type:"turn_end"}to/event. Rendering astored transcript therefore needs a mapping from stored JSONL records to the
render events the viewer already understands.
fencerule (markdown,math via KaTeX, PlantUML via the local PicoWeb bridge); stored content should
render through that same registry rather than a second rendering path.
Acceptance Criteria
transcript order.
live path, reusing the existing renderer registry.
render.
aborting the whole render.