@nodaro/prompts 1.12.0 → 1.13.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
@@ -10215,6 +10215,218 @@ function applyTemplate(template, vars) {
10215
10215
  template
10216
10216
  );
10217
10217
  }
10218
+
10219
+ // src/prompt-hint-join.ts
10220
+ var PROMPT_HINT_SEPARATOR = ". ";
10221
+ function joinPromptHints(userPrompt, hints) {
10222
+ if (hints.length === 0) return userPrompt;
10223
+ return [userPrompt.trim(), ...hints].filter((p) => p.length > 0).join(PROMPT_HINT_SEPARATOR);
10224
+ }
10225
+
10226
+ // src/direction-registry.ts
10227
+ var perId = (full, compact) => (ids, mode) => {
10228
+ const out = [];
10229
+ for (const id of ids) {
10230
+ const frag = mode === "compact" ? compact(id) : full(id);
10231
+ if (frag.length > 0) out.push(frag);
10232
+ }
10233
+ return out;
10234
+ };
10235
+ var viaListBuilder = (build) => (ids, mode) => build(ids.length === 1 ? ids[0] : [...ids], mode).filter((s) => s.length > 0);
10236
+ var viaStringBuilder = (build) => (ids, mode) => {
10237
+ const s = build(ids.length === 1 ? ids[0] : [...ids], mode);
10238
+ return s.length > 0 ? [s] : [];
10239
+ };
10240
+ var viaMood = (ids, mode) => buildMoodHints({ mood: ids.length === 1 ? ids[0] : [...ids] }, mode).filter(
10241
+ (s) => s.length > 0
10242
+ );
10243
+ var framing = perId(getFramingPromptHint, getFramingTerm);
10244
+ var lighting = perId(getLightingPromptHint, getLightingTerm);
10245
+ var exposure = perId(getExposurePromptHint, getExposureTerm);
10246
+ var temporal = perId(getTemporalPromptHint, getTemporalTerm);
10247
+ var DIRECTION_FIELDS = [
10248
+ { key: "cameraMotion", surface: "video", family: "motion", maxPicks: 1, render: perId(getCameraMotionPromptHint, getCameraMotionTerm) },
10249
+ // Composition (the Framing catalog, one row per category).
10250
+ { key: "shotSize", surface: "both", family: "look", maxPicks: 1, render: framing },
10251
+ { key: "angle", surface: "both", family: "look", maxPicks: 1, render: framing },
10252
+ { key: "coverage", surface: "both", family: "look", maxPicks: 1, render: framing },
10253
+ { key: "composition", surface: "both", family: "look", maxPicks: 2, render: framing },
10254
+ { key: "vantage", surface: "both", family: "look", maxPicks: 1, render: framing },
10255
+ { key: "pose", surface: "both", family: "look", maxPicks: 1, render: perId(getPosePromptHint, getPoseTerm) },
10256
+ { key: "compositionEffect", surface: "both", family: "look", maxPicks: 1, render: perId(getCompositionEffectPromptHint, getCompositionEffectTerm) },
10257
+ // Camera.
10258
+ { key: "cameraFormat", surface: "both", family: "look", styleGroup: "film", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) },
10259
+ { key: "lens", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
10260
+ // Exposure (stills only — a video's exposure rides its own temporal levers).
10261
+ { key: "aperture", surface: "image", family: "look", maxPicks: 1, render: exposure },
10262
+ { key: "shutterSpeed", surface: "image", family: "look", maxPicks: 1, render: exposure },
10263
+ { key: "isoValue", surface: "image", family: "look", maxPicks: 1, render: exposure },
10264
+ // Light (the Lighting catalog, one row per category).
10265
+ { key: "timeOfDay", surface: "both", family: "look", maxPicks: 1, render: lighting },
10266
+ { key: "lightingStyle", surface: "both", family: "look", maxPicks: 2, render: lighting },
10267
+ { key: "lightingDirection", surface: "both", family: "look", maxPicks: 1, render: lighting },
10268
+ { key: "lightingRatio", surface: "both", family: "look", maxPicks: 1, render: lighting },
10269
+ { key: "colorTemperature", surface: "both", family: "look", maxPicks: 1, render: lighting },
10270
+ { key: "colorLook", surface: "both", family: "look", styleGroup: "film", maxPicks: 1, render: perId(getColorLookPromptHint, getColorLookTerm) },
10271
+ { key: "atmosphere", surface: "both", family: "look", maxPicks: 2, render: viaListBuilder(buildAtmosphereHints) },
10272
+ { key: "postProcess", surface: "image", family: "look", maxPicks: 2, render: viaListBuilder(buildPostProcessHints) },
10273
+ // Style.
10274
+ { key: "style", surface: "both", family: "look", styleGroup: "film", maxPicks: 1, render: perId(getStylePromptHint, getStyleTerm) },
10275
+ { key: "mood", surface: "both", family: "look", maxPicks: 2, render: viaMood },
10276
+ { key: "aesthetic", surface: "both", family: "look", maxPicks: 2, render: viaStringBuilder(buildAestheticHints) },
10277
+ { key: "photoGenre", surface: "image", family: "look", maxPicks: 1, render: perId(getPhotoGenrePromptHint, getPhotoGenreTerm) },
10278
+ { key: "photographer", surface: "image", family: "look", maxPicks: 2, render: viaStringBuilder(buildPhotographerHints) },
10279
+ { key: "renderQuality", surface: "image", family: "look", maxPicks: 1, render: perId(getRenderQualityPromptHint, getRenderQualityTerm) },
10280
+ // Scene.
10281
+ { key: "setting", surface: "both", family: "look", maxPicks: 1, render: perId(getSettingPromptHint, getSettingTerm) },
10282
+ { key: "era", surface: "both", family: "look", styleGroup: "film", maxPicks: 1, render: perId(getEraPromptHint, getEraTerm) },
10283
+ { key: "backdrop", surface: "both", family: "look", maxPicks: 1, render: perId(getBackdropPromptHint, getBackdropTerm) },
10284
+ // Motion & time.
10285
+ { key: "actionFx", surface: "video", family: "motion", maxPicks: 2, render: viaListBuilder(buildActionFxHints) },
10286
+ { key: "temporalSpeed", surface: "video", family: "motion", maxPicks: 1, render: temporal },
10287
+ { key: "temporalFreeze", surface: "video", family: "motion", maxPicks: 1, render: temporal },
10288
+ { key: "temporalDirection", surface: "video", family: "motion", maxPicks: 1, render: temporal },
10289
+ { key: "temporalShutter", surface: "video", family: "motion", maxPicks: 1, render: temporal },
10290
+ { key: "transition", surface: "video", family: "motion", maxPicks: 2, render: perId(getTransitionPromptHint, getTransitionTerm) },
10291
+ { key: "loopSubject", surface: "video", family: "motion", maxPicks: 1, render: perId(getLoopSubjectPromptHint, getLoopSubjectTerm) },
10292
+ // ── LEGACY BLOCK — see the table doc above. Placed LAST, in today's exact
10293
+ // `composePromptText` order, so every pre-registry caller is byte-identical.
10294
+ { key: "framingId", surface: "both", family: "look", maxPicks: 1, render: framing },
10295
+ { key: "framingAngleId", surface: "both", family: "look", maxPicks: 1, render: framing },
10296
+ { key: "lightingId", surface: "both", family: "look", maxPicks: 1, render: lighting },
10297
+ { key: "lensId", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
10298
+ { key: "cameraFormatId", surface: "both", family: "look", styleGroup: "film", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) }
10299
+ ];
10300
+ var DIRECTION_SPECS = DIRECTION_FIELDS;
10301
+ var DIRECTION_KEYS = DIRECTION_FIELDS.map((f) => f.key);
10302
+ var FILM_STYLE_KEYS = DIRECTION_SPECS.filter(
10303
+ (f) => f.styleGroup === "film"
10304
+ ).map((f) => f.key);
10305
+ var IMAGE_HINT_MODE_DEFAULT = "full";
10306
+ var VIDEO_HINT_MODE_DEFAULT = { look: "full", motion: "compact" };
10307
+ function modeForFamily(mode, family) {
10308
+ return typeof mode === "string" ? mode : family === "motion" ? mode.motion : mode.look;
10309
+ }
10310
+ var DIRECTION_ARRAY_CEILING = 8;
10311
+ var DIRECTION_ID_MAX_CHARS = 100;
10312
+ function normalizeDirectionIds(value, maxPicks) {
10313
+ const ids = [];
10314
+ if (typeof value === "string") {
10315
+ if (value) ids.push(value);
10316
+ } else if (Array.isArray(value)) {
10317
+ for (const v of value) {
10318
+ if (ids.length >= maxPicks) break;
10319
+ if (typeof v === "string" && v && !ids.includes(v)) ids.push(v);
10320
+ }
10321
+ }
10322
+ return ids.slice(0, maxPicks);
10323
+ }
10324
+ function directionFieldsForSurface(surface) {
10325
+ return DIRECTION_SPECS.filter((f) => f.surface === "both" || f.surface === surface);
10326
+ }
10327
+ function renderDirectionHintClauses(direction, opts) {
10328
+ if (!direction) return [];
10329
+ const mode = opts.mode ?? "full";
10330
+ const out = [];
10331
+ const seen = /* @__PURE__ */ new Set();
10332
+ for (const spec of DIRECTION_SPECS) {
10333
+ if (spec.surface !== "both" && spec.surface !== opts.surface) continue;
10334
+ const ids = normalizeDirectionIds(
10335
+ direction[spec.key],
10336
+ spec.maxPicks
10337
+ );
10338
+ if (ids.length === 0) continue;
10339
+ for (const hint of spec.render(ids, modeForFamily(mode, spec.family))) {
10340
+ if (hint.length > 0 && !seen.has(hint)) {
10341
+ seen.add(hint);
10342
+ out.push({
10343
+ key: spec.key,
10344
+ family: spec.family,
10345
+ ...spec.styleGroup !== void 0 ? { styleGroup: spec.styleGroup } : {},
10346
+ text: hint
10347
+ });
10348
+ }
10349
+ }
10350
+ }
10351
+ return out;
10352
+ }
10353
+ function renderDirectionHints(direction, opts) {
10354
+ return renderDirectionHintClauses(direction, opts).map((c) => c.text);
10355
+ }
10356
+
10357
+ // src/prompt-style-section.ts
10358
+ var STYLE_SECTION_HEADER = "[style]:";
10359
+ var STYLE_SECTION_GAP = "\n\n";
10360
+ var STYLE_SECTION_OPENING = `${STYLE_SECTION_GAP}${STYLE_SECTION_HEADER}
10361
+ `;
10362
+ function splitStyleSection(prompt) {
10363
+ const at = prompt.lastIndexOf(STYLE_SECTION_OPENING);
10364
+ if (at >= 0) {
10365
+ return { body: prompt.slice(0, at), section: prompt.slice(at + STYLE_SECTION_GAP.length) };
10366
+ }
10367
+ return prompt.startsWith(`${STYLE_SECTION_HEADER}
10368
+ `) ? { body: "", section: prompt } : { body: prompt, section: "" };
10369
+ }
10370
+ function insertBeforeStyleSection(prompt, lines) {
10371
+ if (lines.length === 0) return prompt;
10372
+ const block = lines.join("\n");
10373
+ const { body, section } = splitStyleSection(prompt);
10374
+ if (section.length === 0) return `${prompt}
10375
+ ${block}`;
10376
+ return `${body.length > 0 ? `${body}
10377
+ ${block}` : block}${STYLE_SECTION_GAP}${section}`;
10378
+ }
10379
+ function endsInsideStyleSection(prompt) {
10380
+ const at = prompt.lastIndexOf(STYLE_SECTION_GAP);
10381
+ const lastBlock = at >= 0 ? prompt.slice(at + STYLE_SECTION_GAP.length) : prompt;
10382
+ return lastBlock.startsWith(`${STYLE_SECTION_HEADER}
10383
+ `);
10384
+ }
10385
+ function styleSlotFor(row) {
10386
+ if (row.family === "motion") return "body";
10387
+ return row.styleGroup === "film" ? "film" : "scene";
10388
+ }
10389
+ function asBodyClauses(texts) {
10390
+ return texts.map((text) => ({ text, slot: "body" }));
10391
+ }
10392
+ function partitionStyleClauses(direction, opts) {
10393
+ return renderDirectionHintClauses(direction, opts).map((clause) => ({
10394
+ text: clause.text,
10395
+ slot: styleSlotFor(clause)
10396
+ }));
10397
+ }
10398
+ function styleSectionFromClauses(clauses) {
10399
+ const line = (slot) => clauses.filter((c) => c.slot === slot).map((c) => c.text).join(PROMPT_HINT_SEPARATOR);
10400
+ const lines = [line("film"), line("scene")].filter((l) => l.length > 0);
10401
+ return lines.length === 0 ? "" : `${STYLE_SECTION_HEADER}
10402
+ ${lines.join("\n")}`;
10403
+ }
10404
+ function renderStyleSection(direction, opts) {
10405
+ return styleSectionFromClauses(partitionStyleClauses(direction, opts));
10406
+ }
10407
+ function composeSectionedPrompt(userPrompt, clauses, structuredFragment) {
10408
+ const bodyHints = [
10409
+ ...clauses.filter((c) => c.slot === "body").map((c) => c.text),
10410
+ structuredFragment
10411
+ ].filter((p) => p.length > 0);
10412
+ const section = styleSectionFromClauses(clauses);
10413
+ if (section.length === 0) {
10414
+ return bodyHints.length === 0 ? userPrompt : joinPromptHints(userPrompt ?? "", bodyHints);
10415
+ }
10416
+ const body = bodyHints.length > 0 ? joinPromptHints(userPrompt ?? "", bodyHints) : (userPrompt ?? "").trim();
10417
+ return body.length > 0 ? `${body}${STYLE_SECTION_GAP}${section}` : section;
10418
+ }
10419
+ function sectionedClauseCosts(userPrompt, clauses, structuredFragment) {
10420
+ const lengthAt = (kept) => composeSectionedPrompt(userPrompt, clauses.slice(0, kept), structuredFragment)?.length ?? 0;
10421
+ const costs = [];
10422
+ let below = lengthAt(0);
10423
+ for (let i = 0; i < clauses.length; i++) {
10424
+ const at = lengthAt(i + 1);
10425
+ costs.push(at - below);
10426
+ below = at;
10427
+ }
10428
+ return costs;
10429
+ }
10218
10430
  function composeIdentityDescPart(subject, canonicalDesc, elementInjection) {
10219
10431
  const parts = [];
10220
10432
  const c = canonicalDesc?.trim();
@@ -10904,6 +11116,12 @@ function reconcileBodySegments(body, bodySegments) {
10904
11116
  }
10905
11117
  return [{ text: body, origin: "user" }];
10906
11118
  }
11119
+ function controlSuffixes(body, styleLine, avoidLine) {
11120
+ const separator = (text) => endsInsideStyleSection(text) ? STYLE_SECTION_GAP : "\n";
11121
+ const styleSuffix = styleLine ? `${separator(body)}${styleLine}` : "";
11122
+ const avoidSuffix = avoidLine ? `${separator(body + styleSuffix)}${avoidLine}` : "";
11123
+ return { styleSuffix, avoidSuffix };
11124
+ }
10907
11125
  function buildImagePrompt(config2) {
10908
11126
  return buildImagePromptInternal(config2);
10909
11127
  }
@@ -11180,9 +11398,7 @@ ${promptForNext}`;
11180
11398
  const lockBlock = allLockLines.length > 0 ? `${allLockLines.join("\n")}
11181
11399
 
11182
11400
  ` : "";
11183
- const trailingBlock = trailingLines.length > 0 ? `
11184
- ${trailingLines.join("\n")}` : "";
11185
- promptForNext = `${lockBlock}${promptForNext}${trailingBlock}`;
11401
+ promptForNext = `${lockBlock}${insertBeforeStyleSection(promptForNext, trailingLines)}`;
11186
11402
  }
11187
11403
  config2 = {
11188
11404
  ...config2,
@@ -11230,9 +11446,7 @@ ${trailingLines.join("\n")}` : "";
11230
11446
  ...locCanon.elementDirectives,
11231
11447
  ...objCanon.elementDirectives
11232
11448
  ];
11233
- const canonTrailingBlock = canonTrailingLines.length > 0 ? `
11234
- ${canonTrailingLines.join("\n")}` : "";
11235
- const composedScene = `${canonLockBlock}${scene}${canonTrailingBlock}`;
11449
+ const composedScene = `${canonLockBlock}${insertBeforeStyleSection(scene, canonTrailingLines)}`;
11236
11450
  prompt2 = config2.referenceLockSnippet ? `${config2.referenceLockSnippet}
11237
11451
  ${composedScene}` : composedScene;
11238
11452
  if (marks) marks.directivesPrefix = "";
@@ -11258,29 +11472,29 @@ ${directives}`;
11258
11472
  }
11259
11473
  }
11260
11474
  const styleText2 = style?.trim();
11261
- const styleSuffix2 = styleText2 ? `
11262
- Style: ${getStylePromptHint(styleText2) || styleText2}` : "";
11475
+ const styleLine2 = styleText2 ? `Style: ${getStylePromptHint(styleText2) || styleText2}` : "";
11263
11476
  const negPrompt2 = negativePrompt?.trim();
11264
11477
  let nativeNegativePrompt2;
11265
- let avoidSuffix2 = "";
11478
+ let avoidLine2 = "";
11266
11479
  if (negPrompt2) {
11267
11480
  if (NATIVE_NEGATIVE_PROMPT_MODELS.has(provider)) {
11268
11481
  nativeNegativePrompt2 = negPrompt2.slice(0, getMaxNegativePromptChars(provider));
11269
11482
  } else {
11270
- avoidSuffix2 = `
11271
- Avoid: ${negPrompt2}`;
11483
+ avoidLine2 = `Avoid: ${negPrompt2}`;
11272
11484
  }
11273
11485
  }
11274
- if (marks) {
11275
- marks.styleSuffix = styleSuffix2;
11276
- marks.avoidSuffix = avoidSuffix2;
11277
- }
11278
11486
  const maxLen2 = getMaxImagePromptChars(provider);
11279
- const reserved2 = styleSuffix2.length + avoidSuffix2.length;
11487
+ const preCut2 = controlSuffixes(prompt2, styleLine2, avoidLine2);
11488
+ const reserved2 = preCut2.styleSuffix.length + preCut2.avoidSuffix.length;
11280
11489
  if (prompt2.length + reserved2 > maxLen2) {
11281
11490
  if (marks) marks.overflowChars += prompt2.length + reserved2 - maxLen2;
11282
11491
  prompt2 = prompt2.slice(0, Math.max(0, maxLen2 - reserved2 - 3)) + "...";
11283
11492
  }
11493
+ const { styleSuffix: styleSuffix2, avoidSuffix: avoidSuffix2 } = controlSuffixes(prompt2, styleLine2, avoidLine2);
11494
+ if (marks) {
11495
+ marks.styleSuffix = styleSuffix2;
11496
+ marks.avoidSuffix = avoidSuffix2;
11497
+ }
11284
11498
  if (marks) marks.bodyBeforeSuffixes = prompt2.slice(marks.directivesPrefix.length);
11285
11499
  prompt2 = prompt2 + styleSuffix2 + avoidSuffix2;
11286
11500
  if (prompt2.length > maxLen2) {
@@ -11332,35 +11546,37 @@ Avoid: ${negPrompt2}`;
11332
11546
  let prompt = config2.prompt;
11333
11547
  if (charDescs.length > 0) {
11334
11548
  const wrapperTemplate = resolveTemplate("generate-image-wrapper", userTemplates, flowTemplates);
11335
- prompt = applyTemplate(wrapperTemplate, {
11336
- userPrompt: prompt,
11549
+ const { body, section } = splitStyleSection(prompt);
11550
+ const wrapped = applyTemplate(wrapperTemplate, {
11551
+ userPrompt: body,
11337
11552
  assetDescriptions: charDescs.join(" ")
11338
11553
  });
11554
+ prompt = section.length > 0 ? `${wrapped}${STYLE_SECTION_GAP}${section}` : wrapped;
11339
11555
  }
11340
11556
  const styleText = style?.trim();
11341
- const styleSuffix = styleText ? `
11342
- Style: ${getStylePromptHint(styleText) || styleText}` : "";
11557
+ const styleLine = styleText ? `Style: ${getStylePromptHint(styleText) || styleText}` : "";
11343
11558
  const negPrompt = negativePrompt?.trim();
11344
11559
  let nativeNegativePrompt;
11345
- let avoidSuffix = "";
11560
+ let avoidLine = "";
11346
11561
  if (negPrompt) {
11347
11562
  if (NATIVE_NEGATIVE_PROMPT_MODELS.has(provider)) {
11348
11563
  nativeNegativePrompt = negPrompt.slice(0, getMaxNegativePromptChars(provider));
11349
11564
  } else {
11350
- avoidSuffix = `
11351
- Avoid: ${negPrompt}`;
11565
+ avoidLine = `Avoid: ${negPrompt}`;
11352
11566
  }
11353
11567
  }
11354
- if (marks) {
11355
- marks.styleSuffix = styleSuffix;
11356
- marks.avoidSuffix = avoidSuffix;
11357
- }
11358
11568
  const maxLen = getMaxImagePromptChars(provider);
11359
- const reserved = styleSuffix.length + avoidSuffix.length;
11569
+ const preCut = controlSuffixes(prompt, styleLine, avoidLine);
11570
+ const reserved = preCut.styleSuffix.length + preCut.avoidSuffix.length;
11360
11571
  if (prompt.length + reserved > maxLen) {
11361
11572
  if (marks) marks.overflowChars += prompt.length + reserved - maxLen;
11362
11573
  prompt = prompt.slice(0, Math.max(0, maxLen - reserved - 3)) + "...";
11363
11574
  }
11575
+ const { styleSuffix, avoidSuffix } = controlSuffixes(prompt, styleLine, avoidLine);
11576
+ if (marks) {
11577
+ marks.styleSuffix = styleSuffix;
11578
+ marks.avoidSuffix = avoidSuffix;
11579
+ }
11364
11580
  if (marks) marks.bodyBeforeSuffixes = prompt;
11365
11581
  prompt = prompt + styleSuffix + avoidSuffix;
11366
11582
  if (prompt.length > maxLen) {
@@ -11587,7 +11803,12 @@ function capitalizeLineInitial(line) {
11587
11803
  return line.replace(/[a-zA-Z]/, (c) => c.toUpperCase());
11588
11804
  }
11589
11805
  function buildHybridScene(prompt, refs, finalIndexByUrl) {
11590
- return prompt.split("\n").map((line) => capitalizeLineInitial(expandImageRefTokensHybrid(line, refs, finalIndexByUrl))).join("\n");
11806
+ const lines = prompt.split("\n");
11807
+ const sectionAt = lines.indexOf(STYLE_SECTION_HEADER);
11808
+ return lines.map((line, i) => {
11809
+ const expanded = expandImageRefTokensHybrid(line, refs, finalIndexByUrl);
11810
+ return sectionAt >= 0 && i >= sectionAt ? expanded : capitalizeLineInitial(expanded);
11811
+ }).join("\n");
11591
11812
  }
11592
11813
  function buildIdentityDirectives(prompt, refs, meta3 = [], suppressedCanonicalLocationIds) {
11593
11814
  return collectIdentities(prompt, refs, meta3).map((id) => buildIdentityDirective(id, suppressedCanonicalLocationIds)).filter((s) => s.length > 0).join("\n");
@@ -11805,125 +12026,6 @@ function renderLens(l) {
11805
12026
  if (l.aperture) bits.push(`f/${l.aperture}`);
11806
12027
  return bits.length > 0 ? `Lens: ${bits.join(", ")}.` : "";
11807
12028
  }
11808
-
11809
- // src/direction-registry.ts
11810
- var perId = (full, compact) => (ids, mode) => {
11811
- const out = [];
11812
- for (const id of ids) {
11813
- const frag = mode === "compact" ? compact(id) : full(id);
11814
- if (frag.length > 0) out.push(frag);
11815
- }
11816
- return out;
11817
- };
11818
- var viaListBuilder = (build) => (ids, mode) => build(ids.length === 1 ? ids[0] : [...ids], mode).filter((s) => s.length > 0);
11819
- var viaStringBuilder = (build) => (ids, mode) => {
11820
- const s = build(ids.length === 1 ? ids[0] : [...ids], mode);
11821
- return s.length > 0 ? [s] : [];
11822
- };
11823
- var viaMood = (ids, mode) => buildMoodHints({ mood: ids.length === 1 ? ids[0] : [...ids] }, mode).filter(
11824
- (s) => s.length > 0
11825
- );
11826
- var framing = perId(getFramingPromptHint, getFramingTerm);
11827
- var lighting = perId(getLightingPromptHint, getLightingTerm);
11828
- var exposure = perId(getExposurePromptHint, getExposureTerm);
11829
- var temporal = perId(getTemporalPromptHint, getTemporalTerm);
11830
- var DIRECTION_FIELDS = [
11831
- { key: "cameraMotion", surface: "video", family: "motion", maxPicks: 1, render: perId(getCameraMotionPromptHint, getCameraMotionTerm) },
11832
- // Composition (the Framing catalog, one row per category).
11833
- { key: "shotSize", surface: "both", family: "look", maxPicks: 1, render: framing },
11834
- { key: "angle", surface: "both", family: "look", maxPicks: 1, render: framing },
11835
- { key: "coverage", surface: "both", family: "look", maxPicks: 1, render: framing },
11836
- { key: "composition", surface: "both", family: "look", maxPicks: 2, render: framing },
11837
- { key: "vantage", surface: "both", family: "look", maxPicks: 1, render: framing },
11838
- { key: "pose", surface: "both", family: "look", maxPicks: 1, render: perId(getPosePromptHint, getPoseTerm) },
11839
- { key: "compositionEffect", surface: "both", family: "look", maxPicks: 1, render: perId(getCompositionEffectPromptHint, getCompositionEffectTerm) },
11840
- // Camera.
11841
- { key: "cameraFormat", surface: "both", family: "look", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) },
11842
- { key: "lens", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
11843
- // Exposure (stills only — a video's exposure rides its own temporal levers).
11844
- { key: "aperture", surface: "image", family: "look", maxPicks: 1, render: exposure },
11845
- { key: "shutterSpeed", surface: "image", family: "look", maxPicks: 1, render: exposure },
11846
- { key: "isoValue", surface: "image", family: "look", maxPicks: 1, render: exposure },
11847
- // Light (the Lighting catalog, one row per category).
11848
- { key: "timeOfDay", surface: "both", family: "look", maxPicks: 1, render: lighting },
11849
- { key: "lightingStyle", surface: "both", family: "look", maxPicks: 2, render: lighting },
11850
- { key: "lightingDirection", surface: "both", family: "look", maxPicks: 1, render: lighting },
11851
- { key: "lightingRatio", surface: "both", family: "look", maxPicks: 1, render: lighting },
11852
- { key: "colorTemperature", surface: "both", family: "look", maxPicks: 1, render: lighting },
11853
- { key: "colorLook", surface: "both", family: "look", maxPicks: 1, render: perId(getColorLookPromptHint, getColorLookTerm) },
11854
- { key: "atmosphere", surface: "both", family: "look", maxPicks: 2, render: viaListBuilder(buildAtmosphereHints) },
11855
- { key: "postProcess", surface: "image", family: "look", maxPicks: 2, render: viaListBuilder(buildPostProcessHints) },
11856
- // Style.
11857
- { key: "style", surface: "both", family: "look", maxPicks: 1, render: perId(getStylePromptHint, getStyleTerm) },
11858
- { key: "mood", surface: "both", family: "look", maxPicks: 2, render: viaMood },
11859
- { key: "aesthetic", surface: "both", family: "look", maxPicks: 2, render: viaStringBuilder(buildAestheticHints) },
11860
- { key: "photoGenre", surface: "image", family: "look", maxPicks: 1, render: perId(getPhotoGenrePromptHint, getPhotoGenreTerm) },
11861
- { key: "photographer", surface: "image", family: "look", maxPicks: 2, render: viaStringBuilder(buildPhotographerHints) },
11862
- { key: "renderQuality", surface: "image", family: "look", maxPicks: 1, render: perId(getRenderQualityPromptHint, getRenderQualityTerm) },
11863
- // Scene.
11864
- { key: "setting", surface: "both", family: "look", maxPicks: 1, render: perId(getSettingPromptHint, getSettingTerm) },
11865
- { key: "era", surface: "both", family: "look", maxPicks: 1, render: perId(getEraPromptHint, getEraTerm) },
11866
- { key: "backdrop", surface: "both", family: "look", maxPicks: 1, render: perId(getBackdropPromptHint, getBackdropTerm) },
11867
- // Motion & time.
11868
- { key: "actionFx", surface: "video", family: "motion", maxPicks: 2, render: viaListBuilder(buildActionFxHints) },
11869
- { key: "temporalSpeed", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11870
- { key: "temporalFreeze", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11871
- { key: "temporalDirection", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11872
- { key: "temporalShutter", surface: "video", family: "motion", maxPicks: 1, render: temporal },
11873
- { key: "transition", surface: "video", family: "motion", maxPicks: 2, render: perId(getTransitionPromptHint, getTransitionTerm) },
11874
- { key: "loopSubject", surface: "video", family: "motion", maxPicks: 1, render: perId(getLoopSubjectPromptHint, getLoopSubjectTerm) },
11875
- // ── LEGACY BLOCK — see the table doc above. Placed LAST, in today's exact
11876
- // `composePromptText` order, so every pre-registry caller is byte-identical.
11877
- { key: "framingId", surface: "both", family: "look", maxPicks: 1, render: framing },
11878
- { key: "framingAngleId", surface: "both", family: "look", maxPicks: 1, render: framing },
11879
- { key: "lightingId", surface: "both", family: "look", maxPicks: 1, render: lighting },
11880
- { key: "lensId", surface: "both", family: "look", maxPicks: 1, render: perId(getLensPromptHint, getLensTerm) },
11881
- { key: "cameraFormatId", surface: "both", family: "look", maxPicks: 1, render: perId(getCameraFormatPromptHint, getCameraFormatTerm) }
11882
- ];
11883
- var DIRECTION_KEYS = DIRECTION_FIELDS.map((f) => f.key);
11884
- var IMAGE_HINT_MODE_DEFAULT = "full";
11885
- var VIDEO_HINT_MODE_DEFAULT = { look: "full", motion: "compact" };
11886
- function modeForFamily(mode, family) {
11887
- return typeof mode === "string" ? mode : family === "motion" ? mode.motion : mode.look;
11888
- }
11889
- var DIRECTION_ARRAY_CEILING = 8;
11890
- var DIRECTION_ID_MAX_CHARS = 100;
11891
- function normalizeDirectionIds(value, maxPicks) {
11892
- const ids = [];
11893
- if (typeof value === "string") {
11894
- if (value) ids.push(value);
11895
- } else if (Array.isArray(value)) {
11896
- for (const v of value) {
11897
- if (ids.length >= maxPicks) break;
11898
- if (typeof v === "string" && v && !ids.includes(v)) ids.push(v);
11899
- }
11900
- }
11901
- return ids.slice(0, maxPicks);
11902
- }
11903
- function directionFieldsForSurface(surface) {
11904
- return DIRECTION_FIELDS.filter((f) => f.surface === "both" || f.surface === surface);
11905
- }
11906
- function renderDirectionHints(direction, opts) {
11907
- if (!direction) return [];
11908
- const mode = opts.mode ?? "full";
11909
- const out = [];
11910
- const seen = /* @__PURE__ */ new Set();
11911
- for (const spec of DIRECTION_FIELDS) {
11912
- if (spec.surface !== "both" && spec.surface !== opts.surface) continue;
11913
- const ids = normalizeDirectionIds(
11914
- direction[spec.key],
11915
- spec.maxPicks
11916
- );
11917
- if (ids.length === 0) continue;
11918
- for (const hint of spec.render(ids, modeForFamily(mode, spec.family))) {
11919
- if (hint.length > 0 && !seen.has(hint)) {
11920
- seen.add(hint);
11921
- out.push(hint);
11922
- }
11923
- }
11924
- }
11925
- return out;
11926
- }
11927
12029
  var viaFragmentBuilder = (build) => (subject, mode) => {
11928
12030
  const clause = build(subject, mode).filter((s) => s.length > 0).join(", ");
11929
12031
  return clause.length > 0 ? [clause] : [];
@@ -12048,20 +12150,13 @@ function renderSubjectHints(subject, opts) {
12048
12150
  return out;
12049
12151
  }
12050
12152
 
12051
- // src/prompt-hint-join.ts
12052
- var PROMPT_HINT_SEPARATOR = ". ";
12053
- function joinPromptHints(userPrompt, hints) {
12054
- if (hints.length === 0) return userPrompt;
12055
- return [userPrompt.trim(), ...hints].filter((p) => p.length > 0).join(PROMPT_HINT_SEPARATOR);
12056
- }
12057
-
12058
12153
  // src/hint-shedding.ts
12059
- function keepableDirectionHints(hintClauses, kept, deficit) {
12154
+ function keepableDirectionHints(hintClauses, kept, deficit, clauseCosts) {
12060
12155
  let remaining = deficit;
12061
12156
  let next = kept;
12062
12157
  while (next > 0 && remaining > 0) {
12063
12158
  next -= 1;
12064
- remaining -= hintClauses[next].length + PROMPT_HINT_SEPARATOR.length;
12159
+ remaining -= clauseCosts?.[next] ?? hintClauses[next].length + PROMPT_HINT_SEPARATOR.length;
12065
12160
  }
12066
12161
  return next;
12067
12162
  }
@@ -12415,9 +12510,7 @@ function resolveVideoReferenceCore(args) {
12415
12510
  const lockBlock = lockLines.length > 0 ? `${lockLines.join("\n")}
12416
12511
 
12417
12512
  ` : "";
12418
- const trailingBlock = trailingLines.length > 0 ? `
12419
- ${trailingLines.join("\n")}` : "";
12420
- finalPrompt = `${lockBlock}${finalPrompt}${trailingBlock}`;
12513
+ finalPrompt = `${lockBlock}${insertBeforeStyleSection(finalPrompt, trailingLines)}`;
12421
12514
  } else {
12422
12515
  const allFallbackLines = [...fallbackDirectiveLines, ...extraDirectiveLines];
12423
12516
  if (allFallbackLines.length > 0) {
@@ -12654,24 +12747,26 @@ function assembleSunoInput(input) {
12654
12747
  function renderImageHintPieces(subject, direction, structured) {
12655
12748
  return {
12656
12749
  hintClauses: [
12657
- ...renderSubjectHints(subject, {
12658
- surface: "image",
12659
- mode: SUBJECT_IMAGE_HINT_MODE_DEFAULT
12660
- }),
12661
- ...renderDirectionHints(direction, {
12750
+ ...asBodyClauses(
12751
+ renderSubjectHints(subject, {
12752
+ surface: "image",
12753
+ mode: SUBJECT_IMAGE_HINT_MODE_DEFAULT
12754
+ })
12755
+ ),
12756
+ ...partitionStyleClauses(direction, {
12662
12757
  surface: "image",
12663
12758
  mode: IMAGE_HINT_MODE_DEFAULT
12664
12759
  })
12665
- ].filter((p) => p.length > 0),
12760
+ ].filter((c) => c.text.length > 0),
12666
12761
  structuredFragment: structured ? renderStructuredFields(structured) : ""
12667
12762
  };
12668
12763
  }
12669
12764
  function composePromptText(userPrompt, pieces, keptHintClauses) {
12670
- const hints = [
12671
- ...pieces.hintClauses.slice(0, keptHintClauses),
12765
+ return composeSectionedPrompt(
12766
+ userPrompt,
12767
+ pieces.hintClauses.slice(0, keptHintClauses),
12672
12768
  pieces.structuredFragment
12673
- ].filter((p) => p.length > 0);
12674
- return joinPromptHints(userPrompt, hints);
12769
+ );
12675
12770
  }
12676
12771
  function assembleImageInput(input) {
12677
12772
  const pieces = renderImageHintPieces(input.subject, input.direction, input.structured);
@@ -12701,9 +12796,17 @@ function assembleImageInput(input) {
12701
12796
  });
12702
12797
  let kept = pieces.hintClauses.length;
12703
12798
  let fitted = assembleWith(kept);
12704
- while (fitted.overflowChars > 0 && kept > 0) {
12705
- kept = keepableDirectionHints(pieces.hintClauses, kept, fitted.overflowChars);
12706
- fitted = assembleWith(kept);
12799
+ if (fitted.overflowChars > 0) {
12800
+ const costs = sectionedClauseCosts(
12801
+ input.userPrompt,
12802
+ pieces.hintClauses,
12803
+ pieces.structuredFragment
12804
+ );
12805
+ const texts = pieces.hintClauses.map((c) => c.text);
12806
+ while (fitted.overflowChars > 0 && kept > 0) {
12807
+ kept = keepableDirectionHints(texts, kept, fitted.overflowChars, costs);
12808
+ fitted = assembleWith(kept);
12809
+ }
12707
12810
  }
12708
12811
  const { overflowChars, ...result } = fitted;
12709
12812
  if (input.throwOnEmpty && !result.prompt.trim()) {
@@ -12717,31 +12820,30 @@ function assembleImageInput(input) {
12717
12820
  // src/assemble-video-input.ts
12718
12821
  function composeVideoPromptText(userPrompt, direction, structured, opts) {
12719
12822
  const hintClauses = [
12720
- ...renderSubjectHints(opts?.subject, {
12721
- surface: "video",
12722
- mode: opts?.subjectHintMode ?? SUBJECT_VIDEO_HINT_MODE_DEFAULT
12723
- }),
12724
- ...renderDirectionHints(direction, {
12823
+ ...asBodyClauses(
12824
+ renderSubjectHints(opts?.subject, {
12825
+ surface: "video",
12826
+ mode: opts?.subjectHintMode ?? SUBJECT_VIDEO_HINT_MODE_DEFAULT
12827
+ })
12828
+ ),
12829
+ ...partitionStyleClauses(direction, {
12725
12830
  surface: "video",
12726
12831
  mode: opts?.hintMode ?? VIDEO_HINT_MODE_DEFAULT
12727
12832
  })
12728
- ].filter((p) => p.length > 0);
12833
+ ].filter((c) => c.text.length > 0);
12729
12834
  const structuredFragment = structured ? renderStructuredFields(structured) : "";
12730
- const composeWith = (kept2) => {
12731
- const hints = [...hintClauses.slice(0, kept2), structuredFragment].filter(
12732
- (p) => p.length > 0
12733
- );
12734
- if (hints.length === 0) return userPrompt;
12735
- return joinPromptHints(userPrompt ?? "", hints);
12736
- };
12835
+ const composeWith = (kept2) => composeSectionedPrompt(userPrompt, hintClauses.slice(0, kept2), structuredFragment);
12737
12836
  const cap = opts?.cap;
12738
12837
  if (cap === void 0) return composeWith(hintClauses.length);
12739
12838
  const frame = opts?.frame ?? ((body2) => body2);
12740
12839
  let kept = hintClauses.length;
12741
12840
  let body = composeWith(kept);
12742
12841
  let framedLength = frame(body)?.length ?? 0;
12842
+ if (framedLength <= cap) return body;
12843
+ const costs = sectionedClauseCosts(userPrompt, hintClauses, structuredFragment);
12844
+ const texts = hintClauses.map((c) => c.text);
12743
12845
  while (framedLength > cap && kept > 0) {
12744
- kept = keepableDirectionHints(hintClauses, kept, framedLength - cap);
12846
+ kept = keepableDirectionHints(texts, kept, framedLength - cap, costs);
12745
12847
  body = composeWith(kept);
12746
12848
  framedLength = frame(body)?.length ?? 0;
12747
12849
  }
@@ -34059,6 +34161,6 @@ function buildSurroundFillPrompt(direction, userPrompt) {
34059
34161
  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.`;
34060
34162
  }
34061
34163
 
34062
- 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, 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, 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, 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, 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, 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 };
34164
+ 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, FILM_STYLE_KEYS, 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, 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, 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, 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, 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, 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 };
34063
34165
  //# sourceMappingURL=index.js.map
34064
34166
  //# sourceMappingURL=index.js.map