@ai-sdk/gateway 4.0.0-beta.49 → 4.0.0-beta.50

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @ai-sdk/gateway
2
2
 
3
+ ## 4.0.0-beta.50
4
+
5
+ ### Patch Changes
6
+
7
+ - b3976a2: Add workflow serialization support to all provider models.
8
+
9
+ **`@ai-sdk/provider-utils`:** New `serializeModel()` helper that extracts only serializable properties from a model instance, filtering out functions and objects containing functions. Third-party provider authors can use this to add workflow support to their own models.
10
+
11
+ **All providers:** `headers` is now optional in provider config types. This is non-breaking — existing code that passes `headers` continues to work. Custom provider implementations that construct model configs manually can now omit `headers`, which is useful when models are deserialized from a workflow step boundary where auth is provided separately.
12
+
13
+ All provider model classes now include `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` static methods, enabling them to cross workflow step boundaries without serialization errors.
14
+
15
+ - Updated dependencies [b3976a2]
16
+ - Updated dependencies [ff5eba1]
17
+ - @ai-sdk/provider-utils@5.0.0-beta.20
18
+ - @ai-sdk/provider@4.0.0-beta.12
19
+
3
20
  ## 4.0.0-beta.49
4
21
 
5
22
  ### Major Changes
package/dist/index.js CHANGED
@@ -477,7 +477,7 @@ var GatewayFetchMetadata = class {
477
477
  try {
478
478
  const { value } = await getFromApi({
479
479
  url: `${this.config.baseURL}/config`,
480
- headers: await resolve(this.config.headers()),
480
+ headers: this.config.headers ? await resolve(this.config.headers) : void 0,
481
481
  successfulResponseHandler: createJsonResponseHandler(
482
482
  gatewayAvailableModelsResponseSchema
483
483
  ),
@@ -497,7 +497,7 @@ var GatewayFetchMetadata = class {
497
497
  const baseUrl = new URL(this.config.baseURL);
498
498
  const { value } = await getFromApi({
499
499
  url: `${baseUrl.origin}/v1/credits`,
500
- headers: await resolve(this.config.headers()),
500
+ headers: this.config.headers ? await resolve(this.config.headers) : void 0,
501
501
  successfulResponseHandler: createJsonResponseHandler(
502
502
  gatewayCreditsResponseSchema
503
503
  ),
@@ -600,7 +600,7 @@ var GatewaySpendReport = class {
600
600
  }
601
601
  const { value } = await getFromApi2({
602
602
  url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,
603
- headers: await resolve2(this.config.headers()),
603
+ headers: this.config.headers ? await resolve2(this.config.headers) : void 0,
604
604
  successfulResponseHandler: createJsonResponseHandler2(
605
605
  gatewaySpendReportResponseSchema
606
606
  ),
@@ -685,7 +685,7 @@ var GatewayGenerationInfoFetcher = class {
685
685
  const baseUrl = new URL(this.config.baseURL);
686
686
  const { value } = await getFromApi3({
687
687
  url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,
688
- headers: await resolve3(this.config.headers()),
688
+ headers: this.config.headers ? await resolve3(this.config.headers) : void 0,
689
689
  successfulResponseHandler: createJsonResponseHandler3(
690
690
  gatewayGenerationInfoResponseSchema
691
691
  ),
@@ -767,16 +767,28 @@ import {
767
767
  createJsonErrorResponseHandler as createJsonErrorResponseHandler4,
768
768
  createJsonResponseHandler as createJsonResponseHandler4,
769
769
  postJsonToApi,
770
- resolve as resolve4
770
+ resolve as resolve4,
771
+ serializeModelOptions,
772
+ WORKFLOW_SERIALIZE,
773
+ WORKFLOW_DESERIALIZE
771
774
  } from "@ai-sdk/provider-utils";
772
775
  import { z as z7 } from "zod/v4";
773
- var GatewayLanguageModel = class {
776
+ var GatewayLanguageModel = class _GatewayLanguageModel {
774
777
  constructor(modelId, config) {
775
778
  this.modelId = modelId;
776
779
  this.config = config;
777
780
  this.specificationVersion = "v4";
778
781
  this.supportedUrls = { "*/*": [/.*/] };
779
782
  }
783
+ static [WORKFLOW_SERIALIZE](model) {
784
+ return serializeModelOptions({
785
+ modelId: model.modelId,
786
+ config: model.config
787
+ });
788
+ }
789
+ static [WORKFLOW_DESERIALIZE](options) {
790
+ return new _GatewayLanguageModel(options.modelId, options.config);
791
+ }
780
792
  get provider() {
781
793
  return this.config.provider;
782
794
  }
@@ -790,7 +802,7 @@ var GatewayLanguageModel = class {
790
802
  async doGenerate(options) {
791
803
  const { args, warnings } = await this.getArgs(options);
792
804
  const { abortSignal } = options;
793
- const resolvedHeaders = await resolve4(this.config.headers());
805
+ const resolvedHeaders = this.config.headers ? await resolve4(this.config.headers) : void 0;
794
806
  try {
795
807
  const {
796
808
  responseHeaders,
@@ -820,13 +832,16 @@ var GatewayLanguageModel = class {
820
832
  warnings
821
833
  };
822
834
  } catch (error) {
823
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
835
+ throw await asGatewayError(
836
+ error,
837
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
838
+ );
824
839
  }
825
840
  }
826
841
  async doStream(options) {
827
842
  const { args, warnings } = await this.getArgs(options);
828
843
  const { abortSignal } = options;
829
- const resolvedHeaders = await resolve4(this.config.headers());
844
+ const resolvedHeaders = this.config.headers ? await resolve4(this.config.headers) : void 0;
830
845
  try {
831
846
  const { value: response, responseHeaders } = await postJsonToApi({
832
847
  url: this.getUrl(),
@@ -875,7 +890,10 @@ var GatewayLanguageModel = class {
875
890
  response: { headers: responseHeaders }
876
891
  };
877
892
  } catch (error) {
878
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
893
+ throw await asGatewayError(
894
+ error,
895
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
896
+ );
879
897
  }
880
898
  }
881
899
  isFilePart(part) {
@@ -924,10 +942,13 @@ import {
924
942
  lazySchema as lazySchema7,
925
943
  postJsonToApi as postJsonToApi2,
926
944
  resolve as resolve5,
945
+ serializeModelOptions as serializeModelOptions2,
946
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,
947
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2,
927
948
  zodSchema as zodSchema7
928
949
  } from "@ai-sdk/provider-utils";
929
950
  import { z as z8 } from "zod/v4";
930
- var GatewayEmbeddingModel = class {
951
+ var GatewayEmbeddingModel = class _GatewayEmbeddingModel {
931
952
  constructor(modelId, config) {
932
953
  this.modelId = modelId;
933
954
  this.config = config;
@@ -935,6 +956,15 @@ var GatewayEmbeddingModel = class {
935
956
  this.maxEmbeddingsPerCall = 2048;
936
957
  this.supportsParallelCalls = true;
937
958
  }
959
+ static [WORKFLOW_SERIALIZE2](model) {
960
+ return serializeModelOptions2({
961
+ modelId: model.modelId,
962
+ config: model.config
963
+ });
964
+ }
965
+ static [WORKFLOW_DESERIALIZE2](options) {
966
+ return new _GatewayEmbeddingModel(options.modelId, options.config);
967
+ }
938
968
  get provider() {
939
969
  return this.config.provider;
940
970
  }
@@ -945,7 +975,7 @@ var GatewayEmbeddingModel = class {
945
975
  providerOptions
946
976
  }) {
947
977
  var _a9;
948
- const resolvedHeaders = await resolve5(this.config.headers());
978
+ const resolvedHeaders = this.config.headers ? await resolve5(this.config.headers) : void 0;
949
979
  try {
950
980
  const {
951
981
  responseHeaders,
@@ -981,7 +1011,10 @@ var GatewayEmbeddingModel = class {
981
1011
  warnings: []
982
1012
  };
983
1013
  } catch (error) {
984
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
1014
+ throw await asGatewayError(
1015
+ error,
1016
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
1017
+ );
985
1018
  }
986
1019
  }
987
1020
  getUrl() {
@@ -1011,10 +1044,13 @@ import {
1011
1044
  createJsonResponseHandler as createJsonResponseHandler6,
1012
1045
  createJsonErrorResponseHandler as createJsonErrorResponseHandler6,
1013
1046
  postJsonToApi as postJsonToApi3,
1014
- resolve as resolve6
1047
+ resolve as resolve6,
1048
+ serializeModelOptions as serializeModelOptions3,
1049
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3,
1050
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3
1015
1051
  } from "@ai-sdk/provider-utils";
1016
1052
  import { z as z9 } from "zod/v4";
1017
- var GatewayImageModel = class {
1053
+ var GatewayImageModel = class _GatewayImageModel {
1018
1054
  constructor(modelId, config) {
1019
1055
  this.modelId = modelId;
1020
1056
  this.config = config;
@@ -1022,6 +1058,15 @@ var GatewayImageModel = class {
1022
1058
  // Set a very large number to prevent client-side splitting of requests
1023
1059
  this.maxImagesPerCall = Number.MAX_SAFE_INTEGER;
1024
1060
  }
1061
+ static [WORKFLOW_SERIALIZE3](model) {
1062
+ return serializeModelOptions3({
1063
+ modelId: model.modelId,
1064
+ config: model.config
1065
+ });
1066
+ }
1067
+ static [WORKFLOW_DESERIALIZE3](options) {
1068
+ return new _GatewayImageModel(options.modelId, options.config);
1069
+ }
1025
1070
  get provider() {
1026
1071
  return this.config.provider;
1027
1072
  }
@@ -1038,7 +1083,7 @@ var GatewayImageModel = class {
1038
1083
  abortSignal
1039
1084
  }) {
1040
1085
  var _a9, _b9, _c, _d;
1041
- const resolvedHeaders = await resolve6(this.config.headers());
1086
+ const resolvedHeaders = this.config.headers ? await resolve6(this.config.headers) : void 0;
1042
1087
  try {
1043
1088
  const { responseHeaders, value: responseBody } = await postJsonToApi3({
1044
1089
  url: this.getUrl(),
@@ -1089,7 +1134,10 @@ var GatewayImageModel = class {
1089
1134
  }
1090
1135
  };
1091
1136
  } catch (error) {
1092
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
1137
+ throw await asGatewayError(
1138
+ error,
1139
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
1140
+ );
1093
1141
  }
1094
1142
  }
1095
1143
  getUrl() {
@@ -1179,7 +1227,7 @@ var GatewayVideoModel = class {
1179
1227
  abortSignal
1180
1228
  }) {
1181
1229
  var _a9;
1182
- const resolvedHeaders = await resolve7(this.config.headers());
1230
+ const resolvedHeaders = this.config.headers ? await resolve7(this.config.headers) : void 0;
1183
1231
  try {
1184
1232
  const { responseHeaders, value: responseBody } = await postJsonToApi4({
1185
1233
  url: this.getUrl(),
@@ -1283,7 +1331,10 @@ var GatewayVideoModel = class {
1283
1331
  }
1284
1332
  };
1285
1333
  } catch (error) {
1286
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
1334
+ throw await asGatewayError(
1335
+ error,
1336
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
1337
+ );
1287
1338
  }
1288
1339
  }
1289
1340
  getUrl() {
@@ -1380,7 +1431,7 @@ var GatewayRerankingModel = class {
1380
1431
  abortSignal,
1381
1432
  providerOptions
1382
1433
  }) {
1383
- const resolvedHeaders = await resolve8(this.config.headers());
1434
+ const resolvedHeaders = this.config.headers ? await resolve8(this.config.headers) : void 0;
1384
1435
  try {
1385
1436
  const {
1386
1437
  responseHeaders,
@@ -1417,7 +1468,10 @@ var GatewayRerankingModel = class {
1417
1468
  warnings: []
1418
1469
  };
1419
1470
  } catch (error) {
1420
- throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
1471
+ throw await asGatewayError(
1472
+ error,
1473
+ await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
1474
+ );
1421
1475
  }
1422
1476
  }
1423
1477
  getUrl() {
@@ -1646,7 +1700,7 @@ async function getVercelRequestId() {
1646
1700
  import { withUserAgentSuffix } from "@ai-sdk/provider-utils";
1647
1701
 
1648
1702
  // src/version.ts
1649
- var VERSION = true ? "4.0.0-beta.49" : "0.0.0-test";
1703
+ var VERSION = true ? "4.0.0-beta.50" : "0.0.0-test";
1650
1704
 
1651
1705
  // src/gateway-provider.ts
1652
1706
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";