@zenning/ai 5.1.0 → 5.2.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.
package/dist/index.mjs CHANGED
@@ -12,9 +12,10 @@ import {
12
12
  dynamicTool as dynamicTool2,
13
13
  generateId as generateId2,
14
14
  jsonSchema as jsonSchema2,
15
+ parseJsonEventStream as parseJsonEventStream3,
15
16
  tool as tool2,
16
17
  zodSchema
17
- } from "@ai-sdk/provider-utils";
18
+ } from "@zenning/provider-utils";
18
19
 
19
20
  // src/generate-text/generate-text.ts
20
21
  import {
@@ -22,7 +23,7 @@ import {
22
23
  executeTool,
23
24
  getErrorMessage as getErrorMessage5,
24
25
  withUserAgentSuffix as withUserAgentSuffix2
25
- } from "@ai-sdk/provider-utils";
26
+ } from "@zenning/provider-utils";
26
27
 
27
28
  // src/error/no-output-specified-error.ts
28
29
  import { AISDKError } from "@zenning/provider";
@@ -97,7 +98,7 @@ import { gateway } from "@ai-sdk/gateway";
97
98
 
98
99
  // src/error/index.ts
99
100
  import {
100
- AISDKError as AISDKError17,
101
+ AISDKError as AISDKError18,
101
102
  APICallError,
102
103
  EmptyResponseBodyError,
103
104
  InvalidPromptError,
@@ -274,13 +275,25 @@ var NoOutputGeneratedError = class extends AISDKError8 {
274
275
  };
275
276
  _a8 = symbol8;
276
277
 
277
- // src/error/no-such-tool-error.ts
278
+ // src/error/no-speech-generated-error.ts
278
279
  import { AISDKError as AISDKError9 } from "@zenning/provider";
280
+ var NoSpeechGeneratedError = class extends AISDKError9 {
281
+ constructor(options) {
282
+ super({
283
+ name: "AI_NoSpeechGeneratedError",
284
+ message: "No speech audio generated."
285
+ });
286
+ this.responses = options.responses;
287
+ }
288
+ };
289
+
290
+ // src/error/no-such-tool-error.ts
291
+ import { AISDKError as AISDKError10 } from "@zenning/provider";
279
292
  var name9 = "AI_NoSuchToolError";
280
293
  var marker9 = `vercel.ai.error.${name9}`;
281
294
  var symbol9 = Symbol.for(marker9);
282
295
  var _a9;
283
- var NoSuchToolError = class extends AISDKError9 {
296
+ var NoSuchToolError = class extends AISDKError10 {
284
297
  constructor({
285
298
  toolName,
286
299
  availableTools = void 0,
@@ -292,18 +305,18 @@ var NoSuchToolError = class extends AISDKError9 {
292
305
  this.availableTools = availableTools;
293
306
  }
294
307
  static isInstance(error) {
295
- return AISDKError9.hasMarker(error, marker9);
308
+ return AISDKError10.hasMarker(error, marker9);
296
309
  }
297
310
  };
298
311
  _a9 = symbol9;
299
312
 
300
313
  // src/error/tool-call-repair-error.ts
301
- import { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from "@zenning/provider";
314
+ import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage2 } from "@zenning/provider";
302
315
  var name10 = "AI_ToolCallRepairError";
303
316
  var marker10 = `vercel.ai.error.${name10}`;
304
317
  var symbol10 = Symbol.for(marker10);
305
318
  var _a10;
306
- var ToolCallRepairError = class extends AISDKError10 {
319
+ var ToolCallRepairError = class extends AISDKError11 {
307
320
  constructor({
308
321
  cause,
309
322
  originalError,
@@ -314,14 +327,14 @@ var ToolCallRepairError = class extends AISDKError10 {
314
327
  this.originalError = originalError;
315
328
  }
316
329
  static isInstance(error) {
317
- return AISDKError10.hasMarker(error, marker10);
330
+ return AISDKError11.hasMarker(error, marker10);
318
331
  }
319
332
  };
320
333
  _a10 = symbol10;
321
334
 
322
335
  // src/error/unsupported-model-version-error.ts
323
- import { AISDKError as AISDKError11 } from "@zenning/provider";
324
- var UnsupportedModelVersionError = class extends AISDKError11 {
336
+ import { AISDKError as AISDKError12 } from "@zenning/provider";
337
+ var UnsupportedModelVersionError = class extends AISDKError12 {
325
338
  constructor(options) {
326
339
  super({
327
340
  name: "AI_UnsupportedModelVersionError",
@@ -334,12 +347,12 @@ var UnsupportedModelVersionError = class extends AISDKError11 {
334
347
  };
335
348
 
336
349
  // src/prompt/invalid-data-content-error.ts
337
- import { AISDKError as AISDKError12 } from "@zenning/provider";
350
+ import { AISDKError as AISDKError13 } from "@zenning/provider";
338
351
  var name11 = "AI_InvalidDataContentError";
339
352
  var marker11 = `vercel.ai.error.${name11}`;
340
353
  var symbol11 = Symbol.for(marker11);
341
354
  var _a11;
342
- var InvalidDataContentError = class extends AISDKError12 {
355
+ var InvalidDataContentError = class extends AISDKError13 {
343
356
  constructor({
344
357
  content,
345
358
  cause,
@@ -350,18 +363,18 @@ var InvalidDataContentError = class extends AISDKError12 {
350
363
  this.content = content;
351
364
  }
352
365
  static isInstance(error) {
353
- return AISDKError12.hasMarker(error, marker11);
366
+ return AISDKError13.hasMarker(error, marker11);
354
367
  }
355
368
  };
356
369
  _a11 = symbol11;
357
370
 
358
371
  // src/prompt/invalid-message-role-error.ts
359
- import { AISDKError as AISDKError13 } from "@zenning/provider";
372
+ import { AISDKError as AISDKError14 } from "@zenning/provider";
360
373
  var name12 = "AI_InvalidMessageRoleError";
361
374
  var marker12 = `vercel.ai.error.${name12}`;
362
375
  var symbol12 = Symbol.for(marker12);
363
376
  var _a12;
364
- var InvalidMessageRoleError = class extends AISDKError13 {
377
+ var InvalidMessageRoleError = class extends AISDKError14 {
365
378
  constructor({
366
379
  role,
367
380
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -371,18 +384,18 @@ var InvalidMessageRoleError = class extends AISDKError13 {
371
384
  this.role = role;
372
385
  }
373
386
  static isInstance(error) {
374
- return AISDKError13.hasMarker(error, marker12);
387
+ return AISDKError14.hasMarker(error, marker12);
375
388
  }
376
389
  };
377
390
  _a12 = symbol12;
378
391
 
379
392
  // src/prompt/message-conversion-error.ts
380
- import { AISDKError as AISDKError14 } from "@zenning/provider";
393
+ import { AISDKError as AISDKError15 } from "@zenning/provider";
381
394
  var name13 = "AI_MessageConversionError";
382
395
  var marker13 = `vercel.ai.error.${name13}`;
383
396
  var symbol13 = Symbol.for(marker13);
384
397
  var _a13;
385
- var MessageConversionError = class extends AISDKError14 {
398
+ var MessageConversionError = class extends AISDKError15 {
386
399
  constructor({
387
400
  originalMessage,
388
401
  message
@@ -392,18 +405,18 @@ var MessageConversionError = class extends AISDKError14 {
392
405
  this.originalMessage = originalMessage;
393
406
  }
394
407
  static isInstance(error) {
395
- return AISDKError14.hasMarker(error, marker13);
408
+ return AISDKError15.hasMarker(error, marker13);
396
409
  }
397
410
  };
398
411
  _a13 = symbol13;
399
412
 
400
413
  // src/util/download/download-error.ts
401
- import { AISDKError as AISDKError15 } from "@zenning/provider";
414
+ import { AISDKError as AISDKError16 } from "@zenning/provider";
402
415
  var name14 = "AI_DownloadError";
403
416
  var marker14 = `vercel.ai.error.${name14}`;
404
417
  var symbol14 = Symbol.for(marker14);
405
418
  var _a14;
406
- var DownloadError = class extends AISDKError15 {
419
+ var DownloadError = class extends AISDKError16 {
407
420
  constructor({
408
421
  url,
409
422
  statusCode,
@@ -418,18 +431,18 @@ var DownloadError = class extends AISDKError15 {
418
431
  this.statusText = statusText;
419
432
  }
420
433
  static isInstance(error) {
421
- return AISDKError15.hasMarker(error, marker14);
434
+ return AISDKError16.hasMarker(error, marker14);
422
435
  }
423
436
  };
424
437
  _a14 = symbol14;
425
438
 
426
439
  // src/util/retry-error.ts
427
- import { AISDKError as AISDKError16 } from "@zenning/provider";
440
+ import { AISDKError as AISDKError17 } from "@zenning/provider";
428
441
  var name15 = "AI_RetryError";
429
442
  var marker15 = `vercel.ai.error.${name15}`;
430
443
  var symbol15 = Symbol.for(marker15);
431
444
  var _a15;
432
- var RetryError = class extends AISDKError16 {
445
+ var RetryError = class extends AISDKError17 {
433
446
  constructor({
434
447
  message,
435
448
  reason,
@@ -442,34 +455,54 @@ var RetryError = class extends AISDKError16 {
442
455
  this.lastError = errors[errors.length - 1];
443
456
  }
444
457
  static isInstance(error) {
445
- return AISDKError16.hasMarker(error, marker15);
458
+ return AISDKError17.hasMarker(error, marker15);
446
459
  }
447
460
  };
448
461
  _a15 = symbol15;
449
462
 
450
463
  // src/model/resolve-model.ts
464
+ function transformToV3LanguageModel(model) {
465
+ return {
466
+ ...model,
467
+ specificationVersion: "v3"
468
+ };
469
+ }
470
+ function transformToV3EmbeddingModel(model) {
471
+ return {
472
+ ...model,
473
+ specificationVersion: "v3"
474
+ };
475
+ }
451
476
  function resolveLanguageModel(model) {
452
477
  if (typeof model !== "string") {
453
- if (model.specificationVersion !== "v2") {
478
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
479
+ const unsupportedModel = model;
454
480
  throw new UnsupportedModelVersionError({
455
- version: model.specificationVersion,
456
- provider: model.provider,
457
- modelId: model.modelId
481
+ version: unsupportedModel.specificationVersion,
482
+ provider: unsupportedModel.provider,
483
+ modelId: unsupportedModel.modelId
458
484
  });
459
485
  }
486
+ if (model.specificationVersion === "v2") {
487
+ return transformToV3LanguageModel(model);
488
+ }
460
489
  return model;
461
490
  }
462
491
  return getGlobalProvider().languageModel(model);
463
492
  }
464
493
  function resolveEmbeddingModel(model) {
465
494
  if (typeof model !== "string") {
466
- if (model.specificationVersion !== "v2") {
495
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
496
+ const unsupportedModel = model;
467
497
  throw new UnsupportedModelVersionError({
468
- version: model.specificationVersion,
469
- provider: model.provider,
470
- modelId: model.modelId
498
+ version: unsupportedModel.specificationVersion,
499
+ provider: unsupportedModel.provider,
500
+ modelId: unsupportedModel.modelId
471
501
  });
472
502
  }
503
+ if (model.specificationVersion === "v2") {
504
+ return transformToV3EmbeddingModel(model);
505
+ }
473
506
  return model;
474
507
  }
475
508
  return getGlobalProvider().textEmbeddingModel(
@@ -484,10 +517,10 @@ function getGlobalProvider() {
484
517
  // src/prompt/convert-to-language-model-prompt.ts
485
518
  import {
486
519
  isUrlSupported
487
- } from "@ai-sdk/provider-utils";
520
+ } from "@zenning/provider-utils";
488
521
 
489
522
  // src/util/detect-media-type.ts
490
- import { convertBase64ToUint8Array } from "@ai-sdk/provider-utils";
523
+ import { convertBase64ToUint8Array } from "@zenning/provider-utils";
491
524
  var imageMediaTypeSignatures = [
492
525
  {
493
526
  mediaType: "image/gif",
@@ -675,10 +708,10 @@ function detectMediaType({
675
708
  import {
676
709
  withUserAgentSuffix,
677
710
  getRuntimeEnvironmentUserAgent
678
- } from "@ai-sdk/provider-utils";
711
+ } from "@zenning/provider-utils";
679
712
 
680
713
  // src/version.ts
681
- var VERSION = true ? "5.1.0" : "0.0.0-test";
714
+ var VERSION = true ? "5.2.0" : "0.0.0-test";
682
715
 
683
716
  // src/util/download/download.ts
684
717
  var download = async ({ url }) => {
@@ -719,11 +752,11 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
719
752
  );
720
753
 
721
754
  // src/prompt/data-content.ts
722
- import { AISDKError as AISDKError18 } from "@zenning/provider";
755
+ import { AISDKError as AISDKError19 } from "@zenning/provider";
723
756
  import {
724
757
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
725
758
  convertUint8ArrayToBase64
726
- } from "@ai-sdk/provider-utils";
759
+ } from "@zenning/provider-utils";
727
760
  import { z } from "zod/v4";
728
761
 
729
762
  // src/prompt/split-data-url.ts
@@ -756,7 +789,7 @@ var dataContentSchema = z.union([
756
789
  { message: "Must be a Buffer" }
757
790
  )
758
791
  ]);
759
- function convertToLanguageModelV2DataContent(content) {
792
+ function convertToLanguageModelV3DataContent(content) {
760
793
  if (content instanceof Uint8Array) {
761
794
  return { data: content, mediaType: void 0 };
762
795
  }
@@ -774,7 +807,7 @@ function convertToLanguageModelV2DataContent(content) {
774
807
  content.toString()
775
808
  );
776
809
  if (dataUrlMediaType == null || base64Content == null) {
777
- throw new AISDKError18({
810
+ throw new AISDKError19({
778
811
  name: "InvalidDataContentError",
779
812
  message: `Invalid data URL format in content ${content.toString()}`
780
813
  });
@@ -875,7 +908,7 @@ function convertToLanguageModelMessage({
875
908
  const providerOptions = part.providerOptions;
876
909
  switch (part.type) {
877
910
  case "file": {
878
- const { data, mediaType } = convertToLanguageModelV2DataContent(
911
+ const { data, mediaType } = convertToLanguageModelV3DataContent(
879
912
  part.data
880
913
  );
881
914
  return {
@@ -971,12 +1004,12 @@ async function downloadAssets(messages, download2, supportedUrls) {
971
1004
  }));
972
1005
  const downloadedFiles = await download2(plannedDownloads);
973
1006
  return Object.fromEntries(
974
- downloadedFiles.filter(
975
- (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
976
- ).map(({ data, mediaType }, index) => [
977
- plannedDownloads[index].url.toString(),
978
- { data, mediaType }
979
- ])
1007
+ downloadedFiles.map(
1008
+ (file, index) => file == null ? null : [
1009
+ plannedDownloads[index].url.toString(),
1010
+ { data: file.data, mediaType: file.mediaType }
1011
+ ]
1012
+ ).filter((file) => file != null)
980
1013
  );
981
1014
  }
982
1015
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -1000,7 +1033,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1000
1033
  default:
1001
1034
  throw new Error(`Unsupported part type: ${type}`);
1002
1035
  }
1003
- const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1036
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV3DataContent(originalData);
1004
1037
  let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
1005
1038
  let data = convertedData;
1006
1039
  if (data instanceof URL) {
@@ -1133,7 +1166,7 @@ function prepareCallSettings({
1133
1166
  }
1134
1167
 
1135
1168
  // src/prompt/prepare-tools-and-tool-choice.ts
1136
- import { asSchema } from "@ai-sdk/provider-utils";
1169
+ import { asSchema } from "@zenning/provider-utils";
1137
1170
 
1138
1171
  // src/util/is-non-empty-object.ts
1139
1172
  function isNonEmptyObject(object2) {
@@ -1188,7 +1221,7 @@ function prepareToolsAndToolChoice({
1188
1221
 
1189
1222
  // src/prompt/standardize-prompt.ts
1190
1223
  import { InvalidPromptError as InvalidPromptError2 } from "@zenning/provider";
1191
- import { safeValidateTypes } from "@ai-sdk/provider-utils";
1224
+ import { safeValidateTypes } from "@zenning/provider-utils";
1192
1225
  import { z as z6 } from "zod/v4";
1193
1226
 
1194
1227
  // src/prompt/message.ts
@@ -1401,12 +1434,12 @@ import {
1401
1434
  GatewayAuthenticationError,
1402
1435
  GatewayModelNotFoundError
1403
1436
  } from "@ai-sdk/gateway";
1404
- import { AISDKError as AISDKError19 } from "@zenning/provider";
1437
+ import { AISDKError as AISDKError20 } from "@zenning/provider";
1405
1438
  function wrapGatewayError(error) {
1406
1439
  if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {
1407
- return new AISDKError19({
1440
+ return new AISDKError20({
1408
1441
  name: "GatewayError",
1409
- message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.",
1442
+ message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @zenning/openai, or register a different global default provider.",
1410
1443
  cause: error
1411
1444
  });
1412
1445
  }
@@ -1651,7 +1684,7 @@ function asArray(value) {
1651
1684
 
1652
1685
  // src/util/retry-with-exponential-backoff.ts
1653
1686
  import { APICallError as APICallError2 } from "@zenning/provider";
1654
- import { delay, getErrorMessage as getErrorMessage3, isAbortError } from "@ai-sdk/provider-utils";
1687
+ import { delay, getErrorMessage as getErrorMessage3, isAbortError } from "@zenning/provider-utils";
1655
1688
  function getRetryDelayInMs({
1656
1689
  error,
1657
1690
  exponentialBackoffDelay
@@ -1793,7 +1826,7 @@ function extractTextContent(content) {
1793
1826
  import {
1794
1827
  convertBase64ToUint8Array as convertBase64ToUint8Array3,
1795
1828
  convertUint8ArrayToBase64 as convertUint8ArrayToBase642
1796
- } from "@ai-sdk/provider-utils";
1829
+ } from "@zenning/provider-utils";
1797
1830
  var DefaultGeneratedFile = class {
1798
1831
  constructor({
1799
1832
  data,
@@ -1831,7 +1864,7 @@ import {
1831
1864
  asSchema as asSchema2,
1832
1865
  safeParseJSON,
1833
1866
  safeValidateTypes as safeValidateTypes2
1834
- } from "@ai-sdk/provider-utils";
1867
+ } from "@zenning/provider-utils";
1835
1868
  async function parseToolCall({
1836
1869
  toolCall,
1837
1870
  tools,
@@ -2712,7 +2745,7 @@ import {
2712
2745
  import {
2713
2746
  createIdGenerator as createIdGenerator2,
2714
2747
  isAbortError as isAbortError2
2715
- } from "@ai-sdk/provider-utils";
2748
+ } from "@zenning/provider-utils";
2716
2749
 
2717
2750
  // src/util/prepare-headers.ts
2718
2751
  function prepareHeaders(headers, defaultHeaders) {
@@ -2851,7 +2884,7 @@ function getResponseUIMessageId({
2851
2884
  // src/ui/process-ui-message-stream.ts
2852
2885
  import {
2853
2886
  validateTypes
2854
- } from "@ai-sdk/provider-utils";
2887
+ } from "@zenning/provider-utils";
2855
2888
 
2856
2889
  // src/ui-message-stream/ui-message-chunks.ts
2857
2890
  import { z as z7 } from "zod/v4";
@@ -2922,11 +2955,6 @@ var uiMessageChunkSchema = z7.union([
2922
2955
  providerExecuted: z7.boolean().optional(),
2923
2956
  dynamic: z7.boolean().optional()
2924
2957
  }),
2925
- z7.strictObject({
2926
- type: z7.literal("reasoning"),
2927
- text: z7.string(),
2928
- providerMetadata: providerMetadataSchema.optional()
2929
- }),
2930
2958
  z7.strictObject({
2931
2959
  type: z7.literal("reasoning-start"),
2932
2960
  id: z7.string(),
@@ -2943,9 +2971,6 @@ var uiMessageChunkSchema = z7.union([
2943
2971
  id: z7.string(),
2944
2972
  providerMetadata: providerMetadataSchema.optional()
2945
2973
  }),
2946
- z7.strictObject({
2947
- type: z7.literal("reasoning-part-finish")
2948
- }),
2949
2974
  z7.strictObject({
2950
2975
  type: z7.literal("source-url"),
2951
2976
  sourceId: z7.string(),
@@ -2971,7 +2996,10 @@ var uiMessageChunkSchema = z7.union([
2971
2996
  providerMetadata: providerMetadataSchema.optional()
2972
2997
  }),
2973
2998
  z7.strictObject({
2974
- type: z7.string().startsWith("data-"),
2999
+ type: z7.custom(
3000
+ (value) => typeof value === "string" && value.startsWith("data-"),
3001
+ { message: 'Type must start with "data-"' }
3002
+ ),
2975
3003
  id: z7.string().optional(),
2976
3004
  data: z7.unknown(),
2977
3005
  transient: z7.boolean().optional()
@@ -3037,7 +3065,7 @@ function mergeObjects(base, overrides) {
3037
3065
  }
3038
3066
 
3039
3067
  // src/util/parse-partial-json.ts
3040
- import { safeParseJSON as safeParseJSON2 } from "@ai-sdk/provider-utils";
3068
+ import { safeParseJSON as safeParseJSON2 } from "@zenning/provider-utils";
3041
3069
 
3042
3070
  // src/util/fix-json.ts
3043
3071
  function fixJson(input) {
@@ -4202,7 +4230,7 @@ import {
4202
4230
  executeTool as executeTool2,
4203
4231
  generateId,
4204
4232
  getErrorMessage as getErrorMessage6
4205
- } from "@ai-sdk/provider-utils";
4233
+ } from "@zenning/provider-utils";
4206
4234
  function runToolsTransformation({
4207
4235
  tools,
4208
4236
  generatorStream,
@@ -4634,7 +4662,7 @@ var DefaultStreamTextResult = class {
4634
4662
  let activeReasoningContent = {};
4635
4663
  const eventProcessor = new TransformStream({
4636
4664
  async transform(chunk, controller) {
4637
- var _a17, _b, _c;
4665
+ var _a17, _b, _c, _d;
4638
4666
  controller.enqueue(chunk);
4639
4667
  const { part } = chunk;
4640
4668
  if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
@@ -4667,6 +4695,18 @@ var DefaultStreamTextResult = class {
4667
4695
  activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
4668
4696
  }
4669
4697
  if (part.type === "text-end") {
4698
+ const activeText = activeTextContent[part.id];
4699
+ if (activeText == null) {
4700
+ controller.enqueue({
4701
+ part: {
4702
+ type: "error",
4703
+ error: `text part ${part.id} not found`
4704
+ },
4705
+ partialOutput: void 0
4706
+ });
4707
+ return;
4708
+ }
4709
+ activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
4670
4710
  delete activeTextContent[part.id];
4671
4711
  }
4672
4712
  if (part.type === "reasoning-start") {
@@ -4690,7 +4730,7 @@ var DefaultStreamTextResult = class {
4690
4730
  return;
4691
4731
  }
4692
4732
  activeReasoning.text += part.text;
4693
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4733
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4694
4734
  }
4695
4735
  if (part.type === "reasoning-end") {
4696
4736
  const activeReasoning = activeReasoningContent[part.id];
@@ -4704,7 +4744,7 @@ var DefaultStreamTextResult = class {
4704
4744
  });
4705
4745
  return;
4706
4746
  }
4707
- activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4747
+ activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
4708
4748
  delete activeReasoningContent[part.id];
4709
4749
  }
4710
4750
  if (part.type === "file") {
@@ -5549,6 +5589,9 @@ var DefaultStreamTextResult = class {
5549
5589
  mediaType: part.mediaType,
5550
5590
  title: part.title,
5551
5591
  filename: part.filename,
5592
+ fileId: part.fileId,
5593
+ startIndex: part.startIndex,
5594
+ endIndex: part.endIndex,
5552
5595
  ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5553
5596
  });
5554
5597
  }
@@ -5956,14 +5999,33 @@ var Agent = class {
5956
5999
  constructor(settings) {
5957
6000
  this.settings = settings;
5958
6001
  }
6002
+ /**
6003
+ * The name of the agent.
6004
+ */
6005
+ get name() {
6006
+ return this.settings.name;
6007
+ }
6008
+ /**
6009
+ * The tools that the agent can use.
6010
+ */
5959
6011
  get tools() {
5960
6012
  return this.settings.tools;
5961
6013
  }
5962
6014
  async generate(options) {
5963
- return generateText({ ...this.settings, ...options });
6015
+ var _a17;
6016
+ return generateText({
6017
+ ...this.settings,
6018
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6019
+ ...options
6020
+ });
5964
6021
  }
5965
6022
  stream(options) {
5966
- return streamText({ ...this.settings, ...options });
6023
+ var _a17;
6024
+ return streamText({
6025
+ ...this.settings,
6026
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6027
+ ...options
6028
+ });
5967
6029
  }
5968
6030
  /**
5969
6031
  * Creates a response object that streams UI messages to the client.
@@ -5976,7 +6038,7 @@ var Agent = class {
5976
6038
  };
5977
6039
 
5978
6040
  // src/embed/embed.ts
5979
- import { withUserAgentSuffix as withUserAgentSuffix3 } from "@ai-sdk/provider-utils";
6041
+ import { withUserAgentSuffix as withUserAgentSuffix3 } from "@zenning/provider-utils";
5980
6042
  async function embed({
5981
6043
  model: modelArg,
5982
6044
  value,
@@ -6095,7 +6157,7 @@ var DefaultEmbedResult = class {
6095
6157
  };
6096
6158
 
6097
6159
  // src/embed/embed-many.ts
6098
- import { withUserAgentSuffix as withUserAgentSuffix4 } from "@ai-sdk/provider-utils";
6160
+ import { withUserAgentSuffix as withUserAgentSuffix4 } from "@zenning/provider-utils";
6099
6161
 
6100
6162
  // src/util/split-array.ts
6101
6163
  function splitArray(array, chunkSize) {
@@ -6344,7 +6406,7 @@ var DefaultEmbedManyResult = class {
6344
6406
  };
6345
6407
 
6346
6408
  // src/generate-image/generate-image.ts
6347
- import { withUserAgentSuffix as withUserAgentSuffix5 } from "@ai-sdk/provider-utils";
6409
+ import { withUserAgentSuffix as withUserAgentSuffix5 } from "@zenning/provider-utils";
6348
6410
  async function generateImage({
6349
6411
  model,
6350
6412
  prompt,
@@ -6359,7 +6421,7 @@ async function generateImage({
6359
6421
  headers
6360
6422
  }) {
6361
6423
  var _a17, _b;
6362
- if (model.specificationVersion !== "v2") {
6424
+ if (model.specificationVersion !== "v3") {
6363
6425
  throw new UnsupportedModelVersionError({
6364
6426
  version: model.specificationVersion,
6365
6427
  provider: model.provider,
@@ -6465,7 +6527,7 @@ async function invokeModelMaxImagesPerCall(model) {
6465
6527
  import {
6466
6528
  createIdGenerator as createIdGenerator3,
6467
6529
  withUserAgentSuffix as withUserAgentSuffix6
6468
- } from "@ai-sdk/provider-utils";
6530
+ } from "@zenning/provider-utils";
6469
6531
 
6470
6532
  // src/generate-text/extract-reasoning-content.ts
6471
6533
  function extractReasoningContent(content) {
@@ -6485,7 +6547,7 @@ import {
6485
6547
  import {
6486
6548
  asSchema as asSchema3,
6487
6549
  safeValidateTypes as safeValidateTypes3
6488
- } from "@ai-sdk/provider-utils";
6550
+ } from "@zenning/provider-utils";
6489
6551
  var noSchemaOutputStrategy = {
6490
6552
  type: "no-schema",
6491
6553
  jsonSchema: void 0,
@@ -6743,7 +6805,7 @@ function getOutputStrategy({
6743
6805
 
6744
6806
  // src/generate-object/parse-and-validate-object-result.ts
6745
6807
  import { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from "@zenning/provider";
6746
- import { safeParseJSON as safeParseJSON3 } from "@ai-sdk/provider-utils";
6808
+ import { safeParseJSON as safeParseJSON3 } from "@zenning/provider-utils";
6747
6809
  async function parseAndValidateObjectResult(result, outputStrategy, context) {
6748
6810
  const parseResult = await safeParseJSON3({ text: result });
6749
6811
  if (!parseResult.success) {
@@ -7183,7 +7245,7 @@ var DefaultGenerateObjectResult = class {
7183
7245
  // src/generate-object/stream-object.ts
7184
7246
  import {
7185
7247
  createIdGenerator as createIdGenerator4
7186
- } from "@ai-sdk/provider-utils";
7248
+ } from "@zenning/provider-utils";
7187
7249
 
7188
7250
  // src/util/cosine-similarity.ts
7189
7251
  function cosineSimilarity(vector1, vector2) {
@@ -7293,7 +7355,7 @@ var SerialJobExecutor = class {
7293
7355
  };
7294
7356
 
7295
7357
  // src/util/simulate-readable-stream.ts
7296
- import { delay as delayFunction } from "@ai-sdk/provider-utils";
7358
+ import { delay as delayFunction } from "@zenning/provider-utils";
7297
7359
  function simulateReadableStream({
7298
7360
  chunks,
7299
7361
  initialDelayInMs = 0,
@@ -7837,19 +7899,7 @@ var DefaultStreamObjectResult = class {
7837
7899
  };
7838
7900
 
7839
7901
  // src/generate-speech/generate-speech.ts
7840
- import { withUserAgentSuffix as withUserAgentSuffix7 } from "@ai-sdk/provider-utils";
7841
-
7842
- // src/error/no-speech-generated-error.ts
7843
- import { AISDKError as AISDKError20 } from "@zenning/provider";
7844
- var NoSpeechGeneratedError = class extends AISDKError20 {
7845
- constructor(options) {
7846
- super({
7847
- name: "AI_NoSpeechGeneratedError",
7848
- message: "No speech audio generated."
7849
- });
7850
- this.responses = options.responses;
7851
- }
7852
- };
7902
+ import { withUserAgentSuffix as withUserAgentSuffix7 } from "@zenning/provider-utils";
7853
7903
 
7854
7904
  // src/generate-speech/generated-audio-file.ts
7855
7905
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
@@ -7956,7 +8006,7 @@ import {
7956
8006
  asSchema as asSchema4,
7957
8007
  safeParseJSON as safeParseJSON4,
7958
8008
  safeValidateTypes as safeValidateTypes4
7959
- } from "@ai-sdk/provider-utils";
8009
+ } from "@zenning/provider-utils";
7960
8010
  var text = () => ({
7961
8011
  type: "text",
7962
8012
  responseFormat: { type: "text" },
@@ -8027,7 +8077,7 @@ var object = ({
8027
8077
  };
8028
8078
 
8029
8079
  // src/generate-text/smooth-stream.ts
8030
- import { delay as originalDelay } from "@ai-sdk/provider-utils";
8080
+ import { delay as originalDelay } from "@zenning/provider-utils";
8031
8081
  import { InvalidArgumentError as InvalidArgumentError2 } from "@zenning/provider";
8032
8082
  var CHUNKING_REGEXPS = {
8033
8083
  word: /\S+\s+/m,
@@ -8106,7 +8156,7 @@ function defaultSettingsMiddleware({
8106
8156
  settings
8107
8157
  }) {
8108
8158
  return {
8109
- middlewareVersion: "v2",
8159
+ middlewareVersion: "v3",
8110
8160
  transformParams: async ({ params }) => {
8111
8161
  return mergeObjects(settings, params);
8112
8162
  }
@@ -8140,7 +8190,7 @@ function extractReasoningMiddleware({
8140
8190
  const openingTag = `<${tagName}>`;
8141
8191
  const closingTag = `</${tagName}>`;
8142
8192
  return {
8143
- middlewareVersion: "v2",
8193
+ middlewareVersion: "v3",
8144
8194
  wrapGenerate: async ({ doGenerate }) => {
8145
8195
  const { content, ...rest } = await doGenerate();
8146
8196
  const transformedContent = [];
@@ -8286,7 +8336,7 @@ function extractReasoningMiddleware({
8286
8336
  // src/middleware/simulate-streaming-middleware.ts
8287
8337
  function simulateStreamingMiddleware() {
8288
8338
  return {
8289
- middlewareVersion: "v2",
8339
+ middlewareVersion: "v3",
8290
8340
  wrapStream: async ({ doGenerate }) => {
8291
8341
  const result = await doGenerate();
8292
8342
  let id = 0;
@@ -8383,7 +8433,7 @@ var doWrap = ({
8383
8433
  return transformParams ? await transformParams({ params, type, model }) : params;
8384
8434
  }
8385
8435
  return {
8386
- specificationVersion: "v2",
8436
+ specificationVersion: "v3",
8387
8437
  provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
8388
8438
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
8389
8439
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
@@ -8643,14 +8693,14 @@ import {
8643
8693
  dynamicTool,
8644
8694
  jsonSchema,
8645
8695
  tool
8646
- } from "@ai-sdk/provider-utils";
8696
+ } from "@zenning/provider-utils";
8647
8697
 
8648
8698
  // src/tool/mcp/mcp-sse-transport.ts
8649
8699
  import {
8650
8700
  EventSourceParserStream,
8651
8701
  withUserAgentSuffix as withUserAgentSuffix8,
8652
8702
  getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2
8653
- } from "@ai-sdk/provider-utils";
8703
+ } from "@zenning/provider-utils";
8654
8704
 
8655
8705
  // src/tool/mcp/json-rpc-message.ts
8656
8706
  import { z as z9 } from "zod/v4";
@@ -9222,7 +9272,7 @@ var DefaultMCPClient = class {
9222
9272
  };
9223
9273
 
9224
9274
  // src/transcribe/transcribe.ts
9225
- import { withUserAgentSuffix as withUserAgentSuffix9 } from "@ai-sdk/provider-utils";
9275
+ import { withUserAgentSuffix as withUserAgentSuffix9 } from "@zenning/provider-utils";
9226
9276
 
9227
9277
  // src/error/no-transcript-generated-error.ts
9228
9278
  import { AISDKError as AISDKError22 } from "@zenning/provider";
@@ -9308,7 +9358,7 @@ import {
9308
9358
  parseJsonEventStream,
9309
9359
  withUserAgentSuffix as withUserAgentSuffix10,
9310
9360
  getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3
9311
- } from "@ai-sdk/provider-utils";
9361
+ } from "@zenning/provider-utils";
9312
9362
 
9313
9363
  // src/ui/process-text-stream.ts
9314
9364
  async function processTextStream({
@@ -9444,7 +9494,7 @@ async function callCompletionApi({
9444
9494
  // src/ui/chat.ts
9445
9495
  import {
9446
9496
  generateId as generateIdFunc
9447
- } from "@ai-sdk/provider-utils";
9497
+ } from "@zenning/provider-utils";
9448
9498
 
9449
9499
  // src/ui/convert-file-list-to-file-ui-parts.ts
9450
9500
  async function convertFileListToFileUIParts(files) {
@@ -9477,14 +9527,14 @@ async function convertFileListToFileUIParts(files) {
9477
9527
  }
9478
9528
 
9479
9529
  // src/ui/default-chat-transport.ts
9480
- import { parseJsonEventStream as parseJsonEventStream2 } from "@ai-sdk/provider-utils";
9530
+ import { parseJsonEventStream as parseJsonEventStream2 } from "@zenning/provider-utils";
9481
9531
 
9482
9532
  // src/ui/http-chat-transport.ts
9483
9533
  import {
9484
9534
  resolve,
9485
9535
  withUserAgentSuffix as withUserAgentSuffix11,
9486
9536
  getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent4
9487
- } from "@ai-sdk/provider-utils";
9537
+ } from "@zenning/provider-utils";
9488
9538
  var HttpChatTransport = class {
9489
9539
  constructor({
9490
9540
  api = "/api/chat",
@@ -9738,9 +9788,11 @@ var AbstractChat = class {
9738
9788
  }
9739
9789
  };
9740
9790
  this.addToolResult = async ({
9791
+ state = "output-available",
9741
9792
  tool: tool3,
9742
9793
  toolCallId,
9743
- output
9794
+ output,
9795
+ errorText
9744
9796
  }) => this.jobExecutor.run(async () => {
9745
9797
  var _a17, _b;
9746
9798
  const messages = this.state.messages;
@@ -9748,16 +9800,16 @@ var AbstractChat = class {
9748
9800
  this.state.replaceMessage(messages.length - 1, {
9749
9801
  ...lastMessage,
9750
9802
  parts: lastMessage.parts.map(
9751
- (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
9803
+ (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
9752
9804
  )
9753
9805
  });
9754
9806
  if (this.activeResponse) {
9755
9807
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
9756
9808
  (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
9757
9809
  ...part,
9758
- state: "output-available",
9810
+ state,
9759
9811
  output,
9760
- errorText: void 0
9812
+ errorText
9761
9813
  } : part
9762
9814
  );
9763
9815
  }
@@ -10015,7 +10067,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
10015
10067
  return part.type === "step-start" ? index : lastIndex;
10016
10068
  }, -1);
10017
10069
  const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
10018
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
10070
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
10071
+ (part) => part.state === "output-available" || part.state === "output-error"
10072
+ );
10019
10073
  }
10020
10074
 
10021
10075
  // src/ui/transform-text-to-ui-message-stream.ts
@@ -10057,7 +10111,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
10057
10111
  import { TypeValidationError as TypeValidationError4 } from "@zenning/provider";
10058
10112
  import {
10059
10113
  validateTypes as validateTypes2
10060
- } from "@ai-sdk/provider-utils";
10114
+ } from "@zenning/provider-utils";
10061
10115
  import { z as z10 } from "zod/v4";
10062
10116
  var textUIPartSchema = z10.object({
10063
10117
  type: z10.literal("text"),
@@ -10206,89 +10260,125 @@ var uiMessageSchema = z10.object({
10206
10260
  ])
10207
10261
  )
10208
10262
  });
10209
- async function validateUIMessages({
10263
+ async function safeValidateUIMessages({
10210
10264
  messages,
10211
10265
  metadataSchema,
10212
10266
  dataSchemas,
10213
10267
  tools
10214
10268
  }) {
10215
- if (messages == null) {
10216
- throw new InvalidArgumentError({
10217
- parameter: "messages",
10269
+ try {
10270
+ if (messages == null) {
10271
+ return {
10272
+ success: false,
10273
+ error: new InvalidArgumentError({
10274
+ parameter: "messages",
10275
+ value: messages,
10276
+ message: "messages parameter must be provided"
10277
+ })
10278
+ };
10279
+ }
10280
+ const validatedMessages = await validateTypes2({
10218
10281
  value: messages,
10219
- message: "messages parameter must be provided"
10282
+ schema: z10.array(uiMessageSchema)
10220
10283
  });
10221
- }
10222
- const validatedMessages = await validateTypes2({
10223
- value: messages,
10224
- schema: z10.array(uiMessageSchema)
10225
- });
10226
- if (metadataSchema) {
10227
- for (const message of validatedMessages) {
10228
- await validateTypes2({
10229
- value: message.metadata,
10230
- schema: metadataSchema
10231
- });
10232
- }
10233
- }
10234
- if (dataSchemas) {
10235
- for (const message of validatedMessages) {
10236
- const dataParts = message.parts.filter(
10237
- (part) => part.type.startsWith("data-")
10238
- );
10239
- for (const dataPart of dataParts) {
10240
- const dataName = dataPart.type.slice(5);
10241
- const dataSchema = dataSchemas[dataName];
10242
- if (!dataSchema) {
10243
- throw new TypeValidationError4({
10244
- value: dataPart.data,
10245
- cause: `No data schema found for data part ${dataName}`
10246
- });
10247
- }
10284
+ if (metadataSchema) {
10285
+ for (const message of validatedMessages) {
10248
10286
  await validateTypes2({
10249
- value: dataPart.data,
10250
- schema: dataSchema
10287
+ value: message.metadata,
10288
+ schema: metadataSchema
10251
10289
  });
10252
10290
  }
10253
10291
  }
10254
- }
10255
- if (tools) {
10256
- for (const message of validatedMessages) {
10257
- const toolParts = message.parts.filter(
10258
- (part) => part.type.startsWith("tool-")
10259
- );
10260
- for (const toolPart of toolParts) {
10261
- const toolName = toolPart.type.slice(5);
10262
- const tool3 = tools[toolName];
10263
- if (!tool3) {
10264
- throw new TypeValidationError4({
10265
- value: toolPart.input,
10266
- cause: `No tool schema found for tool part ${toolName}`
10267
- });
10268
- }
10269
- if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10292
+ if (dataSchemas) {
10293
+ for (const message of validatedMessages) {
10294
+ const dataParts = message.parts.filter(
10295
+ (part) => part.type.startsWith("data-")
10296
+ );
10297
+ for (const dataPart of dataParts) {
10298
+ const dataName = dataPart.type.slice(5);
10299
+ const dataSchema = dataSchemas[dataName];
10300
+ if (!dataSchema) {
10301
+ return {
10302
+ success: false,
10303
+ error: new TypeValidationError4({
10304
+ value: dataPart.data,
10305
+ cause: `No data schema found for data part ${dataName}`
10306
+ })
10307
+ };
10308
+ }
10270
10309
  await validateTypes2({
10271
- value: toolPart.input,
10272
- schema: tool3.inputSchema
10310
+ value: dataPart.data,
10311
+ schema: dataSchema
10273
10312
  });
10274
10313
  }
10275
- if (toolPart.state === "output-available" && tool3.outputSchema) {
10276
- await validateTypes2({
10277
- value: toolPart.output,
10278
- schema: tool3.outputSchema
10279
- });
10314
+ }
10315
+ }
10316
+ if (tools) {
10317
+ for (const message of validatedMessages) {
10318
+ const toolParts = message.parts.filter(
10319
+ (part) => part.type.startsWith("tool-")
10320
+ );
10321
+ for (const toolPart of toolParts) {
10322
+ const toolName = toolPart.type.slice(5);
10323
+ const tool3 = tools[toolName];
10324
+ if (!tool3) {
10325
+ return {
10326
+ success: false,
10327
+ error: new TypeValidationError4({
10328
+ value: toolPart.input,
10329
+ cause: `No tool schema found for tool part ${toolName}`
10330
+ })
10331
+ };
10332
+ }
10333
+ if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10334
+ await validateTypes2({
10335
+ value: toolPart.input,
10336
+ schema: tool3.inputSchema
10337
+ });
10338
+ }
10339
+ if (toolPart.state === "output-available" && tool3.outputSchema) {
10340
+ await validateTypes2({
10341
+ value: toolPart.output,
10342
+ schema: tool3.outputSchema
10343
+ });
10344
+ }
10280
10345
  }
10281
10346
  }
10282
10347
  }
10348
+ return {
10349
+ success: true,
10350
+ data: validatedMessages
10351
+ };
10352
+ } catch (error) {
10353
+ const err = error;
10354
+ return {
10355
+ success: false,
10356
+ error: err
10357
+ };
10283
10358
  }
10284
- return validatedMessages;
10359
+ }
10360
+ async function validateUIMessages({
10361
+ messages,
10362
+ metadataSchema,
10363
+ dataSchemas,
10364
+ tools
10365
+ }) {
10366
+ const response = await safeValidateUIMessages({
10367
+ messages,
10368
+ metadataSchema,
10369
+ dataSchemas,
10370
+ tools
10371
+ });
10372
+ if (!response.success)
10373
+ throw response.error;
10374
+ return response.data;
10285
10375
  }
10286
10376
 
10287
10377
  // src/ui-message-stream/create-ui-message-stream.ts
10288
10378
  import {
10289
10379
  generateId as generateIdFunc2,
10290
10380
  getErrorMessage as getErrorMessage8
10291
- } from "@ai-sdk/provider-utils";
10381
+ } from "@zenning/provider-utils";
10292
10382
  function createUIMessageStream({
10293
10383
  execute,
10294
10384
  onError = getErrorMessage8,
@@ -10421,9 +10511,10 @@ function readUIMessageStream({
10421
10511
  return createAsyncIterableStream(outputStream);
10422
10512
  }
10423
10513
  export {
10424
- AISDKError17 as AISDKError,
10514
+ AISDKError18 as AISDKError,
10425
10515
  APICallError,
10426
10516
  AbstractChat,
10517
+ Agent,
10427
10518
  DefaultChatTransport,
10428
10519
  DownloadError,
10429
10520
  EmptyResponseBodyError,
@@ -10446,6 +10537,7 @@ export {
10446
10537
  NoObjectGeneratedError,
10447
10538
  NoOutputGeneratedError,
10448
10539
  NoOutputSpecifiedError,
10540
+ NoSpeechGeneratedError,
10449
10541
  NoSuchModelError,
10450
10542
  NoSuchProviderError,
10451
10543
  NoSuchToolError,
@@ -10504,10 +10596,12 @@ export {
10504
10596
  jsonSchema2 as jsonSchema,
10505
10597
  lastAssistantMessageIsCompleteWithToolCalls,
10506
10598
  modelMessageSchema,
10599
+ parseJsonEventStream3 as parseJsonEventStream,
10507
10600
  parsePartialJson,
10508
10601
  pipeTextStreamToResponse,
10509
10602
  pipeUIMessageStreamToResponse,
10510
10603
  readUIMessageStream,
10604
+ safeValidateUIMessages,
10511
10605
  simulateReadableStream,
10512
10606
  simulateStreamingMiddleware,
10513
10607
  smoothStream,
@@ -10517,6 +10611,7 @@ export {
10517
10611
  systemModelMessageSchema,
10518
10612
  tool2 as tool,
10519
10613
  toolModelMessageSchema,
10614
+ uiMessageChunkSchema,
10520
10615
  userModelMessageSchema,
10521
10616
  validateUIMessages,
10522
10617
  wrapLanguageModel,