@nodaro/prompts 1.49.0 → 1.50.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 (96) hide show
  1. package/dist/{catalog-packs-C--EzV3K.d.cts → catalog-packs-DeMcSVCR.d.cts} +1 -1
  2. package/dist/{catalog-packs-BzzZCjbz.d.ts → catalog-packs-DjqvicAR.d.ts} +1 -1
  3. package/dist/{chunk-RRHU6MD5.js → chunk-34JK2G34.js} +4 -4
  4. package/dist/{chunk-RRHU6MD5.js.map → chunk-34JK2G34.js.map} +1 -1
  5. package/dist/{chunk-4V4JJUEH.js → chunk-3XSB5YDY.js} +4 -4
  6. package/dist/chunk-3XSB5YDY.js.map +1 -0
  7. package/dist/{chunk-QN3OP6TG.js → chunk-5XPELUES.js} +4 -4
  8. package/dist/chunk-5XPELUES.js.map +1 -0
  9. package/dist/{chunk-3J52HGBL.js → chunk-BWDQEAX2.js} +4 -4
  10. package/dist/{chunk-3J52HGBL.js.map → chunk-BWDQEAX2.js.map} +1 -1
  11. package/dist/{chunk-MJ5OXUDF.js → chunk-C5LP7DAQ.js} +6 -6
  12. package/dist/{chunk-MJ5OXUDF.js.map → chunk-C5LP7DAQ.js.map} +1 -1
  13. package/dist/{chunk-PJPCNKEJ.js → chunk-DB6A5I6V.js} +3 -3
  14. package/dist/{chunk-PJPCNKEJ.js.map → chunk-DB6A5I6V.js.map} +1 -1
  15. package/dist/{chunk-FDTRN7OE.js → chunk-FEOVUTFC.js} +10 -7
  16. package/dist/{chunk-FDTRN7OE.js.map → chunk-FEOVUTFC.js.map} +1 -1
  17. package/dist/{chunk-WW7IHRIE.cjs → chunk-FFPFBNXH.cjs} +4 -4
  18. package/dist/chunk-FFPFBNXH.cjs.map +1 -0
  19. package/dist/chunk-GZ5SL2BI.js +30 -0
  20. package/dist/chunk-GZ5SL2BI.js.map +1 -0
  21. package/dist/{chunk-OXJ5GN57.cjs → chunk-HR4TFBU2.cjs} +35 -35
  22. package/dist/{chunk-OXJ5GN57.cjs.map → chunk-HR4TFBU2.cjs.map} +1 -1
  23. package/dist/{chunk-NBJR7JS4.cjs → chunk-IADAATZK.cjs} +49 -49
  24. package/dist/{chunk-NBJR7JS4.cjs.map → chunk-IADAATZK.cjs.map} +1 -1
  25. package/dist/{chunk-XVAVCHPJ.js → chunk-IXBTD2LW.js} +4 -4
  26. package/dist/{chunk-XVAVCHPJ.js.map → chunk-IXBTD2LW.js.map} +1 -1
  27. package/dist/{chunk-3HMMG6W4.cjs → chunk-JGEBO6L6.cjs} +8 -8
  28. package/dist/{chunk-3HMMG6W4.cjs.map → chunk-JGEBO6L6.cjs.map} +1 -1
  29. package/dist/{chunk-NET25TEQ.cjs → chunk-KYKCHOOS.cjs} +13 -13
  30. package/dist/{chunk-NET25TEQ.cjs.map → chunk-KYKCHOOS.cjs.map} +1 -1
  31. package/dist/{chunk-KBIA4R6X.cjs → chunk-MJIKM4YZ.cjs} +130 -127
  32. package/dist/{chunk-KBIA4R6X.cjs.map → chunk-MJIKM4YZ.cjs.map} +1 -1
  33. package/dist/{chunk-MGK6SFTV.cjs → chunk-RVBO63D5.cjs} +4 -4
  34. package/dist/{chunk-MGK6SFTV.cjs.map → chunk-RVBO63D5.cjs.map} +1 -1
  35. package/dist/{chunk-3AVLIA4B.cjs → chunk-TYJCCODP.cjs} +18 -18
  36. package/dist/{chunk-3AVLIA4B.cjs.map → chunk-TYJCCODP.cjs.map} +1 -1
  37. package/dist/{chunk-7C7XLZPU.js → chunk-VJYKE6AY.js} +3 -3
  38. package/dist/{chunk-7C7XLZPU.js.map → chunk-VJYKE6AY.js.map} +1 -1
  39. package/dist/{chunk-7VVVHIMH.cjs → chunk-VYCTRGJ7.cjs} +39 -39
  40. package/dist/{chunk-7VVVHIMH.cjs.map → chunk-VYCTRGJ7.cjs.map} +1 -1
  41. package/dist/{chunk-GTN3UO74.cjs → chunk-WLN2MJ7F.cjs} +7 -7
  42. package/dist/chunk-WLN2MJ7F.cjs.map +1 -0
  43. package/dist/chunk-XBY53RF5.cjs +33 -0
  44. package/dist/chunk-XBY53RF5.cjs.map +1 -0
  45. package/dist/{chunk-NRBO4I4G.js → chunk-ZZ6UOK2P.js} +4 -4
  46. package/dist/{chunk-NRBO4I4G.js.map → chunk-ZZ6UOK2P.js.map} +1 -1
  47. package/dist/entries/assembly.cjs +29 -29
  48. package/dist/entries/assembly.js +6 -6
  49. package/dist/entries/catalog-packs.d.cts +4 -4
  50. package/dist/entries/catalog-packs.d.ts +4 -4
  51. package/dist/entries/person.d.cts +3 -3
  52. package/dist/entries/person.d.ts +3 -3
  53. package/dist/entries/picker-art.cjs +28 -20
  54. package/dist/entries/picker-art.d.cts +13 -2
  55. package/dist/entries/picker-art.d.ts +13 -2
  56. package/dist/entries/picker-art.js +2 -2
  57. package/dist/entries/picker-catalogs.cjs +57 -57
  58. package/dist/entries/picker-catalogs.d.cts +5 -3
  59. package/dist/entries/picker-catalogs.d.ts +5 -3
  60. package/dist/entries/picker-catalogs.js +5 -5
  61. package/dist/entries/pickers.cjs +383 -383
  62. package/dist/entries/pickers.d.cts +7 -1
  63. package/dist/entries/pickers.d.ts +7 -1
  64. package/dist/entries/pickers.js +3 -3
  65. package/dist/entries/presets.cjs +35 -35
  66. package/dist/entries/presets.js +1 -1
  67. package/dist/entries/prompt-builder.cjs +76 -76
  68. package/dist/entries/prompt-builder.js +5 -5
  69. package/dist/{images-DrbQB9Yh.d.ts → images-ChAOLY5V.d.cts} +5 -4
  70. package/dist/{images-DrbQB9Yh.d.cts → images-ChAOLY5V.d.ts} +5 -4
  71. package/dist/index.cjs +597 -589
  72. package/dist/index.d.cts +4 -4
  73. package/dist/index.d.ts +4 -4
  74. package/dist/index.js +11 -11
  75. package/dist/{picker-catalogs-BylSIFKL.d.cts → picker-catalogs-DzLCu6qQ.d.cts} +1 -1
  76. package/dist/{picker-catalogs-DHRyjPXb.d.ts → picker-catalogs-SDSWrufc.d.ts} +1 -1
  77. package/package.json +2 -2
  78. package/src/__tests__/fixtures/root-exports.baseline.json +5 -0
  79. package/src/__tests__/picker-art-images.test.ts +39 -0
  80. package/src/__tests__/style-display-name.test.ts +153 -0
  81. package/src/factory-presets/generate-image.ts +1 -1
  82. package/src/factory-presets/generate-video.ts +1 -1
  83. package/src/picker-analyzer-registry.ts +9 -2
  84. package/src/picker-art/images.ts +6 -5
  85. package/src/picker-art/index.ts +1 -0
  86. package/src/picker-art/restyle-previews.ts +47 -0
  87. package/src/setting.ts +1 -1
  88. package/src/style.ts +7 -1
  89. package/dist/chunk-4V4JJUEH.js.map +0 -1
  90. package/dist/chunk-GTN3UO74.cjs.map +0 -1
  91. package/dist/chunk-HOMR5XFP.js +0 -3
  92. package/dist/chunk-HOMR5XFP.js.map +0 -1
  93. package/dist/chunk-QN3OP6TG.js.map +0 -1
  94. package/dist/chunk-T4OJFIJK.cjs +0 -4
  95. package/dist/chunk-T4OJFIJK.cjs.map +0 -1
  96. package/dist/chunk-WW7IHRIE.cjs.map +0 -1
@@ -0,0 +1,47 @@
1
+ // Restyle previews: for each art style, a short clip of real footage wiping
2
+ // into that style, for a picker that restyles a video. Keyed by the `style`
3
+ // catalog's option id. An entry exists only for an approved clip: a style
4
+ // without one has no preview here.
5
+ //
6
+ // Each approved style keeps the URLs of its source shot and its generated clip
7
+ // (no wipe) in a comment beside its entry, so the clip can be composed again if
8
+ // the switch animation changes.
9
+ //
10
+ // Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style
11
+ // picker keeps showing. Like every render, a clip lives under picker-renders/
12
+ // on the CDN, a key no user owns; a test holds this.
13
+ import { lookPreviewStillUrl } from "./images.js"
14
+
15
+ /** One style's preview clip. */
16
+ export interface RestylePreview {
17
+ readonly url: string
18
+ /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */
19
+ readonly stillAtSeconds?: number
20
+ }
21
+
22
+ /** Art style id → its restyle preview clip. */
23
+ export const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {
24
+ // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4
25
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4
26
+ anime: { url: "https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4", stillAtSeconds: 7 },
27
+ // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4
28
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4
29
+ claymation: { url: "https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4" },
30
+ // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4
31
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4
32
+ "comic-book": { url: "https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4" },
33
+ // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4
34
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4
35
+ "felt-puppet": { url: "https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4" },
36
+ // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4
37
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4
38
+ "pixar-3d": { url: "https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4" },
39
+ // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4
40
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4
41
+ watercolor: { url: "https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4" },
42
+ }
43
+
44
+ /** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */
45
+ export function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {
46
+ return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)
47
+ }
package/src/setting.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * shop, forest clearing, cyberpunk alley, cathedral, etc.). Orthogonal to the
6
6
  * other cinematography dimensions:
7
7
  *
8
- * - Style = artistic medium (Oil Painting, Pixar 3D, Photorealistic)
8
+ * - Style = artistic medium (Oil Painting, 3D Animated Film, Photorealistic)
9
9
  * - Atmosphere = what's in the air (Fog, Rain, God rays, Dust)
10
10
  * - Lighting = direction / quality of light
11
11
  * - Setting = *where* (this file)
package/src/style.ts CHANGED
@@ -50,6 +50,12 @@ export interface Style {
50
50
  * the term ("anime", "ukiyo-e", "cyberpunk") and nothing is authored.
51
51
  */
52
52
  readonly term?: string
53
+ /**
54
+ * The name a model reads in the analyzers' list (`buildPickerLegend`), set
55
+ * only where it differs from `label`. It keeps that system prompt byte-identical
56
+ * when the name users read changes. No other surface reads it.
57
+ */
58
+ readonly promptLabel?: string
53
59
  /**
54
60
  * VIDEO-ONLY wording: what the medium is, then its concrete techniques
55
61
  * ("Stop-motion claymation, handmade: every person … sculpted from matte
@@ -131,7 +137,7 @@ export const STYLES: ReadonlyArray<Style> = [
131
137
  { id: "chalkboard", label: "Chalkboard", description: "White chalk on slate", promptHint: "chalkboard style, white and pastel chalk on dark slate with smudged edges, visible chalk dust, hand-drawn marks and classroom-lecture feel", term: "chalk drawing on blackboard", videoPromptHint: "2D chalk illustration, hand-drawn on a blackboard: bold white chalk outlines, pastel chalk colour on dark slate, smudged edges, visible chalk dust, hand-drawn classroom sketch marks.", medium: "2d", tones: "one-colour" },
132
138
  { id: "paper-cutout", label: "Paper Cutout", description: "Layered cut paper + shadows", promptHint: "paper cutout papercraft style, Matisse-inspired layered cut paper shapes with visible paper texture, clean scissor edges and soft drop shadows between layered planes", videoPromptHint: "2D paper cutout stop-motion animation, handcrafted: every person, vehicle and set cut from layered coloured paper, thin dark outlines, visible paper texture, clean scissor edges, drop shadows between layers, Matisse-inspired flat colours.", medium: "2d" },
133
139
  { id: "illuminated", label: "Illuminated Manuscript", description: "Gold leaf + calligraphy", promptHint: "illuminated manuscript style, medieval parchment with gold leaf accents, ornate decorative borders with vines and creatures, calligraphic script and jewel-toned miniature paintings", videoPromptHint: "2D medieval illuminated-manuscript illustration, hand-painted: fine black ink outlines, parchment texture, gold leaf accents, ornate decorative borders with vines, jewel-toned miniature painting, flat medieval perspective.", medium: "2d" },
134
- { id: "pixar-3d", label: "Pixar 3D", description: "Polished character animation CG", promptHint: "Pixar-style 3D character animation, polished CG with appealing rounded character design, soft subsurface skin shading, cinematic key lighting and expressive animated feature-film quality", term: "pixar-style 3d animation", videoPromptHint: "Pixar-style 3D animated feature film: appealing rounded character designs, soft subsurface skin shading, polished CG materials, cinematic key lighting, expressive animation.", medium: "3d" },
140
+ { id: "pixar-3d", label: "3D Animated Film", promptLabel: "Pixar 3D", description: "Polished character animation CG", promptHint: "Pixar-style 3D character animation, polished CG with appealing rounded character design, soft subsurface skin shading, cinematic key lighting and expressive animated feature-film quality", term: "pixar-style 3d animation", videoPromptHint: "Pixar-style 3D animated feature film: appealing rounded character designs, soft subsurface skin shading, polished CG materials, cinematic key lighting, expressive animation.", medium: "3d" },
135
141
  { id: "caricature", label: "Caricature", description: "Exaggerated stylized portrait", promptHint: "caricature illustration style, an exaggerated stylized portrait with a comically oversized head on a small body, amplified signature features — large nose, wide grin, oversized eyes — drawn with confident ink lines and watery color washes in the tradition of street-fair sketch artists", videoPromptHint: "2D caricature illustration, hand-drawn: confident black ink outlines, oversized heads on small bodies, exaggerated signature features, loose watercolour washes, a street-fair sketch-artist look.", medium: "2d" },
136
142
  { id: "fresco", label: "Fresco", description: "Renaissance plaster wall painting", promptHint: "rendered as a fresco painting in the style of a Renaissance ceiling, mineral pigments soaked into wet lime plaster with a chalky matte surface, softly weathered tonal range, faint craquelure and warm earthen palette reminiscent of Michelangelo's Sistine Chapel", videoPromptHint: "2D Renaissance fresco illustration, painted on wet lime plaster: dark painted outlines, mineral pigments, a chalky matte surface, softly weathered tones, faint craquelure, a warm earthen palette.", medium: "2d" },
137
143
  { id: "mosaic", label: "Mosaic", description: "Byzantine tessera tile composition", promptHint: "rendered as a mosaic composed of small hand-cut tesserae in stone, ceramic and gilded glass, visible grout lines between every tile, faceted highlights catching the light and a Byzantine / ancient-Roman aesthetic with stylized figures on a shimmering gold ground", videoPromptHint: "2D Byzantine mosaic: every shape built from small hand-cut tesserae of stone, ceramic and gilded glass, each figure outlined in a row of dark tesserae, visible grout lines between tiles, faceted glints, a shimmering gold ground.", medium: "2d" },