@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 +17 -0
- package/dist/index.js +76 -22
- package/dist/index.js.map +1 -1
- package/docs/00-ai-gateway.mdx +5 -0
- package/package.json +3 -3
- package/src/gateway-config.ts +1 -1
- package/src/gateway-embedding-model.ts +30 -6
- package/src/gateway-fetch-metadata.ts +6 -2
- package/src/gateway-generation-info.ts +3 -1
- package/src/gateway-image-model.ts +30 -6
- package/src/gateway-language-model.ts +31 -4
- package/src/gateway-reranking-model.ts +7 -2
- package/src/gateway-spend-report.ts +3 -1
- package/src/gateway-video-model.ts +7 -2
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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.
|
|
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";
|