ReadonlypassiveRead for its result only: the calls it watches are not streamed from the provider.
ReadonlyresultThe call's value (the same as calling the program); rejects with its error.
ReadonlywriterThe writer whose process gives these events: this one, the first.
The id of the call the stream was opened on (null until it starts).
Aborted when the stream is closed.
The answer so far: its text since the call's latest request (streaming.md, law 3). Provisional: result has the typed value.
The log's id (its outermost call's), once the call started.
The tool calls this stream's call waits for a person to approve (approve rules, a plugin's ask).
The answer's text, piece by piece (a retry's discarded text included: result is the truth).
Say yes to a tool call the call waits for (s.waiting[0], its invocation
number, or nothing for the only one): the tool runs and the call goes on.
Optionalapproval: number | Approval | nullStop the call: no new request starts, and it ends with Cancelled.
Say no: the model is told the person did not allow it (and why), and may try something else.
Optionalapproval: number | Approval | nullOptionalreason: string | nullEvery event, in order, as it happens: the call's and those of the calls
inside it (a stream opened inside a tree shows the tree's numbers, its
first after null). form: "kept" gives what the log may keep; view
a view made from the form; after resumes after an event of that form
(EventUnknown when the form has none).
The events of a form after one this reader has (streaming.md,
"Resuming"): this process gives any form of its log while it runs.
event-unknown when that form has no such event.
A call being made and watched. Iterate it for its answer's text as it arrives;
events()for every event of the call and the calls inside it; await it (orresult) for its value. Closing it cancels the call.