@nodaro/prompts 1.54.0 → 1.56.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.
Files changed (107) hide show
  1. package/dist/{catalog-packs-DeMcSVCR.d.cts → catalog-packs-Bw7OpufR.d.cts} +1 -1
  2. package/dist/{catalog-packs-DjqvicAR.d.ts → catalog-packs-CyS8NdLM.d.ts} +1 -1
  3. package/dist/{chunk-HOZPYHRA.js → chunk-242NZ6SI.js} +5 -5
  4. package/dist/{chunk-HOZPYHRA.js.map → chunk-242NZ6SI.js.map} +1 -1
  5. package/dist/{chunk-56HWABF5.cjs → chunk-2LWYFWZL.cjs} +478 -2
  6. package/dist/chunk-2LWYFWZL.cjs.map +1 -0
  7. package/dist/{chunk-P4BXE4OA.cjs → chunk-2MTFPGQC.cjs} +13 -13
  8. package/dist/{chunk-P4BXE4OA.cjs.map → chunk-2MTFPGQC.cjs.map} +1 -1
  9. package/dist/{chunk-IVRSNUYX.js → chunk-4MCK7Y6C.js} +477 -3
  10. package/dist/chunk-4MCK7Y6C.js.map +1 -0
  11. package/dist/{chunk-FFPFBNXH.cjs → chunk-7ZWWJY24.cjs} +8 -2
  12. package/dist/chunk-7ZWWJY24.cjs.map +1 -0
  13. package/dist/{chunk-F22GZF7T.cjs → chunk-AMUXCE7X.cjs} +8 -8
  14. package/dist/{chunk-F22GZF7T.cjs.map → chunk-AMUXCE7X.cjs.map} +1 -1
  15. package/dist/{chunk-OQ3J7OGR.cjs → chunk-BHBZN2AP.cjs} +49 -49
  16. package/dist/{chunk-OQ3J7OGR.cjs.map → chunk-BHBZN2AP.cjs.map} +1 -1
  17. package/dist/{chunk-YAIPYPMM.js → chunk-BJGD4DBP.js} +4 -4
  18. package/dist/{chunk-YAIPYPMM.js.map → chunk-BJGD4DBP.js.map} +1 -1
  19. package/dist/{chunk-ZRORO6OM.js → chunk-CYYHQNW3.js} +4 -4
  20. package/dist/{chunk-ZRORO6OM.js.map → chunk-CYYHQNW3.js.map} +1 -1
  21. package/dist/{chunk-YDG3KMCN.js → chunk-DOGFC7LK.js} +13 -5
  22. package/dist/chunk-DOGFC7LK.js.map +1 -0
  23. package/dist/{chunk-Z4KWM6DV.js → chunk-EUA5AGXE.js} +9 -7
  24. package/dist/chunk-EUA5AGXE.js.map +1 -0
  25. package/dist/{chunk-E5EKWWOO.cjs → chunk-FEHXLXAV.cjs} +8 -7
  26. package/dist/chunk-FEHXLXAV.cjs.map +1 -0
  27. package/dist/{chunk-5XPELUES.js → chunk-GJX5N63V.js} +8 -2
  28. package/dist/chunk-GJX5N63V.js.map +1 -0
  29. package/dist/{chunk-OMRFKG4M.js → chunk-KBWUO4P7.js} +3 -3
  30. package/dist/{chunk-OMRFKG4M.js.map → chunk-KBWUO4P7.js.map} +1 -1
  31. package/dist/{chunk-NUC5RV4P.cjs → chunk-NDKJW7RP.cjs} +4 -4
  32. package/dist/{chunk-NUC5RV4P.cjs.map → chunk-NDKJW7RP.cjs.map} +1 -1
  33. package/dist/{chunk-CDNW7O7H.cjs → chunk-O4CRTEBB.cjs} +42 -40
  34. package/dist/chunk-O4CRTEBB.cjs.map +1 -0
  35. package/dist/{chunk-ED47NNIN.js → chunk-OXNJVQ2V.js} +3 -3
  36. package/dist/{chunk-ED47NNIN.js.map → chunk-OXNJVQ2V.js.map} +1 -1
  37. package/dist/{chunk-PWYASBX2.cjs → chunk-P5HAPDV3.cjs} +18 -18
  38. package/dist/{chunk-PWYASBX2.cjs.map → chunk-P5HAPDV3.cjs.map} +1 -1
  39. package/dist/{chunk-XUMEDRML.cjs → chunk-SJVJAEDE.cjs} +13 -5
  40. package/dist/chunk-SJVJAEDE.cjs.map +1 -0
  41. package/dist/{chunk-EUU5W7XR.js → chunk-TMYYALRF.js} +4 -4
  42. package/dist/{chunk-EUU5W7XR.js.map → chunk-TMYYALRF.js.map} +1 -1
  43. package/dist/{chunk-H322GC7M.js → chunk-VX3BIUGY.js} +5 -4
  44. package/dist/chunk-VX3BIUGY.js.map +1 -0
  45. package/dist/{chunk-VBCVQPQ4.js → chunk-WDKQQ7WL.js} +3 -3
  46. package/dist/{chunk-VBCVQPQ4.js.map → chunk-WDKQQ7WL.js.map} +1 -1
  47. package/dist/{chunk-KTNCB2IE.cjs → chunk-XMRDZRGV.cjs} +35 -35
  48. package/dist/{chunk-KTNCB2IE.cjs.map → chunk-XMRDZRGV.cjs.map} +1 -1
  49. package/dist/{chunk-7BWDATUZ.cjs → chunk-Y3TSRO3S.cjs} +125 -125
  50. package/dist/{chunk-7BWDATUZ.cjs.map → chunk-Y3TSRO3S.cjs.map} +1 -1
  51. package/dist/entries/assembly.cjs +29 -29
  52. package/dist/entries/assembly.d.cts +8 -0
  53. package/dist/entries/assembly.d.ts +8 -0
  54. package/dist/entries/assembly.js +6 -6
  55. package/dist/entries/catalog-packs.d.cts +4 -4
  56. package/dist/entries/catalog-packs.d.ts +4 -4
  57. package/dist/entries/doctrine.cjs +46 -46
  58. package/dist/entries/doctrine.js +1 -1
  59. package/dist/entries/person.d.cts +3 -3
  60. package/dist/entries/person.d.ts +3 -3
  61. package/dist/entries/picker-art.cjs +22 -22
  62. package/dist/entries/picker-art.d.cts +1 -1
  63. package/dist/entries/picker-art.d.ts +1 -1
  64. package/dist/entries/picker-art.js +2 -2
  65. package/dist/entries/picker-catalogs.cjs +57 -57
  66. package/dist/entries/picker-catalogs.d.cts +3 -3
  67. package/dist/entries/picker-catalogs.d.ts +3 -3
  68. package/dist/entries/picker-catalogs.js +5 -5
  69. package/dist/entries/pickers.cjs +383 -383
  70. package/dist/entries/pickers.js +3 -3
  71. package/dist/entries/presets.cjs +46 -38
  72. package/dist/entries/presets.d.cts +13 -1
  73. package/dist/entries/presets.d.ts +13 -1
  74. package/dist/entries/presets.js +1 -1
  75. package/dist/entries/prompt-builder.cjs +76 -76
  76. package/dist/entries/prompt-builder.js +5 -5
  77. package/dist/{images-ChAOLY5V.d.cts → images-BQ1jUWyZ.d.cts} +32 -3
  78. package/dist/{images-ChAOLY5V.d.ts → images-BQ1jUWyZ.d.ts} +32 -3
  79. package/dist/index.cjs +648 -640
  80. package/dist/index.d.cts +4 -4
  81. package/dist/index.d.ts +4 -4
  82. package/dist/index.js +12 -12
  83. package/dist/{picker-catalogs-DzLCu6qQ.d.cts → picker-catalogs-BuMGOVWC.d.cts} +1 -1
  84. package/dist/{picker-catalogs-SDSWrufc.d.ts → picker-catalogs-CVQopXwp.d.ts} +1 -1
  85. package/package.json +2 -2
  86. package/src/__tests__/assemble-image-input-style-references.test.ts +24 -0
  87. package/src/__tests__/doctrine-roster-completeness.test.ts +3 -0
  88. package/src/__tests__/factory-preset-previews.test.ts +38 -0
  89. package/src/__tests__/picker-art-images.test.ts +54 -0
  90. package/src/__tests__/seedance-extend.test.ts +46 -0
  91. package/src/assemble-image-input.ts +11 -1
  92. package/src/factory-presets/index.ts +2 -0
  93. package/src/factory-presets/preview-files.generated.ts +472 -0
  94. package/src/factory-presets/previews.ts +17 -2
  95. package/src/picker-art/images.ts +39 -2
  96. package/src/picker-catalogs.ts +4 -2
  97. package/src/prompt-wizard-categories.ts +8 -0
  98. package/dist/chunk-56HWABF5.cjs.map +0 -1
  99. package/dist/chunk-5XPELUES.js.map +0 -1
  100. package/dist/chunk-CDNW7O7H.cjs.map +0 -1
  101. package/dist/chunk-E5EKWWOO.cjs.map +0 -1
  102. package/dist/chunk-FFPFBNXH.cjs.map +0 -1
  103. package/dist/chunk-H322GC7M.js.map +0 -1
  104. package/dist/chunk-IVRSNUYX.js.map +0 -1
  105. package/dist/chunk-XUMEDRML.cjs.map +0 -1
  106. package/dist/chunk-YDG3KMCN.js.map +0 -1
  107. package/dist/chunk-Z4KWM6DV.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { lookPreviewStillUrl } from './chunk-5XPELUES.js';
1
+ import { lookPreviewStillUrl } from './chunk-GJX5N63V.js';
2
2
 
3
3
  // src/picker-art/restyle-previews.ts
4
4
  var RESTYLE_PREVIEWS = {
@@ -41,5 +41,5 @@ function restylePreviewStillUrl(preview, width) {
41
41
  }
42
42
 
43
43
  export { RESTYLE_PREVIEWS, restylePreviewStillUrl };
44
- //# sourceMappingURL=chunk-OMRFKG4M.js.map
45
- //# sourceMappingURL=chunk-OMRFKG4M.js.map
44
+ //# sourceMappingURL=chunk-KBWUO4P7.js.map
45
+ //# sourceMappingURL=chunk-KBWUO4P7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/picker-art/restyle-previews.ts"],"names":[],"mappings":";;;AAsBO,IAAM,gBAAA,GAA6D;AAAA;AAAA;AAAA,EAGxE,KAAA,EAAO,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGjH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,YAAA,EAAc,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGrG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGtH,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,eAAA,EAAiB,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAG3H,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA;AACrB;AAGO,SAAS,sBAAA,CAAuB,SAAyB,KAAA,EAAoC;AAClG,EAAA,OAAO,mBAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,KAAA,EAAO,QAAQ,cAAc,CAAA;AACvE","file":"chunk-OMRFKG4M.js","sourcesContent":["// Restyle previews: for each art style, a short clip of real footage wiping\n// into that style, for a picker that restyles a video. Keyed by the `style`\n// catalog's option id. An entry exists only for an approved clip: a style\n// without one has no preview here.\n//\n// Each approved style keeps the URLs of its source shot and its generated clip\n// (no wipe) in a comment beside its entry, so the clip can be composed again if\n// the switch animation changes.\n//\n// Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style\n// picker keeps showing. Like every render, a clip lives under picker-renders/\n// on the CDN, a key no user owns; a test holds this.\nimport { lookPreviewStillUrl } from \"./images.js\"\n\n/** One style's preview clip. */\nexport interface RestylePreview {\n readonly url: string\n /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */\n readonly stillAtSeconds?: number\n}\n\n/** Art style id → its restyle preview clip. */\nexport const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {\n // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4\n anime: { url: \"https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4\n claymation: { url: \"https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4\n \"comic-book\": { url: \"https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4\n cyberpunk: { url: \"https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4\n \"felt-puppet\": { url: \"https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/acf379d4-704b-40e5-a5d2-657341f1278a.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d3da4317-461f-4a10-a1e6-3d141fbb7802.mp4\n \"low-poly\": { url: \"https://cdn.nodaro.ai/picker-renders/4a5b1b1a-c3a4-46d4-9623-f57e80fcbb68.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4\n \"oil-painting\": { url: \"https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4\n \"pixar-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4\n \"pop-art\": { url: \"https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/f832aab2-5f30-48cc-81dd-e6a4b84128b3.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/67386080-e6f5-4fba-a7bc-cfb6de462804.mp4\n \"toy-figure-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/eaebd242-7e53-4018-ba85-00673e2a9b2b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4\n watercolor: { url: \"https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4\" },\n}\n\n/** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */\nexport function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {\n return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)\n}\n"]}
1
+ {"version":3,"sources":["../src/picker-art/restyle-previews.ts"],"names":[],"mappings":";;;AAsBO,IAAM,gBAAA,GAA6D;AAAA;AAAA;AAAA,EAGxE,KAAA,EAAO,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGjH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,YAAA,EAAc,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGrG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGtH,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,eAAA,EAAiB,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAG3H,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA;AACrB;AAGO,SAAS,sBAAA,CAAuB,SAAyB,KAAA,EAAoC;AAClG,EAAA,OAAO,mBAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,KAAA,EAAO,QAAQ,cAAc,CAAA;AACvE","file":"chunk-KBWUO4P7.js","sourcesContent":["// Restyle previews: for each art style, a short clip of real footage wiping\n// into that style, for a picker that restyles a video. Keyed by the `style`\n// catalog's option id. An entry exists only for an approved clip: a style\n// without one has no preview here.\n//\n// Each approved style keeps the URLs of its source shot and its generated clip\n// (no wipe) in a comment beside its entry, so the clip can be composed again if\n// the switch animation changes.\n//\n// Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style\n// picker keeps showing. Like every render, a clip lives under picker-renders/\n// on the CDN, a key no user owns; a test holds this.\nimport { lookPreviewStillUrl } from \"./images.js\"\n\n/** One style's preview clip. */\nexport interface RestylePreview {\n readonly url: string\n /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */\n readonly stillAtSeconds?: number\n}\n\n/** Art style id → its restyle preview clip. */\nexport const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {\n // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4\n anime: { url: \"https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4\n claymation: { url: \"https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4\n \"comic-book\": { url: \"https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4\n cyberpunk: { url: \"https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4\n \"felt-puppet\": { url: \"https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/acf379d4-704b-40e5-a5d2-657341f1278a.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d3da4317-461f-4a10-a1e6-3d141fbb7802.mp4\n \"low-poly\": { url: \"https://cdn.nodaro.ai/picker-renders/4a5b1b1a-c3a4-46d4-9623-f57e80fcbb68.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4\n \"oil-painting\": { url: \"https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4\n \"pixar-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4\n \"pop-art\": { url: \"https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/f832aab2-5f30-48cc-81dd-e6a4b84128b3.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/67386080-e6f5-4fba-a7bc-cfb6de462804.mp4\n \"toy-figure-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/eaebd242-7e53-4018-ba85-00673e2a9b2b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4\n watercolor: { url: \"https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4\" },\n}\n\n/** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */\nexport function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {\n return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkFFPFBNXH_cjs = require('./chunk-FFPFBNXH.cjs');
3
+ var chunk7ZWWJY24_cjs = require('./chunk-7ZWWJY24.cjs');
4
4
 
5
5
  // src/picker-art/restyle-previews.ts
6
6
  var RESTYLE_PREVIEWS = {
@@ -39,10 +39,10 @@ var RESTYLE_PREVIEWS = {
39
39
  watercolor: { url: "https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4" }
40
40
  };
41
41
  function restylePreviewStillUrl(preview, width) {
42
- return chunkFFPFBNXH_cjs.lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds);
42
+ return chunk7ZWWJY24_cjs.lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds);
43
43
  }
44
44
 
45
45
  exports.RESTYLE_PREVIEWS = RESTYLE_PREVIEWS;
46
46
  exports.restylePreviewStillUrl = restylePreviewStillUrl;
47
- //# sourceMappingURL=chunk-NUC5RV4P.cjs.map
48
- //# sourceMappingURL=chunk-NUC5RV4P.cjs.map
47
+ //# sourceMappingURL=chunk-NDKJW7RP.cjs.map
48
+ //# sourceMappingURL=chunk-NDKJW7RP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/picker-art/restyle-previews.ts"],"names":["lookPreviewStillUrl"],"mappings":";;;;;AAsBO,IAAM,gBAAA,GAA6D;AAAA;AAAA;AAAA,EAGxE,KAAA,EAAO,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGjH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,YAAA,EAAc,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGrG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGtH,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,eAAA,EAAiB,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAG3H,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA;AACrB;AAGO,SAAS,sBAAA,CAAuB,SAAyB,KAAA,EAAoC;AAClG,EAAA,OAAOA,qCAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,KAAA,EAAO,QAAQ,cAAc,CAAA;AACvE","file":"chunk-NUC5RV4P.cjs","sourcesContent":["// Restyle previews: for each art style, a short clip of real footage wiping\n// into that style, for a picker that restyles a video. Keyed by the `style`\n// catalog's option id. An entry exists only for an approved clip: a style\n// without one has no preview here.\n//\n// Each approved style keeps the URLs of its source shot and its generated clip\n// (no wipe) in a comment beside its entry, so the clip can be composed again if\n// the switch animation changes.\n//\n// Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style\n// picker keeps showing. Like every render, a clip lives under picker-renders/\n// on the CDN, a key no user owns; a test holds this.\nimport { lookPreviewStillUrl } from \"./images.js\"\n\n/** One style's preview clip. */\nexport interface RestylePreview {\n readonly url: string\n /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */\n readonly stillAtSeconds?: number\n}\n\n/** Art style id → its restyle preview clip. */\nexport const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {\n // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4\n anime: { url: \"https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4\n claymation: { url: \"https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4\n \"comic-book\": { url: \"https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4\n cyberpunk: { url: \"https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4\n \"felt-puppet\": { url: \"https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/acf379d4-704b-40e5-a5d2-657341f1278a.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d3da4317-461f-4a10-a1e6-3d141fbb7802.mp4\n \"low-poly\": { url: \"https://cdn.nodaro.ai/picker-renders/4a5b1b1a-c3a4-46d4-9623-f57e80fcbb68.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4\n \"oil-painting\": { url: \"https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4\n \"pixar-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4\n \"pop-art\": { url: \"https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/f832aab2-5f30-48cc-81dd-e6a4b84128b3.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/67386080-e6f5-4fba-a7bc-cfb6de462804.mp4\n \"toy-figure-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/eaebd242-7e53-4018-ba85-00673e2a9b2b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4\n watercolor: { url: \"https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4\" },\n}\n\n/** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */\nexport function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {\n return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)\n}\n"]}
1
+ {"version":3,"sources":["../src/picker-art/restyle-previews.ts"],"names":["lookPreviewStillUrl"],"mappings":";;;;;AAsBO,IAAM,gBAAA,GAA6D;AAAA;AAAA;AAAA,EAGxE,KAAA,EAAO,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGjH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,YAAA,EAAc,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGrG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGtH,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,eAAA,EAAiB,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAG3H,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA;AACrB;AAGO,SAAS,sBAAA,CAAuB,SAAyB,KAAA,EAAoC;AAClG,EAAA,OAAOA,qCAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,KAAA,EAAO,QAAQ,cAAc,CAAA;AACvE","file":"chunk-NDKJW7RP.cjs","sourcesContent":["// Restyle previews: for each art style, a short clip of real footage wiping\n// into that style, for a picker that restyles a video. Keyed by the `style`\n// catalog's option id. An entry exists only for an approved clip: a style\n// without one has no preview here.\n//\n// Each approved style keeps the URLs of its source shot and its generated clip\n// (no wipe) in a comment beside its entry, so the clip can be composed again if\n// the switch animation changes.\n//\n// Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style\n// picker keeps showing. Like every render, a clip lives under picker-renders/\n// on the CDN, a key no user owns; a test holds this.\nimport { lookPreviewStillUrl } from \"./images.js\"\n\n/** One style's preview clip. */\nexport interface RestylePreview {\n readonly url: string\n /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */\n readonly stillAtSeconds?: number\n}\n\n/** Art style id → its restyle preview clip. */\nexport const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {\n // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4\n anime: { url: \"https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4\n claymation: { url: \"https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4\n \"comic-book\": { url: \"https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4\n cyberpunk: { url: \"https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4\n \"felt-puppet\": { url: \"https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/acf379d4-704b-40e5-a5d2-657341f1278a.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d3da4317-461f-4a10-a1e6-3d141fbb7802.mp4\n \"low-poly\": { url: \"https://cdn.nodaro.ai/picker-renders/4a5b1b1a-c3a4-46d4-9623-f57e80fcbb68.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4\n \"oil-painting\": { url: \"https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4\n \"pixar-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4\n \"pop-art\": { url: \"https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/f832aab2-5f30-48cc-81dd-e6a4b84128b3.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/67386080-e6f5-4fba-a7bc-cfb6de462804.mp4\n \"toy-figure-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/eaebd242-7e53-4018-ba85-00673e2a9b2b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4\n watercolor: { url: \"https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4\" },\n}\n\n/** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */\nexport function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {\n return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkPWYASBX2_cjs = require('./chunk-PWYASBX2.cjs');
3
+ var chunkP5HAPDV3_cjs = require('./chunk-P5HAPDV3.cjs');
4
4
  var chunkXUZXBY75_cjs = require('./chunk-XUZXBY75.cjs');
5
5
  var chunk2NJTFCKQ_cjs = require('./chunk-2NJTFCKQ.cjs');
6
- var chunkOQ3J7OGR_cjs = require('./chunk-OQ3J7OGR.cjs');
7
- var chunkKTNCB2IE_cjs = require('./chunk-KTNCB2IE.cjs');
8
- var chunkE5EKWWOO_cjs = require('./chunk-E5EKWWOO.cjs');
6
+ var chunkBHBZN2AP_cjs = require('./chunk-BHBZN2AP.cjs');
7
+ var chunkXMRDZRGV_cjs = require('./chunk-XMRDZRGV.cjs');
8
+ var chunkFEHXLXAV_cjs = require('./chunk-FEHXLXAV.cjs');
9
9
  var entities = require('@nodaro/shared/entities');
10
10
  var models = require('@nodaro/shared/models');
11
11
  var video = require('@nodaro/shared/video');
@@ -147,11 +147,11 @@ function resolveSeatlessAssets(args) {
147
147
  var REFERENCE_TOKEN_RE = /\{(image|video|audio):(\d+)(?::([a-zA-Z0-9_ -]+))?\}/gi;
148
148
  function resolveReferenceTokens(prompt, counts) {
149
149
  if (!prompt) return prompt;
150
- return chunkPWYASBX2_cjs.tidyReferenceTokenGaps(
150
+ return chunkP5HAPDV3_cjs.tidyReferenceTokenGaps(
151
151
  prompt.replace(REFERENCE_TOKEN_RE, (_match, rawKind, nStr, label) => {
152
152
  const kind = rawKind.toLowerCase();
153
153
  const n = parseInt(nStr, 10);
154
- if (n < 1 || n > counts[kind]) return chunkPWYASBX2_cjs.unboundReferenceTokenText(label);
154
+ if (n < 1 || n > counts[kind]) return chunkP5HAPDV3_cjs.unboundReferenceTokenText(label);
155
155
  if (label) return REF_BINDING[kind](label, n);
156
156
  return `@${kind}_${n}`;
157
157
  })
@@ -210,7 +210,7 @@ function resolveVideoCharacterMentionsHybrid(prompt, tokens, refs, offset) {
210
210
  const binding = bindingFor(m.url);
211
211
  const lock = chunk2NJTFCKQ_cjs.buildIdentityLockLine(chunk2NJTFCKQ_cjs.withForcedIdentityLock(ref, lockOverrideByUrl.get(m.url)), binding);
212
212
  if (lock) lockLines.push(lock);
213
- const overrideLine = chunkPWYASBX2_cjs.referenceDescriptionLine(binding, ref.descriptionOverride);
213
+ const overrideLine = chunkP5HAPDV3_cjs.referenceDescriptionLine(binding, ref.descriptionOverride);
214
214
  if (overrideLine) elementDirectives.push(overrideLine);
215
215
  const inject = ref.elementInjection?.trim();
216
216
  if (inject) elementDirectives.push(inject);
@@ -245,10 +245,10 @@ function resolveVideoReferenceCore(args) {
245
245
  lookupCharacterBySlug: args.lookupCharacterBySlug
246
246
  }) : void 0;
247
247
  const describedAndCaptionLines = [
248
- ...chunkPWYASBX2_cjs.renderDescribedReferenceLines(
248
+ ...chunkP5HAPDV3_cjs.renderDescribedReferenceLines(
249
249
  seatless ? [...seatless.identities, ...args.describedReferences ?? []] : args.describedReferences
250
250
  ),
251
- ...chunkPWYASBX2_cjs.renderReferenceCaptionLines(args.videoCaptions, args.audioCaptions, {
251
+ ...chunkP5HAPDV3_cjs.renderReferenceCaptionLines(args.videoCaptions, args.audioCaptions, {
252
252
  video: args.videoRefCount ?? 0,
253
253
  audio: args.audioRefCount ?? 0
254
254
  })
@@ -286,7 +286,7 @@ function resolveVideoReferenceCore(args) {
286
286
  // Described references and rail captions are the ONE thing this branch can
287
287
  // still contribute: they need no seat, so a request that carries only them
288
288
  // (a story landing before any entity exists) reaches the model here.
289
- prompt: describedAndCaptionLines.length > 0 ? chunkPWYASBX2_cjs.appendReferenceLines(resolved2 ?? "", describedAndCaptionLines, args.hybridRoles === true ? "hybrid" : "legacy") : resolved2,
289
+ prompt: describedAndCaptionLines.length > 0 ? chunkP5HAPDV3_cjs.appendReferenceLines(resolved2 ?? "", describedAndCaptionLines, args.hybridRoles === true ? "hybrid" : "legacy") : resolved2,
290
290
  additionalUrls: [...leadingRefUrls]
291
291
  };
292
292
  }
@@ -307,7 +307,7 @@ function resolveVideoReferenceCore(args) {
307
307
  mentionLockLines = h.lockLines;
308
308
  mentionElementDirectives = h.elementDirectives;
309
309
  } else {
310
- resolved = mentionTokens.length > 0 ? chunkPWYASBX2_cjs.resolveCharacterMentions(promptForResolution, mentionTokens, wiredCharRefs) : { prompt: promptForResolution, additionalUrls: [], mentionedCharacterSlugs: /* @__PURE__ */ new Set() };
310
+ resolved = mentionTokens.length > 0 ? chunkP5HAPDV3_cjs.resolveCharacterMentions(promptForResolution, mentionTokens, wiredCharRefs) : { prompt: promptForResolution, additionalUrls: [], mentionedCharacterSlugs: /* @__PURE__ */ new Set() };
311
311
  }
312
312
  const fallbackUrls = [];
313
313
  const fallbackDirectiveLines = [];
@@ -344,7 +344,7 @@ function resolveVideoReferenceCore(args) {
344
344
  canonicalPhrases.push(entities.roleToPhrase(entities.resolveDefaultRole(r.defaultRole, r.defaultUsageMode, r.source), binding));
345
345
  const lock = chunk2NJTFCKQ_cjs.buildIdentityLockLine(r, binding);
346
346
  if (lock) canonicalLockLines.push(lock);
347
- const overrideLine = chunkPWYASBX2_cjs.referenceDescriptionLine(binding, r.descriptionOverride);
347
+ const overrideLine = chunkP5HAPDV3_cjs.referenceDescriptionLine(binding, r.descriptionOverride);
348
348
  if (overrideLine) canonicalElementDirectives.push(overrideLine);
349
349
  const inject = r.elementInjection?.trim();
350
350
  if (inject) canonicalElementDirectives.push(inject);
@@ -476,7 +476,7 @@ function resolveVideoReferenceCore(args) {
476
476
  const lockBlock = lockLines.length > 0 ? `${lockLines.join("\n")}
477
477
 
478
478
  ` : "";
479
- finalPrompt = `${lockBlock}${chunkPWYASBX2_cjs.insertBeforeStyleSection(finalPrompt, trailingLines)}`;
479
+ finalPrompt = `${lockBlock}${chunkP5HAPDV3_cjs.insertBeforeStyleSection(finalPrompt, trailingLines)}`;
480
480
  } else {
481
481
  const allFallbackLines = [...fallbackDirectiveLines, ...extraDirectiveLines];
482
482
  if (allFallbackLines.length > 0) {
@@ -526,7 +526,7 @@ ${finalPrompt}` : block;
526
526
  merged.push(u);
527
527
  }
528
528
  }
529
- finalPrompt = chunkPWYASBX2_cjs.appendReferenceLines(
529
+ finalPrompt = chunkP5HAPDV3_cjs.appendReferenceLines(
530
530
  finalPrompt,
531
531
  describedAndCaptionLines,
532
532
  hybrid ? "hybrid" : "legacy"
@@ -554,7 +554,7 @@ ${finalPrompt}` : block;
554
554
  });
555
555
  }
556
556
  }
557
- const reordered = chunkPWYASBX2_cjs.applyReferenceOrderToVideo(assetUrls, finalPrompt, refsForOrdering, referenceOrder, void 0, offset);
557
+ const reordered = chunkP5HAPDV3_cjs.applyReferenceOrderToVideo(assetUrls, finalPrompt, refsForOrdering, referenceOrder, void 0, offset);
558
558
  return {
559
559
  prompt: resolveReferenceTokens(reordered.prompt, tokenCounts(merged.length)),
560
560
  additionalUrls: [...leadingRefUrls, ...reordered.urls]
@@ -608,7 +608,7 @@ function composeSoundHintFromConnections(consumer, consumerType, ctx) {
608
608
  continue;
609
609
  }
610
610
  }
611
- const hint = chunkOQ3J7OGR_cjs.getParameterPromptHint(src);
611
+ const hint = chunkBHBZN2AP_cjs.getParameterPromptHint(src);
612
612
  if (hint) acceptedHints.push(hint);
613
613
  if ((consumerType === "suno-generate" || consumerType === "generate-music") && t === "voice-character" && src.data) {
614
614
  const gender = src.data.gender;
@@ -622,14 +622,14 @@ function composeSoundHintFromConnections(consumer, consumerType, ctx) {
622
622
  const sub = typeof data.subgenre === "string" ? data.subgenre : void 0;
623
623
  const genreId = typeof data.genre === "string" ? data.genre : void 0;
624
624
  const eraId = typeof data.era === "string" ? data.era : void 0;
625
- const eraHint = chunkE5EKWWOO_cjs.getMusicEra(eraId)?.promptHint;
626
- const genre = chunkE5EKWWOO_cjs.getMusicGenre(genreId);
625
+ const eraHint = chunkFEHXLXAV_cjs.getMusicEra(eraId)?.promptHint;
626
+ const genre = chunkFEHXLXAV_cjs.getMusicGenre(genreId);
627
627
  const subHint = genre?.subgenres.find((s) => s.id === sub)?.promptHint ?? genre?.promptHint;
628
628
  const composed = [eraHint, subHint].filter(Boolean).join(" ");
629
629
  if (composed && !fields.genre) Object.assign(fields, { genre: composed });
630
630
  }
631
631
  if (t === "music-mood" && data) {
632
- const composed = chunkE5EKWWOO_cjs.buildMusicMoodHints({
632
+ const composed = chunkFEHXLXAV_cjs.buildMusicMoodHints({
633
633
  energy: typeof data.energy === "string" ? data.energy : void 0,
634
634
  emotion: data.emotion,
635
635
  vibe: data.vibe
@@ -716,23 +716,23 @@ function assembleSunoInput(input) {
716
716
  function renderImageHintPieces(subject, direction, structured, directionRefs) {
717
717
  return {
718
718
  hintClauses: [
719
- ...chunkPWYASBX2_cjs.asBodyClauses(
720
- chunkPWYASBX2_cjs.renderSubjectHints(subject, {
719
+ ...chunkP5HAPDV3_cjs.asBodyClauses(
720
+ chunkP5HAPDV3_cjs.renderSubjectHints(subject, {
721
721
  surface: "image",
722
- mode: chunkPWYASBX2_cjs.SUBJECT_IMAGE_HINT_MODE_DEFAULT
722
+ mode: chunkP5HAPDV3_cjs.SUBJECT_IMAGE_HINT_MODE_DEFAULT
723
723
  })
724
724
  ),
725
- ...chunkPWYASBX2_cjs.partitionStyleClauses(direction, {
725
+ ...chunkP5HAPDV3_cjs.partitionStyleClauses(direction, {
726
726
  surface: "image",
727
- mode: chunkKTNCB2IE_cjs.IMAGE_HINT_MODE_DEFAULT,
727
+ mode: chunkXMRDZRGV_cjs.IMAGE_HINT_MODE_DEFAULT,
728
728
  ...directionRefs !== void 0 ? { refs: directionRefs } : {}
729
729
  })
730
730
  ].filter((c) => c.text.length > 0),
731
- structuredFragment: structured ? chunkPWYASBX2_cjs.renderStructuredFields(structured) : ""
731
+ structuredFragment: structured ? chunkP5HAPDV3_cjs.renderStructuredFields(structured) : ""
732
732
  };
733
733
  }
734
734
  function composePromptText(userPrompt, pieces, keptHintClauses) {
735
- return chunkPWYASBX2_cjs.composeSectionedPrompt(
735
+ return chunkP5HAPDV3_cjs.composeSectionedPrompt(
736
736
  userPrompt,
737
737
  pieces.hintClauses.slice(0, keptHintClauses),
738
738
  pieces.structuredFragment
@@ -751,7 +751,9 @@ function assembleImageInput(input) {
751
751
  function fillStyleReferences(input, style) {
752
752
  const base = assembleOnce(input);
753
753
  const own = base.referenceImageUrls ?? [];
754
- const seats = models.imageReferenceLimit(input.provider) - own.length;
754
+ const asked = Number(input.reservedImageSeats ?? 0);
755
+ const reserved = Number.isFinite(asked) ? Math.max(0, Math.trunc(asked)) : 0;
756
+ const seats = models.imageReferenceLimit(input.provider) - own.length - reserved;
755
757
  const seen = new Set(own);
756
758
  const candidates = [];
757
759
  for (const s of style) {
@@ -779,12 +781,12 @@ function styleConnectedReference(s, index) {
779
781
  url: s.url,
780
782
  isExtraRef: true,
781
783
  defaultRole: "style",
782
- description: chunkKTNCB2IE_cjs.styleReferenceDescription(index, s.caption)
784
+ description: chunkXMRDZRGV_cjs.styleReferenceDescription(index, s.caption)
783
785
  };
784
786
  }
785
787
  function assembleOnce(input) {
786
788
  const pieces = renderImageHintPieces(input.subject, input.direction, input.structured, input.directionRefs);
787
- const assembleWith = (keptHintClauses) => chunkPWYASBX2_cjs.buildImagePromptWithOverflow({
789
+ const assembleWith = (keptHintClauses) => chunkP5HAPDV3_cjs.buildImagePromptWithOverflow({
788
790
  prompt: composePromptText(input.userPrompt, pieces, keptHintClauses),
789
791
  provider: input.provider,
790
792
  ...input.connectedReferences !== void 0 ? { connectedReferences: input.connectedReferences } : {},
@@ -812,7 +814,7 @@ function assembleOnce(input) {
812
814
  let kept = pieces.hintClauses.length;
813
815
  let fitted = assembleWith(kept);
814
816
  if (fitted.overflowChars > 0) {
815
- const costs = chunkPWYASBX2_cjs.sectionedClauseCosts(
817
+ const costs = chunkP5HAPDV3_cjs.sectionedClauseCosts(
816
818
  input.userPrompt,
817
819
  pieces.hintClauses,
818
820
  pieces.structuredFragment
@@ -830,19 +832,19 @@ function assembleOnce(input) {
830
832
  // src/assemble-video-input.ts
831
833
  function composeVideoPromptText(userPrompt, direction, structured, opts) {
832
834
  const hintClauses = [
833
- ...chunkPWYASBX2_cjs.asBodyClauses(
834
- chunkPWYASBX2_cjs.renderSubjectHints(opts?.subject, {
835
+ ...chunkP5HAPDV3_cjs.asBodyClauses(
836
+ chunkP5HAPDV3_cjs.renderSubjectHints(opts?.subject, {
835
837
  surface: "video",
836
- mode: opts?.subjectHintMode ?? chunkPWYASBX2_cjs.SUBJECT_VIDEO_HINT_MODE_DEFAULT
838
+ mode: opts?.subjectHintMode ?? chunkP5HAPDV3_cjs.SUBJECT_VIDEO_HINT_MODE_DEFAULT
837
839
  })
838
840
  ),
839
- ...chunkPWYASBX2_cjs.partitionStyleClauses(direction, {
841
+ ...chunkP5HAPDV3_cjs.partitionStyleClauses(direction, {
840
842
  surface: "video",
841
- mode: opts?.hintMode ?? chunkKTNCB2IE_cjs.VIDEO_HINT_MODE_DEFAULT
843
+ mode: opts?.hintMode ?? chunkXMRDZRGV_cjs.VIDEO_HINT_MODE_DEFAULT
842
844
  })
843
845
  ].filter((c) => c.text.length > 0);
844
- const structuredFragment = structured ? chunkPWYASBX2_cjs.renderStructuredFields(structured) : "";
845
- const composeWith = (kept2) => chunkPWYASBX2_cjs.composeSectionedPrompt(userPrompt, hintClauses.slice(0, kept2), structuredFragment);
846
+ const structuredFragment = structured ? chunkP5HAPDV3_cjs.renderStructuredFields(structured) : "";
847
+ const composeWith = (kept2) => chunkP5HAPDV3_cjs.composeSectionedPrompt(userPrompt, hintClauses.slice(0, kept2), structuredFragment);
846
848
  const cap = opts?.cap;
847
849
  if (cap === void 0) return composeWith(hintClauses.length);
848
850
  const frame = opts?.frame ?? ((body2) => body2);
@@ -850,7 +852,7 @@ function composeVideoPromptText(userPrompt, direction, structured, opts) {
850
852
  let body = composeWith(kept);
851
853
  let framedLength = frame(body)?.length ?? 0;
852
854
  if (framedLength <= cap) return body;
853
- const costs = chunkPWYASBX2_cjs.sectionedClauseCosts(userPrompt, hintClauses, structuredFragment);
855
+ const costs = chunkP5HAPDV3_cjs.sectionedClauseCosts(userPrompt, hintClauses, structuredFragment);
854
856
  const texts = hintClauses.map((c) => c.text);
855
857
  while (framedLength > cap && kept > 0) {
856
858
  kept = chunkXUZXBY75_cjs.keepableDirectionHints(texts, kept, framedLength - cap, costs);
@@ -1074,5 +1076,5 @@ exports.resolveSeedance2Inputs = resolveSeedance2Inputs;
1074
1076
  exports.resolveVeoI2vInputs = resolveVeoI2vInputs;
1075
1077
  exports.resolveVideoReferenceCore = resolveVideoReferenceCore;
1076
1078
  exports.truncateForField = truncateForField;
1077
- //# sourceMappingURL=chunk-CDNW7O7H.cjs.map
1078
- //# sourceMappingURL=chunk-CDNW7O7H.cjs.map
1079
+ //# sourceMappingURL=chunk-O4CRTEBB.cjs.map
1080
+ //# sourceMappingURL=chunk-O4CRTEBB.cjs.map