ai 7.0.0-beta.4 → 7.0.0-beta.41

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 (106) hide show
  1. package/CHANGELOG.md +285 -20
  2. package/README.md +6 -16
  3. package/dist/index.d.mts +1536 -984
  4. package/dist/index.d.ts +1536 -984
  5. package/dist/index.js +3278 -2392
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +3192 -2301
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/internal/index.d.mts +81 -92
  10. package/dist/internal/index.d.ts +81 -92
  11. package/dist/internal/index.js +36 -3
  12. package/dist/internal/index.js.map +1 -1
  13. package/dist/internal/index.mjs +36 -3
  14. package/dist/internal/index.mjs.map +1 -1
  15. package/docs/02-foundations/02-providers-and-models.mdx +6 -2
  16. package/docs/02-foundations/06-provider-options.mdx +8 -0
  17. package/docs/03-agents/05-configuring-call-options.mdx +1 -1
  18. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +6 -2
  19. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +6 -0
  20. package/docs/03-ai-sdk-core/25-settings.mdx +18 -0
  21. package/docs/03-ai-sdk-core/26-reasoning.mdx +190 -0
  22. package/docs/03-ai-sdk-core/30-embeddings.mdx +25 -34
  23. package/docs/03-ai-sdk-core/35-image-generation.mdx +1 -2
  24. package/docs/03-ai-sdk-core/40-middleware.mdx +13 -13
  25. package/docs/03-ai-sdk-core/55-testing.mdx +10 -10
  26. package/docs/03-ai-sdk-core/65-event-listeners.mdx +401 -13
  27. package/docs/03-ai-sdk-core/index.mdx +6 -0
  28. package/docs/04-ai-sdk-ui/02-chatbot.mdx +7 -0
  29. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +0 -1
  30. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +26 -0
  31. package/docs/06-advanced/04-caching.mdx +10 -10
  32. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +80 -10
  33. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +104 -8
  34. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +135 -0
  35. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +139 -0
  36. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +14 -0
  37. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +1 -1
  38. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +1 -1
  39. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +1 -1
  40. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +1 -1
  41. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +1 -1
  42. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +1 -1
  43. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +7 -0
  44. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +23 -3
  45. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +18 -0
  46. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +4 -4
  47. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +4 -4
  48. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +9 -9
  49. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +1 -1
  50. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +1 -1
  51. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +95 -0
  52. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +1 -1
  53. package/package.json +14 -11
  54. package/src/agent/agent.ts +1 -1
  55. package/src/agent/create-agent-ui-stream-response.ts +1 -1
  56. package/src/agent/create-agent-ui-stream.ts +1 -1
  57. package/src/agent/pipe-agent-ui-stream-to-response.ts +1 -1
  58. package/src/agent/tool-loop-agent-settings.ts +10 -2
  59. package/src/agent/tool-loop-agent.ts +1 -2
  60. package/src/embed/embed-events.ts +181 -0
  61. package/src/embed/embed-many.ts +277 -235
  62. package/src/embed/embed.ts +141 -92
  63. package/src/embed/index.ts +1 -0
  64. package/src/error/invalid-stream-part-error.ts +3 -3
  65. package/src/generate-object/generate-object.ts +2 -5
  66. package/src/generate-object/stream-object.ts +7 -8
  67. package/src/generate-text/content-part.ts +8 -2
  68. package/src/generate-text/{callback-events.ts → core-events.ts} +82 -24
  69. package/src/generate-text/create-execute-tools-transformation.ts +158 -0
  70. package/src/generate-text/create-stream-text-part-transform.ts +248 -0
  71. package/src/generate-text/execute-tool-call.ts +89 -96
  72. package/src/generate-text/generate-text-result.ts +2 -2
  73. package/src/generate-text/generate-text.ts +581 -697
  74. package/src/generate-text/index.ts +13 -12
  75. package/src/generate-text/invoke-tool-callbacks-from-stream.ts +81 -0
  76. package/src/generate-text/reasoning-output.ts +79 -0
  77. package/src/generate-text/reasoning.ts +5 -3
  78. package/src/generate-text/step-result.ts +33 -13
  79. package/src/generate-text/stream-model-call.ts +127 -0
  80. package/src/generate-text/stream-text-result.ts +168 -95
  81. package/src/generate-text/stream-text.ts +707 -852
  82. package/src/generate-text/to-response-messages.ts +15 -0
  83. package/src/prompt/call-settings.ts +34 -13
  84. package/src/prompt/content-part.ts +21 -0
  85. package/src/prompt/convert-to-language-model-prompt.ts +22 -0
  86. package/src/prompt/message.ts +4 -0
  87. package/src/prompt/prepare-call-settings.ts +2 -0
  88. package/src/registry/provider-registry.ts +1 -2
  89. package/src/rerank/index.ts +6 -0
  90. package/src/rerank/rerank-events.ts +189 -0
  91. package/src/rerank/rerank.ts +206 -97
  92. package/src/telemetry/get-base-telemetry-attributes.ts +5 -13
  93. package/src/telemetry/get-global-telemetry-integration.ts +60 -19
  94. package/src/telemetry/open-telemetry-integration.ts +875 -0
  95. package/src/telemetry/telemetry-integration-registry.ts +5 -0
  96. package/src/telemetry/telemetry-integration.ts +118 -3
  97. package/src/telemetry/telemetry-settings.ts +4 -2
  98. package/src/ui/convert-to-model-messages.ts +29 -2
  99. package/src/ui/direct-chat-transport.ts +1 -2
  100. package/src/ui/http-chat-transport.ts +8 -19
  101. package/src/ui/index.ts +4 -0
  102. package/src/ui/process-ui-message-stream.ts +73 -8
  103. package/src/ui/ui-messages.ts +66 -0
  104. package/src/ui/validate-ui-messages.ts +15 -0
  105. package/src/ui-message-stream/ui-message-chunks.ts +26 -0
  106. package/src/generate-text/run-tools-transformation.ts +0 -442
package/CHANGELOG.md CHANGED
@@ -1,5 +1,270 @@
1
1
  # ai
2
2
 
3
+ ## 7.0.0-beta.41
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [7ceff62]
8
+ - @ai-sdk/gateway@4.0.0-beta.22
9
+
10
+ ## 7.0.0-beta.40
11
+
12
+ ### Patch Changes
13
+
14
+ - 989d3d2: fix(ai): include generated files in OTEL response attributes
15
+
16
+ ## 7.0.0-beta.39
17
+
18
+ ### Patch Changes
19
+
20
+ - f4cfccd: feat(ai): decouple otel from rerank function
21
+
22
+ ## 7.0.0-beta.38
23
+
24
+ ### Patch Changes
25
+
26
+ - 1f509d4: fix(ai): force template check on 'kind' param
27
+ - Updated dependencies [1f509d4]
28
+ - @ai-sdk/provider-utils@5.0.0-beta.7
29
+ - @ai-sdk/provider@4.0.0-beta.5
30
+ - @ai-sdk/gateway@4.0.0-beta.21
31
+
32
+ ## 7.0.0-beta.37
33
+
34
+ ### Patch Changes
35
+
36
+ - Updated dependencies [4f91b5d]
37
+ - @ai-sdk/gateway@4.0.0-beta.20
38
+
39
+ ## 7.0.0-beta.36
40
+
41
+ ### Patch Changes
42
+
43
+ - 118b953: feat(ai): decouple otel from embed functions
44
+
45
+ ## 7.0.0-beta.35
46
+
47
+ ### Patch Changes
48
+
49
+ - 99bf941: feat(ai): extract streamModelCall function for streaming text generation
50
+
51
+ ## 7.0.0-beta.34
52
+
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies [72889f8]
56
+ - @ai-sdk/gateway@4.0.0-beta.19
57
+
58
+ ## 7.0.0-beta.33
59
+
60
+ ### Patch Changes
61
+
62
+ - caf1b6f: feat(ai): introduce experimental callbacks for rerank function
63
+
64
+ ## 7.0.0-beta.32
65
+
66
+ ### Major Changes
67
+
68
+ - 4b46062: refactoring(ai): extract tool callback invocation into separate function and forward chunks before callback invocation
69
+
70
+ ### Patch Changes
71
+
72
+ - Updated dependencies [165b97a]
73
+ - @ai-sdk/gateway@4.0.0-beta.18
74
+
75
+ ## 7.0.0-beta.31
76
+
77
+ ### Patch Changes
78
+
79
+ - e79e644: chore(ai/core): remove `timeout` from `CallSettings` as it was effectively unused there
80
+
81
+ ## 7.0.0-beta.30
82
+
83
+ ### Patch Changes
84
+
85
+ - f5a6f89: README updates
86
+
87
+ ## 7.0.0-beta.29
88
+
89
+ ### Patch Changes
90
+
91
+ - 877bf12: fix(ai): flatten model attributes for telemetry
92
+
93
+ ## 7.0.0-beta.28
94
+
95
+ ### Major Changes
96
+
97
+ - b9cf502: refactoring(ai): delay tool execution in stream text until model call is finished
98
+
99
+ ## 7.0.0-beta.27
100
+
101
+ ### Patch Changes
102
+
103
+ - 3887c70: feat(provider): add new top-level reasoning parameter to spec and support it in `generateText` and `streamText`
104
+ - Updated dependencies [3887c70]
105
+ - @ai-sdk/provider-utils@5.0.0-beta.6
106
+ - @ai-sdk/provider@4.0.0-beta.4
107
+ - @ai-sdk/gateway@4.0.0-beta.17
108
+
109
+ ## 7.0.0-beta.26
110
+
111
+ ### Patch Changes
112
+
113
+ - f0b0b20: feat(ai): add per-tool timeout overrides via toolTimeouts
114
+
115
+ ## 7.0.0-beta.25
116
+
117
+ ### Patch Changes
118
+
119
+ - ff9ce30: feat(ai): introduce experimental callbacks for embed function
120
+
121
+ ## 7.0.0-beta.24
122
+
123
+ ### Major Changes
124
+
125
+ - 776b617: feat(provider): adding new 'custom' content type
126
+
127
+ ### Patch Changes
128
+
129
+ - Updated dependencies [776b617]
130
+ - @ai-sdk/provider-utils@5.0.0-beta.5
131
+ - @ai-sdk/provider@4.0.0-beta.3
132
+ - @ai-sdk/gateway@4.0.0-beta.16
133
+
134
+ ## 7.0.0-beta.23
135
+
136
+ ### Patch Changes
137
+
138
+ - 80d4dde: fix(ai): include tool input on tool result for provider executed dynamic tools
139
+ - Updated dependencies [61753c3]
140
+ - @ai-sdk/provider-utils@5.0.0-beta.4
141
+ - @ai-sdk/gateway@4.0.0-beta.15
142
+
143
+ ## 7.0.0-beta.22
144
+
145
+ ### Patch Changes
146
+
147
+ - Updated dependencies [ead9144]
148
+ - @ai-sdk/gateway@4.0.0-beta.14
149
+
150
+ ## 7.0.0-beta.21
151
+
152
+ ### Patch Changes
153
+
154
+ - 34fd051: feat(ai): add toolMs to timeout configuration
155
+
156
+ ## 7.0.0-beta.20
157
+
158
+ ### Patch Changes
159
+
160
+ - Updated dependencies [2095655]
161
+ - @ai-sdk/gateway@4.0.0-beta.13
162
+
163
+ ## 7.0.0-beta.19
164
+
165
+ ### Patch Changes
166
+
167
+ - Updated dependencies [f7d4f01]
168
+ - @ai-sdk/provider-utils@5.0.0-beta.3
169
+ - @ai-sdk/provider@4.0.0-beta.2
170
+ - @ai-sdk/gateway@4.0.0-beta.12
171
+
172
+ ## 7.0.0-beta.18
173
+
174
+ ### Patch Changes
175
+
176
+ - Updated dependencies [5c2a5a2]
177
+ - @ai-sdk/provider@4.0.0-beta.1
178
+ - @ai-sdk/gateway@4.0.0-beta.11
179
+ - @ai-sdk/provider-utils@5.0.0-beta.2
180
+
181
+ ## 7.0.0-beta.17
182
+
183
+ ### Patch Changes
184
+
185
+ - Updated dependencies [4d6ab9a]
186
+ - @ai-sdk/gateway@4.0.0-beta.10
187
+
188
+ ## 7.0.0-beta.16
189
+
190
+ ### Major Changes
191
+
192
+ - 5b8c58f: feat(ai): decouple otel from core functions
193
+
194
+ ## 7.0.0-beta.15
195
+
196
+ ### Patch Changes
197
+
198
+ - Updated dependencies [980f777]
199
+ - Updated dependencies [7185ba2]
200
+ - @ai-sdk/gateway@4.0.0-beta.9
201
+
202
+ ## 7.0.0-beta.14
203
+
204
+ ### Patch Changes
205
+
206
+ - Updated dependencies [4adc485]
207
+ - @ai-sdk/gateway@4.0.0-beta.8
208
+
209
+ ## 7.0.0-beta.13
210
+
211
+ ### Patch Changes
212
+
213
+ - c26ca8d: Remove custom User-Agent header from HttpChatTransport to fix CORS preflight failures in Safari and Firefox
214
+
215
+ ## 7.0.0-beta.12
216
+
217
+ ### Patch Changes
218
+
219
+ - Updated dependencies [e046ea3]
220
+ - @ai-sdk/gateway@4.0.0-beta.7
221
+
222
+ ## 7.0.0-beta.11
223
+
224
+ ### Patch Changes
225
+
226
+ - Updated dependencies [82288b0]
227
+ - @ai-sdk/gateway@4.0.0-beta.6
228
+
229
+ ## 7.0.0-beta.10
230
+
231
+ ### Patch Changes
232
+
233
+ - Updated dependencies [aa5a583]
234
+ - @ai-sdk/gateway@4.0.0-beta.5
235
+
236
+ ## 7.0.0-beta.9
237
+
238
+ ### Patch Changes
239
+
240
+ - 1fe058b: fix(anthropic): preserve the error code returned by model
241
+
242
+ ## 7.0.0-beta.8
243
+
244
+ ### Patch Changes
245
+
246
+ - Updated dependencies [f32d84a]
247
+ - @ai-sdk/gateway@4.0.0-beta.4
248
+
249
+ ## 7.0.0-beta.7
250
+
251
+ ### Patch Changes
252
+
253
+ - 210ed3d: feat(ai): pass result provider metadata across the stream
254
+
255
+ ## 7.0.0-beta.6
256
+
257
+ ### Patch Changes
258
+
259
+ - Updated dependencies [c949e25]
260
+ - @ai-sdk/gateway@4.0.0-beta.3
261
+
262
+ ## 7.0.0-beta.5
263
+
264
+ ### Patch Changes
265
+
266
+ - ebd4da2: feat(ai): add missing usage attributes
267
+
3
268
  ## 7.0.0-beta.4
4
269
 
5
270
  ### Patch Changes
@@ -900,13 +1165,13 @@
900
1165
  Before
901
1166
 
902
1167
  ```ts
903
- model.textEmbeddingModel('my-model-id');
1168
+ model.textEmbeddingModel("my-model-id");
904
1169
  ```
905
1170
 
906
1171
  After
907
1172
 
908
1173
  ```ts
909
- model.embeddingModel('my-model-id');
1174
+ model.embeddingModel("my-model-id");
910
1175
  ```
911
1176
 
912
1177
  - b67d224: Fixes an issue where `providerMetadata` and `providerExecuted` were lost when tool input validation failed
@@ -929,15 +1194,15 @@
929
1194
  This change replaces
930
1195
 
931
1196
  ```ts
932
- import { experimental_createMCPClient } from 'ai';
933
- import { Experimental_StdioMCPTransport } from 'ai/mcp-stdio';
1197
+ import { experimental_createMCPClient } from "ai";
1198
+ import { Experimental_StdioMCPTransport } from "ai/mcp-stdio";
934
1199
  ```
935
1200
 
936
1201
  with
937
1202
 
938
1203
  ```ts
939
- import { experimental_createMCPClient } from '@ai-sdk/mcp';
940
- import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
1204
+ import { experimental_createMCPClient } from "@ai-sdk/mcp";
1205
+ import { Experimental_StdioMCPTransport } from "@ai-sdk/mcp/mcp-stdio";
941
1206
  ```
942
1207
 
943
1208
  - 90e5bdd: chore(ai): restructure agent files
@@ -1457,13 +1722,13 @@
1457
1722
  Before
1458
1723
 
1459
1724
  ```ts
1460
- model.textEmbeddingModel('my-model-id');
1725
+ model.textEmbeddingModel("my-model-id");
1461
1726
  ```
1462
1727
 
1463
1728
  After
1464
1729
 
1465
1730
  ```ts
1466
- model.embeddingModel('my-model-id');
1731
+ model.embeddingModel("my-model-id");
1467
1732
  ```
1468
1733
 
1469
1734
  - Updated dependencies [8d9e8ad]
@@ -1810,15 +2075,15 @@
1810
2075
  This change replaces
1811
2076
 
1812
2077
  ```ts
1813
- import { experimental_createMCPClient } from 'ai';
1814
- import { Experimental_StdioMCPTransport } from 'ai/mcp-stdio';
2078
+ import { experimental_createMCPClient } from "ai";
2079
+ import { Experimental_StdioMCPTransport } from "ai/mcp-stdio";
1815
2080
  ```
1816
2081
 
1817
2082
  with
1818
2083
 
1819
2084
  ```ts
1820
- import { experimental_createMCPClient } from '@ai-sdk/mcp';
1821
- import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
2085
+ import { experimental_createMCPClient } from "@ai-sdk/mcp";
2086
+ import { Experimental_StdioMCPTransport } from "@ai-sdk/mcp/mcp-stdio";
1822
2087
  ```
1823
2088
 
1824
2089
  ## 6.0.0-beta.71
@@ -2737,7 +3002,7 @@
2737
3002
 
2738
3003
  ```js
2739
3004
  await generateImage({
2740
- model: luma.image('photon-flash-1', {
3005
+ model: luma.image("photon-flash-1", {
2741
3006
  maxImagesPerCall: 5,
2742
3007
  pollIntervalMillis: 500,
2743
3008
  }),
@@ -2750,7 +3015,7 @@
2750
3015
 
2751
3016
  ```js
2752
3017
  await generateImage({
2753
- model: luma.image('photon-flash-1'),
3018
+ model: luma.image("photon-flash-1"),
2754
3019
  prompt,
2755
3020
  n: 10,
2756
3021
  maxImagesPerCall: 5,
@@ -2950,10 +3215,10 @@
2950
3215
  The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models.
2951
3216
 
2952
3217
  ```js
2953
- const prompt = 'Santa Claus driving a Cadillac';
3218
+ const prompt = "Santa Claus driving a Cadillac";
2954
3219
 
2955
3220
  const { providerMetadata } = await experimental_generateImage({
2956
- model: openai.image('dall-e-3'),
3221
+ model: openai.image("dall-e-3"),
2957
3222
  prompt,
2958
3223
  });
2959
3224
 
@@ -3616,7 +3881,7 @@
3616
3881
 
3617
3882
  ```js
3618
3883
  await generateImage({
3619
- model: luma.image('photon-flash-1', {
3884
+ model: luma.image("photon-flash-1", {
3620
3885
  maxImagesPerCall: 5,
3621
3886
  pollIntervalMillis: 500,
3622
3887
  }),
@@ -3629,7 +3894,7 @@
3629
3894
 
3630
3895
  ```js
3631
3896
  await generateImage({
3632
- model: luma.image('photon-flash-1'),
3897
+ model: luma.image("photon-flash-1"),
3633
3898
  prompt,
3634
3899
  n: 10,
3635
3900
  maxImagesPerCall: 5,
@@ -3727,10 +3992,10 @@
3727
3992
  The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models.
3728
3993
 
3729
3994
  ```js
3730
- const prompt = 'Santa Claus driving a Cadillac';
3995
+ const prompt = "Santa Claus driving a Cadillac";
3731
3996
 
3732
3997
  const { providerMetadata } = await experimental_generateImage({
3733
- model: openai.image('dall-e-3'),
3998
+ model: openai.image("dall-e-3"),
3734
3999
  prompt,
3735
4000
  });
3736
4001
 
package/README.md CHANGED
@@ -30,7 +30,7 @@ By default, the AI SDK uses the [Vercel AI Gateway](https://vercel.com/docs/ai-g
30
30
 
31
31
  ```ts
32
32
  const result = await generateText({
33
- model: 'anthropic/claude-opus-4.5', // or 'openai/gpt-5.4', 'google/gemini-3-flash', etc.
33
+ model: 'anthropic/claude-opus-4.6', // or 'openai/gpt-5.4', 'google/gemini-3-flash', etc.
34
34
  prompt: 'Hello!',
35
35
  });
36
36
  ```
@@ -45,7 +45,7 @@ npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
45
45
  import { anthropic } from '@ai-sdk/anthropic';
46
46
 
47
47
  const result = await generateText({
48
- model: anthropic('claude-opus-4-5-20250414'), // or openai('gpt-5.4'), google('gemini-3-flash'), etc.
48
+ model: anthropic('claude-opus-4-6'), // or openai('gpt-5.4'), google('gemini-3-flash'), etc.
49
49
  prompt: 'Hello!',
50
50
  });
51
51
  ```
@@ -58,17 +58,7 @@ const result = await generateText({
58
58
  import { generateText } from 'ai';
59
59
 
60
60
  const { text } = await generateText({
61
- model: 'openai/gpt-5', // use Vercel AI Gateway
62
- prompt: 'What is an agent?',
63
- });
64
- ```
65
-
66
- ```ts
67
- import { generateText } from 'ai';
68
- import { openai } from '@ai-sdk/openai';
69
-
70
- const { text } = await generateText({
71
- model: openai('gpt-5'), // use OpenAI Responses API
61
+ model: 'openai/gpt-5.4', // use Vercel AI Gateway
72
62
  prompt: 'What is an agent?',
73
63
  });
74
64
  ```
@@ -80,7 +70,7 @@ import { generateText, Output } from 'ai';
80
70
  import { z } from 'zod';
81
71
 
82
72
  const { output } = await generateText({
83
- model: 'openai/gpt-5',
73
+ model: 'openai/gpt-5.4',
84
74
  output: Output.object({
85
75
  schema: z.object({
86
76
  recipe: z.object({
@@ -102,7 +92,7 @@ const { output } = await generateText({
102
92
  import { ToolLoopAgent } from 'ai';
103
93
 
104
94
  const sandboxAgent = new ToolLoopAgent({
105
- model: 'openai/gpt-5',
95
+ model: 'openai/gpt-5.4',
106
96
  system: 'You are an agent with access to a shell environment.',
107
97
  tools: {
108
98
  shell: openai.tools.localShell({
@@ -134,7 +124,7 @@ import { openai } from '@ai-sdk/openai';
134
124
  import { ToolLoopAgent, InferAgentUIMessage } from 'ai';
135
125
 
136
126
  export const imageGenerationAgent = new ToolLoopAgent({
137
- model: openai('gpt-5'),
127
+ model: 'openai/gpt-5.4',
138
128
  tools: {
139
129
  generateImage: openai.tools.imageGeneration({
140
130
  partialImages: 3,