0.10.0
A minor release that ships spec revision 1.0.0-draft.7 (AGJSON_VERSION). It’s a fix: a Google ADK pause that more of the same invocation follows no longer parks the fold, whether or not the host sends the completion event. This lands the bare-host fix the 0.9.0 note said would come in the next minor. No field’s meaning changes.
Google ADK
- A paused turn closes at the invocation’s end, on every host. A credential or input request doesn’t have to end an ADK invocation. More of that invocation can follow the pause: the model runs again after a usage-only report (including through ADK’s SSE streaming path), an after-agent callback adds content, or a SequentialAgent root moves to its next sub-agent. That output belongs to the paused turn. The paused close is now the turn’s last event: from
push()on the host-completion event when you usehostCompletion, otherwise fromflush(). Before, a host withouthostCompletiongot the paused close at the pause, the later output landed after it, and the fold parked. The 0.9.0 note listed this as a known limit. - What a host sees differs from 0.9.0 in three ways:
- Without
hostCompletion, the pausedturn.donenow arrives fromflush(), after the invocation’s other events, instead of at the pause. Only the terminal moves: eachhitl.askarrives where it did. A host may act on a livehitl.askbefore the terminal; the paused record inturn.donestays the durable declaration. - The paused turn’s
usagecovers the invocation’s later rounds. - A turn that holds an ask when the stream ends, with no pause signal seen, still closes as
turn.abort(stream-truncated), never as paused.
- Without
- Correction to the 0.9.0 note. It said ADK ends the invocation at a tool confirmation. That holds for the pausing agent’s own run, but a confirmation in a SequentialAgent sub-agent that isn’t the last one is still followed by the next sub-agent’s output in the same invocation. So the rule above covers every pause kind, confirmations included.
- Still host-completion-only: two shapes of a completed, not paused, run. Without
hostCompletion, a SequentialAgent root outside ADK’s Workflow plane, or an after-agent callback that appends content after a success close, lands after the in-band terminal and parks the reducer. - Every recorded stream serializes byte-identically. Only the engine fixtures whose invocation outlives the pause change: they now fold clean without the completion event.
- Known limit, unchanged: under ADK’s SSE streaming mode, ADK’s closing usage report repeats the call’s usage, so a turn’s summed
usagecan count that call twice. Because a paused turn now sums the invocation’s later rounds on every host, this can show on a paused turn too.
Spec: AgJSON 1.0.0-draft.7
- The ADK paused close moves to the invocation’s end (§8.0 item 26): from
push()on the host-completion event, otherwise fromflush(). INV-FLUSH (2) now releases a turn whose pause was signalled aspausedat flush, and a turn with no pause signal still closes as a truncation. INV-TURN, §8.0 “Ids across invokes”, item 12 and §10 items 25 and 40 read accordingly. §7 says a host may act on a livehitl.askbefore the turn’s terminal. - Every recorded cassette serializes byte-identically. Six engine fixtures that parked on hosts without the completion event now fold, and a paused turn’s
usagecovers the invocation’s later rounds. - This is a defect fix: a fold that parked now closes, and no field’s meaning changes.
draft.6 envelopes remain accepted (same major, §12).
@silverprotocol/core
AGJSON_VERSIONis1.0.0-draft.7.- The producer API is marked
@betain the type declarations. That coversStreamAssemblerand its field types,AssemblerCheckpoint,withAtomicPushwith its options and error constants, and the JSON-safety helpers. The wire vocabulary and the consumer API stay unmarked, includingNormalizerandToolOutcome. Nothing changes at runtime.
Wire version
1.0.0-draft.7. Replaying the 77 recorded streams through the 0.9.0 and 0.10.0 packages, output is byte-identical for every one: Claude Agent SDK 30 of 30, Google ADK 24 of 24 (with and without the host-completion event), OpenAI Agents SDK 15 of 15 and Vercel AI SDK 8 of 8. No recorded stream has a pause its invocation outlives. The other framework packages change only their READMEs’ wire-version line, and @silverprotocol/richtext is unchanged apart from its version.
npm’s provenance for the 0.10.0 packages names typescript-sdk commit 4fd5a02a, one commit after the v0.10.0 tag, which changes only a repository check script outside every package; the package contents are identical.