@nodaro/prompts 1.8.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +371 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +538 -64
- package/dist/index.d.ts +538 -64
- package/dist/index.js +353 -106
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/character-fx-timing-catalogs.test.ts +240 -0
- package/src/__tests__/factory-presets.test.ts +62 -12
- package/src/__tests__/node-prompt-fields.test.ts +81 -0
- package/src/__tests__/parameter-registry-sync.test.ts +4 -1
- package/src/__tests__/prompt-affixes.test.ts +83 -0
- package/src/__tests__/transition-timing-catalogs.test.ts +153 -0
- package/src/__tests__/video-reference-ref-id-tokens.test.ts +301 -0
- package/src/character-fx.ts +102 -19
- package/src/composition-effects.ts +6 -1
- package/src/factory-presets/generate-image.ts +37 -24
- package/src/factory-presets/shared-image.ts +10 -10
- package/src/factory-presets/switchx.ts +6 -6
- package/src/factory-presets/video-edit.ts +6 -6
- package/src/index.ts +1 -0
- package/src/node-prompt-fields.ts +206 -0
- package/src/picker-catalogs.ts +66 -17
- package/src/picker-wiring.ts +2 -1
- package/src/provider-prompt-doctrine.ts +2 -2
- package/src/ref-binding.ts +45 -0
- package/src/ref-id-tokens.ts +112 -0
- package/src/resolve-prompt.ts +60 -5
- package/src/transitions.ts +79 -19
- package/src/video-reference-resolver.ts +78 -39
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConnectedReference, GenericNode, GenericEdge, HintNodeLike, HintGraphContext, EntityStyle, SupportedFontName, CharacterDef, IdentityMeta, SceneData, CharacterMentionTokenInfo, LocationMentionTokenInfo, UsageMode, ProjectedCatalog, ProjectedCatalogDimension, ProjectedCatalogOption, LocaleId, LocaleCatalogMap, StyleDirectives, I18nCatalogId, SurroundDirection } from '@nodaro/shared';
|
|
1
|
+
import { ConnectedReference, GenericNode, GenericEdge, HintNodeLike, HintGraphContext, EntityStyle, SupportedFontName, CharacterDef, IdentityMeta, SceneData, CharacterMentionTokenInfo, LocationMentionTokenInfo, UsageMode, ProjectedCatalog, ProjectedCatalogDimension, ProjectedCatalogOption, LocaleId, LocaleCatalogMap, PromptAffixes, StyleDirectives, I18nCatalogId, SurroundDirection } from '@nodaro/shared';
|
|
2
2
|
export { HintEdgeLike, HintGraphContext, HintNodeLike } from '@nodaro/shared';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
@@ -1000,34 +1000,12 @@ interface StructuredPromptFields {
|
|
|
1000
1000
|
declare function renderStructuredFields(fields: StructuredPromptFields): string;
|
|
1001
1001
|
|
|
1002
1002
|
/**
|
|
1003
|
-
*
|
|
1004
|
-
*
|
|
1005
|
-
*
|
|
1006
|
-
* (`
|
|
1007
|
-
*
|
|
1008
|
-
*
|
|
1009
|
-
* Historically the FE and BE each hand-rolled a byte-for-byte copy of this logic
|
|
1010
|
-
* (they had to stay in lock-step or single-node FE runs and orchestrator runs
|
|
1011
|
-
* would diverge). This module is the lift-and-shift of the FRONTEND resolver's
|
|
1012
|
-
* post-expansion body into one place so there is a single source of truth.
|
|
1013
|
-
*
|
|
1014
|
-
* Purity contract: NO FE/BE-only dependencies. The caller is responsible for the
|
|
1015
|
-
* layer-specific work BEFORE calling in:
|
|
1016
|
-
* - expanding wired Character upstreams into `ConnectedReference[]`
|
|
1017
|
-
* (`wiredCharRefs`), and
|
|
1018
|
-
* - looking up an extra-ref's character metadata by slug
|
|
1019
|
-
* (`lookupCharacterBySlug` — FE: `nodes.find(...)`, BE: `buildCtx`).
|
|
1020
|
-
*
|
|
1021
|
-
* Behavior-preserving when first extracted (the FE resolver's post-expansion
|
|
1022
|
-
* body was lifted verbatim). The ONE intended output change since is the
|
|
1023
|
-
* reference-binding surface string: the per-image subject phrasing, the bullet
|
|
1024
|
-
* ordinals, and the frame directive now emit `@image_N` / `@video_N` /
|
|
1025
|
-
* `@audio_N` (the legacy form was `Image N`) — all routed through the single
|
|
1026
|
-
* `REF_BINDING` swap-point below. The structural strings ("Use these
|
|
1027
|
-
* characters:", the bullet layout, "… is the same subject as …") are otherwise
|
|
1028
|
-
* unchanged.
|
|
1003
|
+
* The reference-binding surface string — `@image_N` / `@video_N` / `@audio_N`
|
|
1004
|
+
* — and the one identity sentence built on it. Split out of
|
|
1005
|
+
* `video-reference-resolver.ts` so the id-addressed token resolver
|
|
1006
|
+
* (`ref-id-tokens.ts`) can bind through the same arrows without a module
|
|
1007
|
+
* cycle; the resolver re-exports both, so importers are unaffected.
|
|
1029
1008
|
*/
|
|
1030
|
-
|
|
1031
1009
|
/**
|
|
1032
1010
|
* The SINGLE swap-point for the reference-binding surface-string (design D1/D7).
|
|
1033
1011
|
*
|
|
@@ -1059,6 +1037,89 @@ declare const REF_BINDING: {
|
|
|
1059
1037
|
readonly ordinal: (n: number) => string;
|
|
1060
1038
|
readonly frame: (n: number, role: "opening" | "closing") => string;
|
|
1061
1039
|
};
|
|
1040
|
+
|
|
1041
|
+
/**
|
|
1042
|
+
* `{ref:<id>}` / `{ref:<id>:<label>}` — id-addressed reference tokens.
|
|
1043
|
+
*
|
|
1044
|
+
* The API/Studio form of the positional `{image:N}` token: the client names a
|
|
1045
|
+
* reference by its OWN `connectedReferences[].id` and the platform substitutes
|
|
1046
|
+
* the `@image_N` seat after IT has done the numbering. Without it a client that
|
|
1047
|
+
* wanted the binding inline had to mirror the numbering walk client-side — a
|
|
1048
|
+
* duplicated rule that misbinds pictures the moment the walk changes.
|
|
1049
|
+
*
|
|
1050
|
+
* `resolveVideoReferenceCore` builds the `RefIdTokenContext` DURING its walk
|
|
1051
|
+
* and calls `resolveRefIdTokens` before the `referenceOrder` reorder (so the
|
|
1052
|
+
* binding follows the reference to its final seat); the video routes call it
|
|
1053
|
+
* standalone on their no-image-reference early return (nothing seated, so
|
|
1054
|
+
* every token degrades).
|
|
1055
|
+
*/
|
|
1056
|
+
/** What `resolveRefIdTokens` resolves against — the numbering walk's output. */
|
|
1057
|
+
interface RefIdTokenContext {
|
|
1058
|
+
/** Reference id → the 1-based `@image_N` seat the walk gave it. */
|
|
1059
|
+
readonly slotById: ReadonlyMap<string, number>;
|
|
1060
|
+
/** Reference id → display name, the degrade target of a token that cannot bind. */
|
|
1061
|
+
readonly nameById: ReadonlyMap<string, string>;
|
|
1062
|
+
/**
|
|
1063
|
+
* How many image references actually ship — the same range gate `{image:N}`
|
|
1064
|
+
* uses. A seat past it (a capped-out or duplicate-URL ref) must not bind.
|
|
1065
|
+
*/
|
|
1066
|
+
readonly imageCount: number;
|
|
1067
|
+
}
|
|
1068
|
+
/**
|
|
1069
|
+
* Rewrite id-addressed reference tokens into the `@image_N` binding of the
|
|
1070
|
+
* reference the caller sent under that id.
|
|
1071
|
+
*
|
|
1072
|
+
* Ids are matched by IDENTITY against the known ids (seated or named), never
|
|
1073
|
+
* parsed by character class: the whole content is tried as an id first (the
|
|
1074
|
+
* longest reading — an id may itself end in something label-shaped), then
|
|
1075
|
+
* `<id>:<label>` split at the last colon, then the token is unknown. The label
|
|
1076
|
+
* class is the one `REFERENCE_TOKEN_RE` uses. An id containing `{`, `}`, an
|
|
1077
|
+
* `@name:N` mention or a `{image:N}` token is unsupported (the mention pass
|
|
1078
|
+
* runs first and would rewrite it; a brace ends the token).
|
|
1079
|
+
*
|
|
1080
|
+
* Per token:
|
|
1081
|
+
* - id seated in range → `REF_BINDING.image(label, N)` when labeled, else the
|
|
1082
|
+
* bare `REF_BINDING.ordinal(N)` — exactly what `{image:N[:label]}` emits.
|
|
1083
|
+
* - otherwise (unknown id, ref skipped by the walk, capped out, or no image
|
|
1084
|
+
* references at all) → the label if given, else the ref's display name if
|
|
1085
|
+
* the id is known, else "". A token never ships raw — a malformed one is
|
|
1086
|
+
* dropped by the last-resort net.
|
|
1087
|
+
*
|
|
1088
|
+
* No whitespace tidy here: every caller runs `resolveReferenceTokens` after
|
|
1089
|
+
* this (the core does at every return), and that collapses the gap a dropped
|
|
1090
|
+
* token leaves. Returns the input untouched when it carries no `{ref:` at all.
|
|
1091
|
+
*/
|
|
1092
|
+
declare function resolveRefIdTokens(prompt: string | undefined, ctx: RefIdTokenContext): string | undefined;
|
|
1093
|
+
|
|
1094
|
+
/**
|
|
1095
|
+
* Shared video-reference resolver CORE — the ONE pure implementation of the
|
|
1096
|
+
* video-prompt `@-mention` + canonical-fallback + extras assembly that BOTH the
|
|
1097
|
+
* frontend (`frontend/src/lib/video-prompt-assembly.ts`) and backend
|
|
1098
|
+
* (`backend/src/services/workflow-engine/payload-builder.ts`) resolvers delegate
|
|
1099
|
+
* to.
|
|
1100
|
+
*
|
|
1101
|
+
* Historically the FE and BE each hand-rolled a byte-for-byte copy of this logic
|
|
1102
|
+
* (they had to stay in lock-step or single-node FE runs and orchestrator runs
|
|
1103
|
+
* would diverge). This module is the lift-and-shift of the FRONTEND resolver's
|
|
1104
|
+
* post-expansion body into one place so there is a single source of truth.
|
|
1105
|
+
*
|
|
1106
|
+
* Purity contract: NO FE/BE-only dependencies. The caller is responsible for the
|
|
1107
|
+
* layer-specific work BEFORE calling in:
|
|
1108
|
+
* - expanding wired Character upstreams into `ConnectedReference[]`
|
|
1109
|
+
* (`wiredCharRefs`), and
|
|
1110
|
+
* - looking up an extra-ref's character metadata by slug
|
|
1111
|
+
* (`lookupCharacterBySlug` — FE: `nodes.find(...)`, BE: `buildCtx`).
|
|
1112
|
+
*
|
|
1113
|
+
* Behavior-preserving when first extracted (the FE resolver's post-expansion
|
|
1114
|
+
* body was lifted verbatim). The ONE intended output change since is the
|
|
1115
|
+
* reference-binding surface string: the per-image subject phrasing, the bullet
|
|
1116
|
+
* ordinals, and the frame directive now emit `@image_N` / `@video_N` /
|
|
1117
|
+
* `@audio_N` (the legacy form was `Image N`) — all routed through the single
|
|
1118
|
+
* `REF_BINDING` swap-point below. The structural strings ("Use these
|
|
1119
|
+
* characters:", the bullet layout, "… is the same subject as …") are otherwise
|
|
1120
|
+
* unchanged.
|
|
1121
|
+
*/
|
|
1122
|
+
|
|
1062
1123
|
/**
|
|
1063
1124
|
* Positional reference counts the editor tokens are resolved against — how many
|
|
1064
1125
|
* image / video / audio references are wired into the node, in worker-payload
|
|
@@ -1102,6 +1163,13 @@ declare function resolveReferenceTokens(prompt: string | undefined, counts: Refe
|
|
|
1102
1163
|
* frontend `ExtraRef` / backend extras: only the fields this core reads.
|
|
1103
1164
|
*/
|
|
1104
1165
|
interface VideoExtraRef {
|
|
1166
|
+
/**
|
|
1167
|
+
* The caller's own id for this reference (`connectedReferences[].id` on the
|
|
1168
|
+
* route, `extraRefs[].id` on the canvas) — what a `{ref:<id>}` token in the
|
|
1169
|
+
* prompt names. Slot-map only: the reorder's tile id stays `wired:<url>`.
|
|
1170
|
+
* Absent → the extra cannot be addressed by id (it still numbers normally).
|
|
1171
|
+
*/
|
|
1172
|
+
id?: string;
|
|
1105
1173
|
url: string;
|
|
1106
1174
|
description?: string;
|
|
1107
1175
|
characterSlug?: string;
|
|
@@ -1207,6 +1275,15 @@ interface ResolveVideoReferenceCoreArgs {
|
|
|
1207
1275
|
* Wired in Phase B Tasks 2-3.
|
|
1208
1276
|
*/
|
|
1209
1277
|
hybridRoles?: boolean;
|
|
1278
|
+
/**
|
|
1279
|
+
* Display names for EVERY reference the caller knows by id — including the
|
|
1280
|
+
* ones it did NOT hand to this walk (the route caps `connectedReferences` to
|
|
1281
|
+
* the provider's image budget before calling in). A `{ref:<id>}` token that
|
|
1282
|
+
* cannot bind degrades to `label ?? refNamesById[id] ?? ""`, so a capped-out
|
|
1283
|
+
* or skipped reference keeps its name in the prose instead of vanishing.
|
|
1284
|
+
* The wired character refs' `defaultName`s are known without this.
|
|
1285
|
+
*/
|
|
1286
|
+
refNamesById?: ReadonlyMap<string, string>;
|
|
1210
1287
|
}
|
|
1211
1288
|
/**
|
|
1212
1289
|
* Resolve `@kira:N` / `@kira:N:smile` mentions in a video-node prompt against
|
|
@@ -1961,7 +2038,10 @@ interface PickerCatalog {
|
|
|
1961
2038
|
readonly options?: readonly PickerOption[];
|
|
1962
2039
|
/** multi-dim: the dimension keys (no single catalog to flatten). */
|
|
1963
2040
|
readonly fields?: readonly string[];
|
|
1964
|
-
/**
|
|
2041
|
+
/** Per-field option lists. Multi-dim catalogs always carry these, one per
|
|
2042
|
+
* `fields` entry in order; a single-dim catalog carries them when it has
|
|
2043
|
+
* secondary parameter fields beside its main picker (transition
|
|
2044
|
+
* position/duration/intensity). */
|
|
1965
2045
|
readonly dimensions?: readonly PickerDimension[];
|
|
1966
2046
|
}
|
|
1967
2047
|
/**
|
|
@@ -3011,9 +3091,23 @@ interface CharacterFx {
|
|
|
3011
3091
|
/** Optional authored compact term (see `term.ts` for the convention). */
|
|
3012
3092
|
readonly term?: string;
|
|
3013
3093
|
}
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3094
|
+
/**
|
|
3095
|
+
* The three timing scales, each derived from the catalog that defines it (see
|
|
3096
|
+
* `CHARACTER_FX_POSITIONS` and friends below).
|
|
3097
|
+
*
|
|
3098
|
+
* The direction matters. These used to be hand-written unions with the clause
|
|
3099
|
+
* tables written out separately beside them, so the two could disagree: add a
|
|
3100
|
+
* step to the union, forget the clause, and the composer indexed a missing key
|
|
3101
|
+
* — pushing `undefined` into the parts list, which `join(", ")` renders as a
|
|
3102
|
+
* dangling separator on a prompt that then ships to a provider with the user's
|
|
3103
|
+
* chosen parameter silently dropped. Deriving the union FROM the catalog makes
|
|
3104
|
+
* that unrepresentable: one array is the source of the type, the option list
|
|
3105
|
+
* the API serves, and the clause table, so a new step reaches all three or
|
|
3106
|
+
* none. The exact id sets are pinned by `character-fx-timing-catalogs.test.ts`.
|
|
3107
|
+
*/
|
|
3108
|
+
type CharacterFxPosition = (typeof CHARACTER_FX_POSITIONS)[number]["id"];
|
|
3109
|
+
type CharacterFxDuration = (typeof CHARACTER_FX_DURATIONS)[number]["id"];
|
|
3110
|
+
type CharacterFxIntensity = (typeof CHARACTER_FX_INTENSITIES)[number]["id"];
|
|
3017
3111
|
interface CharacterFxTiming {
|
|
3018
3112
|
position?: CharacterFxPosition;
|
|
3019
3113
|
duration?: CharacterFxDuration;
|
|
@@ -3034,6 +3128,125 @@ declare function getCharacterFxPromptHint(id: string | undefined | null): string
|
|
|
3034
3128
|
*/
|
|
3035
3129
|
declare function getCharacterFxTerm(id: string | undefined | null): string;
|
|
3036
3130
|
declare const CHARACTER_FX_IDS: ReadonlyArray<string>;
|
|
3131
|
+
/**
|
|
3132
|
+
* The character-fx node's three timing parameters, as catalogs.
|
|
3133
|
+
*
|
|
3134
|
+
* Graded scales in the standard option shape, so a consumer that can only send
|
|
3135
|
+
* ids (Studio, the SDK, MCP) can offer Position / Duration / Intensity without
|
|
3136
|
+
* composing prompt text of its own. `auto` is the no-op head of each scale: an
|
|
3137
|
+
* empty `promptHint`, so an unset parameter contributes nothing and the model
|
|
3138
|
+
* is left to decide, exactly as before these were enumerable.
|
|
3139
|
+
*
|
|
3140
|
+
* These are NOT the transition node's scales, even though the ids match. The
|
|
3141
|
+
* wording is deliberately different — a transition OCCURS and SPANS the clip,
|
|
3142
|
+
* an effect MANIFESTS and PERSISTS — and the three intensity clauses coincide
|
|
3143
|
+
* by accident, not by shared definition. Keep the two catalogs separate; do
|
|
3144
|
+
* not fold one into the other.
|
|
3145
|
+
*
|
|
3146
|
+
* `POSITION_CLAUSES` / `DURATION_CLAUSES` / `INTENSITY_CLAUSES` below are
|
|
3147
|
+
* DERIVED from these arrays, so the clause the composer injects and the hint
|
|
3148
|
+
* the catalog advertises are the same string by construction and cannot drift.
|
|
3149
|
+
*/
|
|
3150
|
+
interface CharacterFxTimingOption {
|
|
3151
|
+
readonly id: string;
|
|
3152
|
+
readonly label: string;
|
|
3153
|
+
readonly description: string;
|
|
3154
|
+
readonly promptHint: string;
|
|
3155
|
+
readonly term?: string;
|
|
3156
|
+
}
|
|
3157
|
+
declare const CHARACTER_FX_POSITIONS: readonly [{
|
|
3158
|
+
readonly id: "auto";
|
|
3159
|
+
readonly label: "Auto";
|
|
3160
|
+
readonly description: "Let the model place the effect";
|
|
3161
|
+
readonly promptHint: "";
|
|
3162
|
+
readonly term: "";
|
|
3163
|
+
}, {
|
|
3164
|
+
readonly id: "start";
|
|
3165
|
+
readonly label: "Start";
|
|
3166
|
+
readonly description: "Occurs at the opening of the clip";
|
|
3167
|
+
readonly promptHint: "the effect occurs at the opening of the clip";
|
|
3168
|
+
readonly term: "at the opening of the clip";
|
|
3169
|
+
}, {
|
|
3170
|
+
readonly id: "middle";
|
|
3171
|
+
readonly label: "Middle";
|
|
3172
|
+
readonly description: "Occurs in the middle of the clip";
|
|
3173
|
+
readonly promptHint: "the effect occurs in the middle of the clip";
|
|
3174
|
+
readonly term: "mid-clip";
|
|
3175
|
+
}, {
|
|
3176
|
+
readonly id: "end";
|
|
3177
|
+
readonly label: "End";
|
|
3178
|
+
readonly description: "Occurs at the end of the clip";
|
|
3179
|
+
readonly promptHint: "the effect occurs at the end of the clip";
|
|
3180
|
+
readonly term: "at the end of the clip";
|
|
3181
|
+
}, {
|
|
3182
|
+
readonly id: "full";
|
|
3183
|
+
readonly label: "Full";
|
|
3184
|
+
readonly description: "Persists for the entire clip";
|
|
3185
|
+
readonly promptHint: "the effect persists for the entire clip";
|
|
3186
|
+
readonly term: "persisting for the whole clip";
|
|
3187
|
+
}];
|
|
3188
|
+
declare const CHARACTER_FX_DURATIONS: readonly [{
|
|
3189
|
+
readonly id: "auto";
|
|
3190
|
+
readonly label: "Auto";
|
|
3191
|
+
readonly description: "Let the model time the effect";
|
|
3192
|
+
readonly promptHint: "";
|
|
3193
|
+
readonly term: "";
|
|
3194
|
+
}, {
|
|
3195
|
+
readonly id: "instant";
|
|
3196
|
+
readonly label: "Instant";
|
|
3197
|
+
readonly description: "Manifests instantaneously";
|
|
3198
|
+
readonly promptHint: "manifesting instantaneously";
|
|
3199
|
+
readonly term: "manifesting instantly";
|
|
3200
|
+
}, {
|
|
3201
|
+
readonly id: "short";
|
|
3202
|
+
readonly label: "Short (~1s)";
|
|
3203
|
+
readonly description: "Manifests over approximately 1 second";
|
|
3204
|
+
readonly promptHint: "manifesting over approximately 1 second";
|
|
3205
|
+
readonly term: "manifesting over about 1 second";
|
|
3206
|
+
}, {
|
|
3207
|
+
readonly id: "medium";
|
|
3208
|
+
readonly label: "Medium (~2s)";
|
|
3209
|
+
readonly description: "Manifests over approximately 2 seconds";
|
|
3210
|
+
readonly promptHint: "manifesting over approximately 2 seconds";
|
|
3211
|
+
readonly term: "manifesting over about 2 seconds";
|
|
3212
|
+
}, {
|
|
3213
|
+
readonly id: "long";
|
|
3214
|
+
readonly label: "Long (~3s)";
|
|
3215
|
+
readonly description: "Manifests over approximately 3 seconds";
|
|
3216
|
+
readonly promptHint: "manifesting over approximately 3 seconds";
|
|
3217
|
+
readonly term: "manifesting over about 3 seconds";
|
|
3218
|
+
}];
|
|
3219
|
+
declare const CHARACTER_FX_INTENSITIES: readonly [{
|
|
3220
|
+
readonly id: "auto";
|
|
3221
|
+
readonly label: "Auto";
|
|
3222
|
+
readonly description: "Let the model judge the effect's energy";
|
|
3223
|
+
readonly promptHint: "";
|
|
3224
|
+
readonly term: "";
|
|
3225
|
+
}, {
|
|
3226
|
+
readonly id: "subtle";
|
|
3227
|
+
readonly label: "Subtle";
|
|
3228
|
+
readonly description: "Restrained, minimal flourish";
|
|
3229
|
+
readonly promptHint: "with subtle restrained energy and minimal flourish";
|
|
3230
|
+
readonly term: "subtly";
|
|
3231
|
+
}, {
|
|
3232
|
+
readonly id: "natural";
|
|
3233
|
+
readonly label: "Natural";
|
|
3234
|
+
readonly description: "Unhurried, unforced timing";
|
|
3235
|
+
readonly promptHint: "with natural unhurried timing";
|
|
3236
|
+
readonly term: "at a natural pace";
|
|
3237
|
+
}, {
|
|
3238
|
+
readonly id: "dynamic";
|
|
3239
|
+
readonly label: "Dynamic";
|
|
3240
|
+
readonly description: "Assertive, energetic";
|
|
3241
|
+
readonly promptHint: "with dynamic energy and assertive flourish";
|
|
3242
|
+
readonly term: "energetically";
|
|
3243
|
+
}, {
|
|
3244
|
+
readonly id: "crazy";
|
|
3245
|
+
readonly label: "Crazy";
|
|
3246
|
+
readonly description: "Extreme, wild, distorted";
|
|
3247
|
+
readonly promptHint: "with extreme exaggerated energy, wild flourishes, and dramatic distortion";
|
|
3248
|
+
readonly term: "wildly exaggerated";
|
|
3249
|
+
}];
|
|
3037
3250
|
/**
|
|
3038
3251
|
* Compose a character-fx prompt-hint sentence from an effect id (or array
|
|
3039
3252
|
* of 1-2 ids for multi-pick) plus target-ref display names (from upstream
|
|
@@ -4802,9 +5015,23 @@ interface Transition {
|
|
|
4802
5015
|
*/
|
|
4803
5016
|
readonly term?: string;
|
|
4804
5017
|
}
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
5018
|
+
/**
|
|
5019
|
+
* The three timing scales, each derived from the catalog that defines it (see
|
|
5020
|
+
* `TRANSITION_POSITIONS` and friends below).
|
|
5021
|
+
*
|
|
5022
|
+
* The direction matters. These used to be hand-written unions with the clause
|
|
5023
|
+
* tables written out separately beside them, so the two could disagree: add a
|
|
5024
|
+
* step to the union, forget the clause, and the composer indexed a missing key
|
|
5025
|
+
* — pushing `undefined` into the parts list, which `join(", ")` renders as a
|
|
5026
|
+
* dangling separator on a prompt that then ships to a provider with the user's
|
|
5027
|
+
* chosen parameter silently dropped. Deriving the union FROM the catalog makes
|
|
5028
|
+
* that unrepresentable: one array is the source of the type, the option list
|
|
5029
|
+
* the API serves, and the clause table, so a new step reaches all three or
|
|
5030
|
+
* none. The exact id sets are pinned by `transition-timing-catalogs.test.ts`.
|
|
5031
|
+
*/
|
|
5032
|
+
type TransitionPosition = (typeof TRANSITION_POSITIONS)[number]["id"];
|
|
5033
|
+
type TransitionDuration = (typeof TRANSITION_DURATIONS)[number]["id"];
|
|
5034
|
+
type TransitionIntensity = (typeof TRANSITION_INTENSITIES)[number]["id"];
|
|
4808
5035
|
interface TransitionTiming {
|
|
4809
5036
|
position?: TransitionPosition;
|
|
4810
5037
|
duration?: TransitionDuration;
|
|
@@ -4827,6 +5054,120 @@ declare function getTransitionPromptHint(id: string | undefined | null): string;
|
|
|
4827
5054
|
*/
|
|
4828
5055
|
declare function getTransitionTerm(id: string | undefined | null): string;
|
|
4829
5056
|
declare const TRANSITION_IDS: ReadonlyArray<string>;
|
|
5057
|
+
/**
|
|
5058
|
+
* The transition node's three timing parameters, as catalogs.
|
|
5059
|
+
*
|
|
5060
|
+
* These are graded scales, not free numbers — the same shape as
|
|
5061
|
+
* `exposure-settings`' aperture or `temporal`'s speed — so a consumer that can
|
|
5062
|
+
* only send ids (Studio, the SDK, MCP) can offer them without composing prompt
|
|
5063
|
+
* text of its own. `auto` is the no-op head of each scale: an empty
|
|
5064
|
+
* `promptHint`, so an unset parameter contributes nothing and the model is left
|
|
5065
|
+
* to decide, exactly as before these were enumerable.
|
|
5066
|
+
*
|
|
5067
|
+
* `POSITION_CLAUSES` / `DURATION_CLAUSES` / `INTENSITY_CLAUSES` below are
|
|
5068
|
+
* DERIVED from these arrays, so the clause the composer injects and the hint
|
|
5069
|
+
* the catalog advertises are the same string by construction and cannot drift.
|
|
5070
|
+
*/
|
|
5071
|
+
interface TransitionTimingOption {
|
|
5072
|
+
readonly id: string;
|
|
5073
|
+
readonly label: string;
|
|
5074
|
+
readonly description: string;
|
|
5075
|
+
readonly promptHint: string;
|
|
5076
|
+
readonly term?: string;
|
|
5077
|
+
}
|
|
5078
|
+
declare const TRANSITION_POSITIONS: readonly [{
|
|
5079
|
+
readonly id: "auto";
|
|
5080
|
+
readonly label: "Auto";
|
|
5081
|
+
readonly description: "Let the model place it";
|
|
5082
|
+
readonly promptHint: "";
|
|
5083
|
+
readonly term: "";
|
|
5084
|
+
}, {
|
|
5085
|
+
readonly id: "start";
|
|
5086
|
+
readonly label: "Start";
|
|
5087
|
+
readonly description: "At the opening of the clip";
|
|
5088
|
+
readonly promptHint: "the transition occurs at the opening of the clip";
|
|
5089
|
+
readonly term: "at the opening of the clip";
|
|
5090
|
+
}, {
|
|
5091
|
+
readonly id: "middle";
|
|
5092
|
+
readonly label: "Middle";
|
|
5093
|
+
readonly description: "In the middle of the clip";
|
|
5094
|
+
readonly promptHint: "the transition occurs in the middle of the clip";
|
|
5095
|
+
readonly term: "mid-clip";
|
|
5096
|
+
}, {
|
|
5097
|
+
readonly id: "end";
|
|
5098
|
+
readonly label: "End";
|
|
5099
|
+
readonly description: "At the end of the clip";
|
|
5100
|
+
readonly promptHint: "the transition occurs at the end of the clip";
|
|
5101
|
+
readonly term: "at the end of the clip";
|
|
5102
|
+
}, {
|
|
5103
|
+
readonly id: "full";
|
|
5104
|
+
readonly label: "Full";
|
|
5105
|
+
readonly description: "Spans the entire clip";
|
|
5106
|
+
readonly promptHint: "the transition spans the entire clip";
|
|
5107
|
+
readonly term: "across the whole clip";
|
|
5108
|
+
}];
|
|
5109
|
+
declare const TRANSITION_DURATIONS: readonly [{
|
|
5110
|
+
readonly id: "auto";
|
|
5111
|
+
readonly label: "Auto";
|
|
5112
|
+
readonly description: "Let the model time it";
|
|
5113
|
+
readonly promptHint: "";
|
|
5114
|
+
readonly term: "";
|
|
5115
|
+
}, {
|
|
5116
|
+
readonly id: "instant";
|
|
5117
|
+
readonly label: "Instant";
|
|
5118
|
+
readonly description: "No perceptible duration";
|
|
5119
|
+
readonly promptHint: "occurring instantaneously";
|
|
5120
|
+
readonly term: "instantaneous";
|
|
5121
|
+
}, {
|
|
5122
|
+
readonly id: "short";
|
|
5123
|
+
readonly label: "Short (~1s)";
|
|
5124
|
+
readonly description: "Approximately 1 second";
|
|
5125
|
+
readonly promptHint: "lasting approximately 1 second";
|
|
5126
|
+
readonly term: "about 1 second";
|
|
5127
|
+
}, {
|
|
5128
|
+
readonly id: "medium";
|
|
5129
|
+
readonly label: "Medium (~2s)";
|
|
5130
|
+
readonly description: "Approximately 2 seconds";
|
|
5131
|
+
readonly promptHint: "lasting approximately 2 seconds";
|
|
5132
|
+
readonly term: "about 2 seconds";
|
|
5133
|
+
}, {
|
|
5134
|
+
readonly id: "long";
|
|
5135
|
+
readonly label: "Long (~3s)";
|
|
5136
|
+
readonly description: "Approximately 3 seconds";
|
|
5137
|
+
readonly promptHint: "lasting approximately 3 seconds";
|
|
5138
|
+
readonly term: "about 3 seconds";
|
|
5139
|
+
}];
|
|
5140
|
+
declare const TRANSITION_INTENSITIES: readonly [{
|
|
5141
|
+
readonly id: "auto";
|
|
5142
|
+
readonly label: "Auto";
|
|
5143
|
+
readonly description: "Let the model judge it";
|
|
5144
|
+
readonly promptHint: "";
|
|
5145
|
+
readonly term: "";
|
|
5146
|
+
}, {
|
|
5147
|
+
readonly id: "subtle";
|
|
5148
|
+
readonly label: "Subtle";
|
|
5149
|
+
readonly description: "Restrained, minimal flourish";
|
|
5150
|
+
readonly promptHint: "with subtle restrained energy and minimal flourish";
|
|
5151
|
+
readonly term: "subtly";
|
|
5152
|
+
}, {
|
|
5153
|
+
readonly id: "natural";
|
|
5154
|
+
readonly label: "Natural";
|
|
5155
|
+
readonly description: "Unhurried, unforced timing";
|
|
5156
|
+
readonly promptHint: "with natural unhurried timing";
|
|
5157
|
+
readonly term: "at a natural pace";
|
|
5158
|
+
}, {
|
|
5159
|
+
readonly id: "dynamic";
|
|
5160
|
+
readonly label: "Dynamic";
|
|
5161
|
+
readonly description: "Assertive, energetic";
|
|
5162
|
+
readonly promptHint: "with dynamic energy and assertive flourish";
|
|
5163
|
+
readonly term: "energetically";
|
|
5164
|
+
}, {
|
|
5165
|
+
readonly id: "crazy";
|
|
5166
|
+
readonly label: "Crazy";
|
|
5167
|
+
readonly description: "Extreme, wild, distorted";
|
|
5168
|
+
readonly promptHint: "with extreme exaggerated energy, wild flourishes, and dramatic distortion";
|
|
5169
|
+
readonly term: "wildly exaggerated";
|
|
5170
|
+
}];
|
|
4830
5171
|
/**
|
|
4831
5172
|
* Compose a structural prompt-hint sentence from a transition id (or array
|
|
4832
5173
|
* of 1-2 ids for multi-pick) plus optional start-state/end-state hints
|
|
@@ -5205,13 +5546,33 @@ interface ResolvePromptArgs {
|
|
|
5205
5546
|
* Off/undefined = exact legacy precedence (override > typed > wired) for every
|
|
5206
5547
|
* other node type. */
|
|
5207
5548
|
appendWired?: boolean;
|
|
5549
|
+
/** Pre/post text wrapped around WHICHEVER core precedence produced (override,
|
|
5550
|
+
* typed, wired, or the appendWired combination). Applied last. */
|
|
5551
|
+
affixes?: PromptAffixes;
|
|
5208
5552
|
}
|
|
5553
|
+
/** The ONE join rule between two non-blank prompt parts: a single space unless
|
|
5554
|
+
* the boundary already has whitespace on either side or the right part opens
|
|
5555
|
+
* with sentence punctuation. Shared by `joinPromptParts` and the editor's
|
|
5556
|
+
* Final-view segment builder so preview and run agree byte-for-byte. */
|
|
5557
|
+
declare function promptPartSeparator(left: string, right: string): "" | " ";
|
|
5558
|
+
/** Join prompt parts with `promptPartSeparator`; blank parts are dropped,
|
|
5559
|
+
* non-blank parts are used verbatim (no trimming). */
|
|
5560
|
+
declare function joinPromptParts(parts: ReadonlyArray<string | undefined>): string;
|
|
5561
|
+
/**
|
|
5562
|
+
* Wrap `core` with the node's pre/post text. `{Label}` refs are resolved in the
|
|
5563
|
+
* AFFIXES only — the core arrives exactly as the caller's precedence produced it.
|
|
5564
|
+
* NO-OP GUARANTEE: with no non-blank affix the core is returned unchanged (same
|
|
5565
|
+
* reference) — every existing workflow stays byte-identical.
|
|
5566
|
+
* EMPTY CORE: a blank core with affixes yields the joined affixes alone.
|
|
5567
|
+
*/
|
|
5568
|
+
declare function applyPromptAffixes(core: string, affixes: PromptAffixes | undefined, refMap: ReadonlyMap<string, string>): string;
|
|
5569
|
+
declare function applyPromptAffixes(core: string | undefined, affixes: PromptAffixes | undefined, refMap: ReadonlyMap<string, string>): string | undefined;
|
|
5209
5570
|
/** SINGLE SOURCE OF TRUTH for prompt precedence across both DAG engines:
|
|
5210
5571
|
* override (list fan-out) > first present typed candidate > wired > "".
|
|
5211
5572
|
* "present" = non-empty after trim. {Label} refs are resolved on the chosen
|
|
5212
5573
|
* branch via the shared resolveNodeRefs. With `appendWired`, the chosen base
|
|
5213
|
-
* AND the wired value are both emitted (joined ". "). */
|
|
5214
|
-
declare function resolvePrompt({ override, typed, wired, refMap, appendWired }: ResolvePromptArgs): string;
|
|
5574
|
+
* AND the wired value are both emitted (joined ". "). Affixes wrap the result. */
|
|
5575
|
+
declare function resolvePrompt({ override, typed, wired, refMap, appendWired, affixes }: ResolvePromptArgs): string;
|
|
5215
5576
|
/** Compose a final NEGATIVE prompt from a TYPED base + a WIRED (connected
|
|
5216
5577
|
* negative-handle) value: both are emitted, joined ". " (mirrors `appendWired`
|
|
5217
5578
|
* for the positive prompt). Pure join — the caller resolves `{label}` refs on
|
|
@@ -5245,6 +5606,145 @@ declare function computeLlmChatFields(data: Record<string, unknown>, { override,
|
|
|
5245
5606
|
systemPrompt: string;
|
|
5246
5607
|
};
|
|
5247
5608
|
|
|
5609
|
+
/** Which prompt field a snippet belongs to. Negative-target snippets only
|
|
5610
|
+
* surface in negative-prompt fields, and are bare comma lists by convention
|
|
5611
|
+
* (per Google's Veo guidance, a negative FIELD must name the unwanted thing,
|
|
5612
|
+
* never "no X"). */
|
|
5613
|
+
type SnippetTarget = "prompt" | "negative";
|
|
5614
|
+
/** Node modality a snippet applies to. A node declares its modality once in
|
|
5615
|
+
* the frontend's NODE_PROMPT_FIELDS; the menu shows snippets whose `media`
|
|
5616
|
+
* contains it. */
|
|
5617
|
+
type SnippetMedia = "image" | "video" | "audio" | "text";
|
|
5618
|
+
declare const SNIPPET_MEDIA_VALUES: readonly SnippetMedia[];
|
|
5619
|
+
interface FactorySnippet {
|
|
5620
|
+
/** Stable kebab slug, e.g. "identity-lock". Unique across the catalog. */
|
|
5621
|
+
readonly id: string;
|
|
5622
|
+
readonly name: string;
|
|
5623
|
+
/** One-liner shown in the menu and matched by search. */
|
|
5624
|
+
readonly description?: string;
|
|
5625
|
+
/** The exact fragment inserted into the prompt. Single line; never contains
|
|
5626
|
+
* `{`, `}`, or `@` (guard-tested) so it can never form a mention/variable
|
|
5627
|
+
* token in the editor. */
|
|
5628
|
+
readonly text: string;
|
|
5629
|
+
readonly target: SnippetTarget;
|
|
5630
|
+
readonly media: readonly SnippetMedia[];
|
|
5631
|
+
/** Menu group AND the pill-swap sibling pool (swap lists same-category). */
|
|
5632
|
+
readonly category: string;
|
|
5633
|
+
}
|
|
5634
|
+
|
|
5635
|
+
/**
|
|
5636
|
+
* Single source of truth: which data field(s) hold a node's user-editable
|
|
5637
|
+
* prompt text. Drives the quick-edit Prompt modal so it can work generically
|
|
5638
|
+
* across every AI node without each call site hardcoding a field name.
|
|
5639
|
+
*
|
|
5640
|
+
* The registry LIVES HERE (`@nodaro/prompts`) so the backend orchestrator, the
|
|
5641
|
+
* `/v1/nodes` registry, the prompt-affix totality tests and the docs tooling
|
|
5642
|
+
* read the SAME list the editor does. `frontend/src/lib/prompt-fields.ts` is a
|
|
5643
|
+
* pure re-export of this module — frontend code keeps importing
|
|
5644
|
+
* `@/lib/prompt-fields` unchanged.
|
|
5645
|
+
*
|
|
5646
|
+
* Most nodes store the prompt in `data.prompt`, but several don't
|
|
5647
|
+
* (`text-prompt` → `text`, `image-to-text` → `customPrompt`, …) — this map is
|
|
5648
|
+
* where that knowledge lives, once.
|
|
5649
|
+
*
|
|
5650
|
+
* INVARIANT: every node that exposes a user-editable prompt MUST have an entry
|
|
5651
|
+
* here, or the quick-edit modal silently does nothing for it. A guard test
|
|
5652
|
+
* (`prompt-fields.test.ts`) keeps this in sync with the node set.
|
|
5653
|
+
*
|
|
5654
|
+
* This module is intentionally pure data (no React/lucide imports) so it can be
|
|
5655
|
+
* pulled into the app-runtime bundle and any test without dragging in the icon
|
|
5656
|
+
* library. The string `icon` kind is mapped to a concrete lucide component in
|
|
5657
|
+
* `prompt-edit-button.tsx` (`getPromptIcon`), the only place that renders it.
|
|
5658
|
+
*/
|
|
5659
|
+
|
|
5660
|
+
/** Which lucide glyph a node's prompt affordance uses. Kept as a string so this
|
|
5661
|
+
* module stays icon-library-free; mapped to a component in the strip button. */
|
|
5662
|
+
type PromptIconKind = "pencil" | "paintbrush";
|
|
5663
|
+
interface PromptFieldSpec {
|
|
5664
|
+
/** Data key holding the primary prompt (e.g. "prompt", "text", "customPrompt"). */
|
|
5665
|
+
readonly prompt: string;
|
|
5666
|
+
/** Data key holding the negative prompt, when the node supports one. */
|
|
5667
|
+
readonly negative?: string;
|
|
5668
|
+
/** Label override for the primary field (defaults to "Prompt"). */
|
|
5669
|
+
readonly promptLabel?: string;
|
|
5670
|
+
/** Icon for the prompt affordance (strip button + modal title). Defaults to a
|
|
5671
|
+
* pencil; image-editing nodes use a paintbrush to read as "edit". */
|
|
5672
|
+
readonly icon?: PromptIconKind;
|
|
5673
|
+
/** Node modality for prompt-snippet scoping — drives which snippet pool the
|
|
5674
|
+
* "/" menu and Snippets button show for this node's prompt fields. REQUIRED
|
|
5675
|
+
* so a new node cannot forget to declare it (compile error). */
|
|
5676
|
+
readonly media: SnippetMedia;
|
|
5677
|
+
/** True when this node renders a media-result preview body and therefore
|
|
5678
|
+
* participates in inline-prompt mode (the `InlineNodePrompt` editor on the
|
|
5679
|
+
* node face, centralized in `BaseNode`). REQUIRED (like `media`) so a new
|
|
5680
|
+
* prompt node must consciously choose — compile error if omitted. The set of
|
|
5681
|
+
* `inline: true` types is guarded in `prompt-fields.test.ts`. */
|
|
5682
|
+
readonly inline: boolean;
|
|
5683
|
+
/** Some nodes only READ their prompt field when a sibling discriminator
|
|
5684
|
+
* selects it — TTS keeps `directText` but resolves it only while
|
|
5685
|
+
* `textSource === "direct"`, defaulting to `"connected"`. Writing the text
|
|
5686
|
+
* without flipping the discriminator saved the value and then failed with
|
|
5687
|
+
* "no text found" (founder hit it live, 2026-08-14). Declare the pair here
|
|
5688
|
+
* and every writer flips it automatically. */
|
|
5689
|
+
readonly promptGate?: {
|
|
5690
|
+
readonly field: string;
|
|
5691
|
+
readonly value: string;
|
|
5692
|
+
};
|
|
5693
|
+
/** Prompt pre/post text (`promptPrefix` / `promptSuffix`) support. Defaults to
|
|
5694
|
+
* ON for every prompt node; set `false` ONLY for a node whose "prompt" is not
|
|
5695
|
+
* a model prompt (the plain Text input node). Read via `nodeSupportsPromptAffixes`. */
|
|
5696
|
+
readonly affixes?: false;
|
|
5697
|
+
}
|
|
5698
|
+
declare const NODE_PROMPT_FIELDS: Readonly<Record<string, PromptFieldSpec>>;
|
|
5699
|
+
/** The prompt-field spec for a node type, or undefined if it has none. */
|
|
5700
|
+
declare function getPromptFields(nodeType: string | undefined): PromptFieldSpec | undefined;
|
|
5701
|
+
/** True when this node type has a registered, quick-editable prompt field. */
|
|
5702
|
+
declare function nodeHasPromptField(nodeType: string | undefined): boolean;
|
|
5703
|
+
/** Snippet modality for a node type (drives the snippet pool), or undefined
|
|
5704
|
+
* when the node has no prompt field. */
|
|
5705
|
+
declare function getSnippetMedia(nodeType: string | undefined): SnippetMedia | undefined;
|
|
5706
|
+
/** True when this node type renders the inline on-node prompt editor — the
|
|
5707
|
+
* media-preview nodes (image/video/audio result body). Single source for
|
|
5708
|
+
* BaseNode's centralized `InlineNodePrompt` rendering and the gold nodes'
|
|
5709
|
+
* `showInline` derivation (`useInlinePromptActive`). */
|
|
5710
|
+
declare function nodeHasInlinePrompt(nodeType: string | undefined): boolean;
|
|
5711
|
+
/** True when the node type carries `promptPrefix` / `promptSuffix` — every
|
|
5712
|
+
* registered prompt node except explicit opt-outs (`affixes: false`). The single
|
|
5713
|
+
* predicate the config panel, Final view, `/v1/nodes` registry, totality tests
|
|
5714
|
+
* and docs tooling all gate on. */
|
|
5715
|
+
declare function nodeSupportsPromptAffixes(nodeType: string | undefined): boolean;
|
|
5716
|
+
/**
|
|
5717
|
+
* Where the RUN-TIME prompt lives when it differs from the editor's prompt
|
|
5718
|
+
* field (spec §7). `generate-script`'s editable prompt is its `styleGuide`, but
|
|
5719
|
+
* the run wraps the topic `prompt` with the affixes — so previewing the style
|
|
5720
|
+
* guide must NOT show them.
|
|
5721
|
+
*/
|
|
5722
|
+
declare const PROMPT_AFFIX_CORE_FIELD_OVERRIDES: Readonly<Record<string, string>>;
|
|
5723
|
+
/** The data key whose value the run wraps with promptPrefix/promptSuffix, or
|
|
5724
|
+
* undefined when the node has no affixes. */
|
|
5725
|
+
declare function promptAffixCoreField(nodeType: string | undefined): string | undefined;
|
|
5726
|
+
/**
|
|
5727
|
+
* True when a preview of `promptField` on this node must show the affixes —
|
|
5728
|
+
* i.e. that key is what the run actually wraps. THE gate for the editor's Final
|
|
5729
|
+
* view, so a sibling field (llm-chat's `systemPrompt`, generate-script's
|
|
5730
|
+
* `styleGuide`) never renders a wrap the run doesn't perform.
|
|
5731
|
+
*
|
|
5732
|
+
* Two ways a key qualifies:
|
|
5733
|
+
* - it IS the core field ({@link promptAffixCoreField}), or
|
|
5734
|
+
* - it is a run-time FALLBACK candidate for the type
|
|
5735
|
+
* ({@link NODE_PROMPT_CANDIDATE_FIELDS}) — `computeNodePrompt` picks the
|
|
5736
|
+
* first present candidate and wraps THAT, so i2v's legacy `motionPrompt`
|
|
5737
|
+
* genuinely receives the affixes when `data.prompt` is empty.
|
|
5738
|
+
*
|
|
5739
|
+
* The two rules never collide: no override type declares candidates (guarded in
|
|
5740
|
+
* `node-prompt-fields.test.ts`).
|
|
5741
|
+
*
|
|
5742
|
+
* `undefined` means "the node's primary prompt field" — the common call.
|
|
5743
|
+
*/
|
|
5744
|
+
declare function promptFieldCarriesAffixes(nodeType: string | undefined, promptField: string | undefined): boolean;
|
|
5745
|
+
/** The affix-capable node types, derived from the registry (never hand-listed). */
|
|
5746
|
+
declare const PROMPT_AFFIX_NODE_TYPES: ReadonlySet<string>;
|
|
5747
|
+
|
|
5248
5748
|
interface FactoryPreset {
|
|
5249
5749
|
/** Stable slug "<nodeType>/<kebab-name>" — used as a React key and in exports. */
|
|
5250
5750
|
readonly id: string;
|
|
@@ -5334,32 +5834,6 @@ declare const OBJECT_ASSET_PRESETS: Record<ObjectPresetAssetType, readonly strin
|
|
|
5334
5834
|
/** Prompt-fragment maps per asset type — backend buildVariantPrompt reads this. */
|
|
5335
5835
|
declare const OBJECT_ASSET_PROMPTS: Record<ObjectPresetAssetType, Record<string, string>>;
|
|
5336
5836
|
|
|
5337
|
-
/** Which prompt field a snippet belongs to. Negative-target snippets only
|
|
5338
|
-
* surface in negative-prompt fields, and are bare comma lists by convention
|
|
5339
|
-
* (per Google's Veo guidance, a negative FIELD must name the unwanted thing,
|
|
5340
|
-
* never "no X"). */
|
|
5341
|
-
type SnippetTarget = "prompt" | "negative";
|
|
5342
|
-
/** Node modality a snippet applies to. A node declares its modality once in
|
|
5343
|
-
* the frontend's NODE_PROMPT_FIELDS; the menu shows snippets whose `media`
|
|
5344
|
-
* contains it. */
|
|
5345
|
-
type SnippetMedia = "image" | "video" | "audio" | "text";
|
|
5346
|
-
declare const SNIPPET_MEDIA_VALUES: readonly SnippetMedia[];
|
|
5347
|
-
interface FactorySnippet {
|
|
5348
|
-
/** Stable kebab slug, e.g. "identity-lock". Unique across the catalog. */
|
|
5349
|
-
readonly id: string;
|
|
5350
|
-
readonly name: string;
|
|
5351
|
-
/** One-liner shown in the menu and matched by search. */
|
|
5352
|
-
readonly description?: string;
|
|
5353
|
-
/** The exact fragment inserted into the prompt. Single line; never contains
|
|
5354
|
-
* `{`, `}`, or `@` (guard-tested) so it can never form a mention/variable
|
|
5355
|
-
* token in the editor. */
|
|
5356
|
-
readonly text: string;
|
|
5357
|
-
readonly target: SnippetTarget;
|
|
5358
|
-
readonly media: readonly SnippetMedia[];
|
|
5359
|
-
/** Menu group AND the pill-swap sibling pool (swap lists same-category). */
|
|
5360
|
-
readonly category: string;
|
|
5361
|
-
}
|
|
5362
|
-
|
|
5363
5837
|
/** Factory snippet catalog (v1: image + video; audio/text follow later).
|
|
5364
5838
|
* Order within a category = menu order = pill quick-cycle order. */
|
|
5365
5839
|
|
|
@@ -5450,4 +5924,4 @@ declare function getPickerWiring(nodeType: string | undefined | null): PickerWir
|
|
|
5450
5924
|
*/
|
|
5451
5925
|
declare function buildSurroundFillPrompt(direction: SurroundDirection, userPrompt?: string): string;
|
|
5452
5926
|
|
|
5453
|
-
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type AssembleImageInput, type AssembleSunoInput, type AssembleSunoResult, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, type Backdrop, type BackdropCategory, type BrandCasing, type BrandFonts, type BrandLogo, type BrandPalette, type BrandPresetId, type BrandPresetMeta, type BrandTokens, type BrandTypeSpec, type BuildImagePromptConfig, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_IDS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, type DirectionFields, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_IDS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoExtraRef, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, listPickerCatalogs, migratePersonValue, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptBindsFirstFrame, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|
|
5927
|
+
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type AssembleImageInput, type AssembleSunoInput, type AssembleSunoResult, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, type Backdrop, type BackdropCategory, type BrandCasing, type BrandFonts, type BrandLogo, type BrandPalette, type BrandPresetId, type BrandPresetMeta, type BrandTokens, type BrandTypeSpec, type BuildImagePromptConfig, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, type DirectionFields, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptFieldSpec, type PromptIconKind, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type RefIdTokenContext, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoExtraRef, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptParts, listPickerCatalogs, migratePersonValue, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|