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 @@
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/mini-drama/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { SeriesState, ShotScript } from '../series/types.js';
2
+ export type ReferenceSlotKind = 'character-primary' | 'character-angle' | 'storyboard' | 'location';
3
+ export interface ReferenceSlot {
4
+ /** 1-based index — @Image<imageIndex> in the prompt. */
5
+ imageIndex: number;
6
+ kind: ReferenceSlotKind;
7
+ /** Absolute path to the image on disk. */
8
+ path: string;
9
+ /** Character name (character slots), location slug, or storyboard slug. */
10
+ label: string;
11
+ /** Prompt role clause emitted verbatim (without the @ImageN prefix). */
12
+ roleClause: string;
13
+ }
14
+ export interface ReferenceSlotPlan {
15
+ slots: ReferenceSlot[];
16
+ /** Character name -> primary slot imageIndex (for @ImageN name substitution). */
17
+ characterSlotByName: Map<string, number>;
18
+ /** Human-readable notes about what was dropped due to budget. */
19
+ dropped: string[];
20
+ }
21
+ /**
22
+ * Build the ordered reference slot plan for a shot on an @Image-tag model.
23
+ *
24
+ * The returned slots array is the exact push order of reference_image_urls;
25
+ * @ImageN in the prompt = slots[N-1]. Characters always occupy the first
26
+ * slots (one primary angle each) so drop decisions never renumber them.
27
+ */
28
+ export declare function buildReferenceSlotPlan(series: SeriesState, shot: ShotScript, modelId: string, options?: {
29
+ characterNames?: string[];
30
+ }): ReferenceSlotPlan;
31
+ //# sourceMappingURL=reference-slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-slots.d.ts","sourceRoot":"","sources":["../../src/mini-drama/reference-slots.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AASlE,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,iBAAiB,GACjB,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,iFAAiF;IACjF,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAYD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC1C,iBAAiB,CAqInB"}
@@ -0,0 +1,161 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Reference slot allocator (@Image1..@ImageN)
3
+ //
4
+ // Central bookkeeping for the flat reference_image_urls array on @Image-tag
5
+ // models (Seedance 2.0 R2V family, HappyHorse 1.1 R2V). The @ImageN index in
6
+ // the prompt MUST match the push order of reference_image_urls in the queue
7
+ // body, so both the prompt builder and the video generator consume the SAME
8
+ // ordered slot list built here.
9
+ //
10
+ // Slot order (within the per-model budget, default 9 on Seedance R2V):
11
+ // 1. One primary angle per character (front.png) — identity
12
+ // 2. Storyboard blocking plate(s) for the shot's beat — PROTECTED
13
+ // 3. Location angles (wide, then medium, then detail) — environment
14
+ // 4. Second character angles (three-quarter.png) — extra identity
15
+ //
16
+ // Overflow policy (user decision 2026-07-30): drop second character angles
17
+ // first, then extra location angles; storyboard plates are protected and
18
+ // dropped only if characters + plates alone exceed the budget.
19
+ // ---------------------------------------------------------------------------
20
+ import { join } from 'node:path';
21
+ import { existsSync } from 'node:fs';
22
+ import { getMaxReferenceImages } from '../series/types.js';
23
+ import { getCharacterDir, getLocationDir, getLocation, getStoryboardRefPath, } from '../series/manager.js';
24
+ const LOCATION_ANGLE_ORDER_DEFAULT = ['wide.png', 'medium.png', 'detail.png'];
25
+ const LOCATION_ANGLE_ORDER_CLOSER = ['medium.png', 'wide.png', 'detail.png'];
26
+ /**
27
+ * Build the ordered reference slot plan for a shot on an @Image-tag model.
28
+ *
29
+ * The returned slots array is the exact push order of reference_image_urls;
30
+ * @ImageN in the prompt = slots[N-1]. Characters always occupy the first
31
+ * slots (one primary angle each) so drop decisions never renumber them.
32
+ */
33
+ export function buildReferenceSlotPlan(series, shot, modelId, options = {}) {
34
+ const budget = getMaxReferenceImages(modelId);
35
+ const dropped = [];
36
+ const charNames = options.characterNames ?? shot.characters;
37
+ const resolvedChars = charNames
38
+ .map(name => series.characters.find(c => c.name.toUpperCase() === name.toUpperCase()))
39
+ .filter((c) => Boolean(c));
40
+ // --- Tier 1: one primary angle per character ---
41
+ const primary = [];
42
+ for (const char of resolvedChars) {
43
+ const dir = getCharacterDir(series, char.name);
44
+ const path = ['front.png', 'three-quarter.png']
45
+ .map(f => join(dir, f))
46
+ .find(p => existsSync(p));
47
+ if (!path)
48
+ continue;
49
+ primary.push({
50
+ kind: 'character-primary',
51
+ path,
52
+ label: char.name,
53
+ roleClause: `is ${char.name} — use this reference for ${char.name}'s face, hair, and wardrobe`,
54
+ });
55
+ }
56
+ // --- Tier 2: storyboard blocking plate (PROTECTED) ---
57
+ const storyboard = [];
58
+ if (shot.storyboardRef) {
59
+ const sbPath = getStoryboardRefPath(series, shot.storyboardRef);
60
+ if (sbPath && existsSync(sbPath)) {
61
+ storyboard.push({
62
+ kind: 'storyboard',
63
+ path: sbPath,
64
+ label: shot.storyboardRef,
65
+ roleClause: 'is the storyboard blocking reference — it shows where the characters are ' +
66
+ 'positioned in the location and in relation to each other; use it ONLY for ' +
67
+ 'composition, blocking, and spatial relationships. Take each character\'s ' +
68
+ 'appearance from their own reference image, and the environment from the ' +
69
+ 'location references. It is not a character and not a style reference.',
70
+ });
71
+ }
72
+ else {
73
+ dropped.push(`storyboard ref "${shot.storyboardRef}" (not found on disk)`);
74
+ }
75
+ }
76
+ // --- Tier 3: location angles ---
77
+ const location = [];
78
+ if (shot.location) {
79
+ const loc = getLocation(series, shot.location);
80
+ if (loc) {
81
+ const dir = getLocationDir(series, loc.slug);
82
+ const closer = shot.type === 'close-up' || shot.type === 'reaction' || shot.type === 'insert';
83
+ const order = closer ? LOCATION_ANGLE_ORDER_CLOSER : LOCATION_ANGLE_ORDER_DEFAULT;
84
+ const angleRole = {
85
+ 'wide.png': 'a wide angle of the location',
86
+ 'medium.png': 'a second angle of the same location',
87
+ 'detail.png': 'a third angle of the same location (detail)',
88
+ };
89
+ let angleCount = 0;
90
+ for (const f of order) {
91
+ const p = join(dir, f);
92
+ if (!existsSync(p))
93
+ continue;
94
+ angleCount += 1;
95
+ const anglePhrase = angleCount === 1
96
+ ? `is the location environment reference (${loc.name}) — match its setting, architecture, and lighting; it is not a character`
97
+ : `is ${angleRole[f] ?? 'another angle of the same location'} (${loc.name}) — same place, different angle; keep the environment consistent with it`;
98
+ location.push({
99
+ kind: 'location',
100
+ path: p,
101
+ label: loc.slug,
102
+ roleClause: anglePhrase,
103
+ });
104
+ }
105
+ }
106
+ }
107
+ // --- Tier 4: second character angles ---
108
+ const charAngles = [];
109
+ for (const char of resolvedChars) {
110
+ const dir = getCharacterDir(series, char.name);
111
+ const primaryPath = primary.find(s => s.label === char.name)?.path;
112
+ const path = ['three-quarter.png', 'profile.png', 'full-body.png']
113
+ .map(f => join(dir, f))
114
+ .find(p => existsSync(p) && p !== primaryPath);
115
+ if (!path)
116
+ continue;
117
+ charAngles.push({
118
+ kind: 'character-angle',
119
+ path,
120
+ label: char.name,
121
+ roleClause: `is a second angle of ${char.name} — same person as ${char.name}'s primary reference`,
122
+ });
123
+ }
124
+ // --- Budget allocation ---
125
+ // Priority: primaries > storyboard (protected) > location angles (first
126
+ // angle prioritized over char angles; extra angles below char angles is
127
+ // NOT the chosen policy — user chose: drop char angles first, then extra
128
+ // location angles, storyboard protected. So the fill order is:
129
+ // primaries, storyboard, location[0], charAngles, location[1..]
130
+ // and the DROP order (reverse fill) is: location[1..] last-in-first-out,
131
+ // then charAngles, then location[0], then storyboard.
132
+ // To express "drop second character angles first, then extra location
133
+ // angles" we fill in this order:
134
+ // primaries, storyboard, ALL location angles, charAngles
135
+ // so charAngles overflow first, then trailing location angles.
136
+ const fillOrder = [
137
+ ...primary,
138
+ ...storyboard,
139
+ ...location,
140
+ ...charAngles,
141
+ ];
142
+ const slots = [];
143
+ for (const candidate of fillOrder) {
144
+ if (slots.length >= budget) {
145
+ dropped.push(`${candidate.kind} "${candidate.label}" (over ${budget}-image budget for ${modelId})`);
146
+ continue;
147
+ }
148
+ slots.push({
149
+ imageIndex: slots.length + 1,
150
+ ...candidate,
151
+ });
152
+ }
153
+ const characterSlotByName = new Map();
154
+ for (const slot of slots) {
155
+ if (slot.kind === 'character-primary') {
156
+ characterSlotByName.set(slot.label.toUpperCase(), slot.imageIndex);
157
+ }
158
+ }
159
+ return { slots, characterSlotByName, dropped };
160
+ }
161
+ //# sourceMappingURL=reference-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-slots.js","sourceRoot":"","sources":["../../src/mini-drama/reference-slots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ export type ShotId = number | string;
2
+ /**
3
+ * A timeline placement map keyed by shot id. The string keys are the
4
+ * zero-padded form produced by `shotKey()` — numeric portion padded to 3
5
+ * digits, suffix letters preserved as-is.
6
+ */
7
+ export type PlacementMap = Record<string, {
8
+ startSec: number;
9
+ endSec: number;
10
+ }>;
11
+ /**
12
+ * canonical shot-id key. Numeric portions are zero-padded to 3
13
+ * digits; suffix letters ("b", "c", ...) are preserved as-is.
14
+ *
15
+ * shotKey(3) -> "003"
16
+ * shotKey("3b") -> "003b"
17
+ * shotKey("002c") -> "002c"
18
+ * shotKey("intro") -> "intro" (unrecognized — passed through)
19
+ */
20
+ export declare function shotKey(id: ShotId): string;
21
+ /** Dialogue file path: `dialogueDir/dialogue-shot-<key>.mp3`. */
22
+ export declare function dialogueFileForShot(dialogueDir: string, id: ShotId): string;
23
+ /** Panel file path: `panelDir/shot-<key>.png`. */
24
+ export declare function panelFileForShot(panelDir: string, id: ShotId): string;
25
+ /** Video file path: `videoDir/shot-<key>.mp4`. */
26
+ export declare function videoFileForShot(videoDir: string, id: ShotId): string;
27
+ /**
28
+ * place a list of narration cues into the timeline by shot id,
29
+ * not by master timestamp. Returns the resolved placement records and an
30
+ * array of warnings — when any cue can't be placed (file missing, shot id
31
+ * not in the placement map), the warning is collected so the assembler
32
+ * can surface it loudly.
33
+ *
34
+ * Centralizing this here means future bugs in dialogue placement only
35
+ * have one place to be fixed.
36
+ */
37
+ export interface NarrationCue {
38
+ /** Shot id (number or suffix string). */
39
+ shotId: ShotId;
40
+ /** Human-readable label (e.g. "NARRATOR" / character name). */
41
+ label?: string;
42
+ /**
43
+ * Override the dialogue file. Defaults to the canonical
44
+ * `dialogueFileForShot(dialogueDir, shotId)`.
45
+ */
46
+ audioPath?: string;
47
+ /** Optional offset within the shot's window. Defaults to 0. */
48
+ startOffsetSec?: number;
49
+ }
50
+ export interface PlacedNarrationCue {
51
+ shotId: ShotId;
52
+ label?: string;
53
+ audioPath: string;
54
+ startSec: number;
55
+ endSec: number;
56
+ }
57
+ export declare function placeNarrationCues(opts: {
58
+ cues: NarrationCue[];
59
+ placementMap: PlacementMap;
60
+ dialogueDir: string;
61
+ }): {
62
+ placements: PlacedNarrationCue[];
63
+ warnings: string[];
64
+ };
65
+ /**
66
+ * Sanity assertion. After placing narration cues, callers should verify
67
+ * that placements within a contiguous region have distinct startSec values.
68
+ * Collapsing placements (e.g. N narrator beats collapsing to 0 actual
69
+ * placements) typically indicates a fall-through in the placement loop —
70
+ * see the module-level docstring.
71
+ *
72
+ * Returns the array of *suspect* groupings (key = startSec rounded to 2dp,
73
+ * value = colliding cue keys) so the caller can decide whether to warn,
74
+ * error, or log.
75
+ */
76
+ export declare function findCollidingNarrationStarts(placements: PlacedNarrationCue[]): Map<string, string[]>;
77
+ //# sourceMappingURL=shot-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shot-paths.d.ts","sourceRoot":"","sources":["../../src/mini-drama/shot-paths.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhF;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAK1C;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG;IAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA2B3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,kBAAkB,EAAE,GAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAavB"}
@@ -0,0 +1,101 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Canonical shot-id path builders.
3
+ //
4
+ // Failure mode this prevents: assembly scripts keyed file lookups by unpadded
5
+ // shot ids (`"3"`, `"3b"`, `"3c"`, `"4"`) while dialogue files on disk are
6
+ // zero-padded (`dialogue-shot-003.mp3`, `dialogue-shot-003b.mp3`). Every
7
+ // `existsSync` returned false silently, the for-loop continued past every
8
+ // iteration, and the master shipped with the relevant narration missing.
9
+ //
10
+ // Fix: every harness path that depends on a shot id goes through this
11
+ // module. Numeric ids are zero-padded to 3 digits; suffix letters
12
+ // ("b", "c") are preserved as-is.
13
+ //
14
+ // Anti-pattern: ad-hoc template literals like
15
+ // `dialogue-shot-${id}.mp3`
16
+ // are forbidden in new code — they bypass the padding contract.
17
+ // ---------------------------------------------------------------------------
18
+ import { existsSync } from 'node:fs';
19
+ import { join } from 'node:path';
20
+ /**
21
+ * canonical shot-id key. Numeric portions are zero-padded to 3
22
+ * digits; suffix letters ("b", "c", ...) are preserved as-is.
23
+ *
24
+ * shotKey(3) -> "003"
25
+ * shotKey("3b") -> "003b"
26
+ * shotKey("002c") -> "002c"
27
+ * shotKey("intro") -> "intro" (unrecognized — passed through)
28
+ */
29
+ export function shotKey(id) {
30
+ if (typeof id === 'number')
31
+ return String(id).padStart(3, '0');
32
+ const match = id.match(/^(\d+)([a-zA-Z]*)$/);
33
+ if (match)
34
+ return String(match[1]).padStart(3, '0') + match[2];
35
+ return id;
36
+ }
37
+ /** Dialogue file path: `dialogueDir/dialogue-shot-<key>.mp3`. */
38
+ export function dialogueFileForShot(dialogueDir, id) {
39
+ return join(dialogueDir, `dialogue-shot-${shotKey(id)}.mp3`);
40
+ }
41
+ /** Panel file path: `panelDir/shot-<key>.png`. */
42
+ export function panelFileForShot(panelDir, id) {
43
+ return join(panelDir, `shot-${shotKey(id)}.png`);
44
+ }
45
+ /** Video file path: `videoDir/shot-<key>.mp4`. */
46
+ export function videoFileForShot(videoDir, id) {
47
+ return join(videoDir, `shot-${shotKey(id)}.mp4`);
48
+ }
49
+ export function placeNarrationCues(opts) {
50
+ const placements = [];
51
+ const warnings = [];
52
+ for (const cue of opts.cues) {
53
+ const key = shotKey(cue.shotId);
54
+ const window = opts.placementMap[key];
55
+ if (!window) {
56
+ warnings.push(`narration: shot id ${key} not in placement map — skipping`);
57
+ continue;
58
+ }
59
+ const audioPath = cue.audioPath ?? dialogueFileForShot(opts.dialogueDir, cue.shotId);
60
+ if (!existsSync(audioPath)) {
61
+ warnings.push(`narration: missing dialogue file ${audioPath} — skipping`);
62
+ continue;
63
+ }
64
+ const startSec = window.startSec + (cue.startOffsetSec ?? 0);
65
+ placements.push({
66
+ shotId: cue.shotId,
67
+ label: cue.label,
68
+ audioPath,
69
+ startSec,
70
+ endSec: window.endSec,
71
+ });
72
+ }
73
+ return { placements, warnings };
74
+ }
75
+ /**
76
+ * Sanity assertion. After placing narration cues, callers should verify
77
+ * that placements within a contiguous region have distinct startSec values.
78
+ * Collapsing placements (e.g. N narrator beats collapsing to 0 actual
79
+ * placements) typically indicates a fall-through in the placement loop —
80
+ * see the module-level docstring.
81
+ *
82
+ * Returns the array of *suspect* groupings (key = startSec rounded to 2dp,
83
+ * value = colliding cue keys) so the caller can decide whether to warn,
84
+ * error, or log.
85
+ */
86
+ export function findCollidingNarrationStarts(placements) {
87
+ const grouped = new Map();
88
+ for (const p of placements) {
89
+ const k = p.startSec.toFixed(2);
90
+ const list = grouped.get(k) ?? [];
91
+ list.push(shotKey(p.shotId));
92
+ grouped.set(k, list);
93
+ }
94
+ const collisions = new Map();
95
+ for (const [k, v] of grouped) {
96
+ if (v.length > 1)
97
+ collisions.set(k, v);
98
+ }
99
+ return collisions;
100
+ }
101
+ //# sourceMappingURL=shot-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shot-paths.js","sourceRoot":"","sources":["../../src/mini-drama/shot-paths.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,EAAE;AACF,sEAAsE;AACtE,kEAAkE;AAClE,kCAAkC;AAClC,EAAE;AACF,8CAA8C;AAC9C,8BAA8B;AAC9B,gEAAgE;AAChE,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,EAAU;IACjE,OAAO,IAAI,CAAC,WAAW,EAAE,iBAAiB,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,EAAU;IAC3D,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,EAAU;IAC3D,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAkCD,MAAM,UAAU,kBAAkB,CAAC,IAIlC;IACC,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,kCAAkC,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,oCAAoC,SAAS,aAAa,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS;YACT,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { VeniceClient } from '../venice/client.js';
2
+ import type { SeriesState, StoryboardReference, EpisodeScript } from '../series/types.js';
3
+ export interface GenerateStoryboardReferenceOptions {
4
+ /** Override the image-generation model (default: series imageDefaults / nano-banana-2). */
5
+ model?: string;
6
+ /** cfg_scale (default 10). */
7
+ cfgScale?: number;
8
+ /** Regenerate even if the plate already exists on disk (archives prior). */
9
+ force?: boolean;
10
+ }
11
+ /**
12
+ * Generate (or reuse) the composed blocking plate for a storyboard reference.
13
+ * Writes `storyboards/<slug>.png` plus a `.prompt.json` sidecar, provenance
14
+ * (hasFace matches whether characters were composed), and a recipe pass.
15
+ * Returns the on-disk path.
16
+ */
17
+ export declare function generateStoryboardReference(client: VeniceClient, series: SeriesState, ref: StoryboardReference, options?: GenerateStoryboardReferenceOptions): Promise<{
18
+ path: string;
19
+ skipped: boolean;
20
+ }>;
21
+ /**
22
+ * Plan storyboard blocking plates per scene BEAT (user decision 2026-07-30:
23
+ * per-beat granularity, auto-planned, reused across the beat's shots).
24
+ *
25
+ * A beat is a maximal run of consecutive shots that:
26
+ * - involve 2+ characters (single-character shots don't need blocking), and
27
+ * - share the same location, and
28
+ * - keep an overlapping character set (a full cast change starts a new beat).
29
+ *
30
+ * Each beat gets one StoryboardReference whose description is synthesized
31
+ * from the beat's first multi-character shot; shots in the beat get
32
+ * `storyboardRef` set to the plate's slug. Pre-existing per-shot
33
+ * `storyboardRef` values are always respected and never overwritten.
34
+ */
35
+ export declare function planStoryboardBeats(script: EpisodeScript): StoryboardReference[];
36
+ /**
37
+ * Plan beats for an episode (idempotent — respects existing storyboardRefs
38
+ * and previously planned plates), merge them into script.storyboardRefs, and
39
+ * generate any plates missing on disk. Called from workshop-episode after
40
+ * location generation, and best-effort from generate-videos so hand-edited
41
+ * scripts pick up plates too.
42
+ */
43
+ export declare function ensureEpisodeStoryboardReferences(client: VeniceClient, series: SeriesState, script: EpisodeScript, options?: GenerateStoryboardReferenceOptions): Promise<{
44
+ generated: string[];
45
+ skipped: string[];
46
+ }>;
47
+ //# sourceMappingURL=storyboard-reference-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyboard-reference-generator.d.ts","sourceRoot":"","sources":["../../src/mini-drama/storyboard-reference-generator.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AA2BtG,MAAM,WAAW,kCAAkC;IACjD,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA6J7C;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA6ChF;AAED;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA2BrD"}