@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.mjs
CHANGED
|
@@ -7,25 +7,192 @@ import {
|
|
|
7
7
|
withoutTrailingSlash
|
|
8
8
|
} from "@ai-sdk/provider-utils";
|
|
9
9
|
|
|
10
|
-
// src/bytedance-
|
|
11
|
-
import {
|
|
12
|
-
AISDKError
|
|
13
|
-
} from "@ai-sdk/provider";
|
|
10
|
+
// src/bytedance-image-model.ts
|
|
14
11
|
import {
|
|
15
12
|
combineHeaders,
|
|
16
13
|
convertImageModelFileToDataUri,
|
|
17
14
|
createJsonErrorResponseHandler,
|
|
18
15
|
createJsonResponseHandler,
|
|
19
|
-
delay,
|
|
20
|
-
getFromApi,
|
|
21
|
-
lazySchema,
|
|
22
16
|
parseProviderOptions,
|
|
23
17
|
postJsonToApi,
|
|
24
|
-
resolve
|
|
25
|
-
zodSchema
|
|
18
|
+
resolve
|
|
26
19
|
} from "@ai-sdk/provider-utils";
|
|
20
|
+
import { z as z2 } from "zod/v4";
|
|
21
|
+
|
|
22
|
+
// src/bytedance-image-model-options.ts
|
|
23
|
+
import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
|
|
27
24
|
import { z } from "zod/v4";
|
|
25
|
+
var byteDanceImageModelOptionsSchema = lazySchema(
|
|
26
|
+
() => zodSchema(
|
|
27
|
+
z.looseObject({
|
|
28
|
+
watermark: z.boolean().nullish(),
|
|
29
|
+
outputFormat: z.enum(["png", "jpeg"]).nullish(),
|
|
30
|
+
size: z.string().nullish(),
|
|
31
|
+
sequentialImageGeneration: z.enum(["auto", "disabled"]).nullish(),
|
|
32
|
+
maxImages: z.number().int().positive().nullish(),
|
|
33
|
+
optimizePromptMode: z.enum(["standard", "fast"]).nullish()
|
|
34
|
+
})
|
|
35
|
+
)
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// src/bytedance-image-model.ts
|
|
28
39
|
var HANDLED_PROVIDER_OPTIONS = /* @__PURE__ */ new Set([
|
|
40
|
+
"watermark",
|
|
41
|
+
"outputFormat",
|
|
42
|
+
"size",
|
|
43
|
+
"sequentialImageGeneration",
|
|
44
|
+
"maxImages",
|
|
45
|
+
"optimizePromptMode"
|
|
46
|
+
]);
|
|
47
|
+
var ByteDanceImageModel = class {
|
|
48
|
+
constructor(modelId, config) {
|
|
49
|
+
this.modelId = modelId;
|
|
50
|
+
this.config = config;
|
|
51
|
+
this.specificationVersion = "v3";
|
|
52
|
+
// The API has no output-count parameter, so a single call returns one image;
|
|
53
|
+
// `generateImage` fans `n` out into `n` calls. Batches of related images are
|
|
54
|
+
// available via the `sequentialImageGeneration` provider option instead.
|
|
55
|
+
this.maxImagesPerCall = 1;
|
|
56
|
+
}
|
|
57
|
+
get provider() {
|
|
58
|
+
return this.config.provider;
|
|
59
|
+
}
|
|
60
|
+
async doGenerate({
|
|
61
|
+
prompt,
|
|
62
|
+
size,
|
|
63
|
+
aspectRatio,
|
|
64
|
+
seed,
|
|
65
|
+
providerOptions,
|
|
66
|
+
headers,
|
|
67
|
+
abortSignal,
|
|
68
|
+
files,
|
|
69
|
+
mask
|
|
70
|
+
}) {
|
|
71
|
+
var _a, _b, _c;
|
|
72
|
+
const warnings = [];
|
|
73
|
+
if (aspectRatio != null) {
|
|
74
|
+
warnings.push({
|
|
75
|
+
type: "unsupported",
|
|
76
|
+
feature: "aspectRatio",
|
|
77
|
+
details: 'ByteDance does not support aspectRatio. Use `size` (e.g. "2048x2048" or a resolution level like "2K" via providerOptions) instead.'
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (seed != null) {
|
|
81
|
+
warnings.push({ type: "unsupported", feature: "seed" });
|
|
82
|
+
}
|
|
83
|
+
if (mask != null) {
|
|
84
|
+
warnings.push({
|
|
85
|
+
type: "unsupported",
|
|
86
|
+
feature: "mask",
|
|
87
|
+
details: "ByteDance Seedream does not support a separate mask. Provide edit instructions in the prompt, optionally with markings on the input image."
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
91
|
+
const byteDanceOptions = await parseProviderOptions({
|
|
92
|
+
provider: "bytedance",
|
|
93
|
+
providerOptions,
|
|
94
|
+
schema: byteDanceImageModelOptionsSchema
|
|
95
|
+
});
|
|
96
|
+
const image = files != null && files.length > 0 ? files.length === 1 ? convertImageModelFileToDataUri(files[0]) : files.map(convertImageModelFileToDataUri) : void 0;
|
|
97
|
+
const body = {
|
|
98
|
+
model: this.modelId,
|
|
99
|
+
prompt
|
|
100
|
+
};
|
|
101
|
+
if (image != null) {
|
|
102
|
+
body.image = image;
|
|
103
|
+
}
|
|
104
|
+
if (size != null) {
|
|
105
|
+
body.size = size;
|
|
106
|
+
}
|
|
107
|
+
if (byteDanceOptions != null) {
|
|
108
|
+
if (byteDanceOptions.watermark != null) {
|
|
109
|
+
body.watermark = byteDanceOptions.watermark;
|
|
110
|
+
}
|
|
111
|
+
if (byteDanceOptions.outputFormat != null) {
|
|
112
|
+
body.output_format = byteDanceOptions.outputFormat;
|
|
113
|
+
}
|
|
114
|
+
if (byteDanceOptions.size != null) {
|
|
115
|
+
body.size = byteDanceOptions.size;
|
|
116
|
+
}
|
|
117
|
+
if (byteDanceOptions.sequentialImageGeneration != null) {
|
|
118
|
+
body.sequential_image_generation = byteDanceOptions.sequentialImageGeneration;
|
|
119
|
+
}
|
|
120
|
+
if (byteDanceOptions.maxImages != null) {
|
|
121
|
+
body.sequential_image_generation_options = {
|
|
122
|
+
max_images: byteDanceOptions.maxImages
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (byteDanceOptions.optimizePromptMode != null) {
|
|
126
|
+
body.optimize_prompt_options = {
|
|
127
|
+
mode: byteDanceOptions.optimizePromptMode
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
for (const [key, value] of Object.entries(byteDanceOptions)) {
|
|
131
|
+
if (!HANDLED_PROVIDER_OPTIONS.has(key)) {
|
|
132
|
+
body[key] = value;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
body.response_format = "b64_json";
|
|
137
|
+
const { value: response, responseHeaders } = await postJsonToApi({
|
|
138
|
+
url: `${this.config.baseURL}/images/generations`,
|
|
139
|
+
headers: combineHeaders(await resolve(this.config.headers), headers),
|
|
140
|
+
body,
|
|
141
|
+
failedResponseHandler: byteDanceFailedResponseHandler,
|
|
142
|
+
successfulResponseHandler: createJsonResponseHandler(
|
|
143
|
+
byteDanceImageResponseSchema
|
|
144
|
+
),
|
|
145
|
+
abortSignal,
|
|
146
|
+
fetch: this.config.fetch
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
images: response.data.map((item) => item.b64_json),
|
|
150
|
+
warnings,
|
|
151
|
+
response: {
|
|
152
|
+
timestamp: currentDate,
|
|
153
|
+
modelId: this.modelId,
|
|
154
|
+
headers: responseHeaders
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var byteDanceImageResponseSchema = z2.object({
|
|
160
|
+
data: z2.array(z2.object({ b64_json: z2.string() }))
|
|
161
|
+
});
|
|
162
|
+
var byteDanceErrorSchema = z2.object({
|
|
163
|
+
error: z2.object({
|
|
164
|
+
message: z2.string(),
|
|
165
|
+
code: z2.string().nullish()
|
|
166
|
+
}).nullish(),
|
|
167
|
+
message: z2.string().nullish()
|
|
168
|
+
});
|
|
169
|
+
var byteDanceFailedResponseHandler = createJsonErrorResponseHandler({
|
|
170
|
+
errorSchema: byteDanceErrorSchema,
|
|
171
|
+
errorToMessage: (data) => {
|
|
172
|
+
var _a, _b, _c;
|
|
173
|
+
return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// src/bytedance-video-model.ts
|
|
178
|
+
import {
|
|
179
|
+
AISDKError
|
|
180
|
+
} from "@ai-sdk/provider";
|
|
181
|
+
import {
|
|
182
|
+
combineHeaders as combineHeaders2,
|
|
183
|
+
convertImageModelFileToDataUri as convertImageModelFileToDataUri2,
|
|
184
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
|
|
185
|
+
createJsonResponseHandler as createJsonResponseHandler2,
|
|
186
|
+
delay,
|
|
187
|
+
getFromApi,
|
|
188
|
+
lazySchema as lazySchema2,
|
|
189
|
+
parseProviderOptions as parseProviderOptions2,
|
|
190
|
+
postJsonToApi as postJsonToApi2,
|
|
191
|
+
resolve as resolve2,
|
|
192
|
+
zodSchema as zodSchema2
|
|
193
|
+
} from "@ai-sdk/provider-utils";
|
|
194
|
+
import { z as z3 } from "zod/v4";
|
|
195
|
+
var HANDLED_PROVIDER_OPTIONS2 = /* @__PURE__ */ new Set([
|
|
29
196
|
"watermark",
|
|
30
197
|
"generateAudio",
|
|
31
198
|
"cameraFixed",
|
|
@@ -39,21 +206,21 @@ var HANDLED_PROVIDER_OPTIONS = /* @__PURE__ */ new Set([
|
|
|
39
206
|
"pollIntervalMs",
|
|
40
207
|
"pollTimeoutMs"
|
|
41
208
|
]);
|
|
42
|
-
var byteDanceVideoProviderOptionsSchema =
|
|
43
|
-
() =>
|
|
44
|
-
|
|
45
|
-
watermark:
|
|
46
|
-
generateAudio:
|
|
47
|
-
cameraFixed:
|
|
48
|
-
returnLastFrame:
|
|
49
|
-
serviceTier:
|
|
50
|
-
draft:
|
|
51
|
-
lastFrameImage:
|
|
52
|
-
referenceImages:
|
|
53
|
-
referenceVideos:
|
|
54
|
-
referenceAudio:
|
|
55
|
-
pollIntervalMs:
|
|
56
|
-
pollTimeoutMs:
|
|
209
|
+
var byteDanceVideoProviderOptionsSchema = lazySchema2(
|
|
210
|
+
() => zodSchema2(
|
|
211
|
+
z3.object({
|
|
212
|
+
watermark: z3.boolean().nullish(),
|
|
213
|
+
generateAudio: z3.boolean().nullish(),
|
|
214
|
+
cameraFixed: z3.boolean().nullish(),
|
|
215
|
+
returnLastFrame: z3.boolean().nullish(),
|
|
216
|
+
serviceTier: z3.enum(["default", "flex"]).nullish(),
|
|
217
|
+
draft: z3.boolean().nullish(),
|
|
218
|
+
lastFrameImage: z3.string().nullish(),
|
|
219
|
+
referenceImages: z3.array(z3.string()).nullish(),
|
|
220
|
+
referenceVideos: z3.array(z3.string()).nullish(),
|
|
221
|
+
referenceAudio: z3.array(z3.string()).nullish(),
|
|
222
|
+
pollIntervalMs: z3.number().positive().nullish(),
|
|
223
|
+
pollTimeoutMs: z3.number().positive().nullish()
|
|
57
224
|
}).passthrough()
|
|
58
225
|
)
|
|
59
226
|
);
|
|
@@ -107,16 +274,46 @@ function resolveStartImage(options) {
|
|
|
107
274
|
var _a;
|
|
108
275
|
return (_a = getFirstFrameImage(options)) != null ? _a : options.image;
|
|
109
276
|
}
|
|
110
|
-
function
|
|
111
|
-
|
|
277
|
+
function getTopLevelMediaType(mediaType) {
|
|
278
|
+
const slashIndex = mediaType.indexOf("/");
|
|
279
|
+
return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);
|
|
280
|
+
}
|
|
281
|
+
var isVideoFile = (f) => f.mediaType != null && getTopLevelMediaType(f.mediaType) === "video";
|
|
282
|
+
function resolveReferenceContent(options, byteDanceOptions, warnings) {
|
|
283
|
+
var _a, _b;
|
|
112
284
|
if (options.frameImages != null && options.frameImages.length > 0) {
|
|
113
285
|
return [];
|
|
114
286
|
}
|
|
115
287
|
const inputReferences = options.inputReferences;
|
|
116
288
|
if (inputReferences != null && inputReferences.length > 0) {
|
|
117
|
-
return inputReferences.map((
|
|
289
|
+
return inputReferences.map((reference) => {
|
|
290
|
+
if (reference.type === "url" && reference.mediaType == null) {
|
|
291
|
+
warnings.push({
|
|
292
|
+
type: "unsupported",
|
|
293
|
+
feature: "inputReferences",
|
|
294
|
+
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.'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
const url = convertImageModelFileToDataUri2(reference);
|
|
298
|
+
return isVideoFile(reference) ? { type: "video_url", video_url: { url }, role: "reference_video" } : { type: "image_url", image_url: { url }, role: "reference_image" };
|
|
299
|
+
});
|
|
118
300
|
}
|
|
119
|
-
|
|
301
|
+
const content = [];
|
|
302
|
+
for (const imageUrl of (_a = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceImages) != null ? _a : []) {
|
|
303
|
+
content.push({
|
|
304
|
+
type: "image_url",
|
|
305
|
+
image_url: { url: imageUrl },
|
|
306
|
+
role: "reference_image"
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
for (const videoUrl of (_b = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceVideos) != null ? _b : []) {
|
|
310
|
+
content.push({
|
|
311
|
+
type: "video_url",
|
|
312
|
+
video_url: { url: videoUrl },
|
|
313
|
+
role: "reference_video"
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
return content;
|
|
120
317
|
}
|
|
121
318
|
function resolveLastFrameImage(options, byteDanceOptions) {
|
|
122
319
|
var _a, _b, _c;
|
|
@@ -124,7 +321,7 @@ function resolveLastFrameImage(options, byteDanceOptions) {
|
|
|
124
321
|
(frame) => frame.frameType === "last_frame"
|
|
125
322
|
)) == null ? void 0 : _b.image;
|
|
126
323
|
if (lastFrame != null) {
|
|
127
|
-
return
|
|
324
|
+
return convertImageModelFileToDataUri2(lastFrame);
|
|
128
325
|
}
|
|
129
326
|
return (_c = byteDanceOptions == null ? void 0 : byteDanceOptions.lastFrameImage) != null ? _c : void 0;
|
|
130
327
|
}
|
|
@@ -142,7 +339,7 @@ var ByteDanceVideoModel = class {
|
|
|
142
339
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
143
340
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
144
341
|
const warnings = [];
|
|
145
|
-
const byteDanceOptions = await
|
|
342
|
+
const byteDanceOptions = await parseProviderOptions2({
|
|
146
343
|
provider: "bytedance",
|
|
147
344
|
providerOptions: options.providerOptions,
|
|
148
345
|
schema: byteDanceVideoProviderOptionsSchema
|
|
@@ -170,14 +367,15 @@ var ByteDanceVideoModel = class {
|
|
|
170
367
|
}
|
|
171
368
|
const startImage = resolveStartImage(options);
|
|
172
369
|
const lastFrameImageUrl = resolveLastFrameImage(options, byteDanceOptions);
|
|
173
|
-
const
|
|
370
|
+
const referenceContent = resolveReferenceContent(
|
|
174
371
|
options,
|
|
175
|
-
byteDanceOptions
|
|
372
|
+
byteDanceOptions,
|
|
373
|
+
warnings
|
|
176
374
|
);
|
|
177
375
|
if (startImage != null) {
|
|
178
376
|
content.push({
|
|
179
377
|
type: "image_url",
|
|
180
|
-
image_url: { url:
|
|
378
|
+
image_url: { url: convertImageModelFileToDataUri2(startImage) },
|
|
181
379
|
...lastFrameImageUrl != null ? { role: "first_frame" } : {}
|
|
182
380
|
});
|
|
183
381
|
}
|
|
@@ -188,21 +386,8 @@ var ByteDanceVideoModel = class {
|
|
|
188
386
|
role: "last_frame"
|
|
189
387
|
});
|
|
190
388
|
}
|
|
191
|
-
for (const
|
|
192
|
-
content.push(
|
|
193
|
-
type: "image_url",
|
|
194
|
-
image_url: { url: imageUrl },
|
|
195
|
-
role: "reference_image"
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
if ((byteDanceOptions == null ? void 0 : byteDanceOptions.referenceVideos) != null && byteDanceOptions.referenceVideos.length > 0) {
|
|
199
|
-
for (const videoUrl2 of byteDanceOptions.referenceVideos) {
|
|
200
|
-
content.push({
|
|
201
|
-
type: "video_url",
|
|
202
|
-
video_url: { url: videoUrl2 },
|
|
203
|
-
role: "reference_video"
|
|
204
|
-
});
|
|
205
|
-
}
|
|
389
|
+
for (const entry of referenceContent) {
|
|
390
|
+
content.push(entry);
|
|
206
391
|
}
|
|
207
392
|
if ((byteDanceOptions == null ? void 0 : byteDanceOptions.referenceAudio) != null && byteDanceOptions.referenceAudio.length > 0) {
|
|
208
393
|
for (const audioUrl of byteDanceOptions.referenceAudio) {
|
|
@@ -255,21 +440,21 @@ var ByteDanceVideoModel = class {
|
|
|
255
440
|
body.draft = byteDanceOptions.draft;
|
|
256
441
|
}
|
|
257
442
|
for (const [key, value] of Object.entries(byteDanceOptions)) {
|
|
258
|
-
if (!
|
|
443
|
+
if (!HANDLED_PROVIDER_OPTIONS2.has(key)) {
|
|
259
444
|
body[key] = value;
|
|
260
445
|
}
|
|
261
446
|
}
|
|
262
447
|
}
|
|
263
448
|
const createUrl = `${this.config.baseURL}/contents/generations/tasks`;
|
|
264
|
-
const { value: createResponse } = await
|
|
449
|
+
const { value: createResponse } = await postJsonToApi2({
|
|
265
450
|
url: createUrl,
|
|
266
|
-
headers:
|
|
267
|
-
await
|
|
451
|
+
headers: combineHeaders2(
|
|
452
|
+
await resolve2(this.config.headers),
|
|
268
453
|
options.headers
|
|
269
454
|
),
|
|
270
455
|
body,
|
|
271
|
-
failedResponseHandler:
|
|
272
|
-
successfulResponseHandler:
|
|
456
|
+
failedResponseHandler: byteDanceFailedResponseHandler2,
|
|
457
|
+
successfulResponseHandler: createJsonResponseHandler2(
|
|
273
458
|
byteDanceTaskResponseSchema
|
|
274
459
|
),
|
|
275
460
|
abortSignal: options.abortSignal,
|
|
@@ -291,12 +476,12 @@ var ByteDanceVideoModel = class {
|
|
|
291
476
|
const statusUrl = `${this.config.baseURL}/contents/generations/tasks/${taskId}`;
|
|
292
477
|
const { value: statusResponse, responseHeaders: statusHeaders } = await getFromApi({
|
|
293
478
|
url: statusUrl,
|
|
294
|
-
headers:
|
|
295
|
-
await
|
|
479
|
+
headers: combineHeaders2(
|
|
480
|
+
await resolve2(this.config.headers),
|
|
296
481
|
options.headers
|
|
297
482
|
),
|
|
298
|
-
failedResponseHandler:
|
|
299
|
-
successfulResponseHandler:
|
|
483
|
+
failedResponseHandler: byteDanceFailedResponseHandler2,
|
|
484
|
+
successfulResponseHandler: createJsonResponseHandler2(
|
|
300
485
|
byteDanceStatusResponseSchema
|
|
301
486
|
),
|
|
302
487
|
abortSignal: options.abortSignal,
|
|
@@ -351,29 +536,29 @@ var ByteDanceVideoModel = class {
|
|
|
351
536
|
};
|
|
352
537
|
}
|
|
353
538
|
};
|
|
354
|
-
var byteDanceTaskResponseSchema =
|
|
355
|
-
id:
|
|
539
|
+
var byteDanceTaskResponseSchema = z3.object({
|
|
540
|
+
id: z3.string().nullish()
|
|
356
541
|
});
|
|
357
|
-
var byteDanceStatusResponseSchema =
|
|
358
|
-
id:
|
|
359
|
-
model:
|
|
360
|
-
status:
|
|
361
|
-
content:
|
|
362
|
-
video_url:
|
|
542
|
+
var byteDanceStatusResponseSchema = z3.object({
|
|
543
|
+
id: z3.string().nullish(),
|
|
544
|
+
model: z3.string().nullish(),
|
|
545
|
+
status: z3.string(),
|
|
546
|
+
content: z3.object({
|
|
547
|
+
video_url: z3.string().nullish()
|
|
363
548
|
}).nullish(),
|
|
364
|
-
usage:
|
|
365
|
-
completion_tokens:
|
|
549
|
+
usage: z3.object({
|
|
550
|
+
completion_tokens: z3.number().nullish()
|
|
366
551
|
}).nullish()
|
|
367
552
|
});
|
|
368
|
-
var
|
|
369
|
-
error:
|
|
370
|
-
message:
|
|
371
|
-
code:
|
|
553
|
+
var byteDanceErrorSchema2 = z3.object({
|
|
554
|
+
error: z3.object({
|
|
555
|
+
message: z3.string(),
|
|
556
|
+
code: z3.string().nullish()
|
|
372
557
|
}).nullish(),
|
|
373
|
-
message:
|
|
558
|
+
message: z3.string().nullish()
|
|
374
559
|
});
|
|
375
|
-
var
|
|
376
|
-
errorSchema:
|
|
560
|
+
var byteDanceFailedResponseHandler2 = createJsonErrorResponseHandler2({
|
|
561
|
+
errorSchema: byteDanceErrorSchema2,
|
|
377
562
|
errorToMessage: (data) => {
|
|
378
563
|
var _a, _b, _c;
|
|
379
564
|
return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
|
|
@@ -400,17 +585,22 @@ function createByteDance(options = {}) {
|
|
|
400
585
|
headers: getHeaders,
|
|
401
586
|
fetch: options.fetch
|
|
402
587
|
});
|
|
588
|
+
const createImageModel = (modelId) => new ByteDanceImageModel(modelId, {
|
|
589
|
+
provider: "bytedance.image",
|
|
590
|
+
baseURL: baseURL != null ? baseURL : defaultBaseURL,
|
|
591
|
+
headers: getHeaders,
|
|
592
|
+
fetch: options.fetch
|
|
593
|
+
});
|
|
403
594
|
return {
|
|
404
595
|
specificationVersion: "v3",
|
|
405
596
|
embeddingModel: (modelId) => {
|
|
406
597
|
throw new NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
407
598
|
},
|
|
408
|
-
imageModel: (modelId) => {
|
|
409
|
-
throw new NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
410
|
-
},
|
|
411
599
|
languageModel: (modelId) => {
|
|
412
600
|
throw new NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
413
601
|
},
|
|
602
|
+
image: createImageModel,
|
|
603
|
+
imageModel: createImageModel,
|
|
414
604
|
video: createVideoModel,
|
|
415
605
|
videoModel: createVideoModel
|
|
416
606
|
};
|
|
@@ -418,8 +608,9 @@ function createByteDance(options = {}) {
|
|
|
418
608
|
var byteDance = createByteDance();
|
|
419
609
|
|
|
420
610
|
// src/version.ts
|
|
421
|
-
var VERSION = true ? "1.0.
|
|
611
|
+
var VERSION = true ? "1.0.27" : "0.0.0-test";
|
|
422
612
|
export {
|
|
613
|
+
ByteDanceImageModel,
|
|
423
614
|
VERSION,
|
|
424
615
|
byteDance,
|
|
425
616
|
createByteDance
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bytedance-provider.ts","../src/bytedance-video-model.ts","../src/version.ts"],"sourcesContent":["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":["videoUrl"]}
|
|
1
|
+
{"version":3,"sources":["../src/bytedance-provider.ts","../src/bytedance-image-model.ts","../src/bytedance-image-model-options.ts","../src/bytedance-video-model.ts","../src/version.ts"],"sourcesContent":["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":["z","z","combineHeaders","convertImageModelFileToDataUri","createJsonErrorResponseHandler","createJsonResponseHandler","lazySchema","parseProviderOptions","postJsonToApi","resolve","zodSchema","z","HANDLED_PROVIDER_OPTIONS","byteDanceFailedResponseHandler","byteDanceErrorSchema"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/bytedance",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.27",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ai-sdk/provider": "3.0.
|
|
24
|
-
"@ai-sdk/provider-utils": "4.0.
|
|
23
|
+
"@ai-sdk/provider": "3.0.14",
|
|
24
|
+
"@ai-sdk/provider-utils": "4.0.38"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|