@nodaro/shared 3.11.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2047 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1556 -27
- package/dist/index.d.ts +1556 -27
- package/dist/index.js +1861 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/caption-styles.test.ts +207 -0
- package/src/__tests__/edl-multicam.test.ts +304 -0
- package/src/__tests__/edl.test.ts +822 -0
- package/src/__tests__/fan-out-rows.test.ts +208 -0
- package/src/__tests__/instagram-scrape.test.ts +66 -0
- package/src/__tests__/llm-models.test.ts +48 -11
- package/src/__tests__/meta-ads-scrape.test.ts +284 -0
- package/src/__tests__/node-runtime-keys.test.ts +15 -0
- package/src/__tests__/presentation-utils.test.ts +67 -0
- package/src/__tests__/producer-types.test.ts +19 -0
- package/src/__tests__/schedule-rules.test.ts +265 -0
- package/src/__tests__/speaker-layouts.test.ts +203 -0
- package/src/__tests__/transcribe-capabilities.test.ts +104 -0
- package/src/__tests__/transcribe-preflight.test.ts +60 -0
- package/src/__tests__/trigger-feeds.test.ts +39 -0
- package/src/__tests__/video-duration-auto.test.ts +65 -0
- package/src/__tests__/video-duration.test.ts +56 -0
- package/src/__tests__/video-link.test.ts +137 -0
- package/src/__tests__/workflow-export-strip.test.ts +59 -1
- package/src/caption-styles.ts +240 -0
- package/src/credit-identifiers.ts +31 -0
- package/src/edit-plan-contract.ts +96 -0
- package/src/edl-multicam.ts +185 -0
- package/src/edl.ts +747 -0
- package/src/entity-image-handle.ts +24 -1
- package/src/fan-out-rows.ts +213 -0
- package/src/i18n/action-fx.he.ts +8 -8
- package/src/i18n/aesthetic.he.ts +8 -8
- package/src/i18n/animals.he.ts +34 -34
- package/src/i18n/atmosphere.he.ts +6 -6
- package/src/i18n/backdrop.he.ts +7 -7
- package/src/i18n/camera-format.he.ts +4 -4
- package/src/i18n/camera-motions.he.ts +20 -20
- package/src/i18n/character-fx.he.ts +16 -16
- package/src/i18n/character-motion.he.ts +184 -184
- package/src/i18n/color-look.he.ts +4 -4
- package/src/i18n/composition-effects.he.ts +3 -3
- package/src/i18n/era.he.ts +9 -9
- package/src/i18n/exposure-settings.he.ts +2 -2
- package/src/i18n/framing.he.ts +13 -13
- package/src/i18n/furniture.he.ts +52 -52
- package/src/i18n/held-prop.he.ts +10 -10
- package/src/i18n/instrumentation.he.ts +26 -26
- package/src/i18n/lens.he.ts +6 -6
- package/src/i18n/lighting.he.ts +17 -17
- package/src/i18n/loop-subject.he.ts +4 -4
- package/src/i18n/materials.he.ts +8 -8
- package/src/i18n/mood.he.ts +12 -12
- package/src/i18n/music-genre.he.ts +9 -9
- package/src/i18n/music-mood.he.ts +7 -7
- package/src/i18n/person.he.ts +94 -94
- package/src/i18n/photo-genre.he.ts +24 -24
- package/src/i18n/photographer.he.ts +21 -21
- package/src/i18n/pose.he.ts +14 -14
- package/src/i18n/post-process-effects.he.ts +4 -4
- package/src/i18n/render-quality.he.ts +7 -7
- package/src/i18n/setting.he.ts +14 -14
- package/src/i18n/style.he.ts +9 -9
- package/src/i18n/styling.he.ts +126 -126
- package/src/i18n/temporal.he.ts +8 -8
- package/src/i18n/transitions.he.ts +9 -9
- package/src/i18n/vehicles.he.ts +25 -25
- package/src/i18n/voice-character.he.ts +14 -14
- package/src/i18n/voice-delivery.he.ts +11 -11
- package/src/i18n/weapons.he.ts +23 -23
- package/src/index.ts +206 -3
- package/src/instagram-scrape.ts +204 -0
- package/src/llm-models.ts +80 -3
- package/src/meta-ads-scrape.ts +463 -0
- package/src/model-catalog.ts +48 -5
- package/src/model-constants.ts +148 -5
- package/src/node-mappable-fields.ts +2 -0
- package/src/node-runtime-keys.ts +28 -0
- package/src/presentation-utils.ts +49 -0
- package/src/producer-types.ts +20 -0
- package/src/schedule-rules.ts +484 -0
- package/src/speaker-layouts.ts +220 -0
- package/src/transcribe-preflight.ts +101 -0
- package/src/trigger-feeds.ts +59 -0
- package/src/trigger-node-types.ts +20 -0
- package/src/video-duration-auto.ts +18 -0
- package/src/video-duration.ts +32 -0
- package/src/video-link.ts +167 -0
- package/src/workflow-export.ts +37 -1
package/dist/index.d.ts
CHANGED
|
@@ -954,6 +954,38 @@ declare const VIDEO_GEN_COLLAPSED_T2V_IDS: ReadonlySet<string>;
|
|
|
954
954
|
/** Video-to-video providers */
|
|
955
955
|
declare const VIDEO_TO_VIDEO_PROVIDERS: readonly ["wan", "wan-flash", "wan-videoedit", "luma-modify", "runway-aleph", "happyhorse-edit"];
|
|
956
956
|
type VideoToVideoProvider = typeof VIDEO_TO_VIDEO_PROVIDERS[number];
|
|
957
|
+
/**
|
|
958
|
+
* Seedance models the Video to Video NODE offers as a whole-clip, prompt-driven
|
|
959
|
+
* EDIT ("make it black and white", "she wears @image_1").
|
|
960
|
+
*
|
|
961
|
+
* These are deliberately NOT members of {@link VIDEO_TO_VIDEO_PROVIDERS} (the
|
|
962
|
+
* `/v1/video-to-video` route's own enum): Seedance has no separate edit
|
|
963
|
+
* endpoint — it edits a REFERENCE video when the prompt reads as an edit. So
|
|
964
|
+
* every surface (single-node run, DAG payload builder, MCP `modify_video`)
|
|
965
|
+
* dispatches these through the ONE existing Seedance reference-video lane
|
|
966
|
+
* (`text-to-video`), with the source clip as `@video_1` and the edit shape
|
|
967
|
+
* below. Reference-clip bounds, the unit×(input+output) reservation, the
|
|
968
|
+
* measured settlement, the edit-mode retry and the reconcile recovery are that
|
|
969
|
+
* lane's — there is no second copy to keep in step.
|
|
970
|
+
*/
|
|
971
|
+
declare const SEEDANCE_VIDEO_EDIT_PROVIDERS: readonly ["seedance-2-5"];
|
|
972
|
+
type SeedanceVideoEditProvider = typeof SEEDANCE_VIDEO_EDIT_PROVIDERS[number];
|
|
973
|
+
declare function isSeedanceVideoEditProvider(provider: string | undefined): provider is SeedanceVideoEditProvider;
|
|
974
|
+
/** Every model the Video to Video node can be set to: the route's own providers
|
|
975
|
+
* plus the Seedance edit models dispatched through the text-to-video lane. */
|
|
976
|
+
declare const VIDEO_TO_VIDEO_NODE_PROVIDERS: readonly ["wan", "wan-flash", "wan-videoedit", "luma-modify", "runway-aleph", "happyhorse-edit", "seedance-2-5"];
|
|
977
|
+
type VideoToVideoNodeProvider = typeof VIDEO_TO_VIDEO_NODE_PROVIDERS[number];
|
|
978
|
+
/**
|
|
979
|
+
* The request shape Seedance edit mode requires, sent UP FRONT by the Video to
|
|
980
|
+
* Video node: the output takes the source clip's own ratio and length
|
|
981
|
+
* (`adaptive`, and Auto = `VIDEO_DURATION_AUTO`). Camel-cased twin of the KIE
|
|
982
|
+
* wire pair the provider layer resubmits with when Seedance reclassifies an
|
|
983
|
+
* ordinary run as an edit.
|
|
984
|
+
*/
|
|
985
|
+
declare const SEEDANCE_VIDEO_EDIT_SHAPE: {
|
|
986
|
+
readonly aspectRatio: "adaptive";
|
|
987
|
+
readonly duration: -1;
|
|
988
|
+
};
|
|
957
989
|
/** Face swap providers */
|
|
958
990
|
declare const FACE_SWAP_PROVIDERS: readonly ["roop"];
|
|
959
991
|
type FaceSwapProvider = typeof FACE_SWAP_PROVIDERS[number];
|
|
@@ -997,9 +1029,70 @@ type TextToAudioProvider = typeof TEXT_TO_AUDIO_PROVIDERS[number];
|
|
|
997
1029
|
/** Music generation providers */
|
|
998
1030
|
declare const MUSIC_PROVIDERS: readonly ["minimax"];
|
|
999
1031
|
type MusicProvider = typeof MUSIC_PROVIDERS[number];
|
|
1000
|
-
/**
|
|
1001
|
-
|
|
1032
|
+
/**
|
|
1033
|
+
* Transcription providers a caller may name — on `/v1/transcribe`, the SDK/CLI
|
|
1034
|
+
* and the canvas Transcribe node. All three lanes are served on cloud again
|
|
1035
|
+
* (the canvas picker re-offered the two Replicate lanes in #768 while this enum
|
|
1036
|
+
* still hid them, so a single-node Run on Whisper 400'd where the same node in a
|
|
1037
|
+
* workflow Run worked). `elevenlabs-stt` stays FIRST: several call sites take
|
|
1038
|
+
* "the first enabled word-capable provider" from this order.
|
|
1039
|
+
*/
|
|
1040
|
+
declare const TRANSCRIBE_PROVIDERS: readonly ["elevenlabs-stt", "whisper", "incredibly-fast-whisper"];
|
|
1002
1041
|
type TranscribeProvider = typeof TRANSCRIBE_PROVIDERS[number];
|
|
1042
|
+
/**
|
|
1043
|
+
* Every transcription LANE the platform implements. Today this is the same set
|
|
1044
|
+
* as `TRANSCRIBE_PROVIDERS`; it stays a separate name because the two answer
|
|
1045
|
+
* different questions — "what may a caller name" vs "what can run" — and they
|
|
1046
|
+
* have diverged before (the Replicate lanes were hidden from callers for months
|
|
1047
|
+
* while still reached at runtime via the route default and add-captions'
|
|
1048
|
+
* auto-transcribe). Capability questions must be asked over THIS union.
|
|
1049
|
+
*/
|
|
1050
|
+
declare const TRANSCRIBE_LANES: readonly ["whisper", "incredibly-fast-whisper", "elevenlabs-stt"];
|
|
1051
|
+
type TranscribeLane = typeof TRANSCRIBE_LANES[number];
|
|
1052
|
+
/**
|
|
1053
|
+
* What each transcription lane can actually DO. Single source of truth — never
|
|
1054
|
+
* re-derive a capability from a provider-name check.
|
|
1055
|
+
*
|
|
1056
|
+
* `wordTimestamps`: does the lane return per-word start/end times?
|
|
1057
|
+
* - `whisper` (Replicate `openai/whisper`) — NO. Its input schema has no
|
|
1058
|
+
* `word_timestamps` field in ANY published version, so Replicate silently
|
|
1059
|
+
* drops the key and the segments come back without `words`. Asking this lane
|
|
1060
|
+
* for word timings yields an empty array, never an error.
|
|
1061
|
+
* - `incredibly-fast-whisper` — yes, via `timestamp: "word"`.
|
|
1062
|
+
* - `elevenlabs-stt` (direct Scribe) — always word-level, flag or not.
|
|
1063
|
+
*/
|
|
1064
|
+
declare const TRANSCRIBE_PROVIDER_CAPABILITIES: Record<TranscribeLane, {
|
|
1065
|
+
wordTimestamps: boolean;
|
|
1066
|
+
}>;
|
|
1067
|
+
/** The lanes that can honour a word-timestamps request, in declaration order. */
|
|
1068
|
+
declare function transcribeProvidersWithWordTimestamps(): TranscribeLane[];
|
|
1069
|
+
/**
|
|
1070
|
+
* Capability question for a lane id that came from UNTRUSTED data — node data,
|
|
1071
|
+
* an imported workflow, a wire body — where the string may be anything at all.
|
|
1072
|
+
* An unknown lane answers `false`: we cannot promise word timings from a lane
|
|
1073
|
+
* we know nothing about, and "false" is always the safe answer (it suppresses
|
|
1074
|
+
* an INFERRED request, and turns an EXPLICIT one into the honest refusal in
|
|
1075
|
+
* `transcribe()` instead of a `Cannot read properties of undefined` TypeError).
|
|
1076
|
+
*/
|
|
1077
|
+
declare function transcribeLaneSupportsWordTimestamps(lane: string | null | undefined): boolean;
|
|
1078
|
+
/**
|
|
1079
|
+
* The lane an absent `provider` resolves to — the historical `/v1/transcribe`
|
|
1080
|
+
* default, kept as-is because the credit guard reserves on the provider id
|
|
1081
|
+
* (changing it would silently change what bills).
|
|
1082
|
+
*/
|
|
1083
|
+
declare const DEFAULT_TRANSCRIBE_PROVIDER: TranscribeLane;
|
|
1084
|
+
/**
|
|
1085
|
+
* The lane a transcribe NODE with no `provider` in its data resolves to —
|
|
1086
|
+
* deliberately NOT `DEFAULT_TRANSCRIBE_PROVIDER`. The route's default is the
|
|
1087
|
+
* legacy whisper lane and exists only so a pre-existing REST caller keeps
|
|
1088
|
+
* billing the same id; a node authored/imported without a provider is a fresh
|
|
1089
|
+
* request, and the canvas picker's own default is this one. Single-sourced so
|
|
1090
|
+
* the backend DAG (`payload-builder.ts`) and the frontend run
|
|
1091
|
+
* (`execute-node.ts`) cannot drift into sending different engines for the same
|
|
1092
|
+
* node — they did, and the frontend's silent whisper fallback started 400ing
|
|
1093
|
+
* once the Replicate lanes left `TRANSCRIBE_PROVIDERS`.
|
|
1094
|
+
*/
|
|
1095
|
+
declare const DEFAULT_TRANSCRIBE_NODE_PROVIDER: TranscribeLane;
|
|
1003
1096
|
/** Script generation providers */
|
|
1004
1097
|
declare const SCRIPT_PROVIDERS: readonly ["gemini", "claude", "gpt"];
|
|
1005
1098
|
type ScriptProvider = typeof SCRIPT_PROVIDERS[number];
|
|
@@ -1664,6 +1757,11 @@ declare const PRICING_DEFAULT_DURATION_SEC: Record<string, number>;
|
|
|
1664
1757
|
* closes.
|
|
1665
1758
|
*/
|
|
1666
1759
|
declare function pricedOutputDurationSec(provider: string, requested: number | string | undefined): number;
|
|
1760
|
+
/** Models that accept `VIDEO_DURATION_AUTO` — a catalog capability (docs.kie.ai:
|
|
1761
|
+
* the Seedance 2 family, "4-15 seconds or -1" / 2.5 "Special values -1"). */
|
|
1762
|
+
declare function supportsAutoVideoDuration(provider: string | undefined): boolean;
|
|
1763
|
+
/** The longest clip a duration-tiered provider can render (its top priced tier). */
|
|
1764
|
+
declare function maxVideoDurationSec(provider: string): number | undefined;
|
|
1667
1765
|
/**
|
|
1668
1766
|
* Resolution assumed for PRICING when a request names a provider but omits
|
|
1669
1767
|
* `resolution` — the resolution twin of {@link PRICING_DEFAULT_DURATION_SEC},
|
|
@@ -2168,6 +2266,14 @@ interface ModelCatalogEntry {
|
|
|
2168
2266
|
unlistedResolutionRendersAs?: string;
|
|
2169
2267
|
qualities?: readonly string[];
|
|
2170
2268
|
durations?: readonly number[];
|
|
2269
|
+
/**
|
|
2270
|
+
* The model accepts an AUTO duration (`duration: -1`, see
|
|
2271
|
+
* `VIDEO_DURATION_AUTO`): it picks the clip length itself — the source clip's
|
|
2272
|
+
* length on a video edit, a length within `durations` otherwise. A capability,
|
|
2273
|
+
* not a member of `durations` (which stay real seconds). Runs are reserved at
|
|
2274
|
+
* the longest clip and settled on the delivered one.
|
|
2275
|
+
*/
|
|
2276
|
+
autoDuration?: boolean;
|
|
2171
2277
|
pricing: readonly PriceVariant[];
|
|
2172
2278
|
/** Editorial highlight — "best in tier". Surfaces in MCP output as a ⭐. */
|
|
2173
2279
|
featured?: boolean;
|
|
@@ -2561,6 +2667,24 @@ declare function resolveImageGenCreditIdentifier(opts: {
|
|
|
2561
2667
|
swapToI2i?: boolean;
|
|
2562
2668
|
}): string;
|
|
2563
2669
|
declare function buildVideoCreditModelIdentifier(provider: string, duration?: number | string, sound?: boolean, nodeType?: "image-to-video" | "text-to-video", mode?: string, resolution?: string, hasVideoRef?: boolean): string;
|
|
2670
|
+
/**
|
|
2671
|
+
* The credit identifier a Video to Video node's Seedance EDIT lane reserves
|
|
2672
|
+
* under. Seedance has no v2v endpoint — the lane is a text-to-video job in edit
|
|
2673
|
+
* shape with the source clip as reference video 1 — so it prices on the
|
|
2674
|
+
* REFERENCE-VIDEO ladder at the model's LONGEST clip (Auto duration), and the
|
|
2675
|
+
* measured settlement refunds down to what was actually delivered.
|
|
2676
|
+
*
|
|
2677
|
+
* It exists because that is a 7-positional-argument call with four
|
|
2678
|
+
* easy-to-transpose slots, and FOUR surfaces must agree on it exactly: the
|
|
2679
|
+
* orchestrator's reservation (payload-builder.ts), the backend pre-run
|
|
2680
|
+
* estimator (ee/billing/credits.ts), the node's cost pill, and the frontend
|
|
2681
|
+
* run-level estimate (config-panels/helpers.ts). A quote that disagrees with
|
|
2682
|
+
* the reserve is the documented `price_not_configured` / blank-pill trap.
|
|
2683
|
+
*
|
|
2684
|
+
* `resolution` is the node's one `v2vResolution` field; when unset the model's
|
|
2685
|
+
* own UI fill is priced, which is what the lane will send.
|
|
2686
|
+
*/
|
|
2687
|
+
declare function seedanceVideoEditCreditId(provider: string, resolution?: string): string;
|
|
2564
2688
|
/** What the video credit identifier PRICES for a request, for the levers whose
|
|
2565
2689
|
* priced value must also be the value we SEND. */
|
|
2566
2690
|
interface PricedVideoSelection {
|
|
@@ -2780,6 +2904,18 @@ declare function imageOverlayCredits(variants: ReadonlyArray<unknown> | undefine
|
|
|
2780
2904
|
* Lives in `@nodaro/shared` so frontend (store walks) and backend
|
|
2781
2905
|
* (orchestrator input-resolver) can use one source of truth. */
|
|
2782
2906
|
declare function extractVideoDurationFromNode(data: Record<string, unknown> | undefined): number | undefined;
|
|
2907
|
+
/** Duration (seconds) of an edit-plan SOURCE node's media, for the reserve
|
|
2908
|
+
* bucket. Extends {@link extractVideoDurationFromNode} with the AUDIO lane:
|
|
2909
|
+
* `upload-audio` (and URL-imported audio) write their length to
|
|
2910
|
+
* `metadata.durationSeconds` ONLY — never `generatedResults[].duration` /
|
|
2911
|
+
* `data.duration` — so a podcast's audio master would otherwise resolve to
|
|
2912
|
+
* undefined and reserve the 180-minute ceiling (a ~6× overbill). A
|
|
2913
|
+
* `reference-audio` node records its extracted file's length in the same field,
|
|
2914
|
+
* stamped with `metadata.mediaUrl` (see the binding check below).
|
|
2915
|
+
*
|
|
2916
|
+
* Deliberately a NEW function, not a change to `extractVideoDurationFromNode`,
|
|
2917
|
+
* so no other node's duration read shifts — this fallback is edit-plan-scoped. */
|
|
2918
|
+
declare function editPlanSourceDurationSec(data: Record<string, unknown> | undefined): number | undefined;
|
|
2783
2919
|
|
|
2784
2920
|
/**
|
|
2785
2921
|
* Topaz image upscale — the single authority for "which lever did the user
|
|
@@ -2945,6 +3081,24 @@ interface InputFieldSchema {
|
|
|
2945
3081
|
}
|
|
2946
3082
|
/** Get the overridable field schema for an input node type. */
|
|
2947
3083
|
declare function getInputFieldSchema(nodeType: string): InputFieldSchema | undefined;
|
|
3084
|
+
/**
|
|
3085
|
+
* Shallow-merge run-time input overrides (a published app's inputs, an API-token
|
|
3086
|
+
* run, MCP `run_app` / `run_workflow` inputs, a wired component handle) over a
|
|
3087
|
+
* node's SAVED data — the one merge every such lane must use.
|
|
3088
|
+
*
|
|
3089
|
+
* `metadata` holds facts measured FROM the node's media (its length, its
|
|
3090
|
+
* dimensions). When an override swaps that media — the node's primary input
|
|
3091
|
+
* field is a media url (`INPUT_FIELD_MAP`) and the override changes it — the
|
|
3092
|
+
* snapshot's facts describe a file that is no longer there, so they are dropped
|
|
3093
|
+
* unless the override supplies its own. Left behind, a publisher's
|
|
3094
|
+
* `metadata.durationSeconds` outranks the run's own transcript as Edit Plan's
|
|
3095
|
+
* duration basis and under-buckets a caller's longer episode: an estimate that
|
|
3096
|
+
* passes the balance precheck for a run the reserve then refuses.
|
|
3097
|
+
*
|
|
3098
|
+
* Schema-driven on purpose: a new media input node is covered by its
|
|
3099
|
+
* `INPUT_FIELD_MAP` row, with no list to remember here.
|
|
3100
|
+
*/
|
|
3101
|
+
declare function mergeNodeInputOverrides(nodeType: string | undefined, data: Record<string, unknown>, overrides: Record<string, unknown>): Record<string, unknown>;
|
|
2948
3102
|
/** Migrate a legacy string[] order to PresentationItem[]. */
|
|
2949
3103
|
declare function migrateToItems(order: string[] | undefined): PresentationItem[] | undefined;
|
|
2950
3104
|
/** Strip nested groups — groups may only contain non-group items. */
|
|
@@ -3146,13 +3300,34 @@ interface LlmModelDef {
|
|
|
3146
3300
|
*
|
|
3147
3301
|
* Consumers MUST give such a model output headroom regardless of the
|
|
3148
3302
|
* requested effort, or reasoning silently eats a small legacy cap and the
|
|
3149
|
-
* answer truncates with `stop_reason: max_tokens` — a paid-for empty reply
|
|
3150
|
-
*
|
|
3151
|
-
*
|
|
3303
|
+
* answer truncates with `stop_reason: max_tokens` — a paid-for empty reply
|
|
3304
|
+
* (since #1588 the client fails such a call rather than return the
|
|
3305
|
+
* fragment, but the floor is what keeps it from happening). `deriveParams`
|
|
3306
|
+
* (llm-client.ts) floors to {@link reasoningOutputFloor}; the film
|
|
3307
|
+
* pipeline's `callLLM` — Anthropic SDK only, so only its Claude members
|
|
3308
|
+
* matter — floors at the default. Keep the flag in sync with the vendor's
|
|
3152
3309
|
* documented default rather than inferring it from the model name.
|
|
3153
3310
|
*/
|
|
3154
3311
|
thinkingDefaultOn?: true;
|
|
3312
|
+
/**
|
|
3313
|
+
* The output-token cap a REASONING call on this model is floored to — the
|
|
3314
|
+
* room its thinking shares with the answer (`thinkingDefaultOn`, or an
|
|
3315
|
+
* xhigh/max effort). Absent = {@link REASONING_OUTPUT_FLOOR}; read it through
|
|
3316
|
+
* {@link reasoningOutputFloor}, never directly.
|
|
3317
|
+
*
|
|
3318
|
+
* Declare it ONLY where a lane serving this model is not known to accept the
|
|
3319
|
+
* default: the floor rides every lane the model can be served on (KIE AND its
|
|
3320
|
+
* direct fallback), so it has to sit at the intersection of what they take —
|
|
3321
|
+
* the rule `maxOutputTokens` already follows for the Gemini flash entries.
|
|
3322
|
+
* Never below `maxOutputTokens` (a floor under the default cap is not a
|
|
3323
|
+
* floor — guarded by a registry test).
|
|
3324
|
+
*/
|
|
3325
|
+
reasoningOutputFloor?: number;
|
|
3155
3326
|
}
|
|
3327
|
+
/** The reasoning floor for a model that declares no lane limit of its own. */
|
|
3328
|
+
declare const REASONING_OUTPUT_FLOOR = 32768;
|
|
3329
|
+
/** The output cap a reasoning call on `model` is floored to (see `LlmModelDef.reasoningOutputFloor`). */
|
|
3330
|
+
declare function reasoningOutputFloor(model: LlmModelDef): number;
|
|
3156
3331
|
declare const LLM_MODELS: readonly LlmModelDef[];
|
|
3157
3332
|
declare const LLM_MODEL_IDS: string[];
|
|
3158
3333
|
/** Vision models that can return GUARANTEED structured output — the
|
|
@@ -3190,7 +3365,7 @@ declare function groupLlmModelsByVendor(models?: readonly LlmModelDef[]): LlmMod
|
|
|
3190
3365
|
* group headers (e.g. the compact node quick strips) but should still read
|
|
3191
3366
|
* vendor-clustered and tier-ordered. */
|
|
3192
3367
|
declare function orderedLlmModels(models?: readonly LlmModelDef[]): LlmModelDef[];
|
|
3193
|
-
type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "3d-scene" | "image-to-text" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
|
|
3368
|
+
type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "3d-scene" | "image-to-text" | "meta-ads-analysis" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
|
|
3194
3369
|
/** Engine-dependent LlmFeature for the motion-graphics node (design §8: every credit-id site must branch on engine). */
|
|
3195
3370
|
declare function motionGraphicsFeature(engine?: string): LlmFeature;
|
|
3196
3371
|
/** Feature → default model when user hasn't selected one */
|
|
@@ -3804,6 +3979,113 @@ declare function getEffectiveRepeatCount(nodeData: Record<string, unknown>): num
|
|
|
3804
3979
|
*/
|
|
3805
3980
|
declare function expandItemsWithRepeat(listItems: string[] | undefined, nodeType: string, nodeData: Record<string, unknown>): string[] | null;
|
|
3806
3981
|
|
|
3982
|
+
/**
|
|
3983
|
+
* The text LANES the input resolvers route somewhere OTHER than the prompt slot
|
|
3984
|
+
* (`negative` → negativePrompt, `system-prompt` → systemPrompt, an avatar's
|
|
3985
|
+
* `script`, an editor's `transcript`, …). A list that drives a fan-out through
|
|
3986
|
+
* one of these must NOT also be written into the prompt: the per-row resolution
|
|
3987
|
+
* already delivered it where it belongs.
|
|
3988
|
+
*
|
|
3989
|
+
* Keyed by handle, scoped by node type, because the routers are: `transcript`
|
|
3990
|
+
* is the caption track of Add Captions but the very text Forced Alignment
|
|
3991
|
+
* aligns. `"*"` = every node type (the router branch is unconditional).
|
|
3992
|
+
*
|
|
3993
|
+
* DERIVED, not remembered: each engine has a totality test
|
|
3994
|
+
* (`fanout-text-handle-totality`) that routes a text source into EVERY input
|
|
3995
|
+
* handle of EVERY node type through the real resolver and fails the build on any
|
|
3996
|
+
* pair where this table and the router disagree — in either direction. An
|
|
3997
|
+
* unlisted lane keeps the old behavior (the item is the prompt), so a miss can
|
|
3998
|
+
* only ever reproduce the old bug on that one lane, never a new one.
|
|
3999
|
+
*/
|
|
4000
|
+
declare const NON_PROMPT_TEXT_LANES: Readonly<Record<string, "*" | readonly string[]>>;
|
|
4001
|
+
/** Does a TEXT list wired to `targetHandle` of a `nodeType` node feed its prompt slot? */
|
|
4002
|
+
declare function fanOutTextFeedsPrompt(nodeType: string | null | undefined, targetHandle: string | null | undefined): boolean;
|
|
4003
|
+
/**
|
|
4004
|
+
* Drop the empty entries of a row-aligned list, remembering the row every kept
|
|
4005
|
+
* value came from. The items are what drives a fan-out (nothing runs for an
|
|
4006
|
+
* empty cell); the rows are what keeps the OTHER wires on the same row.
|
|
4007
|
+
*/
|
|
4008
|
+
declare function compactWithRows(aligned: readonly string[]): {
|
|
4009
|
+
items: string[];
|
|
4010
|
+
rowIndices: number[];
|
|
4011
|
+
};
|
|
4012
|
+
/**
|
|
4013
|
+
* One column of a manual List table, row-aligned: a row is dropped only when
|
|
4014
|
+
* EVERY cell of it is blank (the trailing empty row the editor keeps), and an
|
|
4015
|
+
* empty cell of a row that has content stays in place as "".
|
|
4016
|
+
*/
|
|
4017
|
+
declare function liveRowColumn(rows: ReadonlyArray<ReadonlyArray<string | undefined>>, colIndex: number): string[];
|
|
4018
|
+
/** One list wire that could drive a fan-out. */
|
|
4019
|
+
interface FanOutCandidate {
|
|
4020
|
+
/** Target handle of the consumer-side wire. */
|
|
4021
|
+
targetHandle: string | null | undefined;
|
|
4022
|
+
/** The wire's values in row order — may hold "" for an empty row. */
|
|
4023
|
+
aligned: readonly string[];
|
|
4024
|
+
}
|
|
4025
|
+
/**
|
|
4026
|
+
* Turn the lists that reach a node into ONE fan-out, so that nothing depends on
|
|
4027
|
+
* the order the wires were drawn in. `candidates` are the "each" lists that hold
|
|
4028
|
+
* more than one value, in wire order.
|
|
4029
|
+
*
|
|
4030
|
+
* The PRIMARY is the list that holds the most values (the first of them when
|
|
4031
|
+
* several tie): it sets the row space. Both engines get it from here, so the
|
|
4032
|
+
* orchestrator and the in-browser executor cannot disagree on how many times a
|
|
4033
|
+
* node runs. Lists with the SAME number of rows share that row space — two
|
|
4034
|
+
* columns of one table, two Extract Field lists cut from one array — and are
|
|
4035
|
+
* settled together:
|
|
4036
|
+
*
|
|
4037
|
+
* - the DRIVER (its item becomes the per-row override) is a text list that
|
|
4038
|
+
* feeds the prompt, when there is one: that item is what must win over the
|
|
4039
|
+
* typed prompt, and a list wired to `negative` must never supply it;
|
|
4040
|
+
* - a ROW runs when ANY of those lists has a value in it. A row is never
|
|
4041
|
+
* dropped because one column is empty there — that column just contributes
|
|
4042
|
+
* nothing for the row — and a row with no value anywhere does not run.
|
|
4043
|
+
*
|
|
4044
|
+
* A list with a different number of rows is not part of this: it keeps
|
|
4045
|
+
* wrapping around per iteration, as it always has.
|
|
4046
|
+
*/
|
|
4047
|
+
declare function resolveListFanOut<C extends FanOutCandidate>(candidates: readonly C[], nodeType: string | null | undefined): ListFanOut | undefined;
|
|
4048
|
+
/**
|
|
4049
|
+
* Is this fan-out item a media URL (as opposed to text)? The ONE guess both
|
|
4050
|
+
* engines make when a list item has to be applied as an override — kept here so
|
|
4051
|
+
* the backend worker and the in-browser executor cannot disagree on it.
|
|
4052
|
+
*/
|
|
4053
|
+
declare function isFanOutUrlItem(item: string): boolean;
|
|
4054
|
+
/** What a fan-out source resolved to. */
|
|
4055
|
+
interface ListFanOut {
|
|
4056
|
+
/** The driving list's value for every row that runs — "" where the driver has
|
|
4057
|
+
* none for a row another list keeps alive (nothing is overridden there). */
|
|
4058
|
+
items: string[];
|
|
4059
|
+
/** `rowIndices[k]` = the row `items[k]` came from, in the driver's row space. */
|
|
4060
|
+
rowIndices: number[];
|
|
4061
|
+
/** Target handle of the consumer-side wire that drives the fan-out. */
|
|
4062
|
+
targetHandle: string | null | undefined;
|
|
4063
|
+
}
|
|
4064
|
+
/** The iterations a node will run, in order. */
|
|
4065
|
+
interface FanOutPlan {
|
|
4066
|
+
/** One entry per iteration (list items, repeat / provider sentinels). */
|
|
4067
|
+
items: string[];
|
|
4068
|
+
/** Row each iteration reads its inputs from; undefined when nothing is list-driven. */
|
|
4069
|
+
rows: Array<number | undefined>;
|
|
4070
|
+
/** Handle the driving list is wired to; undefined when nothing is list-driven. */
|
|
4071
|
+
targetHandle: string | null | undefined;
|
|
4072
|
+
}
|
|
4073
|
+
/**
|
|
4074
|
+
* Expand a fan-out into its iterations (list x Repeat xN, providers, repeats —
|
|
4075
|
+
* `expandItemsWithRepeat` stays the single rule for that) and pin every
|
|
4076
|
+
* iteration to the ROW its item came from. Repeat xN runs a row N times: the
|
|
4077
|
+
* copies share the row, they do not walk on to the next one.
|
|
4078
|
+
*/
|
|
4079
|
+
declare function planFanOut(fanOut: ListFanOut | undefined, nodeType: string, nodeData: Record<string, unknown>): FanOutPlan | null;
|
|
4080
|
+
/**
|
|
4081
|
+
* Extract Field, List output, over a root ARRAY: one entry per element, "" where
|
|
4082
|
+
* the element has no value — so two Extract Field lists cut from the same array
|
|
4083
|
+
* stay row-aligned. Returns undefined when rows cannot be defined (the root is
|
|
4084
|
+
* not an array, an element fans into several values, or no element carries the
|
|
4085
|
+
* field at all) — the caller then keeps the plain "values that exist" list.
|
|
4086
|
+
*/
|
|
4087
|
+
declare function alignedFieldList(value: unknown, path: string): string[] | undefined;
|
|
4088
|
+
|
|
3807
4089
|
/**
|
|
3808
4090
|
* Like Promise.allSettled but limits how many tasks run concurrently.
|
|
3809
4091
|
* Uses a worker-pool pattern so a new task starts as soon as a slot frees up.
|
|
@@ -4781,6 +5063,479 @@ declare const SUNO_FIELD_HANDLE_FIELDS: readonly ["style", "lyrics", "title", "n
|
|
|
4781
5063
|
/** Map a `field-<key>` handle id to its data key, or null if not a field handle. */
|
|
4782
5064
|
declare function fieldKeyFromHandle(handleId: string): string | null;
|
|
4783
5065
|
|
|
5066
|
+
/**
|
|
5067
|
+
* The node types the server projects onto `workflow_triggers` rows when a
|
|
5068
|
+
* workflow is saved (backend `lib/workflow-trigger-sync.ts`), and that the
|
|
5069
|
+
* editor therefore asks the server to re-project after its own saves. One
|
|
5070
|
+
* vocabulary for both sides: a projected type added here reaches the
|
|
5071
|
+
* editor's "does this save need a sync?" question by construction.
|
|
5072
|
+
*/
|
|
5073
|
+
declare const SCHEDULE_TRIGGER_NODE_TYPE = "schedule-trigger";
|
|
5074
|
+
declare const WEBHOOK_TRIGGER_NODE_TYPE = "webhook-trigger";
|
|
5075
|
+
declare const TELEGRAM_TRIGGER_NODE_TYPE = "telegram-trigger";
|
|
5076
|
+
declare const PROJECTED_TRIGGER_NODE_TYPES: ReadonlySet<string>;
|
|
5077
|
+
declare function isProjectedTriggerNodeType(type: unknown): type is string;
|
|
5078
|
+
|
|
5079
|
+
/**
|
|
5080
|
+
* Every way one node FEEDS another — the ONE definition the server's run
|
|
5081
|
+
* scope (`triggerRunScope`) and the editor's "is this trigger wired?" read
|
|
5082
|
+
* from, so the card can never say "the branch" while the server runs the
|
|
5083
|
+
* whole workflow, or the other way round:
|
|
5084
|
+
*
|
|
5085
|
+
* - a drawn edge whose two ends are both on the graph (a delta that deleted a
|
|
5086
|
+
* node leaves its edges behind; those feed nothing);
|
|
5087
|
+
* - Group membership: a node inside a Group feeds the group (`parentId`),
|
|
5088
|
+
* the way the engine orders a group after its members;
|
|
5089
|
+
* - a field mapping: `data.fieldMappings[field].sourceNodeId` feeds the node
|
|
5090
|
+
* that carries the mapping, even after the edge it was made from is gone.
|
|
5091
|
+
*/
|
|
5092
|
+
interface FeedNode {
|
|
5093
|
+
readonly id: string;
|
|
5094
|
+
readonly parentId?: string | null;
|
|
5095
|
+
readonly data?: unknown;
|
|
5096
|
+
}
|
|
5097
|
+
interface FeedEdge {
|
|
5098
|
+
readonly source: string;
|
|
5099
|
+
readonly target: string;
|
|
5100
|
+
}
|
|
5101
|
+
interface FeedMaps {
|
|
5102
|
+
/** node id → the ids it feeds */
|
|
5103
|
+
readonly children: ReadonlyMap<string, ReadonlyArray<string>>;
|
|
5104
|
+
/** node id → the ids that feed it */
|
|
5105
|
+
readonly parents: ReadonlyMap<string, ReadonlyArray<string>>;
|
|
5106
|
+
}
|
|
5107
|
+
declare function buildFeedMaps(nodes: ReadonlyArray<FeedNode>, edges: ReadonlyArray<FeedEdge>): FeedMaps;
|
|
5108
|
+
/** Does this node feed anything? A trigger that does not runs the whole workflow. */
|
|
5109
|
+
declare function nodeFeedsAnything(nodes: ReadonlyArray<FeedNode>, edges: ReadonlyArray<FeedEdge>, nodeId: string): boolean;
|
|
5110
|
+
|
|
5111
|
+
/**
|
|
5112
|
+
* Schedule Trigger rules — the ONE model both sides read.
|
|
5113
|
+
*
|
|
5114
|
+
* A schedule is a list of rules; the workflow runs whenever any rule says
|
|
5115
|
+
* "this minute". The editor previews a schedule (headline, today's timeline,
|
|
5116
|
+
* the next runs, runs per day) and the server decides whether to fire — from
|
|
5117
|
+
* the same functions here, so what the panel shows is what the cron does.
|
|
5118
|
+
*
|
|
5119
|
+
* Kinds, with the fields each reads (everything else on the rule is ignored):
|
|
5120
|
+
* - `minutes` — `every` (1–59): at minute 0, N, 2N… of every hour (cron `*\/N`).
|
|
5121
|
+
* - `hours` — `every` (1–23) at `minute`: at hour 0, N, 2N… of every day.
|
|
5122
|
+
* - `days` — `every` (1–31) at `hour:minute`: every Nth calendar day.
|
|
5123
|
+
* - `weeks` — `every` (1–52) on `weekdays` at `hour:minute`: every Nth week.
|
|
5124
|
+
* - `months` — `every` (1–12) on `dayOfMonth` at `hour:minute`: every Nth month
|
|
5125
|
+
* (a day the month lacks — 31 in April — runs on its last day).
|
|
5126
|
+
* - `cron` — a 5-field cron expression, for the person who wants one.
|
|
5127
|
+
*
|
|
5128
|
+
* "Every Nth day / week / month" counts from a fixed origin (the Unix epoch,
|
|
5129
|
+
* in the schedule's timezone; weeks start on Monday) rather than from the
|
|
5130
|
+
* moment the rule was saved — so the preview and the server agree, a re-save
|
|
5131
|
+
* never shifts the phase, and two people reading the rule get the same days.
|
|
5132
|
+
*
|
|
5133
|
+
* Time is read in the schedule's timezone (an IANA name; missing or unknown
|
|
5134
|
+
* → UTC — callers validate with `isValidTimezone` and refuse the unknown
|
|
5135
|
+
* ones, so that fallback is only ever a defence). Resolution is one minute:
|
|
5136
|
+
* the cron ticks once a minute and asks "does this minute match?" — there is
|
|
5137
|
+
* no sub-minute scheduling.
|
|
5138
|
+
*
|
|
5139
|
+
* Daylight-saving: a wall-clock minute that does not exist on the day the
|
|
5140
|
+
* clocks jump forward is skipped that day. On the day they fall back, a rule
|
|
5141
|
+
* that names a time of day (`hours` / `days` / `weeks` / `months` / `cron`)
|
|
5142
|
+
* runs once — the second pass is the same wall-clock minute
|
|
5143
|
+
* (`localMinuteKey`) as the fire just before it, and both the server and the
|
|
5144
|
+
* preview drop it — while a `minutes` rule keeps its cadence through the
|
|
5145
|
+
* repeated hour, because real time keeps passing.
|
|
5146
|
+
*/
|
|
5147
|
+
declare const SCHEDULE_RULE_KINDS: readonly ["minutes", "hours", "days", "weeks", "months", "cron"];
|
|
5148
|
+
type ScheduleRuleKind = (typeof SCHEDULE_RULE_KINDS)[number];
|
|
5149
|
+
interface ScheduleRule {
|
|
5150
|
+
readonly id: string;
|
|
5151
|
+
readonly kind: ScheduleRuleKind;
|
|
5152
|
+
/** Every N units (see `SCHEDULE_EVERY_LIMITS`). */
|
|
5153
|
+
readonly every?: number;
|
|
5154
|
+
/** 0–23, in the schedule's timezone. Read by days / weeks / months. */
|
|
5155
|
+
readonly hour?: number;
|
|
5156
|
+
/** 0–59. Read by every kind but `minutes` and `cron`. */
|
|
5157
|
+
readonly minute?: number;
|
|
5158
|
+
/** 0 = Sunday … 6 = Saturday (the cron / JavaScript convention). Read by `weeks`. */
|
|
5159
|
+
readonly weekdays?: ReadonlyArray<number>;
|
|
5160
|
+
/** 1–31. Read by `months`. */
|
|
5161
|
+
readonly dayOfMonth?: number;
|
|
5162
|
+
/** A 5-field cron expression. Read by `cron`. */
|
|
5163
|
+
readonly cron?: string;
|
|
5164
|
+
}
|
|
5165
|
+
interface ScheduleSpec {
|
|
5166
|
+
readonly rules: ReadonlyArray<ScheduleRule>;
|
|
5167
|
+
/** IANA timezone; missing or unknown means UTC. */
|
|
5168
|
+
readonly timezone?: string;
|
|
5169
|
+
/** Stop after this many runs; missing means unlimited. */
|
|
5170
|
+
readonly maxExecutions?: number;
|
|
5171
|
+
}
|
|
5172
|
+
/** `every` limits per kind — the panel's range hints and the normaliser's clamps. */
|
|
5173
|
+
declare const SCHEDULE_EVERY_LIMITS: Readonly<Record<Exclude<ScheduleRuleKind, "cron">, readonly [number, number]>>;
|
|
5174
|
+
/** A 5-field cron expression — the only shape the matcher understands. */
|
|
5175
|
+
declare function isCronExpression(value: unknown): value is string;
|
|
5176
|
+
/**
|
|
5177
|
+
* One rule as the user typed it → one rule the engine can run, or `null` when
|
|
5178
|
+
* there is nothing to run (unknown kind, a cron rule with no expression, a
|
|
5179
|
+
* weeks rule with no weekday). Out-of-range numbers are clamped, never
|
|
5180
|
+
* refused: a half-typed "0" must not silently disable a schedule.
|
|
5181
|
+
*/
|
|
5182
|
+
declare function normalizeScheduleRule(raw: unknown, fallbackId?: string): ScheduleRule | null;
|
|
5183
|
+
/** Every usable rule, in order; unusable ones dropped. */
|
|
5184
|
+
declare function normalizeScheduleRules(raw: unknown): ScheduleRule[];
|
|
5185
|
+
/**
|
|
5186
|
+
* The schedule an OLD node carried — `interval` ("5m" / "1h" / "1d" or one of
|
|
5187
|
+
* the editor's cron presets) and/or `cron` — as rules. Seconds cannot be
|
|
5188
|
+
* scheduled (the cron ticks once a minute) and become "every minute".
|
|
5189
|
+
*/
|
|
5190
|
+
declare function legacyScheduleToRules(data: {
|
|
5191
|
+
interval?: unknown;
|
|
5192
|
+
cron?: unknown;
|
|
5193
|
+
cronExpression?: unknown;
|
|
5194
|
+
}): ScheduleRule[];
|
|
5195
|
+
interface LocalTime {
|
|
5196
|
+
readonly year: number;
|
|
5197
|
+
/** 1–12 */
|
|
5198
|
+
readonly month: number;
|
|
5199
|
+
/** 1–31 */
|
|
5200
|
+
readonly day: number;
|
|
5201
|
+
readonly hour: number;
|
|
5202
|
+
readonly minute: number;
|
|
5203
|
+
/** 0 = Sunday … 6 = Saturday */
|
|
5204
|
+
readonly weekday: number;
|
|
5205
|
+
/** Calendar days since 1970-01-01, in the schedule's timezone. */
|
|
5206
|
+
readonly epochDay: number;
|
|
5207
|
+
}
|
|
5208
|
+
/** A timezone this runtime can read the clock in (an IANA name such as `Asia/Jerusalem`). */
|
|
5209
|
+
declare function isValidTimezone(value: unknown): value is string;
|
|
5210
|
+
/** One wall-clock minute, as a key: the same key twice means the clocks fell back. */
|
|
5211
|
+
declare function localMinuteKey(local: LocalTime): string;
|
|
5212
|
+
/** The wall-clock time in the schedule's timezone (UTC when it is missing or unknown). */
|
|
5213
|
+
declare function localTimeIn(date: Date, timezone?: string): LocalTime;
|
|
5214
|
+
/** How far the timezone's wall clock is ahead of UTC at this instant, in minutes. */
|
|
5215
|
+
declare function timezoneOffsetMinutes(date: Date, timezone?: string): number;
|
|
5216
|
+
/** Standard 5-field cron field: `*`, `N`, `a-b`, `a,b`, `*\/N`, `a-b/N`, `a/N`. */
|
|
5217
|
+
declare function matchesCronField(field: string, value: number, min: number, max: number): boolean;
|
|
5218
|
+
/** Does this wall-clock minute match the cron expression? */
|
|
5219
|
+
declare function matchesCron(expression: string, local: LocalTime): boolean;
|
|
5220
|
+
/** Does this wall-clock minute match the rule? */
|
|
5221
|
+
declare function ruleMatches(rule: ScheduleRule, local: LocalTime): boolean;
|
|
5222
|
+
/** Does the schedule run at this instant (any rule, this minute)? */
|
|
5223
|
+
declare function scheduleMatchesAt(spec: ScheduleSpec, at: Date): boolean;
|
|
5224
|
+
/**
|
|
5225
|
+
* Every minute in [from, until] at which the schedule runs, oldest first, at
|
|
5226
|
+
* most `cap`. Scans minute by minute with the timezone offset re-read once per
|
|
5227
|
+
* quarter hour, so a 62-day horizon costs ~90k cheap checks and ~6k clock
|
|
5228
|
+
* reads. A wall-clock minute the clocks fall back onto is listed once.
|
|
5229
|
+
*/
|
|
5230
|
+
declare function scheduleOccurrences(spec: ScheduleSpec, from: Date, until: Date, cap: number): Date[];
|
|
5231
|
+
/**
|
|
5232
|
+
* How far ahead a preview must look to find the schedule's next run: two
|
|
5233
|
+
* periods of its slowest rule (a quarterly rule needs half a year, a yearly
|
|
5234
|
+
* one two), never less than two months and never more than ~two years.
|
|
5235
|
+
*/
|
|
5236
|
+
declare function previewHorizonMs(rules: ReadonlyArray<ScheduleRule>): number;
|
|
5237
|
+
/**
|
|
5238
|
+
* The next `count` runs strictly after `from` (the minute `from` is in does
|
|
5239
|
+
* not count, the very next one does), looking `horizonMs` ahead — by default
|
|
5240
|
+
* as far as the rules need (`previewHorizonMs`).
|
|
5241
|
+
*/
|
|
5242
|
+
declare function nextScheduleRuns(spec: ScheduleSpec, from: Date, count: number, horizonMs?: number): Date[];
|
|
5243
|
+
|
|
5244
|
+
declare const META_ADS_SCRAPE_NODE_TYPE: "meta-ads-scrape";
|
|
5245
|
+
/** The WIRE modes — what `POST /v1/meta-ads-scrape` accepts. */
|
|
5246
|
+
declare const META_ADS_SCRAPE_MODES: readonly ["search", "pages"];
|
|
5247
|
+
type MetaAdsScrapeMode = (typeof META_ADS_SCRAPE_MODES)[number];
|
|
5248
|
+
/** The NODE modes — the wire modes plus the editor-only advertiser picker (runs as pages). */
|
|
5249
|
+
declare const META_ADS_NODE_MODES: readonly ["search", "pages", "advertiser"];
|
|
5250
|
+
type MetaAdsNodeMode = (typeof META_ADS_NODE_MODES)[number];
|
|
5251
|
+
/** Coerce stored node data to a node mode; anything unknown is the default keyword search. */
|
|
5252
|
+
declare function metaAdsNodeMode(value: unknown): MetaAdsNodeMode;
|
|
5253
|
+
/** An advertiser the user picked by name — stored on the node, run as its Page url. */
|
|
5254
|
+
interface MetaAdsAdvertiser {
|
|
5255
|
+
readonly pageId: string;
|
|
5256
|
+
readonly name: string;
|
|
5257
|
+
/** The Facebook Page url. The actor resolves it to the Ad Library advertiser itself — the Page id and the advertiser id are NOT the same number. */
|
|
5258
|
+
readonly url: string;
|
|
5259
|
+
readonly imageUrl?: string;
|
|
5260
|
+
readonly verified?: boolean;
|
|
5261
|
+
}
|
|
5262
|
+
/** How many matches an advertiser lookup returns — more than the pick cap, so a same-name brand can be told apart by its badge / avatar. */
|
|
5263
|
+
declare const META_ADS_ADVERTISER_MAX_RESULTS = 8;
|
|
5264
|
+
/** http(s) url on facebook.com (any subdomain) — the ONE predicate for a Page address, on the route's Zod and on stored picks alike. */
|
|
5265
|
+
declare function isFacebookPageUrl(value: unknown): value is string;
|
|
5266
|
+
/** A Page avatar lives on Meta's CDN; anything else is not stored (it would be fetched by every viewer's browser and our image proxy). */
|
|
5267
|
+
declare function isMetaCdnImageUrl(value: unknown): value is string;
|
|
5268
|
+
/** Stored / relayed advertisers, sanitized: a page id, a name, a facebook.com url, a Meta-CDN avatar; deduped by page id; at most `limit` (the pick cap by default). */
|
|
5269
|
+
declare function metaAdsAdvertisersFrom(raw: unknown, limit?: number): MetaAdsAdvertiser[];
|
|
5270
|
+
declare const META_ADS_SCRAPE_PERIODS: readonly ["24h", "7d", "30d", "all"];
|
|
5271
|
+
type MetaAdsScrapePeriod = (typeof META_ADS_SCRAPE_PERIODS)[number];
|
|
5272
|
+
declare const META_ADS_SCRAPE_STATUSES: readonly ["active", "inactive", "all"];
|
|
5273
|
+
type MetaAdsScrapeStatus = (typeof META_ADS_SCRAPE_STATUSES)[number];
|
|
5274
|
+
/** Meta's `publisher_platform` vocabulary — the values an ad's `platforms` carries and the filter the node accepts. */
|
|
5275
|
+
declare const META_ADS_PLATFORMS: readonly ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER", "WHATSAPP", "THREADS"];
|
|
5276
|
+
type MetaAdsPlatform = (typeof META_ADS_PLATFORMS)[number];
|
|
5277
|
+
declare function isMetaAdsPlatform(value: unknown): value is MetaAdsPlatform;
|
|
5278
|
+
/**
|
|
5279
|
+
* Creative format, classified from the creative's measured pixels — the
|
|
5280
|
+
* user's "phone vs web" question. `vertical` = Stories / Reels / mobile feed
|
|
5281
|
+
* (9:16, 4:5), `square` = 1:1 (±5 %), `horizontal` = feed / web / banners
|
|
5282
|
+
* (16:9, 1.91:1). One classifier for the route (node setting), the Results
|
|
5283
|
+
* chips and the card, so they can never disagree.
|
|
5284
|
+
*/
|
|
5285
|
+
declare const META_ADS_FORMATS: readonly ["vertical", "square", "horizontal"];
|
|
5286
|
+
type MetaAdsFormat = (typeof META_ADS_FORMATS)[number];
|
|
5287
|
+
type MetaAdsCreativeFormat = MetaAdsFormat | "unknown";
|
|
5288
|
+
declare function isMetaAdsFormat(value: unknown): value is MetaAdsFormat;
|
|
5289
|
+
/** The featured ad index, clamped so a rerun that returned fewer ads never indexes past the end. */
|
|
5290
|
+
declare function clampMetaAdsFeaturedIndex(stored: unknown, count: number): number;
|
|
5291
|
+
interface FeaturedMetaAdOutputs {
|
|
5292
|
+
readonly text?: string;
|
|
5293
|
+
readonly imageUrl?: string;
|
|
5294
|
+
readonly videoUrl?: string;
|
|
5295
|
+
}
|
|
5296
|
+
/**
|
|
5297
|
+
* What the node's typed `text` / `image` / `video` handles carry: the
|
|
5298
|
+
* FEATURED ad's copy (headline + body), first image (else the video poster)
|
|
5299
|
+
* and first video. ONE derivation for the route's output_data, the backend
|
|
5300
|
+
* saved-output hydration and the editor's extractNodeOutput, so a thumb pick
|
|
5301
|
+
* re-hydrates the handles identically everywhere.
|
|
5302
|
+
*/
|
|
5303
|
+
declare function featuredMetaAdOutputs(json: unknown, featuredIndex: unknown): FeaturedMetaAdOutputs;
|
|
5304
|
+
declare function classifyCreativeFormat(width: unknown, height: unknown): MetaAdsCreativeFormat;
|
|
5305
|
+
/** Presets the config panel offers; the route accepts any integer 1..MAX_COUNT. */
|
|
5306
|
+
declare const META_ADS_SCRAPE_COUNT_OPTIONS: readonly [10, 20, 50, 100];
|
|
5307
|
+
declare const META_ADS_SCRAPE_DEFAULT_COUNT = 20;
|
|
5308
|
+
declare const META_ADS_SCRAPE_MAX_COUNT = 100;
|
|
5309
|
+
declare const META_ADS_SCRAPE_MAX_SOURCES = 5;
|
|
5310
|
+
/** Meta caps Ad Library search terms at 100 characters. */
|
|
5311
|
+
declare const META_ADS_SCRAPE_MAX_QUERY_LENGTH = 100;
|
|
5312
|
+
declare const META_ADS_SCRAPE_DEFAULT_COUNTRY = "ALL";
|
|
5313
|
+
/** Requested-total buckets. Sorted ascending; the last one is `MAX_COUNT × MAX_SOURCES`. */
|
|
5314
|
+
declare const META_ADS_SCRAPE_TIERS: readonly [10, 20, 50, 100, 200, 500];
|
|
5315
|
+
type MetaAdsScrapeTier = (typeof META_ADS_SCRAPE_TIERS)[number];
|
|
5316
|
+
/**
|
|
5317
|
+
* Optional per-ad AI analysis — the "expert competitor ad analyst" pass.
|
|
5318
|
+
* Priced per REQUESTED ad like the scrape, by the analysing model's tier,
|
|
5319
|
+
* and folded into the SAME tiered identifier so every quote (guard,
|
|
5320
|
+
* reservation, card badge, run total, backend estimator) stays one SKU:
|
|
5321
|
+
*
|
|
5322
|
+
* meta-ads-scrape:<tier> tier
|
|
5323
|
+
* meta-ads-scrape:<tier>:analysis tier × (1 + 3) standard models
|
|
5324
|
+
* meta-ads-scrape:<tier>:analysis:economy tier × (1 + 1)
|
|
5325
|
+
* meta-ads-scrape:<tier>:analysis:premium tier × (1 + 4)
|
|
5326
|
+
*
|
|
5327
|
+
* The per-ad SKUs (`meta-ads-analysis[:economy|:premium]`) price the
|
|
5328
|
+
* SETTLEMENT: a run commits tier + per-ad × ads actually analysed and
|
|
5329
|
+
* refunds the rest (an ad the model failed on, or one the deadline skipped).
|
|
5330
|
+
*/
|
|
5331
|
+
declare const META_ADS_ANALYSIS_TIERS: readonly ["economy", "standard", "premium"];
|
|
5332
|
+
type MetaAdsAnalysisTier = (typeof META_ADS_ANALYSIS_TIERS)[number];
|
|
5333
|
+
declare const META_ADS_ANALYSIS_CREDITS_PER_AD: Record<MetaAdsAnalysisTier, number>;
|
|
5334
|
+
declare const META_ADS_ANALYSIS_CREDIT_ID: "meta-ads-analysis";
|
|
5335
|
+
/** The user's optional analyst focus, appended to the fixed prompt. */
|
|
5336
|
+
declare const META_ADS_ANALYSIS_FOCUS_MAX = 500;
|
|
5337
|
+
/** The per-ad settlement SKU for a tier (the bare id is the standard tier). */
|
|
5338
|
+
declare function metaAdsAnalysisCreditId(tier: MetaAdsAnalysisTier): string;
|
|
5339
|
+
/** The analysing model's tier; an absent model is the feature default. */
|
|
5340
|
+
declare function metaAdsAnalysisTier(modelId?: unknown): MetaAdsAnalysisTier;
|
|
5341
|
+
/** What one analysed ad carries (`ad.analysis`); fixed fields + string lists only — never a map (Gemini via KIE drops map fields). */
|
|
5342
|
+
interface AdCreativeAnalysis {
|
|
5343
|
+
readonly assetType: "static" | "motion" | "carousel" | "unknown";
|
|
5344
|
+
readonly format: string;
|
|
5345
|
+
readonly visualHooks: readonly string[];
|
|
5346
|
+
readonly audiences: readonly string[];
|
|
5347
|
+
readonly graphicIdentity: string;
|
|
5348
|
+
readonly copywritingHooks: readonly string[];
|
|
5349
|
+
readonly usps: readonly string[];
|
|
5350
|
+
readonly cta: string;
|
|
5351
|
+
readonly summary: string;
|
|
5352
|
+
}
|
|
5353
|
+
/** Read a stored analysis back defensively (a node's saved JSON is untrusted shape); null when there is none. */
|
|
5354
|
+
declare function adCreativeAnalysisFrom(raw: unknown): AdCreativeAnalysis | null;
|
|
5355
|
+
/**
|
|
5356
|
+
* Credit cost per SKU — mirror of the backend `STATIC_CREDIT_COSTS` rows and
|
|
5357
|
+
* migrations 428 / 429, for the frontend badge / estimator. 1 credit per
|
|
5358
|
+
* requested ad at every tier, plus the analysis multiples above; the bare
|
|
5359
|
+
* identifier is the pre-Zod fallback (mid tier, never the max).
|
|
5360
|
+
*/
|
|
5361
|
+
declare const META_ADS_SCRAPE_CREDIT_COSTS: Record<string, number>;
|
|
5362
|
+
declare const META_ADS_SCRAPE_FALLBACK_CREDIT_ID = "meta-ads-scrape:20";
|
|
5363
|
+
/**
|
|
5364
|
+
* Page urls are typed one per line in the config panel (a FieldMapping
|
|
5365
|
+
* injects the same text); the route wants an array. Tolerates commas and
|
|
5366
|
+
* whitespace as separators (a url never contains either) and an array that
|
|
5367
|
+
* already went through this once.
|
|
5368
|
+
*/
|
|
5369
|
+
declare function splitMetaAdsPageUrls(value: unknown): string[];
|
|
5370
|
+
declare function isMetaAdsScrapeMode(value: unknown): value is MetaAdsScrapeMode;
|
|
5371
|
+
/**
|
|
5372
|
+
* Advertiser NAMES to resolve at run time (advertiser mode driven by the `in`
|
|
5373
|
+
* input) — one per line or comma-separated. Unlike page urls, a name contains
|
|
5374
|
+
* spaces, so this never splits on whitespace. Trimmed, de-duped, each 2..100
|
|
5375
|
+
* chars, capped at `MAX_SOURCES`.
|
|
5376
|
+
*/
|
|
5377
|
+
declare function splitMetaAdsAdvertiserNames(value: unknown): string[];
|
|
5378
|
+
/** The node-data fields that decide what a run scrapes (and therefore what it costs). Index-signature so any node-data bag is accepted as-is. */
|
|
5379
|
+
interface MetaAdsNodeSourceFields {
|
|
5380
|
+
readonly [key: string]: unknown;
|
|
5381
|
+
readonly mode?: unknown;
|
|
5382
|
+
readonly query?: unknown;
|
|
5383
|
+
readonly pageUrls?: unknown;
|
|
5384
|
+
readonly advertisers?: unknown;
|
|
5385
|
+
}
|
|
5386
|
+
/**
|
|
5387
|
+
* How many sources a run bills — the number the card badge, the run total,
|
|
5388
|
+
* the pre-run estimator and the backend quote must all read, so an advertiser
|
|
5389
|
+
* pick can never be quoted as one source while the server reserves five. An
|
|
5390
|
+
* empty page list / no picks counts as one (the run then fails validation
|
|
5391
|
+
* before anything is reserved).
|
|
5392
|
+
*/
|
|
5393
|
+
declare function metaAdsScrapeSources(data: MetaAdsNodeSourceFields): number;
|
|
5394
|
+
type MetaAdsWireSources = {
|
|
5395
|
+
readonly mode: "search";
|
|
5396
|
+
readonly query: string | undefined;
|
|
5397
|
+
} | {
|
|
5398
|
+
readonly mode: "pages";
|
|
5399
|
+
readonly pageUrls: string[];
|
|
5400
|
+
readonly advertiserNames?: string[];
|
|
5401
|
+
};
|
|
5402
|
+
/**
|
|
5403
|
+
* The wire half of a request from node data — ONE mapping for the editor's
|
|
5404
|
+
* executor and the orchestrator's payload builder. The keyword / page list
|
|
5405
|
+
* falls back to the upstream text so a Prompt or List node can drive the
|
|
5406
|
+
* scrape; advertiser picks are explicit (no upstream fallback) and run as
|
|
5407
|
+
* their Page urls, which is why the route never sees "advertiser".
|
|
5408
|
+
*/
|
|
5409
|
+
declare function metaAdsScrapeWireSources(data: MetaAdsNodeSourceFields, upstream?: unknown): MetaAdsWireSources;
|
|
5410
|
+
declare function isMetaAdsScrapeCount(value: unknown): value is number;
|
|
5411
|
+
/** Smallest tier that fits the requested total; clamps to the top tier. */
|
|
5412
|
+
declare function metaAdsScrapeTier(requestedTotal: number): MetaAdsScrapeTier;
|
|
5413
|
+
interface MetaAdsScrapeCreditInput {
|
|
5414
|
+
count: number;
|
|
5415
|
+
/** Number of input URLs in pages mode; 1 for a keyword search. */
|
|
5416
|
+
sources: number;
|
|
5417
|
+
/** The analysing model's tier when per-ad analysis is on; absent / null = scrape only. */
|
|
5418
|
+
analysis?: MetaAdsAnalysisTier | null;
|
|
5419
|
+
}
|
|
5420
|
+
declare function buildMetaAdsScrapeCreditId(input: MetaAdsScrapeCreditInput): string;
|
|
5421
|
+
/** The analysis tier a request / node asks for, or null when analysis is off. */
|
|
5422
|
+
declare function metaAdsAnalysisTierFrom(data: {
|
|
5423
|
+
readonly analyze?: unknown;
|
|
5424
|
+
readonly analysisModel?: unknown;
|
|
5425
|
+
}): MetaAdsAnalysisTier | null;
|
|
5426
|
+
/**
|
|
5427
|
+
* Resolve the credit identifier from an UNVALIDATED request body (the
|
|
5428
|
+
* creditGuard preHandler runs before Zod). It must land on the SAME tier the
|
|
5429
|
+
* post-Zod reservation computes, so an OMITTED count is the route's default
|
|
5430
|
+
* (Zod fills it in the same way); only a present-but-invalid body reserves
|
|
5431
|
+
* the fixed mid tier, and the route then rejects it with a 400 and refunds.
|
|
5432
|
+
*/
|
|
5433
|
+
declare function resolveMetaAdsScrapeCreditId(body: unknown): string;
|
|
5434
|
+
/** The node-data fields a quote reads: what a run scrapes, how many, and whether it analyses. */
|
|
5435
|
+
interface MetaAdsNodeQuoteFields extends MetaAdsNodeSourceFields {
|
|
5436
|
+
readonly count?: unknown;
|
|
5437
|
+
readonly analyze?: unknown;
|
|
5438
|
+
readonly analysisModel?: unknown;
|
|
5439
|
+
}
|
|
5440
|
+
/**
|
|
5441
|
+
* The ONE credit identifier for a node's current settings — the card badge,
|
|
5442
|
+
* the run total, the pre-run estimator and the backend quote all read this,
|
|
5443
|
+
* and it is the same builder the route's guard + reservation use on the wire
|
|
5444
|
+
* body, so no surface can quote a different SKU than the one reserved.
|
|
5445
|
+
*/
|
|
5446
|
+
declare function metaAdsScrapeCreditIdFromNode(data: MetaAdsNodeQuoteFields): string;
|
|
5447
|
+
|
|
5448
|
+
/**
|
|
5449
|
+
* Instagram scraper node — shared vocabulary + credit identifiers.
|
|
5450
|
+
*
|
|
5451
|
+
* Pulls PUBLIC Instagram posts (feed images, carousels, reels) by profile or
|
|
5452
|
+
* by hashtag and emits a normalized JSON array. Same shape of contract as the
|
|
5453
|
+
* Meta Ads node: everything the backend guard/reservation, the frontend credit
|
|
5454
|
+
* badge and the docs formula must agree on lives here.
|
|
5455
|
+
*
|
|
5456
|
+
* Pricing: 1 credit per REQUESTED post, rounded UP to a fixed tier of
|
|
5457
|
+
* `count × sources` (a profile / hashtag is one source, up to 5). Optional
|
|
5458
|
+
* per-post AI analysis folds into the same identifier, priced by the model's
|
|
5459
|
+
* tier — reusing the Meta analysis per-item values so the two nodes stay in
|
|
5460
|
+
* lockstep.
|
|
5461
|
+
*/
|
|
5462
|
+
|
|
5463
|
+
declare const INSTAGRAM_SCRAPE_NODE_TYPE: "instagram-scrape";
|
|
5464
|
+
declare const INSTAGRAM_SCRAPE_MODES: readonly ["profile", "hashtag"];
|
|
5465
|
+
type InstagramScrapeMode = (typeof INSTAGRAM_SCRAPE_MODES)[number];
|
|
5466
|
+
declare function isInstagramScrapeMode(value: unknown): value is InstagramScrapeMode;
|
|
5467
|
+
declare function instagramScrapeMode(value: unknown): InstagramScrapeMode;
|
|
5468
|
+
/** Same window vocabulary as Meta Ads; the Instagram actor honours it server-side (`onlyPostsNewerThan`). */
|
|
5469
|
+
declare const INSTAGRAM_SCRAPE_PERIODS: readonly ["24h", "7d", "30d", "all"];
|
|
5470
|
+
type InstagramScrapePeriod = (typeof INSTAGRAM_SCRAPE_PERIODS)[number];
|
|
5471
|
+
declare const INSTAGRAM_SCRAPE_DEFAULT_COUNT = 20;
|
|
5472
|
+
declare const INSTAGRAM_SCRAPE_MAX_COUNT = 100;
|
|
5473
|
+
declare const INSTAGRAM_SCRAPE_MAX_SOURCES = 5;
|
|
5474
|
+
/** Instagram usernames / hashtags are short; cap a single target well under a URL. */
|
|
5475
|
+
declare const INSTAGRAM_SCRAPE_MAX_TARGET_LENGTH = 200;
|
|
5476
|
+
/** Requested-total buckets — identical shape to Meta (the pricing model is the same). */
|
|
5477
|
+
declare const INSTAGRAM_SCRAPE_TIERS: readonly [10, 20, 50, 100, 200, 500];
|
|
5478
|
+
type InstagramScrapeTier = (typeof INSTAGRAM_SCRAPE_TIERS)[number];
|
|
5479
|
+
declare function instagramScrapeTier(requestedTotal: number): InstagramScrapeTier;
|
|
5480
|
+
/** The analysis tier a request / node asks for, or null when analysis is off. */
|
|
5481
|
+
declare function instagramAnalysisTierFrom(data: {
|
|
5482
|
+
readonly analyze?: unknown;
|
|
5483
|
+
readonly analysisModel?: unknown;
|
|
5484
|
+
}): MetaAdsAnalysisTier | null;
|
|
5485
|
+
/** Per-post settlement SKU for a tier (the bare id is the standard tier). */
|
|
5486
|
+
declare const INSTAGRAM_ANALYSIS_CREDIT_ID: "instagram-analysis";
|
|
5487
|
+
declare function instagramAnalysisCreditId(tier: MetaAdsAnalysisTier): string;
|
|
5488
|
+
interface InstagramScrapeCreditInput {
|
|
5489
|
+
count: number;
|
|
5490
|
+
sources: number;
|
|
5491
|
+
analysis?: MetaAdsAnalysisTier | null;
|
|
5492
|
+
}
|
|
5493
|
+
declare function buildInstagramScrapeCreditId(input: InstagramScrapeCreditInput): string;
|
|
5494
|
+
/**
|
|
5495
|
+
* Cost per SKU — mirror of the backend `STATIC_CREDIT_COSTS` rows / migration,
|
|
5496
|
+
* for the frontend badge / estimator. 1 credit per requested post at every
|
|
5497
|
+
* tier, plus the analysis multiples.
|
|
5498
|
+
*/
|
|
5499
|
+
declare const INSTAGRAM_SCRAPE_CREDIT_COSTS: Record<string, number>;
|
|
5500
|
+
declare const INSTAGRAM_SCRAPE_FALLBACK_CREDIT_ID = "instagram-scrape:20";
|
|
5501
|
+
declare function isInstagramScrapeCount(value: unknown): value is number;
|
|
5502
|
+
/**
|
|
5503
|
+
* Targets (profile usernames/URLs or hashtags) are typed one per line; the
|
|
5504
|
+
* route wants an array. Unlike page urls a target can be a bare username /
|
|
5505
|
+
* `#tag`, so split on lines / commas only (never whitespace), strip a leading
|
|
5506
|
+
* `@` or `#`, dedupe, cap at MAX_SOURCES.
|
|
5507
|
+
*/
|
|
5508
|
+
declare function splitInstagramTargets(value: unknown): string[];
|
|
5509
|
+
/** The featured post index, clamped. */
|
|
5510
|
+
declare function clampInstagramFeaturedIndex(stored: unknown, count: number): number;
|
|
5511
|
+
interface FeaturedInstagramOutputs {
|
|
5512
|
+
readonly text?: string;
|
|
5513
|
+
readonly imageUrl?: string;
|
|
5514
|
+
readonly videoUrl?: string;
|
|
5515
|
+
}
|
|
5516
|
+
/** The featured post's caption (`text`), first image / cover (`image`), and first video (`video`). */
|
|
5517
|
+
declare function featuredInstagramOutputs(json: unknown, featuredIndex: unknown): FeaturedInstagramOutputs;
|
|
5518
|
+
/** The node-data fields a quote reads. */
|
|
5519
|
+
interface InstagramNodeQuoteFields {
|
|
5520
|
+
readonly [key: string]: unknown;
|
|
5521
|
+
readonly mode?: unknown;
|
|
5522
|
+
readonly targets?: unknown;
|
|
5523
|
+
readonly count?: unknown;
|
|
5524
|
+
readonly analyze?: unknown;
|
|
5525
|
+
readonly analysisModel?: unknown;
|
|
5526
|
+
}
|
|
5527
|
+
/** Billable source count: number of targets (min 1). */
|
|
5528
|
+
declare function instagramScrapeSources(data: InstagramNodeQuoteFields): number;
|
|
5529
|
+
/** The ONE credit identifier for a node's current settings. */
|
|
5530
|
+
declare function instagramScrapeCreditIdFromNode(data: InstagramNodeQuoteFields): string;
|
|
5531
|
+
/**
|
|
5532
|
+
* Resolve the credit identifier from an UNVALIDATED request body (the guard
|
|
5533
|
+
* runs before Zod). Lands on the SAME tier the reservation computes.
|
|
5534
|
+
*/
|
|
5535
|
+
declare function resolveInstagramScrapeCreditId(body: unknown): string;
|
|
5536
|
+
|
|
5537
|
+
type InstagramFormat = MetaAdsFormat;
|
|
5538
|
+
|
|
4784
5539
|
/**
|
|
4785
5540
|
* Build a label→output map for `{Node Label}` refs inside condition values
|
|
4786
5541
|
* on filter-list and router nodes.
|
|
@@ -5509,6 +6264,21 @@ interface SafetyRetryPolicy {
|
|
|
5509
6264
|
*/
|
|
5510
6265
|
declare function safetyRetryPolicy(modelId: string): SafetyRetryPolicy;
|
|
5511
6266
|
|
|
6267
|
+
/**
|
|
6268
|
+
* Canonical list of font display names supported by the Remotion renderer.
|
|
6269
|
+
*
|
|
6270
|
+
* Single source of truth shared by:
|
|
6271
|
+
* - the backend Zod schemas (`z.enum(SUPPORTED_FONT_NAMES)`), which CANNOT
|
|
6272
|
+
* import `@nodaro/remotion` (its font-registry pulls the render runtime +
|
|
6273
|
+
* `@remotion/google-fonts` side-effects into a validation path), and
|
|
6274
|
+
* - `packages/remotion/src/lib/font-registry.ts`, which loads each face and
|
|
6275
|
+
* is kept in lock-step with this tuple by a compile-time `satisfies` guard.
|
|
6276
|
+
*
|
|
6277
|
+
* Order/spelling MUST match the keys of the `fonts` object in font-registry.ts.
|
|
6278
|
+
*/
|
|
6279
|
+
declare const SUPPORTED_FONT_NAMES: readonly ["Inter", "Roboto", "Open Sans", "Montserrat", "Poppins", "Raleway", "Nunito", "Lato", "Playfair Display", "Merriweather", "Lora", "EB Garamond", "Bebas Neue", "Oswald", "Anton", "Dancing Script", "Pacifico", "Caveat", "Roboto Mono", "Fira Code", "Rubik", "Heebo", "Cairo", "Tajawal"];
|
|
6280
|
+
type SupportedFontName = (typeof SUPPORTED_FONT_NAMES)[number];
|
|
6281
|
+
|
|
5512
6282
|
/**
|
|
5513
6283
|
* Caption styles for the add-captions node. Static path uses FFmpeg drawtext;
|
|
5514
6284
|
* kinetic styles render via Remotion (BurnCaptions composition).
|
|
@@ -5528,6 +6298,194 @@ type StaticCaptionStyle = (typeof STATIC_CAPTION_STYLES)[number];
|
|
|
5528
6298
|
type KineticCaptionStyle = (typeof KINETIC_CAPTION_STYLES)[number];
|
|
5529
6299
|
type CaptionStyle = (typeof ALL_CAPTION_STYLES)[number];
|
|
5530
6300
|
declare function isKineticCaptionStyle(style: string | undefined | null): style is KineticCaptionStyle;
|
|
6301
|
+
declare const CAPTION_LOOK_IDS: readonly ["outline", "clean"];
|
|
6302
|
+
type CaptionLookId = (typeof CAPTION_LOOK_IDS)[number];
|
|
6303
|
+
/** What an unset `look` means on a KINETIC style. ONE-LINE FLIP: set to "clean"
|
|
6304
|
+
* to make an unset caption render as the pre-look-system lever set (face pinned)
|
|
6305
|
+
* instead. */
|
|
6306
|
+
declare const DEFAULT_CAPTION_LOOK: CaptionLookId;
|
|
6307
|
+
/** What an unset `look` means on the static `subtitle` style: the plain read —
|
|
6308
|
+
* a pinned neutral sans, no outline, no casing. A subtitle must never be left
|
|
6309
|
+
* with NO face: the Remotion render would fall back to headless Chrome's default
|
|
6310
|
+
* SERIF, so adding e.g. a stroke to a subtitle would silently flip its font away
|
|
6311
|
+
* from the sans the plain FFmpeg subtitle draws. */
|
|
6312
|
+
declare const DEFAULT_SUBTITLE_LOOK: CaptionLookId;
|
|
6313
|
+
/**
|
|
6314
|
+
* The lever field names that are MEANINGLESS on a `subtitle` render and so are
|
|
6315
|
+
* rejected on it: `highlightColor` (subtitle has no per-word spoken cursor to
|
|
6316
|
+
* colour) and `animate` (subtitle has no motion to switch off). The STYLING
|
|
6317
|
+
* levers (look/fontFamily/fontWeight/strokeColor/strokeWidth/uppercase/positionY)
|
|
6318
|
+
* are NOT here any more — a `subtitle` carrying any of them now routes to the
|
|
6319
|
+
* Remotion renderer (see `captionRoutesToRemotion`), which applies them exactly
|
|
6320
|
+
* as it does for the kinetic styles. Single source of truth for the route's
|
|
6321
|
+
* reject-on-subtitle guard and the frontend's "don't send a stale lever" strip.
|
|
6322
|
+
* `color`/`backgroundColor` are deliberately absent — FFmpeg subtitle honours
|
|
6323
|
+
* those too.
|
|
6324
|
+
*/
|
|
6325
|
+
declare const KINETIC_ONLY_CAPTION_LEVER_KEYS: readonly ["highlightColor", "animate"];
|
|
6326
|
+
type KineticOnlyCaptionLeverKey = (typeof KINETIC_ONLY_CAPTION_LEVER_KEYS)[number];
|
|
6327
|
+
/**
|
|
6328
|
+
* Does an add-captions request need the Remotion renderer, vs the cheap static
|
|
6329
|
+
* FFmpeg drawtext path? A caption routes to Remotion when it needs anything the
|
|
6330
|
+
* one-fixed-string drawtext pass cannot do:
|
|
6331
|
+
* - per-segment treatments (`segments`),
|
|
6332
|
+
* - a kinetic style,
|
|
6333
|
+
* - any STYLING lever (look/font/weight/stroke/uppercase/position_y/
|
|
6334
|
+
* max_words_per_line) — FFmpeg drawtext can't apply a webfont face, weight,
|
|
6335
|
+
* outline, casing, a free vertical position, or line grouping,
|
|
6336
|
+
* - TIMED captions (a wired `transcript` or an explicit `captions[]` array),
|
|
6337
|
+
* - auto-transcription, i.e. no `text` to burn as one static block.
|
|
6338
|
+
* Plain-`text` `subtitle` with no lever stays on FFmpeg (unchanged, cheap).
|
|
6339
|
+
*
|
|
6340
|
+
* SINGLE SOURCE for BOTH the worker dispatch (handleAddCaptions) AND the credit
|
|
6341
|
+
* id (buildAddCaptionsCreditId) so the renderer and the price never drift: a
|
|
6342
|
+
* Remotion render bills as `add-captions:kinetic`, a plain drawtext burn as
|
|
6343
|
+
* `add-captions`.
|
|
6344
|
+
*/
|
|
6345
|
+
declare function captionRoutesToRemotion(input: {
|
|
6346
|
+
style?: string | null;
|
|
6347
|
+
text?: string | null;
|
|
6348
|
+
segments?: readonly unknown[] | null;
|
|
6349
|
+
transcript?: unknown;
|
|
6350
|
+
captions?: readonly unknown[] | null;
|
|
6351
|
+
look?: unknown;
|
|
6352
|
+
fontFamily?: unknown;
|
|
6353
|
+
fontWeight?: unknown;
|
|
6354
|
+
strokeColor?: unknown;
|
|
6355
|
+
strokeWidth?: unknown;
|
|
6356
|
+
uppercase?: unknown;
|
|
6357
|
+
positionY?: unknown;
|
|
6358
|
+
maxWordsPerLine?: unknown;
|
|
6359
|
+
}): boolean;
|
|
6360
|
+
/**
|
|
6361
|
+
* `maxWordsPerLine` — caps how many words a caption LINE (or tiktok-words page)
|
|
6362
|
+
* may hold, on top of the frame-width budget, sentence ends and pauses that
|
|
6363
|
+
* already close a line. 1–2 gives the punchy CapCut read; unset = fit the width.
|
|
6364
|
+
* Applies to every line/page-grouped render (word-highlight, karaoke, bouncy,
|
|
6365
|
+
* tiktok-words, and a Remotion-rendered subtitle); inert on word-pop (always one
|
|
6366
|
+
* word). Bounds single-sourced here for the route Zod, the plan schema, the MCP
|
|
6367
|
+
* schema, the CLI and the canvas panel.
|
|
6368
|
+
*/
|
|
6369
|
+
declare const CAPTION_MAX_WORDS_PER_LINE_MIN = 1;
|
|
6370
|
+
declare const CAPTION_MAX_WORDS_PER_LINE_MAX = 20;
|
|
6371
|
+
/**
|
|
6372
|
+
* Numeric caption levers and their wire bounds — the SAME limits the route Zod
|
|
6373
|
+
* and the render-plan schema enforce. Single-sourced so the coercion below and
|
|
6374
|
+
* those schemas cannot disagree (a guard test pins the route to these).
|
|
6375
|
+
*/
|
|
6376
|
+
declare const CAPTION_LEVER_BOUNDS: {
|
|
6377
|
+
readonly fontSize: {
|
|
6378
|
+
readonly min: 12;
|
|
6379
|
+
readonly max: 200;
|
|
6380
|
+
};
|
|
6381
|
+
readonly strokeWidth: {
|
|
6382
|
+
readonly min: 0;
|
|
6383
|
+
readonly max: 40;
|
|
6384
|
+
};
|
|
6385
|
+
readonly positionY: {
|
|
6386
|
+
readonly min: 0;
|
|
6387
|
+
readonly max: 100;
|
|
6388
|
+
};
|
|
6389
|
+
readonly fontWeight: {
|
|
6390
|
+
readonly min: 100;
|
|
6391
|
+
readonly max: 900;
|
|
6392
|
+
};
|
|
6393
|
+
readonly maxWordsPerLine: {
|
|
6394
|
+
readonly min: 1;
|
|
6395
|
+
readonly max: 20;
|
|
6396
|
+
};
|
|
6397
|
+
};
|
|
6398
|
+
/**
|
|
6399
|
+
* COERCE, never reject: bring the numeric caption levers of node data that
|
|
6400
|
+
* never passed a Zod (a workflow written by an agent, an import, a template, a
|
|
6401
|
+
* FieldMapping) into the range the render plan accepts. Without this an
|
|
6402
|
+
* out-of-range value only surfaces when the plan schema throws — mid-run, after
|
|
6403
|
+
* credits are reserved. A `null` / non-finite / non-numeric value is DROPPED (the
|
|
6404
|
+
* render default applies); an out-of-range one is clamped; `fontWeight` snaps to the
|
|
6405
|
+
* nearest 100 and `maxWordsPerLine` to a whole number. Pure; returns a copy and
|
|
6406
|
+
* leaves every other field untouched. Applied by payload-builder to the node's
|
|
6407
|
+
* top level and to each `segments[]` entry.
|
|
6408
|
+
*/
|
|
6409
|
+
declare function normalizeCaptionNumericLevers<T extends Record<string, unknown>>(input: T): T;
|
|
6410
|
+
/** The concrete levers a look (and any explicit override) resolves to. */
|
|
6411
|
+
interface CaptionLookLevers {
|
|
6412
|
+
fontFamily?: SupportedFontName;
|
|
6413
|
+
fontWeight?: number;
|
|
6414
|
+
color?: string;
|
|
6415
|
+
backgroundColor?: string;
|
|
6416
|
+
strokeColor?: string;
|
|
6417
|
+
strokeWidth?: number;
|
|
6418
|
+
highlightColor?: string;
|
|
6419
|
+
uppercase?: boolean;
|
|
6420
|
+
}
|
|
6421
|
+
/** Outline width = 10% of font size (min 2px). `paint-order: stroke fill` puts
|
|
6422
|
+
* half the stroke OUTSIDE the glyph, so the visible rim is ~5% of font size. */
|
|
6423
|
+
declare function autoStrokeWidth(fontSize: number): number;
|
|
6424
|
+
/** Each look is a function of font size (so the outline tracks the text size). */
|
|
6425
|
+
declare const CAPTION_LOOKS: Record<CaptionLookId, (fontSize: number) => CaptionLookLevers>;
|
|
6426
|
+
/**
|
|
6427
|
+
* Resolve a look + explicit overrides into concrete levers. An explicit lever
|
|
6428
|
+
* always wins over the look; `strokeWidth: 0` explicitly means "no outline".
|
|
6429
|
+
* The plan then carries concrete levers only — nothing to resolve at render.
|
|
6430
|
+
*/
|
|
6431
|
+
declare function resolveCaptionLook(look: CaptionLookId | undefined, explicit: CaptionLookLevers, fontSize: number): CaptionLookLevers;
|
|
6432
|
+
/**
|
|
6433
|
+
* Resolve the concrete render levers for a caption, applying the DEFAULT look the
|
|
6434
|
+
* way each STYLE expects: an unset `look` means `outline` on a kinetic style (the
|
|
6435
|
+
* TikTok/CapCut read) and `clean` on the static `subtitle` (the plain read — a
|
|
6436
|
+
* pinned neutral sans, no outline, no casing). So a subtitle that routes to
|
|
6437
|
+
* Remotion never inherits the outline house-style unless asked, AND is never left
|
|
6438
|
+
* with no face at all (which renders as headless Chrome's default serif). A named
|
|
6439
|
+
* look always wins; explicit levers override either. SINGLE SOURCE for the worker
|
|
6440
|
+
* top-level levers, the per-segment resolver, and the frontend config/preview
|
|
6441
|
+
* mirror, so the per-style default can't drift between them.
|
|
6442
|
+
*/
|
|
6443
|
+
declare function resolveCaptionLevers(style: string | undefined | null, look: CaptionLookId | undefined, explicit: CaptionLookLevers, fontSize: number): CaptionLookLevers;
|
|
6444
|
+
|
|
6445
|
+
/**
|
|
6446
|
+
* Pre-run checks for the transcribe → captions chain.
|
|
6447
|
+
*
|
|
6448
|
+
* A transcription lane that cannot return per-word timings (`whisper`) still
|
|
6449
|
+
* RUNS and BILLS — it just hands back phrase segments with `words: []`. Anything
|
|
6450
|
+
* downstream that needs words then fails AFTER the transcription was paid for.
|
|
6451
|
+
* These helpers let every run surface (the editor's DAG, the backend
|
|
6452
|
+
* orchestrator, single-node Run) refuse BEFORE any spend, with one message.
|
|
6453
|
+
* Pure: no I/O, no framework types — callers pass plain nodes/edges.
|
|
6454
|
+
*/
|
|
6455
|
+
/** The refusal for a lane that can't return word timings; `null` when it can.
|
|
6456
|
+
* An absent provider resolves to the transcribe NODE default. */
|
|
6457
|
+
declare function transcribeWordTimestampsRefusal(provider: string | null | undefined): string | null;
|
|
6458
|
+
interface PreflightGraphNode {
|
|
6459
|
+
readonly id: string;
|
|
6460
|
+
readonly type?: string | null;
|
|
6461
|
+
readonly data?: Record<string, unknown> | null;
|
|
6462
|
+
}
|
|
6463
|
+
interface PreflightGraphEdge {
|
|
6464
|
+
readonly source: string;
|
|
6465
|
+
readonly target: string;
|
|
6466
|
+
readonly sourceHandle?: string | null;
|
|
6467
|
+
readonly targetHandle?: string | null;
|
|
6468
|
+
}
|
|
6469
|
+
interface WordlessTranscriptFeed {
|
|
6470
|
+
readonly transcribeNodeId: string;
|
|
6471
|
+
/** The add-captions node that would receive a transcript with no words. */
|
|
6472
|
+
readonly consumerNodeId: string;
|
|
6473
|
+
readonly provider: string;
|
|
6474
|
+
readonly message: string;
|
|
6475
|
+
}
|
|
6476
|
+
/**
|
|
6477
|
+
* Every transcribe node on a word-INCAPABLE lane whose `json` output reaches an
|
|
6478
|
+
* add-captions `transcript` input — directly, or through apply-edl, which remaps
|
|
6479
|
+
* the transcript and re-emits it on its own `json` handle. add-captions rejects a
|
|
6480
|
+
* transcript with no words, so such a run can only fail, after paying for the
|
|
6481
|
+
* transcription. Skipped nodes are ignored on both ends.
|
|
6482
|
+
*
|
|
6483
|
+
* The engine is read from node data and nothing else can change it: `provider`
|
|
6484
|
+
* is not a mappable field on transcribe, so what this check sees IS what runs.
|
|
6485
|
+
* add-captions' own "transcript has no words" guard stays as defence in depth
|
|
6486
|
+
* for a transcript that arrives from anywhere other than a transcribe node.
|
|
6487
|
+
*/
|
|
6488
|
+
declare function findWordlessTranscriptFeeds(nodes: readonly PreflightGraphNode[], edges: readonly PreflightGraphEdge[]): WordlessTranscriptFeed[];
|
|
5531
6489
|
|
|
5532
6490
|
/**
|
|
5533
6491
|
* i18n resolver + lazy loader for parameter-node picker labels/descriptions.
|
|
@@ -5746,6 +6704,8 @@ interface WorkflowExport {
|
|
|
5746
6704
|
/** Present only when the bundle references media another instance cannot fetch. */
|
|
5747
6705
|
portability?: WorkflowPortability;
|
|
5748
6706
|
}
|
|
6707
|
+
/** Clear owner-bound references (credential / connection ids). Returns new node objects; inputs are not mutated. */
|
|
6708
|
+
declare function stripUnownedRefs(nodes: GenericNode[]): GenericNode[];
|
|
5749
6709
|
/** Strip generated/transient content from nodes for template export. Returns new node objects; inputs are not mutated. */
|
|
5750
6710
|
declare function stripExportContent(nodes: GenericNode[]): GenericNode[];
|
|
5751
6711
|
|
|
@@ -9613,6 +10573,102 @@ declare const FAN_OUT_EACH_TYPES: ReadonlySet<string>;
|
|
|
9613
10573
|
*/
|
|
9614
10574
|
declare const SUNO_TRACK_SOURCE_TYPES: ReadonlySet<string>;
|
|
9615
10575
|
|
|
10576
|
+
/**
|
|
10577
|
+
* The Video URL node (`youtube-video`) and the social-video import path —
|
|
10578
|
+
* structural vocabulary shared by the canvas, the orchestrator and the
|
|
10579
|
+
* download routes. Host names and a node-output rule only; no prompt content.
|
|
10580
|
+
*
|
|
10581
|
+
* ONE list, three readers:
|
|
10582
|
+
* - the backend's yt-dlp routes (`lib/url-validator.ts` re-exports these),
|
|
10583
|
+
* where the list IS the SSRF gate — yt-dlp does its own DNS + HTTP, so
|
|
10584
|
+
* nothing but this exact-suffix match stands between a pasted link and an
|
|
10585
|
+
* internal address;
|
|
10586
|
+
* - the editor, which decides from the same list whether a pasted link is
|
|
10587
|
+
* one it should download (it must never offer a host the server refuses,
|
|
10588
|
+
* nor sit on one the server accepts);
|
|
10589
|
+
* - both workflow engines, which read a node's output through
|
|
10590
|
+
* `resolveVideoLinkOutput`.
|
|
10591
|
+
*
|
|
10592
|
+
* ⚠️ Adding a host here ADMITS it to a server-side fetch. It is a security
|
|
10593
|
+
* decision, not a UI one — only fixed, reputable domains whose DNS an attacker
|
|
10594
|
+
* cannot control.
|
|
10595
|
+
*/
|
|
10596
|
+
declare const SOCIAL_VIDEO_HOSTS: readonly ["youtube.com", "youtu.be", "tiktok.com", "instagram.com", "twitter.com", "x.com", "facebook.com", "fb.watch", "fb.com"];
|
|
10597
|
+
/** YouTube-only subset (the metadata probe and the client ladder are YouTube-only). */
|
|
10598
|
+
declare const YOUTUBE_HOSTS: readonly ["youtube.com", "youtu.be"];
|
|
10599
|
+
/** Instagram-only subset (the download path's proxy failover is Instagram-scoped). */
|
|
10600
|
+
declare const INSTAGRAM_HOSTS: readonly ["instagram.com"];
|
|
10601
|
+
/**
|
|
10602
|
+
* Exact registrable-domain match against an allowlist: the domain itself or a
|
|
10603
|
+
* true subdomain (`www.youtube.com`, `m.youtu.be`). A host that merely
|
|
10604
|
+
* CONTAINS an allowlisted name (`evilyoutube.com`, `youtube.com.attacker.example`,
|
|
10605
|
+
* or `netflix.com` for `x.com`) does not match.
|
|
10606
|
+
*/
|
|
10607
|
+
declare function hostnameMatchesAllowlist(hostname: string, domains: readonly string[]): boolean;
|
|
10608
|
+
/**
|
|
10609
|
+
* True when the RAW link carries a character that URL parsers read differently:
|
|
10610
|
+
* a backslash or an ASCII control character.
|
|
10611
|
+
*
|
|
10612
|
+
* Every check in this file parses the WHATWG way (Node, the browser), where a
|
|
10613
|
+
* backslash in an http(s) URL is a slash — `https://tiktok.com\@10.0.0.1/x` has
|
|
10614
|
+
* host `tiktok.com`. A parser that ends the authority at `/` alone reads the
|
|
10615
|
+
* same string as a user name at host `10.0.0.1`. The download tools are handed
|
|
10616
|
+
* the raw string and do their own parsing, DNS and HTTP, so a link the two
|
|
10617
|
+
* readings can disagree on is refused outright rather than reasoned about. Tabs
|
|
10618
|
+
* and newlines are dropped silently by one parser and kept by another — same
|
|
10619
|
+
* answer. No real video link contains any of these.
|
|
10620
|
+
*/
|
|
10621
|
+
declare function hasUrlParserHazard(url: string): boolean;
|
|
10622
|
+
/** True for an http(s) URL whose host is on the allowlist. Never throws. */
|
|
10623
|
+
declare function isSocialVideoUrl(url: string, domains?: readonly string[]): boolean;
|
|
10624
|
+
type VideoLinkPlatform = "youtube" | "facebook" | "tiktok" | "instagram" | "twitter" | "unknown";
|
|
10625
|
+
/** Which supported platform a link belongs to — by exact host, never by substring. */
|
|
10626
|
+
declare function detectVideoLinkPlatform(url: string): VideoLinkPlatform;
|
|
10627
|
+
/**
|
|
10628
|
+
* Node types that can use a Video URL node WITHOUT its downloaded file, because
|
|
10629
|
+
* they never read the video: `suno-cover` and `transcribe` take the node's
|
|
10630
|
+
* separately-fetched audio track (`downloadedAudioUrl`), and `dubbing` hands the
|
|
10631
|
+
* page link to a provider that fetches it itself. A run whose only consumers of
|
|
10632
|
+
* a link are these must not be made to download — or to choose a part of — a
|
|
10633
|
+
* video nobody will look at. Structural vocabulary: it mirrors those three
|
|
10634
|
+
* server-side readers; add a type here only together with its reader.
|
|
10635
|
+
*/
|
|
10636
|
+
declare const VIDEO_LINK_TOLERANT_CONSUMER_TYPES: ReadonlySet<string>;
|
|
10637
|
+
/**
|
|
10638
|
+
* The fields of a Video URL node's data that decide what it emits. Open-ended
|
|
10639
|
+
* on purpose: both engines hand over the node's whole `data` bag, and a closed
|
|
10640
|
+
* shape with only optional members would refuse it as having nothing in common.
|
|
10641
|
+
*/
|
|
10642
|
+
interface VideoLinkNodeFields {
|
|
10643
|
+
readonly youtubeUrl?: unknown;
|
|
10644
|
+
readonly downloadedVideoUrl?: unknown;
|
|
10645
|
+
readonly downloadedFromUrl?: unknown;
|
|
10646
|
+
readonly [key: string]: unknown;
|
|
10647
|
+
}
|
|
10648
|
+
/**
|
|
10649
|
+
* The stored file that belongs to the node's CURRENT link, or undefined.
|
|
10650
|
+
*
|
|
10651
|
+
* `downloadedFromUrl` binds a file to the link it came from. The editor clears
|
|
10652
|
+
* the file whenever the link is edited, but a link can also change where no
|
|
10653
|
+
* editor is looking — an agent or an import rewriting the workflow JSON — and
|
|
10654
|
+
* without the binding the node would go on emitting the PREVIOUS video, which
|
|
10655
|
+
* is worse than emitting none. A node saved before the field existed has no
|
|
10656
|
+
* binding and is trusted as it always was.
|
|
10657
|
+
*/
|
|
10658
|
+
declare function videoLinkDownloadedFile(data: VideoLinkNodeFields): string | undefined;
|
|
10659
|
+
/**
|
|
10660
|
+
* What a Video URL node emits on its `video` handle: the downloaded file when
|
|
10661
|
+
* one matches the link, else the link itself. The fallback is load-bearing — a
|
|
10662
|
+
* DIRECT file link (`https://cdn…/clip.mp4`) is a legitimate value of the URL
|
|
10663
|
+
* field and is never downloaded, so it must pass through.
|
|
10664
|
+
*/
|
|
10665
|
+
declare function resolveVideoLinkOutput(data: VideoLinkNodeFields): string | undefined;
|
|
10666
|
+
/**
|
|
10667
|
+
* True when the node holds a social link with no file for it yet — the state
|
|
10668
|
+
* in which its output is a web PAGE, which no video consumer can read.
|
|
10669
|
+
*/
|
|
10670
|
+
declare function videoLinkNeedsDownload(data: VideoLinkNodeFields): boolean;
|
|
10671
|
+
|
|
9616
10672
|
/**
|
|
9617
10673
|
* ElevenLabs speech-to-speech (voice changer) models — single source of truth
|
|
9618
10674
|
* for the Voice Changer node's model picker (frontend config panel) AND the
|
|
@@ -10328,21 +11384,6 @@ declare const AUDIO_FX_PRESET_LABELS: Record<AudioFxPreset, string>;
|
|
|
10328
11384
|
/** Presets that apply convolution reverb (afir + inline-synth IR). */
|
|
10329
11385
|
declare const AUDIO_FX_REVERB_PRESETS: ReadonlySet<AudioFxPreset>;
|
|
10330
11386
|
|
|
10331
|
-
/**
|
|
10332
|
-
* Canonical list of font display names supported by the Remotion renderer.
|
|
10333
|
-
*
|
|
10334
|
-
* Single source of truth shared by:
|
|
10335
|
-
* - the backend Zod schemas (`z.enum(SUPPORTED_FONT_NAMES)`), which CANNOT
|
|
10336
|
-
* import `@nodaro/remotion` (its font-registry pulls the render runtime +
|
|
10337
|
-
* `@remotion/google-fonts` side-effects into a validation path), and
|
|
10338
|
-
* - `packages/remotion/src/lib/font-registry.ts`, which loads each face and
|
|
10339
|
-
* is kept in lock-step with this tuple by a compile-time `satisfies` guard.
|
|
10340
|
-
*
|
|
10341
|
-
* Order/spelling MUST match the keys of the `fonts` object in font-registry.ts.
|
|
10342
|
-
*/
|
|
10343
|
-
declare const SUPPORTED_FONT_NAMES: readonly ["Inter", "Roboto", "Open Sans", "Montserrat", "Poppins", "Raleway", "Nunito", "Lato", "Playfair Display", "Merriweather", "Lora", "EB Garamond", "Bebas Neue", "Oswald", "Anton", "Dancing Script", "Pacifico", "Caveat", "Roboto Mono", "Fira Code", "Rubik", "Heebo", "Cairo", "Tajawal"];
|
|
10344
|
-
type SupportedFontName = (typeof SUPPORTED_FONT_NAMES)[number];
|
|
10345
|
-
|
|
10346
11387
|
/**
|
|
10347
11388
|
* Image Overlay — the layer KINDS a node can carry beyond a wired image, and
|
|
10348
11389
|
* the wire contract for each. Shared by the route's Zod, the MCP tool, the
|
|
@@ -10695,7 +11736,10 @@ declare const AGGREGATE_LANE_SOURCE_TYPES: ReadonlySet<string>;
|
|
|
10695
11736
|
* type for every `(type, handle)` pair EXCEPT:
|
|
10696
11737
|
* - an entity `image` handle → `"upload-image"` (a plain image producer);
|
|
10697
11738
|
* - an aggregate (group / collect) lane handle → the plain producer of that
|
|
10698
|
-
* lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE)
|
|
11739
|
+
* lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE);
|
|
11740
|
+
* - a Meta Ads `text` / `image` / `video` handle → the plain producer of
|
|
11741
|
+
* that type (see META_ADS_HANDLE_EFFECTIVE_TYPE); its `json` handle keeps
|
|
11742
|
+
* the raw type.
|
|
10699
11743
|
* Pure — safe for both frontend and backend.
|
|
10700
11744
|
*/
|
|
10701
11745
|
declare function resolveEffectiveSourceType(rawSourceType: string | undefined | null, sourceHandleId: string | undefined | null): string;
|
|
@@ -11048,12 +12092,12 @@ declare const windowSceneSchema: z.ZodObject<{
|
|
|
11048
12092
|
"eye-level": "eye-level";
|
|
11049
12093
|
high: "high";
|
|
11050
12094
|
low: "low";
|
|
12095
|
+
profile: "profile";
|
|
11051
12096
|
pov: "pov";
|
|
11052
12097
|
dutch: "dutch";
|
|
11053
12098
|
overhead: "overhead";
|
|
11054
12099
|
"worms-eye": "worms-eye";
|
|
11055
12100
|
"over-the-shoulder": "over-the-shoulder";
|
|
11056
|
-
profile: "profile";
|
|
11057
12101
|
"from-behind": "from-behind";
|
|
11058
12102
|
}>>;
|
|
11059
12103
|
speed: z.ZodOptional<z.ZodEnum<{
|
|
@@ -11178,12 +12222,12 @@ declare const windowAnalysisSchema: z.ZodObject<{
|
|
|
11178
12222
|
"eye-level": "eye-level";
|
|
11179
12223
|
high: "high";
|
|
11180
12224
|
low: "low";
|
|
12225
|
+
profile: "profile";
|
|
11181
12226
|
pov: "pov";
|
|
11182
12227
|
dutch: "dutch";
|
|
11183
12228
|
overhead: "overhead";
|
|
11184
12229
|
"worms-eye": "worms-eye";
|
|
11185
12230
|
"over-the-shoulder": "over-the-shoulder";
|
|
11186
|
-
profile: "profile";
|
|
11187
12231
|
"from-behind": "from-behind";
|
|
11188
12232
|
}>>;
|
|
11189
12233
|
speed: z.ZodOptional<z.ZodEnum<{
|
|
@@ -11269,12 +12313,12 @@ declare const analyzedSceneSchema: z.ZodObject<{
|
|
|
11269
12313
|
"eye-level": "eye-level";
|
|
11270
12314
|
high: "high";
|
|
11271
12315
|
low: "low";
|
|
12316
|
+
profile: "profile";
|
|
11272
12317
|
pov: "pov";
|
|
11273
12318
|
dutch: "dutch";
|
|
11274
12319
|
overhead: "overhead";
|
|
11275
12320
|
"worms-eye": "worms-eye";
|
|
11276
12321
|
"over-the-shoulder": "over-the-shoulder";
|
|
11277
|
-
profile: "profile";
|
|
11278
12322
|
"from-behind": "from-behind";
|
|
11279
12323
|
}>>;
|
|
11280
12324
|
speed: z.ZodOptional<z.ZodEnum<{
|
|
@@ -11409,12 +12453,12 @@ declare const videoAnalysisResultSchema: z.ZodObject<{
|
|
|
11409
12453
|
"eye-level": "eye-level";
|
|
11410
12454
|
high: "high";
|
|
11411
12455
|
low: "low";
|
|
12456
|
+
profile: "profile";
|
|
11412
12457
|
pov: "pov";
|
|
11413
12458
|
dutch: "dutch";
|
|
11414
12459
|
overhead: "overhead";
|
|
11415
12460
|
"worms-eye": "worms-eye";
|
|
11416
12461
|
"over-the-shoulder": "over-the-shoulder";
|
|
11417
|
-
profile: "profile";
|
|
11418
12462
|
"from-behind": "from-behind";
|
|
11419
12463
|
}>>;
|
|
11420
12464
|
speed: z.ZodOptional<z.ZodEnum<{
|
|
@@ -16969,4 +18013,489 @@ declare function resolveFrameDelivery(args: {
|
|
|
16969
18013
|
supportsReferenceImages: boolean;
|
|
16970
18014
|
}): Exclude<FrameDelivery, "auto">;
|
|
16971
18015
|
|
|
16972
|
-
export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionMetadata, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_FRAME_DELIVERY, DEFAULT_FRAME_FIT, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_OVERLAY_QR, DEFAULT_OVERLAY_SHAPE, DEFAULT_OVERLAY_TEXT, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_SUNO_MODEL, DEFAULT_TEMPLATE_CATEGORY, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXECUTION_GRAPH_COMPOSED_PARAMETER_TYPES, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntitySlotOwner, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_DELIVERIES, FRAME_DELIVERY_BY_PROVIDER, FRAME_FITS, FRAME_FIT_STRETCH_TOLERANCE, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FavoriteListingResult, type FeaturedEntity, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FrameDelivery, type FrameFit, type FrameFitPlan, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_OVERLAY_BASE_CREDITS, IMAGE_OVERLAY_VARIANT_CREDITS, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, type KieApiFormat, type KineticCaptionStyle, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LEGACY_TEMPLATE_CATEGORIES, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_KINDS, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeExecutionStateWire, type NodeExecutionStatus, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_BEARING_NODE_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, OVERLAY_ANCHORS, OVERLAY_FONTS, OVERLAY_FONT_IDS, OVERLAY_IMAGE_MASKS, OVERLAY_LAYER_KINDS, OVERLAY_MAX_VARIANTS, OVERLAY_PLATFORMS, OVERLAY_PLATFORM_IDS, OVERLAY_SHAPES, OVERLAY_TEXT_ALIGNS, OVERLAY_VARIANT_HANDLE_PREFIX, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, type OverlayAnchor, type OverlayFontId, type OverlayImageEffects, type OverlayImageMask, type OverlayLayerKind, type OverlayPlatformId, type OverlayPlatformPreset, type OverlayPlatformZone, type OverlayQrStyle, type OverlayShape, type OverlayShapeElement, type OverlayShapeStyle, type OverlayTextAlign, type OverlayTextStyle, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PRO3D_RENDER_ASPECT_RATIOS, PRO3D_RENDER_CREDIT_ID, PRO3D_RENDER_DEFAULT_ENGINE, PRO3D_RENDER_DEFAULT_QUALITY, PRO3D_RENDER_DEFAULT_REPAIR_PASSES, PRO3D_RENDER_DEFAULT_STYLE, PRO3D_RENDER_ENGINES, PRO3D_RENDER_LABEL, PRO3D_RENDER_LIMITS, PRO3D_RENDER_MAX_REPAIR_PASSES, PRO3D_RENDER_MIN_REPAIR_PASSES, PRO3D_RENDER_NODE_TYPE, PRO3D_RENDER_PROMPT_MAX, PRO3D_RENDER_QUALITY_PROFILES, PRO3D_RENDER_SOURCE_KINDS, PRO3D_RENDER_STYLES, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type Pro3DRenderAspectRatio, type Pro3DRenderCapabilities, type Pro3DRenderEngine, type Pro3DRenderJobOutput, type Pro3DRenderLocalExportSource, type Pro3DRenderPromptSource, type Pro3DRenderQuality, type Pro3DRenderQuote, type Pro3DRenderQuoteLine, type Pro3DRenderResultMetadata, type Pro3DRenderSceneSource, type Pro3DRenderShotStill, type Pro3DRenderSource, type Pro3DRenderSourceInput, type Pro3DRenderSourceKind, type Pro3DRenderSourceResult, type Pro3DRenderStyle, type Pro3DRenderValidationWarning, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, RENDER_VIDEO_CREDIT_ID, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE3D_ASSERTION_RESTORED_CODE, SCENE3D_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, SCENE3D_AUTHORING_ASSUMPTION_CODE, SCENE3D_AUTHORING_ENGINES, SCENE3D_BASIC_ENGINE, SCENE3D_BASIC_SCHEMA_VERSION, SCENE3D_CAMERA_TRACK_FORMAT, SCENE3D_CAMERA_TRACK_LIMITS, SCENE3D_CAMERA_TRACK_VERSION, SCENE3D_CLAY_LIGHTING_PRESETS, SCENE3D_DEFAULT_ADVANCED_ENGINE, SCENE3D_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_ENTITY_CAPABILITIES, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_ENTITY_CAPABILITIES, SCENE3D_ENTITY_ROLES, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_GLB_EXTRAS_ALLOWLIST, SCENE3D_GLB_EXTRAS_ENTITY_ID, SCENE3D_GLB_EXTRAS_MATERIAL_ROLE, SCENE3D_GLB_EXTRAS_SUBPART_ID, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_PRIMITIVE_MATERIAL_ROLE, SCENE3D_REMEDY_AUTO_APPLIED_CODE, SCENE3D_RENDERER_ASSET_KINDS, SCENE3D_RENDER_BASE_MAX_PX, SCENE3D_RENDER_TIERS, SCENE3D_RENDER_TIER_MULTIPLIERS, SCENE3D_RENDER_XLARGE_MIN_AREA_PX, SCENE3D_REVIEW_REFUSED_CODE, SCENE3D_REVIEW_UNAVAILABLE_CODE, SCENE3D_REVIEW_UNAVAILABLE_REASONS, SCENE3D_SCHEMA_VERSION, SCENE3D_SCHEMA_VERSION_V2, SCENE3D_SUPPORTED_SCHEMA_VERSIONS, SCENE3D_V2_CONTENT_HASH_EXCLUDED, SCENE3D_V2_ENGINES, SCENE3D_V2_LIMITS, SCENE3D_V2_OVERRIDE_OPERATION_VERSION, SCENE3D_V2_PRIMITIVES, SCENE_HELPER_NAMES, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_DEPENDENT_FRAMES_CAPABILITY, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ACTIVE_MODELS, SUNO_ADD_TRACK_MODELS, SUNO_DURATION_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_LEGACY_MODELS, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_CREDIT_KEYS, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DAnchor, type Scene3DAssetAnimation, type Scene3DAssetKind, type Scene3DAssetRef, type Scene3DAssetRole, type Scene3DAuthoringDelivery, type Scene3DAuthoringDeliveryMetadata, type Scene3DAuthoringEngine, type Scene3DAuthoringValidation, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, type Scene3DDeliveryWarning, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DEngineChoice, type Scene3DEngineChoiceInput, type Scene3DEngineChoiceRefusalCode, type Scene3DEngineRequestFields, type Scene3DEntityCapability, type Scene3DEntityRole, type Scene3DEntityV2, type Scene3DEntityVisual, type Scene3DInputAsset, type Scene3DJobOutput, type Scene3DJobOutputAny, type Scene3DJobOutputV2, type Scene3DKnownEngine, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DMaterialBinding, type Scene3DNormalizedAssetStats, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DOverride, type Scene3DOverrideSpace, type Scene3DParseResult, type Scene3DPlan, type Scene3DPlanV1, type Scene3DPlanV2, type Scene3DPrimitive, type Scene3DProvenance, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, type Scene3DRenderTier, type Scene3DRestoredAssertion, type Scene3DReviewFindings, type Scene3DReviewObjection, type Scene3DReviewRefused, type Scene3DReviewUnavailable, type Scene3DReviewUnavailableReason, type Scene3DReviewVerdict, type Scene3DSemanticIssue, type Scene3DShot, type Scene3DSupportedSchemaVersion, type Scene3DV2EditOperation, type Scene3DV2EditOptions, type Scene3DV2EditResult, type Scene3DV2OverrideInput, type Scene3DV2Primitive, type Scene3DV2ResourceUsage, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, SequenceExecutionRequiredError, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TEMPLATE_CATEGORIES, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TemplateCategory, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeProvider, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_ONLY_PARAMETER_NODE_TYPES, VIDEO_OUTPUT_CANVAS, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vec3, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoModeAlias, type VideoModelCapabilities, type VideoOutputCanvas, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, aggregateByType, aiAvatarReserveCreditId, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applyScene3DEditOperations, applyScene3DV2EditOperations, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, assertCanvasExecutionAllowed, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildPro3DRenderSource, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalScene3DPlanV2Json, canonicalVarName, centreCropToAspect, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, computeFrameFitPlan, computeScene3DPlanV2ContentHash, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupByKindAndFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageOverlayBillableVariants, imageOverlayCredits, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isKnownScene3DEngine, isLegacySunoModel, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isPro3DRenderJobOutput, isPro3DRenderQuote, isPro3DRenderRenderOnly, isRtlText, isScene3DAuthoringEngine, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DReviewUnavailableReason, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, isTemplateCategory, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, measuredCanvasCombinations, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, minimalRatioDimensions, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, newScene3DRevisionId, nodeStateMayCarryOutput, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeTemplateCategory, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, overlayFontById, overlayImageEffectsSchema, overlayPlatformById, overlayQrStyleSchema, overlayShapeElement, overlayShapeStyleSchema, overlayStrokeSchema, overlayTextStyleSchema, overlayVariantHandle, overlayVariantIdFromHandle, parseAspectToken, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedOutputDurationSec, pricedVideoSelection, pro3DRenderCoreOutputSchema, pro3DRenderFrameUnit, pro3DRenderJobOutputSchema, pro3DRenderProducedSchemaVersion, pro3DRenderQuoteSchema, pro3DRenderReviewVerdictSchema, pro3DRenderShotStillSchema, pro3DRenderShotStills, pro3DRenderTimingOverrides, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, renderVideoCreditId, requiresSequenceExecution, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveFrameDelivery, resolveFrameFitAspect, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolveOutputCanvas, resolvePipelineModel, resolveRelativeWindowToken, resolveScene3DAuthoringEngine, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTemplateCategory, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DAcceptedSchemaVersionsSchema, scene3DAnchorNameSchema, scene3DAnchorSchema, scene3DAnyPlanSchema, scene3DAssetAnimationSchema, scene3DAssetIdSchema, scene3DAssetRefSchema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSampleSchema, scene3DCameraSchema, scene3DCameraTrackIssues, scene3DCameraTrackObjectSchema, scene3DCameraTrackPlanIssues, scene3DCameraTrackSchema, scene3DClayLightingSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DEngineIdSchema, scene3DEntityAcceptsOverlay, scene3DEntityCapabilitySchema, scene3DEntityV2Schema, scene3DEntityVisualSchema, scene3DIdSchema, scene3DInputAssetSchema, scene3DInputAssetsForEngine, scene3DInputAssetsSchema, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DNodeNameSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, scene3DRenderTier, scene3DRenderTierCredits, scene3DReviewNote, scene3DReviewVerdictOf, scene3DSampleForFrame, scene3DSha256Schema, scene3DShotForFrame, scene3DShotIndexForFrame, scene3DShotSchema, scene3DUrlSchema, scene3DV2AdmissionIssues, scene3DV2EditOperationSchema, scene3DV2EditOperationsSchema, scene3DV2HierarchyDepth, scene3DV2NormalizationIssues, scene3DV2OverrideInputSchema, scene3DV2ResourceUsage, scene3DVersionTokenSchema, scene3DZodIssues, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, sizeVec3Schema, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, summarizeScene3DOperations, sunoCreditType, sunoModelHonoursDuration, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, templateCategoryStoredValues, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, verifyScene3DPlanV2ContentHash, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|
|
18016
|
+
/**
|
|
18017
|
+
* Speaker-view presentation registries — the STRUCTURAL vocabulary behind an
|
|
18018
|
+
* EDL segment's `layout` (see `EdlLayout` in `edl.ts`).
|
|
18019
|
+
*
|
|
18020
|
+
* What lives here is structure only: which layout ids exist, how many slots
|
|
18021
|
+
* each takes, which output aspects a renderer exists for, which speaker-switch
|
|
18022
|
+
* ids exist and whether they consume output time, and the atomic emphasis
|
|
18023
|
+
* styles. Taste — default emphasis, which transitions are allowed or preferred
|
|
18024
|
+
* for a show, timing defaults — is deliberately NOT here.
|
|
18025
|
+
*
|
|
18026
|
+
* Every list is widened ADDITIVELY. That is why a finding judged against one of
|
|
18027
|
+
* these registries is a validation WARNING, never an issue: an older validator
|
|
18028
|
+
* must never reject an EDL written by a newer producer that knows more ids.
|
|
18029
|
+
* An executor that cannot honour an id refuses it itself.
|
|
18030
|
+
*/
|
|
18031
|
+
|
|
18032
|
+
declare const EDL_TARGET_ASPECTS: readonly ["16:9", "9:16", "1:1", "4:5"];
|
|
18033
|
+
type EdlTargetAspect = (typeof EDL_TARGET_ASPECTS)[number];
|
|
18034
|
+
/** Narrow an open `Edl.meta.targetAspect` (or any value) to a known aspect. */
|
|
18035
|
+
declare function isEdlTargetAspect(v: unknown): v is EdlTargetAspect;
|
|
18036
|
+
interface SpeakerLayoutSheet {
|
|
18037
|
+
readonly id: string;
|
|
18038
|
+
/** Inclusive slot-count range when a segment lists `layout.slots`. */
|
|
18039
|
+
readonly minSlots: number;
|
|
18040
|
+
readonly maxSlots: number;
|
|
18041
|
+
/** The output aspects this layout is DRAWN for (a renderer exists) — not "looks good". Widened additively. */
|
|
18042
|
+
readonly aspects: readonly EdlTargetAspect[];
|
|
18043
|
+
}
|
|
18044
|
+
declare const SPEAKER_LAYOUTS: readonly SpeakerLayoutSheet[];
|
|
18045
|
+
declare const SPEAKER_LAYOUT_IDS: readonly string[];
|
|
18046
|
+
declare function getSpeakerLayout(id: string): SpeakerLayoutSheet | undefined;
|
|
18047
|
+
/** Omitted query fields are unconstrained. */
|
|
18048
|
+
declare function speakerLayoutAllows(sheet: SpeakerLayoutSheet, q: {
|
|
18049
|
+
readonly aspect?: EdlTargetAspect;
|
|
18050
|
+
readonly slotCount?: number;
|
|
18051
|
+
}): boolean;
|
|
18052
|
+
/** D17: a switch consumes output time iff it is in the `xfade:*` family. THE one overlap rule (edl.ts uses it). */
|
|
18053
|
+
declare function speakerSwitchOverlaps(type: string): boolean;
|
|
18054
|
+
interface SpeakerSwitchSheet {
|
|
18055
|
+
/** "cut" | "pan" | "zoom" | `xfade:${combine id}` */
|
|
18056
|
+
readonly id: string;
|
|
18057
|
+
/** = `speakerSwitchOverlaps(id)`, derived, never hand-set. */
|
|
18058
|
+
readonly overlaps: boolean;
|
|
18059
|
+
/** true only for `pan`: an eased sweep between two regions of ONE picture source. */
|
|
18060
|
+
readonly requiresSameSource: boolean;
|
|
18061
|
+
}
|
|
18062
|
+
/** `cut` / `pan` / `zoom` consume no time (pan: a geometry tween inside ONE
|
|
18063
|
+
* source; zoom: a tween inside each segment). The `xfade:*` family is DERIVED
|
|
18064
|
+
* from every combine-videos transition that is a real ffmpeg xfade (so never
|
|
18065
|
+
* `cut`, which has no xfade) — it is never hand-listed here. */
|
|
18066
|
+
declare const SPEAKER_SWITCHES: readonly SpeakerSwitchSheet[];
|
|
18067
|
+
declare const SPEAKER_SWITCH_IDS: readonly string[];
|
|
18068
|
+
/** A plain lookup: `undefined` for an unknown id (never throws). */
|
|
18069
|
+
declare function getSpeakerSwitch(id: string): SpeakerSwitchSheet | undefined;
|
|
18070
|
+
/** Atomic emphasis styles; `layout.emphasis.style` is a "+"-joined set of
|
|
18071
|
+
* them. `none` stands alone (it means "no emphasis"), and an atom appears at
|
|
18072
|
+
* most once. */
|
|
18073
|
+
declare const SPEAKER_EMPHASIS_STYLES: readonly ["none", "scale", "border", "dim"];
|
|
18074
|
+
type SpeakerEmphasisStyle = (typeof SPEAKER_EMPHASIS_STYLES)[number];
|
|
18075
|
+
/** Split a `+`-joined style into its atoms: trimmed, empties dropped. */
|
|
18076
|
+
declare function parseSpeakerEmphasisStyle(style: string): readonly string[];
|
|
18077
|
+
/** At least one atom, every atom a known `SPEAKER_EMPHASIS_STYLES` id, no
|
|
18078
|
+
* atom repeated, and `none` only on its own ("none+scale" contradicts itself). */
|
|
18079
|
+
declare function isKnownSpeakerEmphasisStyle(style: string): boolean;
|
|
18080
|
+
/** Registry-derived findings — ALL warning-class. Pure; never throws (guard non-array sources/segments the
|
|
18081
|
+
* way validateEdl does). `validateEdl` already includes these in its `warnings`; call this directly only
|
|
18082
|
+
* when you want the presentation findings alone. */
|
|
18083
|
+
declare function speakerPresentationWarnings(edl: Edl): readonly string[];
|
|
18084
|
+
|
|
18085
|
+
/**
|
|
18086
|
+
* EDL — the edit decision list contract.
|
|
18087
|
+
*
|
|
18088
|
+
* WHY THIS EXISTS
|
|
18089
|
+
* The podcast-editing primitives (transcript-driven cut, clip finding,
|
|
18090
|
+
* multicam, speaker view) compose because they share ONE data shape: every
|
|
18091
|
+
* analysis node produces an EDL, every render node consumes one. This module
|
|
18092
|
+
* is that shape plus the pure functions that read it. It is structural
|
|
18093
|
+
* vocabulary — no prompts, no heuristics, no editorial judgment — which is why
|
|
18094
|
+
* it lives in the Apache-licensed `@nodaro/shared` (the wire shape of
|
|
18095
|
+
* `/v1/edl/*`, an SDK type, an MCP output). Every published version is an
|
|
18096
|
+
* irrevocable grant, so the three resolved decisions (see below) all land in
|
|
18097
|
+
* version 1: renaming a field, or adding a REQUIRED one, later would be a
|
|
18098
|
+
* breaking major bump — so every later field is optional and additive.
|
|
18099
|
+
*
|
|
18100
|
+
* This module is PURE — no I/O, no ffmpeg, no network. The executors
|
|
18101
|
+
* (`apply-edl`, `speaker-view`) turn an EDL into pixels; they live in the app
|
|
18102
|
+
* and the plugins.
|
|
18103
|
+
*
|
|
18104
|
+
* DESIGN DECISIONS baked into v1 (so multicam and speaker view extend the
|
|
18105
|
+
* contract additively rather than with a breaking bump):
|
|
18106
|
+
* - D17 OVERLAP: a crossfade consumes time from the outgoing segment (ffmpeg
|
|
18107
|
+
* `xfade`, as combine-videos already does), so the rendered timeline is
|
|
18108
|
+
* SHORTER than the sum of segment durations. `edlDurationMs` subtracts the
|
|
18109
|
+
* overlap transitions; cut/pan/zoom consume no time (pan: a geometry tween
|
|
18110
|
+
* inside ONE source; zoom: a tween inside each segment); only the `xfade:*`
|
|
18111
|
+
* family and a segment `crossfade` overlap.
|
|
18112
|
+
* - D19 CLOCK/SOURCE/SIGN: `Edl.clock` says whether `segments` are on the
|
|
18113
|
+
* source master clock or an output clock; `Transcript.sourceId` says which
|
|
18114
|
+
* source a transcript came from; the offset sign is `masterMs = sourceMs +
|
|
18115
|
+
* offsetMs(source)`, applied by the remap functions.
|
|
18116
|
+
* - D20 PRECEDENCE/RENAME: region precedence
|
|
18117
|
+
* `slot.region ▷ segment.region (single-slot only) ▷ a caller's per-slot
|
|
18118
|
+
* resolver (v3 tracks) ▷ regions[(source, speaker)] ▷ source.region ▷ full
|
|
18119
|
+
* frame`, implemented ONCE by `resolveEdlSegmentSlots` (edl-multicam.ts);
|
|
18120
|
+
* `segment.region` is invalid when the segment's layout has more than one
|
|
18121
|
+
* slot; `slots[].weight` (0..1, active = 1) replaces the design's
|
|
18122
|
+
* `slots[].emphasis` so it no longer collides with `layout.emphasis`
|
|
18123
|
+
* ({ style, durationMs }).
|
|
18124
|
+
*
|
|
18125
|
+
* Time is INTEGER MILLISECONDS everywhere. There is no seconds→ms guessing
|
|
18126
|
+
* (`normalizeEdl` never reinterprets a unit — an implausible value is a
|
|
18127
|
+
* validation error, not a silent 1000× edit).
|
|
18128
|
+
*/
|
|
18129
|
+
declare const EDL_VERSION: 1;
|
|
18130
|
+
/** A crop region, as fractions 0..1 of the source frame. */
|
|
18131
|
+
interface EdlRegion {
|
|
18132
|
+
readonly x: number;
|
|
18133
|
+
readonly y: number;
|
|
18134
|
+
readonly w: number;
|
|
18135
|
+
readonly h: number;
|
|
18136
|
+
}
|
|
18137
|
+
declare const EDL_SOURCE_ROLES: readonly ["master-audio", "camera", "wide", "screen"];
|
|
18138
|
+
type EdlSourceRole = (typeof EDL_SOURCE_ROLES)[number];
|
|
18139
|
+
/** A media input to the edit. Ids are minted once (by `edit-plan`) and never
|
|
18140
|
+
* re-derived, so downstream nodes resolve media from `url` in the data, not
|
|
18141
|
+
* from canvas handle order. Keep the `url` key: the cloud relay re-hosts
|
|
18142
|
+
* private media by walking `url`-suffixed fields. */
|
|
18143
|
+
interface EdlSource {
|
|
18144
|
+
readonly id: string;
|
|
18145
|
+
readonly url: string;
|
|
18146
|
+
readonly kind: "video" | "audio";
|
|
18147
|
+
/** This source's origin on the master clock. `masterMs = sourceMs + offsetMs`. Default 0. */
|
|
18148
|
+
readonly offsetMs?: number;
|
|
18149
|
+
/** Known roles: EDL_SOURCE_ROLES. Open (`string & {}`) so an EDL written by a newer producer still type-checks
|
|
18150
|
+
* and still validates — an unknown role is a WARNING (validateEdl); an executor that cannot honour it refuses it. */
|
|
18151
|
+
readonly role?: EdlSourceRole | (string & {});
|
|
18152
|
+
/** Speaker labels this source frames (multicam). Empty = unknown. */
|
|
18153
|
+
readonly speakers?: readonly string[];
|
|
18154
|
+
/** A static crop for this source (speaker-view v1 framing). */
|
|
18155
|
+
readonly region?: EdlRegion;
|
|
18156
|
+
}
|
|
18157
|
+
/** How a segment is presented on screen (speaker-view, phase 2). `mode` and
|
|
18158
|
+
* `transition.type` are ids from the `SPEAKER_LAYOUTS` / `SPEAKER_SWITCHES`
|
|
18159
|
+
* registries (speaker-layouts.ts); `emphasis.style` is a `+`-joined set of
|
|
18160
|
+
* atomic `SPEAKER_EMPHASIS_STYLES` (e.g. "scale+border"). Unknown ids are
|
|
18161
|
+
* validation WARNINGS, and `mode` stays an open string on purpose. v1 leaves
|
|
18162
|
+
* layout undefined (single camera). */
|
|
18163
|
+
interface EdlLayout {
|
|
18164
|
+
/** "single" | "side-by-side" | "stacked" | "grid" | "pip" | … */
|
|
18165
|
+
readonly mode: string;
|
|
18166
|
+
readonly slots?: ReadonlyArray<{
|
|
18167
|
+
readonly source: string;
|
|
18168
|
+
readonly region?: EdlRegion;
|
|
18169
|
+
readonly speaker?: string;
|
|
18170
|
+
/** D20: 0..1, the active slot = 1. (Was `emphasis`; renamed to avoid
|
|
18171
|
+
* colliding with `layout.emphasis`.) */
|
|
18172
|
+
readonly weight?: number;
|
|
18173
|
+
}>;
|
|
18174
|
+
/** A "+"-joined set of "none" | "scale" | "border" | "dim" | …, eased over durationMs. */
|
|
18175
|
+
readonly emphasis?: {
|
|
18176
|
+
readonly style: string;
|
|
18177
|
+
readonly durationMs: number;
|
|
18178
|
+
};
|
|
18179
|
+
/** Into THIS segment. "cut" | "pan" | "zoom" consume no time; "xfade:<id>" overlaps (D17).
|
|
18180
|
+
* `durationMs` never consumes timeline time for the non-overlap types: it
|
|
18181
|
+
* is the tween length for `pan` / `zoom` and is ignored for `cut`. */
|
|
18182
|
+
readonly transition?: {
|
|
18183
|
+
readonly type: string;
|
|
18184
|
+
readonly durationMs?: number;
|
|
18185
|
+
};
|
|
18186
|
+
}
|
|
18187
|
+
interface EdlSegment {
|
|
18188
|
+
readonly id: string;
|
|
18189
|
+
/** On the MASTER clock. */
|
|
18190
|
+
readonly inMs: number;
|
|
18191
|
+
/** Exclusive, > inMs. */
|
|
18192
|
+
readonly outMs: number;
|
|
18193
|
+
/** `EdlSource.id` supplying picture. Omit = audio-only EDL. */
|
|
18194
|
+
readonly video?: string;
|
|
18195
|
+
/** `EdlSource.id` supplying sound. Default: the unique `role:"master-audio"` source, else `video`. */
|
|
18196
|
+
readonly audio?: string;
|
|
18197
|
+
/** Dominant speaker label (informational). */
|
|
18198
|
+
readonly speaker?: string;
|
|
18199
|
+
/** Into THIS segment. Only "crossfade" consumes time (D17); never on segments[0].
|
|
18200
|
+
* `durationMs` is optional and inert for "cut". */
|
|
18201
|
+
readonly transition?: {
|
|
18202
|
+
readonly type: "cut" | "crossfade";
|
|
18203
|
+
readonly durationMs?: number;
|
|
18204
|
+
};
|
|
18205
|
+
/** Per-segment crop override — SINGLE-slot only (D20). */
|
|
18206
|
+
readonly region?: EdlRegion;
|
|
18207
|
+
readonly layout?: EdlLayout;
|
|
18208
|
+
/** Free tags: "hook", "chapter:2", … (removed spans live in `Edl.dropped`). */
|
|
18209
|
+
readonly labels?: readonly string[];
|
|
18210
|
+
}
|
|
18211
|
+
interface EdlDropped {
|
|
18212
|
+
readonly inMs: number;
|
|
18213
|
+
readonly outMs: number;
|
|
18214
|
+
readonly reason: "silence" | "filler" | "false-start" | "tangent" | "manual" | string;
|
|
18215
|
+
}
|
|
18216
|
+
interface Edl {
|
|
18217
|
+
readonly version: 1;
|
|
18218
|
+
/** D19: are `segments` on the source master clock, or an already-rendered output clock? */
|
|
18219
|
+
readonly clock: "master" | "output";
|
|
18220
|
+
readonly sources: readonly EdlSource[];
|
|
18221
|
+
/** The ordered output timeline. Output time = cumulative segment durations, less overlap transitions. */
|
|
18222
|
+
readonly segments: readonly EdlSegment[];
|
|
18223
|
+
readonly dropped?: readonly EdlDropped[];
|
|
18224
|
+
/** Set when this EDL was re-cut from a rendered output (speaker-view after apply-edl). */
|
|
18225
|
+
readonly derivedFrom?: {
|
|
18226
|
+
readonly edlId: string;
|
|
18227
|
+
readonly clock: "output";
|
|
18228
|
+
};
|
|
18229
|
+
readonly meta?: {
|
|
18230
|
+
readonly title?: string;
|
|
18231
|
+
readonly hook?: string;
|
|
18232
|
+
/** Known aspects: `EDL_TARGET_ASPECTS`. Open (`string & {}`) so an EDL
|
|
18233
|
+
* written by a newer producer still type-checks — an unknown aspect is a
|
|
18234
|
+
* validation WARNING (validateEdl), never an issue. */
|
|
18235
|
+
readonly targetAspect?: EdlTargetAspect | (string & {});
|
|
18236
|
+
readonly platform?: string;
|
|
18237
|
+
readonly notes?: string;
|
|
18238
|
+
};
|
|
18239
|
+
}
|
|
18240
|
+
/** The `clips` mode's response/SDK shape. On the canvas the node emits a bare
|
|
18241
|
+
* `Edl[]` (T5: the `list` fan-out reads a top-level JSON array), and the
|
|
18242
|
+
* cloud relay writes `output_data` as this object — the unwrap to the bare
|
|
18243
|
+
* array happens in the output extractors, never in `output_data`. */
|
|
18244
|
+
interface EdlClipSet {
|
|
18245
|
+
readonly version: 1;
|
|
18246
|
+
readonly clips: readonly Edl[];
|
|
18247
|
+
}
|
|
18248
|
+
/** The `chapters` mode's `output_data` shape — a plain `data` list. */
|
|
18249
|
+
interface ChapterSet {
|
|
18250
|
+
readonly version: 1;
|
|
18251
|
+
readonly chapters: ReadonlyArray<{
|
|
18252
|
+
readonly startMs: number;
|
|
18253
|
+
readonly title: string;
|
|
18254
|
+
}>;
|
|
18255
|
+
}
|
|
18256
|
+
/** The normalized JSON form of a transcribe result. */
|
|
18257
|
+
interface Transcript {
|
|
18258
|
+
readonly version: 1;
|
|
18259
|
+
/** D19: which `EdlSource` this transcript was made from (drives the offset in remap). */
|
|
18260
|
+
readonly sourceId?: string;
|
|
18261
|
+
readonly language?: string;
|
|
18262
|
+
readonly words: ReadonlyArray<{
|
|
18263
|
+
readonly text: string;
|
|
18264
|
+
readonly startMs: number;
|
|
18265
|
+
readonly endMs: number;
|
|
18266
|
+
readonly speaker?: string;
|
|
18267
|
+
readonly confidence?: number;
|
|
18268
|
+
}>;
|
|
18269
|
+
readonly segments?: ReadonlyArray<{
|
|
18270
|
+
readonly startMs: number;
|
|
18271
|
+
readonly endMs: number;
|
|
18272
|
+
readonly text: string;
|
|
18273
|
+
readonly speaker?: string;
|
|
18274
|
+
}>;
|
|
18275
|
+
}
|
|
18276
|
+
/** Duration (seconds) implied by a transcript — the LATEST word/segment `endMs`
|
|
18277
|
+
* across the whole transcript, in seconds. The edit-plan reserve's duration
|
|
18278
|
+
* fallback BENEATH the master-source ffprobe (`computeEditPlanReserveId`): the
|
|
18279
|
+
* authoritative reserve basis is a probe of the master media, exactly like the
|
|
18280
|
+
* plugin route; this transcript clock is used only in `buildPayload` (which
|
|
18281
|
+
* cannot ffprobe) and when that probe can't run, for a MASTER source node that
|
|
18282
|
+
* exposes no length of its own (a `reference-audio`/youtube or direct-URL
|
|
18283
|
+
* master carries its length in neither `data.duration` nor
|
|
18284
|
+
* `metadata.durationSeconds` — see `editPlanSourceDurationSec` — and its live
|
|
18285
|
+
* orchestrator output is a bare URL). The transcript is a REQUIRED edit-plan
|
|
18286
|
+
* input and is the timing map of that same master, so its last word's `endMs`
|
|
18287
|
+
* is a lower bound on the source's own clock.
|
|
18288
|
+
*
|
|
18289
|
+
* Accepts `unknown` because the cloud plugin's Zod is the transcript's schema
|
|
18290
|
+
* authority; this reads defensively and returns `undefined` for any shape it
|
|
18291
|
+
* can't measure (so the caller falls back to the ceiling bucket — the safe
|
|
18292
|
+
* over-reserve direction). Takes the MAX endMs rather than the last element so
|
|
18293
|
+
* an out-of-order words array can't under-report. NOTE the direction: a
|
|
18294
|
+
* transcript's last spoken word ends at or before the true media end (trailing
|
|
18295
|
+
* music/silence is not transcribed), so this can UNDER-estimate; bucket
|
|
18296
|
+
* round-up is the headroom, and the cloud re-probe money-gate refuses (never
|
|
18297
|
+
* overcharges) if the probed master still exceeds the reserved bucket. */
|
|
18298
|
+
declare function transcriptDurationSec(transcript: unknown): number | undefined;
|
|
18299
|
+
/** Rendered duration of the edit, in ms. Σ segment durations minus the
|
|
18300
|
+
* overlap transitions (D17: an `xfade`/`crossfade` compresses the timeline
|
|
18301
|
+
* by its duration per boundary; `cut`/`pan`/`zoom` do not). Total over BOTH
|
|
18302
|
+
* the segment- and layout-transition fields.
|
|
18303
|
+
*
|
|
18304
|
+
* Derived FROM `segmentOutputStarts` so the invariant
|
|
18305
|
+
* `outputStart(last) + dur(last) === edlDurationMs` holds by construction on
|
|
18306
|
+
* every input — including a normalized-but-not-yet-validated EDL (the reserve
|
|
18307
|
+
* runs this before validate). The two must never be two independent overlap
|
|
18308
|
+
* implementations that can drift. */
|
|
18309
|
+
declare function edlDurationMs(edl: Edl): number;
|
|
18310
|
+
/** Library-produced (never construct one yourself — fields may be added). `ok` is `issues.length === 0`;
|
|
18311
|
+
* warnings never flip it. Issues = facts intrinsic to the EDL. Warnings = judgements against a REGISTRY
|
|
18312
|
+
* (source roles, speaker layouts/switches/emphasis, target aspects) that a newer version may widen — so an
|
|
18313
|
+
* older validator never rejects a newer EDL. */
|
|
18314
|
+
interface EdlValidation {
|
|
18315
|
+
readonly ok: boolean;
|
|
18316
|
+
readonly issues: readonly string[];
|
|
18317
|
+
readonly warnings: readonly string[];
|
|
18318
|
+
}
|
|
18319
|
+
/** Structural validation. Coercion (defaults, clamping) is `normalizeEdl`'s
|
|
18320
|
+
* job; this reports what is still wrong after normalization. Segment ORDER is
|
|
18321
|
+
* the output timeline order and is NOT required to be monotonic on the master
|
|
18322
|
+
* clock — a legitimate multicam/clips EDL revisits earlier source time — so
|
|
18323
|
+
* the only per-segment ordering rule is `outMs > inMs`.
|
|
18324
|
+
*
|
|
18325
|
+
* The transition duration bound is the per-boundary ffmpeg-`xfade` limit: the
|
|
18326
|
+
* blend must be shorter than the adjacent material, so we validate at
|
|
18327
|
+
* `0.9 · min(the two adjacent segments)`. (combine-videos uses a more
|
|
18328
|
+
* conservative GLOBAL `0.9 · min(all clips)`; the per-boundary bound here is
|
|
18329
|
+
* the correct one, and the `apply-edl` executor must clamp per-boundary too —
|
|
18330
|
+
* copying combine's global-min would let validate pass a transition the
|
|
18331
|
+
* renderer then silently shortens, the R5 silent-edit this bound prevents.)
|
|
18332
|
+
* It applies only to overlap transitions; `cut`/`pan`/`zoom` are unbounded. */
|
|
18333
|
+
declare function validateEdl(edl: Edl): EdlValidation;
|
|
18334
|
+
/** Validate a clip set (the `clips` mode output). */
|
|
18335
|
+
declare function validateEdlClipSet(set: EdlClipSet): EdlValidation;
|
|
18336
|
+
/**
|
|
18337
|
+
* Map an instant on `sourceId`'s clock to the rendered output clock, or `null`
|
|
18338
|
+
* if that instant was dropped (falls in no kept segment). Applies the D19
|
|
18339
|
+
* offset (`masterMs = sourceMs + offsetMs`) and the D17 overlap compression.
|
|
18340
|
+
* `sourceId` omitted ⇒ the instant is already on the master clock.
|
|
18341
|
+
*/
|
|
18342
|
+
declare function remapMsThroughEdl(edl: Edl, sourceMs: number, sourceId?: string): number | null;
|
|
18343
|
+
/**
|
|
18344
|
+
* Remap a transcript onto the rendered output: drop words that fall entirely
|
|
18345
|
+
* in removed material, clip a word that straddles a cut to its kept part, and
|
|
18346
|
+
* apply the source offset (via `transcript.sourceId`). Captions, chapters and
|
|
18347
|
+
* clip offsets all depend on this one function.
|
|
18348
|
+
*/
|
|
18349
|
+
declare function remapTranscriptThroughEdl(edl: Edl, transcript: Transcript): Transcript;
|
|
18350
|
+
/** Speaker turns: consecutive same-speaker words merged across gaps shorter
|
|
18351
|
+
* than `mergeGapMs`, then turns shorter than `minTurnMs` dropped. */
|
|
18352
|
+
declare function speakerTurns(transcript: Transcript, opts: {
|
|
18353
|
+
minTurnMs: number;
|
|
18354
|
+
mergeGapMs: number;
|
|
18355
|
+
}): Array<{
|
|
18356
|
+
speaker: string;
|
|
18357
|
+
startMs: number;
|
|
18358
|
+
endMs: number;
|
|
18359
|
+
}>;
|
|
18360
|
+
/**
|
|
18361
|
+
* Coerce an unknown value into a well-formed `Edl`: fill defaults, drop unknown
|
|
18362
|
+
* fields, clamp regions to 0..1. All times are integer ms — there is NO
|
|
18363
|
+
* seconds→ms guessing (an integer-seconds EDL would silently become a
|
|
18364
|
+
* 1000×-longer edit; the contract is ms-only and a value that cannot be a
|
|
18365
|
+
* plausible ms EDL is a validation error, not a reinterpretation).
|
|
18366
|
+
*
|
|
18367
|
+
* Segment ORDER is preserved verbatim: it is the output timeline order, and a
|
|
18368
|
+
* multicam/clips EDL legitimately revisits earlier source time, so re-sorting
|
|
18369
|
+
* would corrupt it. (`dropped` has no ordering semantics and is left as-is.)
|
|
18370
|
+
*/
|
|
18371
|
+
declare function normalizeEdl(input: unknown): Edl;
|
|
18372
|
+
/** Coerce an unknown value into a `Transcript`. ms-only, same rule as `normalizeEdl`. */
|
|
18373
|
+
declare function normalizeTranscript(input: unknown): Transcript;
|
|
18374
|
+
|
|
18375
|
+
/**
|
|
18376
|
+
* Multicam helpers over the EDL contract (`edl.ts`): folding measured source
|
|
18377
|
+
* offsets into an EDL (D19) and resolving what each on-screen slot of a
|
|
18378
|
+
* segment shows (D20). Pure — no I/O. Type-only imports from `edl.ts` keep the
|
|
18379
|
+
* module graph free of runtime cycles.
|
|
18380
|
+
*/
|
|
18381
|
+
|
|
18382
|
+
/** audio-sync → EDL source offsets (D19: masterMs = sourceMs + offsetMs).
|
|
18383
|
+
* `offsets` are measured against ONE common reference (audio-sync's `reference`, which need not be the master).
|
|
18384
|
+
* ANCHORED SET: anchor = opts.anchor ?? the unique role:"master-audio" source ?? none.
|
|
18385
|
+
* - The anchor's own offsetMs is NEVER changed (the segments are on its clock).
|
|
18386
|
+
* - Every other provided source s: offsetMs = round((anchor.offsetMs ?? 0) + offsets[s] − (offsets[anchor] ?? 0)).
|
|
18387
|
+
* - No anchor: offsetMs = round(offsets[s]) verbatim (offsets already relative to the master clock).
|
|
18388
|
+
* SET, never ADD (re-running is idempotent). Returns a new Edl; never mutates; never throws.
|
|
18389
|
+
* `ignored[].reason` is a documented open string: "unknown-source" | "not-finite" | "anchor-unknown" | "anchor-not-finite".
|
|
18390
|
+
* opts.anchor not in edl.sources → NOTHING applied, ignored = [{ sourceId: anchor, reason: "anchor-unknown" }].
|
|
18391
|
+
* offsets[anchor] present but non-finite → NOTHING applied, ignored = [{ sourceId: anchor, reason: "anchor-not-finite" }]. */
|
|
18392
|
+
declare function mergeEdlSourceOffsets(edl: Edl, offsets: Readonly<Record<string, number>>, opts?: {
|
|
18393
|
+
readonly anchor?: string;
|
|
18394
|
+
}): {
|
|
18395
|
+
readonly edl: Edl;
|
|
18396
|
+
/** The source the offsets were anchored to — present whenever one resolved (it exists in `edl.sources`). */
|
|
18397
|
+
readonly anchor?: string;
|
|
18398
|
+
/** Source ids whose `offsetMs` was set, in `offsets` key order. */
|
|
18399
|
+
readonly applied: readonly string[];
|
|
18400
|
+
readonly ignored: ReadonlyArray<{
|
|
18401
|
+
readonly sourceId: string;
|
|
18402
|
+
readonly reason: string;
|
|
18403
|
+
}>;
|
|
18404
|
+
};
|
|
18405
|
+
declare const EDL_FULL_FRAME: EdlRegion;
|
|
18406
|
+
interface EdlResolvedSlot {
|
|
18407
|
+
readonly source: string;
|
|
18408
|
+
readonly region: EdlRegion;
|
|
18409
|
+
/** "resolver" = the caller's `regionFor` (v3 per-segment tracks). */
|
|
18410
|
+
readonly regionFrom: "slot" | "segment" | "resolver" | "speaker" | "source" | "full";
|
|
18411
|
+
readonly speaker?: string;
|
|
18412
|
+
readonly weight?: number;
|
|
18413
|
+
}
|
|
18414
|
+
interface ResolveEdlSlotsOptions {
|
|
18415
|
+
/** speaker-view's per-speaker framing table (a node SETTING, not an EDL field), keyed by (source, speaker) so a
|
|
18416
|
+
* wide-shot region never lands on a close-up camera framing the same person. */
|
|
18417
|
+
readonly speakerRegions?: ReadonlyArray<{
|
|
18418
|
+
readonly source: string;
|
|
18419
|
+
readonly speaker: string;
|
|
18420
|
+
readonly region: EdlRegion;
|
|
18421
|
+
}>;
|
|
18422
|
+
/** v3 hook: a per-(segment, slot) region, e.g. from a face track. Undefined = no opinion. */
|
|
18423
|
+
readonly regionFor?: (q: {
|
|
18424
|
+
readonly segment: EdlSegment;
|
|
18425
|
+
readonly source: string;
|
|
18426
|
+
readonly speaker?: string;
|
|
18427
|
+
}) => EdlRegion | undefined;
|
|
18428
|
+
}
|
|
18429
|
+
/** D20 — the ONE region-precedence implementation:
|
|
18430
|
+
* slot.region ▷ segment.region (single-slot only) ▷ regionFor ▷ speakerRegions[(source, speaker)] ▷ source.region ▷ full frame.
|
|
18431
|
+
* Slots = layout.slots when non-empty, else ONE implicit slot from segment.video (no video → []).
|
|
18432
|
+
* A slot's speaker = slot.speaker ?? (single slot ? segment.speaker : undefined); no speaker → the speaker rung is skipped.
|
|
18433
|
+
* A rung whose region is not a valid in-frame box (finite, 0..1, w/h > 0, x+w ≤ 1, y+h ≤ 1) falls through to the next.
|
|
18434
|
+
* Unknown source id → the source rung is skipped. Pure; never throws on its own. */
|
|
18435
|
+
declare function resolveEdlSegmentSlots(edl: Edl, segment: EdlSegment, opts?: ResolveEdlSlotsOptions): readonly EdlResolvedSlot[];
|
|
18436
|
+
|
|
18437
|
+
type EditPlanMode = "tighten" | "clips" | "chapters";
|
|
18438
|
+
type EditPlanTier = "economy" | "standard" | "premium";
|
|
18439
|
+
declare const EDIT_PLAN_MODES: readonly EditPlanMode[];
|
|
18440
|
+
declare const EDIT_PLAN_TIERS: readonly EditPlanTier[];
|
|
18441
|
+
/** The coarse duration ladder (MINUTES) a probed source duration rounds UP to;
|
|
18442
|
+
* the composite credit id carries the bucket. 3 modes × 3 tiers × 6 buckets =
|
|
18443
|
+
* 54 composites (+ the bare `edit-plan`). */
|
|
18444
|
+
declare const EDIT_PLAN_BUCKET_MINUTES: readonly number[];
|
|
18445
|
+
/** Hard duration cap (design §7.4). */
|
|
18446
|
+
declare const EDIT_PLAN_MAX_MINUTES = 180;
|
|
18447
|
+
/** `clips` mode: how many clips a plan returns when the caller names no count,
|
|
18448
|
+
* and the most it may be asked for. One source for the credit estimate, the
|
|
18449
|
+
* orchestrated payload clamp and the request schema. */
|
|
18450
|
+
declare const EDIT_PLAN_DEFAULT_CLIP_COUNT = 8;
|
|
18451
|
+
declare const EDIT_PLAN_MAX_CLIP_COUNT = 50;
|
|
18452
|
+
/** Clamp a requested clip count into `[1, EDIT_PLAN_MAX_CLIP_COUNT]`; `undefined`
|
|
18453
|
+
* for anything that is not a positive number (the planner then uses its default). */
|
|
18454
|
+
declare function clampEditPlanClipCount(count: unknown): number | undefined;
|
|
18455
|
+
/** The bare estimator / DB-down fallback id. */
|
|
18456
|
+
declare const EDIT_PLAN_BASE_CREDIT_ID = "edit-plan";
|
|
18457
|
+
/** Round a source duration (seconds) UP to the smallest covering ladder bucket
|
|
18458
|
+
* (capped at the max), in minutes. `undefined` / non-finite → the ceiling
|
|
18459
|
+
* bucket (the safe over-reserve direction). */
|
|
18460
|
+
declare function editPlanBucketMinutes(durationSec: number | undefined): number;
|
|
18461
|
+
/** `edit-plan:<mode>:<tier>:<bucket>m`. `durationSec` undefined → the ceiling
|
|
18462
|
+
* bucket. Single source of truth for the composite id shape. */
|
|
18463
|
+
declare function buildEditPlanCreditId(mode: EditPlanMode, tier: EditPlanTier, durationSec?: number): string;
|
|
18464
|
+
/** Narrow an arbitrary value to a known edit-plan mode, defaulting to "tighten". */
|
|
18465
|
+
declare function asEditPlanMode(v: unknown): EditPlanMode;
|
|
18466
|
+
/** Narrow an arbitrary value to a known edit-plan tier, defaulting to "standard". */
|
|
18467
|
+
declare function asEditPlanTier(v: unknown): EditPlanTier;
|
|
18468
|
+
/**
|
|
18469
|
+
* Unwrap an `edit-plan` job's `output_data` into the value stored on the node's
|
|
18470
|
+
* `data.generatedJson`, which every output extractor then reads. This is the ONE
|
|
18471
|
+
* place the three modes are normalized (the same rule on both engines and every
|
|
18472
|
+
* result-application site, so audit-dag parity can't drift):
|
|
18473
|
+
* - `clips` → the BARE `Edl[]` (T5: the `list` fan-out reads `Array.isArray`
|
|
18474
|
+
* on `generatedJson`; each element becomes one JSON-stringified
|
|
18475
|
+
* item a downstream `edl` input `normalizeEdl`-parses).
|
|
18476
|
+
* - `chapters` → the `{ version, chapters }` object.
|
|
18477
|
+
* - `tighten` → the `Edl` object at top level.
|
|
18478
|
+
*
|
|
18479
|
+
* The cloud relay object-spreads `output_data` and adds `viaNodaroCloud: true`;
|
|
18480
|
+
* that key (and any other bookkeeping) is stripped here. The unwrap lives HERE —
|
|
18481
|
+
* NEVER in `output_data` — because a bare array written into `output_data` would
|
|
18482
|
+
* be corrupted into numeric keys by the relay's object-spread (see `EdlClipSet`).
|
|
18483
|
+
*/
|
|
18484
|
+
declare function unwrapEditPlanOutput(outputData: unknown): unknown;
|
|
18485
|
+
|
|
18486
|
+
/**
|
|
18487
|
+
* "Auto" video duration — the model decides the clip length. The wire value is
|
|
18488
|
+
* KIE's own (`duration: -1`): on a video EDIT the output takes the source
|
|
18489
|
+
* clip's length, on any other run the model picks within its valid range.
|
|
18490
|
+
* Stored in the ordinary numeric `duration` field (node data, routes, presets,
|
|
18491
|
+
* MCP) so every surface that can carry a duration can carry Auto. Which models
|
|
18492
|
+
* accept it is a catalog capability (`MODEL_CATALOG[id].autoDuration`), read
|
|
18493
|
+
* through `supportsAutoVideoDuration`.
|
|
18494
|
+
*
|
|
18495
|
+
* Import-free on purpose: the catalog and the constants module both need it,
|
|
18496
|
+
* and they already depend on each other.
|
|
18497
|
+
*/
|
|
18498
|
+
declare const VIDEO_DURATION_AUTO = -1;
|
|
18499
|
+
declare function isAutoVideoDuration(duration: unknown): boolean;
|
|
18500
|
+
|
|
18501
|
+
export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AdCreativeAnalysis, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CAPTION_LEVER_BOUNDS, CAPTION_LOOKS, CAPTION_LOOK_IDS, CAPTION_MAX_WORDS_PER_LINE_MAX, CAPTION_MAX_WORDS_PER_LINE_MIN, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionLookId, type CaptionLookLevers, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type ChapterSet, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionMetadata, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CAPTION_LOOK, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_FRAME_DELIVERY, DEFAULT_FRAME_FIT, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_OVERLAY_QR, DEFAULT_OVERLAY_SHAPE, DEFAULT_OVERLAY_TEXT, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_SUBTITLE_LOOK, DEFAULT_SUNO_MODEL, DEFAULT_TEMPLATE_CATEGORY, DEFAULT_TRANSCRIBE_NODE_PROVIDER, DEFAULT_TRANSCRIBE_PROVIDER, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EDIT_PLAN_BASE_CREDIT_ID, EDIT_PLAN_BUCKET_MINUTES, EDIT_PLAN_DEFAULT_CLIP_COUNT, EDIT_PLAN_MAX_CLIP_COUNT, EDIT_PLAN_MAX_MINUTES, EDIT_PLAN_MODES, EDIT_PLAN_TIERS, EDL_FULL_FRAME, EDL_SOURCE_ROLES, EDL_TARGET_ASPECTS, EDL_VERSION, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXECUTION_GRAPH_COMPOSED_PARAMETER_TYPES, EXTEND_VIDEO_PROVIDERS, type EditPlanMode, type EditPlanTier, type Edl, type EdlClipSet, type EdlDropped, type EdlLayout, type EdlRegion, type EdlResolvedSlot, type EdlSegment, type EdlSource, type EdlSourceRole, type EdlTargetAspect, type EdlValidation, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntitySlotOwner, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_DELIVERIES, FRAME_DELIVERY_BY_PROVIDER, FRAME_FITS, FRAME_FIT_STRETCH_TOLERANCE, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FanOutCandidate, type FanOutPlan, type FavoriteListingResult, type FeaturedEntity, type FeaturedInstagramOutputs, type FeaturedMetaAdOutputs, type FeedEdge, type FeedMaps, type FeedNode, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FrameDelivery, type FrameFit, type FrameFitPlan, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_OVERLAY_BASE_CREDITS, IMAGE_OVERLAY_VARIANT_CREDITS, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_ANALYSIS_CREDIT_ID, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, INSTAGRAM_HOSTS, INSTAGRAM_SCRAPE_CREDIT_COSTS, INSTAGRAM_SCRAPE_DEFAULT_COUNT, INSTAGRAM_SCRAPE_FALLBACK_CREDIT_ID, INSTAGRAM_SCRAPE_MAX_COUNT, INSTAGRAM_SCRAPE_MAX_SOURCES, INSTAGRAM_SCRAPE_MAX_TARGET_LENGTH, INSTAGRAM_SCRAPE_MODES, INSTAGRAM_SCRAPE_NODE_TYPE, INSTAGRAM_SCRAPE_PERIODS, INSTAGRAM_SCRAPE_TIERS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InstagramFormat, type InstagramNodeQuoteFields, type InstagramScrapeMode, type InstagramScrapePeriod, type InstagramScrapeTier, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, KINETIC_ONLY_CAPTION_LEVER_KEYS, type KieApiFormat, type KineticCaptionStyle, type KineticOnlyCaptionLeverKey, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LEGACY_TEMPLATE_CATEGORIES, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type ListFanOut, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocalTime, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, META_ADS_ADVERTISER_MAX_RESULTS, META_ADS_ANALYSIS_CREDITS_PER_AD, META_ADS_ANALYSIS_CREDIT_ID, META_ADS_ANALYSIS_FOCUS_MAX, META_ADS_ANALYSIS_TIERS, META_ADS_FORMATS, META_ADS_NODE_MODES, META_ADS_PLATFORMS, META_ADS_SCRAPE_COUNT_OPTIONS, META_ADS_SCRAPE_CREDIT_COSTS, META_ADS_SCRAPE_DEFAULT_COUNT, META_ADS_SCRAPE_DEFAULT_COUNTRY, META_ADS_SCRAPE_FALLBACK_CREDIT_ID, META_ADS_SCRAPE_MAX_COUNT, META_ADS_SCRAPE_MAX_QUERY_LENGTH, META_ADS_SCRAPE_MAX_SOURCES, META_ADS_SCRAPE_MODES, META_ADS_SCRAPE_NODE_TYPE, META_ADS_SCRAPE_PERIODS, META_ADS_SCRAPE_STATUSES, META_ADS_SCRAPE_TIERS, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_KINDS, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MetaAdsAdvertiser, type MetaAdsAnalysisTier, type MetaAdsCreativeFormat, type MetaAdsFormat, type MetaAdsNodeMode, type MetaAdsNodeQuoteFields, type MetaAdsNodeSourceFields, type MetaAdsPlatform, type MetaAdsScrapeMode, type MetaAdsScrapePeriod, type MetaAdsScrapeStatus, type MetaAdsScrapeTier, type MetaAdsWireSources, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NON_PROMPT_TEXT_LANES, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeExecutionStateWire, type NodeExecutionStatus, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_BEARING_NODE_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, OVERLAY_ANCHORS, OVERLAY_FONTS, OVERLAY_FONT_IDS, OVERLAY_IMAGE_MASKS, OVERLAY_LAYER_KINDS, OVERLAY_MAX_VARIANTS, OVERLAY_PLATFORMS, OVERLAY_PLATFORM_IDS, OVERLAY_SHAPES, OVERLAY_TEXT_ALIGNS, OVERLAY_VARIANT_HANDLE_PREFIX, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, type OverlayAnchor, type OverlayFontId, type OverlayImageEffects, type OverlayImageMask, type OverlayLayerKind, type OverlayPlatformId, type OverlayPlatformPreset, type OverlayPlatformZone, type OverlayQrStyle, type OverlayShape, type OverlayShapeElement, type OverlayShapeStyle, type OverlayTextAlign, type OverlayTextStyle, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PRO3D_RENDER_ASPECT_RATIOS, PRO3D_RENDER_CREDIT_ID, PRO3D_RENDER_DEFAULT_ENGINE, PRO3D_RENDER_DEFAULT_QUALITY, PRO3D_RENDER_DEFAULT_REPAIR_PASSES, PRO3D_RENDER_DEFAULT_STYLE, PRO3D_RENDER_ENGINES, PRO3D_RENDER_LABEL, PRO3D_RENDER_LIMITS, PRO3D_RENDER_MAX_REPAIR_PASSES, PRO3D_RENDER_MIN_REPAIR_PASSES, PRO3D_RENDER_NODE_TYPE, PRO3D_RENDER_PROMPT_MAX, PRO3D_RENDER_QUALITY_PROFILES, PRO3D_RENDER_SOURCE_KINDS, PRO3D_RENDER_STYLES, PROJECTED_TRIGGER_NODE_TYPES, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PreflightGraphEdge, type PreflightGraphNode, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type Pro3DRenderAspectRatio, type Pro3DRenderCapabilities, type Pro3DRenderEngine, type Pro3DRenderJobOutput, type Pro3DRenderLocalExportSource, type Pro3DRenderPromptSource, type Pro3DRenderQuality, type Pro3DRenderQuote, type Pro3DRenderQuoteLine, type Pro3DRenderResultMetadata, type Pro3DRenderSceneSource, type Pro3DRenderShotStill, type Pro3DRenderSource, type Pro3DRenderSourceInput, type Pro3DRenderSourceKind, type Pro3DRenderSourceResult, type Pro3DRenderStyle, type Pro3DRenderValidationWarning, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REASONING_OUTPUT_FLOOR, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, RENDER_VIDEO_CREDIT_ID, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveEdlSlotsOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE3D_ASSERTION_RESTORED_CODE, SCENE3D_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, SCENE3D_AUTHORING_ASSUMPTION_CODE, SCENE3D_AUTHORING_ENGINES, SCENE3D_BASIC_ENGINE, SCENE3D_BASIC_SCHEMA_VERSION, SCENE3D_CAMERA_TRACK_FORMAT, SCENE3D_CAMERA_TRACK_LIMITS, SCENE3D_CAMERA_TRACK_VERSION, SCENE3D_CLAY_LIGHTING_PRESETS, SCENE3D_DEFAULT_ADVANCED_ENGINE, SCENE3D_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_ENTITY_CAPABILITIES, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_ENTITY_CAPABILITIES, SCENE3D_ENTITY_ROLES, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_GLB_EXTRAS_ALLOWLIST, SCENE3D_GLB_EXTRAS_ENTITY_ID, SCENE3D_GLB_EXTRAS_MATERIAL_ROLE, SCENE3D_GLB_EXTRAS_SUBPART_ID, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_PRIMITIVE_MATERIAL_ROLE, SCENE3D_REMEDY_AUTO_APPLIED_CODE, SCENE3D_RENDERER_ASSET_KINDS, SCENE3D_RENDER_BASE_MAX_PX, SCENE3D_RENDER_TIERS, SCENE3D_RENDER_TIER_MULTIPLIERS, SCENE3D_RENDER_XLARGE_MIN_AREA_PX, SCENE3D_REVIEW_REFUSED_CODE, SCENE3D_REVIEW_UNAVAILABLE_CODE, SCENE3D_REVIEW_UNAVAILABLE_REASONS, SCENE3D_SCHEMA_VERSION, SCENE3D_SCHEMA_VERSION_V2, SCENE3D_SUPPORTED_SCHEMA_VERSIONS, SCENE3D_V2_CONTENT_HASH_EXCLUDED, SCENE3D_V2_ENGINES, SCENE3D_V2_LIMITS, SCENE3D_V2_OVERRIDE_OPERATION_VERSION, SCENE3D_V2_PRIMITIVES, SCENE_HELPER_NAMES, SCHEDULE_EVERY_LIMITS, SCHEDULE_RULE_KINDS, SCHEDULE_TRIGGER_NODE_TYPE, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEEDANCE_VIDEO_EDIT_PROVIDERS, SEEDANCE_VIDEO_EDIT_SHAPE, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, SOCIAL_VIDEO_HOSTS, SPEAKER_EMPHASIS_STYLES, SPEAKER_LAYOUTS, SPEAKER_LAYOUT_IDS, SPEAKER_SWITCHES, SPEAKER_SWITCH_IDS, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_DEPENDENT_FRAMES_CAPABILITY, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ACTIVE_MODELS, SUNO_ADD_TRACK_MODELS, SUNO_DURATION_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_LEGACY_MODELS, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_CREDIT_KEYS, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DAnchor, type Scene3DAssetAnimation, type Scene3DAssetKind, type Scene3DAssetRef, type Scene3DAssetRole, type Scene3DAuthoringDelivery, type Scene3DAuthoringDeliveryMetadata, type Scene3DAuthoringEngine, type Scene3DAuthoringValidation, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, type Scene3DDeliveryWarning, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DEngineChoice, type Scene3DEngineChoiceInput, type Scene3DEngineChoiceRefusalCode, type Scene3DEngineRequestFields, type Scene3DEntityCapability, type Scene3DEntityRole, type Scene3DEntityV2, type Scene3DEntityVisual, type Scene3DInputAsset, type Scene3DJobOutput, type Scene3DJobOutputAny, type Scene3DJobOutputV2, type Scene3DKnownEngine, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DMaterialBinding, type Scene3DNormalizedAssetStats, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DOverride, type Scene3DOverrideSpace, type Scene3DParseResult, type Scene3DPlan, type Scene3DPlanV1, type Scene3DPlanV2, type Scene3DPrimitive, type Scene3DProvenance, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, type Scene3DRenderTier, type Scene3DRestoredAssertion, type Scene3DReviewFindings, type Scene3DReviewObjection, type Scene3DReviewRefused, type Scene3DReviewUnavailable, type Scene3DReviewUnavailableReason, type Scene3DReviewVerdict, type Scene3DSemanticIssue, type Scene3DShot, type Scene3DSupportedSchemaVersion, type Scene3DV2EditOperation, type Scene3DV2EditOptions, type Scene3DV2EditResult, type Scene3DV2OverrideInput, type Scene3DV2Primitive, type Scene3DV2ResourceUsage, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScheduleRule, type ScheduleRuleKind, type ScheduleSpec, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SeedanceVideoEditProvider, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, SequenceExecutionRequiredError, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type SpeakerEmphasisStyle, type SpeakerLayoutSheet, type SpeakerSwitchSheet, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TELEGRAM_TRIGGER_NODE_TYPE, TEMPLATE_CATEGORIES, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_LANES, TRANSCRIBE_PROVIDERS, TRANSCRIBE_PROVIDER_CAPABILITIES, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TemplateCategory, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeLane, type TranscribeProvider, type Transcript, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_AUTO, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_LINK_TOLERANT_CONSUMER_TYPES, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_ONLY_PARAMETER_NODE_TYPES, VIDEO_OUTPUT_CANVAS, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_NODE_PROVIDERS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vec3, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoLinkNodeFields, type VideoLinkPlatform, type VideoModeAlias, type VideoModelCapabilities, type VideoOutputCanvas, type VideoToVideoNodeProvider, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WEBHOOK_TRIGGER_NODE_TYPE, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WordlessTranscriptFeed, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, YOUTUBE_HOSTS, adCreativeAnalysisFrom, aggregateByType, aiAvatarReserveCreditId, alignedFieldList, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applyScene3DEditOperations, applyScene3DV2EditOperations, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, asEditPlanMode, asEditPlanTier, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, assertCanvasExecutionAllowed, autoStrokeWidth, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildEditPlanCreditId, buildExpressionFromVisual, buildFeedMaps, buildInstagramScrapeCreditId, buildLipSyncCreditId, buildLlmCreditIdentifier, buildMetaAdsScrapeCreditId, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildPro3DRenderSource, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalScene3DPlanV2Json, canonicalVarName, captionRoutesToRemotion, centreCropToAspect, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampEditPlanClipCount, clampInstagramFeaturedIndex, clampMetaAdsFeaturedIndex, clampSmartCutWindow, classifyCreativeFormat, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, compactWithRows, computeAggregateLanes, computeFrameFitPlan, computeScene3DPlanV2ContentHash, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, detectVideoLinkPlatform, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, editPlanBucketMinutes, editPlanSourceDurationSec, edlDurationMs, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fanOutTextFeedsPrompt, featuredInstagramOutputs, featuredMetaAdOutputs, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, findWordlessTranscriptFeeds, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getSpeakerLayout, getSpeakerSwitch, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupByKindAndFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hasUrlParserHazard, hexToRgbaArray, hostnameMatchesAllowlist, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageOverlayBillableVariants, imageOverlayCredits, imageReferenceLimit, inferMusicVideo, instagramAnalysisCreditId, instagramAnalysisTierFrom, instagramScrapeCreditIdFromNode, instagramScrapeMode, instagramScrapeSources, instagramScrapeTier, isAggregateableType, isAutoVideoDuration, isCharacterAspectRatio, isCollectInEdge, isCronExpression, isDefaultSelectorConfig, isEdlTargetAspect, isExpandedClone, isFacebookPageUrl, isFanOutUrlItem, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isInstagramScrapeCount, isInstagramScrapeMode, isKineticCaptionStyle, isKnownScene3DEngine, isKnownSpeakerEmphasisStyle, isLegacySunoModel, isLocationUsageMode, isMetaAdsFormat, isMetaAdsPlatform, isMetaAdsScrapeCount, isMetaAdsScrapeMode, isMetaCdnImageUrl, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isPro3DRenderJobOutput, isPro3DRenderQuote, isPro3DRenderRenderOnly, isProjectedTriggerNodeType, isRtlText, isScene3DAuthoringEngine, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DReviewUnavailableReason, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, isSeedanceVideoEditProvider, isSocialVideoUrl, isTemplateCategory, isTiltDirection, isUsageMode, isValidTimezone, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, legacyScheduleToRules, listBoardTemplates, listModels, listSlotSids, liveRowColumn, llmRouteDefaults, localMinuteKey, localTimeIn, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, matchesCron, matchesCronField, maxSegmentSecFor, maxSegmentsFor, maxVideoDurationSec, measuredCanvasCombinations, mergeClipLook, mergeEdlSourceOffsets, mergeExposedSettings, mergeNodeInputOverrides, metaAdsAdvertisersFrom, metaAdsAnalysisCreditId, metaAdsAnalysisTier, metaAdsAnalysisTierFrom, metaAdsNodeMode, metaAdsScrapeCreditIdFromNode, metaAdsScrapeSources, metaAdsScrapeTier, metaAdsScrapeWireSources, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, minimalRatioDimensions, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, newScene3DRevisionId, nextScheduleRuns, nodeFeedsAnything, nodeStateMayCarryOutput, normalizeCaptionNumericLevers, normalizeEdl, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeScheduleRule, normalizeScheduleRules, normalizeTemplateCategory, normalizeTranscript, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, overlayFontById, overlayImageEffectsSchema, overlayPlatformById, overlayQrStyleSchema, overlayShapeElement, overlayShapeStyleSchema, overlayStrokeSchema, overlayTextStyleSchema, overlayVariantHandle, overlayVariantIdFromHandle, parseAspectToken, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, parseSpeakerEmphasisStyle, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planFanOut, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, previewHorizonMs, pricedOutputDurationSec, pricedVideoSelection, pro3DRenderCoreOutputSchema, pro3DRenderFrameUnit, pro3DRenderJobOutputSchema, pro3DRenderProducedSchemaVersion, pro3DRenderQuoteSchema, pro3DRenderReviewVerdictSchema, pro3DRenderShotStillSchema, pro3DRenderShotStills, pro3DRenderTimingOverrides, qualityOptionsByKind, readPromptAffixes, reasoningOutputFloor, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, remapMsThroughEdl, remapTranscriptThroughEdl, renderAnalyzedScene, renderVideoCreditId, requiresSequenceExecution, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCaptionLevers, resolveCaptionLook, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEdlSegmentSlots, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveFrameDelivery, resolveFrameFitAspect, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveInstagramScrapeCreditId, resolveLabel, resolveListExpression, resolveListFanOut, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveMetaAdsScrapeCreditId, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolveOutputCanvas, resolvePipelineModel, resolveRelativeWindowToken, resolveScene3DAuthoringEngine, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTemplateCategory, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoLinkOutput, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, ruleMatches, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DAcceptedSchemaVersionsSchema, scene3DAnchorNameSchema, scene3DAnchorSchema, scene3DAnyPlanSchema, scene3DAssetAnimationSchema, scene3DAssetIdSchema, scene3DAssetRefSchema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSampleSchema, scene3DCameraSchema, scene3DCameraTrackIssues, scene3DCameraTrackObjectSchema, scene3DCameraTrackPlanIssues, scene3DCameraTrackSchema, scene3DClayLightingSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DEngineIdSchema, scene3DEntityAcceptsOverlay, scene3DEntityCapabilitySchema, scene3DEntityV2Schema, scene3DEntityVisualSchema, scene3DIdSchema, scene3DInputAssetSchema, scene3DInputAssetsForEngine, scene3DInputAssetsSchema, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DNodeNameSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, scene3DRenderTier, scene3DRenderTierCredits, scene3DReviewNote, scene3DReviewVerdictOf, scene3DSampleForFrame, scene3DSha256Schema, scene3DShotForFrame, scene3DShotIndexForFrame, scene3DShotSchema, scene3DUrlSchema, scene3DV2AdmissionIssues, scene3DV2EditOperationSchema, scene3DV2EditOperationsSchema, scene3DV2HierarchyDepth, scene3DV2NormalizationIssues, scene3DV2OverrideInputSchema, scene3DV2ResourceUsage, scene3DVersionTokenSchema, scene3DZodIssues, scheduleMatchesAt, scheduleOccurrences, searchModelVariants, seedance2AudioLimitSec, seedanceVideoEditCreditId, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, sizeVec3Schema, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, speakerLayoutAllows, speakerPresentationWarnings, speakerSwitchOverlaps, speakerTurns, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, splitInstagramTargets, splitMetaAdsAdvertiserNames, splitMetaAdsPageUrls, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, stripUnownedRefs, summarizeScene3DOperations, sunoCreditType, sunoModelHonoursDuration, supportedDefaultDimensions, supportsAdvancedMode, supportsAutoVideoDuration, supportsEndAnchor, supportsExtendRender, templateCategoryStoredValues, timezoneOffsetMinutes, toConnectedReference, toConnectedReferences, togglePick, transcribeLaneSupportsWordTimestamps, transcribeProvidersWithWordTimestamps, transcribeWordTimestampsRefusal, transcriptDurationSec, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapEditPlanOutput, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateEdl, validateEdlClipSet, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, verifyScene3DPlanV2ContentHash, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoLinkDownloadedFile, videoLinkNeedsDownload, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|