1.0.0-rc.2
The second release candidate for 1.0.0. All six packages move to 1.0.0-rc.2 together, and they ship spec revision 1.0.0-rc.2 (AGJSON_VERSION), a revision of rc.1 before 1.0.0.
Installing the release candidate
The release candidate is published under the rc tag. latest stays on 0.12.5:
npm i @silverprotocol/core@rc
Install each framework package you use the same way, so every @silverprotocol/* package in your lockfile is on 1.0.0-rc.2. While a release candidate is the most recent publish, a package’s page on npmjs.com shows no README; each package still carries its README.
Upgrading from rc.1 or 0.12.x
- OpenAI Agents SDK: a refused computer-use action now closes as
denied. When@openai/agentsrefuses a computer action (a declined approval, or anonSafetyCheckthat returnsfalse), itstool.donenow hasoutcome: "denied", with the SDK’s refusal message as a text block. 0.12.x and rc.1 closed it asok. So a refused action now shows as a declined tool call: a UI that marks adeniedcall as failed shows it failed, where it showed it done. A consumer on 0.12.x or any1.0.0-*release validates the new close unchanged.
Google ADK
- ADK’s internal metadata entries are no longer carried. ADK reserves the
customMetadataentries whose name begins with__adk_internal_for its own components, and removes them from the API responses, saved session files and A2A messages it produces. At@google/adk2.2.1 they hold a tool-call integrity stamp and a restored-history marker. The package carried them in the event-levelprovider-rawblock and in anext.google.unparsedevent’s native. It now omits them there, beside the A2A relay’s bookkeeping entries. Only top-level entries are matched, and every other entry still rides. An event whosecustomMetadataheld only such entries yields noprovider-rawblock, so a stream that has one is one event shorter than at rc.1, and its laterseqvalues renumber. This landed as a revision (§8.0 item 38): no recorded stream carries such an entry. - Only the pausing agent’s final response signals its pause. A final response signals an ask’s pause (§8.0 item 26) only when it comes from the agent that raised the ask, and only when it arrives while the ask is pending. A run cut before the event that ends the pause, in which another agent answered, or, with host completion on, in which the final response came before the ask, now closes as a truncation, or with the in-band error it met, where it closed paused. This is a defect fix.
- The aggregate-window bookkeeping reads each event’s window once instead of up to four times.
OpenAI Agents SDK
- A refused computer action closes as
denied(see Upgrading). Its content is the SDK’s message as a text block, then the screenshot’s file block, and it carries noisError,errorTextorerrorCode. Every other computer result still closesok. - A computer screenshot lands as base64 bytes with its media type.
@openai/agentssends the screenshot as adata:image/png;base64,…URL, and the package put the whole URL in the file block’ssource.data. It now takes the bytes after;base64,asdata, and the header’s media type asmediaType. A value without adata:header lands as before. This is a defect fix: the spec’s base64 source holds the base64 text alone, with a media type that matches the bytes (§2). - The SDK’s markers ride
tool.doneproviderMetadata: the run-item’sexecutionStatus, which the SDK sets only when the action ran; a refused action’sapprovalStatusandmessage; and the item’sacknowledgedSafetyChecks.executionStatusalso rides shell, apply-patch and program results. - The package’s documentation now says that
executionStatusarrived in agents-core 0.14.3, for built-in results too, where it said built-in results never carry it.
Spec: AgJSON 1.0.0-rc.2
rc.2 revises rc.1. The revision note in SPEC §15 lists both changes:
- §8.0 item 38: a normalizer targeting ADK omits a top-level
customMetadataentry whose name begins with__adk_internal_(§10 item 68, §13.12). A producer that declares rc.1 may still carry these entries. - §8.0 item 20: the
@openai/agentsrejected computer result maps totool.done{outcome: "denied"}, with the SDK’s rejection message as a text block, and the screenshot’sdata:URL lands as base64 bytes with its media type (§10 item 69).
No closed set, schema or fold rule changes. rc.1 envelopes remain accepted (same major, §12).
Verified versions
Each framework package is verified end to end, tool calls included, against a live run at:
@anthropic-ai/claude-agent-sdk0.3.296;@openai/agents0.20.0;@google/adk2.2.1, with@google/genai2.28.0;ai7.0.137.
Wire version
1.0.0-rc.2. Replaying every recorded stream through the 1.0.0-rc.1 and 1.0.0-rc.2 packages, all 105 runs give byte-identical events and fold to the same result: the Claude Agent SDK (32), OpenAI Agents SDK (16) and Vercel AI SDK (9) streams, and the Google ADK streams (24, each with and without the host-completion event). Of the 624 runs of the engine-built fixtures, five change, all OpenAI built-in tool fixtures, in the ways described above.
The 1.0.0-rc.2 packages are built from typescript-sdk commit f3a9c754, the commit npm’s provenance for all six 1.0.0-rc.2 packages attests.