@zenning/ai 5.1.1 → 5.3.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.1" : "0.0.0-test";
805
+ var VERSION = true ? "5.3.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,15 @@ 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.literal("source-execution-file"),
3069
+ sourceId: import_v47.z.string(),
3070
+ providerMetadata: providerMetadataSchema.optional()
3071
+ }),
3072
+ import_v47.z.strictObject({
3073
+ type: import_v47.z.custom(
3074
+ (value) => typeof value === "string" && value.startsWith("data-"),
3075
+ { message: 'Type must start with "data-"' }
3076
+ ),
3040
3077
  id: import_v47.z.string().optional(),
3041
3078
  data: import_v47.z.unknown(),
3042
3079
  transient: import_v47.z.boolean().optional()
@@ -3102,7 +3139,7 @@ function mergeObjects(base, overrides) {
3102
3139
  }
3103
3140
 
3104
3141
  // src/util/parse-partial-json.ts
3105
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
3142
+ var import_provider_utils11 = require("@zenning/provider-utils");
3106
3143
 
3107
3144
  // src/util/fix-json.ts
3108
3145
  function fixJson(input) {
@@ -3666,6 +3703,15 @@ function processUIMessageStream({
3666
3703
  write();
3667
3704
  break;
3668
3705
  }
3706
+ case "source-execution-file": {
3707
+ state.message.parts.push({
3708
+ type: "source-execution-file",
3709
+ sourceId: chunk.sourceId,
3710
+ providerMetadata: chunk.providerMetadata
3711
+ });
3712
+ write();
3713
+ break;
3714
+ }
3669
3715
  case "source-document": {
3670
3716
  state.message.parts.push({
3671
3717
  type: "source-document",
@@ -4263,7 +4309,7 @@ function now() {
4263
4309
  }
4264
4310
 
4265
4311
  // src/generate-text/run-tools-transformation.ts
4266
- var import_provider_utils13 = require("@ai-sdk/provider-utils");
4312
+ var import_provider_utils13 = require("@zenning/provider-utils");
4267
4313
  function runToolsTransformation({
4268
4314
  tools,
4269
4315
  generatorStream,
@@ -4695,7 +4741,7 @@ var DefaultStreamTextResult = class {
4695
4741
  let activeReasoningContent = {};
4696
4742
  const eventProcessor = new TransformStream({
4697
4743
  async transform(chunk, controller) {
4698
- var _a17, _b, _c;
4744
+ var _a17, _b, _c, _d;
4699
4745
  controller.enqueue(chunk);
4700
4746
  const { part } = chunk;
4701
4747
  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 +4774,18 @@ var DefaultStreamTextResult = class {
4728
4774
  activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
4729
4775
  }
4730
4776
  if (part.type === "text-end") {
4777
+ const activeText = activeTextContent[part.id];
4778
+ if (activeText == null) {
4779
+ controller.enqueue({
4780
+ part: {
4781
+ type: "error",
4782
+ error: `text part ${part.id} not found`
4783
+ },
4784
+ partialOutput: void 0
4785
+ });
4786
+ return;
4787
+ }
4788
+ activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
4731
4789
  delete activeTextContent[part.id];
4732
4790
  }
4733
4791
  if (part.type === "reasoning-start") {
@@ -4751,7 +4809,7 @@ var DefaultStreamTextResult = class {
4751
4809
  return;
4752
4810
  }
4753
4811
  activeReasoning.text += part.text;
4754
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4812
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4755
4813
  }
4756
4814
  if (part.type === "reasoning-end") {
4757
4815
  const activeReasoning = activeReasoningContent[part.id];
@@ -4765,7 +4823,7 @@ var DefaultStreamTextResult = class {
4765
4823
  });
4766
4824
  return;
4767
4825
  }
4768
- activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4826
+ activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
4769
4827
  delete activeReasoningContent[part.id];
4770
4828
  }
4771
4829
  if (part.type === "file") {
@@ -5514,7 +5572,7 @@ var DefaultStreamTextResult = class {
5514
5572
  sendSources = false,
5515
5573
  sendStart = true,
5516
5574
  sendFinish = true,
5517
- onError = import_provider23.getErrorMessage
5575
+ onError = import_provider24.getErrorMessage
5518
5576
  } = {}) {
5519
5577
  const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
5520
5578
  originalMessages,
@@ -6020,14 +6078,33 @@ var Agent = class {
6020
6078
  constructor(settings) {
6021
6079
  this.settings = settings;
6022
6080
  }
6081
+ /**
6082
+ * The name of the agent.
6083
+ */
6084
+ get name() {
6085
+ return this.settings.name;
6086
+ }
6087
+ /**
6088
+ * The tools that the agent can use.
6089
+ */
6023
6090
  get tools() {
6024
6091
  return this.settings.tools;
6025
6092
  }
6026
6093
  async generate(options) {
6027
- return generateText({ ...this.settings, ...options });
6094
+ var _a17;
6095
+ return generateText({
6096
+ ...this.settings,
6097
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6098
+ ...options
6099
+ });
6028
6100
  }
6029
6101
  stream(options) {
6030
- return streamText({ ...this.settings, ...options });
6102
+ var _a17;
6103
+ return streamText({
6104
+ ...this.settings,
6105
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
6106
+ ...options
6107
+ });
6031
6108
  }
6032
6109
  /**
6033
6110
  * Creates a response object that streams UI messages to the client.
@@ -6040,7 +6117,7 @@ var Agent = class {
6040
6117
  };
6041
6118
 
6042
6119
  // src/embed/embed.ts
6043
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
6120
+ var import_provider_utils15 = require("@zenning/provider-utils");
6044
6121
  async function embed({
6045
6122
  model: modelArg,
6046
6123
  value,
@@ -6159,7 +6236,7 @@ var DefaultEmbedResult = class {
6159
6236
  };
6160
6237
 
6161
6238
  // src/embed/embed-many.ts
6162
- var import_provider_utils16 = require("@ai-sdk/provider-utils");
6239
+ var import_provider_utils16 = require("@zenning/provider-utils");
6163
6240
 
6164
6241
  // src/util/split-array.ts
6165
6242
  function splitArray(array, chunkSize) {
@@ -6408,7 +6485,7 @@ var DefaultEmbedManyResult = class {
6408
6485
  };
6409
6486
 
6410
6487
  // src/generate-image/generate-image.ts
6411
- var import_provider_utils17 = require("@ai-sdk/provider-utils");
6488
+ var import_provider_utils17 = require("@zenning/provider-utils");
6412
6489
  async function generateImage({
6413
6490
  model,
6414
6491
  prompt,
@@ -6423,7 +6500,7 @@ async function generateImage({
6423
6500
  headers
6424
6501
  }) {
6425
6502
  var _a17, _b;
6426
- if (model.specificationVersion !== "v2") {
6503
+ if (model.specificationVersion !== "v3") {
6427
6504
  throw new UnsupportedModelVersionError({
6428
6505
  version: model.specificationVersion,
6429
6506
  provider: model.provider,
@@ -6526,7 +6603,7 @@ async function invokeModelMaxImagesPerCall(model) {
6526
6603
  }
6527
6604
 
6528
6605
  // src/generate-object/generate-object.ts
6529
- var import_provider_utils20 = require("@ai-sdk/provider-utils");
6606
+ var import_provider_utils20 = require("@zenning/provider-utils");
6530
6607
 
6531
6608
  // src/generate-text/extract-reasoning-content.ts
6532
6609
  function extractReasoningContent(content) {
@@ -6537,8 +6614,8 @@ function extractReasoningContent(content) {
6537
6614
  }
6538
6615
 
6539
6616
  // src/generate-object/output-strategy.ts
6540
- var import_provider24 = require("@zenning/provider");
6541
- var import_provider_utils18 = require("@ai-sdk/provider-utils");
6617
+ var import_provider25 = require("@zenning/provider");
6618
+ var import_provider_utils18 = require("@zenning/provider-utils");
6542
6619
  var noSchemaOutputStrategy = {
6543
6620
  type: "no-schema",
6544
6621
  jsonSchema: void 0,
@@ -6558,7 +6635,7 @@ var noSchemaOutputStrategy = {
6558
6635
  } : { success: true, value };
6559
6636
  },
6560
6637
  createElementStream() {
6561
- throw new import_provider24.UnsupportedFunctionalityError({
6638
+ throw new import_provider25.UnsupportedFunctionalityError({
6562
6639
  functionality: "element streams in no-schema mode"
6563
6640
  });
6564
6641
  }
@@ -6580,7 +6657,7 @@ var objectOutputStrategy = (schema) => ({
6580
6657
  return (0, import_provider_utils18.safeValidateTypes)({ value, schema });
6581
6658
  },
6582
6659
  createElementStream() {
6583
- throw new import_provider24.UnsupportedFunctionalityError({
6660
+ throw new import_provider25.UnsupportedFunctionalityError({
6584
6661
  functionality: "element streams in object mode"
6585
6662
  });
6586
6663
  }
@@ -6608,10 +6685,10 @@ var arrayOutputStrategy = (schema) => {
6608
6685
  isFinalDelta
6609
6686
  }) {
6610
6687
  var _a17;
6611
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6688
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6612
6689
  return {
6613
6690
  success: false,
6614
- error: new import_provider24.TypeValidationError({
6691
+ error: new import_provider25.TypeValidationError({
6615
6692
  value,
6616
6693
  cause: "value must be an object that contains an array of elements"
6617
6694
  })
@@ -6651,10 +6728,10 @@ var arrayOutputStrategy = (schema) => {
6651
6728
  };
6652
6729
  },
6653
6730
  async validateFinalResult(value) {
6654
- if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
6731
+ if (!(0, import_provider25.isJSONObject)(value) || !(0, import_provider25.isJSONArray)(value.elements)) {
6655
6732
  return {
6656
6733
  success: false,
6657
- error: new import_provider24.TypeValidationError({
6734
+ error: new import_provider25.TypeValidationError({
6658
6735
  value,
6659
6736
  cause: "value must be an object that contains an array of elements"
6660
6737
  })
@@ -6717,10 +6794,10 @@ var enumOutputStrategy = (enumValues) => {
6717
6794
  additionalProperties: false
6718
6795
  },
6719
6796
  async validateFinalResult(value) {
6720
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6797
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6721
6798
  return {
6722
6799
  success: false,
6723
- error: new import_provider24.TypeValidationError({
6800
+ error: new import_provider25.TypeValidationError({
6724
6801
  value,
6725
6802
  cause: 'value must be an object that contains a string in the "result" property.'
6726
6803
  })
@@ -6729,17 +6806,17 @@ var enumOutputStrategy = (enumValues) => {
6729
6806
  const result = value.result;
6730
6807
  return enumValues.includes(result) ? { success: true, value: result } : {
6731
6808
  success: false,
6732
- error: new import_provider24.TypeValidationError({
6809
+ error: new import_provider25.TypeValidationError({
6733
6810
  value,
6734
6811
  cause: "value must be a string in the enum"
6735
6812
  })
6736
6813
  };
6737
6814
  },
6738
6815
  async validatePartialResult({ value, textDelta }) {
6739
- if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
6816
+ if (!(0, import_provider25.isJSONObject)(value) || typeof value.result !== "string") {
6740
6817
  return {
6741
6818
  success: false,
6742
- error: new import_provider24.TypeValidationError({
6819
+ error: new import_provider25.TypeValidationError({
6743
6820
  value,
6744
6821
  cause: 'value must be an object that contains a string in the "result" property.'
6745
6822
  })
@@ -6752,7 +6829,7 @@ var enumOutputStrategy = (enumValues) => {
6752
6829
  if (value.result.length === 0 || possibleEnumValues.length === 0) {
6753
6830
  return {
6754
6831
  success: false,
6755
- error: new import_provider24.TypeValidationError({
6832
+ error: new import_provider25.TypeValidationError({
6756
6833
  value,
6757
6834
  cause: "value must be a string in the enum"
6758
6835
  })
@@ -6767,7 +6844,7 @@ var enumOutputStrategy = (enumValues) => {
6767
6844
  };
6768
6845
  },
6769
6846
  createElementStream() {
6770
- throw new import_provider24.UnsupportedFunctionalityError({
6847
+ throw new import_provider25.UnsupportedFunctionalityError({
6771
6848
  functionality: "element streams in enum mode"
6772
6849
  });
6773
6850
  }
@@ -6795,8 +6872,8 @@ function getOutputStrategy({
6795
6872
  }
6796
6873
 
6797
6874
  // src/generate-object/parse-and-validate-object-result.ts
6798
- var import_provider25 = require("@zenning/provider");
6799
- var import_provider_utils19 = require("@ai-sdk/provider-utils");
6875
+ var import_provider26 = require("@zenning/provider");
6876
+ var import_provider_utils19 = require("@zenning/provider-utils");
6800
6877
  async function parseAndValidateObjectResult(result, outputStrategy, context) {
6801
6878
  const parseResult = await (0, import_provider_utils19.safeParseJSON)({ text: result });
6802
6879
  if (!parseResult.success) {
@@ -6833,7 +6910,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
6833
6910
  try {
6834
6911
  return await parseAndValidateObjectResult(result, outputStrategy, context);
6835
6912
  } catch (error) {
6836
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider25.JSONParseError.isInstance(error.cause) || import_provider25.TypeValidationError.isInstance(error.cause))) {
6913
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider26.JSONParseError.isInstance(error.cause) || import_provider26.TypeValidationError.isInstance(error.cause))) {
6837
6914
  const repairedText = await repairText({
6838
6915
  text: result,
6839
6916
  error: error.cause
@@ -7234,7 +7311,7 @@ var DefaultGenerateObjectResult = class {
7234
7311
  };
7235
7312
 
7236
7313
  // src/generate-object/stream-object.ts
7237
- var import_provider_utils22 = require("@ai-sdk/provider-utils");
7314
+ var import_provider_utils22 = require("@zenning/provider-utils");
7238
7315
 
7239
7316
  // src/util/cosine-similarity.ts
7240
7317
  function cosineSimilarity(vector1, vector2) {
@@ -7344,7 +7421,7 @@ var SerialJobExecutor = class {
7344
7421
  };
7345
7422
 
7346
7423
  // src/util/simulate-readable-stream.ts
7347
- var import_provider_utils21 = require("@ai-sdk/provider-utils");
7424
+ var import_provider_utils21 = require("@zenning/provider-utils");
7348
7425
  function simulateReadableStream({
7349
7426
  chunks,
7350
7427
  initialDelayInMs = 0,
@@ -7888,19 +7965,7 @@ var DefaultStreamObjectResult = class {
7888
7965
  };
7889
7966
 
7890
7967
  // src/generate-speech/generate-speech.ts
7891
- var import_provider_utils23 = require("@ai-sdk/provider-utils");
7892
-
7893
- // src/error/no-speech-generated-error.ts
7894
- var import_provider26 = require("@zenning/provider");
7895
- var NoSpeechGeneratedError = class extends import_provider26.AISDKError {
7896
- constructor(options) {
7897
- super({
7898
- name: "AI_NoSpeechGeneratedError",
7899
- message: "No speech audio generated."
7900
- });
7901
- this.responses = options.responses;
7902
- }
7903
- };
7968
+ var import_provider_utils23 = require("@zenning/provider-utils");
7904
7969
 
7905
7970
  // src/generate-speech/generated-audio-file.ts
7906
7971
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
@@ -8003,7 +8068,7 @@ __export(output_exports, {
8003
8068
  object: () => object,
8004
8069
  text: () => text
8005
8070
  });
8006
- var import_provider_utils24 = require("@ai-sdk/provider-utils");
8071
+ var import_provider_utils24 = require("@zenning/provider-utils");
8007
8072
  var text = () => ({
8008
8073
  type: "text",
8009
8074
  responseFormat: { type: "text" },
@@ -8074,7 +8139,7 @@ var object = ({
8074
8139
  };
8075
8140
 
8076
8141
  // src/generate-text/smooth-stream.ts
8077
- var import_provider_utils25 = require("@ai-sdk/provider-utils");
8142
+ var import_provider_utils25 = require("@zenning/provider-utils");
8078
8143
  var import_provider27 = require("@zenning/provider");
8079
8144
  var CHUNKING_REGEXPS = {
8080
8145
  word: /\S+\s+/m,
@@ -8153,7 +8218,7 @@ function defaultSettingsMiddleware({
8153
8218
  settings
8154
8219
  }) {
8155
8220
  return {
8156
- middlewareVersion: "v2",
8221
+ middlewareVersion: "v3",
8157
8222
  transformParams: async ({ params }) => {
8158
8223
  return mergeObjects(settings, params);
8159
8224
  }
@@ -8187,7 +8252,7 @@ function extractReasoningMiddleware({
8187
8252
  const openingTag = `<${tagName}>`;
8188
8253
  const closingTag = `</${tagName}>`;
8189
8254
  return {
8190
- middlewareVersion: "v2",
8255
+ middlewareVersion: "v3",
8191
8256
  wrapGenerate: async ({ doGenerate }) => {
8192
8257
  const { content, ...rest } = await doGenerate();
8193
8258
  const transformedContent = [];
@@ -8333,7 +8398,7 @@ function extractReasoningMiddleware({
8333
8398
  // src/middleware/simulate-streaming-middleware.ts
8334
8399
  function simulateStreamingMiddleware() {
8335
8400
  return {
8336
- middlewareVersion: "v2",
8401
+ middlewareVersion: "v3",
8337
8402
  wrapStream: async ({ doGenerate }) => {
8338
8403
  const result = await doGenerate();
8339
8404
  let id = 0;
@@ -8430,7 +8495,7 @@ var doWrap = ({
8430
8495
  return transformParams ? await transformParams({ params, type, model }) : params;
8431
8496
  }
8432
8497
  return {
8433
- specificationVersion: "v2",
8498
+ specificationVersion: "v3",
8434
8499
  provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
8435
8500
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
8436
8501
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
@@ -8682,10 +8747,10 @@ var DefaultProviderRegistry = class {
8682
8747
  };
8683
8748
 
8684
8749
  // src/tool/mcp/mcp-client.ts
8685
- var import_provider_utils27 = require("@ai-sdk/provider-utils");
8750
+ var import_provider_utils27 = require("@zenning/provider-utils");
8686
8751
 
8687
8752
  // src/tool/mcp/mcp-sse-transport.ts
8688
- var import_provider_utils26 = require("@ai-sdk/provider-utils");
8753
+ var import_provider_utils26 = require("@zenning/provider-utils");
8689
8754
 
8690
8755
  // src/tool/mcp/json-rpc-message.ts
8691
8756
  var import_v49 = require("zod/v4");
@@ -9257,7 +9322,7 @@ var DefaultMCPClient = class {
9257
9322
  };
9258
9323
 
9259
9324
  // src/transcribe/transcribe.ts
9260
- var import_provider_utils28 = require("@ai-sdk/provider-utils");
9325
+ var import_provider_utils28 = require("@zenning/provider-utils");
9261
9326
 
9262
9327
  // src/error/no-transcript-generated-error.ts
9263
9328
  var import_provider31 = require("@zenning/provider");
@@ -9339,7 +9404,7 @@ var DefaultTranscriptionResult = class {
9339
9404
  };
9340
9405
 
9341
9406
  // src/ui/call-completion-api.ts
9342
- var import_provider_utils29 = require("@ai-sdk/provider-utils");
9407
+ var import_provider_utils29 = require("@zenning/provider-utils");
9343
9408
 
9344
9409
  // src/ui/process-text-stream.ts
9345
9410
  async function processTextStream({
@@ -9473,7 +9538,7 @@ async function callCompletionApi({
9473
9538
  }
9474
9539
 
9475
9540
  // src/ui/chat.ts
9476
- var import_provider_utils32 = require("@ai-sdk/provider-utils");
9541
+ var import_provider_utils32 = require("@zenning/provider-utils");
9477
9542
 
9478
9543
  // src/ui/convert-file-list-to-file-ui-parts.ts
9479
9544
  async function convertFileListToFileUIParts(files) {
@@ -9506,10 +9571,10 @@ async function convertFileListToFileUIParts(files) {
9506
9571
  }
9507
9572
 
9508
9573
  // src/ui/default-chat-transport.ts
9509
- var import_provider_utils31 = require("@ai-sdk/provider-utils");
9574
+ var import_provider_utils31 = require("@zenning/provider-utils");
9510
9575
 
9511
9576
  // src/ui/http-chat-transport.ts
9512
- var import_provider_utils30 = require("@ai-sdk/provider-utils");
9577
+ var import_provider_utils30 = require("@zenning/provider-utils");
9513
9578
  var HttpChatTransport = class {
9514
9579
  constructor({
9515
9580
  api = "/api/chat",
@@ -9763,9 +9828,11 @@ var AbstractChat = class {
9763
9828
  }
9764
9829
  };
9765
9830
  this.addToolResult = async ({
9831
+ state = "output-available",
9766
9832
  tool: tool3,
9767
9833
  toolCallId,
9768
- output
9834
+ output,
9835
+ errorText
9769
9836
  }) => this.jobExecutor.run(async () => {
9770
9837
  var _a17, _b;
9771
9838
  const messages = this.state.messages;
@@ -9773,16 +9840,16 @@ var AbstractChat = class {
9773
9840
  this.state.replaceMessage(messages.length - 1, {
9774
9841
  ...lastMessage,
9775
9842
  parts: lastMessage.parts.map(
9776
- (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
9843
+ (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
9777
9844
  )
9778
9845
  });
9779
9846
  if (this.activeResponse) {
9780
9847
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
9781
9848
  (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
9782
9849
  ...part,
9783
- state: "output-available",
9850
+ state,
9784
9851
  output,
9785
- errorText: void 0
9852
+ errorText
9786
9853
  } : part
9787
9854
  );
9788
9855
  }
@@ -10040,7 +10107,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
10040
10107
  return part.type === "step-start" ? index : lastIndex;
10041
10108
  }, -1);
10042
10109
  const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
10043
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
10110
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
10111
+ (part) => part.state === "output-available" || part.state === "output-error"
10112
+ );
10044
10113
  }
10045
10114
 
10046
10115
  // src/ui/transform-text-to-ui-message-stream.ts
@@ -10080,7 +10149,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
10080
10149
 
10081
10150
  // src/ui/validate-ui-messages.ts
10082
10151
  var import_provider32 = require("@zenning/provider");
10083
- var import_provider_utils33 = require("@ai-sdk/provider-utils");
10152
+ var import_provider_utils33 = require("@zenning/provider-utils");
10084
10153
  var import_v410 = require("zod/v4");
10085
10154
  var textUIPartSchema = import_v410.z.object({
10086
10155
  type: import_v410.z.literal("text"),
@@ -10169,6 +10238,11 @@ var dynamicToolUIPartSchemas = [
10169
10238
  callProviderMetadata: providerMetadataSchema.optional()
10170
10239
  })
10171
10240
  ];
10241
+ var sourceExecutionFileUIPartSchema = import_v410.z.object({
10242
+ type: import_v410.z.literal("source-execution-file"),
10243
+ sourceId: import_v410.z.string(),
10244
+ providerMetadata: providerMetadataSchema.optional()
10245
+ });
10172
10246
  var toolUIPartSchemas = [
10173
10247
  import_v410.z.object({
10174
10248
  type: import_v410.z.string().startsWith("tool-"),
@@ -10223,92 +10297,129 @@ var uiMessageSchema = import_v410.z.object({
10223
10297
  sourceDocumentUIPartSchema,
10224
10298
  fileUIPartSchema,
10225
10299
  stepStartUIPartSchema,
10300
+ sourceExecutionFileUIPartSchema,
10226
10301
  dataUIPartSchema,
10227
10302
  ...dynamicToolUIPartSchemas,
10228
10303
  ...toolUIPartSchemas
10229
10304
  ])
10230
10305
  )
10231
10306
  });
10232
- async function validateUIMessages({
10307
+ async function safeValidateUIMessages({
10233
10308
  messages,
10234
10309
  metadataSchema,
10235
10310
  dataSchemas,
10236
10311
  tools
10237
10312
  }) {
10238
- if (messages == null) {
10239
- throw new InvalidArgumentError({
10240
- parameter: "messages",
10313
+ try {
10314
+ if (messages == null) {
10315
+ return {
10316
+ success: false,
10317
+ error: new InvalidArgumentError({
10318
+ parameter: "messages",
10319
+ value: messages,
10320
+ message: "messages parameter must be provided"
10321
+ })
10322
+ };
10323
+ }
10324
+ const validatedMessages = await (0, import_provider_utils33.validateTypes)({
10241
10325
  value: messages,
10242
- message: "messages parameter must be provided"
10326
+ schema: import_v410.z.array(uiMessageSchema)
10243
10327
  });
10244
- }
10245
- const validatedMessages = await (0, import_provider_utils33.validateTypes)({
10246
- value: messages,
10247
- schema: import_v410.z.array(uiMessageSchema)
10248
- });
10249
- if (metadataSchema) {
10250
- for (const message of validatedMessages) {
10251
- await (0, import_provider_utils33.validateTypes)({
10252
- value: message.metadata,
10253
- schema: metadataSchema
10254
- });
10255
- }
10256
- }
10257
- if (dataSchemas) {
10258
- for (const message of validatedMessages) {
10259
- const dataParts = message.parts.filter(
10260
- (part) => part.type.startsWith("data-")
10261
- );
10262
- for (const dataPart of dataParts) {
10263
- const dataName = dataPart.type.slice(5);
10264
- const dataSchema = dataSchemas[dataName];
10265
- if (!dataSchema) {
10266
- throw new import_provider32.TypeValidationError({
10267
- value: dataPart.data,
10268
- cause: `No data schema found for data part ${dataName}`
10269
- });
10270
- }
10328
+ if (metadataSchema) {
10329
+ for (const message of validatedMessages) {
10271
10330
  await (0, import_provider_utils33.validateTypes)({
10272
- value: dataPart.data,
10273
- schema: dataSchema
10331
+ value: message.metadata,
10332
+ schema: metadataSchema
10274
10333
  });
10275
10334
  }
10276
10335
  }
10277
- }
10278
- if (tools) {
10279
- for (const message of validatedMessages) {
10280
- const toolParts = message.parts.filter(
10281
- (part) => part.type.startsWith("tool-")
10282
- );
10283
- for (const toolPart of toolParts) {
10284
- const toolName = toolPart.type.slice(5);
10285
- const tool3 = tools[toolName];
10286
- if (!tool3) {
10287
- throw new import_provider32.TypeValidationError({
10288
- value: toolPart.input,
10289
- cause: `No tool schema found for tool part ${toolName}`
10290
- });
10291
- }
10292
- if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10336
+ if (dataSchemas) {
10337
+ for (const message of validatedMessages) {
10338
+ const dataParts = message.parts.filter(
10339
+ (part) => part.type.startsWith("data-")
10340
+ );
10341
+ for (const dataPart of dataParts) {
10342
+ const dataName = dataPart.type.slice(5);
10343
+ const dataSchema = dataSchemas[dataName];
10344
+ if (!dataSchema) {
10345
+ return {
10346
+ success: false,
10347
+ error: new import_provider32.TypeValidationError({
10348
+ value: dataPart.data,
10349
+ cause: `No data schema found for data part ${dataName}`
10350
+ })
10351
+ };
10352
+ }
10293
10353
  await (0, import_provider_utils33.validateTypes)({
10294
- value: toolPart.input,
10295
- schema: tool3.inputSchema
10354
+ value: dataPart.data,
10355
+ schema: dataSchema
10296
10356
  });
10297
10357
  }
10298
- if (toolPart.state === "output-available" && tool3.outputSchema) {
10299
- await (0, import_provider_utils33.validateTypes)({
10300
- value: toolPart.output,
10301
- schema: tool3.outputSchema
10302
- });
10358
+ }
10359
+ }
10360
+ if (tools) {
10361
+ for (const message of validatedMessages) {
10362
+ const toolParts = message.parts.filter(
10363
+ (part) => part.type.startsWith("tool-")
10364
+ );
10365
+ for (const toolPart of toolParts) {
10366
+ const toolName = toolPart.type.slice(5);
10367
+ const tool3 = tools[toolName];
10368
+ if (!tool3) {
10369
+ return {
10370
+ success: false,
10371
+ error: new import_provider32.TypeValidationError({
10372
+ value: toolPart.input,
10373
+ cause: `No tool schema found for tool part ${toolName}`
10374
+ })
10375
+ };
10376
+ }
10377
+ if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
10378
+ await (0, import_provider_utils33.validateTypes)({
10379
+ value: toolPart.input,
10380
+ schema: tool3.inputSchema
10381
+ });
10382
+ }
10383
+ if (toolPart.state === "output-available" && tool3.outputSchema) {
10384
+ await (0, import_provider_utils33.validateTypes)({
10385
+ value: toolPart.output,
10386
+ schema: tool3.outputSchema
10387
+ });
10388
+ }
10303
10389
  }
10304
10390
  }
10305
10391
  }
10392
+ return {
10393
+ success: true,
10394
+ data: validatedMessages
10395
+ };
10396
+ } catch (error) {
10397
+ const err = error;
10398
+ return {
10399
+ success: false,
10400
+ error: err
10401
+ };
10306
10402
  }
10307
- return validatedMessages;
10403
+ }
10404
+ async function validateUIMessages({
10405
+ messages,
10406
+ metadataSchema,
10407
+ dataSchemas,
10408
+ tools
10409
+ }) {
10410
+ const response = await safeValidateUIMessages({
10411
+ messages,
10412
+ metadataSchema,
10413
+ dataSchemas,
10414
+ tools
10415
+ });
10416
+ if (!response.success)
10417
+ throw response.error;
10418
+ return response.data;
10308
10419
  }
10309
10420
 
10310
10421
  // src/ui-message-stream/create-ui-message-stream.ts
10311
- var import_provider_utils34 = require("@ai-sdk/provider-utils");
10422
+ var import_provider_utils34 = require("@zenning/provider-utils");
10312
10423
  function createUIMessageStream({
10313
10424
  execute,
10314
10425
  onError = import_provider_utils34.getErrorMessage,
@@ -10445,6 +10556,7 @@ function readUIMessageStream({
10445
10556
  AISDKError,
10446
10557
  APICallError,
10447
10558
  AbstractChat,
10559
+ Agent,
10448
10560
  DefaultChatTransport,
10449
10561
  DownloadError,
10450
10562
  EmptyResponseBodyError,
@@ -10467,6 +10579,7 @@ function readUIMessageStream({
10467
10579
  NoObjectGeneratedError,
10468
10580
  NoOutputGeneratedError,
10469
10581
  NoOutputSpecifiedError,
10582
+ NoSpeechGeneratedError,
10470
10583
  NoSuchModelError,
10471
10584
  NoSuchProviderError,
10472
10585
  NoSuchToolError,
@@ -10525,10 +10638,12 @@ function readUIMessageStream({
10525
10638
  jsonSchema,
10526
10639
  lastAssistantMessageIsCompleteWithToolCalls,
10527
10640
  modelMessageSchema,
10641
+ parseJsonEventStream,
10528
10642
  parsePartialJson,
10529
10643
  pipeTextStreamToResponse,
10530
10644
  pipeUIMessageStreamToResponse,
10531
10645
  readUIMessageStream,
10646
+ safeValidateUIMessages,
10532
10647
  simulateReadableStream,
10533
10648
  simulateStreamingMiddleware,
10534
10649
  smoothStream,
@@ -10538,6 +10653,7 @@ function readUIMessageStream({
10538
10653
  systemModelMessageSchema,
10539
10654
  tool,
10540
10655
  toolModelMessageSchema,
10656
+ uiMessageChunkSchema,
10541
10657
  userModelMessageSchema,
10542
10658
  validateUIMessages,
10543
10659
  wrapLanguageModel,