@zenning/ai 5.0.43 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -20,11 +20,12 @@ import {
20
20
  import {
21
21
  createIdGenerator,
22
22
  executeTool,
23
- getErrorMessage as getErrorMessage5
23
+ getErrorMessage as getErrorMessage5,
24
+ withUserAgentSuffix as withUserAgentSuffix2
24
25
  } from "@ai-sdk/provider-utils";
25
26
 
26
27
  // src/error/no-output-specified-error.ts
27
- import { AISDKError } from "@ai-sdk/provider";
28
+ import { AISDKError } from "@zenning/provider";
28
29
  var name = "AI_NoOutputSpecifiedError";
29
30
  var marker = `vercel.ai.error.${name}`;
30
31
  var symbol = Symbol.for(marker);
@@ -108,10 +109,10 @@ import {
108
109
  TooManyEmbeddingValuesForCallError,
109
110
  TypeValidationError,
110
111
  UnsupportedFunctionalityError
111
- } from "@ai-sdk/provider";
112
+ } from "@zenning/provider";
112
113
 
113
114
  // src/error/invalid-argument-error.ts
114
- import { AISDKError as AISDKError2 } from "@ai-sdk/provider";
115
+ import { AISDKError as AISDKError2 } from "@zenning/provider";
115
116
  var name2 = "AI_InvalidArgumentError";
116
117
  var marker2 = `vercel.ai.error.${name2}`;
117
118
  var symbol2 = Symbol.for(marker2);
@@ -137,7 +138,7 @@ var InvalidArgumentError = class extends AISDKError2 {
137
138
  _a2 = symbol2;
138
139
 
139
140
  // src/error/invalid-stream-part-error.ts
140
- import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
141
+ import { AISDKError as AISDKError3 } from "@zenning/provider";
141
142
  var name3 = "AI_InvalidStreamPartError";
142
143
  var marker3 = `vercel.ai.error.${name3}`;
143
144
  var symbol3 = Symbol.for(marker3);
@@ -158,7 +159,7 @@ var InvalidStreamPartError = class extends AISDKError3 {
158
159
  _a3 = symbol3;
159
160
 
160
161
  // src/error/invalid-tool-input-error.ts
161
- import { AISDKError as AISDKError4, getErrorMessage } from "@ai-sdk/provider";
162
+ import { AISDKError as AISDKError4, getErrorMessage } from "@zenning/provider";
162
163
  var name4 = "AI_InvalidToolInputError";
163
164
  var marker4 = `vercel.ai.error.${name4}`;
164
165
  var symbol4 = Symbol.for(marker4);
@@ -182,7 +183,7 @@ var InvalidToolInputError = class extends AISDKError4 {
182
183
  _a4 = symbol4;
183
184
 
184
185
  // src/error/mcp-client-error.ts
185
- import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
186
+ import { AISDKError as AISDKError5 } from "@zenning/provider";
186
187
  var name5 = "AI_MCPClientError";
187
188
  var marker5 = `vercel.ai.error.${name5}`;
188
189
  var symbol5 = Symbol.for(marker5);
@@ -203,7 +204,7 @@ var MCPClientError = class extends AISDKError5 {
203
204
  _a5 = symbol5;
204
205
 
205
206
  // src/error/no-image-generated-error.ts
206
- import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
207
+ import { AISDKError as AISDKError6 } from "@zenning/provider";
207
208
  var name6 = "AI_NoImageGeneratedError";
208
209
  var marker6 = `vercel.ai.error.${name6}`;
209
210
  var symbol6 = Symbol.for(marker6);
@@ -225,7 +226,7 @@ var NoImageGeneratedError = class extends AISDKError6 {
225
226
  _a6 = symbol6;
226
227
 
227
228
  // src/error/no-object-generated-error.ts
228
- import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
229
+ import { AISDKError as AISDKError7 } from "@zenning/provider";
229
230
  var name7 = "AI_NoObjectGeneratedError";
230
231
  var marker7 = `vercel.ai.error.${name7}`;
231
232
  var symbol7 = Symbol.for(marker7);
@@ -253,7 +254,7 @@ var NoObjectGeneratedError = class extends AISDKError7 {
253
254
  _a7 = symbol7;
254
255
 
255
256
  // src/error/no-output-generated-error.ts
256
- import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
257
+ import { AISDKError as AISDKError8 } from "@zenning/provider";
257
258
  var name8 = "AI_NoOutputGeneratedError";
258
259
  var marker8 = `vercel.ai.error.${name8}`;
259
260
  var symbol8 = Symbol.for(marker8);
@@ -274,7 +275,7 @@ var NoOutputGeneratedError = class extends AISDKError8 {
274
275
  _a8 = symbol8;
275
276
 
276
277
  // src/error/no-such-tool-error.ts
277
- import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
278
+ import { AISDKError as AISDKError9 } from "@zenning/provider";
278
279
  var name9 = "AI_NoSuchToolError";
279
280
  var marker9 = `vercel.ai.error.${name9}`;
280
281
  var symbol9 = Symbol.for(marker9);
@@ -297,7 +298,7 @@ var NoSuchToolError = class extends AISDKError9 {
297
298
  _a9 = symbol9;
298
299
 
299
300
  // src/error/tool-call-repair-error.ts
300
- import { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
301
+ import { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from "@zenning/provider";
301
302
  var name10 = "AI_ToolCallRepairError";
302
303
  var marker10 = `vercel.ai.error.${name10}`;
303
304
  var symbol10 = Symbol.for(marker10);
@@ -319,7 +320,7 @@ var ToolCallRepairError = class extends AISDKError10 {
319
320
  _a10 = symbol10;
320
321
 
321
322
  // src/error/unsupported-model-version-error.ts
322
- import { AISDKError as AISDKError11 } from "@ai-sdk/provider";
323
+ import { AISDKError as AISDKError11 } from "@zenning/provider";
323
324
  var UnsupportedModelVersionError = class extends AISDKError11 {
324
325
  constructor(options) {
325
326
  super({
@@ -333,7 +334,7 @@ var UnsupportedModelVersionError = class extends AISDKError11 {
333
334
  };
334
335
 
335
336
  // src/prompt/invalid-data-content-error.ts
336
- import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
337
+ import { AISDKError as AISDKError12 } from "@zenning/provider";
337
338
  var name11 = "AI_InvalidDataContentError";
338
339
  var marker11 = `vercel.ai.error.${name11}`;
339
340
  var symbol11 = Symbol.for(marker11);
@@ -355,7 +356,7 @@ var InvalidDataContentError = class extends AISDKError12 {
355
356
  _a11 = symbol11;
356
357
 
357
358
  // src/prompt/invalid-message-role-error.ts
358
- import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
359
+ import { AISDKError as AISDKError13 } from "@zenning/provider";
359
360
  var name12 = "AI_InvalidMessageRoleError";
360
361
  var marker12 = `vercel.ai.error.${name12}`;
361
362
  var symbol12 = Symbol.for(marker12);
@@ -376,7 +377,7 @@ var InvalidMessageRoleError = class extends AISDKError13 {
376
377
  _a12 = symbol12;
377
378
 
378
379
  // src/prompt/message-conversion-error.ts
379
- import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
380
+ import { AISDKError as AISDKError14 } from "@zenning/provider";
380
381
  var name13 = "AI_MessageConversionError";
381
382
  var marker13 = `vercel.ai.error.${name13}`;
382
383
  var symbol13 = Symbol.for(marker13);
@@ -397,7 +398,7 @@ var MessageConversionError = class extends AISDKError14 {
397
398
  _a13 = symbol13;
398
399
 
399
400
  // src/util/download/download-error.ts
400
- import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
401
+ import { AISDKError as AISDKError15 } from "@zenning/provider";
401
402
  var name14 = "AI_DownloadError";
402
403
  var marker14 = `vercel.ai.error.${name14}`;
403
404
  var symbol14 = Symbol.for(marker14);
@@ -423,7 +424,7 @@ var DownloadError = class extends AISDKError15 {
423
424
  _a14 = symbol14;
424
425
 
425
426
  // src/util/retry-error.ts
426
- import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
427
+ import { AISDKError as AISDKError16 } from "@zenning/provider";
427
428
  var name15 = "AI_RetryError";
428
429
  var marker15 = `vercel.ai.error.${name15}`;
429
430
  var symbol15 = Symbol.for(marker15);
@@ -490,38 +491,50 @@ import { convertBase64ToUint8Array } from "@ai-sdk/provider-utils";
490
491
  var imageMediaTypeSignatures = [
491
492
  {
492
493
  mediaType: "image/gif",
493
- bytesPrefix: [71, 73, 70],
494
- base64Prefix: "R0lG"
494
+ bytesPrefix: [71, 73, 70]
495
+ // GIF
495
496
  },
496
497
  {
497
498
  mediaType: "image/png",
498
- bytesPrefix: [137, 80, 78, 71],
499
- base64Prefix: "iVBORw"
499
+ bytesPrefix: [137, 80, 78, 71]
500
+ // PNG
500
501
  },
501
502
  {
502
503
  mediaType: "image/jpeg",
503
- bytesPrefix: [255, 216],
504
- base64Prefix: "/9j/"
504
+ bytesPrefix: [255, 216]
505
+ // JPEG
505
506
  },
506
507
  {
507
508
  mediaType: "image/webp",
508
- bytesPrefix: [82, 73, 70, 70],
509
- base64Prefix: "UklGRg"
509
+ bytesPrefix: [
510
+ 82,
511
+ 73,
512
+ 70,
513
+ 70,
514
+ // "RIFF"
515
+ null,
516
+ null,
517
+ null,
518
+ null,
519
+ // file size (variable)
520
+ 87,
521
+ 69,
522
+ 66,
523
+ 80
524
+ // "WEBP"
525
+ ]
510
526
  },
511
527
  {
512
528
  mediaType: "image/bmp",
513
- bytesPrefix: [66, 77],
514
- base64Prefix: "Qk"
529
+ bytesPrefix: [66, 77]
515
530
  },
516
531
  {
517
532
  mediaType: "image/tiff",
518
- bytesPrefix: [73, 73, 42, 0],
519
- base64Prefix: "SUkqAA"
533
+ bytesPrefix: [73, 73, 42, 0]
520
534
  },
521
535
  {
522
536
  mediaType: "image/tiff",
523
- bytesPrefix: [77, 77, 0, 42],
524
- base64Prefix: "TU0AKg"
537
+ bytesPrefix: [77, 77, 0, 42]
525
538
  },
526
539
  {
527
540
  mediaType: "image/avif",
@@ -538,8 +551,7 @@ var imageMediaTypeSignatures = [
538
551
  118,
539
552
  105,
540
553
  102
541
- ],
542
- base64Prefix: "AAAAIGZ0eXBhdmlm"
554
+ ]
543
555
  },
544
556
  {
545
557
  mediaType: "image/heic",
@@ -556,70 +568,78 @@ var imageMediaTypeSignatures = [
556
568
  101,
557
569
  105,
558
570
  99
559
- ],
560
- base64Prefix: "AAAAIGZ0eXBoZWlj"
571
+ ]
561
572
  }
562
573
  ];
563
574
  var audioMediaTypeSignatures = [
564
575
  {
565
576
  mediaType: "audio/mpeg",
566
- bytesPrefix: [255, 251],
567
- base64Prefix: "//s="
577
+ bytesPrefix: [255, 251]
568
578
  },
569
579
  {
570
580
  mediaType: "audio/mpeg",
571
- bytesPrefix: [255, 250],
572
- base64Prefix: "//o="
581
+ bytesPrefix: [255, 250]
573
582
  },
574
583
  {
575
584
  mediaType: "audio/mpeg",
576
- bytesPrefix: [255, 243],
577
- base64Prefix: "//M="
585
+ bytesPrefix: [255, 243]
578
586
  },
579
587
  {
580
588
  mediaType: "audio/mpeg",
581
- bytesPrefix: [255, 242],
582
- base64Prefix: "//I="
589
+ bytesPrefix: [255, 242]
583
590
  },
584
591
  {
585
592
  mediaType: "audio/mpeg",
586
- bytesPrefix: [255, 227],
587
- base64Prefix: "/+M="
593
+ bytesPrefix: [255, 227]
588
594
  },
589
595
  {
590
596
  mediaType: "audio/mpeg",
591
- bytesPrefix: [255, 226],
592
- base64Prefix: "/+I="
597
+ bytesPrefix: [255, 226]
593
598
  },
594
599
  {
595
600
  mediaType: "audio/wav",
596
- bytesPrefix: [82, 73, 70, 70],
597
- base64Prefix: "UklGR"
601
+ bytesPrefix: [
602
+ 82,
603
+ // R
604
+ 73,
605
+ // I
606
+ 70,
607
+ // F
608
+ 70,
609
+ // F
610
+ null,
611
+ null,
612
+ null,
613
+ null,
614
+ 87,
615
+ // W
616
+ 65,
617
+ // A
618
+ 86,
619
+ // V
620
+ 69
621
+ // E
622
+ ]
598
623
  },
599
624
  {
600
625
  mediaType: "audio/ogg",
601
- bytesPrefix: [79, 103, 103, 83],
602
- base64Prefix: "T2dnUw"
626
+ bytesPrefix: [79, 103, 103, 83]
603
627
  },
604
628
  {
605
629
  mediaType: "audio/flac",
606
- bytesPrefix: [102, 76, 97, 67],
607
- base64Prefix: "ZkxhQw"
630
+ bytesPrefix: [102, 76, 97, 67]
608
631
  },
609
632
  {
610
633
  mediaType: "audio/aac",
611
- bytesPrefix: [64, 21, 0, 0],
612
- base64Prefix: "QBUA"
634
+ bytesPrefix: [64, 21, 0, 0]
613
635
  },
614
636
  {
615
637
  mediaType: "audio/mp4",
616
- bytesPrefix: [102, 116, 121, 112],
617
- base64Prefix: "ZnR5cA"
638
+ bytesPrefix: [102, 116, 121, 112]
618
639
  },
619
640
  {
620
641
  mediaType: "audio/webm",
621
- bytesPrefix: [26, 69, 223, 163],
622
- base64Prefix: "GkXf"
642
+ bytesPrefix: [26, 69, 223, 163]
623
643
  }
624
644
  ];
625
645
  var stripID3 = (data) => {
@@ -638,9 +658,12 @@ function detectMediaType({
638
658
  signatures
639
659
  }) {
640
660
  const processedData = stripID3TagsIfPresent(data);
661
+ const bytes = typeof processedData === "string" ? convertBase64ToUint8Array(
662
+ processedData.substring(0, Math.min(processedData.length, 24))
663
+ ) : processedData;
641
664
  for (const signature of signatures) {
642
- if (typeof processedData === "string" ? processedData.startsWith(signature.base64Prefix) : processedData.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(
643
- (byte, index) => processedData[index] === byte
665
+ if (bytes.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(
666
+ (byte, index) => byte === null || bytes[index] === byte
644
667
  )) {
645
668
  return signature.mediaType;
646
669
  }
@@ -648,12 +671,27 @@ function detectMediaType({
648
671
  return void 0;
649
672
  }
650
673
 
674
+ // src/util/download/download.ts
675
+ import {
676
+ withUserAgentSuffix,
677
+ getRuntimeEnvironmentUserAgent
678
+ } from "@ai-sdk/provider-utils";
679
+
680
+ // src/version.ts
681
+ var VERSION = true ? "5.1.0" : "0.0.0-test";
682
+
651
683
  // src/util/download/download.ts
652
684
  var download = async ({ url }) => {
653
685
  var _a17;
654
686
  const urlText = url.toString();
655
687
  try {
656
- const response = await fetch(urlText);
688
+ const response = await fetch(urlText, {
689
+ headers: withUserAgentSuffix(
690
+ {},
691
+ `ai-sdk/${VERSION}`,
692
+ getRuntimeEnvironmentUserAgent()
693
+ )
694
+ });
657
695
  if (!response.ok) {
658
696
  throw new DownloadError({
659
697
  url: urlText,
@@ -681,7 +719,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
681
719
  );
682
720
 
683
721
  // src/prompt/data-content.ts
684
- import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
722
+ import { AISDKError as AISDKError18 } from "@zenning/provider";
685
723
  import {
686
724
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
687
725
  convertUint8ArrayToBase64
@@ -831,8 +869,8 @@ function convertToLanguageModelMessage({
831
869
  return {
832
870
  role: "assistant",
833
871
  content: message.content.filter(
834
- // remove empty text parts:
835
- (part) => part.type !== "text" || part.text !== ""
872
+ // remove empty text parts (no text, and no provider options):
873
+ (part) => part.type !== "text" || part.text !== "" || part.providerOptions != null
836
874
  ).map((part) => {
837
875
  const providerOptions = part.providerOptions;
838
876
  switch (part.type) {
@@ -1149,7 +1187,7 @@ function prepareToolsAndToolChoice({
1149
1187
  }
1150
1188
 
1151
1189
  // src/prompt/standardize-prompt.ts
1152
- import { InvalidPromptError as InvalidPromptError2 } from "@ai-sdk/provider";
1190
+ import { InvalidPromptError as InvalidPromptError2 } from "@zenning/provider";
1153
1191
  import { safeValidateTypes } from "@ai-sdk/provider-utils";
1154
1192
  import { z as z6 } from "zod/v4";
1155
1193
 
@@ -1363,7 +1401,7 @@ import {
1363
1401
  GatewayAuthenticationError,
1364
1402
  GatewayModelNotFoundError
1365
1403
  } from "@ai-sdk/gateway";
1366
- import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
1404
+ import { AISDKError as AISDKError19 } from "@zenning/provider";
1367
1405
  function wrapGatewayError(error) {
1368
1406
  if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {
1369
1407
  return new AISDKError19({
@@ -1612,7 +1650,7 @@ function asArray(value) {
1612
1650
  }
1613
1651
 
1614
1652
  // src/util/retry-with-exponential-backoff.ts
1615
- import { APICallError as APICallError2 } from "@ai-sdk/provider";
1653
+ import { APICallError as APICallError2 } from "@zenning/provider";
1616
1654
  import { delay, getErrorMessage as getErrorMessage3, isAbortError } from "@ai-sdk/provider-utils";
1617
1655
  function getRetryDelayInMs({
1618
1656
  error,
@@ -1927,7 +1965,7 @@ var DefaultStepResult = class {
1927
1965
  }
1928
1966
  get staticToolCalls() {
1929
1967
  return this.toolCalls.filter(
1930
- (toolCall) => toolCall.dynamic === false
1968
+ (toolCall) => toolCall.dynamic !== true
1931
1969
  );
1932
1970
  }
1933
1971
  get dynamicToolCalls() {
@@ -1940,7 +1978,7 @@ var DefaultStepResult = class {
1940
1978
  }
1941
1979
  get staticToolResults() {
1942
1980
  return this.toolResults.filter(
1943
- (toolResult) => toolResult.dynamic === false
1981
+ (toolResult) => toolResult.dynamic !== true
1944
1982
  );
1945
1983
  }
1946
1984
  get dynamicToolResults() {
@@ -1972,7 +2010,7 @@ async function isStopConditionMet({
1972
2010
  // src/prompt/create-tool-model-output.ts
1973
2011
  import {
1974
2012
  getErrorMessage as getErrorMessage4
1975
- } from "@ai-sdk/provider";
2013
+ } from "@zenning/provider";
1976
2014
  function createToolModelOutput({
1977
2015
  output,
1978
2016
  tool: tool3,
@@ -2122,10 +2160,14 @@ async function generateText({
2122
2160
  abortSignal
2123
2161
  });
2124
2162
  const callSettings = prepareCallSettings(settings);
2163
+ const headersWithUserAgent = withUserAgentSuffix2(
2164
+ headers != null ? headers : {},
2165
+ `ai/${VERSION}`
2166
+ );
2125
2167
  const baseTelemetryAttributes = getBaseTelemetryAttributes({
2126
2168
  model,
2127
2169
  telemetry,
2128
- headers,
2170
+ headers: headersWithUserAgent,
2129
2171
  settings: { ...callSettings, maxRetries }
2130
2172
  });
2131
2173
  const initialPrompt = await standardizePrompt({
@@ -2240,7 +2282,7 @@ async function generateText({
2240
2282
  prompt: promptMessages,
2241
2283
  providerOptions,
2242
2284
  abortSignal,
2243
- headers
2285
+ headers: headersWithUserAgent
2244
2286
  });
2245
2287
  const responseData = {
2246
2288
  id: (_b2 = (_a19 = result.response) == null ? void 0 : _a19.id) != null ? _b2 : generateId3(),
@@ -2666,7 +2708,7 @@ function asContent({
2666
2708
  // src/generate-text/stream-text.ts
2667
2709
  import {
2668
2710
  getErrorMessage as getErrorMessage7
2669
- } from "@ai-sdk/provider";
2711
+ } from "@zenning/provider";
2670
2712
  import {
2671
2713
  createIdGenerator as createIdGenerator2,
2672
2714
  isAbortError as isAbortError2
@@ -2915,6 +2957,9 @@ var uiMessageChunkSchema = z7.union([
2915
2957
  type: z7.literal("source-document"),
2916
2958
  sourceId: z7.string(),
2917
2959
  mediaType: z7.string(),
2960
+ fileId: z7.string().optional(),
2961
+ startIndex: z7.number().optional(),
2962
+ endIndex: z7.number().optional(),
2918
2963
  title: z7.string(),
2919
2964
  filename: z7.string().optional(),
2920
2965
  providerMetadata: providerMetadataSchema.optional()
@@ -3563,6 +3608,9 @@ function processUIMessageStream({
3563
3608
  mediaType: chunk.mediaType,
3564
3609
  title: chunk.title,
3565
3610
  filename: chunk.filename,
3611
+ fileId: chunk.fileId,
3612
+ startIndex: chunk.startIndex,
3613
+ endIndex: chunk.endIndex,
3566
3614
  providerMetadata: chunk.providerMetadata
3567
3615
  });
3568
3616
  write();
@@ -5928,6 +5976,7 @@ var Agent = class {
5928
5976
  };
5929
5977
 
5930
5978
  // src/embed/embed.ts
5979
+ import { withUserAgentSuffix as withUserAgentSuffix3 } from "@ai-sdk/provider-utils";
5931
5980
  async function embed({
5932
5981
  model: modelArg,
5933
5982
  value,
@@ -5942,10 +5991,14 @@ async function embed({
5942
5991
  maxRetries: maxRetriesArg,
5943
5992
  abortSignal
5944
5993
  });
5994
+ const headersWithUserAgent = withUserAgentSuffix3(
5995
+ headers != null ? headers : {},
5996
+ `ai/${VERSION}`
5997
+ );
5945
5998
  const baseTelemetryAttributes = getBaseTelemetryAttributes({
5946
5999
  model,
5947
6000
  telemetry,
5948
- headers,
6001
+ headers: headersWithUserAgent,
5949
6002
  settings: { maxRetries }
5950
6003
  });
5951
6004
  const tracer = getTracer(telemetry);
@@ -5984,7 +6037,7 @@ async function embed({
5984
6037
  const modelResponse = await model.doEmbed({
5985
6038
  values: [value],
5986
6039
  abortSignal,
5987
- headers,
6040
+ headers: headersWithUserAgent,
5988
6041
  providerOptions
5989
6042
  });
5990
6043
  const embedding2 = modelResponse.embeddings[0];
@@ -6041,6 +6094,9 @@ var DefaultEmbedResult = class {
6041
6094
  }
6042
6095
  };
6043
6096
 
6097
+ // src/embed/embed-many.ts
6098
+ import { withUserAgentSuffix as withUserAgentSuffix4 } from "@ai-sdk/provider-utils";
6099
+
6044
6100
  // src/util/split-array.ts
6045
6101
  function splitArray(array, chunkSize) {
6046
6102
  if (chunkSize <= 0) {
@@ -6069,10 +6125,14 @@ async function embedMany({
6069
6125
  maxRetries: maxRetriesArg,
6070
6126
  abortSignal
6071
6127
  });
6128
+ const headersWithUserAgent = withUserAgentSuffix4(
6129
+ headers != null ? headers : {},
6130
+ `ai/${VERSION}`
6131
+ );
6072
6132
  const baseTelemetryAttributes = getBaseTelemetryAttributes({
6073
6133
  model,
6074
6134
  telemetry,
6075
- headers,
6135
+ headers: headersWithUserAgent,
6076
6136
  settings: { maxRetries }
6077
6137
  });
6078
6138
  const tracer = getTracer(telemetry);
@@ -6121,7 +6181,7 @@ async function embedMany({
6121
6181
  const modelResponse = await model.doEmbed({
6122
6182
  values,
6123
6183
  abortSignal,
6124
- headers,
6184
+ headers: headersWithUserAgent,
6125
6185
  providerOptions
6126
6186
  });
6127
6187
  const embeddings3 = modelResponse.embeddings;
@@ -6203,7 +6263,7 @@ async function embedMany({
6203
6263
  const modelResponse = await model.doEmbed({
6204
6264
  values: chunk,
6205
6265
  abortSignal,
6206
- headers,
6266
+ headers: headersWithUserAgent,
6207
6267
  providerOptions
6208
6268
  });
6209
6269
  const embeddings2 = modelResponse.embeddings;
@@ -6284,6 +6344,7 @@ var DefaultEmbedManyResult = class {
6284
6344
  };
6285
6345
 
6286
6346
  // src/generate-image/generate-image.ts
6347
+ import { withUserAgentSuffix as withUserAgentSuffix5 } from "@ai-sdk/provider-utils";
6287
6348
  async function generateImage({
6288
6349
  model,
6289
6350
  prompt,
@@ -6305,6 +6366,10 @@ async function generateImage({
6305
6366
  modelId: model.modelId
6306
6367
  });
6307
6368
  }
6369
+ const headersWithUserAgent = withUserAgentSuffix5(
6370
+ headers != null ? headers : {},
6371
+ `ai/${VERSION}`
6372
+ );
6308
6373
  const { retry } = prepareRetries({
6309
6374
  maxRetries: maxRetriesArg,
6310
6375
  abortSignal
@@ -6325,7 +6390,7 @@ async function generateImage({
6325
6390
  prompt,
6326
6391
  n: callImageCount,
6327
6392
  abortSignal,
6328
- headers,
6393
+ headers: headersWithUserAgent,
6329
6394
  size,
6330
6395
  aspectRatio,
6331
6396
  seed,
@@ -6398,7 +6463,8 @@ async function invokeModelMaxImagesPerCall(model) {
6398
6463
 
6399
6464
  // src/generate-object/generate-object.ts
6400
6465
  import {
6401
- createIdGenerator as createIdGenerator3
6466
+ createIdGenerator as createIdGenerator3,
6467
+ withUserAgentSuffix as withUserAgentSuffix6
6402
6468
  } from "@ai-sdk/provider-utils";
6403
6469
 
6404
6470
  // src/generate-text/extract-reasoning-content.ts
@@ -6415,7 +6481,7 @@ import {
6415
6481
  isJSONObject,
6416
6482
  TypeValidationError as TypeValidationError2,
6417
6483
  UnsupportedFunctionalityError as UnsupportedFunctionalityError2
6418
- } from "@ai-sdk/provider";
6484
+ } from "@zenning/provider";
6419
6485
  import {
6420
6486
  asSchema as asSchema3,
6421
6487
  safeValidateTypes as safeValidateTypes3
@@ -6676,7 +6742,7 @@ function getOutputStrategy({
6676
6742
  }
6677
6743
 
6678
6744
  // src/generate-object/parse-and-validate-object-result.ts
6679
- import { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from "@ai-sdk/provider";
6745
+ import { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from "@zenning/provider";
6680
6746
  import { safeParseJSON as safeParseJSON3 } from "@ai-sdk/provider-utils";
6681
6747
  async function parseAndValidateObjectResult(result, outputStrategy, context) {
6682
6748
  const parseResult = await safeParseJSON3({ text: result });
@@ -6896,10 +6962,14 @@ async function generateObject(options) {
6896
6962
  enumValues
6897
6963
  });
6898
6964
  const callSettings = prepareCallSettings(settings);
6965
+ const headersWithUserAgent = withUserAgentSuffix6(
6966
+ headers != null ? headers : {},
6967
+ `ai/${VERSION}`
6968
+ );
6899
6969
  const baseTelemetryAttributes = getBaseTelemetryAttributes({
6900
6970
  model,
6901
6971
  telemetry,
6902
- headers,
6972
+ headers: headersWithUserAgent,
6903
6973
  settings: { ...callSettings, maxRetries }
6904
6974
  });
6905
6975
  const tracer = getTracer(telemetry);
@@ -6984,7 +7054,7 @@ async function generateObject(options) {
6984
7054
  prompt: promptMessages,
6985
7055
  providerOptions,
6986
7056
  abortSignal,
6987
- headers
7057
+ headers: headersWithUserAgent
6988
7058
  });
6989
7059
  const responseData = {
6990
7060
  id: (_b = (_a18 = result2.response) == null ? void 0 : _a18.id) != null ? _b : generateId3(),
@@ -7766,8 +7836,11 @@ var DefaultStreamObjectResult = class {
7766
7836
  }
7767
7837
  };
7768
7838
 
7839
+ // src/generate-speech/generate-speech.ts
7840
+ import { withUserAgentSuffix as withUserAgentSuffix7 } from "@ai-sdk/provider-utils";
7841
+
7769
7842
  // src/error/no-speech-generated-error.ts
7770
- import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
7843
+ import { AISDKError as AISDKError20 } from "@zenning/provider";
7771
7844
  var NoSpeechGeneratedError = class extends AISDKError20 {
7772
7845
  constructor(options) {
7773
7846
  super({
@@ -7825,6 +7898,10 @@ async function generateSpeech({
7825
7898
  modelId: model.modelId
7826
7899
  });
7827
7900
  }
7901
+ const headersWithUserAgent = withUserAgentSuffix7(
7902
+ headers != null ? headers : {},
7903
+ `ai/${VERSION}`
7904
+ );
7828
7905
  const { retry } = prepareRetries({
7829
7906
  maxRetries: maxRetriesArg,
7830
7907
  abortSignal
@@ -7838,7 +7915,7 @@ async function generateSpeech({
7838
7915
  speed,
7839
7916
  language,
7840
7917
  abortSignal,
7841
- headers,
7918
+ headers: headersWithUserAgent,
7842
7919
  providerOptions
7843
7920
  })
7844
7921
  );
@@ -7951,7 +8028,7 @@ var object = ({
7951
8028
 
7952
8029
  // src/generate-text/smooth-stream.ts
7953
8030
  import { delay as originalDelay } from "@ai-sdk/provider-utils";
7954
- import { InvalidArgumentError as InvalidArgumentError2 } from "@ai-sdk/provider";
8031
+ import { InvalidArgumentError as InvalidArgumentError2 } from "@zenning/provider";
7955
8032
  var CHUNKING_REGEXPS = {
7956
8033
  word: /\S+\s+/m,
7957
8034
  line: /\n+/m
@@ -8355,7 +8432,7 @@ function wrapProvider({
8355
8432
  // src/registry/custom-provider.ts
8356
8433
  import {
8357
8434
  NoSuchModelError as NoSuchModelError2
8358
- } from "@ai-sdk/provider";
8435
+ } from "@zenning/provider";
8359
8436
  function customProvider({
8360
8437
  languageModels,
8361
8438
  textEmbeddingModels,
@@ -8415,7 +8492,7 @@ function customProvider({
8415
8492
  var experimental_customProvider = customProvider;
8416
8493
 
8417
8494
  // src/registry/no-such-provider-error.ts
8418
- import { AISDKError as AISDKError21, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
8495
+ import { AISDKError as AISDKError21, NoSuchModelError as NoSuchModelError3 } from "@zenning/provider";
8419
8496
  var name16 = "AI_NoSuchProviderError";
8420
8497
  var marker16 = `vercel.ai.error.${name16}`;
8421
8498
  var symbol16 = Symbol.for(marker16);
@@ -8442,7 +8519,7 @@ _a16 = symbol16;
8442
8519
  // src/registry/provider-registry.ts
8443
8520
  import {
8444
8521
  NoSuchModelError as NoSuchModelError4
8445
- } from "@ai-sdk/provider";
8522
+ } from "@zenning/provider";
8446
8523
  function createProviderRegistry(providers, {
8447
8524
  separator = ":",
8448
8525
  languageModelMiddleware
@@ -8569,7 +8646,11 @@ import {
8569
8646
  } from "@ai-sdk/provider-utils";
8570
8647
 
8571
8648
  // src/tool/mcp/mcp-sse-transport.ts
8572
- import { EventSourceParserStream } from "@ai-sdk/provider-utils";
8649
+ import {
8650
+ EventSourceParserStream,
8651
+ withUserAgentSuffix as withUserAgentSuffix8,
8652
+ getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2
8653
+ } from "@ai-sdk/provider-utils";
8573
8654
 
8574
8655
  // src/tool/mcp/json-rpc-message.ts
8575
8656
  import { z as z9 } from "zod/v4";
@@ -8728,8 +8809,14 @@ var SseMCPTransport = class {
8728
8809
  const establishConnection = async () => {
8729
8810
  var _a17, _b, _c;
8730
8811
  try {
8731
- const headers = new Headers(this.headers);
8732
- headers.set("Accept", "text/event-stream");
8812
+ const headers = withUserAgentSuffix8(
8813
+ {
8814
+ ...this.headers,
8815
+ Accept: "text/event-stream"
8816
+ },
8817
+ `ai-sdk/${VERSION}`,
8818
+ getRuntimeEnvironmentUserAgent2()
8819
+ );
8733
8820
  const response = await fetch(this.url.href, {
8734
8821
  headers,
8735
8822
  signal: (_a17 = this.abortController) == null ? void 0 : _a17.signal
@@ -8820,8 +8907,14 @@ var SseMCPTransport = class {
8820
8907
  });
8821
8908
  }
8822
8909
  try {
8823
- const headers = new Headers(this.headers);
8824
- headers.set("Content-Type", "application/json");
8910
+ const headers = withUserAgentSuffix8(
8911
+ {
8912
+ ...this.headers,
8913
+ "Content-Type": "application/json"
8914
+ },
8915
+ `ai-sdk/${VERSION}`,
8916
+ getRuntimeEnvironmentUserAgent2()
8917
+ );
8825
8918
  const init = {
8826
8919
  method: "POST",
8827
8920
  headers,
@@ -9128,8 +9221,11 @@ var DefaultMCPClient = class {
9128
9221
  }
9129
9222
  };
9130
9223
 
9224
+ // src/transcribe/transcribe.ts
9225
+ import { withUserAgentSuffix as withUserAgentSuffix9 } from "@ai-sdk/provider-utils";
9226
+
9131
9227
  // src/error/no-transcript-generated-error.ts
9132
- import { AISDKError as AISDKError22 } from "@ai-sdk/provider";
9228
+ import { AISDKError as AISDKError22 } from "@zenning/provider";
9133
9229
  var NoTranscriptGeneratedError = class extends AISDKError22 {
9134
9230
  constructor(options) {
9135
9231
  super({
@@ -9160,6 +9256,10 @@ async function transcribe({
9160
9256
  maxRetries: maxRetriesArg,
9161
9257
  abortSignal
9162
9258
  });
9259
+ const headersWithUserAgent = withUserAgentSuffix9(
9260
+ headers != null ? headers : {},
9261
+ `ai/${VERSION}`
9262
+ );
9163
9263
  const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);
9164
9264
  const result = await retry(
9165
9265
  () => {
@@ -9167,7 +9267,7 @@ async function transcribe({
9167
9267
  return model.doGenerate({
9168
9268
  audio: audioData,
9169
9269
  abortSignal,
9170
- headers,
9270
+ headers: headersWithUserAgent,
9171
9271
  providerOptions,
9172
9272
  mediaType: (_a17 = detectMediaType({
9173
9273
  data: audioData,
@@ -9204,7 +9304,11 @@ var DefaultTranscriptionResult = class {
9204
9304
  };
9205
9305
 
9206
9306
  // src/ui/call-completion-api.ts
9207
- import { parseJsonEventStream } from "@ai-sdk/provider-utils";
9307
+ import {
9308
+ parseJsonEventStream,
9309
+ withUserAgentSuffix as withUserAgentSuffix10,
9310
+ getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3
9311
+ } from "@ai-sdk/provider-utils";
9208
9312
 
9209
9313
  // src/ui/process-text-stream.ts
9210
9314
  async function processTextStream({
@@ -9252,10 +9356,14 @@ async function callCompletionApi({
9252
9356
  ...body
9253
9357
  }),
9254
9358
  credentials,
9255
- headers: {
9256
- "Content-Type": "application/json",
9257
- ...headers
9258
- },
9359
+ headers: withUserAgentSuffix10(
9360
+ {
9361
+ "Content-Type": "application/json",
9362
+ ...headers
9363
+ },
9364
+ `ai-sdk/${VERSION}`,
9365
+ getRuntimeEnvironmentUserAgent3()
9366
+ ),
9259
9367
  signal: abortController.signal
9260
9368
  }).catch((err) => {
9261
9369
  throw err;
@@ -9372,7 +9480,11 @@ async function convertFileListToFileUIParts(files) {
9372
9480
  import { parseJsonEventStream as parseJsonEventStream2 } from "@ai-sdk/provider-utils";
9373
9481
 
9374
9482
  // src/ui/http-chat-transport.ts
9375
- import { resolve } from "@ai-sdk/provider-utils";
9483
+ import {
9484
+ resolve,
9485
+ withUserAgentSuffix as withUserAgentSuffix11,
9486
+ getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent4
9487
+ } from "@ai-sdk/provider-utils";
9376
9488
  var HttpChatTransport = class {
9377
9489
  constructor({
9378
9490
  api = "/api/chat",
@@ -9424,10 +9536,14 @@ var HttpChatTransport = class {
9424
9536
  const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
9425
9537
  const response = await fetch2(api, {
9426
9538
  method: "POST",
9427
- headers: {
9428
- "Content-Type": "application/json",
9429
- ...headers
9430
- },
9539
+ headers: withUserAgentSuffix11(
9540
+ {
9541
+ "Content-Type": "application/json",
9542
+ ...headers
9543
+ },
9544
+ `ai-sdk/${VERSION}`,
9545
+ getRuntimeEnvironmentUserAgent4()
9546
+ ),
9431
9547
  body: JSON.stringify(body),
9432
9548
  credentials,
9433
9549
  signal: abortSignal
@@ -9461,7 +9577,11 @@ var HttpChatTransport = class {
9461
9577
  const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
9462
9578
  const response = await fetch2(api, {
9463
9579
  method: "GET",
9464
- headers,
9580
+ headers: withUserAgentSuffix11(
9581
+ headers,
9582
+ `ai-sdk/${VERSION}`,
9583
+ getRuntimeEnvironmentUserAgent4()
9584
+ ),
9465
9585
  credentials
9466
9586
  });
9467
9587
  if (response.status === 204) {
@@ -9934,7 +10054,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
9934
10054
  };
9935
10055
 
9936
10056
  // src/ui/validate-ui-messages.ts
9937
- import { TypeValidationError as TypeValidationError4 } from "@ai-sdk/provider";
10057
+ import { TypeValidationError as TypeValidationError4 } from "@zenning/provider";
9938
10058
  import {
9939
10059
  validateTypes as validateTypes2
9940
10060
  } from "@ai-sdk/provider-utils";
@@ -9964,6 +10084,9 @@ var sourceDocumentUIPartSchema = z10.object({
9964
10084
  mediaType: z10.string(),
9965
10085
  title: z10.string(),
9966
10086
  filename: z10.string().optional(),
10087
+ fileId: z10.string().optional(),
10088
+ startIndex: z10.number().optional(),
10089
+ endIndex: z10.number().optional(),
9967
10090
  providerMetadata: providerMetadataSchema.optional()
9968
10091
  });
9969
10092
  var fileUIPartSchema = z10.object({
@@ -10028,6 +10151,7 @@ var toolUIPartSchemas = [
10028
10151
  type: z10.string().startsWith("tool-"),
10029
10152
  toolCallId: z10.string(),
10030
10153
  state: z10.literal("input-streaming"),
10154
+ providerExecuted: z10.boolean().optional(),
10031
10155
  input: z10.unknown().optional(),
10032
10156
  output: z10.never().optional(),
10033
10157
  errorText: z10.never().optional()
@@ -10036,6 +10160,7 @@ var toolUIPartSchemas = [
10036
10160
  type: z10.string().startsWith("tool-"),
10037
10161
  toolCallId: z10.string(),
10038
10162
  state: z10.literal("input-available"),
10163
+ providerExecuted: z10.boolean().optional(),
10039
10164
  input: z10.unknown(),
10040
10165
  output: z10.never().optional(),
10041
10166
  errorText: z10.never().optional(),
@@ -10045,6 +10170,7 @@ var toolUIPartSchemas = [
10045
10170
  type: z10.string().startsWith("tool-"),
10046
10171
  toolCallId: z10.string(),
10047
10172
  state: z10.literal("output-available"),
10173
+ providerExecuted: z10.boolean().optional(),
10048
10174
  input: z10.unknown(),
10049
10175
  output: z10.unknown(),
10050
10176
  errorText: z10.never().optional(),
@@ -10055,6 +10181,7 @@ var toolUIPartSchemas = [
10055
10181
  type: z10.string().startsWith("tool-"),
10056
10182
  toolCallId: z10.string(),
10057
10183
  state: z10.literal("output-error"),
10184
+ providerExecuted: z10.boolean().optional(),
10058
10185
  input: z10.unknown(),
10059
10186
  output: z10.never().optional(),
10060
10187
  errorText: z10.string(),