Capture
class Capture
Accumulate, materialize once, seal. Backs the per-eval out and the run_command target=client chat window.
Sealing is the point, not an optimization: the append side reaches callers as a closure, and whoever holds it may be asynchronous and outlive this sink — after which it writes forever, unbounded, into something nobody will read, on whatever thread it happens to run on. take ends that.
Nothing is cached past take: the caller holds the only reference to the result, so an outliving writer pins no text.