@nodaro/prompts 1.50.0 → 1.50.1

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.
@@ -11,9 +11,15 @@ var RESTYLE_PREVIEWS = {
11
11
  // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4
12
12
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4
13
13
  "comic-book": { url: "https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4" },
14
+ // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4
15
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4
16
+ cyberpunk: { url: "https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4", stillAtSeconds: 7 },
14
17
  // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4
15
18
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4
16
19
  "felt-puppet": { url: "https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4" },
20
+ // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4
21
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4
22
+ "oil-painting": { url: "https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4" },
17
23
  // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4
18
24
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4
19
25
  "pixar-3d": { url: "https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4" },
@@ -26,5 +32,5 @@ function restylePreviewStillUrl(preview, width) {
26
32
  }
27
33
 
28
34
  export { RESTYLE_PREVIEWS, restylePreviewStillUrl };
29
- //# sourceMappingURL=chunk-GZ5SL2BI.js.map
30
- //# sourceMappingURL=chunk-GZ5SL2BI.js.map
35
+ //# sourceMappingURL=chunk-MUTUHJIV.js.map
36
+ //# sourceMappingURL=chunk-MUTUHJIV.js.map
@@ -0,0 +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,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,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-MUTUHJIV.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/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/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"]}
@@ -13,9 +13,15 @@ var RESTYLE_PREVIEWS = {
13
13
  // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4
14
14
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4
15
15
  "comic-book": { url: "https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4" },
16
+ // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4
17
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4
18
+ cyberpunk: { url: "https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4", stillAtSeconds: 7 },
16
19
  // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4
17
20
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4
18
21
  "felt-puppet": { url: "https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4" },
22
+ // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4
23
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4
24
+ "oil-painting": { url: "https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4" },
19
25
  // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4
20
26
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4
21
27
  "pixar-3d": { url: "https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4" },
@@ -29,5 +35,5 @@ function restylePreviewStillUrl(preview, width) {
29
35
 
30
36
  exports.RESTYLE_PREVIEWS = RESTYLE_PREVIEWS;
31
37
  exports.restylePreviewStillUrl = restylePreviewStillUrl;
32
- //# sourceMappingURL=chunk-XBY53RF5.cjs.map
33
- //# sourceMappingURL=chunk-XBY53RF5.cjs.map
38
+ //# sourceMappingURL=chunk-PLQFXCBU.cjs.map
39
+ //# sourceMappingURL=chunk-PLQFXCBU.cjs.map
@@ -0,0 +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,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,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-PLQFXCBU.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/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/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 chunkXBY53RF5_cjs = require('../chunk-XBY53RF5.cjs');
3
+ var chunkPLQFXCBU_cjs = require('../chunk-PLQFXCBU.cjs');
4
4
  var chunkFFPFBNXH_cjs = require('../chunk-FFPFBNXH.cjs');
5
5
  require('../chunk-Q7SFCCGT.cjs');
6
6
 
@@ -8,11 +8,11 @@ require('../chunk-Q7SFCCGT.cjs');
8
8
 
9
9
  Object.defineProperty(exports, "RESTYLE_PREVIEWS", {
10
10
  enumerable: true,
11
- get: function () { return chunkXBY53RF5_cjs.RESTYLE_PREVIEWS; }
11
+ get: function () { return chunkPLQFXCBU_cjs.RESTYLE_PREVIEWS; }
12
12
  });
13
13
  Object.defineProperty(exports, "restylePreviewStillUrl", {
14
14
  enumerable: true,
15
- get: function () { return chunkXBY53RF5_cjs.restylePreviewStillUrl; }
15
+ get: function () { return chunkPLQFXCBU_cjs.restylePreviewStillUrl; }
16
16
  });
17
17
  Object.defineProperty(exports, "CHARACTER_ART_FAMILIES", {
18
18
  enumerable: true,
@@ -1,4 +1,4 @@
1
- export { RESTYLE_PREVIEWS, restylePreviewStillUrl } from '../chunk-GZ5SL2BI.js';
1
+ export { RESTYLE_PREVIEWS, restylePreviewStillUrl } from '../chunk-MUTUHJIV.js';
2
2
  export { CHARACTER_ART_FAMILIES, CHARACTER_ART_FILES, CHARACTER_ART_PATH, LOOK_PREVIEW_SETS, PICKER_ART_PATH, RENDER_WIDTH_LADDER, SOUND_ART, SOUND_ART_FILES, SOUND_RENDER_SETS, characterArtPath, characterSectionArtPath, characterSectionSlug, lookPreviewStillUrl, pickerOptionImage, pickerOptionImageUrl, pickerSectionImageUrl, soundArtFilePath, soundArtPath } from '../chunk-5XPELUES.js';
3
3
  import '../chunk-PZ5AY32C.js';
4
4
  //# sourceMappingURL=picker-art.js.map
package/dist/index.cjs CHANGED
@@ -14,7 +14,7 @@ var chunkIWX3Q7NH_cjs = require('./chunk-IWX3Q7NH.cjs');
14
14
  var chunkNAFD6MGH_cjs = require('./chunk-NAFD6MGH.cjs');
15
15
  var chunk2NJTFCKQ_cjs = require('./chunk-2NJTFCKQ.cjs');
16
16
  require('./chunk-TUHVGM6V.cjs');
17
- var chunkXBY53RF5_cjs = require('./chunk-XBY53RF5.cjs');
17
+ var chunkPLQFXCBU_cjs = require('./chunk-PLQFXCBU.cjs');
18
18
  var chunkMJIKM4YZ_cjs = require('./chunk-MJIKM4YZ.cjs');
19
19
  var chunkIADAATZK_cjs = require('./chunk-IADAATZK.cjs');
20
20
  var chunkHR4TFBU2_cjs = require('./chunk-HR4TFBU2.cjs');
@@ -850,11 +850,11 @@ Object.defineProperty(exports, "withForcedIdentityLock", {
850
850
  });
851
851
  Object.defineProperty(exports, "RESTYLE_PREVIEWS", {
852
852
  enumerable: true,
853
- get: function () { return chunkXBY53RF5_cjs.RESTYLE_PREVIEWS; }
853
+ get: function () { return chunkPLQFXCBU_cjs.RESTYLE_PREVIEWS; }
854
854
  });
855
855
  Object.defineProperty(exports, "restylePreviewStillUrl", {
856
856
  enumerable: true,
857
- get: function () { return chunkXBY53RF5_cjs.restylePreviewStillUrl; }
857
+ get: function () { return chunkPLQFXCBU_cjs.restylePreviewStillUrl; }
858
858
  });
859
859
  Object.defineProperty(exports, "ALL_PICKER_WIRING", {
860
860
  enumerable: true,
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ export { AD_CREATIVE_ANALYSIS_FIELDS, AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT, AUDIO_
12
12
  export { CINEMATIC_LOOK_TAIL, FILM_STILL_PREFIX, NEUTRAL_PERSON, REALISM_FINISH, REALISM_PASS_INSTRUCTION, REALISM_SKIN, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, SCENE_FRAME_RULE, filmStillPrefix, realismEmptyHands, realismViewpoint, referenceRulesBlock } from './chunk-T64D26P4.js';
13
13
  export { DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, applyTemplate, buildIdentityLockLine, characterLockToRefLock, collectIdentityLockClause, getIdentityLockClause, hasUpstreamCharacter, resolveTemplate, toIdentityLockMode, withForcedIdentityLock } from './chunk-BQWIPLLR.js';
14
14
  import './chunk-ADMHDFHB.js';
15
- export { RESTYLE_PREVIEWS, restylePreviewStillUrl } from './chunk-GZ5SL2BI.js';
15
+ export { RESTYLE_PREVIEWS, restylePreviewStillUrl } from './chunk-MUTUHJIV.js';
16
16
  export { ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, GAPS_SCHEMA, MULTI_PICKER_WIRING, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, SINGLE_PICKER_WIRING, __resetCatalogIdGuardForTests, applyPickerJson, buildMultiPickerAnalyzerSpec, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, pickerFanoutTargets } from './chunk-FEOVUTFC.js';
17
17
  export { ADULT_SWEPT_CATALOG_IDS, FLOORED_PICKER_KEYS, RETIRED_ADULT_ONLY_HINT_STRINGS, applyMinorAgeFloorToPickerValues, buildNeedleAlternationSource, containsMinorAgeHint, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getCharacterMotionBindings, getMinorAgeHintStrings, getParameterPromptHint } from './chunk-IXBTD2LW.js';
18
18
  export { DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, FILM_STYLE_KEYS, IMAGE_HINT_MODE_DEFAULT, USER_DIRECTION_REF_KINDS, VIDEO_HINT_MODE_DEFAULT, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, directionFieldsForSurface, directionKeyForUserRef, modeForFamily, nearestColorName, parseUserDirectionRef, renderDirectionHintClauses, renderDirectionHints, renderMoodboardClause, renderPaletteClause, styleReferenceDescription, userDirectionRefValue, userRefKindOfDirectionKey } from './chunk-VJYKE6AY.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodaro/prompts",
3
- "version": "1.50.0",
3
+ "version": "1.50.1",
4
4
  "description": "Nodaro's prompt-engineering layer — person/picker catalogs with prompt hints, identity-lock clauses, entity prompt builders, brand presets, and prompt/reference assembly shared by the Nodaro platform and SDK.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",
@@ -70,7 +70,7 @@
70
70
  "test": "vitest run"
71
71
  },
72
72
  "dependencies": {
73
- "@nodaro/shared": "^3.54.1"
73
+ "@nodaro/shared": "^3.55.0"
74
74
  },
75
75
  "devDependencies": {
76
76
  "tsup": "^8.5.0",
@@ -301,6 +301,7 @@ describe("restyle previews (RESTYLE_PREVIEWS)", () => {
301
301
 
302
302
  it("give each clip a still, a frame the CDN cuts from it at the clip's own time", () => {
303
303
  expect(restylePreviewStillUrl(RESTYLE_PREVIEWS.anime)).toBe("https://cdn.nodaro.ai/cdn-cgi/media/mode=frame,time=7s,width=480/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4")
304
+ expect(restylePreviewStillUrl(RESTYLE_PREVIEWS["oil-painting"])).toBe("https://cdn.nodaro.ai/cdn-cgi/media/mode=frame,time=1s,width=480/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4")
304
305
  expect(restylePreviewStillUrl(RESTYLE_PREVIEWS.watercolor)).toBe("https://cdn.nodaro.ai/cdn-cgi/media/mode=frame,time=1s,width=480/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4")
305
306
  expect(restylePreviewStillUrl(RESTYLE_PREVIEWS.claymation)).toBe("https://cdn.nodaro.ai/cdn-cgi/media/mode=frame,time=1s,width=480/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4")
306
307
  expect(restylePreviewStillUrl(RESTYLE_PREVIEWS["comic-book"])).toBe("https://cdn.nodaro.ai/cdn-cgi/media/mode=frame,time=1s,width=480/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4")
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Every art style has a name of its own in each language Nodaro's apps offer
3
+ * in their language menus (Hebrew, Japanese, Korean, Brazilian Portuguese):
4
+ * an explicit `label` in the style sidecar, never the English fallback by
5
+ * omission. Where a language keeps the English loanword ("Anime",
6
+ * "Cyberpunk" in Brazilian Portuguese), the sidecar says so explicitly, so
7
+ * the choice is deliberate and a new style cannot ship untranslated there.
8
+ * The other locales follow the general sidecar rule (a loanword may be left
9
+ * out) and are not held to this.
10
+ */
11
+ import { describe, it, expect } from "vitest"
12
+ import type { LocaleCatalogMap, LocaleId } from "@nodaro/shared/i18n"
13
+ import { STYLES } from "../index.js"
14
+
15
+ const OFFERED = ["he", "ja", "ko", "pt-BR"] as const satisfies readonly LocaleId[]
16
+
17
+ async function sidecar(locale: LocaleId): Promise<LocaleCatalogMap> {
18
+ return ((await import(`../../../shared/src/i18n/style.${locale}.ts`)) as { default: LocaleCatalogMap }).default
19
+ }
20
+
21
+ describe("art style names in the languages the apps offer", () => {
22
+ it.each(OFFERED)("%s names every style explicitly", async (locale) => {
23
+ const map = await sidecar(locale)
24
+ const unnamed = STYLES.filter((style) => !map[style.id]?.label?.trim()).map((style) => style.id)
25
+ expect(unnamed).toEqual([])
26
+ })
27
+
28
+ it("Brazilian Portuguese keeps the loanwords Brazilians use, and says the rest in Portuguese", async () => {
29
+ const map = await sidecar("pt-BR")
30
+ const label = (id: string) => map[id]?.label
31
+ for (const [id, name] of [
32
+ ["anime", "Anime"],
33
+ ["cyberpunk", "Cyberpunk"],
34
+ ["steampunk", "Steampunk"],
35
+ ["vaporwave", "Vaporwave"],
36
+ ["ukiyo-e", "Ukiyo-e"],
37
+ ] as const) expect(label(id), id).toBe(name)
38
+ expect(label("ascii-art")).toBe("Arte ASCII")
39
+ expect(label("claymation")).toBe("Animação em massinha")
40
+ expect(label("blueprint")).toBe("Planta técnica")
41
+ })
42
+
43
+ it("Korean says ukiyo-e and ASCII art in Hangul", async () => {
44
+ const map = await sidecar("ko")
45
+ expect(map["ukiyo-e"]?.label).toBe("우키요에")
46
+ expect(map["ascii-art"]?.label).toBe("아스키 아트")
47
+ })
48
+ })
@@ -30,9 +30,15 @@ export const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {
30
30
  // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4
31
31
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4
32
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/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4
34
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4
35
+ cyberpunk: { url: "https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4", stillAtSeconds: 7 },
33
36
  // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4
34
37
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4
35
38
  "felt-puppet": { url: "https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4" },
39
+ // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4
40
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4
41
+ "oil-painting": { url: "https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4" },
36
42
  // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4
37
43
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4
38
44
  "pixar-3d": { url: "https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4" },
@@ -1 +0,0 @@
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,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,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-GZ5SL2BI.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/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/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/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 +0,0 @@
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,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,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-XBY53RF5.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/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/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/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"]}