ai 7.0.91 → 7.0.93

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 (42) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/index.d.ts +178 -159
  3. package/dist/index.js +143 -25
  4. package/dist/index.js.map +1 -1
  5. package/dist/internal/index.d.ts +1 -1
  6. package/dist/internal/index.js +2 -2
  7. package/dist/internal/index.js.map +1 -1
  8. package/docs/02-foundations/02-providers-and-models.mdx +1 -0
  9. package/docs/03-agents/04-loop-control.mdx +5 -3
  10. package/docs/03-agents/07-workflow-agent.mdx +27 -6
  11. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +15 -3
  12. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +64 -1
  13. package/docs/03-ai-sdk-core/35-image-generation.mdx +7 -0
  14. package/docs/03-ai-sdk-core/36-transcription.mdx +36 -35
  15. package/docs/03-ai-sdk-harnesses/02-harness-agent.mdx +36 -0
  16. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +11 -6
  17. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +14 -0
  18. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +30 -3
  19. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +27 -1
  20. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +1 -1
  21. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +1 -1
  22. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +4 -0
  23. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +6 -1
  24. package/docs/07-reference/04-ai-sdk-workflow/01-workflow-agent.mdx +42 -28
  25. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +7 -0
  26. package/package.json +6 -6
  27. package/src/agent/tool-loop-agent-settings.ts +15 -0
  28. package/src/embed/embed-many.ts +27 -2
  29. package/src/error/no-image-generated-error.ts +9 -0
  30. package/src/generate-image/generate-image.ts +1 -1
  31. package/src/generate-text/generate-text-events.ts +1 -1
  32. package/src/generate-text/output.ts +111 -1
  33. package/src/generate-text/smooth-stream.ts +19 -4
  34. package/src/generate-text/stream-text.ts +2 -6
  35. package/src/ui/call-completion-api.ts +1 -1
  36. package/src/ui/chat.ts +1 -1
  37. package/src/ui/convert-to-model-messages.ts +8 -2
  38. package/src/ui/http-chat-transport.ts +2 -2
  39. package/src/ui/validate-ui-messages.ts +14 -0
  40. package/src/util/async-iterable-stream.ts +1 -1
  41. package/src/util/data-url.ts +1 -1
  42. package/src/util/merge-abort-signals.ts +1 -1
@@ -201,7 +201,7 @@ export abstract class HttpChatTransport<
201
201
 
202
202
  if (!response.ok) {
203
203
  throw new Error(
204
- (await response.text()) ?? 'Failed to fetch the chat response.',
204
+ (await response.text()) || 'Failed to fetch the chat response.',
205
205
  );
206
206
  }
207
207
 
@@ -257,7 +257,7 @@ export abstract class HttpChatTransport<
257
257
 
258
258
  if (!response.ok) {
259
259
  throw new Error(
260
- (await response.text()) ?? 'Failed to fetch the chat response.',
260
+ (await response.text()) || 'Failed to fetch the chat response.',
261
261
  );
262
262
  }
263
263
 
@@ -117,6 +117,7 @@ const uiMessagesSchema = lazySchema(() =>
117
117
  type: z.literal('dynamic-tool'),
118
118
  toolName: z.string(),
119
119
  toolCallId: z.string(),
120
+ title: z.string().optional(),
120
121
  toolMetadata: toolMetadataSchema.optional(),
121
122
  state: z.literal('input-streaming'),
122
123
  input: z.unknown().optional(),
@@ -130,6 +131,7 @@ const uiMessagesSchema = lazySchema(() =>
130
131
  type: z.literal('dynamic-tool'),
131
132
  toolName: z.string(),
132
133
  toolCallId: z.string(),
134
+ title: z.string().optional(),
133
135
  toolMetadata: toolMetadataSchema.optional(),
134
136
  state: z.literal('input-available'),
135
137
  input: z.unknown(),
@@ -143,6 +145,7 @@ const uiMessagesSchema = lazySchema(() =>
143
145
  type: z.literal('dynamic-tool'),
144
146
  toolName: z.string(),
145
147
  toolCallId: z.string(),
148
+ title: z.string().optional(),
146
149
  toolMetadata: toolMetadataSchema.optional(),
147
150
  state: z.literal('approval-requested'),
148
151
  input: z.unknown(),
@@ -164,6 +167,7 @@ const uiMessagesSchema = lazySchema(() =>
164
167
  type: z.literal('dynamic-tool'),
165
168
  toolName: z.string(),
166
169
  toolCallId: z.string(),
170
+ title: z.string().optional(),
167
171
  toolMetadata: toolMetadataSchema.optional(),
168
172
  state: z.literal('approval-responded'),
169
173
  input: z.unknown(),
@@ -185,6 +189,7 @@ const uiMessagesSchema = lazySchema(() =>
185
189
  type: z.literal('dynamic-tool'),
186
190
  toolName: z.string(),
187
191
  toolCallId: z.string(),
192
+ title: z.string().optional(),
188
193
  toolMetadata: toolMetadataSchema.optional(),
189
194
  state: z.literal('output-available'),
190
195
  input: z.unknown(),
@@ -210,6 +215,7 @@ const uiMessagesSchema = lazySchema(() =>
210
215
  type: z.literal('dynamic-tool'),
211
216
  toolName: z.string(),
212
217
  toolCallId: z.string(),
218
+ title: z.string().optional(),
213
219
  toolMetadata: toolMetadataSchema.optional(),
214
220
  state: z.literal('output-error'),
215
221
  input: z.unknown().optional(),
@@ -235,6 +241,7 @@ const uiMessagesSchema = lazySchema(() =>
235
241
  type: z.literal('dynamic-tool'),
236
242
  toolName: z.string(),
237
243
  toolCallId: z.string(),
244
+ title: z.string().optional(),
238
245
  toolMetadata: toolMetadataSchema.optional(),
239
246
  state: z.literal('output-denied'),
240
247
  input: z.unknown(),
@@ -255,6 +262,7 @@ const uiMessagesSchema = lazySchema(() =>
255
262
  z.object({
256
263
  type: z.string().startsWith('tool-'),
257
264
  toolCallId: z.string(),
265
+ title: z.string().optional(),
258
266
  toolMetadata: toolMetadataSchema.optional(),
259
267
  state: z.literal('input-streaming'),
260
268
  providerExecuted: z.boolean().optional(),
@@ -267,6 +275,7 @@ const uiMessagesSchema = lazySchema(() =>
267
275
  z.object({
268
276
  type: z.string().startsWith('tool-'),
269
277
  toolCallId: z.string(),
278
+ title: z.string().optional(),
270
279
  toolMetadata: toolMetadataSchema.optional(),
271
280
  state: z.literal('input-available'),
272
281
  providerExecuted: z.boolean().optional(),
@@ -279,6 +288,7 @@ const uiMessagesSchema = lazySchema(() =>
279
288
  z.object({
280
289
  type: z.string().startsWith('tool-'),
281
290
  toolCallId: z.string(),
291
+ title: z.string().optional(),
282
292
  toolMetadata: toolMetadataSchema.optional(),
283
293
  state: z.literal('approval-requested'),
284
294
  input: z.unknown(),
@@ -299,6 +309,7 @@ const uiMessagesSchema = lazySchema(() =>
299
309
  z.object({
300
310
  type: z.string().startsWith('tool-'),
301
311
  toolCallId: z.string(),
312
+ title: z.string().optional(),
302
313
  toolMetadata: toolMetadataSchema.optional(),
303
314
  state: z.literal('approval-responded'),
304
315
  input: z.unknown(),
@@ -319,6 +330,7 @@ const uiMessagesSchema = lazySchema(() =>
319
330
  z.object({
320
331
  type: z.string().startsWith('tool-'),
321
332
  toolCallId: z.string(),
333
+ title: z.string().optional(),
322
334
  toolMetadata: toolMetadataSchema.optional(),
323
335
  state: z.literal('output-available'),
324
336
  providerExecuted: z.boolean().optional(),
@@ -343,6 +355,7 @@ const uiMessagesSchema = lazySchema(() =>
343
355
  z.object({
344
356
  type: z.string().startsWith('tool-'),
345
357
  toolCallId: z.string(),
358
+ title: z.string().optional(),
346
359
  toolMetadata: toolMetadataSchema.optional(),
347
360
  state: z.literal('output-error'),
348
361
  providerExecuted: z.boolean().optional(),
@@ -367,6 +380,7 @@ const uiMessagesSchema = lazySchema(() =>
367
380
  z.object({
368
381
  type: z.string().startsWith('tool-'),
369
382
  toolCallId: z.string(),
383
+ title: z.string().optional(),
370
384
  toolMetadata: toolMetadataSchema.optional(),
371
385
  state: z.literal('output-denied'),
372
386
  providerExecuted: z.boolean().optional(),
@@ -43,7 +43,7 @@ export function asAsyncIterableStream<T>(
43
43
  * Implements the async iterator protocol for the stream.
44
44
  * Ensures proper cleanup (cancelling and releasing the reader) on completion, early exit, or error.
45
45
  */
46
- (stream as AsyncIterableStream<T>)[Symbol.asyncIterator] = function (
46
+ (stream as unknown as AsyncIterable<T>)[Symbol.asyncIterator] = function (
47
47
  this: ReadableStream<T>,
48
48
  ): AsyncIterator<T> {
49
49
  const reader = this.getReader();
@@ -10,7 +10,7 @@ export function getTextFromDataUrl(dataUrl: string): string {
10
10
  }
11
11
 
12
12
  try {
13
- return window.atob(base64Content);
13
+ return globalThis.atob(base64Content);
14
14
  } catch {
15
15
  throw new Error(`Error decoding data URL`);
16
16
  }
@@ -14,7 +14,7 @@ export function mergeAbortSignals(
14
14
  ...signals: (AbortSignal | null | undefined | number)[]
15
15
  ): AbortSignal | undefined {
16
16
  const validSignals = filterNullable(...signals).map(signal =>
17
- signal instanceof AbortSignal ? signal : AbortSignal.timeout(signal),
17
+ typeof signal === 'number' ? AbortSignal.timeout(signal) : signal,
18
18
  );
19
19
 
20
20
  return validSignals.length === 0