@ai-sdk/bytedance 1.0.25 → 1.0.27
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 +15 -0
- package/dist/index.d.mts +72 -3
- package/dist/index.d.ts +72 -3
- package/dist/index.js +260 -76
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +270 -79
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
+
ByteDanceImageModel: () => ByteDanceImageModel,
|
|
23
24
|
VERSION: () => VERSION,
|
|
24
25
|
byteDance: () => byteDance,
|
|
25
26
|
createByteDance: () => createByteDance
|
|
@@ -28,13 +29,172 @@ module.exports = __toCommonJS(index_exports);
|
|
|
28
29
|
|
|
29
30
|
// src/bytedance-provider.ts
|
|
30
31
|
var import_provider2 = require("@ai-sdk/provider");
|
|
32
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
33
|
+
|
|
34
|
+
// src/bytedance-image-model.ts
|
|
31
35
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
36
|
+
var import_v42 = require("zod/v4");
|
|
32
37
|
|
|
33
|
-
// src/bytedance-
|
|
34
|
-
var import_provider = require("@ai-sdk/provider");
|
|
38
|
+
// src/bytedance-image-model-options.ts
|
|
35
39
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
36
40
|
var import_v4 = require("zod/v4");
|
|
41
|
+
var byteDanceImageModelOptionsSchema = (0, import_provider_utils.lazySchema)(
|
|
42
|
+
() => (0, import_provider_utils.zodSchema)(
|
|
43
|
+
import_v4.z.looseObject({
|
|
44
|
+
watermark: import_v4.z.boolean().nullish(),
|
|
45
|
+
outputFormat: import_v4.z.enum(["png", "jpeg"]).nullish(),
|
|
46
|
+
size: import_v4.z.string().nullish(),
|
|
47
|
+
sequentialImageGeneration: import_v4.z.enum(["auto", "disabled"]).nullish(),
|
|
48
|
+
maxImages: import_v4.z.number().int().positive().nullish(),
|
|
49
|
+
optimizePromptMode: import_v4.z.enum(["standard", "fast"]).nullish()
|
|
50
|
+
})
|
|
51
|
+
)
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
// src/bytedance-image-model.ts
|
|
37
55
|
var HANDLED_PROVIDER_OPTIONS = /* @__PURE__ */ new Set([
|
|
56
|
+
"watermark",
|
|
57
|
+
"outputFormat",
|
|
58
|
+
"size",
|
|
59
|
+
"sequentialImageGeneration",
|
|
60
|
+
"maxImages",
|
|
61
|
+
"optimizePromptMode"
|
|
62
|
+
]);
|
|
63
|
+
var ByteDanceImageModel = class {
|
|
64
|
+
constructor(modelId, config) {
|
|
65
|
+
this.modelId = modelId;
|
|
66
|
+
this.config = config;
|
|
67
|
+
this.specificationVersion = "v3";
|
|
68
|
+
// The API has no output-count parameter, so a single call returns one image;
|
|
69
|
+
// `generateImage` fans `n` out into `n` calls. Batches of related images are
|
|
70
|
+
// available via the `sequentialImageGeneration` provider option instead.
|
|
71
|
+
this.maxImagesPerCall = 1;
|
|
72
|
+
}
|
|
73
|
+
get provider() {
|
|
74
|
+
return this.config.provider;
|
|
75
|
+
}
|
|
76
|
+
async doGenerate({
|
|
77
|
+
prompt,
|
|
78
|
+
size,
|
|
79
|
+
aspectRatio,
|
|
80
|
+
seed,
|
|
81
|
+
providerOptions,
|
|
82
|
+
headers,
|
|
83
|
+
abortSignal,
|
|
84
|
+
files,
|
|
85
|
+
mask
|
|
86
|
+
}) {
|
|
87
|
+
var _a, _b, _c;
|
|
88
|
+
const warnings = [];
|
|
89
|
+
if (aspectRatio != null) {
|
|
90
|
+
warnings.push({
|
|
91
|
+
type: "unsupported",
|
|
92
|
+
feature: "aspectRatio",
|
|
93
|
+
details: 'ByteDance does not support aspectRatio. Use `size` (e.g. "2048x2048" or a resolution level like "2K" via providerOptions) instead.'
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (seed != null) {
|
|
97
|
+
warnings.push({ type: "unsupported", feature: "seed" });
|
|
98
|
+
}
|
|
99
|
+
if (mask != null) {
|
|
100
|
+
warnings.push({
|
|
101
|
+
type: "unsupported",
|
|
102
|
+
feature: "mask",
|
|
103
|
+
details: "ByteDance Seedream does not support a separate mask. Provide edit instructions in the prompt, optionally with markings on the input image."
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
107
|
+
const byteDanceOptions = await (0, import_provider_utils2.parseProviderOptions)({
|
|
108
|
+
provider: "bytedance",
|
|
109
|
+
providerOptions,
|
|
110
|
+
schema: byteDanceImageModelOptionsSchema
|
|
111
|
+
});
|
|
112
|
+
const image = files != null && files.length > 0 ? files.length === 1 ? (0, import_provider_utils2.convertImageModelFileToDataUri)(files[0]) : files.map(import_provider_utils2.convertImageModelFileToDataUri) : void 0;
|
|
113
|
+
const body = {
|
|
114
|
+
model: this.modelId,
|
|
115
|
+
prompt
|
|
116
|
+
};
|
|
117
|
+
if (image != null) {
|
|
118
|
+
body.image = image;
|
|
119
|
+
}
|
|
120
|
+
if (size != null) {
|
|
121
|
+
body.size = size;
|
|
122
|
+
}
|
|
123
|
+
if (byteDanceOptions != null) {
|
|
124
|
+
if (byteDanceOptions.watermark != null) {
|
|
125
|
+
body.watermark = byteDanceOptions.watermark;
|
|
126
|
+
}
|
|
127
|
+
if (byteDanceOptions.outputFormat != null) {
|
|
128
|
+
body.output_format = byteDanceOptions.outputFormat;
|
|
129
|
+
}
|
|
130
|
+
if (byteDanceOptions.size != null) {
|
|
131
|
+
body.size = byteDanceOptions.size;
|
|
132
|
+
}
|
|
133
|
+
if (byteDanceOptions.sequentialImageGeneration != null) {
|
|
134
|
+
body.sequential_image_generation = byteDanceOptions.sequentialImageGeneration;
|
|
135
|
+
}
|
|
136
|
+
if (byteDanceOptions.maxImages != null) {
|
|
137
|
+
body.sequential_image_generation_options = {
|
|
138
|
+
max_images: byteDanceOptions.maxImages
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (byteDanceOptions.optimizePromptMode != null) {
|
|
142
|
+
body.optimize_prompt_options = {
|
|
143
|
+
mode: byteDanceOptions.optimizePromptMode
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
for (const [key, value] of Object.entries(byteDanceOptions)) {
|
|
147
|
+
if (!HANDLED_PROVIDER_OPTIONS.has(key)) {
|
|
148
|
+
body[key] = value;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
body.response_format = "b64_json";
|
|
153
|
+
const { value: response, responseHeaders } = await (0, import_provider_utils2.postJsonToApi)({
|
|
154
|
+
url: `${this.config.baseURL}/images/generations`,
|
|
155
|
+
headers: (0, import_provider_utils2.combineHeaders)(await (0, import_provider_utils2.resolve)(this.config.headers), headers),
|
|
156
|
+
body,
|
|
157
|
+
failedResponseHandler: byteDanceFailedResponseHandler,
|
|
158
|
+
successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(
|
|
159
|
+
byteDanceImageResponseSchema
|
|
160
|
+
),
|
|
161
|
+
abortSignal,
|
|
162
|
+
fetch: this.config.fetch
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
images: response.data.map((item) => item.b64_json),
|
|
166
|
+
warnings,
|
|
167
|
+
response: {
|
|
168
|
+
timestamp: currentDate,
|
|
169
|
+
modelId: this.modelId,
|
|
170
|
+
headers: responseHeaders
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
var byteDanceImageResponseSchema = import_v42.z.object({
|
|
176
|
+
data: import_v42.z.array(import_v42.z.object({ b64_json: import_v42.z.string() }))
|
|
177
|
+
});
|
|
178
|
+
var byteDanceErrorSchema = import_v42.z.object({
|
|
179
|
+
error: import_v42.z.object({
|
|
180
|
+
message: import_v42.z.string(),
|
|
181
|
+
code: import_v42.z.string().nullish()
|
|
182
|
+
}).nullish(),
|
|
183
|
+
message: import_v42.z.string().nullish()
|
|
184
|
+
});
|
|
185
|
+
var byteDanceFailedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)({
|
|
186
|
+
errorSchema: byteDanceErrorSchema,
|
|
187
|
+
errorToMessage: (data) => {
|
|
188
|
+
var _a, _b, _c;
|
|
189
|
+
return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// src/bytedance-video-model.ts
|
|
194
|
+
var import_provider = require("@ai-sdk/provider");
|
|
195
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
196
|
+
var import_v43 = require("zod/v4");
|
|
197
|
+
var HANDLED_PROVIDER_OPTIONS2 = /* @__PURE__ */ new Set([
|
|
38
198
|
"watermark",
|
|
39
199
|
"generateAudio",
|
|
40
200
|
"cameraFixed",
|
|
@@ -48,21 +208,21 @@ var HANDLED_PROVIDER_OPTIONS = /* @__PURE__ */ new Set([
|
|
|
48
208
|
"pollIntervalMs",
|
|
49
209
|
"pollTimeoutMs"
|
|
50
210
|
]);
|
|
51
|
-
var byteDanceVideoProviderOptionsSchema = (0,
|
|
52
|
-
() => (0,
|
|
53
|
-
|
|
54
|
-
watermark:
|
|
55
|
-
generateAudio:
|
|
56
|
-
cameraFixed:
|
|
57
|
-
returnLastFrame:
|
|
58
|
-
serviceTier:
|
|
59
|
-
draft:
|
|
60
|
-
lastFrameImage:
|
|
61
|
-
referenceImages:
|
|
62
|
-
referenceVideos:
|
|
63
|
-
referenceAudio:
|
|
64
|
-
pollIntervalMs:
|
|
65
|
-
pollTimeoutMs:
|
|
211
|
+
var byteDanceVideoProviderOptionsSchema = (0, import_provider_utils3.lazySchema)(
|
|
212
|
+
() => (0, import_provider_utils3.zodSchema)(
|
|
213
|
+
import_v43.z.object({
|
|
214
|
+
watermark: import_v43.z.boolean().nullish(),
|
|
215
|
+
generateAudio: import_v43.z.boolean().nullish(),
|
|
216
|
+
cameraFixed: import_v43.z.boolean().nullish(),
|
|
217
|
+
returnLastFrame: import_v43.z.boolean().nullish(),
|
|
218
|
+
serviceTier: import_v43.z.enum(["default", "flex"]).nullish(),
|
|
219
|
+
draft: import_v43.z.boolean().nullish(),
|
|
220
|
+
lastFrameImage: import_v43.z.string().nullish(),
|
|
221
|
+
referenceImages: import_v43.z.array(import_v43.z.string()).nullish(),
|
|
222
|
+
referenceVideos: import_v43.z.array(import_v43.z.string()).nullish(),
|
|
223
|
+
referenceAudio: import_v43.z.array(import_v43.z.string()).nullish(),
|
|
224
|
+
pollIntervalMs: import_v43.z.number().positive().nullish(),
|
|
225
|
+
pollTimeoutMs: import_v43.z.number().positive().nullish()
|
|
66
226
|
}).passthrough()
|
|
67
227
|
)
|
|
68
228
|
);
|
|
@@ -116,16 +276,46 @@ function resolveStartImage(options) {
|
|
|
116
276
|
var _a;
|
|
117
277
|
return (_a = getFirstFrameImage(options)) != null ? _a : options.image;
|
|
118
278
|
}
|
|
119
|
-
function
|
|
120
|
-
|
|
279
|
+
function getTopLevelMediaType(mediaType) {
|
|
280
|
+
const slashIndex = mediaType.indexOf("/");
|
|
281
|
+
return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);
|
|
282
|
+
}
|
|
283
|
+
var isVideoFile = (f) => f.mediaType != null && getTopLevelMediaType(f.mediaType) === "video";
|
|
284
|
+
function resolveReferenceContent(options, byteDanceOptions, warnings) {
|
|
285
|
+
var _a, _b;
|
|
121
286
|
if (options.frameImages != null && options.frameImages.length > 0) {
|
|
122
287
|
return [];
|
|
123
288
|
}
|
|
124
289
|
const inputReferences = options.inputReferences;
|
|
125
290
|
if (inputReferences != null && inputReferences.length > 0) {
|
|
126
|
-
return inputReferences.map((
|
|
291
|
+
return inputReferences.map((reference) => {
|
|
292
|
+
if (reference.type === "url" && reference.mediaType == null) {
|
|
293
|
+
warnings.push({
|
|
294
|
+
type: "unsupported",
|
|
295
|
+
feature: "inputReferences",
|
|
296
|
+
details: 'ByteDance requires an explicit mediaType to route URL references as video or image. Pass { data: url, mediaType: "video/mp4" } for video references. The reference was treated as an image.'
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
const url = (0, import_provider_utils3.convertImageModelFileToDataUri)(reference);
|
|
300
|
+
return isVideoFile(reference) ? { type: "video_url", video_url: { url }, role: "reference_video" } : { type: "image_url", image_url: { url }, role: "reference_image" };
|
|
301
|
+
});
|
|
127
302
|
}
|
|
128
|
-
|
|
303
|
+
const content = [];
|
|
304
|
+
for (const imageUrl of (_a = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceImages) != null ? _a : []) {
|
|
305
|
+
content.push({
|
|
306
|
+
type: "image_url",
|
|
307
|
+
image_url: { url: imageUrl },
|
|
308
|
+
role: "reference_image"
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
for (const videoUrl of (_b = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceVideos) != null ? _b : []) {
|
|
312
|
+
content.push({
|
|
313
|
+
type: "video_url",
|
|
314
|
+
video_url: { url: videoUrl },
|
|
315
|
+
role: "reference_video"
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
return content;
|
|
129
319
|
}
|
|
130
320
|
function resolveLastFrameImage(options, byteDanceOptions) {
|
|
131
321
|
var _a, _b, _c;
|
|
@@ -133,7 +323,7 @@ function resolveLastFrameImage(options, byteDanceOptions) {
|
|
|
133
323
|
(frame) => frame.frameType === "last_frame"
|
|
134
324
|
)) == null ? void 0 : _b.image;
|
|
135
325
|
if (lastFrame != null) {
|
|
136
|
-
return (0,
|
|
326
|
+
return (0, import_provider_utils3.convertImageModelFileToDataUri)(lastFrame);
|
|
137
327
|
}
|
|
138
328
|
return (_c = byteDanceOptions == null ? void 0 : byteDanceOptions.lastFrameImage) != null ? _c : void 0;
|
|
139
329
|
}
|
|
@@ -151,7 +341,7 @@ var ByteDanceVideoModel = class {
|
|
|
151
341
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
152
342
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
153
343
|
const warnings = [];
|
|
154
|
-
const byteDanceOptions = await (0,
|
|
344
|
+
const byteDanceOptions = await (0, import_provider_utils3.parseProviderOptions)({
|
|
155
345
|
provider: "bytedance",
|
|
156
346
|
providerOptions: options.providerOptions,
|
|
157
347
|
schema: byteDanceVideoProviderOptionsSchema
|
|
@@ -179,14 +369,15 @@ var ByteDanceVideoModel = class {
|
|
|
179
369
|
}
|
|
180
370
|
const startImage = resolveStartImage(options);
|
|
181
371
|
const lastFrameImageUrl = resolveLastFrameImage(options, byteDanceOptions);
|
|
182
|
-
const
|
|
372
|
+
const referenceContent = resolveReferenceContent(
|
|
183
373
|
options,
|
|
184
|
-
byteDanceOptions
|
|
374
|
+
byteDanceOptions,
|
|
375
|
+
warnings
|
|
185
376
|
);
|
|
186
377
|
if (startImage != null) {
|
|
187
378
|
content.push({
|
|
188
379
|
type: "image_url",
|
|
189
|
-
image_url: { url: (0,
|
|
380
|
+
image_url: { url: (0, import_provider_utils3.convertImageModelFileToDataUri)(startImage) },
|
|
190
381
|
...lastFrameImageUrl != null ? { role: "first_frame" } : {}
|
|
191
382
|
});
|
|
192
383
|
}
|
|
@@ -197,21 +388,8 @@ var ByteDanceVideoModel = class {
|
|
|
197
388
|
role: "last_frame"
|
|
198
389
|
});
|
|
199
390
|
}
|
|
200
|
-
for (const
|
|
201
|
-
content.push(
|
|
202
|
-
type: "image_url",
|
|
203
|
-
image_url: { url: imageUrl },
|
|
204
|
-
role: "reference_image"
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
if ((byteDanceOptions == null ? void 0 : byteDanceOptions.referenceVideos) != null && byteDanceOptions.referenceVideos.length > 0) {
|
|
208
|
-
for (const videoUrl2 of byteDanceOptions.referenceVideos) {
|
|
209
|
-
content.push({
|
|
210
|
-
type: "video_url",
|
|
211
|
-
video_url: { url: videoUrl2 },
|
|
212
|
-
role: "reference_video"
|
|
213
|
-
});
|
|
214
|
-
}
|
|
391
|
+
for (const entry of referenceContent) {
|
|
392
|
+
content.push(entry);
|
|
215
393
|
}
|
|
216
394
|
if ((byteDanceOptions == null ? void 0 : byteDanceOptions.referenceAudio) != null && byteDanceOptions.referenceAudio.length > 0) {
|
|
217
395
|
for (const audioUrl of byteDanceOptions.referenceAudio) {
|
|
@@ -264,21 +442,21 @@ var ByteDanceVideoModel = class {
|
|
|
264
442
|
body.draft = byteDanceOptions.draft;
|
|
265
443
|
}
|
|
266
444
|
for (const [key, value] of Object.entries(byteDanceOptions)) {
|
|
267
|
-
if (!
|
|
445
|
+
if (!HANDLED_PROVIDER_OPTIONS2.has(key)) {
|
|
268
446
|
body[key] = value;
|
|
269
447
|
}
|
|
270
448
|
}
|
|
271
449
|
}
|
|
272
450
|
const createUrl = `${this.config.baseURL}/contents/generations/tasks`;
|
|
273
|
-
const { value: createResponse } = await (0,
|
|
451
|
+
const { value: createResponse } = await (0, import_provider_utils3.postJsonToApi)({
|
|
274
452
|
url: createUrl,
|
|
275
|
-
headers: (0,
|
|
276
|
-
await (0,
|
|
453
|
+
headers: (0, import_provider_utils3.combineHeaders)(
|
|
454
|
+
await (0, import_provider_utils3.resolve)(this.config.headers),
|
|
277
455
|
options.headers
|
|
278
456
|
),
|
|
279
457
|
body,
|
|
280
|
-
failedResponseHandler:
|
|
281
|
-
successfulResponseHandler: (0,
|
|
458
|
+
failedResponseHandler: byteDanceFailedResponseHandler2,
|
|
459
|
+
successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
|
|
282
460
|
byteDanceTaskResponseSchema
|
|
283
461
|
),
|
|
284
462
|
abortSignal: options.abortSignal,
|
|
@@ -298,14 +476,14 @@ var ByteDanceVideoModel = class {
|
|
|
298
476
|
let responseHeaders;
|
|
299
477
|
while (true) {
|
|
300
478
|
const statusUrl = `${this.config.baseURL}/contents/generations/tasks/${taskId}`;
|
|
301
|
-
const { value: statusResponse, responseHeaders: statusHeaders } = await (0,
|
|
479
|
+
const { value: statusResponse, responseHeaders: statusHeaders } = await (0, import_provider_utils3.getFromApi)({
|
|
302
480
|
url: statusUrl,
|
|
303
|
-
headers: (0,
|
|
304
|
-
await (0,
|
|
481
|
+
headers: (0, import_provider_utils3.combineHeaders)(
|
|
482
|
+
await (0, import_provider_utils3.resolve)(this.config.headers),
|
|
305
483
|
options.headers
|
|
306
484
|
),
|
|
307
|
-
failedResponseHandler:
|
|
308
|
-
successfulResponseHandler: (0,
|
|
485
|
+
failedResponseHandler: byteDanceFailedResponseHandler2,
|
|
486
|
+
successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
|
|
309
487
|
byteDanceStatusResponseSchema
|
|
310
488
|
),
|
|
311
489
|
abortSignal: options.abortSignal,
|
|
@@ -328,7 +506,7 @@ var ByteDanceVideoModel = class {
|
|
|
328
506
|
message: `Video generation timed out after ${pollTimeoutMs}ms`
|
|
329
507
|
});
|
|
330
508
|
}
|
|
331
|
-
await (0,
|
|
509
|
+
await (0, import_provider_utils3.delay)(pollIntervalMs, { abortSignal: options.abortSignal });
|
|
332
510
|
}
|
|
333
511
|
const videoUrl = (_g = response.content) == null ? void 0 : _g.video_url;
|
|
334
512
|
if (!videoUrl) {
|
|
@@ -360,29 +538,29 @@ var ByteDanceVideoModel = class {
|
|
|
360
538
|
};
|
|
361
539
|
}
|
|
362
540
|
};
|
|
363
|
-
var byteDanceTaskResponseSchema =
|
|
364
|
-
id:
|
|
541
|
+
var byteDanceTaskResponseSchema = import_v43.z.object({
|
|
542
|
+
id: import_v43.z.string().nullish()
|
|
365
543
|
});
|
|
366
|
-
var byteDanceStatusResponseSchema =
|
|
367
|
-
id:
|
|
368
|
-
model:
|
|
369
|
-
status:
|
|
370
|
-
content:
|
|
371
|
-
video_url:
|
|
544
|
+
var byteDanceStatusResponseSchema = import_v43.z.object({
|
|
545
|
+
id: import_v43.z.string().nullish(),
|
|
546
|
+
model: import_v43.z.string().nullish(),
|
|
547
|
+
status: import_v43.z.string(),
|
|
548
|
+
content: import_v43.z.object({
|
|
549
|
+
video_url: import_v43.z.string().nullish()
|
|
372
550
|
}).nullish(),
|
|
373
|
-
usage:
|
|
374
|
-
completion_tokens:
|
|
551
|
+
usage: import_v43.z.object({
|
|
552
|
+
completion_tokens: import_v43.z.number().nullish()
|
|
375
553
|
}).nullish()
|
|
376
554
|
});
|
|
377
|
-
var
|
|
378
|
-
error:
|
|
379
|
-
message:
|
|
380
|
-
code:
|
|
555
|
+
var byteDanceErrorSchema2 = import_v43.z.object({
|
|
556
|
+
error: import_v43.z.object({
|
|
557
|
+
message: import_v43.z.string(),
|
|
558
|
+
code: import_v43.z.string().nullish()
|
|
381
559
|
}).nullish(),
|
|
382
|
-
message:
|
|
560
|
+
message: import_v43.z.string().nullish()
|
|
383
561
|
});
|
|
384
|
-
var
|
|
385
|
-
errorSchema:
|
|
562
|
+
var byteDanceFailedResponseHandler2 = (0, import_provider_utils3.createJsonErrorResponseHandler)({
|
|
563
|
+
errorSchema: byteDanceErrorSchema2,
|
|
386
564
|
errorToMessage: (data) => {
|
|
387
565
|
var _a, _b, _c;
|
|
388
566
|
return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
|
|
@@ -393,9 +571,9 @@ var byteDanceFailedResponseHandler = (0, import_provider_utils.createJsonErrorRe
|
|
|
393
571
|
var defaultBaseURL = "https://ark.ap-southeast.bytepluses.com/api/v3";
|
|
394
572
|
function createByteDance(options = {}) {
|
|
395
573
|
var _a;
|
|
396
|
-
const baseURL = (0,
|
|
574
|
+
const baseURL = (0, import_provider_utils4.withoutTrailingSlash)((_a = options.baseURL) != null ? _a : defaultBaseURL);
|
|
397
575
|
const getHeaders = () => ({
|
|
398
|
-
Authorization: `Bearer ${(0,
|
|
576
|
+
Authorization: `Bearer ${(0, import_provider_utils4.loadApiKey)({
|
|
399
577
|
apiKey: options.apiKey,
|
|
400
578
|
environmentVariableName: "ARK_API_KEY",
|
|
401
579
|
description: "ByteDance ModelArk"
|
|
@@ -409,17 +587,22 @@ function createByteDance(options = {}) {
|
|
|
409
587
|
headers: getHeaders,
|
|
410
588
|
fetch: options.fetch
|
|
411
589
|
});
|
|
590
|
+
const createImageModel = (modelId) => new ByteDanceImageModel(modelId, {
|
|
591
|
+
provider: "bytedance.image",
|
|
592
|
+
baseURL: baseURL != null ? baseURL : defaultBaseURL,
|
|
593
|
+
headers: getHeaders,
|
|
594
|
+
fetch: options.fetch
|
|
595
|
+
});
|
|
412
596
|
return {
|
|
413
597
|
specificationVersion: "v3",
|
|
414
598
|
embeddingModel: (modelId) => {
|
|
415
599
|
throw new import_provider2.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
416
600
|
},
|
|
417
|
-
imageModel: (modelId) => {
|
|
418
|
-
throw new import_provider2.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
419
|
-
},
|
|
420
601
|
languageModel: (modelId) => {
|
|
421
602
|
throw new import_provider2.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
422
603
|
},
|
|
604
|
+
image: createImageModel,
|
|
605
|
+
imageModel: createImageModel,
|
|
423
606
|
video: createVideoModel,
|
|
424
607
|
videoModel: createVideoModel
|
|
425
608
|
};
|
|
@@ -427,9 +610,10 @@ function createByteDance(options = {}) {
|
|
|
427
610
|
var byteDance = createByteDance();
|
|
428
611
|
|
|
429
612
|
// src/version.ts
|
|
430
|
-
var VERSION = true ? "1.0.
|
|
613
|
+
var VERSION = true ? "1.0.27" : "0.0.0-test";
|
|
431
614
|
// Annotate the CommonJS export names for ESM import in node:
|
|
432
615
|
0 && (module.exports = {
|
|
616
|
+
ByteDanceImageModel,
|
|
433
617
|
VERSION,
|
|
434
618
|
byteDance,
|
|
435
619
|
createByteDance
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/bytedance-provider.ts","../src/bytedance-video-model.ts","../src/version.ts"],"sourcesContent":["export type {\n ByteDanceProvider,\n ByteDanceProviderSettings,\n} from './bytedance-provider';\nexport { byteDance, createByteDance } from './bytedance-provider';\nexport type { ByteDanceVideoProviderOptions } from './bytedance-video-model';\nexport type { ByteDanceVideoModelId } from './bytedance-video-settings';\nexport { VERSION } from './version';\n","import {\n type Experimental_VideoModelV3,\n NoSuchModelError,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { ByteDanceVideoModel } from './bytedance-video-model';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\n\nexport interface ByteDanceProviderSettings {\n /**\n * ByteDance Ark API key. Default value is taken from the `ARK_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls.\n * Default: https://ark.ap-southeast.bytepluses.com/api/v3\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept\n * requests, or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ByteDanceProvider extends ProviderV3 {\n /**\n * Creates a model for video generation.\n */\n video(modelId: ByteDanceVideoModelId): Experimental_VideoModelV3;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: ByteDanceVideoModelId): Experimental_VideoModelV3;\n}\n\nconst defaultBaseURL = 'https://ark.ap-southeast.bytepluses.com/api/v3';\n\n/**\n * Create a ByteDance provider instance.\n */\nexport function createByteDance(\n options: ByteDanceProviderSettings = {},\n): ByteDanceProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ARK_API_KEY',\n description: 'ByteDance ModelArk',\n })}`,\n 'Content-Type': 'application/json',\n ...options.headers,\n });\n\n const createVideoModel = (modelId: ByteDanceVideoModelId) =>\n new ByteDanceVideoModel(modelId, {\n provider: 'bytedance.video',\n baseURL: baseURL ?? defaultBaseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n return {\n specificationVersion: 'v3' as const,\n embeddingModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n },\n imageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n },\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n },\n video: createVideoModel,\n videoModel: createVideoModel,\n };\n}\n\n/**\n * Default ByteDance provider instance.\n */\nexport const byteDance = createByteDance();\n","import {\n AISDKError,\n type Experimental_VideoModelV3,\n type Experimental_VideoModelV3File,\n type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n delay,\n getFromApi,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { ByteDanceConfig } from './bytedance-config';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\n\nexport type ByteDanceVideoProviderOptions = {\n watermark?: boolean | null;\n generateAudio?: boolean | null;\n cameraFixed?: boolean | null;\n returnLastFrame?: boolean | null;\n serviceTier?: 'default' | 'flex' | null;\n draft?: boolean | null;\n lastFrameImage?: string | null;\n referenceImages?: string[] | null;\n referenceVideos?: string[] | null;\n referenceAudio?: string[] | null;\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n [key: string]: unknown;\n};\n\nconst HANDLED_PROVIDER_OPTIONS = new Set([\n 'watermark',\n 'generateAudio',\n 'cameraFixed',\n 'returnLastFrame',\n 'serviceTier',\n 'draft',\n 'lastFrameImage',\n 'referenceImages',\n 'referenceVideos',\n 'referenceAudio',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n]);\n\nexport const byteDanceVideoProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n watermark: z.boolean().nullish(),\n generateAudio: z.boolean().nullish(),\n cameraFixed: z.boolean().nullish(),\n returnLastFrame: z.boolean().nullish(),\n serviceTier: z.enum(['default', 'flex']).nullish(),\n draft: z.boolean().nullish(),\n lastFrameImage: z.string().nullish(),\n referenceImages: z.array(z.string()).nullish(),\n referenceVideos: z.array(z.string()).nullish(),\n referenceAudio: z.array(z.string()).nullish(),\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n })\n .passthrough(),\n ),\n);\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '864x496': '480p',\n '496x864': '480p',\n '752x560': '480p',\n '560x752': '480p',\n '640x640': '480p',\n '992x432': '480p',\n '432x992': '480p',\n '864x480': '480p',\n '480x864': '480p',\n '736x544': '480p',\n '544x736': '480p',\n '960x416': '480p',\n '416x960': '480p',\n '832x480': '480p',\n '480x832': '480p',\n '624x624': '480p',\n '1280x720': '720p',\n '720x1280': '720p',\n '1112x834': '720p',\n '834x1112': '720p',\n '960x960': '720p',\n '1470x630': '720p',\n '630x1470': '720p',\n '1248x704': '720p',\n '704x1248': '720p',\n '1120x832': '720p',\n '832x1120': '720p',\n '1504x640': '720p',\n '640x1504': '720p',\n '1920x1080': '1080p',\n '1080x1920': '1080p',\n '1664x1248': '1080p',\n '1248x1664': '1080p',\n '1440x1440': '1080p',\n '2206x946': '1080p',\n '946x2206': '1080p',\n '1920x1088': '1080p',\n '1088x1920': '1080p',\n '2176x928': '1080p',\n '928x2176': '1080p',\n};\n\ninterface ByteDanceVideoModelConfig extends ByteDanceConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nfunction getFirstFrameImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n): Experimental_VideoModelV3File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n): Experimental_VideoModelV3File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nfunction resolveReferenceImages(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n byteDanceOptions: ByteDanceVideoProviderOptions | undefined,\n): string[] {\n if (options.frameImages != null && options.frameImages.length > 0) {\n return [];\n }\n\n const inputReferences = options.inputReferences;\n\n if (inputReferences != null && inputReferences.length > 0) {\n return inputReferences.map(image => convertImageModelFileToDataUri(image));\n }\n\n return byteDanceOptions?.referenceImages ?? [];\n}\n\nfunction resolveLastFrameImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n byteDanceOptions: ByteDanceVideoProviderOptions | undefined,\n): string | undefined {\n const lastFrame = options.frameImages?.find(\n frame => frame.frameType === 'last_frame',\n )?.image;\n\n if (lastFrame != null) {\n return convertImageModelFileToDataUri(lastFrame);\n }\n\n return byteDanceOptions?.lastFrameImage ?? undefined;\n}\n\nexport class ByteDanceVideoModel implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ByteDanceVideoModelId,\n private readonly config: ByteDanceVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV3Warning[] = [];\n\n const byteDanceOptions = (await parseProviderOptions({\n provider: 'bytedance',\n providerOptions: options.providerOptions,\n schema: byteDanceVideoProviderOptionsSchema,\n })) as ByteDanceVideoProviderOptions | undefined;\n\n // Warn about unsupported standard options\n if (options.fps) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details:\n 'ByteDance video models do not support custom FPS. Frame rate is fixed at 24 fps.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'ByteDance video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n const content: Array<Record<string, unknown>> = [];\n\n if (options.prompt != null) {\n content.push({\n type: 'text',\n text: options.prompt,\n });\n }\n\n const startImage = resolveStartImage(options);\n const lastFrameImageUrl = resolveLastFrameImage(options, byteDanceOptions);\n const referenceImageUrls = resolveReferenceImages(\n options,\n byteDanceOptions,\n );\n\n if (startImage != null) {\n content.push({\n type: 'image_url',\n image_url: { url: convertImageModelFileToDataUri(startImage) },\n ...(lastFrameImageUrl != null ? { role: 'first_frame' } : {}),\n });\n }\n\n // Add last frame image if provided\n if (lastFrameImageUrl != null) {\n content.push({\n type: 'image_url',\n image_url: { url: lastFrameImageUrl },\n role: 'last_frame',\n });\n }\n\n // Add reference images if provided\n for (const imageUrl of referenceImageUrls) {\n content.push({\n type: 'image_url',\n image_url: { url: imageUrl },\n role: 'reference_image',\n });\n }\n\n // Add reference videos if provided\n if (\n byteDanceOptions?.referenceVideos != null &&\n byteDanceOptions.referenceVideos.length > 0\n ) {\n for (const videoUrl of byteDanceOptions.referenceVideos) {\n content.push({\n type: 'video_url',\n video_url: { url: videoUrl },\n role: 'reference_video',\n });\n }\n }\n\n // Add reference audio if provided\n if (\n byteDanceOptions?.referenceAudio != null &&\n byteDanceOptions.referenceAudio.length > 0\n ) {\n for (const audioUrl of byteDanceOptions.referenceAudio) {\n content.push({\n type: 'audio_url',\n audio_url: { url: audioUrl },\n role: 'reference_audio',\n });\n }\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n content,\n };\n\n if (options.aspectRatio) {\n body.ratio = options.aspectRatio;\n }\n\n if (options.duration) {\n body.duration = options.duration;\n }\n\n if (options.seed) {\n body.seed = options.seed;\n }\n\n if (options.resolution) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped) {\n body.resolution = mapped;\n } else {\n body.resolution = options.resolution;\n }\n }\n\n const generateAudio =\n options.generateAudio ?? byteDanceOptions?.generateAudio;\n if (generateAudio != null) {\n body.generate_audio = generateAudio;\n }\n\n if (byteDanceOptions != null) {\n if (byteDanceOptions.watermark != null) {\n body.watermark = byteDanceOptions.watermark;\n }\n if (byteDanceOptions.cameraFixed != null) {\n body.camera_fixed = byteDanceOptions.cameraFixed;\n }\n if (byteDanceOptions.returnLastFrame != null) {\n body.return_last_frame = byteDanceOptions.returnLastFrame;\n }\n if (byteDanceOptions.serviceTier != null) {\n body.service_tier = byteDanceOptions.serviceTier;\n }\n if (byteDanceOptions.draft != null) {\n body.draft = byteDanceOptions.draft;\n }\n // Pass through any additional options not explicitly handled\n for (const [key, value] of Object.entries(byteDanceOptions)) {\n if (!HANDLED_PROVIDER_OPTIONS.has(key)) {\n body[key] = value;\n }\n }\n }\n\n const createUrl = `${this.config.baseURL}/contents/generations/tasks`;\n\n const { value: createResponse } = await postJsonToApi({\n url: createUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body,\n failedResponseHandler: byteDanceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n byteDanceTaskResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const taskId = createResponse.id;\n\n if (!taskId) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: 'No task ID returned from API',\n });\n }\n\n const pollIntervalMs = byteDanceOptions?.pollIntervalMs ?? 3000;\n const pollTimeoutMs = byteDanceOptions?.pollTimeoutMs ?? 300000;\n\n const startTime = Date.now();\n let response: ByteDanceResponse;\n let responseHeaders: Record<string, string> | undefined;\n\n while (true) {\n const statusUrl = `${this.config.baseURL}/contents/generations/tasks/${taskId}`;\n\n const { value: statusResponse, responseHeaders: statusHeaders } =\n await getFromApi({\n url: statusUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n failedResponseHandler: byteDanceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n byteDanceStatusResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (statusResponse.status === 'succeeded') {\n response = statusResponse;\n responseHeaders = statusHeaders;\n break;\n }\n\n if (statusResponse.status === 'failed') {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${JSON.stringify(statusResponse)}`,\n });\n }\n\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs, { abortSignal: options.abortSignal });\n }\n\n const videoUrl = response.content?.video_url;\n if (!videoUrl) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: 'No video URL in response',\n });\n }\n\n return {\n videos: [\n {\n type: 'url',\n url: videoUrl,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n bytedance: {\n taskId,\n usage: response.usage,\n },\n },\n };\n }\n}\n\nconst byteDanceTaskResponseSchema = z.object({\n id: z.string().nullish(),\n});\n\ntype ByteDanceResponse = z.infer<typeof byteDanceStatusResponseSchema>;\n\nconst byteDanceStatusResponseSchema = z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n status: z.string(),\n content: z\n .object({\n video_url: z.string().nullish(),\n })\n .nullish(),\n usage: z\n .object({\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst byteDanceErrorSchema = z.object({\n error: z\n .object({\n message: z.string(),\n code: z.string().nullish(),\n })\n .nullish(),\n message: z.string().nullish(),\n});\n\nconst byteDanceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: byteDanceErrorSchema,\n errorToMessage: data =>\n data.error?.message ?? data.message ?? 'Unknown error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","videoUrl"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/bytedance-provider.ts","../src/bytedance-image-model.ts","../src/bytedance-image-model-options.ts","../src/bytedance-video-model.ts","../src/version.ts"],"sourcesContent":["export type {\n ByteDanceProvider,\n ByteDanceProviderSettings,\n} from './bytedance-provider';\nexport { byteDance, createByteDance } from './bytedance-provider';\nexport { ByteDanceImageModel } from './bytedance-image-model';\nexport type { ByteDanceImageModelOptions } from './bytedance-image-model-options';\nexport type { ByteDanceImageModelId } from './bytedance-image-settings';\nexport type { ByteDanceVideoProviderOptions } from './bytedance-video-model';\nexport type { ByteDanceVideoModelId } from './bytedance-video-settings';\nexport { VERSION } from './version';\n","import {\n type Experimental_VideoModelV3,\n type ImageModelV3,\n NoSuchModelError,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { ByteDanceImageModel } from './bytedance-image-model';\nimport type { ByteDanceImageModelId } from './bytedance-image-settings';\nimport { ByteDanceVideoModel } from './bytedance-video-model';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\n\nexport interface ByteDanceProviderSettings {\n /**\n * ByteDance Ark API key. Default value is taken from the `ARK_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls.\n * Default: https://ark.ap-southeast.bytepluses.com/api/v3\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept\n * requests, or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ByteDanceProvider extends ProviderV3 {\n /**\n * Creates a model for video generation.\n */\n video(modelId: ByteDanceVideoModelId): Experimental_VideoModelV3;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: ByteDanceVideoModelId): Experimental_VideoModelV3;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: ByteDanceImageModelId): ImageModelV3;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: ByteDanceImageModelId): ImageModelV3;\n}\n\nconst defaultBaseURL = 'https://ark.ap-southeast.bytepluses.com/api/v3';\n\n/**\n * Create a ByteDance provider instance.\n */\nexport function createByteDance(\n options: ByteDanceProviderSettings = {},\n): ByteDanceProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ARK_API_KEY',\n description: 'ByteDance ModelArk',\n })}`,\n 'Content-Type': 'application/json',\n ...options.headers,\n });\n\n const createVideoModel = (modelId: ByteDanceVideoModelId) =>\n new ByteDanceVideoModel(modelId, {\n provider: 'bytedance.video',\n baseURL: baseURL ?? defaultBaseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createImageModel = (modelId: ByteDanceImageModelId) =>\n new ByteDanceImageModel(modelId, {\n provider: 'bytedance.image',\n baseURL: baseURL ?? defaultBaseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n return {\n specificationVersion: 'v3' as const,\n embeddingModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n },\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n },\n image: createImageModel,\n imageModel: createImageModel,\n video: createVideoModel,\n videoModel: createVideoModel,\n };\n}\n\n/**\n * Default ByteDance provider instance.\n */\nexport const byteDance = createByteDance();\n","import type {\n ImageModelV3,\n ImageModelV3CallOptions,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { ByteDanceConfig } from './bytedance-config';\nimport {\n byteDanceImageModelOptionsSchema,\n type ByteDanceImageModelOptions,\n} from './bytedance-image-model-options';\nimport type { ByteDanceImageModelId } from './bytedance-image-settings';\n\nconst HANDLED_PROVIDER_OPTIONS = new Set([\n 'watermark',\n 'outputFormat',\n 'size',\n 'sequentialImageGeneration',\n 'maxImages',\n 'optimizePromptMode',\n]);\n\ninterface ByteDanceImageModelConfig extends ByteDanceConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ByteDanceImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n // The API has no output-count parameter, so a single call returns one image;\n // `generateImage` fans `n` out into `n` calls. Batches of related images are\n // available via the `sequentialImageGeneration` provider option instead.\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ByteDanceImageModelId,\n private readonly config: ByteDanceImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: ImageModelV3CallOptions): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details:\n 'ByteDance does not support aspectRatio. Use `size` (e.g. \"2048x2048\" ' +\n 'or a resolution level like \"2K\" via providerOptions) instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n details:\n 'ByteDance Seedream does not support a separate mask. Provide edit ' +\n 'instructions in the prompt, optionally with markings on the input image.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const byteDanceOptions = (await parseProviderOptions({\n provider: 'bytedance',\n providerOptions,\n schema: byteDanceImageModelOptionsSchema,\n })) as ByteDanceImageModelOptions | undefined;\n\n const image =\n files != null && files.length > 0\n ? files.length === 1\n ? convertImageModelFileToDataUri(files[0])\n : files.map(convertImageModelFileToDataUri)\n : undefined;\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt,\n };\n\n if (image != null) {\n body.image = image;\n }\n\n if (size != null) {\n body.size = size;\n }\n\n if (byteDanceOptions != null) {\n if (byteDanceOptions.watermark != null) {\n body.watermark = byteDanceOptions.watermark;\n }\n if (byteDanceOptions.outputFormat != null) {\n body.output_format = byteDanceOptions.outputFormat;\n }\n // A resolution level (e.g. \"2K\") overrides the top-level pixel size.\n if (byteDanceOptions.size != null) {\n body.size = byteDanceOptions.size;\n }\n if (byteDanceOptions.sequentialImageGeneration != null) {\n body.sequential_image_generation =\n byteDanceOptions.sequentialImageGeneration;\n }\n if (byteDanceOptions.maxImages != null) {\n body.sequential_image_generation_options = {\n max_images: byteDanceOptions.maxImages,\n };\n }\n if (byteDanceOptions.optimizePromptMode != null) {\n body.optimize_prompt_options = {\n mode: byteDanceOptions.optimizePromptMode,\n };\n }\n // Pass through any additional options not explicitly handled above.\n for (const [key, value] of Object.entries(byteDanceOptions)) {\n if (!HANDLED_PROVIDER_OPTIONS.has(key)) {\n body[key] = value;\n }\n }\n }\n\n // Always request base64 so the SDK receives the image bytes; this is not\n // user-overridable.\n body.response_format = 'b64_json';\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(await resolve(this.config.headers), headers),\n body,\n failedResponseHandler: byteDanceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n byteDanceImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// Minimal schema focused on what the implementation needs. This limits\n// breakages when the API adds fields and keeps parsing efficient.\nconst byteDanceImageResponseSchema = z.object({\n data: z.array(z.object({ b64_json: z.string() })),\n});\n\nconst byteDanceErrorSchema = z.object({\n error: z\n .object({\n message: z.string(),\n code: z.string().nullish(),\n })\n .nullish(),\n message: z.string().nullish(),\n});\n\nconst byteDanceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: byteDanceErrorSchema,\n errorToMessage: data =>\n data.error?.message ?? data.message ?? 'Unknown error',\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type ByteDanceImageModelOptions = {\n /**\n * Whether to add an \"AI generated\" watermark to the bottom-right corner of\n * the output image.\n */\n watermark?: boolean | null;\n\n /**\n * Format of the generated image file. Supported by `seedream-5-0` and\n * `dola-seedream-5-0-pro`; `seedream-4-5` / `seedream-4-0` always return\n * `jpeg`.\n */\n outputFormat?: 'png' | 'jpeg' | null;\n\n /**\n * A resolution level (e.g. `1K`, `2K`, `3K`, `4K`) as an alternative to\n * passing pixel dimensions via the top-level `size` parameter. When set, this\n * overrides the top-level `size`. Available levels vary by model.\n */\n size?: string | null;\n\n /**\n * Set to `'auto'` to generate a batch of related images (e.g. storyboards or\n * brand visuals). Defaults to `'disabled'` (single image).\n */\n sequentialImageGeneration?: 'auto' | 'disabled' | null;\n\n /**\n * Maximum number of images to generate when `sequentialImageGeneration` is\n * `'auto'`. The number of input reference images plus generated images must\n * not exceed the model's limit.\n */\n maxImages?: number | null;\n\n /**\n * Prompt optimization mode. `seedream-4-0` supports both `'standard'` and\n * `'fast'`; other models support `'standard'` only.\n */\n optimizePromptMode?: 'standard' | 'fast' | null;\n\n [key: string]: unknown;\n};\n\nexport const byteDanceImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n watermark: z.boolean().nullish(),\n outputFormat: z.enum(['png', 'jpeg']).nullish(),\n size: z.string().nullish(),\n sequentialImageGeneration: z.enum(['auto', 'disabled']).nullish(),\n maxImages: z.number().int().positive().nullish(),\n optimizePromptMode: z.enum(['standard', 'fast']).nullish(),\n }),\n ),\n);\n","import {\n AISDKError,\n type Experimental_VideoModelV3,\n type Experimental_VideoModelV3File,\n type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n delay,\n getFromApi,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { ByteDanceConfig } from './bytedance-config';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\n\nexport type ByteDanceVideoProviderOptions = {\n watermark?: boolean | null;\n generateAudio?: boolean | null;\n cameraFixed?: boolean | null;\n returnLastFrame?: boolean | null;\n serviceTier?: 'default' | 'flex' | null;\n draft?: boolean | null;\n lastFrameImage?: string | null;\n referenceImages?: string[] | null;\n referenceVideos?: string[] | null;\n referenceAudio?: string[] | null;\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n [key: string]: unknown;\n};\n\nconst HANDLED_PROVIDER_OPTIONS = new Set([\n 'watermark',\n 'generateAudio',\n 'cameraFixed',\n 'returnLastFrame',\n 'serviceTier',\n 'draft',\n 'lastFrameImage',\n 'referenceImages',\n 'referenceVideos',\n 'referenceAudio',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n]);\n\nexport const byteDanceVideoProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n watermark: z.boolean().nullish(),\n generateAudio: z.boolean().nullish(),\n cameraFixed: z.boolean().nullish(),\n returnLastFrame: z.boolean().nullish(),\n serviceTier: z.enum(['default', 'flex']).nullish(),\n draft: z.boolean().nullish(),\n lastFrameImage: z.string().nullish(),\n referenceImages: z.array(z.string()).nullish(),\n referenceVideos: z.array(z.string()).nullish(),\n referenceAudio: z.array(z.string()).nullish(),\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n })\n .passthrough(),\n ),\n);\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '864x496': '480p',\n '496x864': '480p',\n '752x560': '480p',\n '560x752': '480p',\n '640x640': '480p',\n '992x432': '480p',\n '432x992': '480p',\n '864x480': '480p',\n '480x864': '480p',\n '736x544': '480p',\n '544x736': '480p',\n '960x416': '480p',\n '416x960': '480p',\n '832x480': '480p',\n '480x832': '480p',\n '624x624': '480p',\n '1280x720': '720p',\n '720x1280': '720p',\n '1112x834': '720p',\n '834x1112': '720p',\n '960x960': '720p',\n '1470x630': '720p',\n '630x1470': '720p',\n '1248x704': '720p',\n '704x1248': '720p',\n '1120x832': '720p',\n '832x1120': '720p',\n '1504x640': '720p',\n '640x1504': '720p',\n '1920x1080': '1080p',\n '1080x1920': '1080p',\n '1664x1248': '1080p',\n '1248x1664': '1080p',\n '1440x1440': '1080p',\n '2206x946': '1080p',\n '946x2206': '1080p',\n '1920x1088': '1080p',\n '1088x1920': '1080p',\n '2176x928': '1080p',\n '928x2176': '1080p',\n};\n\ninterface ByteDanceVideoModelConfig extends ByteDanceConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nfunction getFirstFrameImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n): Experimental_VideoModelV3File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n): Experimental_VideoModelV3File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nfunction getTopLevelMediaType(mediaType: string): string {\n const slashIndex = mediaType.indexOf('/');\n return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);\n}\n\nconst isVideoFile = (f: Experimental_VideoModelV3File) =>\n f.mediaType != null && getTopLevelMediaType(f.mediaType) === 'video';\n\nfunction resolveReferenceContent(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n byteDanceOptions: ByteDanceVideoProviderOptions | undefined,\n warnings: SharedV3Warning[],\n): Array<Record<string, unknown>> {\n if (options.frameImages != null && options.frameImages.length > 0) {\n return [];\n }\n\n const inputReferences = options.inputReferences;\n\n if (inputReferences != null && inputReferences.length > 0) {\n return inputReferences.map(reference => {\n if (reference.type === 'url' && reference.mediaType == null) {\n warnings.push({\n type: 'unsupported',\n feature: 'inputReferences',\n details:\n 'ByteDance requires an explicit mediaType to route URL references as ' +\n 'video or image. Pass { data: url, mediaType: \"video/mp4\" } for video ' +\n 'references. The reference was treated as an image.',\n });\n }\n\n const url = convertImageModelFileToDataUri(reference);\n return isVideoFile(reference)\n ? { type: 'video_url', video_url: { url }, role: 'reference_video' }\n : { type: 'image_url', image_url: { url }, role: 'reference_image' };\n });\n }\n\n const content: Array<Record<string, unknown>> = [];\n\n for (const imageUrl of byteDanceOptions?.referenceImages ?? []) {\n content.push({\n type: 'image_url',\n image_url: { url: imageUrl },\n role: 'reference_image',\n });\n }\n\n for (const videoUrl of byteDanceOptions?.referenceVideos ?? []) {\n content.push({\n type: 'video_url',\n video_url: { url: videoUrl },\n role: 'reference_video',\n });\n }\n\n return content;\n}\n\nfunction resolveLastFrameImage(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n byteDanceOptions: ByteDanceVideoProviderOptions | undefined,\n): string | undefined {\n const lastFrame = options.frameImages?.find(\n frame => frame.frameType === 'last_frame',\n )?.image;\n\n if (lastFrame != null) {\n return convertImageModelFileToDataUri(lastFrame);\n }\n\n return byteDanceOptions?.lastFrameImage ?? undefined;\n}\n\nexport class ByteDanceVideoModel implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ByteDanceVideoModelId,\n private readonly config: ByteDanceVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV3Warning[] = [];\n\n const byteDanceOptions = (await parseProviderOptions({\n provider: 'bytedance',\n providerOptions: options.providerOptions,\n schema: byteDanceVideoProviderOptionsSchema,\n })) as ByteDanceVideoProviderOptions | undefined;\n\n // Warn about unsupported standard options\n if (options.fps) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details:\n 'ByteDance video models do not support custom FPS. Frame rate is fixed at 24 fps.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'ByteDance video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n const content: Array<Record<string, unknown>> = [];\n\n if (options.prompt != null) {\n content.push({\n type: 'text',\n text: options.prompt,\n });\n }\n\n const startImage = resolveStartImage(options);\n const lastFrameImageUrl = resolveLastFrameImage(options, byteDanceOptions);\n const referenceContent = resolveReferenceContent(\n options,\n byteDanceOptions,\n warnings,\n );\n\n if (startImage != null) {\n content.push({\n type: 'image_url',\n image_url: { url: convertImageModelFileToDataUri(startImage) },\n ...(lastFrameImageUrl != null ? { role: 'first_frame' } : {}),\n });\n }\n\n // Add last frame image if provided\n if (lastFrameImageUrl != null) {\n content.push({\n type: 'image_url',\n image_url: { url: lastFrameImageUrl },\n role: 'last_frame',\n });\n }\n\n for (const entry of referenceContent) {\n content.push(entry);\n }\n\n // Add reference audio if provided\n if (\n byteDanceOptions?.referenceAudio != null &&\n byteDanceOptions.referenceAudio.length > 0\n ) {\n for (const audioUrl of byteDanceOptions.referenceAudio) {\n content.push({\n type: 'audio_url',\n audio_url: { url: audioUrl },\n role: 'reference_audio',\n });\n }\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n content,\n };\n\n if (options.aspectRatio) {\n body.ratio = options.aspectRatio;\n }\n\n if (options.duration) {\n body.duration = options.duration;\n }\n\n if (options.seed) {\n body.seed = options.seed;\n }\n\n if (options.resolution) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped) {\n body.resolution = mapped;\n } else {\n body.resolution = options.resolution;\n }\n }\n\n const generateAudio =\n options.generateAudio ?? byteDanceOptions?.generateAudio;\n if (generateAudio != null) {\n body.generate_audio = generateAudio;\n }\n\n if (byteDanceOptions != null) {\n if (byteDanceOptions.watermark != null) {\n body.watermark = byteDanceOptions.watermark;\n }\n if (byteDanceOptions.cameraFixed != null) {\n body.camera_fixed = byteDanceOptions.cameraFixed;\n }\n if (byteDanceOptions.returnLastFrame != null) {\n body.return_last_frame = byteDanceOptions.returnLastFrame;\n }\n if (byteDanceOptions.serviceTier != null) {\n body.service_tier = byteDanceOptions.serviceTier;\n }\n if (byteDanceOptions.draft != null) {\n body.draft = byteDanceOptions.draft;\n }\n // Pass through any additional options not explicitly handled\n for (const [key, value] of Object.entries(byteDanceOptions)) {\n if (!HANDLED_PROVIDER_OPTIONS.has(key)) {\n body[key] = value;\n }\n }\n }\n\n const createUrl = `${this.config.baseURL}/contents/generations/tasks`;\n\n const { value: createResponse } = await postJsonToApi({\n url: createUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body,\n failedResponseHandler: byteDanceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n byteDanceTaskResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const taskId = createResponse.id;\n\n if (!taskId) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: 'No task ID returned from API',\n });\n }\n\n const pollIntervalMs = byteDanceOptions?.pollIntervalMs ?? 3000;\n const pollTimeoutMs = byteDanceOptions?.pollTimeoutMs ?? 300000;\n\n const startTime = Date.now();\n let response: ByteDanceResponse;\n let responseHeaders: Record<string, string> | undefined;\n\n while (true) {\n const statusUrl = `${this.config.baseURL}/contents/generations/tasks/${taskId}`;\n\n const { value: statusResponse, responseHeaders: statusHeaders } =\n await getFromApi({\n url: statusUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n failedResponseHandler: byteDanceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n byteDanceStatusResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (statusResponse.status === 'succeeded') {\n response = statusResponse;\n responseHeaders = statusHeaders;\n break;\n }\n\n if (statusResponse.status === 'failed') {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${JSON.stringify(statusResponse)}`,\n });\n }\n\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs, { abortSignal: options.abortSignal });\n }\n\n const videoUrl = response.content?.video_url;\n if (!videoUrl) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: 'No video URL in response',\n });\n }\n\n return {\n videos: [\n {\n type: 'url',\n url: videoUrl,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n bytedance: {\n taskId,\n usage: response.usage,\n },\n },\n };\n }\n}\n\nconst byteDanceTaskResponseSchema = z.object({\n id: z.string().nullish(),\n});\n\ntype ByteDanceResponse = z.infer<typeof byteDanceStatusResponseSchema>;\n\nconst byteDanceStatusResponseSchema = z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n status: z.string(),\n content: z\n .object({\n video_url: z.string().nullish(),\n })\n .nullish(),\n usage: z\n .object({\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst byteDanceErrorSchema = z.object({\n error: z\n .object({\n message: z.string(),\n code: z.string().nullish(),\n })\n .nullish(),\n message: z.string().nullish(),\n});\n\nconst byteDanceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: byteDanceErrorSchema,\n errorToMessage: data =>\n data.error?.message ?? data.message ?? 'Unknown error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","HANDLED_PROVIDER_OPTIONS","byteDanceFailedResponseHandler","byteDanceErrorSchema"]}
|