ai 4.3.1 → 4.3.3
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 +18 -0
- package/dist/index.d.mts +134 -3
- package/dist/index.d.ts +134 -3
- package/dist/index.js +156 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +145 -14
- package/dist/index.mjs.map +1 -1
- package/mcp-stdio/dist/index.js +1 -1
- package/mcp-stdio/dist/index.js.map +1 -1
- package/mcp-stdio/dist/index.mjs +1 -1
- package/mcp-stdio/dist/index.mjs.map +1 -1
- package/mcp-stdio/get-environment.test.ts +13 -0
- package/mcp-stdio/get-environment.ts +1 -1
- package/package.json +5 -5
- package/rsc/dist/rsc-server.mjs +12 -6
- package/rsc/dist/rsc-server.mjs.map +1 -1
package/dist/index.js
CHANGED
@@ -73,6 +73,7 @@ __export(streams_exports, {
|
|
73
73
|
experimental_createProviderRegistry: () => experimental_createProviderRegistry,
|
74
74
|
experimental_customProvider: () => experimental_customProvider,
|
75
75
|
experimental_generateImage: () => generateImage,
|
76
|
+
experimental_transcribe: () => transcribe,
|
76
77
|
experimental_wrapLanguageModel: () => experimental_wrapLanguageModel,
|
77
78
|
extractReasoningMiddleware: () => extractReasoningMiddleware,
|
78
79
|
formatAssistantStreamPart: () => import_ui_utils11.formatAssistantStreamPart,
|
@@ -942,8 +943,8 @@ var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
|
|
942
943
|
}
|
943
944
|
};
|
944
945
|
|
945
|
-
// core/util/detect-
|
946
|
-
var
|
946
|
+
// core/util/detect-mimetype.ts
|
947
|
+
var imageMimeTypeSignatures = [
|
947
948
|
{
|
948
949
|
mimeType: "image/gif",
|
949
950
|
bytesPrefix: [71, 73, 70],
|
@@ -1016,9 +1017,44 @@ var mimeTypeSignatures = [
|
|
1016
1017
|
base64Prefix: "AAAAIGZ0eXBoZWlj"
|
1017
1018
|
}
|
1018
1019
|
];
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1020
|
+
var audioMimeTypeSignatures = [
|
1021
|
+
{
|
1022
|
+
mimeType: "audio/mpeg",
|
1023
|
+
bytesPrefix: [255, 251],
|
1024
|
+
base64Prefix: "//s="
|
1025
|
+
},
|
1026
|
+
{
|
1027
|
+
mimeType: "audio/wav",
|
1028
|
+
bytesPrefix: [82, 73, 70, 70],
|
1029
|
+
base64Prefix: "UklGR"
|
1030
|
+
},
|
1031
|
+
{
|
1032
|
+
mimeType: "audio/ogg",
|
1033
|
+
bytesPrefix: [79, 103, 103, 83],
|
1034
|
+
base64Prefix: "T2dnUw"
|
1035
|
+
},
|
1036
|
+
{
|
1037
|
+
mimeType: "audio/flac",
|
1038
|
+
bytesPrefix: [102, 76, 97, 67],
|
1039
|
+
base64Prefix: "ZkxhQw"
|
1040
|
+
},
|
1041
|
+
{
|
1042
|
+
mimeType: "audio/aac",
|
1043
|
+
bytesPrefix: [64, 21, 0, 0],
|
1044
|
+
base64Prefix: "QBUA"
|
1045
|
+
},
|
1046
|
+
{
|
1047
|
+
mimeType: "audio/mp4",
|
1048
|
+
bytesPrefix: [102, 116, 121, 112],
|
1049
|
+
base64Prefix: "ZnR5cA"
|
1050
|
+
}
|
1051
|
+
];
|
1052
|
+
function detectMimeType({
|
1053
|
+
data,
|
1054
|
+
signatures
|
1055
|
+
}) {
|
1056
|
+
for (const signature of signatures) {
|
1057
|
+
if (typeof data === "string" ? data.startsWith(signature.base64Prefix) : data.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => data[index] === byte)) {
|
1022
1058
|
return signature.mimeType;
|
1023
1059
|
}
|
1024
1060
|
}
|
@@ -1075,7 +1111,10 @@ async function generateImage({
|
|
1075
1111
|
var _a18;
|
1076
1112
|
return new DefaultGeneratedFile({
|
1077
1113
|
data: image,
|
1078
|
-
mimeType: (_a18 =
|
1114
|
+
mimeType: (_a18 = detectMimeType({
|
1115
|
+
data: image,
|
1116
|
+
signatures: imageMimeTypeSignatures
|
1117
|
+
})) != null ? _a18 : "image/png"
|
1079
1118
|
});
|
1080
1119
|
}
|
1081
1120
|
)
|
@@ -1504,7 +1543,10 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1504
1543
|
switch (type) {
|
1505
1544
|
case "image": {
|
1506
1545
|
if (normalizedData instanceof Uint8Array) {
|
1507
|
-
mimeType = (_b =
|
1546
|
+
mimeType = (_b = detectMimeType({
|
1547
|
+
data: normalizedData,
|
1548
|
+
signatures: imageMimeTypeSignatures
|
1549
|
+
})) != null ? _b : mimeType;
|
1508
1550
|
}
|
1509
1551
|
return {
|
1510
1552
|
type: "image",
|
@@ -4754,6 +4796,25 @@ function asArray(value) {
|
|
4754
4796
|
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
4755
4797
|
}
|
4756
4798
|
|
4799
|
+
// util/consume-stream.ts
|
4800
|
+
async function consumeStream({
|
4801
|
+
stream,
|
4802
|
+
onError
|
4803
|
+
}) {
|
4804
|
+
const reader = stream.getReader();
|
4805
|
+
try {
|
4806
|
+
while (true) {
|
4807
|
+
const { done } = await reader.read();
|
4808
|
+
if (done)
|
4809
|
+
break;
|
4810
|
+
}
|
4811
|
+
} catch (error) {
|
4812
|
+
onError == null ? void 0 : onError(error);
|
4813
|
+
} finally {
|
4814
|
+
reader.releaseLock();
|
4815
|
+
}
|
4816
|
+
}
|
4817
|
+
|
4757
4818
|
// core/util/merge-streams.ts
|
4758
4819
|
function mergeStreams(stream1, stream2) {
|
4759
4820
|
const reader1 = stream1.getReader();
|
@@ -5995,9 +6056,15 @@ var DefaultStreamTextResult = class {
|
|
5995
6056
|
)
|
5996
6057
|
);
|
5997
6058
|
}
|
5998
|
-
async consumeStream() {
|
5999
|
-
|
6000
|
-
|
6059
|
+
async consumeStream(options) {
|
6060
|
+
var _a17;
|
6061
|
+
try {
|
6062
|
+
await consumeStream({
|
6063
|
+
stream: this.fullStream,
|
6064
|
+
onError: options == null ? void 0 : options.onError
|
6065
|
+
});
|
6066
|
+
} catch (error) {
|
6067
|
+
(_a17 = options == null ? void 0 : options.onError) == null ? void 0 : _a17.call(options, error);
|
6001
6068
|
}
|
6002
6069
|
}
|
6003
6070
|
get experimental_partialOutputStream() {
|
@@ -6268,6 +6335,70 @@ var DefaultStreamTextResult = class {
|
|
6268
6335
|
}
|
6269
6336
|
};
|
6270
6337
|
|
6338
|
+
// errors/no-transcript-generated-error.ts
|
6339
|
+
var import_provider23 = require("@ai-sdk/provider");
|
6340
|
+
var NoTranscriptGeneratedError = class extends import_provider23.AISDKError {
|
6341
|
+
constructor(options) {
|
6342
|
+
super({
|
6343
|
+
name: "AI_NoTranscriptGeneratedError",
|
6344
|
+
message: "No transcript generated."
|
6345
|
+
});
|
6346
|
+
this.responses = options.responses;
|
6347
|
+
}
|
6348
|
+
};
|
6349
|
+
|
6350
|
+
// core/transcribe/transcribe.ts
|
6351
|
+
async function transcribe({
|
6352
|
+
model,
|
6353
|
+
audio,
|
6354
|
+
providerOptions = {},
|
6355
|
+
maxRetries: maxRetriesArg,
|
6356
|
+
abortSignal,
|
6357
|
+
headers
|
6358
|
+
}) {
|
6359
|
+
const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
|
6360
|
+
const audioData = audio instanceof URL ? new Uint8Array((await download({ url: audio })).data) : convertDataContentToUint8Array(audio);
|
6361
|
+
const result = await retry(
|
6362
|
+
() => {
|
6363
|
+
var _a17;
|
6364
|
+
return model.doGenerate({
|
6365
|
+
audio: audioData,
|
6366
|
+
abortSignal,
|
6367
|
+
headers,
|
6368
|
+
providerOptions,
|
6369
|
+
mimeType: (_a17 = detectMimeType({
|
6370
|
+
data: audioData,
|
6371
|
+
signatures: audioMimeTypeSignatures
|
6372
|
+
})) != null ? _a17 : "audio/wav"
|
6373
|
+
});
|
6374
|
+
}
|
6375
|
+
);
|
6376
|
+
if (!result.text) {
|
6377
|
+
throw new NoTranscriptGeneratedError({ responses: [result.response] });
|
6378
|
+
}
|
6379
|
+
return new DefaultTranscriptionResult({
|
6380
|
+
text: result.text,
|
6381
|
+
segments: result.segments,
|
6382
|
+
language: result.language,
|
6383
|
+
durationInSeconds: result.durationInSeconds,
|
6384
|
+
warnings: result.warnings,
|
6385
|
+
responses: [result.response],
|
6386
|
+
providerMetadata: result.providerMetadata
|
6387
|
+
});
|
6388
|
+
}
|
6389
|
+
var DefaultTranscriptionResult = class {
|
6390
|
+
constructor(options) {
|
6391
|
+
var _a17;
|
6392
|
+
this.text = options.text;
|
6393
|
+
this.segments = options.segments;
|
6394
|
+
this.language = options.language;
|
6395
|
+
this.durationInSeconds = options.durationInSeconds;
|
6396
|
+
this.warnings = options.warnings;
|
6397
|
+
this.responses = options.responses;
|
6398
|
+
this.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};
|
6399
|
+
}
|
6400
|
+
};
|
6401
|
+
|
6271
6402
|
// core/util/merge-objects.ts
|
6272
6403
|
function mergeObjects(target, source) {
|
6273
6404
|
if (target === void 0 && source === void 0) {
|
@@ -6583,7 +6714,7 @@ function appendClientMessage({
|
|
6583
6714
|
|
6584
6715
|
// core/prompt/append-response-messages.ts
|
6585
6716
|
var import_ui_utils9 = require("@ai-sdk/ui-utils");
|
6586
|
-
var
|
6717
|
+
var import_provider24 = require("@ai-sdk/provider");
|
6587
6718
|
function appendResponseMessages({
|
6588
6719
|
messages,
|
6589
6720
|
responseMessages,
|
@@ -6666,7 +6797,7 @@ function appendResponseMessages({
|
|
6666
6797
|
break;
|
6667
6798
|
case "file":
|
6668
6799
|
if (part.data instanceof URL) {
|
6669
|
-
throw new
|
6800
|
+
throw new import_provider24.AISDKError({
|
6670
6801
|
name: "InvalidAssistantFileData",
|
6671
6802
|
message: "File data cannot be a URL"
|
6672
6803
|
});
|
@@ -6760,7 +6891,7 @@ function appendResponseMessages({
|
|
6760
6891
|
}
|
6761
6892
|
|
6762
6893
|
// core/registry/custom-provider.ts
|
6763
|
-
var
|
6894
|
+
var import_provider25 = require("@ai-sdk/provider");
|
6764
6895
|
function customProvider({
|
6765
6896
|
languageModels,
|
6766
6897
|
textEmbeddingModels,
|
@@ -6775,7 +6906,7 @@ function customProvider({
|
|
6775
6906
|
if (fallbackProvider) {
|
6776
6907
|
return fallbackProvider.languageModel(modelId);
|
6777
6908
|
}
|
6778
|
-
throw new
|
6909
|
+
throw new import_provider25.NoSuchModelError({ modelId, modelType: "languageModel" });
|
6779
6910
|
},
|
6780
6911
|
textEmbeddingModel(modelId) {
|
6781
6912
|
if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
|
@@ -6784,7 +6915,7 @@ function customProvider({
|
|
6784
6915
|
if (fallbackProvider) {
|
6785
6916
|
return fallbackProvider.textEmbeddingModel(modelId);
|
6786
6917
|
}
|
6787
|
-
throw new
|
6918
|
+
throw new import_provider25.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
|
6788
6919
|
},
|
6789
6920
|
imageModel(modelId) {
|
6790
6921
|
if (imageModels != null && modelId in imageModels) {
|
@@ -6793,19 +6924,19 @@ function customProvider({
|
|
6793
6924
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
6794
6925
|
return fallbackProvider.imageModel(modelId);
|
6795
6926
|
}
|
6796
|
-
throw new
|
6927
|
+
throw new import_provider25.NoSuchModelError({ modelId, modelType: "imageModel" });
|
6797
6928
|
}
|
6798
6929
|
};
|
6799
6930
|
}
|
6800
6931
|
var experimental_customProvider = customProvider;
|
6801
6932
|
|
6802
6933
|
// core/registry/no-such-provider-error.ts
|
6803
|
-
var
|
6934
|
+
var import_provider26 = require("@ai-sdk/provider");
|
6804
6935
|
var name16 = "AI_NoSuchProviderError";
|
6805
6936
|
var marker16 = `vercel.ai.error.${name16}`;
|
6806
6937
|
var symbol16 = Symbol.for(marker16);
|
6807
6938
|
var _a16;
|
6808
|
-
var NoSuchProviderError = class extends
|
6939
|
+
var NoSuchProviderError = class extends import_provider26.NoSuchModelError {
|
6809
6940
|
constructor({
|
6810
6941
|
modelId,
|
6811
6942
|
modelType,
|
@@ -6819,13 +6950,13 @@ var NoSuchProviderError = class extends import_provider25.NoSuchModelError {
|
|
6819
6950
|
this.availableProviders = availableProviders;
|
6820
6951
|
}
|
6821
6952
|
static isInstance(error) {
|
6822
|
-
return
|
6953
|
+
return import_provider26.AISDKError.hasMarker(error, marker16);
|
6823
6954
|
}
|
6824
6955
|
};
|
6825
6956
|
_a16 = symbol16;
|
6826
6957
|
|
6827
6958
|
// core/registry/provider-registry.ts
|
6828
|
-
var
|
6959
|
+
var import_provider27 = require("@ai-sdk/provider");
|
6829
6960
|
function createProviderRegistry(providers, {
|
6830
6961
|
separator = ":"
|
6831
6962
|
} = {}) {
|
@@ -6864,7 +6995,7 @@ var DefaultProviderRegistry = class {
|
|
6864
6995
|
splitId(id, modelType) {
|
6865
6996
|
const index = id.indexOf(this.separator);
|
6866
6997
|
if (index === -1) {
|
6867
|
-
throw new
|
6998
|
+
throw new import_provider27.NoSuchModelError({
|
6868
6999
|
modelId: id,
|
6869
7000
|
modelType,
|
6870
7001
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
@@ -6877,7 +7008,7 @@ var DefaultProviderRegistry = class {
|
|
6877
7008
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
6878
7009
|
const model = (_b = (_a17 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a17, modelId);
|
6879
7010
|
if (model == null) {
|
6880
|
-
throw new
|
7011
|
+
throw new import_provider27.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
6881
7012
|
}
|
6882
7013
|
return model;
|
6883
7014
|
}
|
@@ -6887,7 +7018,7 @@ var DefaultProviderRegistry = class {
|
|
6887
7018
|
const provider = this.getProvider(providerId);
|
6888
7019
|
const model = (_a17 = provider.textEmbeddingModel) == null ? void 0 : _a17.call(provider, modelId);
|
6889
7020
|
if (model == null) {
|
6890
|
-
throw new
|
7021
|
+
throw new import_provider27.NoSuchModelError({
|
6891
7022
|
modelId: id,
|
6892
7023
|
modelType: "textEmbeddingModel"
|
6893
7024
|
});
|
@@ -6900,7 +7031,7 @@ var DefaultProviderRegistry = class {
|
|
6900
7031
|
const provider = this.getProvider(providerId);
|
6901
7032
|
const model = (_a17 = provider.imageModel) == null ? void 0 : _a17.call(provider, modelId);
|
6902
7033
|
if (model == null) {
|
6903
|
-
throw new
|
7034
|
+
throw new import_provider27.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
6904
7035
|
}
|
6905
7036
|
return model;
|
6906
7037
|
}
|
@@ -7902,6 +8033,7 @@ var StreamData = class {
|
|
7902
8033
|
experimental_createProviderRegistry,
|
7903
8034
|
experimental_customProvider,
|
7904
8035
|
experimental_generateImage,
|
8036
|
+
experimental_transcribe,
|
7905
8037
|
experimental_wrapLanguageModel,
|
7906
8038
|
extractReasoningMiddleware,
|
7907
8039
|
formatAssistantStreamPart,
|