@nodaro/shared 1.9.0 → 1.10.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 +124 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +120 -39
- package/dist/index.d.ts +120 -39
- package/dist/index.js +115 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/credit-identifiers.test.ts +2 -0
- package/src/__tests__/image-ref-limit.test.ts +2 -0
- package/src/__tests__/llm-models.test.ts +10 -3
- package/src/__tests__/prompt-length-limits.test.ts +3 -0
- package/src/__tests__/seedance2-continuation-ref.test.ts +24 -0
- package/src/__tests__/video-analysis-pricing.test.ts +28 -5
- package/src/__tests__/video-analysis.test.ts +1 -1
- package/src/index.ts +11 -0
- package/src/llm-models.ts +52 -9
- package/src/model-catalog.ts +64 -9
- package/src/model-constants.ts +58 -6
- package/src/node-default-mappings.ts +3 -0
- package/src/video-analysis-pricing.ts +14 -10
- package/src/video-analysis.ts +12 -4
package/dist/index.cjs
CHANGED
|
@@ -35,7 +35,7 @@ var MODEL_RECOMMENDATIONS = [
|
|
|
35
35
|
{ intent: "best for typography / logos / text-heavy", modelIds: ["nano-banana-pro", "gpt-image-2"], note: "Nano Banana Pro for diagrams / complex text; GPT Image 2 for logos and short copy." },
|
|
36
36
|
{ intent: "cheapest realistic image", modelIds: ["z-image", "qwen", "imagen4-fast"], note: "Z-Image is the cheapest at 1 credit. Qwen / Imagen4 Fast for slightly higher quality." },
|
|
37
37
|
{ intent: "highest fidelity image", modelIds: ["nano-banana-pro", "imagen4-ultra", "flux-flex"], note: "Pick by family preference; all three are premium tiers." },
|
|
38
|
-
{ intent: "image edit / restyle", modelIds: ["flux-kontext", "ideogram-remix", "seedream-5-
|
|
38
|
+
{ intent: "image edit / restyle", modelIds: ["flux-kontext", "ideogram-remix", "seedream-5-pro-i2i"], note: "Flux Kontext preserves identity; Ideogram Remix is character-aware; Seedream 5 Pro for instruction-based edits (5 Lite is the budget option)." },
|
|
39
39
|
{ intent: "highest-resolution image (4K / 8K)", modelIds: ["topaz-image-upscale", "nano-banana-pro", "gpt-image-2"], note: "Generate at native then Topaz upscale for 8K." },
|
|
40
40
|
{ intent: "background removal / cutout", modelIds: ["recraft-remove-bg"], note: "1 credit, no prompt needed." },
|
|
41
41
|
// video
|
|
@@ -49,6 +49,7 @@ var MODEL_RECOMMENDATIONS = [
|
|
|
49
49
|
{ intent: "motion transfer (drive a subject by another video)", modelIds: ["motion-transfer", "kling-3.0-motion"], note: "Kling 2.6 base is cheap; Kling 3.0 is premium." }
|
|
50
50
|
];
|
|
51
51
|
var NANO_BANANA_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "4:5", "5:4", "21:9"];
|
|
52
|
+
var NANO_BANANA_2_LITE_RATIOS = ["auto", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "4:5", "5:4", "21:9", "4:1", "1:4", "8:1", "1:8"];
|
|
52
53
|
var FLUX_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"];
|
|
53
54
|
var KONTEXT_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "21:9"];
|
|
54
55
|
var GROK_RATIOS = ["1:1", "16:9", "9:16", "3:2", "2:3"];
|
|
@@ -102,6 +103,22 @@ var IMAGE_MODELS = {
|
|
|
102
103
|
{ identifier: "nano-banana-2:4K", credits: 5, note: "4K" }
|
|
103
104
|
]
|
|
104
105
|
},
|
|
106
|
+
"nano-banana-2-lite": {
|
|
107
|
+
id: "nano-banana-2-lite",
|
|
108
|
+
kind: "image",
|
|
109
|
+
// Same single-id shape as nano-banana-2: optional input images on the one
|
|
110
|
+
// endpoint (via image_urls, up to 10), so reachable for both t2i and i2i.
|
|
111
|
+
modes: ["t2i", "i2i"],
|
|
112
|
+
family: "Google",
|
|
113
|
+
label: "Nano Banana 2 Lite",
|
|
114
|
+
series: "Nano Banana",
|
|
115
|
+
description: "Lightweight Nano Banana 2 (Gemini 3.1 Flash-Lite) \u2014 fast, low-cost 1K generation and editing.",
|
|
116
|
+
useCases: ["realistic", "drafts", "iteration"],
|
|
117
|
+
features: ["reference-image"],
|
|
118
|
+
aspectRatios: NANO_BANANA_2_LITE_RATIOS,
|
|
119
|
+
// 1K only — no resolution lever, flat pricing.
|
|
120
|
+
pricing: [{ identifier: "nano-banana-2-lite", credits: 2, note: "1K flat" }]
|
|
121
|
+
},
|
|
105
122
|
"nano-banana-pro": {
|
|
106
123
|
id: "nano-banana-pro",
|
|
107
124
|
kind: "image",
|
|
@@ -564,6 +581,40 @@ var IMAGE_MODELS = {
|
|
|
564
581
|
{ identifier: "seedream-5-lite-i2i:high", credits: 5, note: "high quality" }
|
|
565
582
|
]
|
|
566
583
|
},
|
|
584
|
+
"seedream-5-pro": {
|
|
585
|
+
id: "seedream-5-pro",
|
|
586
|
+
kind: "image",
|
|
587
|
+
modes: ["t2i"],
|
|
588
|
+
family: "Bytedance",
|
|
589
|
+
label: "Seedream 5 Pro",
|
|
590
|
+
series: "Seedream",
|
|
591
|
+
description: "Flagship Seedream 5 Pro \u2014 strongest instruction following and visual reasoning. Basic = 1K, high = 2K.",
|
|
592
|
+
useCases: ["realistic", "instruction"],
|
|
593
|
+
features: ["reference-image"],
|
|
594
|
+
aspectRatios: SEEDREAM_RATIOS,
|
|
595
|
+
qualities: ["basic", "high"],
|
|
596
|
+
pricing: [
|
|
597
|
+
{ identifier: "seedream-5-pro", credits: 3, note: "basic / 1K default" },
|
|
598
|
+
{ identifier: "seedream-5-pro:high", credits: 6, note: "high / 2K" }
|
|
599
|
+
]
|
|
600
|
+
},
|
|
601
|
+
"seedream-5-pro-i2i": {
|
|
602
|
+
id: "seedream-5-pro-i2i",
|
|
603
|
+
kind: "image",
|
|
604
|
+
modes: ["i2i"],
|
|
605
|
+
family: "Bytedance",
|
|
606
|
+
label: "Seedream 5 Pro (I2I)",
|
|
607
|
+
series: "Seedream",
|
|
608
|
+
description: "Image-to-image with Seedream 5 Pro \u2014 multi-reference instruction edits. Basic = 1K, high = 2K.",
|
|
609
|
+
useCases: ["edit", "instruction"],
|
|
610
|
+
features: ["reference-image"],
|
|
611
|
+
aspectRatios: SEEDREAM_RATIOS,
|
|
612
|
+
qualities: ["basic", "high"],
|
|
613
|
+
pricing: [
|
|
614
|
+
{ identifier: "seedream-5-pro-i2i", credits: 3, note: "basic / 1K default" },
|
|
615
|
+
{ identifier: "seedream-5-pro-i2i:high", credits: 6, note: "high / 2K" }
|
|
616
|
+
]
|
|
617
|
+
},
|
|
567
618
|
// ── Alibaba Qwen ──
|
|
568
619
|
"qwen": {
|
|
569
620
|
id: "qwen",
|
|
@@ -1610,10 +1661,10 @@ var VIDEO_MODELS = {
|
|
|
1610
1661
|
id: "gemini-3-flash-video-analysis",
|
|
1611
1662
|
kind: "video",
|
|
1612
1663
|
modes: ["video-analysis"],
|
|
1613
|
-
family: "
|
|
1614
|
-
label: "Video Analysis (
|
|
1615
|
-
series: "
|
|
1616
|
-
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast
|
|
1664
|
+
family: "Nodaro",
|
|
1665
|
+
label: "Video Analysis (Fast)",
|
|
1666
|
+
series: "Video Analysis",
|
|
1667
|
+
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
|
|
1617
1668
|
useCases: ["video-analysis", "shot-list", "fast"],
|
|
1618
1669
|
pricing: [
|
|
1619
1670
|
{ identifier: "video-analysis:gemini-3-flash", credits: 3, note: "10-min ceiling (no duration given)" },
|
|
@@ -1627,10 +1678,10 @@ var VIDEO_MODELS = {
|
|
|
1627
1678
|
id: "gemini-3.1-pro-video-analysis",
|
|
1628
1679
|
kind: "video",
|
|
1629
1680
|
modes: ["video-analysis"],
|
|
1630
|
-
family: "
|
|
1631
|
-
label: "Video Analysis (
|
|
1632
|
-
series: "
|
|
1633
|
-
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014
|
|
1681
|
+
family: "Nodaro",
|
|
1682
|
+
label: "Video Analysis (Pro)",
|
|
1683
|
+
series: "Video Analysis",
|
|
1684
|
+
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 higher-fidelity, default tier. Billed per duration bucket.",
|
|
1634
1685
|
useCases: ["video-analysis", "shot-list", "cinematic"],
|
|
1635
1686
|
pricing: [
|
|
1636
1687
|
{ identifier: "video-analysis:gemini-3.1-pro", credits: 11, note: "10-min ceiling (no duration given)" },
|
|
@@ -2064,6 +2115,8 @@ var MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER = {
|
|
|
2064
2115
|
// ── higher than the 5000 default ──
|
|
2065
2116
|
"nano-banana-2": 2e4,
|
|
2066
2117
|
// docs.kie.ai/market/google/nano-banana-2
|
|
2118
|
+
"nano-banana-2-lite": 2e4,
|
|
2119
|
+
// docs.kie.ai/market/google/nano-banana-2-lite
|
|
2067
2120
|
"nano-banana-pro": 2e4,
|
|
2068
2121
|
// docs.kie.ai/market/google/pro-image-to-image
|
|
2069
2122
|
"gpt-image-2-i2i": 2e4,
|
|
@@ -2083,7 +2136,8 @@ var MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER = {
|
|
|
2083
2136
|
// docs.kie.ai/market/qwen/image-edit
|
|
2084
2137
|
// verified == 5000 default (no entry needed): imagen4(-fast/-ultra), nano-banana,
|
|
2085
2138
|
// nano-banana-edit, flux, flux-flex, gpt-image-2, ideogram-v3/-edit/-remix,
|
|
2086
|
-
// z-image, grok, qwen-i2i
|
|
2139
|
+
// z-image, grok, qwen-i2i, seedream-5-pro, seedream-5-pro-i2i
|
|
2140
|
+
// (docs.kie.ai/market/seedream/5-pro-text-to-image + 5-pro-image-to-image).
|
|
2087
2141
|
// grok-i2i: doc states 390000 (78× its t2i sibling) — treated as a KIE schema
|
|
2088
2142
|
// typo and left at the 5000 default per the sanity-cap decision.
|
|
2089
2143
|
// UNVERIFIED (no limit stated in schema) → 5000 default: flux-kontext(-max)
|
|
@@ -2095,6 +2149,7 @@ function getMaxImagePromptChars(provider) {
|
|
|
2095
2149
|
var VIDEO_PROMPT_MAX = 8e3;
|
|
2096
2150
|
var SUNO_TEXT_MAX = 5e3;
|
|
2097
2151
|
var PROMPT_HARD_CEILING = 2e4;
|
|
2152
|
+
var LLM_TEXT_INPUT_MAX = 1e5;
|
|
2098
2153
|
var MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER = {
|
|
2099
2154
|
// Kling family — our `kling`→kling-2.6 (1000), `kling-turbo`→v2.5-turbo-pro (2500)
|
|
2100
2155
|
"kling": 1e3,
|
|
@@ -2233,6 +2288,7 @@ var MODELS_WITH_REFERENCE_IMAGE_SUPPORT = /* @__PURE__ */ new Set([
|
|
|
2233
2288
|
"nano-banana",
|
|
2234
2289
|
"nano-banana-pro",
|
|
2235
2290
|
"nano-banana-2",
|
|
2291
|
+
"nano-banana-2-lite",
|
|
2236
2292
|
// T2I providers that auto-route to their i2i sibling when refs are attached
|
|
2237
2293
|
"gpt-image",
|
|
2238
2294
|
"gpt-image-2",
|
|
@@ -2240,6 +2296,7 @@ var MODELS_WITH_REFERENCE_IMAGE_SUPPORT = /* @__PURE__ */ new Set([
|
|
|
2240
2296
|
"qwen",
|
|
2241
2297
|
"seedream",
|
|
2242
2298
|
"seedream-5-lite",
|
|
2299
|
+
"seedream-5-pro",
|
|
2243
2300
|
"flux",
|
|
2244
2301
|
"flux-flex",
|
|
2245
2302
|
// Image editing / image-to-image (reference = source image)
|
|
@@ -2257,6 +2314,7 @@ var MODELS_WITH_REFERENCE_IMAGE_SUPPORT = /* @__PURE__ */ new Set([
|
|
|
2257
2314
|
"qwen-edit",
|
|
2258
2315
|
"seedream-edit",
|
|
2259
2316
|
"seedream-5-lite-i2i",
|
|
2317
|
+
"seedream-5-pro-i2i",
|
|
2260
2318
|
"grok-i2i",
|
|
2261
2319
|
// Upscale / background ops (source acts as the reference)
|
|
2262
2320
|
"recraft-remove-bg",
|
|
@@ -2277,6 +2335,7 @@ var T2I_TO_I2I_VARIANT = {
|
|
|
2277
2335
|
"qwen": "qwen-i2i",
|
|
2278
2336
|
"seedream": "seedream-edit",
|
|
2279
2337
|
"seedream-5-lite": "seedream-5-lite-i2i",
|
|
2338
|
+
"seedream-5-pro": "seedream-5-pro-i2i",
|
|
2280
2339
|
"flux": "flux-pro-i2i",
|
|
2281
2340
|
"flux-flex": "flux-i2i"
|
|
2282
2341
|
};
|
|
@@ -2286,6 +2345,7 @@ var REF_IMAGE_MAX_LIMITS = {
|
|
|
2286
2345
|
"nano-banana": 8,
|
|
2287
2346
|
"nano-banana-pro": 8,
|
|
2288
2347
|
"nano-banana-2": 4,
|
|
2348
|
+
"nano-banana-2-lite": 10,
|
|
2289
2349
|
"wan-2.7": 9,
|
|
2290
2350
|
// Image-to-image (multi-source array)
|
|
2291
2351
|
"nano-banana-edit": 8,
|
|
@@ -2295,6 +2355,7 @@ var REF_IMAGE_MAX_LIMITS = {
|
|
|
2295
2355
|
"flux-pro-i2i": 4,
|
|
2296
2356
|
"seedream-edit": 16,
|
|
2297
2357
|
"seedream-5-lite-i2i": 16,
|
|
2358
|
+
"seedream-5-pro-i2i": 16,
|
|
2298
2359
|
// Single-source i2i (one input image)
|
|
2299
2360
|
"flux-kontext": 1,
|
|
2300
2361
|
"flux-kontext-max": 1,
|
|
@@ -2336,6 +2397,8 @@ var VARIABLE_PRICING_MODELS = {
|
|
|
2336
2397
|
"seedream-edit": "quality",
|
|
2337
2398
|
"seedream-5-lite": "quality",
|
|
2338
2399
|
"seedream-5-lite-i2i": "quality",
|
|
2400
|
+
"seedream-5-pro": "quality",
|
|
2401
|
+
"seedream-5-pro-i2i": "quality",
|
|
2339
2402
|
"topaz-image-upscale": "resolution",
|
|
2340
2403
|
"ideogram-edit": "rendering-speed",
|
|
2341
2404
|
"ideogram-remix": "rendering-speed",
|
|
@@ -2344,7 +2407,7 @@ var VARIABLE_PRICING_MODELS = {
|
|
|
2344
2407
|
"wan-2.7": "resolution",
|
|
2345
2408
|
"wan-2.7-pro": "resolution"
|
|
2346
2409
|
};
|
|
2347
|
-
var HIGH_QUALITY_PROVIDERS = /* @__PURE__ */ new Set(["gpt-image", "gpt-image-i2i", "seedream", "seedream-edit", "seedream-5-lite", "seedream-5-lite-i2i"]);
|
|
2410
|
+
var HIGH_QUALITY_PROVIDERS = /* @__PURE__ */ new Set(["gpt-image", "gpt-image-i2i", "seedream", "seedream-edit", "seedream-5-lite", "seedream-5-lite-i2i", "seedream-5-pro", "seedream-5-pro-i2i"]);
|
|
2348
2411
|
var TWO_K_RESOLUTION_PROVIDERS = /* @__PURE__ */ new Set(["flux", "flux-pro-i2i", "flux-flex", "flux-i2i"]);
|
|
2349
2412
|
var RESOLUTION_2K_4K_TIERED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2350
2413
|
"nano-banana-2",
|
|
@@ -2359,6 +2422,7 @@ var IMAGE_GEN_PROVIDERS = [
|
|
|
2359
2422
|
"flux",
|
|
2360
2423
|
"nano-banana-pro",
|
|
2361
2424
|
"nano-banana-2",
|
|
2425
|
+
"nano-banana-2-lite",
|
|
2362
2426
|
"grok",
|
|
2363
2427
|
"gpt-image",
|
|
2364
2428
|
"gpt-image-2",
|
|
@@ -2369,6 +2433,7 @@ var IMAGE_GEN_PROVIDERS = [
|
|
|
2369
2433
|
"qwen",
|
|
2370
2434
|
"seedream",
|
|
2371
2435
|
"seedream-5-lite",
|
|
2436
|
+
"seedream-5-pro",
|
|
2372
2437
|
"flux-flex",
|
|
2373
2438
|
"flux-kontext",
|
|
2374
2439
|
"flux-kontext-max",
|
|
@@ -2383,6 +2448,7 @@ var IMAGE_GEN_PROVIDERS = [
|
|
|
2383
2448
|
var IMAGE_I2I_PROVIDERS = [
|
|
2384
2449
|
"nano-banana",
|
|
2385
2450
|
"nano-banana-2",
|
|
2451
|
+
"nano-banana-2-lite",
|
|
2386
2452
|
"nano-banana-pro",
|
|
2387
2453
|
"grok-i2i",
|
|
2388
2454
|
"flux-i2i",
|
|
@@ -2396,6 +2462,7 @@ var IMAGE_I2I_PROVIDERS = [
|
|
|
2396
2462
|
"qwen-edit",
|
|
2397
2463
|
"seedream-edit",
|
|
2398
2464
|
"seedream-5-lite-i2i",
|
|
2465
|
+
"seedream-5-pro-i2i",
|
|
2399
2466
|
"flux-kontext",
|
|
2400
2467
|
"flux-kontext-max",
|
|
2401
2468
|
// Replicate Open (uncensored) — multi-image Kontext via Replicate
|
|
@@ -2689,10 +2756,12 @@ var IMAGE_MASK_MODE = {
|
|
|
2689
2756
|
"nano-banana": "prompt",
|
|
2690
2757
|
"nano-banana-pro": "prompt",
|
|
2691
2758
|
"nano-banana-2": "prompt",
|
|
2759
|
+
"nano-banana-2-lite": "prompt",
|
|
2692
2760
|
"gpt-image": "prompt",
|
|
2693
2761
|
"gpt-image-2": "prompt",
|
|
2694
2762
|
"seedream": "prompt",
|
|
2695
2763
|
"seedream-5-lite": "prompt",
|
|
2764
|
+
"seedream-5-pro": "prompt",
|
|
2696
2765
|
"qwen": "prompt",
|
|
2697
2766
|
"flux-kontext": "prompt",
|
|
2698
2767
|
"flux-kontext-max": "prompt",
|
|
@@ -2784,6 +2853,8 @@ var SEEDANCE_2_REF_LIMITS = {
|
|
|
2784
2853
|
videos: 3,
|
|
2785
2854
|
audio: 3
|
|
2786
2855
|
};
|
|
2856
|
+
var SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC = 1.8;
|
|
2857
|
+
var SEEDANCE_2_CONTINUATION_REF_SEC = 2;
|
|
2787
2858
|
var SEEDANCE_2_EXTEND_STITCH = {
|
|
2788
2859
|
/** Frames dropped from the END of the source clip (smart-cut FALLBACK —
|
|
2789
2860
|
* used only when the PSNR boundary matcher finds no genuine match). */
|
|
@@ -2793,10 +2864,11 @@ var SEEDANCE_2_EXTEND_STITCH = {
|
|
|
2793
2864
|
trimHeadFrames: 3,
|
|
2794
2865
|
/** Boundary audio fade length (seconds), timeline-preserving. */
|
|
2795
2866
|
audioFadeSec: 0.15,
|
|
2796
|
-
/** Seconds of the source's TAIL passed as the @video_1 reference —
|
|
2797
|
-
*
|
|
2798
|
-
*
|
|
2799
|
-
|
|
2867
|
+
/** Seconds of the source's TAIL passed as the @video_1 reference — short
|
|
2868
|
+
* keeps the model focused on continuing the boundary motion; the value is
|
|
2869
|
+
* floored by SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC (the original spike's 1s
|
|
2870
|
+
* tail is now provider-rejected). */
|
|
2871
|
+
referenceTailSeconds: SEEDANCE_2_CONTINUATION_REF_SEC
|
|
2800
2872
|
};
|
|
2801
2873
|
var SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = {
|
|
2802
2874
|
"seedance-2-fast": 15.2
|
|
@@ -4230,6 +4302,7 @@ var LLM_MODELS = [
|
|
|
4230
4302
|
kieFormat: "responses",
|
|
4231
4303
|
kieSlugOrModel: "gpt-5-4",
|
|
4232
4304
|
vendor: "openai",
|
|
4305
|
+
structuredOutputMode: "responses-json-schema",
|
|
4233
4306
|
supportsImages: true,
|
|
4234
4307
|
maxOutputTokens: 16384,
|
|
4235
4308
|
reasoningEfforts: ["low", "medium", "high"]
|
|
@@ -4242,6 +4315,7 @@ var LLM_MODELS = [
|
|
|
4242
4315
|
kieFormat: "responses",
|
|
4243
4316
|
kieSlugOrModel: "gpt-5-5",
|
|
4244
4317
|
vendor: "openai",
|
|
4318
|
+
structuredOutputMode: "responses-json-schema",
|
|
4245
4319
|
supportsImages: true,
|
|
4246
4320
|
maxOutputTokens: 16384,
|
|
4247
4321
|
reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
@@ -4255,6 +4329,7 @@ var LLM_MODELS = [
|
|
|
4255
4329
|
kieFormat: "responses",
|
|
4256
4330
|
kieSlugOrModel: "gpt-5-6-luna",
|
|
4257
4331
|
vendor: "openai",
|
|
4332
|
+
structuredOutputMode: "responses-json-schema",
|
|
4258
4333
|
supportsImages: true,
|
|
4259
4334
|
maxOutputTokens: 16384,
|
|
4260
4335
|
reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
@@ -4268,6 +4343,7 @@ var LLM_MODELS = [
|
|
|
4268
4343
|
kieFormat: "responses",
|
|
4269
4344
|
kieSlugOrModel: "gpt-5-6-terra",
|
|
4270
4345
|
vendor: "openai",
|
|
4346
|
+
structuredOutputMode: "responses-json-schema",
|
|
4271
4347
|
supportsImages: true,
|
|
4272
4348
|
maxOutputTokens: 16384,
|
|
4273
4349
|
reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
@@ -4281,6 +4357,7 @@ var LLM_MODELS = [
|
|
|
4281
4357
|
kieFormat: "responses",
|
|
4282
4358
|
kieSlugOrModel: "gpt-5-6-sol",
|
|
4283
4359
|
vendor: "openai",
|
|
4360
|
+
structuredOutputMode: "responses-json-schema",
|
|
4284
4361
|
supportsImages: true,
|
|
4285
4362
|
maxOutputTokens: 16384,
|
|
4286
4363
|
reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
|
|
@@ -4396,6 +4473,19 @@ function resolveLlmCreditId(feature, body) {
|
|
|
4396
4473
|
return buildLlmCreditIdentifier(feature, b?.llmModel, b?.reasoningEffort);
|
|
4397
4474
|
}
|
|
4398
4475
|
var VIDEO_ANALYSIS_LLM_MODELS = LLM_MODELS.filter((m) => getLlmModalityCaps(m.id).video && getLlmModalityCaps(m.id).audio).map((m) => m.id);
|
|
4476
|
+
var VIDEO_ANALYSIS_TIERS = { fast: "gemini-3-flash", pro: "gemini-3.1-pro" };
|
|
4477
|
+
var VIDEO_ANALYSIS_TIER_ORDER = ["pro", "fast"];
|
|
4478
|
+
var DEFAULT_VIDEO_ANALYSIS_TIER = "pro";
|
|
4479
|
+
var DEFAULT_VIDEO_ANALYSIS_MODEL = VIDEO_ANALYSIS_TIERS[DEFAULT_VIDEO_ANALYSIS_TIER];
|
|
4480
|
+
var VIDEO_ANALYSIS_TIER_LABELS = { fast: "Fast", pro: "Pro" };
|
|
4481
|
+
function isVideoAnalysisTier(v) {
|
|
4482
|
+
return Object.prototype.hasOwnProperty.call(VIDEO_ANALYSIS_TIERS, v);
|
|
4483
|
+
}
|
|
4484
|
+
function resolveVideoAnalysisModel(input) {
|
|
4485
|
+
if (input && isVideoAnalysisTier(input)) return VIDEO_ANALYSIS_TIERS[input];
|
|
4486
|
+
if (input && VIDEO_ANALYSIS_LLM_MODELS.includes(input)) return input;
|
|
4487
|
+
return DEFAULT_VIDEO_ANALYSIS_MODEL;
|
|
4488
|
+
}
|
|
4399
4489
|
|
|
4400
4490
|
// src/progress-curve.ts
|
|
4401
4491
|
function calculateProgress(elapsedMs, estimatedMs, exponent = 2) {
|
|
@@ -6957,6 +7047,8 @@ var QUALITY_MAP = {
|
|
|
6957
7047
|
"seedream-edit": { field: "quality", values: { low: "basic", mid: "basic", high: "high" } },
|
|
6958
7048
|
"seedream-5-lite": { field: "quality", values: { low: "basic", mid: "basic", high: "high" } },
|
|
6959
7049
|
"seedream-5-lite-i2i": { field: "quality", values: { low: "basic", mid: "basic", high: "high" } },
|
|
7050
|
+
"seedream-5-pro": { field: "quality", values: { low: "basic", mid: "basic", high: "high" } },
|
|
7051
|
+
"seedream-5-pro-i2i": { field: "quality", values: { low: "basic", mid: "basic", high: "high" } },
|
|
6960
7052
|
// Video gen — resolution-style (720p/1080p)
|
|
6961
7053
|
"veo3": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
6962
7054
|
"veo3.1": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
@@ -7006,7 +7098,8 @@ function mapAspectRatio(provider, ratio) {
|
|
|
7006
7098
|
var GENERATE_IMAGE_PROVIDER_TO_MODEL = {
|
|
7007
7099
|
"nano-banana": "gemini-2.5-flash-image",
|
|
7008
7100
|
"nano-banana-pro": "gemini-2.5-flash-image",
|
|
7009
|
-
"nano-banana-2": "gemini-2.5-flash-image"
|
|
7101
|
+
"nano-banana-2": "gemini-2.5-flash-image",
|
|
7102
|
+
"nano-banana-2-lite": "gemini-3.1-flash-lite-image"
|
|
7010
7103
|
};
|
|
7011
7104
|
function deriveLinkedFields(nodeType, value) {
|
|
7012
7105
|
if (nodeType === "generate-image") {
|
|
@@ -11921,10 +12014,9 @@ var entitySlotSchema = zod.z.object({
|
|
|
11921
12014
|
role: zod.z.string().min(1),
|
|
11922
12015
|
description: zod.z.string().min(1)
|
|
11923
12016
|
});
|
|
11924
|
-
var
|
|
11925
|
-
mode: zod.z.enum(["speech", "music", "sfx"
|
|
11926
|
-
content: zod.z.string(),
|
|
11927
|
-
// speech: verbatim quote; music/sfx: gen-ready description; silence: "" allowed
|
|
12017
|
+
var audioLayerSchema = zod.z.object({
|
|
12018
|
+
mode: zod.z.enum(["speech", "music", "sfx"]),
|
|
12019
|
+
content: zod.z.string().min(1),
|
|
11928
12020
|
voice: zod.z.string().optional()
|
|
11929
12021
|
});
|
|
11930
12022
|
var windowSceneBase = zod.z.object({
|
|
@@ -11935,7 +12027,8 @@ var windowSceneBase = zod.z.object({
|
|
|
11935
12027
|
camera: zod.z.string(),
|
|
11936
12028
|
visual: zod.z.string().min(1),
|
|
11937
12029
|
transitionOut: zod.z.enum(["cut", "fade", "wipe", "whip"]).optional(),
|
|
11938
|
-
|
|
12030
|
+
// Array of concurrent layers (music + speech + sfx together); [] = silence.
|
|
12031
|
+
audio: zod.z.array(audioLayerSchema)
|
|
11939
12032
|
});
|
|
11940
12033
|
var windowSceneSchema = windowSceneBase.refine((s) => s.endSec > s.startSec, { message: "endSec must be > startSec" });
|
|
11941
12034
|
var windowAnalysisSchema = zod.z.object({
|
|
@@ -12123,6 +12216,8 @@ exports.DEFAULT_PANEL_COUNT = DEFAULT_PANEL_COUNT;
|
|
|
12123
12216
|
exports.DEFAULT_REF_IMAGE_MAX = DEFAULT_REF_IMAGE_MAX;
|
|
12124
12217
|
exports.DEFAULT_SECTIONS = DEFAULT_SECTIONS;
|
|
12125
12218
|
exports.DEFAULT_USAGE_MODE = DEFAULT_USAGE_MODE;
|
|
12219
|
+
exports.DEFAULT_VIDEO_ANALYSIS_MODEL = DEFAULT_VIDEO_ANALYSIS_MODEL;
|
|
12220
|
+
exports.DEFAULT_VIDEO_ANALYSIS_TIER = DEFAULT_VIDEO_ANALYSIS_TIER;
|
|
12126
12221
|
exports.DEFAULT_VIDEO_CLIP_COST = DEFAULT_VIDEO_CLIP_COST;
|
|
12127
12222
|
exports.DEFAULT_VIDEO_DURATION_SEC = DEFAULT_VIDEO_DURATION_SEC;
|
|
12128
12223
|
exports.DEFAULT_VIDEO_PROVIDER = DEFAULT_VIDEO_PROVIDER;
|
|
@@ -12211,6 +12306,7 @@ exports.LLM_MODALITY_CAPS = LLM_MODALITY_CAPS;
|
|
|
12211
12306
|
exports.LLM_MODELS = LLM_MODELS;
|
|
12212
12307
|
exports.LLM_MODEL_IDS = LLM_MODEL_IDS;
|
|
12213
12308
|
exports.LLM_REASONING_EFFORTS = LLM_REASONING_EFFORTS;
|
|
12309
|
+
exports.LLM_TEXT_INPUT_MAX = LLM_TEXT_INPUT_MAX;
|
|
12214
12310
|
exports.LOCATION_ASSET_TYPES = LOCATION_ASSET_TYPES;
|
|
12215
12311
|
exports.LOCATION_ASSET_VARIANTS = LOCATION_ASSET_VARIANTS;
|
|
12216
12312
|
exports.LOCATION_ATMOSPHERE_PROVIDERS = LOCATION_ATMOSPHERE_PROVIDERS;
|
|
@@ -12324,9 +12420,11 @@ exports.SCRIPT_PROVIDERS = SCRIPT_PROVIDERS;
|
|
|
12324
12420
|
exports.SEASONS = SEASONS;
|
|
12325
12421
|
exports.SECTION_BOARD = SECTION_BOARD;
|
|
12326
12422
|
exports.SECTION_KINDS = SECTION_KINDS;
|
|
12423
|
+
exports.SEEDANCE_2_CONTINUATION_REF_SEC = SEEDANCE_2_CONTINUATION_REF_SEC;
|
|
12327
12424
|
exports.SEEDANCE_2_EXTEND_STITCH = SEEDANCE_2_EXTEND_STITCH;
|
|
12328
12425
|
exports.SEEDANCE_2_PROVIDERS = SEEDANCE_2_PROVIDERS;
|
|
12329
12426
|
exports.SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER;
|
|
12427
|
+
exports.SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC = SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC;
|
|
12330
12428
|
exports.SEEDANCE_2_REF_LIMITS = SEEDANCE_2_REF_LIMITS;
|
|
12331
12429
|
exports.SEEDANCE_LIP_SYNC_PROVIDERS = SEEDANCE_LIP_SYNC_PROVIDERS;
|
|
12332
12430
|
exports.SEED_SUPPORT = SEED_SUPPORT;
|
|
@@ -12394,6 +12492,9 @@ exports.VIDEO_ANALYSIS_ENTITY_SOURCES = VIDEO_ANALYSIS_ENTITY_SOURCES;
|
|
|
12394
12492
|
exports.VIDEO_ANALYSIS_LLM_MODELS = VIDEO_ANALYSIS_LLM_MODELS;
|
|
12395
12493
|
exports.VIDEO_ANALYSIS_MAX_DURATION_SEC = VIDEO_ANALYSIS_MAX_DURATION_SEC;
|
|
12396
12494
|
exports.VIDEO_ANALYSIS_MAX_SCENE_SEC = VIDEO_ANALYSIS_MAX_SCENE_SEC;
|
|
12495
|
+
exports.VIDEO_ANALYSIS_TIERS = VIDEO_ANALYSIS_TIERS;
|
|
12496
|
+
exports.VIDEO_ANALYSIS_TIER_LABELS = VIDEO_ANALYSIS_TIER_LABELS;
|
|
12497
|
+
exports.VIDEO_ANALYSIS_TIER_ORDER = VIDEO_ANALYSIS_TIER_ORDER;
|
|
12397
12498
|
exports.VIDEO_ANALYSIS_WINDOW = VIDEO_ANALYSIS_WINDOW;
|
|
12398
12499
|
exports.VIDEO_AUDIO_CAPABILITY = VIDEO_AUDIO_CAPABILITY;
|
|
12399
12500
|
exports.VIDEO_CLIP_CREDITS = VIDEO_CLIP_CREDITS;
|
|
@@ -12588,6 +12689,7 @@ exports.isSeedance2Provider = isSeedance2Provider;
|
|
|
12588
12689
|
exports.isTiltDirection = isTiltDirection;
|
|
12589
12690
|
exports.isUsageMode = isUsageMode;
|
|
12590
12691
|
exports.isVeoProvider = isVeoProvider;
|
|
12692
|
+
exports.isVideoAnalysisTier = isVideoAnalysisTier;
|
|
12591
12693
|
exports.jsonResultToList = jsonResultToList;
|
|
12592
12694
|
exports.listBoardTemplates = listBoardTemplates;
|
|
12593
12695
|
exports.listModels = listModels;
|
|
@@ -12665,6 +12767,7 @@ exports.resolveSeparator = resolveSeparator;
|
|
|
12665
12767
|
exports.resolveSheetSections = resolveSheetSections;
|
|
12666
12768
|
exports.resolveSourceThroughConnectedList = resolveSourceThroughConnectedList;
|
|
12667
12769
|
exports.resolveSwitchXCreditId = resolveSwitchXCreditId;
|
|
12770
|
+
exports.resolveVideoAnalysisModel = resolveVideoAnalysisModel;
|
|
12668
12771
|
exports.resolveVideoProviderForMode = resolveVideoProviderForMode;
|
|
12669
12772
|
exports.resolveXfadeName = resolveXfadeName;
|
|
12670
12773
|
exports.rewriteSlotTokens = rewriteSlotTokens;
|