@nodaro/shared 2.18.0 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +350 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +955 -564
- package/dist/index.d.ts +955 -564
- package/dist/index.js +334 -24
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/credit-identifiers.test.ts +180 -0
- package/src/__tests__/gvp-supported-providers.test.ts +22 -1
- package/src/__tests__/image-pricing-catalog-coverage.test.ts +139 -0
- package/src/__tests__/normalize-node-params.test.ts +36 -0
- package/src/__tests__/organizations-types.test.ts +29 -1
- package/src/__tests__/prompt-length-limits.test.ts +40 -0
- package/src/__tests__/suno-credit-type.test.ts +54 -0
- package/src/__tests__/video-analysis-brief.test.ts +61 -0
- package/src/__tests__/video-audio-capability.test.ts +43 -0
- package/src/__tests__/video-mode-for-inputs.test.ts +1 -1
- package/src/__tests__/wan-3-catalog.test.ts +243 -0
- package/src/credit-identifiers.ts +191 -21
- package/src/i18n/held-prop.ar.ts +2 -0
- package/src/i18n/held-prop.de.ts +3 -0
- package/src/i18n/held-prop.es.ts +3 -0
- package/src/i18n/held-prop.fr.ts +2 -0
- package/src/i18n/held-prop.he.ts +3 -0
- package/src/i18n/held-prop.hi.ts +2 -0
- package/src/i18n/held-prop.ja.ts +3 -0
- package/src/i18n/held-prop.ko.ts +3 -0
- package/src/i18n/held-prop.pt-BR.ts +3 -0
- package/src/i18n/held-prop.ru.ts +2 -0
- package/src/i18n/held-prop.zh-CN.ts +3 -0
- package/src/i18n/person.ar.ts +3 -0
- package/src/i18n/person.de.ts +4 -0
- package/src/i18n/person.es.ts +4 -0
- package/src/i18n/person.fr.ts +3 -0
- package/src/i18n/person.he.ts +4 -0
- package/src/i18n/person.hi.ts +3 -0
- package/src/i18n/person.ja.ts +4 -0
- package/src/i18n/person.ko.ts +4 -0
- package/src/i18n/person.pt-BR.ts +4 -0
- package/src/i18n/person.ru.ts +3 -0
- package/src/i18n/person.zh-CN.ts +4 -0
- package/src/i18n/setting.ar.ts +2 -0
- package/src/i18n/setting.de.ts +3 -0
- package/src/i18n/setting.es.ts +3 -0
- package/src/i18n/setting.fr.ts +2 -0
- package/src/i18n/setting.he.ts +3 -0
- package/src/i18n/setting.hi.ts +2 -0
- package/src/i18n/setting.ja.ts +3 -0
- package/src/i18n/setting.ko.ts +3 -0
- package/src/i18n/setting.pt-BR.ts +3 -0
- package/src/i18n/setting.ru.ts +2 -0
- package/src/i18n/setting.zh-CN.ts +3 -0
- package/src/i18n/style.ar.ts +2 -0
- package/src/i18n/style.de.ts +3 -0
- package/src/i18n/style.es.ts +3 -0
- package/src/i18n/style.fr.ts +2 -0
- package/src/i18n/style.he.ts +3 -0
- package/src/i18n/style.hi.ts +2 -0
- package/src/i18n/style.ja.ts +3 -0
- package/src/i18n/style.ko.ts +3 -0
- package/src/i18n/style.pt-BR.ts +3 -0
- package/src/i18n/style.ru.ts +2 -0
- package/src/i18n/style.zh-CN.ts +3 -0
- package/src/i18n/styling.ar.ts +4 -0
- package/src/i18n/styling.de.ts +5 -0
- package/src/i18n/styling.es.ts +5 -0
- package/src/i18n/styling.fr.ts +4 -0
- package/src/i18n/styling.he.ts +5 -0
- package/src/i18n/styling.hi.ts +4 -0
- package/src/i18n/styling.ja.ts +5 -0
- package/src/i18n/styling.ko.ts +5 -0
- package/src/i18n/styling.pt-BR.ts +5 -0
- package/src/i18n/styling.ru.ts +4 -0
- package/src/i18n/styling.zh-CN.ts +5 -0
- package/src/index.ts +17 -0
- package/src/model-catalog.ts +101 -0
- package/src/model-constants.ts +251 -16
- package/src/node-default-mappings.ts +5 -0
- package/src/normalize-node-params.ts +8 -0
- package/src/organizations/types.ts +12 -0
- package/src/organizations/views.ts +114 -0
- package/src/video-analysis.ts +45 -0
- package/src/video-ui-defaults.ts +66 -0
package/dist/index.d.ts
CHANGED
|
@@ -524,6 +524,33 @@ declare const CREDIT_BASE_USD = 0.002;
|
|
|
524
524
|
* (generate-image, image-to-image, edit-image). Single source of truth — the route Zod
|
|
525
525
|
* schemas and the factory-preset guard test all read this. Prompt cap ONLY (not negativePrompt). */
|
|
526
526
|
declare const IMAGE_PROMPT_MAX = 5000;
|
|
527
|
+
/**
|
|
528
|
+
* The ONE aspect-ratio vocabulary the image routes' Zod enums are built from —
|
|
529
|
+
* `/v1/generate-image`, `/v1/image-to-image` and `/v1/edit-image` all declare
|
|
530
|
+
* `z.enum(IMAGE_ASPECT_RATIO_VALUES)` instead of keeping three literal lists
|
|
531
|
+
* that drift.
|
|
532
|
+
*
|
|
533
|
+
* It is the UNION of every ratio any `kind: "image"` catalog entry declares, so
|
|
534
|
+
* a value the picker offers can never 400 at the route. That gap has shipped
|
|
535
|
+
* twice — Wan 2.7's ultra-wide `8:1`/`1:8` (fixed on generate-image only) and
|
|
536
|
+
* Nano Banana 2 Lite's banner `4:1`/`1:4` (still open until this tuple landed).
|
|
537
|
+
* `packages/shared/src/__tests__/image-pricing-catalog-coverage.test.ts` fails
|
|
538
|
+
* the build if a new model declares a ratio this tuple is missing.
|
|
539
|
+
*
|
|
540
|
+
* This enum is a VOCABULARY BOUND, not a per-model gate: it only stops a
|
|
541
|
+
* free-form string from reaching a provider as `image_size`. The per-model gate
|
|
542
|
+
* is the catalog snap (`resolveNormalizedImageGen` → `normalizeModelInput`),
|
|
543
|
+
* which CORRECTS an unsupported ratio and discloses it in the response's
|
|
544
|
+
* `adjustments` — never rejects. So widening this tuple is always safe: it
|
|
545
|
+
* defers a rejection to the correcting snap, which is the desired behaviour.
|
|
546
|
+
*
|
|
547
|
+
* `auto` is model-specific (GPT Image 2 / Nano Banana 2 Lite treat it as
|
|
548
|
+
* "native"); it lives here for the same reason as the rest — the snap drops or
|
|
549
|
+
* replaces it for models that do not declare it.
|
|
550
|
+
*/
|
|
551
|
+
declare const IMAGE_ASPECT_RATIO_VALUES: readonly ["auto", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "5:4", "4:5", "21:9", "4:1", "1:4", "8:1", "1:8"];
|
|
552
|
+
/** A ratio string the image routes accept (pre-snap vocabulary, not a per-model guarantee). */
|
|
553
|
+
type ImageAspectRatio = typeof IMAGE_ASPECT_RATIO_VALUES[number];
|
|
527
554
|
/**
|
|
528
555
|
* Per-provider maximum ASSEMBLED image-prompt length (chars), VERIFIED against
|
|
529
556
|
* each model's official docs.kie.ai schema (2026-06). Providers absent here use
|
|
@@ -560,14 +587,35 @@ declare function getMaxImagePromptChars(provider: string | undefined): number;
|
|
|
560
587
|
declare const VIDEO_PROMPT_MAX = 8000;
|
|
561
588
|
/**
|
|
562
589
|
* Suno prompt / lyrics / content ceiling — the LARGEST any Suno version accepts
|
|
563
|
-
* in custom mode (V4.5 / V4.5PLUS / V4.5ALL / V5 / V5.5 = 5000).
|
|
564
|
-
*
|
|
565
|
-
* {@link getMaxSunoPromptChars} (
|
|
566
|
-
*
|
|
567
|
-
*
|
|
568
|
-
*
|
|
590
|
+
* in custom mode (V4.5 / V4.5PLUS / V4.5ALL / V5 / V5.5 = 5000). NOT the route
|
|
591
|
+
* Zod bound — the routes bind at {@link SUNO_HARD_CEILING} and clamp to the
|
|
592
|
+
* per-version cap via {@link getMaxSunoPromptChars} (3000 non-custom for every
|
|
593
|
+
* version; in custom mode 3000 for V4/V3.5, 5000 for V4.5+/V5) before the job
|
|
594
|
+
* is built. This constant is shared with the editor `maxLength` / counter
|
|
595
|
+
* (warn-don't-block at the per-version cap). `style` and `title` have their
|
|
596
|
+
* own caps ({@link getMaxSunoStyleChars} / {@link SUNO_TITLE_MAX}).
|
|
569
597
|
*/
|
|
570
598
|
declare const SUNO_TEXT_MAX = 5000;
|
|
599
|
+
/**
|
|
600
|
+
* Absolute ceiling for every Suno text field on the route Zod schemas
|
|
601
|
+
* (`prompt`, `lyrics`, `fullLyrics`, `content`, `userPrompt`).
|
|
602
|
+
*
|
|
603
|
+
* WARN-DON'T-BLOCK. The per-version caps ({@link getMaxSunoPromptChars} /
|
|
604
|
+
* {@link getMaxSunoStyleChars}) do the real work — the routes CLAMP to them
|
|
605
|
+
* before building the job. The Zod bound only exists to stop abuse, so it must
|
|
606
|
+
* stay generous: until 2026-09 the routes bounded these fields at
|
|
607
|
+
* {@link SUNO_TEXT_MAX} (5000), which meant a programmatically-set prompt (an
|
|
608
|
+
* agent, an app run, a FieldMapping) was hard-REJECTED with a 400 before the
|
|
609
|
+
* clamp could trim it — three app-report rows on 2026-08-19..31.
|
|
610
|
+
*
|
|
611
|
+
* DISTINCT FROM {@link PROMPT_HARD_CEILING} on purpose: that one is an
|
|
612
|
+
* image/video budget pinned to MAX_IMAGE/VIDEO_PROMPT_CHARS_BY_PROVIDER by its
|
|
613
|
+
* own drift guard. Coupling them would let one modality's limits move the
|
|
614
|
+
* other's. This one has a single invariant, enforced in
|
|
615
|
+
* `__tests__/prompt-length-limits.test.ts`: it MUST stay >= every value
|
|
616
|
+
* getMaxSunoPromptChars / getMaxSunoStyleChars can return.
|
|
617
|
+
*/
|
|
618
|
+
declare const SUNO_HARD_CEILING = 30000;
|
|
571
619
|
/**
|
|
572
620
|
* Absolute ceiling for the `prompt` / `negativePrompt` fields on the image and
|
|
573
621
|
* video routes' Zod schemas. The PER-MODEL limits below (and the editor warning)
|
|
@@ -639,9 +687,11 @@ declare const MAX_TTS_CHARS_BY_PROVIDER: Record<string, number>;
|
|
|
639
687
|
/** Max TTS text length (chars) for a provider: verified override, else {@link TTS_TEXT_MAX}. */
|
|
640
688
|
declare function getMaxTtsChars(provider: string | undefined): number;
|
|
641
689
|
/**
|
|
642
|
-
* Suno per-version field caps (from docs.kie.ai/suno-api/generate-music). The
|
|
643
|
-
* flat
|
|
644
|
-
*
|
|
690
|
+
* Suno per-version field caps (from docs.kie.ai/suno-api/generate-music). The
|
|
691
|
+
* original flat 3000 cap was simultaneously too low for V4.5+/V5 prompts
|
|
692
|
+
* (5000) and too high for `style` (1000) and `title` (80). ({@link
|
|
693
|
+
* SUNO_TEXT_MAX} is 5000 today — the largest per-version prompt cap; the
|
|
694
|
+
* route Zod bound is {@link SUNO_HARD_CEILING}.)
|
|
645
695
|
* - prompt / lyrics: 3000 in non-custom mode (all versions); in custom mode
|
|
646
696
|
* 3000 for V4/V3.5 and 5000 for V4.5 / V4.5PLUS / V4.5ALL / V5 / V5.5.
|
|
647
697
|
* - style: 200 for V4/V3.5, 1000 for V4.5+.
|
|
@@ -788,13 +838,13 @@ type ImageGenProvider = typeof IMAGE_GEN_PROVIDERS[number];
|
|
|
788
838
|
type ImageI2IProvider = typeof IMAGE_I2I_PROVIDERS[number];
|
|
789
839
|
type ImageEditProvider = typeof IMAGE_EDIT_PROVIDERS[number];
|
|
790
840
|
/** Image-to-video providers */
|
|
791
|
-
declare const IMAGE_TO_VIDEO_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "kling-master", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "hailuo-2.3-pro", "hailuo-2.3", "hailuo-standard", "wan-i2v", "wan-turbo", "bytedance-lite", "bytedance-pro", "bytedance-pro-fast", "grok-i2v", "wan-2.7-i2v", "happyhorse-i2v", "happyhorse-ref2v", "runway-kie", "kling-3-omni", "gemini-omni-video", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5"];
|
|
841
|
+
declare const IMAGE_TO_VIDEO_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "kling-master", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "hailuo-2.3-pro", "hailuo-2.3", "hailuo-standard", "wan-i2v", "wan-turbo", "bytedance-lite", "bytedance-pro", "bytedance-pro-fast", "grok-i2v", "wan-2.7-i2v", "happyhorse-i2v", "happyhorse-ref2v", "runway-kie", "kling-3-omni", "gemini-omni-video", "gemini-omni-flash", "wan-3", "wan-3-prime", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5"];
|
|
792
842
|
type ImageToVideoProvider = typeof IMAGE_TO_VIDEO_PROVIDERS[number];
|
|
793
843
|
/** Text-to-video providers */
|
|
794
|
-
declare const TEXT_TO_VIDEO_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "grok", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "wan", "hailuo-standard", "bytedance-lite", "bytedance-pro", "wan-turbo", "wan-2.7-t2v", "happyhorse", "runway-kie", "gemini-omni-video", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5", "kling-3-omni", "kling-master", "hailuo-2.3", "hailuo-2.3-pro", "bytedance-pro-fast", "happyhorse-ref2v"];
|
|
844
|
+
declare const TEXT_TO_VIDEO_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "grok", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "wan", "hailuo-standard", "bytedance-lite", "bytedance-pro", "wan-turbo", "wan-2.7-t2v", "happyhorse", "runway-kie", "gemini-omni-video", "gemini-omni-flash", "wan-3", "wan-3-prime", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5", "kling-3-omni", "kling-master", "hailuo-2.3", "hailuo-2.3-pro", "bytedance-pro-fast", "happyhorse-ref2v"];
|
|
795
845
|
type TextToVideoProvider = typeof TEXT_TO_VIDEO_PROVIDERS[number];
|
|
796
846
|
/** Unified video-generation providers (image-to-video ∪ text-to-video) for the generate-video node. */
|
|
797
|
-
declare const VIDEO_GEN_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "kling-master", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "hailuo-2.3-pro", "hailuo-2.3", "hailuo-standard", "wan-i2v", "wan-turbo", "bytedance-lite", "bytedance-pro", "bytedance-pro-fast", "grok-i2v", "wan-2.7-i2v", "happyhorse-i2v", "happyhorse-ref2v", "runway-kie", "kling-3-omni", "gemini-omni-video", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5", ...("veo3" | "kling-3.0" | "seedance-2" | "veo3.1" | "wan-turbo" | "bytedance-lite" | "kling-turbo" | "minimax" | "hailuo-standard" | "grok" | "minimax-h3" | "hailuo-2.3-pro" | "hailuo-2.3" | "veo3_lite" | "gemini-omni-video" | "kling" | "kling-master" | "kling-3-omni" | "grok-imagine-video-1.5" | "seedance" | "seedance-2-fast" | "seedance-2-mini" | "seedance-2-5" | "wan" | "wan-2.7-t2v" | "happyhorse" | "happyhorse-ref2v" | "bytedance-pro" | "bytedance-pro-fast" | "runway-kie" | "ltx-2.3-pro" | "ltx-2.3-fast")[]];
|
|
847
|
+
declare const VIDEO_GEN_PROVIDERS: readonly ["minimax", "veo3", "veo3.1", "veo3_lite", "kling", "kling-turbo", "kling-3.0", "kling-master", "seedance", "seedance-2", "seedance-2-fast", "seedance-2-mini", "seedance-2-5", "minimax-h3", "hailuo-2.3-pro", "hailuo-2.3", "hailuo-standard", "wan-i2v", "wan-turbo", "bytedance-lite", "bytedance-pro", "bytedance-pro-fast", "grok-i2v", "wan-2.7-i2v", "happyhorse-i2v", "happyhorse-ref2v", "runway-kie", "kling-3-omni", "gemini-omni-video", "gemini-omni-flash", "wan-3", "wan-3-prime", "ltx-2.3-pro", "ltx-2.3-fast", "grok-imagine-video-1.5", ...("veo3" | "kling-3.0" | "seedance-2" | "veo3.1" | "wan-turbo" | "bytedance-lite" | "kling-turbo" | "minimax" | "hailuo-standard" | "grok" | "minimax-h3" | "hailuo-2.3-pro" | "hailuo-2.3" | "veo3_lite" | "gemini-omni-video" | "gemini-omni-flash" | "kling" | "kling-master" | "kling-3-omni" | "grok-imagine-video-1.5" | "seedance" | "seedance-2-fast" | "seedance-2-mini" | "seedance-2-5" | "wan-3" | "wan-3-prime" | "wan" | "wan-2.7-t2v" | "happyhorse" | "happyhorse-ref2v" | "bytedance-pro" | "bytedance-pro-fast" | "runway-kie" | "ltx-2.3-pro" | "ltx-2.3-fast")[]];
|
|
798
848
|
type VideoGenProvider = typeof VIDEO_GEN_PROVIDERS[number];
|
|
799
849
|
/**
|
|
800
850
|
* Video models that expose DISTINCT provider ids per mode (text-to-video vs
|
|
@@ -998,6 +1048,52 @@ declare const MINIMAX_H3_DEFAULT_RESOLUTION = "2K";
|
|
|
998
1048
|
* billed tier can never undercut the rendered one.
|
|
999
1049
|
*/
|
|
1000
1050
|
declare function normalizeMinimaxH3Resolution(resolution: string | undefined): "768P" | "2K";
|
|
1051
|
+
/**
|
|
1052
|
+
* Wan 3.0 family — the KIE "wan/3-0-video" market model and its high-speed
|
|
1053
|
+
* "wan/3-0-video-prime" sibling. The two share a BYTE-IDENTICAL input schema
|
|
1054
|
+
* (first/last frame OR an all-purpose reference mode with images/videos/audio,
|
|
1055
|
+
* native `audio` boolean, 2-30s, 480P/720P/1080P, six aspect ratios with
|
|
1056
|
+
* `adaptive` as the default); only the per-second rate differs. Prime is the
|
|
1057
|
+
* FASTER tier at a higher rate — never describe it as "higher quality".
|
|
1058
|
+
*
|
|
1059
|
+
* Exact-membership set — NEVER match on a "wan" prefix: "wan", "wan-i2v",
|
|
1060
|
+
* "wan-turbo", "wan-flash", "wan-videoedit" and the "wan-2.7-*" ids are
|
|
1061
|
+
* unrelated 2.x models with a different surface (and a different reference
|
|
1062
|
+
* token format — see WAN_3_DOCTRINE in @nodaro/prompts).
|
|
1063
|
+
*/
|
|
1064
|
+
declare const WAN_3_PROVIDERS: Set<string>;
|
|
1065
|
+
declare function isWan3Provider(provider: string | undefined): boolean;
|
|
1066
|
+
/** Wan 3.0 resolution the PLATFORM renders when the param is omitted or unknown.
|
|
1067
|
+
* Deliberately NOT KIE's own default (1080P): 720p is the tier the bare credit
|
|
1068
|
+
* identifier prices, so the provider layer pins it to keep render == billed. */
|
|
1069
|
+
declare const WAN_3_DEFAULT_RESOLUTION = "720P";
|
|
1070
|
+
/**
|
|
1071
|
+
* SINGLE normalization for the Wan 3.0 resolution lever (KIE wire enum
|
|
1072
|
+
* "480P" | "720P" | "1080P"). Everything INTERNAL — the catalog, QUALITY_MAP,
|
|
1073
|
+
* dropdowns, RESOLUTION_DURATION_PRICING keys and every emitted credit
|
|
1074
|
+
* identifier — stays LOWERCASE; this helper is the ONE place the uppercase wire
|
|
1075
|
+
* form is produced (backend KIE payload build), the twin of
|
|
1076
|
+
* {@link normalizeMinimaxH3Resolution}.
|
|
1077
|
+
*
|
|
1078
|
+
* Case-insensitive. Anything else (undefined, garbage, a stale "4k") collapses
|
|
1079
|
+
* to {@link WAN_3_DEFAULT_RESOLUTION} — the tier the default credit identifier
|
|
1080
|
+
* reserves — so the billed tier can never undercut the rendered one.
|
|
1081
|
+
*/
|
|
1082
|
+
declare function normalizeWan3Resolution(resolution: string | undefined): "480P" | "720P" | "1080P";
|
|
1083
|
+
/**
|
|
1084
|
+
* Google Gemini Omni family — the KIE "gemini-omni-video" market model and its
|
|
1085
|
+
* faster/cheaper "google/gemini-omni-flash-1-1" sibling. Both take the SAME
|
|
1086
|
+
* request shape (prompt + image_urls references, video-edit through the i2v
|
|
1087
|
+
* handle, 4/6/8/10s, 720p/1080p or a 4K band) and are dispatched through the
|
|
1088
|
+
* same runner, so every behavioural branch that used to compare against the
|
|
1089
|
+
* literal "gemini-omni-video" must ask this predicate instead — V2V routing,
|
|
1090
|
+
* the 7-slot reference quota, the mode swap and the aspect-ratio panels.
|
|
1091
|
+
*
|
|
1092
|
+
* Exact-membership set — NEVER match on a "gemini" prefix (the Gemini LLM ids
|
|
1093
|
+
* would collide).
|
|
1094
|
+
*/
|
|
1095
|
+
declare const GEMINI_OMNI_PROVIDERS: Set<string>;
|
|
1096
|
+
declare function isGeminiOmniProvider(provider: string | undefined): boolean;
|
|
1001
1097
|
/**
|
|
1002
1098
|
* Video models that are CATALOGUED and priced but have NO working dispatch
|
|
1003
1099
|
* path today — selecting one fails at the router, not at validation.
|
|
@@ -1112,6 +1208,10 @@ declare function maxSegmentsFor(provider: string | undefined, capSec: number): n
|
|
|
1112
1208
|
* param at all (inferred from the frame). Only the pure-t2v endpoint requires
|
|
1113
1209
|
* a concrete ratio — the KIE provider layer coerces `adaptive` → `16:9` there
|
|
1114
1210
|
* (see applyMinimaxH3Params in backend kie/video.ts).
|
|
1211
|
+
*
|
|
1212
|
+
* Wan 3.0 also defaults to `adaptive` — it is the model's own KIE default and
|
|
1213
|
+
* the first value in its aspect enum, so an un-set node must not silently run
|
|
1214
|
+
* at 16:9 while the panel displays Adaptive.
|
|
1115
1215
|
*/
|
|
1116
1216
|
declare function defaultVideoAspectRatio(provider: string | undefined): string;
|
|
1117
1217
|
/**
|
|
@@ -1310,8 +1410,9 @@ declare const AUDIO_ADDON_PROVIDERS: Set<string>;
|
|
|
1310
1410
|
type VideoAudioMode = "none" | "ambient" | "native_speech" | "audio_driven";
|
|
1311
1411
|
interface VideoAudioCapability {
|
|
1312
1412
|
mode: VideoAudioMode;
|
|
1313
|
-
/** Provider-option field carrying the on/off toggle, when user-controllable.
|
|
1314
|
-
|
|
1413
|
+
/** Provider-option field carrying the on/off toggle, when user-controllable.
|
|
1414
|
+
* `audio` is Wan 3.0's own boolean lever (KIE `input.audio`, default true). */
|
|
1415
|
+
field?: "generateAudio" | "sound" | "audio";
|
|
1315
1416
|
/** Audio is always produced and can't be turned off by the user (VEO 3.x). */
|
|
1316
1417
|
alwaysOn?: boolean;
|
|
1317
1418
|
/** Enabling audio raises the credit cost (Kling — see AUDIO_ADDON_PROVIDERS). */
|
|
@@ -1791,90 +1892,504 @@ interface ExtraRefCharacterContext {
|
|
|
1791
1892
|
declare function expandExtraRefsToConnectedReferences(extras: ReadonlyArray<ExtraRefInput> | undefined, lookupCharacterContext?: (slug: string) => ExtraRefCharacterContext | undefined): ConnectedReference[];
|
|
1792
1893
|
|
|
1793
1894
|
/**
|
|
1794
|
-
*
|
|
1795
|
-
*
|
|
1895
|
+
* Model catalog — single source of truth for what each Nodaro-exposed model
|
|
1896
|
+
* is, who made it, what it's good for, and which knobs it accepts.
|
|
1897
|
+
*
|
|
1898
|
+
* Consumed by:
|
|
1899
|
+
* - Backend MCP `list_models` tool (renders the nested per-kind / per-family
|
|
1900
|
+
* response so Claude can pick the right model for a user's intent)
|
|
1901
|
+
* - (future) Frontend config panels — today they read parallel registries
|
|
1902
|
+
* in `frontend/src/components/editor/config-panels/model-options.ts`; a
|
|
1903
|
+
* follow-up will migrate them to import from here.
|
|
1904
|
+
*
|
|
1905
|
+
* Authoring rules:
|
|
1906
|
+
* - Keep `description` to one line (≤120 chars). It's what Claude reads to
|
|
1907
|
+
* decide which model to use.
|
|
1908
|
+
* - `useCases` is a small set of short tags (1-3 words) — verbs/nouns Claude
|
|
1909
|
+
* can match against user intent ("typography", "character", "fast",
|
|
1910
|
+
* "cinematic"). Stay consistent across entries: don't write "text" in one
|
|
1911
|
+
* and "typography" in another.
|
|
1912
|
+
* - `aspectRatios` / `resolutions` / `qualities` only appear when the model
|
|
1913
|
+
* actually exposes that lever (e.g., Nano Banana base has no `resolution`).
|
|
1914
|
+
* - `durations` is in seconds.
|
|
1915
|
+
* - `pricing[0]` is ALWAYS the default variant (the bare id without a
|
|
1916
|
+
* composite suffix like `:4K` or `:high`).
|
|
1917
|
+
* - Costs are sourced from `STATIC_CREDIT_COSTS` (see backend
|
|
1918
|
+
* `src/billing/credits.ts`). Keep them in sync if the table changes.
|
|
1919
|
+
* - After editing `MODEL_CATALOG` or `MODEL_RECOMMENDATIONS`, run
|
|
1920
|
+
* `npm run gen:skills` (from `backend/`) to refresh the public
|
|
1921
|
+
* `docs/choosing-models.md` guide. CI (`gen:skills:check`) fails on drift.
|
|
1796
1922
|
*/
|
|
1923
|
+
type ModelKind = "image" | "video" | "audio";
|
|
1924
|
+
type ModelMode = "t2i" | "i2i" | "edit" | "upscale" | "remove-bg" | "i2v" | "t2v" | "v2v" | "extend" | "motion-transfer" | "lip-sync" | "video-upscale" | "tts" | "music" | "sfx" | "stt" | "voice-clone" | "voice-design" | "voice-changer" | "isolation" | "dubbing" | "forced-alignment" | "dialogue" | "video-analysis" | "video-audit";
|
|
1925
|
+
interface PriceVariant {
|
|
1926
|
+
/** Composite identifier as it appears in `STATIC_CREDIT_COSTS`. */
|
|
1927
|
+
identifier: string;
|
|
1928
|
+
/** Credits charged at reservation. */
|
|
1929
|
+
credits: number;
|
|
1930
|
+
/** Short human-readable note describing this variant ("1K default", "4K", "with audio"). */
|
|
1931
|
+
note?: string;
|
|
1932
|
+
}
|
|
1933
|
+
interface ModelCatalogEntry {
|
|
1934
|
+
id: string;
|
|
1935
|
+
kind: ModelKind;
|
|
1936
|
+
/**
|
|
1937
|
+
* Operations this model supports. Many video models (minimax, veo3,
|
|
1938
|
+
* seedance) support BOTH i2v AND t2v under the same id — the route handler
|
|
1939
|
+
* picks which KIE endpoint to hit based on whether an image was supplied.
|
|
1940
|
+
* For those, list both modes here so MCP filters and frontend pickers see
|
|
1941
|
+
* the model in either context.
|
|
1942
|
+
*/
|
|
1943
|
+
modes: readonly ModelMode[];
|
|
1944
|
+
/** Vendor / lab that produced the model. Used for UI grouping. */
|
|
1945
|
+
family: string;
|
|
1946
|
+
/** Display name (NOT the id — the id is the API enum value). */
|
|
1947
|
+
label: string;
|
|
1948
|
+
/**
|
|
1949
|
+
* Model LINE for the add-node Models tab — the brand-agnostic product line a
|
|
1950
|
+
* user thinks in ("Nano Banana", "Flux", "VEO", "Kling", "ElevenLabs").
|
|
1951
|
+
* Distinct from `family` (the lab: Google covers Nano Banana + Imagen + VEO).
|
|
1952
|
+
* REQUIRED for every node-creatable model; a completeness guard in
|
|
1953
|
+
* `@nodaro/shared` (model-tree.test.ts) fails if one is missing.
|
|
1954
|
+
*/
|
|
1955
|
+
series?: string;
|
|
1956
|
+
/**
|
|
1957
|
+
* The value written into the creating node's data field when this model is
|
|
1958
|
+
* picked from the Models tab, for models whose catalog id differs from the
|
|
1959
|
+
* stored value. Only `suno-generate` diverges today (id `suno-v5` → `data.model`
|
|
1960
|
+
* "V5"). Omit when the id IS the stored value (the common case).
|
|
1961
|
+
*/
|
|
1962
|
+
dataValue?: string;
|
|
1963
|
+
/** One-liner. Visible to Claude in MCP `list_models` output. */
|
|
1964
|
+
description: string;
|
|
1965
|
+
/** Short tags Claude matches against user intent. */
|
|
1966
|
+
useCases: readonly string[];
|
|
1967
|
+
/**
|
|
1968
|
+
* Capabilities flags: "reference-image", "end-frame", "audio", etc.
|
|
1969
|
+
*
|
|
1970
|
+
* `"video-reference"` (video models only) means the model accepts a
|
|
1971
|
+
* reference VIDEO as a CONDITIONING clip — the r2v transport that
|
|
1972
|
+
* `resolveSeedance2Inputs` builds and that KIE receives as
|
|
1973
|
+
* `reference_video_urls`. It is what generate-video-pro's `extend` render
|
|
1974
|
+
* method needs (a continuation tail off the previous segment), and
|
|
1975
|
+
* `GVP_EXTEND_PROVIDERS` derives from it.
|
|
1976
|
+
*
|
|
1977
|
+
* It is deliberately NOT set on `gemini-omni-video`: that model's
|
|
1978
|
+
* `video_list` input is a V2V SOURCE clip with a trim window, an
|
|
1979
|
+
* auto-determined duration and flat per-generation pricing (see
|
|
1980
|
+
* `runGeminiOmni` in `backend/src/providers/kie/video.ts`) — a different
|
|
1981
|
+
* transport, not a continuation reference.
|
|
1982
|
+
*/
|
|
1983
|
+
features?: readonly string[];
|
|
1984
|
+
aspectRatios?: readonly string[];
|
|
1985
|
+
resolutions?: readonly string[];
|
|
1986
|
+
qualities?: readonly string[];
|
|
1987
|
+
durations?: readonly number[];
|
|
1988
|
+
pricing: readonly PriceVariant[];
|
|
1989
|
+
/** Editorial highlight — "best in tier". Surfaces in MCP output as a ⭐. */
|
|
1990
|
+
featured?: boolean;
|
|
1991
|
+
/**
|
|
1992
|
+
* Per-model overrides for the global value label decorations (e.g. Hailuo
|
|
1993
|
+
* 2.3 Pro labels its 1080P resolution as "1080P (6s max)" because the
|
|
1994
|
+
* model caps long durations at lower resolution). Falls back to
|
|
1995
|
+
* `MODEL_VALUE_LABELS` for values not listed here.
|
|
1996
|
+
*/
|
|
1997
|
+
valueLabels?: Record<string, string>;
|
|
1998
|
+
/**
|
|
1999
|
+
* Hide from MCP `list_models` output and tool model enums. Used for legacy
|
|
2000
|
+
* model versions superseded by newer entries — they remain in the catalog
|
|
2001
|
+
* (and accessible via direct API / frontend pickers for back-compat) but
|
|
2002
|
+
* stop showing up in Claude.ai's model picker, which keeps the surface
|
|
2003
|
+
* tight and steers the agent to the current generation.
|
|
2004
|
+
*
|
|
2005
|
+
* Frontend pickers ignore this flag.
|
|
2006
|
+
*/
|
|
2007
|
+
mcpHidden?: boolean;
|
|
2008
|
+
}
|
|
1797
2009
|
/**
|
|
1798
|
-
*
|
|
1799
|
-
*
|
|
1800
|
-
*
|
|
1801
|
-
*
|
|
1802
|
-
* For image models, uses quality/resolution/renderingSpeed and (Flux 2) the output
|
|
1803
|
-
* megapixel count plus (Flux 2 Max) the number of reference images attached at request time.
|
|
1804
|
-
* For video models, uses duration/sound params when the model has variable pricing.
|
|
2010
|
+
* Editorial recommendations — short "best for X" picks Claude can echo back
|
|
2011
|
+
* to the user when they don't know which model to use. Surfaces as a "Quick
|
|
2012
|
+
* recommendations" footer in MCP `list_models` output.
|
|
1805
2013
|
*/
|
|
1806
|
-
|
|
2014
|
+
interface ModelRecommendation {
|
|
2015
|
+
intent: string;
|
|
2016
|
+
modelIds: readonly string[];
|
|
2017
|
+
note: string;
|
|
2018
|
+
}
|
|
2019
|
+
declare const MODEL_RECOMMENDATIONS: readonly ModelRecommendation[];
|
|
2020
|
+
declare const MODEL_CATALOG: Record<string, ModelCatalogEntry>;
|
|
1807
2021
|
/**
|
|
1808
|
-
*
|
|
1809
|
-
* truth shared by the single-node routes (`/v1/generate-image`,
|
|
1810
|
-
* `/v1/image-to-image`) and the workflow orchestrator
|
|
1811
|
-
* (`payload-builder.ts`). It centralises the two pricing dimensions that must
|
|
1812
|
-
* match across both paths or a Flux 2 generation is billed the wrong tier
|
|
1813
|
-
* (Flux 2 commits non-metered / has no upward true-up, so the reserved
|
|
1814
|
-
* identifier IS the final charge):
|
|
1815
|
-
* - `refCount`: the number of reference images sent to the provider (Flux 2
|
|
1816
|
-
* bills per ref). generate-image passes the assembled count (0 for pure
|
|
1817
|
-
* text-to-image); image-to-image passes 1 (the primary `imageUrl`) + extras.
|
|
1818
|
-
* - `swapToI2i`: generate-image auto-swaps a bare T2I provider to its i2i
|
|
1819
|
-
* sibling (`T2I_TO_I2I_VARIANT`) when refs are attached, so the credit id
|
|
1820
|
-
* matches the variant actually invoked. image-to-image is already an i2i
|
|
1821
|
-
* provider → pass `false`.
|
|
1822
|
-
*
|
|
1823
|
-
* The LoRA short-circuit (`flux-lora-character`) stays at the call site because
|
|
1824
|
-
* the routing decision needs a DB lookup the routes/orchestrator own.
|
|
2022
|
+
* Lookup helpers for MCP and the future frontend migration.
|
|
1825
2023
|
*/
|
|
1826
|
-
declare function
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
refCount: number;
|
|
1832
|
-
swapToI2i?: boolean;
|
|
1833
|
-
}): string;
|
|
1834
|
-
declare function buildVideoCreditModelIdentifier(provider: string, duration?: number | string, sound?: boolean, nodeType?: "image-to-video" | "text-to-video", mode?: string, resolution?: string, hasVideoRef?: boolean): string;
|
|
2024
|
+
declare function listModels(filter?: {
|
|
2025
|
+
kind?: ModelKind;
|
|
2026
|
+
mode?: ModelMode;
|
|
2027
|
+
family?: string;
|
|
2028
|
+
}): ModelCatalogEntry[];
|
|
1835
2029
|
/**
|
|
1836
|
-
*
|
|
1837
|
-
*
|
|
2030
|
+
* Group entries by family, returning a stable order.
|
|
2031
|
+
* Returns Array<{ family: string; models: ModelCatalogEntry[] }>.
|
|
2032
|
+
*/
|
|
2033
|
+
declare function groupByFamily(entries: ModelCatalogEntry[]): Array<{
|
|
2034
|
+
family: string;
|
|
2035
|
+
models: ModelCatalogEntry[];
|
|
2036
|
+
}>;
|
|
2037
|
+
declare function getModel(id: string): ModelCatalogEntry | undefined;
|
|
2038
|
+
type ValidationField = "aspectRatio" | "resolution" | "quality" | "duration";
|
|
2039
|
+
interface ModelValidationIssue {
|
|
2040
|
+
field: ValidationField;
|
|
2041
|
+
message: string;
|
|
2042
|
+
allowed: readonly (string | number)[] | null;
|
|
2043
|
+
}
|
|
2044
|
+
/**
|
|
2045
|
+
* Validate that the user's lever values are supported by the chosen model.
|
|
1838
2046
|
*
|
|
1839
|
-
*
|
|
1840
|
-
*
|
|
2047
|
+
* Returns null on success or the FIRST issue found. We surface a single issue
|
|
2048
|
+
* rather than collecting all so the agent doesn't get a wall of complaints —
|
|
2049
|
+
* fix one thing, retry. Order: aspectRatio → resolution → quality → duration.
|
|
1841
2050
|
*
|
|
1842
|
-
*
|
|
1843
|
-
*
|
|
1844
|
-
*
|
|
2051
|
+
* Semantics:
|
|
2052
|
+
* - If the field is undefined, it's never an issue.
|
|
2053
|
+
* - If the catalog entry doesn't list a corresponding lever (e.g. base
|
|
2054
|
+
* nano-banana has no `resolutions`), passing that field IS an issue —
|
|
2055
|
+
* silently dropping it has caused two bugs already.
|
|
2056
|
+
* - If the value is in the allow list, it's valid.
|
|
2057
|
+
*
|
|
2058
|
+
* Unknown model ids are NOT flagged here — the route handler / Zod model
|
|
2059
|
+
* enum is the right gate for that. We just skip validation.
|
|
1845
2060
|
*/
|
|
1846
|
-
declare function
|
|
1847
|
-
|
|
2061
|
+
declare function validateModelInput(modelId: string, input: {
|
|
2062
|
+
aspectRatio?: string;
|
|
2063
|
+
resolution?: string;
|
|
2064
|
+
quality?: string;
|
|
2065
|
+
duration?: number;
|
|
2066
|
+
}): ModelValidationIssue | null;
|
|
1848
2067
|
/**
|
|
1849
|
-
*
|
|
1850
|
-
*
|
|
1851
|
-
*
|
|
1852
|
-
*
|
|
2068
|
+
* The resolution a Flux 2 model should land on when its stored value is absent
|
|
2069
|
+
* or invalid. Flux 2 exposes ascending megapixel options ("0.5 MP"…"4 MP"), so
|
|
2070
|
+
* snapping to `options[0]` would silently downgrade every node to the cheapest
|
|
2071
|
+
* tier; each variant has a sensible mid default instead. Returns undefined for
|
|
2072
|
+
* every non-Flux-2 model (they snap to `options[0]` normally).
|
|
1853
2073
|
*/
|
|
1854
|
-
declare
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
mode?: "repeat" | "duration";
|
|
1864
|
-
repeatCount?: number;
|
|
1865
|
-
targetDuration?: number;
|
|
1866
|
-
smartLoopCutBeforeRepeat?: boolean;
|
|
1867
|
-
smartLoopCutLookback?: number;
|
|
2074
|
+
declare function defaultResolutionFor(modelId: string): string | undefined;
|
|
2075
|
+
/** One correction `normalizeModelInput` made, for disclosure to the user. */
|
|
2076
|
+
interface ModelInputAdjustment {
|
|
2077
|
+
field: "aspectRatio" | "resolution" | "quality" | "duration";
|
|
2078
|
+
/** The value that was asked for. */
|
|
2079
|
+
from: string | number;
|
|
2080
|
+
/** What it became — `undefined` means the lever was dropped entirely. */
|
|
2081
|
+
to: string | number | undefined;
|
|
2082
|
+
reason: string;
|
|
1868
2083
|
}
|
|
1869
|
-
interface
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
2084
|
+
interface NormalizedModelInput {
|
|
2085
|
+
aspectRatio?: string;
|
|
2086
|
+
resolution?: string;
|
|
2087
|
+
quality?: string;
|
|
2088
|
+
duration?: number;
|
|
2089
|
+
/** Empty when the input was already valid. */
|
|
2090
|
+
adjustments: ModelInputAdjustment[];
|
|
2091
|
+
}
|
|
2092
|
+
/**
|
|
2093
|
+
* Coerce a model's parameters into a combination the model actually accepts.
|
|
2094
|
+
*
|
|
2095
|
+
* The correcting twin of `validateModelInput`. Validation is right when a
|
|
2096
|
+
* human/agent is composing a single call and can retry (MCP verbs do this).
|
|
2097
|
+
* It is the WRONG answer at a persistence or execution boundary: rejecting
|
|
2098
|
+
* there turns a fixable typo into a failed run — and a failed run takes every
|
|
2099
|
+
* already-generated, already-billed sibling node down with it. Incident
|
|
2100
|
+
* 2026-08-09: one node carrying `gpt-image` + `16:9` (a pair the config panel
|
|
2101
|
+
* cannot produce, written straight into workflow JSON by a non-UI author)
|
|
2102
|
+
* aborted a run whose five other nodes had already produced images.
|
|
2103
|
+
*
|
|
2104
|
+
* Rules, mirroring the config panels' provider-change snap:
|
|
2105
|
+
* - Model has no such lever → drop the value (sending it 400s upstream).
|
|
2106
|
+
* - Value outside the model's allow-list → snap to the model's default
|
|
2107
|
+
* (`defaultResolutionFor`) or the first valid option.
|
|
2108
|
+
* - Then apply cross-field constraints that only hold for certain models.
|
|
2109
|
+
*
|
|
2110
|
+
* Unknown model ids pass through untouched — the route's Zod model enum is the
|
|
2111
|
+
* right gate for those, exactly as in `validateModelInput`.
|
|
2112
|
+
*
|
|
2113
|
+
* Every correction is reported in `adjustments` so callers can disclose what
|
|
2114
|
+
* changed rather than silently handing back something else.
|
|
2115
|
+
*/
|
|
2116
|
+
declare function normalizeModelInput(modelId: string, input: {
|
|
2117
|
+
aspectRatio?: string;
|
|
2118
|
+
resolution?: string;
|
|
2119
|
+
quality?: string;
|
|
2120
|
+
duration?: number;
|
|
2121
|
+
}): NormalizedModelInput;
|
|
2122
|
+
interface LabeledOption {
|
|
2123
|
+
value: string;
|
|
2124
|
+
label: string;
|
|
2125
|
+
}
|
|
2126
|
+
/** Return `{value, label}[]` for the model's aspect ratios, or `null` if none. */
|
|
2127
|
+
declare function getAspectRatioOptions(modelId: string): LabeledOption[] | null;
|
|
2128
|
+
/** Return `{value, label}[]` for the model's resolution lever, or `null` if none. */
|
|
2129
|
+
declare function getResolutionOptions(modelId: string): LabeledOption[] | null;
|
|
2130
|
+
/** Return `{value, label}[]` for the model's quality lever, or `null` if none. */
|
|
2131
|
+
declare function getQualityOptions(modelId: string): LabeledOption[] | null;
|
|
2132
|
+
/** Return the model's allowed durations (in seconds), or `null` if none. */
|
|
2133
|
+
declare function getDurationsForModel(modelId: string): number[] | null;
|
|
2134
|
+
/**
|
|
2135
|
+
* Min/max credits across all pricing variants — used by the frontend's
|
|
2136
|
+
* "5–8 cr" range badge in the model dropdown. `null` for models with a
|
|
2137
|
+
* single price point.
|
|
2138
|
+
*/
|
|
2139
|
+
declare function getCreditRange(modelId: string): {
|
|
2140
|
+
min: number;
|
|
2141
|
+
max: number;
|
|
2142
|
+
} | null;
|
|
2143
|
+
/** Whether the model declares a given capability flag in its `features` array. */
|
|
2144
|
+
declare function hasFeature(modelId: string, feature: string): boolean;
|
|
2145
|
+
/**
|
|
2146
|
+
* All ids in the catalog whose `features` includes the given flag. Used by
|
|
2147
|
+
* frontend to build PROVIDERS_WITH_END_FRAME / PROVIDERS_WITH_REFERENCES
|
|
2148
|
+
* lists derived from the catalog.
|
|
2149
|
+
*/
|
|
2150
|
+
declare function modelsWithFeature(feature: string): string[];
|
|
2151
|
+
/**
|
|
2152
|
+
* Map of `{modelId: durations[]}` for every catalog entry whose `modes`
|
|
2153
|
+
* includes the given mode. Used to derive KIE_VIDEO_DURATIONS (mode i2v)
|
|
2154
|
+
* and KIE_T2V_DURATIONS (mode t2v) on the frontend.
|
|
2155
|
+
*/
|
|
2156
|
+
declare function durationsByMode(mode: ModelMode): Record<string, number[]>;
|
|
2157
|
+
/**
|
|
2158
|
+
* Map of `{modelId: LabeledOption[]}` for every catalog entry of the given
|
|
2159
|
+
* kind that exposes a resolution lever. Used to derive
|
|
2160
|
+
* IMAGE_RESOLUTION_OPTIONS / VIDEO_RESOLUTION_OPTIONS on the frontend.
|
|
2161
|
+
*/
|
|
2162
|
+
declare function resolutionOptionsByKind(kind: ModelKind): Record<string, LabeledOption[]>;
|
|
2163
|
+
/**
|
|
2164
|
+
* Map of `{modelId: LabeledOption[]}` for every catalog entry of the given
|
|
2165
|
+
* kind that exposes an aspect_ratio lever.
|
|
2166
|
+
*/
|
|
2167
|
+
declare function aspectRatioOptionsByKind(kind: ModelKind): Record<string, LabeledOption[]>;
|
|
2168
|
+
/** Same shape as `aspectRatioOptionsByKind` but for `qualities`. */
|
|
2169
|
+
declare function qualityOptionsByKind(kind: ModelKind): Record<string, LabeledOption[]>;
|
|
2170
|
+
/** One shaped model row for a picker — capabilities derived from the catalog. */
|
|
2171
|
+
interface ModelMenuOption {
|
|
2172
|
+
/** Catalog id (the API enum value). */
|
|
2173
|
+
id: string;
|
|
2174
|
+
/** Human-readable display name from the catalog. */
|
|
2175
|
+
label: string;
|
|
2176
|
+
/** Resolution levers, `[]` when the model exposes none. */
|
|
2177
|
+
resolutions: LabeledOption[];
|
|
2178
|
+
/** Aspect-ratio levers, `[]` when the model exposes none. */
|
|
2179
|
+
aspectRatios: LabeledOption[];
|
|
2180
|
+
/** Duration levers in seconds (union of i2v+t2v modes); `[]` for image / fixed-duration models. */
|
|
2181
|
+
durations: {
|
|
2182
|
+
value: number;
|
|
2183
|
+
label: string;
|
|
2184
|
+
}[];
|
|
2185
|
+
}
|
|
2186
|
+
/**
|
|
2187
|
+
* Build shaped picker rows for one catalog `kind` from a caller-supplied id
|
|
2188
|
+
* allowlist (the curation — which ids, in what order, stays the caller's). Every
|
|
2189
|
+
* CAPABILITY is derived from the catalog accessors, never hardcoded, so the menu
|
|
2190
|
+
* can't drift as the catalog evolves. Ids absent from the catalog or of the
|
|
2191
|
+
* wrong kind are skipped (so a stale allowlist entry drops out cleanly). Pure;
|
|
2192
|
+
* returns fresh arrays (never aliases the accessor maps).
|
|
2193
|
+
*/
|
|
2194
|
+
declare function buildModelMenu(kind: ModelKind, allowlist: readonly string[]): ModelMenuOption[];
|
|
2195
|
+
/** All `{modelId: {min, max}}` entries that have variable pricing (>1 variant). */
|
|
2196
|
+
declare function creditRangesAll(): Record<string, {
|
|
2197
|
+
min: number;
|
|
2198
|
+
max: number;
|
|
2199
|
+
}>;
|
|
2200
|
+
/**
|
|
2201
|
+
* Tuple of model ids for a given kind + one or more modes. Built for use as
|
|
2202
|
+
* a Zod `z.enum()` argument so MCP tool input schemas stay in sync with the
|
|
2203
|
+
* catalog without manual maintenance.
|
|
2204
|
+
*
|
|
2205
|
+
* Filters out `mcpHidden: true` entries by default — pass `includeHidden`
|
|
2206
|
+
* to surface legacy versions (used internally by validators that still need
|
|
2207
|
+
* to recognize older ids forwarded by direct API callers).
|
|
2208
|
+
*
|
|
2209
|
+
* Pass `kind: null` to skip the kind filter — useful for cross-kind ids
|
|
2210
|
+
* like "grok" (catalog kind=image, modes include both t2i and t2v).
|
|
2211
|
+
*/
|
|
2212
|
+
declare function modelIdsByKindMode(kind: ModelKind | null, modes: readonly ModelMode[], opts?: {
|
|
2213
|
+
includeHidden?: boolean;
|
|
2214
|
+
}): [string, ...string[]];
|
|
2215
|
+
|
|
2216
|
+
/**
|
|
2217
|
+
* Build composite credit model identifiers for variable pricing.
|
|
2218
|
+
* Shared between frontend and backend.
|
|
2219
|
+
*/
|
|
2220
|
+
|
|
2221
|
+
/**
|
|
2222
|
+
* Compute composite model identifier for variable credit pricing.
|
|
2223
|
+
* Examples: "gpt-image:high", "flux:2K", "nano-banana-pro:4K", "ideogram:TURBO",
|
|
2224
|
+
* "flux-2-pro:2MP", "flux-2-max:2MP:1ref" (Flux 2 — billed per megapixel).
|
|
2225
|
+
*
|
|
2226
|
+
* For image models, uses quality/resolution/renderingSpeed and (Flux 2) the output
|
|
2227
|
+
* megapixel count plus (Flux 2 Max) the number of reference images attached at request time.
|
|
2228
|
+
* For video models, uses duration/sound params when the model has variable pricing.
|
|
2229
|
+
*/
|
|
2230
|
+
declare function buildCreditModelIdentifier(provider: string, quality?: string, resolution?: string, renderingSpeed?: string, targetResolution?: string, referenceImageCount?: number): string;
|
|
2231
|
+
/**
|
|
2232
|
+
* An image request's catalog-snapped parameters PLUS the credit identifier
|
|
2233
|
+
* priced off them.
|
|
2234
|
+
*
|
|
2235
|
+
* `adjustments` is the disclosure channel: every lever this changed, why, and
|
|
2236
|
+
* to what. Routes return it in the 200 body so a caller learns their value was
|
|
2237
|
+
* corrected instead of silently getting something else.
|
|
2238
|
+
*/
|
|
2239
|
+
interface NormalizedImageGen {
|
|
2240
|
+
/** Credit identifier, priced off the SNAPPED `resolution` / `quality`. */
|
|
2241
|
+
identifier: string;
|
|
2242
|
+
/** The catalog model id the params were snapped against (post T2I→I2I swap). */
|
|
2243
|
+
modelId: string;
|
|
2244
|
+
aspectRatio?: string;
|
|
2245
|
+
resolution?: string;
|
|
2246
|
+
quality?: string;
|
|
2247
|
+
/** Empty when the caller's values were already valid for `modelId`. */
|
|
2248
|
+
adjustments: ModelInputAdjustment[];
|
|
2249
|
+
}
|
|
2250
|
+
/**
|
|
2251
|
+
* Snap an image request's catalog-governed levers to a combination the model
|
|
2252
|
+
* actually accepts, and price the credit identifier off the SNAPPED values.
|
|
2253
|
+
*
|
|
2254
|
+
* WHY THE SNAP LIVES HERE and not at the call site. Both image routes compute
|
|
2255
|
+
* their credit identifier TWICE — once in the `creditGuard` preHandler (the
|
|
2256
|
+
* CHECK) and once at the handler's `reserveCreditsForJob` (the DEBIT) — and a
|
|
2257
|
+
* dedicated test asserts the two stay byte-identical (see
|
|
2258
|
+
* `backend/src/routes/__tests__/generate-image.test.ts`, "CHECK === DEBIT").
|
|
2259
|
+
* `resolution` and `quality` are pricing dimensions, so a snap applied at only
|
|
2260
|
+
* one of those sites breaks that invariant, and `commit_credits` never collects
|
|
2261
|
+
* an upward delta — the reserve IS the charge. Putting the snap inside the
|
|
2262
|
+
* primitive makes CHECK, DEBIT and the workflow orchestrator agree by
|
|
2263
|
+
* construction rather than by everyone remembering to call a normalizer.
|
|
2264
|
+
*
|
|
2265
|
+
* Inputs are typed `unknown` on purpose: the preHandler runs BEFORE Zod, so a
|
|
2266
|
+
* caller can put a number or an object in `resolution`. Non-strings become
|
|
2267
|
+
* `undefined` rather than reaching `normalizeModelInput` as a lie.
|
|
2268
|
+
*
|
|
2269
|
+
* Unknown model ids pass through untouched (same contract as
|
|
2270
|
+
* `normalizeModelInput`) — the route's provider enum is the gate for those.
|
|
2271
|
+
*/
|
|
2272
|
+
declare function resolveNormalizedImageGen(opts: {
|
|
2273
|
+
provider: string | undefined;
|
|
2274
|
+
aspectRatio?: unknown;
|
|
2275
|
+
quality?: unknown;
|
|
2276
|
+
resolution?: unknown;
|
|
2277
|
+
renderingSpeed?: unknown;
|
|
2278
|
+
refCount: number;
|
|
2279
|
+
swapToI2i?: boolean;
|
|
2280
|
+
}): NormalizedImageGen;
|
|
2281
|
+
/**
|
|
2282
|
+
* Reference-aware image-generation credit identifier — the SINGLE source of
|
|
2283
|
+
* truth shared by the single-node routes (`/v1/generate-image`,
|
|
2284
|
+
* `/v1/image-to-image`) and the workflow orchestrator
|
|
2285
|
+
* (`payload-builder.ts`). It centralises the two pricing dimensions that must
|
|
2286
|
+
* match across both paths or a Flux 2 generation is billed the wrong tier
|
|
2287
|
+
* (Flux 2 commits non-metered / has no upward true-up, so the reserved
|
|
2288
|
+
* identifier IS the final charge):
|
|
2289
|
+
* - `refCount`: the number of reference images sent to the provider (Flux 2
|
|
2290
|
+
* bills per ref). generate-image passes the assembled count (0 for pure
|
|
2291
|
+
* text-to-image); image-to-image passes 1 (the primary `imageUrl`) + extras.
|
|
2292
|
+
* - `swapToI2i`: generate-image auto-swaps a bare T2I provider to its i2i
|
|
2293
|
+
* sibling (`T2I_TO_I2I_VARIANT`) when refs are attached, so the credit id
|
|
2294
|
+
* matches the variant actually invoked. image-to-image is already an i2i
|
|
2295
|
+
* provider → pass `false`.
|
|
2296
|
+
*
|
|
2297
|
+
* The LoRA short-circuit (`flux-lora-character`) stays at the call site because
|
|
2298
|
+
* the routing decision needs a DB lookup the routes/orchestrator own.
|
|
2299
|
+
*/
|
|
2300
|
+
declare function resolveImageGenCreditIdentifier(opts: {
|
|
2301
|
+
provider: string | undefined;
|
|
2302
|
+
quality?: string;
|
|
2303
|
+
resolution?: string;
|
|
2304
|
+
renderingSpeed?: string;
|
|
2305
|
+
refCount: number;
|
|
2306
|
+
swapToI2i?: boolean;
|
|
2307
|
+
}): string;
|
|
2308
|
+
declare function buildVideoCreditModelIdentifier(provider: string, duration?: number | string, sound?: boolean, nodeType?: "image-to-video" | "text-to-video", mode?: string, resolution?: string, hasVideoRef?: boolean): string;
|
|
2309
|
+
/**
|
|
2310
|
+
* Compute composite model identifier for motion control with duration-tiered pricing.
|
|
2311
|
+
* Examples: "kling-3.0-motion:10s", "kling-3.0-motion:1080p:15s", "motion-transfer:5s"
|
|
2312
|
+
*
|
|
2313
|
+
* Wan Animate providers use resolution-tiered pricing (not per-second):
|
|
2314
|
+
* "wan-animate-move" (480p default), "wan-animate-move:580p", "wan-animate-move:720p"
|
|
2315
|
+
*
|
|
2316
|
+
* @param provider - Motion control provider key ("kling" for 2.6, "kling-3.0", "wan-animate-move", "wan-animate-replace")
|
|
2317
|
+
* @param resolution - "720p" or "1080p" (Kling), "480p" or "580p" or "720p" (Wan Animate)
|
|
2318
|
+
* @param videoDuration - Reference video duration in seconds (defaults to 10s, unused for Wan Animate)
|
|
2319
|
+
*/
|
|
2320
|
+
declare function buildMotionCreditModelIdentifier(provider: string, resolution: string, videoDuration?: number): string;
|
|
2321
|
+
/**
|
|
2322
|
+
* The Suno operations whose credit key depends on the model VERSION.
|
|
2323
|
+
*
|
|
2324
|
+
* `/v1/suno/generate`, `/cover` and `/extend` resolve their creditGuard
|
|
2325
|
+
* identifier through `sunoCreditType(model, <operation>)` (routes/suno.ts
|
|
2326
|
+
* :247-249, :335-337, :407-409). EVERY other Suno route charges a flat
|
|
2327
|
+
* per-operation key and ignores the version the node carries — mashup (:648),
|
|
2328
|
+
* add-instrumental (:852), add-vocals (:907), upload-extend (:1016),
|
|
2329
|
+
* replace-section (:710), style-boost (:771), convert-wav (:962),
|
|
2330
|
+
* lyrics (:482), music-video (:594), voice (:1218).
|
|
2331
|
+
*
|
|
2332
|
+
* Anything that QUOTES a Suno price — a dropdown row, a node badge, the
|
|
2333
|
+
* workflow-credit estimator — must follow the same split, or it displays a
|
|
2334
|
+
* credit key the route never charges.
|
|
2335
|
+
*/
|
|
2336
|
+
declare const SUNO_VERSION_PRICED_OPERATIONS: readonly ["suno-generate", "suno-cover", "suno-extend"];
|
|
2337
|
+
/**
|
|
2338
|
+
* The seven Suno operations that appear behind a select/dropdown UI (model
|
|
2339
|
+
* pickers, node badges, the credit estimator) — the three version-priced
|
|
2340
|
+
* operations above, plus the four flat-key operations exercised by
|
|
2341
|
+
* `sunoCreditType`'s own test suite. A readonly tuple so later tasks (the
|
|
2342
|
+
* model dropdowns, node badges) can iterate or count it without redeclaring
|
|
2343
|
+
* the list and drifting from this one.
|
|
2344
|
+
*/
|
|
2345
|
+
declare const SUNO_SELECT_OPERATIONS: readonly ["suno-generate", "suno-cover", "suno-extend", "suno-mashup", "suno-add-instrumental", "suno-add-vocals", "suno-upload-extend"];
|
|
2346
|
+
/**
|
|
2347
|
+
* OUR Nodaro credit key for a Suno operation, given the model version and the
|
|
2348
|
+
* operation (which is also the node type and the BullMQ job name).
|
|
2349
|
+
*
|
|
2350
|
+
* This is the single source of truth for the Suno pricing contract, shared by
|
|
2351
|
+
* the reservation path (routes/suno.ts creditGuard), the egress seam
|
|
2352
|
+
* (workers/handlers/suno.ts `modelKey`, which must match what was reserved),
|
|
2353
|
+
* both workflow-credit estimators (ee/billing/credits.ts and the frontend
|
|
2354
|
+
* config-panels/helpers.ts), the seven Suno model dropdowns and the three Suno
|
|
2355
|
+
* node badges. It is a billing key — NEVER a KIE provider id — which is what
|
|
2356
|
+
* satisfies the B3 egress invariant.
|
|
2357
|
+
*
|
|
2358
|
+
* V5_5 → "suno-v5_5", V5 → "suno-v5", any other version → the operation key.
|
|
2359
|
+
* A non-version-priced operation is returned unchanged.
|
|
2360
|
+
*/
|
|
2361
|
+
declare function sunoCreditType(model: string | undefined, operation: string): string;
|
|
2362
|
+
|
|
2363
|
+
/**
|
|
2364
|
+
* Pure credit estimators for video-utility nodes (loop-video, trim-video,
|
|
2365
|
+
* combine-videos). Used by frontend (Run-button display + API call) AND
|
|
2366
|
+
* backend (creditGuard reservation) so the displayed cost equals what gets
|
|
2367
|
+
* debited.
|
|
2368
|
+
*/
|
|
2369
|
+
declare const VIDEO_UTIL_PRICING: {
|
|
2370
|
+
/** 1 credit per 5 seconds of output, ceiling. */
|
|
2371
|
+
readonly CREDITS_PER_5_SEC: 1;
|
|
2372
|
+
/** Smart-loop-cut work scales at 1 credit per ~24 frames searched. */
|
|
2373
|
+
readonly FRAMES_PER_CREDIT: 24;
|
|
2374
|
+
/** Used when an upstream node hasn't produced a measurable duration yet. */
|
|
2375
|
+
readonly FALLBACK_DURATION_SECONDS: 8;
|
|
2376
|
+
};
|
|
2377
|
+
interface LoopVideoEstimatorInput {
|
|
2378
|
+
mode?: "repeat" | "duration";
|
|
2379
|
+
repeatCount?: number;
|
|
2380
|
+
targetDuration?: number;
|
|
2381
|
+
smartLoopCutBeforeRepeat?: boolean;
|
|
2382
|
+
smartLoopCutLookback?: number;
|
|
2383
|
+
}
|
|
2384
|
+
interface TrimVideoEstimatorInput {
|
|
2385
|
+
trimMode?: "time" | "seconds" | "keep-first-seconds" | "keep-last-seconds" | "frames" | "smart-loop-cut";
|
|
2386
|
+
startTime?: number;
|
|
2387
|
+
endTime?: number;
|
|
2388
|
+
/** Seconds-mirror of frames mode: trim N seconds from start AND/OR end. */
|
|
2389
|
+
trimStartSeconds?: number;
|
|
2390
|
+
trimEndSeconds?: number;
|
|
2391
|
+
/** Keep only the first/last N seconds (probes duration at runtime). */
|
|
2392
|
+
keepFirstSeconds?: number;
|
|
1878
2393
|
keepLastSeconds?: number;
|
|
1879
2394
|
trimStartFrames?: number;
|
|
1880
2395
|
trimEndFrames?: number;
|
|
@@ -4248,497 +4763,175 @@ declare function getAnimalLabel(id: string | undefined | null, fallback?: string
|
|
|
4248
4763
|
* `picker-catalogs.ts`'s own uppercase value imports and can only SHRINK, so a
|
|
4249
4764
|
* new raw-array reader under `packages/prompts/src` fails CI. A FUNCTION in
|
|
4250
4765
|
* `@nodaro/shared` (where the catalog itself lives) is invisible to that scan
|
|
4251
|
-
* and is the same "functions only" discipline `direction-registry.ts` follows.
|
|
4252
|
-
*
|
|
4253
|
-
* Empty string on a miss, matching every `get*PromptHint` in `@nodaro/prompts`:
|
|
4254
|
-
* a retired or unknown id contributes no clause rather than throwing.
|
|
4255
|
-
*/
|
|
4256
|
-
declare function getAnimalPromptHint(id: string | undefined | null): string;
|
|
4257
|
-
/**
|
|
4258
|
-
* The COMPACT counterpart of `getAnimalPromptHint`: the same lookup, the same
|
|
4259
|
-
* empty-string-on-miss, returning the short professional term a prompt would
|
|
4260
|
-
* actually carry ("golden retriever", "t-rex") instead of the full clause.
|
|
4261
|
-
*
|
|
4262
|
-
* An authored `term` wins; otherwise the label IS the professional term for a
|
|
4263
|
-
* concrete object, resolved through the mechanical derivation — NOT a bare
|
|
4264
|
-
* `toLowerCase()` — so a parenthetical label is stripped exactly the way every
|
|
4265
|
-
* other catalog strips it.
|
|
4266
|
-
*/
|
|
4267
|
-
declare function getAnimalTerm(id: string | undefined | null): string;
|
|
4268
|
-
declare const ANIMAL_SUBCATEGORY_LABELS: Readonly<Record<AnimalSubcategory, string>>;
|
|
4269
|
-
declare const ANIMAL_SUBCATEGORY_ORDER: ReadonlyArray<AnimalSubcategory>;
|
|
4270
|
-
|
|
4271
|
-
/**
|
|
4272
|
-
* Canonical catalog of furniture presets for the Object entity node.
|
|
4273
|
-
*
|
|
4274
|
-
* When the Object category is "furniture", users pick a specific furniture
|
|
4275
|
-
* piece from this catalog. The picker auto-fills the object's `objectName`
|
|
4276
|
-
* and `description` so the existing `buildObjectPrompt` pipeline just works
|
|
4277
|
-
* — no backend prompt changes needed.
|
|
4278
|
-
*
|
|
4279
|
-
* Organized into everyday sub-categories: seating, tables, beds, storage,
|
|
4280
|
-
* lighting, kitchen & dining, outdoor, decorative, and bath.
|
|
4281
|
-
*/
|
|
4282
|
-
type FurnitureSubcategory = "seating" | "tables" | "beds" | "storage" | "lighting" | "kitchen-dining" | "outdoor" | "decorative" | "bath";
|
|
4283
|
-
interface Furniture {
|
|
4284
|
-
readonly id: string;
|
|
4285
|
-
readonly label: string;
|
|
4286
|
-
readonly subcategory: FurnitureSubcategory;
|
|
4287
|
-
readonly description: string;
|
|
4288
|
-
/**
|
|
4289
|
-
* Optional authored compact term — the short phrase a professional would
|
|
4290
|
-
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4291
|
-
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4292
|
-
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4293
|
-
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4294
|
-
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4295
|
-
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4296
|
-
*/
|
|
4297
|
-
readonly term?: string;
|
|
4298
|
-
}
|
|
4299
|
-
declare const FURNITURE: ReadonlyArray<Furniture>;
|
|
4300
|
-
declare function getFurniture(id: string | undefined | null): Furniture | undefined;
|
|
4301
|
-
declare function getFurnitureLabel(id: string | undefined | null, fallback?: string): string;
|
|
4302
|
-
declare const FURNITURE_SUBCATEGORY_LABELS: Readonly<Record<FurnitureSubcategory, string>>;
|
|
4303
|
-
declare const FURNITURE_SUBCATEGORY_ORDER: ReadonlyArray<FurnitureSubcategory>;
|
|
4304
|
-
|
|
4305
|
-
/**
|
|
4306
|
-
* Facets of a source character/asset that can be selectively injected into a
|
|
4307
|
-
* consumer character via the Character node's Assets handle (element/asset
|
|
4308
|
-
* injection, P2). Single source of truth for the frontend facet chip options
|
|
4309
|
-
* AND the backend facet-extraction instructions.
|
|
4310
|
-
*
|
|
4311
|
-
* `full` injects the whole source description verbatim (no LLM call needed).
|
|
4312
|
-
* Every other facet is LLM-extracted on demand from the source's
|
|
4313
|
-
* `canonicalDescription` via `POST /v1/character/extract-facet`.
|
|
4314
|
-
*/
|
|
4315
|
-
interface CharacterFacet {
|
|
4316
|
-
/** Stable id stored on the connection (`assetInjections[].facet`). */
|
|
4317
|
-
readonly id: string;
|
|
4318
|
-
/** Human label shown in the facet chip. */
|
|
4319
|
-
readonly label: string;
|
|
4320
|
-
/** What the extractor should pull from the source description. Phrased to
|
|
4321
|
-
* complete "Extract {instruction} …". Unused for `full`. */
|
|
4322
|
-
readonly instruction: string;
|
|
4323
|
-
}
|
|
4324
|
-
declare const CHARACTER_FACETS: readonly CharacterFacet[];
|
|
4325
|
-
declare const DEFAULT_CHARACTER_FACET = "full";
|
|
4326
|
-
declare const CHARACTER_FACET_IDS: ReadonlySet<string>;
|
|
4327
|
-
declare function getCharacterFacet(id: string): CharacterFacet | undefined;
|
|
4328
|
-
|
|
4329
|
-
/**
|
|
4330
|
-
* Canonical catalog of vehicle presets for the Object entity node.
|
|
4331
|
-
*
|
|
4332
|
-
* When the Object category is "vehicle", users pick a specific vehicle from
|
|
4333
|
-
* this catalog. The picker auto-fills the object's `objectName` and
|
|
4334
|
-
* `description` so the existing `buildObjectPrompt` pipeline just works — no
|
|
4335
|
-
* backend prompt changes needed.
|
|
4336
|
-
*
|
|
4337
|
-
* Organized into everyday sub-categories: classic cars, everyday cars,
|
|
4338
|
-
* performance cars, motorcycles, bicycles (human-powered), trucks, transit
|
|
4339
|
-
* (buses + rail + horse-drawn), aircraft, watercraft, military, construction,
|
|
4340
|
-
* and sci-fi.
|
|
4341
|
-
*/
|
|
4342
|
-
type VehicleSubcategory = "cars-classic" | "cars-everyday" | "cars-performance" | "motorcycles" | "bicycles" | "trucks" | "transit" | "aircraft" | "watercraft" | "military" | "construction" | "sci-fi";
|
|
4343
|
-
interface Vehicle {
|
|
4344
|
-
readonly id: string;
|
|
4345
|
-
readonly label: string;
|
|
4346
|
-
readonly subcategory: VehicleSubcategory;
|
|
4347
|
-
readonly description: string;
|
|
4348
|
-
/**
|
|
4349
|
-
* Optional authored compact term — the short phrase a professional would
|
|
4350
|
-
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4351
|
-
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4352
|
-
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4353
|
-
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4354
|
-
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4355
|
-
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4356
|
-
*/
|
|
4357
|
-
readonly term?: string;
|
|
4358
|
-
}
|
|
4359
|
-
declare const VEHICLES: ReadonlyArray<Vehicle>;
|
|
4360
|
-
declare function getVehicle(id: string | undefined | null): Vehicle | undefined;
|
|
4361
|
-
declare function getVehicleLabel(id: string | undefined | null, fallback?: string): string;
|
|
4362
|
-
declare const VEHICLE_SUBCATEGORY_LABELS: Readonly<Record<VehicleSubcategory, string>>;
|
|
4363
|
-
declare const VEHICLE_SUBCATEGORY_ORDER: ReadonlyArray<VehicleSubcategory>;
|
|
4364
|
-
|
|
4365
|
-
/**
|
|
4366
|
-
* Canonical catalog of weapon presets for the Object entity node.
|
|
4367
|
-
*
|
|
4368
|
-
* When the Object category is "weapon", users pick a specific weapon from
|
|
4369
|
-
* this catalog. The picker auto-fills the object's `objectName` and
|
|
4370
|
-
* `description` so the existing `buildObjectPrompt` pipeline just works —
|
|
4371
|
-
* no backend prompt changes needed.
|
|
4372
|
-
*
|
|
4373
|
-
* Organized by weapon family: swords, daggers, axes, polearms, bows,
|
|
4374
|
-
* blunt/impact, throwing, modern firearms, historical firearms, explosives
|
|
4375
|
-
* & siege, sci-fi, and fantasy.
|
|
4376
|
-
*/
|
|
4377
|
-
type WeaponSubcategory = "swords" | "daggers" | "axes" | "polearms" | "bows" | "blunt" | "throwing" | "firearms-modern" | "firearms-historical" | "explosives-siege" | "sci-fi" | "fantasy";
|
|
4378
|
-
interface Weapon {
|
|
4379
|
-
readonly id: string;
|
|
4380
|
-
readonly label: string;
|
|
4381
|
-
readonly subcategory: WeaponSubcategory;
|
|
4382
|
-
readonly description: string;
|
|
4383
|
-
/**
|
|
4384
|
-
* Optional authored compact term — the short phrase a professional would
|
|
4385
|
-
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4386
|
-
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4387
|
-
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4388
|
-
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4389
|
-
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4390
|
-
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4391
|
-
*/
|
|
4392
|
-
readonly term?: string;
|
|
4393
|
-
}
|
|
4394
|
-
declare const WEAPONS: ReadonlyArray<Weapon>;
|
|
4395
|
-
declare function getWeapon(id: string | undefined | null): Weapon | undefined;
|
|
4396
|
-
declare function getWeaponLabel(id: string | undefined | null, fallback?: string): string;
|
|
4397
|
-
declare const WEAPON_SUBCATEGORY_LABELS: Readonly<Record<WeaponSubcategory, string>>;
|
|
4398
|
-
declare const WEAPON_SUBCATEGORY_ORDER: ReadonlyArray<WeaponSubcategory>;
|
|
4399
|
-
|
|
4400
|
-
/**
|
|
4401
|
-
* Multi-select helpers for parameter dimensions that allow up to N picks.
|
|
4402
|
-
*
|
|
4403
|
-
* A dimension's stored value can be:
|
|
4404
|
-
* - undefined / "" / [] → no pick
|
|
4405
|
-
* - string → single pick (back-compat with single-select fields)
|
|
4406
|
-
* - string[] → multi pick (1..N entries)
|
|
4407
|
-
*
|
|
4408
|
-
* `pickIds` normalizes any of those into a clean string[] (deduped, falsy
|
|
4409
|
-
* entries dropped). Pickers cap the array at `maxSelected` (FIFO replacement
|
|
4410
|
-
* is the picker's responsibility, not this helper's).
|
|
4411
|
-
*
|
|
4412
|
-
* Multi-select dimensions today: Person.ethnicity, Mood.mood, Aesthetic.aesthetic.
|
|
4413
|
-
*/
|
|
4414
|
-
declare function pickIds(value: unknown): string[];
|
|
4415
|
-
/**
|
|
4416
|
-
* Cap a multi-pick array at `maxSelected`, FIFO-replacing the oldest entry
|
|
4417
|
-
* when the array is full and a new id is added. Returns a fresh array.
|
|
4418
|
-
*/
|
|
4419
|
-
declare function togglePick(current: ReadonlyArray<string>, id: string, maxSelected: number): string[];
|
|
4420
|
-
|
|
4421
|
-
/**
|
|
4422
|
-
* Model catalog — single source of truth for what each Nodaro-exposed model
|
|
4423
|
-
* is, who made it, what it's good for, and which knobs it accepts.
|
|
4424
|
-
*
|
|
4425
|
-
* Consumed by:
|
|
4426
|
-
* - Backend MCP `list_models` tool (renders the nested per-kind / per-family
|
|
4427
|
-
* response so Claude can pick the right model for a user's intent)
|
|
4428
|
-
* - (future) Frontend config panels — today they read parallel registries
|
|
4429
|
-
* in `frontend/src/components/editor/config-panels/model-options.ts`; a
|
|
4430
|
-
* follow-up will migrate them to import from here.
|
|
4431
|
-
*
|
|
4432
|
-
* Authoring rules:
|
|
4433
|
-
* - Keep `description` to one line (≤120 chars). It's what Claude reads to
|
|
4434
|
-
* decide which model to use.
|
|
4435
|
-
* - `useCases` is a small set of short tags (1-3 words) — verbs/nouns Claude
|
|
4436
|
-
* can match against user intent ("typography", "character", "fast",
|
|
4437
|
-
* "cinematic"). Stay consistent across entries: don't write "text" in one
|
|
4438
|
-
* and "typography" in another.
|
|
4439
|
-
* - `aspectRatios` / `resolutions` / `qualities` only appear when the model
|
|
4440
|
-
* actually exposes that lever (e.g., Nano Banana base has no `resolution`).
|
|
4441
|
-
* - `durations` is in seconds.
|
|
4442
|
-
* - `pricing[0]` is ALWAYS the default variant (the bare id without a
|
|
4443
|
-
* composite suffix like `:4K` or `:high`).
|
|
4444
|
-
* - Costs are sourced from `STATIC_CREDIT_COSTS` (see backend
|
|
4445
|
-
* `src/billing/credits.ts`). Keep them in sync if the table changes.
|
|
4446
|
-
* - After editing `MODEL_CATALOG` or `MODEL_RECOMMENDATIONS`, run
|
|
4447
|
-
* `npm run gen:skills` (from `backend/`) to refresh the public
|
|
4448
|
-
* `docs/choosing-models.md` guide. CI (`gen:skills:check`) fails on drift.
|
|
4449
|
-
*/
|
|
4450
|
-
type ModelKind = "image" | "video" | "audio";
|
|
4451
|
-
type ModelMode = "t2i" | "i2i" | "edit" | "upscale" | "remove-bg" | "i2v" | "t2v" | "v2v" | "extend" | "motion-transfer" | "lip-sync" | "video-upscale" | "tts" | "music" | "sfx" | "stt" | "voice-clone" | "voice-design" | "voice-changer" | "isolation" | "dubbing" | "forced-alignment" | "dialogue" | "video-analysis" | "video-audit";
|
|
4452
|
-
interface PriceVariant {
|
|
4453
|
-
/** Composite identifier as it appears in `STATIC_CREDIT_COSTS`. */
|
|
4454
|
-
identifier: string;
|
|
4455
|
-
/** Credits charged at reservation. */
|
|
4456
|
-
credits: number;
|
|
4457
|
-
/** Short human-readable note describing this variant ("1K default", "4K", "with audio"). */
|
|
4458
|
-
note?: string;
|
|
4459
|
-
}
|
|
4460
|
-
interface ModelCatalogEntry {
|
|
4461
|
-
id: string;
|
|
4462
|
-
kind: ModelKind;
|
|
4463
|
-
/**
|
|
4464
|
-
* Operations this model supports. Many video models (minimax, veo3,
|
|
4465
|
-
* seedance) support BOTH i2v AND t2v under the same id — the route handler
|
|
4466
|
-
* picks which KIE endpoint to hit based on whether an image was supplied.
|
|
4467
|
-
* For those, list both modes here so MCP filters and frontend pickers see
|
|
4468
|
-
* the model in either context.
|
|
4469
|
-
*/
|
|
4470
|
-
modes: readonly ModelMode[];
|
|
4471
|
-
/** Vendor / lab that produced the model. Used for UI grouping. */
|
|
4472
|
-
family: string;
|
|
4473
|
-
/** Display name (NOT the id — the id is the API enum value). */
|
|
4474
|
-
label: string;
|
|
4475
|
-
/**
|
|
4476
|
-
* Model LINE for the add-node Models tab — the brand-agnostic product line a
|
|
4477
|
-
* user thinks in ("Nano Banana", "Flux", "VEO", "Kling", "ElevenLabs").
|
|
4478
|
-
* Distinct from `family` (the lab: Google covers Nano Banana + Imagen + VEO).
|
|
4479
|
-
* REQUIRED for every node-creatable model; a completeness guard in
|
|
4480
|
-
* `@nodaro/shared` (model-tree.test.ts) fails if one is missing.
|
|
4481
|
-
*/
|
|
4482
|
-
series?: string;
|
|
4483
|
-
/**
|
|
4484
|
-
* The value written into the creating node's data field when this model is
|
|
4485
|
-
* picked from the Models tab, for models whose catalog id differs from the
|
|
4486
|
-
* stored value. Only `suno-generate` diverges today (id `suno-v5` → `data.model`
|
|
4487
|
-
* "V5"). Omit when the id IS the stored value (the common case).
|
|
4488
|
-
*/
|
|
4489
|
-
dataValue?: string;
|
|
4490
|
-
/** One-liner. Visible to Claude in MCP `list_models` output. */
|
|
4491
|
-
description: string;
|
|
4492
|
-
/** Short tags Claude matches against user intent. */
|
|
4493
|
-
useCases: readonly string[];
|
|
4494
|
-
/**
|
|
4495
|
-
* Capabilities flags: "reference-image", "end-frame", "audio", etc.
|
|
4496
|
-
*
|
|
4497
|
-
* `"video-reference"` (video models only) means the model accepts a
|
|
4498
|
-
* reference VIDEO as a CONDITIONING clip — the r2v transport that
|
|
4499
|
-
* `resolveSeedance2Inputs` builds and that KIE receives as
|
|
4500
|
-
* `reference_video_urls`. It is what generate-video-pro's `extend` render
|
|
4501
|
-
* method needs (a continuation tail off the previous segment), and
|
|
4502
|
-
* `GVP_EXTEND_PROVIDERS` derives from it.
|
|
4503
|
-
*
|
|
4504
|
-
* It is deliberately NOT set on `gemini-omni-video`: that model's
|
|
4505
|
-
* `video_list` input is a V2V SOURCE clip with a trim window, an
|
|
4506
|
-
* auto-determined duration and flat per-generation pricing (see
|
|
4507
|
-
* `runGeminiOmni` in `backend/src/providers/kie/video.ts`) — a different
|
|
4508
|
-
* transport, not a continuation reference.
|
|
4509
|
-
*/
|
|
4510
|
-
features?: readonly string[];
|
|
4511
|
-
aspectRatios?: readonly string[];
|
|
4512
|
-
resolutions?: readonly string[];
|
|
4513
|
-
qualities?: readonly string[];
|
|
4514
|
-
durations?: readonly number[];
|
|
4515
|
-
pricing: readonly PriceVariant[];
|
|
4516
|
-
/** Editorial highlight — "best in tier". Surfaces in MCP output as a ⭐. */
|
|
4517
|
-
featured?: boolean;
|
|
4518
|
-
/**
|
|
4519
|
-
* Per-model overrides for the global value label decorations (e.g. Hailuo
|
|
4520
|
-
* 2.3 Pro labels its 1080P resolution as "1080P (6s max)" because the
|
|
4521
|
-
* model caps long durations at lower resolution). Falls back to
|
|
4522
|
-
* `MODEL_VALUE_LABELS` for values not listed here.
|
|
4523
|
-
*/
|
|
4524
|
-
valueLabels?: Record<string, string>;
|
|
4525
|
-
/**
|
|
4526
|
-
* Hide from MCP `list_models` output and tool model enums. Used for legacy
|
|
4527
|
-
* model versions superseded by newer entries — they remain in the catalog
|
|
4528
|
-
* (and accessible via direct API / frontend pickers for back-compat) but
|
|
4529
|
-
* stop showing up in Claude.ai's model picker, which keeps the surface
|
|
4530
|
-
* tight and steers the agent to the current generation.
|
|
4531
|
-
*
|
|
4532
|
-
* Frontend pickers ignore this flag.
|
|
4533
|
-
*/
|
|
4534
|
-
mcpHidden?: boolean;
|
|
4535
|
-
}
|
|
4536
|
-
/**
|
|
4537
|
-
* Editorial recommendations — short "best for X" picks Claude can echo back
|
|
4538
|
-
* to the user when they don't know which model to use. Surfaces as a "Quick
|
|
4539
|
-
* recommendations" footer in MCP `list_models` output.
|
|
4540
|
-
*/
|
|
4541
|
-
interface ModelRecommendation {
|
|
4542
|
-
intent: string;
|
|
4543
|
-
modelIds: readonly string[];
|
|
4544
|
-
note: string;
|
|
4545
|
-
}
|
|
4546
|
-
declare const MODEL_RECOMMENDATIONS: readonly ModelRecommendation[];
|
|
4547
|
-
declare const MODEL_CATALOG: Record<string, ModelCatalogEntry>;
|
|
4548
|
-
/**
|
|
4549
|
-
* Lookup helpers for MCP and the future frontend migration.
|
|
4550
|
-
*/
|
|
4551
|
-
declare function listModels(filter?: {
|
|
4552
|
-
kind?: ModelKind;
|
|
4553
|
-
mode?: ModelMode;
|
|
4554
|
-
family?: string;
|
|
4555
|
-
}): ModelCatalogEntry[];
|
|
4556
|
-
/**
|
|
4557
|
-
* Group entries by family, returning a stable order.
|
|
4558
|
-
* Returns Array<{ family: string; models: ModelCatalogEntry[] }>.
|
|
4559
|
-
*/
|
|
4560
|
-
declare function groupByFamily(entries: ModelCatalogEntry[]): Array<{
|
|
4561
|
-
family: string;
|
|
4562
|
-
models: ModelCatalogEntry[];
|
|
4563
|
-
}>;
|
|
4564
|
-
declare function getModel(id: string): ModelCatalogEntry | undefined;
|
|
4565
|
-
type ValidationField = "aspectRatio" | "resolution" | "quality" | "duration";
|
|
4566
|
-
interface ModelValidationIssue {
|
|
4567
|
-
field: ValidationField;
|
|
4568
|
-
message: string;
|
|
4569
|
-
allowed: readonly (string | number)[] | null;
|
|
4570
|
-
}
|
|
4571
|
-
/**
|
|
4572
|
-
* Validate that the user's lever values are supported by the chosen model.
|
|
4573
|
-
*
|
|
4574
|
-
* Returns null on success or the FIRST issue found. We surface a single issue
|
|
4575
|
-
* rather than collecting all so the agent doesn't get a wall of complaints —
|
|
4576
|
-
* fix one thing, retry. Order: aspectRatio → resolution → quality → duration.
|
|
4577
|
-
*
|
|
4578
|
-
* Semantics:
|
|
4579
|
-
* - If the field is undefined, it's never an issue.
|
|
4580
|
-
* - If the catalog entry doesn't list a corresponding lever (e.g. base
|
|
4581
|
-
* nano-banana has no `resolutions`), passing that field IS an issue —
|
|
4582
|
-
* silently dropping it has caused two bugs already.
|
|
4583
|
-
* - If the value is in the allow list, it's valid.
|
|
4584
|
-
*
|
|
4585
|
-
* Unknown model ids are NOT flagged here — the route handler / Zod model
|
|
4586
|
-
* enum is the right gate for that. We just skip validation.
|
|
4587
|
-
*/
|
|
4588
|
-
declare function validateModelInput(modelId: string, input: {
|
|
4589
|
-
aspectRatio?: string;
|
|
4590
|
-
resolution?: string;
|
|
4591
|
-
quality?: string;
|
|
4592
|
-
duration?: number;
|
|
4593
|
-
}): ModelValidationIssue | null;
|
|
4594
|
-
/**
|
|
4595
|
-
* The resolution a Flux 2 model should land on when its stored value is absent
|
|
4596
|
-
* or invalid. Flux 2 exposes ascending megapixel options ("0.5 MP"…"4 MP"), so
|
|
4597
|
-
* snapping to `options[0]` would silently downgrade every node to the cheapest
|
|
4598
|
-
* tier; each variant has a sensible mid default instead. Returns undefined for
|
|
4599
|
-
* every non-Flux-2 model (they snap to `options[0]` normally).
|
|
4600
|
-
*/
|
|
4601
|
-
declare function defaultResolutionFor(modelId: string): string | undefined;
|
|
4602
|
-
/** One correction `normalizeModelInput` made, for disclosure to the user. */
|
|
4603
|
-
interface ModelInputAdjustment {
|
|
4604
|
-
field: "aspectRatio" | "resolution" | "quality" | "duration";
|
|
4605
|
-
/** The value that was asked for. */
|
|
4606
|
-
from: string | number;
|
|
4607
|
-
/** What it became — `undefined` means the lever was dropped entirely. */
|
|
4608
|
-
to: string | number | undefined;
|
|
4609
|
-
reason: string;
|
|
4610
|
-
}
|
|
4611
|
-
interface NormalizedModelInput {
|
|
4612
|
-
aspectRatio?: string;
|
|
4613
|
-
resolution?: string;
|
|
4614
|
-
quality?: string;
|
|
4615
|
-
duration?: number;
|
|
4616
|
-
/** Empty when the input was already valid. */
|
|
4617
|
-
adjustments: ModelInputAdjustment[];
|
|
4618
|
-
}
|
|
4619
|
-
/**
|
|
4620
|
-
* Coerce a model's parameters into a combination the model actually accepts.
|
|
4621
|
-
*
|
|
4622
|
-
* The correcting twin of `validateModelInput`. Validation is right when a
|
|
4623
|
-
* human/agent is composing a single call and can retry (MCP verbs do this).
|
|
4624
|
-
* It is the WRONG answer at a persistence or execution boundary: rejecting
|
|
4625
|
-
* there turns a fixable typo into a failed run — and a failed run takes every
|
|
4626
|
-
* already-generated, already-billed sibling node down with it. Incident
|
|
4627
|
-
* 2026-08-09: one node carrying `gpt-image` + `16:9` (a pair the config panel
|
|
4628
|
-
* cannot produce, written straight into workflow JSON by a non-UI author)
|
|
4629
|
-
* aborted a run whose five other nodes had already produced images.
|
|
4630
|
-
*
|
|
4631
|
-
* Rules, mirroring the config panels' provider-change snap:
|
|
4632
|
-
* - Model has no such lever → drop the value (sending it 400s upstream).
|
|
4633
|
-
* - Value outside the model's allow-list → snap to the model's default
|
|
4634
|
-
* (`defaultResolutionFor`) or the first valid option.
|
|
4635
|
-
* - Then apply cross-field constraints that only hold for certain models.
|
|
4636
|
-
*
|
|
4637
|
-
* Unknown model ids pass through untouched — the route's Zod model enum is the
|
|
4638
|
-
* right gate for those, exactly as in `validateModelInput`.
|
|
4639
|
-
*
|
|
4640
|
-
* Every correction is reported in `adjustments` so callers can disclose what
|
|
4641
|
-
* changed rather than silently handing back something else.
|
|
4642
|
-
*/
|
|
4643
|
-
declare function normalizeModelInput(modelId: string, input: {
|
|
4644
|
-
aspectRatio?: string;
|
|
4645
|
-
resolution?: string;
|
|
4646
|
-
quality?: string;
|
|
4647
|
-
duration?: number;
|
|
4648
|
-
}): NormalizedModelInput;
|
|
4649
|
-
interface LabeledOption {
|
|
4650
|
-
value: string;
|
|
4651
|
-
label: string;
|
|
4652
|
-
}
|
|
4653
|
-
/** Return `{value, label}[]` for the model's aspect ratios, or `null` if none. */
|
|
4654
|
-
declare function getAspectRatioOptions(modelId: string): LabeledOption[] | null;
|
|
4655
|
-
/** Return `{value, label}[]` for the model's resolution lever, or `null` if none. */
|
|
4656
|
-
declare function getResolutionOptions(modelId: string): LabeledOption[] | null;
|
|
4657
|
-
/** Return `{value, label}[]` for the model's quality lever, or `null` if none. */
|
|
4658
|
-
declare function getQualityOptions(modelId: string): LabeledOption[] | null;
|
|
4659
|
-
/** Return the model's allowed durations (in seconds), or `null` if none. */
|
|
4660
|
-
declare function getDurationsForModel(modelId: string): number[] | null;
|
|
4661
|
-
/**
|
|
4662
|
-
* Min/max credits across all pricing variants — used by the frontend's
|
|
4663
|
-
* "5–8 cr" range badge in the model dropdown. `null` for models with a
|
|
4664
|
-
* single price point.
|
|
4665
|
-
*/
|
|
4666
|
-
declare function getCreditRange(modelId: string): {
|
|
4667
|
-
min: number;
|
|
4668
|
-
max: number;
|
|
4669
|
-
} | null;
|
|
4670
|
-
/** Whether the model declares a given capability flag in its `features` array. */
|
|
4671
|
-
declare function hasFeature(modelId: string, feature: string): boolean;
|
|
4766
|
+
* and is the same "functions only" discipline `direction-registry.ts` follows.
|
|
4767
|
+
*
|
|
4768
|
+
* Empty string on a miss, matching every `get*PromptHint` in `@nodaro/prompts`:
|
|
4769
|
+
* a retired or unknown id contributes no clause rather than throwing.
|
|
4770
|
+
*/
|
|
4771
|
+
declare function getAnimalPromptHint(id: string | undefined | null): string;
|
|
4672
4772
|
/**
|
|
4673
|
-
*
|
|
4674
|
-
*
|
|
4675
|
-
*
|
|
4773
|
+
* The COMPACT counterpart of `getAnimalPromptHint`: the same lookup, the same
|
|
4774
|
+
* empty-string-on-miss, returning the short professional term a prompt would
|
|
4775
|
+
* actually carry ("golden retriever", "t-rex") instead of the full clause.
|
|
4776
|
+
*
|
|
4777
|
+
* An authored `term` wins; otherwise the label IS the professional term for a
|
|
4778
|
+
* concrete object, resolved through the mechanical derivation — NOT a bare
|
|
4779
|
+
* `toLowerCase()` — so a parenthetical label is stripped exactly the way every
|
|
4780
|
+
* other catalog strips it.
|
|
4676
4781
|
*/
|
|
4677
|
-
declare function
|
|
4782
|
+
declare function getAnimalTerm(id: string | undefined | null): string;
|
|
4783
|
+
declare const ANIMAL_SUBCATEGORY_LABELS: Readonly<Record<AnimalSubcategory, string>>;
|
|
4784
|
+
declare const ANIMAL_SUBCATEGORY_ORDER: ReadonlyArray<AnimalSubcategory>;
|
|
4785
|
+
|
|
4678
4786
|
/**
|
|
4679
|
-
*
|
|
4680
|
-
*
|
|
4681
|
-
*
|
|
4787
|
+
* Canonical catalog of furniture presets for the Object entity node.
|
|
4788
|
+
*
|
|
4789
|
+
* When the Object category is "furniture", users pick a specific furniture
|
|
4790
|
+
* piece from this catalog. The picker auto-fills the object's `objectName`
|
|
4791
|
+
* and `description` so the existing `buildObjectPrompt` pipeline just works
|
|
4792
|
+
* — no backend prompt changes needed.
|
|
4793
|
+
*
|
|
4794
|
+
* Organized into everyday sub-categories: seating, tables, beds, storage,
|
|
4795
|
+
* lighting, kitchen & dining, outdoor, decorative, and bath.
|
|
4682
4796
|
*/
|
|
4683
|
-
|
|
4797
|
+
type FurnitureSubcategory = "seating" | "tables" | "beds" | "storage" | "lighting" | "kitchen-dining" | "outdoor" | "decorative" | "bath";
|
|
4798
|
+
interface Furniture {
|
|
4799
|
+
readonly id: string;
|
|
4800
|
+
readonly label: string;
|
|
4801
|
+
readonly subcategory: FurnitureSubcategory;
|
|
4802
|
+
readonly description: string;
|
|
4803
|
+
/**
|
|
4804
|
+
* Optional authored compact term — the short phrase a professional would
|
|
4805
|
+
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4806
|
+
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4807
|
+
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4808
|
+
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4809
|
+
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4810
|
+
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4811
|
+
*/
|
|
4812
|
+
readonly term?: string;
|
|
4813
|
+
}
|
|
4814
|
+
declare const FURNITURE: ReadonlyArray<Furniture>;
|
|
4815
|
+
declare function getFurniture(id: string | undefined | null): Furniture | undefined;
|
|
4816
|
+
declare function getFurnitureLabel(id: string | undefined | null, fallback?: string): string;
|
|
4817
|
+
declare const FURNITURE_SUBCATEGORY_LABELS: Readonly<Record<FurnitureSubcategory, string>>;
|
|
4818
|
+
declare const FURNITURE_SUBCATEGORY_ORDER: ReadonlyArray<FurnitureSubcategory>;
|
|
4819
|
+
|
|
4684
4820
|
/**
|
|
4685
|
-
*
|
|
4686
|
-
*
|
|
4687
|
-
*
|
|
4821
|
+
* Facets of a source character/asset that can be selectively injected into a
|
|
4822
|
+
* consumer character via the Character node's Assets handle (element/asset
|
|
4823
|
+
* injection, P2). Single source of truth for the frontend facet chip options
|
|
4824
|
+
* AND the backend facet-extraction instructions.
|
|
4825
|
+
*
|
|
4826
|
+
* `full` injects the whole source description verbatim (no LLM call needed).
|
|
4827
|
+
* Every other facet is LLM-extracted on demand from the source's
|
|
4828
|
+
* `canonicalDescription` via `POST /v1/character/extract-facet`.
|
|
4688
4829
|
*/
|
|
4689
|
-
|
|
4830
|
+
interface CharacterFacet {
|
|
4831
|
+
/** Stable id stored on the connection (`assetInjections[].facet`). */
|
|
4832
|
+
readonly id: string;
|
|
4833
|
+
/** Human label shown in the facet chip. */
|
|
4834
|
+
readonly label: string;
|
|
4835
|
+
/** What the extractor should pull from the source description. Phrased to
|
|
4836
|
+
* complete "Extract {instruction} …". Unused for `full`. */
|
|
4837
|
+
readonly instruction: string;
|
|
4838
|
+
}
|
|
4839
|
+
declare const CHARACTER_FACETS: readonly CharacterFacet[];
|
|
4840
|
+
declare const DEFAULT_CHARACTER_FACET = "full";
|
|
4841
|
+
declare const CHARACTER_FACET_IDS: ReadonlySet<string>;
|
|
4842
|
+
declare function getCharacterFacet(id: string): CharacterFacet | undefined;
|
|
4843
|
+
|
|
4690
4844
|
/**
|
|
4691
|
-
*
|
|
4692
|
-
*
|
|
4845
|
+
* Canonical catalog of vehicle presets for the Object entity node.
|
|
4846
|
+
*
|
|
4847
|
+
* When the Object category is "vehicle", users pick a specific vehicle from
|
|
4848
|
+
* this catalog. The picker auto-fills the object's `objectName` and
|
|
4849
|
+
* `description` so the existing `buildObjectPrompt` pipeline just works — no
|
|
4850
|
+
* backend prompt changes needed.
|
|
4851
|
+
*
|
|
4852
|
+
* Organized into everyday sub-categories: classic cars, everyday cars,
|
|
4853
|
+
* performance cars, motorcycles, bicycles (human-powered), trucks, transit
|
|
4854
|
+
* (buses + rail + horse-drawn), aircraft, watercraft, military, construction,
|
|
4855
|
+
* and sci-fi.
|
|
4693
4856
|
*/
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
label: string;
|
|
4711
|
-
}[];
|
|
4857
|
+
type VehicleSubcategory = "cars-classic" | "cars-everyday" | "cars-performance" | "motorcycles" | "bicycles" | "trucks" | "transit" | "aircraft" | "watercraft" | "military" | "construction" | "sci-fi";
|
|
4858
|
+
interface Vehicle {
|
|
4859
|
+
readonly id: string;
|
|
4860
|
+
readonly label: string;
|
|
4861
|
+
readonly subcategory: VehicleSubcategory;
|
|
4862
|
+
readonly description: string;
|
|
4863
|
+
/**
|
|
4864
|
+
* Optional authored compact term — the short phrase a professional would
|
|
4865
|
+
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4866
|
+
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4867
|
+
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4868
|
+
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4869
|
+
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4870
|
+
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4871
|
+
*/
|
|
4872
|
+
readonly term?: string;
|
|
4712
4873
|
}
|
|
4874
|
+
declare const VEHICLES: ReadonlyArray<Vehicle>;
|
|
4875
|
+
declare function getVehicle(id: string | undefined | null): Vehicle | undefined;
|
|
4876
|
+
declare function getVehicleLabel(id: string | undefined | null, fallback?: string): string;
|
|
4877
|
+
declare const VEHICLE_SUBCATEGORY_LABELS: Readonly<Record<VehicleSubcategory, string>>;
|
|
4878
|
+
declare const VEHICLE_SUBCATEGORY_ORDER: ReadonlyArray<VehicleSubcategory>;
|
|
4879
|
+
|
|
4713
4880
|
/**
|
|
4714
|
-
*
|
|
4715
|
-
*
|
|
4716
|
-
*
|
|
4717
|
-
*
|
|
4718
|
-
*
|
|
4719
|
-
*
|
|
4881
|
+
* Canonical catalog of weapon presets for the Object entity node.
|
|
4882
|
+
*
|
|
4883
|
+
* When the Object category is "weapon", users pick a specific weapon from
|
|
4884
|
+
* this catalog. The picker auto-fills the object's `objectName` and
|
|
4885
|
+
* `description` so the existing `buildObjectPrompt` pipeline just works —
|
|
4886
|
+
* no backend prompt changes needed.
|
|
4887
|
+
*
|
|
4888
|
+
* Organized by weapon family: swords, daggers, axes, polearms, bows,
|
|
4889
|
+
* blunt/impact, throwing, modern firearms, historical firearms, explosives
|
|
4890
|
+
* & siege, sci-fi, and fantasy.
|
|
4720
4891
|
*/
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4892
|
+
type WeaponSubcategory = "swords" | "daggers" | "axes" | "polearms" | "bows" | "blunt" | "throwing" | "firearms-modern" | "firearms-historical" | "explosives-siege" | "sci-fi" | "fantasy";
|
|
4893
|
+
interface Weapon {
|
|
4894
|
+
readonly id: string;
|
|
4895
|
+
readonly label: string;
|
|
4896
|
+
readonly subcategory: WeaponSubcategory;
|
|
4897
|
+
readonly description: string;
|
|
4898
|
+
/**
|
|
4899
|
+
* Optional authored compact term — the short phrase a professional would
|
|
4900
|
+
* write in a prompt, as opposed to the user-facing `label` (see the `term`
|
|
4901
|
+
* convention in `@nodaro/prompts`'s `term.ts`). Authored ONLY where the
|
|
4902
|
+
* lowercased label is not that phrase — a UI compound naming two things at
|
|
4903
|
+
* once ("Airship / Dirigible" -> "airship", "Plasma Sword / Lightsaber" ->
|
|
4904
|
+
* "plasma sword"). Everywhere else the lowercased label IS the term for a
|
|
4905
|
+
* concrete object ("golden retriever", "katana"), so nothing is authored.
|
|
4906
|
+
*/
|
|
4907
|
+
readonly term?: string;
|
|
4908
|
+
}
|
|
4909
|
+
declare const WEAPONS: ReadonlyArray<Weapon>;
|
|
4910
|
+
declare function getWeapon(id: string | undefined | null): Weapon | undefined;
|
|
4911
|
+
declare function getWeaponLabel(id: string | undefined | null, fallback?: string): string;
|
|
4912
|
+
declare const WEAPON_SUBCATEGORY_LABELS: Readonly<Record<WeaponSubcategory, string>>;
|
|
4913
|
+
declare const WEAPON_SUBCATEGORY_ORDER: ReadonlyArray<WeaponSubcategory>;
|
|
4914
|
+
|
|
4727
4915
|
/**
|
|
4728
|
-
*
|
|
4729
|
-
* a Zod `z.enum()` argument so MCP tool input schemas stay in sync with the
|
|
4730
|
-
* catalog without manual maintenance.
|
|
4916
|
+
* Multi-select helpers for parameter dimensions that allow up to N picks.
|
|
4731
4917
|
*
|
|
4732
|
-
*
|
|
4733
|
-
*
|
|
4734
|
-
*
|
|
4918
|
+
* A dimension's stored value can be:
|
|
4919
|
+
* - undefined / "" / [] → no pick
|
|
4920
|
+
* - string → single pick (back-compat with single-select fields)
|
|
4921
|
+
* - string[] → multi pick (1..N entries)
|
|
4735
4922
|
*
|
|
4736
|
-
*
|
|
4737
|
-
*
|
|
4923
|
+
* `pickIds` normalizes any of those into a clean string[] (deduped, falsy
|
|
4924
|
+
* entries dropped). Pickers cap the array at `maxSelected` (FIFO replacement
|
|
4925
|
+
* is the picker's responsibility, not this helper's).
|
|
4926
|
+
*
|
|
4927
|
+
* Multi-select dimensions today: Person.ethnicity, Mood.mood, Aesthetic.aesthetic.
|
|
4738
4928
|
*/
|
|
4739
|
-
declare function
|
|
4740
|
-
|
|
4741
|
-
|
|
4929
|
+
declare function pickIds(value: unknown): string[];
|
|
4930
|
+
/**
|
|
4931
|
+
* Cap a multi-pick array at `maxSelected`, FIFO-replacing the oldest entry
|
|
4932
|
+
* when the array is full and a new id is added. Returns a fresh array.
|
|
4933
|
+
*/
|
|
4934
|
+
declare function togglePick(current: ReadonlyArray<string>, id: string, maxSelected: number): string[];
|
|
4742
4935
|
|
|
4743
4936
|
/**
|
|
4744
4937
|
* Caption styles for the add-captions node. Static path uses FFmpeg drawtext;
|
|
@@ -8923,6 +9116,12 @@ declare function stripTransientRuntimeData<T extends {
|
|
|
8923
9116
|
* through mode-dependent defaults (`"adaptive"` for Seedance/Hailuo, duration
|
|
8924
9117
|
* composites tied to pricing) that this flat normalizer would flatten wrongly;
|
|
8925
9118
|
* they get their own pass once those defaults are catalog-derived too.
|
|
9119
|
+
*
|
|
9120
|
+
* `modify-image` carries the same provider/aspectRatio/resolution/quality trio
|
|
9121
|
+
* as `image-to-image` (it routes through the same worker), and `edit-image`
|
|
9122
|
+
* carries provider + aspectRatio. `edit-image`'s `targetResolution` is an
|
|
9123
|
+
* UPSCALE target, a different field this module never reads — so listing the
|
|
9124
|
+
* type here heals its ratio without touching what it is priced on.
|
|
8926
9125
|
*/
|
|
8927
9126
|
declare const MODEL_PARAM_NODE_TYPES: ReadonlySet<string>;
|
|
8928
9127
|
interface NodeParamAdjustment extends ModelInputAdjustment {
|
|
@@ -10372,6 +10571,19 @@ declare function inferMusicVideo(analysis: {
|
|
|
10372
10571
|
}>;
|
|
10373
10572
|
}>;
|
|
10374
10573
|
} | undefined | null): boolean;
|
|
10574
|
+
/**
|
|
10575
|
+
* The analysis with its server-derived fields removed — the form an LLM is
|
|
10576
|
+
* handed when the analysis IS the brief (Nodaro Studio's Director and its
|
|
10577
|
+
* job-id loader). Drops `warnings` and `variationFolds` at the top and
|
|
10578
|
+
* `visualResolved`, `slotRefs`, `oversized` on every scene; keeps
|
|
10579
|
+
* `refImageUrl` (a downstream cast image) and everything else. Never mutates;
|
|
10580
|
+
* a non-object input comes back as-is.
|
|
10581
|
+
*
|
|
10582
|
+
* ONE strip list, shared by the worker that composes the brief server-side
|
|
10583
|
+
* (`llm-structured` jobs with a `videoUrl`) and the client that loads a
|
|
10584
|
+
* finished analysis into a textarea, so the two can never drift.
|
|
10585
|
+
*/
|
|
10586
|
+
declare function stripDerivedAnalysisFields(json: unknown): unknown;
|
|
10375
10587
|
|
|
10376
10588
|
/**
|
|
10377
10589
|
* Video-analysis pricing — shared duration-bucket credit model.
|
|
@@ -10506,6 +10718,49 @@ declare function videoAuditCreditsForBucket(bucketSec: number, auto: boolean): n
|
|
|
10506
10718
|
*/
|
|
10507
10719
|
declare function bucketSecondsFromAuditCreditId(id: string): number | null;
|
|
10508
10720
|
|
|
10721
|
+
/**
|
|
10722
|
+
* UI-default fills for the unified video nodes — the ONE source of truth shared
|
|
10723
|
+
* by the backend DAG payload builder, the config-panel fail-safe snaps and the
|
|
10724
|
+
* node's hover/run strip.
|
|
10725
|
+
*
|
|
10726
|
+
* Several config panels RENDER a default without persisting it to node data, so
|
|
10727
|
+
* an untouched node submits `aspectRatio` / `resolution` undefined and the
|
|
10728
|
+
* enqueued job row (and the /v1/jobs echo) then disagrees with what actually
|
|
10729
|
+
* renders. Worse, the panels' generic snap writes `resolutions[0]` for a stale
|
|
10730
|
+
* value, which is the CHEAPEST tier under the repo's ascending-resolution
|
|
10731
|
+
* convention — not necessarily the tier the model renders and bills.
|
|
10732
|
+
*
|
|
10733
|
+
* These helpers were local to `backend/src/services/workflow-engine/payload-builder.ts`
|
|
10734
|
+
* until the Wan 3.0 launch gave the platform its first provider whose declared
|
|
10735
|
+
* billing default differs from `resolutions[0]`; three surfaces then had to
|
|
10736
|
+
* agree, so they live here.
|
|
10737
|
+
*
|
|
10738
|
+
* The resolution fill is per-family ON PURPOSE. Wan 3.0 reads its DECLARED
|
|
10739
|
+
* billing default (PRICING_DEFAULT_RESOLUTION = 720p) because its catalog list
|
|
10740
|
+
* is ascending, so an index-0 fill would write 480p — a tier both `runWan3`
|
|
10741
|
+
* (which renders 720P) and the credit identifier (which bills the 720p row)
|
|
10742
|
+
* disagree with. The Seedance family keeps its historical first-catalog-tier
|
|
10743
|
+
* fill, deliberately: switching it to PRICING_DEFAULT_RESOLUTION would reprice
|
|
10744
|
+
* live seedance-2-5 runs, whose declared default (720p) differs from the 480p
|
|
10745
|
+
* this has always filled. That 480p-fill vs 720p-billing-default divergence on
|
|
10746
|
+
* seedance-2-5 is a KNOWN pre-existing gap, out of scope here — do not "align"
|
|
10747
|
+
* the branches without repricing it deliberately.
|
|
10748
|
+
*/
|
|
10749
|
+
/** `adaptive` is the aspect default for Seedance 2, MiniMax H3 and Wan 3.0. */
|
|
10750
|
+
declare function uiAspectRatioFill(provider: string): string | undefined;
|
|
10751
|
+
/** See the file docstring — per-family on purpose; never a generic
|
|
10752
|
+
* PRICING_DEFAULT_RESOLUTION read (that would reprice seedance-2-5). */
|
|
10753
|
+
declare function uiResolutionFill(provider: string): string | undefined;
|
|
10754
|
+
/**
|
|
10755
|
+
* Duration the node RENDERS and BILLS when `data.duration` is unset, for the
|
|
10756
|
+
* families whose credit identifier declares a duration fallback that is NOT
|
|
10757
|
+
* `durations[0]`. Wan 3.0's bare identifier is the 5s tier while its ladder
|
|
10758
|
+
* starts at 2s; the Gemini Omni family's is the 8s tier while its ladder starts
|
|
10759
|
+
* at 4s. Everyone else falls back to the first listed duration, so this returns
|
|
10760
|
+
* undefined and the caller keeps `durations[0]`.
|
|
10761
|
+
*/
|
|
10762
|
+
declare function uiDurationFill(provider: string): number | undefined;
|
|
10763
|
+
|
|
10509
10764
|
/**
|
|
10510
10765
|
* Smart-cut SEARCH WINDOWS — the shared bound + clamp for
|
|
10511
10766
|
* generate-video-pro's `smartCutFramesPrev` / `smartCutFramesNext`.
|
|
@@ -10651,12 +10906,21 @@ declare const GRANTED_ACCESS: readonly ["view", "edit"];
|
|
|
10651
10906
|
type GrantedAccess = (typeof GRANTED_ACCESS)[number];
|
|
10652
10907
|
declare const SUBMISSION_STATUSES: readonly ["submitted", "in_review", "returned", "approved"];
|
|
10653
10908
|
type SubmissionStatus = (typeof SUBMISSION_STATUSES)[number];
|
|
10909
|
+
/**
|
|
10910
|
+
* How a usage report is bucketed. `workspace` is org-scope only; `none`
|
|
10911
|
+
* = flat rows. A runtime list, like `ORG_ROLES`, so the plugin route's Zod is
|
|
10912
|
+
* `z.enum(USAGE_GROUP_BYS)` and the migration guard asserts the SQL
|
|
10913
|
+
* `NOT IN (...)` list equals this minus `none` — one vocabulary, never three
|
|
10914
|
+
* hand-copies that drift.
|
|
10915
|
+
*/
|
|
10916
|
+
declare const USAGE_GROUP_BYS: readonly ["workspace", "member", "model", "day", "none"];
|
|
10917
|
+
type UsageGroupBy = (typeof USAGE_GROUP_BYS)[number];
|
|
10654
10918
|
/**
|
|
10655
10919
|
* Error codes the organization endpoints add to the standard envelope
|
|
10656
10920
|
* (`{ error: { code, message } }`). Clients dispatch on the code, never on
|
|
10657
10921
|
* the message text.
|
|
10658
10922
|
*/
|
|
10659
|
-
declare const ORG_ERROR_CODES: readonly ["not_a_member", "insufficient_role", "org_not_active", "member_suspended", "workspace_archived", "personal_space_disabled", "token_workspace_mismatch", "run_requires_authenticated_member", "budget_exceeded", "member_cap_exceeded", "model_not_allowed", "invitation_expired", "invitation_revoked", "email_mismatch", "join_code_invalid", "domain_not_allowed", "already_started", "collab_unavailable", "terms_required", "not_org_member", "already_a_member", "owner_cannot_leave", "has_active_workspaces", "invitation_not_found", "invitation_accepted", "bulk_invite_cap_exceeded"];
|
|
10923
|
+
declare const ORG_ERROR_CODES: readonly ["not_a_member", "insufficient_role", "org_not_active", "member_suspended", "workspace_archived", "personal_space_disabled", "token_workspace_mismatch", "run_requires_authenticated_member", "budget_exceeded", "member_cap_exceeded", "model_not_allowed", "invitation_expired", "invitation_revoked", "email_mismatch", "join_code_invalid", "domain_not_allowed", "already_started", "collab_unavailable", "audit_unavailable", "terms_required", "not_org_member", "already_a_member", "owner_cannot_leave", "has_active_workspaces", "invitation_not_found", "invitation_accepted", "bulk_invite_cap_exceeded"];
|
|
10660
10924
|
type OrgErrorCode = (typeof ORG_ERROR_CODES)[number];
|
|
10661
10925
|
/**
|
|
10662
10926
|
* The settings every organization kind has a default for. `organizations.
|
|
@@ -10933,6 +11197,133 @@ interface OrgPage<T> {
|
|
|
10933
11197
|
data: T[];
|
|
10934
11198
|
nextCursor: string | null;
|
|
10935
11199
|
}
|
|
11200
|
+
/**
|
|
11201
|
+
* Usage reporting. What `GET /v1/orgs/:id/usage` and
|
|
11202
|
+
* `GET /v1/workspaces/:id/usage` return. No cost/USD field appears anywhere —
|
|
11203
|
+
* a report shows CREDITS a class or team spent, never the platform's own rates
|
|
11204
|
+
* (pricing-leak class, guarded by organizations-types.test.ts and the
|
|
11205
|
+
* migration guard).
|
|
11206
|
+
*/
|
|
11207
|
+
/** One bucket of a usage report. Exactly one of workspace/member/model/day is set. */
|
|
11208
|
+
interface UsageReportRow {
|
|
11209
|
+
key: string;
|
|
11210
|
+
workspace: {
|
|
11211
|
+
id: string;
|
|
11212
|
+
name: string | null;
|
|
11213
|
+
slug: string | null;
|
|
11214
|
+
archived: boolean;
|
|
11215
|
+
} | null;
|
|
11216
|
+
member: {
|
|
11217
|
+
userId: string;
|
|
11218
|
+
displayName: string | null;
|
|
11219
|
+
email: string | null;
|
|
11220
|
+
} | null;
|
|
11221
|
+
model: string | null;
|
|
11222
|
+
/** `YYYY-MM-DD` in the report's `tz`. */
|
|
11223
|
+
day: string | null;
|
|
11224
|
+
runCount: number;
|
|
11225
|
+
appRunCount: number;
|
|
11226
|
+
/** Settled where known, the held reservation otherwise. = settledCredits + inFlightCredits. */
|
|
11227
|
+
credits: number;
|
|
11228
|
+
settledCredits: number;
|
|
11229
|
+
inFlightCredits: number;
|
|
11230
|
+
inFlightRuns: number;
|
|
11231
|
+
}
|
|
11232
|
+
/**
|
|
11233
|
+
* A platform-absorbed line for one workspace, split by ORIGIN (never attributed
|
|
11234
|
+
* to a member). Two ledgers share the `org_usage_variance` source: a
|
|
11235
|
+
* `metered_overrun` (a metered run's overrun beyond the budget — it HAS a
|
|
11236
|
+
* settled usage_logs counterpart) and an `app_markup` shortfall (an
|
|
11237
|
+
* approved-app markup the budget could not cover — it has NO usage_logs row).
|
|
11238
|
+
* `other` is a future/unrecognised origin.
|
|
11239
|
+
*/
|
|
11240
|
+
interface UsageVarianceRow {
|
|
11241
|
+
workspace: {
|
|
11242
|
+
id: string;
|
|
11243
|
+
name: string | null;
|
|
11244
|
+
slug: string | null;
|
|
11245
|
+
} | null;
|
|
11246
|
+
kind: "metered_overrun" | "app_markup" | "other";
|
|
11247
|
+
credits: number;
|
|
11248
|
+
rowCount: number;
|
|
11249
|
+
}
|
|
11250
|
+
/**
|
|
11251
|
+
* Totals over the WHOLE window — every usage_logs row in [from, to] after the
|
|
11252
|
+
* scope / userId / workspaceId narrowing — never over the returned `rows`.
|
|
11253
|
+
* Unaffected by `truncated`; equals a `groupBy=day` report's column-wise sum.
|
|
11254
|
+
*/
|
|
11255
|
+
interface UsageReportTotals {
|
|
11256
|
+
runCount: number;
|
|
11257
|
+
credits: number;
|
|
11258
|
+
settledCredits: number;
|
|
11259
|
+
inFlightCredits: number;
|
|
11260
|
+
/** Metered-overrun variance in the window — a run's overrun the platform absorbed. */
|
|
11261
|
+
platformAbsorbedCredits: number;
|
|
11262
|
+
/** Approved-app markup shortfall the platform absorbed. It has NO usage_logs run, so it is not in the figures above. */
|
|
11263
|
+
appMarkupAbsorbedCredits: number;
|
|
11264
|
+
/**
|
|
11265
|
+
* settledCredits − platformAbsorbedCredits: the METERED settlement that
|
|
11266
|
+
* reached the workspace budget(s). App markup charged to a budget (migration
|
|
11267
|
+
* 352) is not a usage_logs row and is not included here; when a markup
|
|
11268
|
+
* shortfall is absorbed this figure under-reports and may go negative — it is
|
|
11269
|
+
* NOT `workspace_budgets.spent_credits`.
|
|
11270
|
+
*/
|
|
11271
|
+
chargedToBudget: number;
|
|
11272
|
+
}
|
|
11273
|
+
interface UsageReport {
|
|
11274
|
+
scope: "org" | "workspace";
|
|
11275
|
+
scopeId: string;
|
|
11276
|
+
from: string;
|
|
11277
|
+
to: string;
|
|
11278
|
+
tz: string;
|
|
11279
|
+
groupBy: Exclude<UsageGroupBy, "none">;
|
|
11280
|
+
/** Present when a member's self-view or an admin's `?userId=` narrowed the report. */
|
|
11281
|
+
userId: string | null;
|
|
11282
|
+
/** Present when an org report was narrowed to one workspace. */
|
|
11283
|
+
workspaceId: string | null;
|
|
11284
|
+
rows: UsageReportRow[];
|
|
11285
|
+
variance: UsageVarianceRow[];
|
|
11286
|
+
totals: UsageReportTotals;
|
|
11287
|
+
/**
|
|
11288
|
+
* True when more than 5000 buckets existed and the tail of `rows` was dropped
|
|
11289
|
+
* — narrow the window. Only `rows` is incomplete; `totals` and `variance`
|
|
11290
|
+
* cover the whole window regardless.
|
|
11291
|
+
*/
|
|
11292
|
+
truncated: boolean;
|
|
11293
|
+
}
|
|
11294
|
+
/** One usage_logs row as an organization sees it. No cost fields, ever. */
|
|
11295
|
+
interface UsageLogEntry {
|
|
11296
|
+
id: string;
|
|
11297
|
+
createdAt: string;
|
|
11298
|
+
workspace: {
|
|
11299
|
+
id: string;
|
|
11300
|
+
name: string | null;
|
|
11301
|
+
slug: string | null;
|
|
11302
|
+
} | null;
|
|
11303
|
+
member: {
|
|
11304
|
+
userId: string;
|
|
11305
|
+
displayName: string | null;
|
|
11306
|
+
email: string | null;
|
|
11307
|
+
} | null;
|
|
11308
|
+
jobId: string | null;
|
|
11309
|
+
model: string;
|
|
11310
|
+
status: "reserved" | "committed";
|
|
11311
|
+
creditsReserved: number;
|
|
11312
|
+
creditsSettled: number | null;
|
|
11313
|
+
credits: number;
|
|
11314
|
+
isAppRun: boolean;
|
|
11315
|
+
}
|
|
11316
|
+
/** Query parameters shared by both usage routes (dates inclusive, IANA tz). */
|
|
11317
|
+
interface UsageQuery {
|
|
11318
|
+
from?: string;
|
|
11319
|
+
to?: string;
|
|
11320
|
+
tz?: string;
|
|
11321
|
+
groupBy?: UsageGroupBy;
|
|
11322
|
+
workspaceId?: string;
|
|
11323
|
+
userId?: string;
|
|
11324
|
+
cursor?: string;
|
|
11325
|
+
limit?: number;
|
|
11326
|
+
}
|
|
10936
11327
|
|
|
10937
11328
|
/**
|
|
10938
11329
|
* Which DB columns of a saved entity land on its canvas node, per kind.
|
|
@@ -11001,4 +11392,4 @@ declare function entityHydrationColumns(kind: EntityNodeKind): string[];
|
|
|
11001
11392
|
/** Every scalar `kind` actually has, shared plus its own. */
|
|
11002
11393
|
declare function entityScalarFields(kind: EntityNodeKind): ReadonlyArray<readonly [string, string]>;
|
|
11003
11394
|
|
|
11004
|
-
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 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_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, 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 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, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, 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_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 FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, 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_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_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 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, 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_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 NodeParamAdjustment, type NodePresetExport, type NormalizedModelInput, type NormalizedNodes, 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_FIELD_MAP, OUTPUT_FORMATS, 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, 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, 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 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, RENDERING_SPEED_SUPPORT, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, 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, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_MODELS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, 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, 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, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TextToAudioProvider, type TextToVideoProvider, type TranscribeProvider, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_MODES, type UpscaleImageProvider, type UsageMode, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, 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_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, 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 Vehicle, type VehicleSubcategory, 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 VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, 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, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, 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, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isScraperActor, isSeedance2Provider, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveObjectAspectRatio, resolvePipelineModel, resolveRelativeWindowToken, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, runSelector, sanitizeRole, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripExportContent, stripTransientRuntimeData, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|
|
11395
|
+
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 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_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, 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 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, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, 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_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 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_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, 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_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 NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, 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_FIELD_MAP, OUTPUT_FORMATS, 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, 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, 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 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, RENDERING_SPEED_SUPPORT, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, 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, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, 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, 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, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TextToAudioProvider, type TextToVideoProvider, 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_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_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, 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 Vehicle, type VehicleSubcategory, 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 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, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, 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, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isScraperActor, isSeedance2Provider, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeWan3Resolution, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolvePipelineModel, resolveRelativeWindowToken, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, runSelector, sanitizeRole, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripTransientRuntimeData, sunoCreditType, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
|