@nodaro/prompts 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { ConnectedReference, GenericNode, GenericEdge, HintNodeLike, HintGraphContext, EntityStyle, SupportedFontName, CharacterDef, IdentityMeta, SceneData, CharacterMentionTokenInfo, LocationMentionTokenInfo, UsageMode, StyleDirectives } from '@nodaro/shared';
1
+ import { ConnectedReference, GenericNode, GenericEdge, HintNodeLike, HintGraphContext, EntityStyle, SupportedFontName, CharacterDef, IdentityMeta, SceneData, CharacterMentionTokenInfo, LocationMentionTokenInfo, UsageMode, StyleDirectives, I18nCatalogId } from '@nodaro/shared';
2
2
  export { HintEdgeLike, HintGraphContext, HintNodeLike } from '@nodaro/shared';
3
3
  import { z } from 'zod';
4
4
 
@@ -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
  }
@@ -1617,9 +1824,342 @@ declare const PICKER_ANALYZER_REGISTRY: {
1617
1824
  label: string;
1618
1825
  entries: ReadonlyArray<AnalyzerEntry>;
1619
1826
  };
1827
+ setting: {
1828
+ kind: "flat";
1829
+ toolName: string;
1830
+ field: string;
1831
+ label: string;
1832
+ entries: ReadonlyArray<AnalyzerEntry>;
1833
+ };
1834
+ atmosphere: {
1835
+ kind: "flat";
1836
+ toolName: string;
1837
+ field: string;
1838
+ label: string;
1839
+ entries: ReadonlyArray<AnalyzerEntry>;
1840
+ };
1841
+ style: {
1842
+ kind: "flat";
1843
+ toolName: string;
1844
+ field: string;
1845
+ label: string;
1846
+ entries: ReadonlyArray<AnalyzerEntry>;
1847
+ };
1848
+ mood: {
1849
+ kind: "flat";
1850
+ toolName: string;
1851
+ field: string;
1852
+ label: string;
1853
+ entries: ReadonlyArray<AnalyzerEntry>;
1854
+ };
1855
+ "color-look": {
1856
+ kind: "flat";
1857
+ toolName: string;
1858
+ field: string;
1859
+ label: string;
1860
+ entries: ReadonlyArray<AnalyzerEntry>;
1861
+ };
1862
+ photographer: {
1863
+ kind: "flat";
1864
+ toolName: string;
1865
+ field: string;
1866
+ label: string;
1867
+ entries: ReadonlyArray<AnalyzerEntry>;
1868
+ };
1869
+ aesthetic: {
1870
+ kind: "flat";
1871
+ toolName: string;
1872
+ field: string;
1873
+ label: string;
1874
+ entries: ReadonlyArray<AnalyzerEntry>;
1875
+ };
1876
+ era: {
1877
+ kind: "flat";
1878
+ toolName: string;
1879
+ field: string;
1880
+ label: string;
1881
+ entries: ReadonlyArray<AnalyzerEntry>;
1882
+ };
1883
+ "photo-genre": {
1884
+ kind: "flat";
1885
+ toolName: string;
1886
+ field: string;
1887
+ label: string;
1888
+ entries: ReadonlyArray<AnalyzerEntry>;
1889
+ };
1890
+ backdrop: {
1891
+ kind: "flat";
1892
+ toolName: string;
1893
+ field: string;
1894
+ label: string;
1895
+ entries: ReadonlyArray<AnalyzerEntry>;
1896
+ };
1897
+ "render-quality": {
1898
+ kind: "flat";
1899
+ toolName: string;
1900
+ field: string;
1901
+ label: string;
1902
+ entries: ReadonlyArray<AnalyzerEntry>;
1903
+ };
1904
+ "composition-effects": {
1905
+ kind: "flat";
1906
+ toolName: string;
1907
+ field: string;
1908
+ label: string;
1909
+ entries: ReadonlyArray<AnalyzerEntry>;
1910
+ };
1911
+ "post-process-effects": {
1912
+ kind: "flat";
1913
+ toolName: string;
1914
+ field: string;
1915
+ label: string;
1916
+ entries: ReadonlyArray<AnalyzerEntry>;
1917
+ };
1918
+ "action-fx": {
1919
+ kind: "flat";
1920
+ toolName: string;
1921
+ field: string;
1922
+ label: string;
1923
+ entries: ReadonlyArray<AnalyzerEntry>;
1924
+ };
1925
+ "loop-subject": {
1926
+ kind: "flat";
1927
+ toolName: string;
1928
+ field: string;
1929
+ label: string;
1930
+ entries: ReadonlyArray<AnalyzerEntry>;
1931
+ };
1932
+ transition: {
1933
+ kind: "flat";
1934
+ toolName: string;
1935
+ field: string;
1936
+ label: string;
1937
+ entries: ReadonlyArray<AnalyzerEntry>;
1938
+ };
1939
+ "character-fx": {
1940
+ kind: "flat";
1941
+ toolName: string;
1942
+ field: string;
1943
+ label: string;
1944
+ entries: ReadonlyArray<AnalyzerEntry>;
1945
+ };
1946
+ pose: {
1947
+ kind: "flat";
1948
+ toolName: string;
1949
+ field: string;
1950
+ label: string;
1951
+ entries: ReadonlyArray<AnalyzerEntry>;
1952
+ };
1953
+ material: {
1954
+ kind: "flat";
1955
+ toolName: string;
1956
+ field: string;
1957
+ label: string;
1958
+ entries: ReadonlyArray<AnalyzerEntry>;
1959
+ };
1960
+ "held-prop": {
1961
+ kind: "flat";
1962
+ toolName: string;
1963
+ field: string;
1964
+ label: string;
1965
+ entries: ReadonlyArray<AnalyzerEntry>;
1966
+ };
1967
+ "camera-motion": {
1968
+ kind: "flat";
1969
+ toolName: string;
1970
+ field: string;
1971
+ label: string;
1972
+ entries: ReadonlyArray<AnalyzerEntry>;
1973
+ };
1974
+ animal: {
1975
+ kind: "flat";
1976
+ toolName: string;
1977
+ field: string;
1978
+ label: string;
1979
+ entries: ReadonlyArray<AnalyzerEntry>;
1980
+ };
1981
+ vehicle: {
1982
+ kind: "flat";
1983
+ toolName: string;
1984
+ field: string;
1985
+ label: string;
1986
+ entries: ReadonlyArray<AnalyzerEntry>;
1987
+ };
1988
+ weapon: {
1989
+ kind: "flat";
1990
+ toolName: string;
1991
+ field: string;
1992
+ label: string;
1993
+ entries: ReadonlyArray<AnalyzerEntry>;
1994
+ };
1995
+ furniture: {
1996
+ kind: "flat";
1997
+ toolName: string;
1998
+ field: string;
1999
+ label: string;
2000
+ entries: ReadonlyArray<AnalyzerEntry>;
2001
+ };
2002
+ lighting: {
2003
+ kind: "discriminated";
2004
+ toolName: string;
2005
+ discriminator: "category";
2006
+ order: ReadonlyArray<string>;
2007
+ fieldByKey: Readonly<Record<string, string>>;
2008
+ labels: Readonly<Record<string, string>>;
2009
+ entries: ReadonlyArray<AnalyzerEntry>;
2010
+ limitFn: () => number;
2011
+ };
2012
+ temporal: {
2013
+ kind: "discriminated";
2014
+ toolName: string;
2015
+ discriminator: "category";
2016
+ order: string[];
2017
+ fieldByKey: {
2018
+ speed: string;
2019
+ freeze: string;
2020
+ direction: string;
2021
+ shutter: string;
2022
+ };
2023
+ labels: {
2024
+ speed: string;
2025
+ freeze: string;
2026
+ direction: string;
2027
+ shutter: string;
2028
+ };
2029
+ entries: ReadonlyArray<AnalyzerEntry>;
2030
+ limitFn: () => number;
2031
+ };
2032
+ "exposure-settings": {
2033
+ kind: "discriminated";
2034
+ toolName: string;
2035
+ discriminator: "category";
2036
+ order: string[];
2037
+ fieldByKey: {
2038
+ aperture: string;
2039
+ "shutter-speed": string;
2040
+ iso: string;
2041
+ };
2042
+ labels: {
2043
+ aperture: string;
2044
+ "shutter-speed": string;
2045
+ iso: string;
2046
+ };
2047
+ entries: ReadonlyArray<AnalyzerEntry>;
2048
+ limitFn: () => number;
2049
+ };
2050
+ "music-genre": {
2051
+ kind: "discriminated";
2052
+ toolName: string;
2053
+ discriminator: "dimension";
2054
+ order: string[];
2055
+ fieldByKey: {
2056
+ genre: string;
2057
+ subgenre: string;
2058
+ era: string;
2059
+ };
2060
+ labels: {
2061
+ genre: string;
2062
+ subgenre: string;
2063
+ era: string;
2064
+ };
2065
+ entries: (AnalyzerEntry | {
2066
+ id: string;
2067
+ label: string;
2068
+ description: string;
2069
+ dimension: string;
2070
+ })[];
2071
+ limitFn: (k: string) => 1 | 2;
2072
+ };
2073
+ "music-mood": {
2074
+ kind: "discriminated";
2075
+ toolName: string;
2076
+ discriminator: "dimension";
2077
+ order: string[];
2078
+ fieldByKey: {
2079
+ energy: string;
2080
+ emotion: string;
2081
+ vibe: string;
2082
+ };
2083
+ labels: {
2084
+ energy: string;
2085
+ emotion: string;
2086
+ vibe: string;
2087
+ };
2088
+ entries: AnalyzerEntry[];
2089
+ limitFn: (k: string) => 1 | 2;
2090
+ };
2091
+ instrumentation: {
2092
+ kind: "discriminated";
2093
+ toolName: string;
2094
+ discriminator: "dimension";
2095
+ order: string[];
2096
+ fieldByKey: {
2097
+ instruments: string;
2098
+ production: string;
2099
+ vocalPresence: string;
2100
+ singingStyle: string;
2101
+ };
2102
+ labels: {
2103
+ instruments: string;
2104
+ production: string;
2105
+ vocalPresence: string;
2106
+ singingStyle: string;
2107
+ };
2108
+ entries: AnalyzerEntry[];
2109
+ limitFn: (k: string) => 1 | 2 | 3;
2110
+ };
2111
+ "voice-character": {
2112
+ kind: "discriminated";
2113
+ toolName: string;
2114
+ discriminator: "dimension";
2115
+ order: string[];
2116
+ fieldByKey: {
2117
+ age: string;
2118
+ gender: string;
2119
+ language: string;
2120
+ accent: string;
2121
+ timbre: string;
2122
+ };
2123
+ labels: {
2124
+ age: string;
2125
+ gender: string;
2126
+ language: string;
2127
+ accent: string;
2128
+ timbre: string;
2129
+ };
2130
+ entries: AnalyzerEntry[];
2131
+ limitFn: (k: string) => 1 | 2;
2132
+ };
2133
+ "voice-delivery": {
2134
+ kind: "discriminated";
2135
+ toolName: string;
2136
+ discriminator: "dimension";
2137
+ order: string[];
2138
+ fieldByKey: {
2139
+ pace: string;
2140
+ emotion: string;
2141
+ archetype: string;
2142
+ };
2143
+ labels: {
2144
+ pace: string;
2145
+ emotion: string;
2146
+ archetype: string;
2147
+ };
2148
+ entries: AnalyzerEntry[];
2149
+ limitFn: () => number;
2150
+ };
1620
2151
  };
1621
2152
  type PickerType = keyof typeof PICKER_ANALYZER_REGISTRY;
1622
2153
  declare const PICKER_TYPES: PickerType[];
2154
+ /**
2155
+ * Family grouping for BATCHED analysis. A single call across all 38 catalogs
2156
+ * carries a ~211k-char legend (~53k tokens — measured 2026-08-09, the
2157
+ * measure-first probe from the text-to-picker spec), which is slow, costly,
2158
+ * and dilutes per-section accuracy. The text-to-picker route fans out one
2159
+ * structured call per family (6-15k tokens each) and merges. Mirrors the
2160
+ * build-brief's §5 UI grouping so Cine can reuse the same partition.
2161
+ */
2162
+ declare const PICKER_ANALYZER_FAMILIES: Readonly<Record<string, ReadonlyArray<PickerType>>>;
1623
2163
  declare const ANALYZABLE_PICKER_TYPES: ReadonlySet<string>;
1624
2164
  declare function isAnalyzablePicker(t: string): t is PickerType;
1625
2165
  interface PickerDimensionSpec {
@@ -3329,6 +3869,12 @@ declare function applyTemplate(template: string, vars: Record<string, string>):
3329
3869
  * - KIE API docs https://docs.kie.ai/market/kling/kling-3-0
3330
3870
  * - Live KIE-path dialogue probe 2026-07-16 (scripted lines spoken verbatim,
3331
3871
  * lip-synced, on both kling-2.6 and kling-3.0 with sound=true)
3872
+ * MiniMax Hailuo 3:
3873
+ * - KIE API docs https://docs.kie.ai/market/minimax-h3 (text-to-video /
3874
+ * image-to-video / reference-to-video — the API contract is the doctrine
3875
+ * source: limits, modes, aspect rules, pricing dimensions). No live probe
3876
+ * yet — structure guidance mirrors the platform's ordinal-reference
3877
+ * conventions rather than vendor style claims.
3332
3878
  */
3333
3879
  interface ProviderPromptDoctrine {
3334
3880
  /** MODEL_CATALOG ids this doctrine covers. */
@@ -3578,4 +4124,65 @@ declare const FACTORY_SNIPPETS: readonly FactorySnippet[];
3578
4124
  /** Factory snippets for one field: target match + media membership. */
3579
4125
  declare function getFactorySnippets(target: SnippetTarget, media: SnippetMedia): readonly FactorySnippet[];
3580
4126
 
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 };
4127
+ /**
4128
+ * Parameter-picker WIRING — the single source of truth for how each picker
4129
+ * node type binds to its catalog: value field(s), defaults, entries, grouping,
4130
+ * and per-field option lists for multi-dim pickers.
4131
+ *
4132
+ * Pure data, no React. Extracted from the app's parameter-picker-registry so
4133
+ * THREE consumers share one definition and cannot drift:
4134
+ * 1. The app's community fallback registry (chip pickers, no rich previews).
4135
+ * 2. `@nodaroai/picker-ui`'s rich registry (attaches preview/Picker renderers).
4136
+ * 3. Nodaro Cine's builder panels.
4137
+ *
4138
+ * Renderers (preview components, multi-dim Picker components) deliberately do
4139
+ * NOT live here — presentation is the private package's concern; this file is
4140
+ * the public vocabulary.
4141
+ */
4142
+
4143
+ /** One selectable catalog entry as picker UIs consume it. */
4144
+ interface PickerWiringEntry {
4145
+ readonly id: string;
4146
+ readonly label: string;
4147
+ readonly description: string;
4148
+ /** Optional group key for category headers. */
4149
+ readonly group?: string;
4150
+ }
4151
+ interface SingleDimPickerWiring {
4152
+ readonly kind: "single";
4153
+ readonly nodeType: string;
4154
+ readonly label: string;
4155
+ readonly valueField: string;
4156
+ readonly defaultValue: string;
4157
+ readonly catalogId: I18nCatalogId;
4158
+ readonly entries: ReadonlyArray<PickerWiringEntry>;
4159
+ readonly groupOrder?: ReadonlyArray<string>;
4160
+ readonly groupLabels?: Readonly<Record<string, string>>;
4161
+ }
4162
+ interface MultiDimPickerWiring {
4163
+ readonly kind: "multi";
4164
+ readonly nodeType: string;
4165
+ readonly label: string;
4166
+ /** Data fields the picker reads/writes — used to slice node.data into a value object. */
4167
+ readonly fields: ReadonlyArray<string>;
4168
+ readonly catalogId: I18nCatalogId;
4169
+ /** Flat id→label list — used to resolve ids into labels for summary chips. */
4170
+ readonly catalogEntries: ReadonlyArray<{
4171
+ readonly id: string;
4172
+ readonly label: string;
4173
+ }>;
4174
+ /** Per-field option lists — lets a data-only consumer (community fallback,
4175
+ * Cine simple mode) render one select per field without knowing the
4176
+ * catalog's discriminator scheme. */
4177
+ readonly fieldOptions: Readonly<Record<string, ReadonlyArray<{
4178
+ readonly id: string;
4179
+ readonly label: string;
4180
+ }>>>;
4181
+ }
4182
+ type PickerWiring = SingleDimPickerWiring | MultiDimPickerWiring;
4183
+ declare const SINGLE_PICKER_WIRING: ReadonlyArray<SingleDimPickerWiring>;
4184
+ declare const MULTI_PICKER_WIRING: ReadonlyArray<MultiDimPickerWiring>;
4185
+ declare const ALL_PICKER_WIRING: ReadonlyArray<PickerWiring>;
4186
+ declare function getPickerWiring(nodeType: string | undefined | null): PickerWiring | undefined;
4187
+
4188
+ 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 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, 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 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 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 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 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 SingleDimPickerWiring, 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, getPickerWiring, 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 };