@ai-sdk/bytedance 2.0.49 → 2.0.52

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 CHANGED
@@ -1,5 +1,29 @@
1
1
  # @ai-sdk/bytedance
2
2
 
3
+ ## 2.0.52
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [af9597b]
8
+ - Updated dependencies [bc49f78]
9
+ - @ai-sdk/provider-utils@5.0.49
10
+
11
+ ## 2.0.51
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [be877ff]
16
+ - @ai-sdk/provider-utils@5.0.48
17
+
18
+ ## 2.0.50
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [fe07867]
23
+ - Updated dependencies [a4b0940]
24
+ - Updated dependencies [771e74b]
25
+ - @ai-sdk/provider-utils@5.0.47
26
+
3
27
  ## 2.0.49
4
28
 
5
29
  ### Patch Changes
package/dist/index.js CHANGED
@@ -68,7 +68,6 @@ var ByteDanceImageModel = class {
68
68
  files,
69
69
  mask
70
70
  }) {
71
- var _a, _b, _c;
72
71
  const warnings = [];
73
72
  if (aspectRatio != null) {
74
73
  warnings.push({
@@ -87,7 +86,7 @@ var ByteDanceImageModel = class {
87
86
  details: "ByteDance Seedream does not support a separate mask. Provide edit instructions in the prompt, optionally with markings on the input image."
88
87
  });
89
88
  }
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();
89
+ const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
91
90
  const byteDanceOptions = await parseProviderOptions({
92
91
  provider: "bytedance",
93
92
  providerOptions,
@@ -158,11 +157,10 @@ var ByteDanceImageModel = class {
158
157
  }
159
158
  };
160
159
  function mapImageUsage(usage) {
161
- var _a, _b;
162
160
  return usage == null ? void 0 : {
163
161
  inputTokens: void 0,
164
- outputTokens: (_a = usage.output_tokens) != null ? _a : void 0,
165
- totalTokens: (_b = usage.total_tokens) != null ? _b : void 0
162
+ outputTokens: usage.output_tokens ?? void 0,
163
+ totalTokens: usage.total_tokens ?? void 0
166
164
  };
167
165
  }
168
166
  var byteDanceImageResponseSchema = z2.object({
@@ -181,10 +179,7 @@ var byteDanceErrorSchema = z2.object({
181
179
  });
182
180
  var byteDanceFailedResponseHandler = createJsonErrorResponseHandler({
183
181
  errorSchema: byteDanceErrorSchema,
184
- errorToMessage: (data) => {
185
- var _a, _b, _c;
186
- return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
187
- }
182
+ errorToMessage: (data) => data.error?.message ?? data.message ?? "Unknown error"
188
183
  });
189
184
 
190
185
  // src/bytedance-video-model.ts
@@ -284,16 +279,13 @@ var RESOLUTION_MAP = {
284
279
  "928x2176": "1080p"
285
280
  };
286
281
  function getFirstFrameImage(options) {
287
- var _a, _b;
288
- return (_b = (_a = options.frameImages) == null ? void 0 : _a.find((frame) => frame.frameType === "first_frame")) == null ? void 0 : _b.image;
282
+ return options.frameImages?.find((frame) => frame.frameType === "first_frame")?.image;
289
283
  }
290
284
  function resolveStartImage(options) {
291
- var _a;
292
- return (_a = getFirstFrameImage(options)) != null ? _a : options.image;
285
+ return getFirstFrameImage(options) ?? options.image;
293
286
  }
294
287
  var isVideoFile = (f) => f.mediaType != null && getTopLevelMediaType(f.mediaType) === "video";
295
288
  function resolveReferenceContent(options, byteDanceOptions, warnings) {
296
- var _a, _b;
297
289
  if (options.frameImages != null && options.frameImages.length > 0) {
298
290
  return [];
299
291
  }
@@ -312,14 +304,14 @@ function resolveReferenceContent(options, byteDanceOptions, warnings) {
312
304
  });
313
305
  }
314
306
  const content = [];
315
- for (const imageUrl of (_a = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceImages) != null ? _a : []) {
307
+ for (const imageUrl of byteDanceOptions?.referenceImages ?? []) {
316
308
  content.push({
317
309
  type: "image_url",
318
310
  image_url: { url: imageUrl },
319
311
  role: "reference_image"
320
312
  });
321
313
  }
322
- for (const videoUrl of (_b = byteDanceOptions == null ? void 0 : byteDanceOptions.referenceVideos) != null ? _b : []) {
314
+ for (const videoUrl of byteDanceOptions?.referenceVideos ?? []) {
323
315
  content.push({
324
316
  type: "video_url",
325
317
  video_url: { url: videoUrl },
@@ -329,14 +321,13 @@ function resolveReferenceContent(options, byteDanceOptions, warnings) {
329
321
  return content;
330
322
  }
331
323
  function resolveLastFrameImage(options, byteDanceOptions) {
332
- var _a, _b, _c;
333
- const lastFrame = (_b = (_a = options.frameImages) == null ? void 0 : _a.find(
324
+ const lastFrame = options.frameImages?.find(
334
325
  (frame) => frame.frameType === "last_frame"
335
- )) == null ? void 0 : _b.image;
326
+ )?.image;
336
327
  if (lastFrame != null) {
337
328
  return convertImageModelFileToDataUri2(lastFrame);
338
329
  }
339
- return (_c = byteDanceOptions == null ? void 0 : byteDanceOptions.lastFrameImage) != null ? _c : void 0;
330
+ return byteDanceOptions?.lastFrameImage ?? void 0;
340
331
  }
341
332
  var ByteDanceVideoModel = class {
342
333
  constructor(modelId, config) {
@@ -349,7 +340,6 @@ var ByteDanceVideoModel = class {
349
340
  return this.config.provider;
350
341
  }
351
342
  async buildRequestBody(options) {
352
- var _a;
353
343
  const warnings = [];
354
344
  const byteDanceOptions = await parseProviderOptions2({
355
345
  provider: "bytedance",
@@ -357,7 +347,7 @@ var ByteDanceVideoModel = class {
357
347
  schema: byteDanceVideoModelOptionsSchema
358
348
  });
359
349
  for (const setting of ["pollIntervalMs", "pollTimeoutMs"]) {
360
- if ((byteDanceOptions == null ? void 0 : byteDanceOptions[setting]) != null) {
350
+ if (byteDanceOptions?.[setting] != null) {
361
351
  warnings.push({
362
352
  type: "deprecated",
363
353
  setting,
@@ -410,7 +400,7 @@ var ByteDanceVideoModel = class {
410
400
  for (const entry of referenceContent) {
411
401
  content.push(entry);
412
402
  }
413
- if ((byteDanceOptions == null ? void 0 : byteDanceOptions.referenceAudio) != null && byteDanceOptions.referenceAudio.length > 0) {
403
+ if (byteDanceOptions?.referenceAudio != null && byteDanceOptions.referenceAudio.length > 0) {
414
404
  for (const audioUrl of byteDanceOptions.referenceAudio) {
415
405
  content.push({
416
406
  type: "audio_url",
@@ -440,7 +430,7 @@ var ByteDanceVideoModel = class {
440
430
  body.resolution = options.resolution;
441
431
  }
442
432
  }
443
- const generateAudio = (_a = options.generateAudio) != null ? _a : byteDanceOptions == null ? void 0 : byteDanceOptions.generateAudio;
433
+ const generateAudio = options.generateAudio ?? byteDanceOptions?.generateAudio;
444
434
  if (generateAudio != null) {
445
435
  body.generate_audio = generateAudio;
446
436
  }
@@ -469,8 +459,7 @@ var ByteDanceVideoModel = class {
469
459
  return { body, warnings };
470
460
  }
471
461
  async doStart(options) {
472
- var _a, _b, _c;
473
- const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
462
+ const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
474
463
  const { body, warnings } = await this.buildRequestBody(options);
475
464
  if (options.webhookUrl != null) {
476
465
  body.callback_url = options.webhookUrl;
@@ -507,8 +496,7 @@ var ByteDanceVideoModel = class {
507
496
  };
508
497
  }
509
498
  async doStatus(options) {
510
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
511
- const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
499
+ const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
512
500
  const { taskId } = options.operation;
513
501
  const { value: statusResponse, responseHeaders } = await getFromApi({
514
502
  url: `${this.config.baseURL}/contents/generations/tasks/${taskId}`,
@@ -526,7 +514,7 @@ var ByteDanceVideoModel = class {
526
514
  fetch: this.config.fetch
527
515
  });
528
516
  if (statusResponse.status === "succeeded") {
529
- const videoUrl = (_d = statusResponse.content) == null ? void 0 : _d.video_url;
517
+ const videoUrl = statusResponse.content?.video_url;
530
518
  if (!videoUrl) {
531
519
  throw new AISDKError({
532
520
  name: "BYTEDANCE_VIDEO_GENERATION_ERROR",
@@ -552,13 +540,13 @@ var ByteDanceVideoModel = class {
552
540
  bytedance: {
553
541
  taskId,
554
542
  usage: statusResponse.usage,
555
- ...((_e = statusResponse.content) == null ? void 0 : _e.last_frame_url) != null ? { lastFrameUrl: statusResponse.content.last_frame_url } : {}
543
+ ...statusResponse.content?.last_frame_url != null ? { lastFrameUrl: statusResponse.content.last_frame_url } : {}
556
544
  }
557
545
  }
558
546
  };
559
547
  }
560
548
  if (statusResponse.status === "failed" || statusResponse.status === "expired" || statusResponse.status === "cancelled" || statusResponse.status === "canceled") {
561
- const failureDetails = (_i = (_h = (_f = statusResponse.error) == null ? void 0 : _f.message) != null ? _h : (_g = statusResponse.error) == null ? void 0 : _g.code) != null ? _i : JSON.stringify(statusResponse);
549
+ const failureDetails = statusResponse.error?.message ?? statusResponse.error?.code ?? JSON.stringify(statusResponse);
562
550
  return {
563
551
  status: "error",
564
552
  error: `Video generation ${statusResponse.status}. Task ID: ${taskId}. ${failureDetails}`,
@@ -608,17 +596,13 @@ var byteDanceErrorSchema2 = z4.object({
608
596
  });
609
597
  var byteDanceFailedResponseHandler2 = createJsonErrorResponseHandler2({
610
598
  errorSchema: byteDanceErrorSchema2,
611
- errorToMessage: (data) => {
612
- var _a, _b, _c;
613
- return (_c = (_b = (_a = data.error) == null ? void 0 : _a.message) != null ? _b : data.message) != null ? _c : "Unknown error";
614
- }
599
+ errorToMessage: (data) => data.error?.message ?? data.message ?? "Unknown error"
615
600
  });
616
601
 
617
602
  // src/bytedance-provider.ts
618
603
  var defaultBaseURL = "https://ark.ap-southeast.bytepluses.com/api/v3";
619
604
  function createByteDance(options = {}) {
620
- var _a;
621
- const baseURL = withoutTrailingSlash((_a = options.baseURL) != null ? _a : defaultBaseURL);
605
+ const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);
622
606
  const getHeaders = () => ({
623
607
  Authorization: `Bearer ${loadApiKey({
624
608
  apiKey: options.apiKey,
@@ -630,13 +614,13 @@ function createByteDance(options = {}) {
630
614
  });
631
615
  const createVideoModel = (modelId) => new ByteDanceVideoModel(modelId, {
632
616
  provider: "bytedance.video",
633
- baseURL: baseURL != null ? baseURL : defaultBaseURL,
617
+ baseURL: baseURL ?? defaultBaseURL,
634
618
  headers: getHeaders,
635
619
  fetch: options.fetch
636
620
  });
637
621
  const createImageModel = (modelId) => new ByteDanceImageModel(modelId, {
638
622
  provider: "bytedance.image",
639
- baseURL: baseURL != null ? baseURL : defaultBaseURL,
623
+ baseURL: baseURL ?? defaultBaseURL,
640
624
  headers: getHeaders,
641
625
  fetch: options.fetch
642
626
  });
@@ -657,7 +641,7 @@ function createByteDance(options = {}) {
657
641
  var byteDance = createByteDance();
658
642
 
659
643
  // src/version.ts
660
- var VERSION = true ? "2.0.49" : "0.0.0-test";
644
+ var VERSION = true ? "2.0.52" : "0.0.0-test";
661
645
  export {
662
646
  ByteDanceImageModel,
663
647
  VERSION,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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/bytedance-video-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type Experimental_VideoModelV4,\n type ImageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n type FetchFunction,\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 ProviderV4 {\n /**\n * Creates a model for video generation.\n */\n video(modelId: ByteDanceVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: ByteDanceVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: ByteDanceImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: ByteDanceImageModelId): ImageModelV4;\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: 'v4' 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 ImageModelV4,\n ImageModelV4CallOptions,\n ImageModelV4Usage,\n SharedV4Warning,\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 ImageModelV4 {\n readonly specificationVersion = 'v4';\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 }: ImageModelV4CallOptions): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\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 usage: mapImageUsage(response.usage),\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nfunction mapImageUsage(\n usage: z.infer<typeof byteDanceImageResponseSchema>['usage'],\n): ImageModelV4Usage | undefined {\n return usage == null\n ? undefined\n : {\n inputTokens: undefined,\n outputTokens: usage.output_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\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 usage: z\n .object({\n output_tokens: z.number().nullish(),\n total_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","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_VideoModelV4 as VideoModelV4,\n type Experimental_VideoModelV4CallOptions as VideoModelV4CallOptions,\n type Experimental_VideoModelV4File as VideoModelV4File,\n type Experimental_VideoModelV4OperationStartResult as VideoModelV4OperationStartResult,\n type Experimental_VideoModelV4OperationStatusResult as VideoModelV4OperationStatusResult,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n getTopLevelMediaType,\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 byteDanceVideoModelOptionsSchema,\n type ByteDanceVideoModelOptions,\n} from './bytedance-video-model-options';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\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\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: VideoModelV4CallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: VideoModelV4CallOptions,\n): VideoModelV4File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nconst isVideoFile = (f: VideoModelV4File) =>\n f.mediaType != null && getTopLevelMediaType(f.mediaType) === 'video';\n\nfunction resolveReferenceContent(\n options: VideoModelV4CallOptions,\n byteDanceOptions: ByteDanceVideoModelOptions | undefined,\n warnings: SharedV4Warning[],\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: VideoModelV4CallOptions,\n byteDanceOptions: ByteDanceVideoModelOptions | 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 VideoModelV4 {\n readonly specificationVersion = 'v4';\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 private async buildRequestBody(options: VideoModelV4CallOptions): Promise<{\n body: Record<string, unknown>;\n warnings: SharedV4Warning[];\n }> {\n const warnings: SharedV4Warning[] = [];\n\n const byteDanceOptions = (await parseProviderOptions({\n provider: 'bytedance',\n providerOptions: options.providerOptions,\n schema: byteDanceVideoModelOptionsSchema,\n })) as ByteDanceVideoModelOptions | undefined;\n\n // Polling is orchestrated by the AI SDK core via doStart/doStatus, so the\n // legacy provider-level poll options no longer have any effect.\n for (const setting of ['pollIntervalMs', 'pollTimeoutMs'] as const) {\n if (byteDanceOptions?.[setting] != null) {\n warnings.push({\n type: 'deprecated',\n setting,\n message:\n `\\`${setting}\\` is ignored. Polling is orchestrated by the AI SDK: ` +\n 'pass `poll: { intervalMs, timeoutMs }` to `generateVideo` instead.',\n });\n }\n }\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\n ? { role: 'first_frame' }\n : referenceContent.length > 0\n ? { role: 'reference_image' }\n : {}),\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 return { body, warnings };\n }\n\n async doStart(\n options: Parameters<NonNullable<VideoModelV4['doStart']>>[0],\n ): Promise<VideoModelV4OperationStartResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { body, warnings } = await this.buildRequestBody(options);\n\n // Progress notifications require a protocol-aware receiver, so omit handleWebhookOption.\n // Forward webhookUrl for a caller-owned receiver that filters progress notifications.\n if (options.webhookUrl != null) {\n body.callback_url = options.webhookUrl;\n }\n\n const { value: createResponse, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/contents/generations/tasks`,\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 return {\n operation: { taskId },\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n async doStatus(\n options: Parameters<NonNullable<VideoModelV4['doStatus']>>[0],\n ): Promise<VideoModelV4OperationStatusResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { taskId } = options.operation as { taskId: string };\n\n const { value: statusResponse, responseHeaders } = await getFromApi({\n url: `${this.config.baseURL}/contents/generations/tasks/${taskId}`,\n validateUrl: true,\n trustedOrigin: this.config.baseURL,\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 const videoUrl = statusResponse.content?.video_url;\n\n if (!videoUrl) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: `No video URL in response. Task ID: ${taskId}`,\n });\n }\n\n return {\n status: 'completed',\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: statusResponse.usage,\n ...(statusResponse.content?.last_frame_url != null\n ? { lastFrameUrl: statusResponse.content.last_frame_url }\n : {}),\n },\n },\n };\n }\n\n // ModelArk documents `cancelled`; `canceled` is handled defensively.\n if (\n statusResponse.status === 'failed' ||\n statusResponse.status === 'expired' ||\n statusResponse.status === 'cancelled' ||\n statusResponse.status === 'canceled'\n ) {\n // Fall back to the raw body when the task carries no structured reason,\n // so a failure is never reported without any diagnostic detail.\n const failureDetails =\n statusResponse.error?.message ??\n statusResponse.error?.code ??\n JSON.stringify(statusResponse);\n\n return {\n status: 'error',\n error: `Video generation ${statusResponse.status}. Task ID: ${taskId}. ${failureDetails}`,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n return {\n status: 'pending',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst byteDanceTaskResponseSchema = z.object({\n id: z.string().nullish(),\n});\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 last_frame_url: z.string().nullish(),\n })\n .nullish(),\n usage: z\n .object({\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n // Present on failed tasks (the HTTP response itself is still 200).\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().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","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type ByteDanceVideoModelOptions = {\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 /**\n * @deprecated Ignored. Pass `poll: { intervalMs }` to `generateVideo` instead.\n */\n pollIntervalMs?: number | null;\n /**\n * @deprecated Ignored. Pass `poll: { timeoutMs }` to `generateVideo` instead.\n */\n pollTimeoutMs?: number | null;\n [key: string]: unknown;\n};\n\nexport const byteDanceVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\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 ),\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","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","HANDLED_PROVIDER_OPTIONS","convertImageModelFileToDataUri","parseProviderOptions","postJsonToApi","combineHeaders","resolve","byteDanceFailedResponseHandler","createJsonResponseHandler","z","byteDanceErrorSchema","createJsonErrorResponseHandler"]}
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/bytedance-video-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type Experimental_VideoModelV4,\n type ImageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n type FetchFunction,\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 ProviderV4 {\n /**\n * Creates a model for video generation.\n */\n video(modelId: ByteDanceVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: ByteDanceVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: ByteDanceImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: ByteDanceImageModelId): ImageModelV4;\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: 'v4' 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 ImageModelV4,\n ImageModelV4CallOptions,\n ImageModelV4Usage,\n SharedV4Warning,\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 ImageModelV4 {\n readonly specificationVersion = 'v4';\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 }: ImageModelV4CallOptions): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\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 usage: mapImageUsage(response.usage),\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nfunction mapImageUsage(\n usage: z.infer<typeof byteDanceImageResponseSchema>['usage'],\n): ImageModelV4Usage | undefined {\n return usage == null\n ? undefined\n : {\n inputTokens: undefined,\n outputTokens: usage.output_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\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 usage: z\n .object({\n output_tokens: z.number().nullish(),\n total_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","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_VideoModelV4 as VideoModelV4,\n type Experimental_VideoModelV4CallOptions as VideoModelV4CallOptions,\n type Experimental_VideoModelV4File as VideoModelV4File,\n type Experimental_VideoModelV4OperationStartResult as VideoModelV4OperationStartResult,\n type Experimental_VideoModelV4OperationStatusResult as VideoModelV4OperationStatusResult,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n getTopLevelMediaType,\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 byteDanceVideoModelOptionsSchema,\n type ByteDanceVideoModelOptions,\n} from './bytedance-video-model-options';\nimport type { ByteDanceVideoModelId } from './bytedance-video-settings';\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\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: VideoModelV4CallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: VideoModelV4CallOptions,\n): VideoModelV4File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nconst isVideoFile = (f: VideoModelV4File) =>\n f.mediaType != null && getTopLevelMediaType(f.mediaType) === 'video';\n\nfunction resolveReferenceContent(\n options: VideoModelV4CallOptions,\n byteDanceOptions: ByteDanceVideoModelOptions | undefined,\n warnings: SharedV4Warning[],\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: VideoModelV4CallOptions,\n byteDanceOptions: ByteDanceVideoModelOptions | 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 VideoModelV4 {\n readonly specificationVersion = 'v4';\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 private async buildRequestBody(options: VideoModelV4CallOptions): Promise<{\n body: Record<string, unknown>;\n warnings: SharedV4Warning[];\n }> {\n const warnings: SharedV4Warning[] = [];\n\n const byteDanceOptions = (await parseProviderOptions({\n provider: 'bytedance',\n providerOptions: options.providerOptions,\n schema: byteDanceVideoModelOptionsSchema,\n })) as ByteDanceVideoModelOptions | undefined;\n\n // Polling is orchestrated by the AI SDK core via doStart/doStatus, so the\n // legacy provider-level poll options no longer have any effect.\n for (const setting of ['pollIntervalMs', 'pollTimeoutMs'] as const) {\n if (byteDanceOptions?.[setting] != null) {\n warnings.push({\n type: 'deprecated',\n setting,\n message:\n `\\`${setting}\\` is ignored. Polling is orchestrated by the AI SDK: ` +\n 'pass `poll: { intervalMs, timeoutMs }` to `generateVideo` instead.',\n });\n }\n }\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\n ? { role: 'first_frame' }\n : referenceContent.length > 0\n ? { role: 'reference_image' }\n : {}),\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 return { body, warnings };\n }\n\n async doStart(\n options: Parameters<NonNullable<VideoModelV4['doStart']>>[0],\n ): Promise<VideoModelV4OperationStartResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { body, warnings } = await this.buildRequestBody(options);\n\n // Progress notifications require a protocol-aware receiver, so omit handleWebhookOption.\n // Forward webhookUrl for a caller-owned receiver that filters progress notifications.\n if (options.webhookUrl != null) {\n body.callback_url = options.webhookUrl;\n }\n\n const { value: createResponse, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/contents/generations/tasks`,\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 return {\n operation: { taskId },\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n async doStatus(\n options: Parameters<NonNullable<VideoModelV4['doStatus']>>[0],\n ): Promise<VideoModelV4OperationStatusResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { taskId } = options.operation as { taskId: string };\n\n const { value: statusResponse, responseHeaders } = await getFromApi({\n url: `${this.config.baseURL}/contents/generations/tasks/${taskId}`,\n validateUrl: true,\n trustedOrigin: this.config.baseURL,\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 const videoUrl = statusResponse.content?.video_url;\n\n if (!videoUrl) {\n throw new AISDKError({\n name: 'BYTEDANCE_VIDEO_GENERATION_ERROR',\n message: `No video URL in response. Task ID: ${taskId}`,\n });\n }\n\n return {\n status: 'completed',\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: statusResponse.usage,\n ...(statusResponse.content?.last_frame_url != null\n ? { lastFrameUrl: statusResponse.content.last_frame_url }\n : {}),\n },\n },\n };\n }\n\n // ModelArk documents `cancelled`; `canceled` is handled defensively.\n if (\n statusResponse.status === 'failed' ||\n statusResponse.status === 'expired' ||\n statusResponse.status === 'cancelled' ||\n statusResponse.status === 'canceled'\n ) {\n // Fall back to the raw body when the task carries no structured reason,\n // so a failure is never reported without any diagnostic detail.\n const failureDetails =\n statusResponse.error?.message ??\n statusResponse.error?.code ??\n JSON.stringify(statusResponse);\n\n return {\n status: 'error',\n error: `Video generation ${statusResponse.status}. Task ID: ${taskId}. ${failureDetails}`,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n return {\n status: 'pending',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst byteDanceTaskResponseSchema = z.object({\n id: z.string().nullish(),\n});\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 last_frame_url: z.string().nullish(),\n })\n .nullish(),\n usage: z\n .object({\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n // Present on failed tasks (the HTTP response itself is still 200).\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().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","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type ByteDanceVideoModelOptions = {\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 /**\n * @deprecated Ignored. Pass `poll: { intervalMs }` to `generateVideo` instead.\n */\n pollIntervalMs?: number | null;\n /**\n * @deprecated Ignored. Pass `poll: { timeoutMs }` to `generateVideo` instead.\n */\n pollTimeoutMs?: number | null;\n [key: string]: unknown;\n};\n\nexport const byteDanceVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\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 ),\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":";AAAA;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;;;ACJP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAAA,UAAS;;;ACflB,SAAS,YAAY,iBAAiB;AACtC,SAAS,SAAS;AA6CX,IAAM,mCAAmC;AAAA,EAAW,MACzD;AAAA,IACE,EAAE,YAAY;AAAA,MACZ,WAAW,EAAE,QAAQ,EAAE,QAAQ;AAAA,MAC/B,cAAc,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,QAAQ;AAAA,MAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ;AAAA,MACzB,2BAA2B,EAAE,KAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,QAAQ;AAAA,MAChE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ;AAAA,MAC/C,oBAAoB,EAAE,KAAK,CAAC,YAAY,MAAM,CAAC,EAAE,QAAQ;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;;;ADlCA,IAAM,2BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,sBAAN,MAAkD;AAAA,EAWvD,YACW,SACQ,QACjB;AAFS;AACQ;AAZnB,SAAS,uBAAuB;AAIhC;AAAA;AAAA;AAAA,SAAS,mBAAmB;AAAA,EASzB;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,WAAmC,CAAC;AAE1C,QAAI,eAAe,MAAM;AACvB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAEA,UAAM,cAAc,KAAK,OAAO,WAAW,cAAc,KAAK,oBAAI,KAAK;AAEvE,UAAM,mBAAoB,MAAM,qBAAqB;AAAA,MACnD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,QACJ,SAAS,QAAQ,MAAM,SAAS,IAC5B,MAAM,WAAW,IACf,+BAA+B,MAAM,CAAC,CAAC,IACvC,MAAM,IAAI,8BAA8B,IAC1C;AAEN,UAAM,OAAgC;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,QAAI,SAAS,MAAM;AACjB,WAAK,QAAQ;AAAA,IACf;AAEA,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO;AAAA,IACd;AAEA,QAAI,oBAAoB,MAAM;AAC5B,UAAI,iBAAiB,aAAa,MAAM;AACtC,aAAK,YAAY,iBAAiB;AAAA,MACpC;AACA,UAAI,iBAAiB,gBAAgB,MAAM;AACzC,aAAK,gBAAgB,iBAAiB;AAAA,MACxC;AAEA,UAAI,iBAAiB,QAAQ,MAAM;AACjC,aAAK,OAAO,iBAAiB;AAAA,MAC/B;AACA,UAAI,iBAAiB,6BAA6B,MAAM;AACtD,aAAK,8BACH,iBAAiB;AAAA,MACrB;AACA,UAAI,iBAAiB,aAAa,MAAM;AACtC,aAAK,sCAAsC;AAAA,UACzC,YAAY,iBAAiB;AAAA,QAC/B;AAAA,MACF;AACA,UAAI,iBAAiB,sBAAsB,MAAM;AAC/C,aAAK,0BAA0B;AAAA,UAC7B,MAAM,iBAAiB;AAAA,QACzB;AAAA,MACF;AAEA,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC3D,YAAI,CAAC,yBAAyB,IAAI,GAAG,GAAG;AACtC,eAAK,GAAG,IAAI;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAIA,SAAK,kBAAkB;AAEvB,UAAM,EAAE,OAAO,UAAU,gBAAgB,IAAI,MAAM,cAAc;AAAA,MAC/D,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,SAAS,eAAe,MAAM,QAAQ,KAAK,OAAO,OAAO,GAAG,OAAO;AAAA,MACnE;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,QAAQ,SAAS,KAAK,IAAI,UAAQ,KAAK,QAAQ;AAAA,MAC/C;AAAA,MACA,OAAO,cAAc,SAAS,KAAK;AAAA,MACnC,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,cACP,OAC+B;AAC/B,SAAO,SAAS,OACZ,SACA;AAAA,IACE,aAAa;AAAA,IACb,cAAc,MAAM,iBAAiB;AAAA,IACrC,aAAa,MAAM,gBAAgB;AAAA,EACrC;AACN;AAIA,IAAM,+BAA+BC,GAAE,OAAO;AAAA,EAC5C,MAAMA,GAAE,MAAMA,GAAE,OAAO,EAAE,UAAUA,GAAE,OAAO,EAAE,CAAC,CAAC;AAAA,EAChD,OAAOA,GACJ,OAAO;AAAA,IACN,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAClC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACnC,CAAC,EACA,QAAQ;AACb,CAAC;AAED,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EACpC,OAAOA,GACJ,OAAO;AAAA,IACN,SAASA,GAAE,OAAO;AAAA,IAClB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,CAAC,EACA,QAAQ;AAAA,EACX,SAASA,GAAE,OAAO,EAAE,QAAQ;AAC9B,CAAC;AAED,IAAM,iCAAiC,+BAA+B;AAAA,EACpE,aAAa;AAAA,EACb,gBAAgB,UACd,KAAK,OAAO,WAAW,KAAK,WAAW;AAC3C,CAAC;;;AE7ND;AAAA,EACE;AAAA,OAOK;AACP;AAAA,EACE,kBAAAC;AAAA,EACA,kCAAAC;AAAA,EACA,kCAAAC;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,OACK;AACP,SAAS,KAAAC,UAAS;;;ACpBlB,SAAS,cAAAC,aAAY,aAAAC,kBAAiB;AACtC,SAAS,KAAAC,UAAS;AAwBX,IAAM,mCAAmCF;AAAA,EAAW,MACzDC;AAAA,IACEC,GAAE,YAAY;AAAA,MACZ,WAAWA,GAAE,QAAQ,EAAE,QAAQ;AAAA,MAC/B,eAAeA,GAAE,QAAQ,EAAE,QAAQ;AAAA,MACnC,aAAaA,GAAE,QAAQ,EAAE,QAAQ;AAAA,MACjC,iBAAiBA,GAAE,QAAQ,EAAE,QAAQ;AAAA,MACrC,aAAaA,GAAE,KAAK,CAAC,WAAW,MAAM,CAAC,EAAE,QAAQ;AAAA,MACjD,OAAOA,GAAE,QAAQ,EAAE,QAAQ;AAAA,MAC3B,gBAAgBA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACnC,iBAAiBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,MAC7C,iBAAiBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,MAC7C,gBAAgBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,MAC5C,gBAAgBA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;AAAA,MAC9C,eAAeA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;;;ADdA,IAAMC,4BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,iBAAyC;AAAA,EAC7C,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AACd;AAQA,SAAS,mBACP,SAC8B;AAC9B,SAAO,QAAQ,aAAa,KAAK,WAAS,MAAM,cAAc,aAAa,GACvE;AACN;AAEA,SAAS,kBACP,SAC8B;AAC9B,SAAO,mBAAmB,OAAO,KAAK,QAAQ;AAChD;AAEA,IAAM,cAAc,CAAC,MACnB,EAAE,aAAa,QAAQ,qBAAqB,EAAE,SAAS,MAAM;AAE/D,SAAS,wBACP,SACA,kBACA,UACgC;AAChC,MAAI,QAAQ,eAAe,QAAQ,QAAQ,YAAY,SAAS,GAAG;AACjE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,kBAAkB,QAAQ;AAEhC,MAAI,mBAAmB,QAAQ,gBAAgB,SAAS,GAAG;AACzD,WAAO,gBAAgB,IAAI,eAAa;AACtC,UAAI,UAAU,SAAS,SAAS,UAAU,aAAa,MAAM;AAC3D,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QAGJ,CAAC;AAAA,MACH;AAEA,YAAM,MAAMC,gCAA+B,SAAS;AACpD,aAAO,YAAY,SAAS,IACxB,EAAE,MAAM,aAAa,WAAW,EAAE,IAAI,GAAG,MAAM,kBAAkB,IACjE,EAAE,MAAM,aAAa,WAAW,EAAE,IAAI,GAAG,MAAM,kBAAkB;AAAA,IACvE,CAAC;AAAA,EACH;AAEA,QAAM,UAA0C,CAAC;AAEjD,aAAW,YAAY,kBAAkB,mBAAmB,CAAC,GAAG;AAC9D,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,WAAW,EAAE,KAAK,SAAS;AAAA,MAC3B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,aAAW,YAAY,kBAAkB,mBAAmB,CAAC,GAAG;AAC9D,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,WAAW,EAAE,KAAK,SAAS;AAAA,MAC3B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,sBACP,SACA,kBACoB;AACpB,QAAM,YAAY,QAAQ,aAAa;AAAA,IACrC,WAAS,MAAM,cAAc;AAAA,EAC/B,GAAG;AAEH,MAAI,aAAa,MAAM;AACrB,WAAOA,gCAA+B,SAAS;AAAA,EACjD;AAEA,SAAO,kBAAkB,kBAAkB;AAC7C;AAEO,IAAM,sBAAN,MAAkD;AAAA,EAQvD,YACW,SACQ,QACjB;AAFS;AACQ;AATnB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAAA,EASzB;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,iBAAiB,SAG5B;AACD,UAAM,WAA8B,CAAC;AAErC,UAAM,mBAAoB,MAAMC,sBAAqB;AAAA,MACnD,UAAU;AAAA,MACV,iBAAiB,QAAQ;AAAA,MACzB,QAAQ;AAAA,IACV,CAAC;AAID,eAAW,WAAW,CAAC,kBAAkB,eAAe,GAAY;AAClE,UAAI,mBAAmB,OAAO,KAAK,MAAM;AACvC,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN;AAAA,UACA,SACE,KAAK,OAAO;AAAA,QAEhB,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,QAAQ,KAAK;AACf,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,KAAK,QAAQ,QAAQ,IAAI,GAAG;AACtC,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAEA,UAAM,UAA0C,CAAC;AAEjD,QAAI,QAAQ,UAAU,MAAM;AAC1B,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,UAAM,aAAa,kBAAkB,OAAO;AAC5C,UAAM,oBAAoB,sBAAsB,SAAS,gBAAgB;AACzE,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,cAAc,MAAM;AACtB,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,WAAW,EAAE,KAAKD,gCAA+B,UAAU,EAAE;AAAA,QAC7D,GAAI,qBAAqB,OACrB,EAAE,MAAM,cAAc,IACtB,iBAAiB,SAAS,IACxB,EAAE,MAAM,kBAAkB,IAC1B,CAAC;AAAA,MACT,CAAC;AAAA,IACH;AAGA,QAAI,qBAAqB,MAAM;AAC7B,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,WAAW,EAAE,KAAK,kBAAkB;AAAA,QACpC,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAEA,eAAW,SAAS,kBAAkB;AACpC,cAAQ,KAAK,KAAK;AAAA,IACpB;AAGA,QACE,kBAAkB,kBAAkB,QACpC,iBAAiB,eAAe,SAAS,GACzC;AACA,iBAAW,YAAY,iBAAiB,gBAAgB;AACtD,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,WAAW,EAAE,KAAK,SAAS;AAAA,UAC3B,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,OAAgC;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,QAAI,QAAQ,aAAa;AACvB,WAAK,QAAQ,QAAQ;AAAA,IACvB;AAEA,QAAI,QAAQ,UAAU;AACpB,WAAK,WAAW,QAAQ;AAAA,IAC1B;AAEA,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO,QAAQ;AAAA,IACtB;AAEA,QAAI,QAAQ,YAAY;AACtB,YAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,UAAI,QAAQ;AACV,aAAK,aAAa;AAAA,MACpB,OAAO;AACL,aAAK,aAAa,QAAQ;AAAA,MAC5B;AAAA,IACF;AAEA,UAAM,gBACJ,QAAQ,iBAAiB,kBAAkB;AAC7C,QAAI,iBAAiB,MAAM;AACzB,WAAK,iBAAiB;AAAA,IACxB;AAEA,QAAI,oBAAoB,MAAM;AAC5B,UAAI,iBAAiB,aAAa,MAAM;AACtC,aAAK,YAAY,iBAAiB;AAAA,MACpC;AACA,UAAI,iBAAiB,eAAe,MAAM;AACxC,aAAK,eAAe,iBAAiB;AAAA,MACvC;AACA,UAAI,iBAAiB,mBAAmB,MAAM;AAC5C,aAAK,oBAAoB,iBAAiB;AAAA,MAC5C;AACA,UAAI,iBAAiB,eAAe,MAAM;AACxC,aAAK,eAAe,iBAAiB;AAAA,MACvC;AACA,UAAI,iBAAiB,SAAS,MAAM;AAClC,aAAK,QAAQ,iBAAiB;AAAA,MAChC;AAEA,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC3D,YAAI,CAACD,0BAAyB,IAAI,GAAG,GAAG;AACtC,eAAK,GAAG,IAAI;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,MAAM,SAAS;AAAA,EAC1B;AAAA,EAEA,MAAM,QACJ,SAC2C;AAC3C,UAAM,cAAc,KAAK,OAAO,WAAW,cAAc,KAAK,oBAAI,KAAK;AACvE,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,iBAAiB,OAAO;AAI9D,QAAI,QAAQ,cAAc,MAAM;AAC9B,WAAK,eAAe,QAAQ;AAAA,IAC9B;AAEA,UAAM,EAAE,OAAO,gBAAgB,gBAAgB,IAAI,MAAMG,eAAc;AAAA,MACrE,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,SAASC;AAAA,QACP,MAAMC,SAAQ,KAAK,OAAO,OAAO;AAAA,QACjC,QAAQ;AAAA,MACV;AAAA,MACA;AAAA,MACA,uBAAuBC;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,SAAS,eAAe;AAE9B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL,WAAW,EAAE,OAAO;AAAA,MACpB;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SAC4C;AAC5C,UAAM,cAAc,KAAK,OAAO,WAAW,cAAc,KAAK,oBAAI,KAAK;AACvE,UAAM,EAAE,OAAO,IAAI,QAAQ;AAE3B,UAAM,EAAE,OAAO,gBAAgB,gBAAgB,IAAI,MAAM,WAAW;AAAA,MAClE,KAAK,GAAG,KAAK,OAAO,OAAO,+BAA+B,MAAM;AAAA,MAChE,aAAa;AAAA,MACb,eAAe,KAAK,OAAO;AAAA,MAC3B,SAASH;AAAA,QACP,MAAMC,SAAQ,KAAK,OAAO,OAAO;AAAA,QACjC,QAAQ;AAAA,MACV;AAAA,MACA,uBAAuBC;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,eAAe,WAAW,aAAa;AACzC,YAAM,WAAW,eAAe,SAAS;AAEzC,UAAI,CAAC,UAAU;AACb,cAAM,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,SAAS,sCAAsC,MAAM;AAAA,QACvD,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,UAAU,CAAC;AAAA,QACX,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,QACX;AAAA,QACA,kBAAkB;AAAA,UAChB,WAAW;AAAA,YACT;AAAA,YACA,OAAO,eAAe;AAAA,YACtB,GAAI,eAAe,SAAS,kBAAkB,OAC1C,EAAE,cAAc,eAAe,QAAQ,eAAe,IACtD,CAAC;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,QACE,eAAe,WAAW,YAC1B,eAAe,WAAW,aAC1B,eAAe,WAAW,eAC1B,eAAe,WAAW,YAC1B;AAGA,YAAM,iBACJ,eAAe,OAAO,WACtB,eAAe,OAAO,QACtB,KAAK,UAAU,cAAc;AAE/B,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,OAAO,oBAAoB,eAAe,MAAM,cAAc,MAAM,KAAK,cAAc;AAAA,QACvF,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,8BAA8BC,GAAE,OAAO;AAAA,EAC3C,IAAIA,GAAE,OAAO,EAAE,QAAQ;AACzB,CAAC;AAED,IAAM,gCAAgCA,GAAE,OAAO;AAAA,EAC7C,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACvB,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,QAAQA,GAAE,OAAO;AAAA,EACjB,SAASA,GACN,OAAO;AAAA,IACN,WAAWA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAC9B,gBAAgBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACrC,CAAC,EACA,QAAQ;AAAA,EACX,OAAOA,GACJ,OAAO;AAAA,IACN,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACxC,CAAC,EACA,QAAQ;AAAA;AAAA,EAEX,OAAOA,GACJ,OAAO;AAAA,IACN,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC9B,CAAC,EACA,QAAQ;AACb,CAAC;AAED,IAAMC,wBAAuBD,GAAE,OAAO;AAAA,EACpC,OAAOA,GACJ,OAAO;AAAA,IACN,SAASA,GAAE,OAAO;AAAA,IAClB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,CAAC,EACA,QAAQ;AAAA,EACX,SAASA,GAAE,OAAO,EAAE,QAAQ;AAC9B,CAAC;AAED,IAAMF,kCAAiCI,gCAA+B;AAAA,EACpE,aAAaD;AAAA,EACb,gBAAgB,UACd,KAAK,OAAO,WAAW,KAAK,WAAW;AAC3C,CAAC;;;AHtdD,IAAM,iBAAiB;AAKhB,SAAS,gBACd,UAAqC,CAAC,GACnB;AACnB,QAAM,UAAU,qBAAqB,QAAQ,WAAW,cAAc;AAEtE,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,gBAAgB;AAAA,IAChB,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,mBAAmB,CAAC,YACxB,IAAI,oBAAoB,SAAS;AAAA,IAC/B,UAAU;AAAA,IACV,SAAS,WAAW;AAAA,IACpB,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,mBAAmB,CAAC,YACxB,IAAI,oBAAoB,SAAS;AAAA,IAC/B,UAAU;AAAA,IACV,SAAS,WAAW;AAAA,IACpB,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,SAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,gBAAgB,CAAC,YAAoB;AACnC,YAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,iBAAiB,CAAC;AAAA,IACrE;AAAA,IACA,eAAe,CAAC,YAAoB;AAClC,YAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,gBAAgB,CAAC;AAAA,IACpE;AAAA,IACA,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF;AAKO,IAAM,YAAY,gBAAgB;;;AKnHlC,IAAM,UACX,OACI,WACA;","names":["z","z","combineHeaders","convertImageModelFileToDataUri","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","HANDLED_PROVIDER_OPTIONS","convertImageModelFileToDataUri","parseProviderOptions","postJsonToApi","combineHeaders","resolve","byteDanceFailedResponseHandler","createJsonResponseHandler","z","byteDanceErrorSchema","createJsonErrorResponseHandler"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/bytedance",
3
- "version": "2.0.49",
3
+ "version": "2.0.52",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -21,10 +21,10 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@ai-sdk/provider": "4.0.18",
24
- "@ai-sdk/provider-utils": "5.0.46"
24
+ "@ai-sdk/provider-utils": "5.0.49"
25
25
  },
26
26
  "devDependencies": {
27
- "@ai-sdk/test-server": "2.0.1",
27
+ "@ai-sdk/test-server": "2.0.2",
28
28
  "@types/node": "22.19.19",
29
29
  "@vercel/ai-tsconfig": "0.0.0",
30
30
  "tsup": "^8.5.1",