@picsart/ai-sdk 6.20.1 → 6.21.1

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.
Files changed (3) hide show
  1. package/index.d.ts +9 -9
  2. package/index.js +36 -21
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -880,7 +880,7 @@ type ModelInputById = {
880
880
  "kling-v3": {
881
881
  prompt: string;
882
882
  aspectRatio?: "16:9" | "9:16" | "1:1";
883
- duration?: 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
883
+ duration?: number;
884
884
  startFrame?: string;
885
885
  endFrame?: string;
886
886
  negativePrompt?: string;
@@ -903,7 +903,7 @@ type ModelInputById = {
903
903
  "kling-v3-omni": {
904
904
  prompt: string;
905
905
  aspectRatio?: "16:9" | "9:16" | "1:1";
906
- duration?: 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
906
+ duration?: number;
907
907
  resolution?: "720p" | "1080p" | "4k";
908
908
  generateAudio?: boolean;
909
909
  startFrame?: string;
@@ -926,7 +926,7 @@ type ModelInputById = {
926
926
  "kling-v3-turbo": {
927
927
  prompt: string;
928
928
  aspectRatio?: "16:9" | "9:16" | "1:1";
929
- duration?: 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
929
+ duration?: number;
930
930
  negativePrompt?: string;
931
931
  resolution?: "720p" | "1080p";
932
932
  startFrame?: string;
@@ -1295,14 +1295,14 @@ type ModelInputById = {
1295
1295
  "pixverse-c1": {
1296
1296
  prompt: string;
1297
1297
  quality?: "360p" | "540p" | "720p" | "1080p";
1298
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1298
+ duration?: number;
1299
1299
  generateAudio?: boolean;
1300
1300
  aspectRatio?: "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "2:3" | "3:2" | "21:9";
1301
1301
  };
1302
1302
  "pixverse-c1-fusion": {
1303
1303
  prompt: string;
1304
1304
  quality?: "360p" | "540p" | "720p" | "1080p";
1305
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1305
+ duration?: number;
1306
1306
  generateAudio?: boolean;
1307
1307
  aspectRatio?: "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "2:3" | "3:2" | "21:9";
1308
1308
  imageUrls: [string, ...string[]];
@@ -1310,21 +1310,21 @@ type ModelInputById = {
1310
1310
  "pixverse-c1-image": {
1311
1311
  prompt: string;
1312
1312
  quality?: "360p" | "540p" | "720p" | "1080p";
1313
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1313
+ duration?: number;
1314
1314
  generateAudio?: boolean;
1315
1315
  imageUrls: [string, ...string[]];
1316
1316
  };
1317
1317
  "pixverse-v6": {
1318
1318
  prompt: string;
1319
1319
  quality?: "360p" | "540p" | "720p" | "1080p";
1320
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1320
+ duration?: number;
1321
1321
  generateAudio?: boolean;
1322
1322
  aspectRatio?: "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "2:3" | "3:2" | "21:9";
1323
1323
  };
1324
1324
  "pixverse-v6-fusion": {
1325
1325
  prompt: string;
1326
1326
  quality?: "360p" | "540p" | "720p" | "1080p";
1327
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1327
+ duration?: number;
1328
1328
  generateAudio?: boolean;
1329
1329
  aspectRatio?: "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "2:3" | "3:2" | "21:9";
1330
1330
  imageUrls: [string, ...string[]];
@@ -1332,7 +1332,7 @@ type ModelInputById = {
1332
1332
  "pixverse-v6-image": {
1333
1333
  prompt: string;
1334
1334
  quality?: "360p" | "540p" | "720p" | "1080p";
1335
- duration?: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
1335
+ duration?: number;
1336
1336
  generateAudio?: boolean;
1337
1337
  imageUrls: [string, ...string[]];
1338
1338
  };
package/index.js CHANGED
@@ -1411,7 +1411,7 @@ var klingOmniAdvancedParams = {
1411
1411
  };
1412
1412
 
1413
1413
  // src/vendors/catalog/kling/index.ts
1414
- var V3_DURATIONS = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
1414
+ var V3_DURATION = { min: 3, max: 15 };
1415
1415
  var V26_DURATIONS = [5, 10];
1416
1416
  var KLING_IMAGE_AR = ["16:9", "9:16", "1:1", "21:9", "4:3", "3:2", "2:3", "3:4"];
1417
1417
  var klingV3ProVideoBase = {
@@ -1428,10 +1428,9 @@ var klingV3ProVideoBase = {
1428
1428
  ],
1429
1429
  paramConfig: {
1430
1430
  ...params.prompt({ maxLength: 2500 }),
1431
- ...paramPresets.videoStartEndWithAudio({
1432
- durations: V3_DURATIONS,
1433
- defaultDuration: 5
1434
- }),
1431
+ ...paramPresets.videoStartEndWithAudio(),
1432
+ // Overrides the preset's enum duration.
1433
+ ...params.durationRange(V3_DURATION.min, V3_DURATION.max, 5),
1435
1434
  ...klingV3AdvancedParams,
1436
1435
  ...params.renderingSpeed([{ id: "std", label: "Standard" }, { id: "pro", label: "Pro" }, { id: "4k", label: "4K" }], "4k")
1437
1436
  }
@@ -1449,7 +1448,7 @@ var klingV3TurboVideoBase = {
1449
1448
  paramConfig: {
1450
1449
  ...params.prompt({ maxLength: 2500 }),
1451
1450
  ...params.aspectRatio(["16:9", "9:16", "1:1"]),
1452
- ...params.duration(V3_DURATIONS, 5),
1451
+ ...params.durationRange(V3_DURATION.min, V3_DURATION.max, 5),
1453
1452
  ...params.negativePrompt(),
1454
1453
  ...params.resolution(["720p", "1080p"], "720p"),
1455
1454
  ...params.startFrame("Start Frame")
@@ -1538,10 +1537,10 @@ var { MODELS } = defineModels("kling", [
1538
1537
  paramConfig: {
1539
1538
  ...params.prompt({ maxLength: 2500 }),
1540
1539
  ...params.aspectRatio(["16:9", "9:16", "1:1"]),
1541
- ...params.duration(V3_DURATIONS, 5),
1540
+ ...params.durationRange(V3_DURATION.min, V3_DURATION.max, 5),
1542
1541
  // Quality tier maps straight to the wire `mode`: 720p→std, 1080p→pro, 4k→4k.
1543
1542
  ...params.resolution(["720p", "1080p", "4k"], "720p"),
1544
- ...params.generateAudio(false),
1543
+ ...params.generateAudio(),
1545
1544
  ...params.startFrame("First Frame"),
1546
1545
  ...params.endFrame("End Frame"),
1547
1546
  // Vendor cap: reference images + frames + multi-image elements ≤ 7
@@ -1593,7 +1592,7 @@ var { MODELS } = defineModels("kling", [
1593
1592
  ...params.aspectRatio(["16:9", "9:16", "1:1"]),
1594
1593
  ...params.duration([5, 10], 5),
1595
1594
  ...params.renderingSpeed([{ id: "std", label: "Standard" }, { id: "pro", label: "Pro" }], "std"),
1596
- ...params.generateAudio(false)
1595
+ ...params.generateAudio()
1597
1596
  }
1598
1597
  },
1599
1598
  // ── Video: Motion Control ─────────────────────────────────────────
@@ -1937,7 +1936,7 @@ function assertMultiPrompt(multiPrompt, totalDuration, model) {
1937
1936
  }
1938
1937
  var buildKlingV3Payload = (defaultMode = "std") => (input) => {
1939
1938
  const hasEndFrame = !!(input.startFrame && input.endFrame);
1940
- const hasSound = !!input.generateAudio;
1939
+ const hasSound = input.generateAudio ?? true;
1941
1940
  const mode = input.renderingSpeed ?? defaultMode;
1942
1941
  const totalDuration = input.duration ?? 5;
1943
1942
  if (input.multiShot && (input.shotType ?? "customize") !== "intelligence") {
@@ -1977,7 +1976,7 @@ var buildKlingV3TurboPayload = (input) => ({
1977
1976
  });
1978
1977
  var buildKlingV26Payload = (input) => {
1979
1978
  const hasEndFrame = !!(input.startFrame && input.endFrame);
1980
- const hasSound = !!input.generateAudio && !hasEndFrame;
1979
+ const hasSound = (input.generateAudio ?? true) && !hasEndFrame;
1981
1980
  return {
1982
1981
  prompt: input.prompt,
1983
1982
  aspect_ratio: input.aspectRatio ?? "16:9",
@@ -2004,7 +2003,7 @@ var buildOmniV3 = (input) => {
2004
2003
  }] : [];
2005
2004
  const hasBaseEdit = videoList[0]?.refer_type === "base";
2006
2005
  const hasReferenceVideo = videoList.length > 0;
2007
- const hasSound = !!input.generateAudio && !hasReferenceVideo;
2006
+ const hasSound = (input.generateAudio ?? true) && !hasReferenceVideo;
2008
2007
  const mode = input.resolution === "4k" ? hasReferenceVideo ? "pro" : "4k" : input.resolution === "1080p" ? "pro" : "std";
2009
2008
  const totalDuration = input.duration ?? 5;
2010
2009
  if (input.multiShot && !hasBaseEdit) {
@@ -2027,7 +2026,7 @@ var buildOmniV3 = (input) => {
2027
2026
  };
2028
2027
  };
2029
2028
  var buildVideoO1 = (input) => {
2030
- const hasSound = !!input.generateAudio;
2029
+ const hasSound = input.generateAudio ?? true;
2031
2030
  return {
2032
2031
  prompt: input.prompt,
2033
2032
  model_name: "kling-video-o1",
@@ -4359,7 +4358,7 @@ var buildSeedance15ProPayload = (ctx) => ({
4359
4358
  ratio: ctx.aspectRatio ?? "16:9",
4360
4359
  duration: ctx.duration ?? 5,
4361
4360
  resolution: ctx.resolution ?? "720p",
4362
- generate_audio: ctx.generateAudio ?? false,
4361
+ generate_audio: ctx.generateAudio ?? true,
4363
4362
  ...ctx.negativePrompt ? { negative_prompt: ctx.negativePrompt } : {}
4364
4363
  });
4365
4364
  var buildSeedanceI2VPayload = (ctx) => ({
@@ -5199,7 +5198,7 @@ var { MODELS: MODELS13 } = defineModels("bytedance", [
5199
5198
  ...params.aspectRatio(SEEDANCE_AR),
5200
5199
  ...params.resolution(["480p", "720p"], "720p"),
5201
5200
  ...params.duration(SEEDANCE_15_DURATIONS, 5),
5202
- ...params.generateAudio(false),
5201
+ ...params.generateAudio(),
5203
5202
  ...params.startFrame(),
5204
5203
  ...params.endFrame()
5205
5204
  }
@@ -9803,13 +9802,13 @@ var { MODELS: MODELS32 } = defineModels("happyhorse", [
9803
9802
  // src/vendors/catalog/pixverse.ts
9804
9803
  var PIXVERSE_QUALITIES = ["360p", "540p", "720p", "1080p"];
9805
9804
  var PIXVERSE_ASPECT_RATIOS = ["16:9", "4:3", "1:1", "3:4", "9:16", "2:3", "3:2", "21:9"];
9806
- var PIXVERSE_DURATIONS = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
9805
+ var PIXVERSE_DURATION = { min: 5, max: 15 };
9807
9806
  var MAX_REFERENCE_IMAGES = 7;
9808
9807
  var baseParams = {
9809
9808
  ...params.prompt({ maxLength: 5e3 }),
9810
9809
  ...p.quality(PIXVERSE_QUALITIES, "540p"),
9811
- ...params.duration(PIXVERSE_DURATIONS, 5),
9812
- ...params.generateAudio(false)
9810
+ ...params.durationRange(PIXVERSE_DURATION.min, PIXVERSE_DURATION.max, 5),
9811
+ ...params.generateAudio()
9813
9812
  };
9814
9813
  var baseFeatures = [
9815
9814
  feat("Audio", "audio"),
@@ -9919,7 +9918,7 @@ var commonFields = (input, model) => ({
9919
9918
  model,
9920
9919
  quality: input.quality ?? "540p",
9921
9920
  duration: input.duration ?? 5,
9922
- ...input.generateAudio != null ? { generate_audio_switch: input.generateAudio } : {}
9921
+ generate_audio_switch: input.generateAudio ?? true
9923
9922
  });
9924
9923
  var buildTextToVideoPayload = (model) => (input) => ({
9925
9924
  ...commonFields(input, model),
@@ -12343,6 +12342,7 @@ function parseTextResult(completed, model) {
12343
12342
 
12344
12343
  // src/core/limits.ts
12345
12344
  var MAX_DRIVE_PROMPT_LENGTH = 18e3;
12345
+ var MAX_DRIVE_ATTRIBUTE_LENGTH = 2e4;
12346
12346
 
12347
12347
  // src/client/drive.ts
12348
12348
  var USER_REACTION_ATTR = "userReaction";
@@ -12498,7 +12498,7 @@ function parseJsonAttr(raw) {
12498
12498
  var asString = (v) => typeof v === "string" && v.trim() ? v : void 0;
12499
12499
  var asStringArray = (v) => Array.isArray(v) && v.length && v.every((x) => typeof x === "string") ? v : void 0;
12500
12500
  function toSdkPayload(params2) {
12501
- const p2 = { prompt: String(params2.prompt ?? "").slice(0, MAX_DRIVE_PROMPT_LENGTH) };
12501
+ const p2 = { prompt: cutPrompt(String(params2.prompt ?? ""), MAX_DRIVE_PROMPT_LENGTH) };
12502
12502
  for (const [key, value] of Object.entries(params2)) {
12503
12503
  if (key === "prompt") continue;
12504
12504
  if (value === void 0 || value === null || value === "") continue;
@@ -12506,10 +12506,25 @@ function toSdkPayload(params2) {
12506
12506
  }
12507
12507
  return p2;
12508
12508
  }
12509
+ function cutPrompt(prompt, max) {
12510
+ if (prompt.length <= max) return prompt;
12511
+ const code = prompt.charCodeAt(max - 1);
12512
+ return prompt.slice(0, code >= 55296 && code <= 56319 ? max - 1 : max);
12513
+ }
12514
+ function serializeSdkPayload(params2) {
12515
+ const payload = toSdkPayload(params2);
12516
+ let prompt = payload.prompt;
12517
+ for (; ; ) {
12518
+ const serialized = JSON.stringify({ ...payload, prompt });
12519
+ const excess = serialized.length - MAX_DRIVE_ATTRIBUTE_LENGTH;
12520
+ if (excess <= 0 || prompt.length === 0) return serialized;
12521
+ prompt = cutPrompt(prompt, Math.max(0, prompt.length - excess));
12522
+ }
12523
+ }
12509
12524
  function buildGenerationAttributes(input) {
12510
12525
  const attrs = {
12511
12526
  model: input.modelId,
12512
- aiSDKPayload: JSON.stringify(toSdkPayload(input.params))
12527
+ aiSDKPayload: serializeSdkPayload(input.params)
12513
12528
  };
12514
12529
  if (input.app) {
12515
12530
  attrs.appId = input.app.id;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picsart/ai-sdk",
3
- "version": "6.20.1",
3
+ "version": "6.21.1",
4
4
  "type": "module",
5
5
  "description": "Type-safe SDK for 100+ AI models — image, video, audio, and text generation with Picsart",
6
6
  "license": "MIT",