@ai-sdk/gateway 4.0.0-beta.22 → 4.0.0-beta.24

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
@@ -34,7 +34,7 @@ __export(index_exports, {
34
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_utils12 = require("@ai-sdk/provider-utils");
38
38
 
39
39
  // src/errors/as-gateway-error.ts
40
40
  var import_provider = require("@ai-sdk/provider");
@@ -575,9 +575,111 @@ 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-language-model.ts
681
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
682
+ var import_v46 = require("zod/v4");
581
683
  var GatewayLanguageModel = class {
582
684
  constructor(modelId, config) {
583
685
  this.modelId = modelId;
@@ -598,24 +700,24 @@ var GatewayLanguageModel = class {
598
700
  async doGenerate(options) {
599
701
  const { args, warnings } = await this.getArgs(options);
600
702
  const { abortSignal } = options;
601
- const resolvedHeaders = await (0, import_provider_utils5.resolve)(this.config.headers());
703
+ const resolvedHeaders = await (0, import_provider_utils6.resolve)(this.config.headers());
602
704
  try {
603
705
  const {
604
706
  responseHeaders,
605
707
  value: responseBody,
606
708
  rawValue: rawResponse
607
- } = await (0, import_provider_utils5.postJsonToApi)({
709
+ } = await (0, import_provider_utils6.postJsonToApi)({
608
710
  url: this.getUrl(),
609
- headers: (0, import_provider_utils5.combineHeaders)(
711
+ headers: (0, import_provider_utils6.combineHeaders)(
610
712
  resolvedHeaders,
611
713
  options.headers,
612
714
  this.getModelConfigHeaders(this.modelId, false),
613
- await (0, import_provider_utils5.resolve)(this.config.o11yHeaders)
715
+ await (0, import_provider_utils6.resolve)(this.config.o11yHeaders)
614
716
  ),
615
717
  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(),
718
+ successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(import_v46.z.any()),
719
+ failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
720
+ errorSchema: import_v46.z.any(),
619
721
  errorToMessage: (data) => data
620
722
  }),
621
723
  ...abortSignal && { abortSignal },
@@ -634,20 +736,20 @@ var GatewayLanguageModel = class {
634
736
  async doStream(options) {
635
737
  const { args, warnings } = await this.getArgs(options);
636
738
  const { abortSignal } = options;
637
- const resolvedHeaders = await (0, import_provider_utils5.resolve)(this.config.headers());
739
+ const resolvedHeaders = await (0, import_provider_utils6.resolve)(this.config.headers());
638
740
  try {
639
- const { value: response, responseHeaders } = await (0, import_provider_utils5.postJsonToApi)({
741
+ const { value: response, responseHeaders } = await (0, import_provider_utils6.postJsonToApi)({
640
742
  url: this.getUrl(),
641
- headers: (0, import_provider_utils5.combineHeaders)(
743
+ headers: (0, import_provider_utils6.combineHeaders)(
642
744
  resolvedHeaders,
643
745
  options.headers,
644
746
  this.getModelConfigHeaders(this.modelId, true),
645
- await (0, import_provider_utils5.resolve)(this.config.o11yHeaders)
747
+ await (0, import_provider_utils6.resolve)(this.config.o11yHeaders)
646
748
  ),
647
749
  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(),
750
+ successfulResponseHandler: (0, import_provider_utils6.createEventSourceResponseHandler)(import_v46.z.any()),
751
+ failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
752
+ errorSchema: import_v46.z.any(),
651
753
  errorToMessage: (data) => data
652
754
  }),
653
755
  ...abortSignal && { abortSignal },
@@ -725,8 +827,8 @@ var GatewayLanguageModel = class {
725
827
  };
726
828
 
727
829
  // src/gateway-embedding-model.ts
728
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
729
- var import_v46 = require("zod/v4");
830
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
831
+ var import_v47 = require("zod/v4");
730
832
  var GatewayEmbeddingModel = class {
731
833
  constructor(modelId, config) {
732
834
  this.modelId = modelId;
@@ -745,29 +847,29 @@ var GatewayEmbeddingModel = class {
745
847
  providerOptions
746
848
  }) {
747
849
  var _a9;
748
- const resolvedHeaders = await (0, import_provider_utils6.resolve)(this.config.headers());
850
+ const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
749
851
  try {
750
852
  const {
751
853
  responseHeaders,
752
854
  value: responseBody,
753
855
  rawValue
754
- } = await (0, import_provider_utils6.postJsonToApi)({
856
+ } = await (0, import_provider_utils7.postJsonToApi)({
755
857
  url: this.getUrl(),
756
- headers: (0, import_provider_utils6.combineHeaders)(
858
+ headers: (0, import_provider_utils7.combineHeaders)(
757
859
  resolvedHeaders,
758
860
  headers != null ? headers : {},
759
861
  this.getModelConfigHeaders(),
760
- await (0, import_provider_utils6.resolve)(this.config.o11yHeaders)
862
+ await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
761
863
  ),
762
864
  body: {
763
865
  values,
764
866
  ...providerOptions ? { providerOptions } : {}
765
867
  },
766
- successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
868
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
767
869
  gatewayEmbeddingResponseSchema
768
870
  ),
769
- failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)({
770
- errorSchema: import_v46.z.any(),
871
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
872
+ errorSchema: import_v47.z.any(),
771
873
  errorToMessage: (data) => data
772
874
  }),
773
875
  ...abortSignal && { abortSignal },
@@ -794,19 +896,19 @@ var GatewayEmbeddingModel = class {
794
896
  };
795
897
  }
796
898
  };
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()
899
+ var gatewayEmbeddingResponseSchema = (0, import_provider_utils7.lazySchema)(
900
+ () => (0, import_provider_utils7.zodSchema)(
901
+ import_v47.z.object({
902
+ embeddings: import_v47.z.array(import_v47.z.array(import_v47.z.number())),
903
+ usage: import_v47.z.object({ tokens: import_v47.z.number() }).nullish(),
904
+ providerMetadata: import_v47.z.record(import_v47.z.string(), import_v47.z.record(import_v47.z.string(), import_v47.z.unknown())).optional()
803
905
  })
804
906
  )
805
907
  );
806
908
 
807
909
  // src/gateway-image-model.ts
808
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
809
- var import_v47 = require("zod/v4");
910
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
911
+ var import_v48 = require("zod/v4");
810
912
  var GatewayImageModel = class {
811
913
  constructor(modelId, config) {
812
914
  this.modelId = modelId;
@@ -831,19 +933,19 @@ var GatewayImageModel = class {
831
933
  abortSignal
832
934
  }) {
833
935
  var _a9, _b9, _c, _d;
834
- const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
936
+ const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
835
937
  try {
836
938
  const {
837
939
  responseHeaders,
838
940
  value: responseBody,
839
941
  rawValue
840
- } = await (0, import_provider_utils7.postJsonToApi)({
942
+ } = await (0, import_provider_utils8.postJsonToApi)({
841
943
  url: this.getUrl(),
842
- headers: (0, import_provider_utils7.combineHeaders)(
944
+ headers: (0, import_provider_utils8.combineHeaders)(
843
945
  resolvedHeaders,
844
946
  headers != null ? headers : {},
845
947
  this.getModelConfigHeaders(),
846
- await (0, import_provider_utils7.resolve)(this.config.o11yHeaders)
948
+ await (0, import_provider_utils8.resolve)(this.config.o11yHeaders)
847
949
  ),
848
950
  body: {
849
951
  prompt,
@@ -857,11 +959,11 @@ var GatewayImageModel = class {
857
959
  },
858
960
  ...mask && { mask: maybeEncodeImageFile(mask) }
859
961
  },
860
- successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
962
+ successfulResponseHandler: (0, import_provider_utils8.createJsonResponseHandler)(
861
963
  gatewayImageResponseSchema
862
964
  ),
863
- failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)({
864
- errorSchema: import_v47.z.any(),
965
+ failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
966
+ errorSchema: import_v48.z.any(),
865
967
  errorToMessage: (data) => data
866
968
  }),
867
969
  ...abortSignal && { abortSignal },
@@ -903,47 +1005,47 @@ function maybeEncodeImageFile(file) {
903
1005
  if (file.type === "file" && file.data instanceof Uint8Array) {
904
1006
  return {
905
1007
  ...file,
906
- data: (0, import_provider_utils7.convertUint8ArrayToBase64)(file.data)
1008
+ data: (0, import_provider_utils8.convertUint8ArrayToBase64)(file.data)
907
1009
  };
908
1010
  }
909
1011
  return file;
910
1012
  }
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()
1013
+ var providerMetadataEntrySchema = import_v48.z.object({
1014
+ images: import_v48.z.array(import_v48.z.unknown()).optional()
1015
+ }).catchall(import_v48.z.unknown());
1016
+ var gatewayImageWarningSchema = import_v48.z.discriminatedUnion("type", [
1017
+ import_v48.z.object({
1018
+ type: import_v48.z.literal("unsupported"),
1019
+ feature: import_v48.z.string(),
1020
+ details: import_v48.z.string().optional()
919
1021
  }),
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()
1022
+ import_v48.z.object({
1023
+ type: import_v48.z.literal("compatibility"),
1024
+ feature: import_v48.z.string(),
1025
+ details: import_v48.z.string().optional()
924
1026
  }),
925
- import_v47.z.object({
926
- type: import_v47.z.literal("other"),
927
- message: import_v47.z.string()
1027
+ import_v48.z.object({
1028
+ type: import_v48.z.literal("other"),
1029
+ message: import_v48.z.string()
928
1030
  })
929
1031
  ]);
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()
1032
+ var gatewayImageUsageSchema = import_v48.z.object({
1033
+ inputTokens: import_v48.z.number().nullish(),
1034
+ outputTokens: import_v48.z.number().nullish(),
1035
+ totalTokens: import_v48.z.number().nullish()
934
1036
  });
935
- var gatewayImageResponseSchema = import_v47.z.object({
936
- images: import_v47.z.array(import_v47.z.string()),
1037
+ var gatewayImageResponseSchema = import_v48.z.object({
1038
+ images: import_v48.z.array(import_v48.z.string()),
937
1039
  // 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(),
1040
+ warnings: import_v48.z.array(gatewayImageWarningSchema).optional(),
1041
+ providerMetadata: import_v48.z.record(import_v48.z.string(), providerMetadataEntrySchema).optional(),
940
1042
  usage: gatewayImageUsageSchema.optional()
941
1043
  });
942
1044
 
943
1045
  // src/gateway-video-model.ts
944
1046
  var import_provider2 = require("@ai-sdk/provider");
945
- var import_provider_utils8 = require("@ai-sdk/provider-utils");
946
- var import_v48 = require("zod/v4");
1047
+ var import_provider_utils9 = require("@ai-sdk/provider-utils");
1048
+ var import_v49 = require("zod/v4");
947
1049
  var GatewayVideoModel = class {
948
1050
  constructor(modelId, config) {
949
1051
  this.modelId = modelId;
@@ -969,15 +1071,15 @@ var GatewayVideoModel = class {
969
1071
  abortSignal
970
1072
  }) {
971
1073
  var _a9;
972
- const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
1074
+ const resolvedHeaders = await (0, import_provider_utils9.resolve)(this.config.headers());
973
1075
  try {
974
- const { responseHeaders, value: responseBody } = await (0, import_provider_utils8.postJsonToApi)({
1076
+ const { responseHeaders, value: responseBody } = await (0, import_provider_utils9.postJsonToApi)({
975
1077
  url: this.getUrl(),
976
- headers: (0, import_provider_utils8.combineHeaders)(
1078
+ headers: (0, import_provider_utils9.combineHeaders)(
977
1079
  resolvedHeaders,
978
1080
  headers != null ? headers : {},
979
1081
  this.getModelConfigHeaders(),
980
- await (0, import_provider_utils8.resolve)(this.config.o11yHeaders),
1082
+ await (0, import_provider_utils9.resolve)(this.config.o11yHeaders),
981
1083
  { accept: "text/event-stream" }
982
1084
  ),
983
1085
  body: {
@@ -1004,7 +1106,7 @@ var GatewayVideoModel = class {
1004
1106
  statusCode: response.status
1005
1107
  });
1006
1108
  }
1007
- const eventStream = (0, import_provider_utils8.parseJsonEventStream)({
1109
+ const eventStream = (0, import_provider_utils9.parseJsonEventStream)({
1008
1110
  stream: response.body,
1009
1111
  schema: gatewayVideoEventSchema
1010
1112
  });
@@ -1055,8 +1157,8 @@ var GatewayVideoModel = class {
1055
1157
  responseHeaders: Object.fromEntries([...response.headers])
1056
1158
  };
1057
1159
  },
1058
- failedResponseHandler: (0, import_provider_utils8.createJsonErrorResponseHandler)({
1059
- errorSchema: import_v48.z.any(),
1160
+ failedResponseHandler: (0, import_provider_utils9.createJsonErrorResponseHandler)({
1161
+ errorSchema: import_v49.z.any(),
1060
1162
  errorToMessage: (data) => data
1061
1163
  }),
1062
1164
  ...abortSignal && { abortSignal },
@@ -1090,63 +1192,63 @@ function maybeEncodeVideoFile(file) {
1090
1192
  if (file.type === "file" && file.data instanceof Uint8Array) {
1091
1193
  return {
1092
1194
  ...file,
1093
- data: (0, import_provider_utils8.convertUint8ArrayToBase64)(file.data)
1195
+ data: (0, import_provider_utils9.convertUint8ArrayToBase64)(file.data)
1094
1196
  };
1095
1197
  }
1096
1198
  return file;
1097
1199
  }
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()
1200
+ var providerMetadataEntrySchema2 = import_v49.z.object({
1201
+ videos: import_v49.z.array(import_v49.z.unknown()).optional()
1202
+ }).catchall(import_v49.z.unknown());
1203
+ var gatewayVideoDataSchema = import_v49.z.union([
1204
+ import_v49.z.object({
1205
+ type: import_v49.z.literal("url"),
1206
+ url: import_v49.z.string(),
1207
+ mediaType: import_v49.z.string()
1106
1208
  }),
1107
- import_v48.z.object({
1108
- type: import_v48.z.literal("base64"),
1109
- data: import_v48.z.string(),
1110
- mediaType: import_v48.z.string()
1209
+ import_v49.z.object({
1210
+ type: import_v49.z.literal("base64"),
1211
+ data: import_v49.z.string(),
1212
+ mediaType: import_v49.z.string()
1111
1213
  })
1112
1214
  ]);
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()
1215
+ var gatewayVideoWarningSchema = import_v49.z.discriminatedUnion("type", [
1216
+ import_v49.z.object({
1217
+ type: import_v49.z.literal("unsupported"),
1218
+ feature: import_v49.z.string(),
1219
+ details: import_v49.z.string().optional()
1118
1220
  }),
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()
1221
+ import_v49.z.object({
1222
+ type: import_v49.z.literal("compatibility"),
1223
+ feature: import_v49.z.string(),
1224
+ details: import_v49.z.string().optional()
1123
1225
  }),
1124
- import_v48.z.object({
1125
- type: import_v48.z.literal("other"),
1126
- message: import_v48.z.string()
1226
+ import_v49.z.object({
1227
+ type: import_v49.z.literal("other"),
1228
+ message: import_v49.z.string()
1127
1229
  })
1128
1230
  ]);
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()
1231
+ var gatewayVideoEventSchema = import_v49.z.discriminatedUnion("type", [
1232
+ import_v49.z.object({
1233
+ type: import_v49.z.literal("result"),
1234
+ videos: import_v49.z.array(gatewayVideoDataSchema),
1235
+ warnings: import_v49.z.array(gatewayVideoWarningSchema).optional(),
1236
+ providerMetadata: import_v49.z.record(import_v49.z.string(), providerMetadataEntrySchema2).optional()
1135
1237
  }),
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()
1238
+ import_v49.z.object({
1239
+ type: import_v49.z.literal("error"),
1240
+ message: import_v49.z.string(),
1241
+ errorType: import_v49.z.string(),
1242
+ statusCode: import_v49.z.number(),
1243
+ param: import_v49.z.unknown().nullable()
1142
1244
  })
1143
1245
  ]);
1144
1246
 
1145
1247
  // src/tool/parallel-search.ts
1146
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
1248
+ var import_provider_utils10 = require("@ai-sdk/provider-utils");
1147
1249
  var import_zod = require("zod");
1148
- var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1149
- () => (0, import_provider_utils9.zodSchema)(
1250
+ var parallelSearchInputSchema = (0, import_provider_utils10.lazySchema)(
1251
+ () => (0, import_provider_utils10.zodSchema)(
1150
1252
  import_zod.z.object({
1151
1253
  objective: import_zod.z.string().describe(
1152
1254
  "Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters."
@@ -1181,8 +1283,8 @@ var parallelSearchInputSchema = (0, import_provider_utils9.lazySchema)(
1181
1283
  })
1182
1284
  )
1183
1285
  );
1184
- var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1185
- () => (0, import_provider_utils9.zodSchema)(
1286
+ var parallelSearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1287
+ () => (0, import_provider_utils10.zodSchema)(
1186
1288
  import_zod.z.union([
1187
1289
  // Success response
1188
1290
  import_zod.z.object({
@@ -1213,7 +1315,7 @@ var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
1213
1315
  ])
1214
1316
  )
1215
1317
  );
1216
- var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFactoryWithOutputSchema)({
1318
+ var parallelSearchToolFactory = (0, import_provider_utils10.createProviderToolFactoryWithOutputSchema)({
1217
1319
  id: "gateway.parallel_search",
1218
1320
  inputSchema: parallelSearchInputSchema,
1219
1321
  outputSchema: parallelSearchOutputSchema
@@ -1221,10 +1323,10 @@ var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFac
1221
1323
  var parallelSearch = (config = {}) => parallelSearchToolFactory(config);
1222
1324
 
1223
1325
  // src/tool/perplexity-search.ts
1224
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
1326
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
1225
1327
  var import_zod2 = require("zod");
1226
- var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1227
- () => (0, import_provider_utils10.zodSchema)(
1328
+ var perplexitySearchInputSchema = (0, import_provider_utils11.lazySchema)(
1329
+ () => (0, import_provider_utils11.zodSchema)(
1228
1330
  import_zod2.z.object({
1229
1331
  query: import_zod2.z.union([import_zod2.z.string(), import_zod2.z.array(import_zod2.z.string())]).describe(
1230
1332
  "Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."
@@ -1265,8 +1367,8 @@ var perplexitySearchInputSchema = (0, import_provider_utils10.lazySchema)(
1265
1367
  })
1266
1368
  )
1267
1369
  );
1268
- var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1269
- () => (0, import_provider_utils10.zodSchema)(
1370
+ var perplexitySearchOutputSchema = (0, import_provider_utils11.lazySchema)(
1371
+ () => (0, import_provider_utils11.zodSchema)(
1270
1372
  import_zod2.z.union([
1271
1373
  // Success response
1272
1374
  import_zod2.z.object({
@@ -1296,7 +1398,7 @@ var perplexitySearchOutputSchema = (0, import_provider_utils10.lazySchema)(
1296
1398
  ])
1297
1399
  )
1298
1400
  );
1299
- var perplexitySearchToolFactory = (0, import_provider_utils10.createProviderToolFactoryWithOutputSchema)({
1401
+ var perplexitySearchToolFactory = (0, import_provider_utils11.createProviderToolFactoryWithOutputSchema)({
1300
1402
  id: "gateway.perplexity_search",
1301
1403
  inputSchema: perplexitySearchInputSchema,
1302
1404
  outputSchema: perplexitySearchOutputSchema
@@ -1333,10 +1435,10 @@ async function getVercelRequestId() {
1333
1435
  }
1334
1436
 
1335
1437
  // src/gateway-provider.ts
1336
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
1438
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
1337
1439
 
1338
1440
  // src/version.ts
1339
- var VERSION = true ? "4.0.0-beta.22" : "0.0.0-test";
1441
+ var VERSION = true ? "4.0.0-beta.24" : "0.0.0-test";
1340
1442
 
1341
1443
  // src/gateway-provider.ts
1342
1444
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
@@ -1346,11 +1448,11 @@ function createGatewayProvider(options = {}) {
1346
1448
  let metadataCache = null;
1347
1449
  const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
1348
1450
  let lastFetchTime = 0;
1349
- const baseURL = (_b9 = (0, import_provider_utils11.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1451
+ const baseURL = (_b9 = (0, import_provider_utils12.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
1350
1452
  const getHeaders = async () => {
1351
1453
  try {
1352
1454
  const auth = await getGatewayAuthToken(options);
1353
- return (0, import_provider_utils12.withUserAgentSuffix)(
1455
+ return (0, import_provider_utils13.withUserAgentSuffix)(
1354
1456
  {
1355
1457
  Authorization: `Bearer ${auth.token}`,
1356
1458
  "ai-gateway-protocol-version": AI_GATEWAY_PROTOCOL_VERSION,
@@ -1369,19 +1471,19 @@ function createGatewayProvider(options = {}) {
1369
1471
  }
1370
1472
  };
1371
1473
  const createO11yHeaders = () => {
1372
- const deploymentId = (0, import_provider_utils11.loadOptionalSetting)({
1474
+ const deploymentId = (0, import_provider_utils12.loadOptionalSetting)({
1373
1475
  settingValue: void 0,
1374
1476
  environmentVariableName: "VERCEL_DEPLOYMENT_ID"
1375
1477
  });
1376
- const environment = (0, import_provider_utils11.loadOptionalSetting)({
1478
+ const environment = (0, import_provider_utils12.loadOptionalSetting)({
1377
1479
  settingValue: void 0,
1378
1480
  environmentVariableName: "VERCEL_ENV"
1379
1481
  });
1380
- const region = (0, import_provider_utils11.loadOptionalSetting)({
1482
+ const region = (0, import_provider_utils12.loadOptionalSetting)({
1381
1483
  settingValue: void 0,
1382
1484
  environmentVariableName: "VERCEL_REGION"
1383
1485
  });
1384
- const projectId = (0, import_provider_utils11.loadOptionalSetting)({
1486
+ const projectId = (0, import_provider_utils12.loadOptionalSetting)({
1385
1487
  settingValue: void 0,
1386
1488
  environmentVariableName: "VERCEL_PROJECT_ID"
1387
1489
  });
@@ -1438,6 +1540,18 @@ function createGatewayProvider(options = {}) {
1438
1540
  );
1439
1541
  });
1440
1542
  };
1543
+ const getSpendReport = async (params) => {
1544
+ return new GatewaySpendReport({
1545
+ baseURL,
1546
+ headers: getHeaders,
1547
+ fetch: options.fetch
1548
+ }).getSpendReport(params).catch(async (error) => {
1549
+ throw await asGatewayError(
1550
+ error,
1551
+ await parseAuthMethod(await getHeaders())
1552
+ );
1553
+ });
1554
+ };
1441
1555
  const provider = function(modelId) {
1442
1556
  if (new.target) {
1443
1557
  throw new Error(
@@ -1449,6 +1563,7 @@ function createGatewayProvider(options = {}) {
1449
1563
  provider.specificationVersion = "v4";
1450
1564
  provider.getAvailableModels = getAvailableModels;
1451
1565
  provider.getCredits = getCredits;
1566
+ provider.getSpendReport = getSpendReport;
1452
1567
  provider.imageModel = (modelId) => {
1453
1568
  return new GatewayImageModel(modelId, {
1454
1569
  provider: "gateway",
@@ -1488,7 +1603,7 @@ function createGatewayProvider(options = {}) {
1488
1603
  }
1489
1604
  var gateway = createGatewayProvider();
1490
1605
  async function getGatewayAuthToken(options) {
1491
- const apiKey = (0, import_provider_utils11.loadOptionalSetting)({
1606
+ const apiKey = (0, import_provider_utils12.loadOptionalSetting)({
1492
1607
  settingValue: options.apiKey,
1493
1608
  environmentVariableName: "AI_GATEWAY_API_KEY"
1494
1609
  });