What's Changed
⚠️ Compatibility Notes
- Attach namespaced
originandtool_call_idmetadata toBackgroundToolscompletions by @michaeldunn9 in #10196 - Take GPT-Live realtime history, usage, and reply waits from the session core by @DouweM in #10083
- Honour
disable-model-invocationanduser-invocableinSkills, and skip stray skill library paths by @DouweM in #10378 - Take Gemini Live realtime history, usage, and reply waits from the session core by @DouweM in #10082
🚀 Features
- Add
MetaProviderfor Meta Muse models, withmeta:using the Responses API by @mpfaffenberger in #10156 - Add Harness
ApprovalReviewerto let a model approve low-risk tool calls before a person sees them by @mpfaffenberger in #10143 - Price requests at their reported service tier by @adtyavrdhn in #10244
- Add
dataset_nametoEvaluationReportby @jirikuncar in #10307 - Forward MCP Apps tool results to AG-UI and Vercel AI frontends and add
MCPToolset.read_resource_contentsby @adtyavrdhn in #10179 - Relay MCP Apps tool calls with
MCPToolset.call_tool_for_appby @adtyavrdhn in #10190
🐛 Bug Fixes
- Fix token-based compaction retaining too little recent history by @AndrewTilson in #9784
- Record and stream one part per realtime output item when its transcript arrives late by @pydanty in #10097
- Reference multimodal URL choices in the
ToolReturnContentdiscriminator mapping by @Kludex in #10239 - Stop
OpenAIResponsesModelsending unavailabletool_choicenames inallowed_toolsby @dsfaccini in #10232 - Send Gemini tool-call thought signatures (
extra_content) back fromOpenAIChatModelby @dsfaccini in #10235 - Give a tool's
prepareits own retry count under.prefixed(),.renamed()andPrefixToolsby @dsfaccini in #10219 - Support Gemini agentic media processing in
GoogleModelby @miguel-flowstate in #8028 - Stop granting native
tool_searchtogpt-5.4-nanoby @dsfaccini in #10272 - Omit unset optional fields from Vercel AI
UIMessageJSON so the AI SDK accepts it by @adtyavrdhn in #10175 - Keep
Planningtool loops in the prompt cache, and attach a leadingCachePointto the previous user message onOpenRouterModelby @mpfaffenberger in #10257 - Release concurrency slots after streamed request cleanup by @dsfaccini in #10225
- Backfill an empty thinking field on current-turn tool calls in
OpenAIChatModel's default'auto'mode by @dsfaccini in #10251 - Keep
available_tool_namesandactive_capability_idson run context copies inside Temporal activities and Render child tasks by @dsfaccini in #10280 - Reconnect an xAI realtime session past
max_durationwhen areconnectpolicy is set by @DouweM in #10056 - Await
ProcessEventStreamcleanup after early exit and cancellation by @dsfaccini in #10341 - Count the request of a GPT-Live backend response that ends while the session closes by @DouweM in #10084
- Warn when
FallbackModelresponse handlers are skipped on a streamed request by @DouweM in #10066 - Close the HTTP client of a model a run builds from a model name, and reuse one per name inside
async with agent:by @DouweM in #10067 - Make waits between continuation polls durable
DBOS.sleepsteps underDBOSDurabilityandDBOSAgentby @DouweM in #10383 - Charge the partial response of an interrupted stream in
SpendLimitsby @DouweM in #10069 - Stop
WarnNearLimitsfrom deleting user prompts that quote its[WarnNearLimits]marker by @DouweM in #10391
New Contributors
- @AndrewTilson made their first contribution in #9784
- @miguel-flowstate made their first contribution in #8028
- @jirikuncar made their first contribution in #10307
- @michaeldunn9 made their first contribution in #10196
Full Changelog: v2.56.0...v2.57.0