@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.js CHANGED
@@ -20,43 +20,45 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
- AISDKError: () => import_provider17.AISDKError,
24
- APICallError: () => import_provider17.APICallError,
23
+ AISDKError: () => import_provider18.AISDKError,
24
+ APICallError: () => import_provider18.APICallError,
25
25
  AbstractChat: () => AbstractChat,
26
+ Agent: () => Agent,
26
27
  DefaultChatTransport: () => DefaultChatTransport,
27
28
  DownloadError: () => DownloadError,
28
- EmptyResponseBodyError: () => import_provider17.EmptyResponseBodyError,
29
+ EmptyResponseBodyError: () => import_provider18.EmptyResponseBodyError,
29
30
  Experimental_Agent: () => Agent,
30
31
  HttpChatTransport: () => HttpChatTransport,
31
32
  InvalidArgumentError: () => InvalidArgumentError,
32
33
  InvalidDataContentError: () => InvalidDataContentError,
33
34
  InvalidMessageRoleError: () => InvalidMessageRoleError,
34
- InvalidPromptError: () => import_provider17.InvalidPromptError,
35
- InvalidResponseDataError: () => import_provider17.InvalidResponseDataError,
35
+ InvalidPromptError: () => import_provider18.InvalidPromptError,
36
+ InvalidResponseDataError: () => import_provider18.InvalidResponseDataError,
36
37
  InvalidStreamPartError: () => InvalidStreamPartError,
37
38
  InvalidToolInputError: () => InvalidToolInputError,
38
- JSONParseError: () => import_provider17.JSONParseError,
39
+ JSONParseError: () => import_provider18.JSONParseError,
39
40
  JsonToSseTransformStream: () => JsonToSseTransformStream,
40
- LoadAPIKeyError: () => import_provider17.LoadAPIKeyError,
41
+ LoadAPIKeyError: () => import_provider18.LoadAPIKeyError,
41
42
  MCPClientError: () => MCPClientError,
42
43
  MessageConversionError: () => MessageConversionError,
43
- NoContentGeneratedError: () => import_provider17.NoContentGeneratedError,
44
+ NoContentGeneratedError: () => import_provider18.NoContentGeneratedError,
44
45
  NoImageGeneratedError: () => NoImageGeneratedError,
45
46
  NoObjectGeneratedError: () => NoObjectGeneratedError,
46
47
  NoOutputGeneratedError: () => NoOutputGeneratedError,
47
48
  NoOutputSpecifiedError: () => NoOutputSpecifiedError,
48
- NoSuchModelError: () => import_provider17.NoSuchModelError,
49
+ NoSpeechGeneratedError: () => NoSpeechGeneratedError,
50
+ NoSuchModelError: () => import_provider18.NoSuchModelError,
49
51
  NoSuchProviderError: () => NoSuchProviderError,
50
52
  NoSuchToolError: () => NoSuchToolError,
51
53
  Output: () => output_exports,
52
54
  RetryError: () => RetryError,
53
55
  SerialJobExecutor: () => SerialJobExecutor,
54
56
  TextStreamChatTransport: () => TextStreamChatTransport,
55
- TooManyEmbeddingValuesForCallError: () => import_provider17.TooManyEmbeddingValuesForCallError,
57
+ TooManyEmbeddingValuesForCallError: () => import_provider18.TooManyEmbeddingValuesForCallError,
56
58
  ToolCallRepairError: () => ToolCallRepairError,
57
- TypeValidationError: () => import_provider17.TypeValidationError,
59
+ TypeValidationError: () => import_provider18.TypeValidationError,
58
60
  UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
59
- UnsupportedFunctionalityError: () => import_provider17.UnsupportedFunctionalityError,
61
+ UnsupportedFunctionalityError: () => import_provider18.UnsupportedFunctionalityError,
60
62
  UnsupportedModelVersionError: () => UnsupportedModelVersionError,
61
63
  asSchema: () => import_provider_utils35.asSchema,
62
64
  assistantModelMessageSchema: () => assistantModelMessageSchema,
@@ -103,10 +105,12 @@ __export(src_exports, {
103
105
  jsonSchema: () => import_provider_utils35.jsonSchema,
104
106
  lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
105
107
  modelMessageSchema: () => modelMessageSchema,
108
+ parseJsonEventStream: () => import_provider_utils35.parseJsonEventStream,
106
109
  parsePartialJson: () => parsePartialJson,
107
110
  pipeTextStreamToResponse: () => pipeTextStreamToResponse,
108
111
  pipeUIMessageStreamToResponse: () => pipeUIMessageStreamToResponse,
109
112
  readUIMessageStream: () => readUIMessageStream,
113
+ safeValidateUIMessages: () => safeValidateUIMessages,
110
114
  simulateReadableStream: () => simulateReadableStream,
111
115
  simulateStreamingMiddleware: () => simulateStreamingMiddleware,
112
116
  smoothStream: () => smoothStream,
@@ -116,6 +120,7 @@ __export(src_exports, {
116
120
  systemModelMessageSchema: () => systemModelMessageSchema,
117
121
  tool: () => import_provider_utils35.tool,
118
122
  toolModelMessageSchema: () => toolModelMessageSchema,
123
+ uiMessageChunkSchema: () => uiMessageChunkSchema,
119
124
  userModelMessageSchema: () => userModelMessageSchema,
120
125
  validateUIMessages: () => validateUIMessages,
121
126
  wrapLanguageModel: () => wrapLanguageModel,
@@ -124,10 +129,10 @@ __export(src_exports, {
124
129
  });
125
130
  module.exports = __toCommonJS(src_exports);
126
131
  var import_gateway3 = require("@ai-sdk/gateway");
127
- var import_provider_utils35 = require("@ai-sdk/provider-utils");
132
+ var import_provider_utils35 = require("@zenning/provider-utils");
128
133
 
129
134
  // src/generate-text/generate-text.ts
130
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
135
+ var import_provider_utils10 = require("@zenning/provider-utils");
131
136
 
132
137
  // src/error/no-output-specified-error.ts
133
138
  var import_provider = require("@zenning/provider");
@@ -201,7 +206,7 @@ var logWarnings = (warnings) => {
201
206
  var import_gateway = require("@ai-sdk/gateway");
202
207
 
203
208
  // src/error/index.ts
204
- var import_provider17 = require("@zenning/provider");
209
+ var import_provider18 = require("@zenning/provider");
205
210
 
206
211
  // src/error/invalid-argument-error.ts
207
212
  var import_provider2 = require("@zenning/provider");
@@ -366,13 +371,25 @@ var NoOutputGeneratedError = class extends import_provider8.AISDKError {
366
371
  };
367
372
  _a8 = symbol8;
368
373
 
369
- // src/error/no-such-tool-error.ts
374
+ // src/error/no-speech-generated-error.ts
370
375
  var import_provider9 = require("@zenning/provider");
376
+ var NoSpeechGeneratedError = class extends import_provider9.AISDKError {
377
+ constructor(options) {
378
+ super({
379
+ name: "AI_NoSpeechGeneratedError",
380
+ message: "No speech audio generated."
381
+ });
382
+ this.responses = options.responses;
383
+ }
384
+ };
385
+
386
+ // src/error/no-such-tool-error.ts
387
+ var import_provider10 = require("@zenning/provider");
371
388
  var name9 = "AI_NoSuchToolError";
372
389
  var marker9 = `vercel.ai.error.${name9}`;
373
390
  var symbol9 = Symbol.for(marker9);
374
391
  var _a9;
375
- var NoSuchToolError = class extends import_provider9.AISDKError {
392
+ var NoSuchToolError = class extends import_provider10.AISDKError {
376
393
  constructor({
377
394
  toolName,
378
395
  availableTools = void 0,
@@ -384,36 +401,36 @@ var NoSuchToolError = class extends import_provider9.AISDKError {
384
401
  this.availableTools = availableTools;
385
402
  }
386
403
  static isInstance(error) {
387
- return import_provider9.AISDKError.hasMarker(error, marker9);
404
+ return import_provider10.AISDKError.hasMarker(error, marker9);
388
405
  }
389
406
  };
390
407
  _a9 = symbol9;
391
408
 
392
409
  // src/error/tool-call-repair-error.ts
393
- var import_provider10 = require("@zenning/provider");
410
+ var import_provider11 = require("@zenning/provider");
394
411
  var name10 = "AI_ToolCallRepairError";
395
412
  var marker10 = `vercel.ai.error.${name10}`;
396
413
  var symbol10 = Symbol.for(marker10);
397
414
  var _a10;
398
- var ToolCallRepairError = class extends import_provider10.AISDKError {
415
+ var ToolCallRepairError = class extends import_provider11.AISDKError {
399
416
  constructor({
400
417
  cause,
401
418
  originalError,
402
- message = `Error repairing tool call: ${(0, import_provider10.getErrorMessage)(cause)}`
419
+ message = `Error repairing tool call: ${(0, import_provider11.getErrorMessage)(cause)}`
403
420
  }) {
404
421
  super({ name: name10, message, cause });
405
422
  this[_a10] = true;
406
423
  this.originalError = originalError;
407
424
  }
408
425
  static isInstance(error) {
409
- return import_provider10.AISDKError.hasMarker(error, marker10);
426
+ return import_provider11.AISDKError.hasMarker(error, marker10);
410
427
  }
411
428
  };
412
429
  _a10 = symbol10;
413
430
 
414
431
  // src/error/unsupported-model-version-error.ts
415
- var import_provider11 = require("@zenning/provider");
416
- var UnsupportedModelVersionError = class extends import_provider11.AISDKError {
432
+ var import_provider12 = require("@zenning/provider");
433
+ var UnsupportedModelVersionError = class extends import_provider12.AISDKError {
417
434
  constructor(options) {
418
435
  super({
419
436
  name: "AI_UnsupportedModelVersionError",
@@ -426,12 +443,12 @@ var UnsupportedModelVersionError = class extends import_provider11.AISDKError {
426
443
  };
427
444
 
428
445
  // src/prompt/invalid-data-content-error.ts
429
- var import_provider12 = require("@zenning/provider");
446
+ var import_provider13 = require("@zenning/provider");
430
447
  var name11 = "AI_InvalidDataContentError";
431
448
  var marker11 = `vercel.ai.error.${name11}`;
432
449
  var symbol11 = Symbol.for(marker11);
433
450
  var _a11;
434
- var InvalidDataContentError = class extends import_provider12.AISDKError {
451
+ var InvalidDataContentError = class extends import_provider13.AISDKError {
435
452
  constructor({
436
453
  content,
437
454
  cause,
@@ -442,18 +459,18 @@ var InvalidDataContentError = class extends import_provider12.AISDKError {
442
459
  this.content = content;
443
460
  }
444
461
  static isInstance(error) {
445
- return import_provider12.AISDKError.hasMarker(error, marker11);
462
+ return import_provider13.AISDKError.hasMarker(error, marker11);
446
463
  }
447
464
  };
448
465
  _a11 = symbol11;
449
466
 
450
467
  // src/prompt/invalid-message-role-error.ts
451
- var import_provider13 = require("@zenning/provider");
468
+ var import_provider14 = require("@zenning/provider");
452
469
  var name12 = "AI_InvalidMessageRoleError";
453
470
  var marker12 = `vercel.ai.error.${name12}`;
454
471
  var symbol12 = Symbol.for(marker12);
455
472
  var _a12;
456
- var InvalidMessageRoleError = class extends import_provider13.AISDKError {
473
+ var InvalidMessageRoleError = class extends import_provider14.AISDKError {
457
474
  constructor({
458
475
  role,
459
476
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -463,18 +480,18 @@ var InvalidMessageRoleError = class extends import_provider13.AISDKError {
463
480
  this.role = role;
464
481
  }
465
482
  static isInstance(error) {
466
- return import_provider13.AISDKError.hasMarker(error, marker12);
483
+ return import_provider14.AISDKError.hasMarker(error, marker12);
467
484
  }
468
485
  };
469
486
  _a12 = symbol12;
470
487
 
471
488
  // src/prompt/message-conversion-error.ts
472
- var import_provider14 = require("@zenning/provider");
489
+ var import_provider15 = require("@zenning/provider");
473
490
  var name13 = "AI_MessageConversionError";
474
491
  var marker13 = `vercel.ai.error.${name13}`;
475
492
  var symbol13 = Symbol.for(marker13);
476
493
  var _a13;
477
- var MessageConversionError = class extends import_provider14.AISDKError {
494
+ var MessageConversionError = class extends import_provider15.AISDKError {
478
495
  constructor({
479
496
  originalMessage,
480
497
  message
@@ -484,18 +501,18 @@ var MessageConversionError = class extends import_provider14.AISDKError {
484
501
  this.originalMessage = originalMessage;
485
502
  }
486
503
  static isInstance(error) {
487
- return import_provider14.AISDKError.hasMarker(error, marker13);
504
+ return import_provider15.AISDKError.hasMarker(error, marker13);
488
505
  }
489
506
  };
490
507
  _a13 = symbol13;
491
508
 
492
509
  // src/util/download/download-error.ts
493
- var import_provider15 = require("@zenning/provider");
510
+ var import_provider16 = require("@zenning/provider");
494
511
  var name14 = "AI_DownloadError";
495
512
  var marker14 = `vercel.ai.error.${name14}`;
496
513
  var symbol14 = Symbol.for(marker14);
497
514
  var _a14;
498
- var DownloadError = class extends import_provider15.AISDKError {
515
+ var DownloadError = class extends import_provider16.AISDKError {
499
516
  constructor({
500
517
  url,
501
518
  statusCode,
@@ -510,18 +527,18 @@ var DownloadError = class extends import_provider15.AISDKError {
510
527
  this.statusText = statusText;
511
528
  }
512
529
  static isInstance(error) {
513
- return import_provider15.AISDKError.hasMarker(error, marker14);
530
+ return import_provider16.AISDKError.hasMarker(error, marker14);
514
531
  }
515
532
  };
516
533
  _a14 = symbol14;
517
534
 
518
535
  // src/util/retry-error.ts
519
- var import_provider16 = require("@zenning/provider");
536
+ var import_provider17 = require("@zenning/provider");
520
537
  var name15 = "AI_RetryError";
521
538
  var marker15 = `vercel.ai.error.${name15}`;
522
539
  var symbol15 = Symbol.for(marker15);
523
540
  var _a15;
524
- var RetryError = class extends import_provider16.AISDKError {
541
+ var RetryError = class extends import_provider17.AISDKError {
525
542
  constructor({
526
543
  message,
527
544
  reason,
@@ -534,34 +551,54 @@ var RetryError = class extends import_provider16.AISDKError {
534
551
  this.lastError = errors[errors.length - 1];
535
552
  }
536
553
  static isInstance(error) {
537
- return import_provider16.AISDKError.hasMarker(error, marker15);
554
+ return import_provider17.AISDKError.hasMarker(error, marker15);
538
555
  }
539
556
  };
540
557
  _a15 = symbol15;
541
558
 
542
559
  // src/model/resolve-model.ts
560
+ function transformToV3LanguageModel(model) {
561
+ return {
562
+ ...model,
563
+ specificationVersion: "v3"
564
+ };
565
+ }
566
+ function transformToV3EmbeddingModel(model) {
567
+ return {
568
+ ...model,
569
+ specificationVersion: "v3"
570
+ };
571
+ }
543
572
  function resolveLanguageModel(model) {
544
573
  if (typeof model !== "string") {
545
- if (model.specificationVersion !== "v2") {
574
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
575
+ const unsupportedModel = model;
546
576
  throw new UnsupportedModelVersionError({
547
- version: model.specificationVersion,
548
- provider: model.provider,
549
- modelId: model.modelId
577
+ version: unsupportedModel.specificationVersion,
578
+ provider: unsupportedModel.provider,
579
+ modelId: unsupportedModel.modelId
550
580
  });
551
581
  }
582
+ if (model.specificationVersion === "v2") {
583
+ return transformToV3LanguageModel(model);
584
+ }
552
585
  return model;
553
586
  }
554
587
  return getGlobalProvider().languageModel(model);
555
588
  }
556
589
  function resolveEmbeddingModel(model) {
557
590
  if (typeof model !== "string") {
558
- if (model.specificationVersion !== "v2") {
591
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
592
+ const unsupportedModel = model;
559
593
  throw new UnsupportedModelVersionError({
560
- version: model.specificationVersion,
561
- provider: model.provider,
562
- modelId: model.modelId
594
+ version: unsupportedModel.specificationVersion,
595
+ provider: unsupportedModel.provider,
596
+ modelId: unsupportedModel.modelId
563
597
  });
564
598
  }
599
+ if (model.specificationVersion === "v2") {
600
+ return transformToV3EmbeddingModel(model);
601
+ }
565
602
  return model;
566
603
  }
567
604
  return getGlobalProvider().textEmbeddingModel(
@@ -574,10 +611,10 @@ function getGlobalProvider() {
574
611
  }
575
612
 
576
613
  // src/prompt/convert-to-language-model-prompt.ts
577
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
614
+ var import_provider_utils4 = require("@zenning/provider-utils");
578
615
 
579
616
  // src/util/detect-media-type.ts
580
- var import_provider_utils = require("@ai-sdk/provider-utils");
617
+ var import_provider_utils = require("@zenning/provider-utils");
581
618
  var imageMediaTypeSignatures = [
582
619
  {
583
620
  mediaType: "image/gif",
@@ -762,10 +799,10 @@ function detectMediaType({
762
799
  }
763
800
 
764
801
  // src/util/download/download.ts
765
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
802
+ var import_provider_utils2 = require("@zenning/provider-utils");
766
803
 
767
804
  // src/version.ts
768
- var VERSION = true ? "5.1.0" : "0.0.0-test";
805
+ var VERSION = true ? "5.2.0" : "0.0.0-test";
769
806
 
770
807
  // src/util/download/download.ts
771
808
  var download = async ({ url }) => {
@@ -806,8 +843,8 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
806
843
  );
807
844
 
808
845
  // src/prompt/data-content.ts
809
- var import_provider18 = require("@zenning/provider");
810
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
846
+ var import_provider19 = require("@zenning/provider");
847
+ var import_provider_utils3 = require("@zenning/provider-utils");
811
848
  var import_v4 = require("zod/v4");
812
849
 
813
850
  // src/prompt/split-data-url.ts
@@ -840,7 +877,7 @@ var dataContentSchema = import_v4.z.union([
840
877
  { message: "Must be a Buffer" }
841
878
  )
842
879
  ]);
843
- function convertToLanguageModelV2DataContent(content) {
880
+ function convertToLanguageModelV3DataContent(content) {
844
881
  if (content instanceof Uint8Array) {
845
882
  return { data: content, mediaType: void 0 };
846
883
  }
@@ -858,7 +895,7 @@ function convertToLanguageModelV2DataContent(content) {
858
895
  content.toString()
859
896
  );
860
897
  if (dataUrlMediaType == null || base64Content == null) {
861
- throw new import_provider18.AISDKError({
898
+ throw new import_provider19.AISDKError({
862
899
  name: "InvalidDataContentError",
863
900
  message: `Invalid data URL format in content ${content.toString()}`
864
901
  });
@@ -959,7 +996,7 @@ function convertToLanguageModelMessage({
959
996
  const providerOptions = part.providerOptions;
960
997
  switch (part.type) {
961
998
  case "file": {
962
- const { data, mediaType } = convertToLanguageModelV2DataContent(
999
+ const { data, mediaType } = convertToLanguageModelV3DataContent(
963
1000
  part.data
964
1001
  );
965
1002
  return {
@@ -1055,12 +1092,12 @@ async function downloadAssets(messages, download2, supportedUrls) {
1055
1092
  }));
1056
1093
  const downloadedFiles = await download2(plannedDownloads);
1057
1094
  return Object.fromEntries(
1058
- downloadedFiles.filter(
1059
- (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
1060
- ).map(({ data, mediaType }, index) => [
1061
- plannedDownloads[index].url.toString(),
1062
- { data, mediaType }
1063
- ])
1095
+ downloadedFiles.map(
1096
+ (file, index) => file == null ? null : [
1097
+ plannedDownloads[index].url.toString(),
1098
+ { data: file.data, mediaType: file.mediaType }
1099
+ ]
1100
+ ).filter((file) => file != null)
1064
1101
  );
1065
1102
  }
1066
1103
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -1084,7 +1121,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1084
1121
  default:
1085
1122
  throw new Error(`Unsupported part type: ${type}`);
1086
1123
  }
1087
- const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1124
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV3DataContent(originalData);
1088
1125
  let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
1089
1126
  let data = convertedData;
1090
1127
  if (data instanceof URL) {
@@ -1217,7 +1254,7 @@ function prepareCallSettings({
1217
1254
  }
1218
1255
 
1219
1256
  // src/prompt/prepare-tools-and-tool-choice.ts
1220
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1257
+ var import_provider_utils5 = require("@zenning/provider-utils");
1221
1258
 
1222
1259
  // src/util/is-non-empty-object.ts
1223
1260
  function isNonEmptyObject(object2) {
@@ -1271,8 +1308,8 @@ function prepareToolsAndToolChoice({
1271
1308
  }
1272
1309
 
1273
1310
  // src/prompt/standardize-prompt.ts
1274
- var import_provider19 = require("@zenning/provider");
1275
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1311
+ var import_provider20 = require("@zenning/provider");
1312
+ var import_provider_utils6 = require("@zenning/provider-utils");
1276
1313
  var import_v46 = require("zod/v4");
1277
1314
 
1278
1315
  // src/prompt/message.ts
@@ -1427,19 +1464,19 @@ var coreMessageSchema = modelMessageSchema;
1427
1464
  // src/prompt/standardize-prompt.ts
1428
1465
  async function standardizePrompt(prompt) {
1429
1466
  if (prompt.prompt == null && prompt.messages == null) {
1430
- throw new import_provider19.InvalidPromptError({
1467
+ throw new import_provider20.InvalidPromptError({
1431
1468
  prompt,
1432
1469
  message: "prompt or messages must be defined"
1433
1470
  });
1434
1471
  }
1435
1472
  if (prompt.prompt != null && prompt.messages != null) {
1436
- throw new import_provider19.InvalidPromptError({
1473
+ throw new import_provider20.InvalidPromptError({
1437
1474
  prompt,
1438
1475
  message: "prompt and messages cannot be defined at the same time"
1439
1476
  });
1440
1477
  }
1441
1478
  if (prompt.system != null && typeof prompt.system !== "string") {
1442
- throw new import_provider19.InvalidPromptError({
1479
+ throw new import_provider20.InvalidPromptError({
1443
1480
  prompt,
1444
1481
  message: "system must be a string"
1445
1482
  });
@@ -1452,13 +1489,13 @@ async function standardizePrompt(prompt) {
1452
1489
  } else if (prompt.messages != null) {
1453
1490
  messages = prompt.messages;
1454
1491
  } else {
1455
- throw new import_provider19.InvalidPromptError({
1492
+ throw new import_provider20.InvalidPromptError({
1456
1493
  prompt,
1457
1494
  message: "prompt or messages must be defined"
1458
1495
  });
1459
1496
  }
1460
1497
  if (messages.length === 0) {
1461
- throw new import_provider19.InvalidPromptError({
1498
+ throw new import_provider20.InvalidPromptError({
1462
1499
  prompt,
1463
1500
  message: "messages must not be empty"
1464
1501
  });
@@ -1468,7 +1505,7 @@ async function standardizePrompt(prompt) {
1468
1505
  schema: import_v46.z.array(modelMessageSchema)
1469
1506
  });
1470
1507
  if (!validationResult.success) {
1471
- throw new import_provider19.InvalidPromptError({
1508
+ throw new import_provider20.InvalidPromptError({
1472
1509
  prompt,
1473
1510
  message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
1474
1511
  cause: validationResult.error
@@ -1482,12 +1519,12 @@ async function standardizePrompt(prompt) {
1482
1519
 
1483
1520
  // src/prompt/wrap-gateway-error.ts
1484
1521
  var import_gateway2 = require("@ai-sdk/gateway");
1485
- var import_provider20 = require("@zenning/provider");
1522
+ var import_provider21 = require("@zenning/provider");
1486
1523
  function wrapGatewayError(error) {
1487
1524
  if (import_gateway2.GatewayAuthenticationError.isInstance(error) || import_gateway2.GatewayModelNotFoundError.isInstance(error)) {
1488
- return new import_provider20.AISDKError({
1525
+ return new import_provider21.AISDKError({
1489
1526
  name: "GatewayError",
1490
- 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.",
1527
+ 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.",
1491
1528
  cause: error
1492
1529
  });
1493
1530
  }
@@ -1731,8 +1768,8 @@ function asArray(value) {
1731
1768
  }
1732
1769
 
1733
1770
  // src/util/retry-with-exponential-backoff.ts
1734
- var import_provider21 = require("@zenning/provider");
1735
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
1771
+ var import_provider22 = require("@zenning/provider");
1772
+ var import_provider_utils7 = require("@zenning/provider-utils");
1736
1773
  function getRetryDelayInMs({
1737
1774
  error,
1738
1775
  exponentialBackoffDelay
@@ -1798,7 +1835,7 @@ async function _retryWithExponentialBackoff(f, {
1798
1835
  errors: newErrors
1799
1836
  });
1800
1837
  }
1801
- if (error instanceof Error && import_provider21.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1838
+ if (error instanceof Error && import_provider22.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
1802
1839
  await (0, import_provider_utils7.delay)(
1803
1840
  getRetryDelayInMs({
1804
1841
  error,
@@ -1871,7 +1908,7 @@ function extractTextContent(content) {
1871
1908
  }
1872
1909
 
1873
1910
  // src/generate-text/generated-file.ts
1874
- var import_provider_utils8 = require("@ai-sdk/provider-utils");
1911
+ var import_provider_utils8 = require("@zenning/provider-utils");
1875
1912
  var DefaultGeneratedFile = class {
1876
1913
  constructor({
1877
1914
  data,
@@ -1905,7 +1942,7 @@ var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
1905
1942
  };
1906
1943
 
1907
1944
  // src/generate-text/parse-tool-call.ts
1908
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
1945
+ var import_provider_utils9 = require("@zenning/provider-utils");
1909
1946
  async function parseToolCall({
1910
1947
  toolCall,
1911
1948
  tools,
@@ -2082,14 +2119,14 @@ async function isStopConditionMet({
2082
2119
  }
2083
2120
 
2084
2121
  // src/prompt/create-tool-model-output.ts
2085
- var import_provider22 = require("@zenning/provider");
2122
+ var import_provider23 = require("@zenning/provider");
2086
2123
  function createToolModelOutput({
2087
2124
  output,
2088
2125
  tool: tool3,
2089
2126
  errorMode
2090
2127
  }) {
2091
2128
  if (errorMode === "text") {
2092
- return { type: "error-text", value: (0, import_provider22.getErrorMessage)(output) };
2129
+ return { type: "error-text", value: (0, import_provider23.getErrorMessage)(output) };
2093
2130
  } else if (errorMode === "json") {
2094
2131
  return { type: "error-json", value: toJSONValue(output) };
2095
2132
  }
@@ -2778,8 +2815,8 @@ function asContent({
2778
2815
  }
2779
2816
 
2780
2817
  // src/generate-text/stream-text.ts
2781
- var import_provider23 = require("@zenning/provider");
2782
- var import_provider_utils14 = require("@ai-sdk/provider-utils");
2818
+ var import_provider24 = require("@zenning/provider");
2819
+ var import_provider_utils14 = require("@zenning/provider-utils");
2783
2820
 
2784
2821
  // src/util/prepare-headers.ts
2785
2822
  function prepareHeaders(headers, defaultHeaders) {
@@ -2916,7 +2953,7 @@ function getResponseUIMessageId({
2916
2953
  }
2917
2954
 
2918
2955
  // src/ui/process-ui-message-stream.ts
2919
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
2956
+ var import_provider_utils12 = require("@zenning/provider-utils");
2920
2957
 
2921
2958
  // src/ui-message-stream/ui-message-chunks.ts
2922
2959
  var import_v47 = require("zod/v4");
@@ -2987,11 +3024,6 @@ var uiMessageChunkSchema = import_v47.z.union([
2987
3024
  providerExecuted: import_v47.z.boolean().optional(),
2988
3025
  dynamic: import_v47.z.boolean().optional()
2989
3026
  }),
2990
- import_v47.z.strictObject({
2991
- type: import_v47.z.literal("reasoning"),
2992
- text: import_v47.z.string(),
2993
- providerMetadata: providerMetadataSchema.optional()
2994
- }),
2995
3027
  import_v47.z.strictObject({
2996
3028
  type: import_v47.z.literal("reasoning-start"),
2997
3029
  id: import_v47.z.string(),
@@ -3008,9 +3040,6 @@ var uiMessageChunkSchema = import_v47.z.union([
3008
3040
  id: import_v47.z.string(),
3009
3041
  providerMetadata: providerMetadataSchema.optional()
3010
3042
  }),
3011
- import_v47.z.strictObject({
3012
- type: import_v47.z.literal("reasoning-part-finish")
3013
- }),
3014
3043
  import_v47.z.strictObject({
3015
3044
  type: import_v47.z.literal("source-url"),
3016
3045
  sourceId: import_v47.z.string(),
@@ -3036,7 +3065,10 @@ var uiMessageChunkSchema = import_v47.z.union([
3036
3065
  providerMetadata: providerMetadataSchema.optional()
3037
3066
  }),
3038
3067
  import_v47.z.strictObject({
3039
- type: import_v47.z.string().startsWith("data-"),
3068
+ type: import_v47.z.custom(
3069
+ (value) => typeof value === "string" && value.startsWith("data-"),
3070
+ { message: 'Type must start with "data-"' }
3071
+ ),
3040
3072
  id: import_v47.z.string().optional(),
3041
3073
  data: import_v47.z.unknown(),
3042
3074
  transient: import_v47.z.boolean().optional()
@@ -3102,7 +3134,7 @@ function mergeObjects(base, overrides) {
3102
3134
  }
3103
3135
 
3104
3136
  // src/util/parse-partial-json.ts
3105
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
3137
+ var import_provider_utils11 = require("@zenning/provider-utils");
3106
3138
 
3107
3139
  // src/util/fix-json.ts
3108
3140
  function fixJson(input) {
@@ -4263,7 +4295,7 @@ function now() {
4263
4295
  }
4264
4296
 
4265
4297
  // src/generate-text/run-tools-transformation.ts
4266
- var import_provider_utils13 = require("@ai-sdk/provider-utils");
4298
+ var import_provider_utils13 = require("@zenning/provider-utils");
4267
4299
  function runToolsTransformation({
4268
4300
  tools,
4269
4301
  generatorStream,
@@ -4695,7 +4727,7 @@ var DefaultStreamTextResult = class {
4695
4727
  let activeReasoningContent = {};
4696
4728
  const eventProcessor = new TransformStream({
4697
4729
  async transform(chunk, controller) {
4698
- var _a17, _b, _c;
4730
+ var _a17, _b, _c, _d;
4699
4731
  controller.enqueue(chunk);
4700
4732
  const { part } = chunk;
4701
4733
  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") {
@@ -4728,6 +4760,18 @@ var DefaultStreamTextResult = class {
4728
4760
  activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
4729
4761
  }
4730
4762
  if (part.type === "text-end") {
4763
+ const activeText = activeTextContent[part.id];
4764
+ if (activeText == null) {
4765
+ controller.enqueue({
4766
+ part: {
4767
+ type: "error",
4768
+ error: `text part ${part.id} not found`
4769
+ },
4770
+ partialOutput: void 0
4771
+ });
4772
+ return;
4773
+ }
4774
+ activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
4731
4775
  delete activeTextContent[part.id];
4732
4776
  }
4733
4777
  if (part.type === "reasoning-start") {
@@ -4751,7 +4795,7 @@ var DefaultStreamTextResult = class {
4751
4795
  return;
4752
4796
  }
4753
4797
  activeReasoning.text += part.text;
4754
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4798
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4755
4799
  }
4756
4800
  if (part.type === "reasoning-end") {
4757
4801
  const activeReasoning = activeReasoningContent[part.id];
@@ -4765,7 +4809,7 @@ var DefaultStreamTextResult = class {
4765
4809
  });
4766
4810
  return;
4767
4811
  }
4768
- activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4812
+ activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
4769
4813
  delete activeReasoningContent[part.id];
4770
4814
  }
4771
4815
  if (part.type === "file") {
@@ -5514,7 +5558,7 @@ var DefaultStreamTextResult = class {
5514
5558
  sendSources = false,
5515
5559
  sendStart = true,
5516
5560
  sendFinish = true,
5517
- onError = import_provider23.getErrorMessage
5561
+ onError = import_provider24.getErrorMessage
5518
5562
  } = {}) {
5519
5563
  const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
5520
5564
  originalMessages,
@@ -5610,6 +5654,9 @@ var DefaultStreamTextResult = class {
5610
5654
  mediaType: part.mediaType,
5611
5655
  title: part.title,
5612
5656
  filename: part.filename,
5657
+ fileId: part.fileId,
5658
+ startIndex: part.startIndex,
5659
+ endIndex: part.endIndex,
5613
5660
  ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5614
5661
  });
5615
5662
  }
@@ -6017,14 +6064,33 @@ var Agent = class {
6017
6064
  constructor(settings) {
6018
6065
  this.settings = settings;
6019
6066
  }
6067
+ /**
6068
+ * The name of the agent.
6069
+ */
6070
+ get name() {
6071
+ return this.settings.name;
6072
+ }
6073
+ /**
6074
+ * The tools that the agent can use.
6075
+ */
6020
6076
  get tools() {
6021
6077
  return this.settings.tools;
6022
6078
  }
6023
6079
  async generate(options) {
6024
- return generateText({ ...this.settings, ...options });
6080
+ var _a17;
6081
+ return generateText({
6082
+ ...this.settings,
6083
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6084
+ ...options
6085
+ });
6025
6086
  }
6026
6087
  stream(options) {
6027
- return streamText({ ...this.settings, ...options });
6088
+ var _a17;
6089
+ return streamText({
6090
+ ...this.settings,
6091
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6092
+ ...options
6093
+ });
6028
6094
  }
6029
6095
  /**
6030
6096
  * Creates a response object that streams UI messages to the client.
@@ -6037,7 +6103,7 @@ var Agent = class {
6037
6103
  };
6038
6104
 
6039
6105
  // src/embed/embed.ts
6040
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
6106
+ var import_provider_utils15 = require("@zenning/provider-utils");
6041
6107
  async function embed({
6042
6108
  model: modelArg,
6043
6109
  value,
@@ -6156,7 +6222,7 @@ var DefaultEmbedResult = class {
6156
6222
  };
6157
6223
 
6158
6224
  // src/embed/embed-many.ts
6159
- var import_provider_utils16 = require("@ai-sdk/provider-utils");
6225
+ var import_provider_utils16 = require("@zenning/provider-utils");
6160
6226
 
6161
6227
  // src/util/split-array.ts
6162
6228
  function splitArray(array, chunkSize) {
@@ -6405,7 +6471,7 @@ var DefaultEmbedManyResult = class {
6405
6471
  };
6406
6472
 
6407
6473
  // src/generate-image/generate-image.ts
6408
- var import_provider_utils17 = require("@ai-sdk/provider-utils");
6474
+ var import_provider_utils17 = require("@zenning/provider-utils");
6409
6475
  async function generateImage({
6410
6476
  model,
6411
6477
  prompt,
@@ -6420,7 +6486,7 @@ async function generateImage({
6420
6486
  headers
6421
6487
  }) {
6422
6488
  var _a17, _b;
6423
- if (model.specificationVersion !== "v2") {
6489
+ if (model.specificationVersion !== "v3") {
6424
6490
  throw new UnsupportedModelVersionError({
6425
6491
  version: model.specificationVersion,
6426
6492
  provider: model.provider,
@@ -6523,7 +6589,7 @@ async function invokeModelMaxImagesPerCall(model) {
6523
6589
  }
6524
6590
 
6525
6591
  // src/generate-object/generate-object.ts
6526
- var import_provider_utils20 = require("@ai-sdk/provider-utils");
6592
+ var import_provider_utils20 = require("@zenning/provider-utils");
6527
6593
 
6528
6594
  // src/generate-text/extract-reasoning-content.ts
6529
6595
  function extractReasoningContent(content) {
@@ -6534,8 +6600,8 @@ function extractReasoningContent(content) {
6534
6600
  }
6535
6601
 
6536
6602
  // src/generate-object/output-strategy.ts
6537
- var import_provider24 = require("@zenning/provider");
6538
- var import_provider_utils18 = require("@ai-sdk/provider-utils");
6603
+ var import_provider25 = require("@zenning/provider");
6604
+ var import_provider_utils18 = require("@zenning/provider-utils");
6539
6605
  var noSchemaOutputStrategy = {
6540
6606
  type: "no-schema",
6541
6607
  jsonSchema: void 0,
@@ -6555,7 +6621,7 @@ var noSchemaOutputStrategy = {
6555
6621
  } : { success: true, value };
6556
6622
  },
6557
6623
  createElementStream() {
6558
- throw new import_provider24.UnsupportedFunctionalityError({
6624
+ throw new import_provider25.UnsupportedFunctionalityError({
6559
6625
  functionality: "element streams in no-schema mode"
6560
6626
  });
6561
6627
  }
@@ -6577,7 +6643,7 @@ var objectOutputStrategy = (schema) => ({
6577
6643
  return (0, import_provider_utils18.safeValidateTypes)({ value, schema });
6578
6644
  },
6579
6645
  createElementStream() {
6580
- throw new import_provider24.UnsupportedFunctionalityError({
6646
+ throw new import_provider25.UnsupportedFunctionalityError({
6581
6647
  functionality: "element streams in object mode"
6582
6648
  });
6583
6649
  }
@@ -6605,10 +6671,10 @@ var arrayOutputStrategy = (schema) => {
6605
6671
  isFinalDelta
6606
6672
  }) {
6607
6673
  var _a17;
6608
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6674
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6609
6675
  return {
6610
6676
  success: false,
6611
- error: new import_provider24.TypeValidationError({
6677
+ error: new import_provider25.TypeValidationError({
6612
6678
  value,
6613
6679
  cause: "value must be an object that contains an array of elements"
6614
6680
  })
@@ -6648,10 +6714,10 @@ var arrayOutputStrategy = (schema) => {
6648
6714
  };
6649
6715
  },
6650
6716
  async validateFinalResult(value) {
6651
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6717
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6652
6718
  return {
6653
6719
  success: false,
6654
- error: new import_provider24.TypeValidationError({
6720
+ error: new import_provider25.TypeValidationError({
6655
6721
  value,
6656
6722
  cause: "value must be an object that contains an array of elements"
6657
6723
  })
@@ -6714,10 +6780,10 @@ var enumOutputStrategy = (enumValues) => {
6714
6780
  additionalProperties: false
6715
6781
  },
6716
6782
  async validateFinalResult(value) {
6717
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6783
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6718
6784
  return {
6719
6785
  success: false,
6720
- error: new import_provider24.TypeValidationError({
6786
+ error: new import_provider25.TypeValidationError({
6721
6787
  value,
6722
6788
  cause: 'value must be an object that contains a string in the "result" property.'
6723
6789
  })
@@ -6726,17 +6792,17 @@ var enumOutputStrategy = (enumValues) => {
6726
6792
  const result = value.result;
6727
6793
  return enumValues.includes(result) ? { success: true, value: result } : {
6728
6794
  success: false,
6729
- error: new import_provider24.TypeValidationError({
6795
+ error: new import_provider25.TypeValidationError({
6730
6796
  value,
6731
6797
  cause: "value must be a string in the enum"
6732
6798
  })
6733
6799
  };
6734
6800
  },
6735
6801
  async validatePartialResult({ value, textDelta }) {
6736
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6802
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6737
6803
  return {
6738
6804
  success: false,
6739
- error: new import_provider24.TypeValidationError({
6805
+ error: new import_provider25.TypeValidationError({
6740
6806
  value,
6741
6807
  cause: 'value must be an object that contains a string in the "result" property.'
6742
6808
  })
@@ -6749,7 +6815,7 @@ var enumOutputStrategy = (enumValues) => {
6749
6815
  if (value.result.length === 0 || possibleEnumValues.length === 0) {
6750
6816
  return {
6751
6817
  success: false,
6752
- error: new import_provider24.TypeValidationError({
6818
+ error: new import_provider25.TypeValidationError({
6753
6819
  value,
6754
6820
  cause: "value must be a string in the enum"
6755
6821
  })
@@ -6764,7 +6830,7 @@ var enumOutputStrategy = (enumValues) => {
6764
6830
  };
6765
6831
  },
6766
6832
  createElementStream() {
6767
- throw new import_provider24.UnsupportedFunctionalityError({
6833
+ throw new import_provider25.UnsupportedFunctionalityError({
6768
6834
  functionality: "element streams in enum mode"
6769
6835
  });
6770
6836
  }
@@ -6792,8 +6858,8 @@ function getOutputStrategy({
6792
6858
  }
6793
6859
 
6794
6860
  // src/generate-object/parse-and-validate-object-result.ts
6795
- var import_provider25 = require("@zenning/provider");
6796
- var import_provider_utils19 = require("@ai-sdk/provider-utils");
6861
+ var import_provider26 = require("@zenning/provider");
6862
+ var import_provider_utils19 = require("@zenning/provider-utils");
6797
6863
  async function parseAndValidateObjectResult(result, outputStrategy, context) {
6798
6864
  const parseResult = await (0, import_provider_utils19.safeParseJSON)({ text: result });
6799
6865
  if (!parseResult.success) {
@@ -6830,7 +6896,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
6830
6896
  try {
6831
6897
  return await parseAndValidateObjectResult(result, outputStrategy, context);
6832
6898
  } catch (error) {
6833
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider25.JSONParseError.isInstance(error.cause) || import_provider25.TypeValidationError.isInstance(error.cause))) {
6899
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider26.JSONParseError.isInstance(error.cause) || import_provider26.TypeValidationError.isInstance(error.cause))) {
6834
6900
  const repairedText = await repairText({
6835
6901
  text: result,
6836
6902
  error: error.cause
@@ -7231,7 +7297,7 @@ var DefaultGenerateObjectResult = class {
7231
7297
  };
7232
7298
 
7233
7299
  // src/generate-object/stream-object.ts
7234
- var import_provider_utils22 = require("@ai-sdk/provider-utils");
7300
+ var import_provider_utils22 = require("@zenning/provider-utils");
7235
7301
 
7236
7302
  // src/util/cosine-similarity.ts
7237
7303
  function cosineSimilarity(vector1, vector2) {
@@ -7341,7 +7407,7 @@ var SerialJobExecutor = class {
7341
7407
  };
7342
7408
 
7343
7409
  // src/util/simulate-readable-stream.ts
7344
- var import_provider_utils21 = require("@ai-sdk/provider-utils");
7410
+ var import_provider_utils21 = require("@zenning/provider-utils");
7345
7411
  function simulateReadableStream({
7346
7412
  chunks,
7347
7413
  initialDelayInMs = 0,
@@ -7885,19 +7951,7 @@ var DefaultStreamObjectResult = class {
7885
7951
  };
7886
7952
 
7887
7953
  // src/generate-speech/generate-speech.ts
7888
- var import_provider_utils23 = require("@ai-sdk/provider-utils");
7889
-
7890
- // src/error/no-speech-generated-error.ts
7891
- var import_provider26 = require("@zenning/provider");
7892
- var NoSpeechGeneratedError = class extends import_provider26.AISDKError {
7893
- constructor(options) {
7894
- super({
7895
- name: "AI_NoSpeechGeneratedError",
7896
- message: "No speech audio generated."
7897
- });
7898
- this.responses = options.responses;
7899
- }
7900
- };
7954
+ var import_provider_utils23 = require("@zenning/provider-utils");
7901
7955
 
7902
7956
  // src/generate-speech/generated-audio-file.ts
7903
7957
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
@@ -8000,7 +8054,7 @@ __export(output_exports, {
8000
8054
  object: () => object,
8001
8055
  text: () => text
8002
8056
  });
8003
- var import_provider_utils24 = require("@ai-sdk/provider-utils");
8057
+ var import_provider_utils24 = require("@zenning/provider-utils");
8004
8058
  var text = () => ({
8005
8059
  type: "text",
8006
8060
  responseFormat: { type: "text" },
@@ -8071,7 +8125,7 @@ var object = ({
8071
8125
  };
8072
8126
 
8073
8127
  // src/generate-text/smooth-stream.ts
8074
- var import_provider_utils25 = require("@ai-sdk/provider-utils");
8128
+ var import_provider_utils25 = require("@zenning/provider-utils");
8075
8129
  var import_provider27 = require("@zenning/provider");
8076
8130
  var CHUNKING_REGEXPS = {
8077
8131
  word: /\S+\s+/m,
@@ -8150,7 +8204,7 @@ function defaultSettingsMiddleware({
8150
8204
  settings
8151
8205
  }) {
8152
8206
  return {
8153
- middlewareVersion: "v2",
8207
+ middlewareVersion: "v3",
8154
8208
  transformParams: async ({ params }) => {
8155
8209
  return mergeObjects(settings, params);
8156
8210
  }
@@ -8184,7 +8238,7 @@ function extractReasoningMiddleware({
8184
8238
  const openingTag = `<${tagName}>`;
8185
8239
  const closingTag = `</${tagName}>`;
8186
8240
  return {
8187
- middlewareVersion: "v2",
8241
+ middlewareVersion: "v3",
8188
8242
  wrapGenerate: async ({ doGenerate }) => {
8189
8243
  const { content, ...rest } = await doGenerate();
8190
8244
  const transformedContent = [];
@@ -8330,7 +8384,7 @@ function extractReasoningMiddleware({
8330
8384
  // src/middleware/simulate-streaming-middleware.ts
8331
8385
  function simulateStreamingMiddleware() {
8332
8386
  return {
8333
- middlewareVersion: "v2",
8387
+ middlewareVersion: "v3",
8334
8388
  wrapStream: async ({ doGenerate }) => {
8335
8389
  const result = await doGenerate();
8336
8390
  let id = 0;
@@ -8427,7 +8481,7 @@ var doWrap = ({
8427
8481
  return transformParams ? await transformParams({ params, type, model }) : params;
8428
8482
  }
8429
8483
  return {
8430
- specificationVersion: "v2",
8484
+ specificationVersion: "v3",
8431
8485
  provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
8432
8486
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
8433
8487
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
@@ -8679,10 +8733,10 @@ var DefaultProviderRegistry = class {
8679
8733
  };
8680
8734
 
8681
8735
  // src/tool/mcp/mcp-client.ts
8682
- var import_provider_utils27 = require("@ai-sdk/provider-utils");
8736
+ var import_provider_utils27 = require("@zenning/provider-utils");
8683
8737
 
8684
8738
  // src/tool/mcp/mcp-sse-transport.ts
8685
- var import_provider_utils26 = require("@ai-sdk/provider-utils");
8739
+ var import_provider_utils26 = require("@zenning/provider-utils");
8686
8740
 
8687
8741
  // src/tool/mcp/json-rpc-message.ts
8688
8742
  var import_v49 = require("zod/v4");
@@ -9254,7 +9308,7 @@ var DefaultMCPClient = class {
9254
9308
  };
9255
9309
 
9256
9310
  // src/transcribe/transcribe.ts
9257
- var import_provider_utils28 = require("@ai-sdk/provider-utils");
9311
+ var import_provider_utils28 = require("@zenning/provider-utils");
9258
9312
 
9259
9313
  // src/error/no-transcript-generated-error.ts
9260
9314
  var import_provider31 = require("@zenning/provider");
@@ -9336,7 +9390,7 @@ var DefaultTranscriptionResult = class {
9336
9390
  };
9337
9391
 
9338
9392
  // src/ui/call-completion-api.ts
9339
- var import_provider_utils29 = require("@ai-sdk/provider-utils");
9393
+ var import_provider_utils29 = require("@zenning/provider-utils");
9340
9394
 
9341
9395
  // src/ui/process-text-stream.ts
9342
9396
  async function processTextStream({
@@ -9470,7 +9524,7 @@ async function callCompletionApi({
9470
9524
  }
9471
9525
 
9472
9526
  // src/ui/chat.ts
9473
- var import_provider_utils32 = require("@ai-sdk/provider-utils");
9527
+ var import_provider_utils32 = require("@zenning/provider-utils");
9474
9528
 
9475
9529
  // src/ui/convert-file-list-to-file-ui-parts.ts
9476
9530
  async function convertFileListToFileUIParts(files) {
@@ -9503,10 +9557,10 @@ async function convertFileListToFileUIParts(files) {
9503
9557
  }
9504
9558
 
9505
9559
  // src/ui/default-chat-transport.ts
9506
- var import_provider_utils31 = require("@ai-sdk/provider-utils");
9560
+ var import_provider_utils31 = require("@zenning/provider-utils");
9507
9561
 
9508
9562
  // src/ui/http-chat-transport.ts
9509
- var import_provider_utils30 = require("@ai-sdk/provider-utils");
9563
+ var import_provider_utils30 = require("@zenning/provider-utils");
9510
9564
  var HttpChatTransport = class {
9511
9565
  constructor({
9512
9566
  api = "/api/chat",
@@ -9760,9 +9814,11 @@ var AbstractChat = class {
9760
9814
  }
9761
9815
  };
9762
9816
  this.addToolResult = async ({
9817
+ state = "output-available",
9763
9818
  tool: tool3,
9764
9819
  toolCallId,
9765
- output
9820
+ output,
9821
+ errorText
9766
9822
  }) => this.jobExecutor.run(async () => {
9767
9823
  var _a17, _b;
9768
9824
  const messages = this.state.messages;
@@ -9770,16 +9826,16 @@ var AbstractChat = class {
9770
9826
  this.state.replaceMessage(messages.length - 1, {
9771
9827
  ...lastMessage,
9772
9828
  parts: lastMessage.parts.map(
9773
- (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
9829
+ (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
9774
9830
  )
9775
9831
  });
9776
9832
  if (this.activeResponse) {
9777
9833
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
9778
9834
  (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
9779
9835
  ...part,
9780
- state: "output-available",
9836
+ state,
9781
9837
  output,
9782
- errorText: void 0
9838
+ errorText
9783
9839
  } : part
9784
9840
  );
9785
9841
  }
@@ -10037,7 +10093,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
10037
10093
  return part.type === "step-start" ? index : lastIndex;
10038
10094
  }, -1);
10039
10095
  const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
10040
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
10096
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
10097
+ (part) => part.state === "output-available" || part.state === "output-error"
10098
+ );
10041
10099
  }
10042
10100
 
10043
10101
  // src/ui/transform-text-to-ui-message-stream.ts
@@ -10077,7 +10135,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
10077
10135
 
10078
10136
  // src/ui/validate-ui-messages.ts
10079
10137
  var import_provider32 = require("@zenning/provider");
10080
- var import_provider_utils33 = require("@ai-sdk/provider-utils");
10138
+ var import_provider_utils33 = require("@zenning/provider-utils");
10081
10139
  var import_v410 = require("zod/v4");
10082
10140
  var textUIPartSchema = import_v410.z.object({
10083
10141
  type: import_v410.z.literal("text"),
@@ -10226,86 +10284,122 @@ var uiMessageSchema = import_v410.z.object({
10226
10284
  ])
10227
10285
  )
10228
10286
  });
10229
- async function validateUIMessages({
10287
+ async function safeValidateUIMessages({
10230
10288
  messages,
10231
10289
  metadataSchema,
10232
10290
  dataSchemas,
10233
10291
  tools
10234
10292
  }) {
10235
- if (messages == null) {
10236
- throw new InvalidArgumentError({
10237
- parameter: "messages",
10293
+ try {
10294
+ if (messages == null) {
10295
+ return {
10296
+ success: false,
10297
+ error: new InvalidArgumentError({
10298
+ parameter: "messages",
10299
+ value: messages,
10300
+ message: "messages parameter must be provided"
10301
+ })
10302
+ };
10303
+ }
10304
+ const validatedMessages = await (0, import_provider_utils33.validateTypes)({
10238
10305
  value: messages,
10239
- message: "messages parameter must be provided"
10306
+ schema: import_v410.z.array(uiMessageSchema)
10240
10307
  });
10241
- }
10242
- const validatedMessages = await (0, import_provider_utils33.validateTypes)({
10243
- value: messages,
10244
- schema: import_v410.z.array(uiMessageSchema)
10245
- });
10246
- if (metadataSchema) {
10247
- for (const message of validatedMessages) {
10248
- await (0, import_provider_utils33.validateTypes)({
10249
- value: message.metadata,
10250
- schema: metadataSchema
10251
- });
10252
- }
10253
- }
10254
- if (dataSchemas) {
10255
- for (const message of validatedMessages) {
10256
- const dataParts = message.parts.filter(
10257
- (part) => part.type.startsWith("data-")
10258
- );
10259
- for (const dataPart of dataParts) {
10260
- const dataName = dataPart.type.slice(5);
10261
- const dataSchema = dataSchemas[dataName];
10262
- if (!dataSchema) {
10263
- throw new import_provider32.TypeValidationError({
10264
- value: dataPart.data,
10265
- cause: `No data schema found for data part ${dataName}`
10266
- });
10267
- }
10308
+ if (metadataSchema) {
10309
+ for (const message of validatedMessages) {
10268
10310
  await (0, import_provider_utils33.validateTypes)({
10269
- value: dataPart.data,
10270
- schema: dataSchema
10311
+ value: message.metadata,
10312
+ schema: metadataSchema
10271
10313
  });
10272
10314
  }
10273
10315
  }
10274
- }
10275
- if (tools) {
10276
- for (const message of validatedMessages) {
10277
- const toolParts = message.parts.filter(
10278
- (part) => part.type.startsWith("tool-")
10279
- );
10280
- for (const toolPart of toolParts) {
10281
- const toolName = toolPart.type.slice(5);
10282
- const tool3 = tools[toolName];
10283
- if (!tool3) {
10284
- throw new import_provider32.TypeValidationError({
10285
- value: toolPart.input,
10286
- cause: `No tool schema found for tool part ${toolName}`
10287
- });
10288
- }
10289
- if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10316
+ if (dataSchemas) {
10317
+ for (const message of validatedMessages) {
10318
+ const dataParts = message.parts.filter(
10319
+ (part) => part.type.startsWith("data-")
10320
+ );
10321
+ for (const dataPart of dataParts) {
10322
+ const dataName = dataPart.type.slice(5);
10323
+ const dataSchema = dataSchemas[dataName];
10324
+ if (!dataSchema) {
10325
+ return {
10326
+ success: false,
10327
+ error: new import_provider32.TypeValidationError({
10328
+ value: dataPart.data,
10329
+ cause: `No data schema found for data part ${dataName}`
10330
+ })
10331
+ };
10332
+ }
10290
10333
  await (0, import_provider_utils33.validateTypes)({
10291
- value: toolPart.input,
10292
- schema: tool3.inputSchema
10334
+ value: dataPart.data,
10335
+ schema: dataSchema
10293
10336
  });
10294
10337
  }
10295
- if (toolPart.state === "output-available" && tool3.outputSchema) {
10296
- await (0, import_provider_utils33.validateTypes)({
10297
- value: toolPart.output,
10298
- schema: tool3.outputSchema
10299
- });
10338
+ }
10339
+ }
10340
+ if (tools) {
10341
+ for (const message of validatedMessages) {
10342
+ const toolParts = message.parts.filter(
10343
+ (part) => part.type.startsWith("tool-")
10344
+ );
10345
+ for (const toolPart of toolParts) {
10346
+ const toolName = toolPart.type.slice(5);
10347
+ const tool3 = tools[toolName];
10348
+ if (!tool3) {
10349
+ return {
10350
+ success: false,
10351
+ error: new import_provider32.TypeValidationError({
10352
+ value: toolPart.input,
10353
+ cause: `No tool schema found for tool part ${toolName}`
10354
+ })
10355
+ };
10356
+ }
10357
+ if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10358
+ await (0, import_provider_utils33.validateTypes)({
10359
+ value: toolPart.input,
10360
+ schema: tool3.inputSchema
10361
+ });
10362
+ }
10363
+ if (toolPart.state === "output-available" && tool3.outputSchema) {
10364
+ await (0, import_provider_utils33.validateTypes)({
10365
+ value: toolPart.output,
10366
+ schema: tool3.outputSchema
10367
+ });
10368
+ }
10300
10369
  }
10301
10370
  }
10302
10371
  }
10372
+ return {
10373
+ success: true,
10374
+ data: validatedMessages
10375
+ };
10376
+ } catch (error) {
10377
+ const err = error;
10378
+ return {
10379
+ success: false,
10380
+ error: err
10381
+ };
10303
10382
  }
10304
- return validatedMessages;
10383
+ }
10384
+ async function validateUIMessages({
10385
+ messages,
10386
+ metadataSchema,
10387
+ dataSchemas,
10388
+ tools
10389
+ }) {
10390
+ const response = await safeValidateUIMessages({
10391
+ messages,
10392
+ metadataSchema,
10393
+ dataSchemas,
10394
+ tools
10395
+ });
10396
+ if (!response.success)
10397
+ throw response.error;
10398
+ return response.data;
10305
10399
  }
10306
10400
 
10307
10401
  // src/ui-message-stream/create-ui-message-stream.ts
10308
- var import_provider_utils34 = require("@ai-sdk/provider-utils");
10402
+ var import_provider_utils34 = require("@zenning/provider-utils");
10309
10403
  function createUIMessageStream({
10310
10404
  execute,
10311
10405
  onError = import_provider_utils34.getErrorMessage,
@@ -10442,6 +10536,7 @@ function readUIMessageStream({
10442
10536
  AISDKError,
10443
10537
  APICallError,
10444
10538
  AbstractChat,
10539
+ Agent,
10445
10540
  DefaultChatTransport,
10446
10541
  DownloadError,
10447
10542
  EmptyResponseBodyError,
@@ -10464,6 +10559,7 @@ function readUIMessageStream({
10464
10559
  NoObjectGeneratedError,
10465
10560
  NoOutputGeneratedError,
10466
10561
  NoOutputSpecifiedError,
10562
+ NoSpeechGeneratedError,
10467
10563
  NoSuchModelError,
10468
10564
  NoSuchProviderError,
10469
10565
  NoSuchToolError,
@@ -10522,10 +10618,12 @@ function readUIMessageStream({
10522
10618
  jsonSchema,
10523
10619
  lastAssistantMessageIsCompleteWithToolCalls,
10524
10620
  modelMessageSchema,
10621
+ parseJsonEventStream,
10525
10622
  parsePartialJson,
10526
10623
  pipeTextStreamToResponse,
10527
10624
  pipeUIMessageStreamToResponse,
10528
10625
  readUIMessageStream,
10626
+ safeValidateUIMessages,
10529
10627
  simulateReadableStream,
10530
10628
  simulateStreamingMiddleware,
10531
10629
  smoothStream,
@@ -10535,6 +10633,7 @@ function readUIMessageStream({
10535
10633
  systemModelMessageSchema,
10536
10634
  tool,
10537
10635
  toolModelMessageSchema,
10636
+ uiMessageChunkSchema,
10538
10637
  userModelMessageSchema,
10539
10638
  validateUIMessages,
10540
10639
  wrapLanguageModel,