feat(agent-chat): live reload streamed artifact fences
An already-open artifact preview follows its own Markdown fence while the agent streams and finishes it. The source keeps stable row/block identity through nested Markdown and highlighter fallback; selecting an older version keeps it selected.
Leo: "the /side thing i heard somebody really liked in codex... and i think html/html artifacts and that kinda good viewing and good support for it would be cool" / "like the claude.ai artifacts but imagien you didnt need to only have it on claude.ai...".
This is B1 of the recovered artifact live-reload work from #26159. It includes only streamed fences and one bounded producer supplying row lookup, event revision and generation. Written-file live publications are B2, extending that same producer rather than adding another. No scroll/rail behavior or project artifact storage changes.
Opening may inspect the loaded history once. A streamed update resolves only the opened row and its source block. Fold-local revisions may reset on reconnect; event revisions and producer handoff prevent stale snapshots from freezing or rolling back the preview. Close, chat change and unmount dispose the live source; there is no new timer or animation loop.
Integration must retain #25208's pull-request activity/command and transcript-source metadata stamps alongside the artifact producer's publish. The prompt index and scroll anchor are unchanged.
Observed / Not run
- Recovered combined B source45aa passed23/23 focused hosted tests in40497592765; its script/file safety changes are being integrated from repaired A/D before this split is reviewed.
- Recovered Chromium captures40493008642 show live stream/finish in light/dark; final B1 focused red→green and independent exact-head Astra xhigh review are pending.
- Native compilation is not part of B1; its shared renderer is verified through hosted web checks and gallery interaction.
Agent session: agent session