0.11.0
A minor release that ships spec revision 1.0.0-draft.8 (AGJSON_VERSION), the closing draft before the release candidate. It fixes the vocabulary for major 1: §12 now lists every closed set and its class, a new block type reaches only a client that declares support for it, and after 1.0 a change to what a field or fold means is a major. On the wire, 0.11.0 adds optional fields only, and every recorded stream serializes byte-identically to 0.10.0.
What the reference producers emit for now
Until every deployed consumer runs a draft.4 or later reader, the reference producers emit no event type, closed-set value or block type beyond draft.3’s vocabulary except ext.<vendor>.*. A reader from before draft.4 drops an event type it doesn’t know and parks on the gap, while a draft.4 or later reader stubs it in place and keeps its seq slot (§12).
Upgrading from 0.10.x
AgReasoningConfig.effortis an open string."minimal","low","medium"and"high"stay documented, and any other string now passes. A receiver on an earlier core still rejects an undocumented value asunknown-value, so upgrade the receiving side before you send one. A non-stringeffortis stillmalformed, andmodestays a closed set.- A memory record keeps the write’s
_meta.AgMemoryRecordgains an optional_meta, copied frommemory.write._meta. A stream whosememory.writecarried_metare-folds with it, where 0.10.0 dropped it. A reader that stores a strict parse’s output drops the field; the reference reader keeps unknown fields (§0.2).
Spec: AgJSON 1.0.0-draft.8
- Closed sets for major 1. §12’s table is the normative list of closed sets, each with its class. Within major 1, a set classed FROZEN gains no value; new vocabulary for it lands only as an optional open-string companion where the table names one, as
turn.done.finishReasonRawdoes for the finish reason.AgBlockhas 16 kinds. - New block types. A later minor may define a new
AgBlocktype together with an additiveAgClientCapabilitiesfield that declares support for it. A producer must not emit that block type to a client whose declared capabilities omit it. - Version acceptance. A consumer rejects a different major and should accept any same-major version, including any prerelease tag of that major (
-draft.*,-rc.*). The per-client version gate and its1.0.0-draft.3default are withdrawn. No producer implemented them, and a receiver already rejects an absentversionasmalformed, so nothing changes in practice. - After 1.0, a change to what an existing field or fold means is a major.
ext.<vendor>.<key>: §12 states the grammar the schema enforces. The vendor is one dot-free token that the emitter owns, and the key may carry dots. The reversed-domain recommendation is retired.- Built records. A record the fold builds carries only the members its type declares (§5). The reference reducer already does.
- Fold changes, both additive record fields (§12):
AgMemoryRecord._meta(above), andprompt.blocked.reasonRawcarried ontoAgTurnRecord.promptBlocked(below). 0.10.0 dropped both. prompt.blocked.reasonRaw, an optional open-string companion that carries a native block reason the mapping reports as"other"(§4, §10 item 23).- Recalled memory has no AgJSON event. The Claude Agent SDK’s
memory_recallframe ridesext.anthropic.frame, byte-preserved, and a host-executed memory-tool read reports on that call’stool.done(§13.11). This draft neither adds nor reserves amemory.readevent. - Housekeeping, text only:
- §10 now reads as a conformance definition: each framework-specific item states whom it binds.
- §11 is resolved.
- §13.11 no longer offers ADK
user:/app:keys as amemory.writeexample; they ridestate.deltafor all of 1.x (§8.0 item 30). - The draft notes move to a new §15, Revision history, with an errata policy. An erratum corrects the text of a published revision, never what a field, event or fold means. It’s applied in place and doesn’t move the version.
- No golden changes. draft.7 envelopes remain accepted (same major, §12).
@silverprotocol/core
prompt.blocked.reasonRaw, folded ontoAgTurnRecord.promptBlocked, asturn.done.finishReasonRawis carried. An event without it lands a record without it.AgMemoryRecord._meta. Avaluewrite replaces the record whole,_metaincluded, so a write without one lands a record without one. Apatchreplaces_metaonly when the write carries one, as it doesreasonanddurable. Amessages.snapshot’s memory elements declare the same field, andtoPersistable()keeps it.AgReasoningConfig.effortis typedstring, socheckAgInput()no longer reports an undocumented effort asunknown-value.AGJSON_VERSIONis1.0.0-draft.8.
Google ADK
- An unmapped prompt block reason rides
prompt.blocked.reasonRaw.SAFETY,BLOCKLISTandPROHIBITED_CONTENTmap to their reasons and carry noreasonRaw. Any otherpromptFeedback.blockReasonmaps to"other"and now ridesreasonRawverbatim. On@google/adk2.1.0, no ADK-built event carriespromptFeedback, because ADK turns a prompt block into an error code and message. So this serves events built elsewhere.
Wire version
1.0.0-draft.8, with optional fields only. Replaying the 77 recorded streams through the 0.10.0 and 0.11.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. The new optional fields appear in no recorded stream. The other framework packages change only their READMEs’ wire-version line, and @silverprotocol/richtext is unchanged apart from its version.
The v0.11.0 release is tagged at typescript-sdk commit d24faaaf, the commit npm’s provenance for all six 0.11.0 packages attests.