Release 0.14.5 by github-actions[bot] · Pull Request #3007 · openai/openai-agents-python · GitHub
Skip to content

Release 0.14.5#3007

Merged
seratch merged 1 commit intomainfrom
release/v0.14.5
Apr 23, 2026
Merged

Release 0.14.5#3007
seratch merged 1 commit intomainfrom
release/v0.14.5

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Apr 23, 2026

Release readiness review (v0.14.4 -> TARGET fc9e78c)

This is a release readiness report done by $final-release-review skill.

Diff

v0.14.4...fc9e78c

Release call:

🟢 GREEN LIGHT TO SHIP Patch release with narrowly scoped runtime fixes, additive sandbox configuration, matching regression tests, and no concrete blocking evidence in v0.14.4...fc9e78c2.

Scope summary:

  • 24 files changed (+1126/-634); key areas touched: src/agents/run_internal/ streamed/runtime resume fixes, src/agents/extensions/sandbox/modal/ additive idle_timeout support, focused test additions, sandbox docs/examples, and version bump to 0.14.5.

Risk assessment (ordered by impact):

No material risks identified.

  1. Interrupted server-conversation resume handling changed in a stateful path
  • Risk: 🟢 LOW. The change affects a subtle resume/HITL path, but the behavior is constrained to preserving unsent tool outputs from the interrupted turn and has direct regression coverage.
  • Evidence: Commit 16e04092 adds get_unsent_tool_call_ids_for_interrupted_state() and threads unsent_tool_call_ids through OpenAIServerConversationTracker.hydrate_from_state() so interrupted local tool outputs are not incorrectly marked as already sent; tests/test_server_conversation_tracker.py adds test_hydrate_from_state_preserves_unsent_outputs_from_interrupted_turn.
  • Files: src/agents/run_internal/agent_runner_helpers.py, src/agents/run_internal/oai_conversation.py, src/agents/run.py, src/agents/run_internal/run_loop.py, tests/test_server_conversation_tracker.py
  • Action: Run uv run pytest tests/test_server_conversation_tracker.py -q -k interrupted_turn; pass criteria: the new resume-path test passes and prepared input still includes the expected function-call outputs on resume.
  1. Streamed terminal-output backfill adjusts final response assembly
  • Risk: 🟢 LOW. This changes only the case where a streaming backend emits response.output_item.done events but leaves response.completed.output empty, and the fix is covered with targeted ordering/preservation tests.
  • Evidence: Commit 81c57c5e stores ResponseOutputItemDoneEvent items in streamed_response_output and backfills terminal_response.output before step resolution when the completed response is empty; new file tests/test_streamed_terminal_output_backfill.py covers empty terminal output, preserving a non-empty terminal output, and multi-tool ordering.
  • Files: src/agents/run_internal/run_loop.py, tests/test_streamed_terminal_output_backfill.py
  • Action: Run uv run pytest tests/test_streamed_terminal_output_backfill.py -q; pass criteria: all new streaming regression tests pass and streamed tool calls still resolve into final output.
  1. Modal sandbox idle_timeout is a user-facing additive option
  • Risk: 🟢 LOW. The new field is optional, threaded end-to-end, appended without breaking constructor field order, and deserialization keeps backward compatibility by defaulting missing values to None.
  • Evidence: Commit 5be06a16 adds idle_timeout to ModalSandboxClientOptions and ModalSandboxSessionState, forwards it into sandbox creation and snapshot restore, updates compatibility guards for stable field ordering, and adds focused tests for create/restore behavior.
  • Files: src/agents/extensions/sandbox/modal/sandbox.py, tests/extensions/test_sandbox_modal.py, tests/sandbox/test_client_options.py, tests/sandbox/test_compatibility_guards.py
  • Action: Run uv run pytest tests/extensions/test_sandbox_modal.py -q -k idle_timeout && uv run pytest tests/sandbox/test_client_options.py tests/sandbox/test_compatibility_guards.py -q -k idle_timeout; pass criteria: idle_timeout is forwarded during create/restore and legacy serialized state without the field still restores cleanly.

Notes:

  • Base tag was selected from local tags only, per request: v0.14.4.
  • Target was HEAD: fc9e78c2f318d1ecdb9625c6296e73c9fee55d78.
  • Working tree was clean during review (git status --short returned no changes).
  • This report is diff-based; no local full verification stack was rerun as part of the review.

@github-actions github-actions Bot added this to the 0.14.x milestone Apr 23, 2026
@seratch seratch merged commit fe3a5e6 into main Apr 23, 2026
9 checks passed
@seratch seratch deleted the release/v0.14.5 branch April 23, 2026 02:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant