@nodaro/prompts 1.5.0 → 1.6.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.d.cts CHANGED
@@ -90,6 +90,206 @@ declare function hasUpstreamCharacter<N extends GenericNode, E extends GenericEd
90
90
  declare function withForcedIdentityLock(ref: ConnectedReference, lockOverride?: boolean): ConnectedReference;
91
91
  declare function buildIdentityLockLine(ref: ConnectedReference, binding: string): string | null;
92
92
 
93
+ /**
94
+ * REFERENCE RULES — the two short blocks that decide whether a multi-reference
95
+ * image obeys its references, and whether it looks like a film frame or a
96
+ * posed photograph.
97
+ *
98
+ * Both were measured on gpt-image-2 at 2K, against one deliberately hard brief:
99
+ * four references (two people, a street-fashion shot, and a composite holding a
100
+ * wine glass, a smartphone, a hotel suite AND two other women's faces), with
101
+ * wardrobe swapped BETWEEN the two people. 36 draws, 2026-08-06. Scored on five
102
+ * criteria: both faces correct and unblended, each person's wardrobe, the
103
+ * props, the location, and one coherent composition.
104
+ *
105
+ * ─── REFERENCE_RULES ───────────────────────────────────────────────────────
106
+ *
107
+ * Two wordings already existed in this codebase and NEITHER was best. Each was
108
+ * written without knowledge of the other:
109
+ *
110
+ * the `reference-lock` snippet — default-deny + likeness + compose.
111
+ * **0 of 4** on the hardest criterion (move
112
+ * a garment from one reference to another).
113
+ * Flawless on the other four, which is what
114
+ * made it feel like it worked.
115
+ * gvp's `referenceRules` — default-deny + face rules + likeness +
116
+ * "expression, gaze and pose follow the
117
+ * scene". **1 of 4**.
118
+ * the two MERGED — **4 of 4** (Fisher exact vs the snippet,
119
+ * p ≈ 0.03).
120
+ *
121
+ * The arms isolate: swapping the performance clause for the compose clause took
122
+ * it 1/4 → 4/4, and adding the face rules took 0/4 → 4/4. Each half does real
123
+ * work and neither is sufficient alone. The performance clause is dropped here
124
+ * because a composite has no scene to perform — it belongs to gvp's SCENE lane,
125
+ * where a subject must act the beat.
126
+ *
127
+ * ─── SCENE_FRAME_RULE ──────────────────────────────────────────────────────
128
+ *
129
+ * The separate failure Tal reported: everyone faces the lens and the result
130
+ * reads as an artfully posed photograph rather than a frame out of a film.
131
+ * Four fixes were measured against the block above (which is 0/4 on gaze by
132
+ * itself):
133
+ *
134
+ * "This image is a scene start frame of a video." 0/4 gaze, **0/3 identity**
135
+ * "Film still from a feature film." gaze ✗ (sampled)
136
+ * "A candid moment, unposed, nobody aware of…" identity ✗ (sampled)
137
+ * rewriting the verbs (drinking, not holding) 4/4 gaze, 3/4 identity
138
+ * **"Nobody looks at the camera."** **4/4 gaze, 4/4 identity,
139
+ * 4/4 wardrobe**
140
+ *
141
+ * Only the short negative is free. Everything longer — a medium declaration, a
142
+ * genre label, a mood sentence — competes with the reference bindings and the
143
+ * references lose: the "scene start frame" arm put a woman from INSIDE a
144
+ * reference into the lead role in every draw. This is the same effect gvp's
145
+ * block already recorded on a different brief ("more instruction bought LESS
146
+ * compliance"), now measured twice.
147
+ *
148
+ * KEPT SEPARATE FROM THE RULES, deliberately. A portrait, a piece to camera, or
149
+ * a product shot WANTS the eyeline; suppressing it is a creative choice, not a
150
+ * correctness rule. They are two controls, defaulting independently.
151
+ */
152
+ /**
153
+ * Default-deny + likeness + compose. Goes ahead of the scene it governs.
154
+ *
155
+ * OPT-IN, NOT INJECTED. An earlier cut of this work defaulted it on for every
156
+ * image node; Tal's call was that the snippets are enough, and he is right for
157
+ * a wording still being learned — a platform-wide default would apply the
158
+ * current best guess to every job at once, and the evidence for WHICH block is
159
+ * best is still split (see REFERENCE_RULES_MULTI_PERSON).
160
+ *
161
+ * ONE STRING, TWO CONSUMERS — the `reference-lock` factory snippet and
162
+ * gvp/recast's own grounding. They drifted apart once already (the snippet and
163
+ * gvp each carried a different version, and neither knew the other existed),
164
+ * which is the whole reason this is a constant rather than two literals.
165
+ */
166
+ declare const REFERENCE_RULES: string;
167
+ /**
168
+ * The same rules PLUS the two face clauses — for briefs that move elements
169
+ * BETWEEN people.
170
+ *
171
+ * NOT THE DEFAULT, and the reason is a genuine conflict in the evidence that
172
+ * should not be quietly resolved by whoever edits this next.
173
+ *
174
+ * The controlled comparison: on a four-reference brief with two faces and a
175
+ * garment crossing from one person to the other, this block moved that garment
176
+ * 4 times in 4 draws and {@link REFERENCE_RULES} moved it 0 in 4 (Fisher exact,
177
+ * p ≈ 0.03). On the other four criteria — faces correct, own wardrobe, props,
178
+ * location, composition — the two were identical, 12/12 both ways.
179
+ *
180
+ * Tal's counter-evidence: across his own volume of real jobs, the shorter block
181
+ * works better IN GENERAL. Both hold. The face clauses earn their place exactly
182
+ * when two faces are in play and elements cross between them; on a single
183
+ * subject, a product or a landscape, "do not alter face structure" is dead
184
+ * weight, and this codebase has already measured twice that more instruction
185
+ * buys less compliance.
186
+ *
187
+ * So the DEFAULT follows the population (the short block) and this is the tool
188
+ * you reach for on the composition case. Settling "in general" properly needs
189
+ * the same method applied across brief TYPES, not more draws of one brief.
190
+ */
191
+ declare const REFERENCE_RULES_MULTI_PERSON: string;
192
+ /**
193
+ * THE FRAMING PREFIX — a sentence fragment that swallows the scene after it.
194
+ *
195
+ * "Medium wide film still of" + "The person from reference image A wears…"
196
+ * reads as one phrase, and that is the whole trick. Lead with the SHOT SIZE
197
+ * (see {@link filmStillPrefix}).
198
+ *
199
+ * NO "CINEMATIC", and that word was in here for about ten minutes. "Film still"
200
+ * describes the KIND of picture — a frame lifted out of moving footage, which
201
+ * is what a UGC clip, a product video and a documentary all are too. "Cinematic"
202
+ * describes a REGISTER, and imposing one is wrong for most briefs. It is also
203
+ * the exact category of word every measured arm punished: a genre claim. The same idea as a standalone SENTENCE
204
+ * ("Film still from a feature film." / "This image is a scene start frame of a
205
+ * video.") measured badly-to-catastrophically: the sentence competes with the
206
+ * reference bindings and the references lose — the "scene start frame" arm put
207
+ * a face from INSIDE a reference into the lead role in 3 of 3 draws. The prefix
208
+ * costs nothing because it never makes a separate claim.
209
+ *
210
+ * What it buys is not just the eyeline. Tal's distinction, which is sharper
211
+ * than the binary this was first scored on: a subject may be turned toward the
212
+ * lens and still be IN the scene rather than presenting to the viewer. The
213
+ * prefix also moves staging, depth and the quality of light — things an
214
+ * eyeline rule cannot reach.
215
+ */
216
+ declare const FILM_STILL_PREFIX = "Film still of";
217
+ /**
218
+ * The prefix with a SHOT SIZE in front — "Extreme wide cinematic film still of
219
+ * …", "Medium close-up cinematic film still of …".
220
+ *
221
+ * Leading with the framing is standard practice and Tal reports it better
222
+ * again. HONEST STATUS: the POSITION is measured (a prefix costs nothing where
223
+ * a standalone claim cost the lead's identity 3 of 3); the shot-size word is
224
+ * his experience, not a controlled arm. The shot size is safe in a way a genre
225
+ * label is not — it says how the picture is FRAMED, which the scene needs
226
+ * anyway, rather than what kind of production it belongs to.
227
+ */
228
+ declare function filmStillPrefix(shotSize?: string): string;
229
+ /**
230
+ * The eyeline suppressor. Five words, measured free — it costs nothing on
231
+ * identity, wardrobe or composition, which none of the longer phrasings
232
+ * managed.
233
+ *
234
+ * DO NOT EXPAND THIS. Every attempt to say more about what the picture IS cost
235
+ * reference fidelity; the sentence works BECAUSE it constrains exactly one
236
+ * thing and claims nothing about medium, genre or mood.
237
+ */
238
+ declare const SCENE_FRAME_RULE = "Nobody looks at the camera.";
239
+ /**
240
+ * A LOOK TAIL — film stock, lens, light, palette — appended AFTER everything.
241
+ *
242
+ * An example to edit, not a universal: a different film wants a different
243
+ * stock. What generalises is the POSITION.
244
+ *
245
+ * THIS one is allowed to say "cinematic" — imposing a register is its entire
246
+ * job, and a user opts in by name. {@link filmStillPrefix} may not, because it
247
+ * is a DEFAULT: "film still" describes the kind of picture (a frame out of
248
+ * moving footage — true of a UGC clip and a documentary too), while
249
+ * "cinematic" describes a register most briefs did not ask for.
250
+ *
251
+ * ─── THE ONE RULE ALL OF THIS TURNED OUT TO BE ─────────────────────────────
252
+ *
253
+ * Position decides whether an instruction helps or fights the references:
254
+ *
255
+ * 1. RULES FIRST — default-deny, ahead of the bindings it governs.
256
+ * 2. FRAMING AS A PREFIX that swallows the subject ("Film still of …").
257
+ * 3. LOOK LAST — stock, lens, lighting, palette.
258
+ * 4. A separate CLAIM in the middle competes with the reference bindings,
259
+ * and the references lose.
260
+ *
261
+ * That is why "This image is a scene start frame of a video." (a standalone
262
+ * claim, mid-prompt) cost the lead's identity in 3 of 3 draws while "Film still
263
+ * of" (a prefix) costs nothing, and why this tail is free at the end. It
264
+ * matches the published guidance independently — Subject → Action →
265
+ * Surroundings → Camera/Lighting → Atmosphere — and gvp's engine had already
266
+ * found rule 3 the hard way: "THE MEDIUM GOES LAST… a rendering directive at
267
+ * the end has nothing after it to argue with."
268
+ *
269
+ * RECAST DOES NOT NEED THIS SNIPPET. `lookDirective` already appends a tail
270
+ * built from the look the ANALYSER observed in the source film — stock, grade,
271
+ * lens, lighting — which beats a hand-written one because it is that film's
272
+ * own look. This exists for the platform's image nodes, which have no analyser.
273
+ */
274
+ declare const CINEMATIC_LOOK_TAIL: string;
275
+ /**
276
+ * Compose the blocks a caller wants, in a stable order, ready to prepend.
277
+ * Returns `""` when everything is off, so a caller can prepend blind.
278
+ *
279
+ * No route calls this today — the platform ships these as SNIPPETS a user
280
+ * inserts. It exists for gvp/recast (which builds its grounding block in code)
281
+ * and for whatever calls this next, so the ordering rule lives in one place:
282
+ * rules first, eyeline rule after them, scene after both.
283
+ */
284
+ declare function referenceRulesBlock(opts?: {
285
+ /** Default-deny + likeness + compose. Absent = ON. */
286
+ referenceRules?: boolean;
287
+ /** Add the two face clauses — for briefs moving elements between people. */
288
+ multiPerson?: boolean;
289
+ /** "Nobody looks at the camera." Absent = OFF (a portrait wants the eyeline). */
290
+ sceneFrame?: boolean;
291
+ }): string;
292
+
93
293
  /**
94
294
  * Dispatch by parameter-node type to its prompt-hint string. For camera-motion,
95
295
  * pass `ctx` to include the composed start/end clauses; otherwise only the
@@ -996,6 +1196,13 @@ interface AssembleSunoResult {
996
1196
  customMode: boolean;
997
1197
  instrumental: boolean;
998
1198
  model?: string;
1199
+ /**
1200
+ * Requested song length in seconds (KIE: 10–360). Passed through from
1201
+ * `data.duration` unconditionally — the provider client is the single
1202
+ * gate that only sends it when customMode && model V5_5 (KIE ignores it
1203
+ * elsewhere), so the assembler stays a faithful field carrier.
1204
+ */
1205
+ duration?: number;
999
1206
  personaId?: string;
1000
1207
  personaModel?: "voice_persona" | "style_persona";
1001
1208
  }
@@ -3329,6 +3536,12 @@ declare function applyTemplate(template: string, vars: Record<string, string>):
3329
3536
  * - KIE API docs https://docs.kie.ai/market/kling/kling-3-0
3330
3537
  * - Live KIE-path dialogue probe 2026-07-16 (scripted lines spoken verbatim,
3331
3538
  * lip-synced, on both kling-2.6 and kling-3.0 with sound=true)
3539
+ * MiniMax Hailuo 3:
3540
+ * - KIE API docs https://docs.kie.ai/market/minimax-h3 (text-to-video /
3541
+ * image-to-video / reference-to-video — the API contract is the doctrine
3542
+ * source: limits, modes, aspect rules, pricing dimensions). No live probe
3543
+ * yet — structure guidance mirrors the platform's ordinal-reference
3544
+ * conventions rather than vendor style claims.
3332
3545
  */
3333
3546
  interface ProviderPromptDoctrine {
3334
3547
  /** MODEL_CATALOG ids this doctrine covers. */
@@ -3578,4 +3791,4 @@ declare const FACTORY_SNIPPETS: readonly FactorySnippet[];
3578
3791
  /** Factory snippets for one field: target match + media membership. */
3579
3792
  declare function getFactorySnippets(target: SnippetTarget, media: SnippetMedia): readonly FactorySnippet[];
3580
3793
 
3581
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, 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, 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 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, 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, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, 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, 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 MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, 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_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 PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogSummary, type PickerDimension, type PickerDimensionSpec, type PickerGaps, type PickerOption, type PickerType, 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, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type ReferenceCounts, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, 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 SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_IDS, type Temporal, type TemporalCategory, type TemporalValue, 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 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, buildAestheticHints, buildAgeHint, buildAtmosphereHints, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildFaceTemplateInputs, buildFramingHints, buildHeldPropHints, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildLightingHints, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMoodHints, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicMoodHints, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPhotographerHints, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPostProcessHints, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildTemporalHints, buildVoiceCharacterHints, buildVoiceDeliveryHints, buildWardrobeHints, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCharacterFxHintFromConnections, composeNegative, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, expandImagePositionRefs, expandImageRefTokens, getActionFx, getActionFxLabel, getActionFxPromptHint, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getBackdrop, getBackdropLabel, getBackdropPromptHint, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getColorLook, getColorLookLabel, getColorLookPromptHint, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getExposure, getExposureLabel, getExposurePromptHint, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getIdentityLockClause, getInstrument, getLens, getLensLabel, getLensPromptHint, getLighting, getLightingLabel, getLightingPromptHint, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getMaterial, getMaterialLabel, getMaterialPromptHint, getMood, getMoodLabel, getMoodPromptHint, getMusicEmotion, getMusicEnergy, getMusicEra, getMusicGenre, getMusicGenreLabel, getMusicSubgenre, getMusicVibe, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPickerAnalyzer, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getProductionStyle, getPromptDoctrine, getPromptTips, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getSetting, getSettingLabel, getSettingPromptHint, getSingingStyle, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getTemporal, getTemporalLabel, getTemporalPromptHint, getTransition, getTransitionLabel, getTransitionPromptHint, getVocalPresence, getVoiceAccent, getVoiceAge, getVoiceArchetype, getVoiceEmotion, getVoiceGender, getVoiceLanguage, getVoicePace, getVoiceTimbre, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, isAnalyzablePicker, isInstrumentalVocal, isVantageFraming, isWizardSupported, listPickerCatalogs, migratePersonValue, pickerFanoutTargets, projectPickerCatalog, promptBindsFirstFrame, renderStructuredFields, resolveBrandInput, resolveCharacterMentions, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
3794
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, 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 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, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, 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, 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 MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, 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_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 PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogSummary, type PickerDimension, type PickerDimensionSpec, type PickerGaps, type PickerOption, type PickerType, 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 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, 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 SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_IDS, type Temporal, type TemporalCategory, type TemporalValue, 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 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, buildAestheticHints, buildAgeHint, buildAtmosphereHints, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildFaceTemplateInputs, buildFramingHints, buildHeldPropHints, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildLightingHints, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMoodHints, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicMoodHints, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPhotographerHints, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPostProcessHints, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildTemporalHints, buildVoiceCharacterHints, buildVoiceDeliveryHints, buildWardrobeHints, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCharacterFxHintFromConnections, composeNegative, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getBackdrop, getBackdropLabel, getBackdropPromptHint, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getColorLook, getColorLookLabel, getColorLookPromptHint, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getExposure, getExposureLabel, getExposurePromptHint, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getIdentityLockClause, getInstrument, getLens, getLensLabel, getLensPromptHint, getLighting, getLightingLabel, getLightingPromptHint, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getMaterial, getMaterialLabel, getMaterialPromptHint, getMood, getMoodLabel, getMoodPromptHint, getMusicEmotion, getMusicEnergy, getMusicEra, getMusicGenre, getMusicGenreLabel, getMusicSubgenre, getMusicVibe, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPickerAnalyzer, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getProductionStyle, getPromptDoctrine, getPromptTips, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getSetting, getSettingLabel, getSettingPromptHint, getSingingStyle, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getTemporal, getTemporalLabel, getTemporalPromptHint, getTransition, getTransitionLabel, getTransitionPromptHint, getVocalPresence, getVoiceAccent, getVoiceAge, getVoiceArchetype, getVoiceEmotion, getVoiceGender, getVoiceLanguage, getVoicePace, getVoiceTimbre, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, isAnalyzablePicker, isInstrumentalVocal, isVantageFraming, isWizardSupported, listPickerCatalogs, migratePersonValue, pickerFanoutTargets, projectPickerCatalog, promptBindsFirstFrame, referenceRulesBlock, renderStructuredFields, resolveBrandInput, resolveCharacterMentions, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
package/dist/index.d.ts CHANGED
@@ -90,6 +90,206 @@ declare function hasUpstreamCharacter<N extends GenericNode, E extends GenericEd
90
90
  declare function withForcedIdentityLock(ref: ConnectedReference, lockOverride?: boolean): ConnectedReference;
91
91
  declare function buildIdentityLockLine(ref: ConnectedReference, binding: string): string | null;
92
92
 
93
+ /**
94
+ * REFERENCE RULES — the two short blocks that decide whether a multi-reference
95
+ * image obeys its references, and whether it looks like a film frame or a
96
+ * posed photograph.
97
+ *
98
+ * Both were measured on gpt-image-2 at 2K, against one deliberately hard brief:
99
+ * four references (two people, a street-fashion shot, and a composite holding a
100
+ * wine glass, a smartphone, a hotel suite AND two other women's faces), with
101
+ * wardrobe swapped BETWEEN the two people. 36 draws, 2026-08-06. Scored on five
102
+ * criteria: both faces correct and unblended, each person's wardrobe, the
103
+ * props, the location, and one coherent composition.
104
+ *
105
+ * ─── REFERENCE_RULES ───────────────────────────────────────────────────────
106
+ *
107
+ * Two wordings already existed in this codebase and NEITHER was best. Each was
108
+ * written without knowledge of the other:
109
+ *
110
+ * the `reference-lock` snippet — default-deny + likeness + compose.
111
+ * **0 of 4** on the hardest criterion (move
112
+ * a garment from one reference to another).
113
+ * Flawless on the other four, which is what
114
+ * made it feel like it worked.
115
+ * gvp's `referenceRules` — default-deny + face rules + likeness +
116
+ * "expression, gaze and pose follow the
117
+ * scene". **1 of 4**.
118
+ * the two MERGED — **4 of 4** (Fisher exact vs the snippet,
119
+ * p ≈ 0.03).
120
+ *
121
+ * The arms isolate: swapping the performance clause for the compose clause took
122
+ * it 1/4 → 4/4, and adding the face rules took 0/4 → 4/4. Each half does real
123
+ * work and neither is sufficient alone. The performance clause is dropped here
124
+ * because a composite has no scene to perform — it belongs to gvp's SCENE lane,
125
+ * where a subject must act the beat.
126
+ *
127
+ * ─── SCENE_FRAME_RULE ──────────────────────────────────────────────────────
128
+ *
129
+ * The separate failure Tal reported: everyone faces the lens and the result
130
+ * reads as an artfully posed photograph rather than a frame out of a film.
131
+ * Four fixes were measured against the block above (which is 0/4 on gaze by
132
+ * itself):
133
+ *
134
+ * "This image is a scene start frame of a video." 0/4 gaze, **0/3 identity**
135
+ * "Film still from a feature film." gaze ✗ (sampled)
136
+ * "A candid moment, unposed, nobody aware of…" identity ✗ (sampled)
137
+ * rewriting the verbs (drinking, not holding) 4/4 gaze, 3/4 identity
138
+ * **"Nobody looks at the camera."** **4/4 gaze, 4/4 identity,
139
+ * 4/4 wardrobe**
140
+ *
141
+ * Only the short negative is free. Everything longer — a medium declaration, a
142
+ * genre label, a mood sentence — competes with the reference bindings and the
143
+ * references lose: the "scene start frame" arm put a woman from INSIDE a
144
+ * reference into the lead role in every draw. This is the same effect gvp's
145
+ * block already recorded on a different brief ("more instruction bought LESS
146
+ * compliance"), now measured twice.
147
+ *
148
+ * KEPT SEPARATE FROM THE RULES, deliberately. A portrait, a piece to camera, or
149
+ * a product shot WANTS the eyeline; suppressing it is a creative choice, not a
150
+ * correctness rule. They are two controls, defaulting independently.
151
+ */
152
+ /**
153
+ * Default-deny + likeness + compose. Goes ahead of the scene it governs.
154
+ *
155
+ * OPT-IN, NOT INJECTED. An earlier cut of this work defaulted it on for every
156
+ * image node; Tal's call was that the snippets are enough, and he is right for
157
+ * a wording still being learned — a platform-wide default would apply the
158
+ * current best guess to every job at once, and the evidence for WHICH block is
159
+ * best is still split (see REFERENCE_RULES_MULTI_PERSON).
160
+ *
161
+ * ONE STRING, TWO CONSUMERS — the `reference-lock` factory snippet and
162
+ * gvp/recast's own grounding. They drifted apart once already (the snippet and
163
+ * gvp each carried a different version, and neither knew the other existed),
164
+ * which is the whole reason this is a constant rather than two literals.
165
+ */
166
+ declare const REFERENCE_RULES: string;
167
+ /**
168
+ * The same rules PLUS the two face clauses — for briefs that move elements
169
+ * BETWEEN people.
170
+ *
171
+ * NOT THE DEFAULT, and the reason is a genuine conflict in the evidence that
172
+ * should not be quietly resolved by whoever edits this next.
173
+ *
174
+ * The controlled comparison: on a four-reference brief with two faces and a
175
+ * garment crossing from one person to the other, this block moved that garment
176
+ * 4 times in 4 draws and {@link REFERENCE_RULES} moved it 0 in 4 (Fisher exact,
177
+ * p ≈ 0.03). On the other four criteria — faces correct, own wardrobe, props,
178
+ * location, composition — the two were identical, 12/12 both ways.
179
+ *
180
+ * Tal's counter-evidence: across his own volume of real jobs, the shorter block
181
+ * works better IN GENERAL. Both hold. The face clauses earn their place exactly
182
+ * when two faces are in play and elements cross between them; on a single
183
+ * subject, a product or a landscape, "do not alter face structure" is dead
184
+ * weight, and this codebase has already measured twice that more instruction
185
+ * buys less compliance.
186
+ *
187
+ * So the DEFAULT follows the population (the short block) and this is the tool
188
+ * you reach for on the composition case. Settling "in general" properly needs
189
+ * the same method applied across brief TYPES, not more draws of one brief.
190
+ */
191
+ declare const REFERENCE_RULES_MULTI_PERSON: string;
192
+ /**
193
+ * THE FRAMING PREFIX — a sentence fragment that swallows the scene after it.
194
+ *
195
+ * "Medium wide film still of" + "The person from reference image A wears…"
196
+ * reads as one phrase, and that is the whole trick. Lead with the SHOT SIZE
197
+ * (see {@link filmStillPrefix}).
198
+ *
199
+ * NO "CINEMATIC", and that word was in here for about ten minutes. "Film still"
200
+ * describes the KIND of picture — a frame lifted out of moving footage, which
201
+ * is what a UGC clip, a product video and a documentary all are too. "Cinematic"
202
+ * describes a REGISTER, and imposing one is wrong for most briefs. It is also
203
+ * the exact category of word every measured arm punished: a genre claim. The same idea as a standalone SENTENCE
204
+ * ("Film still from a feature film." / "This image is a scene start frame of a
205
+ * video.") measured badly-to-catastrophically: the sentence competes with the
206
+ * reference bindings and the references lose — the "scene start frame" arm put
207
+ * a face from INSIDE a reference into the lead role in 3 of 3 draws. The prefix
208
+ * costs nothing because it never makes a separate claim.
209
+ *
210
+ * What it buys is not just the eyeline. Tal's distinction, which is sharper
211
+ * than the binary this was first scored on: a subject may be turned toward the
212
+ * lens and still be IN the scene rather than presenting to the viewer. The
213
+ * prefix also moves staging, depth and the quality of light — things an
214
+ * eyeline rule cannot reach.
215
+ */
216
+ declare const FILM_STILL_PREFIX = "Film still of";
217
+ /**
218
+ * The prefix with a SHOT SIZE in front — "Extreme wide cinematic film still of
219
+ * …", "Medium close-up cinematic film still of …".
220
+ *
221
+ * Leading with the framing is standard practice and Tal reports it better
222
+ * again. HONEST STATUS: the POSITION is measured (a prefix costs nothing where
223
+ * a standalone claim cost the lead's identity 3 of 3); the shot-size word is
224
+ * his experience, not a controlled arm. The shot size is safe in a way a genre
225
+ * label is not — it says how the picture is FRAMED, which the scene needs
226
+ * anyway, rather than what kind of production it belongs to.
227
+ */
228
+ declare function filmStillPrefix(shotSize?: string): string;
229
+ /**
230
+ * The eyeline suppressor. Five words, measured free — it costs nothing on
231
+ * identity, wardrobe or composition, which none of the longer phrasings
232
+ * managed.
233
+ *
234
+ * DO NOT EXPAND THIS. Every attempt to say more about what the picture IS cost
235
+ * reference fidelity; the sentence works BECAUSE it constrains exactly one
236
+ * thing and claims nothing about medium, genre or mood.
237
+ */
238
+ declare const SCENE_FRAME_RULE = "Nobody looks at the camera.";
239
+ /**
240
+ * A LOOK TAIL — film stock, lens, light, palette — appended AFTER everything.
241
+ *
242
+ * An example to edit, not a universal: a different film wants a different
243
+ * stock. What generalises is the POSITION.
244
+ *
245
+ * THIS one is allowed to say "cinematic" — imposing a register is its entire
246
+ * job, and a user opts in by name. {@link filmStillPrefix} may not, because it
247
+ * is a DEFAULT: "film still" describes the kind of picture (a frame out of
248
+ * moving footage — true of a UGC clip and a documentary too), while
249
+ * "cinematic" describes a register most briefs did not ask for.
250
+ *
251
+ * ─── THE ONE RULE ALL OF THIS TURNED OUT TO BE ─────────────────────────────
252
+ *
253
+ * Position decides whether an instruction helps or fights the references:
254
+ *
255
+ * 1. RULES FIRST — default-deny, ahead of the bindings it governs.
256
+ * 2. FRAMING AS A PREFIX that swallows the subject ("Film still of …").
257
+ * 3. LOOK LAST — stock, lens, lighting, palette.
258
+ * 4. A separate CLAIM in the middle competes with the reference bindings,
259
+ * and the references lose.
260
+ *
261
+ * That is why "This image is a scene start frame of a video." (a standalone
262
+ * claim, mid-prompt) cost the lead's identity in 3 of 3 draws while "Film still
263
+ * of" (a prefix) costs nothing, and why this tail is free at the end. It
264
+ * matches the published guidance independently — Subject → Action →
265
+ * Surroundings → Camera/Lighting → Atmosphere — and gvp's engine had already
266
+ * found rule 3 the hard way: "THE MEDIUM GOES LAST… a rendering directive at
267
+ * the end has nothing after it to argue with."
268
+ *
269
+ * RECAST DOES NOT NEED THIS SNIPPET. `lookDirective` already appends a tail
270
+ * built from the look the ANALYSER observed in the source film — stock, grade,
271
+ * lens, lighting — which beats a hand-written one because it is that film's
272
+ * own look. This exists for the platform's image nodes, which have no analyser.
273
+ */
274
+ declare const CINEMATIC_LOOK_TAIL: string;
275
+ /**
276
+ * Compose the blocks a caller wants, in a stable order, ready to prepend.
277
+ * Returns `""` when everything is off, so a caller can prepend blind.
278
+ *
279
+ * No route calls this today — the platform ships these as SNIPPETS a user
280
+ * inserts. It exists for gvp/recast (which builds its grounding block in code)
281
+ * and for whatever calls this next, so the ordering rule lives in one place:
282
+ * rules first, eyeline rule after them, scene after both.
283
+ */
284
+ declare function referenceRulesBlock(opts?: {
285
+ /** Default-deny + likeness + compose. Absent = ON. */
286
+ referenceRules?: boolean;
287
+ /** Add the two face clauses — for briefs moving elements between people. */
288
+ multiPerson?: boolean;
289
+ /** "Nobody looks at the camera." Absent = OFF (a portrait wants the eyeline). */
290
+ sceneFrame?: boolean;
291
+ }): string;
292
+
93
293
  /**
94
294
  * Dispatch by parameter-node type to its prompt-hint string. For camera-motion,
95
295
  * pass `ctx` to include the composed start/end clauses; otherwise only the
@@ -996,6 +1196,13 @@ interface AssembleSunoResult {
996
1196
  customMode: boolean;
997
1197
  instrumental: boolean;
998
1198
  model?: string;
1199
+ /**
1200
+ * Requested song length in seconds (KIE: 10–360). Passed through from
1201
+ * `data.duration` unconditionally — the provider client is the single
1202
+ * gate that only sends it when customMode && model V5_5 (KIE ignores it
1203
+ * elsewhere), so the assembler stays a faithful field carrier.
1204
+ */
1205
+ duration?: number;
999
1206
  personaId?: string;
1000
1207
  personaModel?: "voice_persona" | "style_persona";
1001
1208
  }
@@ -3329,6 +3536,12 @@ declare function applyTemplate(template: string, vars: Record<string, string>):
3329
3536
  * - KIE API docs https://docs.kie.ai/market/kling/kling-3-0
3330
3537
  * - Live KIE-path dialogue probe 2026-07-16 (scripted lines spoken verbatim,
3331
3538
  * lip-synced, on both kling-2.6 and kling-3.0 with sound=true)
3539
+ * MiniMax Hailuo 3:
3540
+ * - KIE API docs https://docs.kie.ai/market/minimax-h3 (text-to-video /
3541
+ * image-to-video / reference-to-video — the API contract is the doctrine
3542
+ * source: limits, modes, aspect rules, pricing dimensions). No live probe
3543
+ * yet — structure guidance mirrors the platform's ordinal-reference
3544
+ * conventions rather than vendor style claims.
3332
3545
  */
3333
3546
  interface ProviderPromptDoctrine {
3334
3547
  /** MODEL_CATALOG ids this doctrine covers. */
@@ -3578,4 +3791,4 @@ declare const FACTORY_SNIPPETS: readonly FactorySnippet[];
3578
3791
  /** Factory snippets for one field: target match + media membership. */
3579
3792
  declare function getFactorySnippets(target: SnippetTarget, media: SnippetMedia): readonly FactorySnippet[];
3580
3793
 
3581
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, 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, 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 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, 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, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, 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, 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 MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, 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_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 PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogSummary, type PickerDimension, type PickerDimensionSpec, type PickerGaps, type PickerOption, type PickerType, 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, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type ReferenceCounts, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, 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 SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_IDS, type Temporal, type TemporalCategory, type TemporalValue, 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 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, buildAestheticHints, buildAgeHint, buildAtmosphereHints, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildFaceTemplateInputs, buildFramingHints, buildHeldPropHints, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildLightingHints, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMoodHints, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicMoodHints, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPhotographerHints, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPostProcessHints, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildTemporalHints, buildVoiceCharacterHints, buildVoiceDeliveryHints, buildWardrobeHints, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCharacterFxHintFromConnections, composeNegative, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, expandImagePositionRefs, expandImageRefTokens, getActionFx, getActionFxLabel, getActionFxPromptHint, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getBackdrop, getBackdropLabel, getBackdropPromptHint, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getColorLook, getColorLookLabel, getColorLookPromptHint, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getExposure, getExposureLabel, getExposurePromptHint, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getIdentityLockClause, getInstrument, getLens, getLensLabel, getLensPromptHint, getLighting, getLightingLabel, getLightingPromptHint, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getMaterial, getMaterialLabel, getMaterialPromptHint, getMood, getMoodLabel, getMoodPromptHint, getMusicEmotion, getMusicEnergy, getMusicEra, getMusicGenre, getMusicGenreLabel, getMusicSubgenre, getMusicVibe, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPickerAnalyzer, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getProductionStyle, getPromptDoctrine, getPromptTips, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getSetting, getSettingLabel, getSettingPromptHint, getSingingStyle, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getTemporal, getTemporalLabel, getTemporalPromptHint, getTransition, getTransitionLabel, getTransitionPromptHint, getVocalPresence, getVoiceAccent, getVoiceAge, getVoiceArchetype, getVoiceEmotion, getVoiceGender, getVoiceLanguage, getVoicePace, getVoiceTimbre, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, isAnalyzablePicker, isInstrumentalVocal, isVantageFraming, isWizardSupported, listPickerCatalogs, migratePersonValue, pickerFanoutTargets, projectPickerCatalog, promptBindsFirstFrame, renderStructuredFields, resolveBrandInput, resolveCharacterMentions, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
3794
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, 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 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, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, 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, 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 MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, 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_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 PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogSummary, type PickerDimension, type PickerDimensionSpec, type PickerGaps, type PickerOption, type PickerType, 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 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, 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 SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_IDS, type Temporal, type TemporalCategory, type TemporalValue, 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 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, buildAestheticHints, buildAgeHint, buildAtmosphereHints, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildFaceTemplateInputs, buildFramingHints, buildHeldPropHints, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildLightingHints, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMoodHints, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicMoodHints, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPhotographerHints, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPostProcessHints, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildTemporalHints, buildVoiceCharacterHints, buildVoiceDeliveryHints, buildWardrobeHints, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCharacterFxHintFromConnections, composeNegative, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getBackdrop, getBackdropLabel, getBackdropPromptHint, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getColorLook, getColorLookLabel, getColorLookPromptHint, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getExposure, getExposureLabel, getExposurePromptHint, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getIdentityLockClause, getInstrument, getLens, getLensLabel, getLensPromptHint, getLighting, getLightingLabel, getLightingPromptHint, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getMaterial, getMaterialLabel, getMaterialPromptHint, getMood, getMoodLabel, getMoodPromptHint, getMusicEmotion, getMusicEnergy, getMusicEra, getMusicGenre, getMusicGenreLabel, getMusicSubgenre, getMusicVibe, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPickerAnalyzer, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getProductionStyle, getPromptDoctrine, getPromptTips, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getSetting, getSettingLabel, getSettingPromptHint, getSingingStyle, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getTemporal, getTemporalLabel, getTemporalPromptHint, getTransition, getTransitionLabel, getTransitionPromptHint, getVocalPresence, getVoiceAccent, getVoiceAge, getVoiceArchetype, getVoiceEmotion, getVoiceGender, getVoiceLanguage, getVoicePace, getVoiceTimbre, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, isAnalyzablePicker, isInstrumentalVocal, isVantageFraming, isWizardSupported, listPickerCatalogs, migratePersonValue, pickerFanoutTargets, projectPickerCatalog, promptBindsFirstFrame, referenceRulesBlock, renderStructuredFields, resolveBrandInput, resolveCharacterMentions, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };