@nodaro/shared 2.5.0 → 2.7.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 +138 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +169 -19
- package/dist/index.d.ts +169 -19
- package/dist/index.js +133 -23
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/entity-image-handle.test.ts +33 -1
- package/src/__tests__/group-aggregation.test.ts +39 -0
- package/src/__tests__/infer-music-video.test.ts +76 -0
- package/src/__tests__/llm-models.test.ts +3 -2
- package/src/__tests__/seedance-2-5-catalog.test.ts +16 -8
- package/src/entity-image-handle.ts +37 -3
- package/src/group-aggregation.ts +32 -0
- package/src/index.ts +2 -0
- package/src/llm-models.ts +5 -0
- package/src/model-catalog.ts +48 -3
- package/src/model-constants.ts +23 -0
- package/src/node-default-mappings.ts +3 -2
- package/src/reduce-strategy-registry.ts +31 -13
- package/src/video-analysis.ts +70 -0
package/dist/index.cjs
CHANGED
|
@@ -729,6 +729,44 @@ var IMAGE_MODELS = {
|
|
|
729
729
|
useCases: ["upscale"],
|
|
730
730
|
pricing: [{ identifier: "grok-upscale", credits: 25 }]
|
|
731
731
|
},
|
|
732
|
+
// Grok Imagine Image 2.0 — t2i plus task-chained region editing. The edit
|
|
733
|
+
// and segment-map endpoints take a PRIOR grok-2 generation's task id (the
|
|
734
|
+
// job's `kieTaskId` output), not an image URL — same contract as
|
|
735
|
+
// grok-upscale (see TASK_CHAINED_EDIT_PROVIDERS in model-constants).
|
|
736
|
+
"grok-2": {
|
|
737
|
+
id: "grok-2",
|
|
738
|
+
kind: "image",
|
|
739
|
+
modes: ["t2i"],
|
|
740
|
+
family: "xAI",
|
|
741
|
+
label: "Grok Imagine 2",
|
|
742
|
+
series: "Grok",
|
|
743
|
+
description: "Grok Imagine Image 2.0 \u2014 expressive, high-contrast t2i. Generations chain into grok-2-segment (free named region masks) and grok-2-edit (region-targeted edits).",
|
|
744
|
+
useCases: ["stylized", "expressive", "general"],
|
|
745
|
+
aspectRatios: GROK_RATIOS,
|
|
746
|
+
pricing: [{ identifier: "grok-2", credits: 10 }]
|
|
747
|
+
},
|
|
748
|
+
"grok-2-edit": {
|
|
749
|
+
id: "grok-2-edit",
|
|
750
|
+
kind: "image",
|
|
751
|
+
modes: ["edit"],
|
|
752
|
+
family: "xAI",
|
|
753
|
+
label: "Grok Imagine 2 Edit",
|
|
754
|
+
series: "Grok",
|
|
755
|
+
description: "Prompt-edit a prior grok-2 generation by task id. Optional mask indexes (from grok-2-segment) restrict the edit to named regions.",
|
|
756
|
+
useCases: ["edit", "region-edit"],
|
|
757
|
+
pricing: [{ identifier: "grok-2-edit", credits: 10 }]
|
|
758
|
+
},
|
|
759
|
+
"grok-2-segment": {
|
|
760
|
+
id: "grok-2-segment",
|
|
761
|
+
kind: "image",
|
|
762
|
+
modes: ["edit"],
|
|
763
|
+
family: "xAI",
|
|
764
|
+
label: "Grok Imagine 2 Segment Map",
|
|
765
|
+
series: "Grok",
|
|
766
|
+
description: "FREE semantic segment map of a prior grok-2 generation \u2014 named region masks whose indexes feed grok-2-edit's region targeting.",
|
|
767
|
+
useCases: ["segmentation", "region-edit"],
|
|
768
|
+
pricing: [{ identifier: "grok-2-segment", credits: 0, note: "free" }]
|
|
769
|
+
},
|
|
732
770
|
// ── Utilities ──
|
|
733
771
|
"recraft-remove-bg": {
|
|
734
772
|
id: "recraft-remove-bg",
|
|
@@ -1203,7 +1241,8 @@ var VIDEO_MODELS = {
|
|
|
1203
1241
|
},
|
|
1204
1242
|
// Seedance 2.5 — the next Seedance generation, not a tier of the 2.0 ladder.
|
|
1205
1243
|
// Two levers differ from every 2.0 SKU and drive its own entries throughout:
|
|
1206
|
-
// durations run to 30s (2.0 caps at 15s) and there is NO
|
|
1244
|
+
// durations run to 30s (2.0 caps at 15s) and there is NO 4K tier (1080p
|
|
1245
|
+
// arrived on KIE 2026-08-17 — probe-verified; 4k/2k/1440p still rejected).
|
|
1207
1246
|
// Reference caps are also wider (30 images / 10 videos / 10 audio) — see
|
|
1208
1247
|
// SEEDANCE_2_5_REF_LIMITS in model-constants.
|
|
1209
1248
|
"seedance-2-5": {
|
|
@@ -1213,20 +1252,23 @@ var VIDEO_MODELS = {
|
|
|
1213
1252
|
family: "Bytedance",
|
|
1214
1253
|
label: "Seedance 2.5",
|
|
1215
1254
|
series: "Seedance",
|
|
1216
|
-
description: "Seedance 2.5 \u2014 up to 30s in one shot, native audio, wide multimodal references. 480p/720p.",
|
|
1255
|
+
description: "Seedance 2.5 \u2014 up to 30s in one shot, native audio, wide multimodal references. 480p/720p/1080p.",
|
|
1217
1256
|
useCases: ["premium", "narrative", "long-form"],
|
|
1218
1257
|
features: ["end-frame", "audio", "reference-image", "video-reference"],
|
|
1219
1258
|
aspectRatios: VIDEO_RATIOS_SEEDANCE_2,
|
|
1220
1259
|
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],
|
|
1221
|
-
resolutions: ["480p", "720p"],
|
|
1260
|
+
resolutions: ["480p", "720p", "1080p"],
|
|
1222
1261
|
pricing: [
|
|
1223
1262
|
{ identifier: "seedance-2-5", credits: 1260, note: "default 8s 720p \u2014 see :Ns:res variants for exact" },
|
|
1224
1263
|
{ identifier: "seedance-2-5:8s:480p", credits: 560, note: "8s 480p" },
|
|
1225
1264
|
{ identifier: "seedance-2-5:8s:720p", credits: 1260, note: "8s 720p" },
|
|
1265
|
+
{ identifier: "seedance-2-5:8s:1080p", credits: 2280, note: "8s 1080p" },
|
|
1226
1266
|
{ identifier: "seedance-2-5:8s:480p-ref", credits: 340, note: "8s 480p with reference video" },
|
|
1227
1267
|
{ identifier: "seedance-2-5:8s:720p-ref", credits: 760, note: "8s 720p with reference video" },
|
|
1268
|
+
{ identifier: "seedance-2-5:8s:1080p-ref", credits: 1370, note: "8s 1080p with reference video" },
|
|
1228
1269
|
{ identifier: "seedance-2-5:30s:480p", credits: 2100, note: "30s 480p (max)" },
|
|
1229
|
-
{ identifier: "seedance-2-5:30s:720p", credits: 4730, note: "30s 720p (max)" }
|
|
1270
|
+
{ identifier: "seedance-2-5:30s:720p", credits: 4730, note: "30s 720p (max)" },
|
|
1271
|
+
{ identifier: "seedance-2-5:30s:1080p", credits: 8550, note: "30s 1080p (max)" }
|
|
1230
1272
|
]
|
|
1231
1273
|
},
|
|
1232
1274
|
// ── Wan ──
|
|
@@ -2688,6 +2730,7 @@ var IMAGE_GEN_PROVIDERS = [
|
|
|
2688
2730
|
"nano-banana-2",
|
|
2689
2731
|
"nano-banana-2-lite",
|
|
2690
2732
|
"grok",
|
|
2733
|
+
"grok-2",
|
|
2691
2734
|
"gpt-image",
|
|
2692
2735
|
"gpt-image-2",
|
|
2693
2736
|
"imagen4",
|
|
@@ -2748,8 +2791,19 @@ var IMAGE_EDIT_PROVIDERS = [
|
|
|
2748
2791
|
"topaz-image-upscale",
|
|
2749
2792
|
// grok-upscale takes a prior Grok generation's task_id (NOT an image URL) —
|
|
2750
2793
|
// see edit-image route for the taskId-vs-imageUrl branching.
|
|
2751
|
-
"grok-upscale"
|
|
2794
|
+
"grok-upscale",
|
|
2795
|
+
// Grok Imagine 2 task-chained ops — same task_id contract as grok-upscale.
|
|
2796
|
+
// grok-2-edit: prompt edit of a prior grok-2 generation, optionally region-
|
|
2797
|
+
// targeted via mask indexes from grok-2-segment. grok-2-segment: FREE named
|
|
2798
|
+
// segment-mask map of a prior grok-2 generation.
|
|
2799
|
+
"grok-2-edit",
|
|
2800
|
+
"grok-2-segment"
|
|
2752
2801
|
];
|
|
2802
|
+
var TASK_CHAINED_EDIT_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2803
|
+
"grok-upscale",
|
|
2804
|
+
"grok-2-edit",
|
|
2805
|
+
"grok-2-segment"
|
|
2806
|
+
]);
|
|
2753
2807
|
var MODIFY_IMAGE_PROVIDERS = [
|
|
2754
2808
|
...IMAGE_I2I_PROVIDERS,
|
|
2755
2809
|
"nano-banana-edit"
|
|
@@ -3048,6 +3102,7 @@ var IMAGE_MASK_MODE = {
|
|
|
3048
3102
|
"flux": "composite",
|
|
3049
3103
|
"flux-flex": "composite",
|
|
3050
3104
|
"grok": "composite",
|
|
3105
|
+
"grok-2": "composite",
|
|
3051
3106
|
"imagen4": "composite",
|
|
3052
3107
|
"imagen4-fast": "composite",
|
|
3053
3108
|
"imagen4-ultra": "composite",
|
|
@@ -4698,6 +4753,16 @@ function buildChildrenByParent(nodes) {
|
|
|
4698
4753
|
function isCollectInEdge(e) {
|
|
4699
4754
|
return (e.targetHandle ?? COLLECT_IN_HANDLE) === COLLECT_IN_HANDLE;
|
|
4700
4755
|
}
|
|
4756
|
+
function computeAggregateLanes(nodeId, wiredTypes, buckets, edges) {
|
|
4757
|
+
const present = new Set(wiredTypes);
|
|
4758
|
+
for (const t2 of presentTypes(buckets)) present.add(t2);
|
|
4759
|
+
for (const e of edges) {
|
|
4760
|
+
if (e.source !== nodeId) continue;
|
|
4761
|
+
const lane = parseGroupHandle(e.sourceHandle);
|
|
4762
|
+
if (lane) present.add(lane);
|
|
4763
|
+
}
|
|
4764
|
+
return AGGREGATEABLE_TYPES.filter((t2) => present.has(t2));
|
|
4765
|
+
}
|
|
4701
4766
|
|
|
4702
4767
|
// src/llm-models.ts
|
|
4703
4768
|
var LLM_REASONING_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
@@ -5009,7 +5074,8 @@ var LLM_FEATURE_DEFAULTS = {
|
|
|
5009
5074
|
"qa-check": "gemini-3.6-flash",
|
|
5010
5075
|
"generate-script": "gemini-3.6-flash",
|
|
5011
5076
|
"translate": "gemini-3.6-flash",
|
|
5012
|
-
"image-critic": "claude-sonnet-4.6"
|
|
5077
|
+
"image-critic": "claude-sonnet-4.6",
|
|
5078
|
+
"pick-best-llm": "claude-sonnet-4.6"
|
|
5013
5079
|
};
|
|
5014
5080
|
var LLM_MODALITY_CAPS = {
|
|
5015
5081
|
"gemini-3-flash": { image: true, video: true, audio: true },
|
|
@@ -7753,8 +7819,9 @@ var QUALITY_MAP = {
|
|
|
7753
7819
|
"seedance-2": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7754
7820
|
"seedance-2-fast": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7755
7821
|
"seedance-2-mini": { field: "resolution", values: { low: "480p", mid: "720p", high: "720p" } },
|
|
7756
|
-
// Seedance 2.5
|
|
7757
|
-
|
|
7822
|
+
// Seedance 2.5 spans 480p/720p/1080p on KIE (1080p accepted since the
|
|
7823
|
+
// 2026-08-17 re-probe; 4k still rejected), so each quality rung gets its own tier.
|
|
7824
|
+
"seedance-2-5": { field: "resolution", values: { low: "480p", mid: "720p", high: "1080p" } },
|
|
7758
7825
|
"wan-2.7-i2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7759
7826
|
"wan-2.7-t2v": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
7760
7827
|
"happyhorse": { field: "resolution", values: { low: "720p", mid: "1080p", high: "1080p" } },
|
|
@@ -11222,24 +11289,31 @@ function selectLoraRoutingForMentions(refs) {
|
|
|
11222
11289
|
}
|
|
11223
11290
|
var PICK_BEST_LLM_STRATEGY = {
|
|
11224
11291
|
id: "pick-best-llm",
|
|
11225
|
-
label: "
|
|
11226
|
-
description: "
|
|
11292
|
+
label: "AI picks the best",
|
|
11293
|
+
description: "AI compares every candidate against your criteria and picks one.",
|
|
11227
11294
|
configSchema: zod.z.object({
|
|
11228
11295
|
// Default to the sensible "best quality" criteria when omitted (matches
|
|
11229
11296
|
// defaultConfig) so a reduce({strategyId:"pick-best-llm"}) call with no
|
|
11230
11297
|
// criteria degrades gracefully instead of erroring. An explicit "" still
|
|
11231
11298
|
// rejects via min(1).
|
|
11232
11299
|
criteria: zod.z.string().min(1, "criteria cannot be empty").default("Pick the highest-quality result."),
|
|
11233
|
-
inputKind: zod.z.enum(["text", "image-url"]).default("text")
|
|
11300
|
+
inputKind: zod.z.enum(["text", "image-url"]).default("text"),
|
|
11301
|
+
// The judge model, like every other LLM node (llmModel + LlmModelSelect).
|
|
11302
|
+
// Optional: omitted → LLM_FEATURE_DEFAULTS["pick-best-llm"]. Validated
|
|
11303
|
+
// against LLM_MODEL_IDS at the route (the registry can't import the model
|
|
11304
|
+
// list without a cycle), and its tier drives the credit price via
|
|
11305
|
+
// buildLlmCreditIdentifier — economy / standard / premium.
|
|
11306
|
+
llmModel: zod.z.string().optional()
|
|
11234
11307
|
}),
|
|
11235
11308
|
defaultConfig: { criteria: "Pick the highest-quality result.", inputKind: "text" },
|
|
11236
11309
|
outputType: "text",
|
|
11237
|
-
creditCostKey: "reduce:pick-best-llm"
|
|
11310
|
+
creditCostKey: "reduce:pick-best-llm",
|
|
11311
|
+
usesLlm: true
|
|
11238
11312
|
};
|
|
11239
11313
|
var CONCAT_STRATEGY = {
|
|
11240
11314
|
id: "concat",
|
|
11241
|
-
label: "
|
|
11242
|
-
description: "
|
|
11315
|
+
label: "Join into one text",
|
|
11316
|
+
description: "Puts every candidate into a single text, one after another, with a separator between them.",
|
|
11243
11317
|
configSchema: zod.z.object({ separator: zod.z.string().default("\n\n") }),
|
|
11244
11318
|
defaultConfig: { separator: "\n\n" },
|
|
11245
11319
|
outputType: "text",
|
|
@@ -11247,8 +11321,8 @@ var CONCAT_STRATEGY = {
|
|
|
11247
11321
|
};
|
|
11248
11322
|
var FIRST_NON_EMPTY_STRATEGY = {
|
|
11249
11323
|
id: "first-non-empty",
|
|
11250
|
-
label: "First
|
|
11251
|
-
description: "
|
|
11324
|
+
label: "First that has content",
|
|
11325
|
+
description: "Takes the first candidate that is not empty and ignores the rest.",
|
|
11252
11326
|
configSchema: zod.z.object({}),
|
|
11253
11327
|
defaultConfig: {},
|
|
11254
11328
|
outputType: "text",
|
|
@@ -11256,8 +11330,8 @@ var FIRST_NON_EMPTY_STRATEGY = {
|
|
|
11256
11330
|
};
|
|
11257
11331
|
var COUNT_STRATEGY = {
|
|
11258
11332
|
id: "count",
|
|
11259
|
-
label: "Count",
|
|
11260
|
-
description: "
|
|
11333
|
+
label: "Count them",
|
|
11334
|
+
description: "Outputs how many candidates arrived.",
|
|
11261
11335
|
configSchema: zod.z.object({}),
|
|
11262
11336
|
defaultConfig: {},
|
|
11263
11337
|
outputType: "data",
|
|
@@ -11265,8 +11339,8 @@ var COUNT_STRATEGY = {
|
|
|
11265
11339
|
};
|
|
11266
11340
|
var VOTE_STRATEGY = {
|
|
11267
11341
|
id: "vote",
|
|
11268
|
-
label: "
|
|
11269
|
-
description: "
|
|
11342
|
+
label: "Most common answer",
|
|
11343
|
+
description: "Picks the candidate that appears most often (ties go to the first).",
|
|
11270
11344
|
configSchema: zod.z.object({ caseSensitive: zod.z.boolean().default(false) }),
|
|
11271
11345
|
defaultConfig: { caseSensitive: false },
|
|
11272
11346
|
outputType: "text",
|
|
@@ -11274,8 +11348,8 @@ var VOTE_STRATEGY = {
|
|
|
11274
11348
|
};
|
|
11275
11349
|
var MERGE_JSON_STRATEGY = {
|
|
11276
11350
|
id: "merge-json",
|
|
11277
|
-
label: "Merge JSON",
|
|
11278
|
-
description: "
|
|
11351
|
+
label: "Merge JSON objects",
|
|
11352
|
+
description: "Reads every candidate as JSON and merges them into one object.",
|
|
11279
11353
|
configSchema: zod.z.object({ strategy: zod.z.enum(["deep", "shallow"]).default("deep") }),
|
|
11280
11354
|
defaultConfig: { strategy: "deep" },
|
|
11281
11355
|
outputType: "data",
|
|
@@ -12700,10 +12774,21 @@ var ENTITY_IMAGE_HANDLE_TYPES = /* @__PURE__ */ new Set([
|
|
|
12700
12774
|
"object",
|
|
12701
12775
|
"creature"
|
|
12702
12776
|
]);
|
|
12777
|
+
var AGGREGATE_LANE_SOURCE_TYPES = /* @__PURE__ */ new Set(["group", "collect"]);
|
|
12778
|
+
var AGGREGATE_LANE_EFFECTIVE_TYPE = {
|
|
12779
|
+
"out-image": "upload-image",
|
|
12780
|
+
"out-video": "upload-video",
|
|
12781
|
+
"out-audio": "upload-audio",
|
|
12782
|
+
"out-text": "list"
|
|
12783
|
+
};
|
|
12703
12784
|
function resolveEffectiveSourceType(rawSourceType, sourceHandleId) {
|
|
12704
12785
|
if (sourceHandleId === "image" && ENTITY_IMAGE_HANDLE_TYPES.has(rawSourceType ?? "")) {
|
|
12705
12786
|
return "upload-image";
|
|
12706
12787
|
}
|
|
12788
|
+
if (AGGREGATE_LANE_SOURCE_TYPES.has(rawSourceType ?? "")) {
|
|
12789
|
+
const effective = AGGREGATE_LANE_EFFECTIVE_TYPE[sourceHandleId ?? ""];
|
|
12790
|
+
if (effective) return effective;
|
|
12791
|
+
}
|
|
12707
12792
|
return rawSourceType ?? "";
|
|
12708
12793
|
}
|
|
12709
12794
|
function sourceRefKey(nodeId, sourceHandleId, rawSourceType) {
|
|
@@ -12788,6 +12873,8 @@ var VIDEO_ANALYSIS_VISUAL_EFFECTS = [
|
|
|
12788
12873
|
];
|
|
12789
12874
|
var VIDEO_ANALYSIS_TRANSITIONS = ["cut", "fade", "dissolve", "wipe", "whip"];
|
|
12790
12875
|
var VIDEO_ANALYSIS_SPEED_EFFECTS = ["slow-motion", "ramp-in", "ramp-out", "timelapse", "freeze", "reverse"];
|
|
12876
|
+
var VIDEO_ANALYSIS_TIMES_OF_DAY = ["dawn", "day", "dusk", "night", "ambiguous"];
|
|
12877
|
+
var VIDEO_ANALYSIS_STORY_JUMPS = ["continuous", "same-day", "another-day", "years-later", "unclear"];
|
|
12791
12878
|
var clipLookSchema = zod.z.object({
|
|
12792
12879
|
/**
|
|
12793
12880
|
* The rendering MEDIUM — "live-action photoreal", "2D anime", "stop-motion
|
|
@@ -12912,6 +12999,12 @@ var windowSceneBase = zod.z.object({
|
|
|
12912
12999
|
angle: zod.z.enum(VIDEO_ANALYSIS_SHOT_ANGLES).optional(),
|
|
12913
13000
|
/** Time manipulation. Absent ⇒ normal speed. */
|
|
12914
13001
|
speed: zod.z.enum(VIDEO_ANALYSIS_SPEED_EFFECTS).optional(),
|
|
13002
|
+
/** CHRONICLE TIME (2026-08-17) — see the consts' docstrings. Both optional:
|
|
13003
|
+
* absent on every pre-2.6.0 analysis, and legitimately absent when the
|
|
13004
|
+
* analyser cannot read the clock. Enum + optional keeps the window decode
|
|
13005
|
+
* grammar congruence-safe (no ints, no maxItems). */
|
|
13006
|
+
timeOfDay: zod.z.enum(VIDEO_ANALYSIS_TIMES_OF_DAY).optional(),
|
|
13007
|
+
storyJump: zod.z.enum(VIDEO_ANALYSIS_STORY_JUMPS).optional(),
|
|
12915
13008
|
visual: zod.z.string().min(1),
|
|
12916
13009
|
/**
|
|
12917
13010
|
* Text burned into the PICTURE of this shot — titles, captions, lower-thirds,
|
|
@@ -13079,6 +13172,23 @@ function aspectRatioFromDims(w, h) {
|
|
|
13079
13172
|
const g = gcd(Math.round(w), Math.round(h));
|
|
13080
13173
|
return `${Math.round(w) / g}:${Math.round(h) / g}`;
|
|
13081
13174
|
}
|
|
13175
|
+
var MUSIC_VOCAL_RE = /\b(?:lyrics?|sung|sings?|singing|vocals?|chorus|verse|rap(?:ping|ped)?|a cappella)\b/i;
|
|
13176
|
+
var MUSIC_VOCAL_QUOTE_RE = /["\u201c][^"\u201d]{6,}["\u201d]/;
|
|
13177
|
+
var MUSIC_NO_VOCAL_RE = /\b(?:no|without|non)[- ](?:vocals?|lyrics?|singing)\b|\binstrumental\b|\bwordless\b/i;
|
|
13178
|
+
function inferMusicVideo(analysis) {
|
|
13179
|
+
const scenes = analysis?.scenes ?? [];
|
|
13180
|
+
if (scenes.length < 4) return false;
|
|
13181
|
+
const musicLayers = (sc) => (sc.audio ?? []).filter((a) => a?.mode === "music");
|
|
13182
|
+
const withMusic = scenes.filter((sc) => musicLayers(sc).length > 0).length;
|
|
13183
|
+
if (withMusic / scenes.length < 0.8) return false;
|
|
13184
|
+
return scenes.some(
|
|
13185
|
+
(sc) => musicLayers(sc).some((a) => {
|
|
13186
|
+
const content = typeof a.content === "string" ? a.content : "";
|
|
13187
|
+
if (MUSIC_NO_VOCAL_RE.test(content)) return false;
|
|
13188
|
+
return MUSIC_VOCAL_RE.test(content) || MUSIC_VOCAL_QUOTE_RE.test(content);
|
|
13189
|
+
})
|
|
13190
|
+
);
|
|
13191
|
+
}
|
|
13082
13192
|
|
|
13083
13193
|
// src/video-analysis-pricing.ts
|
|
13084
13194
|
var VIDEO_ANALYSIS_DURATION_BUCKETS = [60, 180, 360, 600];
|
|
@@ -13181,6 +13291,7 @@ function clampSmartCutWindow(value) {
|
|
|
13181
13291
|
exports.ACTIVE_SCENE_HELPERS = ACTIVE_SCENE_HELPERS;
|
|
13182
13292
|
exports.ADVANCED_MODE_UNAVAILABLE_REASON = ADVANCED_MODE_UNAVAILABLE_REASON;
|
|
13183
13293
|
exports.AGGREGATEABLE_TYPES = AGGREGATEABLE_TYPES;
|
|
13294
|
+
exports.AGGREGATE_LANE_SOURCE_TYPES = AGGREGATE_LANE_SOURCE_TYPES;
|
|
13184
13295
|
exports.AI_AVATAR_DURATION_BUCKETS = AI_AVATAR_DURATION_BUCKETS;
|
|
13185
13296
|
exports.AI_AVATAR_MAX_AUDIO_SEC = AI_AVATAR_MAX_AUDIO_SEC;
|
|
13186
13297
|
exports.AI_AVATAR_MAX_DURATION_SEC = AI_AVATAR_MAX_DURATION_SEC;
|
|
@@ -13536,6 +13647,7 @@ exports.StoryboardCohesionCriticVerdictSchema = StoryboardCohesionCriticVerdictS
|
|
|
13536
13647
|
exports.StyleDirectivesSchema = StyleDirectivesSchema;
|
|
13537
13648
|
exports.SubGateNameSchema = SubGateNameSchema;
|
|
13538
13649
|
exports.T2I_TO_I2I_VARIANT = T2I_TO_I2I_VARIANT;
|
|
13650
|
+
exports.TASK_CHAINED_EDIT_PROVIDERS = TASK_CHAINED_EDIT_PROVIDERS;
|
|
13539
13651
|
exports.TEXT_TO_AUDIO_PROVIDERS = TEXT_TO_AUDIO_PROVIDERS;
|
|
13540
13652
|
exports.TEXT_TO_VIDEO_PROVIDERS = TEXT_TO_VIDEO_PROVIDERS;
|
|
13541
13653
|
exports.TIER_MAX_PIPELINE_COST_CREDITS = TIER_MAX_PIPELINE_COST_CREDITS;
|
|
@@ -13569,9 +13681,11 @@ exports.VIDEO_ANALYSIS_MAX_VARIATIONS = VIDEO_ANALYSIS_MAX_VARIATIONS;
|
|
|
13569
13681
|
exports.VIDEO_ANALYSIS_MIXED_TIERS = VIDEO_ANALYSIS_MIXED_TIERS;
|
|
13570
13682
|
exports.VIDEO_ANALYSIS_SHOT_ANGLES = VIDEO_ANALYSIS_SHOT_ANGLES;
|
|
13571
13683
|
exports.VIDEO_ANALYSIS_SPEED_EFFECTS = VIDEO_ANALYSIS_SPEED_EFFECTS;
|
|
13684
|
+
exports.VIDEO_ANALYSIS_STORY_JUMPS = VIDEO_ANALYSIS_STORY_JUMPS;
|
|
13572
13685
|
exports.VIDEO_ANALYSIS_TIERS = VIDEO_ANALYSIS_TIERS;
|
|
13573
13686
|
exports.VIDEO_ANALYSIS_TIER_LABELS = VIDEO_ANALYSIS_TIER_LABELS;
|
|
13574
13687
|
exports.VIDEO_ANALYSIS_TIER_ORDER = VIDEO_ANALYSIS_TIER_ORDER;
|
|
13688
|
+
exports.VIDEO_ANALYSIS_TIMES_OF_DAY = VIDEO_ANALYSIS_TIMES_OF_DAY;
|
|
13575
13689
|
exports.VIDEO_ANALYSIS_TRANSITIONS = VIDEO_ANALYSIS_TRANSITIONS;
|
|
13576
13690
|
exports.VIDEO_ANALYSIS_VARIATION_SLUGS = VIDEO_ANALYSIS_VARIATION_SLUGS;
|
|
13577
13691
|
exports.VIDEO_ANALYSIS_VISUAL_EFFECTS = VIDEO_ANALYSIS_VISUAL_EFFECTS;
|
|
@@ -13666,6 +13780,7 @@ exports.clearVideoCriticMetadata = clearVideoCriticMetadata;
|
|
|
13666
13780
|
exports.clipLookSchema = clipLookSchema;
|
|
13667
13781
|
exports.collectAncestorRefs = collectAncestorRefs;
|
|
13668
13782
|
exports.combineSameLabelRefs = combineSameLabelRefs;
|
|
13783
|
+
exports.computeAggregateLanes = computeAggregateLanes;
|
|
13669
13784
|
exports.countRefModalityEdges = countRefModalityEdges;
|
|
13670
13785
|
exports.creditRangesAll = creditRangesAll;
|
|
13671
13786
|
exports.creditsToUsd = creditsToUsd;
|
|
@@ -13765,6 +13880,7 @@ exports.hasFeature = hasFeature;
|
|
|
13765
13880
|
exports.hexToRgbaArray = hexToRgbaArray;
|
|
13766
13881
|
exports.humanizeSlotSid = humanizeSlotSid;
|
|
13767
13882
|
exports.imageReferenceLimit = imageReferenceLimit;
|
|
13883
|
+
exports.inferMusicVideo = inferMusicVideo;
|
|
13768
13884
|
exports.isAggregateableType = isAggregateableType;
|
|
13769
13885
|
exports.isCharacterAspectRatio = isCharacterAspectRatio;
|
|
13770
13886
|
exports.isCollectInEdge = isCollectInEdge;
|