@depup/ai-sdk__openai 3.0.52-depup.0 → 4.0.17-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +946 -30
  2. package/README.md +2 -2
  3. package/changes.json +1 -1
  4. package/dist/index.d.ts +490 -85
  5. package/dist/index.js +4147 -1879
  6. package/dist/index.js.map +1 -1
  7. package/dist/internal/index.d.ts +581 -71
  8. package/dist/internal/index.js +3490 -1886
  9. package/dist/internal/index.js.map +1 -1
  10. package/docs/03-openai.mdx +528 -165
  11. package/package.json +16 -16
  12. package/src/chat/convert-openai-chat-usage.ts +7 -4
  13. package/src/chat/convert-to-openai-chat-messages.ts +212 -77
  14. package/src/chat/map-openai-finish-reason.ts +2 -2
  15. package/src/chat/openai-chat-api.ts +8 -2
  16. package/src/chat/{openai-chat-options.ts → openai-chat-language-model-options.ts} +27 -3
  17. package/src/chat/openai-chat-language-model.ts +106 -171
  18. package/src/chat/openai-chat-prepare-tools.ts +7 -7
  19. package/src/chat/openai-chat-prompt.ts +8 -4
  20. package/src/completion/convert-openai-completion-usage.ts +2 -2
  21. package/src/completion/convert-to-openai-completion-prompt.ts +2 -3
  22. package/src/completion/map-openai-finish-reason.ts +2 -2
  23. package/src/completion/openai-completion-api.ts +5 -2
  24. package/src/completion/{openai-completion-options.ts → openai-completion-language-model-options.ts} +5 -1
  25. package/src/completion/openai-completion-language-model.ts +73 -37
  26. package/src/embedding/{openai-embedding-options.ts → openai-embedding-model-options.ts} +5 -1
  27. package/src/embedding/openai-embedding-model.ts +26 -9
  28. package/src/files/openai-files-api.ts +17 -0
  29. package/src/files/openai-files-options.ts +22 -0
  30. package/src/files/openai-files.ts +100 -0
  31. package/src/image/openai-image-model-options.ts +123 -0
  32. package/src/image/openai-image-model.ts +71 -92
  33. package/src/index.ts +19 -6
  34. package/src/internal/index.ts +7 -6
  35. package/src/openai-config.ts +11 -7
  36. package/src/openai-language-model-capabilities.ts +4 -2
  37. package/src/openai-provider.ts +116 -34
  38. package/src/openai-stream-error.ts +181 -0
  39. package/src/openai-tools.ts +11 -1
  40. package/src/realtime/index.ts +2 -0
  41. package/src/realtime/openai-realtime-event-mapper.ts +436 -0
  42. package/src/realtime/openai-realtime-model-options.ts +3 -0
  43. package/src/realtime/openai-realtime-model.ts +111 -0
  44. package/src/responses/convert-openai-responses-usage.ts +10 -4
  45. package/src/responses/convert-to-openai-responses-input.ts +468 -107
  46. package/src/responses/map-openai-responses-finish-reason.ts +2 -2
  47. package/src/responses/openai-responses-api.ts +276 -54
  48. package/src/responses/{openai-responses-options.ts → openai-responses-language-model-options.ts} +89 -9
  49. package/src/responses/openai-responses-language-model.ts +469 -107
  50. package/src/responses/openai-responses-prepare-tools.ts +120 -26
  51. package/src/responses/openai-responses-provider-metadata.ts +13 -2
  52. package/src/skills/openai-skills-api.ts +31 -0
  53. package/src/skills/openai-skills.ts +83 -0
  54. package/src/speech/{openai-speech-options.ts → openai-speech-model-options.ts} +5 -1
  55. package/src/speech/openai-speech-model.ts +29 -13
  56. package/src/tool/apply-patch.ts +33 -32
  57. package/src/tool/code-interpreter.ts +40 -41
  58. package/src/tool/computer.ts +147 -0
  59. package/src/tool/custom.ts +2 -8
  60. package/src/tool/file-search.ts +3 -3
  61. package/src/tool/image-generation.ts +2 -2
  62. package/src/tool/local-shell.ts +2 -2
  63. package/src/tool/mcp.ts +3 -3
  64. package/src/tool/shell.ts +9 -4
  65. package/src/tool/tool-search.ts +4 -4
  66. package/src/tool/web-search-preview.ts +2 -2
  67. package/src/tool/web-search.ts +10 -2
  68. package/src/transcription/{openai-transcription-options.ts → openai-transcription-model-options.ts} +25 -1
  69. package/src/transcription/openai-transcription-model.ts +385 -20
  70. package/dist/index.d.mts +0 -1193
  71. package/dist/index.mjs +0 -6846
  72. package/dist/index.mjs.map +0 -1
  73. package/dist/internal/index.d.mts +0 -1187
  74. package/dist/internal/index.mjs +0 -6648
  75. package/dist/internal/index.mjs.map +0 -1
  76. package/src/image/openai-image-options.ts +0 -31
package/CHANGELOG.md CHANGED
@@ -1,78 +1,996 @@
1
1
  # @ai-sdk/openai
2
2
 
3
- ## 3.0.52
3
+ ## 4.0.17
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - d42076d: Add AI Gateway hint to provider READMEs
7
+ - Updated dependencies [02ffdcb]
8
+ - Updated dependencies [76cb673]
9
+ - @ai-sdk/provider-utils@5.0.12
8
10
 
9
- ## 3.0.51
11
+ ## 4.0.16
10
12
 
11
13
  ### Patch Changes
12
14
 
13
- - Updated dependencies [6247886]
14
- - @ai-sdk/provider-utils@4.0.23
15
+ - 75f86f4: fix(provider/openai, provider/open-responses): throw a descriptive error when the Responses API returns a 200 with no `output`
15
16
 
16
- ## 3.0.50
17
+ A successful (200) Responses body missing the `output` array previously threw an opaque `output is not iterable` TypeError from `doGenerate`. Both providers now surface a clear `APICallError` ("Responses API returned no output …"), including the incomplete-details reason (and status, for open-responses) when present. When the body includes a `response.error`, its message is surfaced first so upstream error details aren't masked by the generic fallback. This makes malformed/incomplete upstream responses actionable instead of a cryptic crash.
18
+
19
+ - Updated dependencies [cd06458]
20
+ - @ai-sdk/provider-utils@5.0.11
21
+
22
+ ## 4.0.15
23
+
24
+ ### Patch Changes
25
+
26
+ - 0063c2d: Add the client-executed OpenAI Responses API computer tool with batched actions and screenshot outputs.
27
+
28
+ ## 4.0.14
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [31c7be8]
33
+ - @ai-sdk/provider-utils@5.0.10
34
+
35
+ ## 4.0.13
36
+
37
+ ### Patch Changes
38
+
39
+ - 7805e4a: Fix realtime transcription auth header handling: per-call `authorization` headers now override configuration headers regardless of header-key casing (last case-variant wins), and the `Bearer` scheme is matched case-insensitively.
40
+ - cd12954: Reject empty OpenAI, Anthropic, and Replicate base URLs with a helpful AI SDK
41
+ invalid argument error.
42
+ - Updated dependencies [4be62c1]
43
+ - Updated dependencies [7805e4a]
44
+ - Updated dependencies [cd12954]
45
+ - @ai-sdk/provider-utils@5.0.9
46
+
47
+ ## 4.0.12
48
+
49
+ ### Patch Changes
50
+
51
+ - e193290: Add `connectToWebSocket` to `@ai-sdk/provider-utils`: a shared WebSocket connect layer (constructor resolution, header hygiene, abort wiring, message decoding) analogous to `postToApi` for HTTP. The openai and xai streaming transcription models now use it instead of hand-rolled connects. For openai and xai this also means WebSocket constructor failures now surface as stream errors instead of throwing synchronously from `doStream`, an already-aborted signal no longer constructs a socket, and the caller's audio stream is cancelled on pre-open failures. Messages are processed in order with close handling deferred behind pending frames, audio send loops apply backpressure via the socket's bufferedAmount, and failed sends cancel the caller's audio stream.
52
+ - e193290: Fix streaming transcription over header-capable WebSocket implementations: the realtime WebSocket handshake sent the api key in both the `openai-insecure-api-key` subprotocol and the `Authorization` header, which OpenAI rejects ("You must only send one of protocol api key and Authorization header"). The Authorization header is now stripped when the subprotocol carries the key.
53
+ - e193290: Strip undefined header values before the streaming transcription WebSocket constructor (header-capable implementations like `ws` throw on undefined values).
54
+ - Updated dependencies [e193290]
55
+ - @ai-sdk/provider-utils@5.0.8
56
+
57
+ ## 4.0.11
58
+
59
+ ### Patch Changes
60
+
61
+ - b2b1bb9: feat(provider/openai): add GPT-5.6 reasoning and prompt cache controls
62
+
63
+ ## 4.0.10
64
+
65
+ ### Patch Changes
66
+
67
+ - fdb6d5d: feat(provider/openai,provider/gateway): add gpt-5.6 model ids
68
+ - Updated dependencies [0f93c57]
69
+ - @ai-sdk/provider@4.0.3
70
+ - @ai-sdk/provider-utils@5.0.7
71
+
72
+ ## 4.0.9
73
+
74
+ ### Patch Changes
75
+
76
+ - ac306ed: Fix `StreamingToolCallTracker` finalizing streaming tool calls on parsable partial JSON. Tool calls now only finalize during stream flush, restoring the behavior of #13137: a parsable argument buffer can still be the prefix of a longer argument string, so finalizing early could act on truncated tool inputs.
77
+ - Updated dependencies [ac306ed]
78
+ - @ai-sdk/provider-utils@5.0.6
79
+
80
+ ## 4.0.8
81
+
82
+ ### Patch Changes
83
+
84
+ - b51ed36: Send inline image file parts in OpenAI chat requests as data URLs instead of bare base64 strings.
85
+
86
+ ## 4.0.7
17
87
 
18
88
  ### Patch Changes
19
89
 
20
- - Updated dependencies [0469aed]
21
- - @ai-sdk/provider-utils@4.0.22
90
+ - 5c5c0f5: Add experimental streaming transcription support for transcription models, including OpenAI `gpt-realtime-whisper` and xAI WebSocket STT.
91
+ - Updated dependencies [5c5c0f5]
92
+ - @ai-sdk/provider@4.0.2
93
+ - @ai-sdk/provider-utils@5.0.5
22
94
 
23
- ## 3.0.49
95
+ ## 4.0.6
24
96
 
25
97
  ### Patch Changes
26
98
 
27
- - bc01093: fix(openai): support file-url parts in tool output content
99
+ - Updated dependencies [c6f5e62]
100
+ - @ai-sdk/provider-utils@5.0.4
28
101
 
29
- ## 3.0.48
102
+ ## 4.0.5
30
103
 
31
104
  ### Patch Changes
32
105
 
33
- - 9c548de: Add `gpt-5.4-mini`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano`, and `gpt-5.4-nano-2026-03-17` models.
34
- - bcb04df: fix(openai): preserve raw finish reason for failed responses stream events
106
+ - Updated dependencies [8c616f0]
107
+ - @ai-sdk/provider-utils@5.0.3
108
+
109
+ ## 4.0.4
110
+
111
+ ### Patch Changes
112
+
113
+ - Updated dependencies [0274f34]
114
+ - @ai-sdk/provider@4.0.1
115
+ - @ai-sdk/provider-utils@5.0.2
116
+
117
+ ## 4.0.3
118
+
119
+ ### Patch Changes
120
+
121
+ - 1ead90c: Return a helpful error when the Responses stream parser receives Chat Completions chunks.
122
+
123
+ ## 4.0.2
124
+
125
+ ### Patch Changes
126
+
127
+ - Updated dependencies [6a436e3]
128
+ - @ai-sdk/provider-utils@5.0.1
129
+
130
+ ## 4.0.1
131
+
132
+ ### Patch Changes
133
+
134
+ - 9507724: feat(openai): add support for web_search_call.results include option
135
+
136
+ ## 4.0.0
137
+
138
+ ### Major Changes
139
+
140
+ - 34bd95d: feat(ai): add support for uploading provider skills using the provider references abstraction
141
+ - ef992f8: Remove CommonJS exports from all packages. All packages are now ESM-only (`"type": "module"`). Consumers using `require()` must switch to ESM `import` syntax.
142
+ - c29a26f: feat(provider): add support for provider references and uploading files as supported per provider
143
+ - 3887c70: feat(provider): add new top-level reasoning parameter to spec and support it in `generateText` and `streamText`
144
+ - 61753c3: ### `@ai-sdk/openai`: remove redundant `name` argument from `openai.tools.customTool()`
145
+
146
+ `openai.tools.customTool()` no longer accepts a `name` field. the tool name is now derived from the sdk tool key (the object key in the `tools` object).
147
+
148
+ migration: remove the `name` property from `customTool()` calls. the object key is now used as the tool name sent to the openai api.
149
+
150
+ before:
151
+
152
+ ```ts
153
+ tools: {
154
+ write_sql: openai.tools.customTool({
155
+ name: 'write_sql',
156
+ description: '...',
157
+ }),
158
+ }
159
+ ```
160
+
161
+ after:
162
+
163
+ ```ts
164
+ tools: {
165
+ write_sql: openai.tools.customTool({
166
+ description: '...',
167
+ }),
168
+ }
169
+ ```
170
+
171
+ ### `@ai-sdk/provider-utils`: `createToolNameMapping()` no longer accepts the `resolveProviderToolName` parameter
172
+
173
+ before: tool name can be set dynamically
174
+
175
+ ```ts
176
+ const toolNameMapping = createToolNameMapping({
177
+ tools,
178
+ providerToolNames: {
179
+ "openai.code_interpreter": "code_interpreter",
180
+ "openai.file_search": "file_search",
181
+ "openai.image_generation": "image_generation",
182
+ "openai.local_shell": "local_shell",
183
+ "openai.shell": "shell",
184
+ "openai.web_search": "web_search",
185
+ "openai.web_search_preview": "web_search_preview",
186
+ "openai.mcp": "mcp",
187
+ "openai.apply_patch": "apply_patch",
188
+ },
189
+ resolveProviderToolName: (tool) =>
190
+ tool.id === "openai.custom"
191
+ ? (tool.args as { name?: string }).name
192
+ : undefined,
193
+ });
194
+ ```
195
+
196
+ after: tool name is static based on `tools` keys
197
+
198
+ ```
199
+ const toolNameMapping = createToolNameMapping({
200
+ tools,
201
+ providerToolNames: {
202
+ 'openai.code_interpreter': 'code_interpreter',
203
+ 'openai.file_search': 'file_search',
204
+ 'openai.image_generation': 'image_generation',
205
+ 'openai.local_shell': 'local_shell',
206
+ 'openai.shell': 'shell',
207
+ 'openai.web_search': 'web_search',
208
+ 'openai.web_search_preview': 'web_search_preview',
209
+ 'openai.mcp': 'mcp',
210
+ 'openai.apply_patch': 'apply_patch',
211
+ }
212
+ });
213
+ ```
214
+
215
+ - 8359612: Start v7 pre-release
216
+ - 04e9009: chore: make provider implementations code patterns more consistent, including renaming certain exported symbols
217
+
218
+ For all externally exported symbols that were renamed, the old names continue to work via deprecated aliases.
219
+
220
+ ### Patch Changes
221
+
222
+ - 29e6ac6: feat: add allowedTools provider option for OpenAI Responses
223
+ - 38fc777: Add AI Gateway hint to provider READMEs
224
+ - a71d345: fix(provider/openai): drop reasoning parts without encrypted content when store: false
225
+ - 7afaece: feat(provider/openai): add GPT-5.4 model support
226
+ - 365da1a: Add `gpt-5.4-mini`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano`, and `gpt-5.4-nano-2026-03-17` models.
227
+ - 1772a63: Default OpenAI Responses reasoning summaries to detailed when reasoning effort is enabled.
228
+ - 83f9d04: feat(openai): upgrade v3 specs to v4
229
+ - 45b3d76: fix(security): prevent streaming tool calls from finalizing on parsable partial JSON
230
+
231
+ Streaming tool call arguments were finalized using `isParsableJson()` as a heuristic for completion. If partial accumulated JSON happened to be valid JSON before all chunks arrived, the tool call would be executed with incomplete arguments. Tool call finalization now only occurs in `flush()` after the stream is fully consumed.
232
+
233
+ - bf837fe: feat(provider/gateway): add speech and transcription model support
234
+ - d6c79e3: feat(openai): add GPT-5.5 chat model IDs
235
+ - e776fc7: feat(provider/azure):web search tool in the Azure OpenAI Responses API.
236
+ - 817a1a6: fix(openai): support file-url parts in tool output content
237
+ - 1f509d4: fix(ai): force template check on 'kind' param
238
+ - 0c4ac8a: fix(openai): default undefined tool-call input to empty object before serializing tool arguments
239
+ - 9f0e36c: trigger release for all packages after provenance setup
240
+ - 58a2ad7: fix: more precise default message for tool execution denial
241
+ - 6a5800e: feat(openai): add namespaces for tool definitions
242
+ - ae7f932: fix(openai): throw retryable errors for OpenAI stream failures before output starts
243
+ - 2c4767d: feat(openai): add orchestration token usage details to Responses API usage
244
+ - bada0f3: feat(openai): preserve `namespace` on function_call output items
245
+ - cd3de8b: feat(openai): forward `web_search_call.action.queries` from Responses API
246
+ - 94eba1b: fix(openai): round-trip `namespace` on function_call input items
247
+
248
+ When `tool_search` dispatches a deferred tool, the resulting `function_call` carries a `namespace` field identifying which deferred-tool group the model picked. `#14789` preserved this on the read side (`providerMetadata.openai.namespace`), but the write side still serialized `function_call` input items without `namespace`. Multi-step / multi-turn conversations then failed with `Missing namespace for function_call '<name>'. ... Round-trip the model's function_call item with its namespace field included.`
249
+
250
+ `convert-to-openai-responses-input.ts` now reads `namespace` from `providerOptions.openai.namespace` (or `providerMetadata.openai.namespace`) on `tool-call` parts and includes it on the serialized `function_call` item, mirroring how `itemId` is round-tripped.
251
+
252
+ - 7bbc194: feat(provider/openai): forward imageDetail providerOptions on tool-result image content
253
+ - 156cdf0: feat(openai): add new tool search tool
254
+ - f7295cb: revert incorrect fix https://github.com/vercel/ai/pull/13172
255
+ - 9ea40e0: chore(provider/openai): add type for image model options for type-safe processing
256
+ - 7fc6bd6: Raise minimum supported Node.js version to 22. Supported versions: 22, 24, and 26.
257
+ - f807e45: Extract shared `StreamingToolCallTracker` class into `@ai-sdk/provider-utils` to deduplicate streaming tool call handling across OpenAI-compatible providers. Also adds missing `generateId()` fallback for `toolCallId` in Alibaba's `doGenerate` path and ensures all providers finalize unfinished tool calls during stream flush.
258
+ - d9a1e9a: feat(openai): add server side compaction for openai
259
+ - 0c4c275: trigger initial canary release
260
+ - ac18f89: feat(provider/openai): add `gpt-5.3-chat-latest`
261
+ - 6fd51c0: fix(provider): preserve error type prefix in getErrorMessage
262
+ - cd9c311: fix(openai, openai-compatible): only send null content for assistant messages with tool calls
263
+ - e6376c2: fix(openai): preserve raw finish reason for failed responses stream events
35
264
 
36
265
  Handle `response.failed` chunks in Responses API streaming so `finishReason.raw` is preserved from `incomplete_details.reason` (e.g. `max_output_tokens`), and map failed-without-reason cases to unified `error` instead of `other`.
37
266
 
38
- ## 3.0.47
267
+ - ce769dd: feat(provider): add experimental Realtime API support for voice conversations
268
+
269
+ Adds first-class support for realtime (speech-to-speech) APIs:
270
+
271
+ - `Experimental_RealtimeModelV4` spec in `@ai-sdk/provider` with normalized event types and factory
272
+ - OpenAI, Google, and xAI realtime provider implementations
273
+ - `openai.experimental_realtime()` / `google.experimental_realtime()` / `xai.experimental_realtime()` work in both server and browser
274
+ - `.getToken()` static method on each provider for server-side ephemeral token creation
275
+ - `experimental_getRealtimeToolDefinitions` helper for provider session tool definitions
276
+ - `experimental_useRealtime` hook in `@ai-sdk/react` returning `UIMessage[]` (aligned with `useChat`), with `onToolCall` and `addToolOutput` for client-driven tool execution
277
+ - `inputAudioTranscription` session config for showing transcribed user audio messages when supported by the provider
278
+
279
+ - e311194: feat(ai): allow passing provider instance to `uploadFile` and `uploadSkill` as shorthand
280
+ - 9bd6512: feat(provider): change file part data property to be tagged with a type and remove the image part type
281
+ - 258c093: chore: ensure consistent import handling and avoid import duplicates or cycles
282
+ - 685cec7: feat(openai): add opt-in pass-through for unsupported file media types
283
+ - 61bcdb5: fix(provider/openai): send client-executed tool calls as full function_call items in the Responses API so they pair with their function_call_output by call_id
284
+ - 5463d0d: feat(provider): align tool result output content file part types with top-level message file part types
285
+ - b8396f0: trigger initial beta release
286
+ - bfb756d: patch - send content: null instead of empty string for tool-only assistant messages
287
+ - 90e2d8a: chore: fix unused vars not being flagged by our lint tooling
288
+ - 17b5597: fix(openai): skip passing reasoning items when using previous response id
289
+ - b3976a2: Add workflow serialization support to all provider models.
290
+
291
+ **`@ai-sdk/provider-utils`:** New `serializeModel()` helper that extracts only serializable properties from a model instance, filtering out functions and objects containing functions. Third-party provider authors can use this to add workflow support to their own models.
292
+
293
+ **All providers:** `headers` is now optional in provider config types. This is non-breaking — existing code that passes `headers` continues to work. Custom provider implementations that construct model configs manually can now omit `headers`, which is useful when models are deserialized from a workflow step boundary where auth is provided separately.
294
+
295
+ All provider model classes now include `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` static methods, enabling them to cross workflow step boundaries without serialization errors.
296
+
297
+ - ff5eba1: feat: roll `image-*` tool output types into their equivalent `file-*` types
298
+ - f9acbc0: feat(provider/openai): add gpt-image-2 model support
299
+
300
+ ## 4.0.0-beta.77
301
+
302
+ ### Patch Changes
303
+
304
+ - Updated dependencies [0416e3e]
305
+ - @ai-sdk/provider@4.0.0-beta.20
306
+ - @ai-sdk/provider-utils@5.0.0-beta.50
307
+
308
+ ## 4.0.0-beta.76
309
+
310
+ ### Patch Changes
311
+
312
+ - 2c4767d: feat(openai): add orchestration token usage details to Responses API usage
313
+
314
+ ## 4.0.0-beta.75
315
+
316
+ ### Patch Changes
317
+
318
+ - 1772a63: Default OpenAI Responses reasoning summaries to detailed when reasoning effort is enabled.
319
+
320
+ ## 4.0.0-beta.74
321
+
322
+ ### Patch Changes
323
+
324
+ - b8396f0: trigger initial beta release
325
+ - Updated dependencies [b8396f0]
326
+ - @ai-sdk/provider-utils@5.0.0-beta.49
327
+ - @ai-sdk/provider@4.0.0-beta.19
328
+
329
+ ## 4.0.0-canary.73
330
+
331
+ ### Patch Changes
332
+
333
+ - Updated dependencies [aeda373]
334
+ - Updated dependencies [375fdd7]
335
+ - Updated dependencies [b4507d5]
336
+ - @ai-sdk/provider-utils@5.0.0-canary.48
337
+
338
+ ## 4.0.0-canary.72
39
339
 
40
340
  ### Patch Changes
41
341
 
42
- - 055cd68: fix: publish v6 to latest npm dist tag
43
- - Updated dependencies [055cd68]
44
- - @ai-sdk/provider-utils@4.0.21
342
+ - Updated dependencies [bae5e2b]
343
+ - @ai-sdk/provider-utils@5.0.0-canary.47
45
344
 
46
- ## 3.0.46
345
+ ## 4.0.0-canary.71
47
346
 
48
347
  ### Patch Changes
49
348
 
50
- - 75fc0e7: feat(openai): add new tool search tool
349
+ - ae7f932: fix(openai): throw retryable errors for OpenAI stream failures before output starts
51
350
 
52
- ## 3.0.45
351
+ ## 4.0.0-canary.70
53
352
 
54
353
  ### Patch Changes
55
354
 
56
- - 023088c: feat(provider/openai): add `gpt-5.3-chat-latest`
355
+ - 6a5800e: feat(openai): add namespaces for tool definitions
57
356
 
58
- ## 3.0.44
357
+ ## 4.0.0-canary.69
59
358
 
60
359
  ### Patch Changes
61
360
 
62
- - f4a734a: fix(provider/openai): drop reasoning parts without encrypted content when store: false
361
+ - ce769dd: feat(provider): add experimental Realtime API support for voice conversations
63
362
 
64
- ## 3.0.43
363
+ Adds first-class support for realtime (speech-to-speech) APIs:
364
+
365
+ - `Experimental_RealtimeModelV4` spec in `@ai-sdk/provider` with normalized event types and factory
366
+ - OpenAI, Google, and xAI realtime provider implementations
367
+ - `openai.experimental_realtime()` / `google.experimental_realtime()` / `xai.experimental_realtime()` work in both server and browser
368
+ - `.getToken()` static method on each provider for server-side ephemeral token creation
369
+ - `experimental_getRealtimeToolDefinitions` helper for provider session tool definitions
370
+ - `experimental_useRealtime` hook in `@ai-sdk/react` returning `UIMessage[]` (aligned with `useChat`), with `onToolCall` and `addToolOutput` for client-driven tool execution
371
+ - `inputAudioTranscription` session config for showing transcribed user audio messages when supported by the provider
372
+
373
+ - Updated dependencies [ce769dd]
374
+ - @ai-sdk/provider@4.0.0-canary.18
375
+ - @ai-sdk/provider-utils@5.0.0-canary.46
376
+
377
+ ## 4.0.0-canary.68
378
+
379
+ ### Patch Changes
380
+
381
+ - 94eba1b: fix(openai): round-trip `namespace` on function_call input items
382
+
383
+ When `tool_search` dispatches a deferred tool, the resulting `function_call` carries a `namespace` field identifying which deferred-tool group the model picked. `#14789` preserved this on the read side (`providerMetadata.openai.namespace`), but the write side still serialized `function_call` input items without `namespace`. Multi-step / multi-turn conversations then failed with `Missing namespace for function_call '<name>'. ... Round-trip the model's function_call item with its namespace field included.`
384
+
385
+ `convert-to-openai-responses-input.ts` now reads `namespace` from `providerOptions.openai.namespace` (or `providerMetadata.openai.namespace`) on `tool-call` parts and includes it on the serialized `function_call` item, mirroring how `itemId` is round-tripped.
386
+
387
+ ## 4.0.0-canary.67
388
+
389
+ ### Patch Changes
390
+
391
+ - 61bcdb5: fix(provider/openai): send client-executed tool calls as full function_call items in the Responses API so they pair with their function_call_output by call_id
392
+ - Updated dependencies [ee798eb]
393
+ - Updated dependencies [daf6637]
394
+ - @ai-sdk/provider-utils@5.0.0-canary.45
395
+
396
+ ## 4.0.0-canary.66
397
+
398
+ ### Patch Changes
399
+
400
+ - e776fc7: feat(provider/azure):web search tool in the Azure OpenAI Responses API.
401
+
402
+ ## 4.0.0-canary.65
403
+
404
+ ### Patch Changes
405
+
406
+ - cd3de8b: feat(openai): forward `web_search_call.action.queries` from Responses API
407
+
408
+ ## 4.0.0-canary.64
409
+
410
+ ### Patch Changes
411
+
412
+ - Updated dependencies [6c93e36]
413
+ - Updated dependencies [f617ac2]
414
+ - @ai-sdk/provider-utils@5.0.0-canary.44
415
+
416
+ ## 4.0.0-canary.63
417
+
418
+ ### Patch Changes
419
+
420
+ - 17b5597: fix(openai): skip passing reasoning items when using previous response id
421
+
422
+ ## 4.0.0-canary.62
423
+
424
+ ### Patch Changes
425
+
426
+ - bf837fe: feat(provider/gateway): add speech and transcription model support
427
+
428
+ ## 4.0.0-canary.61
429
+
430
+ ### Patch Changes
431
+
432
+ - 7fc6bd6: Raise minimum supported Node.js version to 22. Supported versions: 22, 24, and 26.
433
+ - Updated dependencies [7fc6bd6]
434
+ - @ai-sdk/provider-utils@5.0.0-canary.43
435
+ - @ai-sdk/provider@4.0.0-canary.17
436
+
437
+ ## 4.0.0-canary.60
438
+
439
+ ### Patch Changes
440
+
441
+ - Updated dependencies [a6617c5]
442
+ - @ai-sdk/provider-utils@5.0.0-canary.42
443
+
444
+ ## 4.0.0-canary.59
65
445
 
66
446
  ### Patch Changes
67
447
 
68
- - Updated dependencies [64ac0fd]
69
- - @ai-sdk/provider-utils@4.0.20
448
+ - 685cec7: feat(openai): add opt-in pass-through for unsupported file media types
70
449
 
71
- ## 3.0.42
450
+ ## 4.0.0-canary.58
72
451
 
73
452
  ### Patch Changes
74
453
 
75
- - 2589004: feat(provider/openai): add GPT-5.4 model support
454
+ - Updated dependencies [28dfa06]
455
+ - Updated dependencies [e93fa91]
456
+ - @ai-sdk/provider-utils@5.0.0-canary.41
457
+
458
+ ## 4.0.0-canary.57
459
+
460
+ ### Patch Changes
461
+
462
+ - Updated dependencies [a7de9c9]
463
+ - @ai-sdk/provider-utils@5.0.0-canary.40
464
+
465
+ ## 4.0.0-canary.56
466
+
467
+ ### Patch Changes
468
+
469
+ - Updated dependencies [105f95b]
470
+ - @ai-sdk/provider-utils@5.0.0-canary.39
471
+
472
+ ## 4.0.0-canary.55
473
+
474
+ ### Patch Changes
475
+
476
+ - Updated dependencies [ca446f8]
477
+ - @ai-sdk/provider-utils@5.0.0-canary.38
478
+
479
+ ## 4.0.0-canary.54
480
+
481
+ ### Patch Changes
482
+
483
+ - Updated dependencies [d848405]
484
+ - @ai-sdk/provider-utils@5.0.0-canary.37
485
+
486
+ ## 4.0.0-canary.53
487
+
488
+ ### Patch Changes
489
+
490
+ - Updated dependencies [ca39020]
491
+ - @ai-sdk/provider-utils@5.0.0-canary.36
492
+
493
+ ## 4.0.0-canary.52
494
+
495
+ ### Patch Changes
496
+
497
+ - Updated dependencies [f634bac]
498
+ - @ai-sdk/provider-utils@5.0.0-canary.35
499
+
500
+ ## 4.0.0-canary.51
501
+
502
+ ### Patch Changes
503
+
504
+ - Updated dependencies [69254e0]
505
+ - Updated dependencies [3015fc3]
506
+ - @ai-sdk/provider-utils@5.0.0-canary.34
507
+
508
+ ## 4.0.0-canary.50
509
+
510
+ ### Patch Changes
511
+
512
+ - 29e6ac6: feat: add allowedTools provider option for OpenAI Responses
513
+
514
+ ## 4.0.0-canary.49
515
+
516
+ ### Patch Changes
517
+
518
+ - 7bbc194: feat(provider/openai): forward imageDetail providerOptions on tool-result image content
519
+ - Updated dependencies [2427d88]
520
+ - @ai-sdk/provider-utils@5.0.0-canary.33
521
+
522
+ ## 4.0.0-canary.48
523
+
524
+ ### Patch Changes
525
+
526
+ - d6c79e3: feat(openai): add GPT-5.5 chat model IDs
527
+
528
+ ## 4.0.0-canary.47
529
+
530
+ ### Patch Changes
531
+
532
+ - 5463d0d: feat(provider): align tool result output content file part types with top-level message file part types
533
+ - Updated dependencies [5463d0d]
534
+ - @ai-sdk/provider-utils@5.0.0-canary.32
535
+ - @ai-sdk/provider@4.0.0-canary.16
536
+
537
+ ## 4.0.0-canary.46
538
+
539
+ ### Patch Changes
540
+
541
+ - cd9c311: fix(openai, openai-compatible): only send null content for assistant messages with tool calls
542
+
543
+ ## 4.0.0-canary.45
544
+
545
+ ### Patch Changes
546
+
547
+ - 0c4c275: trigger initial canary release
548
+ - Updated dependencies [0c4c275]
549
+ - @ai-sdk/provider-utils@5.0.0-canary.31
550
+ - @ai-sdk/provider@4.0.0-canary.15
551
+
552
+ ## 4.0.0-beta.44
553
+
554
+ ### Patch Changes
555
+
556
+ - bada0f3: feat(openai): preserve `namespace` on function_call output items
557
+
558
+ ## 4.0.0-beta.43
559
+
560
+ ### Patch Changes
561
+
562
+ - 9ea40e0: chore(provider/openai): add type for image model options for type-safe processing
563
+
564
+ ## 4.0.0-beta.42
565
+
566
+ ### Major Changes
567
+
568
+ - 04e9009: chore: make provider implementations code patterns more consistent, including renaming certain exported symbols
569
+
570
+ For all externally exported symbols that were renamed, the old names continue to work via deprecated aliases.
571
+
572
+ ### Patch Changes
573
+
574
+ - Updated dependencies [08d2129]
575
+ - @ai-sdk/provider-utils@5.0.0-beta.30
576
+
577
+ ## 4.0.0-beta.41
578
+
579
+ ### Patch Changes
580
+
581
+ - 9bd6512: feat(provider): change file part data property to be tagged with a type and remove the image part type
582
+ - 258c093: chore: ensure consistent import handling and avoid import duplicates or cycles
583
+ - Updated dependencies [9bd6512]
584
+ - Updated dependencies [258c093]
585
+ - Updated dependencies [b6783da]
586
+ - @ai-sdk/provider-utils@5.0.0-beta.29
587
+ - @ai-sdk/provider@4.0.0-beta.14
588
+
589
+ ## 4.0.0-beta.40
590
+
591
+ ### Patch Changes
592
+
593
+ - 9f0e36c: trigger release for all packages after provenance setup
594
+ - Updated dependencies [9f0e36c]
595
+ - @ai-sdk/provider@4.0.0-beta.13
596
+ - @ai-sdk/provider-utils@5.0.0-beta.28
597
+
598
+ ## 4.0.0-beta.39
599
+
600
+ ### Patch Changes
601
+
602
+ - 58a2ad7: fix: more precise default message for tool execution denial
603
+ - f9acbc0: feat(provider/openai): add gpt-image-2 model support
604
+ - Updated dependencies [785fe16]
605
+ - Updated dependencies [67df0a0]
606
+ - Updated dependencies [befb78c]
607
+ - Updated dependencies [0458559]
608
+ - Updated dependencies [5852c0a]
609
+ - Updated dependencies [fc92055]
610
+ - @ai-sdk/provider-utils@5.0.0-beta.27
611
+
612
+ ## 4.0.0-beta.38
613
+
614
+ ### Patch Changes
615
+
616
+ - bfb756d: patch - send content: null instead of empty string for tool-only assistant messages
617
+ - Updated dependencies [2e98477]
618
+ - @ai-sdk/provider-utils@5.0.0-beta.26
619
+
620
+ ## 4.0.0-beta.37
621
+
622
+ ### Patch Changes
623
+
624
+ - Updated dependencies [eea8d98]
625
+ - @ai-sdk/provider-utils@5.0.0-beta.25
626
+
627
+ ## 4.0.0-beta.36
628
+
629
+ ### Patch Changes
630
+
631
+ - f807e45: Extract shared `StreamingToolCallTracker` class into `@ai-sdk/provider-utils` to deduplicate streaming tool call handling across OpenAI-compatible providers. Also adds missing `generateId()` fallback for `toolCallId` in Alibaba's `doGenerate` path and ensures all providers finalize unfinished tool calls during stream flush.
632
+ - Updated dependencies [f807e45]
633
+ - @ai-sdk/provider-utils@5.0.0-beta.24
634
+
635
+ ## 4.0.0-beta.35
636
+
637
+ ### Patch Changes
638
+
639
+ - Updated dependencies [350ea38]
640
+ - @ai-sdk/provider-utils@5.0.0-beta.23
641
+
642
+ ## 4.0.0-beta.34
643
+
644
+ ### Patch Changes
645
+
646
+ - Updated dependencies [083947b]
647
+ - @ai-sdk/provider-utils@5.0.0-beta.22
648
+
649
+ ## 4.0.0-beta.33
650
+
651
+ ### Patch Changes
652
+
653
+ - Updated dependencies [add1126]
654
+ - @ai-sdk/provider-utils@5.0.0-beta.21
655
+
656
+ ## 4.0.0-beta.32
657
+
658
+ ### Patch Changes
659
+
660
+ - 0c4ac8a: fix(openai): default undefined tool-call input to empty object before serializing tool arguments
661
+
662
+ ## 4.0.0-beta.31
663
+
664
+ ### Patch Changes
665
+
666
+ - b3976a2: Add workflow serialization support to all provider models.
667
+
668
+ **`@ai-sdk/provider-utils`:** New `serializeModel()` helper that extracts only serializable properties from a model instance, filtering out functions and objects containing functions. Third-party provider authors can use this to add workflow support to their own models.
669
+
670
+ **All providers:** `headers` is now optional in provider config types. This is non-breaking — existing code that passes `headers` continues to work. Custom provider implementations that construct model configs manually can now omit `headers`, which is useful when models are deserialized from a workflow step boundary where auth is provided separately.
671
+
672
+ All provider model classes now include `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` static methods, enabling them to cross workflow step boundaries without serialization errors.
673
+
674
+ - ff5eba1: feat: roll `image-*` tool output types into their equivalent `file-*` types
675
+ - Updated dependencies [b3976a2]
676
+ - Updated dependencies [ff5eba1]
677
+ - @ai-sdk/provider-utils@5.0.0-beta.20
678
+ - @ai-sdk/provider@4.0.0-beta.12
679
+
680
+ ## 4.0.0-beta.30
681
+
682
+ ### Major Changes
683
+
684
+ - ef992f8: Remove CommonJS exports from all packages. All packages are now ESM-only (`"type": "module"`). Consumers using `require()` must switch to ESM `import` syntax.
685
+
686
+ ### Patch Changes
687
+
688
+ - Updated dependencies [ef992f8]
689
+ - @ai-sdk/provider@4.0.0-beta.11
690
+ - @ai-sdk/provider-utils@5.0.0-beta.19
691
+
692
+ ## 4.0.0-beta.29
693
+
694
+ ### Patch Changes
695
+
696
+ - 90e2d8a: chore: fix unused vars not being flagged by our lint tooling
697
+ - Updated dependencies [90e2d8a]
698
+ - @ai-sdk/provider-utils@5.0.0-beta.18
699
+
700
+ ## 4.0.0-beta.28
701
+
702
+ ### Patch Changes
703
+
704
+ - Updated dependencies [3ae1786]
705
+ - @ai-sdk/provider-utils@5.0.0-beta.17
706
+
707
+ ## 4.0.0-beta.27
708
+
709
+ ### Patch Changes
710
+
711
+ - Updated dependencies [176466a]
712
+ - @ai-sdk/provider@4.0.0-beta.10
713
+ - @ai-sdk/provider-utils@5.0.0-beta.16
714
+
715
+ ## 4.0.0-beta.26
716
+
717
+ ### Patch Changes
718
+
719
+ - e311194: feat(ai): allow passing provider instance to `uploadFile` and `uploadSkill` as shorthand
720
+ - Updated dependencies [e311194]
721
+ - @ai-sdk/provider@4.0.0-beta.9
722
+ - @ai-sdk/provider-utils@5.0.0-beta.15
723
+
724
+ ## 4.0.0-beta.25
725
+
726
+ ### Patch Changes
727
+
728
+ - 34bd95d: feat(ai): add support for uploading provider skills using the provider references abstraction
729
+ - Updated dependencies [34bd95d]
730
+ - Updated dependencies [008271d]
731
+ - @ai-sdk/provider@4.0.0-beta.8
732
+ - @ai-sdk/provider-utils@5.0.0-beta.14
733
+
734
+ ## 4.0.0-beta.24
735
+
736
+ ### Patch Changes
737
+
738
+ - Updated dependencies [b0c2869]
739
+ - Updated dependencies [7e26e81]
740
+ - @ai-sdk/provider-utils@5.0.0-beta.13
741
+
742
+ ## 4.0.0-beta.23
743
+
744
+ ### Patch Changes
745
+
746
+ - Updated dependencies [46d1149]
747
+ - @ai-sdk/provider-utils@5.0.0-beta.12
748
+
749
+ ## 4.0.0-beta.22
750
+
751
+ ### Patch Changes
752
+
753
+ - 6fd51c0: fix(provider): preserve error type prefix in getErrorMessage
754
+ - Updated dependencies [6fd51c0]
755
+ - @ai-sdk/provider-utils@5.0.0-beta.11
756
+ - @ai-sdk/provider@4.0.0-beta.7
757
+
758
+ ## 4.0.0-beta.21
759
+
760
+ ### Patch Changes
761
+
762
+ - c29a26f: feat(provider): add support for provider references and uploading files as supported per provider
763
+ - Updated dependencies [c29a26f]
764
+ - @ai-sdk/provider-utils@5.0.0-beta.10
765
+ - @ai-sdk/provider@4.0.0-beta.6
766
+
767
+ ## 4.0.0-beta.20
768
+
769
+ ### Patch Changes
770
+
771
+ - 38fc777: Add AI Gateway hint to provider READMEs
772
+
773
+ ## 4.0.0-beta.19
774
+
775
+ ### Patch Changes
776
+
777
+ - Updated dependencies [2e17091]
778
+ - @ai-sdk/provider-utils@5.0.0-beta.9
779
+
780
+ ## 4.0.0-beta.18
781
+
782
+ ### Patch Changes
783
+
784
+ - Updated dependencies [986c6fd]
785
+ - Updated dependencies [493295c]
786
+ - @ai-sdk/provider-utils@5.0.0-beta.8
787
+
788
+ ## 4.0.0-beta.17
789
+
790
+ ### Patch Changes
791
+
792
+ - 817a1a6: fix(openai): support file-url parts in tool output content
793
+
794
+ ## 4.0.0-beta.16
795
+
796
+ ### Patch Changes
797
+
798
+ - 1f509d4: fix(ai): force template check on 'kind' param
799
+ - Updated dependencies [1f509d4]
800
+ - @ai-sdk/provider-utils@5.0.0-beta.7
801
+ - @ai-sdk/provider@4.0.0-beta.5
802
+
803
+ ## 4.0.0-beta.15
804
+
805
+ ### Patch Changes
806
+
807
+ - 365da1a: Add `gpt-5.4-mini`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano`, and `gpt-5.4-nano-2026-03-17` models.
808
+
809
+ ## 4.0.0-beta.14
810
+
811
+ ### Patch Changes
812
+
813
+ - e6376c2: fix(openai): preserve raw finish reason for failed responses stream events
814
+
815
+ Handle `response.failed` chunks in Responses API streaming so `finishReason.raw` is preserved from `incomplete_details.reason` (e.g. `max_output_tokens`), and map failed-without-reason cases to unified `error` instead of `other`.
816
+
817
+ ## 4.0.0-beta.13
818
+
819
+ ### Patch Changes
820
+
821
+ - 3887c70: feat(provider): add new top-level reasoning parameter to spec and support it in `generateText` and `streamText`
822
+ - Updated dependencies [3887c70]
823
+ - @ai-sdk/provider-utils@5.0.0-beta.6
824
+ - @ai-sdk/provider@4.0.0-beta.4
825
+
826
+ ## 4.0.0-beta.12
827
+
828
+ ### Patch Changes
829
+
830
+ - d9a1e9a: feat(openai): add server side compaction for openai
831
+
832
+ ## 4.0.0-beta.11
833
+
834
+ ### Patch Changes
835
+
836
+ - Updated dependencies [776b617]
837
+ - @ai-sdk/provider-utils@5.0.0-beta.5
838
+ - @ai-sdk/provider@4.0.0-beta.3
839
+
840
+ ## 4.0.0-beta.10
841
+
842
+ ### Major Changes
843
+
844
+ - 61753c3: ### `@ai-sdk/openai`: remove redundant `name` argument from `openai.tools.customTool()`
845
+
846
+ `openai.tools.customTool()` no longer accepts a `name` field. the tool name is now derived from the sdk tool key (the object key in the `tools` object).
847
+
848
+ migration: remove the `name` property from `customTool()` calls. the object key is now used as the tool name sent to the openai api.
849
+
850
+ before:
851
+
852
+ ```ts
853
+ tools: {
854
+ write_sql: openai.tools.customTool({
855
+ name: 'write_sql',
856
+ description: '...',
857
+ }),
858
+ }
859
+ ```
860
+
861
+ after:
862
+
863
+ ```ts
864
+ tools: {
865
+ write_sql: openai.tools.customTool({
866
+ description: '...',
867
+ }),
868
+ }
869
+ ```
870
+
871
+ ### `@ai-sdk/provider-utils`: `createToolNameMapping()` no longer accepts the `resolveProviderToolName` parameter
872
+
873
+ before: tool name can be set dynamically
874
+
875
+ ```ts
876
+ const toolNameMapping = createToolNameMapping({
877
+ tools,
878
+ providerToolNames: {
879
+ "openai.code_interpreter": "code_interpreter",
880
+ "openai.file_search": "file_search",
881
+ "openai.image_generation": "image_generation",
882
+ "openai.local_shell": "local_shell",
883
+ "openai.shell": "shell",
884
+ "openai.web_search": "web_search",
885
+ "openai.web_search_preview": "web_search_preview",
886
+ "openai.mcp": "mcp",
887
+ "openai.apply_patch": "apply_patch",
888
+ },
889
+ resolveProviderToolName: (tool) =>
890
+ tool.id === "openai.custom"
891
+ ? (tool.args as { name?: string }).name
892
+ : undefined,
893
+ });
894
+ ```
895
+
896
+ after: tool name is static based on `tools` keys
897
+
898
+ ```
899
+ const toolNameMapping = createToolNameMapping({
900
+ tools,
901
+ providerToolNames: {
902
+ 'openai.code_interpreter': 'code_interpreter',
903
+ 'openai.file_search': 'file_search',
904
+ 'openai.image_generation': 'image_generation',
905
+ 'openai.local_shell': 'local_shell',
906
+ 'openai.shell': 'shell',
907
+ 'openai.web_search': 'web_search',
908
+ 'openai.web_search_preview': 'web_search_preview',
909
+ 'openai.mcp': 'mcp',
910
+ 'openai.apply_patch': 'apply_patch',
911
+ }
912
+ });
913
+ ```
914
+
915
+ ### Patch Changes
916
+
917
+ - Updated dependencies [61753c3]
918
+ - @ai-sdk/provider-utils@5.0.0-beta.4
919
+
920
+ ## 4.0.0-beta.9
921
+
922
+ ### Patch Changes
923
+
924
+ - 156cdf0: feat(openai): add new tool search tool
925
+
926
+ ## 4.0.0-beta.8
927
+
928
+ ### Patch Changes
929
+
930
+ - Updated dependencies [f7d4f01]
931
+ - @ai-sdk/provider-utils@5.0.0-beta.3
932
+ - @ai-sdk/provider@4.0.0-beta.2
933
+
934
+ ## 4.0.0-beta.7
935
+
936
+ ### Patch Changes
937
+
938
+ - Updated dependencies [5c2a5a2]
939
+ - @ai-sdk/provider@4.0.0-beta.1
940
+ - @ai-sdk/provider-utils@5.0.0-beta.2
941
+
942
+ ## 4.0.0-beta.6
943
+
944
+ ### Patch Changes
945
+
946
+ - 83f9d04: feat(openai): upgrade v3 specs to v4
947
+
948
+ ## 4.0.0-beta.5
949
+
950
+ ### Patch Changes
951
+
952
+ - ac18f89: feat(provider/openai): add `gpt-5.3-chat-latest`
953
+
954
+ ## 4.0.0-beta.4
955
+
956
+ ### Patch Changes
957
+
958
+ - a71d345: fix(provider/openai): drop reasoning parts without encrypted content when store: false
959
+
960
+ ## 4.0.0-beta.3
961
+
962
+ ### Patch Changes
963
+
964
+ - 45b3d76: fix(security): prevent streaming tool calls from finalizing on parsable partial JSON
965
+
966
+ Streaming tool call arguments were finalized using `isParsableJson()` as a heuristic for completion. If partial accumulated JSON happened to be valid JSON before all chunks arrived, the tool call would be executed with incomplete arguments. Tool call finalization now only occurs in `flush()` after the stream is fully consumed.
967
+
968
+ - f7295cb: revert incorrect fix https://github.com/vercel/ai/pull/13172
969
+
970
+ ## 4.0.0-beta.2
971
+
972
+ ### Patch Changes
973
+
974
+ - Updated dependencies [531251e]
975
+ - @ai-sdk/provider-utils@5.0.0-beta.1
976
+
977
+ ## 4.0.0-beta.1
978
+
979
+ ### Patch Changes
980
+
981
+ - 7afaece: feat(provider/openai): add GPT-5.4 model support
982
+
983
+ ## 4.0.0-beta.0
984
+
985
+ ### Major Changes
986
+
987
+ - 8359612: Start v7 pre-release
988
+
989
+ ### Patch Changes
990
+
991
+ - Updated dependencies [8359612]
992
+ - @ai-sdk/provider@4.0.0-beta.0
993
+ - @ai-sdk/provider-utils@5.0.0-beta.0
76
994
 
77
995
  ## 3.0.41
78
996
 
@@ -243,7 +1161,6 @@
243
1161
  ### Patch Changes
244
1162
 
245
1163
  - 04c89b1: Provide Responses API providerMetadata types at the message / reasoning level.
246
-
247
1164
  - Export the following types for use in client code:
248
1165
  - `OpenaiResponsesProviderMetadata`
249
1166
  - `OpenaiResponsesReasoningProviderMetadata`
@@ -324,7 +1241,6 @@
324
1241
  ### Patch Changes
325
1242
 
326
1243
  - 330bd92: Fix Responses `code_interpreter` annotations and add typed providerMetadata
327
-
328
1244
  - Align Responses API `code_interpreter` annotation types with the official spec.
329
1245
  - Add tests to ensure the overlapping parts of the Zod schemas used by `doGenerate` and `doStream` stay in sync.
330
1246
  - Export the following types for use in client code: