class StreamStoreFunctional update. The updater receives the current snapshot and
MUST return a new object. Returning the same reference is a no-op.
Replace the snapshot and notify every listener.
Subscribe to raw wire channels and receive protocol events.
For assembled projections, use the lazy getters instead:
thread.messages, thread.values, thread.toolCalls,
thread.subgraphs, thread.subagents, thread.output.