@nodaro/prompts 1.10.0 → 1.11.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.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, VIDEO_REF_LIMITS_BY_PROVIDER, SOCIAL_POST_NODE_TYPES, FURNITURE, WEAPONS, VEHICLES, ANIMALS, PASSTHROUGH_TYPES, registerCatalogSidecars, resetCatalogSidecars, pickIds, getFurniture, getWeapon, getVehicle, getAnimal, DEFAULT_USAGE_MODE, usageModeDirective, DEFAULT_LOCATION_USAGE_MODE, imageReferenceLimit, findCharacterMentionTokens, findLocationMentionTokens, NATIVE_NEGATIVE_PROMPT_MODELS, getMaxNegativePromptChars, getMaxImagePromptChars, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, roleToPhrase, resolveDefaultRole, SEEDANCE_2_REF_LIMITS, NON_EN_LOCALE_IDS, readPromptAffixes, setRegisteredPersonPackFields, PLACEHOLDER_CHARACTER_NAME, REFERENCE_ROLE_PRESETS, normalizeRoleSlug, defaultRoleForSource, locationReferencePhotoKindLabel, resolveNodeRefs } from '@nodaro/shared';
1
+ import { ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, VIDEO_REF_LIMITS_BY_PROVIDER, SOCIAL_POST_NODE_TYPES, FURNITURE, WEAPONS, VEHICLES, ANIMALS, PASSTHROUGH_TYPES, registerCatalogSidecars, resetCatalogSidecars, pickIds, getFurniture, getWeapon, getVehicle, getAnimal, DEFAULT_USAGE_MODE, usageModeDirective, DEFAULT_LOCATION_USAGE_MODE, imageReferenceLimit, knownImageSlugsFromRefs, findImageMentionTokens, findCharacterMentionTokens, findLocationMentionTokens, NATIVE_NEGATIVE_PROMPT_MODELS, getMaxNegativePromptChars, getMaxImagePromptChars, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, roleToPhrase, resolveDefaultRole, SEEDANCE_2_REF_LIMITS, NON_EN_LOCALE_IDS, readPromptAffixes, setRegisteredPersonPackFields, PLACEHOLDER_CHARACTER_NAME, REFERENCE_ROLE_PRESETS, normalizeRoleSlug, imageMentionSlugForRef, defaultRoleForSource, locationReferencePhotoKindLabel, resolveNodeRefs } from '@nodaro/shared';
2
2
 
3
3
  var __defProp = Object.defineProperty;
4
4
  var __export = (target, all) => {
@@ -10475,6 +10475,55 @@ function resolveLocationMentionsHybrid(prompt, tokens, refs, existingUrls) {
10475
10475
  }
10476
10476
  return { prompt: resolvedPrompt, additionalUrls, mentionedLocationSlugs, lockLines, elementDirectives };
10477
10477
  }
10478
+ function resolveImageMentionsHybrid(prompt, tokens, refs, existingUrls) {
10479
+ const bySlug = /* @__PURE__ */ new Map();
10480
+ for (const r of refs) {
10481
+ const slug = imageMentionSlugForRef(r);
10482
+ if (!slug) continue;
10483
+ if (!bySlug.has(slug)) bySlug.set(slug, r);
10484
+ }
10485
+ const additionalUrls = [];
10486
+ const refByUrl = /* @__PURE__ */ new Map();
10487
+ const lockOverrideByUrl = /* @__PURE__ */ new Map();
10488
+ const matched = [];
10489
+ for (const t of tokens) {
10490
+ const match = bySlug.get(t.imageSlug);
10491
+ if (!match || !match.url) continue;
10492
+ additionalUrls.push(match.url);
10493
+ refByUrl.set(match.url, match);
10494
+ if (t.lock !== void 0) lockOverrideByUrl.set(match.url, t.lock);
10495
+ const role = (t.role ?? "").trim() || resolveDefaultRole(match.defaultRole, match.defaultUsageMode, match.source);
10496
+ matched.push({ token: t.token, offset: t.offset, url: match.url, role });
10497
+ }
10498
+ const slotByUrl = /* @__PURE__ */ new Map();
10499
+ for (const u of [...existingUrls, ...additionalUrls]) {
10500
+ if (!slotByUrl.has(u)) slotByUrl.set(u, slotByUrl.size + 1);
10501
+ }
10502
+ const bindingFor = (url2) => {
10503
+ const slot = slotByUrl.get(url2);
10504
+ return slot ? `reference image ${slotToLetter(slot)}` : "the reference image";
10505
+ };
10506
+ let resolvedPrompt = prompt;
10507
+ for (const m of [...matched].sort((a, b) => b.offset - a.offset)) {
10508
+ const phrase = roleToPhrase(m.role, bindingFor(m.url));
10509
+ resolvedPrompt = resolvedPrompt.slice(0, m.offset) + phrase + resolvedPrompt.slice(m.offset + m.token.length);
10510
+ }
10511
+ const lockLines = [];
10512
+ const elementDirectives = [];
10513
+ const seenUrls = /* @__PURE__ */ new Set();
10514
+ for (const m of matched) {
10515
+ if (seenUrls.has(m.url)) continue;
10516
+ seenUrls.add(m.url);
10517
+ const ref = refByUrl.get(m.url);
10518
+ if (!ref) continue;
10519
+ const binding = bindingFor(m.url);
10520
+ const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
10521
+ if (lock) lockLines.push(lock);
10522
+ const inject = ref.elementInjection?.trim();
10523
+ if (inject) elementDirectives.push(inject);
10524
+ }
10525
+ return { prompt: resolvedPrompt, additionalUrls, lockLines, elementDirectives };
10526
+ }
10478
10527
  function buildCanonicalFallback(refs, mentionedSlugs, startIndex) {
10479
10528
  const directiveLines = [];
10480
10529
  const urls = [];
@@ -10857,7 +10906,9 @@ function buildImagePromptInternal(config2, marks) {
10857
10906
  connectedReferences.map((r) => r.locationSlug).filter((s) => typeof s === "string" && s.length > 0)
10858
10907
  )
10859
10908
  );
10860
- if (knownCharacterSlugs.length > 0 || hasExtraRefs || knownLocationSlugs.length > 0) {
10909
+ const knownImageSlugs = knownImageSlugsFromRefs(connectedReferences);
10910
+ const hasImageMentionTokens = isHybrid && knownImageSlugs.length > 0 && findImageMentionTokens(config2.prompt, knownImageSlugs).length > 0;
10911
+ if (knownCharacterSlugs.length > 0 || hasExtraRefs || knownLocationSlugs.length > 0 || hasImageMentionTokens) {
10861
10912
  const mentionTokens = knownCharacterSlugs.length > 0 ? findCharacterMentionTokens(config2.prompt, knownCharacterSlugs) : [];
10862
10913
  let hybridLockLines = [];
10863
10914
  let hybridElementDirectives = [];
@@ -10911,6 +10962,24 @@ function buildImagePromptInternal(config2, marks) {
10911
10962
  if (r.locationVariantBucket) return false;
10912
10963
  return !mentionedLocationSlugs.has(r.locationSlug);
10913
10964
  });
10965
+ let hybridImageLockLines = [];
10966
+ let hybridImageElementDirectives = [];
10967
+ if (hasImageMentionTokens) {
10968
+ const imageTokens = findImageMentionTokens(resolved.prompt, knownImageSlugs);
10969
+ if (imageTokens.length > 0) {
10970
+ const hi = resolveImageMentionsHybrid(
10971
+ resolved.prompt,
10972
+ imageTokens,
10973
+ connectedReferences,
10974
+ [...referenceImageUrls || [], ...resolved.additionalUrls]
10975
+ );
10976
+ resolved.prompt = hi.prompt;
10977
+ resolved.additionalUrls = [...resolved.additionalUrls, ...hi.additionalUrls];
10978
+ hybridImageLockLines = hi.lockLines;
10979
+ hybridImageElementDirectives = hi.elementDirectives;
10980
+ if (hi.additionalUrls.length > 0) hybridBodyConverged = true;
10981
+ }
10982
+ }
10914
10983
  const prefixDedupedLength = [
10915
10984
  ...referenceImageUrls || [],
10916
10985
  ...resolved.additionalUrls
@@ -10991,12 +11060,14 @@ ${promptForNext}`;
10991
11060
  const allLockLines = [.../* @__PURE__ */ new Set([
10992
11061
  ...hybridLockLines,
10993
11062
  ...hybridLocationLockLines,
11063
+ ...hybridImageLockLines,
10994
11064
  ...canonical.lockLines,
10995
11065
  ...extrasRendered.lockLines
10996
11066
  ])];
10997
11067
  const trailingLines = [
10998
11068
  ...hybridElementDirectives,
10999
11069
  ...hybridLocationElementDirectives,
11070
+ ...hybridImageElementDirectives,
11000
11071
  ...canonical.phrases,
11001
11072
  ...canonical.elementDirectives,
11002
11073
  ...extrasRendered.bodyLines,
@@ -11620,6 +11691,132 @@ function renderLens(l) {
11620
11691
  return bits.length > 0 ? `Lens: ${bits.join(", ")}.` : "";
11621
11692
  }
11622
11693
 
11694
+ // src/direction-registry.ts
11695
+ var perId = (full, compact) => (ids, mode) => {
11696
+ const out = [];
11697
+ for (const id of ids) {
11698
+ const frag = mode === "compact" ? compact(id) : full(id);
11699
+ if (frag.length > 0) out.push(frag);
11700
+ }
11701
+ return out;
11702
+ };
11703
+ var viaListBuilder = (build) => (ids, mode) => build(ids.length === 1 ? ids[0] : [...ids], mode).filter((s) => s.length > 0);
11704
+ var viaStringBuilder = (build) => (ids, mode) => {
11705
+ const s = build(ids.length === 1 ? ids[0] : [...ids], mode);
11706
+ return s.length > 0 ? [s] : [];
11707
+ };
11708
+ var viaMood = (ids, mode) => buildMoodHints({ mood: ids.length === 1 ? ids[0] : [...ids] }, mode).filter(
11709
+ (s) => s.length > 0
11710
+ );
11711
+ var framing = perId(getFramingPromptHint, getFramingTerm);
11712
+ var lighting = perId(getLightingPromptHint, getLightingTerm);
11713
+ var exposure = perId(getExposurePromptHint, getExposureTerm);
11714
+ var temporal = perId(getTemporalPromptHint, getTemporalTerm);
11715
+ var DIRECTION_FIELDS = [
11716
+ { key: "cameraMotion", surface: "video", family: "motion", maxPicks: 1, render: perId(getCameraMotionPromptHint, getCameraMotionTerm) },
11717
+ // Composition (the Framing catalog, one row per category).
11718
+ { key: "shotSize", surface: "both", family: "look", maxPicks: 1, render: framing },
11719
+ { key: "angle", surface: "both", family: "look", maxPicks: 1, render: framing },
11720
+ { key: "coverage", surface: "both", family: "look", maxPicks: 1, render: framing },
11721
+ { key: "composition", surface: "both", family: "look", maxPicks: 2, render: framing },
11722
+ { key: "vantage", surface: "both", family: "look", maxPicks: 1, render: framing },
11723
+ { key: "pose", surface: "both", family: "look", maxPicks: 1, render: perId(getPosePromptHint, getPoseTerm) },
11724
+ { key: "compositionEffect", surface: "both", family: "look", maxPicks: 1, render: perId(getCompositionEffectPromptHint, getCompositionEffectTerm) },
11725
+ // Camera.
11726
+ { key: "cameraFormat", surface: "both", family: "look", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) },
11727
+ { key: "lens", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
11728
+ // Exposure (stills only — a video's exposure rides its own temporal levers).
11729
+ { key: "aperture", surface: "image", family: "look", maxPicks: 1, render: exposure },
11730
+ { key: "shutterSpeed", surface: "image", family: "look", maxPicks: 1, render: exposure },
11731
+ { key: "isoValue", surface: "image", family: "look", maxPicks: 1, render: exposure },
11732
+ // Light (the Lighting catalog, one row per category).
11733
+ { key: "timeOfDay", surface: "both", family: "look", maxPicks: 1, render: lighting },
11734
+ { key: "lightingStyle", surface: "both", family: "look", maxPicks: 2, render: lighting },
11735
+ { key: "lightingDirection", surface: "both", family: "look", maxPicks: 1, render: lighting },
11736
+ { key: "lightingRatio", surface: "both", family: "look", maxPicks: 1, render: lighting },
11737
+ { key: "colorTemperature", surface: "both", family: "look", maxPicks: 1, render: lighting },
11738
+ { key: "colorLook", surface: "both", family: "look", maxPicks: 1, render: perId(getColorLookPromptHint, getColorLookTerm) },
11739
+ { key: "atmosphere", surface: "both", family: "look", maxPicks: 2, render: viaListBuilder(buildAtmosphereHints) },
11740
+ { key: "postProcess", surface: "image", family: "look", maxPicks: 2, render: viaListBuilder(buildPostProcessHints) },
11741
+ // Style.
11742
+ { key: "style", surface: "both", family: "look", maxPicks: 1, render: perId(getStylePromptHint, getStyleTerm) },
11743
+ { key: "mood", surface: "both", family: "look", maxPicks: 2, render: viaMood },
11744
+ { key: "aesthetic", surface: "both", family: "look", maxPicks: 2, render: viaStringBuilder(buildAestheticHints) },
11745
+ { key: "photoGenre", surface: "image", family: "look", maxPicks: 1, render: perId(getPhotoGenrePromptHint, getPhotoGenreTerm) },
11746
+ { key: "photographer", surface: "image", family: "look", maxPicks: 2, render: viaStringBuilder(buildPhotographerHints) },
11747
+ { key: "renderQuality", surface: "image", family: "look", maxPicks: 1, render: perId(getRenderQualityPromptHint, getRenderQualityTerm) },
11748
+ // Scene.
11749
+ { key: "setting", surface: "both", family: "look", maxPicks: 1, render: perId(getSettingPromptHint, getSettingTerm) },
11750
+ { key: "era", surface: "both", family: "look", maxPicks: 1, render: perId(getEraPromptHint, getEraTerm) },
11751
+ { key: "backdrop", surface: "both", family: "look", maxPicks: 1, render: perId(getBackdropPromptHint, getBackdropTerm) },
11752
+ // Motion & time.
11753
+ { key: "actionFx", surface: "video", family: "motion", maxPicks: 2, render: viaListBuilder(buildActionFxHints) },
11754
+ { key: "temporalSpeed", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11755
+ { key: "temporalFreeze", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11756
+ { key: "temporalDirection", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11757
+ { key: "temporalShutter", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11758
+ { key: "transition", surface: "video", family: "motion", maxPicks: 2, render: perId(getTransitionPromptHint, getTransitionTerm) },
11759
+ { key: "loopSubject", surface: "video", family: "motion", maxPicks: 1, render: perId(getLoopSubjectPromptHint, getLoopSubjectTerm) },
11760
+ // ── LEGACY BLOCK — see the table doc above. Placed LAST, in today's exact
11761
+ // `composePromptText` order, so every pre-registry caller is byte-identical.
11762
+ { key: "framingId", surface: "both", family: "look", maxPicks: 1, render: framing },
11763
+ { key: "framingAngleId", surface: "both", family: "look", maxPicks: 1, render: framing },
11764
+ { key: "lightingId", surface: "both", family: "look", maxPicks: 1, render: lighting },
11765
+ { key: "lensId", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
11766
+ { key: "cameraFormatId", surface: "both", family: "look", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) }
11767
+ ];
11768
+ var DIRECTION_KEYS = DIRECTION_FIELDS.map((f) => f.key);
11769
+ var IMAGE_HINT_MODE_DEFAULT = "full";
11770
+ var VIDEO_HINT_MODE_DEFAULT = { look: "full", motion: "compact" };
11771
+ function modeForFamily(mode, family) {
11772
+ return typeof mode === "string" ? mode : family === "motion" ? mode.motion : mode.look;
11773
+ }
11774
+ var DIRECTION_ARRAY_CEILING = 8;
11775
+ var DIRECTION_ID_MAX_CHARS = 100;
11776
+ function normalizeDirectionIds(value, maxPicks) {
11777
+ const ids = [];
11778
+ if (typeof value === "string") {
11779
+ if (value) ids.push(value);
11780
+ } else if (Array.isArray(value)) {
11781
+ for (const v of value) {
11782
+ if (ids.length >= maxPicks) break;
11783
+ if (typeof v === "string" && v && !ids.includes(v)) ids.push(v);
11784
+ }
11785
+ }
11786
+ return ids.slice(0, maxPicks);
11787
+ }
11788
+ function directionFieldsForSurface(surface) {
11789
+ return DIRECTION_FIELDS.filter((f) => f.surface === "both" || f.surface === surface);
11790
+ }
11791
+ function renderDirectionHints(direction, opts) {
11792
+ if (!direction) return [];
11793
+ const mode = opts.mode ?? "full";
11794
+ const out = [];
11795
+ const seen = /* @__PURE__ */ new Set();
11796
+ for (const spec of DIRECTION_FIELDS) {
11797
+ if (spec.surface !== "both" && spec.surface !== opts.surface) continue;
11798
+ const ids = normalizeDirectionIds(
11799
+ direction[spec.key],
11800
+ spec.maxPicks
11801
+ );
11802
+ if (ids.length === 0) continue;
11803
+ for (const hint of spec.render(ids, modeForFamily(mode, spec.family))) {
11804
+ if (hint.length > 0 && !seen.has(hint)) {
11805
+ seen.add(hint);
11806
+ out.push(hint);
11807
+ }
11808
+ }
11809
+ }
11810
+ return out;
11811
+ }
11812
+
11813
+ // src/prompt-hint-join.ts
11814
+ var PROMPT_HINT_SEPARATOR = ". ";
11815
+ function joinPromptHints(userPrompt, hints) {
11816
+ if (hints.length === 0) return userPrompt;
11817
+ return [userPrompt.trim(), ...hints].filter((p) => p.length > 0).join(PROMPT_HINT_SEPARATOR);
11818
+ }
11819
+
11623
11820
  // src/ref-binding.ts
11624
11821
  function identityRefsSentence(firstOrdinal, lastOrdinal) {
11625
11822
  return firstOrdinal === lastOrdinal ? `${REF_BINDING.ordinal(firstOrdinal)} is an identity reference for this shot's subjects \u2014 match its subject's exact appearance; it is not a frame.` : `${REF_BINDING.ordinal(firstOrdinal)} through ${REF_BINDING.ordinal(lastOrdinal)} are identity references for this shot's subjects \u2014 match each subject's exact appearance; they are not frames.`;
@@ -12207,15 +12404,10 @@ function assembleSunoInput(input) {
12207
12404
  // src/assemble-image-input.ts
12208
12405
  function composePromptText(userPrompt, direction, structured) {
12209
12406
  const hints = [
12210
- getFramingPromptHint(direction?.framingId),
12211
- getFramingPromptHint(direction?.framingAngleId),
12212
- getLightingPromptHint(direction?.lightingId),
12213
- getLensPromptHint(direction?.lensId),
12214
- getCameraFormatPromptHint(direction?.cameraFormatId),
12407
+ ...renderDirectionHints(direction, { surface: "image", mode: IMAGE_HINT_MODE_DEFAULT }),
12215
12408
  structured ? renderStructuredFields(structured) : ""
12216
12409
  ].filter((p) => p.length > 0);
12217
- if (hints.length === 0) return userPrompt;
12218
- return [userPrompt.trim(), ...hints].filter((p) => p.length > 0).join(". ");
12410
+ return joinPromptHints(userPrompt, hints);
12219
12411
  }
12220
12412
  function assembleImageInput(input) {
12221
12413
  const prompt = composePromptText(input.userPrompt, input.direction, input.structured);
@@ -12250,6 +12442,106 @@ function assembleImageInput(input) {
12250
12442
  }
12251
12443
  return result;
12252
12444
  }
12445
+
12446
+ // src/assemble-video-input.ts
12447
+ function composeVideoPromptText(userPrompt, direction, structured, opts) {
12448
+ const hints = [
12449
+ ...renderDirectionHints(direction, {
12450
+ surface: "video",
12451
+ mode: opts?.hintMode ?? VIDEO_HINT_MODE_DEFAULT
12452
+ }),
12453
+ structured ? renderStructuredFields(structured) : ""
12454
+ ].filter((p) => p.length > 0);
12455
+ if (hints.length === 0) return userPrompt;
12456
+ return joinPromptHints(userPrompt ?? "", hints);
12457
+ }
12458
+
12459
+ // src/read-node-direction.ts
12460
+ function readDirectionFields(value) {
12461
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
12462
+ const src = value;
12463
+ const out = {};
12464
+ for (const spec of DIRECTION_FIELDS) {
12465
+ const v = src[spec.key];
12466
+ if (typeof v === "string") {
12467
+ if (v.length > 0 && v.length <= DIRECTION_ID_MAX_CHARS) out[spec.key] = v;
12468
+ } else if (Array.isArray(v)) {
12469
+ const kept = [];
12470
+ for (const x of v) {
12471
+ if (kept.length >= DIRECTION_ARRAY_CEILING) break;
12472
+ if (typeof x === "string" && x.length > 0 && x.length <= DIRECTION_ID_MAX_CHARS) {
12473
+ kept.push(x);
12474
+ }
12475
+ }
12476
+ if (kept.length > 0) out[spec.key] = kept;
12477
+ }
12478
+ }
12479
+ return Object.keys(out).length > 0 ? out : void 0;
12480
+ }
12481
+ var GENDERS = ["man", "woman", "child", "non-binary"];
12482
+ var MAX_STRUCTURED_VALUE_CHARS = 200;
12483
+ var PERSON_FIELDS2 = {
12484
+ age: "number",
12485
+ gender: "gender",
12486
+ hair: "string",
12487
+ eyes: "string",
12488
+ expression: "string",
12489
+ profession: "string",
12490
+ warriorType: "string"
12491
+ };
12492
+ var STYLING_FIELDS2 = {
12493
+ mood: "string",
12494
+ lighting: "string",
12495
+ aesthetic: "string",
12496
+ colorLook: "string"
12497
+ };
12498
+ var SETTING_FIELDS = {
12499
+ era: "string",
12500
+ atmosphere: "string",
12501
+ backdrop: "string"
12502
+ };
12503
+ var CAMERA_FIELDS = {
12504
+ framing: "string",
12505
+ motion: "string",
12506
+ format: "string"
12507
+ };
12508
+ var LENS_FIELDS = { focalLength: "string", aperture: "string" };
12509
+ var STRUCTURED_GROUPS = {
12510
+ person: PERSON_FIELDS2,
12511
+ styling: STYLING_FIELDS2,
12512
+ setting: SETTING_FIELDS,
12513
+ camera: CAMERA_FIELDS,
12514
+ lens: LENS_FIELDS
12515
+ };
12516
+ function readField(v, kind) {
12517
+ if (kind === "number") return typeof v === "number" && Number.isFinite(v) ? v : void 0;
12518
+ if (typeof v !== "string" || v.length === 0 || v.length > MAX_STRUCTURED_VALUE_CHARS) {
12519
+ return void 0;
12520
+ }
12521
+ if (kind === "gender") return GENDERS.includes(v) ? v : void 0;
12522
+ return v;
12523
+ }
12524
+ function readStructuredFields(value) {
12525
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
12526
+ const src = value;
12527
+ const out = {};
12528
+ for (const group of Object.keys(STRUCTURED_GROUPS)) {
12529
+ const raw = src[group];
12530
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) continue;
12531
+ const rawRec = raw;
12532
+ const kept = {};
12533
+ for (const [field, kind] of Object.entries(
12534
+ STRUCTURED_GROUPS[group]
12535
+ )) {
12536
+ const v = readField(rawRec[field], kind);
12537
+ if (v !== void 0) kept[field] = v;
12538
+ }
12539
+ if (Object.keys(kept).length > 0) out[group] = kept;
12540
+ }
12541
+ const mood = readField(src.mood, "string");
12542
+ if (mood !== void 0) out.mood = mood;
12543
+ return Object.keys(out).length > 0 ? out : void 0;
12544
+ }
12253
12545
  var clean = (u) => {
12254
12546
  const t = u?.trim();
12255
12547
  return t && t.length > 0 ? t : void 0;
@@ -33266,8 +33558,8 @@ var SINGLE_PICKER_WIRING = [
33266
33558
  { kind: "single", nodeType: "furniture", label: "Furniture", valueField: "furniture", defaultValue: "sofa", catalogId: "furniture", entries: mapCat(FURNITURE, "subcategory"), groupOrder: FURNITURE_SUBCATEGORY_ORDER, groupLabels: FURNITURE_SUBCATEGORY_LABELS },
33267
33559
  { kind: "single", nodeType: "held-prop", label: "Held Prop", valueField: "heldProp", defaultValue: "smartphone", catalogId: "held-prop", entries: mapCat(HELD_PROPS, "category"), groupOrder: HELD_PROP_CATEGORY_ORDER, groupLabels: HELD_PROP_CATEGORY_LABELS }
33268
33560
  ];
33269
- var STYLING_FIELDS2 = STYLING_DIMENSION_ORDER.map((d) => STYLING_FIELD_BY_DIMENSION[d]);
33270
- var PERSON_FIELDS2 = PERSON_DIMENSION_ORDER.map((d) => PERSON_FIELD_BY_DIMENSION[d]);
33561
+ var STYLING_FIELDS3 = STYLING_DIMENSION_ORDER.map((d) => STYLING_FIELD_BY_DIMENSION[d]);
33562
+ var PERSON_FIELDS3 = PERSON_DIMENSION_ORDER.map((d) => PERSON_FIELD_BY_DIMENSION[d]);
33271
33563
  var LIGHTING_FIELDS2 = LIGHTING_CATEGORY_ORDER.map((c) => LIGHTING_FIELD_BY_CATEGORY[c]);
33272
33564
  var TEMPORAL_FIELD_BY_CATEGORY2 = {
33273
33565
  speed: "temporalSpeed",
@@ -33303,7 +33595,7 @@ var MULTI_PICKER_WIRING = [
33303
33595
  kind: "multi",
33304
33596
  nodeType: "person",
33305
33597
  label: "Person",
33306
- fields: PERSON_FIELDS2,
33598
+ fields: PERSON_FIELDS3,
33307
33599
  catalogId: "person",
33308
33600
  catalogEntries: flatCat(PEOPLE),
33309
33601
  fieldOptions: optionsByDiscriminator(PEOPLE, (e) => e.dimension, PERSON_FIELD_BY_DIMENSION)
@@ -33312,7 +33604,7 @@ var MULTI_PICKER_WIRING = [
33312
33604
  kind: "multi",
33313
33605
  nodeType: "styling",
33314
33606
  label: "Styling",
33315
- fields: STYLING_FIELDS2,
33607
+ fields: STYLING_FIELDS3,
33316
33608
  catalogId: "styling",
33317
33609
  catalogEntries: flatCat(STYLINGS),
33318
33610
  fieldOptions: optionsByDiscriminator(STYLINGS, (e) => e.dimension, STYLING_FIELD_BY_DIMENSION)
@@ -33450,6 +33742,6 @@ function buildSurroundFillPrompt(direction, userPrompt) {
33450
33742
  return `${scene}This is a partial frame: the ${carried} portion contains real, finished pixels and the ${painted} portion is flat gray that MUST be painted in. Paint ONLY the ${painted} gray region as a natural, seamless continuation of the ${carried} portion \u2014 same scene, same perspective, continuing the horizon, geometry, and content across the boundary with no break. Keep the ${carried} portion completely unchanged. CRITICAL: do NOT change the lighting, exposure, white balance, or time of day. Match the ${carried} portion's EXACT light, color temperature, and contrast across the whole frame \u2014 if it is flat overcast daylight, keep flat overcast daylight. No golden hour, no sunset, no warm relight, no cinematic regrade. The seam between the ${carried} and ${painted} portions must be invisible. No people, no text, no labels, no watermarks.`;
33451
33743
  }
33452
33744
 
33453
- 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, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, 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, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GAPS_SCHEMA, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, 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, 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, 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, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, 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, 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, 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, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptParts, listPickerCatalogs, migratePersonValue, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
33745
+ 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, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, 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, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GAPS_SCHEMA, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, 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, 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, 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, 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, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, 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, 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, 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, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, 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, 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, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDirectionHints, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
33454
33746
  //# sourceMappingURL=index.js.map
33455
33747
  //# sourceMappingURL=index.js.map