Per-message streaming objects for content-block protocol events.
ChatModelStream is the synchronous variant returned by
BaseChatModel.stream_v2(). AsyncChatModelStream is the
asynchronous variant returned by BaseChatModel.astream_v2().
Both expose typed projection properties (.text, .reasoning,
.tool_calls, .usage, .output) that accumulate protocol
events as they arrive. Projections can be iterated for deltas or
drained for the final accumulated value.
Raw protocol events are also available via direct iteration on the stream object (replay-buffer semantics ā multiple independent consumers supported).