Repository navigation
feat(api): accept typed references in Realtime response inputs - #4189
Conversation
Castiron custom codeEvaluated main: Trusted main policy: ✅ No new custom-code files detected. 0 mixed files remain; 0 existing customizations changed. Compared A changed generated baseline means this report cannot reliably identify which handwritten lines changed. Inspect the custom-code diffDownload the exact patch produced by this run (requires repository access): gh run download 40442437522 --repo openai/openai-python \
--name castiron-custom-code-40442437522-1 --dir /tmp/castiron-custom-code-40442437522-1
git apply --stat /tmp/castiron-custom-code-40442437522-1/custom-code.patch
cat /tmp/castiron-custom-code-40442437522-1/custom-code.patchOr reproduce it from an SDK checkout containing the vendored reporter: git fetch --no-tags origin a3f430241c4a2e3e25bf79cc7d0148e51795a292 39ce401fed964166a9ab5b0fb9505c5a2a5ec125
python3 scripts/castiron/custom_code_report.py report \
--base a3f430241c4a2e3e25bf79cc7d0148e51795a292 \
--head 39ce401fed964166a9ab5b0fb9505c5a2a5ec125 --target-branch main --fetch --require-head-hash --public \
--out /tmp/castiron-custom-code-39ce401fed96
cat /tmp/castiron-custom-code-39ce401fed96/custom-code.patchThis is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 39ce401fed
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
Castiron-Internal-PR: openai/openai-python-internal#349 Castiron-Source-SHA: 35d1417de7d2de0a22bd04c6226c703ca62e9f4e Castiron-Public-Base-SHA: 1b37b9a
39ce401 to
33ab924
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Approved after full static review and an independent second review. No actionable findings. The prior mutation-compatibility issue is fixed: original model, parameter and event input types are preserved, with separate reference-capable request types accepted consistently by all four send paths and both response helpers. Conversation-item creation remains narrow. The complete repository contents match the reviewed internal candidate. The PR documents the subclass annotation migration and minor-release requirement.
Hosted Python 3.10 and OkTest are still running; other reported checks passed or skipped. No candidate code or tests were run locally.
Automated Release PR --- ## [3.41.0](openai/openai-python@v3.40.0...v3.41.0) (2026-10-28) ### Features * **api:** accept typed references in Realtime response inputs ([openai#4189](openai#4189)) ([8ecb487](openai@8ecb487)) * **api:** add response tool usage models ([openai#4201](openai#4201)) ([55fc500](openai@55fc500)) * **api:** filter agent sessions by metadata ([openai#4200](openai#4200)) ([77fd116](openai@77fd116)) * **websocket:** recover queued binary frames after reconnect ([openai#4191](openai#4191)) ([f079868](openai@f079868)) ### Bug Fixes * **examples:** detect incomplete WebSocket responses ([openai#4187](openai#4187)) ([8559299](openai@8559299)) * **examples:** handle interruptions and disconnects in push-to-talk ([openai#4192](openai#4192)) ([35fc9f3](openai@35fc9f3)) * keep consumer fixtures clean under strict Pyright ([openai#4204](openai#4204)) ([5012565](openai@5012565)) ### Chores * **api:** document upcoming model shutdowns ([openai#4199](openai#4199)) ([5b43cce](openai@5b43cce)) * **api:** update image-model documentation ([openai#4198](openai#4198)) ([fa67521](openai@fa67521)) * enforce generated-file ownership ([openai#4193](openai#4193)) ([1b37b9a](openai@1b37b9a)) * migrate development type checking to ty ([openai#4202](openai#4202)) ([45b9531](openai@45b9531)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: openai-sdks[bot] <284451331+openai-sdks[bot]@users.noreply.github.com>
Summary
Pass existing Realtime item IDs as typed response input, alone or mixed with messages. Existing response parameter and model types keep their input fields, including reads and list mutations.
Changes
response.createand rawresponse.createevents.RealtimeResponseCreateParamsWithReferencesParamandResponseCreateEventWithReferencesParamfor requests that use references.Typed subclass migration
If you override a sync or async Realtime connection or manager's
sendmethod, widen its event annotation to also acceptResponseCreateEventWithReferencesParam. Keep its existingRealtimeClientEventandRealtimeClientEventParamcases.If you override a Realtime
response.createmethod, also acceptRealtimeResponseCreateParamsWithReferencesParamforresponse. Keep the existing parameter type andomitdefault. Handle or forward the added inputs in each override. Existing callers do not need this migration.This static typing change follows the SDK's minor-release versioning policy.
Validation
Compatibility controls passed for existing reads, mutations, parameter and event types, new references and mixed inputs. Three typing files produced exactly 14 intended rejections; strict model validation passed 30/30, and local WebSocket controls passed 74/74. All six subclass overrides passed strict Pyright after the documented annotation update. The local controls did not use a live server.
Earlier validation passed 173 query, upload, and Chat Completions parsing and streaming tests; this fix does not change those REST paths.