@nodaro/prompts 1.17.2 → 1.19.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
@@ -4244,6 +4244,21 @@ function buildTemporalTerms(data) {
4244
4244
  return collectTemporalFragments(data, getTemporalTerm);
4245
4245
  }
4246
4246
 
4247
+ // src/hint-join.ts
4248
+ var ENDS_SENTENCE = /[.!?]$/;
4249
+ function joinHintFragments(fragments) {
4250
+ let out = "";
4251
+ for (const fragment of fragments) {
4252
+ if (!fragment) continue;
4253
+ if (!out) {
4254
+ out = fragment;
4255
+ continue;
4256
+ }
4257
+ out += ENDS_SENTENCE.test(out) ? ` ${fragment}` : `, ${fragment}`;
4258
+ }
4259
+ return out;
4260
+ }
4261
+
4247
4262
  // src/camera-motions.ts
4248
4263
  var CAMERA_MOTIONS = [
4249
4264
  // Basic
@@ -4284,28 +4299,28 @@ var CAMERA_MOTIONS = [
4284
4299
  label: "Pan Left",
4285
4300
  category: "pan",
4286
4301
  description: "Rotate camera horizontally to the left",
4287
- promptHint: "slow camera pan left, rotating horizontally"
4302
+ promptHint: "The camera stays in exactly the same position and slowly pivots on the spot, rotating its aim to the left like a head turning, sweeping across the scene.\nThe camera does not travel anywhere: its position, its height and its distance to everything in the scene all stay constant, and only its aiming direction changes.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements slide across the frame together at the same rate, from left to right, with no shift between them.\nThe subject drifts out toward the right edge of the frame as the camera turns away, and new parts of the scene enter from the left.\nNo zoom, no push-in, no sideways travel, no orbiting."
4288
4303
  },
4289
4304
  {
4290
4305
  id: "pan-right",
4291
4306
  label: "Pan Right",
4292
4307
  category: "pan",
4293
4308
  description: "Rotate camera horizontally to the right",
4294
- promptHint: "slow camera pan right, rotating horizontally"
4309
+ promptHint: "The camera stays in exactly the same position and slowly pivots on the spot, rotating its aim to the right like a head turning, sweeping across the scene.\nThe camera does not travel anywhere: its position, its height and its distance to everything in the scene all stay constant, and only its aiming direction changes.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements slide across the frame together at the same rate, from right to left, with no shift between them.\nThe subject drifts out toward the left edge of the frame as the camera turns away, and new parts of the scene enter from the right.\nNo zoom, no push-in, no sideways travel, no orbiting."
4295
4310
  },
4296
4311
  {
4297
4312
  id: "whip-pan-left",
4298
4313
  label: "Whip Pan Left",
4299
4314
  category: "pan",
4300
4315
  description: "Fast whip pan left with motion blur",
4301
- promptHint: "fast whip pan to the left with heavy motion blur"
4316
+ promptHint: "The camera stays in exactly the same position and whips violently fast on the spot, snapping its aim to the left in one abrupt blurred sweep across the scene.\nThe camera does not travel anywhere: its position, its height and its distance to everything in the scene all stay constant, and only its aiming direction changes.\nThe rotation is so fast that the whole frame smears into heavy horizontal motion blur and the scene becomes briefly unreadable mid-sweep.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements streak across the frame together at the same rate, from left to right.\nThe subject is flung out past the right edge of the frame almost immediately.\nNo zoom, no push-in, no sideways travel, no orbiting."
4302
4317
  },
4303
4318
  {
4304
4319
  id: "whip-pan-right",
4305
4320
  label: "Whip Pan Right",
4306
4321
  category: "pan",
4307
4322
  description: "Fast whip pan right with motion blur",
4308
- promptHint: "fast whip pan to the right with heavy motion blur"
4323
+ promptHint: "The camera stays in exactly the same position and whips violently fast on the spot, snapping its aim to the right in one abrupt blurred sweep across the scene.\nThe camera does not travel anywhere: its position, its height and its distance to everything in the scene all stay constant, and only its aiming direction changes.\nThe rotation is so fast that the whole frame smears into heavy horizontal motion blur and the scene becomes briefly unreadable mid-sweep.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements streak across the frame together at the same rate, from right to left.\nThe subject is flung out past the left edge of the frame almost immediately.\nNo zoom, no push-in, no sideways travel, no orbiting."
4309
4324
  },
4310
4325
  // Tilt — rotation on horizontal axis
4311
4326
  {
@@ -4313,14 +4328,14 @@ var CAMERA_MOTIONS = [
4313
4328
  label: "Tilt Up",
4314
4329
  category: "tilt",
4315
4330
  description: "Tilt camera upward",
4316
- promptHint: "camera tilts upward, revealing upward from the ground"
4331
+ promptHint: "The camera is locked to a tripod head at a fixed point in space and pivots on that head, tilting its aim upward like a head lifting to look higher.\nThe camera's height stays exactly the same for the entire shot, and the tripod stays planted in the same spot: the lens sweeps upward while the camera body itself never rises, never lowers and never travels.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements slide down the frame together at the same rate, with no shift between them.\nWhatever occupied the bottom of the opening frame slides down and out past the bottom edge, and whatever lay above the top edge is progressively revealed as the aim rises.\nNo zoom, no push-in."
4317
4332
  },
4318
4333
  {
4319
4334
  id: "tilt-down",
4320
4335
  label: "Tilt Down",
4321
4336
  category: "tilt",
4322
4337
  description: "Tilt camera downward",
4323
- promptHint: "camera tilts downward, revealing downward from above"
4338
+ promptHint: "The camera is locked to a tripod head at a fixed point in space and pivots on that head, tilting its aim downward like a head lowering to look lower.\nThe camera's height stays exactly the same for the entire shot, and the tripod stays planted in the same spot: the lens sweeps downward while the camera body itself never rises, never lowers and never travels.\nBecause the camera is rotating rather than moving, there is no parallax at all: near and distant elements slide up the frame together at the same rate, with no shift between them.\nWhatever occupied the top of the opening frame slides up and out past the top edge, and whatever lay below the bottom edge is progressively revealed as the aim lowers.\nNo zoom, no push-in."
4324
4339
  },
4325
4340
  // Zoom — lens only
4326
4341
  {
@@ -4328,28 +4343,28 @@ var CAMERA_MOTIONS = [
4328
4343
  label: "Zoom In",
4329
4344
  category: "zoom",
4330
4345
  description: "Lens zoom toward subject",
4331
- promptHint: "slow zoom in on the subject, fixed camera position"
4346
+ promptHint: "The camera is locked to a tripod planted in one spot and never moves at all. Only the lens changes: its focal length slowly increases, magnifying the image so the frame closes in on the subject.\nBecause the camera body does not travel, the perspective of the scene never changes: there is NO parallax whatsoever, nothing slides past anything else, and the spatial relationship between near and distant elements stays exactly as it was.\nEverything in the frame simply grows larger together at the same rate and the edges of the picture crop away, as if the whole photograph were being enlarged from its centre.\nThe subject fills progressively more of the frame while the background behind it flattens and compresses.\nNo camera travel, no dolly, no push-in, no walking forward, no orbiting."
4332
4347
  },
4333
4348
  {
4334
4349
  id: "zoom-out",
4335
4350
  label: "Zoom Out",
4336
4351
  category: "zoom",
4337
4352
  description: "Lens zoom away from subject",
4338
- promptHint: "slow zoom out, fixed camera position"
4353
+ promptHint: "The camera is locked to a tripod planted in one spot and never moves at all. Only the lens changes: its focal length slowly decreases, widening the view so the frame opens out away from the subject.\nBecause the camera body does not travel, the perspective of the scene never changes: there is NO parallax whatsoever, nothing slides past anything else, and the spatial relationship between near and distant elements stays exactly as it was.\nEverything in the frame simply shrinks together at the same rate and more of the surroundings enters from all four edges, as if the whole photograph were being reduced towards its centre.\nThe subject fills progressively less of the frame while more and more of the wider environment is revealed around it.\nNo camera travel, no dolly, no pull-back, no walking backward, no orbiting."
4339
4354
  },
4340
4355
  {
4341
4356
  id: "crash-zoom-in",
4342
4357
  label: "Crash Zoom In",
4343
4358
  category: "zoom",
4344
4359
  description: "Snappy whip-style zoom in",
4345
- promptHint: "fast crash zoom in, snappy whip-style sudden dramatic zoom toward subject"
4360
+ promptHint: "The camera is locked to a tripod planted in one spot and never moves at all. Only the lens changes: its focal length rockets up in one violent instant, snapping the frame hard onto the subject.\nThe zoom is so abrupt that the image judders and smears with motion blur during the snap, and the magnification slams to a stop rather than easing in.\nBecause the camera body does not travel, the perspective of the scene never changes: there is NO parallax whatsoever, nothing slides past anything else, and the spatial relationship between near and distant elements stays exactly as it was.\nEverything in the frame simply explodes larger together at the same rate and the edges of the picture crop violently away, as if the photograph were being blown up from its centre in a single jolt.\nNo camera travel, no dolly, no push-in, no walking forward, no orbiting."
4346
4361
  },
4347
4362
  {
4348
4363
  id: "crash-zoom-out",
4349
4364
  label: "Crash Zoom Out",
4350
4365
  category: "zoom",
4351
4366
  description: "Snappy whip-style zoom out",
4352
- promptHint: "fast crash zoom out, snappy whip-style sudden dramatic pull back"
4367
+ promptHint: "The camera is locked to a tripod planted in one spot and never moves at all. Only the lens changes: its focal length drops away in one violent instant, snapping the frame wide open away from the subject.\nThe zoom is so abrupt that the image judders and smears with motion blur during the snap, and the widening slams to a stop rather than easing out.\nBecause the camera body does not travel, the perspective of the scene never changes: there is NO parallax whatsoever, nothing slides past anything else, and the spatial relationship between near and distant elements stays exactly as it was.\nEverything in the frame simply collapses smaller together at the same rate and a great deal more of the surroundings floods in from all four edges at once, as if the photograph were being shrunk towards its centre in a single jolt.\nNo camera travel, no dolly, no pull-back, no walking backward, no orbiting."
4353
4368
  },
4354
4369
  // Dolly — physical forward/back
4355
4370
  {
@@ -4357,51 +4372,51 @@ var CAMERA_MOTIONS = [
4357
4372
  label: "Dolly In",
4358
4373
  category: "dolly",
4359
4374
  description: "Push camera toward subject (parallax)",
4360
- promptHint: "dolly in, camera pushes forward toward the subject with natural parallax"
4375
+ promptHint: "The camera glides steadily FORWARD through the scene, physically travelling deeper into it and closing the distance to the subject. Nothing new is added to the scene; the viewpoint simply advances.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The image changes only because the camera has moved to a new place.\nThe gap between the camera and the subject SHRINKS continuously: the subject grows steadily larger in the frame as the camera gets closer, and by the end it is much nearer and much bigger than at the start.\nEVERY part of the scene is in motion together, all of it expanding outward from the centre of the frame as the viewpoint advances, and the only difference between them is how fast: the closer something is to the camera the faster it grows and spreads toward the edges, and the further away it is the more gently and slowly it grows. It is one smooth continuous gradient of speed across every depth in the picture. Nothing anywhere in the frame is frozen or static, and nothing slides forward independently of the rest.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no holding a constant distance, no following alongside."
4361
4376
  },
4362
4377
  {
4363
4378
  id: "dolly-out",
4364
4379
  label: "Dolly Out",
4365
4380
  category: "dolly",
4366
4381
  description: "Pull camera away (parallax)",
4367
- promptHint: "dolly out, camera pulls back away from the subject with natural parallax"
4382
+ promptHint: "The camera glides steadily BACKWARD through the scene, physically retreating and opening up the distance to the subject. Nothing new is added to the scene; the viewpoint simply withdraws.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is shrunk optically. The image changes only because the camera has moved to a new place.\nThe gap between the camera and the subject GROWS continuously: the subject becomes steadily smaller in the frame as the camera pulls further away, and by the end it is much further off and much smaller than at the start.\nEVERY part of the scene is in motion together, all of it contracting inward toward the centre of the frame as the viewpoint retreats, and the only difference between them is how fast: the closer something is to the camera the faster it shrinks and slides in from the edges, and the further away it is the more gently and slowly it shrinks. It is one smooth continuous gradient of speed across every depth in the picture. Nothing anywhere in the frame is frozen or static, and nothing slides backward independently of the rest.\nNew foreground elements keep entering from behind the camera at the edges of the frame as it retreats.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no holding a constant distance, no following alongside."
4368
4383
  },
4369
4384
  {
4370
4385
  id: "dolly-zoom",
4371
4386
  label: "Dolly Zoom",
4372
4387
  category: "dolly",
4373
4388
  description: "Vertigo effect: dolly opposes zoom",
4374
- promptHint: "dolly zoom vertigo effect, background scale changes while subject stays the same size"
4389
+ promptHint: "Two opposite things happen at once, in perfect balance, and the tension between them IS the shot.\nFIRST, the camera body travels steadily FORWARD, physically advancing deeper into the scene and closing the distance to the subject.\nSECOND, at exactly the same time and at exactly the matching rate, the lens widens: the focal length decreases continuously throughout the move.\nBecause the two exactly cancel each other, THE SUBJECT NEVER CHANGES SIZE. It stays locked at the same scale and the same position in the frame from the first moment to the last, as if pinned there, and nothing about it grows or shrinks.\nWhat changes instead is DEPTH. As the camera advances and the lens widens, everything behind the subject appears to travel away from it and settle further and further off, so the distance between the subject and the far background stretches open and keeps stretching. What was close behind the subject ends up looking far behind it. The space reads as progressively deeper and longer, as though it were being drawn out lengthwise, while the subject itself stays exactly as it was.\nThe frame stays perfectly upright and level throughout. The camera never rolls, never tilts, never turns; the horizontal and vertical lines of the scene stay horizontal and vertical the whole time.\nNo cuts, no sideways travel, no orbiting, no rolling, no rotation of the frame, no tilting, and above all no change in the size of the subject."
4375
4390
  },
4376
4391
  {
4377
4392
  id: "push-in",
4378
4393
  label: "Push In",
4379
4394
  category: "dolly",
4380
- description: "Slow subtle push toward subject",
4381
- promptHint: "slow push in, gentle forward movement toward the subject",
4382
- term: "slow push-in"
4395
+ description: "Fast forceful push toward subject",
4396
+ promptHint: "The camera surges FORWARD hard and fast, driving deep into the scene and closing the distance to the subject in one assertive rush. Nothing new is added to the scene; the viewpoint simply advances.\nThe move is quick and forceful enough to be felt: the picture takes on a slight motion blur as it rushes in, and the advance carries real momentum rather than drifting gently.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The image changes only because the camera has moved to a new place.\nThe gap between the camera and the subject SHRINKS rapidly: the subject swells quickly larger in the frame, and by the end it is far nearer and far bigger than at the start.\nEVERY part of the scene is in motion together, all of it expanding outward from the centre of the frame as the viewpoint advances, and the only difference between them is how fast: the closer something is to the camera the faster it grows and spreads toward the edges, and the further away it is the more gently and slowly it grows. It is one smooth continuous gradient of speed across every depth in the picture. Nothing anywhere in the frame is frozen or static, and nothing slides forward independently of the rest.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no holding a constant distance, no following alongside.",
4397
+ term: "fast push-in"
4383
4398
  },
4384
4399
  {
4385
4400
  id: "pull-out",
4386
4401
  label: "Pull Out",
4387
4402
  category: "dolly",
4388
- description: "Slow subtle pull back from subject",
4389
- promptHint: "slow pull out, gentle backward movement away from the subject",
4390
- term: "slow pull-out"
4403
+ description: "Fast forceful pull back from subject",
4404
+ promptHint: "The camera pulls BACKWARD hard and fast, tearing away from the subject and opening up the distance in one decisive rush. Nothing new is added to the scene; the viewpoint simply withdraws.\nThe move is quick and forceful enough to be felt: the picture takes on a slight motion blur as it rushes back, and the retreat carries real momentum rather than drifting gently.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is shrunk optically. The image changes only because the camera has moved to a new place.\nThe gap between the camera and the subject GROWS rapidly: the subject shrinks quickly in the frame, and by the end it is far away and far smaller than at the start.\nEVERY part of the scene is in motion together, all of it contracting inward toward the centre of the frame as the viewpoint retreats, and the only difference between them is how fast: the closer something is to the camera the faster it shrinks and slides in from the edges, and the further away it is the more gently and slowly it shrinks. It is one smooth continuous gradient of speed across every depth in the picture. Nothing anywhere in the frame is frozen or static, and nothing slides backward independently of the rest.\nNew foreground elements keep entering from behind the camera at the edges of the frame as it retreats.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no holding a constant distance, no following alongside.",
4405
+ term: "fast pull-out"
4391
4406
  },
4392
4407
  {
4393
4408
  id: "breathing",
4394
4409
  label: "Breathing Camera",
4395
4410
  category: "dolly",
4396
4411
  description: "Subtle continuous push/pull oscillation",
4397
- promptHint: "breathing camera, subtle continuous breathing-like push-in and pull-out oscillation with an organic handheld feel"
4412
+ promptHint: "The camera breathes: it drifts gently FORWARD a small way, then eases back BACKWARD to about where it began, then forward again, in a slow continuous cycle that repeats several times across the shot, like the rise and fall of quiet breathing. Nothing new is added to the scene; only the viewpoint sways in and out.\nThis reversal is deliberate and is the whole point of the move. There is no pause and no hard stop at either end: the forward drift slows, turns over smoothly, and becomes the backward drift, then turns over again. The cycle is soft and rhythmic, never sharp.\nThe travel each way is small and the pace is slow and organic, never mechanical: the picture stays sharp with no motion blur, and it feels like a handheld operator quietly breathing behind the camera rather than a rig being driven.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The image changes only because the camera has swayed to a slightly different place.\nThe gap between the camera and the subject accordingly shrinks a little, then opens a little, then shrinks again: the subject swells and settles gently in the frame in time with the cycle.\nEVERY part of the scene moves together with it, all of it expanding outward from the centre on each drift forward and contracting inward on each drift back, and the only difference between them is how fast: what is closest sways most, what is furthest hardly changes. It is one smooth continuous gradient across every depth. Nothing anywhere is frozen or static.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no cuts."
4398
4413
  },
4399
4414
  {
4400
4415
  id: "push-pull",
4401
4416
  label: "Push-Pull / Swing",
4402
4417
  category: "dolly",
4403
4418
  description: "Camera swings toward subject then away",
4404
- promptHint: "push-pull swing, the camera moves toward the subject then back away in a single move, a swinging approach-and-retreat that creates emphasis or hesitation",
4419
+ promptHint: "The camera drives decisively FORWARD a good distance, then reverses and pulls back BACKWARD past where it began, then drives forward again, in a deliberate push-and-pull cycle repeated across the shot. Nothing new is added to the scene; only the viewpoint swings in and out.\nThis reversal is deliberate and is the whole point of the move. Each stroke is firm and purposeful, with real travel behind it and a clear change of direction at each end, as if a rig were being driven in and hauled out again by hand. It is emphatic and mechanical, not gentle or organic, and the swing is far larger and more forceful than a quiet drift.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The image changes only because the camera has travelled to a different place.\nThe gap between the camera and the subject accordingly closes sharply, opens up wide, then closes again: the subject looms noticeably larger, falls well back, and looms again in time with the cycle.\nEVERY part of the scene moves together with it, all of it expanding outward from the centre on each drive forward and rushing inward on each pull back, and the only difference between them is how fast: what is closest sweeps most, what is furthest shifts least. It is one smooth continuous gradient across every depth. Nothing anywhere is frozen or static.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no cuts.",
4405
4420
  term: "push-pull swing"
4406
4421
  },
4407
4422
  {
@@ -4409,7 +4424,7 @@ var CAMERA_MOTIONS = [
4409
4424
  label: "Creep-In",
4410
4425
  category: "dolly",
4411
4426
  description: "Imperceptibly slow push-in over time",
4412
- promptHint: "creep-in, imperceptibly slow push-in over many seconds, building dread or tension",
4427
+ promptHint: "The camera creeps FORWARD almost imperceptibly slowly, edging deeper into the scene by the smallest amount and closing the distance to the subject only very slightly. Nothing new is added to the scene; the viewpoint simply inches forward.\nThe move is so gradual it is barely noticeable moment to moment: the picture stays completely sharp with no motion blur at all, the advance never accelerates, and only by comparing the end against the beginning is it clear the camera moved at all. It creates a slow, quiet, unsettling drift rather than any sense of momentum.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The image changes only because the camera has crept to a slightly new place.\nThe gap between the camera and the subject SHRINKS very slightly and very steadily: the subject grows just a little larger in the frame across the whole shot.\nEVERY part of the scene is in motion together, all of it expanding outward from the centre of the frame by tiny degrees as the viewpoint edges forward, and the only difference between them is how fast: what is closest creeps outward most, what is furthest hardly changes at all. It is one smooth continuous gradient across every depth in the picture. Nothing anywhere is frozen or static, and nothing slides forward independently of the rest.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no acceleration, no holding a constant distance.",
4413
4428
  term: "slow creeping push-in"
4414
4429
  },
4415
4430
  {
@@ -4417,7 +4432,7 @@ var CAMERA_MOTIONS = [
4417
4432
  label: "Creep-Out",
4418
4433
  category: "dolly",
4419
4434
  description: "Imperceptibly slow pull-out over time",
4420
- promptHint: "creep-out, imperceptibly slow pull-out over many seconds, isolating the subject in space",
4435
+ promptHint: "The camera creeps BACKWARD almost imperceptibly slowly, easing away from the scene by the smallest amount and opening the distance to the subject only very slightly. Nothing new is added to the scene; the viewpoint simply inches back.\nThe move is so gradual it is barely noticeable moment to moment: the picture stays completely sharp with no motion blur at all, the retreat never accelerates, and only by comparing the end against the beginning is it clear the camera moved at all. It creates a slow, quiet, unsettling drift rather than any sense of momentum.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is shrunk optically. The image changes only because the camera has crept to a slightly new place.\nThe gap between the camera and the subject GROWS very slightly and very steadily: the subject becomes just a little smaller in the frame across the whole shot.\nEVERY part of the scene is in motion together, all of it contracting inward toward the centre of the frame by tiny degrees as the viewpoint edges back, and the only difference between them is how fast: what is closest creeps inward most, what is furthest hardly changes at all. It is one smooth continuous gradient across every depth in the picture. Nothing anywhere is frozen or static, and nothing slides backward independently of the rest.\nNo zoom, no change of focal length, no sideways travel, no orbiting, no acceleration, no holding a constant distance.",
4421
4436
  term: "slow creeping pull-out"
4422
4437
  },
4423
4438
  // Truck — lateral slide
@@ -4426,14 +4441,14 @@ var CAMERA_MOTIONS = [
4426
4441
  label: "Truck Left",
4427
4442
  category: "truck",
4428
4443
  description: "Slide camera body laterally left",
4429
- promptHint: "truck left, camera slides laterally to the left"
4444
+ promptHint: "The camera glides steadily SIDEWAYS to the left, physically travelling laterally across the scene while continuing to aim straight ahead in exactly the same direction the whole time. It never turns or pivots; its aim stays locked forward and only its position slides left.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The camera is passing across the scene, not approaching or retreating.\nThe framing is NOT locked onto anything: nothing is kept centred or held in place. EVERY single thing visible in the opening frame, including whatever sits at its very centre, slides steadily to the right across the picture and eventually passes out past the right edge as the viewpoint travels on past it.\nThe only difference between them is how fast: whatever is closest to the camera sweeps across and off the right edge quickly, things further back drift right more gently, and the most distant parts ease right slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere is frozen, and nothing travels along with the camera.\nNew elements keep entering from the left edge as the camera advances sideways past them.\nNo zoom, no change of focal length, no turning, no pivoting, no rotation of the aim, no forward or backward travel, no tracking or following."
4430
4445
  },
4431
4446
  {
4432
4447
  id: "truck-right",
4433
4448
  label: "Truck Right",
4434
4449
  category: "truck",
4435
4450
  description: "Slide camera body laterally right",
4436
- promptHint: "truck right, camera slides laterally to the right"
4451
+ promptHint: "The camera glides steadily SIDEWAYS to the right, physically travelling laterally across the scene while continuing to aim straight ahead in exactly the same direction the whole time. It never turns or pivots; its aim stays locked forward and only its position slides right.\nThe lens never changes: the focal length is fixed for the entire shot, so nothing is magnified. The camera is passing across the scene, not approaching or retreating.\nThe framing is NOT locked onto anything: nothing is kept centred or held in place. EVERY single thing visible in the opening frame, including whatever sits at its very centre, slides steadily to the left across the picture and eventually passes out past the left edge as the viewpoint travels on past it.\nThe only difference between them is how fast: whatever is closest to the camera sweeps across and off the left edge quickly, things further back drift left more gently, and the most distant parts ease left slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere is frozen, and nothing travels along with the camera.\nNew elements keep entering from the right edge as the camera advances sideways past them.\nNo zoom, no change of focal length, no turning, no pivoting, no rotation of the aim, no forward or backward travel, no tracking or following."
4437
4452
  },
4438
4453
  // Pedestal — vertical slide
4439
4454
  {
@@ -4441,14 +4456,14 @@ var CAMERA_MOTIONS = [
4441
4456
  label: "Pedestal Up",
4442
4457
  category: "pedestal",
4443
4458
  description: "Raise camera body vertically",
4444
- promptHint: "pedestal up, camera rises vertically while keeping the horizon level"
4459
+ promptHint: "The camera is mounted on a column that raises it straight UPWARD, and it rises vertically, climbing steadily higher. The scene itself is entirely unchanged; nothing in it moves, falls, appears or is added. Only the viewpoint ascends.\nThe camera's aim never changes: it keeps pointing straight ahead at exactly the same angle for the entire shot, perfectly level, never tipping up or down as it climbs. Only its height changes.\nThe lens never changes either: the focal length is fixed, so nothing is magnified.\nBecause the camera physically travels upward, there is STRONG parallax: EVERY part of the scene is in motion together, all of it sliding downward through the frame as the viewpoint climbs, and the only difference between them is how fast. What is nearest the camera sinks and passes out of the bottom edge quickly, what is further back drifts down more gently, and the most distant parts ease down slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere in the frame is frozen or static.\nWhatever lay above the top edge of the opening frame is revealed as the camera reaches its height, entering from the top and settling into view.\nNo zoom, no change of focal length, no tilting, no tipping the aim upward, no forward or sideways travel."
4445
4460
  },
4446
4461
  {
4447
4462
  id: "pedestal-down",
4448
4463
  label: "Pedestal Down",
4449
4464
  category: "pedestal",
4450
4465
  description: "Lower camera body vertically",
4451
- promptHint: "pedestal down, camera descends vertically while keeping the horizon level"
4466
+ promptHint: "The camera is mounted on a column that lowers it straight DOWNWARD, and it descends vertically, sinking steadily lower. The scene itself is entirely unchanged; nothing in it moves, falls, appears or is added. Only the viewpoint descends.\nThe camera's aim never changes: it keeps pointing straight ahead at exactly the same angle for the entire shot, perfectly level, never tipping up or down as it sinks. Only its height changes.\nThe lens never changes either: the focal length is fixed, so nothing is magnified.\nBecause the camera physically travels downward, there is STRONG parallax: EVERY part of the scene is in motion together, all of it sliding upward through the frame as the viewpoint sinks, and the only difference between them is how fast. What is nearest the camera climbs and passes out of the top edge quickly, what is further back drifts up more gently, and the most distant parts ease up slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere in the frame is frozen or static.\nWhatever lay below the bottom edge of the opening frame is revealed as the camera sinks to its level, entering from the bottom and settling into view.\nNo zoom, no change of focal length, no tilting, no tipping the aim downward, no forward or sideways travel."
4452
4467
  },
4453
4468
  // Roll — rotation on lens axis
4454
4469
  {
@@ -4485,37 +4500,37 @@ var CAMERA_MOTIONS = [
4485
4500
  id: "orbit-left",
4486
4501
  label: "Orbit Left",
4487
4502
  category: "orbit",
4488
- description: "Full circle around subject to the left",
4489
- promptHint: "camera orbits around the subject to the left in a circular path"
4503
+ description: "Large partial orbit around subject to the left",
4504
+ promptHint: "camera orbits around the subject in a circular path, the background sliding to the left across the frame"
4490
4505
  },
4491
4506
  {
4492
4507
  id: "orbit-right",
4493
4508
  label: "Orbit Right",
4494
4509
  category: "orbit",
4495
- description: "Full circle around subject to the right",
4496
- promptHint: "camera orbits around the subject to the right in a circular path"
4510
+ description: "Large partial orbit around subject to the right",
4511
+ promptHint: "camera orbits around the subject in a circular path, the background sliding to the right across the frame"
4497
4512
  },
4498
4513
  {
4499
4514
  id: "arc-left",
4500
4515
  label: "Arc Left",
4501
4516
  category: "orbit",
4502
4517
  description: "Partial arc around subject left",
4503
- promptHint: "camera arcs to the left around the subject"
4518
+ promptHint: "slow camera arc around the subject through a partial arc, the background sliding to the left across the frame"
4504
4519
  },
4505
4520
  {
4506
4521
  id: "arc-right",
4507
4522
  label: "Arc Right",
4508
4523
  category: "orbit",
4509
4524
  description: "Partial arc around subject right",
4510
- promptHint: "camera arcs to the right around the subject"
4525
+ promptHint: "The camera slowly moves sideways to the right while curving around the subject, continuously turning toward the subject to keep the same centered framing.\nThe camera maintains constant distance from the subject.\nAs the viewpoint changes, strong natural parallax is visible: nearby environmental elements shift right noticeably while distant background elements shift right more slowly.\nThe shot ends from a slightly different three-quarter viewing angle.\nNo zoom, no push-in, no pull-out."
4511
4526
  },
4512
4527
  {
4513
4528
  id: "orbit-360",
4514
4529
  label: "Full 360 Orbit",
4515
4530
  category: "orbit",
4516
4531
  description: "Full circular arc around subject",
4517
- promptHint: "full 360 degree orbit, the camera arcs a complete revolution around the subject",
4518
- term: "full 360 degree orbit"
4532
+ promptHint: "The camera moves sideways to the right while curving around the subject, continuously turning toward the subject to keep the same centered framing, and keeps travelling in the same direction without pausing until it has passed the subject's right side, then behind it, then its left side, and comes back to where it began.\nThe camera maintains constant distance and constant height from the subject throughout.\nAs the viewpoint changes, strong natural parallax is visible: nearby environmental elements sweep right past the frame edge while distant background elements shift right more slowly, and every part of the surroundings passes behind the subject in turn, until whatever was behind it at the start is behind it again at the end.\nThe shot ends on the exact same viewpoint and composition it started from, having circled the subject completely.\nNo zoom, no push-in, no pull-out, no reversal of direction.",
4533
+ term: "full orbit, one complete circle around the subject"
4519
4534
  },
4520
4535
  // Crane / Jib
4521
4536
  {
@@ -4523,14 +4538,14 @@ var CAMERA_MOTIONS = [
4523
4538
  label: "Crane Up",
4524
4539
  category: "crane",
4525
4540
  description: "Sweeping crane rise revealing scene",
4526
- promptHint: "crane up, camera rises on a jib revealing the wider scene"
4541
+ promptHint: "The camera is carried on the end of a long jib arm that swings it UPWARD and OUTWARD through a rising arc, so it climbs steadily higher and at the same time draws back and away from where it started. The scene itself is entirely unchanged; nothing in it moves, falls, appears or is added. Only the viewpoint travels.\nUnlike a straight vertical lift, the aim DOES change: as the camera rises it tips gradually downward, angling more and more steeply so that what began level with it is now looked down upon from above. The rise and the tilt happen together as one continuous sweeping arc.\nThe lens never changes: the focal length is fixed, so nothing is magnified.\nBecause the camera physically travels, there is STRONG parallax: EVERY part of the scene is in motion together, sliding downward and outward through the frame as the viewpoint climbs and pulls back, and the only difference between them is how fast. What is nearest the camera sweeps down and out of the bottom edge quickly, what is further back drifts more gently, and the most distant parts ease slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere in the frame is frozen or static.\nThe shot ends on a high, wide, elevated vantage looking down over the whole scene, far above and behind where it began.\nNo zoom, no change of focal length, no sideways drift, no orbiting."
4527
4542
  },
4528
4543
  {
4529
4544
  id: "crane-down",
4530
4545
  label: "Crane Down",
4531
4546
  category: "crane",
4532
4547
  description: "Sweeping crane descent",
4533
- promptHint: "crane down, camera descends from above toward the subject"
4548
+ promptHint: "The camera is carried on the end of a long jib arm that swings it DOWNWARD and INWARD through a descending arc, so it drops steadily lower and at the same time closes in toward what lay beneath it. The scene itself is entirely unchanged; nothing in it moves, falls, appears or is added. Only the viewpoint travels.\nUnlike a straight vertical descent, the aim DOES change: as the camera drops it tips gradually upward, levelling out more and more, so that what was looked down upon from above is now met at its own level. The fall and the tilt happen together as one continuous sweeping arc.\nThe lens never changes: the focal length is fixed, so nothing is magnified.\nBecause the camera physically travels, there is STRONG parallax: EVERY part of the scene is in motion together, sliding upward and inward through the frame as the viewpoint drops and closes in, and the only difference between them is how fast. What is nearest the camera sweeps up and out of the top edge quickly, what is further back drifts more gently, and the most distant parts ease slowest of all. It is one smooth continuous gradient of speed across every depth. Nothing anywhere in the frame is frozen or static.\nThe shot ends on a low, close vantage, far below and ahead of where it began.\nNo zoom, no change of focal length, no sideways drift, no orbiting."
4534
4549
  },
4535
4550
  {
4536
4551
  id: "boom-up",
@@ -4727,9 +4742,8 @@ var CAMERA_MOTIONS = [
4727
4742
  id: "match-cut-zoom",
4728
4743
  label: "Match Cut Zoom",
4729
4744
  category: "zoom",
4730
- description: "Beat-timed zoom for cuts",
4731
- promptHint: "rapid zoom timed to a beat, suggesting a match cut to the next shot",
4732
- term: "rapid beat-timed zoom"
4745
+ description: "Fast zoom that hard-cuts to a matching shape",
4746
+ promptHint: "A match cut built on a zoom, in two shots joined by one hard cut.\nShot one: the camera is locked to a tripod and never travels; only the lens changes, its focal length rapidly increasing so the frame rushes in and closes tightly on a single round shape at the centre of the picture, until that circular shape fills almost the whole frame.\nAt the moment the round shape fills the frame there is one HARD CUT.\nShot two: a completely different place and time, but a round shape of the same size sits in exactly the same position at the centre of the frame, so the two shots lock together on that shape and the eye reads it as one continuous movement. The camera continues the same inward push for a moment before settling.\nThe two shots share only the shape and its position; the location, the light and everything else are entirely different.\nNo camera travel in either shot, no dolly, no orbiting."
4733
4747
  },
4734
4748
  {
4735
4749
  id: "screen-tap",
@@ -4823,7 +4837,7 @@ function composeCameraMotionHintFromConnections(motionId, startHints, endHints,
4823
4837
  const endClause = endHints.filter((h) => h && h.length > 0).join(" and ");
4824
4838
  if (startClause) parts.push(`beginning with ${startClause}`);
4825
4839
  if (endClause) parts.push(`ending with ${endClause}`);
4826
- return parts.join(", ");
4840
+ return joinHintFragments(parts);
4827
4841
  }
4828
4842
  function composeCameraMotionTermFromConnections(motionId, startTerms, endTerms) {
4829
4843
  const base = getCameraMotionTerm(motionId);
@@ -10004,7 +10018,7 @@ function withCustomText(data, mainHint) {
10004
10018
  if (mainHint) fragments.push(mainHint);
10005
10019
  const post = typeof data.postText === "string" ? data.postText.trim() : "";
10006
10020
  if (post) fragments.push(post);
10007
- return fragments.join(", ");
10021
+ return joinHintFragments(fragments);
10008
10022
  }
10009
10023
  function readHintMode(data) {
10010
10024
  const raw = data.hintMode;
@@ -29069,6 +29083,107 @@ var IMAGE_REFERENCE_PROMPT_DOCTRINE = {
29069
29083
  - Person+face composition intermittently trips provider content filters ("Content policy violation"). Keep wording neutral (no glamor/body emphasis), and on a rejection rephrase the glue words or swap provider rather than retrying unchanged.`
29070
29084
  };
29071
29085
 
29086
+ // src/scene3d-reference-doctrine.ts
29087
+ var SCENE3D_LAYOUT_SCOPING_MARKER = "LAYOUT reference only";
29088
+ var SCENE3D_LAYOUT_SCOPING_FOR = {
29089
+ /** Always: where the subjects are and what is in front of what. */
29090
+ layout: "its subject positions and blocking",
29091
+ occlusion: "its foreground occlusion",
29092
+ framing: "its framing",
29093
+ cameraAngle: "its camera angle",
29094
+ /** Clips only. */
29095
+ cameraMotion: "its camera motion",
29096
+ timing: "its timing",
29097
+ /** Clips with more than one shot. */
29098
+ cuts: (shots) => `its ${shots} shots and where they cut`
29099
+ };
29100
+ var SCENE3D_LAYOUT_SCOPING_IGNORE = "Ignore its untextured grey clay placeholder look, its flat placeholder colours, its materials, its lighting and its empty background; none of that is the target look";
29101
+ var SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE = "Take the look from the prompt and from the other references";
29102
+ function buildScene3DLayoutScopingLine(spec) {
29103
+ const matches = [
29104
+ SCENE3D_LAYOUT_SCOPING_FOR.layout,
29105
+ SCENE3D_LAYOUT_SCOPING_FOR.occlusion,
29106
+ SCENE3D_LAYOUT_SCOPING_FOR.framing,
29107
+ SCENE3D_LAYOUT_SCOPING_FOR.cameraAngle
29108
+ ];
29109
+ if (spec.carries === "clip") {
29110
+ if (spec.includesCameraMotion) matches.push(SCENE3D_LAYOUT_SCOPING_FOR.cameraMotion);
29111
+ if (typeof spec.shots === "number" && Number.isFinite(spec.shots) && spec.shots > 1) {
29112
+ matches.push(SCENE3D_LAYOUT_SCOPING_FOR.cuts(Math.floor(spec.shots)));
29113
+ }
29114
+ matches.push(SCENE3D_LAYOUT_SCOPING_FOR.timing);
29115
+ }
29116
+ return `${SCENE3D_LAYOUT_SCOPING_MARKER} \u2014 match ${joinWithAnd(matches)}. ${SCENE3D_LAYOUT_SCOPING_IGNORE}. ${SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE}`;
29117
+ }
29118
+ function joinWithAnd(parts) {
29119
+ if (parts.length <= 1) return parts[0] ?? "";
29120
+ return `${parts.slice(0, -1).join(", ")} and ${parts[parts.length - 1]}`;
29121
+ }
29122
+ function renderScene3DLayoutScopingLine(binding, spec) {
29123
+ return `${binding.trim()}: ${buildScene3DLayoutScopingLine(spec)}.`;
29124
+ }
29125
+ function hasScene3DLayoutScopingLine(prompt, binding) {
29126
+ if (!prompt) return false;
29127
+ const b = binding.trim().replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
29128
+ return new RegExp(`${b}(?::| is an?)\\s+${SCENE3D_LAYOUT_SCOPING_MARKER}`).test(prompt);
29129
+ }
29130
+ var SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE = buildScene3DLayoutScopingLine({
29131
+ carries: "clip",
29132
+ includesCameraMotion: true
29133
+ });
29134
+ var SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE = {
29135
+ clip: SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE,
29136
+ clipRendered: renderScene3DLayoutScopingLine("@video_1", { carries: "clip", includesCameraMotion: true }),
29137
+ clipWithCuts: buildScene3DLayoutScopingLine({ carries: "clip", shots: 4, includesCameraMotion: true }),
29138
+ still: buildScene3DLayoutScopingLine({ carries: "still" }),
29139
+ stillRendered: renderScene3DLayoutScopingLine("@image_1", { carries: "still" })
29140
+ };
29141
+ function scene3DLayoutVideoCaptions(seats, prompt) {
29142
+ const clips = seats.filter((r) => r.carries === "clip" && !hasScene3DLayoutScopingLine(prompt, r.binding));
29143
+ if (clips.length === 0) return void 0;
29144
+ const captions = [];
29145
+ for (const clip of clips) {
29146
+ while (captions.length <= clip.index) captions.push("");
29147
+ captions[clip.index] = buildScene3DLayoutScopingLine(clip.spec);
29148
+ }
29149
+ return captions;
29150
+ }
29151
+ function appendScene3DStillScopingLines(prompt, seats) {
29152
+ const stills = seats.filter((r) => r.carries === "still" && !hasScene3DLayoutScopingLine(prompt, r.binding));
29153
+ if (stills.length === 0) return prompt;
29154
+ const lines = stills.map((still) => renderScene3DLayoutScopingLine(still.binding, still.spec));
29155
+ return prompt ? `${prompt}
29156
+ ${lines.join("\n")}` : lines.join("\n");
29157
+ }
29158
+ var SCENE3D_FIGURE_REFERENCE_RULE = "Every figure that must look real needs its own character reference; a figure without one takes the clay look of the layout reference. Keep two reference slots free for a location or style plate.";
29159
+ var SCENE3D_FREE_PLATE_SLOTS = 2;
29160
+ var SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE = "scene3d_unreferenced_figures";
29161
+ function buildScene3DUnreferencedFiguresWarning(check2) {
29162
+ const figures = check2.figureCount;
29163
+ if (figures === void 0 || !Number.isFinite(figures) || figures <= 0) return void 0;
29164
+ const refs = Math.max(0, Math.floor(check2.characterReferenceCount));
29165
+ const missing = Math.floor(figures) - refs;
29166
+ if (missing <= 0) return void 0;
29167
+ const figureWord = figures === 1 ? "figure" : "figures";
29168
+ const refWord = refs === 1 ? "character reference is" : "character references are";
29169
+ 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)`;
29170
+ const cap = check2.imageReferenceCap;
29171
+ if (typeof cap === "number" && Number.isFinite(cap) && cap > 0) {
29172
+ const seats = Math.max(0, Math.floor(check2.layoutReferenceImageSeats ?? 0));
29173
+ const spare = cap - seats - figures;
29174
+ 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.`;
29175
+ } else {
29176
+ message += ".";
29177
+ }
29178
+ return {
29179
+ code: SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE,
29180
+ message,
29181
+ figureCount: figures,
29182
+ characterReferenceCount: refs,
29183
+ missing
29184
+ };
29185
+ }
29186
+
29072
29187
  // src/prompt-wizard-categories.ts
29073
29188
  var IMAGE_WIZARD_CATEGORIES = [
29074
29189
  { key: "subject", label: "Subject" },
@@ -29160,6 +29275,8 @@ var PROVIDER_CAPABILITIES = {
29160
29275
  "nano-banana-2-lite": "Fast, low-cost 1K generation for drafts and iteration",
29161
29276
  "gpt-image": "Creative concepts, illustration, variable quality tiers",
29162
29277
  "gpt-image-2": "Latest GPT Image \u2014 sharp text, photorealism, 1K/2K/4K resolution",
29278
+ "gpt-image-2-5-flare": "Fast everyday GPT Image 2.5 \u2014 higher quality than GPT Image 2 at ~half the latency; default for iteration, social, high volume",
29279
+ "gpt-image-2-5-sunburst": "Precision GPT Image 2.5 \u2014 slower, tighter control and detail fidelity; brand-sensitive, packaging, diagrams, final creative",
29163
29280
  "grok": "General purpose, good text understanding",
29164
29281
  "grok-2": "Grok Imagine 2 \u2014 expressive, high-contrast, stylized output",
29165
29282
  "imagen4": "Google's latest, strong photorealism and text rendering",
@@ -29185,6 +29302,8 @@ var PROVIDER_CAPABILITIES = {
29185
29302
  "flux-pro-i2i": "Premium Flux transformation",
29186
29303
  "gpt-image-i2i": "Creative reinterpretation of source images",
29187
29304
  "gpt-image-2-i2i": "Latest GPT Image \u2014 pixel-level edits with original lighting/texture preservation, up to 4K",
29305
+ "gpt-image-2-5-flare-i2i": "Fast GPT Image 2.5 edits \u2014 up to 16 sources; use while iterating",
29306
+ "gpt-image-2-5-sunburst-i2i": "Precision GPT Image 2.5 edits \u2014 up to 16 sources, tightest control on demanding retouches; slower",
29188
29307
  "ideogram-edit": "Instruction-based editing with text preservation",
29189
29308
  "ideogram-remix": "Style remixing while preserving structure",
29190
29309
  "ideogram-reframe": "Aspect ratio changes with AI fill",
@@ -29208,6 +29327,8 @@ var PROVIDER_CAPABILITIES = {
29208
29327
  "flux-pro-i2i": "Premium Flux transformation",
29209
29328
  "gpt-image-i2i": "Creative reinterpretation of source images",
29210
29329
  "gpt-image-2-i2i": "Latest GPT Image \u2014 pixel-level edits with original lighting/texture preservation, up to 4K",
29330
+ "gpt-image-2-5-flare-i2i": "Fast GPT Image 2.5 edits \u2014 up to 16 sources; use while iterating",
29331
+ "gpt-image-2-5-sunburst-i2i": "Precision GPT Image 2.5 edits \u2014 up to 16 sources, tightest control on demanding retouches; slower",
29211
29332
  "ideogram-edit": "Instruction-based editing with text preservation",
29212
29333
  "ideogram-remix": "Style remixing while preserving structure",
29213
29334
  "ideogram-reframe": "Aspect ratio changes with AI fill",
@@ -29322,11 +29443,17 @@ var PROVIDER_CAPABILITIES = {
29322
29443
  "minimax": "General music generation, multiple genres"
29323
29444
  },
29324
29445
  "suno-generate": {
29325
- "V4": "Standard Suno generation",
29326
- "V4_5": "Improved quality and coherence",
29446
+ // Current generation first (V6 = default), then the earlier ones — all
29447
+ // offered in the picker; mirrors SUNO_MODELS order in @nodaro/shared.
29448
+ "V6": "Flagship \u2014 greater musical expression, more natural vocals, richer details",
29449
+ "V6_WILD": "Bolder, more distinctive, less predictable results for exploration",
29450
+ "V6_MINI": "Lightweight and fast \u2014 quality/speed balance",
29451
+ "V5_5": "Custom-model tuning with strong vocal quality",
29452
+ "V5": "Superior musical expression, faster generation",
29327
29453
  "V4_5PLUS": "Enhanced V4.5 with better production",
29328
29454
  "V4_5ALL": "Full-featured V4.5",
29329
- "V5": "Latest Suno with highest quality"
29455
+ "V4_5": "Improved quality and coherence",
29456
+ "V4": "Standard Suno generation"
29330
29457
  },
29331
29458
  "text-to-audio": {
29332
29459
  "elevenlabs-sfx": "High quality sound effects and ambient audio"
@@ -29479,6 +29606,7 @@ var NODE_PROMPT_FIELDS = {
29479
29606
  // ── Composition / FX (compact, no media-result preview → no inline editor) ──
29480
29607
  "image-critic": { prompt: "prompt", promptLabel: "Criteria", media: "image", inline: false },
29481
29608
  "motion-graphics": { prompt: "motionPrompt", promptLabel: "Motion prompt", media: "video", inline: false },
29609
+ "pro-3d-render": { prompt: "scenePrompt", promptLabel: "Scene", media: "text", inline: false },
29482
29610
  "generate-3d-scene": { prompt: "scenePrompt", promptLabel: "Scene", media: "text", inline: false },
29483
29611
  "edit-3d-scene": { prompt: "editPrompt", promptLabel: "Edit instruction", media: "text", inline: false },
29484
29612
  "3d-title": { prompt: "titlePrompt", promptLabel: "Title", media: "text", inline: false },
@@ -32669,7 +32797,7 @@ var SUNO_GENERATE_PRESETS = [
32669
32797
  description: "Mellow focus beat.",
32670
32798
  group: "By Use-Case",
32671
32799
  data: {
32672
- model: "V5_5",
32800
+ model: "V6",
32673
32801
  instrumental: true,
32674
32802
  style: "lo-fi hip-hop, chill and mellow, jazzy Rhodes chords, vinyl crackle, soft boom-bap drums, Andante 80 BPM, instrumental"
32675
32803
  }
@@ -32680,7 +32808,7 @@ var SUNO_GENERATE_PRESETS = [
32680
32808
  description: "Short confident opener.",
32681
32809
  group: "By Use-Case",
32682
32810
  data: {
32683
- model: "V5_5",
32811
+ model: "V6",
32684
32812
  instrumental: true,
32685
32813
  style: "modern podcast intro, upbeat and confident, catchy synth hook, punchy beat, Allegro, instrumental"
32686
32814
  }
@@ -32691,7 +32819,7 @@ var SUNO_GENERATE_PRESETS = [
32691
32819
  description: "Epic orchestral build.",
32692
32820
  group: "By Use-Case",
32693
32821
  data: {
32694
- model: "V5_5",
32822
+ model: "V6",
32695
32823
  instrumental: true,
32696
32824
  style: "epic cinematic trailer, dramatic and intense, full orchestra, taiko drums, brass swells, crescendo into a powerful hit, instrumental"
32697
32825
  }
@@ -32702,7 +32830,7 @@ var SUNO_GENERATE_PRESETS = [
32702
32830
  description: "Bright, motivational.",
32703
32831
  group: "By Use-Case",
32704
32832
  data: {
32705
- model: "V5_5",
32833
+ model: "V6",
32706
32834
  instrumental: true,
32707
32835
  style: "upbeat corporate, optimistic and motivational, bright piano, claps, clean electronic beat, Allegro 120 BPM, instrumental"
32708
32836
  }
@@ -32713,7 +32841,7 @@ var SUNO_GENERATE_PRESETS = [
32713
32841
  description: "Feel-good acoustic bed.",
32714
32842
  group: "By Use-Case",
32715
32843
  data: {
32716
- model: "V5_5",
32844
+ model: "V6",
32717
32845
  instrumental: true,
32718
32846
  style: "feel-good vlog background, light and breezy, acoustic guitar, claps, warm and unobtrusive, Andante, instrumental"
32719
32847
  }
@@ -32724,7 +32852,7 @@ var SUNO_GENERATE_PRESETS = [
32724
32852
  description: "Calm meditative pads.",
32725
32853
  group: "By Use-Case",
32726
32854
  data: {
32727
- model: "V5_5",
32855
+ model: "V6",
32728
32856
  instrumental: true,
32729
32857
  style: "ambient soundscape, calm and meditative, soft evolving synth pads, gentle textures, reverb-heavy, Adagio, instrumental"
32730
32858
  }
@@ -32735,7 +32863,7 @@ var SUNO_GENERATE_PRESETS = [
32735
32863
  description: "Festival build and drop.",
32736
32864
  group: "By Use-Case",
32737
32865
  data: {
32738
- model: "V5_5",
32866
+ model: "V6",
32739
32867
  instrumental: true,
32740
32868
  style: "festival EDM, euphoric and energetic, big supersaw leads, sidechain bass, build-up and powerful drop, Allegro 128 BPM, instrumental"
32741
32869
  }
@@ -32746,7 +32874,7 @@ var SUNO_GENERATE_PRESETS = [
32746
32874
  description: "Playful 8-bit loop.",
32747
32875
  group: "By Use-Case",
32748
32876
  data: {
32749
- model: "V5_5",
32877
+ model: "V6",
32750
32878
  instrumental: true,
32751
32879
  style: "video game chiptune, playful and adventurous, 8-bit synths, catchy melody, energetic, instrumental"
32752
32880
  }
@@ -32758,7 +32886,7 @@ var SUNO_GENERATE_PRESETS = [
32758
32886
  description: "Dusty laid-back groove.",
32759
32887
  group: "By Genre",
32760
32888
  data: {
32761
- model: "V5_5",
32889
+ model: "V6",
32762
32890
  instrumental: true,
32763
32891
  style: "lo-fi hip-hop, jazzy and mellow, dusty Rhodes chords, vinyl warmth, laid-back boom-bap groove, instrumental"
32764
32892
  }
@@ -32769,7 +32897,7 @@ var SUNO_GENERATE_PRESETS = [
32769
32897
  description: "Club-energy four-on-the-floor.",
32770
32898
  group: "By Genre",
32771
32899
  data: {
32772
- model: "V5_5",
32900
+ model: "V6",
32773
32901
  instrumental: true,
32774
32902
  style: "house EDM, energetic and euphoric, four-on-the-floor beat, catchy plucky synths, club energy, Allegro 124 BPM, instrumental"
32775
32903
  }
@@ -32780,7 +32908,7 @@ var SUNO_GENERATE_PRESETS = [
32780
32908
  description: "Driving anthemic guitars.",
32781
32909
  group: "By Genre",
32782
32910
  data: {
32783
- model: "V5_5",
32911
+ model: "V6",
32784
32912
  instrumental: true,
32785
32913
  style: "rock anthem, energetic and driving, distorted electric guitars, pounding drums, anthemic, instrumental"
32786
32914
  }
@@ -32791,7 +32919,7 @@ var SUNO_GENERATE_PRESETS = [
32791
32919
  description: "Late-night sophistication.",
32792
32920
  group: "By Genre",
32793
32921
  data: {
32794
- model: "V5_5",
32922
+ model: "V6",
32795
32923
  instrumental: true,
32796
32924
  style: "smooth jazz, relaxed and sophisticated, warm saxophone, brushed drums, walking bass, late-night, instrumental"
32797
32925
  }
@@ -32802,7 +32930,7 @@ var SUNO_GENERATE_PRESETS = [
32802
32930
  description: "Spacious and serene.",
32803
32931
  group: "By Genre",
32804
32932
  data: {
32805
- model: "V5_5",
32933
+ model: "V6",
32806
32934
  instrumental: true,
32807
32935
  style: "ambient, serene and spacious, lush synth pads, field-recording textures, slow and meditative, instrumental"
32808
32936
  }
@@ -32813,7 +32941,7 @@ var SUNO_GENERATE_PRESETS = [
32813
32941
  description: "Grand cinematic ensemble.",
32814
32942
  group: "By Genre",
32815
32943
  data: {
32816
- model: "V5_5",
32944
+ model: "V6",
32817
32945
  instrumental: true,
32818
32946
  style: "epic orchestral, grand and cinematic, sweeping strings, brass, woodwinds, timpani, dramatic, instrumental"
32819
32947
  }
@@ -32824,7 +32952,7 @@ var SUNO_GENERATE_PRESETS = [
32824
32952
  description: "80s neon nostalgia.",
32825
32953
  group: "By Genre",
32826
32954
  data: {
32827
- model: "V5_5",
32955
+ model: "V6",
32828
32956
  instrumental: true,
32829
32957
  style: "80s synthwave, nostalgic and cool, retro analog synths, pulsing bass, gated drums, neon, Andante 110 BPM, instrumental"
32830
32958
  }
@@ -32835,7 +32963,7 @@ var SUNO_GENERATE_PRESETS = [
32835
32963
  description: "Groovy and danceable.",
32836
32964
  group: "By Genre",
32837
32965
  data: {
32838
- model: "V5_5",
32966
+ model: "V6",
32839
32967
  instrumental: true,
32840
32968
  style: "funk and soul, groovy and fun, slap bass, wah guitar, tight horn section, danceable, instrumental"
32841
32969
  }
@@ -32847,7 +32975,7 @@ var SUNO_GENERATE_PRESETS = [
32847
32975
  description: "Catchy vocal pop \u2014 add lyrics.",
32848
32976
  group: "Vocals & Songs",
32849
32977
  data: {
32850
- model: "V5_5",
32978
+ model: "V6",
32851
32979
  instrumental: false,
32852
32980
  style: "upbeat pop, catchy and bright, shimmering synths, four-on-the-floor, female vocals, Allegro 120 BPM, verse-chorus-verse with bridge"
32853
32981
  }
@@ -32858,7 +32986,7 @@ var SUNO_GENERATE_PRESETS = [
32858
32986
  description: "Hard-hitting verses \u2014 add bars.",
32859
32987
  group: "Vocals & Songs",
32860
32988
  data: {
32861
- model: "V5_5",
32989
+ model: "V6",
32862
32990
  instrumental: false,
32863
32991
  style: "modern hip-hop, confident, hard-hitting 808s, trap hi-hats, male rap vocals, verse-hook-verse"
32864
32992
  }
@@ -32869,7 +32997,7 @@ var SUNO_GENERATE_PRESETS = [
32869
32997
  description: "Heartfelt vocals \u2014 add lyrics.",
32870
32998
  group: "Vocals & Songs",
32871
32999
  data: {
32872
- model: "V5_5",
33000
+ model: "V6",
32873
33001
  instrumental: false,
32874
33002
  style: "emotional ballad, tender and heartfelt, piano and strings, soulful vocals, Adagio, verse-chorus with a big bridge"
32875
33003
  }
@@ -32880,7 +33008,7 @@ var SUNO_GENERATE_PRESETS = [
32880
33008
  description: "Soaring chorus \u2014 add lyrics.",
32881
33009
  group: "Vocals & Songs",
32882
33010
  data: {
32883
- model: "V5_5",
33011
+ model: "V6",
32884
33012
  instrumental: false,
32885
33013
  style: "anthemic rock, powerful, driving guitars, big drums, male vocals, soaring chorus, verse-pre-chorus-chorus"
32886
33014
  }
@@ -32891,7 +33019,7 @@ var SUNO_GENERATE_PRESETS = [
32891
33019
  description: "Warm and intimate \u2014 add lyrics.",
32892
33020
  group: "Vocals & Songs",
32893
33021
  data: {
32894
- model: "V5_5",
33022
+ model: "V6",
32895
33023
  instrumental: false,
32896
33024
  style: "acoustic singer-songwriter, warm and intimate, fingerpicked guitar, soft vocals, Andante, verse-chorus"
32897
33025
  }
@@ -32902,42 +33030,42 @@ var SUNO_GENERATE_PRESETS = [
32902
33030
  name: "Trailer Riser / Braam",
32903
33031
  description: "Pure rising tension hit.",
32904
33032
  group: "By Use-Case",
32905
- data: { model: "V5_5", instrumental: true, style: "cinematic trailer riser and braam, tense and building, rising whoosh into a deep brass impact, no melody, instrumental" }
33033
+ data: { model: "V6", instrumental: true, style: "cinematic trailer riser and braam, tense and building, rising whoosh into a deep brass impact, no melody, instrumental" }
32906
33034
  },
32907
33035
  {
32908
33036
  id: "suno-generate/calm-corporate",
32909
33037
  name: "Calm Corporate / Tech",
32910
33038
  description: "Soft, professional bed.",
32911
33039
  group: "By Use-Case",
32912
- data: { model: "V5_5", instrumental: true, style: "calm corporate tech, professional and clean, soft synth pads, gentle pulse, Andante, instrumental" }
33040
+ data: { model: "V6", instrumental: true, style: "calm corporate tech, professional and clean, soft synth pads, gentle pulse, Andante, instrumental" }
32913
33041
  },
32914
33042
  {
32915
33043
  id: "suno-generate/holiday",
32916
33044
  name: "Holiday / Festive",
32917
33045
  description: "Warm seasonal cheer.",
32918
33046
  group: "By Use-Case",
32919
- data: { model: "V5_5", instrumental: true, style: "festive holiday music, warm and cheerful, sleigh bells, warm orchestration, cozy, instrumental" }
33047
+ data: { model: "V6", instrumental: true, style: "festive holiday music, warm and cheerful, sleigh bells, warm orchestration, cozy, instrumental" }
32920
33048
  },
32921
33049
  {
32922
33050
  id: "suno-generate/kids",
32923
33051
  name: "Kids / Children's",
32924
33052
  description: "Playful and simple.",
32925
33053
  group: "By Use-Case",
32926
- data: { model: "V5_5", instrumental: true, style: "children's music, playful and happy, simple cheerful melody, xylophone and ukulele, bouncy, instrumental" }
33054
+ data: { model: "V6", instrumental: true, style: "children's music, playful and happy, simple cheerful melody, xylophone and ukulele, bouncy, instrumental" }
32927
33055
  },
32928
33056
  {
32929
33057
  id: "suno-generate/meditation-spa",
32930
33058
  name: "Meditation / Spa",
32931
33059
  description: "Healing singing bowls.",
32932
33060
  group: "By Use-Case",
32933
- data: { model: "V5_5", instrumental: true, style: "meditation and spa, serene and healing, singing bowls, soft drones, Adagio, reverb-heavy, instrumental" }
33061
+ data: { model: "V6", instrumental: true, style: "meditation and spa, serene and healing, singing bowls, soft drones, Adagio, reverb-heavy, instrumental" }
32934
33062
  },
32935
33063
  {
32936
33064
  id: "suno-generate/workout",
32937
33065
  name: "Workout / Gym",
32938
33066
  description: "High-energy motivation.",
32939
33067
  group: "By Use-Case",
32940
- data: { model: "V5_5", instrumental: true, style: "high-energy workout, motivational and driving, pumping electronic beat, big synths, Allegro 140 BPM, instrumental" }
33068
+ data: { model: "V6", instrumental: true, style: "high-energy workout, motivational and driving, pumping electronic beat, big synths, Allegro 140 BPM, instrumental" }
32941
33069
  },
32942
33070
  // ── More By Genre ────────────────────────────────────────────────────────
32943
33071
  {
@@ -32945,42 +33073,42 @@ var SUNO_GENERATE_PRESETS = [
32945
33073
  name: "Trap Beat",
32946
33074
  description: "Booming 808s, dark.",
32947
33075
  group: "By Genre",
32948
- data: { model: "V5_5", instrumental: true, style: "trap beat, dark and hard, booming 808s, crisp rapid hi-hats, moody, instrumental" }
33076
+ data: { model: "V6", instrumental: true, style: "trap beat, dark and hard, booming 808s, crisp rapid hi-hats, moody, instrumental" }
32949
33077
  },
32950
33078
  {
32951
33079
  id: "suno-generate/dnb",
32952
33080
  name: "Drum & Bass",
32953
33081
  description: "Fast breakbeats, deep bass.",
32954
33082
  group: "By Genre",
32955
- data: { model: "V5_5", instrumental: true, style: "drum and bass, fast and energetic, breakbeats, deep rolling bassline, Presto 174 BPM, instrumental" }
33083
+ data: { model: "V6", instrumental: true, style: "drum and bass, fast and energetic, breakbeats, deep rolling bassline, Presto 174 BPM, instrumental" }
32956
33084
  },
32957
33085
  {
32958
33086
  id: "suno-generate/afrobeats",
32959
33087
  name: "Afrobeats",
32960
33088
  description: "Warm syncopated groove.",
32961
33089
  group: "By Genre",
32962
- data: { model: "V5_5", instrumental: true, style: "afrobeats, groovy and warm, syncopated percussion, warm bass, bright melodies, danceable, instrumental" }
33090
+ data: { model: "V6", instrumental: true, style: "afrobeats, groovy and warm, syncopated percussion, warm bass, bright melodies, danceable, instrumental" }
32963
33091
  },
32964
33092
  {
32965
33093
  id: "suno-generate/country",
32966
33094
  name: "Country / Americana",
32967
33095
  description: "Acoustic, heartfelt.",
32968
33096
  group: "By Genre",
32969
- data: { model: "V5_5", instrumental: true, style: "country americana, warm and heartfelt, acoustic and slide guitar, storytelling feel, instrumental" }
33097
+ data: { model: "V6", instrumental: true, style: "country americana, warm and heartfelt, acoustic and slide guitar, storytelling feel, instrumental" }
32970
33098
  },
32971
33099
  {
32972
33100
  id: "suno-generate/phonk",
32973
33101
  name: "Phonk",
32974
33102
  description: "Dark drift-phonk for reels.",
32975
33103
  group: "By Genre",
32976
- data: { model: "V5_5", instrumental: true, style: "drift phonk, dark and aggressive, distorted 808 cowbell, menacing beat, lo-fi grit, instrumental" }
33104
+ data: { model: "V6", instrumental: true, style: "drift phonk, dark and aggressive, distorted 808 cowbell, menacing beat, lo-fi grit, instrumental" }
32977
33105
  },
32978
33106
  {
32979
33107
  id: "suno-generate/reggae",
32980
33108
  name: "Reggae / Dub",
32981
33109
  description: "Laid-back island groove.",
32982
33110
  group: "By Genre",
32983
- data: { model: "V5_5", instrumental: true, style: "reggae dub, laid-back and sunny, off-beat skank guitar, deep dub bassline, relaxed island groove, instrumental" }
33111
+ data: { model: "V6", instrumental: true, style: "reggae dub, laid-back and sunny, off-beat skank guitar, deep dub bassline, relaxed island groove, instrumental" }
32984
33112
  },
32985
33113
  // ── More Vocals & Songs ──────────────────────────────────────────────────
32986
33114
  {
@@ -32988,14 +33116,14 @@ var SUNO_GENERATE_PRESETS = [
32988
33116
  name: "R&B / Soul (vocal)",
32989
33117
  description: "Smooth soulful vocals \u2014 add lyrics.",
32990
33118
  group: "Vocals & Songs",
32991
- data: { model: "V5_5", instrumental: false, style: "smooth R&B soul, sensual and warm, lush chords, soft drums, soulful vocals, Andante, verse-chorus with ad-libs" }
33119
+ data: { model: "V6", instrumental: false, style: "smooth R&B soul, sensual and warm, lush chords, soft drums, soulful vocals, Andante, verse-chorus with ad-libs" }
32992
33120
  },
32993
33121
  {
32994
33122
  id: "suno-generate/song-kpop",
32995
33123
  name: "K-Pop (vocal)",
32996
33124
  description: "Polished hook \u2014 add lyrics.",
32997
33125
  group: "Vocals & Songs",
32998
- data: { model: "V5_5", instrumental: false, style: "K-pop, polished and energetic, bright synths, punchy drums, layered vocals, Allegro 120 BPM, verse-pre-chorus-chorus" }
33126
+ data: { model: "V6", instrumental: false, style: "K-pop, polished and energetic, bright synths, punchy drums, layered vocals, Allegro 120 BPM, verse-pre-chorus-chorus" }
32999
33127
  }
33000
33128
  ];
33001
33129
 
@@ -34764,6 +34892,6 @@ function buildSurroundFillPrompt(direction, userPrompt) {
34764
34892
  return `${scene}This is a partial frame: the ${carried} portion contains real, finished pixels and the ${painted} portion is flat gray that MUST be painted in. Paint ONLY the ${painted} gray region as a natural, seamless continuation of the ${carried} portion \u2014 same scene, same perspective, continuing the horizon, geometry, and content across the boundary with no break. Keep the ${carried} portion completely unchanged. CRITICAL: do NOT change the lighting, exposure, white balance, or time of day. Match the ${carried} portion's EXACT light, color temperature, and contrast across the whole frame \u2014 if it is flat overcast daylight, keep flat overcast daylight. No golden hour, no sunset, no warm relight, no cinematic regrade. The seam between the ${carried} and ${painted} portions must be invisible. No people, no text, no labels, no watermarks.`;
34765
34893
  }
34766
34894
 
34767
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FILM_STYLE_KEYS, FLOORED_PICKER_KEYS, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GAPS_SCHEMA, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MAX_SUBJECT_KEYS, MINOR_IMPLYING_TYPE_IDS, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, RETIRED_ADULT_ONLY_HINT_STRINGS, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, VIDEO_HINT_MODE_DEFAULT, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, appendReferenceLines, applyMinorAgeFloorToPickerValues, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, asBodyClauses, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildNeedleAlternationSource, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogGuardActive, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, deriveTerm, directionFieldsForSurface, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMinorAgeHintStrings, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRegisteredSubjectKeys, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasCatalogPacksFor, hasUpstreamCharacter, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isDeniedStyleId, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, referenceDescriptionLine, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDescribedReferenceLines, renderDirectionHintClauses, renderDirectionHints, renderReferenceCaptionLines, renderStructuredFields, renderStyleSection, renderSubjectHints, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, sectionedClauseCosts, setComposedCatalogResolver, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
34895
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FILM_STYLE_KEYS, FLOORED_PICKER_KEYS, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GAPS_SCHEMA, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MAX_SUBJECT_KEYS, MINOR_IMPLYING_TYPE_IDS, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, RETIRED_ADULT_ONLY_HINT_STRINGS, 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, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, VIDEO_HINT_MODE_DEFAULT, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, __resetCatalogIdGuardForTests, appendField, appendMusicMeta, appendReferenceLines, appendScene3DStillScopingLines, applyMinorAgeFloorToPickerValues, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, asBodyClauses, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildNeedleAlternationSource, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScene3DLayoutScopingLine, buildScene3DUnreferencedFiguresWarning, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogGuardActive, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSectionedPrompt, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, composedHas, composedOption, composedOptionIndex, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, deriveTerm, directionFieldsForSurface, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMinorAgeHintStrings, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRegisteredSubjectKeys, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasCatalogPacksFor, hasScene3DLayoutScopingLine, hasUpstreamCharacter, identityRefsSentence, insertBeforeStyleSection, isAnalyzablePicker, isDeniedStyleId, isInstrumentalVocal, isMinorAge, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinHintFragments, joinPromptHints, joinPromptParts, keepableDirectionHints, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, normalizeSubjectFields, overlayEntry, partitionStyleClauses, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, readSubjectFields, referenceDescriptionLine, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDescribedReferenceLines, renderDirectionHintClauses, renderDirectionHints, renderReferenceCaptionLines, renderScene3DLayoutScopingLine, renderStructuredFields, renderStyleSection, renderSubjectHints, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, scene3DLayoutVideoCaptions, sectionedClauseCosts, setComposedCatalogResolver, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, subscribeCatalogPacks, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
34768
34896
  //# sourceMappingURL=index.js.map
34769
34897
  //# sourceMappingURL=index.js.map