ai 4.3.5 → 4.3.7
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 +147 -13
- package/dist/index.d.ts +147 -13
- package/dist/index.js +133 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +122 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
@@ -4008,23 +4008,36 @@ function toResponseMessages({
|
|
4008
4008
|
generateMessageId
|
4009
4009
|
}) {
|
4010
4010
|
const responseMessages = [];
|
4011
|
-
|
4012
|
-
|
4013
|
-
content
|
4011
|
+
const content = [];
|
4012
|
+
if (reasoning.length > 0) {
|
4013
|
+
content.push(
|
4014
4014
|
...reasoning.map(
|
4015
4015
|
(part) => part.type === "text" ? { ...part, type: "reasoning" } : { ...part, type: "redacted-reasoning" }
|
4016
|
-
)
|
4017
|
-
|
4016
|
+
)
|
4017
|
+
);
|
4018
|
+
}
|
4019
|
+
if (files.length > 0) {
|
4020
|
+
content.push(
|
4018
4021
|
...files.map((file) => ({
|
4019
4022
|
type: "file",
|
4020
4023
|
data: file.base64,
|
4021
4024
|
mimeType: file.mimeType
|
4022
|
-
}))
|
4023
|
-
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4027
|
-
}
|
4025
|
+
}))
|
4026
|
+
);
|
4027
|
+
}
|
4028
|
+
if (text2.length > 0) {
|
4029
|
+
content.push({ type: "text", text: text2 });
|
4030
|
+
}
|
4031
|
+
if (toolCalls.length > 0) {
|
4032
|
+
content.push(...toolCalls);
|
4033
|
+
}
|
4034
|
+
if (content.length > 0) {
|
4035
|
+
responseMessages.push({
|
4036
|
+
role: "assistant",
|
4037
|
+
content,
|
4038
|
+
id: messageId
|
4039
|
+
});
|
4040
|
+
}
|
4028
4041
|
if (toolResults.length > 0) {
|
4029
4042
|
responseMessages.push({
|
4030
4043
|
role: "tool",
|
@@ -6282,9 +6295,99 @@ var DefaultStreamTextResult = class {
|
|
6282
6295
|
}
|
6283
6296
|
};
|
6284
6297
|
|
6285
|
-
// errors/no-
|
6298
|
+
// errors/no-speech-generated-error.ts
|
6286
6299
|
import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
|
6287
|
-
var
|
6300
|
+
var NoSpeechGeneratedError = class extends AISDKError18 {
|
6301
|
+
constructor(options) {
|
6302
|
+
super({
|
6303
|
+
name: "AI_NoSpeechGeneratedError",
|
6304
|
+
message: "No speech audio generated."
|
6305
|
+
});
|
6306
|
+
this.responses = options.responses;
|
6307
|
+
}
|
6308
|
+
};
|
6309
|
+
|
6310
|
+
// core/generate-speech/generated-audio-file.ts
|
6311
|
+
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
6312
|
+
constructor({
|
6313
|
+
data,
|
6314
|
+
mimeType
|
6315
|
+
}) {
|
6316
|
+
super({ data, mimeType });
|
6317
|
+
let format = "mp3";
|
6318
|
+
if (mimeType) {
|
6319
|
+
const mimeTypeParts = mimeType.split("/");
|
6320
|
+
if (mimeTypeParts.length === 2) {
|
6321
|
+
if (mimeType !== "audio/mpeg") {
|
6322
|
+
format = mimeTypeParts[1];
|
6323
|
+
}
|
6324
|
+
}
|
6325
|
+
}
|
6326
|
+
if (!format) {
|
6327
|
+
throw new Error(
|
6328
|
+
"Audio format must be provided or determinable from mimeType"
|
6329
|
+
);
|
6330
|
+
}
|
6331
|
+
this.format = format;
|
6332
|
+
}
|
6333
|
+
};
|
6334
|
+
|
6335
|
+
// core/generate-speech/generate-speech.ts
|
6336
|
+
async function generateSpeech({
|
6337
|
+
model,
|
6338
|
+
text: text2,
|
6339
|
+
voice,
|
6340
|
+
outputFormat,
|
6341
|
+
instructions,
|
6342
|
+
speed,
|
6343
|
+
providerOptions = {},
|
6344
|
+
maxRetries: maxRetriesArg,
|
6345
|
+
abortSignal,
|
6346
|
+
headers
|
6347
|
+
}) {
|
6348
|
+
var _a17;
|
6349
|
+
const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
|
6350
|
+
const result = await retry(
|
6351
|
+
() => model.doGenerate({
|
6352
|
+
text: text2,
|
6353
|
+
voice,
|
6354
|
+
outputFormat,
|
6355
|
+
instructions,
|
6356
|
+
speed,
|
6357
|
+
abortSignal,
|
6358
|
+
headers,
|
6359
|
+
providerOptions
|
6360
|
+
})
|
6361
|
+
);
|
6362
|
+
if (!result.audio || result.audio.length === 0) {
|
6363
|
+
throw new NoSpeechGeneratedError({ responses: [result.response] });
|
6364
|
+
}
|
6365
|
+
return new DefaultSpeechResult({
|
6366
|
+
audio: new DefaultGeneratedAudioFile({
|
6367
|
+
data: result.audio,
|
6368
|
+
mimeType: (_a17 = detectMimeType({
|
6369
|
+
data: result.audio,
|
6370
|
+
signatures: audioMimeTypeSignatures
|
6371
|
+
})) != null ? _a17 : "audio/mp3"
|
6372
|
+
}),
|
6373
|
+
warnings: result.warnings,
|
6374
|
+
responses: [result.response],
|
6375
|
+
providerMetadata: result.providerMetadata
|
6376
|
+
});
|
6377
|
+
}
|
6378
|
+
var DefaultSpeechResult = class {
|
6379
|
+
constructor(options) {
|
6380
|
+
var _a17;
|
6381
|
+
this.audio = options.audio;
|
6382
|
+
this.warnings = options.warnings;
|
6383
|
+
this.responses = options.responses;
|
6384
|
+
this.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};
|
6385
|
+
}
|
6386
|
+
};
|
6387
|
+
|
6388
|
+
// errors/no-transcript-generated-error.ts
|
6389
|
+
import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
|
6390
|
+
var NoTranscriptGeneratedError = class extends AISDKError19 {
|
6288
6391
|
constructor(options) {
|
6289
6392
|
super({
|
6290
6393
|
name: "AI_NoTranscriptGeneratedError",
|
@@ -6663,7 +6766,7 @@ function appendClientMessage({
|
|
6663
6766
|
import {
|
6664
6767
|
extractMaxToolInvocationStep
|
6665
6768
|
} from "@ai-sdk/ui-utils";
|
6666
|
-
import { AISDKError as
|
6769
|
+
import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
|
6667
6770
|
function appendResponseMessages({
|
6668
6771
|
messages,
|
6669
6772
|
responseMessages,
|
@@ -6746,7 +6849,7 @@ function appendResponseMessages({
|
|
6746
6849
|
break;
|
6747
6850
|
case "file":
|
6748
6851
|
if (part.data instanceof URL) {
|
6749
|
-
throw new
|
6852
|
+
throw new AISDKError20({
|
6750
6853
|
name: "InvalidAssistantFileData",
|
6751
6854
|
message: "File data cannot be a URL"
|
6752
6855
|
});
|
@@ -6880,7 +6983,7 @@ function customProvider({
|
|
6880
6983
|
var experimental_customProvider = customProvider;
|
6881
6984
|
|
6882
6985
|
// core/registry/no-such-provider-error.ts
|
6883
|
-
import { AISDKError as
|
6986
|
+
import { AISDKError as AISDKError21, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
|
6884
6987
|
var name16 = "AI_NoSuchProviderError";
|
6885
6988
|
var marker16 = `vercel.ai.error.${name16}`;
|
6886
6989
|
var symbol16 = Symbol.for(marker16);
|
@@ -6899,7 +7002,7 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
6899
7002
|
this.availableProviders = availableProviders;
|
6900
7003
|
}
|
6901
7004
|
static isInstance(error) {
|
6902
|
-
return
|
7005
|
+
return AISDKError21.hasMarker(error, marker16);
|
6903
7006
|
}
|
6904
7007
|
};
|
6905
7008
|
_a16 = symbol16;
|
@@ -6950,7 +7053,7 @@ var DefaultProviderRegistry = class {
|
|
6950
7053
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
6951
7054
|
});
|
6952
7055
|
}
|
6953
|
-
return [id.slice(0, index), id.slice(index +
|
7056
|
+
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
6954
7057
|
}
|
6955
7058
|
languageModel(id) {
|
6956
7059
|
var _a17, _b;
|
@@ -7988,6 +8091,7 @@ export {
|
|
7988
8091
|
experimental_createProviderRegistry,
|
7989
8092
|
experimental_customProvider,
|
7990
8093
|
generateImage as experimental_generateImage,
|
8094
|
+
generateSpeech as experimental_generateSpeech,
|
7991
8095
|
transcribe as experimental_transcribe,
|
7992
8096
|
experimental_wrapLanguageModel,
|
7993
8097
|
extractReasoningMiddleware,
|