@nodaro/prompts 1.12.0 → 1.14.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.
Files changed (36) hide show
  1. package/dist/index.cjs +389 -194
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +244 -29
  4. package/dist/index.d.ts +244 -29
  5. package/dist/index.js +377 -196
  6. package/dist/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/__tests__/assemble-image-input-cap.test.ts +37 -13
  9. package/src/__tests__/assemble-image-input.test.ts +100 -19
  10. package/src/__tests__/assemble-video-input-cap.test.ts +101 -15
  11. package/src/__tests__/assemble-video-input.test.ts +167 -33
  12. package/src/__tests__/direction-hint-token-safety.test.ts +21 -0
  13. package/src/__tests__/multi-picker-spec.test.ts +21 -1
  14. package/src/__tests__/person-regional-aesthetic.test.ts +2 -1
  15. package/src/__tests__/prompt-style-section.test.ts +345 -0
  16. package/src/__tests__/provider-prompt-doctrine.test.ts +39 -0
  17. package/src/__tests__/style-section-boundary.test.ts +179 -0
  18. package/src/__tests__/subject-fold.test.ts +32 -13
  19. package/src/assemble-image-input.ts +51 -26
  20. package/src/assemble-video-input.ts +54 -34
  21. package/src/direction-registry.ts +108 -37
  22. package/src/gemini-omni-inputs.ts +11 -3
  23. package/src/held-prop.ts +1 -0
  24. package/src/hint-shedding.ts +23 -4
  25. package/src/index.ts +1 -0
  26. package/src/person.ts +4 -0
  27. package/src/picker-analyzer-registry.ts +37 -0
  28. package/src/prompt-builder.ts +84 -27
  29. package/src/prompt-hint-join.ts +9 -0
  30. package/src/prompt-style-section.ts +256 -0
  31. package/src/prompt-wizard-categories.ts +6 -0
  32. package/src/provider-prompt-doctrine.ts +51 -2
  33. package/src/setting.ts +1 -0
  34. package/src/style.ts +1 -0
  35. package/src/styling.ts +5 -1
  36. package/src/video-reference-resolver.ts +5 -2
package/dist/index.d.ts CHANGED
@@ -1073,8 +1073,23 @@ declare function renderStructuredFields(fields: StructuredPromptFields): string;
1073
1073
 
1074
1074
  /** Which generation stages fold a dimension. */
1075
1075
  type DirectionSurface = "image" | "video" | "both";
1076
- /** Verbosity family — the video policy folds `motion` compact, `look` full. */
1076
+ /**
1077
+ * Verbosity family — the video policy folds `motion` compact, `look` full.
1078
+ *
1079
+ * It is ALSO the body/section split (`prompt-style-section.ts`): `motion` stays
1080
+ * in the prompt body as shot prose, `look` moves to the `[style]` section. The
1081
+ * two meanings are deliberately the same column: camera motion is part of the
1082
+ * shot, not part of the look, on both axes, and a second column would let the
1083
+ * verbosity policy and the section boundary drift apart one row at a time.
1084
+ */
1077
1085
  type DirectionFamily = "look" | "motion";
1086
+ /**
1087
+ * Which `[style]` line a LOOK row renders on. `"film"` = the four dimensions
1088
+ * that describe the CAPTURE (stock, grade, style, era) plus the legacy camera
1089
+ * format key; every other look row falls to the scene line. Absent on `motion`
1090
+ * rows, which never reach the section at all.
1091
+ */
1092
+ type DirectionStyleGroup = "film";
1078
1093
  interface DirectionFieldSpec {
1079
1094
  /**
1080
1095
  * Wire key — also the `DirectionFields` property name and the canvas
@@ -1089,6 +1104,12 @@ interface DirectionFieldSpec {
1089
1104
  readonly surface: DirectionSurface;
1090
1105
  /** Verbosity family. The video policy folds `motion` compact, `look` full. */
1091
1106
  readonly family: DirectionFamily;
1107
+ /**
1108
+ * `[style]`-section line for a `look` row. Omitted = the scene line. Meaningless
1109
+ * on a `motion` row (those stay in the body), which is why it is optional
1110
+ * rather than a required column with a null member.
1111
+ */
1112
+ readonly styleGroup?: DirectionStyleGroup;
1092
1113
  /** Ids honored per dimension. Extras are SLICED at render, never a 400. */
1093
1114
  readonly maxPicks: number;
1094
1115
  /**
@@ -1114,16 +1135,20 @@ interface DirectionFieldSpec {
1114
1135
  * would wrongly suppress a legal second selection. Overlap is handled instead
1115
1136
  * by the exact-string dedupe in `renderDirectionHints`.
1116
1137
  *
1117
- * SECOND MEANING OF POSITION: BOTH cap-aware assemblers — `assembleImageInput`
1118
- * (stills) and `composeVideoPromptText` (video) — shed hint clauses from the
1119
- * TAIL of this order when a provider's prompt cap overflows, through the one
1120
- * shared arithmetic in `hint-shedding.ts`. So a row's position is also its
1121
- * survival order under the cap on EVERY surface: reordering rows for one
1122
- * surface silently changes what the other drops first, and the row a
1123
- * video-surface reorder would most likely touch (`cameraMotion`) leads the
1124
- * fold. That is a consequence of reusing the fold order, not a ranking — this
1125
- * table stays a compatibility order; anything that needs a real importance
1126
- * ranking should add an explicit priority column rather than reorder these rows.
1138
+ * SECOND MEANING OF POSITION — SURVIVAL, NOT STRING POSITION: BOTH cap-aware
1139
+ * assemblers — `assembleImageInput` (stills) and `composeVideoPromptText`
1140
+ * (video) — shed hint clauses from the TAIL of this order when a provider's
1141
+ * prompt cap overflows, through the one shared arithmetic in
1142
+ * `hint-shedding.ts`. So a row's position is its survival order under the cap on
1143
+ * EVERY surface: reordering rows for one surface silently changes what the other
1144
+ * drops first, and the row a video-surface reorder would most likely touch
1145
+ * (`cameraMotion`) leads the fold. What position is NOT any more is the clause's
1146
+ * place in the assembled STRING: every `look` row is lifted out of the body into
1147
+ * the trailing `[style]` section (`prompt-style-section.ts`), so a look clause
1148
+ * reads after every motion clause however early it folds. That is a consequence
1149
+ * of reusing the fold order, not a ranking — this table stays a compatibility
1150
+ * order; anything that needs a real importance ranking should add an explicit
1151
+ * priority column rather than reorder these rows.
1127
1152
  *
1128
1153
  * WHERE THIS TABLE SITS IN THE COMBINED ORDER: both assemblers fold the SUBJECT
1129
1154
  * channel (`subject-registry.ts`) BEFORE this one and shed the combined list
@@ -1182,6 +1207,7 @@ declare const DIRECTION_FIELDS: readonly [{
1182
1207
  readonly key: "cameraFormat";
1183
1208
  readonly surface: "both";
1184
1209
  readonly family: "look";
1210
+ readonly styleGroup: "film";
1185
1211
  readonly maxPicks: 1;
1186
1212
  readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
1187
1213
  }, {
@@ -1242,6 +1268,7 @@ declare const DIRECTION_FIELDS: readonly [{
1242
1268
  readonly key: "colorLook";
1243
1269
  readonly surface: "both";
1244
1270
  readonly family: "look";
1271
+ readonly styleGroup: "film";
1245
1272
  readonly maxPicks: 1;
1246
1273
  readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
1247
1274
  }, {
@@ -1260,6 +1287,7 @@ declare const DIRECTION_FIELDS: readonly [{
1260
1287
  readonly key: "style";
1261
1288
  readonly surface: "both";
1262
1289
  readonly family: "look";
1290
+ readonly styleGroup: "film";
1263
1291
  readonly maxPicks: 1;
1264
1292
  readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
1265
1293
  }, {
@@ -1302,6 +1330,7 @@ declare const DIRECTION_FIELDS: readonly [{
1302
1330
  readonly key: "era";
1303
1331
  readonly surface: "both";
1304
1332
  readonly family: "look";
1333
+ readonly styleGroup: "film";
1305
1334
  readonly maxPicks: 1;
1306
1335
  readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
1307
1336
  }, {
@@ -1380,6 +1409,7 @@ declare const DIRECTION_FIELDS: readonly [{
1380
1409
  readonly key: "cameraFormatId";
1381
1410
  readonly surface: "both";
1382
1411
  readonly family: "look";
1412
+ readonly styleGroup: "film";
1383
1413
  readonly maxPicks: 1;
1384
1414
  readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
1385
1415
  }];
@@ -1408,6 +1438,13 @@ type DirectionFields = {
1408
1438
  * re-deriving one.
1409
1439
  */
1410
1440
  declare const DIRECTION_KEYS: ReadonlyArray<DirectionKey>;
1441
+ /**
1442
+ * The rows that render on the `[style]` section's FILM line, in table order —
1443
+ * derived from the table's `styleGroup` column so the grouping has exactly one
1444
+ * definition. Exported for clients that render the section themselves; the
1445
+ * platform's own renderer reads the column, not this list.
1446
+ */
1447
+ declare const FILM_STYLE_KEYS: ReadonlyArray<DirectionKey>;
1411
1448
  /** Verbosity for a whole fold, or split per family. */
1412
1449
  type DirectionHintMode = PickerHintMode | {
1413
1450
  readonly look: PickerHintMode;
@@ -1437,6 +1474,23 @@ declare const DIRECTION_ARRAY_CEILING = 8;
1437
1474
  declare const DIRECTION_ID_MAX_CHARS = 100;
1438
1475
  /** The rows a given generation stage folds, in table order. */
1439
1476
  declare function directionFieldsForSurface(surface: "image" | "video"): ReadonlyArray<DirectionFieldSpec>;
1477
+ /** One rendered clause, still carrying the table attributes it came from. */
1478
+ interface DirectionHintClause {
1479
+ readonly key: DirectionKey;
1480
+ readonly family: DirectionFamily;
1481
+ readonly styleGroup?: DirectionStyleGroup;
1482
+ readonly text: string;
1483
+ }
1484
+ /**
1485
+ * `renderDirectionHints` with the row each clause came from still attached —
1486
+ * what the `[style]` section needs to decide which line a clause belongs on
1487
+ * without a second table. Same order, same surface filter, same dedupe; the
1488
+ * plain renderer is this one's `.text` projection, so the two cannot drift.
1489
+ */
1490
+ declare function renderDirectionHintClauses(direction: DirectionFields | undefined, opts: {
1491
+ surface: "image" | "video";
1492
+ mode?: DirectionHintMode;
1493
+ }): DirectionHintClause[];
1440
1494
  /**
1441
1495
  * Every clause the `direction` channel injects, in canonical table order.
1442
1496
  *
@@ -1456,7 +1510,9 @@ declare function directionFieldsForSurface(surface: "image" | "video"): Readonly
1456
1510
  * exactly as two wired picker nodes of one family behave today.
1457
1511
  *
1458
1512
  * Exported so a client's "will inject into prompt" preview renders the exact
1459
- * server output instead of re-implementing the fold.
1513
+ * clauses the server does instead of re-implementing the fold. A preview of the
1514
+ * assembled STRING needs `prompt-style-section.ts` on top: the look clauses in
1515
+ * this list do not read in this position any more.
1460
1516
  */
1461
1517
  declare function renderDirectionHints(direction: DirectionFields | undefined, opts: {
1462
1518
  surface: "image" | "video";
@@ -1742,6 +1798,15 @@ declare function renderSubjectHints(subject: SubjectFields | undefined, opts: {
1742
1798
  * ("prompt. hint", not "prompt . hint"), and drop a blank body so the result
1743
1799
  * never starts with ". ".
1744
1800
  *
1801
+ * WHAT THIS JOIN COVERS NOW: the prompt BODY only. A LOOK clause no longer
1802
+ * reaches this function from either composer — it lifts into the trailing
1803
+ * `[style]` section (`prompt-style-section.ts`), which is `". "`-joined WITHIN a
1804
+ * line but hung off the body by a blank line. So "every folded clause is one
1805
+ * `". "` further along the same string" stopped being true for a look-carrying
1806
+ * call, deliberately; `composeSectionedPrompt` is the whole-prompt shape and
1807
+ * this is the piece of it that assembles the body. The zero-hint no-op branch is
1808
+ * untouched and still the thing the routes' `composed !== prompt` guard reads.
1809
+ *
1745
1810
  * Never mutates its inputs.
1746
1811
  */
1747
1812
  /** The measured separator between the user's prompt and each folded hint. */
@@ -1756,6 +1821,125 @@ declare const PROMPT_HINT_SEPARATOR = ". ";
1756
1821
  */
1757
1822
  declare function joinPromptHints(userPrompt: string, hints: readonly string[]): string;
1758
1823
 
1824
+ /**
1825
+ * The section header, verbatim. Lowercase and bracketed so it reads as
1826
+ * structure rather than as a sentence — and so it can be found again by
1827
+ * `buildImagePrompt`'s hybrid line-capitalizer, which must stop here
1828
+ * (`[Style]:` would be a different token, and capitalized clause lines would
1829
+ * corrupt the lowercase catalog wording).
1830
+ */
1831
+ declare const STYLE_SECTION_HEADER = "[style]:";
1832
+ /** The blank line between the body and the section. Omitted for an empty body. */
1833
+ declare const STYLE_SECTION_GAP = "\n\n";
1834
+ /**
1835
+ * Split a composed prompt into the BODY and the `[style]` section it ends with
1836
+ * (`section: ""` when it carries none, the body then being the whole string;
1837
+ * the section comes back WITHOUT the gap).
1838
+ *
1839
+ * Matched from the RIGHT: the composer always emits the section last, and a
1840
+ * user's own prose is free to contain the same characters. A blank body drops
1841
+ * the gap with it, so the section-only form is matched on its own.
1842
+ */
1843
+ declare function splitStyleSection(prompt: string): {
1844
+ body: string;
1845
+ section: string;
1846
+ };
1847
+ /**
1848
+ * Extend a composed prompt's BODY with more lines, AHEAD of the `[style]`
1849
+ * section — what every assembler downstream of the composer needs, because the
1850
+ * section has no terminator: a plain append lands under the header and reads as
1851
+ * one more look clause. Reference bindings, element directives and character
1852
+ * descriptions are scene content that belongs with the prose, and leaving the
1853
+ * look clauses last is where a look tail was measured to cost nothing.
1854
+ *
1855
+ * With no section this IS the plain `"\n"` join every caller emitted before —
1856
+ * the byte-parity path, down to the leading newline an empty prompt produces.
1857
+ */
1858
+ declare function insertBeforeStyleSection(prompt: string, lines: readonly string[]): string;
1859
+ /**
1860
+ * True when `prompt` ends INSIDE the section — its last `\n\n`-delimited block
1861
+ * opens with the header. What the self-labeling control lines (`Style:`,
1862
+ * `Avoid:`) read: they stay at the END of the prompt by design, so a blank line
1863
+ * of their own is the only thing that can close the header's scope ahead of
1864
+ * them.
1865
+ */
1866
+ declare function endsInsideStyleSection(prompt: string): boolean;
1867
+ /** Where a rendered clause reads in the assembled prompt. */
1868
+ type PromptClauseSlot = "body" | "film" | "scene";
1869
+ /** A rendered clause plus the line it belongs on. */
1870
+ interface SlottedPromptClause {
1871
+ readonly text: string;
1872
+ readonly slot: PromptClauseSlot;
1873
+ }
1874
+ /**
1875
+ * The slot a direction row's clause takes: motion stays in the body, the five
1876
+ * `styleGroup: "film"` rows lead the section, every other look row follows on
1877
+ * the scene line.
1878
+ */
1879
+ declare function styleSlotFor(row: {
1880
+ readonly family: DirectionFamily;
1881
+ readonly styleGroup?: DirectionStyleGroup;
1882
+ }): PromptClauseSlot;
1883
+ /**
1884
+ * The SUBJECT channel's clauses: always body. Who is in the shot is the noun
1885
+ * phrase the look modifies, not part of the look.
1886
+ */
1887
+ declare function asBodyClauses(texts: readonly string[]): SlottedPromptClause[];
1888
+ /**
1889
+ * Fold a direction bag and tag each clause with its slot, in registry table
1890
+ * order. The ORDER is the fold/survival order, not the string order — the
1891
+ * composers slice this list from the tail when a cap forces a shed, and only
1892
+ * then hand the surviving prefix to `composeSectionedPrompt`.
1893
+ */
1894
+ declare function partitionStyleClauses(direction: DirectionFields | undefined, opts: {
1895
+ surface: "image" | "video";
1896
+ mode?: DirectionHintMode;
1897
+ }): SlottedPromptClause[];
1898
+ /**
1899
+ * The section block for a set of clauses — `""` when none of them is a look
1900
+ * clause. Each line is omitted entirely when its half of the split is empty, so
1901
+ * a scene-only fold never emits a blank film line.
1902
+ */
1903
+ declare function styleSectionFromClauses(clauses: readonly SlottedPromptClause[]): string;
1904
+ /**
1905
+ * The section for a raw direction bag — the entry point a client renders its
1906
+ * preview through, so the preview and the server emit the same bytes.
1907
+ */
1908
+ declare function renderStyleSection(direction: DirectionFields | undefined, opts: {
1909
+ surface: "image" | "video";
1910
+ mode?: DirectionHintMode;
1911
+ }): string;
1912
+ /**
1913
+ * The assembled prompt for a set of clauses: body clauses `". "`-joined onto the
1914
+ * user's prompt, the structured fragment last in the body, then the section.
1915
+ *
1916
+ * TRIMMING follows `joinPromptHints`: the prompt is trimmed whenever ANYTHING
1917
+ * folded — a section counts, so a look-only fold trims too, or the blank line
1918
+ * would inherit the prompt's trailing whitespace. With nothing folded at all the
1919
+ * prompt is returned VERBATIM AND UNTRIMMED (`undefined` passes straight
1920
+ * through), which is the byte-parity contract every existing caller rests on.
1921
+ *
1922
+ * A blank body drops the gap with it, so the result never opens on a newline —
1923
+ * the same reason `joinPromptHints` filters a blank prompt out of its join.
1924
+ */
1925
+ declare function composeSectionedPrompt<T extends string | undefined>(userPrompt: T, clauses: readonly SlottedPromptClause[], structuredFragment: string): string | T;
1926
+ /**
1927
+ * What each clause costs the assembled prompt, as the EXACT composed-length
1928
+ * delta of adding it to the prefix below it. Feeds `keepableDirectionHints`,
1929
+ * which walks the list tail-first.
1930
+ *
1931
+ * Exact deltas rather than "clause + separator" because the section's own bytes
1932
+ * are not evenly distributed: the FIRST look clause carries the whole
1933
+ * `"\n\n[style]:\n"` header (11 characters that only come back when the section
1934
+ * disappears), the second look clause of a line carries a `". "`, the first of
1935
+ * the scene line carries a `"\n"`. Flat costs would under-price the header, so
1936
+ * the walk would cover a deficit with more clauses than it needs and over-shed
1937
+ * — visible as a fold that drops two clauses where one would have fit. The
1938
+ * deltas do not change between shed iterations (the walk only ever shortens the
1939
+ * prefix), so they are computed once, before the loop.
1940
+ */
1941
+ declare function sectionedClauseCosts(userPrompt: string | undefined, clauses: readonly SlottedPromptClause[], structuredFragment: string): number[];
1942
+
1759
1943
  /**
1760
1944
  * How many of the first `kept` hint clauses may STAY if `deficit`
1761
1945
  * characters have to leave the body. Walks the fold order from the TAIL,
@@ -1783,11 +1967,21 @@ declare function joinPromptHints(userPrompt: string, hints: readonly string[]):
1783
1967
  * decorative `isoValue` clause; if that ever matters, the fix is an explicit
1784
1968
  * priority column on `DIRECTION_FIELDS`, not a second hand-kept list here.
1785
1969
  *
1786
- * Deliberately approximate (assembly is not perfectly additive); the caller
1787
- * re-assembles and re-checks, and this function strictly decreases `kept`
1788
- * whenever `deficit > 0`, so that loop terminates.
1789
- */
1790
- declare function keepableDirectionHints(hintClauses: readonly string[], kept: number, deficit: number): number;
1970
+ * `clauseCosts[i]` is what clause `i` really adds to the assembled prompt.
1971
+ * Without it each clause is charged its text plus one separator, which is what
1972
+ * a clause folded inline costs — but a clause that lands in the `[style]`
1973
+ * section carries section bytes too (the first one carries the whole header),
1974
+ * and under-charging it makes this walk cover the deficit with MORE clauses
1975
+ * than it needs. Both in-package callers pass exact composed-length deltas
1976
+ * (`sectionedClauseCosts`); the default keeps the pre-section arithmetic for
1977
+ * anyone else.
1978
+ *
1979
+ * Still deliberately approximate (assembly is not perfectly additive — a
1980
+ * downstream frame can grow or shrink around the body); the caller re-assembles
1981
+ * and re-checks, and this function strictly decreases `kept` whenever
1982
+ * `deficit > 0`, so that loop terminates however the costs are priced.
1983
+ */
1984
+ declare function keepableDirectionHints(hintClauses: readonly string[], kept: number, deficit: number, clauseCosts?: readonly number[]): number;
1791
1985
 
1792
1986
  /**
1793
1987
  * The reference-binding surface string — `@image_N` / `@video_N` / `@audio_N`
@@ -2388,8 +2582,9 @@ declare function assembleImageInput(input: AssembleImageInput): BuildImagePrompt
2388
2582
  *
2389
2583
  * WHERE IT RUNS (load-bearing): on the prompt BODY, BEFORE
2390
2584
  * `resolveVideoReferenceCore`. That resolver FRAMES the body — legacy prepends
2391
- * its `Use these characters:` block, hybrid prepends the lock lines and APPENDS
2392
- * the canonical role phrases and extras. Folding afterwards would push the
2585
+ * its `Use these characters:` block, hybrid prepends the lock lines and extends
2586
+ * the body's END with the canonical role phrases and extras (spliced in ahead of
2587
+ * the `[style]` section, which stays last). Folding afterwards would push the
2393
2588
  * scene/look description PAST the identity directives, a worse version of the
2394
2589
  * bug this channel exists to fix. The image side is structurally identical
2395
2590
  * (`assembleImageInput` = `composePromptText` → `buildImagePrompt`).
@@ -2401,6 +2596,13 @@ declare function assembleImageInput(input: AssembleImageInput): BuildImagePrompt
2401
2596
  * gets dropped. See {@link VideoPromptCapOptions}. Both catalog channels —
2402
2597
  * SUBJECT and direction — fold into the one sheddable list that budget walks.
2403
2598
  *
2599
+ * THE SHAPE IT EMITS: the body (prose, subject fold, MOTION clauses, structured
2600
+ * fragment) and then a trailing `[style]` section carrying every LOOK clause —
2601
+ * `prompt-style-section.ts` owns those bytes. Camera motion is shot prose, not
2602
+ * style, so the whole motion family stays in the body; the boundary is the
2603
+ * registry's `family` column, deliberately the same column the verbosity policy
2604
+ * below splits on.
2605
+ *
2404
2606
  * THE VERBOSITY POLICY LIVES HERE, NOT IN THE CLIENT: motion dimensions render
2405
2607
  * their compact professional term, look dimensions their full clause
2406
2608
  * (`VIDEO_HINT_MODE_DEFAULT`, resolved per row's `family` by the registry). The
@@ -2426,7 +2628,8 @@ declare function assembleImageInput(input: AssembleImageInput): BuildImagePrompt
2426
2628
  * `subject-registry.ts` for the subject channel) — ONE renderer per channel
2427
2629
  * serves both surfaces, so the image and video folds cannot drift.
2428
2630
  * Clients render their "will inject into prompt" preview by importing
2429
- * `renderDirectionHints` + `joinPromptHints` directly.
2631
+ * `renderSubjectHints` + `partitionStyleClauses` + `composeSectionedPrompt`
2632
+ * directly (or `renderStyleSection` for the section alone).
2430
2633
  */
2431
2634
 
2432
2635
  /**
@@ -2449,9 +2652,10 @@ declare function assembleImageInput(input: AssembleImageInput): BuildImagePrompt
2449
2652
  * module header — folding afterwards strands the scene description past the
2450
2653
  * identity directives). The resolver then ADDS binding text: legacy's
2451
2654
  * "Use these characters:" block, hybrid's lock lines and the canonical role
2452
- * phrases it APPENDS. That added text is exactly what an order-blind tail cut
2453
- * destroys first, so it must be inside the budget — but it must never be
2454
- * shed. Measuring THROUGH the caller's framing gives both properties at once:
2655
+ * phrases that end its body. None of it is sheddable and all of it is inside
2656
+ * what the clamp measures, so a budget blind to it under-sheds and hands the
2657
+ * remainder to the order-blind cut. Measuring THROUGH the caller's framing
2658
+ * gives both properties at once:
2455
2659
  * the shed decision sees the final length, while the only thing it can drop
2456
2660
  * is a hint clause it rendered itself.
2457
2661
  *
@@ -2479,10 +2683,11 @@ interface VideoPromptCapOptions {
2479
2683
  * Fold a video run's subject and cinematic-direction ids (and optional
2480
2684
  * structured fields) into its prompt body.
2481
2685
  *
2482
- * The SUBJECT hints land first (who is in the shot — the noun phrase the
2483
- * cinematography modifies), then the direction hints in the registry's
2484
- * canonical table order (camera motion leads), and the structured fragment
2485
- * lands LAST — the same ordering `composePromptText` uses for stills.
2686
+ * IN THE BODY: the SUBJECT hints first (who is in the shot — the noun phrase the
2687
+ * cinematography modifies), then the MOTION direction hints in the registry's
2688
+ * canonical table order (camera motion leads), then the structured fragment —
2689
+ * the same ordering `composePromptText` uses for stills. The LOOK hints leave
2690
+ * the body for the `[style]` section that follows it.
2486
2691
  *
2487
2692
  * `subject` rides `opts` rather than a fourth positional parameter on purpose:
2488
2693
  * every existing caller passes `(prompt, direction)` or
@@ -2716,6 +2921,11 @@ interface GeminiOmniI2vInputsArgs {
2716
2921
  refImageUrls?: Array<string | undefined>;
2717
2922
  /** A connected source video occupies 2 of the 7 input slots (KIE quota). */
2718
2923
  videoConnected?: boolean;
2924
+ /** The Omni SKU this run targets — defaults to `gemini-omni-video` for
2925
+ * back-compat. Both SKUs cap at 7 today, so passing it is behaviour-neutral;
2926
+ * it stops the flash path from silently reading the pro model's quota if the
2927
+ * two ever diverge. */
2928
+ provider?: string;
2719
2929
  }
2720
2930
  interface GeminiOmniI2vInputsResult {
2721
2931
  /** `[firstFrameUrl, ...keptRefs]` — the `image_urls` payload, quota-fitted. */
@@ -3757,6 +3967,11 @@ interface MultiPickerAnalyzerSpec {
3757
3967
  readonly schema: z.ZodType<Record<string, unknown>, unknown>;
3758
3968
  readonly toolName: string;
3759
3969
  readonly legend: string;
3970
+ /** Compact bullet list of the pickers NOT wired into this spec (PICKER_TYPES
3971
+ * minus `types`), keyed by picker-type key so the LLM can ATTRIBUTE a gap to
3972
+ * the right picker even when it was not wired. Names + dimension labels only,
3973
+ * never catalog ids. Empty string when every picker is already wired. */
3974
+ readonly otherPickersLegend: string;
3760
3975
  }
3761
3976
  /** Build ONE forced-tool schema spanning the given pickers (each section
3762
3977
  * optional so an omitted picker doesn't trigger a validation retry) plus the
@@ -5878,7 +6093,7 @@ declare function getStylingDimensionLimit(dimension: StylingDimension): number;
5878
6093
  interface StylingValue {
5879
6094
  makeup?: string;
5880
6095
  eyewear?: string;
5881
- headwear?: string;
6096
+ headwear?: string | ReadonlyArray<string>;
5882
6097
  /** Hair cut / styling choice — bob, wolf cut, braids, ponytail, etc.
5883
6098
  * Pairs with Person.hair-base (texture + length). */
5884
6099
  hairCut?: string;
@@ -6981,4 +7196,4 @@ declare function getPickerWiring(nodeType: string | undefined | null): PickerWir
6981
7196
  */
6982
7197
  declare function buildSurroundFillPrompt(direction: SurroundDirection, userPrompt?: string): string;
6983
7198
 
6984
- 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 BuildImagePromptOverflowResult, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, type DirectionFamily, type DirectionFieldRow, type DirectionFieldSpec, type DirectionFields, type DirectionHintMode, type DirectionKey, type DirectionSurface, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageDirectionKey, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MAX_SUBJECT_KEYS, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptFieldSpec, type PromptIconKind, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type RefIdTokenContext, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SubjectFieldRow, type SubjectFieldSpec, type SubjectFields, type SubjectGroupFieldSpec, type SubjectHintMode, type SubjectIdsFieldSpec, type SubjectSurface, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VIDEO_HINT_MODE_DEFAULT, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoDirectionKey, type VideoExtraRef, type VideoPromptCapOptions, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, directionFieldsForSurface, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRegisteredSubjectKeys, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDirectionHints, renderStructuredFields, renderSubjectHints, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, subjectFieldsForSurface, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
7199
+ 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 BuildImagePromptOverflowResult, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, type DirectionFamily, type DirectionFieldRow, type DirectionFieldSpec, type DirectionFields, type DirectionHintClause, type DirectionHintMode, type DirectionKey, type DirectionStyleGroup, type DirectionSurface, 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, FILM_STYLE_KEYS, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageDirectionKey, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MAX_SUBJECT_KEYS, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptClauseSlot, type PromptFieldSpec, type PromptIconKind, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type RefIdTokenContext, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SlottedPromptClause, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SubjectFieldRow, type SubjectFieldSpec, type SubjectFields, type SubjectGroupFieldSpec, type SubjectHintMode, type SubjectIdsFieldSpec, type SubjectSurface, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VIDEO_HINT_MODE_DEFAULT, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoDirectionKey, type VideoExtraRef, type VideoPromptCapOptions, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, asBodyClauses, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, directionFieldsForSurface, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRegisteredSubjectKeys, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDirectionHintClauses, renderDirectionHints, renderStructuredFields, renderStyleSection, renderSubjectHints, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, sectionedClauseCosts, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };