@nodaro/shared 2.18.0 → 2.20.0
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/dist/index.cjs +350 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +955 -564
- package/dist/index.d.ts +955 -564
- package/dist/index.js +334 -24
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/credit-identifiers.test.ts +180 -0
- package/src/__tests__/gvp-supported-providers.test.ts +22 -1
- package/src/__tests__/image-pricing-catalog-coverage.test.ts +139 -0
- package/src/__tests__/normalize-node-params.test.ts +36 -0
- package/src/__tests__/organizations-types.test.ts +29 -1
- package/src/__tests__/prompt-length-limits.test.ts +40 -0
- package/src/__tests__/suno-credit-type.test.ts +54 -0
- package/src/__tests__/video-analysis-brief.test.ts +61 -0
- package/src/__tests__/video-audio-capability.test.ts +43 -0
- package/src/__tests__/video-mode-for-inputs.test.ts +1 -1
- package/src/__tests__/wan-3-catalog.test.ts +243 -0
- package/src/credit-identifiers.ts +191 -21
- package/src/i18n/held-prop.ar.ts +2 -0
- package/src/i18n/held-prop.de.ts +3 -0
- package/src/i18n/held-prop.es.ts +3 -0
- package/src/i18n/held-prop.fr.ts +2 -0
- package/src/i18n/held-prop.he.ts +3 -0
- package/src/i18n/held-prop.hi.ts +2 -0
- package/src/i18n/held-prop.ja.ts +3 -0
- package/src/i18n/held-prop.ko.ts +3 -0
- package/src/i18n/held-prop.pt-BR.ts +3 -0
- package/src/i18n/held-prop.ru.ts +2 -0
- package/src/i18n/held-prop.zh-CN.ts +3 -0
- package/src/i18n/person.ar.ts +3 -0
- package/src/i18n/person.de.ts +4 -0
- package/src/i18n/person.es.ts +4 -0
- package/src/i18n/person.fr.ts +3 -0
- package/src/i18n/person.he.ts +4 -0
- package/src/i18n/person.hi.ts +3 -0
- package/src/i18n/person.ja.ts +4 -0
- package/src/i18n/person.ko.ts +4 -0
- package/src/i18n/person.pt-BR.ts +4 -0
- package/src/i18n/person.ru.ts +3 -0
- package/src/i18n/person.zh-CN.ts +4 -0
- package/src/i18n/setting.ar.ts +2 -0
- package/src/i18n/setting.de.ts +3 -0
- package/src/i18n/setting.es.ts +3 -0
- package/src/i18n/setting.fr.ts +2 -0
- package/src/i18n/setting.he.ts +3 -0
- package/src/i18n/setting.hi.ts +2 -0
- package/src/i18n/setting.ja.ts +3 -0
- package/src/i18n/setting.ko.ts +3 -0
- package/src/i18n/setting.pt-BR.ts +3 -0
- package/src/i18n/setting.ru.ts +2 -0
- package/src/i18n/setting.zh-CN.ts +3 -0
- package/src/i18n/style.ar.ts +2 -0
- package/src/i18n/style.de.ts +3 -0
- package/src/i18n/style.es.ts +3 -0
- package/src/i18n/style.fr.ts +2 -0
- package/src/i18n/style.he.ts +3 -0
- package/src/i18n/style.hi.ts +2 -0
- package/src/i18n/style.ja.ts +3 -0
- package/src/i18n/style.ko.ts +3 -0
- package/src/i18n/style.pt-BR.ts +3 -0
- package/src/i18n/style.ru.ts +2 -0
- package/src/i18n/style.zh-CN.ts +3 -0
- package/src/i18n/styling.ar.ts +4 -0
- package/src/i18n/styling.de.ts +5 -0
- package/src/i18n/styling.es.ts +5 -0
- package/src/i18n/styling.fr.ts +4 -0
- package/src/i18n/styling.he.ts +5 -0
- package/src/i18n/styling.hi.ts +4 -0
- package/src/i18n/styling.ja.ts +5 -0
- package/src/i18n/styling.ko.ts +5 -0
- package/src/i18n/styling.pt-BR.ts +5 -0
- package/src/i18n/styling.ru.ts +4 -0
- package/src/i18n/styling.zh-CN.ts +5 -0
- package/src/index.ts +17 -0
- package/src/model-catalog.ts +101 -0
- package/src/model-constants.ts +251 -16
- package/src/node-default-mappings.ts +5 -0
- package/src/normalize-node-params.ts +8 -0
- package/src/organizations/types.ts +12 -0
- package/src/organizations/views.ts +114 -0
- package/src/video-analysis.ts +45 -0
- package/src/video-ui-defaults.ts +66 -0
package/dist/index.cjs
CHANGED
|
@@ -84,6 +84,7 @@ var WAN_27_IMAGE_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "21:9", "8:1", "
|
|
|
84
84
|
var VIDEO_RATIOS_HVS345 = ["16:9", "9:16", "1:1", "4:3", "3:4"];
|
|
85
85
|
var VIDEO_RATIOS_SEEDANCE_2 = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "adaptive"];
|
|
86
86
|
var VIDEO_RATIOS_HAPPYHORSE_11 = ["16:9", "9:16", "1:1", "4:3", "3:4", "4:5", "5:4", "21:9", "9:21"];
|
|
87
|
+
var VIDEO_RATIOS_WAN_3 = ["adaptive", "16:9", "4:3", "1:1", "3:4", "9:16"];
|
|
87
88
|
var IMAGE_MODELS = {
|
|
88
89
|
// ── Google Nano Banana ──
|
|
89
90
|
"nano-banana": {
|
|
@@ -1023,6 +1024,42 @@ var VIDEO_MODELS = {
|
|
|
1023
1024
|
{ identifier: "gemini-omni-video:4k:vref", credits: 900, note: "video-edit 4K" }
|
|
1024
1025
|
]
|
|
1025
1026
|
},
|
|
1027
|
+
// Gemini Omni Flash 1.1 — the faster/cheaper Omni SKU (KIE
|
|
1028
|
+
// `google/gemini-omni-flash-1-1`). Identical request surface to
|
|
1029
|
+
// gemini-omni-video, so every capability below is deliberate PARITY with the
|
|
1030
|
+
// sibling: same 4/6/8/10s ladder, same 720p/1080p + 4K bands, same
|
|
1031
|
+
// features (the KIE schema also exposes first/last frame, but the pro
|
|
1032
|
+
// sibling's frame path is unwired here too — no "end-frame" until it is).
|
|
1033
|
+
// 360p is on the KIE enum but NOT exposed: it sits in the same credit band as
|
|
1034
|
+
// 720p/1080p, so it could only hand the user a worse render at the same price.
|
|
1035
|
+
"gemini-omni-flash": {
|
|
1036
|
+
id: "gemini-omni-flash",
|
|
1037
|
+
kind: "video",
|
|
1038
|
+
modes: ["i2v", "t2v"],
|
|
1039
|
+
// V2V is served via the i2v handle, not a catalog mode
|
|
1040
|
+
family: "Google",
|
|
1041
|
+
label: "Gemini Omni Flash",
|
|
1042
|
+
series: "Gemini",
|
|
1043
|
+
description: "Google Gemini Omni Flash \u2014 faster/cheaper Omni tier: multimodal video with native audio, text/image-to-video + video-edit.",
|
|
1044
|
+
useCases: ["cinematic", "fast"],
|
|
1045
|
+
features: ["audio", "reference-image"],
|
|
1046
|
+
aspectRatios: VIDEO_RATIOS_HV,
|
|
1047
|
+
resolutions: ["720p", "1080p", "4k"],
|
|
1048
|
+
durations: [4, 6, 8, 10],
|
|
1049
|
+
pricing: [
|
|
1050
|
+
{ identifier: "gemini-omni-flash", credits: 270, note: "default \u2014 8s 720p/1080p (the credit builder's duration fallback)" },
|
|
1051
|
+
{ identifier: "gemini-omni-flash:4", credits: 160, note: "720p/1080p 4s" },
|
|
1052
|
+
{ identifier: "gemini-omni-flash:6", credits: 210, note: "720p/1080p 6s" },
|
|
1053
|
+
{ identifier: "gemini-omni-flash:8", credits: 270, note: "720p/1080p 8s" },
|
|
1054
|
+
{ identifier: "gemini-omni-flash:10", credits: 320, note: "720p/1080p 10s" },
|
|
1055
|
+
{ identifier: "gemini-omni-flash:4k:4", credits: 370, note: "4K 4s" },
|
|
1056
|
+
{ identifier: "gemini-omni-flash:4k:6", credits: 420, note: "4K 6s" },
|
|
1057
|
+
{ identifier: "gemini-omni-flash:4k:8", credits: 480, note: "4K 8s" },
|
|
1058
|
+
{ identifier: "gemini-omni-flash:4k:10", credits: 530, note: "4K 10s" },
|
|
1059
|
+
{ identifier: "gemini-omni-flash:vref", credits: 420, note: "video-edit 720p/1080p" },
|
|
1060
|
+
{ identifier: "gemini-omni-flash:4k:vref", credits: 630, note: "video-edit 4K" }
|
|
1061
|
+
]
|
|
1062
|
+
},
|
|
1026
1063
|
// ── Kling ──
|
|
1027
1064
|
"kling": {
|
|
1028
1065
|
id: "kling",
|
|
@@ -1290,6 +1327,66 @@ var VIDEO_MODELS = {
|
|
|
1290
1327
|
]
|
|
1291
1328
|
},
|
|
1292
1329
|
// ── Wan ──
|
|
1330
|
+
// Wan 3.0 (standard + Prime) — a NEW generation, not a tier of the 2.x ladder.
|
|
1331
|
+
// One id per SKU serves BOTH modes (no t2v twin, no alias): first/last frame
|
|
1332
|
+
// OR an all-purpose reference mode (images/videos/audio, bound in the prompt
|
|
1333
|
+
// as Image1/Video1/Audio1 — no space, unlike Wan 2.x), native audio behind a
|
|
1334
|
+
// boolean `audio` lever, 2-30s at 480p/720p/1080p.
|
|
1335
|
+
// `video-reference` is deliberately NOT declared: KIE accepts reference videos,
|
|
1336
|
+
// but the extend chain is unwired and KIE caps input-video + output at 30s,
|
|
1337
|
+
// which the segment bounds cannot express. Precedent: gemini-omni-video carries
|
|
1338
|
+
// ref limits without the feature. The ref CAPS still live in
|
|
1339
|
+
// VIDEO_REF_LIMITS_BY_PROVIDER (model-constants).
|
|
1340
|
+
// `resolutions` is ascending (repo convention); the DEFAULT tier (720p) is
|
|
1341
|
+
// declared explicitly in PRICING_DEFAULT_RESOLUTION, never by array position.
|
|
1342
|
+
"wan-3": {
|
|
1343
|
+
id: "wan-3",
|
|
1344
|
+
kind: "video",
|
|
1345
|
+
modes: ["i2v", "t2v"],
|
|
1346
|
+
family: "Alibaba",
|
|
1347
|
+
label: "Wan 3.0",
|
|
1348
|
+
series: "Wan",
|
|
1349
|
+
description: "Wan 3.0 \u2014 multimodal: first/last frame or image/video/audio references, native audio, 2-30s at 480p/720p/1080p.",
|
|
1350
|
+
useCases: ["motion", "narrative", "long-form"],
|
|
1351
|
+
features: ["end-frame", "audio", "reference-image"],
|
|
1352
|
+
aspectRatios: VIDEO_RATIOS_WAN_3,
|
|
1353
|
+
durations: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
1354
|
+
resolutions: ["480p", "720p", "1080p"],
|
|
1355
|
+
pricing: [
|
|
1356
|
+
{ identifier: "wan-3", credits: 200, note: "default 5s 720p \u2014 see :Ns:res variants for exact" },
|
|
1357
|
+
{ identifier: "wan-3:5s:720p", credits: 200, note: "5s 720p (the default tier)" },
|
|
1358
|
+
{ identifier: "wan-3:8s:480p", credits: 160, note: "8s 480p" },
|
|
1359
|
+
{ identifier: "wan-3:8s:720p", credits: 320, note: "8s 720p" },
|
|
1360
|
+
{ identifier: "wan-3:8s:1080p", credits: 640, note: "8s 1080p" },
|
|
1361
|
+
{ identifier: "wan-3:30s:480p", credits: 600, note: "30s 480p (max)" },
|
|
1362
|
+
{ identifier: "wan-3:30s:720p", credits: 1200, note: "30s 720p (max)" },
|
|
1363
|
+
{ identifier: "wan-3:30s:1080p", credits: 2400, note: "30s 1080p (max)" }
|
|
1364
|
+
]
|
|
1365
|
+
},
|
|
1366
|
+
"wan-3-prime": {
|
|
1367
|
+
id: "wan-3-prime",
|
|
1368
|
+
kind: "video",
|
|
1369
|
+
modes: ["i2v", "t2v"],
|
|
1370
|
+
family: "Alibaba",
|
|
1371
|
+
label: "Wan 3.0 Prime",
|
|
1372
|
+
series: "Wan",
|
|
1373
|
+
description: "Wan 3.0 Prime \u2014 Alibaba's high-speed Wan 3.0 tier: same multimodal surface and 2-30s range, faster turnaround at a higher per-second rate.",
|
|
1374
|
+
useCases: ["fast", "motion", "narrative"],
|
|
1375
|
+
features: ["end-frame", "audio", "reference-image"],
|
|
1376
|
+
aspectRatios: VIDEO_RATIOS_WAN_3,
|
|
1377
|
+
durations: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
1378
|
+
resolutions: ["480p", "720p", "1080p"],
|
|
1379
|
+
pricing: [
|
|
1380
|
+
{ identifier: "wan-3-prime", credits: 320, note: "default 5s 720p \u2014 see :Ns:res variants for exact" },
|
|
1381
|
+
{ identifier: "wan-3-prime:5s:720p", credits: 320, note: "5s 720p (the default tier)" },
|
|
1382
|
+
{ identifier: "wan-3-prime:8s:480p", credits: 250, note: "8s 480p" },
|
|
1383
|
+
{ identifier: "wan-3-prime:8s:720p", credits: 510, note: "8s 720p" },
|
|
1384
|
+
{ identifier: "wan-3-prime:8s:1080p", credits: 1010, note: "8s 1080p" },
|
|
1385
|
+
{ identifier: "wan-3-prime:30s:480p", credits: 920, note: "30s 480p (max)" },
|
|
1386
|
+
{ identifier: "wan-3-prime:30s:720p", credits: 1890, note: "30s 720p (max)" },
|
|
1387
|
+
{ identifier: "wan-3-prime:30s:1080p", credits: 3780, note: "30s 1080p (max)" }
|
|
1388
|
+
]
|
|
1389
|
+
},
|
|
1293
1390
|
"wan-i2v": {
|
|
1294
1391
|
id: "wan-i2v",
|
|
1295
1392
|
kind: "video",
|
|
@@ -2428,6 +2525,25 @@ function modelIdsByKindMode(kind, modes, opts = {}) {
|
|
|
2428
2525
|
// src/model-constants.ts
|
|
2429
2526
|
var CREDIT_BASE_USD = 2e-3;
|
|
2430
2527
|
var IMAGE_PROMPT_MAX = 5e3;
|
|
2528
|
+
var IMAGE_ASPECT_RATIO_VALUES = [
|
|
2529
|
+
"auto",
|
|
2530
|
+
"1:1",
|
|
2531
|
+
"16:9",
|
|
2532
|
+
"9:16",
|
|
2533
|
+
"4:3",
|
|
2534
|
+
"3:4",
|
|
2535
|
+
"3:2",
|
|
2536
|
+
"2:3",
|
|
2537
|
+
"5:4",
|
|
2538
|
+
"4:5",
|
|
2539
|
+
"21:9",
|
|
2540
|
+
// Ultra-wide / ultra-tall banner ratios: Wan 2.7 + Wan 2.7 Pro (8:1, 1:8)
|
|
2541
|
+
// and Nano Banana 2 Lite (4:1, 1:4, 8:1, 1:8).
|
|
2542
|
+
"4:1",
|
|
2543
|
+
"1:4",
|
|
2544
|
+
"8:1",
|
|
2545
|
+
"1:8"
|
|
2546
|
+
];
|
|
2431
2547
|
var MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER = {
|
|
2432
2548
|
// ── higher than the 5000 default ──
|
|
2433
2549
|
"nano-banana-2": 2e4,
|
|
@@ -2465,6 +2581,7 @@ function getMaxImagePromptChars(provider) {
|
|
|
2465
2581
|
}
|
|
2466
2582
|
var VIDEO_PROMPT_MAX = 8e3;
|
|
2467
2583
|
var SUNO_TEXT_MAX = 5e3;
|
|
2584
|
+
var SUNO_HARD_CEILING = 3e4;
|
|
2468
2585
|
var PROMPT_HARD_CEILING = 3e4;
|
|
2469
2586
|
var LLM_TEXT_INPUT_MAX = 1e5;
|
|
2470
2587
|
var MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = {
|
|
@@ -2481,6 +2598,13 @@ var MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = {
|
|
|
2481
2598
|
// (docs.kie.ai/market/bytedance/seedance-2-5).
|
|
2482
2599
|
"seedance-2-5": 3e4,
|
|
2483
2600
|
"gemini-omni-video": 2e4,
|
|
2601
|
+
// Gemini Omni Flash 1.1 — same 20000-char prompt surface as the pro sibling
|
|
2602
|
+
// (docs.kie.ai/market/google/gemini-omni-flash-1-1).
|
|
2603
|
+
"gemini-omni-flash": 2e4,
|
|
2604
|
+
// Wan 3.0 / 3.0 Prime — 20000 chars, excess truncated by the provider
|
|
2605
|
+
// (docs.kie.ai/market/wan/3-0-video and /3-0-video-prime).
|
|
2606
|
+
"wan-3": 2e4,
|
|
2607
|
+
"wan-3-prime": 2e4,
|
|
2484
2608
|
"bytedance-lite": 1e4,
|
|
2485
2609
|
"bytedance-pro": 1e4,
|
|
2486
2610
|
"bytedance-pro-fast": 1e4,
|
|
@@ -2873,6 +2997,11 @@ var IMAGE_TO_VIDEO_PROVIDERS = [
|
|
|
2873
2997
|
"runway-kie",
|
|
2874
2998
|
"kling-3-omni",
|
|
2875
2999
|
"gemini-omni-video",
|
|
3000
|
+
"gemini-omni-flash",
|
|
3001
|
+
// Wan 3.0 family — one id per SKU serves BOTH modes (no t2v twin, no alias),
|
|
3002
|
+
// so each id is listed in this array AND in TEXT_TO_VIDEO_PROVIDERS.
|
|
3003
|
+
"wan-3",
|
|
3004
|
+
"wan-3-prime",
|
|
2876
3005
|
"ltx-2.3-pro",
|
|
2877
3006
|
"ltx-2.3-fast",
|
|
2878
3007
|
// xAI Grok Imagine Video 1.5 — KIE i2v (image_urls required). Also listed in
|
|
@@ -2908,6 +3037,12 @@ var TEXT_TO_VIDEO_PROVIDERS = [
|
|
|
2908
3037
|
"happyhorse",
|
|
2909
3038
|
"runway-kie",
|
|
2910
3039
|
"gemini-omni-video",
|
|
3040
|
+
"gemini-omni-flash",
|
|
3041
|
+
// Wan 3.0 family — REAL t2v (prompt-only runs are the documented default
|
|
3042
|
+
// mode), so they belong in this main section and must NOT be gated by
|
|
3043
|
+
// VIDEO_PROVIDERS_REQUIRING_IMAGE.
|
|
3044
|
+
"wan-3",
|
|
3045
|
+
"wan-3-prime",
|
|
2911
3046
|
"ltx-2.3-pro",
|
|
2912
3047
|
"ltx-2.3-fast",
|
|
2913
3048
|
// ── i2v-only providers (image required) ──────────────────────────────────
|
|
@@ -3204,7 +3339,13 @@ var DURATION_PRICED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
3204
3339
|
"grok-imagine-video-1.5",
|
|
3205
3340
|
"happyhorse",
|
|
3206
3341
|
"happyhorse-i2v",
|
|
3207
|
-
"happyhorse-ref2v"
|
|
3342
|
+
"happyhorse-ref2v",
|
|
3343
|
+
// Wan 3.0 family — per-second billing at three resolution rates. NOTE:
|
|
3344
|
+
// gemini-omni-flash is deliberately ABSENT (like gemini-omni-video): the
|
|
3345
|
+
// Gemini Omni branch in buildVideoCreditModelIdentifier early-returns before
|
|
3346
|
+
// this gate is consulted.
|
|
3347
|
+
"wan-3",
|
|
3348
|
+
"wan-3-prime"
|
|
3208
3349
|
]);
|
|
3209
3350
|
var SEEDANCE_2_PROVIDERS = /* @__PURE__ */ new Set([
|
|
3210
3351
|
"seedance-2",
|
|
@@ -3230,6 +3371,33 @@ var MINIMAX_H3_DEFAULT_RESOLUTION = "2K";
|
|
|
3230
3371
|
function normalizeMinimaxH3Resolution(resolution) {
|
|
3231
3372
|
return resolution?.trim().toLowerCase() === "768p" ? "768P" : MINIMAX_H3_DEFAULT_RESOLUTION;
|
|
3232
3373
|
}
|
|
3374
|
+
var WAN_3_PROVIDERS = /* @__PURE__ */ new Set([
|
|
3375
|
+
"wan-3",
|
|
3376
|
+
"wan-3-prime"
|
|
3377
|
+
]);
|
|
3378
|
+
function isWan3Provider(provider) {
|
|
3379
|
+
return !!provider && WAN_3_PROVIDERS.has(provider);
|
|
3380
|
+
}
|
|
3381
|
+
var WAN_3_DEFAULT_RESOLUTION = "720P";
|
|
3382
|
+
function normalizeWan3Resolution(resolution) {
|
|
3383
|
+
switch (resolution?.trim().toLowerCase()) {
|
|
3384
|
+
case "480p":
|
|
3385
|
+
return "480P";
|
|
3386
|
+
case "1080p":
|
|
3387
|
+
return "1080P";
|
|
3388
|
+
case "720p":
|
|
3389
|
+
return "720P";
|
|
3390
|
+
default:
|
|
3391
|
+
return WAN_3_DEFAULT_RESOLUTION;
|
|
3392
|
+
}
|
|
3393
|
+
}
|
|
3394
|
+
var GEMINI_OMNI_PROVIDERS = /* @__PURE__ */ new Set([
|
|
3395
|
+
"gemini-omni-video",
|
|
3396
|
+
"gemini-omni-flash"
|
|
3397
|
+
]);
|
|
3398
|
+
function isGeminiOmniProvider(provider) {
|
|
3399
|
+
return !!provider && GEMINI_OMNI_PROVIDERS.has(provider);
|
|
3400
|
+
}
|
|
3233
3401
|
var VIDEO_PROVIDERS_WITHOUT_DISPATCH = /* @__PURE__ */ new Set([
|
|
3234
3402
|
"kling-3-omni"
|
|
3235
3403
|
]);
|
|
@@ -3313,7 +3481,7 @@ function maxSegmentsFor(provider, capSec) {
|
|
|
3313
3481
|
return max > 0 ? Math.ceil(capSec / max) : 0;
|
|
3314
3482
|
}
|
|
3315
3483
|
function defaultVideoAspectRatio(provider) {
|
|
3316
|
-
return isSeedance2Provider(provider) || isMinimaxH3Provider(provider) ? "adaptive" : "16:9";
|
|
3484
|
+
return isSeedance2Provider(provider) || isMinimaxH3Provider(provider) || isWan3Provider(provider) ? "adaptive" : "16:9";
|
|
3317
3485
|
}
|
|
3318
3486
|
var VEO_PROVIDERS = /* @__PURE__ */ new Set([
|
|
3319
3487
|
"veo3",
|
|
@@ -3357,7 +3525,11 @@ var SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = {
|
|
|
3357
3525
|
"seedance-2-5": 30,
|
|
3358
3526
|
// MiniMax Hailuo 3 — documented hard limit: each reference audio segment
|
|
3359
3527
|
// 2-15s, ≤15s total (docs.kie.ai/market/minimax-h3/reference-to-video).
|
|
3360
|
-
"minimax-h3": 15
|
|
3528
|
+
"minimax-h3": 15,
|
|
3529
|
+
// Wan 3.0 family — documented hard limit: each reference audio clip 1-15s,
|
|
3530
|
+
// ≤15s combined (docs.kie.ai/market/wan/3-0-video).
|
|
3531
|
+
"wan-3": 15,
|
|
3532
|
+
"wan-3-prime": 15
|
|
3361
3533
|
};
|
|
3362
3534
|
function seedance2AudioLimitSec(provider) {
|
|
3363
3535
|
if (!provider) return null;
|
|
@@ -3383,8 +3555,17 @@ var VIDEO_REF_LIMITS_BY_PROVIDER = {
|
|
|
3383
3555
|
// bills input images beyond the first 5 (11 KIE cr each) — see the
|
|
3384
3556
|
// minimax-h3 credit helper in backend ee/billing.
|
|
3385
3557
|
"minimax-h3": { ...SEEDANCE_2_REF_LIMITS },
|
|
3558
|
+
// Wan 3.0 family — all-purpose reference mode: up to 10 images / 5 videos
|
|
3559
|
+
// (each 1-15s, ≤15s combined) / 5 audio clips (each 1-15s, ≤15s combined).
|
|
3560
|
+
// The reference arrays are mutually EXCLUSIVE with first/last frame at the
|
|
3561
|
+
// provider (docs.kie.ai/market/wan/3-0-video).
|
|
3562
|
+
"wan-3": { images: 10, videos: 5, audio: 5 },
|
|
3563
|
+
"wan-3-prime": { images: 10, videos: 5, audio: 5 },
|
|
3386
3564
|
// Multi-image reference providers.
|
|
3387
3565
|
"gemini-omni-video": { images: 7, videos: 1 },
|
|
3566
|
+
// Gemini Omni Flash 1.1 — identical quota to the pro sibling
|
|
3567
|
+
// (images + 2×videos + character_ids ≤ 7).
|
|
3568
|
+
"gemini-omni-flash": { images: 7, videos: 1 },
|
|
3388
3569
|
"kling-3-omni": { images: 7 },
|
|
3389
3570
|
// catalog/docs: "end frame + up to 7 reference images"
|
|
3390
3571
|
"grok-i2v": { images: 7 },
|
|
@@ -3415,13 +3596,26 @@ var RESOLUTION_DURATION_PRICING = {
|
|
|
3415
3596
|
// pinned to 720p via extraParams in backend kie/models.ts so render matches.
|
|
3416
3597
|
"happyhorse": ["720p", "1080p"],
|
|
3417
3598
|
"happyhorse-i2v": ["720p", "1080p"],
|
|
3418
|
-
"happyhorse-ref2v": ["720p", "1080p"]
|
|
3599
|
+
"happyhorse-ref2v": ["720p", "1080p"],
|
|
3600
|
+
// Wan 3.0 / Prime — per-second billing at three published resolution rates.
|
|
3601
|
+
// Ascending, matching the catalog; the BILLED default is declared explicitly
|
|
3602
|
+
// in PRICING_DEFAULT_RESOLUTION ("720p") rather than carried by index 0, and
|
|
3603
|
+
// the provider layer pins the same 720P so render == billed.
|
|
3604
|
+
"wan-3": ["480p", "720p", "1080p"],
|
|
3605
|
+
"wan-3-prime": ["480p", "720p", "1080p"]
|
|
3419
3606
|
};
|
|
3420
3607
|
var NATIVE_ADAPTIVE_ASPECT = {
|
|
3421
3608
|
"seedance-2": "adaptive",
|
|
3422
3609
|
"seedance-2-fast": "adaptive",
|
|
3423
3610
|
"seedance-2-mini": "adaptive",
|
|
3424
|
-
"seedance-2-5": "adaptive"
|
|
3611
|
+
"seedance-2-5": "adaptive",
|
|
3612
|
+
// Wan 3.0 family: `adaptive` is the enum DEFAULT and KIE documents it as
|
|
3613
|
+
// "automatically selects the ratio based on the input media and intent"
|
|
3614
|
+
// (docs.kie.ai/market/wan/3-0-video) — i.e. match-the-input, not merely
|
|
3615
|
+
// "provider default" (the grok `auto` trap). DOC-verified only; re-confirm
|
|
3616
|
+
// with a live job before relying on it for off-catalog ratios.
|
|
3617
|
+
"wan-3": "adaptive",
|
|
3618
|
+
"wan-3-prime": "adaptive"
|
|
3425
3619
|
};
|
|
3426
3620
|
var FRAME_MODE_ADAPTIVE_ONLY_ASPECT = /* @__PURE__ */ new Set([
|
|
3427
3621
|
"seedance-2-5"
|
|
@@ -3472,7 +3666,20 @@ var VIDEO_AUDIO_CAPABILITY = {
|
|
|
3472
3666
|
// MiniMax Hailuo 3 — multimodal; lip-syncs to reference audio (r2v). The
|
|
3473
3667
|
// KIE API exposes NO audio on/off parameter (audio is always produced), so
|
|
3474
3668
|
// there is no toggle field — alwaysOn, like VEO.
|
|
3475
|
-
"minimax-h3": { mode: "audio_driven", alwaysOn: true }
|
|
3669
|
+
"minimax-h3": { mode: "audio_driven", alwaysOn: true },
|
|
3670
|
+
// Wan 3.0 family — a single boolean `audio` lever (KIE default true) produces
|
|
3671
|
+
// an ambient/SFX track with the clip. Classified "ambient", NOT
|
|
3672
|
+
// "native_speech" or "audio_driven": the schema documents no dialogue
|
|
3673
|
+
// guarantee, and reference audio is a generic conditioning array, not a
|
|
3674
|
+
// verified lip-sync transport. Upgrade only on a live probe (the kling-3.0
|
|
3675
|
+
// standard) — `audio_driven` would reroute the Story→Video dialogue pipeline
|
|
3676
|
+
// and skip the lip-sync pass. `defaultOn` mirrors the KIE default so an
|
|
3677
|
+
// intent-less request is described honestly; audio is priced into the uniform
|
|
3678
|
+
// per-second rate, so NOT cost-affecting (no `:audio` composite).
|
|
3679
|
+
// gemini-omni-flash is deliberately ABSENT — gemini-omni-video is absent too
|
|
3680
|
+
// (mode "none"), and the siblings must not disagree.
|
|
3681
|
+
"wan-3": { mode: "ambient", field: "audio", defaultOn: true },
|
|
3682
|
+
"wan-3-prime": { mode: "ambient", field: "audio", defaultOn: true }
|
|
3476
3683
|
};
|
|
3477
3684
|
var VIDEO_AUDIO_NONE = { mode: "none" };
|
|
3478
3685
|
function getVideoAudioCapability(model) {
|
|
@@ -3491,6 +3698,7 @@ function applyVideoAudioToggle(input, provider, opts) {
|
|
|
3491
3698
|
const enabled = cap.affectsCost ? opts?.sound : opts?.sound ?? opts?.generateAudio;
|
|
3492
3699
|
if (enabled === void 0) return;
|
|
3493
3700
|
if (cap.field === "generateAudio") input.generate_audio = enabled;
|
|
3701
|
+
else if (cap.field === "audio") input.audio = enabled;
|
|
3494
3702
|
else input.sound = enabled;
|
|
3495
3703
|
}
|
|
3496
3704
|
var MODE_ADDON_PROVIDERS = /* @__PURE__ */ new Set([]);
|
|
@@ -3520,14 +3728,27 @@ var VIDEO_VARIABLE_PRICING = {
|
|
|
3520
3728
|
// images are billed via the dedicated compute hook, not the identifier.
|
|
3521
3729
|
"minimax-h3": "duration+resolution",
|
|
3522
3730
|
// Grok Imagine Video 1.5 — per-second billing split 480p/720p (no video-ref dimension).
|
|
3523
|
-
"grok-imagine-video-1.5": "duration+resolution"
|
|
3731
|
+
"grok-imagine-video-1.5": "duration+resolution",
|
|
3732
|
+
// Wan 3.0 family — per-second billing at three resolution rates (no video-ref
|
|
3733
|
+
// dimension: reference runs bill output seconds only). No gemini-omni-flash
|
|
3734
|
+
// entry, mirroring gemini-omni-video which has none either.
|
|
3735
|
+
"wan-3": "duration+resolution",
|
|
3736
|
+
"wan-3-prime": "duration+resolution"
|
|
3524
3737
|
};
|
|
3525
3738
|
var PRICING_DEFAULT_DURATION_SEC = {
|
|
3526
3739
|
"minimax-h3": 6
|
|
3527
3740
|
};
|
|
3528
3741
|
var PRICING_DEFAULT_RESOLUTION = {
|
|
3529
3742
|
// KIE renders 720p when `resolution` is omitted (kie/models.ts extraParams).
|
|
3530
|
-
"seedance-2-5": "720p"
|
|
3743
|
+
"seedance-2-5": "720p",
|
|
3744
|
+
// Wan 3.0 family — KIE's OWN default is 1080P, but the provider layer pins
|
|
3745
|
+
// 720P (normalizeWan3Resolution / WAN_3_DEFAULT_RESOLUTION) so the rendered
|
|
3746
|
+
// tier equals the tier the bare identifier bills. This declaration is what
|
|
3747
|
+
// makes the billed default explicit instead of an array ordering: the
|
|
3748
|
+
// RESOLUTION_DURATION_PRICING branch consults it before falling back to the
|
|
3749
|
+
// first tier, so the catalog can stay ascending without repricing anything.
|
|
3750
|
+
"wan-3": "720p",
|
|
3751
|
+
"wan-3-prime": "720p"
|
|
3531
3752
|
};
|
|
3532
3753
|
var HAPPYHORSE_DURATION_TIERS = Array.from(
|
|
3533
3754
|
{ length: 13 },
|
|
@@ -3537,6 +3758,10 @@ var SEEDANCE_2_5_DURATION_TIERS = Array.from(
|
|
|
3537
3758
|
{ length: 27 },
|
|
3538
3759
|
(_, i) => ({ maxSeconds: i + 4, suffix: `${i + 4}s` })
|
|
3539
3760
|
);
|
|
3761
|
+
var WAN_3_DURATION_TIERS = Array.from(
|
|
3762
|
+
{ length: 29 },
|
|
3763
|
+
(_, i) => ({ maxSeconds: i + 2, suffix: `${i + 2}s` })
|
|
3764
|
+
);
|
|
3540
3765
|
var VIDEO_DURATION_TIERS = {
|
|
3541
3766
|
"kling-3.0": [
|
|
3542
3767
|
{ maxSeconds: 5, suffix: "5s" },
|
|
@@ -3612,6 +3837,8 @@ var VIDEO_DURATION_TIERS = {
|
|
|
3612
3837
|
{ maxSeconds: 15, suffix: "15s" }
|
|
3613
3838
|
],
|
|
3614
3839
|
"seedance-2-5": SEEDANCE_2_5_DURATION_TIERS,
|
|
3840
|
+
"wan-3": WAN_3_DURATION_TIERS,
|
|
3841
|
+
"wan-3-prime": WAN_3_DURATION_TIERS,
|
|
3615
3842
|
// MiniMax Hailuo 3 — true per-second billing (KIE 36.5 cr/s @2K, 22.5 cr/s
|
|
3616
3843
|
// @768P). One tier per allowed second (4-15s) so the composite identifier
|
|
3617
3844
|
// maps 1:1 to the seeded price — no rounding/overcharge for any on-menu
|
|
@@ -4219,17 +4446,33 @@ function buildCreditModelIdentifier(provider, quality, resolution, renderingSpee
|
|
|
4219
4446
|
}
|
|
4220
4447
|
return provider;
|
|
4221
4448
|
}
|
|
4449
|
+
function resolveNormalizedImageGen(opts) {
|
|
4450
|
+
const str = (v) => typeof v === "string" && v.length > 0 ? v : void 0;
|
|
4451
|
+
const provider = str(opts.provider) ?? "nano-banana";
|
|
4452
|
+
const modelId = opts.swapToI2i && opts.refCount > 0 ? T2I_TO_I2I_VARIANT[provider] ?? provider : provider;
|
|
4453
|
+
const n = normalizeModelInput(modelId, {
|
|
4454
|
+
aspectRatio: str(opts.aspectRatio),
|
|
4455
|
+
resolution: str(opts.resolution),
|
|
4456
|
+
quality: str(opts.quality)
|
|
4457
|
+
});
|
|
4458
|
+
return {
|
|
4459
|
+
identifier: buildCreditModelIdentifier(
|
|
4460
|
+
modelId,
|
|
4461
|
+
n.quality,
|
|
4462
|
+
n.resolution,
|
|
4463
|
+
str(opts.renderingSpeed),
|
|
4464
|
+
void 0,
|
|
4465
|
+
opts.refCount
|
|
4466
|
+
),
|
|
4467
|
+
modelId,
|
|
4468
|
+
aspectRatio: n.aspectRatio,
|
|
4469
|
+
resolution: n.resolution,
|
|
4470
|
+
quality: n.quality,
|
|
4471
|
+
adjustments: n.adjustments
|
|
4472
|
+
};
|
|
4473
|
+
}
|
|
4222
4474
|
function resolveImageGenCreditIdentifier(opts) {
|
|
4223
|
-
|
|
4224
|
-
const effectiveProvider = opts.swapToI2i && opts.refCount > 0 ? T2I_TO_I2I_VARIANT[provider] ?? provider : provider;
|
|
4225
|
-
return buildCreditModelIdentifier(
|
|
4226
|
-
effectiveProvider,
|
|
4227
|
-
opts.quality,
|
|
4228
|
-
opts.resolution,
|
|
4229
|
-
opts.renderingSpeed,
|
|
4230
|
-
void 0,
|
|
4231
|
-
opts.refCount
|
|
4232
|
-
);
|
|
4475
|
+
return resolveNormalizedImageGen(opts).identifier;
|
|
4233
4476
|
}
|
|
4234
4477
|
var T2V_CREDIT_OVERRIDES = {
|
|
4235
4478
|
"grok": "grok-i2v",
|
|
@@ -4261,13 +4504,13 @@ function buildVideoCreditModelIdentifier(provider, duration, sound, nodeType, mo
|
|
|
4261
4504
|
if (resolution === "1080p" && VEO_RESOLUTION_TIERED_PROVIDERS.has(effectiveProvider)) return `${effectiveProvider}:1080p`;
|
|
4262
4505
|
return effectiveProvider;
|
|
4263
4506
|
}
|
|
4264
|
-
if (effectiveProvider
|
|
4507
|
+
if (isGeminiOmniProvider(effectiveProvider)) {
|
|
4265
4508
|
if (hasVideoRef) {
|
|
4266
|
-
return resolution === "4k" ?
|
|
4509
|
+
return resolution === "4k" ? `${effectiveProvider}:4k:vref` : `${effectiveProvider}:vref`;
|
|
4267
4510
|
}
|
|
4268
4511
|
const raw = parseInt(String(duration ?? 8), 10);
|
|
4269
4512
|
const d = Number.isNaN(raw) ? 8 : GEMINI_OMNI_DURATIONS.reduce((b, a) => Math.abs(a - raw) < Math.abs(b - raw) ? a : b);
|
|
4270
|
-
return resolution === "4k" ?
|
|
4513
|
+
return resolution === "4k" ? `${effectiveProvider}:4k:${d}` : `${effectiveProvider}:${d}`;
|
|
4271
4514
|
}
|
|
4272
4515
|
if (effectiveProvider === "ltx-2.3-pro" || effectiveProvider === "ltx-2.3-fast") {
|
|
4273
4516
|
const bands = LTX_DURATION_TIERS[effectiveProvider];
|
|
@@ -4305,7 +4548,10 @@ function buildVideoCreditModelIdentifier(provider, duration, sound, nodeType, mo
|
|
|
4305
4548
|
}
|
|
4306
4549
|
const resTiers = RESOLUTION_DURATION_PRICING[effectiveProvider];
|
|
4307
4550
|
if (resTiers) {
|
|
4308
|
-
const
|
|
4551
|
+
const declaredDefault = PRICING_DEFAULT_RESOLUTION[effectiveProvider];
|
|
4552
|
+
const fallback = declaredDefault && resTiers.includes(declaredDefault) ? declaredDefault : resTiers[0];
|
|
4553
|
+
const requested = isWan3Provider(effectiveProvider) ? normalizeWan3Resolution(resolution).toLowerCase() : resolution;
|
|
4554
|
+
const res = requested && resTiers.includes(requested) ? requested : fallback;
|
|
4309
4555
|
identifier += `:${res}`;
|
|
4310
4556
|
}
|
|
4311
4557
|
if (isMinimaxH3Provider(effectiveProvider) && normalizeMinimaxH3Resolution(resolution) === "768P") {
|
|
@@ -4327,6 +4573,28 @@ function buildMotionCreditModelIdentifier(provider, resolution, videoDuration) {
|
|
|
4327
4573
|
const resSuffix = resolution === "1080p" ? ":1080p" : "";
|
|
4328
4574
|
return `${base}${resSuffix}:${tier.suffix}`;
|
|
4329
4575
|
}
|
|
4576
|
+
var SUNO_VERSION_PRICED_OPERATIONS = [
|
|
4577
|
+
"suno-generate",
|
|
4578
|
+
"suno-cover",
|
|
4579
|
+
"suno-extend"
|
|
4580
|
+
];
|
|
4581
|
+
var SUNO_SELECT_OPERATIONS = [
|
|
4582
|
+
"suno-generate",
|
|
4583
|
+
"suno-cover",
|
|
4584
|
+
"suno-extend",
|
|
4585
|
+
"suno-mashup",
|
|
4586
|
+
"suno-add-instrumental",
|
|
4587
|
+
"suno-add-vocals",
|
|
4588
|
+
"suno-upload-extend"
|
|
4589
|
+
];
|
|
4590
|
+
function sunoCreditType(model, operation) {
|
|
4591
|
+
if (!SUNO_VERSION_PRICED_OPERATIONS.includes(operation)) {
|
|
4592
|
+
return operation;
|
|
4593
|
+
}
|
|
4594
|
+
if (model === "V5_5") return "suno-v5_5";
|
|
4595
|
+
if (model === "V5") return "suno-v5";
|
|
4596
|
+
return operation;
|
|
4597
|
+
}
|
|
4330
4598
|
|
|
4331
4599
|
// src/credit-estimators/video-utils.ts
|
|
4332
4600
|
var VIDEO_UTIL_PRICING = {
|
|
@@ -7925,6 +8193,10 @@ var QUALITY_MAP = {
|
|
|
7925
8193
|
// Seedance 2.5 spans 480p/720p/1080p on KIE (1080p accepted since the
|
|
7926
8194
|
// 2026-08-17 re-probe; 4k still rejected), so each quality rung gets its own tier.
|
|
7927
8195
|
"seedance-2-5": { field: "resolution", values: { low: "480p", mid: "720p", high: "1080p" } },
|
|
8196
|
+
// Wan 3.0 family — 480p / 720p / 1080p (lowercase catalog spellings; the
|
|
8197
|
+
// uppercase KIE wire form is produced only by normalizeWan3Resolution).
|
|
8198
|
+
"wan-3": { field: "resolution", values: { low: "480p", mid: "720p", high: "1080p" } },
|
|
8199
|
+
"wan-3-prime": { field: "resolution", values: { low: "480p", mid: "720p", high: "1080p" } },
|
|
7928
8200
|
"wan-2.7-i2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7929
8201
|
"wan-2.7-t2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7930
8202
|
"happyhorse": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
@@ -7938,6 +8210,7 @@ var QUALITY_MAP = {
|
|
|
7938
8210
|
"ltx-2.3-pro": { field: "resolution", values: { low: "1080p", mid: "2k", high: "4k" } },
|
|
7939
8211
|
"ltx-2.3-fast": { field: "resolution", values: { low: "1080p", mid: "2k", high: "4k" } },
|
|
7940
8212
|
"gemini-omni-video": { field: "resolution", values: { low: "720p", mid: "1080p", high: "4k" } },
|
|
8213
|
+
"gemini-omni-flash": { field: "resolution", values: { low: "720p", mid: "1080p", high: "4k" } },
|
|
7941
8214
|
// Grok Imagine Video 1.5 — only 480p/720p (no 1080p tier); high clamps to 720p.
|
|
7942
8215
|
"grok-imagine-video-1.5": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7943
8216
|
// Replicate Flux 2 family — MP-based resolution (matching IMAGE_RESOLUTION_OPTIONS["flux-2-*"]).
|
|
@@ -12310,7 +12583,9 @@ var DEFAULT_VOICE_CHANGER_MODEL = "eleven_multilingual_sts_v2";
|
|
|
12310
12583
|
// src/normalize-node-params.ts
|
|
12311
12584
|
var MODEL_PARAM_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
12312
12585
|
"generate-image",
|
|
12313
|
-
"image-to-image"
|
|
12586
|
+
"image-to-image",
|
|
12587
|
+
"modify-image",
|
|
12588
|
+
"edit-image"
|
|
12314
12589
|
]);
|
|
12315
12590
|
function normalizeNodeModelParams(nodes) {
|
|
12316
12591
|
const adjustments = [];
|
|
@@ -13556,6 +13831,23 @@ function inferMusicVideo(analysis) {
|
|
|
13556
13831
|
})
|
|
13557
13832
|
);
|
|
13558
13833
|
}
|
|
13834
|
+
var DERIVED_ANALYSIS_TOP_KEYS = /* @__PURE__ */ new Set(["warnings", "variationFolds"]);
|
|
13835
|
+
var DERIVED_ANALYSIS_SCENE_KEYS = /* @__PURE__ */ new Set(["visualResolved", "slotRefs", "oversized"]);
|
|
13836
|
+
var asRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v) ? v : null;
|
|
13837
|
+
function stripDerivedAnalysisFields(json) {
|
|
13838
|
+
const doc = asRecord(json);
|
|
13839
|
+
if (!doc) return json;
|
|
13840
|
+
const out = {};
|
|
13841
|
+
for (const [key, value] of Object.entries(doc)) {
|
|
13842
|
+
if (DERIVED_ANALYSIS_TOP_KEYS.has(key)) continue;
|
|
13843
|
+
out[key] = key === "scenes" && Array.isArray(value) ? value.map((scene) => {
|
|
13844
|
+
const s = asRecord(scene);
|
|
13845
|
+
if (!s) return scene;
|
|
13846
|
+
return Object.fromEntries(Object.entries(s).filter(([k]) => !DERIVED_ANALYSIS_SCENE_KEYS.has(k)));
|
|
13847
|
+
}) : value;
|
|
13848
|
+
}
|
|
13849
|
+
return out;
|
|
13850
|
+
}
|
|
13559
13851
|
|
|
13560
13852
|
// src/video-analysis-pricing.ts
|
|
13561
13853
|
var VIDEO_ANALYSIS_DURATION_BUCKETS = [60, 180, 360, 600];
|
|
@@ -13642,6 +13934,21 @@ function bucketSecondsFromAuditCreditId(id) {
|
|
|
13642
13934
|
return m ? Number(m[1]) : null;
|
|
13643
13935
|
}
|
|
13644
13936
|
|
|
13937
|
+
// src/video-ui-defaults.ts
|
|
13938
|
+
function uiAspectRatioFill(provider) {
|
|
13939
|
+
return isSeedance2Provider(provider) || isMinimaxH3Provider(provider) || isWan3Provider(provider) ? "adaptive" : void 0;
|
|
13940
|
+
}
|
|
13941
|
+
function uiResolutionFill(provider) {
|
|
13942
|
+
if (isWan3Provider(provider)) return PRICING_DEFAULT_RESOLUTION[provider];
|
|
13943
|
+
if (isSeedance2Provider(provider)) return MODEL_CATALOG[provider]?.resolutions?.[0];
|
|
13944
|
+
return void 0;
|
|
13945
|
+
}
|
|
13946
|
+
function uiDurationFill(provider) {
|
|
13947
|
+
if (isWan3Provider(provider)) return 5;
|
|
13948
|
+
if (isGeminiOmniProvider(provider)) return 8;
|
|
13949
|
+
return void 0;
|
|
13950
|
+
}
|
|
13951
|
+
|
|
13645
13952
|
// src/smart-cut-windows.ts
|
|
13646
13953
|
var SMART_CUT_WINDOW_MAX = 24;
|
|
13647
13954
|
var SMART_CUT_WINDOW_MIN = 1;
|
|
@@ -13665,6 +13972,7 @@ var WORKFLOW_VISIBILITIES = ["private", "workspace"];
|
|
|
13665
13972
|
var ACCESS_LEVELS = ["own", "edit", "view", "none"];
|
|
13666
13973
|
var GRANTED_ACCESS = ["view", "edit"];
|
|
13667
13974
|
var SUBMISSION_STATUSES = ["submitted", "in_review", "returned", "approved"];
|
|
13975
|
+
var USAGE_GROUP_BYS = ["workspace", "member", "model", "day", "none"];
|
|
13668
13976
|
var ORG_ERROR_CODES = [
|
|
13669
13977
|
"not_a_member",
|
|
13670
13978
|
"insufficient_role",
|
|
@@ -13684,6 +13992,8 @@ var ORG_ERROR_CODES = [
|
|
|
13684
13992
|
"domain_not_allowed",
|
|
13685
13993
|
"already_started",
|
|
13686
13994
|
"collab_unavailable",
|
|
13995
|
+
// A CSV usage export whose write-ahead audit row could not be written (503).
|
|
13996
|
+
"audit_unavailable",
|
|
13687
13997
|
// Organization, workspace and membership endpoints.
|
|
13688
13998
|
"terms_required",
|
|
13689
13999
|
"not_org_member",
|
|
@@ -13966,6 +14276,7 @@ exports.FURNITURE_SUBCATEGORY_LABELS = FURNITURE_SUBCATEGORY_LABELS;
|
|
|
13966
14276
|
exports.FURNITURE_SUBCATEGORY_ORDER = FURNITURE_SUBCATEGORY_ORDER;
|
|
13967
14277
|
exports.FixContinuityInputSchema = FixContinuityInputSchema;
|
|
13968
14278
|
exports.FixContinuityResultSchema = FixContinuityResultSchema;
|
|
14279
|
+
exports.GEMINI_OMNI_PROVIDERS = GEMINI_OMNI_PROVIDERS;
|
|
13969
14280
|
exports.GENERATE_TEXT_DELIMITER = GENERATE_TEXT_DELIMITER;
|
|
13970
14281
|
exports.GLOBAL_MAX_DURATION_SECONDS = GLOBAL_MAX_DURATION_SECONDS;
|
|
13971
14282
|
exports.GRANTED_ACCESS = GRANTED_ACCESS;
|
|
@@ -13985,6 +14296,7 @@ exports.HINT_EXEMPT_PARAMETER_TYPES = HINT_EXEMPT_PARAMETER_TYPES;
|
|
|
13985
14296
|
exports.I2I_MASK_SUPPORT = I2I_MASK_SUPPORT;
|
|
13986
14297
|
exports.I2I_STRENGTH_SUPPORT = I2I_STRENGTH_SUPPORT;
|
|
13987
14298
|
exports.IDEOGRAM_PROVIDERS = IDEOGRAM_PROVIDERS;
|
|
14299
|
+
exports.IMAGE_ASPECT_RATIO_VALUES = IMAGE_ASPECT_RATIO_VALUES;
|
|
13988
14300
|
exports.IMAGE_CRITIC_LEAF_MODES = IMAGE_CRITIC_LEAF_MODES;
|
|
13989
14301
|
exports.IMAGE_CRITIC_MAX_RETRIES = IMAGE_CRITIC_MAX_RETRIES;
|
|
13990
14302
|
exports.IMAGE_CRITIC_METADATA_KEYS = IMAGE_CRITIC_METADATA_KEYS;
|
|
@@ -14185,10 +14497,13 @@ exports.STRUCTURED_VISION_MODELS = STRUCTURED_VISION_MODELS;
|
|
|
14185
14497
|
exports.SUBMISSION_STATUSES = SUBMISSION_STATUSES;
|
|
14186
14498
|
exports.SUNO_ADD_TRACK_MODELS = SUNO_ADD_TRACK_MODELS;
|
|
14187
14499
|
exports.SUNO_FIELD_HANDLE_FIELDS = SUNO_FIELD_HANDLE_FIELDS;
|
|
14500
|
+
exports.SUNO_HARD_CEILING = SUNO_HARD_CEILING;
|
|
14188
14501
|
exports.SUNO_MODELS = SUNO_MODELS;
|
|
14502
|
+
exports.SUNO_SELECT_OPERATIONS = SUNO_SELECT_OPERATIONS;
|
|
14189
14503
|
exports.SUNO_TEXT_MAX = SUNO_TEXT_MAX;
|
|
14190
14504
|
exports.SUNO_TITLE_MAX = SUNO_TITLE_MAX;
|
|
14191
14505
|
exports.SUNO_TRACK_SOURCE_TYPES = SUNO_TRACK_SOURCE_TYPES;
|
|
14506
|
+
exports.SUNO_VERSION_PRICED_OPERATIONS = SUNO_VERSION_PRICED_OPERATIONS;
|
|
14192
14507
|
exports.SUPPORTED_FONT_NAMES = SUPPORTED_FONT_NAMES;
|
|
14193
14508
|
exports.SURROUND_DIRECTIONS = SURROUND_DIRECTIONS;
|
|
14194
14509
|
exports.SWITCHX_BLOCK_FRAMES = SWITCHX_BLOCK_FRAMES;
|
|
@@ -14219,6 +14534,7 @@ exports.TTS_TEXT_MAX = TTS_TEXT_MAX;
|
|
|
14219
14534
|
exports.TWO_K_RESOLUTION_PROVIDERS = TWO_K_RESOLUTION_PROVIDERS;
|
|
14220
14535
|
exports.TransitionTypeSchema = TransitionTypeSchema;
|
|
14221
14536
|
exports.UPSCALE_IMAGE_PROVIDERS = UPSCALE_IMAGE_PROVIDERS;
|
|
14537
|
+
exports.USAGE_GROUP_BYS = USAGE_GROUP_BYS;
|
|
14222
14538
|
exports.USAGE_MODES = USAGE_MODES;
|
|
14223
14539
|
exports.VARIABLES_HANDLE_ID = VARIABLES_HANDLE_ID;
|
|
14224
14540
|
exports.VARIABLE_PRICING_MODELS = VARIABLE_PRICING_MODELS;
|
|
@@ -14281,6 +14597,8 @@ exports.ValidateMatchCutInputSchema = ValidateMatchCutInputSchema;
|
|
|
14281
14597
|
exports.ValidateMatchCutResultSchema = ValidateMatchCutResultSchema;
|
|
14282
14598
|
exports.VideoCriticVerdictSchema = VideoCriticVerdictSchema;
|
|
14283
14599
|
exports.VoiceMatchSchema = VoiceMatchSchema;
|
|
14600
|
+
exports.WAN_3_DEFAULT_RESOLUTION = WAN_3_DEFAULT_RESOLUTION;
|
|
14601
|
+
exports.WAN_3_PROVIDERS = WAN_3_PROVIDERS;
|
|
14284
14602
|
exports.WARDROBE_VARIANTS = WARDROBE_VARIANTS;
|
|
14285
14603
|
exports.WEAPONS = WEAPONS;
|
|
14286
14604
|
exports.WEAPON_SUBCATEGORY_LABELS = WEAPON_SUBCATEGORY_LABELS;
|
|
@@ -14463,6 +14781,7 @@ exports.isCollectInEdge = isCollectInEdge;
|
|
|
14463
14781
|
exports.isDefaultSelectorConfig = isDefaultSelectorConfig;
|
|
14464
14782
|
exports.isExpandedClone = isExpandedClone;
|
|
14465
14783
|
exports.isFlux2Model = isFlux2Model;
|
|
14784
|
+
exports.isGeminiOmniProvider = isGeminiOmniProvider;
|
|
14466
14785
|
exports.isGvpSupportedProvider = isGvpSupportedProvider;
|
|
14467
14786
|
exports.isHandleInputWired = isHandleInputWired;
|
|
14468
14787
|
exports.isKineticCaptionStyle = isKineticCaptionStyle;
|
|
@@ -14479,6 +14798,7 @@ exports.isUsageMode = isUsageMode;
|
|
|
14479
14798
|
exports.isVeoProvider = isVeoProvider;
|
|
14480
14799
|
exports.isVideoAnalysisMixedTier = isVideoAnalysisMixedTier;
|
|
14481
14800
|
exports.isVideoAnalysisTier = isVideoAnalysisTier;
|
|
14801
|
+
exports.isWan3Provider = isWan3Provider;
|
|
14482
14802
|
exports.jsonResultToList = jsonResultToList;
|
|
14483
14803
|
exports.knownEntitySlugsFromRefs = knownEntitySlugsFromRefs;
|
|
14484
14804
|
exports.knownImageSlugsFromRefs = knownImageSlugsFromRefs;
|
|
@@ -14511,6 +14831,7 @@ exports.normalizeModelInput = normalizeModelInput;
|
|
|
14511
14831
|
exports.normalizeNodeModelParams = normalizeNodeModelParams;
|
|
14512
14832
|
exports.normalizePinterestUrl = normalizePinterestUrl;
|
|
14513
14833
|
exports.normalizeRoleSlug = normalizeRoleSlug;
|
|
14834
|
+
exports.normalizeWan3Resolution = normalizeWan3Resolution;
|
|
14514
14835
|
exports.orderedLlmModels = orderedLlmModels;
|
|
14515
14836
|
exports.parseAttributedDialogue = parseAttributedDialogue;
|
|
14516
14837
|
exports.parseCharacterMentionToken = parseCharacterMentionToken;
|
|
@@ -14566,6 +14887,7 @@ exports.resolveLocationFields = resolveLocationFields;
|
|
|
14566
14887
|
exports.resolveLocationPresetCatalog = resolveLocationPresetCatalog;
|
|
14567
14888
|
exports.resolveLottieOverlaySrc = resolveLottieOverlaySrc;
|
|
14568
14889
|
exports.resolveNodeRefs = resolveNodeRefs;
|
|
14890
|
+
exports.resolveNormalizedImageGen = resolveNormalizedImageGen;
|
|
14569
14891
|
exports.resolveObjectAspectRatio = resolveObjectAspectRatio;
|
|
14570
14892
|
exports.resolvePipelineModel = resolvePipelineModel;
|
|
14571
14893
|
exports.resolveRelativeWindowToken = resolveRelativeWindowToken;
|
|
@@ -14608,8 +14930,10 @@ exports.splitByLoopDelimiter = splitByLoopDelimiter;
|
|
|
14608
14930
|
exports.splitGeneratedItems = splitGeneratedItems;
|
|
14609
14931
|
exports.spreadJsonArrayIfSingleton = spreadJsonArrayIfSingleton;
|
|
14610
14932
|
exports.stringifyPathResults = stringifyPathResults;
|
|
14933
|
+
exports.stripDerivedAnalysisFields = stripDerivedAnalysisFields;
|
|
14611
14934
|
exports.stripExportContent = stripExportContent;
|
|
14612
14935
|
exports.stripTransientRuntimeData = stripTransientRuntimeData;
|
|
14936
|
+
exports.sunoCreditType = sunoCreditType;
|
|
14613
14937
|
exports.supportedDefaultDimensions = supportedDefaultDimensions;
|
|
14614
14938
|
exports.supportsAdvancedMode = supportsAdvancedMode;
|
|
14615
14939
|
exports.supportsEndAnchor = supportsEndAnchor;
|
|
@@ -14618,6 +14942,9 @@ exports.toConnectedReference = toConnectedReference;
|
|
|
14618
14942
|
exports.toConnectedReferences = toConnectedReferences;
|
|
14619
14943
|
exports.togglePick = togglePick;
|
|
14620
14944
|
exports.tryParseJson = tryParseJson;
|
|
14945
|
+
exports.uiAspectRatioFill = uiAspectRatioFill;
|
|
14946
|
+
exports.uiDurationFill = uiDurationFill;
|
|
14947
|
+
exports.uiResolutionFill = uiResolutionFill;
|
|
14621
14948
|
exports.unwrapUnresolvedTokens = unwrapUnresolvedTokens;
|
|
14622
14949
|
exports.usageModeDirective = usageModeDirective;
|
|
14623
14950
|
exports.usageModeIncludesName = usageModeIncludesName;
|