@nodaro/prompts 1.34.0 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, SOCIAL_POST_NODE_TYPES, FURNITURE, WEAPONS, VEHICLES, ANIMALS, getAnimalPromptHint, PASSTHROUGH_TYPES, registerCatalogSidecars, resetCatalogSidecars, pickIds, getAnimalTerm, getVehicle, getWeapon, getFurniture, DEFAULT_USAGE_MODE, usageModeDirective, DEFAULT_LOCATION_USAGE_MODE, imageReferenceLimit, knownImageSlugsFromRefs, findImageMentionTokens, knownEntitySlugsFromRefs, findEntityMentionTokens, findCharacterMentionTokens, findLocationMentionTokens, NATIVE_NEGATIVE_PROMPT_MODELS, getMaxNegativePromptChars, getMaxImagePromptChars, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, roleToPhrase, resolveDefaultRole, SEEDANCE_2_REF_LIMITS, NON_EN_LOCALE_IDS, readPromptAffixes, resolveFrameDelivery, VIDEO_REF_LIMITS_BY_PROVIDER, resolveNodeRefs, setRegisteredPersonPackFields, PLACEHOLDER_CHARACTER_NAME, REFERENCE_ROLE_PRESETS, imageMentionSlugForRef, entityMentionSlugForRef, defaultRoleForSource, locationReferencePhotoKindLabel, normalizeRoleSlug } from '@nodaro/shared';
1
+ import { ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, SOCIAL_POST_NODE_TYPES, FURNITURE, WEAPONS, VEHICLES, ANIMALS, T2I_TO_I2I_VARIANT, getAnimalPromptHint, PASSTHROUGH_TYPES, registerCatalogSidecars, resetCatalogSidecars, pickIds, getAnimalTerm, getVehicle, getWeapon, getFurniture, DEFAULT_USAGE_MODE, usageModeDirective, DEFAULT_LOCATION_USAGE_MODE, imageReferenceLimit, knownImageSlugsFromRefs, findImageMentionTokens, knownEntitySlugsFromRefs, findEntityMentionTokens, findCharacterMentionTokens, findLocationMentionTokens, NATIVE_NEGATIVE_PROMPT_MODELS, getMaxNegativePromptChars, getMaxImagePromptChars, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, roleToPhrase, resolveDefaultRole, SEEDANCE_2_REF_LIMITS, NON_EN_LOCALE_IDS, readPromptAffixes, resolveFrameDelivery, VIDEO_REF_LIMITS_BY_PROVIDER, resolveNodeRefs, setRegisteredPersonPackFields, PLACEHOLDER_CHARACTER_NAME, REFERENCE_ROLE_PRESETS, imageMentionSlugForRef, entityMentionSlugForRef, defaultRoleForSource, locationReferencePhotoKindLabel, normalizeRoleSlug } from '@nodaro/shared';
2
2
 
3
3
  var __defProp = Object.defineProperty;
4
4
  var __export = (target, all) => {
@@ -23097,9 +23097,9 @@ function renderDescribedReferenceLines(refs) {
23097
23097
  }
23098
23098
  function renderReferenceCaptionLines(videoCaptions, audioCaptions, counts) {
23099
23099
  const lines = [];
23100
- const render = (captions, kind, cap) => {
23100
+ const render = (captions, kind, cap2) => {
23101
23101
  if (!captions) return;
23102
- for (let i = 0; i < captions.length && i < cap; i++) {
23102
+ for (let i = 0; i < captions.length && i < cap2; i++) {
23103
23103
  const text = captions[i]?.trim();
23104
23104
  if (!text) continue;
23105
23105
  lines.push(`@${kind}_${i + 1}: ${text}.`);
@@ -23153,6 +23153,16 @@ function applyTemplate(template, vars) {
23153
23153
  template
23154
23154
  );
23155
23155
  }
23156
+
23157
+ // src/unbound-reference-tokens.ts
23158
+ function unboundReferenceTokenText(label) {
23159
+ return label ?? "";
23160
+ }
23161
+ function tidyReferenceTokenGaps(prompt) {
23162
+ return prompt.replace(/[^\S\r\n]{2,}/g, " ").trim();
23163
+ }
23164
+
23165
+ // src/prompt-builder.ts
23156
23166
  function composeIdentityDescPart(subject, canonicalDesc, elementInjection) {
23157
23167
  const parts = [];
23158
23168
  const c = canonicalDesc?.trim();
@@ -24292,7 +24302,11 @@ ${directives}`;
24292
24302
  finalPrompt = reordered.prompt;
24293
24303
  }
24294
24304
  const refsToSend2 = supportsRefs2 && finalUrls.length > 0 ? finalUrls : void 0;
24295
- return { prompt: finalPrompt, nativeNegativePrompt: nativeNegativePrompt2, referenceImageUrls: refsToSend2 };
24305
+ const assembledPrompt = dropUnwiredImageTokens(
24306
+ finalPrompt,
24307
+ (n) => Boolean(tokenFinalSlot(n, nonCharacterRefs, finalIndexByUrl))
24308
+ );
24309
+ return { prompt: assembledPrompt, nativeNegativePrompt: nativeNegativePrompt2, referenceImageUrls: refsToSend2 };
24296
24310
  }
24297
24311
  const charDescs = characterDefs.filter((c) => c.type === "description" && c.description).map((c) => {
24298
24312
  let templateKey;
@@ -24360,6 +24374,7 @@ ${directives}`;
24360
24374
  const supportsRefs = MODELS_WITH_REFERENCE_IMAGE_SUPPORT.has(provider);
24361
24375
  const refsToSend = supportsRefs && allRefs.length > 0 ? allRefs : void 0;
24362
24376
  prompt = expandImagePositionRefs(prompt, allRefs.length);
24377
+ prompt = dropUnwiredImageTokens(prompt, (n) => hasImageAt(n, allRefs.length));
24363
24378
  return { prompt, nativeNegativePrompt, referenceImageUrls: refsToSend };
24364
24379
  }
24365
24380
  function buildImagePromptSegments(config2, bodySegments) {
@@ -24384,6 +24399,22 @@ var STRICT_DEFAULT_SOURCES = /* @__PURE__ */ new Set([
24384
24399
  "wired-location"
24385
24400
  ]);
24386
24401
  var IMAGE_TOKEN_PATTERN = /\{image:(\d+)(?::([^}\n]+))?\}/gi;
24402
+ function tokenFinalSlot(n, refs, finalIndexByUrl) {
24403
+ const ref = refs[n - 1];
24404
+ return ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24405
+ }
24406
+ function hasImageAt(n, count) {
24407
+ return n >= 1 && n <= count;
24408
+ }
24409
+ function dropUnwiredImageTokens(prompt, isWired) {
24410
+ let dropped = false;
24411
+ const out = prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24412
+ if (isWired(parseInt(num, 10))) return match;
24413
+ dropped = true;
24414
+ return unboundReferenceTokenText(label);
24415
+ });
24416
+ return dropped ? tidyReferenceTokenGaps(out) : prompt;
24417
+ }
24387
24418
  function defaultFidelityForSource(source) {
24388
24419
  if (!source) return "balanced";
24389
24420
  return STRICT_DEFAULT_SOURCES.has(source) ? "strict" : "balanced";
@@ -24541,9 +24572,7 @@ function expandImageRefTokens(prompt, imageCount) {
24541
24572
  }
24542
24573
  function expandImageRefTokensForRefs(prompt, refs, finalIndexByUrl) {
24543
24574
  return prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24544
- const n = parseInt(num, 10);
24545
- const ref = refs[n - 1];
24546
- const finalIdx = ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24575
+ const finalIdx = tokenFinalSlot(parseInt(num, 10), refs, finalIndexByUrl);
24547
24576
  if (!finalIdx) return match;
24548
24577
  return label ? `Image ${finalIdx} (${label})` : `Image ${finalIdx}`;
24549
24578
  });
@@ -24558,9 +24587,7 @@ function hybridRolePhrase(label, letter) {
24558
24587
  function expandImageRefTokensHybrid(prompt, refs, finalIndexByUrl) {
24559
24588
  const splices = [];
24560
24589
  for (const m of prompt.matchAll(IMAGE_TOKEN_PATTERN)) {
24561
- const n = parseInt(m[1], 10);
24562
- const ref = refs[n - 1];
24563
- const finalIdx = ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24590
+ const finalIdx = tokenFinalSlot(parseInt(m[1], 10), refs, finalIndexByUrl);
24564
24591
  if (!finalIdx) continue;
24565
24592
  splices.push({
24566
24593
  offset: m.index ?? 0,
@@ -24592,7 +24619,7 @@ function buildIdentityDirectives(prompt, refs, meta3 = [], suppressedCanonicalLo
24592
24619
  function expandImagePositionRefs(prompt, imageCount, names) {
24593
24620
  return prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24594
24621
  const n = parseInt(num, 10);
24595
- if (n < 1 || n > imageCount) return match;
24622
+ if (!hasImageAt(n, imageCount)) return match;
24596
24623
  if (label) return `Image ${n} (${label})`;
24597
24624
  if (names && names[n - 1]) return names[n - 1];
24598
24625
  return `Image ${n}`;
@@ -24992,13 +25019,15 @@ function resolveRefIdTokens(prompt, ctx) {
24992
25019
  var REFERENCE_TOKEN_RE = /\{(image|video|audio):(\d+)(?::([a-zA-Z0-9_ -]+))?\}/gi;
24993
25020
  function resolveReferenceTokens(prompt, counts) {
24994
25021
  if (!prompt) return prompt;
24995
- return prompt.replace(REFERENCE_TOKEN_RE, (_match, rawKind, nStr, label) => {
24996
- const kind = rawKind.toLowerCase();
24997
- const n = parseInt(nStr, 10);
24998
- if (n < 1 || n > counts[kind]) return label ?? "";
24999
- if (label) return REF_BINDING[kind](label, n);
25000
- return `@${kind}_${n}`;
25001
- }).replace(/[^\S\r\n]{2,}/g, " ").trim() || void 0;
25022
+ return tidyReferenceTokenGaps(
25023
+ prompt.replace(REFERENCE_TOKEN_RE, (_match, rawKind, nStr, label) => {
25024
+ const kind = rawKind.toLowerCase();
25025
+ const n = parseInt(nStr, 10);
25026
+ if (n < 1 || n > counts[kind]) return unboundReferenceTokenText(label);
25027
+ if (label) return REF_BINDING[kind](label, n);
25028
+ return `@${kind}_${n}`;
25029
+ })
25030
+ ) || void 0;
25002
25031
  }
25003
25032
  function resolveVideoCharacterMentionsHybrid(prompt, tokens, refs, offset) {
25004
25033
  const bySlug = /* @__PURE__ */ new Map();
@@ -25638,17 +25667,17 @@ function composeVideoPromptText(userPrompt, direction, structured, opts) {
25638
25667
  ].filter((c) => c.text.length > 0);
25639
25668
  const structuredFragment = structured ? renderStructuredFields(structured) : "";
25640
25669
  const composeWith = (kept2) => composeSectionedPrompt(userPrompt, hintClauses.slice(0, kept2), structuredFragment);
25641
- const cap = opts?.cap;
25642
- if (cap === void 0) return composeWith(hintClauses.length);
25670
+ const cap2 = opts?.cap;
25671
+ if (cap2 === void 0) return composeWith(hintClauses.length);
25643
25672
  const frame = opts?.frame ?? ((body2) => body2);
25644
25673
  let kept = hintClauses.length;
25645
25674
  let body = composeWith(kept);
25646
25675
  let framedLength = frame(body)?.length ?? 0;
25647
- if (framedLength <= cap) return body;
25676
+ if (framedLength <= cap2) return body;
25648
25677
  const costs = sectionedClauseCosts(userPrompt, hintClauses, structuredFragment);
25649
25678
  const texts = hintClauses.map((c) => c.text);
25650
- while (framedLength > cap && kept > 0) {
25651
- kept = keepableDirectionHints(texts, kept, framedLength - cap, costs);
25679
+ while (framedLength > cap2 && kept > 0) {
25680
+ kept = keepableDirectionHints(texts, kept, framedLength - cap2, costs);
25652
25681
  body = composeWith(kept);
25653
25682
  framedLength = frame(body)?.length ?? 0;
25654
25683
  }
@@ -40829,8 +40858,8 @@ ${buildPickerLegend(spec)}`);
40829
40858
  function buildPickerLegend(spec) {
40830
40859
  const lines = [];
40831
40860
  for (const d of spec.dimensions) {
40832
- const cap = d.limit > 1 ? `up to ${d.limit}` : "one";
40833
- lines.push(`## ${d.label} (key: "${d.dimension}", choose ${cap})`);
40861
+ const cap2 = d.limit > 1 ? `up to ${d.limit}` : "one";
40862
+ lines.push(`## ${d.label} (key: "${d.dimension}", choose ${cap2})`);
40834
40863
  for (const e of d.legend) {
40835
40864
  lines.push(`- ${e.id}: ${e.label}${e.description ? ` \u2014 ${e.description}` : ""}`);
40836
40865
  }
@@ -41150,7 +41179,7 @@ var KLING_AUDIO_DOCTRINE = {
41150
41179
  };
41151
41180
  var MINIMAX_H3_DOCTRINE = {
41152
41181
  providers: ["minimax-h3"],
41153
- heading: "MiniMax Hailuo 3 (minimax-h3)",
41182
+ heading: "MiniMax H3 (minimax-h3)",
41154
41183
  tips: [
41155
41184
  "Natural-language prompts up to 7000 chars. Front-load what matters: subject \u2192 action \u2192 scene/environment \u2192 lighting \u2192 camera move \u2192 style. One camera movement per shot.",
41156
41185
  "Output 2K (default) or 768P (cheaper tier). Aspect: pure text-to-video needs a concrete ratio (21:9/16:9/4:3/1:1/3:4/9:16); reference runs default to adaptive (match the input).",
@@ -41435,7 +41464,7 @@ var IMAGE_REFERENCE_PROMPT_DOCTRINE = {
41435
41464
 
41436
41465
  - \`{image:N:label}\` \u2192 expands server-side to \`Image N (label)\`, aligned with the numbered reference list sent to the provider.
41437
41466
  - \`{image:N}\` \u2192 \`Image N\` (no role named).
41438
- - A token whose N has no wired reference is left as literal text in the final prompt \u2014 visible on purpose, so fix the numbering instead of ignoring it.
41467
+ - A token whose N has no wired reference falls back to its label (\`{image:3:dog}\` \u2192 \`dog\`); a bare \`{image:N}\` is dropped. The prompt still runs but binds nothing at N, so check the numbering against what is wired.
41439
41468
 
41440
41469
  **How to compose**
41441
41470
  - The prompt should be little more than tokens plus glue words: \`{image:1:person} with {image:2:face}\`. The label tells the model what to TAKE from that image \u2014 \`person\`, \`face\`, \`background\`, \`settings\`, or a concrete garment/prop name (\`jacket\`).
@@ -41541,11 +41570,11 @@ function buildScene3DUnreferencedFiguresWarning(check2) {
41541
41570
  const figureWord = figures === 1 ? "figure" : "figures";
41542
41571
  const refWord = refs === 1 ? "character reference is" : "character references are";
41543
41572
  let message = `The layout reference shows ${figures} ${figureWord} but ${refs} ${refWord} attached. A figure without its own character reference takes the clay look of the layout reference. Attach one character reference per figure (${missing} more)`;
41544
- const cap = check2.imageReferenceCap;
41545
- if (typeof cap === "number" && Number.isFinite(cap) && cap > 0) {
41573
+ const cap2 = check2.imageReferenceCap;
41574
+ if (typeof cap2 === "number" && Number.isFinite(cap2) && cap2 > 0) {
41546
41575
  const seats = Math.max(0, Math.floor(check2.layoutReferenceImageSeats ?? 0));
41547
- const spare = cap - seats - figures;
41548
- message += spare >= SCENE3D_FREE_PLATE_SLOTS ? `; this model takes ${cap} image references, which leaves ${spare} for a location or style plate.` : `; this model takes ${cap} image references, so one per figure plus ${SCENE3D_FREE_PLATE_SLOTS} free slots for a location or style plate does not fit \u2014 reference the figures that matter most first.`;
41576
+ const spare = cap2 - seats - figures;
41577
+ message += spare >= SCENE3D_FREE_PLATE_SLOTS ? `; this model takes ${cap2} image references, which leaves ${spare} for a location or style plate.` : `; this model takes ${cap2} image references, so one per figure plus ${SCENE3D_FREE_PLATE_SLOTS} free slots for a location or style plate does not fit \u2014 reference the figures that matter most first.`;
41549
41578
  } else {
41550
41579
  message += ".";
41551
41580
  }
@@ -41662,6 +41691,7 @@ var PROVIDER_CAPABILITIES = {
41662
41691
  "seedream": "Artistic, painterly styles, creative interpretation",
41663
41692
  "seedream-5-lite": "Lighter Seedream, faster artistic generation",
41664
41693
  "seedream-5-pro": "Flagship Seedream \u2014 strongest instruction following, 2K via high quality",
41694
+ "seedream-5-flash": "Fast, low-cost Seedream 5 \u2014 quick drafts and iteration at 1K or 2K",
41665
41695
  "z-image": "Experimental, novel generation approaches",
41666
41696
  "wan-2.7": "Wan 2.7 T2I \u2014 1K/2K/4K, up to 9 ref images",
41667
41697
  "wan-2.7-pro": "Wan 2.7 Pro T2I \u2014 higher quality, 1K/2K/4K",
@@ -41686,6 +41716,7 @@ var PROVIDER_CAPABILITIES = {
41686
41716
  "seedream-edit": "Artistic style editing",
41687
41717
  "seedream-5-lite-i2i": "Light artistic transformation",
41688
41718
  "seedream-5-pro-i2i": "Pro-grade instruction-based edits, multi-reference",
41719
+ "seedream-5-flash-i2i": "Fast, low-cost Seedream edits \u2014 up to 10 input images",
41689
41720
  "flux-kontext": "Character-consistent edits with reference awareness",
41690
41721
  "flux-kontext-max": "Premium character-consistent editing",
41691
41722
  "kontext-multi": "Multi-image Kontext via Replicate \u2014 up to 4 refs, no safety filter",
@@ -41710,6 +41741,7 @@ var PROVIDER_CAPABILITIES = {
41710
41741
  "seedream-edit": "Artistic style editing",
41711
41742
  "seedream-5-lite-i2i": "Light artistic transformation",
41712
41743
  "seedream-5-pro-i2i": "Pro-grade instruction-based edits, multi-reference",
41744
+ "seedream-5-flash-i2i": "Fast, low-cost Seedream edits \u2014 up to 10 input images",
41713
41745
  "flux-kontext": "Character-consistent edits with reference awareness",
41714
41746
  "flux-kontext-max": "Premium character-consistent editing",
41715
41747
  "kontext-multi": "Multi-image Kontext via Replicate \u2014 up to 4 refs, no safety filter",
@@ -41733,7 +41765,7 @@ var PROVIDER_CAPABILITIES = {
41733
41765
  "seedance-2-fast": "Seedance 2.0 Fast \u2014 same multimodal + audio capabilities, cheaper and quicker",
41734
41766
  "seedance-2-mini": "Seedance 2.0 Mini \u2014 same multimodal + audio capabilities, budget tier, 480p/720p, 4-15s",
41735
41767
  "seedance-2-5": "Seedance 2.5 \u2014 up to 30s in ONE shot (no stitching), wider multimodal refs (30 images / 10 videos / 10 audio), native audio, 480p/720p/1080p",
41736
- "minimax-h3": "MiniMax Hailuo 3 \u2014 premium multimodal refs (9 images / 3 videos / 3 audio), always-on audio, 2K or 768P, 4-15s per-second pricing",
41768
+ "minimax-h3": "MiniMax H3 \u2014 premium multimodal refs (9 images / 3 videos / 3 audio), always-on audio, 2K or 768P, 4-15s per-second pricing",
41737
41769
  "wan": "Versatile, good for animations and transformations",
41738
41770
  "wan-turbo": "Faster Wan generation",
41739
41771
  "hailuo-standard": "Standard quality, cost-effective",
@@ -41764,7 +41796,7 @@ var PROVIDER_CAPABILITIES = {
41764
41796
  "seedance-2-fast": "Seedance 2.0 Fast \u2014 same capabilities, cheaper and quicker",
41765
41797
  "seedance-2-mini": "Seedance 2.0 Mini \u2014 same capabilities, budget tier, 480p/720p",
41766
41798
  "seedance-2-5": "Seedance 2.5 \u2014 start/end frame + wide multimodal refs, native audio, up to 30s, 480p/720p/1080p",
41767
- "minimax-h3": "MiniMax Hailuo 3 \u2014 first/last frame + multimodal refs, always-on audio, 2K or 768P, 4-15s",
41799
+ "minimax-h3": "MiniMax H3 \u2014 first/last frame + multimodal refs, always-on audio, 2K or 768P, 4-15s",
41768
41800
  "hailuo-2.3-pro": "Premium Hailuo animation",
41769
41801
  "hailuo-2.3": "Standard Hailuo animation",
41770
41802
  "hailuo-standard": "Cost-effective animation",
@@ -42051,6 +42083,19 @@ var PROMPT_AFFIX_NODE_TYPES = new Set(
42051
42083
  Object.entries(NODE_PROMPT_FIELDS).filter(([, s]) => s.affixes !== false).map(([t]) => t)
42052
42084
  );
42053
42085
 
42086
+ // src/realism-wording.ts
42087
+ var NEUTRAL_PERSON = { subject: "the person", possessive: "their" };
42088
+ var cap = (s) => s.length === 0 ? s : `${s[0].toUpperCase()}${s.slice(1)}`;
42089
+ var REALISM_SKIN = "Skin shows its real structure: visible pores that vary in size across the nose and cheeks, fine vellus hair catching the light, faint uneven pigmentation, a little redness around the nostrils, natural oil on the forehead.";
42090
+ var REALISM_FINISH = "The plain look of an everyday small-sensor snapshot: colour left as it was recorded, deep focus from the nearest shoulder to the background, a fine grain in the darker areas, bright areas that fade rather than clip.";
42091
+ var REALISM_PASS_INSTRUCTION = "Make this photo look like an unretouched everyday snapshot: skin that shows its pores, its fine hairs and the small changes in tone real skin has, colour left as it was recorded, everything sharp from the shoulders to the background, a little grain in the shadows. Take out anything that makes it look rendered \u2014 smoothed, waxy or airbrushed skin, a glow, over-sharpened edges \u2014 and add no text or icons. Otherwise it stays the same person in the same frame: the face and its proportions, hair, clothing, pose and background as they are.";
42092
+ function realismViewpoint(p) {
42093
+ return `${cap(p.subject)} is looking straight at the viewer from eye level, mid-sentence: ${p.possessive} face and shoulders close up, the framing loose and a little crooked, both arms relaxed and down out of the frame. The whole image is the photograph itself, edge to edge, with no text or icons anywhere.`;
42094
+ }
42095
+ function realismEmptyHands(p) {
42096
+ return `${cap(p.possessive)} hands are empty; ${p.subject} is holding nothing.`;
42097
+ }
42098
+
42054
42099
  // src/factory-presets/shared-image.ts
42055
42100
  var STYLIZED_SUBJECT = [
42056
42101
  {
@@ -42058,7 +42103,6 @@ var STYLIZED_SUBJECT = [
42058
42103
  name: "Cartoon Person, Real World",
42059
42104
  description: "Subject \u2192 3D cartoon, rest stays photoreal.",
42060
42105
  data: {
42061
- provider: "nano-banana-pro",
42062
42106
  promptPrefix: "Restyle ONLY the person in the reference image into a polished 3D animated character \u2014 Pixar/Disney sensibility: soft subsurface skin shading, expressive oversized eyes, smoothly stylized hair, clean rounded forms. Preserve their identity, exact pose, expression, and framing. Everything else stays untouched and fully photorealistic: keep the original background, props, clothing fabric and texture, and the scene's real lighting, shadows, and color grade. Composite the stylized figure into the real plate so it sits naturally \u2014 matched light direction, contact shadows, and depth.",
42063
42107
  negativePrompt: "changing the background, altering the unstylized parts, restyling clothing fabric or props, relighting the scene, distorting the subject, changing identity or pose, flat 2D look, extra limbs, deformed hands, warped face"
42064
42108
  }
@@ -42068,7 +42112,6 @@ var STYLIZED_SUBJECT = [
42068
42112
  name: "Caricature, Real Photo",
42069
42113
  description: "Exaggerated cartoon head on a real scene.",
42070
42114
  data: {
42071
- provider: "nano-banana-pro",
42072
42115
  promptPrefix: "Turn ONLY the person into a playful hand-illustrated caricature: enlarge the head, exaggerate their most recognizable features, and amplify expression with bold, confident linework and clean cel-style shading \u2014 while keeping them clearly identifiable. Leave everything else exactly as shot and photorealistic: the body proportions below the neck, the clothing, the background, props, and the scene's real lighting and shadows remain unchanged. Blend the caricature head onto the real photo seamlessly with matched lighting and a believable neckline.",
42073
42116
  negativePrompt: "changing the background, altering the unstylized parts, restyling the body or clothing, relighting the scene, distorting the subject beyond intent, losing likeness, photorealistic head, harsh seam at the neck, deformed features"
42074
42117
  }
@@ -42078,7 +42121,6 @@ var STYLIZED_SUBJECT = [
42078
42121
  name: "Anime Person, Real Background",
42079
42122
  description: "Subject \u2192 2D anime, real environment.",
42080
42123
  data: {
42081
- provider: "nano-banana-pro",
42082
42124
  promptPrefix: "Restyle ONLY the person as a crisp 2D anime character \u2014 clean ink outlines, flat cel shading with sharp shadow shapes, glossy stylized hair, and expressive anime eyes \u2014 while preserving their identity, pose, expression, and framing. Keep the real-world background, environment, props, and the original photographic lighting, shadows, and color completely untouched and photorealistic. Integrate the 2D figure into the live-action plate so the light direction and contact shadows read naturally.",
42083
42125
  negativePrompt: "changing the background, altering the unstylized parts, restyling the environment or props, relighting the scene, distorting the subject, 3D render look, photorealistic skin on the subject, extra fingers, warped anatomy, broken outlines"
42084
42126
  }
@@ -42088,7 +42130,6 @@ var STYLIZED_SUBJECT = [
42088
42130
  name: "Real Person, Cartoon World",
42089
42131
  description: "Inverse \u2014 real subject, stylized world.",
42090
42132
  data: {
42091
- provider: "nano-banana-pro",
42092
42133
  promptPrefix: "Inverse stylization: keep the PERSON completely photorealistic and unchanged \u2014 real skin, hair, clothing, identity, pose, and framing all preserved exactly. Restyle ONLY the surrounding world into a vibrant, hand-crafted cartoon environment: simplified painterly shapes, bold saturated colors, soft graphic shading, and whimsical stylized props and scenery. Light the real person to match the cartoon world's color and direction so they sit convincingly inside it, with believable contact shadows.",
42093
42134
  negativePrompt: "stylizing or cartoonifying the person, altering the subject's skin, face, hair or clothing, distorting the subject, changing the subject's pose, photorealistic background, flat lifeless scene, harsh cut-out edges around the person"
42094
42135
  }
@@ -42098,19 +42139,21 @@ var STYLIZED_SUBJECT = [
42098
42139
  name: "Claymation Figure, Real Set",
42099
42140
  description: "Subject \u2192 clay figure, real surroundings.",
42100
42141
  data: {
42101
- provider: "nano-banana-pro",
42102
42142
  promptPrefix: "Restyle ONLY the person into a tactile stop-motion claymation figure \u2014 molded plasticine surface with visible fingerprints, tool marks, subtle seams, and a soft matte sheen, in the handmade spirit of Aardman puppets \u2014 while keeping their identity, pose, expression, and framing. Everything else stays exactly as shot and photorealistic: the real background, set, props, and the scene's natural lighting and shadows are unchanged. Seat the clay figure into the real plate with matched light direction and grounded contact shadows.",
42103
42143
  negativePrompt: "changing the background or set, altering the unstylized parts, restyling props, relighting the scene, distorting the subject, smooth plastic toy look, glossy CGI surface, melted or deformed figure, missing fingerprints, extra limbs"
42104
42144
  }
42105
42145
  }
42106
42146
  ];
42147
+ function editProviderFor(nodeType) {
42148
+ return nodeType === "modify-image" ? "gpt-image-2-5-flare-i2i" : "gpt-image-2-5-flare";
42149
+ }
42107
42150
  function stylizedSubjectFor(nodeType) {
42108
42151
  return STYLIZED_SUBJECT.map((p) => ({
42109
42152
  id: `${nodeType}/${p.slug}`,
42110
42153
  name: p.name,
42111
42154
  description: p.description,
42112
42155
  group: "Stylized Subject",
42113
- data: p.data
42156
+ data: { provider: editProviderFor(nodeType), ...p.data }
42114
42157
  }));
42115
42158
  }
42116
42159
  var IMAGE_EDITS = [
@@ -42119,7 +42162,6 @@ var IMAGE_EDITS = [
42119
42162
  name: "Remove Background",
42120
42163
  description: "Cut out the subject on white.",
42121
42164
  data: {
42122
- provider: "nano-banana-pro",
42123
42165
  promptPrefix: "Cleanly cut the main subject out of the reference image and place it on a pure, solid white background. Trace a crisp, accurate edge \u2014 preserve fine detail like hair strands, fur, and translucent or wispy edges \u2014 with no leftover background pixels and no color fringing. Keep the subject itself completely unchanged: same pose, lighting, color, and full silhouette, nothing cropped.",
42124
42166
  negativePrompt: "fringing, color halo, cut-off subject, leftover background, jagged or rough edges, missing hair detail, semi-transparent matte, drop shadow, gray or off-white background, altering the subject"
42125
42167
  }
@@ -42129,7 +42171,6 @@ var IMAGE_EDITS = [
42129
42171
  name: "Replace Background",
42130
42172
  description: "Swap in a new scene.",
42131
42173
  data: {
42132
- provider: "nano-banana-pro",
42133
42174
  prompt: "Replace the background behind the subject with {scene || a sunlit Mediterranean terrace}. Keep the subject perfectly unchanged \u2014 identity, pose, edges, and proportions intact \u2014 and composite it into the new scene so it looks truly photographed there: relight the subject's rim and ambient tones to match the new environment, cast believable contact shadows, and match perspective, depth of field, and color grade.",
42134
42175
  negativePrompt: "altering the subject, changing the subject's pose or proportions, fringing, halo, floating subject, missing or wrong-direction shadows, mismatched lighting, flat composite, harsh cut-out edges, perspective mismatch"
42135
42176
  }
@@ -42139,7 +42180,6 @@ var IMAGE_EDITS = [
42139
42180
  name: "Colorize B&W Photo",
42140
42181
  description: "Natural color from grayscale.",
42141
42182
  data: {
42142
- provider: "nano-banana-pro",
42143
42183
  promptPrefix: "Colorize this black-and-white photograph with natural, historically plausible color. Give skin realistic, even tones, and assign believable hues to clothing, foliage, sky, and materials. Preserve every original detail, grain, contrast, and the exact composition \u2014 add color only, never invent or remove content.",
42144
42184
  negativePrompt: "oversaturated, anachronistic colors, neon or cartoon tones, color bleeding outside edges, blotchy or uneven skin, lost detail, altered composition, added or hallucinated objects, washed-out contrast"
42145
42185
  }
@@ -42149,7 +42189,6 @@ var IMAGE_EDITS = [
42149
42189
  name: "Restore Old Photo",
42150
42190
  description: "Repair scratches, denoise, sharpen.",
42151
42191
  data: {
42152
- provider: "nano-banana-pro",
42153
42192
  promptPrefix: "Restore this old, damaged photograph: remove scratches, dust, creases, stains, and noise, repair torn or missing areas by reconstructing what is plainly there, and gently recover sharpness and tonal detail. Keep the result authentic and true to the original \u2014 preserve identity, era, natural film grain, and composition. Repair only; do not beautify, restyle, or invent new features.",
42154
42193
  negativePrompt: "over-smoothed, plastic skin, waxy or airbrushed look, hallucinated details, invented faces or objects, changing identity or age, removing authentic grain, modern restyling, oversharpening halos, altered composition"
42155
42194
  }
@@ -42159,7 +42198,6 @@ var IMAGE_EDITS = [
42159
42198
  name: "Relight Scene",
42160
42199
  description: "New lighting, same subject.",
42161
42200
  data: {
42162
- provider: "nano-banana-pro",
42163
42201
  prompt: "Relight the image with {lighting style || soft golden-hour key light from the left}. Re-derive highlights, shadows, ambient fill, and color temperature consistently across the whole frame for a believable, physically plausible result. Keep the subject, pose, expression, materials, and composition completely unchanged \u2014 only the lighting changes.",
42164
42202
  negativePrompt: "changing the subject, pose, expression, or composition, altering materials or clothing, flat or inconsistent lighting, blown-out highlights, crushed shadows, color casts on skin, double or contradictory light directions, repositioning anything"
42165
42203
  }
@@ -42169,7 +42207,6 @@ var IMAGE_EDITS = [
42169
42207
  name: "Restyle (whole image)",
42170
42208
  description: "Apply an art style to everything.",
42171
42209
  data: {
42172
- provider: "nano-banana-pro",
42173
42210
  prompt: "Restyle the entire image in a {art style || soft watercolor illustration} look, applying the style consistently to the subject, background, and every element. Keep the composition, subject placement, and the subject clearly recognizable \u2014 reinterpret texture, color, and rendering, not the underlying content or layout.",
42174
42211
  negativePrompt: "changing the composition or layout, moving or removing the subject, losing recognizability, applying the style to only part of the image, photorealistic patches, added or hallucinated objects, distorted anatomy, inconsistent style across the frame"
42175
42212
  }
@@ -42179,7 +42216,6 @@ var IMAGE_EDITS = [
42179
42216
  name: "Doodle Overlay",
42180
42217
  description: "Hand-drawn marker doodles on top \u2014 photo stays untouched.",
42181
42218
  data: {
42182
- provider: "nano-banana-pro",
42183
42219
  promptPrefix: "Layer playful hand-drawn doodles ON TOP of the reference photo while keeping every pixel of the underlying photograph completely unchanged \u2014 same people, same colors, same lighting, same crop. Doodle style: wobbly hand-drawn felt-tip marker lines in white with a few yellow accents, like quick sketches on a printed photo. Add: loose outline traces hugging one or two key shapes, small sparkles and stars, a hand-drawn thought cloud or speech bubble with a short witty handwritten phrase that reacts to what is actually happening in the photo, and simple arrows or underlines pointing at fun details. Outlines only \u2014 never fill shapes with color. Never cover faces or the main focal point; place doodles in empty areas like sky, walls or margins. Keep it balanced: four to seven doodle elements total, charming and confident, not cluttered. The photo is the hero \u2014 the doodles are the seasoning.",
42184
42220
  negativePrompt: "altered photo, restyled or recolored scene, redrawn subject, covered faces, filled color shapes, digital sticker or emoji look, vector clipart, cluttered doodles, garbled or misspelled handwriting, watermark, blurry"
42185
42221
  }
@@ -42189,10 +42225,50 @@ var IMAGE_EDITS = [
42189
42225
  name: "Doodle Overlay \xB7 Expressive",
42190
42226
  description: "Looser free-form doodles \u2014 the model improvises.",
42191
42227
  data: {
42192
- provider: "nano-banana-pro",
42193
42228
  promptPrefix: "Decorate the reference photo with expressive hand-drawn doodles layered on top, keeping the underlying photograph itself completely unchanged. Free, confident hand-drawn marker linework \u2014 wobbly outlines, sparkles, squiggles, little flames or hearts where they fit the mood, and a short handwritten phrase that responds cleverly to the content of the photo (never a generic clich\xE9). Mix of white and one or two bright accent colors. Outline style only, no filled shapes. Compose the doodles around the subject \u2014 never on top of faces or the focal point \u2014 using empty areas and edges. Loose, playful, zine-like energy: it should feel like a bored genius doodled on a printed photo. Keep the original image pixels intact beneath the doodle layer.",
42194
42229
  negativePrompt: "altered photo, restyled or recolored scene, covered faces, filled color blocks, sticker or clipart look, clich\xE9 phrases, garbled or misspelled handwriting, cluttered composition, watermark, blurry"
42195
42230
  }
42231
+ },
42232
+ {
42233
+ slug: "add-skin-realism",
42234
+ name: "Add Skin Realism",
42235
+ description: "Brings back visible skin texture \u2014 same person, same photo.",
42236
+ data: { provider: "nano-banana-2-1", aspectRatio: "auto", resolution: "2K", promptPrefix: REALISM_PASS_INSTRUCTION }
42237
+ },
42238
+ {
42239
+ slug: "natural-photo-finish",
42240
+ name: "Natural Photo Finish",
42241
+ description: "Takes out a rendered-looking finish, keeps the photo.",
42242
+ data: {
42243
+ provider: "nano-banana-2-1",
42244
+ aspectRatio: "auto",
42245
+ resolution: "2K",
42246
+ promptPrefix: `Keep this photo as it is and take out only what makes it look rendered: smoothed, waxy or airbrushed skin, a glow, over-sharpened edges, hair too perfect to be real. ${REALISM_FINISH} Otherwise the same people, framing, pose and background.`
42247
+ }
42248
+ },
42249
+ {
42250
+ slug: "phone-camera-look",
42251
+ name: "Phone Camera Look",
42252
+ description: "Re-finishes a photo as an everyday snapshot.",
42253
+ data: {
42254
+ provider: "nano-banana-2-1",
42255
+ aspectRatio: "auto",
42256
+ resolution: "2K",
42257
+ promptPrefix: `Re-finish this photo, changing nothing in it: ${REALISM_FINISH} Same people, framing, pose and background.`
42258
+ }
42259
+ },
42260
+ {
42261
+ slug: "undo-beauty-filter",
42262
+ name: "Undo Beauty Filter",
42263
+ description: "Reverses smoothing and reshaping on a real photo.",
42264
+ data: {
42265
+ provider: "seedream-5-pro",
42266
+ // "auto" keeps the photo's shape: this model lists no native "auto", so on either node the
42267
+ // run takes its listed ratio nearest the connected photo.
42268
+ aspectRatio: "auto",
42269
+ quality: "high",
42270
+ promptPrefix: "Undo the beauty filter on this photo: bring back the person's real skin texture, the natural shape of the face, jaw, nose and eyes, and the real colour of skin and lips. Change nothing else: the same person, expression, hair, clothing, framing and background."
42271
+ }
42196
42272
  }
42197
42273
  ];
42198
42274
  function editsFor(nodeType) {
@@ -42201,11 +42277,14 @@ function editsFor(nodeType) {
42201
42277
  name: p.name,
42202
42278
  description: p.description,
42203
42279
  group: "Edits",
42204
- data: p.data
42280
+ data: { provider: editProviderFor(nodeType), ...p.data }
42205
42281
  }));
42206
42282
  }
42207
42283
 
42208
42284
  // src/factory-presets/generate-image.ts
42285
+ var sentences = (...parts) => parts.join(" ");
42286
+ var REALISM_MODEL = { provider: "gpt-image-2", resolution: "2K" };
42287
+ var SKIN_STUDY_MODEL = { provider: "seedream-5-pro", quality: "high" };
42209
42288
  var GENERATE_IMAGE_PRESETS = [
42210
42289
  // ── Reference Sheet ──────────────────────────────────────────────────────
42211
42290
  {
@@ -42214,7 +42293,7 @@ var GENERATE_IMAGE_PRESETS = [
42214
42293
  description: "Connect a sharp, well-lit photo \u2192 dense character sheet; reuse it as a reference for consistent shots.",
42215
42294
  group: "Reference Sheet",
42216
42295
  data: {
42217
- provider: "nano-banana-pro",
42296
+ provider: "gpt-image-2",
42218
42297
  aspectRatio: "16:9",
42219
42298
  resolution: "2K",
42220
42299
  promptPrefix: `Create a single high-resolution, densely packed character reference sheet titled "CHARACTER BOARD" using the attached photo of the person as the single source of truth for face, hair, beard, eyes, skin tone and body proportions. The same person must appear in every panel \u2014 same age, same features. Outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the main portrait, metadata, and supporting panels to shift position naturally within the board. The panel arrangement can vary from generation to generation while remaining readable, balanced, and premium. Design the board so it works cleanly in different aspect ratios without depending on a fixed left-column structure. Include: A large hero portrait or 3/4-length character image, accompanied by a detailed metadata block: NAME \xB7 AGE \xB7 HEIGHT \xB7 BUILD \xB7 HAIR \xB7 EYES \xB7 FEATURES \xB7 OUTFIT (describe the exact clothing from the attached photo) \xB7 CHARACTER \xB7 MOOD. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body shots, neutral pose, identical outfit and lighting, neutral tan backdrop): FRONT \xB7 3/4 LEFT \xB7 SIDE LEFT \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 EXPRESSIONS (5 tight headshots, same lighting): CALM \xB7 LAUGHING \xB7 INTENSE \xB7 CONTEMPLATIVE \xB7 CONFIDENT. PANEL 03 \u2014 DETAILS (3 macros): face/eyes close-up \xB7 hand close-up (showing ring, watch or cuff) \xB7 distinctive outfit detail. PANEL 04 \u2014 OUTFIT FLAT-LAYS (5 isolated product shots on dark background): outerwear \xB7 top \xB7 bottom \xB7 footwear \xB7 main accessory. PANEL 05 \u2014 LIGHTING / MOOD (4 same-pose portraits under different lighting): SOFT WINDOW LIGHT \xB7 GOLDEN HOUR \xB7 COOL BLUE NIGHT \xB7 DRAMATIC RIM-LIGHT. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: "Use this character board as a visual reference for consistent depiction of the character across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42228,7 +42307,7 @@ var GENERATE_IMAGE_PRESETS = [
42228
42307
  description: "Connect a sharp photo \u2192 animation-ready pose & expression sheet; reuse it as a reference for consistent action.",
42229
42308
  group: "Reference Sheet",
42230
42309
  data: {
42231
- provider: "nano-banana-pro",
42310
+ provider: "gpt-image-2",
42232
42311
  aspectRatio: "16:9",
42233
42312
  resolution: "2K",
42234
42313
  promptPrefix: `Create a single high-resolution, densely packed pose reference sheet titled "POSE BOARD" using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, body proportions and outfit. The same person must appear in every panel \u2014 same age, same features, outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade animation-planning UI. The composition should feel organized but not rigidly locked: allow the hero figure, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large full-body hero shot in a relaxed standing pose with a metadata block: NAME \xB7 AGE \xB7 BUILD \xB7 HEIGHT \xB7 OUTFIT \xB7 POSE LANGUAGE \xB7 CENTER OF GRAVITY \xB7 DOMINANT HAND \xB7 PURPOSE. Also include five content groupings \u2014 render ALL five panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 BASIC POSES (5 full-body shots, identical outfit and lighting, neutral tan backdrop): STANDING \xB7 SITTING \xB7 WALKING \xB7 RUNNING \xB7 JUMPING. PANEL 02 \u2014 ACTION POSES (5 dynamic full-body shots with clear silhouettes): FIGHT STANCE \xB7 THROW \xB7 DODGE \xB7 CLIMB \xB7 LAND. PANEL 03 \u2014 EXPRESSIONS (5 tight headshots, same lighting): NEUTRAL \xB7 LAUGHING \xB7 ANGRY \xB7 SAD \xB7 SURPRISED. PANEL 04 \u2014 ANGLE COVERAGE (4 chest-up portraits): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK. PANEL 05 \u2014 COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: "Use this pose board as a visual reference for consistent posing of the character across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42242,7 +42321,7 @@ var GENERATE_IMAGE_PRESETS = [
42242
42321
  description: "Connect a photo \u2192 dense location sheet; reuse it as a reference for consistent scenes.",
42243
42322
  group: "Reference Sheet",
42244
42323
  data: {
42245
- provider: "nano-banana-pro",
42324
+ provider: "gpt-image-2",
42246
42325
  aspectRatio: "16:9",
42247
42326
  resolution: "2K",
42248
42327
  promptPrefix: `Create a single high-resolution, densely packed location reference sheet titled "LOCATION BOARD" using the attached photo of the location as the single source of truth for its architecture, atmosphere, lighting, materials and color palette. The space must be identical across every panel \u2014 same place, same materials, same era. All on-image labels in ENGLISH. Editorial location-reference board layout with a dark near-black background, thin yellow neon accent light on the far left, faint film-grain overlay, subtle cinematic interface elements, and production-grade location-scout UI. The composition should feel structured but not rigidly fixed: allow the hero location view, metadata, environmental studies, and supporting panels to shift position naturally within the board. The arrangement may vary from generation to generation while remaining readable, balanced, and premium. Design the board so it adapts cleanly to different aspect ratios without depending on a fixed left-column layout. Include a prominent hero shot of the location, ideally a wide establishing or defining view, accompanied by a detailed metadata block: NAME \xB7 TYPE (street / interior / exterior / forest) \xB7 ERA \xB7 SCALE (intimate / vast) ARCHITECTURE: (key features) MATERIALS: (stone, brick, wood, glass, etc.) ATMOSPHERE: (busy / quiet / eerie / romantic) DEFAULT TIME \xB7 DEFAULT WEATHER \xB7 PURPOSE (e.g. chase sequence, dialogue scene). Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 same-location shots, identical lighting): WIDE \xB7 MID \xB7 TIGHT \xB7 ALT ANGLE \xB7 OVERHEAD. PANEL 02 \u2014 TIME OF DAY (4 same-angle shots): DAWN \xB7 NOON \xB7 DUSK \xB7 NIGHT. PANEL 03 \u2014 DETAILS (2 macros): material/texture close-up \xB7 distinctive architectural detail. PANEL 04 \u2014 SET DRESSING / PROPS (5 isolated prop or signage studies on dark background): 5 key props or signage elements from the location. PANEL 05 \u2014 WEATHER / MOOD (4 same-angle shots): CLEAR SUNNY \xB7 OVERCAST \xB7 RAIN-SOAKED \xB7 MISTY FOG. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the location's dominant tones. Bottom caption: "Use this location board as a visual reference for consistent depiction of the environment across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42256,7 +42335,7 @@ var GENERATE_IMAGE_PRESETS = [
42256
42335
  description: "Connect a photo \u2192 dense product sheet; reuse it as a reference for consistent shots.",
42257
42336
  group: "Reference Sheet",
42258
42337
  data: {
42259
- provider: "nano-banana-pro",
42338
+ provider: "gpt-image-2",
42260
42339
  aspectRatio: "16:9",
42261
42340
  resolution: "2K",
42262
42341
  promptPrefix: `Create a single high-resolution, densely packed product reference sheet titled "PRODUCT BOARD" using the attached photo of the product as the single source of truth for its shape, materials, colorway, proportions, branding and finish. The same product must appear in every panel \u2014 identical model, identical colorway and markings. All on-image labels in ENGLISH. Editorial product-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade industrial-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero product shot with a metadata block: NAME \xB7 CATEGORY \xB7 BRAND \xB7 DIMENSIONS \xB7 WEIGHT \xB7 MATERIALS \xB7 FINISH \xB7 KEY FEATURES \xB7 COLORWAY. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 studio shots on a seamless background, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP. PANEL 02 \u2014 DETAILS (3 macros): material/texture close-up \xB7 seam/joint or mechanism \xB7 logo/branding detail. PANEL 03 \u2014 COLORWAYS (4 isolated shots of the same product in alternate finishes). PANEL 04 \u2014 SCALE (the product beside a common reference object, with a dimension callout). PANEL 05 \u2014 IN USE / CONTEXT (3 lifestyle shots in a real setting). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the product's materials and finish. Bottom caption: "Use this product board as a visual reference for consistent depiction of the product across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Studio.`,
@@ -42270,7 +42349,7 @@ var GENERATE_IMAGE_PRESETS = [
42270
42349
  description: "Connect a photo \u2192 dense wardrobe sheet; reuse it as a reference for consistent looks.",
42271
42350
  group: "Reference Sheet",
42272
42351
  data: {
42273
- provider: "nano-banana-pro",
42352
+ provider: "gpt-image-2",
42274
42353
  aspectRatio: "16:9",
42275
42354
  resolution: "2K",
42276
42355
  promptPrefix: `Create a single high-resolution, densely packed wardrobe reference sheet titled "OUTFIT BOARD" using the attached photo of the outfit as the single source of truth for its garments, fabrics, colorway, silhouette and styling. The same outfit must appear in every panel \u2014 identical garments, identical colors and trims. All on-image labels in ENGLISH. Editorial fashion-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade stylist UI. The composition should feel organized but not rigidly locked: allow the hero look, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero full-look shot with a metadata block: LOOK NAME \xB7 STYLE \xB7 SEASON \xB7 FABRICS \xB7 PALETTE \xB7 FIT \xB7 OCCASION. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 ON-BODY VIEWS (5 full-length shots, identical lighting): FRONT \xB7 3/4 LEFT \xB7 SIDE \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 FLAT-LAYS (5 isolated garment shots on a dark surface): top \xB7 bottom \xB7 outerwear \xB7 footwear \xB7 headwear. PANEL 03 \u2014 FABRIC & DETAIL (3 macros): weave/texture close-up \xB7 stitching or hardware \xB7 print or trim detail. PANEL 04 \u2014 ACCESSORIES (4 isolated accessory studies: bag \xB7 jewelry \xB7 belt \xB7 eyewear). PANEL 05 \u2014 COLORWAYS (3 alternate colorways of the same look). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the garments. Bottom caption: "Use this outfit board as a visual reference for consistent depiction of the wardrobe across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Editorial \xB7 Fashion.`,
@@ -42284,7 +42363,7 @@ var GENERATE_IMAGE_PRESETS = [
42284
42363
  description: "Connect a photo \u2192 set-dressing & props study; reuse it as a reference for consistent sets.",
42285
42364
  group: "Reference Sheet",
42286
42365
  data: {
42287
- provider: "nano-banana-pro",
42366
+ provider: "gpt-image-2",
42288
42367
  aspectRatio: "16:9",
42289
42368
  resolution: "2K",
42290
42369
  promptPrefix: `Create a single high-resolution, densely packed set-dressing reference sheet titled "SCENE BOARD" using the attached photo of the scene as the single source of truth for its props, set dressing, materials, signage and mood. The space and its contents must be consistent across every panel \u2014 same props, same materials, same era. All on-image labels in ENGLISH. Editorial set-decoration layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade art-department UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero establishing shot with a metadata block: SCENE NAME \xB7 TYPE \xB7 ERA \xB7 MOOD \xB7 KEY MATERIALS \xB7 PURPOSE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 KEY PROPS (5 isolated prop studies on a dark background). PANEL 02 \u2014 SIGNAGE / GRAPHICS (3 readable signage or printed-graphic elements from the scene). PANEL 03 \u2014 MATERIALS & TEXTURES (3 macros: surface \xB7 fabric/wood/metal \xB7 wear/patina). PANEL 04 \u2014 LAYOUT / BLOCKING (a simple top-down or wide diagram of where key elements sit). PANEL 05 \u2014 LIGHTING STATES (3 same-angle shots: day \xB7 practical-lit night \xB7 dramatic). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the scene's dominant tones. Bottom caption: "Use this scene board as a visual reference for consistent set dressing across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42298,7 +42377,7 @@ var GENERATE_IMAGE_PRESETS = [
42298
42377
  description: "Connect a sharp photo \u2192 dense creature sheet; reuse it as a reference for consistent shots.",
42299
42378
  group: "Reference Sheet",
42300
42379
  data: {
42301
- provider: "nano-banana-pro",
42380
+ provider: "gpt-image-2",
42302
42381
  aspectRatio: "16:9",
42303
42382
  resolution: "2K",
42304
42383
  promptPrefix: `Create a single high-resolution, densely packed creature reference sheet titled "CREATURE BOARD" using the attached photo of the creature as the single source of truth for its anatomy, silhouette, coloration, textures and features. The same creature must appear in every panel \u2014 identical species, identical markings and proportions. All on-image labels in ENGLISH. Editorial creature-design layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade concept-design UI. The composition should feel organized but not rigidly locked: allow the hero render, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero full-body render with a metadata block: NAME \xB7 SPECIES \xB7 SIZE \xB7 BUILD \xB7 COLORATION \xB7 TEXTURES \xB7 TEMPERAMENT \xB7 FEATURES \xB7 MOVEMENT \xB7 VOCALIZATION. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, neutral pose, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 POSES (4 dynamic full-body poses: idle \xB7 moving \xB7 alert \xB7 aggressive). PANEL 03 \u2014 DETAILS (3 macros): head/face close-up \xB7 hide/scale/fur texture \xB7 distinctive feature (claw, horn, fin). PANEL 04 \u2014 EXPRESSIONS (4 head studies showing temperament range). PANEL 05 \u2014 SCALE (the creature beside a human silhouette for size reference). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the creature's coloration. Bottom caption: "Use this creature board as a visual reference for consistent depiction of the creature across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42312,7 +42391,7 @@ var GENERATE_IMAGE_PRESETS = [
42312
42391
  description: "Connect a photo \u2192 dense vehicle sheet; reuse it as a reference for consistent shots.",
42313
42392
  group: "Reference Sheet",
42314
42393
  data: {
42315
- provider: "nano-banana-pro",
42394
+ provider: "gpt-image-2",
42316
42395
  aspectRatio: "16:9",
42317
42396
  resolution: "2K",
42318
42397
  promptPrefix: `Create a single high-resolution, densely packed vehicle reference sheet titled "VEHICLE BOARD" using the attached photo of the vehicle as the single source of truth for its body shape, proportions, paintwork, trim, wheels and condition. The same vehicle must appear in every panel \u2014 identical model, identical colorway, markings and wear. All on-image labels in ENGLISH. Editorial vehicle-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade transportation-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large three-quarter hero shot with a metadata block: NAME \xB7 TYPE \xB7 ERA \xB7 SCALE \xB7 BODY & MATERIALS \xB7 FINISH \xB7 SEATS \xB7 TOP SPEED \xB7 SIGNATURE FEATURE \xB7 ROLE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 studio shots, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 INTERIOR / CABIN (4 close shots): cockpit through the window \xB7 dashboard detail \xB7 seats or cargo area \xB7 driver POV. PANEL 03 \u2014 DETAIL MACROS (4): headlight or light cluster \xB7 wheel and tire \xB7 badge or panel line \xB7 paint and wear close-up. PANEL 04 \u2014 IN MOTION (4 staged frames): driving straight \xB7 cornering \xB7 parked on an incline \xB7 night with headlights on. PANEL 05 \u2014 LIGHTING / MOOD (4 same-angle hero shots): DESERT MIDDAY \xB7 GOLDEN HOUR \xB7 STORMY OVERCAST \xB7 NIGHT NEON. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the paintwork and trim. Bottom caption: "Use this vehicle board as a visual reference for consistent depiction of the vehicle across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42326,7 +42405,7 @@ var GENERATE_IMAGE_PRESETS = [
42326
42405
  description: "Connect a photo \u2192 dense dish sheet; reuse it as a reference for consistent food shots.",
42327
42406
  group: "Reference Sheet",
42328
42407
  data: {
42329
- provider: "nano-banana-pro",
42408
+ provider: "gpt-image-2",
42330
42409
  aspectRatio: "16:9",
42331
42410
  resolution: "2K",
42332
42411
  promptPrefix: `Create a single high-resolution, densely packed dish reference sheet titled "FOOD BOARD" using the attached photo of the dish as the single source of truth for its ingredients, plating, colors, textures and garnish. The same dish must appear in every panel \u2014 identical recipe, identical plating, bowl or plate, and props. All on-image labels in ENGLISH. Editorial culinary-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade food-styling UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large appetizing hero shot with a metadata block: DISH NAME \xB7 CUISINE \xB7 CATEGORY \xB7 KEY INGREDIENTS \xB7 TEXTURES \xB7 GARNISH \xB7 SERVED \xB7 AUDIENCE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 PLATING ANGLES (5 beauty shots, identical styling): TOP-DOWN \xB7 3/4 HERO \xB7 SIDE \xB7 EXTREME CLOSE-UP \xB7 IN HAND OR WITH UTENSIL. PANEL 02 \u2014 INGREDIENT BREAKDOWN (5 isolated ingredient studies on a dark background). PANEL 03 \u2014 DETAIL MACROS (4): surface texture \xB7 glaze or sauce sheen \xB7 steam or freshness cue \xB7 garnish detail. PANEL 04 \u2014 IN CONTEXT (4 staged frames): steam rising \xB7 utensil lifting a bite \xB7 sauce pour frozen mid-action \xB7 hands holding the dish. PANEL 05 \u2014 LIGHTING / MOOD (4 same-angle hero shots): WARM APPETIZING \xB7 COOL EDITORIAL \xB7 HARD COMMERCIAL \xB7 MOODY DRAMATIC. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the dish and plating. Bottom caption: "Use this food board as a visual reference for consistent depiction of the dish across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Commercial.`,
@@ -42340,7 +42419,7 @@ var GENERATE_IMAGE_PRESETS = [
42340
42419
  description: "Connect a mascot image \u2192 brand-character sheet with brand applications; reuse it for a consistent mascot.",
42341
42420
  group: "Reference Sheet",
42342
42421
  data: {
42343
- provider: "nano-banana-pro",
42422
+ provider: "gpt-image-2",
42344
42423
  aspectRatio: "16:9",
42345
42424
  resolution: "2K",
42346
42425
  promptPrefix: `Create a single high-resolution, densely packed mascot reference sheet titled "MASCOT BOARD" using the attached image of the mascot as the single source of truth for its design, proportions, colors, materials and personality. The same mascot must appear in every panel \u2014 identical design, identical colors and details \u2014 rendered in the mascot's native art style read from the attached image (illustrated, plush, costumed or 3D), never drifting between styles. All on-image labels in ENGLISH. Editorial brand-character layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade brand-design UI. The composition should feel organized but not rigidly locked: allow the hero pose, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero pose with a metadata block: MASCOT NAME \xB7 BRAND \xB7 CATEGORY \xB7 MATERIAL / STYLE \xB7 PERSONALITY \xB7 CATCHPHRASE \xB7 SIZE \xB7 USE CASES. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, identical lighting): FRONT \xB7 3/4 LEFT \xB7 SIDE \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 EXPRESSIONS (6 head studies): HAPPY \xB7 WAVING \xB7 SHOCKED \xB7 WINKING \xB7 SLEEPY \xB7 CURIOUS. PANEL 03 \u2014 DETAIL MACROS (3): face detail \xB7 material or texture close-up \xB7 signature accessory. PANEL 04 \u2014 BRAND APPLICATIONS (4 mockups): on product packaging \xB7 on a storefront sign \xB7 in a print ad \xB7 on merch. PANEL 05 \u2014 POSES (4 action poses): GREETING \xB7 CELEBRATING \xB7 PRESENTING \xB7 THUMBS-UP. PANEL 06 \u2014 BRAND COLOR PALETTE: 6 swatches with HEX codes from the mascot's colors. Bottom caption: "Use this mascot board as a visual reference for consistent depiction of the mascot across all generations." Bottom-right tags: STYLE \xB7 Brand \xB7 Character \xB7 Consistent.`,
@@ -42354,7 +42433,7 @@ var GENERATE_IMAGE_PRESETS = [
42354
42433
  description: "Connect a sharp photo \u2192 dense pet sheet; reuse it as a reference for consistent shots.",
42355
42434
  group: "Reference Sheet",
42356
42435
  data: {
42357
- provider: "nano-banana-pro",
42436
+ provider: "gpt-image-2",
42358
42437
  aspectRatio: "16:9",
42359
42438
  resolution: "2K",
42360
42439
  promptPrefix: `Create a single high-resolution, densely packed pet reference sheet titled "PET BOARD" using the attached photo of the pet as the single source of truth for its species, breed, coat colors, markings, eyes and build. The same animal must appear in every panel \u2014 identical markings, identical proportions, identical collar or accessories. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the hero portrait, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero portrait with a metadata block: NAME \xB7 SPECIES \xB7 BREED \xB7 AGE \xB7 SIZE \xB7 COAT & MARKINGS \xB7 EYES \xB7 COLLAR / ACCESSORIES \xB7 TEMPERAMENT \xB7 SIGNATURE BEHAVIOR. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, neutral stance, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 EXPRESSIONS & MOODS (6 head studies): ALERT \xB7 CURIOUS \xB7 PLAYFUL \xB7 SLEEPY \xB7 GRUMPY \xB7 HAPPY. PANEL 03 \u2014 DETAIL MACROS (4): eye close-up \xB7 coat or fur texture \xB7 paw detail \xB7 collar tag or accessory. PANEL 04 \u2014 POSES (5 natural poses): SITTING \xB7 LYING DOWN \xB7 WALKING \xB7 PLAYING \xB7 CURLED ASLEEP. PANEL 05 \u2014 LIGHTING / MOOD (4 same-pose portraits): SOFT WINDOW LIGHT \xB7 GOLDEN HOUR \xB7 COOL BLUE NIGHT \xB7 DRAMATIC RIM-LIGHT. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the coat and accessories. Bottom caption: "Use this pet board as a visual reference for consistent depiction of the pet across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42362,19 +42441,35 @@ var GENERATE_IMAGE_PRESETS = [
42362
42441
  negativePrompt: "illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed anatomy, inconsistent markings between panels, wrong breed, blurry, low resolution"
42363
42442
  }
42364
42443
  },
42444
+ {
42445
+ id: "generate-image/skin-detail-sheet",
42446
+ name: "Skin Detail Sheet",
42447
+ description: "Connect a sharp face photo \u2192 a six-panel skin reference.",
42448
+ group: "Reference Sheet",
42449
+ data: {
42450
+ ...SKIN_STUDY_MODEL,
42451
+ aspectRatio: "3:2",
42452
+ promptPrefix: sentences(
42453
+ 'Create a single skin detail reference sheet titled "SKIN DETAIL SHEET" from the attached photo of the person, the single source of truth for identity, skin tone and features. The same person, the same light and the same unretouched skin in every panel. Six panels \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 FULL FACE (front, eye level) \xB7 PANEL 02 \u2014 LEFT CHEEK & NOSE \xB7 PANEL 03 \u2014 RIGHT CHEEK & JAW \xB7 PANEL 04 \u2014 FOREHEAD & HAIRLINE \xB7 PANEL 05 \u2014 EYES & BROWS \xB7 PANEL 06 \u2014 LIPS & CHIN. In every panel:',
42454
+ REALISM_SKIN,
42455
+ "Flat, even daylight, neutral colour, everything sharp."
42456
+ ),
42457
+ promptSuffix: "Plain neutral grey background, thin white panel labels in English. Use this sheet as a visual reference for consistent skin detail of this person across generations."
42458
+ }
42459
+ },
42365
42460
  // ── Cast & Consistency (clean grids per the multi-character workflow:
42366
42461
  // sterile neutral-background reference grids built to be FED BACK as identity
42367
42462
  // anchors — unlike the editorial boards above, decoration here is noise.
42368
- // Nano Banana 2.1 (decided 2026-10-08 — it replaced Nano Banana 2, which the
42369
- // source guide recommended: cheaper/faster per attempt with strong practical
42370
- // consistency); 4K so panel faces stay sharp when reused as refs.) ──
42463
+ // GPT Image 2 (decided 2026-10-08 from the image model bake-off: it built the
42464
+ // best reference grid and kept both identities on the cast sheet); 4K so
42465
+ // panel faces stay sharp when reused as refs.) ──
42371
42466
  {
42372
42467
  id: "generate-image/character-reference-grid",
42373
42468
  name: "Character Reference Grid",
42374
42469
  description: "Connect a photo \u2192 clean 4-angle identity grid (no decorations) \u2014 the strongest consistency anchor.",
42375
42470
  group: "Cast & Consistency",
42376
42471
  data: {
42377
- provider: "nano-banana-2-1",
42472
+ provider: "gpt-image-2",
42378
42473
  aspectRatio: "3:4",
42379
42474
  resolution: "4K",
42380
42475
  promptPrefix: `Create a clean character reference grid using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, build and outfit. Four equal panels arranged in a tidy two-by-two grid on a single seamless neutral light-grey studio background: a tight front-facing portrait close-up, a 3/4-view portrait, a full-body shot from the front in a relaxed neutral stance, and a full-body shot from the back. The SAME person in every panel \u2014 identical age, features, hairstyle and outfit from the attached photo. Identical soft, even studio lighting in all four panels with no dramatic shadows. No decorations, no background props, no text, no UI elements \u2014 a sterile, production-neutral reference sheet built to be reused as an identity reference in later generations.`,
@@ -42388,7 +42483,7 @@ var GENERATE_IMAGE_PRESETS = [
42388
42483
  description: "Connect 2\u20134 character refs \u2192 one labeled cast sheet; then reference cast members by name in scenes.",
42389
42484
  group: "Cast & Consistency",
42390
42485
  data: {
42391
- provider: "nano-banana-2-1",
42486
+ provider: "gpt-image-2",
42392
42487
  aspectRatio: "3:4",
42393
42488
  resolution: "4K",
42394
42489
  prompt: `Create a clean multi-character cast reference sheet composed as horizontal strips stacked vertically in one image \u2014 one strip per character from the attached reference images, in the order they are attached, using exactly as many strips as there are attached characters. Each strip shows that character in four aligned studio panels: tight front portrait close-up \xB7 3/4 portrait \xB7 full body front \xB7 full body back, all in a relaxed neutral stance. Label each strip on the left edge with the character's name in clean bold lettering: {character names || ALEX \xB7 MAYA \xB7 SAM}. Every character must match their attached reference exactly \u2014 same face, hair, skin tone, build and outfit \u2014 with no identity blending between rows. Single seamless neutral light-grey studio background across the whole sheet, identical soft even lighting in every panel, consistent panel sizing and alignment. No decorations, no props, no UI elements beyond the row name labels. A sterile production casting sheet built to be reused as the single identity reference for this cast in later generations. Photorealistic, sharp focus, natural skin texture, true-to-life color.`,
@@ -42401,7 +42496,7 @@ var GENERATE_IMAGE_PRESETS = [
42401
42496
  description: "Connect a cast grid \u2192 stage a scene naming the characters; never re-describe their looks.",
42402
42497
  group: "Cast & Consistency",
42403
42498
  data: {
42404
- provider: "nano-banana-2-1",
42499
+ provider: "gpt-image-2",
42405
42500
  aspectRatio: "16:9",
42406
42501
  resolution: "2K",
42407
42502
  prompt: `Using the attached character reference sheet as the single source of truth for every named character's face, hair, build and outfit, generate one photorealistic scene: {scene || ALEX and MAYA share a quiet laugh at the counter of a sunlit ramen bar while SAM studies the menu}. Refer to the characters ONLY by the names labeled on the reference sheet and keep each one perfectly consistent with their reference row \u2014 do not invent new physical traits, do not blend identities, and do not alter outfits unless the scene says so. Stage them naturally in the environment with believable eye-lines, interactions and spacing. Cinematic photography, 35mm lens look with gentle depth of field, soft motivated lighting that matches the location, cohesive filmic color grade, natural skin texture, sharp detail on every character.`,
@@ -42485,7 +42580,7 @@ var GENERATE_IMAGE_PRESETS = [
42485
42580
  description: "Moody, shallow-depth portrait look.",
42486
42581
  group: "Photography & Cinematic",
42487
42582
  data: {
42488
- provider: "nano-banana-pro",
42583
+ provider: "gpt-image-2",
42489
42584
  aspectRatio: "9:16",
42490
42585
  prompt: "cinematic portrait of {subject || a pensive young man with stubble}, 85mm lens at f/1.8, shallow depth of field with creamy bokeh, soft key with warm rim separation against a moody low-key background, gentle film grain, filmic teal-and-amber grade, natural skin texture, tack-sharp eyes",
42491
42586
  negativePrompt: "flat lighting, deep focus, plastic skin, blown highlights, extra fingers, lowres, deformed, watermark, text"
@@ -42497,7 +42592,7 @@ var GENERATE_IMAGE_PRESETS = [
42497
42592
  description: "Film-grade scene, dramatic lighting.",
42498
42593
  group: "Photography & Cinematic",
42499
42594
  data: {
42500
- provider: "nano-banana-pro",
42595
+ provider: "gpt-image-2",
42501
42596
  aspectRatio: "16:9",
42502
42597
  prompt: "cinematic film still of {subject || a lone detective in a rain-slicked alley at night}, anamorphic lens at 40mm and f/2, shallow depth of field with oval bokeh and subtle horizontal flares, dramatic motivated key light with deep falloff, off-center framing with negative space, tense noir mood in a moody teal-and-amber grade, fine film grain, photoreal detail",
42503
42598
  negativePrompt: "flat lighting, deep focus, oversaturated, washed out, video-game render, lowres, deformed, watermark, text"
@@ -42521,7 +42616,7 @@ var GENERATE_IMAGE_PRESETS = [
42521
42616
  description: "Soft-lit 85mm studio headshot.",
42522
42617
  group: "Photography & Cinematic",
42523
42618
  data: {
42524
- provider: "nano-banana-pro",
42619
+ provider: "nano-banana-2-1",
42525
42620
  aspectRatio: "4:5",
42526
42621
  prompt: "studio portrait of {subject || a confident woman with sleek dark hair}, 85mm lens at f/2.8, shallow depth of field, soft octabox key with gentle fill and a subtle hair light, clean seamless gray backdrop, tight head-and-shoulders framing, polished editorial mood with a neutral true-to-life palette, natural skin texture, catchlights and tack-sharp eyes",
42527
42622
  negativePrompt: "harsh shadows, plastic skin, over-retouched, blown highlights, busy background, extra fingers, lowres, deformed, watermark, text"
@@ -42533,7 +42628,7 @@ var GENERATE_IMAGE_PRESETS = [
42533
42628
  description: "Clean professional headshot.",
42534
42629
  group: "Photography & Cinematic",
42535
42630
  data: {
42536
- provider: "nano-banana-pro",
42631
+ provider: "gpt-image-2",
42537
42632
  aspectRatio: "1:1",
42538
42633
  prompt: "professional corporate headshot of {subject || a friendly executive in a tailored navy blazer}, 85mm lens at f/4, soft even three-point lighting with a broad key and clean fill, smooth neutral gray-blue background, centered head-and-shoulders framing, approachable confident expression, crisp business mood with a clean neutral palette, sharp focus and natural skin texture",
42539
42634
  negativePrompt: "harsh shadows, busy background, casual snapshot, over-retouched, plastic skin, extra fingers, lowres, deformed, watermark, text"
@@ -42557,7 +42652,7 @@ var GENERATE_IMAGE_PRESETS = [
42557
42652
  description: "High-contrast editorial mono.",
42558
42653
  group: "Photography & Cinematic",
42559
42654
  data: {
42560
- provider: "nano-banana-pro",
42655
+ provider: "nano-banana-2-1",
42561
42656
  aspectRatio: "4:5",
42562
42657
  prompt: "black and white editorial portrait of {subject || a weathered old fisherman with a lined face}, 85mm lens at f/2, shallow depth of field, dramatic single-source chiaroscuro with deep falloff, tight off-center framing, timeless brooding mood with a rich high-contrast monochrome tonal range, deep blacks and luminous highlights, fine silver grain, sharp eyes and natural skin texture",
42563
42658
  negativePrompt: "color, muddy gray tones, flat lighting, low contrast, plastic skin, extra fingers, lowres, deformed, watermark, text"
@@ -42581,7 +42676,7 @@ var GENERATE_IMAGE_PRESETS = [
42581
42676
  description: "Appetizing 45\xB0 hero shot.",
42582
42677
  group: "Photography & Cinematic",
42583
42678
  data: {
42584
- provider: "nano-banana-pro",
42679
+ provider: "nano-banana-2-1",
42585
42680
  aspectRatio: "4:5",
42586
42681
  prompt: "appetizing hero food photograph of {dish || a rustic bowl of ramen with a soft-boiled egg}, 50mm lens at f/2.8, shallow depth of field, soft diffused window light from the side with a gentle fill, 45-degree angle on a weathered rustic surface, props and steam fading into a clean background, warm mouth-watering mood with natural color, fresh garnish, glistening textures and crisp focus on the hero",
42587
42682
  negativePrompt: "unappetizing, plastic look, fake glossy food, messy spills, dull colors, harsh flash, lowres, deformed, watermark, text"
@@ -42593,7 +42688,7 @@ var GENERATE_IMAGE_PRESETS = [
42593
42688
  description: "Overhead styled food spread.",
42594
42689
  group: "Photography & Cinematic",
42595
42690
  data: {
42596
- provider: "nano-banana-pro",
42691
+ provider: "gpt-image-2",
42597
42692
  aspectRatio: "1:1",
42598
42693
  prompt: "overhead flat-lay food photograph of {dish || a colorful brunch spread with coffee and pastries}, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room and scattered ingredients, fresh vibrant editorial mood with a clean color palette on a textured surface, crisp appetizing detail",
42599
42694
  negativePrompt: "cluttered, overcrowded, tilted angle, harsh shadows, plastic look, dull colors, lowres, deformed, watermark, text"
@@ -42630,7 +42725,7 @@ var GENERATE_IMAGE_PRESETS = [
42630
42725
  description: "Front / side / back, T-pose.",
42631
42726
  group: "Characters",
42632
42727
  data: {
42633
- provider: "nano-banana-pro",
42728
+ provider: "gpt-image-2",
42634
42729
  aspectRatio: "16:9",
42635
42730
  prompt: "full-body character turnaround model sheet of {character description || a rugged space mercenary with a scarred jaw and worn leather armor}, three matching views in a row \u2014 front, side profile, and back \u2014 held in a clean T-pose with a neutral expression, identical proportions and costume details across all three views, flat even studio lighting with no harsh shadows so every view reads the same, evenly spaced on a plain light-grey backdrop, crisp concept-art model-sheet style, clean line work and consistent color palette across panels",
42636
42731
  negativePrompt: "inconsistent design between views, mismatched proportions, extra limbs, deformed anatomy, dynamic pose, dramatic shadows, busy background, watermark, text"
@@ -42642,7 +42737,7 @@ var GENERATE_IMAGE_PRESETS = [
42642
42737
  description: "Four dynamic full-body poses.",
42643
42738
  group: "Characters",
42644
42739
  data: {
42645
- provider: "nano-banana-pro",
42740
+ provider: "gpt-image-2",
42646
42741
  aspectRatio: "16:9",
42647
42742
  prompt: "character action model sheet of {character description || a nimble rogue archer in a hooded green cloak}, four distinct full-body dynamic action poses in a row \u2014 running, leaping, attacking, landing \u2014 strictly consistent face, character design, and outfit across every pose, full-figure framing with confident gesture and clear silhouettes, even studio lighting that stays identical across all four poses, plain neutral backdrop, energetic concept-art model sheet, clean linework and matching color palette",
42648
42743
  negativePrompt: "inconsistent design between poses, changed outfit, deformed anatomy, extra limbs, fused figures, static stiff posture, busy background, watermark, text"
@@ -42654,7 +42749,7 @@ var GENERATE_IMAGE_PRESETS = [
42654
42749
  description: "6 emotions, 2 rows of 3.",
42655
42750
  group: "Characters",
42656
42751
  data: {
42657
- provider: "nano-banana-pro",
42752
+ provider: "nano-banana-2-1",
42658
42753
  aspectRatio: "4:3",
42659
42754
  prompt: "character expression model sheet of {character description || a cheerful freckled teen with messy red hair}, six head-and-shoulders portraits arranged in two even rows of three, labeled emotions in order \u2014 neutral, happy, angry, surprised, sad, determined \u2014 strictly consistent face, hairstyle, and features across every panel with only the expression changing, flat even portrait lighting identical in all six panels, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette",
42660
42755
  negativePrompt: "inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven lighting, busy background, watermark, garbled text"
@@ -42666,7 +42761,7 @@ var GENERATE_IMAGE_PRESETS = [
42666
42761
  description: "4\xD74 emotion grid, one face.",
42667
42762
  group: "Characters",
42668
42763
  data: {
42669
- provider: "nano-banana-pro",
42764
+ provider: "nano-banana-2-1",
42670
42765
  aspectRatio: "1:1",
42671
42766
  prompt: "16-panel character expression grid of {character description || a stoic silver-haired knight with a faint scar}, evenly spaced 4x4 layout of head-and-shoulders portraits, sixteen distinct facial emotions ranging from calm to intense, strictly consistent face, hairstyle, and design across every cell with only the expression changing, flat even portrait lighting identical in all panels, plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette",
42672
42767
  negativePrompt: "inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven panels, uneven lighting, busy background, watermark, text"
@@ -42678,7 +42773,7 @@ var GENERATE_IMAGE_PRESETS = [
42678
42773
  description: "Same character, 4 outfits.",
42679
42774
  group: "Characters",
42680
42775
  data: {
42681
- provider: "nano-banana-pro",
42776
+ provider: "gpt-image-2",
42682
42777
  aspectRatio: "16:9",
42683
42778
  prompt: "outfit variation model sheet of {character description || a confident young woman with a sleek dark bob}, the same character shown full-body in four different complete outfits side by side \u2014 casual, formal, athletic, seasonal \u2014 strictly consistent face, body, and hairstyle across all four with only the wardrobe changing, full-figure framing in a relaxed standing pose, flat even studio lighting identical across every panel, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, matching color palette and crisp fabric detail",
42684
42779
  negativePrompt: "inconsistent face, changed body or hairstyle, deformed, mismatched proportions, repeated identical outfit, busy background, watermark, text"
@@ -42702,7 +42797,7 @@ var GENERATE_IMAGE_PRESETS = [
42702
42797
  description: "Cute super-deformed poses.",
42703
42798
  group: "Characters",
42704
42799
  data: {
42705
- provider: "nano-banana-pro",
42800
+ provider: "nano-banana-2-1",
42706
42801
  aspectRatio: "1:1",
42707
42802
  prompt: "chibi character model sheet of {character description || a tiny brave knight with oversized armor}, adorable super-deformed proportions with a big head and small body, several cute mini full-body poses arranged across the sheet, strictly consistent design and color palette across every pose, soft even flat lighting identical across all poses, evenly spaced on a plain pastel backdrop, clean bold outlines and flat cel shading, charming concept-art model sheet",
42708
42803
  negativePrompt: "realistic proportions, inconsistent design, deformed, off-model, gritty shading, busy background, watermark, text"
@@ -42726,7 +42821,7 @@ var GENERATE_IMAGE_PRESETS = [
42726
42821
  description: "Dynamic full-body hero shot.",
42727
42822
  group: "Characters",
42728
42823
  data: {
42729
- provider: "nano-banana-pro",
42824
+ provider: "gpt-image-2-5-sunburst",
42730
42825
  aspectRatio: "2:3",
42731
42826
  prompt: "full-body hero shot of {character description || a heroic armored warrior with a flowing crimson cape}, cinematic character key art, confident dynamic power pose, dramatic rim lighting with a warm key and cool back-light carving the silhouette, low camera angle for an imposing heroic stance, softly blurred atmospheric background, bold dramatic color grade, intricately detailed costume and crisp material textures",
42732
42827
  negativePrompt: "flat lighting, static stiff pose, lowres, deformed, extra limbs, cropped feet, cluttered background, blurry, watermark, text"
@@ -42738,7 +42833,7 @@ var GENERATE_IMAGE_PRESETS = [
42738
42833
  description: "Concept creature, multi-angle.",
42739
42834
  group: "Characters",
42740
42835
  data: {
42741
- provider: "nano-banana-pro",
42836
+ provider: "gpt-image-2",
42742
42837
  aspectRatio: "16:9",
42743
42838
  prompt: "creature design model sheet of {creature description || a six-legged bioluminescent forest beast with mossy scales}, several full-body views from multiple angles plus inset anatomy and texture close-ups, strictly consistent species, markings, and proportions across every view, professional creature-concept art, flat even studio lighting identical across all views so the design reads clearly, neatly arranged on a plain neutral backdrop, detailed believable anatomy and crisp surface textures, cohesive color palette",
42744
42839
  negativePrompt: "inconsistent design between views, mismatched proportions, deformed anatomy, extra or missing limbs, dramatic shadows, busy background, watermark, text"
@@ -42750,7 +42845,7 @@ var GENERATE_IMAGE_PRESETS = [
42750
42845
  description: "Centered, bold, clean bg.",
42751
42846
  group: "Characters",
42752
42847
  data: {
42753
- provider: "nano-banana-pro",
42848
+ provider: "gpt-image-2",
42754
42849
  aspectRatio: "1:1",
42755
42850
  prompt: "stylized avatar profile picture of {character or subject || a friendly fox with bright amber eyes}, clean modern character illustration, bold thick outlines with smooth flat shading, soft even front lighting with a gentle glow, perfectly centered head-and-shoulders composition with comfortable margins, vibrant punchy color palette on a clean solid-color background, crisp friendly and instantly readable as a small icon",
42756
42851
  negativePrompt: "off-center, cropped face, busy background, lowres, deformed, muddy colors, harsh shadows, watermark, text"
@@ -42763,7 +42858,7 @@ var GENERATE_IMAGE_PRESETS = [
42763
42858
  description: "Clean e-commerce product photo on white.",
42764
42859
  group: "Product & Commerce",
42765
42860
  data: {
42766
- provider: "nano-banana-pro",
42861
+ provider: "gpt-image-2",
42767
42862
  aspectRatio: "1:1",
42768
42863
  prompt: "e-commerce studio product photograph of {product || a matte-black wireless headphone}, on a seamless pure-white background, 100mm lens at f/8 with deep focus, soft even high-key lighting from a large diffused softbox with gentle fill, perfectly centered with generous margins, clean catalog-ready mood with true-to-life color, crisp edges and accurate material texture",
42769
42864
  negativePrompt: "clutter, props, harsh shadows, blown highlights, color cast, reflections, tilted angle, lowres, deformed, watermark, text"
@@ -42787,7 +42882,7 @@ var GENERATE_IMAGE_PRESETS = [
42787
42882
  description: "Overhead styled arrangement.",
42788
42883
  group: "Product & Commerce",
42789
42884
  data: {
42790
- provider: "nano-banana-pro",
42885
+ provider: "gpt-image-2",
42791
42886
  aspectRatio: "1:1",
42792
42887
  prompt: "overhead flat-lay product photograph of {product || a leather travel wallet} surrounded by complementary props, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room around the hero, clean modern editorial mood with a cohesive palette on a textured surface, crisp material detail",
42793
42888
  negativePrompt: "cluttered, overcrowded, tilted angle, harsh shadows, dull colors, plastic look, lowres, deformed, watermark, text"
@@ -42799,7 +42894,7 @@ var GENERATE_IMAGE_PRESETS = [
42799
42894
  description: "Box / bottle / pouch render.",
42800
42895
  group: "Product & Commerce",
42801
42896
  data: {
42802
- provider: "nano-banana-pro",
42897
+ provider: "gpt-image-2",
42803
42898
  aspectRatio: "1:1",
42804
42899
  prompt: "photorealistic product packaging mockup of {product || an artisanal coffee brand}, presented as {format || a standing kraft pouch}, with a crisp accurately-printed label wrapping the form, 85mm lens at f/8 with deep focus, soft studio lighting with a subtle highlight and grounded contact shadow, centered hero composition on a clean seamless background, premium retail mood with true-to-life color, sharp legible label artwork and realistic material finish",
42805
42900
  negativePrompt: "distorted label, warped text, misspelled words, floating object, harsh shadows, clutter, lowres, deformed, watermark"
@@ -42823,7 +42918,7 @@ var GENERATE_IMAGE_PRESETS = [
42823
42918
  description: "Premium cosmetic hero shot.",
42824
42919
  group: "Product & Commerce",
42825
42920
  data: {
42826
- provider: "nano-banana-pro",
42921
+ provider: "nano-banana-2-1",
42827
42922
  aspectRatio: "4:5",
42828
42923
  prompt: "luxury beauty product hero shot of {product || a frosted-glass serum bottle with a gold dropper}, 100mm macro lens at f/8 with crisp focus, dramatic single-source key light with a soft gradient falloff and a bright specular edge, fresh water droplets beading on the surface, centered low hero angle on a premium glossy reflective surface, elegant high-end mood with a refined jewel-toned palette, immaculate detail and luminous reflections",
42829
42924
  negativePrompt: "cheap plastic look, fingerprints, dust, busy background, flat lighting, dull colors, lowres, deformed, watermark, text"
@@ -42970,7 +43065,7 @@ var GENERATE_IMAGE_PRESETS = [
42970
43065
  description: "Cinematic key art, title + tagline.",
42971
43066
  group: "Print & Posters",
42972
43067
  data: {
42973
- provider: "nano-banana-pro",
43068
+ provider: "gpt-image-2-5-sunburst",
42974
43069
  aspectRatio: "2:3",
42975
43070
  prompt: "theatrical movie poster for '{TITLE}', cinematic key art in a {genre || gritty sci-fi thriller} mood, dramatic vertical hero composition with a commanding central figure, moody atmospheric lighting with strong rim light and volumetric haze, rich filmic teal-and-amber color grade, bold title treatment along the bottom with a short tagline above it and a small billing-block strip, premium high-detail finish, legible correctly-spelled text",
42976
43071
  negativePrompt: "flat lighting, cluttered composition, amateurish layout, misspelled text, garbled letters, extra limbs, deformed faces, lowres, blurry, watermark"
@@ -42994,7 +43089,7 @@ var GENERATE_IMAGE_PRESETS = [
42994
43089
  description: "Genre cover, title + author.",
42995
43090
  group: "Print & Posters",
42996
43091
  data: {
42997
- provider: "nano-banana-pro",
43092
+ provider: "gpt-image-2-5-sunburst",
42998
43093
  aspectRatio: "2:3",
42999
43094
  prompt: "professional book cover for '{TITLE}' by {AUTHOR}, evocative {genre || literary thriller} mood and symbolic central imagery, vertical composition with a strong focal point, bold title typography across the top and the author name along the bottom with clear hierarchy, atmospheric lighting and a cohesive genre-appropriate color palette, refined bookstore-quality finish, legible correctly-spelled text",
43000
43095
  negativePrompt: "cluttered layout, clashing fonts, generic stock look, misspelled text, garbled letters, deformed faces, lowres, blurry, watermark"
@@ -43043,7 +43138,7 @@ var GENERATE_IMAGE_PRESETS = [
43043
43138
  description: "Cel-shaded anime look.",
43044
43139
  group: "Illustration & Art Styles",
43045
43140
  data: {
43046
- provider: "nano-banana-pro",
43141
+ provider: "gpt-image-2",
43047
43142
  aspectRatio: "16:9",
43048
43143
  style: "anime",
43049
43144
  prompt: "{scene or subject || a girl watching fireworks over a summer festival}, cel-shaded with crisp linework, expressive eyes, soft gradient sky, gentle bloom",
@@ -43056,7 +43151,7 @@ var GENERATE_IMAGE_PRESETS = [
43056
43151
  description: "Inked panel with action.",
43057
43152
  group: "Illustration & Art Styles",
43058
43153
  data: {
43059
- provider: "nano-banana-pro",
43154
+ provider: "gpt-image-2",
43060
43155
  aspectRatio: "4:3",
43061
43156
  style: "comic-book",
43062
43157
  prompt: "{scene || a caped hero landing on a rooftop at dusk}, dynamic comic panel composition, bold ink outlines, motion lines, clear space for a speech bubble",
@@ -43069,7 +43164,7 @@ var GENERATE_IMAGE_PRESETS = [
43069
43164
  description: "Screentone black-and-white.",
43070
43165
  group: "Illustration & Art Styles",
43071
43166
  data: {
43072
- provider: "nano-banana-pro",
43167
+ provider: "gpt-image-2",
43073
43168
  aspectRatio: "3:4",
43074
43169
  style: "manga",
43075
43170
  prompt: "{scene || a swordsman bracing against the wind}, black-and-white manga panel, crisp inking, screentone shading, dramatic low angle, speed lines",
@@ -43121,7 +43216,7 @@ var GENERATE_IMAGE_PRESETS = [
43121
43216
  description: "3/4 axonometric scene.",
43122
43217
  group: "Illustration & Art Styles",
43123
43218
  data: {
43124
- provider: "nano-banana-pro",
43219
+ provider: "gpt-image-2",
43125
43220
  aspectRatio: "1:1",
43126
43221
  style: "isometric",
43127
43222
  prompt: "isometric {building or scene || a cozy corner coffee shop}, true 3/4 axonometric angle, clean miniature game-art forms, soft even lighting, tidy modular detail",
@@ -43134,7 +43229,7 @@ var GENERATE_IMAGE_PRESETS = [
43134
43229
  description: "Retro low-res pixel grid.",
43135
43230
  group: "Illustration & Art Styles",
43136
43231
  data: {
43137
- provider: "nano-banana-pro",
43232
+ provider: "gpt-image-2",
43138
43233
  aspectRatio: "1:1",
43139
43234
  style: "pixel-art",
43140
43235
  prompt: "{subject || a hero exploring a torch-lit dungeon}, retro 16-bit pixel art, crisp pixel grid, limited dithered palette, hard-edged sprite detail",
@@ -43147,7 +43242,7 @@ var GENERATE_IMAGE_PRESETS = [
43147
43242
  description: "Polished CG character look.",
43148
43243
  group: "Illustration & Art Styles",
43149
43244
  data: {
43150
- provider: "nano-banana-pro",
43245
+ provider: "gpt-image-2",
43151
43246
  aspectRatio: "1:1",
43152
43247
  style: "pixar-3d",
43153
43248
  prompt: "{character or subject || a curious round-cheeked kid with big expressive eyes}, polished 3D animated render, soft subsurface skin, warm key light with gentle bounce, charming appeal",
@@ -43172,7 +43267,7 @@ var GENERATE_IMAGE_PRESETS = [
43172
43267
  description: "Bold linework, isolated.",
43173
43268
  group: "Illustration & Art Styles",
43174
43269
  data: {
43175
- provider: "nano-banana-pro",
43270
+ provider: "gpt-image-2-5-sunburst",
43176
43271
  aspectRatio: "2:3",
43177
43272
  prompt: "tattoo flash design of {subject || a roaring tiger with peony flowers} in {tattoo style || bold American traditional} style, confident clean linework with strong outlines, limited tattoo-ink palette, solid black fills and tasteful negative space, single centered motif isolated on a plain white sheet",
43178
43273
  negativePrompt: "photographic background, scene, soft gradients, photorealistic, fine grayscale shading, blurry, lowres, watermark, text"
@@ -43184,7 +43279,7 @@ var GENERATE_IMAGE_PRESETS = [
43184
43279
  description: "Painterly pre-production art.",
43185
43280
  group: "Illustration & Art Styles",
43186
43281
  data: {
43187
- provider: "nano-banana-pro",
43282
+ provider: "gpt-image-2",
43188
43283
  aspectRatio: "16:9",
43189
43284
  style: "concept-art",
43190
43285
  prompt: "concept art of {environment or subject || ancient ruins reclaimed by a glowing jungle}, sweeping sense of scale, atmospheric depth and haze, dramatic god-ray light",
@@ -43200,7 +43295,7 @@ var GENERATE_IMAGE_PRESETS = [
43200
43295
  description: "Plasticine stop-motion look, thumbprints included.",
43201
43296
  group: "Handmade & Stop-Motion",
43202
43297
  data: {
43203
- provider: "nano-banana-pro",
43298
+ provider: "gpt-image-2",
43204
43299
  aspectRatio: "16:9",
43205
43300
  prompt: "{scene || a tiny clay fisherman rowing across a stormy plasticine sea}, tactile stop-motion claymation scene \u2014 real plasticine clay characters and set with visible thumbprints, tool marks, seam lines and a soft matte sheen, miniature studio photography with shallow depth of field and warm practical lighting, handmade Aardman-quality charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a physically sculpted miniature scene photographed on a real stop-motion stage",
43206
43301
  negativePrompt: "smooth plastic CGI surface, digital 3d render, 2d illustration, cartoon shading, perfect seamless surfaces, real human actors, lowres, deformed, watermark, text"
@@ -43212,7 +43307,7 @@ var GENERATE_IMAGE_PRESETS = [
43212
43307
  description: "Fuzzy felted-wool miniature.",
43213
43308
  group: "Handmade & Stop-Motion",
43214
43309
  data: {
43215
- provider: "nano-banana-pro",
43310
+ provider: "gpt-image-2",
43216
43311
  aspectRatio: "1:1",
43217
43312
  prompt: "{subject || a round little fox curled in a mossy nest}, needle-felted wool sculpture \u2014 soft wool roving with visible fluffy fibers and a halo of stray strands, glass-bead eyes with a tiny sheen, embroidered nose and stitched details, handcrafted miniature photographed in a cozy diorama with soft window light, Laika-quality handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 real felted wool photographed up close",
43218
43313
  negativePrompt: "smooth plastic surface, digital 3d render, 2d illustration, real animal fur, photorealistic animal, hard CGI edges, lowres, deformed, watermark, text"
@@ -43224,7 +43319,7 @@ var GENERATE_IMAGE_PRESETS = [
43224
43319
  description: "Stitched-sock character on stage.",
43225
43320
  group: "Handmade & Stop-Motion",
43226
43321
  data: {
43227
- provider: "nano-banana-pro",
43322
+ provider: "gpt-image-2",
43228
43323
  aspectRatio: "4:3",
43229
43324
  prompt: "{character || a cheerful sock-puppet chef holding a tiny wooden spoon}, handmade sock puppet \u2014 thick cotton knit texture, stitched felt mouth, ping-pong-ball eyes with painted pupils, yarn hair, visible seams and hot-glue details, puppet-studio photography with soft even lighting and a simple stage backdrop, Henson-style handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a real fabric puppet photographed on a puppet stage",
43230
43325
  negativePrompt: "smooth CGI fabric, digital 3d render, 2d illustration, human face, realistic skin, plastic toy look, lowres, deformed, watermark, text"
@@ -43236,7 +43331,7 @@ var GENERATE_IMAGE_PRESETS = [
43236
43331
  description: "Cut-cardboard craft set, tape & paint.",
43237
43332
  group: "Handmade & Stop-Motion",
43238
43333
  data: {
43239
- provider: "nano-banana-pro",
43334
+ provider: "gpt-image-2",
43240
43335
  aspectRatio: "16:9",
43241
43336
  prompt: "{scene || a rocket launching over a tiny cardboard city}, handmade cardboard-craft diorama \u2014 corrugated cardboard structures with visible cut edges, masking tape, hot-glue joints and hand-painted acrylic surfaces, hand-lettered signs, miniature set photography with warm practical lighting and gentle depth of field, Michel Gondry handmade-prop charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a real cardboard miniature set photographed in studio",
43242
43337
  negativePrompt: "clean vector shapes, digital 3d render, 2d illustration, smooth plastic surfaces, real buildings, photoreal city, lowres, deformed, watermark, garbled text"
@@ -43248,7 +43343,7 @@ var GENERATE_IMAGE_PRESETS = [
43248
43343
  description: "Hand-stitched thread on hooped linen.",
43249
43344
  group: "Handmade & Stop-Motion",
43250
43345
  data: {
43251
- provider: "nano-banana-pro",
43346
+ provider: "gpt-image-2",
43252
43347
  aspectRatio: "1:1",
43253
43348
  prompt: "{subject || a songbird on a blossoming branch} rendered as fine hand embroidery \u2014 visible individual thread stitches, satin-stitch fills and chain-stitch outlines, subtle thread sheen, slight fabric pucker around dense stitching, hooped natural linen background with a few loose thread tails, soft daylight craft photography, artisan needlework quality. NOT digital CG, NOT a 3D render, NOT 2D illustration, NOT a print \u2014 real stitched thread on real fabric",
43254
43349
  negativePrompt: "printed fabric, flat digital illustration, 3d render, smooth painted texture, photorealistic subject, lowres, deformed, watermark, text"
@@ -43260,7 +43355,7 @@ var GENERATE_IMAGE_PRESETS = [
43260
43355
  description: "Plasticine dish styled as a commercial.",
43261
43356
  group: "Handmade & Stop-Motion",
43262
43357
  data: {
43263
- provider: "nano-banana-pro",
43358
+ provider: "nano-banana-2-1",
43264
43359
  aspectRatio: "4:5",
43265
43360
  prompt: "{dish || a steaming bowl of ramen with a soft egg and curled noodles} sculpted entirely from plasticine modeling clay and styled as a glossy food commercial \u2014 visible sculpting tool marks, clear gloss varnish standing in for broth sheen, wool-tuft steam, clay ingredients with charming hand-modeled imperfection, miniature studio food-commercial lighting with a warm appetizing key, Aardman-quality handmade charm. NOT real food photography, NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a physically sculpted clay dish photographed like a commercial",
43266
43361
  negativePrompt: "real food, photorealistic food, digital 3d render, 2d illustration, smooth plastic CGI, melted shapeless clay, unappetizing, lowres, watermark, text"
@@ -43309,7 +43404,7 @@ var GENERATE_IMAGE_PRESETS = [
43309
43404
  description: "Single cohesive aesthetic tile.",
43310
43405
  group: "Film & Storyboard",
43311
43406
  data: {
43312
- provider: "nano-banana-pro",
43407
+ provider: "gpt-image-2",
43313
43408
  aspectRatio: "1:1",
43314
43409
  prompt: "single cohesive mood-board tile capturing {aesthetic or theme || warm Scandinavian minimalism}, one unified evocative image \u2014 not a collage or grid, soft natural lighting with gentle texture and tactile materials, balanced editorial composition, restrained {color palette || muted oat, sage and terracotta} grade, calm atmospheric mood, crisp tasteful detail",
43315
43410
  negativePrompt: "collage, grid, split panels, multiple frames, text, labels, busy clutter, watermark, lowres"
@@ -43358,7 +43453,7 @@ var GENERATE_IMAGE_PRESETS = [
43358
43453
  description: "Bright, inviting listing shot.",
43359
43454
  group: "Architecture & Interiors",
43360
43455
  data: {
43361
- provider: "nano-banana-pro",
43456
+ provider: "gpt-image-2",
43362
43457
  aspectRatio: "16:9",
43363
43458
  prompt: "professional real estate photograph of {property || a bright open-concept living room with patio doors}, wide-angle architectural lens with straight true verticals and corrected perspective, bright airy natural daylight balanced with warm interior fill for a high-dynamic-range look, clean tasteful staging with uncluttered surfaces, welcoming aspirational mood with a fresh neutral palette, accurate geometry and crisp listing-ready detail",
43364
43459
  negativePrompt: "distorted geometry, warped perspective, bent verticals, fisheye bulge, dark, dingy, cluttered, lowres, watermark, text"
@@ -43383,7 +43478,7 @@ var GENERATE_IMAGE_PRESETS = [
43383
43478
  description: "Glossy RPG inventory icon.",
43384
43479
  group: "Icons, Game Assets & Textures",
43385
43480
  data: {
43386
- provider: "nano-banana-pro",
43481
+ provider: "gpt-image-2",
43387
43482
  aspectRatio: "1:1",
43388
43483
  prompt: "polished RPG inventory game icon of {item || a glowing enchanted health potion in a crystal vial}, rounded glossy 3D style with smooth beveled edges and a subtle inner glow, soft studio key light with a bright specular highlight and a faint magical rim, single object perfectly centered with generous margins, isolated on a clean dark gradient background, vibrant saturated game-art palette, crisp readable silhouette at small sizes",
43389
43484
  negativePrompt: "flat, 2d, lowres, cluttered background, multiple objects, busy scene, harsh shadows, watermark, text"
@@ -43395,7 +43490,7 @@ var GENERATE_IMAGE_PRESETS = [
43395
43490
  description: "Tileable PBR-style material.",
43396
43491
  group: "Icons, Game Assets & Textures",
43397
43492
  data: {
43398
- provider: "nano-banana-pro",
43493
+ provider: "gpt-image-2",
43399
43494
  aspectRatio: "1:1",
43400
43495
  prompt: "seamless tileable PBR-style surface texture of {material || weathered mossy cobblestone}, perfectly repeating with no visible seams, dead-flat top-down orthographic view, even diffuse flat lighting across the whole frame with no shadows or hotspots, edges that wrap cleanly when tiled, fine high-resolution material detail, true-to-life color, crisp uniform grain",
43401
43496
  negativePrompt: "visible seams, perspective, lighting gradient, shadows, vignette, hotspots, single object, foreground subject, lowres, watermark, text"
@@ -43419,7 +43514,7 @@ var GENERATE_IMAGE_PRESETS = [
43419
43514
  description: "Glossy 3D emoji variations.",
43420
43515
  group: "Icons, Game Assets & Textures",
43421
43516
  data: {
43422
- provider: "nano-banana-pro",
43517
+ provider: "gpt-image-2",
43423
43518
  aspectRatio: "1:1",
43424
43519
  prompt: "a set of glossy 3D emoji-style reaction icons of {subject || a round smiling yellow face}, several distinct expressions arranged in an even grid \u2014 happy, laughing, surprised, sad, angry, love \u2014 strictly consistent style, shading, and proportions across every icon with only the expression changing, smooth rounded inflatable forms with a candy-gloss finish, soft even studio lighting identical on each icon with a bright specular highlight, evenly spaced on a clean plain background, vibrant saturated palette, crisp and instantly readable at small sizes",
43425
43520
  negativePrompt: "inconsistent style, mismatched shading, off-model, realistic photo, flat 2d, muddy colors, cluttered background, lowres, watermark, text"
@@ -43431,7 +43526,7 @@ var GENERATE_IMAGE_PRESETS = [
43431
43526
  description: "Game-ready pixel sprite.",
43432
43527
  group: "Icons, Game Assets & Textures",
43433
43528
  data: {
43434
- provider: "nano-banana-pro",
43529
+ provider: "gpt-image-2",
43435
43530
  aspectRatio: "1:1",
43436
43531
  style: "pixel-art",
43437
43532
  prompt: "game-ready sprite of {character or item || a plucky knight with a tiny sword}, crisp clean pixels, bold readable silhouette, limited palette, centered on a plain background",
@@ -43445,7 +43540,7 @@ var GENERATE_IMAGE_PRESETS = [
43445
43540
  description: "Backlit subject, dramatic sky.",
43446
43541
  group: "Photography & Cinematic",
43447
43542
  data: {
43448
- provider: "nano-banana-pro",
43543
+ provider: "gpt-image-2",
43449
43544
  aspectRatio: "16:9",
43450
43545
  prompt: "dramatic silhouette of {subject || a lone figure on a hilltop with arms outstretched}, 50mm lens at f/8 with crisp deep focus, subject fully backlit against a vivid sunset sky and rendered as a clean dark shape with a glowing rim, low-angle composition with the figure off-center on the horizon, bold high-contrast mood in a fiery orange-to-purple gradient, smooth graded sky, minimal interior detail and clean recognizable outline",
43451
43546
  negativePrompt: "flat lighting, front lighting, visible face detail, washed-out sky, muddy tones, lowres, deformed, watermark, text"
@@ -43469,7 +43564,7 @@ var GENERATE_IMAGE_PRESETS = [
43469
43564
  description: "Fake-miniature selective blur.",
43470
43565
  group: "Photography & Cinematic",
43471
43566
  data: {
43472
- provider: "nano-banana-pro",
43567
+ provider: "gpt-image-2",
43473
43568
  aspectRatio: "16:9",
43474
43569
  prompt: "tilt-shift miniature photograph of {scene || a bustling city intersection with tiny cars and crowds}, tilt-shift lens with a narrow band of sharp focus and strong blur above and below, high elevated bird's-eye angle, tiny people and vehicles reading like toys, centered subject band, playful diorama mood with punchy high saturation and crisp clean detail in the focus zone",
43475
43570
  negativePrompt: "uniform sharp focus, eye-level angle, flat colors, dull lighting, realistic scale, lowres, deformed, watermark, text"
@@ -43482,7 +43577,7 @@ var GENERATE_IMAGE_PRESETS = [
43482
43577
  description: "Objects arranged at 90\xB0.",
43483
43578
  group: "Product & Commerce",
43484
43579
  data: {
43485
- provider: "nano-banana-pro",
43580
+ provider: "gpt-image-2",
43486
43581
  aspectRatio: "1:1",
43487
43582
  prompt: "knolling flat-lay photograph of {items || an everyday-carry kit \u2014 knife, pen, watch, wallet and keys}, every object precisely aligned at ninety-degree right angles and evenly spaced in a tidy grid, 35mm lens at f/8 with even edge-to-edge focus, perfect top-down ninety-degree angle, soft diffused overhead light with gentle even shadows, organized symmetrical composition with consistent gaps, satisfying orderly editorial mood with a clean palette on a smooth neutral surface, crisp product detail",
43488
43583
  negativePrompt: "cluttered, messy, overlapping objects, diagonal placement, uneven spacing, tilted angle, harsh shadows, lowres, deformed, watermark, text"
@@ -43494,7 +43589,7 @@ var GENERATE_IMAGE_PRESETS = [
43494
43589
  description: "Invisible-mannequin clothing shot.",
43495
43590
  group: "Product & Commerce",
43496
43591
  data: {
43497
- provider: "nano-banana-pro",
43592
+ provider: "nano-banana-2-1",
43498
43593
  aspectRatio: "4:5",
43499
43594
  prompt: "ghost-mannequin apparel photograph of {garment || a tailored wool blazer}, invisible-mannequin hollow three-dimensional effect with the garment holding its worn shape and a visible hollow neckline and cuffs, 85mm lens at f/8 with deep focus, soft even studio lighting from large diffusers with a subtle grounding shadow, centered front-facing composition on a clean pure-white background, crisp commercial e-commerce mood with true-to-life color, accurate fabric texture and sharp seams",
43500
43595
  negativePrompt: "visible mannequin, body, person, neck, hands, flat lifeless shape, wrinkles, color cast, lowres, deformed, watermark, text"
@@ -43513,14 +43608,14 @@ var GENERATE_IMAGE_PRESETS = [
43513
43608
  name: "Vaporwave",
43514
43609
  description: "80s neon pastel aesthetic.",
43515
43610
  group: "Illustration & Art Styles",
43516
- data: { provider: "nano-banana-pro", aspectRatio: "16:9", style: "vaporwave", prompt: "{subject || a marble bust beside a glowing palm tree}, neon pink-and-cyan glow, retro grid horizon, dreamy gradient sunset, subtle VHS haze", negativePrompt: "muted colors, photorealistic, dull, lowres, watermark, text" }
43611
+ data: { provider: "gpt-image-2", aspectRatio: "16:9", style: "vaporwave", prompt: "{subject || a marble bust beside a glowing palm tree}, neon pink-and-cyan glow, retro grid horizon, dreamy gradient sunset, subtle VHS haze", negativePrompt: "muted colors, photorealistic, dull, lowres, watermark, text" }
43517
43612
  },
43518
43613
  {
43519
43614
  id: "generate-image/cyberpunk-scene",
43520
43615
  name: "Cyberpunk Scene",
43521
43616
  description: "Neon-lit dystopian night.",
43522
43617
  group: "Illustration & Art Styles",
43523
- data: { provider: "nano-banana-pro", aspectRatio: "16:9", style: "cyberpunk", prompt: "{scene || a crowded neon market street}, rain-slicked night with glowing reflections, holographic signage, dense atmospheric haze, moody teal-and-magenta glow", negativePrompt: "daylight, flat lighting, washed out, lowres, deformed, watermark, text" }
43618
+ data: { provider: "gpt-image-2", aspectRatio: "16:9", style: "cyberpunk", prompt: "{scene || a crowded neon market street}, rain-slicked night with glowing reflections, holographic signage, dense atmospheric haze, moody teal-and-magenta glow", negativePrompt: "daylight, flat lighting, washed out, lowres, deformed, watermark, text" }
43524
43619
  },
43525
43620
  {
43526
43621
  id: "generate-image/pop-art",
@@ -43534,21 +43629,21 @@ var GENERATE_IMAGE_PRESETS = [
43534
43629
  name: "Low Poly",
43535
43630
  description: "Faceted geometric 3D.",
43536
43631
  group: "Illustration & Art Styles",
43537
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", style: "low-poly", prompt: "{subject || a stylized mountain fox}, faceted triangular geometry, crisp flat-shaded polygons, clean gradient color blocking, soft studio light", negativePrompt: "smooth surfaces, rounded organic detail, photorealistic, lowres, watermark, text" }
43632
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", style: "low-poly", prompt: "{subject || a stylized mountain fox}, faceted triangular geometry, crisp flat-shaded polygons, clean gradient color blocking, soft studio light", negativePrompt: "smooth surfaces, rounded organic detail, photorealistic, lowres, watermark, text" }
43538
43633
  },
43539
43634
  {
43540
43635
  id: "generate-image/paper-cut",
43541
43636
  name: "Paper Cut",
43542
43637
  description: "Layered cut-paper craft.",
43543
43638
  group: "Illustration & Art Styles",
43544
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", style: "paper-cutout", prompt: "{subject || a fox in a layered forest}, layered cut-paper craft, stacked depth with soft drop shadows between layers, clean torn-and-cut edges, warm tactile palette", negativePrompt: "photorealistic, flat single-layer, smooth gradients, lowres, watermark, text" }
43639
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", style: "paper-cutout", prompt: "{subject || a fox in a layered forest}, layered cut-paper craft, stacked depth with soft drop shadows between layers, clean torn-and-cut edges, warm tactile palette", negativePrompt: "photorealistic, flat single-layer, smooth gradients, lowres, watermark, text" }
43545
43640
  },
43546
43641
  {
43547
43642
  id: "generate-image/stained-glass",
43548
43643
  name: "Stained Glass",
43549
43644
  description: "Leaded colored-glass mosaic.",
43550
43645
  group: "Illustration & Art Styles",
43551
- data: { provider: "nano-banana-pro", aspectRatio: "2:3", style: "stained-glass", prompt: "{subject || a phoenix rising in flames}, bold black leading lines between glowing colored glass panes, luminous backlit jewel tones, symmetrical mosaic composition", negativePrompt: "photorealistic, flat, muddy colors, broken composition, lowres, watermark, text" }
43646
+ data: { provider: "gpt-image-2-5-sunburst", aspectRatio: "2:3", style: "stained-glass", prompt: "{subject || a phoenix rising in flames}, bold black leading lines between glowing colored glass panes, luminous backlit jewel tones, symmetrical mosaic composition", negativePrompt: "photorealistic, flat, muddy colors, broken composition, lowres, watermark, text" }
43552
43647
  },
43553
43648
  // ── Diagrams & Infographics ──────────────────────────────────────────────
43554
43649
  {
@@ -43598,7 +43693,7 @@ var GENERATE_IMAGE_PRESETS = [
43598
43693
  name: "X-Ray / See-Through",
43599
43694
  description: "Internal-structure radiograph look.",
43600
43695
  group: "Illustration & Art Styles",
43601
- data: { provider: "nano-banana-pro", aspectRatio: "4:3", prompt: "x-ray see-through render of {subject || a blooming flower}, translucent body revealing the internal structure and skeleton beneath, glowing luminous white-and-cyan lines on a deep black background, crisp radiograph aesthetic, centered specimen composition", negativePrompt: "opaque solid surface, full color, photorealistic skin, cluttered background, lowres, watermark, text" }
43696
+ data: { provider: "gpt-image-2", aspectRatio: "4:3", prompt: "x-ray see-through render of {subject || a blooming flower}, translucent body revealing the internal structure and skeleton beneath, glowing luminous white-and-cyan lines on a deep black background, crisp radiograph aesthetic, centered specimen composition", negativePrompt: "opaque solid surface, full color, photorealistic skin, cluttered background, lowres, watermark, text" }
43602
43697
  },
43603
43698
  // ── More Icons, Game Assets & Textures ───────────────────────────────────
43604
43699
  {
@@ -43606,7 +43701,7 @@ var GENERATE_IMAGE_PRESETS = [
43606
43701
  name: "3D Icon",
43607
43702
  description: "Glossy single 3D-rendered icon.",
43608
43703
  group: "Icons, Game Assets & Textures",
43609
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", prompt: "a single glossy 3D rendered icon of {subject || a friendly chat bubble}, smooth rounded clay-like form with soft beveled edges, soft studio key light with a gentle gradient falloff, a bright specular highlight and a soft contact shadow, perfectly centered with generous padding, isolated on a clean plain background, vibrant cohesive palette, crisp and readable at small sizes", negativePrompt: "flat, 2d, multiple objects, cluttered background, harsh shadows, photographic scene, lowres, watermark, text" }
43704
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", prompt: "a single glossy 3D rendered icon of {subject || a friendly chat bubble}, smooth rounded clay-like form with soft beveled edges, soft studio key light with a gentle gradient falloff, a bright specular highlight and a soft contact shadow, perfectly centered with generous padding, isolated on a clean plain background, vibrant cohesive palette, crisp and readable at small sizes", negativePrompt: "flat, 2d, multiple objects, cluttered background, harsh shadows, photographic scene, lowres, watermark, text" }
43610
43705
  },
43611
43706
  // ── More Architecture & Interiors ────────────────────────────────────────
43612
43707
  {
@@ -43625,7 +43720,7 @@ var GENERATE_IMAGE_PRESETS = [
43625
43720
  },
43626
43721
  // ── Portrait Transformations (identity-locked, from a connected reference photo) ──
43627
43722
  // Like Stylized Subject, these are TRANSFORM presets: connect a clean front-facing
43628
- // reference portrait and nano-banana-pro rebuilds it. The "Timeless Soul" age
43723
+ // reference portrait and GPT Image 2 rebuilds it. The "Timeless Soul" age
43629
43724
  // progression renders ONE person at several ages in a single studio composite — the
43630
43725
  // whole effect rides on the identity-lock clause (same eyes/brow/nose/ears/bone
43631
43726
  // structure), so it stays one person aging rather than several different people.
@@ -43635,7 +43730,7 @@ var GENERATE_IMAGE_PRESETS = [
43635
43730
  description: "One person at 5 ages, studio line-up. Needs a reference photo.",
43636
43731
  group: "Portrait Transformations",
43637
43732
  data: {
43638
- provider: "nano-banana-pro",
43733
+ provider: "gpt-image-2",
43639
43734
  aspectRatio: "3:4",
43640
43735
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: a child around 7, a teen around 15, a young adult around 27, a mature adult around 45, and an elder around 70. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines and wrinkles, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate wardrobe per stage. Even soft cinematic studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the five figures fill the frame.",
43641
43736
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, extra fingers, blurry, lowres, watermark, text"
@@ -43647,7 +43742,7 @@ var GENERATE_IMAGE_PRESETS = [
43647
43742
  description: "Same person at 3 ages (~10 / 40 / 75). Needs a reference photo.",
43648
43743
  group: "Portrait Transformations",
43649
43744
  data: {
43650
- provider: "nano-banana-pro",
43745
+ provider: "gpt-image-2",
43651
43746
  aspectRatio: "3:4",
43652
43747
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image as a three-age triptych, shoulder-to-shoulder left to right: around age 10, around age 40, and around age 75. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all three, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft cinematic studio key light with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the three figures fill the frame.",
43653
43748
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43659,7 +43754,7 @@ var GENERATE_IMAGE_PRESETS = [
43659
43754
  description: "Monochrome age line-up. Needs a reference photo.",
43660
43755
  group: "Portrait Transformations",
43661
43756
  data: {
43662
- provider: "nano-banana-pro",
43757
+ provider: "gpt-image-2",
43663
43758
  aspectRatio: "3:4",
43664
43759
  promptPrefix: "Single black-and-white photorealistic studio composite of the SAME person from the reference image rendered at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: around 7, 15, 27, 45, and 70. Fine-art monochrome portraiture, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, greying hair, and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft studio key light with gentle rim separation, clean dark-grey gradient backdrop. Deep tonal range from rich blacks to clean highlights, fine silver-gelatin film grain, tack-sharp facial detail; the five figures fill the frame.",
43665
43760
  negativePrompt: "color, color tint, different person, inconsistent face between figures, distorted features, identity drift across ages, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43671,7 +43766,7 @@ var GENERATE_IMAGE_PRESETS = [
43671
43766
  description: "Same person across the '80s\u20132020s. Needs a reference photo.",
43672
43767
  group: "Portrait Transformations",
43673
43768
  data: {
43674
- provider: "nano-banana-pro",
43769
+ provider: "gpt-image-2",
43675
43770
  aspectRatio: "3:4",
43676
43771
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image across five decades, shoulder-to-shoulder left to right with a smooth age progression and period-accurate styling: a 1980s child, a 1990s teen, a 2000s young adult, a 2010s adult, and a 2020s mature adult. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color, and a slight shift in facial fullness. Style each to its decade in hair and wardrobe with a subtle period-accurate film treatment per decade: 1980s bold colors and big hair, 1990s casual grunge, 2000s frosted tips, 2010s clean modern, 2020s contemporary. Even soft studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the five figures fill the frame.",
43677
43772
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across decades, anachronistic styling, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43683,7 +43778,7 @@ var GENERATE_IMAGE_PRESETS = [
43683
43778
  description: "Same person in spring / summer / autumn / winter. Needs a reference photo.",
43684
43779
  group: "Portrait Transformations",
43685
43780
  data: {
43686
- provider: "nano-banana-pro",
43781
+ provider: "gpt-image-2",
43687
43782
  aspectRatio: "3:4",
43688
43783
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image in four seasonal looks, shoulder-to-shoulder left to right: spring, summer, autumn, and winter. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference \u2014 this is seasons, not aging. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY wardrobe, hair styling and a subtle seasonal color grade change. Spring: light pastel layers, fresh airy tone. Summer: light tee, warm sunny tone. Autumn: knit sweater, golden amber tone. Winter: coat and scarf, cool crisp tone. Even soft studio key light with a gentle seasonal color cast and rim separation per figure, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.",
43689
43784
  negativePrompt: "different person, inconsistent face between figures, distorted features, aging, age differences between figures, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43695,7 +43790,7 @@ var GENERATE_IMAGE_PRESETS = [
43695
43790
  description: "Same person at dawn / midday / golden hour / night. Needs a reference photo.",
43696
43791
  group: "Portrait Transformations",
43697
43792
  data: {
43698
- provider: "nano-banana-pro",
43793
+ provider: "gpt-image-2",
43699
43794
  aspectRatio: "3:4",
43700
43795
  promptPrefix: "Single photorealistic composite of the SAME person from the reference image across four times of day, shoulder-to-shoulder left to right: dawn, midday, golden hour, and night. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY the lighting and color temperature change between figures. Dawn: soft cool blue light. Midday: bright neutral daylight. Golden hour: warm amber backlight with a gentle glow. Night: moody low light with a cool rim. Consistent chest-up framing and a clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.",
43701
43796
  negativePrompt: "different person, inconsistent face between figures, distorted features, aging, age differences between figures, blown highlights, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43707,7 +43802,7 @@ var GENERATE_IMAGE_PRESETS = [
43707
43802
  description: "You in an oversized team jersey, studio editorial. Needs a reference photo.",
43708
43803
  group: "Portrait Transformations",
43709
43804
  data: {
43710
- provider: "nano-banana-pro",
43805
+ provider: "nano-banana-2-1",
43711
43806
  aspectRatio: "4:5",
43712
43807
  prompt: "Premium studio editorial portrait of the SAME person from the reference image wearing an oversized modern football jersey in the colors of {team || deep crimson and gold}. Sports-fashion editorial photography, 85mm lens at f/2, shallow depth of field with the subject tack-sharp against a softly blurred background. CRITICAL identity lock \u2014 same eyes, brow, nose, ears, jawline and facial bone structure, unmistakably the same person, exact skin tone preserved. Soft directional stadium-spotlight key with natural shadow depth and a subtle rim; gradient backdrop in the jersey colors with a faint geometric pattern and soft pitch markings; gentle atmospheric haze and light film grain. Confident, relaxed three-quarter pose, rich saturated grade. Crisp fabric weave and clean jersey graphics.",
43713
43808
  negativePrompt: "different person, inconsistent face, distorted features, altered skin tone, distorted or garbled logo, misspelled team name, deformed, extra fingers, blurry, lowres, watermark, text artifacts"
@@ -43715,10 +43810,99 @@ var GENERATE_IMAGE_PRESETS = [
43715
43810
  },
43716
43811
  // ── Stylized Subject + Edits (shared with the deprecating modify-image) ──
43717
43812
  // Transform patterns — work here when a reference image is connected
43718
- // (nano-banana-pro edits it while preserving untouched regions). The
43813
+ // (GPT Image 2.5 Flare edits it while preserving untouched regions). The
43719
43814
  // instruction lives in the prompt, not `style`.
43720
43815
  ...stylizedSubjectFor("generate-image"),
43721
- ...editsFor("generate-image")
43816
+ ...editsFor("generate-image"),
43817
+ // ── Realism & Authentic ──────────────────────────────────────────────────
43818
+ {
43819
+ id: "generate-image/unretouched-portrait",
43820
+ name: "Unretouched Portrait",
43821
+ description: "Straight-on head-and-shoulders portrait, real skin, everyday finish.",
43822
+ group: "Realism & Authentic",
43823
+ data: {
43824
+ ...REALISM_MODEL,
43825
+ aspectRatio: "3:4",
43826
+ prompt: sentences("{subject || An adult woman in her thirties with dark shoulder-length hair}, a straight-on head-and-shoulders portrait at eye level against a plain pale wall, soft daylight from one side.", REALISM_SKIN, REALISM_FINISH)
43827
+ }
43828
+ },
43829
+ {
43830
+ id: "generate-image/phone-selfie",
43831
+ name: "Phone Selfie",
43832
+ description: "Eye-level, arm's-length self-portrait look.",
43833
+ group: "Realism & Authentic",
43834
+ data: {
43835
+ ...REALISM_MODEL,
43836
+ aspectRatio: "3:4",
43837
+ prompt: sentences("{subject || An adult woman in her late twenties with her hair tied back}, {setting || on a couch at home, a cushion and a lamp behind}.", realismViewpoint(NEUTRAL_PERSON), realismEmptyHands(NEUTRAL_PERSON), REALISM_SKIN, REALISM_FINISH)
43838
+ }
43839
+ },
43840
+ {
43841
+ id: "generate-image/candid-snapshot",
43842
+ name: "Candid Phone Snapshot",
43843
+ description: "Caught mid-moment, an everyday snapshot.",
43844
+ group: "Realism & Authentic",
43845
+ data: {
43846
+ ...REALISM_MODEL,
43847
+ aspectRatio: "3:4",
43848
+ prompt: sentences("{subject || An adult man in his thirties} caught mid-moment, not posing, glancing away, the framing a little crooked, part of the scene cut by the edge, {setting || at a kitchen table at home}.", REALISM_SKIN, REALISM_FINISH)
43849
+ }
43850
+ },
43851
+ {
43852
+ id: "generate-image/mirror-selfie",
43853
+ name: "Mirror Selfie",
43854
+ description: "Mirror self-portrait, phone in hand.",
43855
+ group: "Realism & Authentic",
43856
+ data: {
43857
+ ...REALISM_MODEL,
43858
+ aspectRatio: "9:16",
43859
+ prompt: sentences("{subject || An adult woman in her twenties} photographs their reflection in a full-length mirror {setting || in a hallway at home}, a phone held at chest height with its back toward the mirror.", REALISM_SKIN, REALISM_FINISH)
43860
+ }
43861
+ },
43862
+ {
43863
+ id: "generate-image/creator-at-home",
43864
+ name: "Creator at Home \xB7 Waist-Up",
43865
+ description: "A waist-up reference of the same person \u2014 wire a face photo into the references.",
43866
+ group: "Realism & Authentic",
43867
+ data: {
43868
+ ...REALISM_MODEL,
43869
+ aspectRatio: "9:16",
43870
+ prompt: sentences("Waist-up photo of {image:1:person}, an adult, standing at home in front of a plain wall, arms relaxed, empty hands.", REALISM_SKIN, REALISM_FINISH)
43871
+ }
43872
+ },
43873
+ {
43874
+ id: "generate-image/video-call-frame",
43875
+ name: "Webcam / Video-Call Frame",
43876
+ description: "Chest-up video-call framing.",
43877
+ group: "Realism & Authentic",
43878
+ data: {
43879
+ ...REALISM_MODEL,
43880
+ aspectRatio: "16:9",
43881
+ prompt: sentences("{subject || An adult man in his forties}, chest-up, a little off-centre, slightly wide, seen from a fixed point just above eye level about an arm's length away, a softly lit room behind, flat even light from the front.", REALISM_FINISH)
43882
+ }
43883
+ },
43884
+ {
43885
+ id: "generate-image/macro-skin-study",
43886
+ name: "Macro Skin Study",
43887
+ description: "A close study of one area of skin.",
43888
+ group: "Realism & Authentic",
43889
+ data: {
43890
+ ...SKIN_STUDY_MODEL,
43891
+ aspectRatio: "1:1",
43892
+ prompt: sentences("{feature || the left cheek and the side of the nose} of {subject || an adult woman in her thirties}, filling the frame, everything sharp front to back, flat cool daylight, neutral colour, a plain study of the skin, not a glamour shot.", REALISM_SKIN)
43893
+ }
43894
+ },
43895
+ {
43896
+ id: "generate-image/product-in-hand",
43897
+ name: "Product in Hand \u2014 phone photo",
43898
+ description: "Wire a photo of the product into the references.",
43899
+ group: "Realism & Authentic",
43900
+ data: {
43901
+ ...REALISM_MODEL,
43902
+ aspectRatio: "3:4",
43903
+ prompt: sentences("{subject || An adult woman in her thirties} holds {image:1:product} at chest height toward the viewer, label facing out, {setting || in a bright room at home}.", REALISM_FINISH)
43904
+ }
43905
+ }
43722
43906
  ];
43723
43907
 
43724
43908
  // src/factory-presets/generate-video.ts
@@ -46177,6 +46361,16 @@ var IMAGE_TO_TEXT_PRESETS = [
46177
46361
  description: "Image \u2192 text-to-image prompt.",
46178
46362
  group: "Creative",
46179
46363
  data: { detailLevel: "detailed", customPrompt: "Describe this image as a detailed text-to-image generation prompt: subject, style, lighting, composition and lens. Return only the prompt." }
46364
+ },
46365
+ {
46366
+ id: "image-to-text/realism-audit",
46367
+ name: "Realism Audit",
46368
+ description: "Lists the signs an image was generated, with a count.",
46369
+ group: "Creative",
46370
+ data: {
46371
+ detailLevel: "structured",
46372
+ customPrompt: 'Check this image for signs that it was generated rather than photographed. Answer each question yes or no, with a few words why. 1. Is the skin smooth, waxy or airbrushed, with no visible pores? 2. Is the face unusually symmetrical, or are the teeth unnaturally even and white? 3. Are any hands or fingers malformed, merged or the wrong count? 4. Is any text, logo or sign garbled? 5. Is the background blurred far more than an everyday snapshot would be? 6. Are the catchlights in the eyes perfect rings, or identical in both eyes? 7. Is the hair uniformly perfect, with no flyaways? 8. Do edges look over-sharpened or haloed? 9. Is there a glow or bloom on the skin? 10. Do shadows or reflections disagree with the light? Finish with one line: "Tells found: N of 10".'
46373
+ }
46180
46374
  }
46181
46375
  ];
46182
46376
 
@@ -46822,12 +47016,17 @@ function groupFactoryPresets(presets) {
46822
47016
  }
46823
47017
 
46824
47018
  // src/factory-presets/index.ts
47019
+ function forModifyImage(p) {
47020
+ const provider = p.data.provider;
47021
+ const imageToImage = typeof provider === "string" ? T2I_TO_I2I_VARIANT[provider] : void 0;
47022
+ return imageToImage ? { ...p, data: { ...p.data, provider: imageToImage } } : p;
47023
+ }
46825
47024
  var FACTORY_PRESETS = {
46826
47025
  "generate-image": GENERATE_IMAGE_PRESETS,
46827
47026
  // modify-image shares the Stylized Subject + Edits catalogs with generate-image
46828
47027
  // (single source of truth in STYLIZED_SUBJECT / IMAGE_EDITS). modify-image is
46829
47028
  // slated for deprecation in favor of generate-image — when removed, drop this key.
46830
- "modify-image": [...stylizedSubjectFor("modify-image"), ...editsFor("modify-image")],
47029
+ "modify-image": [...stylizedSubjectFor("modify-image"), ...editsFor("modify-image")].map(forModifyImage),
46831
47030
  "generate-video": GENERATE_VIDEO_PRESETS,
46832
47031
  "text-to-speech": TEXT_TO_SPEECH_PRESETS,
46833
47032
  "text-to-audio": TEXT_TO_AUDIO_PRESETS,
@@ -47477,23 +47676,23 @@ function planFrameDelivery(args) {
47477
47676
  ...requested === "reference" && !args.supportsReferenceImages ? { refusedReason: "no-reference-support" } : {}
47478
47677
  };
47479
47678
  }
47480
- const cap = VIDEO_REF_LIMITS_BY_PROVIDER[args.provider ?? ""]?.images;
47481
- if (cap !== void 0 && userRefs.length + frames.length > cap) {
47679
+ const cap2 = VIDEO_REF_LIMITS_BY_PROVIDER[args.provider ?? ""]?.images;
47680
+ if (cap2 !== void 0 && userRefs.length + frames.length > cap2) {
47482
47681
  return { delivery: "frame", referenceImageUrls: userRefs, promptSuffix: "", refusedReason: "image-cap" };
47483
47682
  }
47484
47683
  const referenceImageUrls = [...userRefs];
47485
- const sentences = [];
47684
+ const sentences2 = [];
47486
47685
  if (args.startFrameUrl) {
47487
47686
  referenceImageUrls.push(args.startFrameUrl);
47488
47687
  if (!promptBindsFirstFrame(args.prompt)) {
47489
- sentences.push(REF_BINDING.frame(referenceImageUrls.length, "opening"));
47688
+ sentences2.push(REF_BINDING.frame(referenceImageUrls.length, "opening"));
47490
47689
  }
47491
47690
  }
47492
47691
  if (args.endFrameUrl) {
47493
47692
  referenceImageUrls.push(args.endFrameUrl);
47494
- sentences.push(REF_BINDING.frame(referenceImageUrls.length, "closing"));
47693
+ sentences2.push(REF_BINDING.frame(referenceImageUrls.length, "closing"));
47495
47694
  }
47496
- return { delivery: "reference", referenceImageUrls, promptSuffix: sentences.join(" ") };
47695
+ return { delivery: "reference", referenceImageUrls, promptSuffix: sentences2.join(" ") };
47497
47696
  }
47498
47697
 
47499
47698
  // src/character-motion-diagnostics.ts
@@ -47637,6 +47836,6 @@ function computeNodeSendText(nodeType, data, args) {
47637
47836
  }
47638
47837
  }
47639
47838
 
47640
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, AD_CREATIVE_ANALYSIS_FIELDS, AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT, 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, AURORA_SWEEP_STYLE, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BODY_CAPTIONS_PRESET_ID, 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, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CHARACTER_ART_FAMILIES, CHARACTER_ART_FILES, CHARACTER_ART_PATH, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEBRIS_SHOWER_STYLE, DEFAULT_IDENTITY_LOCK, DEFAULT_OWN_MOTION, 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, GARDEN_BLOOM_STYLE, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, HOOK_PLATE_PRESET_ID, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTANT_CUT_CLAUSE, 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, LOOK_PREVIEW_SETS, 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, OWN_MOTION_NODE_TYPES, 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_ART_PATH, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_CONTENT_ANALYSIS_SYSTEM_PROMPT, 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, SAKURA_PETALS_STYLE, SAND_STORM_STYLE, SCENE3D_FIGURE_REFERENCE_RULE, SCENE3D_FREE_PLATE_SLOTS, SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE, SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE, SCENE3D_LAYOUT_SCOPING_FOR, SCENE3D_LAYOUT_SCOPING_IGNORE, SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE, SCENE3D_LAYOUT_SCOPING_MARKER, SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SEEDANCE_VIDEO_EDIT_PREFIX, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SMOKE_PUFF_STYLE, SNIPPET_MEDIA_VALUES, SOUND_ART, SOUND_ART_FILES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, 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_REQUIRED_NODE_TYPES, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_OPTION_FIELDS, TRANSITION_POSITIONS, TRANSITION_STYLE_FIELD, 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, WHITE_FLASH_STYLE, WIPE_DIRECTION, WIRED_OUTPUT_NODE_TYPES, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, appendPromptHints, appendReferenceLines, appendScene3DStillScopingLines, applyMinorAgeFloorToPickerValues, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, asBodyClauses, assembleImageInput, assembleSunoInput, blendedCutClause, buildActionFxHints, buildActionFxTerms, buildAdCreativeAnalysisUserText, 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, buildScene3DLayoutScopingLine, buildScene3DUnreferencedFiguresWarning, buildScenePrompt, buildSeedanceVideoEditPrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogGuardActive, catalogPacksVersion, characterArtPath, characterLockToRefLock, characterSectionArtPath, characterSectionSlug, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeAiWriterInput, computeLlmChatFields, computeNodePrompt, computeNodeSendText, computePackSidecarCoverage, computeScriptTopic, 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, getCharacterMotion, getCharacterMotionBindings, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, 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, getTransitionOptions, 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, hasScene3DLayoutScopingLine, hasUpstreamCharacter, hookPlateCaptionSegments, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isBlendableTransition, isDeniedStyleId, isInstantTransition, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinHintFragments, joinPromptHints, joinPromptParts, joinSentences, keepableDirectionHints, listPickerCatalogs, lookPreviewStillUrl, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, ownMotionHint, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, pickerOptionImageUrl, pickerSectionImageUrl, planFrameDelivery, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, readTransitionOptionValues, referenceDescriptionLine, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDescribedReferenceLines, renderDirectionHintClauses, renderDirectionHints, renderReferenceCaptionLines, renderScene3DLayoutScopingLine, renderStructuredFields, renderStyleSection, renderSubjectHints, renderTransitionBases, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, scene3DLayoutVideoCaptions, sectionedClauseCosts, setComposedCatalogResolver, soundArtFilePath, soundArtPath, splitStyleSection, stripAudioTags, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
47839
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, AD_CREATIVE_ANALYSIS_FIELDS, AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT, 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, AURORA_SWEEP_STYLE, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BODY_CAPTIONS_PRESET_ID, 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, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CHARACTER_ART_FAMILIES, CHARACTER_ART_FILES, CHARACTER_ART_PATH, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEBRIS_SHOWER_STYLE, DEFAULT_IDENTITY_LOCK, DEFAULT_OWN_MOTION, 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, GARDEN_BLOOM_STYLE, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, HOOK_PLATE_PRESET_ID, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTANT_CUT_CLAUSE, 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, LOOK_PREVIEW_SETS, 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, NEUTRAL_PERSON, 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, OWN_MOTION_NODE_TYPES, 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_ART_PATH, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_CONTENT_ANALYSIS_SYSTEM_PROMPT, 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, REALISM_FINISH, REALISM_PASS_INSTRUCTION, REALISM_SKIN, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, RETIRED_ADULT_ONLY_HINT_STRINGS, SAKURA_PETALS_STYLE, SAND_STORM_STYLE, SCENE3D_FIGURE_REFERENCE_RULE, SCENE3D_FREE_PLATE_SLOTS, SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE, SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE, SCENE3D_LAYOUT_SCOPING_FOR, SCENE3D_LAYOUT_SCOPING_IGNORE, SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE, SCENE3D_LAYOUT_SCOPING_MARKER, SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SEEDANCE_VIDEO_EDIT_PREFIX, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SMOKE_PUFF_STYLE, SNIPPET_MEDIA_VALUES, SOUND_ART, SOUND_ART_FILES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, 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_REQUIRED_NODE_TYPES, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_OPTION_FIELDS, TRANSITION_POSITIONS, TRANSITION_STYLE_FIELD, 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, WHITE_FLASH_STYLE, WIPE_DIRECTION, WIRED_OUTPUT_NODE_TYPES, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, appendPromptHints, appendReferenceLines, appendScene3DStillScopingLines, applyMinorAgeFloorToPickerValues, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, asBodyClauses, assembleImageInput, assembleSunoInput, blendedCutClause, buildActionFxHints, buildActionFxTerms, buildAdCreativeAnalysisUserText, 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, buildScene3DLayoutScopingLine, buildScene3DUnreferencedFiguresWarning, buildScenePrompt, buildSeedanceVideoEditPrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogGuardActive, catalogPacksVersion, characterArtPath, characterLockToRefLock, characterSectionArtPath, characterSectionSlug, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeAiWriterInput, computeLlmChatFields, computeNodePrompt, computeNodeSendText, computePackSidecarCoverage, computeScriptTopic, 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, getCharacterMotion, getCharacterMotionBindings, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, 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, getTransitionOptions, 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, hasScene3DLayoutScopingLine, hasUpstreamCharacter, hookPlateCaptionSegments, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isBlendableTransition, isDeniedStyleId, isInstantTransition, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinHintFragments, joinPromptHints, joinPromptParts, joinSentences, keepableDirectionHints, listPickerCatalogs, lookPreviewStillUrl, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, ownMotionHint, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, pickerOptionImageUrl, pickerSectionImageUrl, planFrameDelivery, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, readTransitionOptionValues, realismEmptyHands, realismViewpoint, referenceDescriptionLine, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDescribedReferenceLines, renderDirectionHintClauses, renderDirectionHints, renderReferenceCaptionLines, renderScene3DLayoutScopingLine, renderStructuredFields, renderStyleSection, renderSubjectHints, renderTransitionBases, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, scene3DLayoutVideoCaptions, sectionedClauseCosts, setComposedCatalogResolver, soundArtFilePath, soundArtPath, splitStyleSection, stripAudioTags, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
47641
47840
  //# sourceMappingURL=index.js.map
47642
47841
  //# sourceMappingURL=index.js.map