What's Changed
Sandboxes
- fix: include sandbox provider error details by @seratch in #3326
- fix: #3274 limit sandbox archive extraction by @Aphroq in #3278
- fix: #3273 validate git repo subpaths by @Aphroq in #3276
Tracing
- fix: make tracing shutdown best-effort on process exit by @seratch in #3343
- fix: keep BatchTraceProcessor worker alive on exporter errors by @adityasingh2400 in #3216
- fix: guard no-op tracing span IDs by @seratch in #3296
Sessions
- fix: #3267 preserve required hosted tool IDs in OpenAI conversation sessions by @seratch in #3341
- fix: #3304 skip corrupt items during pop (sessions) by @Aphroq in #3305
- fix: #3306 track MongoDB metadata timestamps by @Aphroq in #3307
- fix: preserve created_at across writes (redis-session) by @adityasingh2400 in #3202
- fix: skip corrupt docs in MongoDBSession.pop_item by @adityasingh2400 in #3247
Realtime Agents
- fix: #3333 scope Realtime tool approvals by qualified key by @seratch in #3340
- fix: #3286 send realtime output for unknown tool calls by @Aphroq in #3287
- fix: #3284 wake realtime event iterators on close by @Aphroq in #3285
- fix: preserve existing transcript over stale delta accumulator by @adityasingh2400 in #3214
- fix: expose max_output_tokens on RealtimeSessionModelSettings by @adityasingh2400 in #3223
- fix: validate RealtimeAgent fields in
__post_init__by @adityasingh2400 in #3234 - fix: skip invalid input_text parts in user input conversion (realtime) by @adityasingh2400 in #3243
- fix: raise UserError for input_type without on_handoff (realtime) by @adityasingh2400 in #3248
- fix: preserve output_audio content parts in output_item events (realtime) by @adityasingh2400 in #3230
- fix: treat None audio.input/audio.output as unset (realtime) by @adityasingh2400 in #3254
- fix: stop AudioInput.to_base64() from mutating caller's buffer (voice agents) by @adityasingh2400 in #3201
Other core modules
- fix: make chat completions response-feature validation opt-in by @seratch in #3298
- fix: #3275 reject chat completions server state by @Aphroq in #3279
- fix: #3282 reject unsupported Chat Completions reusable prompts by @Aphroq in #3283
- fix: #3313 align multi-choice chat streams with strict validation by @Aphroq in #3314
- fix: #3308 reject chat custom tool calls explicitly by @Aphroq in #3309
- fix: #3270 validate model retry backoff settings by @Aphroq in #3272
- fix: #3319 preserve nested handoff history content by @Aphroq in #3320
- fix: #3280 streaming guardrail exception cleanup by @Aphroq in #3281
- fix: #3288 normalize RunState guardrail payloads by @Aphroq in #3289
- fix: #3315 align generic dict output schemas by @Aphroq in #3316
- fix: #3317 return fresh empty strict schemas by @Aphroq in #3318
- fix: #781 replace assertion in handoff() with UserError by @0xSudoSSH in #3339
- fix: preserve failed status across apply_patch operations by @adityasingh2400 in #3217
- fix: preserve existing request_usage_entries on Usage.add by @adityasingh2400 in #3213
- fix: await cancelled output guardrail tasks on tripwire by @Quratulain-bilal in #3187
- fix: persist output_tokens_details when input details are None by @adityasingh2400 in #3227
- fix: drop reasoning items orphaned by dropped tool calls by @adityasingh2400 in #3207
- fix: skip CompactionItem silently in stream queue helper by @adityasingh2400 in #3224
- fix: await on_handoff callables with async
__call__by @adityasingh2400 in #3211 - fix: preserve tool guardrail results across handoffs in SingleStepResult by @adityasingh2400 in #3237
- fix: preserve last known response_id on conversation resume by @adityasingh2400 in #3245
- fix: isolate MCP strict schema conversion from non-strict fallback by @adityasingh2400 in #3199
- fix: exclude Computer instances from provider duck-typing by @adityasingh2400 in #3249
- fix: skip needs_approval_checker when status already resolved by @adityasingh2400 in #3229
- fix: export MCPToolCancellationError from top-level package by @adityasingh2400 in #3210
- fix: preserve chained $ref during sibling-key expansion by @adityasingh2400 in #3205
Extensions
- fix: avoid duplicating content and signed thinking blocks across parallel tool-call splits (any-llm) by @adityasingh2400 in #3261
- fix: avoid duplicating content and signed thinking blocks across parallel tool-call splits (litellm) by @adityasingh2400 in #3215
- fix: #3330 handle string tool trimmer allowlists by @Aphroq in #3331
- fix: preserve HandoffInputData.input_items in remove_all_tools by @adityasingh2400 in #3253
Documentation & Other Changes
- docs: updates for v0.17.0 by @seratch in #3188
- docs: update translated document pages by @github-actions[bot] in #3193
- docs: add dapr to durable orchestration integrations by @yaron2 in #3292
- docs: update translated document pages by @github-actions[bot] in #3293
- docs: update MCP examples by @seratch in #3342
- test: guard Responses transport extra kwargs with official client by @seratch in #3295
- chore: improve examples auto-run coverage and artifact handling by @seratch in #3328
- chore: improve automated example coverage and local service handling by @seratch in #3297
- Release 0.17.1 by @github-actions[bot] in #3290
New Contributors
- @yaron2 made their first contribution in #3292
- @0xSudoSSH made their first contribution in #3339
Full Changelog: v0.17.0...v0.17.1