@nodaro/prompts 1.16.0 → 1.17.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.cjs +179 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +121 -2
- package/dist/index.d.ts +121 -2
- package/dist/index.js +176 -50
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/assemble-image-input.test.ts +30 -0
- package/src/__tests__/described-references-video.test.ts +250 -0
- package/src/__tests__/described-references.test.ts +595 -0
- package/src/assemble-image-input.ts +11 -1
- package/src/described-references.ts +138 -0
- package/src/index.ts +1 -0
- package/src/prompt-builder.ts +196 -19
- package/src/video-reference-resolver.ts +85 -10
package/dist/index.js
CHANGED
|
@@ -10342,32 +10342,6 @@ function resolveBrandInput(brand) {
|
|
|
10342
10342
|
return brand;
|
|
10343
10343
|
}
|
|
10344
10344
|
|
|
10345
|
-
// src/prompt-templates.ts
|
|
10346
|
-
var DEFAULT_TEMPLATES = {
|
|
10347
|
-
"character-description": "Include character '{name}': {description}.",
|
|
10348
|
-
"object-description": "Include object '{name}': {description}.",
|
|
10349
|
-
"location-description": "Include location '{name}': {description}.",
|
|
10350
|
-
"face-description": "Include the exact face and facial features of '{name}' from the reference image. Maintain perfect likeness and facial identity.",
|
|
10351
|
-
// `-generation` templates drive standalone entity generation routes
|
|
10352
|
-
// (`/v1/generate-character`, `/v1/generate-face`, etc.). Duplicated between
|
|
10353
|
-
// frontend and backend historically; consolidated here so the backend DAG
|
|
10354
|
-
// orchestrator produces the same prompt as a single-node HTTP call.
|
|
10355
|
-
"character-generation": "Create a full-body character portrait: {description}. Style: {style}. Gender: {gender}. High quality, detailed, consistent lighting, neutral background.",
|
|
10356
|
-
"object-generation": "Create a product photo of: {description}. Category: {category}. Clean background, professional studio lighting, high detail.",
|
|
10357
|
-
"location-generation": "Create a cinematic scene of: {description}. Category: {category}. Atmospheric lighting, high detail, wide angle.",
|
|
10358
|
-
"face-generation": "Create a professional close-up face portrait headshot: {description}. Style: {style}. Looking directly at camera, sharp focus on facial features, clean background, studio lighting, high resolution. Maintain exact facial identity and features from the reference image.",
|
|
10359
|
-
"generate-image-wrapper": "{userPrompt}\n{assetDescriptions}"
|
|
10360
|
-
};
|
|
10361
|
-
function resolveTemplate(key, userTemplates, flowTemplates) {
|
|
10362
|
-
return flowTemplates?.[key] ?? userTemplates?.[key] ?? DEFAULT_TEMPLATES[key] ?? "";
|
|
10363
|
-
}
|
|
10364
|
-
function applyTemplate(template, vars) {
|
|
10365
|
-
return Object.entries(vars).reduce(
|
|
10366
|
-
(result, [key, value]) => result.replaceAll(`{${key}}`, value || ""),
|
|
10367
|
-
template
|
|
10368
|
-
);
|
|
10369
|
-
}
|
|
10370
|
-
|
|
10371
10345
|
// src/prompt-hint-join.ts
|
|
10372
10346
|
var PROMPT_HINT_SEPARATOR = ". ";
|
|
10373
10347
|
function joinPromptHints(userPrompt, hints) {
|
|
@@ -10579,6 +10553,87 @@ function sectionedClauseCosts(userPrompt, clauses, structuredFragment) {
|
|
|
10579
10553
|
}
|
|
10580
10554
|
return costs;
|
|
10581
10555
|
}
|
|
10556
|
+
|
|
10557
|
+
// src/described-references.ts
|
|
10558
|
+
var CHARACTER_BLOCK_HEADER = "Use these characters:";
|
|
10559
|
+
function referenceDescriptionLine(subject, description) {
|
|
10560
|
+
const s = subject.trim();
|
|
10561
|
+
const d = description?.trim();
|
|
10562
|
+
if (!s || !d) return "";
|
|
10563
|
+
return `${s} \u2014 ${d}.`;
|
|
10564
|
+
}
|
|
10565
|
+
function renderDescribedReferenceLines(refs) {
|
|
10566
|
+
if (!refs || refs.length === 0) return [];
|
|
10567
|
+
const lines = [];
|
|
10568
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10569
|
+
for (const r of refs) {
|
|
10570
|
+
const key = r.name?.trim().toLowerCase();
|
|
10571
|
+
if (!key || seen.has(key)) continue;
|
|
10572
|
+
const line = referenceDescriptionLine(r.name, r.description);
|
|
10573
|
+
if (!line) continue;
|
|
10574
|
+
seen.add(key);
|
|
10575
|
+
lines.push(line);
|
|
10576
|
+
}
|
|
10577
|
+
return lines;
|
|
10578
|
+
}
|
|
10579
|
+
function renderReferenceCaptionLines(videoCaptions, audioCaptions, counts) {
|
|
10580
|
+
const lines = [];
|
|
10581
|
+
const render = (captions, kind, cap) => {
|
|
10582
|
+
if (!captions) return;
|
|
10583
|
+
for (let i = 0; i < captions.length && i < cap; i++) {
|
|
10584
|
+
const text = captions[i]?.trim();
|
|
10585
|
+
if (!text) continue;
|
|
10586
|
+
lines.push(`@${kind}_${i + 1}: ${text}.`);
|
|
10587
|
+
}
|
|
10588
|
+
};
|
|
10589
|
+
render(videoCaptions, "video", counts.video);
|
|
10590
|
+
render(audioCaptions, "audio", counts.audio);
|
|
10591
|
+
return lines;
|
|
10592
|
+
}
|
|
10593
|
+
function appendReferenceLines(prompt, lines, format) {
|
|
10594
|
+
if (lines.length === 0) return prompt;
|
|
10595
|
+
if (format === "hybrid") return insertBeforeStyleSection(prompt, lines);
|
|
10596
|
+
const bullets = lines.map((l) => `- ${l}`).join("\n");
|
|
10597
|
+
if (prompt.startsWith(`${CHARACTER_BLOCK_HEADER}
|
|
10598
|
+
`)) {
|
|
10599
|
+
const splitIdx = prompt.indexOf("\n\n");
|
|
10600
|
+
if (splitIdx === -1) return `${prompt}
|
|
10601
|
+
${bullets}`;
|
|
10602
|
+
return `${prompt.slice(0, splitIdx)}
|
|
10603
|
+
${bullets}${prompt.slice(splitIdx)}`;
|
|
10604
|
+
}
|
|
10605
|
+
const block = `${CHARACTER_BLOCK_HEADER}
|
|
10606
|
+
${bullets}`;
|
|
10607
|
+
return prompt ? `${block}
|
|
10608
|
+
|
|
10609
|
+
${prompt}` : block;
|
|
10610
|
+
}
|
|
10611
|
+
|
|
10612
|
+
// src/prompt-templates.ts
|
|
10613
|
+
var DEFAULT_TEMPLATES = {
|
|
10614
|
+
"character-description": "Include character '{name}': {description}.",
|
|
10615
|
+
"object-description": "Include object '{name}': {description}.",
|
|
10616
|
+
"location-description": "Include location '{name}': {description}.",
|
|
10617
|
+
"face-description": "Include the exact face and facial features of '{name}' from the reference image. Maintain perfect likeness and facial identity.",
|
|
10618
|
+
// `-generation` templates drive standalone entity generation routes
|
|
10619
|
+
// (`/v1/generate-character`, `/v1/generate-face`, etc.). Duplicated between
|
|
10620
|
+
// frontend and backend historically; consolidated here so the backend DAG
|
|
10621
|
+
// orchestrator produces the same prompt as a single-node HTTP call.
|
|
10622
|
+
"character-generation": "Create a full-body character portrait: {description}. Style: {style}. Gender: {gender}. High quality, detailed, consistent lighting, neutral background.",
|
|
10623
|
+
"object-generation": "Create a product photo of: {description}. Category: {category}. Clean background, professional studio lighting, high detail.",
|
|
10624
|
+
"location-generation": "Create a cinematic scene of: {description}. Category: {category}. Atmospheric lighting, high detail, wide angle.",
|
|
10625
|
+
"face-generation": "Create a professional close-up face portrait headshot: {description}. Style: {style}. Looking directly at camera, sharp focus on facial features, clean background, studio lighting, high resolution. Maintain exact facial identity and features from the reference image.",
|
|
10626
|
+
"generate-image-wrapper": "{userPrompt}\n{assetDescriptions}"
|
|
10627
|
+
};
|
|
10628
|
+
function resolveTemplate(key, userTemplates, flowTemplates) {
|
|
10629
|
+
return flowTemplates?.[key] ?? userTemplates?.[key] ?? DEFAULT_TEMPLATES[key] ?? "";
|
|
10630
|
+
}
|
|
10631
|
+
function applyTemplate(template, vars) {
|
|
10632
|
+
return Object.entries(vars).reduce(
|
|
10633
|
+
(result, [key, value]) => result.replaceAll(`{${key}}`, value || ""),
|
|
10634
|
+
template
|
|
10635
|
+
);
|
|
10636
|
+
}
|
|
10582
10637
|
function composeIdentityDescPart(subject, canonicalDesc, elementInjection) {
|
|
10583
10638
|
const parts = [];
|
|
10584
10639
|
const c = canonicalDesc?.trim();
|
|
@@ -10587,6 +10642,10 @@ function composeIdentityDescPart(subject, canonicalDesc, elementInjection) {
|
|
|
10587
10642
|
if (e) parts.push(e);
|
|
10588
10643
|
return parts.length > 0 ? `${subject} \u2014 ${parts.join(". ")}` : subject;
|
|
10589
10644
|
}
|
|
10645
|
+
function pushOverrideDirective(out, ref, binding) {
|
|
10646
|
+
const line = referenceDescriptionLine(binding, ref.descriptionOverride);
|
|
10647
|
+
if (line) out.push(line);
|
|
10648
|
+
}
|
|
10590
10649
|
function resolveCharacterMentions(prompt, tokens, refs) {
|
|
10591
10650
|
const bySlug = /* @__PURE__ */ new Map();
|
|
10592
10651
|
const byVariant = /* @__PURE__ */ new Map();
|
|
@@ -10627,7 +10686,7 @@ function resolveCharacterMentions(prompt, tokens, refs) {
|
|
|
10627
10686
|
const includeCanonicalDesc = effectiveMode === "identical" || effectiveMode === "face-pose";
|
|
10628
10687
|
const descPart = composeIdentityDescPart(
|
|
10629
10688
|
subject,
|
|
10630
|
-
includeCanonicalDesc ? match.characterCanonicalDescription : void 0,
|
|
10689
|
+
match.descriptionOverride?.trim() || (includeCanonicalDesc ? match.characterCanonicalDescription : void 0),
|
|
10631
10690
|
match.elementInjection
|
|
10632
10691
|
);
|
|
10633
10692
|
directiveLines.push(`- ${descPart}.${directive ? ` ${directive}` : ""}`);
|
|
@@ -10705,6 +10764,7 @@ function resolveCharacterMentionsHybrid(prompt, tokens, refs, existingUrls) {
|
|
|
10705
10764
|
const binding = bindingFor(m.url);
|
|
10706
10765
|
const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
|
|
10707
10766
|
if (lock) lockLines.push(lock);
|
|
10767
|
+
pushOverrideDirective(elementDirectives, ref, binding);
|
|
10708
10768
|
const inject = ref.elementInjection?.trim();
|
|
10709
10769
|
if (inject) elementDirectives.push(inject);
|
|
10710
10770
|
}
|
|
@@ -10778,7 +10838,8 @@ function resolveLocationMentions(prompt, tokens, refs) {
|
|
|
10778
10838
|
const subject = `Image ${t.imageIndex} (${displayName})`;
|
|
10779
10839
|
const includeCanonicalDesc = effectiveMode === "identical";
|
|
10780
10840
|
const canonicalDesc = match.locationCanonicalDescription?.trim();
|
|
10781
|
-
const
|
|
10841
|
+
const shownDesc = match.descriptionOverride?.trim() || (includeCanonicalDesc ? canonicalDesc : void 0);
|
|
10842
|
+
const descPart = shownDesc ? `${subject} \u2014 ${shownDesc}` : subject;
|
|
10782
10843
|
directiveLines.push(`- ${descPart}.${directive ? ` ${directive}` : ""}`);
|
|
10783
10844
|
if (t.bucket && t.variant && match.locationVariantDisplayName && match.locationVariantDisplayName !== "canonical") {
|
|
10784
10845
|
directiveLines.push(` (in this image: ${match.locationVariantDisplayName})`);
|
|
@@ -10846,6 +10907,7 @@ function resolveLocationMentionsHybrid(prompt, tokens, refs, existingUrls) {
|
|
|
10846
10907
|
const binding = bindingFor(m.url);
|
|
10847
10908
|
const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
|
|
10848
10909
|
if (lock) lockLines.push(lock);
|
|
10910
|
+
pushOverrideDirective(elementDirectives, ref, binding);
|
|
10849
10911
|
const inject = ref.elementInjection?.trim();
|
|
10850
10912
|
if (inject) elementDirectives.push(inject);
|
|
10851
10913
|
}
|
|
@@ -10895,10 +10957,11 @@ function resolveImageMentionsHybrid(prompt, tokens, refs, existingUrls) {
|
|
|
10895
10957
|
const binding = bindingFor(m.url);
|
|
10896
10958
|
const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
|
|
10897
10959
|
if (lock) lockLines.push(lock);
|
|
10960
|
+
pushOverrideDirective(elementDirectives, ref, binding);
|
|
10898
10961
|
const inject = ref.elementInjection?.trim();
|
|
10899
10962
|
if (inject) elementDirectives.push(inject);
|
|
10900
10963
|
}
|
|
10901
|
-
return { prompt: resolvedPrompt, additionalUrls, lockLines, elementDirectives };
|
|
10964
|
+
return { prompt: resolvedPrompt, additionalUrls, mentionedUrls: seenUrls, lockLines, elementDirectives };
|
|
10902
10965
|
}
|
|
10903
10966
|
function resolveEntityMentionsHybrid(prompt, tokens, refs, existingUrls) {
|
|
10904
10967
|
const bySlug = /* @__PURE__ */ new Map();
|
|
@@ -10949,6 +11012,7 @@ function resolveEntityMentionsHybrid(prompt, tokens, refs, existingUrls) {
|
|
|
10949
11012
|
const binding = bindingFor(m.url);
|
|
10950
11013
|
const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
|
|
10951
11014
|
if (lock) lockLines.push(lock);
|
|
11015
|
+
pushOverrideDirective(elementDirectives, ref, binding);
|
|
10952
11016
|
const inject = ref.elementInjection?.trim();
|
|
10953
11017
|
if (inject) elementDirectives.push(inject);
|
|
10954
11018
|
}
|
|
@@ -10984,7 +11048,7 @@ function buildCanonicalFallback(refs, mentionedSlugs, startIndex) {
|
|
|
10984
11048
|
const subject = `Image ${cursor} (${displayName})`;
|
|
10985
11049
|
const descPart = composeIdentityDescPart(
|
|
10986
11050
|
subject,
|
|
10987
|
-
includeCanonicalDesc ? r.characterCanonicalDescription : void 0,
|
|
11051
|
+
r.descriptionOverride?.trim() || (includeCanonicalDesc ? r.characterCanonicalDescription : void 0),
|
|
10988
11052
|
r.elementInjection
|
|
10989
11053
|
);
|
|
10990
11054
|
directiveLines.push(`- ${descPart}.${directive ? ` ${directive}` : ""}`);
|
|
@@ -11000,7 +11064,7 @@ function buildExtraRefDirectives(refs, emittedCharacterPositions, startIndex) {
|
|
|
11000
11064
|
for (const r of refs) {
|
|
11001
11065
|
if (!r.isExtraRef) continue;
|
|
11002
11066
|
if (!r.url) continue;
|
|
11003
|
-
const description = (r.description ?? r.variantDescription ?? "").trim();
|
|
11067
|
+
const description = (r.descriptionOverride ?? "").trim() || (r.description ?? r.variantDescription ?? "").trim();
|
|
11004
11068
|
if (r.source === "wired-character" && r.characterSlug) {
|
|
11005
11069
|
const effectiveMode = r.defaultUsageMode ?? DEFAULT_USAGE_MODE;
|
|
11006
11070
|
const earlierPos = positionsByChar.get(r.characterSlug);
|
|
@@ -11064,6 +11128,7 @@ function renderCanonicalFallbackHybrid(refs, letterForUrl) {
|
|
|
11064
11128
|
phrases.push(roleToPhrase(resolveDefaultRole(r.defaultRole, r.defaultUsageMode, r.source), binding));
|
|
11065
11129
|
const lock = buildIdentityLockLine(r, binding);
|
|
11066
11130
|
if (lock) lockLines.push(lock);
|
|
11131
|
+
pushOverrideDirective(elementDirectives, r, binding);
|
|
11067
11132
|
const inject = r.elementInjection?.trim();
|
|
11068
11133
|
if (inject) elementDirectives.push(inject);
|
|
11069
11134
|
}
|
|
@@ -11078,7 +11143,7 @@ function renderExtraRefsHybrid(extraRefs, letterForUrl, seedLetterByChar) {
|
|
|
11078
11143
|
if (!r.url) continue;
|
|
11079
11144
|
const letter = letterForUrl(r.url);
|
|
11080
11145
|
const binding = `reference image ${letter}`;
|
|
11081
|
-
const description = (r.description ?? r.variantDescription ?? "").trim();
|
|
11146
|
+
const description = (r.descriptionOverride ?? "").trim() || (r.description ?? r.variantDescription ?? "").trim();
|
|
11082
11147
|
if (r.source === "wired-character" && r.characterSlug) {
|
|
11083
11148
|
const earlier = firstLetterByChar.get(r.characterSlug);
|
|
11084
11149
|
if (earlier !== void 0 && earlier !== letter) {
|
|
@@ -11115,10 +11180,11 @@ function renderLocationCanonicalHybrid(nonCharacterRefs, finalIndexByUrl, covere
|
|
|
11115
11180
|
phrases.push(roleToPhrase(resolveLocationRole(null, null, r), binding));
|
|
11116
11181
|
const lock = buildIdentityLockLine(r, binding);
|
|
11117
11182
|
if (lock) lockLines.push(lock);
|
|
11183
|
+
pushOverrideDirective(elementDirectives, r, binding);
|
|
11118
11184
|
const inject = r.elementInjection?.trim();
|
|
11119
11185
|
if (inject) elementDirectives.push(inject);
|
|
11120
11186
|
}
|
|
11121
|
-
return { phrases, lockLines, elementDirectives };
|
|
11187
|
+
return { phrases, lockLines, elementDirectives, renderedUrls: seenUrls };
|
|
11122
11188
|
}
|
|
11123
11189
|
function renderObjectCreatureCanonicalHybrid(nonCharacterRefs, finalIndexByUrl, coveredUrls) {
|
|
11124
11190
|
const phrases = [];
|
|
@@ -11135,10 +11201,24 @@ function renderObjectCreatureCanonicalHybrid(nonCharacterRefs, finalIndexByUrl,
|
|
|
11135
11201
|
phrases.push(roleToPhrase(defaultRoleForSource(r.source), binding));
|
|
11136
11202
|
const lock = buildIdentityLockLine(r, binding);
|
|
11137
11203
|
if (lock) lockLines.push(lock);
|
|
11204
|
+
pushOverrideDirective(elementDirectives, r, binding);
|
|
11138
11205
|
const inject = r.elementInjection?.trim();
|
|
11139
11206
|
if (inject) elementDirectives.push(inject);
|
|
11140
11207
|
}
|
|
11141
|
-
return { phrases, lockLines, elementDirectives };
|
|
11208
|
+
return { phrases, lockLines, elementDirectives, renderedUrls: seenUrls };
|
|
11209
|
+
}
|
|
11210
|
+
function renderUntoldOverridesHybrid(nonCharacterRefs, finalIndexByUrl, toldUrls) {
|
|
11211
|
+
const lines = [];
|
|
11212
|
+
const sweptUrls = /* @__PURE__ */ new Set();
|
|
11213
|
+
for (const r of nonCharacterRefs) {
|
|
11214
|
+
if (!r.url || toldUrls.has(r.url) || sweptUrls.has(r.url)) continue;
|
|
11215
|
+
const slot = finalIndexByUrl.get(r.url);
|
|
11216
|
+
if (!slot) continue;
|
|
11217
|
+
const before = lines.length;
|
|
11218
|
+
pushOverrideDirective(lines, r, `reference image ${slotToLetter(slot)}`);
|
|
11219
|
+
if (lines.length > before) sweptUrls.add(r.url);
|
|
11220
|
+
}
|
|
11221
|
+
return lines;
|
|
11142
11222
|
}
|
|
11143
11223
|
function buildTileIdForUrl(urls, refs, prompt, sourceNodeIdById) {
|
|
11144
11224
|
const knownSlugs = Array.from(
|
|
@@ -11311,8 +11391,10 @@ function buildImagePromptInternal(config2, marks) {
|
|
|
11311
11391
|
);
|
|
11312
11392
|
const suppressedCanonicalLocationIds = config2.suppressedCanonicalLocationIds ?? [];
|
|
11313
11393
|
const isHybrid = config2.referenceFormat === "hybrid";
|
|
11394
|
+
const describedLines = renderDescribedReferenceLines(config2.describedReferences);
|
|
11314
11395
|
let hybridBodyConverged = false;
|
|
11315
11396
|
const mentionedEntityUrls = /* @__PURE__ */ new Set();
|
|
11397
|
+
const mentionedImageUrls = /* @__PURE__ */ new Set();
|
|
11316
11398
|
if (config2.skipCharacterMentions) {
|
|
11317
11399
|
config2 = {
|
|
11318
11400
|
...config2,
|
|
@@ -11430,6 +11512,7 @@ function buildImagePromptInternal(config2, marks) {
|
|
|
11430
11512
|
resolved.additionalUrls = [...resolved.additionalUrls, ...hi.additionalUrls];
|
|
11431
11513
|
hybridImageLockLines = hi.lockLines;
|
|
11432
11514
|
hybridImageElementDirectives = hi.elementDirectives;
|
|
11515
|
+
for (const u of hi.mentionedUrls) mentionedImageUrls.add(u);
|
|
11433
11516
|
if (hi.additionalUrls.length > 0) hybridBodyConverged = true;
|
|
11434
11517
|
}
|
|
11435
11518
|
}
|
|
@@ -11560,9 +11643,13 @@ ${promptForNext}`;
|
|
|
11560
11643
|
referenceImageUrls = config2.referenceImageUrls || [];
|
|
11561
11644
|
}
|
|
11562
11645
|
}
|
|
11563
|
-
if (connectedReferences) {
|
|
11646
|
+
if (connectedReferences || describedLines.length > 0) {
|
|
11647
|
+
const structuredRefs = connectedReferences ?? [];
|
|
11564
11648
|
let prompt2 = config2.prompt;
|
|
11565
|
-
|
|
11649
|
+
if (!isHybrid && describedLines.length > 0) {
|
|
11650
|
+
prompt2 = appendReferenceLines(prompt2, describedLines, "legacy");
|
|
11651
|
+
}
|
|
11652
|
+
const nonCharacterRefs = structuredRefs.filter(
|
|
11566
11653
|
(r) => r.source !== "wired-character" && r.isExtraRef !== true
|
|
11567
11654
|
);
|
|
11568
11655
|
const nonCharacterUrls = nonCharacterRefs.map((r) => r.url).filter((u) => Boolean(u));
|
|
@@ -11592,11 +11679,23 @@ ${promptForNext}`;
|
|
|
11592
11679
|
const canonLockBlock = canonLockLines.length > 0 ? `${canonLockLines.join("\n")}
|
|
11593
11680
|
|
|
11594
11681
|
` : "";
|
|
11682
|
+
const toldOverrideUrls = /* @__PURE__ */ new Set([
|
|
11683
|
+
...locCanon.renderedUrls,
|
|
11684
|
+
...objCanon.renderedUrls,
|
|
11685
|
+
...mentionedEntityUrls,
|
|
11686
|
+
...mentionedImageUrls
|
|
11687
|
+
]);
|
|
11688
|
+
const untoldOverrides = renderUntoldOverridesHybrid(
|
|
11689
|
+
nonCharacterRefs,
|
|
11690
|
+
finalIndexByUrl,
|
|
11691
|
+
toldOverrideUrls
|
|
11692
|
+
);
|
|
11595
11693
|
const canonTrailingLines = [
|
|
11596
11694
|
...locCanon.phrases,
|
|
11597
11695
|
...objCanon.phrases,
|
|
11598
11696
|
...locCanon.elementDirectives,
|
|
11599
|
-
...objCanon.elementDirectives
|
|
11697
|
+
...objCanon.elementDirectives,
|
|
11698
|
+
...untoldOverrides
|
|
11600
11699
|
];
|
|
11601
11700
|
const composedScene = `${canonLockBlock}${insertBeforeStyleSection(scene, canonTrailingLines)}`;
|
|
11602
11701
|
prompt2 = config2.referenceLockSnippet ? `${config2.referenceLockSnippet}
|
|
@@ -11623,6 +11722,9 @@ ${directives}`;
|
|
|
11623
11722
|
}
|
|
11624
11723
|
}
|
|
11625
11724
|
}
|
|
11725
|
+
if (isHybrid && describedLines.length > 0) {
|
|
11726
|
+
prompt2 = appendReferenceLines(prompt2, describedLines, "hybrid");
|
|
11727
|
+
}
|
|
11626
11728
|
const styleText2 = style?.trim();
|
|
11627
11729
|
const styleLine2 = styleText2 && !isDeniedStyleId(styleText2) ? `Style: ${getStylePromptHint(styleText2) || styleText2}` : "";
|
|
11628
11730
|
const negPrompt2 = negativePrompt?.trim();
|
|
@@ -11663,7 +11765,7 @@ ${directives}`;
|
|
|
11663
11765
|
const reordered = applyReferenceOrder(
|
|
11664
11766
|
assembledUrls,
|
|
11665
11767
|
prompt2,
|
|
11666
|
-
|
|
11768
|
+
structuredRefs,
|
|
11667
11769
|
referenceOrder,
|
|
11668
11770
|
sourceNodeIdById
|
|
11669
11771
|
);
|
|
@@ -11788,7 +11890,10 @@ function collectIdentities(prompt, refs, meta3) {
|
|
|
11788
11890
|
label,
|
|
11789
11891
|
fidelity: m?.fidelity ?? defaultFidelityForSource(ref?.source),
|
|
11790
11892
|
customText: m?.customText?.trim() || void 0,
|
|
11791
|
-
|
|
11893
|
+
// Per-use override ahead of the ref's own description; the directive
|
|
11894
|
+
// builder's location-canonical fallback only fires when BOTH are absent,
|
|
11895
|
+
// so an override outranks the stored location wording too.
|
|
11896
|
+
description: ref?.descriptionOverride?.trim() || ref?.description,
|
|
11792
11897
|
source: ref?.source,
|
|
11793
11898
|
locationCanonicalDescription: ref?.locationCanonicalDescription,
|
|
11794
11899
|
locationSlug: ref?.locationSlug,
|
|
@@ -11896,7 +12001,7 @@ function buildNonCharacterDirectives(prompt, nonCharacterRefs, identityMeta, fin
|
|
|
11896
12001
|
// wired-object falls through to the strict "match exactly" verb.
|
|
11897
12002
|
label: ref.source === "wired-location" ? "location" : ref.source === "wired-creature" ? "creature" : "object",
|
|
11898
12003
|
fidelity: defaultFidelityForSource(ref.source),
|
|
11899
|
-
description: ref.description?.trim() || void 0,
|
|
12004
|
+
description: ref.descriptionOverride?.trim() || ref.description?.trim() || void 0,
|
|
11900
12005
|
source: ref.source,
|
|
11901
12006
|
locationCanonicalDescription: ref.locationCanonicalDescription,
|
|
11902
12007
|
locationSlug: ref.locationSlug,
|
|
@@ -12423,6 +12528,8 @@ function resolveVideoCharacterMentionsHybrid(prompt, tokens, refs, offset) {
|
|
|
12423
12528
|
const binding = bindingFor(m.url);
|
|
12424
12529
|
const lock = buildIdentityLockLine(withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
|
|
12425
12530
|
if (lock) lockLines.push(lock);
|
|
12531
|
+
const overrideLine = referenceDescriptionLine(binding, ref.descriptionOverride);
|
|
12532
|
+
if (overrideLine) elementDirectives.push(overrideLine);
|
|
12426
12533
|
const inject = ref.elementInjection?.trim();
|
|
12427
12534
|
if (inject) elementDirectives.push(inject);
|
|
12428
12535
|
}
|
|
@@ -12448,6 +12555,13 @@ function resolveVideoReferenceCore(args) {
|
|
|
12448
12555
|
video: args.videoRefCount ?? 0,
|
|
12449
12556
|
audio: args.audioRefCount ?? 0
|
|
12450
12557
|
});
|
|
12558
|
+
const describedAndCaptionLines = [
|
|
12559
|
+
...renderDescribedReferenceLines(args.describedReferences),
|
|
12560
|
+
...renderReferenceCaptionLines(args.videoCaptions, args.audioCaptions, {
|
|
12561
|
+
video: args.videoRefCount ?? 0,
|
|
12562
|
+
audio: args.audioRefCount ?? 0
|
|
12563
|
+
})
|
|
12564
|
+
];
|
|
12451
12565
|
let wiredCharRefs = [...args.wiredCharRefs];
|
|
12452
12566
|
const suppressedSlugs = new Set(args.suppressedCanonicalCharacterIds ?? []);
|
|
12453
12567
|
if (suppressedSlugs.size > 0) {
|
|
@@ -12472,14 +12586,15 @@ function resolveVideoReferenceCore(args) {
|
|
|
12472
12586
|
const slotByRefId = /* @__PURE__ */ new Map();
|
|
12473
12587
|
if (wiredCharRefs.length === 0 && !hasExtras) {
|
|
12474
12588
|
const counts = tokenCounts(leadingRefUrls.length);
|
|
12589
|
+
const resolved2 = resolveReferenceTokens(
|
|
12590
|
+
resolveRefIdTokens(args.prompt, { slotById: slotByRefId, nameById: nameByRefId, imageCount: counts.image }),
|
|
12591
|
+
counts
|
|
12592
|
+
);
|
|
12475
12593
|
return {
|
|
12476
|
-
//
|
|
12477
|
-
//
|
|
12478
|
-
//
|
|
12479
|
-
prompt:
|
|
12480
|
-
resolveRefIdTokens(args.prompt, { slotById: slotByRefId, nameById: nameByRefId, imageCount: counts.image }),
|
|
12481
|
-
counts
|
|
12482
|
-
),
|
|
12594
|
+
// Described references and rail captions are the ONE thing this branch can
|
|
12595
|
+
// still contribute: they need no seat, so a request that carries only them
|
|
12596
|
+
// (a story landing before any entity exists) reaches the model here.
|
|
12597
|
+
prompt: describedAndCaptionLines.length > 0 ? appendReferenceLines(resolved2 ?? "", describedAndCaptionLines, args.hybridRoles === true ? "hybrid" : "legacy") : resolved2,
|
|
12483
12598
|
additionalUrls: [...leadingRefUrls]
|
|
12484
12599
|
};
|
|
12485
12600
|
}
|
|
@@ -12537,6 +12652,8 @@ function resolveVideoReferenceCore(args) {
|
|
|
12537
12652
|
canonicalPhrases.push(roleToPhrase(resolveDefaultRole(r.defaultRole, r.defaultUsageMode, r.source), binding));
|
|
12538
12653
|
const lock = buildIdentityLockLine(r, binding);
|
|
12539
12654
|
if (lock) canonicalLockLines.push(lock);
|
|
12655
|
+
const overrideLine = referenceDescriptionLine(binding, r.descriptionOverride);
|
|
12656
|
+
if (overrideLine) canonicalElementDirectives.push(overrideLine);
|
|
12540
12657
|
const inject = r.elementInjection?.trim();
|
|
12541
12658
|
if (inject) canonicalElementDirectives.push(inject);
|
|
12542
12659
|
continue;
|
|
@@ -12553,7 +12670,10 @@ function resolveVideoReferenceCore(args) {
|
|
|
12553
12670
|
const directive = usageModeDirective(effectiveMode);
|
|
12554
12671
|
const includeCanonicalDesc = effectiveMode === "identical" || effectiveMode === "face-pose";
|
|
12555
12672
|
const descBodyParts = [];
|
|
12556
|
-
|
|
12673
|
+
const canonicalOverride = r.descriptionOverride?.trim();
|
|
12674
|
+
if (canonicalOverride) {
|
|
12675
|
+
descBodyParts.push(canonicalOverride);
|
|
12676
|
+
} else if (includeCanonicalDesc && r.characterCanonicalDescription?.trim()) {
|
|
12557
12677
|
descBodyParts.push(r.characterCanonicalDescription.trim());
|
|
12558
12678
|
}
|
|
12559
12679
|
if (r.elementInjection?.trim()) descBodyParts.push(r.elementInjection.trim());
|
|
@@ -12570,7 +12690,7 @@ function resolveVideoReferenceCore(args) {
|
|
|
12570
12690
|
if (!ex.url) continue;
|
|
12571
12691
|
position += 1;
|
|
12572
12692
|
if (ex.id && !slotByRefId.has(ex.id)) slotByRefId.set(ex.id, position);
|
|
12573
|
-
const desc = (ex.description ?? "").trim();
|
|
12693
|
+
const desc = (ex.descriptionOverride ?? "").trim() || (ex.description ?? "").trim();
|
|
12574
12694
|
if (ex.characterSlug) {
|
|
12575
12695
|
const meta3 = args.lookupCharacterBySlug?.(ex.characterSlug);
|
|
12576
12696
|
const charDefaultMode = meta3?.defaultUsageMode;
|
|
@@ -12714,6 +12834,11 @@ ${finalPrompt}` : block;
|
|
|
12714
12834
|
merged.push(u);
|
|
12715
12835
|
}
|
|
12716
12836
|
}
|
|
12837
|
+
finalPrompt = appendReferenceLines(
|
|
12838
|
+
finalPrompt,
|
|
12839
|
+
describedAndCaptionLines,
|
|
12840
|
+
hybrid ? "hybrid" : "legacy"
|
|
12841
|
+
);
|
|
12717
12842
|
finalPrompt = resolveRefIdTokens(finalPrompt, {
|
|
12718
12843
|
slotById: slotByRefId,
|
|
12719
12844
|
nameById: nameByRefId,
|
|
@@ -12928,6 +13053,7 @@ function assembleImageInput(input) {
|
|
|
12928
13053
|
prompt: composePromptText(input.userPrompt, pieces, keptHintClauses),
|
|
12929
13054
|
provider: input.provider,
|
|
12930
13055
|
...input.connectedReferences !== void 0 ? { connectedReferences: input.connectedReferences } : {},
|
|
13056
|
+
...input.describedReferences !== void 0 ? { describedReferences: input.describedReferences } : {},
|
|
12931
13057
|
// Manual uploads / direct refs ride the builder's reference-URL channel so
|
|
12932
13058
|
// the per-provider reference gate filters them alongside bound entities.
|
|
12933
13059
|
// Omit the field entirely when absent so the builder's default ([]) kicks
|
|
@@ -34636,6 +34762,6 @@ function buildSurroundFillPrompt(direction, userPrompt) {
|
|
|
34636
34762
|
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.`;
|
|
34637
34763
|
}
|
|
34638
34764
|
|
|
34639
|
-
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_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, FLOORED_PICKER_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, MINOR_IMPLYING_TYPE_IDS, 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, RETIRED_ADULT_ONLY_HINT_STRINGS, 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, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, applyMinorAgeFloorToPickerValues, 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, buildNeedleAlternationSource, 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, catalogGuardActive, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, deriveTerm, directionFieldsForSurface, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, 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, getMinorAgeHintStrings, 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, hasCatalogPacksFor, hasUpstreamCharacter, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isDeniedStyleId, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, 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, setComposedCatalogResolver, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|
|
34765
|
+
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_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, FLOORED_PICKER_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, MINOR_IMPLYING_TYPE_IDS, 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, RETIRED_ADULT_ONLY_HINT_STRINGS, 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, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, appendReferenceLines, applyMinorAgeFloorToPickerValues, 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, buildNeedleAlternationSource, 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, catalogGuardActive, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, deriveTerm, directionFieldsForSurface, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, 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, getMinorAgeHintStrings, 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, hasCatalogPacksFor, hasUpstreamCharacter, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isDeniedStyleId, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, referenceDescriptionLine, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDescribedReferenceLines, renderDirectionHintClauses, renderDirectionHints, renderReferenceCaptionLines, renderStructuredFields, renderStyleSection, renderSubjectHints, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, sectionedClauseCosts, setComposedCatalogResolver, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|
|
34640
34766
|
//# sourceMappingURL=index.js.map
|
|
34641
34767
|
//# sourceMappingURL=index.js.map
|