@effect/ai-openai@4.0.4

Effect-TS/effect@effect/ai-openai@4.0.4Oct 13, 2026by effect-bot

Upgrading?

AI Summary

A patch release regenerating the OpenAI client from a pinned specification and introducing deferred tool call validation, along with several public type changes.

Key Highlights

  • Regenerated OpenAI client from pinned specification to fix schema collapses.
  • Type maps and free-form objects now typed as records (e.g., `Metadata` is now `{ readonly [x: string]: string } | null`).
  • Support for `toolCallValidation: 'deferred'` in AI providers.
  • Accept OpenAI web search `find_in_page` actions without a URL.

Breaking Changes

  • Public type changes in `Generated`: `FineTuningJob` is now a union of variants, `Realtime WebSocket` event exports are removed, and `Metadata` type changed.
  • Rename multipart request bodies to `*Multipart` or `*FormData`.
  • Removed unused `Realtime WebSocket` event exports.

New Features

  • Deferred tool call validation support.
  • Fixed composed schemas that collapsed to `Schema.Never`.

Full Release Notes

### Patch Changes

- [#9008](https://github.com/Effect-TS/effect/pull/9008) [`cc843ea`](https://github.com/Effect-TS/effect/commit/cc843ea091e68a57d91f39fc51baff094c50e41d) Thanks @effect-bot! - Add `toolCallValidation: "deferred"` for callers using `disableToolCallResolution: true`. Model-generated tool calls return with `unknown` parameters, including invalid parameters and undeclared tool names, even without a toolkit. Supported by the Anthropic, OpenAI, and OpenAI-compatible providers. Strict validation remains the default; provider-executed calls remain validated.

- [#9067](https://github.com/Effect-TS/effect/pull/9067) [`984b4ab`](https://github.com/Effect-TS/effect/commit/984b4abfb2a804659e63b72f345ead0c1e511caa) Thanks @tim-smart! - Regenerate the OpenAI client from a pinned canonical specification. Fix composed schemas that collapsed to `Schema.Never` and preserve keys in maps and free-form objects.
  
  Public type changes in `Generated`:
  
  - Remove Realtime WebSocket event exports no longer referenced by HTTP operations. Rename multipart request bodies to `*Multipart` or `*FormData`.
  - Require fields specified upstream, including `CreateImageRequest.model`, `AdminApiKey.expires_at`, `ProjectApiKey.owner_project_access`, `AssignedRoleDetails.assignment_sources` and `VoiceResource.type`.
  - Type maps and free-form objects as records instead of `{}`. `Metadata` is now `{ readonly [x: string]: string } | null`.
  - Make `FineTuningJob` a union of `dpo`, `reinforcement` and `hyperparameters` variants. Use `WebSearchCallStatus` for `WebSearchToolCall.status`.

- [#9075](https://github.com/Effect-TS/effect/pull/9075) [`de38e53`](https://github.com/Effect-TS/effect/commit/de38e53651c8f6b36573ee038d0292e199e231b7) Thanks @tim-smart! - Accept OpenAI web search `find_in_page` actions without a URL while still requiring the search pattern.
- Updated dependencies [[`7547a99`](https://github.com/Effect-TS/effect/commit/7547a99f81fa6f7e651d52f3d42081f399bfbca8), [`711719d`](https://github.com/Effect-TS/effect/commit/711719d28d78dddda4d1685b916d1edf1eae9e98), [`8f1ea52`](https://github.com/Effect-TS/effect/commit/8f1ea52f0c073daf445adb987d23860dd76a147c), [`c93485e`](https://github.com/Effect-TS/effect/commit/c93485e365555763b8cf043d2e2a1399ac5bb236), [`37e088f`](https://github.com/Effect-TS/effect/commit/37e088f2af8dc03271bb9e2ca2874b750487b0f5), [`9314666`](https://github.com/Effect-TS/effect/commit/93146666ec49cd6831e9c9d5fa0f9bc72730aaa7), [`a0a26b7`](https://github.com/Effect-TS/effect/commit/a0a26b789c5e865a2f2baf0b29b7b369b100d8be), [`cc843ea`](https://github.com/Effect-TS/effect/commit/cc843ea091e68a57d91f39fc51baff094c50e41d), [`ab90be9`](https://github.com/Effect-TS/effect/commit/ab90be98ea693df4c0d647cf29a4b913ecbef8f3), [`a59b971`](https://github.com/Effect-TS/effect/commit/a59b9711aff7b1af8ab3838b23d0981fb53d7a9a), [`fccf660`](https://github.com/Effect-TS/effect/commit/fccf660d83f1db48087cc32da767c43d8e385f64), [`1bfd8fd`](https://github.com/Effect-TS/effect/commit/1bfd8fddebc978643b7a2077a837b82dc8998177), [`78e4c43`](https://github.com/Effect-TS/effect/commit/78e4c435ede00c7757c3507e60feb821edc85b5f), [`fde67a1`](https://github.com/Effect-TS/effect/commit/fde67a10e9245aa3974ecdca00239de8dfd2cc9f), [`118deef`](https://github.com/Effect-TS/effect/commit/118deefe7c02089b1bc5d202ce3225f05a98cd04), [`cea74c9`](https://github.com/Effect-TS/effect/commit/cea74c92ac839009c6ba112504689d8726f648d7), [`b7c1ac6`](https://github.com/Effect-TS/effect/commit/b7c1ac683775f37c78061da3304d37a800d227d6), [`f837966`](https://github.com/Effect-TS/effect/commit/f8379667c914cc5bbc5acfd41eee0090ee247925), [`09738f4`](https://github.com/Effect-TS/effect/commit/09738f4aa61f4e188d0b1db76b405618f0e31d94), [`22e7129`](https://github.com/Effect-TS/effect/commit/22e7129023f15aea70ec3bb5ab92c93aad605b4e), [`fdcb47e`](https://github.com/Effect-TS/effect/commit/fdcb47e64304b52299bad350aa57722fa9e3c013), [`fc349a1`](https://github.com/Effect-TS/effect/commit/fc349a13f77c5cc4c94752546913b90be8d0bfaa), [`ab90be9`](https://github.com/Effect-TS/effect/commit/ab90be98ea693df4c0d647cf29a4b913ecbef8f3), [`892d14d`](https://github.com/Effect-TS/effect/commit/892d14d88b84f842457494792bf702eb15d5b491), [`077c557`](https://github.com/Effect-TS/effect/commit/077c55770db747f04213af82bb4651376ea04447), [`4a999a3`](https://github.com/Effect-TS/effect/commit/4a999a34e81ef754b959f6ded75b272503bc1163), [`797696a`](https://github.com/Effect-TS/effect/commit/797696a2b7b5b3c73e01b8d72d9a327e49a39708), [`cf5179b`](https://github.com/Effect-TS/effect/commit/cf5179b48867597342ccc9912252ac75637aec06), [`e1c6053`](https://github.com/Effect-TS/effect/commit/e1c6053c5e813596a24793c90cbf732b63c98852)]:
  - effect@4.0.4

Related Repositories