@ai-sdk/gateway 4.0.0-beta.3 → 4.0.0-beta.31

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
@@ -18,8 +18,8 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
20
  // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
23
  GatewayAuthenticationError: () => GatewayAuthenticationError,
24
24
  GatewayError: () => GatewayError,
25
25
  GatewayInternalServerError: () => GatewayInternalServerError,
@@ -31,10 +31,10 @@ __export(src_exports, {
31
31
  createGatewayProvider: () => createGatewayProvider,
32
32
  gateway: () => gateway
33
33
  });
34
- module.exports = __toCommonJS(src_exports);
34
+ module.exports = __toCommonJS(index_exports);
35
35
 
36
36
  // src/gateway-provider.ts
37
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
37
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
38
38
 
39
39
  // src/errors/as-gateway-error.ts
40
40
  var import_provider = require("@ai-sdk/provider");
@@ -553,7 +553,7 @@ var gatewayAvailableModelsResponseSchema = (0, import_provider_utils4.lazySchema
553
553
  })
554
554
  ).nullish(),
555
555
  specification: import_v44.z.object({
556
- specificationVersion: import_v44.z.literal("v3"),
556
+ specificationVersion: import_v44.z.literal("v4"),
557
557
  provider: import_v44.z.string(),
558
558
  modelId: import_v44.z.string()
559
559
  }),
@@ -575,14 +575,203 @@ var gatewayCreditsResponseSchema = (0, import_provider_utils4.lazySchema)(
575
575
  )
576
576
  );
577
577
 
578
- // src/gateway-language-model.ts
578
+ // src/gateway-spend-report.ts
579
579
  var import_provider_utils5 = require("@ai-sdk/provider-utils");
580
580
  var import_v45 = require("zod/v4");
581
+ var GatewaySpendReport = class {
582
+ constructor(config) {
583
+ this.config = config;
584
+ }
585
+ async getSpendReport(params) {
586
+ try {
587
+ const baseUrl = new URL(this.config.baseURL);
588
+ const searchParams = new URLSearchParams();
589
+ searchParams.set("start_date", params.startDate);
590
+ searchParams.set("end_date", params.endDate);
591
+ if (params.groupBy) {
592
+ searchParams.set("group_by", params.groupBy);
593
+ }
594
+ if (params.datePart) {
595
+ searchParams.set("date_part", params.datePart);
596
+ }
597
+ if (params.userId) {
598
+ searchParams.set("user_id", params.userId);
599
+ }
600
+ if (params.model) {
601
+ searchParams.set("model", params.model);
602
+ }
603
+ if (params.provider) {
604
+ searchParams.set("provider", params.provider);
605
+ }
606
+ if (params.credentialType) {
607
+ searchParams.set("credential_type", params.credentialType);
608
+ }
609
+ if (params.tags && params.tags.length > 0) {
610
+ searchParams.set("tags", params.tags.join(","));
611
+ }
612
+ const { value } = await (0, import_provider_utils5.getFromApi)({
613
+ url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,
614
+ headers: await (0, import_provider_utils5.resolve)(this.config.headers()),
615
+ successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
616
+ gatewaySpendReportResponseSchema
617
+ ),
618
+ failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
619
+ errorSchema: import_v45.z.any(),
620
+ errorToMessage: (data) => data
621
+ }),
622
+ fetch: this.config.fetch
623
+ });
624
+ return value;
625
+ } catch (error) {
626
+ throw await asGatewayError(error);
627
+ }
628
+ }
629
+ };
630
+ var gatewaySpendReportResponseSchema = (0, import_provider_utils5.lazySchema)(
631
+ () => (0, import_provider_utils5.zodSchema)(
632
+ import_v45.z.object({
633
+ results: import_v45.z.array(
634
+ import_v45.z.object({
635
+ day: import_v45.z.string().optional(),
636
+ hour: import_v45.z.string().optional(),
637
+ user: import_v45.z.string().optional(),
638
+ model: import_v45.z.string().optional(),
639
+ tag: import_v45.z.string().optional(),
640
+ provider: import_v45.z.string().optional(),
641
+ credential_type: import_v45.z.enum(["byok", "system"]).optional(),
642
+ total_cost: import_v45.z.number(),
643
+ market_cost: import_v45.z.number().optional(),
644
+ input_tokens: import_v45.z.number().optional(),
645
+ output_tokens: import_v45.z.number().optional(),
646
+ cached_input_tokens: import_v45.z.number().optional(),
647
+ cache_creation_input_tokens: import_v45.z.number().optional(),
648
+ reasoning_tokens: import_v45.z.number().optional(),
649
+ request_count: import_v45.z.number().optional()
650
+ }).transform(
651
+ ({
652
+ credential_type,
653
+ total_cost,
654
+ market_cost,
655
+ input_tokens,
656
+ output_tokens,
657
+ cached_input_tokens,
658
+ cache_creation_input_tokens,
659
+ reasoning_tokens,
660
+ request_count,
661
+ ...rest
662
+ }) => ({
663
+ ...rest,
664
+ ...credential_type !== void 0 ? { credentialType: credential_type } : {},
665
+ totalCost: total_cost,
666
+ ...market_cost !== void 0 ? { marketCost: market_cost } : {},
667
+ ...input_tokens !== void 0 ? { inputTokens: input_tokens } : {},
668
+ ...output_tokens !== void 0 ? { outputTokens: output_tokens } : {},
669
+ ...cached_input_tokens !== void 0 ? { cachedInputTokens: cached_input_tokens } : {},
670
+ ...cache_creation_input_tokens !== void 0 ? { cacheCreationInputTokens: cache_creation_input_tokens } : {},
671
+ ...reasoning_tokens !== void 0 ? { reasoningTokens: reasoning_tokens } : {},
672
+ ...request_count !== void 0 ? { requestCount: request_count } : {}
673
+ })
674
+ )
675
+ )
676
+ })
677
+ )
678
+ );
679
+
680
+ // src/gateway-generation-info.ts
681
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
682
+ var import_v46 = require("zod/v4");
683
+ var GatewayGenerationInfoFetcher = class {
684
+ constructor(config) {
685
+ this.config = config;
686
+ }
687
+ async getGenerationInfo(params) {
688
+ try {
689
+ const baseUrl = new URL(this.config.baseURL);
690
+ const { value } = await (0, import_provider_utils6.getFromApi)({
691
+ url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,
692
+ headers: await (0, import_provider_utils6.resolve)(this.config.headers()),
693
+ successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
694
+ gatewayGenerationInfoResponseSchema
695
+ ),
696
+ failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
697
+ errorSchema: import_v46.z.any(),
698
+ errorToMessage: (data) => data
699
+ }),
700
+ fetch: this.config.fetch
701
+ });
702
+ return value;
703
+ } catch (error) {
704
+ throw await asGatewayError(error);
705
+ }
706
+ }
707
+ };
708
+ var gatewayGenerationInfoResponseSchema = (0, import_provider_utils6.lazySchema)(
709
+ () => (0, import_provider_utils6.zodSchema)(
710
+ import_v46.z.object({
711
+ data: import_v46.z.object({
712
+ id: import_v46.z.string(),
713
+ total_cost: import_v46.z.number(),
714
+ upstream_inference_cost: import_v46.z.number(),
715
+ usage: import_v46.z.number(),
716
+ created_at: import_v46.z.string(),
717
+ model: import_v46.z.string(),
718
+ is_byok: import_v46.z.boolean(),
719
+ provider_name: import_v46.z.string(),
720
+ streamed: import_v46.z.boolean(),
721
+ finish_reason: import_v46.z.string(),
722
+ latency: import_v46.z.number(),
723
+ generation_time: import_v46.z.number(),
724
+ native_tokens_prompt: import_v46.z.number(),
725
+ native_tokens_completion: import_v46.z.number(),
726
+ native_tokens_reasoning: import_v46.z.number(),
727
+ native_tokens_cached: import_v46.z.number(),
728
+ native_tokens_cache_creation: import_v46.z.number(),
729
+ billable_web_search_calls: import_v46.z.number()
730
+ }).transform(
731
+ ({
732
+ total_cost,
733
+ upstream_inference_cost,
734
+ created_at,
735
+ is_byok,
736
+ provider_name,
737
+ finish_reason,
738
+ generation_time,
739
+ native_tokens_prompt,
740
+ native_tokens_completion,
741
+ native_tokens_reasoning,
742
+ native_tokens_cached,
743
+ native_tokens_cache_creation,
744
+ billable_web_search_calls,
745
+ ...rest
746
+ }) => ({
747
+ ...rest,
748
+ totalCost: total_cost,
749
+ upstreamInferenceCost: upstream_inference_cost,
750
+ createdAt: created_at,
751
+ isByok: is_byok,
752
+ providerName: provider_name,
753
+ finishReason: finish_reason,
754
+ generationTime: generation_time,
755
+ promptTokens: native_tokens_prompt,
756
+ completionTokens: native_tokens_completion,
757
+ reasoningTokens: native_tokens_reasoning,
758
+ cachedTokens: native_tokens_cached,
759
+ cacheCreationTokens: native_tokens_cache_creation,
760
+ billableWebSearchCalls: billable_web_search_calls
761
+ })
762
+ )
763
+ }).transform(({ data }) => data)
764
+ )
765
+ );
766
+
767
+ // src/gateway-language-model.ts
768
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
769
+ var import_v47 = require("zod/v4");
581
770
  var GatewayLanguageModel = class {
582
771
  constructor(modelId, config) {
583
772
  this.modelId = modelId;
584
773
  this.config = config;
585
- this.specificationVersion = "v3";
774
+ this.specificationVersion = "v4";
586
775
  this.supportedUrls = { "*/*": [/.*/] };
587
776
  }
588
777
  get provider() {
@@ -598,24 +787,24 @@ var GatewayLanguageModel = class {
598
787
  async doGenerate(options) {
599
788
  const { args, warnings } = await this.getArgs(options);
600
789
  const { abortSignal } = options;
601
- const resolvedHeaders = await (0, import_provider_utils5.resolve)(this.config.headers());
790
+ const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
602
791
  try {
603
792
  const {
604
793
  responseHeaders,
605
794
  value: responseBody,
606
795
  rawValue: rawResponse
607
- } = await (0, import_provider_utils5.postJsonToApi)({
796
+ } = await (0, import_provider_utils7.postJsonToApi)({
608
797
  url: this.getUrl(),
609
- headers: (0, import_provider_utils5.combineHeaders)(
798
+ headers: (0, import_provider_utils7.combineHeaders)(
610
799
  resolvedHeaders,
611
800
  options.headers,
612
801
  this.getModelConfigHeaders(this.modelId, false),
613
- await (0, import_provider_utils5.resolve)(this.config.o11yHeaders)
802
+ await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
614
803
  ),
615
804
  body: args,
616
- successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(import_v45.z.any()),
617
- failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
618
- errorSchema: import_v45.z.any(),
805
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(import_v47.z.any()),
806
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
807
+ errorSchema: import_v47.z.any(),
619
808
  errorToMessage: (data) => data
620
809
  }),
621
810
  ...abortSignal && { abortSignal },
@@ -634,20 +823,20 @@ var GatewayLanguageModel = class {
634
823
  async doStream(options) {
635
824
  const { args, warnings } = await this.getArgs(options);
636
825
  const { abortSignal } = options;
637
- const resolvedHeaders = await (0, import_provider_utils5.resolve)(this.config.headers());
826
+ const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
638
827
  try {
639
- const { value: response, responseHeaders } = await (0, import_provider_utils5.postJsonToApi)({
828
+ const { value: response, responseHeaders } = await (0, import_provider_utils7.postJsonToApi)({
640
829
  url: this.getUrl(),
641
- headers: (0, import_provider_utils5.combineHeaders)(
830
+ headers: (0, import_provider_utils7.combineHeaders)(
642
831
  resolvedHeaders,
643
832
  options.headers,
644
833
  this.getModelConfigHeaders(this.modelId, true),
645
- await (0, import_provider_utils5.resolve)(this.config.o11yHeaders)
834
+ await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
646
835
  ),
647
836
  body: args,
648
- successfulResponseHandler: (0, import_provider_utils5.createEventSourceResponseHandler)(import_v45.z.any()),
649
- failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)({
650
- errorSchema: import_v45.z.any(),
837
+ successfulResponseHandler: (0, import_provider_utils7.createEventSourceResponseHandler)(import_v47.z.any()),
838
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
839
+ errorSchema: import_v47.z.any(),
651
840
  errorToMessage: (data) => data
652
841
  }),
653
842
  ...abortSignal && { abortSignal },
@@ -717,7 +906,7 @@ var GatewayLanguageModel = class {
717
906
  }
718
907
  getModelConfigHeaders(modelId, streaming) {
719
908
  return {
720
- "ai-language-model-specification-version": "3",
909
+ "ai-language-model-specification-version": "4",
721
910
  "ai-language-model-id": modelId,
722
911
  "ai-language-model-streaming": String(streaming)
723
912
  };
@@ -725,13 +914,13 @@ var GatewayLanguageModel = class {
725
914
  };
726
915
 
727
916
  // src/gateway-embedding-model.ts
728
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
729
- var import_v46 = require("zod/v4");
917
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
918
+ var import_v48 = require("zod/v4");
730
919
  var GatewayEmbeddingModel = class {
731
920
  constructor(modelId, config) {
732
921
  this.modelId = modelId;
733
922
  this.config = config;
734
- this.specificationVersion = "v3";
923
+ this.specificationVersion = "v4";
735
924
  this.maxEmbeddingsPerCall = 2048;
736
925
  this.supportsParallelCalls = true;
737
926
  }
@@ -745,29 +934,29 @@ var GatewayEmbeddingModel = class {
745
934
  providerOptions
746
935
  }) {
747
936
  var _a9;
748
- const resolvedHeaders = await (0, import_provider_utils6.resolve)(this.config.headers());
937
+ const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
749
938
  try {
750
939
  const {
751
940
  responseHeaders,
752
941
  value: responseBody,
753
942
  rawValue
754
- } = await (0, import_provider_utils6.postJsonToApi)({
943
+ } = await (0, import_provider_utils8.postJsonToApi)({
755
944
  url: this.getUrl(),
756
- headers: (0, import_provider_utils6.combineHeaders)(
945
+ headers: (0, import_provider_utils8.combineHeaders)(
757
946
  resolvedHeaders,
758
947
  headers != null ? headers : {},
759
948
  this.getModelConfigHeaders(),
760
- await (0, import_provider_utils6.resolve)(this.config.o11yHeaders)
949
+ await (0, import_provider_utils8.resolve)(this.config.o11yHeaders)
761
950
  ),
762
951
  body: {
763
952
  values,
764
953
  ...providerOptions ? { providerOptions } : {}
765
954
  },
766
- successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
955
+ successfulResponseHandler: (0, import_provider_utils8.createJsonResponseHandler)(
767
956
  gatewayEmbeddingResponseSchema
768
957
  ),
769
- failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
770
- errorSchema: import_v46.z.any(),
958
+ failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
959
+ errorSchema: import_v48.z.any(),
771
960
  errorToMessage: (data) => data
772
961
  }),
773
962
  ...abortSignal && { abortSignal },
@@ -789,29 +978,29 @@ var GatewayEmbeddingModel = class {
789
978
  }
790
979
  getModelConfigHeaders() {
791
980
  return {
792
- "ai-embedding-model-specification-version": "3",
981
+ "ai-embedding-model-specification-version": "4",
793
982
  "ai-model-id": this.modelId
794
983
  };
795
984
  }
796
985
  };
797
- var gatewayEmbeddingResponseSchema = (0, import_provider_utils6.lazySchema)(
798
- () => (0, import_provider_utils6.zodSchema)(
799
- import_v46.z.object({
800
- embeddings: import_v46.z.array(import_v46.z.array(import_v46.z.number())),
801
- usage: import_v46.z.object({ tokens: import_v46.z.number() }).nullish(),
802
- providerMetadata: import_v46.z.record(import_v46.z.string(), import_v46.z.record(import_v46.z.string(), import_v46.z.unknown())).optional()
986
+ var gatewayEmbeddingResponseSchema = (0, import_provider_utils8.lazySchema)(
987
+ () => (0, import_provider_utils8.zodSchema)(
988
+ import_v48.z.object({
989
+ embeddings: import_v48.z.array(import_v48.z.array(import_v48.z.number())),
990
+ usage: import_v48.z.object({ tokens: import_v48.z.number() }).nullish(),
991
+ providerMetadata: import_v48.z.record(import_v48.z.string(), import_v48.z.record(import_v48.z.string(), import_v48.z.unknown())).optional()
803
992
  })
804
993
  )
805
994
  );
806
995
 
807
996
  // src/gateway-image-model.ts
808
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
809
- var import_v47 = require("zod/v4");
997
+ var import_provider_utils9 = require("@ai-sdk/provider-utils");
998
+ var import_v49 = require("zod/v4");
810
999
  var GatewayImageModel = class {
811
1000
  constructor(modelId, config) {
812
1001
  this.modelId = modelId;
813
1002
  this.config = config;
814
- this.specificationVersion = "v3";
1003
+ this.specificationVersion = "v4";
815
1004
  // Set a very large number to prevent client-side splitting of requests
816
1005
  this.maxImagesPerCall = Number.MAX_SAFE_INTEGER;
817
1006
  }
@@ -831,19 +1020,19 @@ var GatewayImageModel = class {
831
1020
  abortSignal
832
1021
  }) {
833
1022
  var _a9, _b9, _c, _d;
834
- const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
1023
+ const resolvedHeaders = await (0, import_provider_utils9.resolve)(this.config.headers());
835
1024
  try {
836
1025
  const {
837
1026
  responseHeaders,
838
1027
  value: responseBody,
839
1028
  rawValue
840
- } = await (0, import_provider_utils7.postJsonToApi)({
1029
+ } = await (0, import_provider_utils9.postJsonToApi)({
841
1030
  url: this.getUrl(),
842
- headers: (0, import_provider_utils7.combineHeaders)(
1031
+ headers: (0, import_provider_utils9.combineHeaders)(
843
1032
  resolvedHeaders,
844
1033
  headers != null ? headers : {},
845
1034
  this.getModelConfigHeaders(),
846
- await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
1035
+ await (0, import_provider_utils9.resolve)(this.config.o11yHeaders)
847
1036
  ),
848
1037
  body: {
849
1038
  prompt,
@@ -857,11 +1046,11 @@ var GatewayImageModel = class {
857
1046
  },
858
1047
  ...mask && { mask: maybeEncodeImageFile(mask) }
859
1048
  },
860
- successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1049
+ successfulResponseHandler: (0, import_provider_utils9.createJsonResponseHandler)(
861
1050
  gatewayImageResponseSchema
862
1051
  ),
863
- failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
864
- errorSchema: import_v47.z.any(),
1052
+ failedResponseHandler: (0, import_provider_utils9.createJsonErrorResponseHandler)({
1053
+ errorSchema: import_v49.z.any(),
865
1054
  errorToMessage: (data) => data
866
1055
  }),
867
1056
  ...abortSignal && { abortSignal },
@@ -894,7 +1083,7 @@ var GatewayImageModel = class {
894
1083
  }
895
1084
  getModelConfigHeaders() {
896
1085
  return {
897
- "ai-image-model-specification-version": "3",
1086
+ "ai-image-model-specification-version": "4",
898
1087
  "ai-model-id": this.modelId
899
1088
  };
900
1089
  }
@@ -903,52 +1092,52 @@ function maybeEncodeImageFile(file) {
903
1092
  if (file.type === "file" && file.data instanceof Uint8Array) {
904
1093
  return {
905
1094
  ...file,
906
- data: (0, import_provider_utils7.convertUint8ArrayToBase64)(file.data)
1095
+ data: (0, import_provider_utils9.convertUint8ArrayToBase64)(file.data)
907
1096
  };
908
1097
  }
909
1098
  return file;
910
1099
  }
911
- var providerMetadataEntrySchema = import_v47.z.object({
912
- images: import_v47.z.array(import_v47.z.unknown()).optional()
913
- }).catchall(import_v47.z.unknown());
914
- var gatewayImageWarningSchema = import_v47.z.discriminatedUnion("type", [
915
- import_v47.z.object({
916
- type: import_v47.z.literal("unsupported"),
917
- feature: import_v47.z.string(),
918
- details: import_v47.z.string().optional()
1100
+ var providerMetadataEntrySchema = import_v49.z.object({
1101
+ images: import_v49.z.array(import_v49.z.unknown()).optional()
1102
+ }).catchall(import_v49.z.unknown());
1103
+ var gatewayImageWarningSchema = import_v49.z.discriminatedUnion("type", [
1104
+ import_v49.z.object({
1105
+ type: import_v49.z.literal("unsupported"),
1106
+ feature: import_v49.z.string(),
1107
+ details: import_v49.z.string().optional()
919
1108
  }),
920
- import_v47.z.object({
921
- type: import_v47.z.literal("compatibility"),
922
- feature: import_v47.z.string(),
923
- details: import_v47.z.string().optional()
1109
+ import_v49.z.object({
1110
+ type: import_v49.z.literal("compatibility"),
1111
+ feature: import_v49.z.string(),
1112
+ details: import_v49.z.string().optional()
924
1113
  }),
925
- import_v47.z.object({
926
- type: import_v47.z.literal("other"),
927
- message: import_v47.z.string()
1114
+ import_v49.z.object({
1115
+ type: import_v49.z.literal("other"),
1116
+ message: import_v49.z.string()
928
1117
  })
929
1118
  ]);
930
- var gatewayImageUsageSchema = import_v47.z.object({
931
- inputTokens: import_v47.z.number().nullish(),
932
- outputTokens: import_v47.z.number().nullish(),
933
- totalTokens: import_v47.z.number().nullish()
1119
+ var gatewayImageUsageSchema = import_v49.z.object({
1120
+ inputTokens: import_v49.z.number().nullish(),
1121
+ outputTokens: import_v49.z.number().nullish(),
1122
+ totalTokens: import_v49.z.number().nullish()
934
1123
  });
935
- var gatewayImageResponseSchema = import_v47.z.object({
936
- images: import_v47.z.array(import_v47.z.string()),
1124
+ var gatewayImageResponseSchema = import_v49.z.object({
1125
+ images: import_v49.z.array(import_v49.z.string()),
937
1126
  // Always base64 strings over the wire
938
- warnings: import_v47.z.array(gatewayImageWarningSchema).optional(),
939
- providerMetadata: import_v47.z.record(import_v47.z.string(), providerMetadataEntrySchema).optional(),
1127
+ warnings: import_v49.z.array(gatewayImageWarningSchema).optional(),
1128
+ providerMetadata: import_v49.z.record(import_v49.z.string(), providerMetadataEntrySchema).optional(),
940
1129
  usage: gatewayImageUsageSchema.optional()
941
1130
  });
942
1131
 
943
1132
  // src/gateway-video-model.ts
944
1133
  var import_provider2 = require("@ai-sdk/provider");
945
- var import_provider_utils8 = require("@ai-sdk/provider-utils");
946
- var import_v48 = require("zod/v4");
1134
+ var import_provider_utils10 = require("@ai-sdk/provider-utils");
1135
+ var import_v410 = require("zod/v4");
947
1136
  var GatewayVideoModel = class {
948
1137
  constructor(modelId, config) {
949
1138
  this.modelId = modelId;
950
1139
  this.config = config;
951
- this.specificationVersion = "v3";
1140
+ this.specificationVersion = "v4";
952
1141
  // Set a very large number to prevent client-side splitting of requests
953
1142
  this.maxVideosPerCall = Number.MAX_SAFE_INTEGER;
954
1143
  }
@@ -969,15 +1158,15 @@ var GatewayVideoModel = class {
969
1158
  abortSignal
970
1159
  }) {
971
1160
  var _a9;
972
- const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
1161
+ const resolvedHeaders = await (0, import_provider_utils10.resolve)(this.config.headers());
973
1162
  try {
974
- const { responseHeaders, value: responseBody } = await (0, import_provider_utils8.postJsonToApi)({
1163
+ const { responseHeaders, value: responseBody } = await (0, import_provider_utils10.postJsonToApi)({
975
1164
  url: this.getUrl(),
976
- headers: (0, import_provider_utils8.combineHeaders)(
1165
+ headers: (0, import_provider_utils10.combineHeaders)(
977
1166
  resolvedHeaders,
978
1167
  headers != null ? headers : {},
979
1168
  this.getModelConfigHeaders(),
980
- await (0, import_provider_utils8.resolve)(this.config.o11yHeaders),
1169
+ await (0, import_provider_utils10.resolve)(this.config.o11yHeaders),
981
1170
  { accept: "text/event-stream" }
982
1171
  ),
983
1172
  body: {
@@ -1004,7 +1193,7 @@ var GatewayVideoModel = class {
1004
1193
  statusCode: response.status
1005
1194
  });
1006
1195
  }
1007
- const eventStream = (0, import_provider_utils8.parseJsonEventStream)({
1196
+ const eventStream = (0, import_provider_utils10.parseJsonEventStream)({
1008
1197
  stream: response.body,
1009
1198
  schema: gatewayVideoEventSchema
1010
1199
  });
@@ -1055,8 +1244,8 @@ var GatewayVideoModel = class {
1055
1244
  responseHeaders: Object.fromEntries([...response.headers])
1056
1245
  };
1057
1246
  },
1058
- failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
1059
- errorSchema: import_v48.z.any(),
1247
+ failedResponseHandler: (0, import_provider_utils10.createJsonErrorResponseHandler)({
1248
+ errorSchema: import_v410.z.any(),
1060
1249
  errorToMessage: (data) => data
1061
1250
  }),
1062
1251
  ...abortSignal && { abortSignal },
@@ -1081,7 +1270,7 @@ var GatewayVideoModel = class {
1081
1270
  }
1082
1271
  getModelConfigHeaders() {
1083
1272
  return {
1084
- "ai-video-model-specification-version": "3",
1273
+ "ai-video-model-specification-version": "4",
1085
1274
  "ai-model-id": this.modelId
1086
1275
  };
1087
1276
  }
@@ -1090,63 +1279,63 @@ function maybeEncodeVideoFile(file) {
1090
1279
  if (file.type === "file" && file.data instanceof Uint8Array) {
1091
1280
  return {
1092
1281
  ...file,
1093
- data: (0, import_provider_utils8.convertUint8ArrayToBase64)(file.data)
1282
+ data: (0, import_provider_utils10.convertUint8ArrayToBase64)(file.data)
1094
1283
  };
1095
1284
  }
1096
1285
  return file;
1097
1286
  }
1098
- var providerMetadataEntrySchema2 = import_v48.z.object({
1099
- videos: import_v48.z.array(import_v48.z.unknown()).optional()
1100
- }).catchall(import_v48.z.unknown());
1101
- var gatewayVideoDataSchema = import_v48.z.union([
1102
- import_v48.z.object({
1103
- type: import_v48.z.literal("url"),
1104
- url: import_v48.z.string(),
1105
- mediaType: import_v48.z.string()
1287
+ var providerMetadataEntrySchema2 = import_v410.z.object({
1288
+ videos: import_v410.z.array(import_v410.z.unknown()).optional()
1289
+ }).catchall(import_v410.z.unknown());
1290
+ var gatewayVideoDataSchema = import_v410.z.union([
1291
+ import_v410.z.object({
1292
+ type: import_v410.z.literal("url"),
1293
+ url: import_v410.z.string(),
1294
+ mediaType: import_v410.z.string()
1106
1295
  }),
1107
- import_v48.z.object({
1108
- type: import_v48.z.literal("base64"),
1109
- data: import_v48.z.string(),
1110
- mediaType: import_v48.z.string()
1296
+ import_v410.z.object({
1297
+ type: import_v410.z.literal("base64"),
1298
+ data: import_v410.z.string(),
1299
+ mediaType: import_v410.z.string()
1111
1300
  })
1112
1301
  ]);
1113
- var gatewayVideoWarningSchema = import_v48.z.discriminatedUnion("type", [
1114
- import_v48.z.object({
1115
- type: import_v48.z.literal("unsupported"),
1116
- feature: import_v48.z.string(),
1117
- details: import_v48.z.string().optional()
1302
+ var gatewayVideoWarningSchema = import_v410.z.discriminatedUnion("type", [
1303
+ import_v410.z.object({
1304
+ type: import_v410.z.literal("unsupported"),
1305
+ feature: import_v410.z.string(),
1306
+ details: import_v410.z.string().optional()
1118
1307
  }),
1119
- import_v48.z.object({
1120
- type: import_v48.z.literal("compatibility"),
1121
- feature: import_v48.z.string(),
1122
- details: import_v48.z.string().optional()
1308
+ import_v410.z.object({
1309
+ type: import_v410.z.literal("compatibility"),
1310
+ feature: import_v410.z.string(),
1311
+ details: import_v410.z.string().optional()
1123
1312
  }),
1124
- import_v48.z.object({
1125
- type: import_v48.z.literal("other"),
1126
- message: import_v48.z.string()
1313
+ import_v410.z.object({
1314
+ type: import_v410.z.literal("other"),
1315
+ message: import_v410.z.string()
1127
1316
  })
1128
1317
  ]);
1129
- var gatewayVideoEventSchema = import_v48.z.discriminatedUnion("type", [
1130
- import_v48.z.object({
1131
- type: import_v48.z.literal("result"),
1132
- videos: import_v48.z.array(gatewayVideoDataSchema),
1133
- warnings: import_v48.z.array(gatewayVideoWarningSchema).optional(),
1134
- providerMetadata: import_v48.z.record(import_v48.z.string(), providerMetadataEntrySchema2).optional()
1318
+ var gatewayVideoEventSchema = import_v410.z.discriminatedUnion("type", [
1319
+ import_v410.z.object({
1320
+ type: import_v410.z.literal("result"),
1321
+ videos: import_v410.z.array(gatewayVideoDataSchema),
1322
+ warnings: import_v410.z.array(gatewayVideoWarningSchema).optional(),
1323
+ providerMetadata: import_v410.z.record(import_v410.z.string(), providerMetadataEntrySchema2).optional()
1135
1324
  }),
1136
- import_v48.z.object({
1137
- type: import_v48.z.literal("error"),
1138
- message: import_v48.z.string(),
1139
- errorType: import_v48.z.string(),
1140
- statusCode: import_v48.z.number(),
1141
- param: import_v48.z.unknown().nullable()
1325
+ import_v410.z.object({
1326
+ type: import_v410.z.literal("error"),
1327
+ message: import_v410.z.string(),
1328
+ errorType: import_v410.z.string(),
1329
+ statusCode: import_v410.z.number(),
1330
+ param: import_v410.z.unknown().nullable()
1142
1331
  })
1143
1332
  ]);
1144
1333
 
1145
1334
  // src/tool/parallel-search.ts
1146
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
1335
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
1147
1336
  var import_zod = require("zod");
1148
- var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1149
- () => (0, import_provider_utils9.zodSchema)(
1337
+ var parallelSearchInputSchema = (0, import_provider_utils11.lazySchema)(
1338
+ () => (0, import_provider_utils11.zodSchema)(
1150
1339
  import_zod.z.object({
1151
1340
  objective: import_zod.z.string().describe(
1152
1341
  "Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters."
@@ -1181,8 +1370,8 @@ var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1181
1370
  })
1182
1371
  )
1183
1372
  );
1184
- var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1185
- () => (0, import_provider_utils9.zodSchema)(
1373
+ var parallelSearchOutputSchema = (0, import_provider_utils11.lazySchema)(
1374
+ () => (0, import_provider_utils11.zodSchema)(
1186
1375
  import_zod.z.union([
1187
1376
  // Success response
1188
1377
  import_zod.z.object({
@@ -1213,7 +1402,7 @@ var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1213
1402
  ])
1214
1403
  )
1215
1404
  );
1216
- var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFactoryWithOutputSchema)({
1405
+ var parallelSearchToolFactory = (0, import_provider_utils11.createProviderToolFactoryWithOutputSchema)({
1217
1406
  id: "gateway.parallel_search",
1218
1407
  inputSchema: parallelSearchInputSchema,
1219
1408
  outputSchema: parallelSearchOutputSchema
@@ -1221,10 +1410,10 @@ var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFac
1221
1410
  var parallelSearch = (config = {}) => parallelSearchToolFactory(config);
1222
1411
 
1223
1412
  // src/tool/perplexity-search.ts
1224
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
1413
+ var import_provider_utils12 = require("@ai-sdk/provider-utils");
1225
1414
  var import_zod2 = require("zod");
1226
- var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1227
- () => (0, import_provider_utils10.zodSchema)(
1415
+ var perplexitySearchInputSchema = (0, import_provider_utils12.lazySchema)(
1416
+ () => (0, import_provider_utils12.zodSchema)(
1228
1417
  import_zod2.z.object({
1229
1418
  query: import_zod2.z.union([import_zod2.z.string(), import_zod2.z.array(import_zod2.z.string())]).describe(
1230
1419
  "Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."
@@ -1265,8 +1454,8 @@ var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1265
1454
  })
1266
1455
  )
1267
1456
  );
1268
- var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1269
- () => (0, import_provider_utils10.zodSchema)(
1457
+ var perplexitySearchOutputSchema = (0, import_provider_utils12.lazySchema)(
1458
+ () => (0, import_provider_utils12.zodSchema)(
1270
1459
  import_zod2.z.union([
1271
1460
  // Success response
1272
1461
  import_zod2.z.object({
@@ -1296,7 +1485,7 @@ var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1296
1485
  ])
1297
1486
  )
1298
1487
  );
1299
- var perplexitySearchToolFactory = (0, import_provider_utils10.createProviderToolFactoryWithOutputSchema)({
1488
+ var perplexitySearchToolFactory = (0, import_provider_utils12.createProviderToolFactoryWithOutputSchema)({
1300
1489
  id: "gateway.perplexity_search",
1301
1490
  inputSchema: perplexitySearchInputSchema,
1302
1491
  outputSchema: perplexitySearchOutputSchema
@@ -1333,10 +1522,10 @@ async function getVercelRequestId() {
1333
1522
  }
1334
1523
 
1335
1524
  // src/gateway-provider.ts
1336
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
1525
+ var import_provider_utils14 = require("@ai-sdk/provider-utils");
1337
1526
 
1338
1527
  // src/version.ts
1339
- var VERSION = true ? "4.0.0-beta.3" : "0.0.0-test";
1528
+ var VERSION = true ? "4.0.0-beta.31" : "0.0.0-test";
1340
1529
 
1341
1530
  // src/gateway-provider.ts
1342
1531
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
@@ -1346,11 +1535,11 @@ function createGatewayProvider(options = {}) {
1346
1535
  let metadataCache = null;
1347
1536
  const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
1348
1537
  let lastFetchTime = 0;
1349
- const baseURL = (_b9 = (0, import_provider_utils11.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1538
+ const baseURL = (_b9 = (0, import_provider_utils13.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1350
1539
  const getHeaders = async () => {
1351
1540
  try {
1352
1541
  const auth = await getGatewayAuthToken(options);
1353
- return (0, import_provider_utils12.withUserAgentSuffix)(
1542
+ return (0, import_provider_utils14.withUserAgentSuffix)(
1354
1543
  {
1355
1544
  Authorization: `Bearer ${auth.token}`,
1356
1545
  "ai-gateway-protocol-version": AI_GATEWAY_PROTOCOL_VERSION,
@@ -1369,19 +1558,19 @@ function createGatewayProvider(options = {}) {
1369
1558
  }
1370
1559
  };
1371
1560
  const createO11yHeaders = () => {
1372
- const deploymentId = (0, import_provider_utils11.loadOptionalSetting)({
1561
+ const deploymentId = (0, import_provider_utils13.loadOptionalSetting)({
1373
1562
  settingValue: void 0,
1374
1563
  environmentVariableName: "VERCEL_DEPLOYMENT_ID"
1375
1564
  });
1376
- const environment = (0, import_provider_utils11.loadOptionalSetting)({
1565
+ const environment = (0, import_provider_utils13.loadOptionalSetting)({
1377
1566
  settingValue: void 0,
1378
1567
  environmentVariableName: "VERCEL_ENV"
1379
1568
  });
1380
- const region = (0, import_provider_utils11.loadOptionalSetting)({
1569
+ const region = (0, import_provider_utils13.loadOptionalSetting)({
1381
1570
  settingValue: void 0,
1382
1571
  environmentVariableName: "VERCEL_REGION"
1383
1572
  });
1384
- const projectId = (0, import_provider_utils11.loadOptionalSetting)({
1573
+ const projectId = (0, import_provider_utils13.loadOptionalSetting)({
1385
1574
  settingValue: void 0,
1386
1575
  environmentVariableName: "VERCEL_PROJECT_ID"
1387
1576
  });
@@ -1438,6 +1627,30 @@ function createGatewayProvider(options = {}) {
1438
1627
  );
1439
1628
  });
1440
1629
  };
1630
+ const getSpendReport = async (params) => {
1631
+ return new GatewaySpendReport({
1632
+ baseURL,
1633
+ headers: getHeaders,
1634
+ fetch: options.fetch
1635
+ }).getSpendReport(params).catch(async (error) => {
1636
+ throw await asGatewayError(
1637
+ error,
1638
+ await parseAuthMethod(await getHeaders())
1639
+ );
1640
+ });
1641
+ };
1642
+ const getGenerationInfo = async (params) => {
1643
+ return new GatewayGenerationInfoFetcher({
1644
+ baseURL,
1645
+ headers: getHeaders,
1646
+ fetch: options.fetch
1647
+ }).getGenerationInfo(params).catch(async (error) => {
1648
+ throw await asGatewayError(
1649
+ error,
1650
+ await parseAuthMethod(await getHeaders())
1651
+ );
1652
+ });
1653
+ };
1441
1654
  const provider = function(modelId) {
1442
1655
  if (new.target) {
1443
1656
  throw new Error(
@@ -1446,9 +1659,11 @@ function createGatewayProvider(options = {}) {
1446
1659
  }
1447
1660
  return createLanguageModel(modelId);
1448
1661
  };
1449
- provider.specificationVersion = "v3";
1662
+ provider.specificationVersion = "v4";
1450
1663
  provider.getAvailableModels = getAvailableModels;
1451
1664
  provider.getCredits = getCredits;
1665
+ provider.getSpendReport = getSpendReport;
1666
+ provider.getGenerationInfo = getGenerationInfo;
1452
1667
  provider.imageModel = (modelId) => {
1453
1668
  return new GatewayImageModel(modelId, {
1454
1669
  provider: "gateway",
@@ -1488,7 +1703,7 @@ function createGatewayProvider(options = {}) {
1488
1703
  }
1489
1704
  var gateway = createGatewayProvider();
1490
1705
  async function getGatewayAuthToken(options) {
1491
- const apiKey = (0, import_provider_utils11.loadOptionalSetting)({
1706
+ const apiKey = (0, import_provider_utils13.loadOptionalSetting)({
1492
1707
  settingValue: options.apiKey,
1493
1708
  environmentVariableName: "AI_GATEWAY_API_KEY"
1494
1709
  });