@nodaro/shared 2.1.0 → 2.2.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 +455 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +307 -29
- package/dist/index.d.ts +307 -29
- package/dist/index.js +431 -78
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/gvp-anchor-mode.test.ts +65 -0
- package/src/__tests__/gvp-supported-providers.test.ts +234 -15
- package/src/__tests__/minimax-h3-catalog.test.ts +116 -0
- package/src/__tests__/minimax-h3-credit-id.test.ts +62 -0
- package/src/__tests__/reference-roles.test.ts +22 -1
- package/src/__tests__/seedance-2-5-catalog.test.ts +128 -0
- package/src/__tests__/video-analysis-catalog-sync.test.ts +69 -3
- package/src/__tests__/video-analysis-pricing.test.ts +105 -0
- package/src/__tests__/video-analysis.test.ts +13 -0
- package/src/credit-identifiers.ts +27 -3
- package/src/film-pricing.ts +1 -0
- package/src/index.ts +25 -0
- package/src/llm-models.ts +8 -5
- package/src/model-catalog.ts +170 -38
- package/src/model-constants.ts +453 -16
- package/src/node-default-mappings.ts +2 -0
- package/src/node-mappable-fields.ts +1 -1
- package/src/pipeline-types.ts +1 -0
- package/src/provider-directive-defaults.ts +4 -0
- package/src/reference-roles.ts +4 -1
- package/src/types.ts +11 -1
- package/src/video-analysis-pricing.ts +145 -25
- package/src/video-analysis.ts +17 -1
package/dist/index.cjs
CHANGED
|
@@ -16,7 +16,17 @@ var DEFAULT_LABEL_BY_SOURCE = {
|
|
|
16
16
|
// subject ("match anatomy, markings…"), not a prop. See CREATURE_LABELS in
|
|
17
17
|
// prompt-builder.ts.
|
|
18
18
|
"wired-creature": "creature",
|
|
19
|
-
|
|
19
|
+
// A PLACE, NOT A BACKDROP (2026-08-05). This defaulted to "background", which
|
|
20
|
+
// `roleToPhrase` renders as "the background from reference image B" — and the
|
|
21
|
+
// image models read that as "paste this behind the subject". Measured on
|
|
22
|
+
// gpt-image-2 (character + location, 4 draws per arm): with "background" every
|
|
23
|
+
// draw was a cut-out composite — an indoor-lit subject over a stock beach, no
|
|
24
|
+
// cast shadow, ignoring the asked-for action. Changing ONLY this word put the
|
|
25
|
+
// subject inside the scene with ground contact and a matching sun. "background"
|
|
26
|
+
// remains a curated pick in REFERENCE_ROLE_PRESETS for the genuine backdrop
|
|
27
|
+
// case; it is no longer what every location silently gets. Nodes that stored a
|
|
28
|
+
// role explicitly are untouched — `resolveDefaultRole` prefers the explicit value.
|
|
29
|
+
"wired-location": "location"
|
|
20
30
|
};
|
|
21
31
|
|
|
22
32
|
// src/freecut-protocol.ts
|
|
@@ -263,10 +273,10 @@ var IMAGE_MODELS = {
|
|
|
263
273
|
aspectRatios: FLUX_RATIOS,
|
|
264
274
|
resolutions: ["0.5 MP", "1 MP", "2 MP", "4 MP"],
|
|
265
275
|
pricing: [
|
|
266
|
-
{ identifier: "flux-2-klein", credits:
|
|
276
|
+
{ identifier: "flux-2-klein", credits: 3 },
|
|
267
277
|
// 1MP 0ref (default)
|
|
268
278
|
{ identifier: "flux-2-klein:1MP:0ref", credits: 3 },
|
|
269
|
-
// min
|
|
279
|
+
// min — same point on the grid as the bare default
|
|
270
280
|
{ identifier: "flux-2-klein:4MP:8ref", credits: 108 }
|
|
271
281
|
// max
|
|
272
282
|
]
|
|
@@ -297,7 +307,7 @@ var IMAGE_MODELS = {
|
|
|
297
307
|
aspectRatios: FLUX_RATIOS,
|
|
298
308
|
resolutions: ["0.5 MP", "1 MP", "2 MP", "4 MP"],
|
|
299
309
|
pricing: [
|
|
300
|
-
{ identifier: "flux-2-pro", credits:
|
|
310
|
+
{ identifier: "flux-2-pro", credits: 23 },
|
|
301
311
|
// 2MP 0ref (default)
|
|
302
312
|
{ identifier: "flux-2-pro:0.5MP:0ref", credits: 12 },
|
|
303
313
|
// min
|
|
@@ -771,6 +781,42 @@ var VIDEO_MODELS = {
|
|
|
771
781
|
durations: [5],
|
|
772
782
|
pricing: [{ identifier: "minimax", credits: 143, note: "5s, 1080p" }]
|
|
773
783
|
},
|
|
784
|
+
// MiniMax Hailuo 3 (KIE "minimax-h3") — t2v / i2v (first and/or last frame) /
|
|
785
|
+
// reference-to-video (9 images / 3 videos ≤15s total / 3 audios ≤15s total;
|
|
786
|
+
// audio refs require an image or video ref alongside). Two-rate resolution
|
|
787
|
+
// lever (768P added 2026-08-03): 2K (KIE default) at 36.5 KIE cr/s, 768P at
|
|
788
|
+
// 22.5 KIE cr/s — billed on output + input-video seconds at the SELECTED
|
|
789
|
+
// resolution's rate; input images beyond the first 5 add 11 KIE cr each,
|
|
790
|
+
// reference audio free. Bare duration composites stay the 2K rate (identical
|
|
791
|
+
// to the pre-lever seeded rows); 768P appends ":768p". Mirrors the Seedance 2
|
|
792
|
+
// multimodal surface.
|
|
793
|
+
// docs.kie.ai/market/minimax-h3/{text,image,reference}-to-video.
|
|
794
|
+
"minimax-h3": {
|
|
795
|
+
id: "minimax-h3",
|
|
796
|
+
kind: "video",
|
|
797
|
+
modes: ["i2v", "t2v"],
|
|
798
|
+
family: "MiniMax",
|
|
799
|
+
label: "Hailuo 3 (H3)",
|
|
800
|
+
series: "Hailuo",
|
|
801
|
+
description: "MiniMax Hailuo 3 \u2014 premium multimodal tier: first/last frame + image/video/audio references, native audio, 2K (default) or 768P output, 4-15s per-second pricing.",
|
|
802
|
+
useCases: ["premium", "narrative"],
|
|
803
|
+
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
804
|
+
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
805
|
+
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
806
|
+
// First entry = default (the UI dropdown + fail-safe snap use opts[0], and
|
|
807
|
+
// 2K is the KIE-side default). Uppercase values are the exact KIE wire enum.
|
|
808
|
+
resolutions: ["2K", "768P"],
|
|
809
|
+
valueLabels: { "2K": "2K (default)" },
|
|
810
|
+
pricing: [
|
|
811
|
+
{ identifier: "minimax-h3", credits: 550, note: "default 6s @2K \u2014 see :Ns variants" },
|
|
812
|
+
{ identifier: "minimax-h3:4s", credits: 370, note: "4s @2K (min)" },
|
|
813
|
+
{ identifier: "minimax-h3:8s", credits: 730, note: "8s @2K" },
|
|
814
|
+
{ identifier: "minimax-h3:15s", credits: 1370, note: "15s @2K (max)" },
|
|
815
|
+
{ identifier: "minimax-h3:4s:768p", credits: 230, note: "4s @768P (min)" },
|
|
816
|
+
{ identifier: "minimax-h3:8s:768p", credits: 450, note: "8s @768P" },
|
|
817
|
+
{ identifier: "minimax-h3:15s:768p", credits: 850, note: "15s @768P (max)" }
|
|
818
|
+
]
|
|
819
|
+
},
|
|
774
820
|
"hailuo-2.3-pro": {
|
|
775
821
|
id: "hailuo-2.3-pro",
|
|
776
822
|
kind: "video",
|
|
@@ -1091,7 +1137,7 @@ var VIDEO_MODELS = {
|
|
|
1091
1137
|
series: "Seedance",
|
|
1092
1138
|
description: "Seedance 2 \u2014 premium tier with native audio. Per-second pricing by resolution.",
|
|
1093
1139
|
useCases: ["premium", "narrative"],
|
|
1094
|
-
features: ["end-frame", "audio", "reference-image"],
|
|
1140
|
+
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
1095
1141
|
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
1096
1142
|
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1097
1143
|
resolutions: ["480p", "720p", "1080p", "4k"],
|
|
@@ -1116,7 +1162,7 @@ var VIDEO_MODELS = {
|
|
|
1116
1162
|
series: "Seedance",
|
|
1117
1163
|
description: "Cheaper / quicker Seedance 2 tier.",
|
|
1118
1164
|
useCases: ["fast", "motion"],
|
|
1119
|
-
features: ["end-frame", "audio", "reference-image"],
|
|
1165
|
+
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
1120
1166
|
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
1121
1167
|
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1122
1168
|
resolutions: ["480p", "720p"],
|
|
@@ -1137,7 +1183,7 @@ var VIDEO_MODELS = {
|
|
|
1137
1183
|
series: "Seedance",
|
|
1138
1184
|
description: "Budget Seedance 2 tier \u2014 480p/720p only, per-second pricing by resolution.",
|
|
1139
1185
|
useCases: ["fast", "motion"],
|
|
1140
|
-
features: ["end-frame", "audio", "reference-image"],
|
|
1186
|
+
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
1141
1187
|
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
1142
1188
|
durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1143
1189
|
resolutions: ["480p", "720p"],
|
|
@@ -1149,6 +1195,34 @@ var VIDEO_MODELS = {
|
|
|
1149
1195
|
{ identifier: "seedance-2-mini:8s:720p-ref", credits: 250 }
|
|
1150
1196
|
]
|
|
1151
1197
|
},
|
|
1198
|
+
// Seedance 2.5 — the next Seedance generation, not a tier of the 2.0 ladder.
|
|
1199
|
+
// Two levers differ from every 2.0 SKU and drive its own entries throughout:
|
|
1200
|
+
// durations run to 30s (2.0 caps at 15s) and there is NO 1080p/4K tier.
|
|
1201
|
+
// Reference caps are also wider (30 images / 10 videos / 10 audio) — see
|
|
1202
|
+
// SEEDANCE_2_5_REF_LIMITS in model-constants.
|
|
1203
|
+
"seedance-2-5": {
|
|
1204
|
+
id: "seedance-2-5",
|
|
1205
|
+
kind: "video",
|
|
1206
|
+
modes: ["i2v", "t2v"],
|
|
1207
|
+
family: "Bytedance",
|
|
1208
|
+
label: "Seedance 2.5",
|
|
1209
|
+
series: "Seedance",
|
|
1210
|
+
description: "Seedance 2.5 \u2014 up to 30s in one shot, native audio, wide multimodal references. 480p/720p.",
|
|
1211
|
+
useCases: ["premium", "narrative", "long-form"],
|
|
1212
|
+
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
1213
|
+
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
1214
|
+
durations: [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],
|
|
1215
|
+
resolutions: ["480p", "720p"],
|
|
1216
|
+
pricing: [
|
|
1217
|
+
{ identifier: "seedance-2-5", credits: 1260, note: "default 8s 720p \u2014 see :Ns:res variants for exact" },
|
|
1218
|
+
{ identifier: "seedance-2-5:8s:480p", credits: 560, note: "8s 480p" },
|
|
1219
|
+
{ identifier: "seedance-2-5:8s:720p", credits: 1260, note: "8s 720p" },
|
|
1220
|
+
{ identifier: "seedance-2-5:8s:480p-ref", credits: 340, note: "8s 480p with reference video" },
|
|
1221
|
+
{ identifier: "seedance-2-5:8s:720p-ref", credits: 760, note: "8s 720p with reference video" },
|
|
1222
|
+
{ identifier: "seedance-2-5:30s:480p", credits: 2100, note: "30s 480p (max)" },
|
|
1223
|
+
{ identifier: "seedance-2-5:30s:720p", credits: 4730, note: "30s 720p (max)" }
|
|
1224
|
+
]
|
|
1225
|
+
},
|
|
1152
1226
|
// ── Wan ──
|
|
1153
1227
|
"wan-i2v": {
|
|
1154
1228
|
id: "wan-i2v",
|
|
@@ -1670,11 +1744,11 @@ var VIDEO_MODELS = {
|
|
|
1670
1744
|
description: "Legacy fast-tier analysis model (pre-2026-07). Kept so stored raw-model configs keep running and keep pricing under their own identifier; new fast-tier runs use the current fast model.",
|
|
1671
1745
|
useCases: ["video-analysis", "shot-list", "fast"],
|
|
1672
1746
|
pricing: [
|
|
1673
|
-
{ identifier: "video-analysis:gemini-3-flash", credits:
|
|
1674
|
-
{ identifier: "video-analysis:gemini-3-flash:60s", credits:
|
|
1675
|
-
{ identifier: "video-analysis:gemini-3-flash:180s", credits:
|
|
1676
|
-
{ identifier: "video-analysis:gemini-3-flash:360s", credits:
|
|
1677
|
-
{ identifier: "video-analysis:gemini-3-flash:600s", credits:
|
|
1747
|
+
{ identifier: "video-analysis:gemini-3-flash", credits: 846, note: "10-min ceiling (no duration given)" },
|
|
1748
|
+
{ identifier: "video-analysis:gemini-3-flash:60s", credits: 180 },
|
|
1749
|
+
{ identifier: "video-analysis:gemini-3-flash:180s", credits: 185 },
|
|
1750
|
+
{ identifier: "video-analysis:gemini-3-flash:360s", credits: 514 },
|
|
1751
|
+
{ identifier: "video-analysis:gemini-3-flash:600s", credits: 846, note: "10-min ceiling" }
|
|
1678
1752
|
]
|
|
1679
1753
|
},
|
|
1680
1754
|
"gemini-3.6-flash-video-analysis": {
|
|
@@ -1687,11 +1761,11 @@ var VIDEO_MODELS = {
|
|
|
1687
1761
|
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
|
|
1688
1762
|
useCases: ["video-analysis", "shot-list", "fast"],
|
|
1689
1763
|
pricing: [
|
|
1690
|
-
{ identifier: "video-analysis:gemini-3.6-flash", credits:
|
|
1691
|
-
{ identifier: "video-analysis:gemini-3.6-flash:60s", credits:
|
|
1692
|
-
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits:
|
|
1693
|
-
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits:
|
|
1694
|
-
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits:
|
|
1764
|
+
{ identifier: "video-analysis:gemini-3.6-flash", credits: 986, note: "10-min ceiling (no duration given)" },
|
|
1765
|
+
{ identifier: "video-analysis:gemini-3.6-flash:60s", credits: 203 },
|
|
1766
|
+
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits: 218 },
|
|
1767
|
+
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits: 598 },
|
|
1768
|
+
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits: 986, note: "10-min ceiling" }
|
|
1695
1769
|
]
|
|
1696
1770
|
},
|
|
1697
1771
|
"gemini-3.1-pro-video-analysis": {
|
|
@@ -1704,11 +1778,11 @@ var VIDEO_MODELS = {
|
|
|
1704
1778
|
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 higher-fidelity, default tier. Billed per duration bucket.",
|
|
1705
1779
|
useCases: ["video-analysis", "shot-list", "cinematic"],
|
|
1706
1780
|
pricing: [
|
|
1707
|
-
{ identifier: "video-analysis:gemini-3.1-pro", credits:
|
|
1708
|
-
{ identifier: "video-analysis:gemini-3.1-pro:60s", credits:
|
|
1709
|
-
{ identifier: "video-analysis:gemini-3.1-pro:180s", credits:
|
|
1710
|
-
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits:
|
|
1711
|
-
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits:
|
|
1781
|
+
{ identifier: "video-analysis:gemini-3.1-pro", credits: 1050, note: "10-min ceiling (no duration given)" },
|
|
1782
|
+
{ identifier: "video-analysis:gemini-3.1-pro:60s", credits: 215 },
|
|
1783
|
+
{ identifier: "video-analysis:gemini-3.1-pro:180s", credits: 231 },
|
|
1784
|
+
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits: 636 },
|
|
1785
|
+
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits: 1050, note: "10-min ceiling" }
|
|
1712
1786
|
]
|
|
1713
1787
|
},
|
|
1714
1788
|
// Both mixed tiers are variants of the same advanced multi-engine analysis
|
|
@@ -1724,17 +1798,18 @@ var VIDEO_MODELS = {
|
|
|
1724
1798
|
description: "Our most advanced analysis tier \u2014 multiple analysis engines combined into one result for maximum completeness and accuracy. Billed per duration bucket.",
|
|
1725
1799
|
useCases: ["video-analysis", "shot-list", "premium", "most-complete"],
|
|
1726
1800
|
pricing: [
|
|
1727
|
-
{ identifier: "video-analysis:mixed", credits:
|
|
1728
|
-
{ identifier: "video-analysis:mixed:60s", credits:
|
|
1729
|
-
{ identifier: "video-analysis:mixed:180s", credits:
|
|
1730
|
-
{ identifier: "video-analysis:mixed:360s", credits:
|
|
1731
|
-
{ identifier: "video-analysis:mixed:600s", credits:
|
|
1801
|
+
{ identifier: "video-analysis:mixed", credits: 1169, note: "10-min ceiling (no duration given)" },
|
|
1802
|
+
{ identifier: "video-analysis:mixed:60s", credits: 268 },
|
|
1803
|
+
{ identifier: "video-analysis:mixed:180s", credits: 289 },
|
|
1804
|
+
{ identifier: "video-analysis:mixed:360s", credits: 724 },
|
|
1805
|
+
{ identifier: "video-analysis:mixed:600s", credits: 1169, note: "10-min ceiling" }
|
|
1732
1806
|
]
|
|
1733
1807
|
},
|
|
1734
|
-
// SMART — the accuracy tier
|
|
1735
|
-
//
|
|
1736
|
-
//
|
|
1737
|
-
//
|
|
1808
|
+
// SMART — the accuracy tier. Since the 2026-08-03 hybrid re-plan it is a
|
|
1809
|
+
// multi-roll plan like the others: a native skeleton pass blended with
|
|
1810
|
+
// several donor analysis rolls, with the merged result always refined
|
|
1811
|
+
// (it ignores `selectionMode` — see video-analysis-pricing.ts). Priced
|
|
1812
|
+
// well above them because it genuinely costs more to run.
|
|
1738
1813
|
"smart-video-analysis": {
|
|
1739
1814
|
id: "smart-video-analysis",
|
|
1740
1815
|
kind: "video",
|
|
@@ -1742,14 +1817,58 @@ var VIDEO_MODELS = {
|
|
|
1742
1817
|
family: "Nodaro",
|
|
1743
1818
|
label: "Video Analysis (Smart)",
|
|
1744
1819
|
series: "Video Analysis",
|
|
1745
|
-
description: "Highest-accuracy analysis \u2014 a
|
|
1820
|
+
description: "Highest-accuracy analysis \u2014 a hybrid pass that blends a native skeleton read with several donor analysis rolls, then always refines the merged result to find shot boundaries and identify the cast by appearance. Best choice when the shot list will drive regeneration. Billed per duration bucket.",
|
|
1746
1821
|
useCases: ["video-analysis", "shot-list", "premium", "most-accurate"],
|
|
1747
1822
|
pricing: [
|
|
1748
|
-
{ identifier: "video-analysis:smart", credits:
|
|
1749
|
-
{ identifier: "video-analysis:smart:60s", credits:
|
|
1750
|
-
{ identifier: "video-analysis:smart:180s", credits:
|
|
1751
|
-
{ identifier: "video-analysis:smart:360s", credits:
|
|
1752
|
-
{ identifier: "video-analysis:smart:600s", credits:
|
|
1823
|
+
{ identifier: "video-analysis:smart", credits: 2064, note: "10-min ceiling (no duration given)" },
|
|
1824
|
+
{ identifier: "video-analysis:smart:60s", credits: 410 },
|
|
1825
|
+
{ identifier: "video-analysis:smart:180s", credits: 500 },
|
|
1826
|
+
{ identifier: "video-analysis:smart:360s", credits: 1259 },
|
|
1827
|
+
{ identifier: "video-analysis:smart:600s", credits: 2064, note: "10-min ceiling" }
|
|
1828
|
+
]
|
|
1829
|
+
},
|
|
1830
|
+
// ── AI Audit (`video-audit`) ── a SEPARATE node from video-analysis (own
|
|
1831
|
+
// node type, own route in the private plugin): it re-watches a clip
|
|
1832
|
+
// against its analysis (auto-running a fast analysis first when none is
|
|
1833
|
+
// wired), applies video-verified corrections under guards, and returns a
|
|
1834
|
+
// disclosed report of what was checked, fixed, and left open. These two
|
|
1835
|
+
// rows exist for pricing/MCP-discovery visibility only — the node has no
|
|
1836
|
+
// model picker in V1, so (unlike every other row in this section) they
|
|
1837
|
+
// deliberately carry no `series` and their `modes` has no Models-tab
|
|
1838
|
+
// mapping (see model-tree.ts's MODE_TO_NODE) — they must never appear as
|
|
1839
|
+
// selectable "video-analysis" models. Two credit families, chosen by
|
|
1840
|
+
// whether an analysis is wired into the node; the structural formula lives
|
|
1841
|
+
// in video-analysis-pricing.ts.
|
|
1842
|
+
"video-audit": {
|
|
1843
|
+
id: "video-audit",
|
|
1844
|
+
kind: "video",
|
|
1845
|
+
modes: ["video-audit"],
|
|
1846
|
+
family: "Nodaro",
|
|
1847
|
+
label: "AI Audit",
|
|
1848
|
+
description: "Re-watches a clip against a wired analysis, applies video-verified corrections under guards, and returns a disclosed report of what changed. Billed per duration bucket.",
|
|
1849
|
+
useCases: ["video-audit", "qa", "shot-list", "verification"],
|
|
1850
|
+
pricing: [
|
|
1851
|
+
{ identifier: "video-audit", credits: 1066, note: "10-min ceiling (no duration given)" },
|
|
1852
|
+
{ identifier: "video-audit:60s", credits: 213 },
|
|
1853
|
+
{ identifier: "video-audit:180s", credits: 289 },
|
|
1854
|
+
{ identifier: "video-audit:360s", credits: 659 },
|
|
1855
|
+
{ identifier: "video-audit:600s", credits: 1066, note: "10-min ceiling" }
|
|
1856
|
+
]
|
|
1857
|
+
},
|
|
1858
|
+
"video-audit-auto": {
|
|
1859
|
+
id: "video-audit-auto",
|
|
1860
|
+
kind: "video",
|
|
1861
|
+
modes: ["video-audit"],
|
|
1862
|
+
family: "Nodaro",
|
|
1863
|
+
label: "AI Audit (with analysis run)",
|
|
1864
|
+
description: "Same video-verified audit as AI Audit, but auto-runs a fast analysis first when none is wired in, then applies corrections under guards and returns a disclosed report. Billed per duration bucket.",
|
|
1865
|
+
useCases: ["video-audit", "qa", "shot-list", "verification", "auto-analysis"],
|
|
1866
|
+
pricing: [
|
|
1867
|
+
{ identifier: "video-audit:auto", credits: 1912, note: "10-min ceiling (no duration given)" },
|
|
1868
|
+
{ identifier: "video-audit:auto:60s", credits: 393 },
|
|
1869
|
+
{ identifier: "video-audit:auto:180s", credits: 474 },
|
|
1870
|
+
{ identifier: "video-audit:auto:360s", credits: 1173 },
|
|
1871
|
+
{ identifier: "video-audit:auto:600s", credits: 1912, note: "10-min ceiling" }
|
|
1753
1872
|
]
|
|
1754
1873
|
}
|
|
1755
1874
|
};
|
|
@@ -2209,7 +2328,7 @@ function getMaxImagePromptChars(provider) {
|
|
|
2209
2328
|
}
|
|
2210
2329
|
var VIDEO_PROMPT_MAX = 8e3;
|
|
2211
2330
|
var SUNO_TEXT_MAX = 5e3;
|
|
2212
|
-
var PROMPT_HARD_CEILING =
|
|
2331
|
+
var PROMPT_HARD_CEILING = 3e4;
|
|
2213
2332
|
var LLM_TEXT_INPUT_MAX = 1e5;
|
|
2214
2333
|
var MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = {
|
|
2215
2334
|
// Kling family — our `kling`→kling-2.6 (1000), `kling-turbo`→v2.5-turbo-pro (2500)
|
|
@@ -2221,10 +2340,16 @@ var MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = {
|
|
|
2221
2340
|
"seedance-2-fast": 2e4,
|
|
2222
2341
|
"seedance-2-mini": 2e4,
|
|
2223
2342
|
"seedance-2-extend": 2e4,
|
|
2343
|
+
// Seedance 2.5 raises the prompt ceiling to 30000
|
|
2344
|
+
// (docs.kie.ai/market/bytedance/seedance-2-5).
|
|
2345
|
+
"seedance-2-5": 3e4,
|
|
2224
2346
|
"gemini-omni-video": 2e4,
|
|
2225
2347
|
"bytedance-lite": 1e4,
|
|
2226
2348
|
"bytedance-pro": 1e4,
|
|
2227
2349
|
"bytedance-pro-fast": 1e4,
|
|
2350
|
+
// MiniMax Hailuo 3 — 1-7000 chars, uniform across t2v/i2v/r2v
|
|
2351
|
+
// (docs.kie.ai/market/minimax-h3).
|
|
2352
|
+
"minimax-h3": 7e3,
|
|
2228
2353
|
// lower than the 8000 default
|
|
2229
2354
|
"minimax": 1500,
|
|
2230
2355
|
"hailuo-standard": 1500,
|
|
@@ -2563,6 +2688,8 @@ var IMAGE_TO_VIDEO_PROVIDERS = [
|
|
|
2563
2688
|
"seedance-2",
|
|
2564
2689
|
"seedance-2-fast",
|
|
2565
2690
|
"seedance-2-mini",
|
|
2691
|
+
"seedance-2-5",
|
|
2692
|
+
"minimax-h3",
|
|
2566
2693
|
"hailuo-2.3-pro",
|
|
2567
2694
|
"hailuo-2.3",
|
|
2568
2695
|
"hailuo-standard",
|
|
@@ -2602,6 +2729,8 @@ var TEXT_TO_VIDEO_PROVIDERS = [
|
|
|
2602
2729
|
"seedance-2",
|
|
2603
2730
|
"seedance-2-fast",
|
|
2604
2731
|
"seedance-2-mini",
|
|
2732
|
+
"seedance-2-5",
|
|
2733
|
+
"minimax-h3",
|
|
2605
2734
|
"wan",
|
|
2606
2735
|
"hailuo-standard",
|
|
2607
2736
|
"bytedance-lite",
|
|
@@ -2715,12 +2844,19 @@ var LIP_SYNC_PROVIDERS = [
|
|
|
2715
2844
|
// not the dedicated lip-sync flow.
|
|
2716
2845
|
"seedance-2",
|
|
2717
2846
|
"seedance-2-fast",
|
|
2718
|
-
"seedance-2-mini"
|
|
2847
|
+
"seedance-2-mini",
|
|
2848
|
+
"seedance-2-5",
|
|
2849
|
+
// MiniMax Hailuo 3 — same multimodal audio-driven mechanism (r2v
|
|
2850
|
+
// reference_audio_urls paired with an image ref); rides the same
|
|
2851
|
+
// reference-audio lip-sync surface as the Seedance 2 family.
|
|
2852
|
+
"minimax-h3"
|
|
2719
2853
|
];
|
|
2720
2854
|
var SEEDANCE_LIP_SYNC_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2721
2855
|
"seedance-2",
|
|
2722
2856
|
"seedance-2-fast",
|
|
2723
|
-
"seedance-2-mini"
|
|
2857
|
+
"seedance-2-mini",
|
|
2858
|
+
"seedance-2-5",
|
|
2859
|
+
"minimax-h3"
|
|
2724
2860
|
]);
|
|
2725
2861
|
var REPLICATE_LIP_SYNC_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2726
2862
|
"latentsync",
|
|
@@ -2885,6 +3021,8 @@ var DURATION_PRICED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
2885
3021
|
"seedance-2",
|
|
2886
3022
|
"seedance-2-fast",
|
|
2887
3023
|
"seedance-2-mini",
|
|
3024
|
+
"seedance-2-5",
|
|
3025
|
+
"minimax-h3",
|
|
2888
3026
|
"grok-imagine-video-1.5",
|
|
2889
3027
|
"happyhorse",
|
|
2890
3028
|
"happyhorse-i2v",
|
|
@@ -2893,17 +3031,111 @@ var DURATION_PRICED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
2893
3031
|
var SEEDANCE_2_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2894
3032
|
"seedance-2",
|
|
2895
3033
|
"seedance-2-fast",
|
|
2896
|
-
"seedance-2-mini"
|
|
3034
|
+
"seedance-2-mini",
|
|
3035
|
+
// Seedance 2.5 — a later generation, but it shares the whole 2.0 capability
|
|
3036
|
+
// surface this set gates (frames + image/video/audio refs, adaptive aspect,
|
|
3037
|
+
// per-second resolution × video-ref pricing), so it belongs here. Where it
|
|
3038
|
+
// DIFFERS (30s ceiling, no 1080p/4K, wider ref caps) the difference is
|
|
3039
|
+
// carried by the per-provider maps, never by branching on this set.
|
|
3040
|
+
"seedance-2-5"
|
|
2897
3041
|
]);
|
|
2898
3042
|
function isSeedance2Provider(provider) {
|
|
2899
3043
|
return !!provider && SEEDANCE_2_PROVIDERS.has(provider);
|
|
2900
3044
|
}
|
|
2901
|
-
var
|
|
3045
|
+
var MINIMAX_H3_PROVIDERS = /* @__PURE__ */ new Set([
|
|
3046
|
+
"minimax-h3"
|
|
3047
|
+
]);
|
|
3048
|
+
function isMinimaxH3Provider(provider) {
|
|
3049
|
+
return !!provider && MINIMAX_H3_PROVIDERS.has(provider);
|
|
3050
|
+
}
|
|
3051
|
+
var MINIMAX_H3_DEFAULT_RESOLUTION = "2K";
|
|
3052
|
+
function normalizeMinimaxH3Resolution(resolution) {
|
|
3053
|
+
return resolution?.trim().toLowerCase() === "768p" ? "768P" : MINIMAX_H3_DEFAULT_RESOLUTION;
|
|
3054
|
+
}
|
|
3055
|
+
var VIDEO_PROVIDERS_WITHOUT_DISPATCH = /* @__PURE__ */ new Set([
|
|
3056
|
+
"kling-3-omni"
|
|
3057
|
+
]);
|
|
3058
|
+
var GVP_DEFAULT_PROVIDER = "seedance-2";
|
|
3059
|
+
function deriveGvpSupportedProviders() {
|
|
3060
|
+
const dispatchable = new Set(VIDEO_GEN_PROVIDERS);
|
|
3061
|
+
const eligible = Object.values(MODEL_CATALOG).filter(
|
|
3062
|
+
(m) => m.kind === "video" && m.modes.includes("i2v") && m.features?.includes("reference-image") === true && (m.durations?.length ?? 0) > 0 && // Must also be dispatchable by the unified video node — the pro route
|
|
3063
|
+
// hands the provider id straight to the app's imageToVideo.
|
|
3064
|
+
dispatchable.has(m.id) && // ...and must actually REACH a provider. Capability alone is not
|
|
3065
|
+
// enough: kling-3-omni passes every check above and still fails at the
|
|
3066
|
+
// router (see VIDEO_PROVIDERS_WITHOUT_DISPATCH).
|
|
3067
|
+
!VIDEO_PROVIDERS_WITHOUT_DISPATCH.has(m.id)
|
|
3068
|
+
).map((m) => m.id);
|
|
3069
|
+
const seriesOf = (id) => MODEL_CATALOG[id]?.series ?? MODEL_CATALOG[id]?.family ?? id;
|
|
3070
|
+
const defaultSeries = seriesOf(GVP_DEFAULT_PROVIDER);
|
|
3071
|
+
const order = [];
|
|
3072
|
+
for (const id of eligible) {
|
|
3073
|
+
const s = seriesOf(id);
|
|
3074
|
+
if (!order.includes(s)) order.push(s);
|
|
3075
|
+
}
|
|
3076
|
+
const rank = (id) => {
|
|
3077
|
+
const s = seriesOf(id);
|
|
3078
|
+
return s === defaultSeries ? -1 : order.indexOf(s);
|
|
3079
|
+
};
|
|
3080
|
+
return [...eligible].sort((a, b) => {
|
|
3081
|
+
const d = rank(a) - rank(b);
|
|
3082
|
+
if (d !== 0) return d;
|
|
3083
|
+
if (a === GVP_DEFAULT_PROVIDER) return -1;
|
|
3084
|
+
if (b === GVP_DEFAULT_PROVIDER) return 1;
|
|
3085
|
+
return eligible.indexOf(a) - eligible.indexOf(b);
|
|
3086
|
+
});
|
|
3087
|
+
}
|
|
3088
|
+
var GVP_SUPPORTED_PROVIDERS = deriveGvpSupportedProviders();
|
|
2902
3089
|
function isGvpSupportedProvider(provider) {
|
|
2903
3090
|
return !!provider && GVP_SUPPORTED_PROVIDERS.includes(provider);
|
|
2904
3091
|
}
|
|
3092
|
+
var GVP_EXTEND_PROVIDERS = GVP_SUPPORTED_PROVIDERS.filter(
|
|
3093
|
+
(id) => MODEL_CATALOG[id]?.features?.includes("video-reference") === true
|
|
3094
|
+
);
|
|
3095
|
+
function supportsExtendRender(provider) {
|
|
3096
|
+
return !!provider && GVP_EXTEND_PROVIDERS.includes(provider);
|
|
3097
|
+
}
|
|
3098
|
+
var GVP_END_FRAME_PROVIDERS = GVP_SUPPORTED_PROVIDERS.filter(
|
|
3099
|
+
(id) => MODEL_CATALOG[id]?.features?.includes("end-frame") === true
|
|
3100
|
+
);
|
|
3101
|
+
function supportsEndAnchor(provider) {
|
|
3102
|
+
return !!provider && GVP_END_FRAME_PROVIDERS.includes(provider);
|
|
3103
|
+
}
|
|
3104
|
+
var GVP_ANCHOR_CHOICES = ["auto", "start-end", "start-only", "reference"];
|
|
3105
|
+
function resolveGvpAnchorWire(choice) {
|
|
3106
|
+
switch (choice) {
|
|
3107
|
+
case "start-end":
|
|
3108
|
+
return "upfront";
|
|
3109
|
+
case "start-only":
|
|
3110
|
+
return "progressive";
|
|
3111
|
+
case "reference":
|
|
3112
|
+
return "none";
|
|
3113
|
+
default:
|
|
3114
|
+
return void 0;
|
|
3115
|
+
}
|
|
3116
|
+
}
|
|
3117
|
+
function segmentDurationsFor(provider) {
|
|
3118
|
+
if (!provider) return [];
|
|
3119
|
+
return [...MODEL_CATALOG[provider]?.durations ?? []].sort((a, b) => a - b);
|
|
3120
|
+
}
|
|
3121
|
+
function minSegmentSecFor(provider) {
|
|
3122
|
+
return segmentDurationsFor(provider)[0] ?? 0;
|
|
3123
|
+
}
|
|
3124
|
+
function maxSegmentSecFor(provider) {
|
|
3125
|
+
const d = segmentDurationsFor(provider);
|
|
3126
|
+
return d[d.length - 1] ?? 0;
|
|
3127
|
+
}
|
|
3128
|
+
function hasContiguousSegmentDurations(provider) {
|
|
3129
|
+
const d = segmentDurationsFor(provider);
|
|
3130
|
+
if (d.length === 0) return false;
|
|
3131
|
+
return d.length === d[d.length - 1] - d[0] + 1;
|
|
3132
|
+
}
|
|
3133
|
+
function maxSegmentsFor(provider, capSec) {
|
|
3134
|
+
const max = maxSegmentSecFor(provider);
|
|
3135
|
+
return max > 0 ? Math.ceil(capSec / max) : 0;
|
|
3136
|
+
}
|
|
2905
3137
|
function defaultVideoAspectRatio(provider) {
|
|
2906
|
-
return isSeedance2Provider(provider) ? "adaptive" : "16:9";
|
|
3138
|
+
return isSeedance2Provider(provider) || isMinimaxH3Provider(provider) ? "adaptive" : "16:9";
|
|
2907
3139
|
}
|
|
2908
3140
|
var VEO_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2909
3141
|
"veo3",
|
|
@@ -2918,6 +3150,11 @@ var SEEDANCE_2_REF_LIMITS = {
|
|
|
2918
3150
|
videos: 3,
|
|
2919
3151
|
audio: 3
|
|
2920
3152
|
};
|
|
3153
|
+
var SEEDANCE_2_5_REF_LIMITS = {
|
|
3154
|
+
images: 30,
|
|
3155
|
+
videos: 10,
|
|
3156
|
+
audio: 10
|
|
3157
|
+
};
|
|
2921
3158
|
var SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC = 1.8;
|
|
2922
3159
|
var SEEDANCE_2_CONTINUATION_REF_SEC = 2;
|
|
2923
3160
|
var SEEDANCE_2_EXTEND_STITCH = {
|
|
@@ -2936,7 +3173,13 @@ var SEEDANCE_2_EXTEND_STITCH = {
|
|
|
2936
3173
|
referenceTailSeconds: SEEDANCE_2_CONTINUATION_REF_SEC
|
|
2937
3174
|
};
|
|
2938
3175
|
var SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = {
|
|
2939
|
-
"seedance-2-fast": 15.2
|
|
3176
|
+
"seedance-2-fast": 15.2,
|
|
3177
|
+
// Seedance 2.5 — documented hard limit: each reference audio 2-30s, ≤15 MB
|
|
3178
|
+
// per file (docs.kie.ai/market/bytedance/seedance-2-5).
|
|
3179
|
+
"seedance-2-5": 30,
|
|
3180
|
+
// MiniMax Hailuo 3 — documented hard limit: each reference audio segment
|
|
3181
|
+
// 2-15s, ≤15s total (docs.kie.ai/market/minimax-h3/reference-to-video).
|
|
3182
|
+
"minimax-h3": 15
|
|
2940
3183
|
};
|
|
2941
3184
|
function seedance2AudioLimitSec(provider) {
|
|
2942
3185
|
if (!provider) return null;
|
|
@@ -2955,6 +3198,13 @@ var VIDEO_REF_LIMITS_BY_PROVIDER = {
|
|
|
2955
3198
|
"seedance-2": { ...SEEDANCE_2_REF_LIMITS },
|
|
2956
3199
|
"seedance-2-fast": { ...SEEDANCE_2_REF_LIMITS },
|
|
2957
3200
|
"seedance-2-mini": { ...SEEDANCE_2_REF_LIMITS },
|
|
3201
|
+
// Seedance 2.5 — wider caps than the 2.0 family (30 / 10 / 10).
|
|
3202
|
+
"seedance-2-5": { ...SEEDANCE_2_5_REF_LIMITS },
|
|
3203
|
+
// MiniMax Hailuo 3 — identical multimodal caps (9 images / 3 videos / 3
|
|
3204
|
+
// audio per docs.kie.ai/market/minimax-h3/reference-to-video). Note: KIE
|
|
3205
|
+
// bills input images beyond the first 5 (11 KIE cr each) — see the
|
|
3206
|
+
// minimax-h3 credit helper in backend ee/billing.
|
|
3207
|
+
"minimax-h3": { ...SEEDANCE_2_REF_LIMITS },
|
|
2958
3208
|
// Multi-image reference providers.
|
|
2959
3209
|
"gemini-omni-video": { images: 7, videos: 1 },
|
|
2960
3210
|
"kling-3-omni": { images: 7 },
|
|
@@ -2992,8 +3242,12 @@ var RESOLUTION_DURATION_PRICING = {
|
|
|
2992
3242
|
var NATIVE_ADAPTIVE_ASPECT = {
|
|
2993
3243
|
"seedance-2": "adaptive",
|
|
2994
3244
|
"seedance-2-fast": "adaptive",
|
|
2995
|
-
"seedance-2-mini": "adaptive"
|
|
3245
|
+
"seedance-2-mini": "adaptive",
|
|
3246
|
+
"seedance-2-5": "adaptive"
|
|
2996
3247
|
};
|
|
3248
|
+
var FRAME_MODE_ADAPTIVE_ONLY_ASPECT = /* @__PURE__ */ new Set([
|
|
3249
|
+
"seedance-2-5"
|
|
3250
|
+
]);
|
|
2997
3251
|
var VIDEO_PROVIDERS_REQUIRING_IMAGE = new Set(
|
|
2998
3252
|
Object.values(MODEL_CATALOG).filter(
|
|
2999
3253
|
(m) => m.kind === "video" && m.modes.includes("i2v") && !m.modes.includes("t2v") && VIDEO_GEN_PROVIDERS.includes(m.id) && resolveVideoProviderForMode(m.id, "text-to-video") === m.id
|
|
@@ -3032,7 +3286,15 @@ var VIDEO_AUDIO_CAPABILITY = {
|
|
|
3032
3286
|
// Seedance 2.0 — multimodal; lip-syncs to a supplied reference-audio track.
|
|
3033
3287
|
"seedance-2": { mode: "audio_driven", field: "generateAudio" },
|
|
3034
3288
|
"seedance-2-fast": { mode: "audio_driven", field: "generateAudio" },
|
|
3035
|
-
"seedance-2-mini": { mode: "audio_driven", field: "generateAudio" }
|
|
3289
|
+
"seedance-2-mini": { mode: "audio_driven", field: "generateAudio" },
|
|
3290
|
+
// Seedance 2.5 — same audio-driven surface; `generate_audio` defaults TRUE
|
|
3291
|
+
// on KIE and is cost-affecting only through the -ref/no-ref rate split,
|
|
3292
|
+
// which the resolution+ref composite already carries (no `:audio` suffix).
|
|
3293
|
+
"seedance-2-5": { mode: "audio_driven", field: "generateAudio", defaultOn: true },
|
|
3294
|
+
// MiniMax Hailuo 3 — multimodal; lip-syncs to reference audio (r2v). The
|
|
3295
|
+
// KIE API exposes NO audio on/off parameter (audio is always produced), so
|
|
3296
|
+
// there is no toggle field — alwaysOn, like VEO.
|
|
3297
|
+
"minimax-h3": { mode: "audio_driven", alwaysOn: true }
|
|
3036
3298
|
};
|
|
3037
3299
|
var VIDEO_AUDIO_NONE = { mode: "none" };
|
|
3038
3300
|
function getVideoAudioCapability(model) {
|
|
@@ -3073,13 +3335,30 @@ var VIDEO_VARIABLE_PRICING = {
|
|
|
3073
3335
|
"seedance-2": "duration+resolution+ref",
|
|
3074
3336
|
"seedance-2-fast": "duration+resolution+ref",
|
|
3075
3337
|
"seedance-2-mini": "duration+resolution+ref",
|
|
3338
|
+
"seedance-2-5": "duration+resolution+ref",
|
|
3339
|
+
// MiniMax Hailuo 3 — per-second rate at two resolution tiers (2K default /
|
|
3340
|
+
// 768P). Duration + resolution form the composite (bare = 2K, ":768p"
|
|
3341
|
+
// appended for the cheaper tier); ref-video input seconds + extra input
|
|
3342
|
+
// images are billed via the dedicated compute hook, not the identifier.
|
|
3343
|
+
"minimax-h3": "duration+resolution",
|
|
3076
3344
|
// Grok Imagine Video 1.5 — per-second billing split 480p/720p (no video-ref dimension).
|
|
3077
3345
|
"grok-imagine-video-1.5": "duration+resolution"
|
|
3078
3346
|
};
|
|
3347
|
+
var PRICING_DEFAULT_DURATION_SEC = {
|
|
3348
|
+
"minimax-h3": 6
|
|
3349
|
+
};
|
|
3350
|
+
var PRICING_DEFAULT_RESOLUTION = {
|
|
3351
|
+
// KIE renders 720p when `resolution` is omitted (kie/models.ts extraParams).
|
|
3352
|
+
"seedance-2-5": "720p"
|
|
3353
|
+
};
|
|
3079
3354
|
var HAPPYHORSE_DURATION_TIERS = Array.from(
|
|
3080
3355
|
{ length: 13 },
|
|
3081
3356
|
(_, i) => ({ maxSeconds: i + 3, suffix: `${i + 3}s` })
|
|
3082
3357
|
);
|
|
3358
|
+
var SEEDANCE_2_5_DURATION_TIERS = Array.from(
|
|
3359
|
+
{ length: 27 },
|
|
3360
|
+
(_, i) => ({ maxSeconds: i + 4, suffix: `${i + 4}s` })
|
|
3361
|
+
);
|
|
3083
3362
|
var VIDEO_DURATION_TIERS = {
|
|
3084
3363
|
"kling-3.0": [
|
|
3085
3364
|
{ maxSeconds: 5, suffix: "5s" },
|
|
@@ -3154,6 +3433,25 @@ var VIDEO_DURATION_TIERS = {
|
|
|
3154
3433
|
{ maxSeconds: 12, suffix: "12s" },
|
|
3155
3434
|
{ maxSeconds: 15, suffix: "15s" }
|
|
3156
3435
|
],
|
|
3436
|
+
"seedance-2-5": SEEDANCE_2_5_DURATION_TIERS,
|
|
3437
|
+
// MiniMax Hailuo 3 — true per-second billing (KIE 36.5 cr/s @2K, 22.5 cr/s
|
|
3438
|
+
// @768P). One tier per allowed second (4-15s) so the composite identifier
|
|
3439
|
+
// maps 1:1 to the seeded price — no rounding/overcharge for any on-menu
|
|
3440
|
+
// duration; the ":768p" resolution suffix is appended after the tier.
|
|
3441
|
+
"minimax-h3": [
|
|
3442
|
+
{ maxSeconds: 4, suffix: "4s" },
|
|
3443
|
+
{ maxSeconds: 5, suffix: "5s" },
|
|
3444
|
+
{ maxSeconds: 6, suffix: "6s" },
|
|
3445
|
+
{ maxSeconds: 7, suffix: "7s" },
|
|
3446
|
+
{ maxSeconds: 8, suffix: "8s" },
|
|
3447
|
+
{ maxSeconds: 9, suffix: "9s" },
|
|
3448
|
+
{ maxSeconds: 10, suffix: "10s" },
|
|
3449
|
+
{ maxSeconds: 11, suffix: "11s" },
|
|
3450
|
+
{ maxSeconds: 12, suffix: "12s" },
|
|
3451
|
+
{ maxSeconds: 13, suffix: "13s" },
|
|
3452
|
+
{ maxSeconds: 14, suffix: "14s" },
|
|
3453
|
+
{ maxSeconds: 15, suffix: "15s" }
|
|
3454
|
+
],
|
|
3157
3455
|
// Grok Imagine Video 1.5 — true per-second billing (KIE 14.5 cr/s @480p, 25 cr/s
|
|
3158
3456
|
// @720p, +2 cr/image). One tier per allowed second (1–15s) so the composite
|
|
3159
3457
|
// identifier maps 1:1 to the seeded price — no rounding/overcharge for any on-menu value.
|
|
@@ -3285,6 +3583,17 @@ var VIDEO_MODEL_CAPS = {
|
|
|
3285
3583
|
// character + location + 3 secondary refs.
|
|
3286
3584
|
maxReferenceImages: 5
|
|
3287
3585
|
},
|
|
3586
|
+
"seedance-2-5": {
|
|
3587
|
+
inputModes: ["first_frame", "first_last_frame", "ref_images", "video_continuation"],
|
|
3588
|
+
supportsVideoExtension: true,
|
|
3589
|
+
// 30s single-shot on KIE (probe-verified 2026-08-08: 30 accepted, 31 rejected).
|
|
3590
|
+
maxDurationSeconds: 30,
|
|
3591
|
+
prompting_style: "natural_language",
|
|
3592
|
+
// SEEDANCE_2_5_REF_LIMITS.images is the hard upper bound (30); the same
|
|
3593
|
+
// conservative headroom rule as seedance-2 applies to what the director
|
|
3594
|
+
// actually allocates.
|
|
3595
|
+
maxReferenceImages: 5
|
|
3596
|
+
},
|
|
3288
3597
|
"hailuo-2.3-pro": {
|
|
3289
3598
|
inputModes: ["first_frame", "text"],
|
|
3290
3599
|
maxDurationSeconds: 10,
|
|
@@ -3395,6 +3704,8 @@ var VIDEO_CLIP_CREDITS = {
|
|
|
3395
3704
|
// seedance-2-fast:8s:720p-ref
|
|
3396
3705
|
"seedance-2-mini": { credits: 25, clipSeconds: 8 },
|
|
3397
3706
|
// seedance-2-mini:8s:720p-ref
|
|
3707
|
+
"seedance-2-5": { credits: 76, clipSeconds: 8 },
|
|
3708
|
+
// seedance-2-5:8s:720p-ref
|
|
3398
3709
|
"veo3": { credits: 79, clipSeconds: 8 },
|
|
3399
3710
|
// flat per generation (VEO 3.1 Quality)
|
|
3400
3711
|
"veo3.1": { credits: 19, clipSeconds: 6 },
|
|
@@ -3798,8 +4109,9 @@ function buildVideoCreditModelIdentifier(provider, duration, sound, nodeType, mo
|
|
|
3798
4109
|
if (!DURATION_PRICED_PROVIDERS.has(effectiveProvider)) {
|
|
3799
4110
|
return effectiveProvider;
|
|
3800
4111
|
}
|
|
3801
|
-
const
|
|
3802
|
-
const
|
|
4112
|
+
const durationFallback = PRICING_DEFAULT_DURATION_SEC[effectiveProvider] ?? 5;
|
|
4113
|
+
const parsed = typeof duration === "string" ? parseInt(duration, 10) : duration ?? durationFallback;
|
|
4114
|
+
const durationSec = Number.isNaN(parsed) ? durationFallback : parsed;
|
|
3803
4115
|
const tiers = VIDEO_DURATION_TIERS[effectiveProvider];
|
|
3804
4116
|
if (!tiers) return effectiveProvider;
|
|
3805
4117
|
const tier = tiers.find((t2) => durationSec <= t2.maxSeconds) ?? tiers[tiers.length - 1];
|
|
@@ -3813,7 +4125,8 @@ function buildVideoCreditModelIdentifier(provider, duration, sound, nodeType, mo
|
|
|
3813
4125
|
}
|
|
3814
4126
|
if (RESOLUTION_VIDEO_REF_PRICING.has(effectiveProvider)) {
|
|
3815
4127
|
const supported = MODEL_CATALOG[effectiveProvider]?.resolutions ?? ["480p", "720p", "1080p"];
|
|
3816
|
-
const
|
|
4128
|
+
const requested = resolution ?? PRICING_DEFAULT_RESOLUTION[effectiveProvider];
|
|
4129
|
+
const want = requested === "4k" ? "4k" : requested === "1080p" ? "1080p" : requested === "720p" ? "720p" : "480p";
|
|
3817
4130
|
const res = supported.includes(want) ? want : supported[supported.length - 1] ?? "480p";
|
|
3818
4131
|
identifier += `:${res}`;
|
|
3819
4132
|
if (hasVideoRef) identifier += "-ref";
|
|
@@ -3823,6 +4136,9 @@ function buildVideoCreditModelIdentifier(provider, duration, sound, nodeType, mo
|
|
|
3823
4136
|
const res = resolution && resTiers.includes(resolution) ? resolution : resTiers[0];
|
|
3824
4137
|
identifier += `:${res}`;
|
|
3825
4138
|
}
|
|
4139
|
+
if (isMinimaxH3Provider(effectiveProvider) && normalizeMinimaxH3Resolution(resolution) === "768P") {
|
|
4140
|
+
identifier += ":768p";
|
|
4141
|
+
}
|
|
3826
4142
|
return identifier;
|
|
3827
4143
|
}
|
|
3828
4144
|
function buildMotionCreditModelIdentifier(provider, resolution, videoDuration) {
|
|
@@ -7337,6 +7653,8 @@ var QUALITY_MAP = {
|
|
|
7337
7653
|
"seedance-2": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7338
7654
|
"seedance-2-fast": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7339
7655
|
"seedance-2-mini": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7656
|
+
// Seedance 2.5 tops out at 720p on KIE (1080p/4k probe-rejected 2026-08-08).
|
|
7657
|
+
"seedance-2-5": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7340
7658
|
"wan-2.7-i2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7341
7659
|
"wan-2.7-t2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7342
7660
|
"happyhorse": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
@@ -7417,7 +7735,7 @@ var NODE_MAPPABLE_FIELDS = {
|
|
|
7417
7735
|
"suno-cover": ["prompt", "lyrics", "style", "title", "negativeStyle"],
|
|
7418
7736
|
"suno-extend": ["prompt", "style", "title"],
|
|
7419
7737
|
"suno-lyrics": ["prompt"],
|
|
7420
|
-
"suno-replace-section": ["prompt", "tags", "title"],
|
|
7738
|
+
"suno-replace-section": ["prompt", "tags", "title", "fullLyrics", "negativeTags"],
|
|
7421
7739
|
"suno-style-boost": ["content"],
|
|
7422
7740
|
"suno-upload-extend": ["prompt", "style", "title"],
|
|
7423
7741
|
"suno-mashup": ["style", "title", "negativeStyle"],
|
|
@@ -9780,6 +10098,7 @@ var PIPELINE_PINNABLE_VIDEO_MODELS = [
|
|
|
9780
10098
|
"seedance-2",
|
|
9781
10099
|
"seedance-2-fast",
|
|
9782
10100
|
"seedance-2-mini",
|
|
10101
|
+
"seedance-2-5",
|
|
9783
10102
|
"veo3",
|
|
9784
10103
|
"veo3.1",
|
|
9785
10104
|
"veo3_lite",
|
|
@@ -10745,6 +11064,10 @@ var PROVIDER_DIRECTIVE_DEFAULTS = {
|
|
|
10745
11064
|
"hailuo-2.3-pro": {},
|
|
10746
11065
|
"hailuo-standard": {},
|
|
10747
11066
|
minimax: {},
|
|
11067
|
+
// MiniMax Hailuo 3 — multimodal like seedance-2 but no verified directive
|
|
11068
|
+
// semantics yet; empty until probed (NOTE: never match `minimax-h3` with a
|
|
11069
|
+
// startsWith("seedance") / startsWith("minimax") prefix check — exact keys only).
|
|
11070
|
+
"minimax-h3": {},
|
|
10748
11071
|
"bytedance-lite": {}
|
|
10749
11072
|
};
|
|
10750
11073
|
function mapShotIntentToProviderDirectives(provider, shotIntent) {
|
|
@@ -12242,7 +12565,10 @@ function sourceRefKey(nodeId, sourceHandleId, rawSourceType) {
|
|
|
12242
12565
|
var REFERENCE_ROLE_PRESETS = {
|
|
12243
12566
|
"wired-character": ["ref-only", "person", "face", "clothes", "hair", "pose", "expression", "style"],
|
|
12244
12567
|
"wired-face": ["face", "person", "expression", "style"],
|
|
12245
|
-
"
|
|
12568
|
+
// "location" sits second, mirroring wired-character's ref-only/person order —
|
|
12569
|
+
// it is this source's default. "background" keeps its place for the genuine
|
|
12570
|
+
// backdrop case (see DEFAULT_LABEL_BY_SOURCE for why it stopped being default).
|
|
12571
|
+
"wired-location": ["ref-only", "location", "background", "atmosphere", "as-is", "empty background", "layout", "lighting", "style"],
|
|
12246
12572
|
"wired-object": ["object", "shape", "material", "color", "texture", "style"],
|
|
12247
12573
|
"wired-creature": ["creature", "anatomy", "markings", "pose", "color", "style"],
|
|
12248
12574
|
"wired-image": ["object", "person", "face", "clothes", "background", "style", "pose", "texture"],
|
|
@@ -12585,8 +12911,9 @@ function renderAnalyzedScene(scene, slots, castMap) {
|
|
|
12585
12911
|
const byId = new Map(slots.map((s) => [s.slotId, s]));
|
|
12586
12912
|
return scene.visual.replace(SLOT_TOKEN_RE, (_whole, id) => castMap?.[id] ?? byId.get(id)?.description ?? id);
|
|
12587
12913
|
}
|
|
12914
|
+
var OVERSIZE_TOLERANCE_SEC = 1e-6;
|
|
12588
12915
|
function isOversizedScene(startSec, endSec) {
|
|
12589
|
-
return endSec - startSec > VIDEO_ANALYSIS_MAX_SCENE_SEC;
|
|
12916
|
+
return endSec - startSec > VIDEO_ANALYSIS_MAX_SCENE_SEC + OVERSIZE_TOLERANCE_SEC;
|
|
12590
12917
|
}
|
|
12591
12918
|
var STANDARD_RATIOS = [
|
|
12592
12919
|
["16:9", 16 / 9],
|
|
@@ -12614,36 +12941,38 @@ var WINDOW_OVERLAP = 5;
|
|
|
12614
12941
|
var VIDEO_ANALYSIS_WINDOW = { LEN: WINDOW_LEN, STRIDE: WINDOW_STRIDE, OVERLAP: WINDOW_OVERLAP, SINGLE_MAX: 180 };
|
|
12615
12942
|
var VIDEO_ANALYSIS_BUCKET_CREDITS = {
|
|
12616
12943
|
// Legacy fast-tier model (pre-2026-07) — kept for stored raw-id configs.
|
|
12617
|
-
"video-analysis:gemini-3-flash:60s":
|
|
12618
|
-
"video-analysis:gemini-3-flash:180s":
|
|
12619
|
-
"video-analysis:gemini-3-flash:360s":
|
|
12620
|
-
"video-analysis:gemini-3-flash:600s":
|
|
12944
|
+
"video-analysis:gemini-3-flash:60s": 180,
|
|
12945
|
+
"video-analysis:gemini-3-flash:180s": 185,
|
|
12946
|
+
"video-analysis:gemini-3-flash:360s": 514,
|
|
12947
|
+
"video-analysis:gemini-3-flash:600s": 846,
|
|
12621
12948
|
// Current fast tier — regenerated from the private formula for its backing
|
|
12622
12949
|
// model; higher than the legacy fast schedule but still ≤ pro per bucket.
|
|
12623
|
-
"video-analysis:gemini-3.6-flash:60s":
|
|
12624
|
-
"video-analysis:gemini-3.6-flash:180s":
|
|
12625
|
-
"video-analysis:gemini-3.6-flash:360s":
|
|
12626
|
-
"video-analysis:gemini-3.6-flash:600s":
|
|
12627
|
-
"video-analysis:gemini-3.1-pro:60s":
|
|
12628
|
-
"video-analysis:gemini-3.1-pro:180s":
|
|
12629
|
-
"video-analysis:gemini-3.1-pro:360s":
|
|
12630
|
-
"video-analysis:gemini-3.1-pro:600s":
|
|
12950
|
+
"video-analysis:gemini-3.6-flash:60s": 203,
|
|
12951
|
+
"video-analysis:gemini-3.6-flash:180s": 218,
|
|
12952
|
+
"video-analysis:gemini-3.6-flash:360s": 598,
|
|
12953
|
+
"video-analysis:gemini-3.6-flash:600s": 986,
|
|
12954
|
+
"video-analysis:gemini-3.1-pro:60s": 215,
|
|
12955
|
+
"video-analysis:gemini-3.1-pro:180s": 231,
|
|
12956
|
+
"video-analysis:gemini-3.1-pro:360s": 636,
|
|
12957
|
+
"video-analysis:gemini-3.1-pro:600s": 1050,
|
|
12631
12958
|
// Mixed tiers (`mixed` + `mixed-fast`) share ONE credit family — they are
|
|
12632
12959
|
// variants of the same engine plan (plan internals live in the private
|
|
12633
12960
|
// analysis plugin). Admin-tunable via model_pricing like every other row.
|
|
12634
|
-
"video-analysis:mixed:60s":
|
|
12635
|
-
"video-analysis:mixed:180s":
|
|
12636
|
-
"video-analysis:mixed:360s":
|
|
12637
|
-
"video-analysis:mixed:600s":
|
|
12638
|
-
// SMART — the
|
|
12639
|
-
//
|
|
12640
|
-
//
|
|
12641
|
-
//
|
|
12642
|
-
// the
|
|
12643
|
-
|
|
12644
|
-
|
|
12645
|
-
"video-analysis:smart:
|
|
12646
|
-
"video-analysis:smart:
|
|
12961
|
+
"video-analysis:mixed:60s": 268,
|
|
12962
|
+
"video-analysis:mixed:180s": 289,
|
|
12963
|
+
"video-analysis:mixed:360s": 724,
|
|
12964
|
+
"video-analysis:mixed:600s": 1169,
|
|
12965
|
+
// SMART — the accuracy tier, and since the 2026-08-03 hybrid re-plan a
|
|
12966
|
+
// multi-roll plan like the others: one native 6fps skeleton pass plus 2
|
|
12967
|
+
// fast + 2 pro donor rolls, always refined (`selectionMode` does not apply
|
|
12968
|
+
// here — smart always refines; it never offers a cheaper "choose" path).
|
|
12969
|
+
// Priced above the economy tiers because it genuinely costs more to run;
|
|
12970
|
+
// the only tier whose accuracy is validated against a hand-counted edit
|
|
12971
|
+
// list, re-validated at the current plan before this schedule shipped.
|
|
12972
|
+
"video-analysis:smart:60s": 410,
|
|
12973
|
+
"video-analysis:smart:180s": 500,
|
|
12974
|
+
"video-analysis:smart:360s": 1259,
|
|
12975
|
+
"video-analysis:smart:600s": 2064
|
|
12647
12976
|
};
|
|
12648
12977
|
function videoAnalysisCreditSegment(modelOrSentinel) {
|
|
12649
12978
|
return modelOrSentinel === "mixed-fast" ? "mixed" : modelOrSentinel;
|
|
@@ -12663,6 +12992,30 @@ function bucketSecondsFromCreditId(creditId) {
|
|
|
12663
12992
|
function videoAnalysisNumWindows(bucketSec) {
|
|
12664
12993
|
return bucketSec <= VIDEO_ANALYSIS_WINDOW.SINGLE_MAX ? 1 : 1 + Math.ceil((bucketSec - WINDOW_LEN) / WINDOW_STRIDE);
|
|
12665
12994
|
}
|
|
12995
|
+
var VIDEO_AUDIT_BUCKET_CREDITS = {
|
|
12996
|
+
"video-audit:60s": 213,
|
|
12997
|
+
"video-audit:180s": 289,
|
|
12998
|
+
"video-audit:360s": 659,
|
|
12999
|
+
"video-audit:600s": 1066,
|
|
13000
|
+
"video-audit:auto:60s": 393,
|
|
13001
|
+
"video-audit:auto:180s": 474,
|
|
13002
|
+
"video-audit:auto:360s": 1173,
|
|
13003
|
+
"video-audit:auto:600s": 1912
|
|
13004
|
+
};
|
|
13005
|
+
function buildVideoAuditCreditId(args) {
|
|
13006
|
+
const { analysisProvided, durationSec } = args;
|
|
13007
|
+
const bucket = durationSec !== void 0 && durationSec > 0 ? pickVideoAnalysisBucket(Math.min(durationSec, VIDEO_ANALYSIS_MAX_DURATION_SEC)) : VIDEO_ANALYSIS_MAX_DURATION_SEC;
|
|
13008
|
+
const family = analysisProvided ? "video-audit" : "video-audit:auto";
|
|
13009
|
+
return `${family}:${bucket}s`;
|
|
13010
|
+
}
|
|
13011
|
+
function videoAuditCreditsForBucket(bucketSec, auto) {
|
|
13012
|
+
const bucket = pickVideoAnalysisBucket(bucketSec);
|
|
13013
|
+
return VIDEO_AUDIT_BUCKET_CREDITS[`video-audit${auto ? ":auto" : ""}:${bucket}s`];
|
|
13014
|
+
}
|
|
13015
|
+
function bucketSecondsFromAuditCreditId(id) {
|
|
13016
|
+
const m = /^video-audit(?::auto)?:(\d+)s$/.exec(id);
|
|
13017
|
+
return m ? Number(m[1]) : null;
|
|
13018
|
+
}
|
|
12666
13019
|
|
|
12667
13020
|
// src/smart-cut-windows.ts
|
|
12668
13021
|
var SMART_CUT_WINDOW_MAX = 24;
|
|
@@ -12799,6 +13152,7 @@ exports.FILM_BASE_CREDITS = FILM_BASE_CREDITS;
|
|
|
12799
13152
|
exports.FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS = FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS;
|
|
12800
13153
|
exports.FLUX2_RES_MP = FLUX2_RES_MP;
|
|
12801
13154
|
exports.FLUX_LORA_CHARACTER_MODEL_ID = FLUX_LORA_CHARACTER_MODEL_ID;
|
|
13155
|
+
exports.FRAME_MODE_ADAPTIVE_ONLY_ASPECT = FRAME_MODE_ADAPTIVE_ONLY_ASPECT;
|
|
12802
13156
|
exports.FRAME_TARGET_HANDLES = FRAME_TARGET_HANDLES;
|
|
12803
13157
|
exports.FREECUT_EXPORT_COMPLETE = FREECUT_EXPORT_COMPLETE;
|
|
12804
13158
|
exports.FREECUT_EXPORT_PROGRESS = FREECUT_EXPORT_PROGRESS;
|
|
@@ -12813,6 +13167,10 @@ exports.GENERATE_TEXT_DELIMITER = GENERATE_TEXT_DELIMITER;
|
|
|
12813
13167
|
exports.GLOBAL_MAX_DURATION_SECONDS = GLOBAL_MAX_DURATION_SECONDS;
|
|
12814
13168
|
exports.GROUP_HANDLE_PREFIX = GROUP_HANDLE_PREFIX;
|
|
12815
13169
|
exports.GUIDANCE_SCALE_SUPPORT = GUIDANCE_SCALE_SUPPORT;
|
|
13170
|
+
exports.GVP_ANCHOR_CHOICES = GVP_ANCHOR_CHOICES;
|
|
13171
|
+
exports.GVP_DEFAULT_PROVIDER = GVP_DEFAULT_PROVIDER;
|
|
13172
|
+
exports.GVP_END_FRAME_PROVIDERS = GVP_END_FRAME_PROVIDERS;
|
|
13173
|
+
exports.GVP_EXTEND_PROVIDERS = GVP_EXTEND_PROVIDERS;
|
|
12816
13174
|
exports.GVP_SUPPORTED_PROVIDERS = GVP_SUPPORTED_PROVIDERS;
|
|
12817
13175
|
exports.GenerateMotionInputSchema = GenerateMotionInputSchema;
|
|
12818
13176
|
exports.GenerateMotionResultSchema = GenerateMotionResultSchema;
|
|
@@ -12882,6 +13240,8 @@ exports.MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER = MAX_NEGATIVE_PROMPT_CHARS_BY_PRO
|
|
|
12882
13240
|
exports.MAX_PANELS_PER_SHEET = MAX_PANELS_PER_SHEET;
|
|
12883
13241
|
exports.MAX_TTS_CHARS_BY_PROVIDER = MAX_TTS_CHARS_BY_PROVIDER;
|
|
12884
13242
|
exports.MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER;
|
|
13243
|
+
exports.MINIMAX_H3_DEFAULT_RESOLUTION = MINIMAX_H3_DEFAULT_RESOLUTION;
|
|
13244
|
+
exports.MINIMAX_H3_PROVIDERS = MINIMAX_H3_PROVIDERS;
|
|
12885
13245
|
exports.MODELS_WITH_REFERENCE_IMAGE_SUPPORT = MODELS_WITH_REFERENCE_IMAGE_SUPPORT;
|
|
12886
13246
|
exports.MODEL_CATALOG = MODEL_CATALOG;
|
|
12887
13247
|
exports.MODEL_RECOMMENDATIONS = MODEL_RECOMMENDATIONS;
|
|
@@ -12937,6 +13297,8 @@ exports.PLATFORM_SPECS = PLATFORM_SPECS;
|
|
|
12937
13297
|
exports.PRESET_APPLY_CLEAR_KEYS = PRESET_APPLY_CLEAR_KEYS;
|
|
12938
13298
|
exports.PRESET_EXCLUDED_KEYS = PRESET_EXCLUDED_KEYS;
|
|
12939
13299
|
exports.PRESET_LABELS = PRESET_LABELS;
|
|
13300
|
+
exports.PRICING_DEFAULT_DURATION_SEC = PRICING_DEFAULT_DURATION_SEC;
|
|
13301
|
+
exports.PRICING_DEFAULT_RESOLUTION = PRICING_DEFAULT_RESOLUTION;
|
|
12940
13302
|
exports.PROMPT_HARD_CEILING = PROMPT_HARD_CEILING;
|
|
12941
13303
|
exports.PROVIDER_DIRECTIVE_DEFAULTS = PROVIDER_DIRECTIVE_DEFAULTS;
|
|
12942
13304
|
exports.PROVIDER_PLACEHOLDER_PREFIX = PROVIDER_PLACEHOLDER_PREFIX;
|
|
@@ -12973,6 +13335,7 @@ exports.SCRIPT_PROVIDERS = SCRIPT_PROVIDERS;
|
|
|
12973
13335
|
exports.SEASONS = SEASONS;
|
|
12974
13336
|
exports.SECTION_BOARD = SECTION_BOARD;
|
|
12975
13337
|
exports.SECTION_KINDS = SECTION_KINDS;
|
|
13338
|
+
exports.SEEDANCE_2_5_REF_LIMITS = SEEDANCE_2_5_REF_LIMITS;
|
|
12976
13339
|
exports.SEEDANCE_2_CONTINUATION_REF_SEC = SEEDANCE_2_CONTINUATION_REF_SEC;
|
|
12977
13340
|
exports.SEEDANCE_2_EXTEND_STITCH = SEEDANCE_2_EXTEND_STITCH;
|
|
12978
13341
|
exports.SEEDANCE_2_PROVIDERS = SEEDANCE_2_PROVIDERS;
|
|
@@ -13063,6 +13426,7 @@ exports.VIDEO_ANALYSIS_VARIATION_SLUGS = VIDEO_ANALYSIS_VARIATION_SLUGS;
|
|
|
13063
13426
|
exports.VIDEO_ANALYSIS_VISUAL_EFFECTS = VIDEO_ANALYSIS_VISUAL_EFFECTS;
|
|
13064
13427
|
exports.VIDEO_ANALYSIS_WINDOW = VIDEO_ANALYSIS_WINDOW;
|
|
13065
13428
|
exports.VIDEO_AUDIO_CAPABILITY = VIDEO_AUDIO_CAPABILITY;
|
|
13429
|
+
exports.VIDEO_AUDIT_BUCKET_CREDITS = VIDEO_AUDIT_BUCKET_CREDITS;
|
|
13066
13430
|
exports.VIDEO_CLIP_CREDITS = VIDEO_CLIP_CREDITS;
|
|
13067
13431
|
exports.VIDEO_CRITIC_CREDITS_PER_SHOT = VIDEO_CRITIC_CREDITS_PER_SHOT;
|
|
13068
13432
|
exports.VIDEO_CRITIC_FRAME_MODES = VIDEO_CRITIC_FRAME_MODES;
|
|
@@ -13078,6 +13442,7 @@ exports.VIDEO_MODE_ALIASES = VIDEO_MODE_ALIASES;
|
|
|
13078
13442
|
exports.VIDEO_PRODUCER_TYPES = VIDEO_PRODUCER_TYPES;
|
|
13079
13443
|
exports.VIDEO_PROMPT_MAX = VIDEO_PROMPT_MAX;
|
|
13080
13444
|
exports.VIDEO_PROVIDERS_REQUIRING_IMAGE = VIDEO_PROVIDERS_REQUIRING_IMAGE;
|
|
13445
|
+
exports.VIDEO_PROVIDERS_WITHOUT_DISPATCH = VIDEO_PROVIDERS_WITHOUT_DISPATCH;
|
|
13081
13446
|
exports.VIDEO_REF_LIMITS_BY_PROVIDER = VIDEO_REF_LIMITS_BY_PROVIDER;
|
|
13082
13447
|
exports.VIDEO_TO_VIDEO_PROVIDERS = VIDEO_TO_VIDEO_PROVIDERS;
|
|
13083
13448
|
exports.VIDEO_UPSCALE_PROVIDERS = VIDEO_UPSCALE_PROVIDERS;
|
|
@@ -13109,6 +13474,7 @@ exports.aspectRatioOptionsByKind = aspectRatioOptionsByKind;
|
|
|
13109
13474
|
exports.aspectRatioToNumber = aspectRatioToNumber;
|
|
13110
13475
|
exports.assembleNarratedVideoCredits = assembleNarratedVideoCredits;
|
|
13111
13476
|
exports.availableReasoningEfforts = availableReasoningEfforts;
|
|
13477
|
+
exports.bucketSecondsFromAuditCreditId = bucketSecondsFromAuditCreditId;
|
|
13112
13478
|
exports.bucketSecondsFromCreditId = bucketSecondsFromCreditId;
|
|
13113
13479
|
exports.buildBoardPrompt = buildBoardPrompt;
|
|
13114
13480
|
exports.buildChildrenByParent = buildChildrenByParent;
|
|
@@ -13127,6 +13493,7 @@ exports.buildRangeLabel = buildRangeLabel;
|
|
|
13127
13493
|
exports.buildScraperCreditId = buildScraperCreditId;
|
|
13128
13494
|
exports.buildSurroundFillPrompt = buildSurroundFillPrompt;
|
|
13129
13495
|
exports.buildVideoAnalysisCreditId = buildVideoAnalysisCreditId;
|
|
13496
|
+
exports.buildVideoAuditCreditId = buildVideoAuditCreditId;
|
|
13130
13497
|
exports.buildVideoCreditModelIdentifier = buildVideoCreditModelIdentifier;
|
|
13131
13498
|
exports.calculateCombinedProgress = calculateCombinedProgress;
|
|
13132
13499
|
exports.calculateMonetizationMarkup = calculateMonetizationMarkup;
|
|
@@ -13240,6 +13607,7 @@ exports.getWeapon = getWeapon;
|
|
|
13240
13607
|
exports.getWeaponLabel = getWeaponLabel;
|
|
13241
13608
|
exports.groupByFamily = groupByFamily;
|
|
13242
13609
|
exports.groupHandleId = groupHandleId;
|
|
13610
|
+
exports.hasContiguousSegmentDurations = hasContiguousSegmentDurations;
|
|
13243
13611
|
exports.hasFeature = hasFeature;
|
|
13244
13612
|
exports.hexToRgbaArray = hexToRgbaArray;
|
|
13245
13613
|
exports.humanizeSlotSid = humanizeSlotSid;
|
|
@@ -13254,6 +13622,7 @@ exports.isGvpSupportedProvider = isGvpSupportedProvider;
|
|
|
13254
13622
|
exports.isHandleInputWired = isHandleInputWired;
|
|
13255
13623
|
exports.isKineticCaptionStyle = isKineticCaptionStyle;
|
|
13256
13624
|
exports.isLocationUsageMode = isLocationUsageMode;
|
|
13625
|
+
exports.isMinimaxH3Provider = isMinimaxH3Provider;
|
|
13257
13626
|
exports.isObjectAspectRatio = isObjectAspectRatio;
|
|
13258
13627
|
exports.isOversizedScene = isOversizedScene;
|
|
13259
13628
|
exports.isPerSecondLipSyncProvider = isPerSecondLipSyncProvider;
|
|
@@ -13276,16 +13645,20 @@ exports.mapAspectRatio = mapAspectRatio;
|
|
|
13276
13645
|
exports.mapQuality = mapQuality;
|
|
13277
13646
|
exports.mapShotIntentToProviderDirectives = mapShotIntentToProviderDirectives;
|
|
13278
13647
|
exports.matchVariant = matchVariant;
|
|
13648
|
+
exports.maxSegmentSecFor = maxSegmentSecFor;
|
|
13649
|
+
exports.maxSegmentsFor = maxSegmentsFor;
|
|
13279
13650
|
exports.mergeClipLook = mergeClipLook;
|
|
13280
13651
|
exports.mergeExposedSettings = mergeExposedSettings;
|
|
13281
13652
|
exports.migrateEdgeOutputMode = migrateEdgeOutputMode;
|
|
13282
13653
|
exports.migrateToItems = migrateToItems;
|
|
13654
|
+
exports.minSegmentSecFor = minSegmentSecFor;
|
|
13283
13655
|
exports.modelIdsByKindMode = modelIdsByKindMode;
|
|
13284
13656
|
exports.modelToNodeTarget = modelToNodeTarget;
|
|
13285
13657
|
exports.modelsForInputMode = modelsForInputMode;
|
|
13286
13658
|
exports.modelsWithFeature = modelsWithFeature;
|
|
13287
13659
|
exports.motionGraphicsFeature = motionGraphicsFeature;
|
|
13288
13660
|
exports.normalizeLottieLayers = normalizeLottieLayers;
|
|
13661
|
+
exports.normalizeMinimaxH3Resolution = normalizeMinimaxH3Resolution;
|
|
13289
13662
|
exports.normalizePinterestUrl = normalizePinterestUrl;
|
|
13290
13663
|
exports.normalizeRoleSlug = normalizeRoleSlug;
|
|
13291
13664
|
exports.parseAttributedDialogue = parseAttributedDialogue;
|
|
@@ -13325,6 +13698,7 @@ exports.resolveDialogueVoices = resolveDialogueVoices;
|
|
|
13325
13698
|
exports.resolveEffectiveSourceType = resolveEffectiveSourceType;
|
|
13326
13699
|
exports.resolveEntityAspect = resolveEntityAspect;
|
|
13327
13700
|
exports.resolveFieldMappings = resolveFieldMappings;
|
|
13701
|
+
exports.resolveGvpAnchorWire = resolveGvpAnchorWire;
|
|
13328
13702
|
exports.resolveImageGenCreditIdentifier = resolveImageGenCreditIdentifier;
|
|
13329
13703
|
exports.resolveIndex = resolveIndex;
|
|
13330
13704
|
exports.resolveLabel = resolveLabel;
|
|
@@ -13355,6 +13729,7 @@ exports.runSelector = runSelector;
|
|
|
13355
13729
|
exports.sanitizeRole = sanitizeRole;
|
|
13356
13730
|
exports.searchModelVariants = searchModelVariants;
|
|
13357
13731
|
exports.seedance2AudioLimitSec = seedance2AudioLimitSec;
|
|
13732
|
+
exports.segmentDurationsFor = segmentDurationsFor;
|
|
13358
13733
|
exports.selectByModulo = selectByModulo;
|
|
13359
13734
|
exports.selectByNamedKey = selectByNamedKey;
|
|
13360
13735
|
exports.selectByPredicate = selectByPredicate;
|
|
@@ -13375,6 +13750,8 @@ exports.stripExportContent = stripExportContent;
|
|
|
13375
13750
|
exports.stripTransientRuntimeData = stripTransientRuntimeData;
|
|
13376
13751
|
exports.supportedDefaultDimensions = supportedDefaultDimensions;
|
|
13377
13752
|
exports.supportsAdvancedMode = supportsAdvancedMode;
|
|
13753
|
+
exports.supportsEndAnchor = supportsEndAnchor;
|
|
13754
|
+
exports.supportsExtendRender = supportsExtendRender;
|
|
13378
13755
|
exports.toConnectedReference = toConnectedReference;
|
|
13379
13756
|
exports.toConnectedReferences = toConnectedReferences;
|
|
13380
13757
|
exports.togglePick = togglePick;
|
|
@@ -13397,6 +13774,7 @@ exports.variantJobId = variantJobId;
|
|
|
13397
13774
|
exports.videoAnalysisCreditSegment = videoAnalysisCreditSegment;
|
|
13398
13775
|
exports.videoAnalysisNumWindows = videoAnalysisNumWindows;
|
|
13399
13776
|
exports.videoAnalysisResultSchema = videoAnalysisResultSchema;
|
|
13777
|
+
exports.videoAuditCreditsForBucket = videoAuditCreditsForBucket;
|
|
13400
13778
|
exports.videoModelCanSpeakDialogue = videoModelCanSpeakDialogue;
|
|
13401
13779
|
exports.videoModelSupportsAudio = videoModelSupportsAudio;
|
|
13402
13780
|
exports.videoProviderRequiresImage = videoProviderRequiresImage;
|