Skip to content

fix(test): run Bun validation with --from-npm - #2625

Merged
HAYDEN-OAI merged 1 commit into
mainfrom
codex/check-bun-from-npm
Sep 5, 2026
Merged

HAYDEN-OAI merged 1 commit into
mainfrom
codex/check-bun-from-npm

Conversation

@HAYDEN-OAI

@HAYDEN-OAI HAYDEN-OAI commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Run Bun's existing validation steps after installing a package selected with --from-npm.

The Bun runner previously returned immediately after the selected-package installation. It never reached npm run tsc or bun test, so the CLI reported success even when either validation command would fail. The local-tarball path already ran those checks.

Make the two installation paths an if/else, then reuse the unchanged validation tail. Selected-package arguments, local tarball copying, filtered non-live tests, full live tests, credential handling, retries, and failure reporting retain their existing behavior.

The production change removes one net line. Only the handwritten ecosystem CLI and its existing test file change; SDK runtime code and dependencies are untouched.

Regression

Add eight table-driven cases to the existing CLI suite. Each executes the actual CLI in an isolated temporary project with synthetic Bun/npm executables that record arguments and return controlled exit codes. The cases cover selected packages, live/non-live execution, installation/typecheck/test failures, and local-tarball controls.

Before the fix, the new cases produced the intended 4 failures and 4 passes: selected packages skipped both checks, and selected-package validation failures incorrectly exited 0. After the fix, all 31 CLI tests pass on Node 24.19.0; the eight new cases also pass on Node 22.22.3 and 26.7.0.

These are command-dispatch and failure-propagation tests, not a claim that a real Bun installation, Bun test suite, or live API request was executed. The Windows command wrappers were reviewed but not executed on Windows locally.

Verification

  • Canonical ./scripts/test tests/ecosystem-cli.test.ts: 31/31 pass on tooling Node 24.19.0.
  • An independent actual-CLI fixture reproduces the baseline false greens, then passes all 11 final cases, including exact selected arguments containing spaces and =, selected mode without any .pack directory, byte-preserved local tarballs, every failure stage, unchanged default zero retries, case-insensitive credential stripping, live-only credential forwarding, and keyless-live rejection before launching a child.
  • Full-project TypeScript 6.0.3 check and an explicitly typechecked CLI --help execution pass.
  • Both changed files pass pinned Oxfmt 0.62.0, pinned Oxlint 1.79.0, and whitespace checks. The CLI's formatting was checked through stdin against its full source because ecosystem fixtures are excluded from the default formatter scan.
  • The full canonical handwritten suite reports 7,603 passed and 1 failed. The sole failure is the existing formatter fixture at tests/oxlint-config.test.ts:464, independently reproduced on clean current main with the same shared cached tool installation. Local Vitest is 4.1.10 instead of pinned 4.1.11. No dependency metadata, configuration, or safeguards were changed to bypass this limitation.

Clean CI subsequently passed all 7,604 unit tests on Node 22.23.2, 24.20.0, and 26.8.1 with pinned Vitest 4.1.11, including all 31 CLI tests and the formatter fixture above. Each runtime also passed 556 generated tests (2 skipped). Packed-package checks and the exact Node 22.0.0 floor passed. Both ecosystem jobs additionally executed real Bun 1.3.14's default local-tarball installation, typecheck, and filtered loopback suite (10 passed); the selected-package dispatch remains covered by the eight explicit CLI fixtures. The external OkTest run passed all 237 tests across 42 suites against the verified merge of this exact head and base.

Adversarial review

Independent reviews checked that only installation selection changed and that both validation calls and their credential options remain unchanged. Final checks cover error short-circuiting, exact argument forwarding, live/non-live selection, default retries, local-tarball behavior, and fixture isolation. The actual CLI was exercised again after the implementation and tests were finalized. No remaining findings were identified within this two-file change.

@HAYDEN-OAI
HAYDEN-OAI requested a review from a team as a code owner September 5, 2026 02:56
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-05T02:57:57.685462Z 873fe32 PR opened
🔒 Security Review ✅ Completed 2026-09-05T03:02:04.631717Z 873fe32 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

32 mixed files remain; 0 existing customizations changed.

Compared eecbebe294be → 873fe32bd72a. Generated baselines verified.

32 existing customizations unchanged
  • api.md
  • scripts/castiron/README.md
  • scripts/castiron/custom_code_report.py
  • scripts/castiron/test_custom_code_report.py
  • src/client.ts
  • src/resources/audio/transcriptions.ts
  • src/resources/audio/translations.ts
  • src/resources/beta/assistants.ts
  • src/resources/beta/beta.ts
  • src/resources/beta/index.ts
  • src/resources/beta/responses/internal-base.ts
  • src/resources/beta/responses/responses.ts
  • src/resources/beta/threads/index.ts
  • src/resources/beta/threads/runs/index.ts
  • src/resources/beta/threads/runs/runs.ts
  • src/resources/beta/threads/threads.ts
  • src/resources/chat/completions/completions.ts
  • src/resources/chat/completions/index.ts
  • src/resources/conversations/index.ts
  • src/resources/embeddings.ts
  • src/resources/files.ts
  • src/resources/fine-tuning/checkpoints/permissions.ts
  • src/resources/images.ts
  • src/resources/responses/internal-base.ts
  • src/resources/responses/responses.ts
  • src/resources/skills/skills.ts
  • src/resources/skills/versions/versions.ts
  • src/resources/vector-stores/file-batches.ts
  • src/resources/vector-stores/files.ts
  • src/resources/webhooks/index.ts
  • src/resources/webhooks/webhooks.ts
  • tests/lib/data-residency.test.ts

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 33940836706 --repo openai/openai-node \
  --name castiron-custom-code-33940836706-1 --dir /tmp/castiron-custom-code-33940836706-1
git apply --stat /tmp/castiron-custom-code-33940836706-1/custom-code.patch
cat /tmp/castiron-custom-code-33940836706-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin eecbebe294be7e657c99a34eb104a6a4b507335c 873fe32bd72aa72fd31a8a6a67c90075badb3b4f
python3 scripts/castiron/custom_code_report.py report \
  --base eecbebe294be7e657c99a34eb104a6a4b507335c \
  --head 873fe32bd72aa72fd31a8a6a67c90075badb3b4f --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-873fe32bd72a
cat /tmp/castiron-custom-code-873fe32bd72a/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

@openai-sdks

openai-sdks Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 237/237 SDK tests passed in 9.363s for Node SDK PR #2625.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 113ms
tests/chat-completions-create.test.ts ✅ Passed 185ms
tests/chat-completions-stream.test.ts ✅ Passed 177ms
tests/files-content-binary.test.ts ✅ Passed 159ms
tests/files-create-multipart.test.ts ✅ Passed 132ms
tests/files-list-pagination.test.ts ✅ Passed 134ms
tests/initialize-config.test.ts ✅ Passed 147ms
tests/instance-isolation.test.ts ✅ Passed 86ms
tests/models-list.test.ts ✅ Passed 115ms
tests/responses-background-lifecycle.test.ts ✅ Passed 210ms
tests/responses-body-method-errors.test.ts ✅ Passed 262ms
tests/responses-cancel-timeout.test.ts ✅ Passed 215ms
tests/responses-cancel.test.ts ✅ Passed 196ms
tests/responses-compact-retries.test.ts ✅ Passed 192ms
tests/responses-compact.test.ts ✅ Passed 172ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 97ms
tests/responses-create-advanced.test.ts ✅ Passed 167ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.085s
tests/responses-create-errors.test.ts ✅ Passed 176ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 144ms
tests/responses-create-retries.test.ts ✅ Passed 231ms
tests/responses-create-stream-failures.test.ts ✅ Passed 171ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 2.139s
tests/responses-create-stream-wire.test.ts ✅ Passed 2.214s
tests/responses-create-stream.test.ts ✅ Passed 73ms
tests/responses-create-terminal-states.test.ts ✅ Passed 188ms
tests/responses-create-timeout.test.ts ✅ Passed 253ms
tests/responses-create.test.ts ✅ Passed 163ms
tests/responses-delete.test.ts ✅ Passed 182ms
tests/responses-input-items-errors.test.ts ✅ Passed 196ms
tests/responses-input-items-list.test.ts ✅ Passed 162ms
tests/responses-input-items-options.test.ts ✅ Passed 96ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 229ms
tests/responses-input-tokens-count.test.ts ✅ Passed 170ms
tests/responses-malformed-inputs.test.ts ✅ Passed 1.849s
tests/responses-not-found-errors.test.ts ✅ Passed 219ms
tests/responses-parse.test.ts ✅ Passed 201ms
tests/responses-retrieve-retries.test.ts ✅ Passed 274ms
tests/responses-retrieve.test.ts ✅ Passed 192ms
tests/responses-stored-method-errors.test.ts ✅ Passed 434ms
tests/retry-behavior.test.ts ✅ Passed 2.948s
tests/sdk-error-shape.test.ts ✅ Passed 237ms

View OkTest run #33940475142

SDK merge (43aa94975c46) · head (873fe32bd72a) · base (eecbebe294be) · OkTest (2b1bdfd25e98)

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed exact head 873fe32 against the requested outcome: --from-npm selects only the Bun installation source and must still flow through the shared typecheck and test tail with unchanged live/non-live arguments, credential handling, and failure propagation. The if/else removes only the premature return; each failure still short-circuits at the correct stage and local-tarball behavior is unchanged. All 31 ecosystem CLI tests pass, the eight Bun dispatch/failure cases pass on local Node 22.15.1, 24.16.0, and 26.2.0, and Oxfmt/Oxlint pass. No blocking findings.

@HAYDEN-OAI
HAYDEN-OAI added this pull request to the merge queue Sep 5, 2026
Merged via the queue into main with commit 74f58a9 Sep 5, 2026
49 checks passed
@HAYDEN-OAI
HAYDEN-OAI deleted the codex/check-bun-from-npm branch September 5, 2026 03:32
@openai-sdks openai-sdks Bot mentioned this pull request Sep 5, 2026
gh-actions-shared Bot pushed a commit to xf-qubit/openai-node that referenced this pull request Sep 5, 2026
## Summary

Reject unknown positional ecosystem-test project names through the
existing yargs validation hook, before package discovery, builds,
fixture changes, proxy startup, or worker dispatch.

Currently, `ecosystem-tests/cli.ts bun-typo --skipPack --noCleanup`
exits successfully without running a project. Mixed valid/invalid
selections silently drop the invalid names; numeric zero and empty
positional names can instead fall back to the default project set. The
CLI already advertises a fixed set of supported project names.

The check uses the existing project registry before `--skip` mutates it.
Valid selections, default-all behavior, help, intentionally skipped
valid projects, package-option aliases, and parallel workers retain
their existing behavior. This does not change the argument grammar or
the separate Bun `--from-npm` fix in openai#2625.

## Verification

**CI update at `73ece2a`:** all 38 repository checks are terminal (22
successful, 16 skipped), with no failures. [Pinned
CI](https://github.com/openai/openai-node/actions/runs/33941769535)
passes 7,603 unit tests and 556 generated tests on each of Node 22.23.2,
24.20.0, and 26.8.1, including all 30 CLI tests. Packed-package, exact
Node 22.0.0 consumer, and both ecosystem runs pass. [External
OkTest](https://github.com/openai/ok-test/actions/runs/33941791499)
passes all 237 tests across 42 suites, and its report job completed; the
tested SDK merge has the exact base/head parents. Code and security
reviews completed without findings.

- All seven new actual-CLI regression cases failed against unchanged
main and pass with this fix. They cover unknown/mixed selections,
inherited property names, numeric zero, empty names, post-`--`
arguments, and rejection before packing. Isolated fixtures also assert
that no setup artifacts or commands were created.
- All 30 CLI tests pass on Node 24.19.0; the seven new cases also pass
on Node 22.22.3 and 26.7.0.
- An independent 23-case before/after harness exercises the actual CLI
with owned command stubs, including preserved
valid/default/skip/help/parallel/alias behavior and rejection before
build/pack dispatch. These are command-boundary checks, not real
ecosystem installations or live API tests.
- This patch and openai#2625 compose cleanly, and all 38 combined CLI tests
pass in an isolated checkout.
- Repository-wide TypeScript 6.0.3 checking and the explicit CLI
`ts-node --typeCheck ... --help` check pass. Both changed files pass
pinned Oxlint 1.79.0 and Oxfmt 0.62.0 checks.
- The canonical handwritten suite reports **7,602 passed / 1 failed**
locally. The sole failure is the unchanged generated-import formatter
fixture at `tests/oxlint-config.test.ts:464`, also reproduced on clean
main. Local unit runs use cached Vitest 4.1.10 rather than the
repository's 4.1.11 pin; CI will verify the pinned environment.

## Scope and review

Only the handwritten ecosystem CLI and its existing test file change: 39
additions and one deletion. Both paths are absent from the verified
current pure-generated snapshot. No SDK runtime, exported API,
dependency, lockfile, generation metadata, or custom-code budget
changes.

Adversarial self-review and independent security/compatibility/edge-case
review found no remaining actionable issues after the final formatting
refinement. No custom parser or additional validation framework is
introduced.
gh-actions-shared Bot pushed a commit to xf-qubit/openai-node that referenced this pull request Sep 8, 2026
Automated Release PR
---


##
[7.11.0](openai/openai-node@v7.10.0...v7.11.0)
(2026-09-08)


### Features

* **api:** Add prompt cache diagnostics
([openai#2608](openai#2608))
([f83de8f](openai@f83de8f))
* **api:** add service-account API key expiration fields
([openai#2618](openai#2618))
([eecbebe](openai@eecbebe))
* **api:** correct function argument completion event fields
(openapi-545)
([openai#2611](openai#2611))
([31bf7e7](openai@31bf7e7))
* **api:** recognize incomplete web search call status
([openai#2576](openai#2576))
([c093c44](openai@c093c44))


### Bug Fixes

* **assistants:** retain terminal message snapshots
([openai#2650](openai#2650))
([414677e](openai@414677e))
* **audio:** only signal started recording processes
([openai#2665](openai#2665))
([cebdf7c](openai@cebdf7c))
* **audio:** prefer readable inputs over body metadata
([openai#2548](openai#2548))
([86ff7d5](openai@86ff7d5))
* **audio:** use ALSA card identifiers when recording
([openai#2564](openai#2564))
([67da19c](openai@67da19c))
* **audio:** wait for input cleanup before reporting success
([openai#2624](openai#2624))
([5ed87fe](openai@5ed87fe))
* **auth:** account for token exchange elapsed time
([openai#2609](openai#2609))
([b0f6f20](openai@b0f6f20))
* **auth:** validate Azure metadata access token values
([openai#2523](openai#2523))
([32b4d35](openai@32b4d35))
* **azure:** carry declared options through withOptions and fix
deployment paths
([openai#2514](openai#2514))
([f8f29fb](openai@f8f29fb))
* **bedrock:** cancel requests awaiting AWS credentials
([openai#2610](openai#2610))
([97c94e4](openai@97c94e4))
* bound partial number recovery to its token
([openai#2692](openai#2692))
([0d306ca](openai@0d306ca))
* **build:** fail on reported transpile errors
([openai#2638](openai#2638))
([833e3e8](openai@833e3e8))
* **build:** fail when a compiler worker is signaled
([openai#2633](openai#2633))
([cd79cd1](openai@cd79cd1))
* **build:** honor configured compiler worker limits
([openai#2635](openai#2635))
([aa08b44](openai@aa08b44))
* **build:** narrow Git-install staging detection
([openai#2621](openai#2621))
([a6170d3](openai@a6170d3))
* **build:** postprocess the selected package manifest
([openai#2620](openai#2620))
([1850d58](openai@1850d58))
* **build:** preserve CommonJS source-map positions
([openai#2623](openai#2623))
([df0034d](openai@df0034d))
* **build:** preserve config-relative compiler project paths
([openai#2637](openai#2637))
([3acb064](openai@3acb064))
* **build:** preserve declaration file import specifiers
([openai#2659](openai#2659))
([0098c2e](openai@0098c2e))
* **ci:** propagate Node matrix check failures
([openai#2569](openai#2569))
([bff92c9](openai@bff92c9))
* **ci:** serialize release-please branch updates
([openai#2631](openai#2631))
([bb0e400](openai@bb0e400))
* clean up failed mock-server startups
([openai#2558](openai#2558))
([83c92f0](openai@83c92f0))
* **deps:** bump qs to 6.16.0 for security fixes
([openai#2588](openai#2588))
([4e5c6e3](openai@4e5c6e3))
* **docs:** await headers in Next.js webhook examples
([openai#2595](openai#2595))
([7e48f05](openai@7e48f05))
* **docs:** correct the chat streaming helper contract
([openai#2596](openai#2596))
([135ac7e](openai@135ac7e))
* **docs:** include image detail in the Vision example
([openai#2598](openai#2598))
([e76bb16](openai@e76bb16))
* **docs:** omit absent Bedrock provider session tokens
([openai#2597](openai#2597))
([41f85bd](openai@41f85bd))
* **ecosystem:** preserve retry delays in parallel workers
([openai#2673](openai#2673))
([6164745](openai@6164745))
* **ecosystem:** reject invalid retry counts
([openai#2642](openai#2642))
([d0e2bcf](openai@d0e2bcf))
* **ecosystem:** restore explicit web type-test module markers
([openai#2584](openai#2584))
([3c189f4](openai@3c189f4))
* **embeddings:** preserve numeric output with body overrides
([openai#2549](openai#2549))
([97d1ae7](openai@97d1ae7))
* **embeddings:** preserve numeric responses after request hooks
([openai#2590](openai#2590))
([5202b13](openai@5202b13))
* **embeddings:** reject incomplete float32 vectors
([openai#2615](openai#2615))
([3940a20](openai@3940a20))
* **embeddings:** validate response collection before decoding
([openai#2686](openai#2686))
([888811f](openai@888811f))
* **events:** preserve unbound listener receivers
([openai#2644](openai#2644))
([c8238e7](openai@c8238e7))
* **examples:** annotate Responses WebSocket turn result
([openai#2585](openai#2585))
([dde19c5](openai@dde19c5))
* **examples:** avoid extra requests for empty tool calls
([openai#2672](openai#2672))
([be292d3](openai@be292d3))
* **examples:** avoid unhandled WebSocket rejections
([openai#2669](openai#2669))
([744b0ad](openai@744b0ad))
* **examples:** cancel Edge streams when requests abort
([openai#2530](openai#2530))
([18100a1](openai@18100a1))
* **examples:** close failed streaming responses
([openai#2531](openai#2531))
([eb9b468](openai@eb9b468))
* **examples:** close multi-agent WebSockets on terminal responses
([openai#2533](openai#2533))
([51ec453](openai@51ec453))
* **examples:** drain manual conversation error output
([openai#2629](openai#2629))
([e488b53](openai@e488b53))
* **examples:** find structured-output tool calls
([openai#2572](openai#2572))
([84870a8](openai@84870a8))
* **examples:** keep tracking fine-tuning file validation
([openai#2528](openai#2528))
([63312f2](openai@63312f2))
* **examples:** preserve background stream resume cursors
([openai#2671](openai#2671))
([b7398e3](openai@b7398e3))
* **examples:** reject early multi-agent WebSocket closure
([openai#2599](openai#2599))
([c6320f0](openai@c6320f0))
* **examples:** reject early Realtime socket closure
([openai#2639](openai#2639))
([7db48ec](openai@7db48ec))
* **examples:** reject incomplete image streams
([openai#2617](openai#2617))
([ef39397](openai@ef39397))
* **examples:** reject incomplete multi-agent streams
([openai#2666](openai#2666))
([152b98d](openai@152b98d))
* **examples:** reject unsuccessful background responses
([openai#2600](openai#2600))
([902a931](openai@902a931))
* **examples:** reject unsuccessful Responses streams
([openai#2645](openai#2645))
([86acb95](openai@86acb95))
* **examples:** reject unsuccessful structured-tool responses
([openai#2668](openai#2668))
([99aa303](openai@99aa303))
* **examples:** report audio demo failures
([openai#2570](openai#2570))
([29c0572](openai@29c0572))
* **examples:** report image-streaming failures
([openai#2563](openai#2563))
([947c555](openai@947c555))
* **examples:** report multi-agent streaming failures
([openai#2550](openai#2550))
([19d9151](openai@19d9151))
* **examples:** report nonstreaming request failures
([openai#2603](openai#2603))
([384dc26](openai@384dc26))
* **examples:** report premature WebSocket closure
([openai#2544](openai#2544))
([7eb5f7e](openai@7eb5f7e))
* **examples:** report unsuccessful Azure Realtime responses
([openai#2612](openai#2612))
([2b62209](openai@2b62209))
* **examples:** report unsuccessful fine-tuning jobs
([openai#2616](openai#2616))
([e761c16](openai@e761c16))
* **examples:** report unsuccessful Realtime responses
([openai#2559](openai#2559))
([5d3e584](openai@5d3e584))
* **examples:** respect raw streaming proxy backpressure
([openai#2663](openai#2663))
([a11bb1b](openai@a11bb1b))
* **examples:** reuse completed background responses
([openai#2557](openai#2557))
([8e1977b](openai@8e1977b))
* **examples:** serialize missing book lookup results
([openai#2573](openai#2573))
([db7e371](openai@db7e371))
* **examples:** stop polling failed training files
([openai#2592](openai#2592))
([1d67945](openai@1d67945))
* **examples:** support redirected streaming output
([openai#2546](openai#2546))
([8df2e3a](openai@8df2e3a))
* **examples:** use the default audio recording input
([openai#2593](openai#2593))
([6153484](openai@6153484))
* **format:** ignore missing literal file-list paths
([openai#2670](openai#2670))
([516a849](openai@516a849))
* **format:** preserve file-list scope
([openai#2568](openai#2568))
([7faff0e](openai@7faff0e))
* identify modern Edge browser runtime headers
([openai#2628](openai#2628))
([9cdf6f0](openai@9cdf6f0))
* isolate monthly node review publication
([openai#2691](openai#2691))
([3970dae](openai@3970dae))
* isolate realtime connection credentials
([openai#2690](openai#2690))
([e9db491](openai@e9db491))
* keep formatter inputs on LF across Git checkouts
([openai#2515](openai#2515))
([074618f](openai@074618f))
* **lint:** preserve leading-dash generated file paths
([openai#2640](openai#2640))
([3b91a83](openai@3b91a83))
* **pagination:** follow next cursors through empty pages
([openai#2561](openai#2561))
([9ea39ce](openai@9ea39ce))
* parse JSON media types case-insensitively
([openai#2551](openai#2551))
([7ea7926](openai@7ea7926))
* **polling:** honor zero custom polling intervals
([openai#2518](openai#2518))
([0cd94bb](openai@0cd94bb))
* **polling:** treat a cancelled vector store file as terminal
([openai#2506](openai#2506))
([43c1007](openai@43c1007))
* preserve alternate Headers inputs
([openai#2560](openai#2560))
([5d36ff4](openai@5d36ff4))
* preserve CommonJS constructor inheritance
([openai#2547](openai#2547))
([aafb64e](openai@aafb64e))
* preserve cross-realm error causes
([openai#2555](openai#2555))
([bfec504](openai@bfec504))
* preserve own Zod schema definition names
([openai#2695](openai#2695))
([f65d190](openai@f65d190))
* preserve package selection in parallel ecosystem tests
([openai#2516](openai#2516))
([fa0ce41](openai@fa0ce41))
* preserve streamed API error classification
([openai#2694](openai#2694))
([8e2c6ee](openai@8e2c6ee))
* **realtime:** preserve base URL routing components
([openai#2567](openai#2567))
([0f2e22d](openai@0f2e22d))
* **responses:** omit parsed values from replayed history
([openai#2634](openai#2634))
([124b652](openai@124b652))
* **responses:** parse namespaced function tools
([openai#2574](openai#2574))
([4d86684](openai@4d86684))
* **responses:** validate indexed response collections
([openai#2687](openai#2687))
([1ecbf52](openai@1ecbf52))
* **runners:** observe cancellation after completion callbacks
([openai#2591](openai#2591))
([27f5c6a](openai@27f5c6a))
* **runners:** preserve frozen input history
([openai#2525](openai#2525))
([1211038](openai@1211038))
* **runners:** reuse caller abort listeners across tool turns
([openai#2594](openai#2594))
([57d0da4](openai@57d0da4))
* **runners:** suppress content events for input history
([openai#2520](openai#2520))
([37d6fc2](openai@37d6fc2))
* serialize tool-call IDs once per completion
([openai#2688](openai#2688))
([8afb23e](openai@8afb23e))
* **streaming:** abort before early-exit cleanup
([openai#2613](openai#2613))
([03acf94](openai@03acf94))
* **streaming:** avoid duplicate terminal tool argument events
([openai#2658](openai#2658))
([12e5db6](openai@12e5db6))
* **streaming:** interrupt pending reads on cancellation
([openai#2556](openai#2556))
([2d7a767](openai@2d7a767))
* **streaming:** surface server error frames and settle streams past
throwing listeners
([openai#2502](openai#2502))
([17a661e](openai@17a661e))
* support Edge Runtime without Node process
([openai#2552](openai#2552))
([5dc4deb](openai@5dc4deb))
* **test:** cancel Steady commands waiting for cache locks
([openai#2636](openai#2636))
([8896395](openai@8896395))
* **test:** preserve unrelated processes on mock startup failure
([openai#2622](openai#2622))
([6896e66](openai@6896e66))
* **test:** reap Steady commands when lease creation fails
([openai#2664](openai#2664))
([518756a](openai@518756a))
* **test:** reject HTTP errors in mock health checks
([openai#2667](openai#2667))
([7b9e0b0](openai@7b9e0b0))
* **test:** reject unknown ecosystem project names
([openai#2626](openai#2626))
([fcd12bb](openai@fcd12bb))
* **test:** run Bun validation with --from-npm
([openai#2625](openai#2625))
([74f58a9](openai@74f58a9))
* **test:** use a monotonic Steady lock timeout
([openai#2661](openai#2661))
([7b5d120](openai@7b5d120))
* **types:** account for optional event arguments
([openai#2527](openai#2527))
([548a651](openai@548a651))
* **types:** include missing parsed response stream events
([openai#2521](openai#2521))
([6a9db07](openai@6a9db07))
* **types:** preserve custom tool factory metadata
([openai#2526](openai#2526))
([13dca7b](openai@13dca7b))
* **types:** preserve runnable function tuple positions
([openai#2524](openai#2524))
([e345d0f](openai@e345d0f))
* **uploads:** accept cross-realm ArrayBuffers
([openai#2529](openai#2529))
([69d7bda](openai@69d7bda))
* **uploads:** preserve explicit empty filenames
([openai#2532](openai#2532))
([eabb487](openai@eabb487))
* **uploads:** reject zero batch upload concurrency
([openai#2519](openai#2519))
([8b9405a](openai@8b9405a))
* validate partial image indices in streaming example
([openai#2693](openai#2693))
([a9a4440](openai@a9a4440))
* **zod:** preserve strict schema compatibility with Zod 4.5.4
([openai#2677](openai#2677))
([c11870e](openai@c11870e))
* **zod:** retain the original tool parameter schema
([openai#2662](openai#2662))
([fdb038e](openai@fdb038e))


### Performance Improvements

* **bedrock:** avoid copying repeated query values
([openai#2545](openai#2545))
([80ab919](openai@80ab919))


### Chores

* **api:** document throttling and model overload responses — SDK-235
([openai#2632](openai#2632))
([9dd0524](openai@9dd0524))
* clarify Response types and remove unused handwritten code
([openai#2660](openai#2660))
([86152ab](openai@86152ab))
* **deps-dev:** bump @aws-sdk/credential-provider-node from 3.972.78 to
3.972.81 ([openai#2681](openai#2681))
([48629a3](openai@48629a3))
* **deps-dev:** bump @cloudflare/workers-types from 5.20260816.1 to
5.20260823.1 in /ecosystem-tests/cloudflare-worker
([openai#2535](openai#2535))
([dc14bf5](openai@dc14bf5))
* **deps-dev:** bump @cloudflare/workers-types from 5.20260823.1 to
5.20260830.1 in /ecosystem-tests/cloudflare-worker
([openai#2676](openai#2676))
([ae04066](openai@ae04066))
* **deps-dev:** bump @smithy/signature-v4 from 5.7.2 to 5.7.3
([openai#2679](openai#2679))
([41ca20d](openai@41ca20d))
* **deps-dev:** bump @swc/core from 1.15.47 to 1.16.1
([openai#2538](openai#2538))
([5c04dc4](openai@5c04dc4))
* **deps-dev:** bump fast-uri from 3.1.5 to 3.1.7 in
/ecosystem-tests/ts-browser-webpack
([openai#2579](openai#2579))
([34380bf](openai@34380bf))
* **deps-dev:** bump fast-uri from 3.1.5 to 3.1.7 in
/ecosystem-tests/vercel-edge
([openai#2577](openai#2577))
([511d1e4](openai@511d1e4))
* **deps-dev:** bump oxlint from 1.76.0 to 1.79.0
([openai#2542](openai#2542))
([2683c3a](openai@2683c3a))
* **deps-dev:** bump oxlint from 1.79.0 to 1.80.0
([openai#2683](openai#2683))
([02d5fb0](openai@02d5fb0))
* **deps-dev:** bump puppeteer from 25.7.0 to 25.8.0 in
/ecosystem-tests/browser-direct-import
([openai#2534](openai#2534))
([f039c09](openai@f039c09))
* **deps-dev:** bump puppeteer from 25.7.0 to 25.8.0 in
/ecosystem-tests/ts-browser-webpack
([openai#2539](openai#2539))
([5828818](openai@5828818))
* **deps-dev:** bump puppeteer from 25.8.0 to 25.9.0 in
/ecosystem-tests/browser-direct-import
([openai#2675](openai#2675))
([bebd72f](openai@bebd72f))
* **deps-dev:** bump puppeteer from 25.8.0 to 25.9.0 in
/ecosystem-tests/ts-browser-webpack
([openai#2680](openai#2680))
([fe3770f](openai@fe3770f))
* **deps-dev:** bump ultracite from 7.10.0 to 7.10.5
([openai#2537](openai#2537))
([6d37b30](openai@6d37b30))
* **deps-dev:** bump vitest from 4.1.10 to 4.1.11
([openai#2541](openai#2541))
([6ea24b3](openai@6ea24b3))
* **deps-dev:** bump webpack from 5.109.2 to 5.110.2 in
/ecosystem-tests/ts-browser-webpack
([openai#2682](openai#2682))
([73405d1](openai@73405d1))
* **deps-dev:** bump wrangler from 4.125.0 to 4.127.1 in
/ecosystem-tests/cloudflare-worker
([openai#2678](openai#2678))
([0d92742](openai@0d92742))
* **deps:** bump @azure/identity from 4.13.1 to 4.13.2
([openai#2540](openai#2540))
([0318287](openai@0318287))
* **deps:** bump express and @types/express
([openai#2684](openai#2684))
([c581c17](openai@c581c17))
* **ecosystem:** remove unused proxy stub
([openai#2641](openai#2641))
([ce1713a](openai@ce1713a))
* migrate to forked steady
([openai#2587](openai#2587))
([67ce45d](openai@67ce45d))


### Documentation

* correct Bun ecosystem test instructions
([openai#2627](openai#2627))
([3434b42](openai@3434b42))
* correct error handling diagnostics
([openai#2630](openai#2630))
([d334d8c](openai@d334d8c))
* **helpers:** remove undefined main call from parsing example
([openai#2648](openai#2648))
([d8f6be9](openai@d8f6be9))
* **realtime:** report unsuccessful responses in the guide
([openai#2647](openai#2647))
([f58b1fd](openai@f58b1fd))
* **streaming:** reject unsuccessful background responses
([openai#2614](openai#2614))
([1025f7a](openai@1025f7a))
* **tools:** support TypeScript 4.9 in the function loop
([openai#2649](openai#2649))
([42e852b](openai@42e852b))

---
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants