Key Changes
Deterministic SDK testing utilities
This release adds provider-neutral testing utilities through @openai/agents/testing, @openai/agents-core/testing, @openai/agents/realtime/testing, and @openai/agents-realtime/testing. ScriptedModel, scriptedSandboxSession(), and ScriptedRealtimeTransport let applications exercise runner, sandbox, and Realtime workflows without live model, sandbox, WebRTC, or WebSocket dependencies. Existing runtime entry points and defaults remain unchanged.
Standard Schema inputs and outputs
Tools, handoffs, and agent structured outputs now accept supported Standard Schema values alongside Zod and raw JSON Schema. The schema must provide synchronous ~standard.validate behavior plus ~standard.jsonSchema.input() and ~standard.jsonSchema.output(), and generated schemas must have an object root. Standard Schema function-tool parameters require strict mode; use a Zod schema, raw JSON Schema, or application-side validation for unsupported cases.
Safer run, provider, and Realtime behavior
CallModelInputFilter can opt into stable prepared-item identity with preserveInputIdentity = true; default filters continue to receive deep copies, and the SDK does not freeze opted-in items. The release also tightens interruption snapshots, max-turn finalization, invalid tool-output redaction, Responses parallel-tool-call forwarding, Chat Completions reasoning placement, Realtime audio-rate fallback, and unsupported assistant-audio history replay handling.
What's Changed
- feat: add scripted testing utilities by @seratch in #1640
- feat: support Standard Schema inputs and agent outputs by @seratch in #1648
- feat: preserve model input identity by @seratch in #1654
- fix(core): isolate interruption result arrays by @seratch in #1659
- fix(core): align Responses parallel tool calls with tools by @seratch in #1660
- fix(core): reject partially matched stacked diff anchors by @seratch in #1655
- fix(core): apply stacked diff anchors sequentially by @seratch in #1649
- fix(core): redact invalid typed tool output diagnostics by @seratch in #1662
- fix(core): detach RunState interruption snapshots by @seratch in #1664
- fix(core): finalize max-turn handler session output by @seratch in #1663
- fix(mcp): keep cached tool arrays private by @seratch in #1681
- fix(chat-completions): keep Chat Completions reasoning on its assistant message by @thegoodengineer in #1669
- fix(sandbox): snapshot sandbox HTTP event sink headers by @seratch in #1661
- fix(sandbox): describe granted view_image paths by @seratch in #1678
- fix(realtime): reject unsupported audio history replay by @sylvesterkaczmarek in #1665
- fix(realtime): handle non-finite audio rates by @seratch in #1680
- fix(extensions): forward strict settings through the AI SDK by @Maksim963 in #1643
Documentation & Other Changes
- docs: updates for v0.15.0 release by @seratch in #1610
- chore: update versions by @github-actions[bot] in #1644
New Contributors
- @Maksim963 made their first contribution in #1643
- @sylvesterkaczmarek made their first contribution in #1665
- @thegoodengineer made their first contribution in #1669
Full Changelog: v0.15.0...v0.16.0