venice-video-harness 2.4.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 (264) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE +21 -0
  3. package/README.md +598 -0
  4. package/dist/assembly/manifest-builder.d.ts +8 -0
  5. package/dist/assembly/manifest-builder.d.ts.map +1 -0
  6. package/dist/assembly/manifest-builder.js +196 -0
  7. package/dist/assembly/manifest-builder.js.map +1 -0
  8. package/dist/assembly/remotion-scaffold.d.ts +14 -0
  9. package/dist/assembly/remotion-scaffold.d.ts.map +1 -0
  10. package/dist/assembly/remotion-scaffold.js +292 -0
  11. package/dist/assembly/remotion-scaffold.js.map +1 -0
  12. package/dist/assembly/types.d.ts +67 -0
  13. package/dist/assembly/types.d.ts.map +1 -0
  14. package/dist/assembly/types.js +5 -0
  15. package/dist/assembly/types.js.map +1 -0
  16. package/dist/characters/describer.d.ts +32 -0
  17. package/dist/characters/describer.d.ts.map +1 -0
  18. package/dist/characters/describer.js +309 -0
  19. package/dist/characters/describer.js.map +1 -0
  20. package/dist/characters/extractor.d.ts +27 -0
  21. package/dist/characters/extractor.d.ts.map +1 -0
  22. package/dist/characters/extractor.js +274 -0
  23. package/dist/characters/extractor.js.map +1 -0
  24. package/dist/characters/reference-manager.d.ts +95 -0
  25. package/dist/characters/reference-manager.d.ts.map +1 -0
  26. package/dist/characters/reference-manager.js +346 -0
  27. package/dist/characters/reference-manager.js.map +1 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +310 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/config.d.ts +22 -0
  33. package/dist/config.d.ts.map +1 -0
  34. package/dist/config.js +66 -0
  35. package/dist/config.js.map +1 -0
  36. package/dist/editing/aligner.d.ts +44 -0
  37. package/dist/editing/aligner.d.ts.map +1 -0
  38. package/dist/editing/aligner.js +201 -0
  39. package/dist/editing/aligner.js.map +1 -0
  40. package/dist/editing/edl.d.ts +45 -0
  41. package/dist/editing/edl.d.ts.map +1 -0
  42. package/dist/editing/edl.js +133 -0
  43. package/dist/editing/edl.js.map +1 -0
  44. package/dist/editing/overlays.d.ts +97 -0
  45. package/dist/editing/overlays.d.ts.map +1 -0
  46. package/dist/editing/overlays.js +41 -0
  47. package/dist/editing/overlays.js.map +1 -0
  48. package/dist/editing/packer.d.ts +52 -0
  49. package/dist/editing/packer.d.ts.map +1 -0
  50. package/dist/editing/packer.js +170 -0
  51. package/dist/editing/packer.js.map +1 -0
  52. package/dist/editing/providers/whisper-cpp.d.ts +32 -0
  53. package/dist/editing/providers/whisper-cpp.d.ts.map +1 -0
  54. package/dist/editing/providers/whisper-cpp.js +239 -0
  55. package/dist/editing/providers/whisper-cpp.js.map +1 -0
  56. package/dist/editing/render.d.ts +36 -0
  57. package/dist/editing/render.d.ts.map +1 -0
  58. package/dist/editing/render.js +227 -0
  59. package/dist/editing/render.js.map +1 -0
  60. package/dist/editing/self-eval.d.ts +48 -0
  61. package/dist/editing/self-eval.d.ts.map +1 -0
  62. package/dist/editing/self-eval.js +293 -0
  63. package/dist/editing/self-eval.js.map +1 -0
  64. package/dist/editing/silence.d.ts +76 -0
  65. package/dist/editing/silence.d.ts.map +1 -0
  66. package/dist/editing/silence.js +189 -0
  67. package/dist/editing/silence.js.map +1 -0
  68. package/dist/editing/types.d.ts +178 -0
  69. package/dist/editing/types.d.ts.map +1 -0
  70. package/dist/editing/types.js +13 -0
  71. package/dist/editing/types.js.map +1 -0
  72. package/dist/index.d.ts +6 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +5 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/interactive.d.ts +12 -0
  77. package/dist/interactive.d.ts.map +1 -0
  78. package/dist/interactive.js +78 -0
  79. package/dist/interactive.js.map +1 -0
  80. package/dist/mini-drama/assembler.d.ts +61 -0
  81. package/dist/mini-drama/assembler.d.ts.map +1 -0
  82. package/dist/mini-drama/assembler.js +466 -0
  83. package/dist/mini-drama/assembler.js.map +1 -0
  84. package/dist/mini-drama/audio-mix.d.ts +65 -0
  85. package/dist/mini-drama/audio-mix.d.ts.map +1 -0
  86. package/dist/mini-drama/audio-mix.js +118 -0
  87. package/dist/mini-drama/audio-mix.js.map +1 -0
  88. package/dist/mini-drama/cli.d.ts +3 -0
  89. package/dist/mini-drama/cli.d.ts.map +1 -0
  90. package/dist/mini-drama/cli.js +2869 -0
  91. package/dist/mini-drama/cli.js.map +1 -0
  92. package/dist/mini-drama/fcpxml-export.d.ts +2 -0
  93. package/dist/mini-drama/fcpxml-export.d.ts.map +1 -0
  94. package/dist/mini-drama/fcpxml-export.js +5 -0
  95. package/dist/mini-drama/fcpxml-export.js.map +1 -0
  96. package/dist/mini-drama/generation-planner.d.ts +24 -0
  97. package/dist/mini-drama/generation-planner.d.ts.map +1 -0
  98. package/dist/mini-drama/generation-planner.js +304 -0
  99. package/dist/mini-drama/generation-planner.js.map +1 -0
  100. package/dist/mini-drama/location-generator.d.ts +23 -0
  101. package/dist/mini-drama/location-generator.d.ts.map +1 -0
  102. package/dist/mini-drama/location-generator.js +144 -0
  103. package/dist/mini-drama/location-generator.js.map +1 -0
  104. package/dist/mini-drama/music-cues.d.ts +96 -0
  105. package/dist/mini-drama/music-cues.d.ts.map +1 -0
  106. package/dist/mini-drama/music-cues.js +332 -0
  107. package/dist/mini-drama/music-cues.js.map +1 -0
  108. package/dist/mini-drama/panel-fixer.d.ts +12 -0
  109. package/dist/mini-drama/panel-fixer.d.ts.map +1 -0
  110. package/dist/mini-drama/panel-fixer.js +319 -0
  111. package/dist/mini-drama/panel-fixer.js.map +1 -0
  112. package/dist/mini-drama/prompt-builder.d.ts +149 -0
  113. package/dist/mini-drama/prompt-builder.d.ts.map +1 -0
  114. package/dist/mini-drama/prompt-builder.js +722 -0
  115. package/dist/mini-drama/prompt-builder.js.map +1 -0
  116. package/dist/mini-drama/reference-slots.d.ts +31 -0
  117. package/dist/mini-drama/reference-slots.d.ts.map +1 -0
  118. package/dist/mini-drama/reference-slots.js +161 -0
  119. package/dist/mini-drama/reference-slots.js.map +1 -0
  120. package/dist/mini-drama/shot-paths.d.ts +77 -0
  121. package/dist/mini-drama/shot-paths.d.ts.map +1 -0
  122. package/dist/mini-drama/shot-paths.js +101 -0
  123. package/dist/mini-drama/shot-paths.js.map +1 -0
  124. package/dist/mini-drama/storyboard-reference-generator.d.ts +47 -0
  125. package/dist/mini-drama/storyboard-reference-generator.d.ts.map +1 -0
  126. package/dist/mini-drama/storyboard-reference-generator.js +293 -0
  127. package/dist/mini-drama/storyboard-reference-generator.js.map +1 -0
  128. package/dist/mini-drama/subtitle-generator.d.ts +12 -0
  129. package/dist/mini-drama/subtitle-generator.d.ts.map +1 -0
  130. package/dist/mini-drama/subtitle-generator.js +139 -0
  131. package/dist/mini-drama/subtitle-generator.js.map +1 -0
  132. package/dist/mini-drama/timeline-export/davinci-fcpxml.d.ts +3 -0
  133. package/dist/mini-drama/timeline-export/davinci-fcpxml.d.ts.map +1 -0
  134. package/dist/mini-drama/timeline-export/davinci-fcpxml.js +150 -0
  135. package/dist/mini-drama/timeline-export/davinci-fcpxml.js.map +1 -0
  136. package/dist/mini-drama/timeline-export/fcpxml.d.ts +11 -0
  137. package/dist/mini-drama/timeline-export/fcpxml.d.ts.map +1 -0
  138. package/dist/mini-drama/timeline-export/fcpxml.js +140 -0
  139. package/dist/mini-drama/timeline-export/fcpxml.js.map +1 -0
  140. package/dist/mini-drama/timeline-export/index.d.ts +13 -0
  141. package/dist/mini-drama/timeline-export/index.d.ts.map +1 -0
  142. package/dist/mini-drama/timeline-export/index.js +26 -0
  143. package/dist/mini-drama/timeline-export/index.js.map +1 -0
  144. package/dist/mini-drama/timeline-export/premiere-xmeml.d.ts +3 -0
  145. package/dist/mini-drama/timeline-export/premiere-xmeml.d.ts.map +1 -0
  146. package/dist/mini-drama/timeline-export/premiere-xmeml.js +211 -0
  147. package/dist/mini-drama/timeline-export/premiere-xmeml.js.map +1 -0
  148. package/dist/mini-drama/timeline-export/probe.d.ts +53 -0
  149. package/dist/mini-drama/timeline-export/probe.d.ts.map +1 -0
  150. package/dist/mini-drama/timeline-export/probe.js +89 -0
  151. package/dist/mini-drama/timeline-export/probe.js.map +1 -0
  152. package/dist/mini-drama/timeline-export/types.d.ts +57 -0
  153. package/dist/mini-drama/timeline-export/types.d.ts.map +1 -0
  154. package/dist/mini-drama/timeline-export/types.js +14 -0
  155. package/dist/mini-drama/timeline-export/types.js.map +1 -0
  156. package/dist/mini-drama/video-generator.d.ts +22 -0
  157. package/dist/mini-drama/video-generator.d.ts.map +1 -0
  158. package/dist/mini-drama/video-generator.js +1305 -0
  159. package/dist/mini-drama/video-generator.js.map +1 -0
  160. package/dist/mini-drama/voice-reference.d.ts +42 -0
  161. package/dist/mini-drama/voice-reference.d.ts.map +1 -0
  162. package/dist/mini-drama/voice-reference.js +170 -0
  163. package/dist/mini-drama/voice-reference.js.map +1 -0
  164. package/dist/output/html-renderer.d.ts +2 -0
  165. package/dist/output/html-renderer.d.ts.map +1 -0
  166. package/dist/output/html-renderer.js +37 -0
  167. package/dist/output/html-renderer.js.map +1 -0
  168. package/dist/parsers/fountain-parser.d.ts +34 -0
  169. package/dist/parsers/fountain-parser.d.ts.map +1 -0
  170. package/dist/parsers/fountain-parser.js +71 -0
  171. package/dist/parsers/fountain-parser.js.map +1 -0
  172. package/dist/parsers/pdf-parser.d.ts +24 -0
  173. package/dist/parsers/pdf-parser.d.ts.map +1 -0
  174. package/dist/parsers/pdf-parser.js +237 -0
  175. package/dist/parsers/pdf-parser.js.map +1 -0
  176. package/dist/parsers/scene-extractor.d.ts +41 -0
  177. package/dist/parsers/scene-extractor.d.ts.map +1 -0
  178. package/dist/parsers/scene-extractor.js +400 -0
  179. package/dist/parsers/scene-extractor.js.map +1 -0
  180. package/dist/series/manager.d.ts +64 -0
  181. package/dist/series/manager.d.ts.map +1 -0
  182. package/dist/series/manager.js +282 -0
  183. package/dist/series/manager.js.map +1 -0
  184. package/dist/series/types.d.ts +641 -0
  185. package/dist/series/types.d.ts.map +1 -0
  186. package/dist/series/types.js +304 -0
  187. package/dist/series/types.js.map +1 -0
  188. package/dist/storyboard/assembler.d.ts +134 -0
  189. package/dist/storyboard/assembler.d.ts.map +1 -0
  190. package/dist/storyboard/assembler.js +319 -0
  191. package/dist/storyboard/assembler.js.map +1 -0
  192. package/dist/storyboard/prompt-builder.d.ts +113 -0
  193. package/dist/storyboard/prompt-builder.d.ts.map +1 -0
  194. package/dist/storyboard/prompt-builder.js +578 -0
  195. package/dist/storyboard/prompt-builder.js.map +1 -0
  196. package/dist/storyboard/shot-planner.d.ts +34 -0
  197. package/dist/storyboard/shot-planner.d.ts.map +1 -0
  198. package/dist/storyboard/shot-planner.js +446 -0
  199. package/dist/storyboard/shot-planner.js.map +1 -0
  200. package/dist/user-config.d.ts +15 -0
  201. package/dist/user-config.d.ts.map +1 -0
  202. package/dist/user-config.js +103 -0
  203. package/dist/user-config.js.map +1 -0
  204. package/dist/venice/audio-preflight.d.ts +80 -0
  205. package/dist/venice/audio-preflight.d.ts.map +1 -0
  206. package/dist/venice/audio-preflight.js +142 -0
  207. package/dist/venice/audio-preflight.js.map +1 -0
  208. package/dist/venice/audio.d.ts +88 -0
  209. package/dist/venice/audio.d.ts.map +1 -0
  210. package/dist/venice/audio.js +234 -0
  211. package/dist/venice/audio.js.map +1 -0
  212. package/dist/venice/client.d.ts +86 -0
  213. package/dist/venice/client.d.ts.map +1 -0
  214. package/dist/venice/client.js +375 -0
  215. package/dist/venice/client.js.map +1 -0
  216. package/dist/venice/edit.d.ts +57 -0
  217. package/dist/venice/edit.d.ts.map +1 -0
  218. package/dist/venice/edit.js +100 -0
  219. package/dist/venice/edit.js.map +1 -0
  220. package/dist/venice/generate.d.ts +47 -0
  221. package/dist/venice/generate.d.ts.map +1 -0
  222. package/dist/venice/generate.js +150 -0
  223. package/dist/venice/generate.js.map +1 -0
  224. package/dist/venice/image-bytes.d.ts +26 -0
  225. package/dist/venice/image-bytes.d.ts.map +1 -0
  226. package/dist/venice/image-bytes.js +101 -0
  227. package/dist/venice/image-bytes.js.map +1 -0
  228. package/dist/venice/models.d.ts +143 -0
  229. package/dist/venice/models.d.ts.map +1 -0
  230. package/dist/venice/models.js +984 -0
  231. package/dist/venice/models.js.map +1 -0
  232. package/dist/venice/multi-edit.d.ts +40 -0
  233. package/dist/venice/multi-edit.d.ts.map +1 -0
  234. package/dist/venice/multi-edit.js +97 -0
  235. package/dist/venice/multi-edit.js.map +1 -0
  236. package/dist/venice/provenance.d.ts +66 -0
  237. package/dist/venice/provenance.d.ts.map +1 -0
  238. package/dist/venice/provenance.js +151 -0
  239. package/dist/venice/provenance.js.map +1 -0
  240. package/dist/venice/recipe.d.ts +69 -0
  241. package/dist/venice/recipe.d.ts.map +1 -0
  242. package/dist/venice/recipe.js +103 -0
  243. package/dist/venice/recipe.js.map +1 -0
  244. package/dist/venice/rejection.d.ts +63 -0
  245. package/dist/venice/rejection.d.ts.map +1 -0
  246. package/dist/venice/rejection.js +111 -0
  247. package/dist/venice/rejection.js.map +1 -0
  248. package/dist/venice/seedance-preflight.d.ts +38 -0
  249. package/dist/venice/seedance-preflight.d.ts.map +1 -0
  250. package/dist/venice/seedance-preflight.js +29 -0
  251. package/dist/venice/seedance-preflight.js.map +1 -0
  252. package/dist/venice/types.d.ts +212 -0
  253. package/dist/venice/types.d.ts.map +1 -0
  254. package/dist/venice/types.js +9 -0
  255. package/dist/venice/types.js.map +1 -0
  256. package/dist/venice/video.d.ts +77 -0
  257. package/dist/venice/video.d.ts.map +1 -0
  258. package/dist/venice/video.js +163 -0
  259. package/dist/venice/video.js.map +1 -0
  260. package/dist/venice/voices.d.ts +40 -0
  261. package/dist/venice/voices.d.ts.map +1 -0
  262. package/dist/venice/voices.js +194 -0
  263. package/dist/venice/voices.js.map +1 -0
  264. package/package.json +79 -0
@@ -0,0 +1,95 @@
1
+ import type { CharacterDescription } from "./describer.js";
2
+ import type { AestheticProfile } from "../storyboard/prompt-builder.js";
3
+ import type { VeniceClient } from "../venice/client.js";
4
+ /** Persistent lock for a character's visual identity. */
5
+ export interface CharacterLock {
6
+ /** Canonical character name. */
7
+ name: string;
8
+ /** Full character description used to generate references. */
9
+ description: CharacterDescription;
10
+ /** Base64-encoded PNG reference images from four canonical angles. */
11
+ referenceImages: {
12
+ front: string;
13
+ threeQuarter: string;
14
+ profile: string;
15
+ fullBody: string;
16
+ };
17
+ /** Whether this character's visual identity has been locked. */
18
+ locked: boolean;
19
+ /** Seed used for generation reproducibility. */
20
+ seed: number;
21
+ /**
22
+ * Model that generated each reference angle. Used by the Seedance 2.0
23
+ * pre-flight gate to confirm refs were produced by a compatible family
24
+ * (e.g. `seedream-v5-lite`). Missing entries are treated as "unknown".
25
+ */
26
+ referenceImageModels?: {
27
+ front?: string;
28
+ threeQuarter?: string;
29
+ profile?: string;
30
+ fullBody?: string;
31
+ };
32
+ }
33
+ /**
34
+ * Manages generation, persistence, and retrieval of character reference
35
+ * images. Each character gets a dedicated directory under the output
36
+ * path containing four reference angle PNGs and a metadata JSON file.
37
+ */
38
+ export declare class ReferenceManager {
39
+ private readonly outputDir;
40
+ /**
41
+ * @param outputDir - Base directory for storing all character references.
42
+ * Character-specific subdirectories are created under
43
+ * `outputDir/characters/CHARACTER_NAME/`.
44
+ */
45
+ constructor(outputDir: string);
46
+ /**
47
+ * Resolve the directory path for a specific character.
48
+ */
49
+ private characterDir;
50
+ /**
51
+ * Generate all four reference images for a character and return a
52
+ * locked character reference. Images are also saved to disk.
53
+ *
54
+ * The front face is generated first, then used as a reference image
55
+ * for the remaining angles to maintain visual consistency.
56
+ *
57
+ * @param client - Venice API client instance.
58
+ * @param description - Full character description to use as prompt basis.
59
+ * @param aesthetic - Optional aesthetic profile to style-match references.
60
+ * @returns A `CharacterLock` containing all reference images and metadata.
61
+ */
62
+ generateReferences(client: VeniceClient, description: CharacterDescription, aesthetic?: AestheticProfile | null): Promise<CharacterLock>;
63
+ /**
64
+ * Load a previously saved character lock from disk.
65
+ *
66
+ * @param name - Character name to look up.
67
+ * @returns The `CharacterLock` if found, or `null` if no saved data exists.
68
+ */
69
+ loadReferences(name: string): Promise<CharacterLock | null>;
70
+ /**
71
+ * Save a character lock to disk. Reference images are written as PNG
72
+ * files and metadata is written as JSON.
73
+ *
74
+ * @param lock - The `CharacterLock` to persist.
75
+ */
76
+ saveReferences(lock: CharacterLock): Promise<void>;
77
+ /**
78
+ * Return the front-facing reference image as a base64 string.
79
+ * This is the primary image used for face-reference injection into
80
+ * scene generation prompts.
81
+ *
82
+ * @param lock - A loaded or generated `CharacterLock`.
83
+ * @returns Base64-encoded PNG of the front face reference.
84
+ */
85
+ getBase64Face(lock: CharacterLock): string;
86
+ /**
87
+ * List the names of all characters that have been locked (saved to disk).
88
+ * Reads the characters directory and returns names derived from each
89
+ * subdirectory that contains a valid metadata file.
90
+ *
91
+ * @returns Array of character names that have persisted locks.
92
+ */
93
+ listLocked(): Promise<string[]>;
94
+ }
95
+ //# sourceMappingURL=reference-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-manager.d.ts","sourceRoot":"","sources":["../../src/characters/reference-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAK3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,WAAW,EAAE,oBAAoB,CAAC;IAElC,sEAAsE;IACtE,eAAe,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC;IAEhB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,oBAAoB,CAAC,EAAE;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAkKD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;;OAWG;IACG,kBAAkB,CACtB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,oBAAoB,EACjC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAClC,OAAO,CAAC,aAAa,CAAC;IA4FzB;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAqCjE;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAI1C;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAwCtC"}
@@ -0,0 +1,346 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Character reference image management.
3
+ // Generates, persists, and retrieves character reference images (front,
4
+ // 3/4, profile, full-body) used to maintain visual consistency across all
5
+ // storyboard frames.
6
+ // ---------------------------------------------------------------------------
7
+ import { mkdir, readFile, writeFile, readdir } from "node:fs/promises";
8
+ import { join } from "node:path";
9
+ import { generateImage } from "../venice/generate.js";
10
+ import { writeImageProvenance } from "../venice/provenance.js";
11
+ // ---- Internal constants ---------------------------------------------------
12
+ /**
13
+ * Default model for reference image generation.
14
+ *
15
+ * Character reference sheets depict a human face. Seedance 2.0 used to accept
16
+ * face-bearing input images only from `seedream-v5-lite`, but Venice removed
17
+ * that restriction (2026-07), so reference sheets now use the higher-quality
18
+ * general default (`nano-banana-2`) like every other panel.
19
+ */
20
+ const DEFAULT_MODEL = "nano-banana-2";
21
+ /** Default resolution and aspect ratio for character reference sheets. */
22
+ const REF_RESOLUTION = "1K";
23
+ const REF_ASPECT_RATIO = "1:1";
24
+ /** Reference angle definitions with prompt suffixes. */
25
+ const REFERENCE_ANGLES = [
26
+ {
27
+ key: "front",
28
+ filename: "front.png",
29
+ promptSuffix: "front-facing portrait, looking directly at camera, centered, studio lighting, neutral background, character reference sheet",
30
+ },
31
+ {
32
+ key: "threeQuarter",
33
+ filename: "three-quarter.png",
34
+ promptSuffix: "three-quarter view portrait, 45 degree angle, studio lighting, neutral background, character reference sheet",
35
+ },
36
+ {
37
+ key: "profile",
38
+ filename: "profile.png",
39
+ promptSuffix: "side profile portrait, 90 degree angle, studio lighting, neutral background, character reference sheet",
40
+ },
41
+ {
42
+ key: "fullBody",
43
+ filename: "full-body.png",
44
+ promptSuffix: "full body shot, head to toe, standing pose, studio lighting, neutral background, character reference sheet",
45
+ },
46
+ ];
47
+ /** Filename for the character metadata JSON. */
48
+ const METADATA_FILENAME = "character-lock.json";
49
+ function serializeLock(lock) {
50
+ const wardrobeByScene = {};
51
+ const wbs = lock.description.wardrobeByScene;
52
+ if (wbs instanceof Map) {
53
+ for (const [sceneNum, wardrobe] of wbs) {
54
+ wardrobeByScene[String(sceneNum)] = wardrobe;
55
+ }
56
+ }
57
+ else if (wbs && typeof wbs === "object") {
58
+ // Handle plain object (e.g. from JSON deserialization)
59
+ for (const [key, value] of Object.entries(wbs)) {
60
+ wardrobeByScene[String(key)] = value;
61
+ }
62
+ }
63
+ return {
64
+ name: lock.name,
65
+ description: {
66
+ name: lock.description.name,
67
+ shortDescription: lock.description.shortDescription,
68
+ fullDescription: lock.description.fullDescription,
69
+ wardrobe: lock.description.wardrobe,
70
+ wardrobeByScene,
71
+ },
72
+ locked: lock.locked,
73
+ seed: lock.seed,
74
+ referenceImageModels: lock.referenceImageModels,
75
+ };
76
+ }
77
+ function deserializeLock(data, referenceImages) {
78
+ const wardrobeByScene = new Map();
79
+ if (data.description.wardrobeByScene) {
80
+ for (const [key, value] of Object.entries(data.description.wardrobeByScene)) {
81
+ wardrobeByScene.set(Number(key), value);
82
+ }
83
+ }
84
+ return {
85
+ name: data.name,
86
+ description: {
87
+ name: data.description.name,
88
+ shortDescription: data.description.shortDescription,
89
+ fullDescription: data.description.fullDescription,
90
+ wardrobe: data.description.wardrobe,
91
+ wardrobeByScene,
92
+ },
93
+ referenceImages,
94
+ locked: data.locked,
95
+ seed: data.seed,
96
+ referenceImageModels: data.referenceImageModels,
97
+ };
98
+ }
99
+ // ---- Helpers --------------------------------------------------------------
100
+ /**
101
+ * Sanitize a character name for use as a filesystem directory name.
102
+ * Converts to lowercase, replaces spaces and special characters with
103
+ * hyphens, and removes leading/trailing hyphens.
104
+ */
105
+ function sanitizeDirectoryName(name) {
106
+ return name
107
+ .toLowerCase()
108
+ .replace(/[^a-z0-9]+/g, "-")
109
+ .replace(/^-+|-+$/g, "");
110
+ }
111
+ /**
112
+ * Generate a deterministic seed from a character name.
113
+ * Provides a reproducible starting point when no seed is specified.
114
+ */
115
+ function seedFromName(name) {
116
+ let hash = 0;
117
+ for (let i = 0; i < name.length; i++) {
118
+ const char = name.charCodeAt(i);
119
+ hash = (hash << 5) - hash + char;
120
+ hash |= 0; // Convert to 32-bit integer.
121
+ }
122
+ return Math.abs(hash) % 999_999_999;
123
+ }
124
+ // ---- ReferenceManager class -----------------------------------------------
125
+ /**
126
+ * Manages generation, persistence, and retrieval of character reference
127
+ * images. Each character gets a dedicated directory under the output
128
+ * path containing four reference angle PNGs and a metadata JSON file.
129
+ */
130
+ export class ReferenceManager {
131
+ outputDir;
132
+ /**
133
+ * @param outputDir - Base directory for storing all character references.
134
+ * Character-specific subdirectories are created under
135
+ * `outputDir/characters/CHARACTER_NAME/`.
136
+ */
137
+ constructor(outputDir) {
138
+ this.outputDir = outputDir;
139
+ }
140
+ /**
141
+ * Resolve the directory path for a specific character.
142
+ */
143
+ characterDir(name) {
144
+ return join(this.outputDir, "characters", sanitizeDirectoryName(name));
145
+ }
146
+ /**
147
+ * Generate all four reference images for a character and return a
148
+ * locked character reference. Images are also saved to disk.
149
+ *
150
+ * The front face is generated first, then used as a reference image
151
+ * for the remaining angles to maintain visual consistency.
152
+ *
153
+ * @param client - Venice API client instance.
154
+ * @param description - Full character description to use as prompt basis.
155
+ * @param aesthetic - Optional aesthetic profile to style-match references.
156
+ * @returns A `CharacterLock` containing all reference images and metadata.
157
+ */
158
+ async generateReferences(client, description, aesthetic) {
159
+ const seed = seedFromName(description.name);
160
+ const referenceImages = {
161
+ front: "",
162
+ threeQuarter: "",
163
+ profile: "",
164
+ fullBody: "",
165
+ };
166
+ // Build aesthetic suffix to inject into every prompt.
167
+ const aestheticSuffix = aesthetic
168
+ ? ` ${aesthetic.style}. ${aesthetic.palette}. ${aesthetic.lighting}. ${aesthetic.filmStock}.`
169
+ : "";
170
+ // Generate front face FIRST -- it becomes the reference for other angles.
171
+ const frontAngle = REFERENCE_ANGLES[0]; // front
172
+ const frontPrompt = `${description.fullDescription} ${frontAngle.promptSuffix}${aestheticSuffix}`;
173
+ const frontRequest = {
174
+ model: DEFAULT_MODEL,
175
+ prompt: frontPrompt,
176
+ negative_prompt: "blurry, low quality, distorted, deformed, multiple people, text, watermark, signature",
177
+ resolution: REF_RESOLUTION,
178
+ aspect_ratio: REF_ASPECT_RATIO,
179
+ steps: 30,
180
+ cfg_scale: 7,
181
+ seed,
182
+ safe_mode: false,
183
+ hide_watermark: true,
184
+ };
185
+ const frontResponse = await generateImage(client, frontRequest);
186
+ if (!frontResponse.images || frontResponse.images.length === 0) {
187
+ throw new Error(`Venice API returned no images for ${description.name} (front view)`);
188
+ }
189
+ referenceImages.front = frontResponse.images[0].b64_json;
190
+ // Generate remaining angles with the same seed + high cfg_scale to
191
+ // anchor to the same character identity established in the front view.
192
+ const remainingAngles = REFERENCE_ANGLES.slice(1); // 3/4, profile, fullBody
193
+ for (const angle of remainingAngles) {
194
+ const prompt = `${description.fullDescription} ${angle.promptSuffix}${aestheticSuffix} Same person as previous image, consistent appearance.`;
195
+ const request = {
196
+ model: DEFAULT_MODEL,
197
+ prompt,
198
+ negative_prompt: "blurry, low quality, distorted, deformed, multiple people, text, watermark, signature, different person, inconsistent appearance",
199
+ resolution: REF_RESOLUTION,
200
+ aspect_ratio: REF_ASPECT_RATIO,
201
+ steps: 30,
202
+ cfg_scale: 9,
203
+ seed,
204
+ safe_mode: false,
205
+ hide_watermark: true,
206
+ };
207
+ const response = await generateImage(client, request);
208
+ if (!response.images || response.images.length === 0) {
209
+ throw new Error(`Venice API returned no images for ${description.name} (${angle.key} view)`);
210
+ }
211
+ referenceImages[angle.key] = response.images[0].b64_json;
212
+ }
213
+ const lock = {
214
+ name: description.name,
215
+ description,
216
+ referenceImages,
217
+ locked: true,
218
+ seed,
219
+ referenceImageModels: {
220
+ front: DEFAULT_MODEL,
221
+ threeQuarter: DEFAULT_MODEL,
222
+ profile: DEFAULT_MODEL,
223
+ fullBody: DEFAULT_MODEL,
224
+ },
225
+ };
226
+ // Persist to disk.
227
+ await this.saveReferences(lock);
228
+ return lock;
229
+ }
230
+ /**
231
+ * Load a previously saved character lock from disk.
232
+ *
233
+ * @param name - Character name to look up.
234
+ * @returns The `CharacterLock` if found, or `null` if no saved data exists.
235
+ */
236
+ async loadReferences(name) {
237
+ const dir = this.characterDir(name);
238
+ try {
239
+ // Read metadata.
240
+ const metadataPath = join(dir, METADATA_FILENAME);
241
+ const metadataRaw = await readFile(metadataPath, "utf-8");
242
+ const metadata = JSON.parse(metadataRaw);
243
+ // Read each reference image from its PNG file.
244
+ const referenceImages = {
245
+ front: "",
246
+ threeQuarter: "",
247
+ profile: "",
248
+ fullBody: "",
249
+ };
250
+ for (const angle of REFERENCE_ANGLES) {
251
+ const imagePath = join(dir, angle.filename);
252
+ const imageBuffer = await readFile(imagePath);
253
+ referenceImages[angle.key] = imageBuffer.toString("base64");
254
+ }
255
+ return deserializeLock(metadata, referenceImages);
256
+ }
257
+ catch (err) {
258
+ // If any file is missing, treat as not found.
259
+ if (err instanceof Error &&
260
+ "code" in err &&
261
+ err.code === "ENOENT") {
262
+ return null;
263
+ }
264
+ throw err;
265
+ }
266
+ }
267
+ /**
268
+ * Save a character lock to disk. Reference images are written as PNG
269
+ * files and metadata is written as JSON.
270
+ *
271
+ * @param lock - The `CharacterLock` to persist.
272
+ */
273
+ async saveReferences(lock) {
274
+ const dir = this.characterDir(lock.name);
275
+ await mkdir(dir, { recursive: true });
276
+ // Write reference images as PNG files and emit a provenance sidecar
277
+ // for each so the Seedance pre-flight gate can validate later.
278
+ for (const angle of REFERENCE_ANGLES) {
279
+ const imagePath = join(dir, angle.filename);
280
+ const imageBuffer = Buffer.from(lock.referenceImages[angle.key], "base64");
281
+ await writeFile(imagePath, imageBuffer);
282
+ const modelUsed = lock.referenceImageModels?.[angle.key];
283
+ if (modelUsed) {
284
+ // Character reference sheets always depict a human face, so Seedance
285
+ // cares about their provenance.
286
+ await writeImageProvenance(imagePath, modelUsed, [], { hasFace: true });
287
+ }
288
+ }
289
+ // Write metadata (without base64 image data to avoid duplication).
290
+ const metadataPath = join(dir, METADATA_FILENAME);
291
+ const serialized = serializeLock(lock);
292
+ await writeFile(metadataPath, JSON.stringify(serialized, null, 2), "utf-8");
293
+ }
294
+ /**
295
+ * Return the front-facing reference image as a base64 string.
296
+ * This is the primary image used for face-reference injection into
297
+ * scene generation prompts.
298
+ *
299
+ * @param lock - A loaded or generated `CharacterLock`.
300
+ * @returns Base64-encoded PNG of the front face reference.
301
+ */
302
+ getBase64Face(lock) {
303
+ return lock.referenceImages.front;
304
+ }
305
+ /**
306
+ * List the names of all characters that have been locked (saved to disk).
307
+ * Reads the characters directory and returns names derived from each
308
+ * subdirectory that contains a valid metadata file.
309
+ *
310
+ * @returns Array of character names that have persisted locks.
311
+ */
312
+ async listLocked() {
313
+ const charactersDir = join(this.outputDir, "characters");
314
+ const names = [];
315
+ try {
316
+ const entries = await readdir(charactersDir, { withFileTypes: true });
317
+ for (const entry of entries) {
318
+ if (!entry.isDirectory())
319
+ continue;
320
+ // Check if this directory has a valid metadata file.
321
+ try {
322
+ const metadataPath = join(charactersDir, entry.name, METADATA_FILENAME);
323
+ const raw = await readFile(metadataPath, "utf-8");
324
+ const metadata = JSON.parse(raw);
325
+ if (metadata.locked && metadata.name) {
326
+ names.push(metadata.name);
327
+ }
328
+ }
329
+ catch {
330
+ // Skip directories without valid metadata.
331
+ }
332
+ }
333
+ }
334
+ catch (err) {
335
+ // Characters directory does not exist yet -- return empty.
336
+ if (err instanceof Error &&
337
+ "code" in err &&
338
+ err.code === "ENOENT") {
339
+ return [];
340
+ }
341
+ throw err;
342
+ }
343
+ return names;
344
+ }
345
+ }
346
+ //# sourceMappingURL=reference-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-manager.js","sourceRoot":"","sources":["../../src/characters/reference-manager.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import 'dotenv/config';
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC"}