@ai-sdk/gateway 4.0.0-beta.4 → 4.0.0-beta.41

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_utils14 = 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,147 @@ 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
 
1334
+ // src/gateway-reranking-model.ts
1335
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
1336
+ var import_v411 = require("zod/v4");
1337
+ var GatewayRerankingModel = class {
1338
+ constructor(modelId, config) {
1339
+ this.modelId = modelId;
1340
+ this.config = config;
1341
+ this.specificationVersion = "v4";
1342
+ }
1343
+ get provider() {
1344
+ return this.config.provider;
1345
+ }
1346
+ async doRerank({
1347
+ documents,
1348
+ query,
1349
+ topN,
1350
+ headers,
1351
+ abortSignal,
1352
+ providerOptions
1353
+ }) {
1354
+ const resolvedHeaders = await (0, import_provider_utils11.resolve)(this.config.headers());
1355
+ try {
1356
+ const {
1357
+ responseHeaders,
1358
+ value: responseBody,
1359
+ rawValue
1360
+ } = await (0, import_provider_utils11.postJsonToApi)({
1361
+ url: this.getUrl(),
1362
+ headers: (0, import_provider_utils11.combineHeaders)(
1363
+ resolvedHeaders,
1364
+ headers != null ? headers : {},
1365
+ this.getModelConfigHeaders(),
1366
+ await (0, import_provider_utils11.resolve)(this.config.o11yHeaders)
1367
+ ),
1368
+ body: {
1369
+ documents,
1370
+ query,
1371
+ ...topN != null ? { topN } : {},
1372
+ ...providerOptions ? { providerOptions } : {}
1373
+ },
1374
+ successfulResponseHandler: (0, import_provider_utils11.createJsonResponseHandler)(
1375
+ gatewayRerankingResponseSchema
1376
+ ),
1377
+ failedResponseHandler: (0, import_provider_utils11.createJsonErrorResponseHandler)({
1378
+ errorSchema: import_v411.z.any(),
1379
+ errorToMessage: (data) => data
1380
+ }),
1381
+ ...abortSignal && { abortSignal },
1382
+ fetch: this.config.fetch
1383
+ });
1384
+ return {
1385
+ ranking: responseBody.ranking,
1386
+ providerMetadata: responseBody.providerMetadata,
1387
+ response: { headers: responseHeaders, body: rawValue },
1388
+ warnings: []
1389
+ };
1390
+ } catch (error) {
1391
+ throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
1392
+ }
1393
+ }
1394
+ getUrl() {
1395
+ return `${this.config.baseURL}/reranking-model`;
1396
+ }
1397
+ getModelConfigHeaders() {
1398
+ return {
1399
+ "ai-reranking-model-specification-version": "4",
1400
+ "ai-model-id": this.modelId
1401
+ };
1402
+ }
1403
+ };
1404
+ var gatewayRerankingResponseSchema = (0, import_provider_utils11.lazySchema)(
1405
+ () => (0, import_provider_utils11.zodSchema)(
1406
+ import_v411.z.object({
1407
+ ranking: import_v411.z.array(
1408
+ import_v411.z.object({
1409
+ index: import_v411.z.number(),
1410
+ relevanceScore: import_v411.z.number()
1411
+ })
1412
+ ),
1413
+ providerMetadata: import_v411.z.record(import_v411.z.string(), import_v411.z.record(import_v411.z.string(), import_v411.z.unknown())).optional()
1414
+ })
1415
+ )
1416
+ );
1417
+
1145
1418
  // src/tool/parallel-search.ts
1146
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
1419
+ var import_provider_utils12 = require("@ai-sdk/provider-utils");
1147
1420
  var import_zod = require("zod");
1148
- var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1149
- () => (0, import_provider_utils9.zodSchema)(
1421
+ var parallelSearchInputSchema = (0, import_provider_utils12.lazySchema)(
1422
+ () => (0, import_provider_utils12.zodSchema)(
1150
1423
  import_zod.z.object({
1151
1424
  objective: import_zod.z.string().describe(
1152
1425
  "Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters."
@@ -1181,8 +1454,8 @@ var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1181
1454
  })
1182
1455
  )
1183
1456
  );
1184
- var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1185
- () => (0, import_provider_utils9.zodSchema)(
1457
+ var parallelSearchOutputSchema = (0, import_provider_utils12.lazySchema)(
1458
+ () => (0, import_provider_utils12.zodSchema)(
1186
1459
  import_zod.z.union([
1187
1460
  // Success response
1188
1461
  import_zod.z.object({
@@ -1213,7 +1486,7 @@ var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1213
1486
  ])
1214
1487
  )
1215
1488
  );
1216
- var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFactoryWithOutputSchema)({
1489
+ var parallelSearchToolFactory = (0, import_provider_utils12.createProviderToolFactoryWithOutputSchema)({
1217
1490
  id: "gateway.parallel_search",
1218
1491
  inputSchema: parallelSearchInputSchema,
1219
1492
  outputSchema: parallelSearchOutputSchema
@@ -1221,10 +1494,10 @@ var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFac
1221
1494
  var parallelSearch = (config = {}) => parallelSearchToolFactory(config);
1222
1495
 
1223
1496
  // src/tool/perplexity-search.ts
1224
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
1497
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
1225
1498
  var import_zod2 = require("zod");
1226
- var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1227
- () => (0, import_provider_utils10.zodSchema)(
1499
+ var perplexitySearchInputSchema = (0, import_provider_utils13.lazySchema)(
1500
+ () => (0, import_provider_utils13.zodSchema)(
1228
1501
  import_zod2.z.object({
1229
1502
  query: import_zod2.z.union([import_zod2.z.string(), import_zod2.z.array(import_zod2.z.string())]).describe(
1230
1503
  "Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."
@@ -1265,8 +1538,8 @@ var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1265
1538
  })
1266
1539
  )
1267
1540
  );
1268
- var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1269
- () => (0, import_provider_utils10.zodSchema)(
1541
+ var perplexitySearchOutputSchema = (0, import_provider_utils13.lazySchema)(
1542
+ () => (0, import_provider_utils13.zodSchema)(
1270
1543
  import_zod2.z.union([
1271
1544
  // Success response
1272
1545
  import_zod2.z.object({
@@ -1296,7 +1569,7 @@ var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1296
1569
  ])
1297
1570
  )
1298
1571
  );
1299
- var perplexitySearchToolFactory = (0, import_provider_utils10.createProviderToolFactoryWithOutputSchema)({
1572
+ var perplexitySearchToolFactory = (0, import_provider_utils13.createProviderToolFactoryWithOutputSchema)({
1300
1573
  id: "gateway.perplexity_search",
1301
1574
  inputSchema: perplexitySearchInputSchema,
1302
1575
  outputSchema: perplexitySearchOutputSchema
@@ -1333,10 +1606,10 @@ async function getVercelRequestId() {
1333
1606
  }
1334
1607
 
1335
1608
  // src/gateway-provider.ts
1336
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
1609
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
1337
1610
 
1338
1611
  // src/version.ts
1339
- var VERSION = true ? "4.0.0-beta.4" : "0.0.0-test";
1612
+ var VERSION = true ? "4.0.0-beta.41" : "0.0.0-test";
1340
1613
 
1341
1614
  // src/gateway-provider.ts
1342
1615
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
@@ -1346,11 +1619,11 @@ function createGatewayProvider(options = {}) {
1346
1619
  let metadataCache = null;
1347
1620
  const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
1348
1621
  let lastFetchTime = 0;
1349
- const baseURL = (_b9 = (0, import_provider_utils11.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1622
+ const baseURL = (_b9 = (0, import_provider_utils14.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1350
1623
  const getHeaders = async () => {
1351
1624
  try {
1352
1625
  const auth = await getGatewayAuthToken(options);
1353
- return (0, import_provider_utils12.withUserAgentSuffix)(
1626
+ return (0, import_provider_utils15.withUserAgentSuffix)(
1354
1627
  {
1355
1628
  Authorization: `Bearer ${auth.token}`,
1356
1629
  "ai-gateway-protocol-version": AI_GATEWAY_PROTOCOL_VERSION,
@@ -1369,19 +1642,19 @@ function createGatewayProvider(options = {}) {
1369
1642
  }
1370
1643
  };
1371
1644
  const createO11yHeaders = () => {
1372
- const deploymentId = (0, import_provider_utils11.loadOptionalSetting)({
1645
+ const deploymentId = (0, import_provider_utils14.loadOptionalSetting)({
1373
1646
  settingValue: void 0,
1374
1647
  environmentVariableName: "VERCEL_DEPLOYMENT_ID"
1375
1648
  });
1376
- const environment = (0, import_provider_utils11.loadOptionalSetting)({
1649
+ const environment = (0, import_provider_utils14.loadOptionalSetting)({
1377
1650
  settingValue: void 0,
1378
1651
  environmentVariableName: "VERCEL_ENV"
1379
1652
  });
1380
- const region = (0, import_provider_utils11.loadOptionalSetting)({
1653
+ const region = (0, import_provider_utils14.loadOptionalSetting)({
1381
1654
  settingValue: void 0,
1382
1655
  environmentVariableName: "VERCEL_REGION"
1383
1656
  });
1384
- const projectId = (0, import_provider_utils11.loadOptionalSetting)({
1657
+ const projectId = (0, import_provider_utils14.loadOptionalSetting)({
1385
1658
  settingValue: void 0,
1386
1659
  environmentVariableName: "VERCEL_PROJECT_ID"
1387
1660
  });
@@ -1438,6 +1711,30 @@ function createGatewayProvider(options = {}) {
1438
1711
  );
1439
1712
  });
1440
1713
  };
1714
+ const getSpendReport = async (params) => {
1715
+ return new GatewaySpendReport({
1716
+ baseURL,
1717
+ headers: getHeaders,
1718
+ fetch: options.fetch
1719
+ }).getSpendReport(params).catch(async (error) => {
1720
+ throw await asGatewayError(
1721
+ error,
1722
+ await parseAuthMethod(await getHeaders())
1723
+ );
1724
+ });
1725
+ };
1726
+ const getGenerationInfo = async (params) => {
1727
+ return new GatewayGenerationInfoFetcher({
1728
+ baseURL,
1729
+ headers: getHeaders,
1730
+ fetch: options.fetch
1731
+ }).getGenerationInfo(params).catch(async (error) => {
1732
+ throw await asGatewayError(
1733
+ error,
1734
+ await parseAuthMethod(await getHeaders())
1735
+ );
1736
+ });
1737
+ };
1441
1738
  const provider = function(modelId) {
1442
1739
  if (new.target) {
1443
1740
  throw new Error(
@@ -1446,9 +1743,11 @@ function createGatewayProvider(options = {}) {
1446
1743
  }
1447
1744
  return createLanguageModel(modelId);
1448
1745
  };
1449
- provider.specificationVersion = "v3";
1746
+ provider.specificationVersion = "v4";
1450
1747
  provider.getAvailableModels = getAvailableModels;
1451
1748
  provider.getCredits = getCredits;
1749
+ provider.getSpendReport = getSpendReport;
1750
+ provider.getGenerationInfo = getGenerationInfo;
1452
1751
  provider.imageModel = (modelId) => {
1453
1752
  return new GatewayImageModel(modelId, {
1454
1753
  provider: "gateway",
@@ -1479,6 +1778,17 @@ function createGatewayProvider(options = {}) {
1479
1778
  o11yHeaders: createO11yHeaders()
1480
1779
  });
1481
1780
  };
1781
+ const createRerankingModel = (modelId) => {
1782
+ return new GatewayRerankingModel(modelId, {
1783
+ provider: "gateway",
1784
+ baseURL,
1785
+ headers: getHeaders,
1786
+ fetch: options.fetch,
1787
+ o11yHeaders: createO11yHeaders()
1788
+ });
1789
+ };
1790
+ provider.rerankingModel = createRerankingModel;
1791
+ provider.reranking = createRerankingModel;
1482
1792
  provider.chat = provider.languageModel;
1483
1793
  provider.embedding = provider.embeddingModel;
1484
1794
  provider.image = provider.imageModel;
@@ -1488,7 +1798,7 @@ function createGatewayProvider(options = {}) {
1488
1798
  }
1489
1799
  var gateway = createGatewayProvider();
1490
1800
  async function getGatewayAuthToken(options) {
1491
- const apiKey = (0, import_provider_utils11.loadOptionalSetting)({
1801
+ const apiKey = (0, import_provider_utils14.loadOptionalSetting)({
1492
1802
  settingValue: options.apiKey,
1493
1803
  environmentVariableName: "AI_GATEWAY_API_KEY"
1494
1804
  });