pypi openai-agents 0.22.1
v0.22.1

2 hours ago

What's Changed

  • feat(core): support image results in web search tools by @seratch in #4898
  • feat(core): customize output guardrail blocked messages by @seratch in #4594
  • feat(mcp): add server-wide guardrails to MCP tools by @seratch in #4632
  • feat(sandbox): add configurable Unix-local environment isolation by @seratch in #4640
  • feat(sandbox): allow labels on Docker sandbox containers by @seanxuu in #4564
  • feat(voice): expose streamed transcription options by @seratch in #4645
  • fix(core): detach aggregated request usage entries by @green3sf in #4519
  • fix(core): fail closed on empty tool arguments by @hsusul in #4545
  • fix(core): strip created_by when replaying RunItems as input by @hsusul in #4568
  • fix(core): strict_schema error message, REPL whitespace input, debug docstrings by @simpleqt in #4600
  • fix(core): max_turns no longer clobbers a tripped input guardrail exception in streaming by @shoemoney in #4606
  • fix(core): preserve serialized approval resume ownership by @seratch in #4613
  • fix(core): read tool args without Pydantic property shadowing by @hsusul in #4627
  • fix(core): accept JSON Schema type arrays of object for tool outputs by @hsusul in #4647
  • fix(core): honor End of File hunks when the file ends in a newline by @lllakshit in #4661
  • fix(core): preserve tuple annotations for variadic tool arguments by @Excelius-Wang in #4655
  • fix(core): fix streamed response span losing response/input when consumer stops at completed event by @XuQuanxin04 in #4692
  • fix(core): apply **kwargs value annotation to each keyword value by @abhay-codes07 in #4714
  • fix(core): reject **kwargs keys that collide with named tool parameters by @rajarshidattapy in #4674
  • fix(core): reject fixed-length tuple annotations for variadic tool arguments by @subhashpolisetti in #4735
  • fix(core): preserve Field constraints on variadic tool parameters by @rioyu123 in #4739
  • fix(core): close model providers created by Runner by @Excelius-Wang in #4785
  • fix(core/voice): honor OpenAI provider options over default clients by @green3sf in #4530
  • fix(chat-completions): merge a streamed turn's message into its pending tool-call message by @mmjerge in #4728
  • fix(chat-completions): raise ModelBehaviorError on truncated empty completions by @weike-zhang in #4513
  • fix(chat-completions) reject unpaired function outputs in Chat Completions by @apcha-oai in #4699
  • fix(extensions): skip AdvancedSQLiteSession usage store when the branch has no turn by @rioyu123 in #4822
  • fix(extensions): nest extra_body on the any-llm chat path by @hsusul in #4544
  • fix(mcp): deep-copy cached tools before returning them by @hsusul in #4525
  • fix(mcp): clear active MCP servers after cleanup by @sylvesterkaczmarek in #4586
  • fix(mcp): deduplicate managed servers by @hsusul in #4591
  • fix(realtime): advance crossed guardrail thresholds by @hsusul in #4590
  • fix(realtime): preserve item status on retrieved conversation items by @shoutoutuoadi325 in #4598
  • fix(sandbox): finish dependency cleanup on cancellation by @hsusul in #4607
  • fix(sandbox): keep unbounded UnixLocal workspace I/O off the event loop by @ayaangazali in #4700
  • fix(sandbox): preserve UTF-8 boundaries in Cloudflare SSE by @Hughhhhcoder in #4707
  • fix(sandbox): clean up PTY startup cancellation by @Hughhhhcoder in #4750
  • fix(sandbox): settle PTY output before cleanup by @seratch in #4738
  • fix(sandbox): preserve workdir for shell command lists by @hsusul in #4915
  • fix(sessions): recover failed resumed Session writes before model calls by @seratch in #4630
  • fix(sessions): recover failed resumed Session writes on a renewed interruption by @ayaangazali in #4650
  • fix(sessions): persist resumed tool guardrail results by @FU-max-boop in #4654
  • fix(sessions): recover resumed handoffs after session append failures by @seratch in #4725
  • fix(sessions): settle conversation deletion before propagating cancellation by @Excelius-Wang in #4790
  • fix(sessions): preserve concurrent writes during compaction by @seratch in #4736
  • fix(sessions): reject resuming a run whose accepted terminal output was not persisted by @Ayushraj06-bit in #4698
  • fix(sessions): preserve Session transformations during generation tracking by @seratch in #4917
  • fix(tracing): flush buffered data after tracing is disabled by @sylvesterkaczmarek in #4528
  • fix(tracing): preserve response IDs in redacted traces by @seratch in #4641
  • fix(tracing): record the tool output on approval-gated function spans by @dfedoryshchev in #4866
  • fix(voice): support custom OpenAI TTS voice IDs by @sylvesterkaczmarek in #4541
  • fix(voice): forward streamed STT language and prompt by @seratch in #4574
  • fix(voice): honor client config for streamed STT by @seratch in #4575
  • fix(voice) reject ignored explicit-client options by @sylvesterkaczmarek in #4527
  • fix(voice): include current OpenAI TTS voices by @sylvesterkaczmarek in #4535
  • fix(voice): use monotonic STT event deadlines by @seratch in #4593
  • fix(voice): support context in single-agent workflow by @sylvesterkaczmarek in #4636
  • fix(voice): enforce public Voice class state coverage by @seratch in #4644
  • fix(voice): redact STT prompts from traces by @hsusul in #4663
  • fix(voice): redact TTS instructions from speech spans by @ayaangazali in #4676
  • fix(voice): accept every NumPy spelling of a supported TTS dtype by @Nikhils-G in #4778
  • fix(voice): wake stream when producer is cancelled by @Hughhhhcoder in #4825
  • fix(visualization): preserve nodes with duplicate names by @tandede in #4512
  • refactor: extract RunState agent graph identity by @seratch in #4876
  • refactor: share provider generation-span population by @seratch in #4877

Documentation & Other Changes

  • docs: document v0.22.0 behavior changes by @seratch in #4522
  • docs: fix wording in handoff example prompts by @Chair403 in #4520
  • docs: preserve English heading anchors in translated pages by @saime428 in #4580
  • docs: refresh tracing integration links by @seratch in #4634
  • docs: clarify capability visibility and authorization by @seratch in #4642
  • docs: clarify database driver installation for SQLAlchemy sessions by @rioyu123 in #4743
  • docs: skip reference pages on Windows by @sylvesterkaczmarek in #4761
  • docs: clarify requested state consistency guarantees by @rksharma-owg in #4903
  • docs: make the encrypted session quick start self-contained by @rioyu123 in #4909
  • fix: freeze the public voice API contract by @seratch in #4578
  • fix: enforce public type alias contract coverage by @seratch in #4595
  • fix: route verification changes and require confirmed docs-only pushes by @seratch in #4880
  • fix: propagate the serial test runner's exit code on Windows by @MohammedAlkindi in #4771
  • fix: harden PyPI publishing and require manual release tags by @seratch in #4726
  • fix: require complete policy for new public TypedDicts by @seratch in #4900
  • fix: simplify verification and stabilize sandbox tests by @seratch in #4916
  • fix: consolidate Docker-backed integration tests by @seratch in #4667
  • chore(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in #4802
  • chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #4803
  • chore: run repository skill tests in dedicated CI by @seratch in #4881
  • refactor: separate release contract verification responsibilities by @seratch in #4878
  • perf: reduce async stability command startup overhead by @seratch in #4874
  • test: make async progress and trace-worker tests deterministic by @seratch in #4875
  • test: organize Realtime session tests by responsibility by @seratch in #4879
  • test(sandbox): skip unavailable Windows symlinks by @sylvesterkaczmarek in #4853
  • release: 0.22.1 by @seratch in #4576

New Contributors

Full Changelog: v0.22.0...v0.22.1

Don't miss a new openai-agents release

NewReleases is sending notifications on new releases.