refactor(review): consolidate one-row-per-agent collapse + drill-in polish
Commit

Pre-merge cleanup of the agent-row collapse, which had accreted across three commits as scattered TUISink fields/methods. Same behavior, one owner, plus the two facets found by reading rather than design.
(c) New agentGrouping type owns the whole reconciliation between per-worker execution and one-row-per-agent display: worker->row routing, live per-agent token summing, and the summary fold. TUISink holds one *agentGrouping (nil on the single-agent path) instead of four fields and four methods.
(a) The folded summary's duration now spans earliest-worker-start to latest-worker-end instead of keeping one worker's slice. The live row duration was already correct (wall-clock from first event to finish); this makes the folded field honest for any future consumer.
(b) Drill-in (Ctrl+O) into a collapsed agent tags each event with its skill when the buffer holds more than one worker, so two skills running in parallel read cleanly instead of interleaving anonymously; single-source buffers stay untagged. agentEventMsg carries the source worker; the row buffer keeps it per event.
Execution, summary, manifest, and per-skill session attribution are untouched — the collapse remains display-only.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com Entire-Checkpoint: 01KXH6FFA9B5JWVHSRGMH1W20B