Reactive tool handle for framework bindings (stream.toolCalls,
useToolCalls, injectToolCalls).
status, error, and output are plain values that
the assembler updates in place as tool events arrive. That lets React,
Vue, Svelte, and Angular re-render from a snapshot on each store tick
without await, effects, or Suspense boundaries around a promise.
ClientAssembledToolCall keeps a promise-based output
instead for script consumers that read tool results sequentially.
output is null while the call is running or after it fails;
successful completion sets it to the parsed tool return value (objects
and strings are unwrapped from ToolMessage wire envelopes when needed).