@ai-sdk/provider-utils 5.0.0-beta.3 → 5.0.0-beta.30

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 (110) hide show
  1. package/CHANGELOG.md +284 -0
  2. package/dist/index.d.ts +1339 -813
  3. package/dist/index.js +837 -288
  4. package/dist/index.js.map +1 -1
  5. package/dist/test/index.d.ts +2 -1
  6. package/dist/test/index.js +18 -37
  7. package/dist/test/index.js.map +1 -1
  8. package/package.json +13 -13
  9. package/src/add-additional-properties-to-json-schema.ts +1 -1
  10. package/src/as-array.ts +12 -0
  11. package/src/convert-image-model-file-to-data-uri.ts +3 -3
  12. package/src/convert-inline-file-data-to-uint8-array.ts +30 -0
  13. package/src/create-tool-name-mapping.ts +6 -22
  14. package/src/detect-media-type.ts +312 -0
  15. package/src/filter-nullable.ts +11 -0
  16. package/src/get-error-message.ts +1 -15
  17. package/src/get-from-api.ts +2 -2
  18. package/src/has-required-key.ts +6 -0
  19. package/src/index.ts +42 -12
  20. package/src/inject-json-instruction.ts +6 -6
  21. package/src/is-buffer.ts +9 -0
  22. package/src/is-json-serializable.ts +29 -0
  23. package/src/is-provider-reference.ts +21 -0
  24. package/src/is-url-supported.ts +17 -2
  25. package/src/load-api-key.ts +1 -1
  26. package/src/load-setting.ts +1 -1
  27. package/src/map-reasoning-to-provider.ts +108 -0
  28. package/src/maybe-promise-like.ts +3 -0
  29. package/src/parse-json-event-stream.ts +3 -3
  30. package/src/parse-json.ts +3 -3
  31. package/src/parse-provider-options.ts +1 -1
  32. package/src/post-to-api.ts +4 -4
  33. package/src/provider-defined-tool-factory.ts +129 -0
  34. package/src/provider-executed-tool-factory.ts +69 -0
  35. package/src/resolve-full-media-type.ts +49 -0
  36. package/src/resolve-provider-reference.ts +26 -0
  37. package/src/resolve.ts +16 -1
  38. package/src/response-handler.ts +3 -3
  39. package/src/schema.ts +6 -3
  40. package/src/secure-json-parse.ts +1 -1
  41. package/src/serialize-model-options.ts +63 -0
  42. package/src/streaming-tool-call-tracker.ts +241 -0
  43. package/src/test/convert-response-stream-to-array.ts +1 -1
  44. package/src/test/is-node-version.ts +22 -1
  45. package/src/to-json-schema/zod3-to-json-schema/options.ts +3 -3
  46. package/src/to-json-schema/zod3-to-json-schema/parse-def.ts +3 -3
  47. package/src/to-json-schema/zod3-to-json-schema/parse-types.ts +22 -22
  48. package/src/to-json-schema/zod3-to-json-schema/parsers/array.ts +3 -3
  49. package/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts +1 -1
  50. package/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts +2 -2
  51. package/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts +2 -2
  52. package/src/to-json-schema/zod3-to-json-schema/parsers/date.ts +4 -4
  53. package/src/to-json-schema/zod3-to-json-schema/parsers/default.ts +3 -3
  54. package/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts +3 -3
  55. package/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts +1 -1
  56. package/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts +5 -5
  57. package/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts +1 -1
  58. package/src/to-json-schema/zod3-to-json-schema/parsers/map.ts +4 -5
  59. package/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts +1 -1
  60. package/src/to-json-schema/zod3-to-json-schema/parsers/never.ts +1 -2
  61. package/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts +4 -4
  62. package/src/to-json-schema/zod3-to-json-schema/parsers/number.ts +1 -1
  63. package/src/to-json-schema/zod3-to-json-schema/parsers/object.ts +3 -3
  64. package/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts +3 -3
  65. package/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts +4 -4
  66. package/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts +3 -3
  67. package/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts +2 -2
  68. package/src/to-json-schema/zod3-to-json-schema/parsers/record.ts +9 -10
  69. package/src/to-json-schema/zod3-to-json-schema/parsers/set.ts +3 -3
  70. package/src/to-json-schema/zod3-to-json-schema/parsers/string.ts +2 -2
  71. package/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts +3 -3
  72. package/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts +1 -2
  73. package/src/to-json-schema/zod3-to-json-schema/parsers/union.ts +3 -3
  74. package/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts +1 -2
  75. package/src/to-json-schema/zod3-to-json-schema/refs.ts +3 -3
  76. package/src/to-json-schema/zod3-to-json-schema/select-parser.ts +2 -2
  77. package/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts +3 -3
  78. package/src/types/assistant-model-message.ts +5 -3
  79. package/src/types/content-part.ts +102 -24
  80. package/src/types/context.ts +4 -0
  81. package/src/types/executable-tool.ts +17 -0
  82. package/src/types/execute-tool.ts +29 -9
  83. package/src/types/file-data.ts +48 -0
  84. package/src/types/index.ts +26 -11
  85. package/src/types/infer-tool-context.ts +12 -0
  86. package/src/types/infer-tool-input.ts +7 -0
  87. package/src/types/infer-tool-output.ts +7 -0
  88. package/src/types/infer-tool-set-context.ts +15 -0
  89. package/src/types/model-message.ts +4 -4
  90. package/src/types/never-optional.ts +7 -0
  91. package/src/types/provider-options.ts +2 -2
  92. package/src/types/provider-reference.ts +10 -0
  93. package/src/types/sensitive-context.ts +9 -0
  94. package/src/types/system-model-message.ts +1 -1
  95. package/src/types/tool-approval-request.ts +7 -0
  96. package/src/types/tool-execute-function.ts +50 -0
  97. package/src/types/tool-model-message.ts +3 -3
  98. package/src/types/tool-needs-approval-function.ts +39 -0
  99. package/src/types/tool-set.ts +22 -0
  100. package/src/types/tool.ts +251 -222
  101. package/src/types/user-model-message.ts +2 -2
  102. package/src/validate-download-url.ts +7 -2
  103. package/src/validate-types.ts +5 -3
  104. package/dist/index.d.mts +0 -1458
  105. package/dist/index.mjs +0 -2759
  106. package/dist/index.mjs.map +0 -1
  107. package/dist/test/index.d.mts +0 -17
  108. package/dist/test/index.mjs +0 -77
  109. package/dist/test/index.mjs.map +0 -1
  110. package/src/provider-tool-factory.ts +0 -125
package/CHANGELOG.md CHANGED
@@ -1,5 +1,289 @@
1
1
  # @ai-sdk/provider-utils
2
2
 
3
+ ## 5.0.0-beta.30
4
+
5
+ ### Patch Changes
6
+
7
+ - 08d2129: feat(mcp): propagate the server name through dynamic tool parts
8
+
9
+ ## 5.0.0-beta.29
10
+
11
+ ### Patch Changes
12
+
13
+ - 9bd6512: feat(provider): change file part data property to be tagged with a type and remove the image part type
14
+ - 258c093: chore: ensure consistent import handling and avoid import duplicates or cycles
15
+ - b6783da: refactoring: restructure Tool types
16
+ - Updated dependencies [9bd6512]
17
+ - Updated dependencies [258c093]
18
+ - @ai-sdk/provider@4.0.0-beta.14
19
+
20
+ ## 5.0.0-beta.28
21
+
22
+ ### Patch Changes
23
+
24
+ - 9f0e36c: trigger release for all packages after provenance setup
25
+ - Updated dependencies [9f0e36c]
26
+ - @ai-sdk/provider@4.0.0-beta.13
27
+
28
+ ## 5.0.0-beta.27
29
+
30
+ ### Patch Changes
31
+
32
+ - 785fe16: feat: distinguish provider-defined and provider-executed tools
33
+ - 67df0a0: feat: add sensitiveContext property to Tool
34
+ - befb78c: refactoring: remove real-time delays in unit tests
35
+ - 0458559: fix: deprecate needsApproval on Tool
36
+ - 5852c0a: refactoring(provider-utils): add controller as property to StreamingToolCallTracker
37
+ - fc92055: feat(ai): automatic tool approval
38
+
39
+ ## 5.0.0-beta.26
40
+
41
+ ### Patch Changes
42
+
43
+ - 2e98477: fix: retain stack traces on async errors
44
+
45
+ ## 5.0.0-beta.25
46
+
47
+ ### Patch Changes
48
+
49
+ - eea8d98: refactoring: rename tool execution events
50
+
51
+ ## 5.0.0-beta.24
52
+
53
+ ### Patch Changes
54
+
55
+ - 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.
56
+
57
+ ## 5.0.0-beta.23
58
+
59
+ ### Patch Changes
60
+
61
+ - 350ea38: refactoring: introduce Arrayable type
62
+
63
+ ## 5.0.0-beta.22
64
+
65
+ ### Patch Changes
66
+
67
+ - 083947b: feat(ai): separate toolsContext from context
68
+
69
+ ## 5.0.0-beta.21
70
+
71
+ ### Patch Changes
72
+
73
+ - add1126: refactoring: executeTool uses tool as parameter
74
+
75
+ ## 5.0.0-beta.20
76
+
77
+ ### Patch Changes
78
+
79
+ - b3976a2: Add workflow serialization support to all provider models.
80
+
81
+ **`@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.
82
+
83
+ **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.
84
+
85
+ All provider model classes now include `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` static methods, enabling them to cross workflow step boundaries without serialization errors.
86
+
87
+ - ff5eba1: feat: roll `image-*` tool output types into their equivalent `file-*` types
88
+ - Updated dependencies [ff5eba1]
89
+ - @ai-sdk/provider@4.0.0-beta.12
90
+
91
+ ## 5.0.0-beta.19
92
+
93
+ ### Major Changes
94
+
95
+ - ef992f8: Remove CommonJS exports from all packages. All packages are now ESM-only (`"type": "module"`). Consumers using `require()` must switch to ESM `import` syntax.
96
+
97
+ ### Patch Changes
98
+
99
+ - Updated dependencies [ef992f8]
100
+ - @ai-sdk/provider@4.0.0-beta.11
101
+
102
+ ## 5.0.0-beta.18
103
+
104
+ ### Patch Changes
105
+
106
+ - 90e2d8a: chore: fix unused vars not being flagged by our lint tooling
107
+
108
+ ## 5.0.0-beta.17
109
+
110
+ ### Patch Changes
111
+
112
+ - 3ae1786: fix: better context type inference
113
+
114
+ ## 5.0.0-beta.16
115
+
116
+ ### Patch Changes
117
+
118
+ - Updated dependencies [176466a]
119
+ - @ai-sdk/provider@4.0.0-beta.10
120
+
121
+ ## 5.0.0-beta.15
122
+
123
+ ### Patch Changes
124
+
125
+ - Updated dependencies [e311194]
126
+ - @ai-sdk/provider@4.0.0-beta.9
127
+
128
+ ## 5.0.0-beta.14
129
+
130
+ ### Patch Changes
131
+
132
+ - Updated dependencies [34bd95d]
133
+ - Updated dependencies [008271d]
134
+ - @ai-sdk/provider@4.0.0-beta.8
135
+
136
+ ## 5.0.0-beta.13
137
+
138
+ ### Major Changes
139
+
140
+ - 7e26e81: chore: rename experimental_context to context
141
+
142
+ ### Patch Changes
143
+
144
+ - b0c2869: chore(ai): remove deprecated `media` type part from `ToolResultOutput`
145
+
146
+ ## 5.0.0-beta.12
147
+
148
+ ### Patch Changes
149
+
150
+ - 46d1149: chore(provider-utils,google): fix grammar errors in error and warning messages
151
+
152
+ ## 5.0.0-beta.11
153
+
154
+ ### Patch Changes
155
+
156
+ - 6fd51c0: fix(provider): preserve error type prefix in getErrorMessage
157
+ - Updated dependencies [6fd51c0]
158
+ - @ai-sdk/provider@4.0.0-beta.7
159
+
160
+ ## 5.0.0-beta.10
161
+
162
+ ### Patch Changes
163
+
164
+ - c29a26f: feat(provider): add support for provider references and uploading files as supported per provider
165
+ - Updated dependencies [c29a26f]
166
+ - @ai-sdk/provider@4.0.0-beta.6
167
+
168
+ ## 5.0.0-beta.9
169
+
170
+ ### Patch Changes
171
+
172
+ - 2e17091: fix(types): move shared tool set utility types into provider-utils
173
+
174
+ Moved `ToolSet`, `InferToolSetContext`, and `UnionToIntersection` into `@ai-sdk/provider-utils` and updated `ai` internals to import them directly from there. This keeps the shared tool typing utilities colocated with the core tool type definitions.
175
+
176
+ ## 5.0.0-beta.8
177
+
178
+ ### Major Changes
179
+
180
+ - 986c6fd: feat(ai): change type of experimental_context from unknown to generic
181
+ - 493295c: Remove the deprecated `ToolCallOptions` export.
182
+
183
+ Use `ToolExecutionOptions` instead.
184
+
185
+ ## 5.0.0-beta.7
186
+
187
+ ### Patch Changes
188
+
189
+ - 1f509d4: fix(ai): force template check on 'kind' param
190
+ - Updated dependencies [1f509d4]
191
+ - @ai-sdk/provider@4.0.0-beta.5
192
+
193
+ ## 5.0.0-beta.6
194
+
195
+ ### Patch Changes
196
+
197
+ - 3887c70: feat(provider): add new top-level reasoning parameter to spec and support it in `generateText` and `streamText`
198
+ - Updated dependencies [3887c70]
199
+ - @ai-sdk/provider@4.0.0-beta.4
200
+
201
+ ## 5.0.0-beta.5
202
+
203
+ ### Major Changes
204
+
205
+ - 776b617: feat(provider): adding new 'custom' content type
206
+
207
+ ### Patch Changes
208
+
209
+ - Updated dependencies [776b617]
210
+ - @ai-sdk/provider@4.0.0-beta.3
211
+
212
+ ## 5.0.0-beta.4
213
+
214
+ ### Major Changes
215
+
216
+ - 61753c3: ### `@ai-sdk/openai`: remove redundant `name` argument from `openai.tools.customTool()`
217
+
218
+ `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).
219
+
220
+ migration: remove the `name` property from `customTool()` calls. the object key is now used as the tool name sent to the openai api.
221
+
222
+ before:
223
+
224
+ ```ts
225
+ tools: {
226
+ write_sql: openai.tools.customTool({
227
+ name: 'write_sql',
228
+ description: '...',
229
+ }),
230
+ }
231
+ ```
232
+
233
+ after:
234
+
235
+ ```ts
236
+ tools: {
237
+ write_sql: openai.tools.customTool({
238
+ description: '...',
239
+ }),
240
+ }
241
+ ```
242
+
243
+ ### `@ai-sdk/provider-utils`: `createToolNameMapping()` no longer accepts the `resolveProviderToolName` parameter
244
+
245
+ before: tool name can be set dynamically
246
+
247
+ ```ts
248
+ const toolNameMapping = createToolNameMapping({
249
+ tools,
250
+ providerToolNames: {
251
+ "openai.code_interpreter": "code_interpreter",
252
+ "openai.file_search": "file_search",
253
+ "openai.image_generation": "image_generation",
254
+ "openai.local_shell": "local_shell",
255
+ "openai.shell": "shell",
256
+ "openai.web_search": "web_search",
257
+ "openai.web_search_preview": "web_search_preview",
258
+ "openai.mcp": "mcp",
259
+ "openai.apply_patch": "apply_patch",
260
+ },
261
+ resolveProviderToolName: (tool) =>
262
+ tool.id === "openai.custom"
263
+ ? (tool.args as { name?: string }).name
264
+ : undefined,
265
+ });
266
+ ```
267
+
268
+ after: tool name is static based on `tools` keys
269
+
270
+ ```
271
+ const toolNameMapping = createToolNameMapping({
272
+ tools,
273
+ providerToolNames: {
274
+ 'openai.code_interpreter': 'code_interpreter',
275
+ 'openai.file_search': 'file_search',
276
+ 'openai.image_generation': 'image_generation',
277
+ 'openai.local_shell': 'local_shell',
278
+ 'openai.shell': 'shell',
279
+ 'openai.web_search': 'web_search',
280
+ 'openai.web_search_preview': 'web_search_preview',
281
+ 'openai.mcp': 'mcp',
282
+ 'openai.apply_patch': 'apply_patch',
283
+ }
284
+ });
285
+ ```
286
+
3
287
  ## 5.0.0-beta.3
4
288
 
5
289
  ### Patch Changes