videoclaw 3.0.0-alpha.1 → 3.0.0-alpha.2

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 (653) hide show
  1. package/CLAUDE.md +113 -5
  2. package/README.md +33 -4
  3. package/dist/cli/args.d.ts +13 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +22 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/handlers/analysis.d.ts +9 -0
  8. package/dist/cli/handlers/analysis.d.ts.map +1 -1
  9. package/dist/cli/handlers/analysis.js +35 -4
  10. package/dist/cli/handlers/analysis.js.map +1 -1
  11. package/dist/cli/handlers/audio.js +6 -6
  12. package/dist/cli/handlers/audio.js.map +1 -1
  13. package/dist/cli/handlers/batch.js +2 -2
  14. package/dist/cli/handlers/batch.js.map +1 -1
  15. package/dist/cli/handlers/candidates.d.ts.map +1 -1
  16. package/dist/cli/handlers/candidates.js +66 -13
  17. package/dist/cli/handlers/candidates.js.map +1 -1
  18. package/dist/cli/handlers/character.d.ts.map +1 -1
  19. package/dist/cli/handlers/character.js +9 -8
  20. package/dist/cli/handlers/character.js.map +1 -1
  21. package/dist/cli/handlers/clone.d.ts.map +1 -1
  22. package/dist/cli/handlers/clone.js +5 -5
  23. package/dist/cli/handlers/clone.js.map +1 -1
  24. package/dist/cli/handlers/create.js +2 -2
  25. package/dist/cli/handlers/create.js.map +1 -1
  26. package/dist/cli/handlers/execution.d.ts +25 -0
  27. package/dist/cli/handlers/execution.d.ts.map +1 -1
  28. package/dist/cli/handlers/execution.js +304 -7
  29. package/dist/cli/handlers/execution.js.map +1 -1
  30. package/dist/cli/handlers/media-ops.d.ts +11 -0
  31. package/dist/cli/handlers/media-ops.d.ts.map +1 -1
  32. package/dist/cli/handlers/media-ops.js +120 -7
  33. package/dist/cli/handlers/media-ops.js.map +1 -1
  34. package/dist/cli/handlers/media-production.d.ts +8 -0
  35. package/dist/cli/handlers/media-production.d.ts.map +1 -1
  36. package/dist/cli/handlers/media-production.js +91 -8
  37. package/dist/cli/handlers/media-production.js.map +1 -1
  38. package/dist/cli/handlers/migrate-home.d.ts +2 -0
  39. package/dist/cli/handlers/migrate-home.d.ts.map +1 -0
  40. package/dist/cli/handlers/migrate-home.js +25 -0
  41. package/dist/cli/handlers/migrate-home.js.map +1 -0
  42. package/dist/cli/handlers/monitor.d.ts +2 -0
  43. package/dist/cli/handlers/monitor.d.ts.map +1 -0
  44. package/dist/cli/handlers/monitor.js +23 -0
  45. package/dist/cli/handlers/monitor.js.map +1 -0
  46. package/dist/cli/handlers/motion-overlay.js +2 -2
  47. package/dist/cli/handlers/motion-overlay.js.map +1 -1
  48. package/dist/cli/handlers/multi-shot.d.ts.map +1 -1
  49. package/dist/cli/handlers/multi-shot.js +13 -3
  50. package/dist/cli/handlers/multi-shot.js.map +1 -1
  51. package/dist/cli/handlers/project-ops.js +13 -13
  52. package/dist/cli/handlers/project-ops.js.map +1 -1
  53. package/dist/cli/handlers/prompt-craft.d.ts +1 -0
  54. package/dist/cli/handlers/prompt-craft.d.ts.map +1 -1
  55. package/dist/cli/handlers/prompt-craft.js +18 -7
  56. package/dist/cli/handlers/prompt-craft.js.map +1 -1
  57. package/dist/cli/handlers/provider-registration.d.ts.map +1 -1
  58. package/dist/cli/handlers/provider-registration.js +7 -6
  59. package/dist/cli/handlers/provider-registration.js.map +1 -1
  60. package/dist/cli/handlers/reference-sheets.js +6 -6
  61. package/dist/cli/handlers/reference-sheets.js.map +1 -1
  62. package/dist/cli/handlers/reporting.js +18 -18
  63. package/dist/cli/handlers/reporting.js.map +1 -1
  64. package/dist/cli/handlers/review-portal.d.ts.map +1 -1
  65. package/dist/cli/handlers/review-portal.js +19 -11
  66. package/dist/cli/handlers/review-portal.js.map +1 -1
  67. package/dist/cli/handlers/show.d.ts +11 -0
  68. package/dist/cli/handlers/show.d.ts.map +1 -1
  69. package/dist/cli/handlers/show.js +43 -3
  70. package/dist/cli/handlers/show.js.map +1 -1
  71. package/dist/cli/handlers/stages.d.ts.map +1 -1
  72. package/dist/cli/handlers/stages.js +6 -6
  73. package/dist/cli/handlers/stages.js.map +1 -1
  74. package/dist/cli/handlers/studio.js +2 -2
  75. package/dist/cli/handlers/studio.js.map +1 -1
  76. package/dist/cli/handlers/templates.js +5 -5
  77. package/dist/cli/handlers/templates.js.map +1 -1
  78. package/dist/cli/provider-adapter.js +6 -0
  79. package/dist/cli/provider-adapter.js.map +1 -1
  80. package/dist/cli/vclaw.d.ts.map +1 -1
  81. package/dist/cli/vclaw.js +41 -10
  82. package/dist/cli/vclaw.js.map +1 -1
  83. package/dist/index.d.ts +2 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +2 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/mcp/tools.d.ts.map +1 -1
  88. package/dist/mcp/tools.js +5 -4
  89. package/dist/mcp/tools.js.map +1 -1
  90. package/dist/video/allocation-model.d.ts +45 -0
  91. package/dist/video/allocation-model.d.ts.map +1 -0
  92. package/dist/video/allocation-model.js +83 -0
  93. package/dist/video/allocation-model.js.map +1 -0
  94. package/dist/video/archive-project.d.ts.map +1 -1
  95. package/dist/video/archive-project.js +2 -1
  96. package/dist/video/archive-project.js.map +1 -1
  97. package/dist/video/artifact-history.d.ts.map +1 -1
  98. package/dist/video/artifact-history.js +2 -1
  99. package/dist/video/artifact-history.js.map +1 -1
  100. package/dist/video/assemble/assemble.d.ts.map +1 -1
  101. package/dist/video/assemble/assemble.js +6 -1
  102. package/dist/video/assemble/assemble.js.map +1 -1
  103. package/dist/video/assemble/gemini-vision-classify.d.ts +31 -0
  104. package/dist/video/assemble/gemini-vision-classify.d.ts.map +1 -1
  105. package/dist/video/assemble/gemini-vision-classify.js +58 -0
  106. package/dist/video/assemble/gemini-vision-classify.js.map +1 -1
  107. package/dist/video/assemble/media-qc.d.ts +9 -1
  108. package/dist/video/assemble/media-qc.d.ts.map +1 -1
  109. package/dist/video/assemble/media-qc.js +19 -0
  110. package/dist/video/assemble/media-qc.js.map +1 -1
  111. package/dist/video/assemble/stitch.d.ts +66 -2
  112. package/dist/video/assemble/stitch.d.ts.map +1 -1
  113. package/dist/video/assemble/stitch.js +135 -13
  114. package/dist/video/assemble/stitch.js.map +1 -1
  115. package/dist/video/asset-tag-lookup.d.ts +7 -0
  116. package/dist/video/asset-tag-lookup.d.ts.map +1 -1
  117. package/dist/video/asset-tag-lookup.js +9 -0
  118. package/dist/video/asset-tag-lookup.js.map +1 -1
  119. package/dist/video/character-auto-create.d.ts.map +1 -1
  120. package/dist/video/character-auto-create.js +4 -3
  121. package/dist/video/character-auto-create.js.map +1 -1
  122. package/dist/video/character-consistency.d.ts.map +1 -1
  123. package/dist/video/character-consistency.js +2 -1
  124. package/dist/video/character-consistency.js.map +1 -1
  125. package/dist/video/characters.d.ts +9 -0
  126. package/dist/video/characters.d.ts.map +1 -1
  127. package/dist/video/characters.js +2 -0
  128. package/dist/video/characters.js.map +1 -1
  129. package/dist/video/cli-schema.d.ts +11 -0
  130. package/dist/video/cli-schema.d.ts.map +1 -1
  131. package/dist/video/cli-schema.js +37 -8
  132. package/dist/video/cli-schema.js.map +1 -1
  133. package/dist/video/consistency-audit.d.ts +262 -0
  134. package/dist/video/consistency-audit.d.ts.map +1 -0
  135. package/dist/video/consistency-audit.js +585 -0
  136. package/dist/video/consistency-audit.js.map +1 -0
  137. package/dist/video/continuation-handoff.d.ts +49 -0
  138. package/dist/video/continuation-handoff.d.ts.map +1 -0
  139. package/dist/video/continuation-handoff.js +74 -0
  140. package/dist/video/continuation-handoff.js.map +1 -0
  141. package/dist/video/cost-estimate.d.ts.map +1 -1
  142. package/dist/video/cost-estimate.js +2 -1
  143. package/dist/video/cost-estimate.js.map +1 -1
  144. package/dist/video/csv-export.d.ts.map +1 -1
  145. package/dist/video/csv-export.js +2 -1
  146. package/dist/video/csv-export.js.map +1 -1
  147. package/dist/video/dependencies.d.ts.map +1 -1
  148. package/dist/video/dependencies.js +2 -1
  149. package/dist/video/dependencies.js.map +1 -1
  150. package/dist/video/director-preflight.d.ts.map +1 -1
  151. package/dist/video/director-preflight.js +3 -2
  152. package/dist/video/director-preflight.js.map +1 -1
  153. package/dist/video/doctor-portfolio.d.ts.map +1 -1
  154. package/dist/video/doctor-portfolio.js +2 -1
  155. package/dist/video/doctor-portfolio.js.map +1 -1
  156. package/dist/video/doctor.d.ts.map +1 -1
  157. package/dist/video/doctor.js +2 -1
  158. package/dist/video/doctor.js.map +1 -1
  159. package/dist/video/environment-auto-create.d.ts.map +1 -1
  160. package/dist/video/environment-auto-create.js +3 -2
  161. package/dist/video/environment-auto-create.js.map +1 -1
  162. package/dist/video/execute-autochain.d.ts +5 -0
  163. package/dist/video/execute-autochain.d.ts.map +1 -1
  164. package/dist/video/execute-autochain.js +14 -1
  165. package/dist/video/execute-autochain.js.map +1 -1
  166. package/dist/video/execute-pool.d.ts +72 -0
  167. package/dist/video/execute-pool.d.ts.map +1 -0
  168. package/dist/video/execute-pool.js +99 -0
  169. package/dist/video/execute-pool.js.map +1 -0
  170. package/dist/video/execute-render-scenes.d.ts +91 -0
  171. package/dist/video/execute-render-scenes.d.ts.map +1 -0
  172. package/dist/video/execute-render-scenes.js +97 -0
  173. package/dist/video/execute-render-scenes.js.map +1 -0
  174. package/dist/video/execute.d.ts +9 -0
  175. package/dist/video/execute.d.ts.map +1 -1
  176. package/dist/video/execute.js +150 -32
  177. package/dist/video/execute.js.map +1 -1
  178. package/dist/video/execution-cancel.d.ts.map +1 -1
  179. package/dist/video/execution-cancel.js +2 -1
  180. package/dist/video/execution-cancel.js.map +1 -1
  181. package/dist/video/execution-plan.d.ts +2 -0
  182. package/dist/video/execution-plan.d.ts.map +1 -1
  183. package/dist/video/execution-plan.js +13 -4
  184. package/dist/video/execution-plan.js.map +1 -1
  185. package/dist/video/execution-profile.d.ts.map +1 -1
  186. package/dist/video/execution-profile.js +3 -2
  187. package/dist/video/execution-profile.js.map +1 -1
  188. package/dist/video/execution-runtime.d.ts +51 -0
  189. package/dist/video/execution-runtime.d.ts.map +1 -1
  190. package/dist/video/execution-runtime.js +202 -5
  191. package/dist/video/execution-runtime.js.map +1 -1
  192. package/dist/video/execution-seed.d.ts.map +1 -1
  193. package/dist/video/execution-seed.js +2 -1
  194. package/dist/video/execution-seed.js.map +1 -1
  195. package/dist/video/execution-status.d.ts.map +1 -1
  196. package/dist/video/execution-status.js +109 -57
  197. package/dist/video/execution-status.js.map +1 -1
  198. package/dist/video/filmmaking-prompts.d.ts.map +1 -1
  199. package/dist/video/filmmaking-prompts.js +2 -1
  200. package/dist/video/filmmaking-prompts.js.map +1 -1
  201. package/dist/video/final-media.d.ts +4 -0
  202. package/dist/video/final-media.d.ts.map +1 -1
  203. package/dist/video/final-media.js +4 -0
  204. package/dist/video/final-media.js.map +1 -1
  205. package/dist/video/finish.d.ts +59 -4
  206. package/dist/video/finish.d.ts.map +1 -1
  207. package/dist/video/finish.js +110 -3
  208. package/dist/video/finish.js.map +1 -1
  209. package/dist/video/flow-captcha.d.ts +33 -0
  210. package/dist/video/flow-captcha.d.ts.map +1 -0
  211. package/dist/video/flow-captcha.js +47 -0
  212. package/dist/video/flow-captcha.js.map +1 -0
  213. package/dist/video/flow-character-library.d.ts +13 -0
  214. package/dist/video/flow-character-library.d.ts.map +1 -1
  215. package/dist/video/flow-character-library.js +21 -1
  216. package/dist/video/flow-character-library.js.map +1 -1
  217. package/dist/video/gen-image-flow.d.ts +28 -10
  218. package/dist/video/gen-image-flow.d.ts.map +1 -1
  219. package/dist/video/gen-image-flow.js +51 -19
  220. package/dist/video/gen-image-flow.js.map +1 -1
  221. package/dist/video/generation-telemetry.d.ts.map +1 -1
  222. package/dist/video/generation-telemetry.js +3 -2
  223. package/dist/video/generation-telemetry.js.map +1 -1
  224. package/dist/video/image-ops.d.ts +56 -0
  225. package/dist/video/image-ops.d.ts.map +1 -0
  226. package/dist/video/image-ops.js +61 -0
  227. package/dist/video/image-ops.js.map +1 -0
  228. package/dist/video/legacy-import.d.ts.map +1 -1
  229. package/dist/video/legacy-import.js +2 -1
  230. package/dist/video/legacy-import.js.map +1 -1
  231. package/dist/video/magnific/media-host.d.ts +13 -0
  232. package/dist/video/magnific/media-host.d.ts.map +1 -0
  233. package/dist/video/magnific/media-host.js +34 -0
  234. package/dist/video/magnific/media-host.js.map +1 -0
  235. package/dist/video/magnific/models.d.ts +44 -0
  236. package/dist/video/magnific/models.d.ts.map +1 -0
  237. package/dist/video/magnific/models.js +100 -0
  238. package/dist/video/magnific/models.js.map +1 -0
  239. package/dist/video/magnific/registry.d.ts +5 -0
  240. package/dist/video/magnific/registry.d.ts.map +1 -0
  241. package/dist/video/magnific/registry.js +16 -0
  242. package/dist/video/magnific/registry.js.map +1 -0
  243. package/dist/video/magnific/types.d.ts +24 -0
  244. package/dist/video/magnific/types.d.ts.map +1 -0
  245. package/dist/video/magnific/types.js +2 -0
  246. package/dist/video/magnific/types.js.map +1 -0
  247. package/dist/video/metrics.d.ts.map +1 -1
  248. package/dist/video/metrics.js +2 -1
  249. package/dist/video/metrics.js.map +1 -1
  250. package/dist/video/migrate-home.d.ts +46 -0
  251. package/dist/video/migrate-home.d.ts.map +1 -0
  252. package/dist/video/migrate-home.js +104 -0
  253. package/dist/video/migrate-home.js.map +1 -0
  254. package/dist/video/monitor/discovery.d.ts +50 -0
  255. package/dist/video/monitor/discovery.d.ts.map +1 -0
  256. package/dist/video/monitor/discovery.js +239 -0
  257. package/dist/video/monitor/discovery.js.map +1 -0
  258. package/dist/video/monitor/live-page.d.ts +23 -0
  259. package/dist/video/monitor/live-page.d.ts.map +1 -0
  260. package/dist/video/monitor/live-page.js +24 -0
  261. package/dist/video/monitor/live-page.js.map +1 -0
  262. package/dist/video/monitor/overview-html.d.ts +3 -0
  263. package/dist/video/monitor/overview-html.d.ts.map +1 -0
  264. package/dist/video/monitor/overview-html.js +758 -0
  265. package/dist/video/monitor/overview-html.js.map +1 -0
  266. package/dist/video/monitor/project-detail.d.ts +17 -0
  267. package/dist/video/monitor/project-detail.d.ts.map +1 -0
  268. package/dist/video/monitor/project-detail.js +253 -0
  269. package/dist/video/monitor/project-detail.js.map +1 -0
  270. package/dist/video/monitor/serve.d.ts +13 -0
  271. package/dist/video/monitor/serve.d.ts.map +1 -0
  272. package/dist/video/monitor/serve.js +206 -0
  273. package/dist/video/monitor/serve.js.map +1 -0
  274. package/dist/video/monitor/thumbnails.d.ts +24 -0
  275. package/dist/video/monitor/thumbnails.d.ts.map +1 -0
  276. package/dist/video/monitor/thumbnails.js +70 -0
  277. package/dist/video/monitor/thumbnails.js.map +1 -0
  278. package/dist/video/monitor/types.d.ts +37 -0
  279. package/dist/video/monitor/types.d.ts.map +1 -0
  280. package/dist/video/monitor/types.js +2 -0
  281. package/dist/video/monitor/types.js.map +1 -0
  282. package/dist/video/monitor/workspace.d.ts +11 -0
  283. package/dist/video/monitor/workspace.d.ts.map +1 -0
  284. package/dist/video/monitor/workspace.js +65 -0
  285. package/dist/video/monitor/workspace.js.map +1 -0
  286. package/dist/video/motion-overlay/v2v-transport.d.ts +4 -0
  287. package/dist/video/motion-overlay/v2v-transport.d.ts.map +1 -1
  288. package/dist/video/motion-overlay/v2v-transport.js +5 -3
  289. package/dist/video/motion-overlay/v2v-transport.js.map +1 -1
  290. package/dist/video/native-dreamina.d.ts +15 -0
  291. package/dist/video/native-dreamina.d.ts.map +1 -1
  292. package/dist/video/native-dreamina.js +34 -1
  293. package/dist/video/native-dreamina.js.map +1 -1
  294. package/dist/video/native-flow-r2v.d.ts +7 -0
  295. package/dist/video/native-flow-r2v.d.ts.map +1 -1
  296. package/dist/video/native-flow-r2v.js +5 -0
  297. package/dist/video/native-flow-r2v.js.map +1 -1
  298. package/dist/video/native-magnific.d.ts +57 -0
  299. package/dist/video/native-magnific.d.ts.map +1 -0
  300. package/dist/video/native-magnific.js +358 -0
  301. package/dist/video/native-magnific.js.map +1 -0
  302. package/dist/video/native-runway.d.ts.map +1 -1
  303. package/dist/video/native-runway.js +11 -2
  304. package/dist/video/native-runway.js.map +1 -1
  305. package/dist/video/native-veo.d.ts +17 -5
  306. package/dist/video/native-veo.d.ts.map +1 -1
  307. package/dist/video/native-veo.js +120 -10
  308. package/dist/video/native-veo.js.map +1 -1
  309. package/dist/video/next-actions.d.ts.map +1 -1
  310. package/dist/video/next-actions.js +2 -1
  311. package/dist/video/next-actions.js.map +1 -1
  312. package/dist/video/obsidian-export.d.ts.map +1 -1
  313. package/dist/video/obsidian-export.js +2 -1
  314. package/dist/video/obsidian-export.js.map +1 -1
  315. package/dist/video/obsidian-sync.d.ts.map +1 -1
  316. package/dist/video/obsidian-sync.js +2 -1
  317. package/dist/video/obsidian-sync.js.map +1 -1
  318. package/dist/video/output-diagnosis.d.ts +30 -0
  319. package/dist/video/output-diagnosis.d.ts.map +1 -0
  320. package/dist/video/output-diagnosis.js +98 -0
  321. package/dist/video/output-diagnosis.js.map +1 -0
  322. package/dist/video/post-production.d.ts.map +1 -1
  323. package/dist/video/post-production.js +2 -1
  324. package/dist/video/post-production.js.map +1 -1
  325. package/dist/video/preview-portal/discovery.d.ts +7 -0
  326. package/dist/video/preview-portal/discovery.d.ts.map +1 -1
  327. package/dist/video/preview-portal/discovery.js +60 -1
  328. package/dist/video/preview-portal/discovery.js.map +1 -1
  329. package/dist/video/preview-portal/gallery.d.ts +15 -0
  330. package/dist/video/preview-portal/gallery.d.ts.map +1 -0
  331. package/dist/video/preview-portal/gallery.js +27 -0
  332. package/dist/video/preview-portal/gallery.js.map +1 -0
  333. package/dist/video/preview-portal/generate.d.ts +10 -0
  334. package/dist/video/preview-portal/generate.d.ts.map +1 -1
  335. package/dist/video/preview-portal/generate.js +33 -5
  336. package/dist/video/preview-portal/generate.js.map +1 -1
  337. package/dist/video/preview-portal/index.d.ts +2 -2
  338. package/dist/video/preview-portal/index.d.ts.map +1 -1
  339. package/dist/video/preview-portal/index.js +1 -1
  340. package/dist/video/preview-portal/index.js.map +1 -1
  341. package/dist/video/preview-portal/render.d.ts.map +1 -1
  342. package/dist/video/preview-portal/render.js +319 -5
  343. package/dist/video/preview-portal/render.js.map +1 -1
  344. package/dist/video/preview-portal/run-discovery.d.ts +3 -0
  345. package/dist/video/preview-portal/run-discovery.d.ts.map +1 -0
  346. package/dist/video/preview-portal/run-discovery.js +359 -0
  347. package/dist/video/preview-portal/run-discovery.js.map +1 -0
  348. package/dist/video/preview-portal/shared-assets.d.ts +7 -2
  349. package/dist/video/preview-portal/shared-assets.d.ts.map +1 -1
  350. package/dist/video/preview-portal/shared-assets.js +99 -1
  351. package/dist/video/preview-portal/shared-assets.js.map +1 -1
  352. package/dist/video/preview-portal/types.d.ts +110 -1
  353. package/dist/video/preview-portal/types.d.ts.map +1 -1
  354. package/dist/video/preview-portal/types.js +6 -0
  355. package/dist/video/preview-portal/types.js.map +1 -1
  356. package/dist/video/project-index.d.ts.map +1 -1
  357. package/dist/video/project-index.js +2 -1
  358. package/dist/video/project-index.js.map +1 -1
  359. package/dist/video/projects.d.ts.map +1 -1
  360. package/dist/video/projects.js +2 -1
  361. package/dist/video/projects.js.map +1 -1
  362. package/dist/video/prompt-lint.d.ts +1 -1
  363. package/dist/video/prompt-lint.d.ts.map +1 -1
  364. package/dist/video/prompt-lint.js +38 -0
  365. package/dist/video/prompt-lint.js.map +1 -1
  366. package/dist/video/prompt-rules.d.ts.map +1 -1
  367. package/dist/video/prompt-rules.js +5 -3
  368. package/dist/video/prompt-rules.js.map +1 -1
  369. package/dist/video/provider-adapter-runner.d.ts.map +1 -1
  370. package/dist/video/provider-adapter-runner.js +22 -0
  371. package/dist/video/provider-adapter-runner.js.map +1 -1
  372. package/dist/video/provider-platform/registry.d.ts.map +1 -1
  373. package/dist/video/provider-platform/registry.js +44 -0
  374. package/dist/video/provider-platform/registry.js.map +1 -1
  375. package/dist/video/provider-platform/route-capabilities.d.ts.map +1 -1
  376. package/dist/video/provider-platform/route-capabilities.js +15 -0
  377. package/dist/video/provider-platform/route-capabilities.js.map +1 -1
  378. package/dist/video/provider-platform/types.d.ts +2 -2
  379. package/dist/video/provider-platform/types.d.ts.map +1 -1
  380. package/dist/video/provider-platform/types.js +1 -0
  381. package/dist/video/provider-platform/types.js.map +1 -1
  382. package/dist/video/provider-status.d.ts.map +1 -1
  383. package/dist/video/provider-status.js +9 -0
  384. package/dist/video/provider-status.js.map +1 -1
  385. package/dist/video/providers/google-flow.d.ts +5 -13
  386. package/dist/video/providers/google-flow.d.ts.map +1 -1
  387. package/dist/video/providers/google-flow.js +16 -2
  388. package/dist/video/providers/google-flow.js.map +1 -1
  389. package/dist/video/readiness.d.ts.map +1 -1
  390. package/dist/video/readiness.js +11 -1
  391. package/dist/video/readiness.js.map +1 -1
  392. package/dist/video/reference-transfer.d.ts +38 -0
  393. package/dist/video/reference-transfer.d.ts.map +1 -0
  394. package/dist/video/reference-transfer.js +104 -0
  395. package/dist/video/reference-transfer.js.map +1 -0
  396. package/dist/video/remix-narrated.d.ts.map +1 -1
  397. package/dist/video/remix-narrated.js +2 -1
  398. package/dist/video/remix-narrated.js.map +1 -1
  399. package/dist/video/report-diff.d.ts.map +1 -1
  400. package/dist/video/report-diff.js +2 -1
  401. package/dist/video/report-diff.js.map +1 -1
  402. package/dist/video/report-history.d.ts.map +1 -1
  403. package/dist/video/report-history.js +4 -3
  404. package/dist/video/report-history.js.map +1 -1
  405. package/dist/video/report.d.ts.map +1 -1
  406. package/dist/video/report.js +2 -1
  407. package/dist/video/report.js.map +1 -1
  408. package/dist/video/retake-protocol.d.ts +56 -0
  409. package/dist/video/retake-protocol.d.ts.map +1 -0
  410. package/dist/video/retake-protocol.js +113 -0
  411. package/dist/video/retake-protocol.js.map +1 -0
  412. package/dist/video/review-ui.d.ts.map +1 -1
  413. package/dist/video/review-ui.js +4 -2
  414. package/dist/video/review-ui.js.map +1 -1
  415. package/dist/video/run-state/normalize.d.ts +12 -0
  416. package/dist/video/run-state/normalize.d.ts.map +1 -0
  417. package/dist/video/run-state/normalize.js +31 -0
  418. package/dist/video/run-state/normalize.js.map +1 -0
  419. package/dist/video/run-state/read.d.ts +5 -0
  420. package/dist/video/run-state/read.d.ts.map +1 -0
  421. package/dist/video/run-state/read.js +58 -0
  422. package/dist/video/run-state/read.js.map +1 -0
  423. package/dist/video/run-state/types.d.ts +32 -0
  424. package/dist/video/run-state/types.d.ts.map +1 -0
  425. package/dist/video/run-state/types.js +2 -0
  426. package/dist/video/run-state/types.js.map +1 -0
  427. package/dist/video/run-status.d.ts +70 -0
  428. package/dist/video/run-status.d.ts.map +1 -0
  429. package/dist/video/run-status.js +118 -0
  430. package/dist/video/run-status.js.map +1 -0
  431. package/dist/video/scene-candidate-store.d.ts +20 -0
  432. package/dist/video/scene-candidate-store.d.ts.map +1 -1
  433. package/dist/video/scene-candidate-store.js +30 -0
  434. package/dist/video/scene-candidate-store.js.map +1 -1
  435. package/dist/video/seedance-antislop.d.ts +55 -0
  436. package/dist/video/seedance-antislop.d.ts.map +1 -0
  437. package/dist/video/seedance-antislop.js +238 -0
  438. package/dist/video/seedance-antislop.js.map +1 -0
  439. package/dist/video/show-bible-attach.d.ts +87 -0
  440. package/dist/video/show-bible-attach.d.ts.map +1 -0
  441. package/dist/video/show-bible-attach.js +186 -0
  442. package/dist/video/show-bible-attach.js.map +1 -0
  443. package/dist/video/show-preflight.d.ts +33 -0
  444. package/dist/video/show-preflight.d.ts.map +1 -0
  445. package/dist/video/show-preflight.js +234 -0
  446. package/dist/video/show-preflight.js.map +1 -0
  447. package/dist/video/status.d.ts.map +1 -1
  448. package/dist/video/status.js +2 -1
  449. package/dist/video/status.js.map +1 -1
  450. package/dist/video/storyboard-grid.d.ts.map +1 -1
  451. package/dist/video/storyboard-grid.js +2 -1
  452. package/dist/video/storyboard-grid.js.map +1 -1
  453. package/dist/video/storyboard-markdown.d.ts.map +1 -1
  454. package/dist/video/storyboard-markdown.js +4 -3
  455. package/dist/video/storyboard-markdown.js.map +1 -1
  456. package/dist/video/template-store.d.ts.map +1 -1
  457. package/dist/video/template-store.js +6 -5
  458. package/dist/video/template-store.js.map +1 -1
  459. package/dist/video/timeline.d.ts.map +1 -1
  460. package/dist/video/timeline.js +2 -1
  461. package/dist/video/timeline.js.map +1 -1
  462. package/dist/video/types.d.ts +8 -0
  463. package/dist/video/types.d.ts.map +1 -1
  464. package/dist/video/verify-env.d.ts.map +1 -1
  465. package/dist/video/verify-env.js +2 -0
  466. package/dist/video/verify-env.js.map +1 -1
  467. package/dist/video/verify-final.d.ts.map +1 -1
  468. package/dist/video/verify-final.js +2 -1
  469. package/dist/video/verify-final.js.map +1 -1
  470. package/dist/video/vfx-register.d.ts +32 -0
  471. package/dist/video/vfx-register.d.ts.map +1 -0
  472. package/dist/video/vfx-register.js +85 -0
  473. package/dist/video/vfx-register.js.map +1 -0
  474. package/dist/video/video-context.d.ts.map +1 -1
  475. package/dist/video/video-context.js +3 -2
  476. package/dist/video/video-context.js.map +1 -1
  477. package/dist/video/workload.d.ts.map +1 -1
  478. package/dist/video/workload.js +2 -1
  479. package/dist/video/workload.js.map +1 -1
  480. package/dist/video/workspace-root.d.ts +21 -0
  481. package/dist/video/workspace-root.d.ts.map +1 -0
  482. package/dist/video/workspace-root.js +34 -0
  483. package/dist/video/workspace-root.js.map +1 -0
  484. package/dist/video/workspace.d.ts +9 -0
  485. package/dist/video/workspace.d.ts.map +1 -1
  486. package/dist/video/workspace.js +3 -2
  487. package/dist/video/workspace.js.map +1 -1
  488. package/docs/ARCHITECTURE.md +2 -2
  489. package/docs/ASSEMBLE.md +30 -4
  490. package/docs/CLI_REFERENCE.md +374 -24
  491. package/docs/Claude Code + Higgsfield MCP = FULL Creative Agency.md +2 -2
  492. package/docs/DIAGRAMS_SOURCE.md +2 -13
  493. package/docs/ENGINE_ESCAPE_AUDIT.md +85 -0
  494. package/docs/MIGRATION.md +2 -2
  495. package/docs/MOTION_OVERLAY.md +5 -0
  496. package/docs/PROJECT_LAYOUT.md +1 -1
  497. package/docs/PROMPT_QUALITY.md +18 -5
  498. package/docs/PROVIDER_PLATFORM.md +4 -1
  499. package/docs/PUBLISHING.md +4 -0
  500. package/docs/SEEDANCE_HARVEST.md +76 -0
  501. package/docs/SKILLS.md +4 -57
  502. package/docs/assets/diagram-architecture.jpg +0 -0
  503. package/docs/assets/diagram-assemble.jpg +0 -0
  504. package/docs/assets/diagram-lifecycle.jpg +0 -0
  505. package/docs/assets/diagram-obsidian-loop.jpg +0 -0
  506. package/docs/assets/diagram-obsidian-vault.jpg +0 -0
  507. package/docs/assets/diagram-routing.jpg +0 -0
  508. package/docs/assets/diagram-skills-ecosystem.jpg +0 -0
  509. package/docs/assets/diagram-story-bible.jpg +0 -0
  510. package/docs/assets/diagram-studio-goals.jpg +0 -0
  511. package/docs/assets/vclaw-review-ui-desktop-after-stage-gate.png +0 -0
  512. package/docs/assets/vclaw-review-ui-mobile-after-stage-gate.png +0 -0
  513. package/docs/preview-portal-audit.md +59 -10
  514. package/package.json +1 -1
  515. package/references/video/seedance-skills/model-mechanics.md +83 -0
  516. package/schemas/video/artifacts/consistency-audit.schema.json +83 -0
  517. package/schemas/video/artifacts/execution-plan.schema.json +1 -1
  518. package/schemas/video/artifacts/execution-report.schema.json +1 -1
  519. package/schemas/video/artifacts/run-contract.schema.json +61 -0
  520. package/skills/README.md +0 -11
  521. package/skills/ai-slop-cleaner/SKILL.md +1 -1
  522. package/skills/bunty/SKILL.md +3 -3
  523. package/skills/catalog.json +0 -55
  524. package/skills/character-library/SKILL.md +1 -1
  525. package/skills/concierge/SKILL.md +1 -1
  526. package/skills/movie-director/SKILL.md +3 -3
  527. package/skills/skills-auditor/SKILL.md +3 -3
  528. package/skills/video-portfolio-ops/SKILL.md +1 -1
  529. package/src/video/allocation-model.ts +105 -0
  530. package/src/video/archive-project.ts +2 -1
  531. package/src/video/artifact-history.ts +2 -1
  532. package/src/video/assemble/.omc/state/sessions/3a741ceb-9c9f-4c48-a46f-a33edb5dcdc1/pre-tool-advisory-throttle.json +14 -0
  533. package/src/video/assemble/assemble.ts +7 -1
  534. package/src/video/assemble/gemini-vision-classify.ts +79 -0
  535. package/src/video/assemble/media-qc.ts +33 -1
  536. package/src/video/assemble/stitch.ts +195 -15
  537. package/src/video/asset-tag-lookup.ts +15 -0
  538. package/src/video/character-auto-create.ts +4 -3
  539. package/src/video/character-consistency.ts +2 -1
  540. package/src/video/characters.ts +11 -0
  541. package/src/video/cli-schema.ts +37 -8
  542. package/src/video/consistency-audit.ts +831 -0
  543. package/src/video/continuation-handoff.ts +103 -0
  544. package/src/video/cost-estimate.ts +2 -1
  545. package/src/video/csv-export.ts +2 -1
  546. package/src/video/dependencies.ts +2 -1
  547. package/src/video/director-preflight.ts +3 -2
  548. package/src/video/doctor-portfolio.ts +2 -1
  549. package/src/video/doctor.ts +2 -1
  550. package/src/video/environment-auto-create.ts +3 -2
  551. package/src/video/execute-autochain.ts +22 -1
  552. package/src/video/execute-pool.ts +138 -0
  553. package/src/video/execute-render-scenes.ts +152 -0
  554. package/src/video/execute.ts +169 -32
  555. package/src/video/execution-cancel.ts +2 -1
  556. package/src/video/execution-plan.ts +14 -4
  557. package/src/video/execution-profile.ts +3 -2
  558. package/src/video/execution-runtime.ts +214 -5
  559. package/src/video/execution-seed.ts +2 -1
  560. package/src/video/execution-status.ts +116 -57
  561. package/src/video/filmmaking-prompts.ts +2 -1
  562. package/src/video/final-media.ts +9 -0
  563. package/src/video/finish.ts +153 -5
  564. package/src/video/flow-captcha.ts +45 -0
  565. package/src/video/flow-character-library.ts +30 -1
  566. package/src/video/gen-image-flow.ts +59 -19
  567. package/src/video/generation-telemetry.ts +3 -2
  568. package/src/video/image-ops.ts +115 -0
  569. package/src/video/legacy-import.ts +2 -1
  570. package/src/video/magnific/media-host.ts +37 -0
  571. package/src/video/magnific/models.ts +118 -0
  572. package/src/video/magnific/registry.ts +18 -0
  573. package/src/video/magnific/types.ts +35 -0
  574. package/src/video/metrics.ts +2 -1
  575. package/src/video/migrate-home.ts +133 -0
  576. package/src/video/monitor/discovery.ts +255 -0
  577. package/src/video/monitor/live-page.ts +31 -0
  578. package/src/video/monitor/overview-html.ts +813 -0
  579. package/src/video/monitor/project-detail.ts +274 -0
  580. package/src/video/monitor/serve.ts +171 -0
  581. package/src/video/monitor/thumbnails.ts +76 -0
  582. package/src/video/monitor/types.ts +36 -0
  583. package/src/video/monitor/workspace.ts +81 -0
  584. package/src/video/motion-overlay/v2v-transport.ts +20 -11
  585. package/src/video/native-dreamina.ts +35 -1
  586. package/src/video/native-flow-r2v.ts +12 -0
  587. package/src/video/native-magnific.ts +431 -0
  588. package/src/video/native-runway.ts +11 -2
  589. package/src/video/native-veo.ts +126 -11
  590. package/src/video/next-actions.ts +2 -1
  591. package/src/video/obsidian-export.ts +2 -1
  592. package/src/video/obsidian-sync.ts +2 -1
  593. package/src/video/output-diagnosis.ts +110 -0
  594. package/src/video/post-production.ts +2 -1
  595. package/src/video/preview-portal/.omc/state/sessions/2fdd28da-2e8b-4462-a451-750b206c53e1/pre-tool-advisory-throttle.json +18 -0
  596. package/src/video/preview-portal/discovery.ts +74 -1
  597. package/src/video/preview-portal/gallery.ts +28 -0
  598. package/src/video/preview-portal/generate.ts +35 -5
  599. package/src/video/preview-portal/index.ts +2 -1
  600. package/src/video/preview-portal/render.ts +353 -6
  601. package/src/video/preview-portal/run-discovery.ts +410 -0
  602. package/src/video/preview-portal/shared-assets.ts +100 -1
  603. package/src/video/preview-portal/types.ts +118 -0
  604. package/src/video/project-index.ts +2 -1
  605. package/src/video/projects.ts +2 -1
  606. package/src/video/prompt-lint.ts +50 -1
  607. package/src/video/prompt-rules.ts +5 -3
  608. package/src/video/provider-adapter-runner.ts +23 -0
  609. package/src/video/provider-platform/registry.ts +45 -0
  610. package/src/video/provider-platform/route-capabilities.ts +15 -0
  611. package/src/video/provider-platform/types.ts +2 -1
  612. package/src/video/provider-status.ts +9 -0
  613. package/src/video/providers/google-flow.ts +14 -4
  614. package/src/video/readiness.ts +13 -1
  615. package/src/video/reference-transfer.ts +132 -0
  616. package/src/video/remix-narrated.ts +2 -1
  617. package/src/video/report-diff.ts +2 -1
  618. package/src/video/report-history.ts +4 -3
  619. package/src/video/report.ts +2 -1
  620. package/src/video/retake-protocol.ts +146 -0
  621. package/src/video/review-ui.ts +4 -2
  622. package/src/video/run-state/normalize.ts +33 -0
  623. package/src/video/run-state/read.ts +68 -0
  624. package/src/video/run-state/types.ts +36 -0
  625. package/src/video/run-status.ts +192 -0
  626. package/src/video/scene-candidate-store.ts +34 -0
  627. package/src/video/seedance-antislop.ts +290 -0
  628. package/src/video/show-bible-attach.ts +233 -0
  629. package/src/video/show-preflight.ts +324 -0
  630. package/src/video/status.ts +2 -1
  631. package/src/video/storyboard-grid.ts +2 -1
  632. package/src/video/storyboard-markdown.ts +4 -3
  633. package/src/video/template-store.ts +6 -5
  634. package/src/video/timeline.ts +2 -1
  635. package/src/video/types.ts +8 -0
  636. package/src/video/verify-env.ts +2 -0
  637. package/src/video/verify-final.ts +2 -1
  638. package/src/video/vfx-register.ts +102 -0
  639. package/src/video/video-context.ts +3 -2
  640. package/src/video/workload.ts +2 -1
  641. package/src/video/workspace-root.ts +34 -0
  642. package/src/video/workspace.ts +12 -2
  643. package/skills/build-fix/SKILL.md +0 -145
  644. package/skills/configure-notifications/SKILL.md +0 -286
  645. package/skills/deep-interview/SKILL.md +0 -358
  646. package/skills/doctor/SKILL.md +0 -200
  647. package/skills/help/SKILL.md +0 -200
  648. package/skills/note/SKILL.md +0 -62
  649. package/skills/pipeline/SKILL.md +0 -86
  650. package/skills/review/SKILL.md +0 -38
  651. package/skills/skill/SKILL.md +0 -835
  652. package/skills/studio-mode/SKILL.md +0 -148
  653. package/skills/worker/SKILL.md +0 -106
package/CLAUDE.md CHANGED
@@ -2,7 +2,15 @@
2
2
 
3
3
  This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
4
 
5
- > **Repository status (2026-05-25):** This is `videoclaw-v3`, the current repo —
5
+ ## Quick orientation (read this first, then `MERGE_PLAN.md`)
6
+
7
+ - **Entrypoint:** `src/cli/vclaw.ts` — a thin ~530-line dispatch shell; all command logic lives in `src/cli/handlers/*.ts` (25 modules).
8
+ - **Domain core:** `src/video/*` — small single-purpose modules (projects, execution, assemble, audio-platform, studio, preview-portal, motion-overlay, provider-platform, …).
9
+ - **Contracts & state:** `schemas/video/*` JSON Schemas are the source of truth for artifact *shapes*; the on-disk `projects/<slug>/` tree is the source of truth for project *state*.
10
+ - **Tests:** `node:test` files in `src/tests/*.test.ts`, run from compiled `dist/tests/` (`npm test`).
11
+ - **Also load:** the sibling `.claude/CLAUDE.md` for the `graphify`, `improvement-run`, and `concierge`/`clawbot` skill triggers.
12
+
13
+ > **Repository status (2026-07-02):** This is `videoclaw-v3`, the current repo —
6
14
  > unified from `videoclaw-v2`, itself the merged successor of the older `videoclaw`
7
15
  > package and the clean-room `vclaw-video-core` rebuild. (The
8
16
  > npm package is `videoclaw`; "videoclaw-v3" is just the repo name.) Foundation
@@ -30,6 +38,88 @@ first message is just a greeting with no task, offer the concierge menu.
30
38
  Engineering and maintenance requests on this codebase itself are NOT concierge
31
39
  territory — handle those normally.
32
40
 
41
+ ## Working discipline — ground in what already exists before you build (READ THIS FIRST)
42
+
43
+ This project keeps getting bitten by the same failure: **improvising a fresh
44
+ (worse) approach instead of reusing the proven artifact that already exists**, and
45
+ silently dropping load-bearing pieces between turns.
46
+
47
+ **The honest root cause is a default to fast *visible* output** — a clip, an HTML,
48
+ a keyframe, a render — **over a provably-correct setup.** A fast wrong render is
49
+ slower than a slow right one: it burns spend, trust, and rework. The rules below
50
+ are forcing functions against that default; the friction IS the point. The
51
+ highest-leverage rules are **0, 1, and 4** — do them even when it feels slower.
52
+
53
+ Before authoring or changing **any** skill, procedure, function, prompt, render
54
+ setup, or review surface — and before creating a new command — work through this:
55
+
56
+ 0. **Read the spec in full, once, up front — and write the contract down.** When
57
+ the user points to an authoritative method file (a doc, `WORKFLOW.md`, a
58
+ compliance sheet, a working harness script, a `--validate`d prompt), read the
59
+ WHOLE thing first and extract its requirements into a written checklist/contract
60
+ (a file or notepad) BEFORE building. Do NOT skim it on demand and discover the
61
+ pieces one correction at a time — that is exactly what makes the operator repeat
62
+ himself. For any multi-step build/production, keep that contract on disk and
63
+ **re-read it each turn**; requirements held only in working memory erode over a
64
+ long session. The on-disk contract, not your memory, is what you build against.
65
+ 1. **Inventory before you build (the #1 rule).** Search first. Grep/read the
66
+ relevant `src/video/*`, `src/cli/handlers/*`, `skills/*`, `docs/*`, the
67
+ project's on-disk `artifacts/*` (e.g. `show-bible.json`, `voice-clones.json`,
68
+ `story-bible`, `flow-characters.json`, `seedance-assets.json`), and any
69
+ `references/` assets, proven harness scripts, or already-`--validate`d prompts.
70
+ If a working artifact exists, **use it** — never regenerate an ad-hoc
71
+ substitute. Most "why did this break again" pain is re-deriving something that
72
+ was already solved and written down.
73
+ 2. **Artifacts/registries are the source of truth, not memory.** Drive work from
74
+ the on-disk artifacts (the `show-bible` registry, voice clones, reference
75
+ sheets, validated prompt files) — not from paths or prompts re-typed from
76
+ memory. If you catch yourself re-typing a file path or re-authoring a prompt
77
+ that already exists, stop and load it from the artifact.
78
+ 3. **Prompting is per-model — never reuse one prompt style across routes.**
79
+ Seedance/Runway/Dreamina lock identity from **references + a rich per-subject
80
+ visual descriptor** (never a generic "the man") + the multi-shot framework, and
81
+ take character-sheet + location + per-speaker voice refs. Flow (`veo-useapi`)
82
+ locks identity on a **registered Flow Character** and tolerates generic
83
+ prompts. Image models (GB, `openai-gpt-image-2`) differ again. Check the
84
+ route's ruleset (and any model-specific prompting skill/doc) before authoring a
85
+ prompt or choosing references.
86
+ 4. **Encode the method so the TOOL enforces it — don't rely on remembering.**
87
+ When a procedure has required inputs/steps, add a fail-fast preflight/readiness
88
+ gate that ERRORS (non-zero, clear blocker) when a required piece is missing, and
89
+ prefer **registry-driven auto-attach** over manual setup. The target shape: an
90
+ operator just prompts; the tool attaches the right inputs and refuses to render
91
+ wrong (see `show-preflight` + show-bible auto-attach).
92
+ 5. **Review-first, one-at-a-time for any spend.** Before any paid or slow
93
+ generation, emit the exact **contract** — the prompt + the references + the JSON
94
+ that will actually be submitted — for review (the review portal IS the
95
+ contract; show the EXACT submit payload, not a paraphrase). Then render ONE
96
+ unit, verify it (extract a frame + whisper the audio / QC), get approval, and
97
+ only then the next. Never batch-spend on an unreviewed setup. **Immediately
98
+ before submitting, dry-run `buildExecutionPayload` and confirm the resolved
99
+ refs/prompt/route match the approved contract** — the actual submission has
100
+ silently diverged before (an `@tag` hijacked the references and dropped the
101
+ approved sheets/location). If it doesn't match the contract, do not submit.
102
+ 6. **New command/skill = conventions below + steps 1 & 4.** Still do the full
103
+ registration (handler + `vclaw.ts` dispatch + `cli-schema.ts` `COMMANDS` entry +
104
+ bump the `cli-schema.test.ts` count + a `cli-*.test.ts` + README/CLI_REFERENCE +
105
+ a schema for any new artifact), but **inventory first** (step 1) and add a
106
+ **preflight gate** (step 4) if it has required inputs.
107
+ 7. **Verify OUTCOMES, not that a command ran — and never report unverified
108
+ progress.** "Launched a driver" / "submitted" is NOT "it's working." After any
109
+ submit or render, confirm the real provider-side state before claiming it: a
110
+ live job exists (`execute-status` → `live-submitted` + a candidate + a
111
+ `.vclaw-jobs/*.json` file), and then the actual output downloaded + QC'd (frame
112
+ + whisper). If you tell the user something is happening, prove it (a job id /
113
+ status / a frame) — do not assert progress you have not checked. Corollary —
114
+ **clear stale outputs before any re-render:** a changed scene prompt plus an old
115
+ `outputs/scene-N.mp4` makes the resumable driver SKIP that scene and you verify
116
+ the wrong/old clip. Delete stale outputs (and re-select winners that the
117
+ restructure orphaned) first; a `scene-selection-missing` block silently refuses
118
+ every produce.
119
+
120
+ When in doubt, the on-disk project and its artifacts win over anything you
121
+ remember.
122
+
33
123
  ## Build, test, and smoke commands
34
124
 
35
125
  ```bash
@@ -77,7 +167,7 @@ npm run graph:full # rebuild the graphify knowledge graph
77
167
 
78
168
  ### Layers (read top-down)
79
169
 
80
- 1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~480 lines: imports, `printHelp`, the `NOUN_VERB_ALIASES` map, `resolveSubcommand`, the `VIDEO_DISPATCH` table, and `main`). The decomposition is COMPLETE (PRs #89–#120): pure arg/slug/spend helpers live in `src/cli/args.ts`, and ALL command handlers live in `src/cli/handlers/` (22 modules — `analysis`, `audio`, `batch`, `candidates`, `character`, `clone`, `create`, `execution`, `library`, `media-ops`, `media-production`, `motion-overlay`, `multi-shot`, `project-ops`, `prompt-craft`, `provider-registration`, `reference-sheets`, `reporting`, `review-portal`, `stages`, `studio`, `templates`), each a verbatim extraction with module-private helpers and only dispatch-facing handlers exported. ⚠️ When moving handler code, watch for position-sensitive path math (`import.meta.url` etc.) — the compiled location changes (see the documented adaptations in `handlers/studio.ts` and `handlers/motion-overlay.ts`). `src/cli/provider-adapter.ts` is the built-in adapter binary for `seedance-direct`.
170
+ 1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~530 lines: imports, `printHelp`, the `NOUN_VERB_ALIASES` map, `resolveSubcommand`, the `VIDEO_DISPATCH` table, and `main`). The decomposition is COMPLETE (PRs #89–#120): pure arg/slug/spend helpers live in `src/cli/args.ts`, and ALL command handlers live in `src/cli/handlers/` (25 modules — `analysis`, `audio`, `batch`, `candidates`, `character`, `clone`, `create`, `execution`, `library`, `media-ops`, `media-production`, `migrate-home`, `monitor`, `motion-overlay`, `multi-shot`, `project-ops`, `prompt-craft`, `provider-registration`, `reference-sheets`, `reporting`, `review-portal`, `show`, `stages`, `studio`, `templates`), each a verbatim extraction with module-private helpers and only dispatch-facing handlers exported. ⚠️ When moving handler code, watch for position-sensitive path math (`import.meta.url` etc.) — the compiled location changes (see the documented adaptations in `handlers/studio.ts` and `handlers/motion-overlay.ts`). `src/cli/provider-adapter.ts` is the built-in adapter binary for the four `..._ADAPTER` routes (see Provider routes below). Besides `video`/`studio`, `main` also dispatches two smaller families: `vclaw mcp serve` (`src/mcp/` — a read-only stdio MCP server exposing `list_projects`, `get_project_status`, `get_artifacts`, `get_event_log`, `list_provider_routes`; writes stay CLI-only by design) and `vclaw veo <verb>` (`src/video/veo-subprocess.ts` — spawn-forwarding to the Bun-based `vclaw-cli/flow.ts`, required for Puppeteer/Google Flow verbs like `status`, `resume`, `cancel`, `useapi:*`).
81
171
  2. `src/video/` — the core domain. Each file is small and single-purpose, e.g. `artifacts.ts`, `artifact-store.ts`, `checkpoints.ts`, `workspace.ts`, `projects.ts`, `status.ts`, `doctor.ts`, `doctor-portfolio.ts`, `readiness.ts`, `execution-plan.ts`, `execute.ts`, `execution-runtime.ts`, `execution-status.ts`, `execution-cancel.ts`, `director-preflight.ts`, `report.ts`, `csv-export.ts`, `obsidian-export.ts`, `project-index.ts`, `metrics.ts`, `next-actions.ts`, `template-store.ts`, `provider-status.ts`, `native-seedance.ts`, `native-veo.ts`, `multi-shot-prompt.ts`, `storyboard-grid.ts`, `cinematography.ts` (detail-leveled quantified camera/lighting/grade/audio emitters — `--detail terse|standard|rich`), `prompt-rules.ts` (standing prompt rules: visual-descriptor-not-names, brand-neutral, no-face-morph, diegetic audio), `seedance-asset-library.ts` (Asset Library character/product consistency), `story-bible.ts` (deterministic continuity bible — cast/settings/props/scene-timeline from brief + storyboard + characters), `brand-definition.ts` (locked brand system — palette/voice/typography/theme map; `filmmaking-prompts` appends a prose BRAND line when present), `assemble/media-qc.ts` (post-stitch ffprobe QC of clips + master), `assemble/narration-fit.ts` (TTS-vs-video timing planner: atempo / loop-video fit). `src/video/studio/` is the planning front door and `src/video/preview-portal/` is the review/delivery portal (both described below).
82
172
  3. `src/video/provider-platform/` — route descriptors (Veo / Seedance / Runway direct and useapi flavors).
83
173
  4. `src/video/pipeline-manifests/` — built-in stage definitions for the two production modes.
@@ -87,7 +177,7 @@ npm run graph:full # rebuild the graphify knowledge graph
87
177
 
88
178
  ### Project lifecycle (per project, on disk)
89
179
 
90
- After `vclaw video init <slug>`, a project lives at `projects/<slug>/` under the workspace root and is the unit of everything else:
180
+ After `vclaw video init <slug>`, a project lives at `projects/<slug>/` under the workspace root and is the unit of everything else. **The workspace root is the ONE canonical home `~/videoclaw`** (`CANONICAL_WORKSPACE_ROOT` in `src/video/workspace-root.ts`), resolved as `--root` flag → `VCLAW_WORKSPACE` → `VIDEOCLAW_WORKSPACE` → `~/videoclaw` — this replaced the old per-invocation `process.cwd()` default that scattered projects wherever `vclaw` happened to run. `vclaw video migrate-home` consolidates scattered projects into the home (dry-run plan by default; `--confirm` moves each project and leaves a symlink at the old path so old absolute paths still resolve).
91
181
 
92
182
  ```
93
183
  projects/<slug>/
@@ -103,7 +193,9 @@ projects/<slug>/
103
193
 
104
194
  Canonical stage order: **init → brief → storyboard → assets → review → publish**. `readiness`, `plan`/`execution-plan`, `produce`/`execute`, `execute-status`, `execute-cancel` are the runtime-execution layer that sits between assets and review.
105
195
 
106
- `produce`/`execute --auto-chain` (`src/video/execute-autochain.ts`, `runAutoChain`) is the whole-storyboard driver over the existing dormant chain-from-prev engine: it renders scenes sequentially, auto-selects each produced candidate (from `report.candidatesByScene`), sets `chainFromPrev` for every scene after the first, and bundles `continuityFeedback` — so each scene seeds from the previous scene's output video with zero manual `reroll-scene`. The engine itself (seed resolution, `referenceRole='keyframe'`, reference budget) is unchanged; the one supporting change is that a seedance scene now keeps BOTH its character `Asset://` identity refs AND the keyframe video, via the pure `resolveSceneReferencePaths` in `execution-runtime.ts` (formerly an either/or that dropped the chain seed when characters were locked). It is resumable (skips already-selected scenes) and fail-fast (`stoppedAt` on the first barren scene). Default-off → byte-identical to today. Because `executeProject` on async routes (e.g. `seedance-direct`) is SUBMIT-ONLY, the default per-scene runner calls `waitForSceneVideo` (loops `refreshExecutionStatus` until the scene's candidate gains a video output) BEFORE selecting + chaining — otherwise the next scene's chain seed resolves to a still-rendering, video-less candidate and `chain-from-prev-source-missing` fires. Injected test runners simulate completed renders and skip the poll.
196
+ `produce`/`execute --auto-chain` (`src/video/execute-autochain.ts`, `runAutoChain`) is the whole-storyboard driver over the existing dormant chain-from-prev engine: it renders scenes sequentially, auto-selects each produced candidate (from `report.candidatesByScene`), sets `chainFromPrev` for every scene after the first, and bundles `continuityFeedback` — so each scene seeds from the previous scene's output video with zero manual `reroll-scene`. The engine itself (seed resolution, `referenceRole='keyframe'`, reference budget) is unchanged; the one supporting change is that a seedance scene now keeps BOTH its character `Asset://` identity refs AND the keyframe video, via the pure `resolveSceneReferencePaths` in `execution-runtime.ts` (formerly an either/or that dropped the chain seed when characters were locked). It is resumable (skips already-selected scenes) and fail-fast (`stoppedAt` on the first barren scene). Default-off → byte-identical to today. Because `executeProject` on async routes (e.g. `seedance-direct`) is SUBMIT-ONLY, the default per-scene runner calls `waitForSceneVideo` (loops `refreshExecutionStatus` until the scene's candidate gains a video output) BEFORE selecting + chaining — otherwise the next scene's chain seed resolves to a still-rendering, video-less candidate and `chain-from-prev-source-missing` fires. Injected test runners simulate completed renders and skip the poll. Auto-chain also emits **continuation advisories** (`continuation-handoff.ts`, `analyzeChainContinuity`) — chain-depth drift warnings, present only when non-empty.
197
+
198
+ Auto-chain is one of **three resumable scene drivers**, all the same shape (a PURE scheduler + an injectable per-scene runner, offline-testable): `runAutoChain` (SEQUENTIAL + chained, above), `runScenePool` (`execute-pool.ts`, `vclaw video pool`) which keeps up to N INDEPENDENT scene renders in-flight and auto-refills as each completes (no chaining — productizes the hand-written pool-driver loops), and `runRenderScenes` (`execute-render-scenes.ts`, `vclaw video render-scenes`) which renders sequentially but walks a per-scene **fallback route ladder** — try route A, escalate to B then C on provider rejection, first success wins. Real runners + CLI handlers live in `src/cli/handlers/execution.ts`.
107
199
 
108
200
  ### Two production modes
109
201
 
@@ -127,14 +219,20 @@ The ops layer tracks a normalized `storyboardReviewState` of `missing | current
127
219
 
128
220
  The portal generates the standardized HTML surfaces that used to be hand-written per project: `edit.html`/`review.html` (editor/operator human-in-the-loop, with approve/regenerate controls and `VIDEOCLAW_REVIEW_DECISIONS` copy output), `client-review.html` (lightweight client approve/decline/comment, `VIDEOCLAW_CLIENT_FEEDBACK` copy output), and `preview.html` (polished final showcase: every production image is lightbox-enabled for click-to-fullscreen, a soundtrack `<audio controls preload="none">` player renders when a soundtrack is discovered, plus downloads). The module is split into `discovery.ts` (find project assets), `generate.ts` + `templates.ts` + `shared-assets.ts` (render the surfaces), `render.ts`/`publish.ts` (emit/ship), and `audit.ts` (drift checks); `src/video/review-ui.ts` (`vclaw video review-ui`) serves the editor surface interactively. The decisions/feedback flow back through env-var copy blocks rather than a server round-trip, keeping the on-disk project the source of truth. See `docs/preview-portal-audit.md`.
129
221
 
222
+ ### Mission Control (`vclaw video monitor`)
223
+
224
+ `src/video/monitor/` serves a read-only localhost cockpit (default port 8765): `monitor/discovery.ts` discovers every project across workspace roots (`--root` adds extra roots to scan) and the server renders a live overview from the on-disk artifacts. Never calls a provider, never spends.
225
+
130
226
  ### Storyboard grid & multi-shot prompt handoff
131
227
 
132
- `src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → Last Frame suppression. See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
228
+ `src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback) and `--vfx <id>` (physical-VFX effects register, `src/video/vfx-register.ts`). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → Last Frame suppression. See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
133
229
 
134
230
  `src/video/storyboard-grid.ts` (`vclaw video storyboard-grid`, `renderStoryboardGrid`) renders a **deterministic shot-spec sheet** — a 3×3 SVG→PNG of CAM/MOVE/MOOD annotation panels — **not** a cinematic storyboard with character imagery. It is the *layout/intent contract*, not the finished reference image. The intended two-step is: (1) `storyboard-grid` to lock panel order + camera language, then (2) generate the real cinematic 3×3 grid via an image model (always `openai-gpt-image-2` for multi-panel composites) and re-attach it with `vclaw video filmmaking-prompts --storyboard-grid <path>`, which feeds it into the Seedance/Veo/Runway prompt packets.
135
231
 
136
232
  Two production-learned gotchas baked into the generated packets (see the framework Anti-patterns): (a) grids passed as provider `reference_images` get **reproduced as a moving 9-panel split-screen** unless the prompt explicitly forces single-full-frame output — the packets now embed that guard; (b) real-person content filters (xskill/ARK Seedance) reject photoreal faces as `reference_images`, so use `filmmaking-prompts --no-faces` to render the grid prompt in a silhouette / no-face register.
137
233
 
234
+ `vclaw video prompt-lint` (`src/video/prompt-lint.ts`, pure/deterministic — the handler does the I/O) lints a filmmaking-prompts artifact BEFORE spend: Seedance 10-block order, the 280–600-words-per-packet window, brand/proper-name scrub leaks, the single-full-frame grid guard whenever a storyboard-grid reference is attached, SUBJECT LOCK / CAPTURE REALISM / CAMERA CAPTURE presence on video packets, grid-panel annotation style (advisory), the character-identity word budget (30–60 words target, >100 hard failure), and two newer advisories: the reference-transfer contract and allocation-model over-allocation. `--checklist` prints the route checklist. `vclaw video cinema-profile` persists per-project cinematography defaults onto the project manifest (`updateProjectManifestCinemaProfile` in `workspace.ts`) so the prompt/packet layer picks them up without re-typing flags. `vclaw video diagnose` (`src/video/output-diagnosis.ts`) is the companion for AFTER a render: an output-quality troubleshoot tree — `--symptom <text>` matches an observed defect to causes + fixes, `--retry-pattern` prints the conservative retry pattern.
235
+
138
236
  ### Provider routes and adapters
139
237
 
140
238
  Live execution calls route-specific adapters. A custom adapter is set via one of:
@@ -154,6 +252,12 @@ For `seedance-direct`, `veo-useapi`, `runway-useapi`, and `dreamina-useapi`, `vc
154
252
 
155
253
  **Seedance character consistency = the Asset Library, not raw URLs.** `ark/seedance-2.0` (the official Volcengine Ark Seedance 2.0, Standard = 1080p) locks character identity via managed **Asset Library avatars** (`Asset://` URIs), NOT raw photoreal image URLs (those trip the "real person" content filter and don't lock identity). `src/video/seedance-asset-library.ts` (`vclaw video seedance-register-assets`) registers character images as Assets, waits for international-profile sync, and writes `artifacts/seedance-assets.json` (canonical schema `schemas/video/artifacts/seedance-assets.schema.json`; shape `{ schemaVersion, projectSlug, groupName, generatedAt, assets:[{name, assetId, assetUri, intlAssetUri}] }`); `readSeedanceAssets(workspaceRoot, slug)` reads it back into a name→`Asset://`-URI map (graceful when absent). On the `seedance-direct` route only, `buildExecutionPayload` (`execution-runtime.ts`) auto-resolves each scene's `referencePaths` from that artifact by matching `scene.characters` names → their `Asset://` URIs (a project without the artifact behaves as before); `native-seedance.ts`'s `seedanceReferenceParams` then routes `Asset://` references into `reference_images`. References are capped at ≤9 image / ≤3 video / ≤3 audio per submission via `assertReferenceBudget`, preflighted across the whole payload in `submitSeedanceDirectNative` before any submit (fail-fast, no partial submission). Describe characters by visual descriptor (not proper names) in prompts — names don't survive across generations. (Validated 2026-05-29 against the same Ark endpoint the user's production project uses.) `@Name` tags in scene prompts (`resolveAssetTags` in `prompt-rules.ts`, lookup via `asset-tag-lookup.ts` `buildAssetTagLookup`) resolve at `buildExecutionPayload` time to the character's visual descriptor (text) + its saved reference (`Asset://`/image), merged through `resolveSceneReferencePaths`; unresolved tags strip the `@` and warn (never fatal), `@imageN` positional bindings are reserved, and it runs before `stripProperNames`. `@location` tags resolve via locked environment plates: `vclaw video environment-auto-create` (`src/video/environment-auto-create.ts`, mirrors `character-auto-create`) generates seamless no-people location plates and writes `artifacts/environment-assets.json` (own schema, like seedance-assets); `readEnvironmentAssets` (`environment-assets.ts`) feeds `buildAssetTagLookup`'s `environmentsByName` so `@tokyo-alley` resolves to the plate descriptor + ref (absent → graceful no-op).
156
254
 
255
+ **Flow identity is registered, not referenced.** The Flow-side counterpart of `seedance-register-assets`: `vclaw video flow-register-characters` / `flow-register-voices` (`src/video/flow-character-library.ts`, handlers in `provider-registration.ts`) register reusable Google Flow Characters/Voices via useapi and write `artifacts/flow-characters.json` / `flow-voices.json` (needs `USEAPI_API_TOKEN` + `USEAPI_ACCOUNT_EMAIL`). `vclaw video flow-r2v` (`src/video/native-flow-r2v.ts`) then submits reference-to-video against those registrations, running `applyR2vPromptHygiene` over the prompt first. This is what working-discipline rule 3 means by "locks identity on a registered Flow Character".
256
+
257
+ ### Cartoon-show layer (show-bible → show-preflight → voice clones)
258
+
259
+ The repeatable cartoon-SHOW production system (from the Jack-Vs-AI workflow). `vclaw video show-bible` (`src/cli/handlers/show.ts`) is the show's asset-library index: it ties the project's characters + locations (environment plates) + voice clones into one reusable world and tracks the episode list — plan/derive by default, deterministic, no provider calls. `vclaw video show-preflight` (`src/video/show-preflight.ts`, `buildShowPreflight`) is the fail-fast, **route-aware** readiness gate that working-discipline rule 4 points at: given the show-bible + storyboard, it verifies every cast/speaking subject in every scene has what the CHOSEN route actually needs — Seedance-family routes (`seedance-direct`/`runway-useapi`/`dreamina-useapi`) require a resolvable character sheet per cast member (on `seedance-direct` it must additionally be a registered Asset Library avatar — a raw portrait trips the real-person filter), a location plate per scene, and a bound, resolvable voice clip per speaking character, with subjects described by full visual descriptor (never a bare generic noun); Flow (`veo-useapi`) requires a registered Flow Character per cast member (registration is out-of-band via `flow-characters.json`, so the gate enforces — it never fabricates). `vclaw video voice-clone` (`src/video/voice-clone.ts`) implements the production-learned voice lock: a raw MP3/WAV voice reference DRIFTS to a generic accent, but the same audio as the track of a **black-frame video** locks it — the command builds that black-frame+audio MP4 (shared `runFfmpeg`) and persists reusable voice-clone assets in `artifacts/voice-clones.json` (mirroring the seedance-assets/environment-assets pattern), bindable to characters.
260
+
157
261
  ### Overnight batch queue
158
262
 
159
263
  `src/video/batch-queue.ts` + the `vclaw video batch-submit` / `batch-monitor` / `batch-status` commands queue many independent video jobs to run unattended overnight. The default route is the **free** `runway-useapi` explore mode (low-res, slow — backfill drafts); target `dreamina-useapi` (or `seedance-direct`) for paid hi-res. An operator-authored manifest (`schemas/video/artifacts/batch-queue-manifest.schema.json` — an input-only artifact, allowlisted in `check-artifact-schema-coverage.mjs`) compiles via the pure `buildBatchPayload()` into a single `VideoExecutionPayload` with N tasks, so it reuses the existing native route transports (`native-runway`/`native-dreamina`/`native-seedance`) and their job-state — no duplicate submit/poll logic. `batch-submit` persists `<dir>/batch-queue.json`; `batch-monitor` polls once (the transport downloads to `<dir>/scene-<i>.mp4`), copies each completed scene to `<dir>/clips/<jobId>.mp4`, and writes `<dir>/batch-status.json`. It is **resumable/idempotent**: re-running only advances pending→done/failed and never re-downloads completed clips, so `batch-monitor --out <dir> --once` is safe to schedule via launchd (one pass per tick). Opt-in wedge handling: `--stall-minutes <n>` (0=off) flags scenes the provider has left `submitted` past the stall window as **wedged** (`detectWedgedScenes`/`applyWedgeHandling` in `batch-queue.ts`), and `--fail-wedged` marks them `failed` so the queue reaches terminal and the monitor exits instead of polling a stuck job to the deadline. The monitor also backs off automatically when the explore queue is throttled (`isExploreThrottled`/`nextBackoffMs`), and the opt-in `--auto-resubmit` (with `--stall-minutes <n>`, bounded by `--max-resubmits <n>`, default 2) re-submits wedged scenes as fresh single-scene jobs (`planResubmits`/`runResubmitPass`) — **only on the free `runway-useapi` route** (refused on paid routes up front, and the resubmit path self-guards, so it never spends credits). See `docs/CLI_REFERENCE.md` ("Overnight batch video queue").
@@ -170,6 +274,10 @@ For `seedance-direct`, `veo-useapi`, `runway-useapi`, and `dreamina-useapi`, `vc
170
274
 
171
275
  `narrate`, `dialogue`, `sfx`, and `soundtrack` are backend-pluggable audio commands over a backend registry (`registry.ts`): TTS via `gemini-tts`/`elevenlabs-tts`, SFX via ElevenLabs, music via `lyria` (Vertex), `lyria3` (Gemini API, key-based), `flowmusic` (Lyria 3 Pro vocals via useapi.net), and Suno. All spend-gated: without `--confirm-spend` they exit 3 with `spend_confirmation_required` (`--dry-run` to plan). `assemble` consumes their outputs via the mix-plan (dialogue + SFX mixed at stitch; `assemble/narration-fit.ts` handles TTS-vs-video timing).
172
276
 
277
+ ### Media production & local post-production
278
+
279
+ Two handler families cover the finishing lane. `handlers/media-production.ts`: `assemble` (FFmpeg stitch, incl. `--from-clips`), `gen-image` (diegetic prop/screen/overlay stills; Flow image models via `gen-image-flow.ts`), `overlay` (graphic/alert/lower-third motion graphics with a drawtext preflight), `music-video` (vocal-synced beat-exact assembler, plan/dry by default), `title-card` (Pillow+RAQM title overlays), `stitch-ad`, `animation-styles` (shared `animation-styles.json` registry), `finish` (`src/video/finish.ts` — upscale a rendered cut to an HD/QHD master via hosted Topaz (spend-gated) or local Real-ESRGAN/Topaz CLI; the anti-plastic recipe is baked in: photoreal model, denoise/sharpen DISABLED, film grain kept, and Topaz `grain` clamps to 0.1 because the published schema overstates the range), and `lipsync` (OmniHuman, spend-gated). `assemble`'s stitch layer also supports opt-in **reading-holds** (`assemble/stitch.ts`, `readingHold`) — readable pre-roll holds on dense motion-comic segments. `handlers/media-ops.ts` is local-FFmpeg-only post-production on a finished cut — `make-vertical`/`make-square`/`make-loop`, `thumbnail`, `burn-subtitles`, `verify-final`, and `qc` (recursively scans `projects/<slug>/final/` + `outputs/` for clips and runs the assemble media-QC probe: missing-audio, nonstandard codec, duration drift; graceful `status: 'skipped'` when no clips) — real file I/O but NO provider calls and NO spend. Two adjacent quality/finishing tools: `vclaw video image-ops` (`src/video/image-ops.ts` + `native-magnific.ts`) is still-image post-processing, currently the Magnific precision-v2 image upscaler (pure planning core + injectable runner; `--dry-run` plans without spending; the IMAGE endpoint is live-verified, distinct from the flaky video upscaler), and `vclaw video consistency-audit` (`src/video/consistency-audit.ts`) is an automated character-consistency VISION audit across rendered scenes/keyframes — the engine-side forcing function that catches wardrobe/face drift on recurring characters BEFORE a render is presented as done.
280
+
173
281
  ### Gemini key pool
174
282
 
175
283
  `src/video/gemini-key-pool.ts` provides round-robin selection with per-key cooldown across `GEMINI_API_KEYS`, `GOOGLE_API_KEYS`, `GOOGLE_API_KEY`. `analyze-template --auto` and `analyze --auto` use it via `src/video/gemini-analyze.ts`. `VCLAW_GEMINI_API_ENDPOINT` overrides the endpoint.
package/README.md CHANGED
@@ -159,6 +159,10 @@ node dist/cli/vclaw.js video status --project demo
159
159
 
160
160
  Add `--auto-chain` to `produce`/`execute` to render the whole storyboard sequentially, each scene seeded from the previous scene's output video (continuity chain, unattended).
161
161
 
162
+ `vclaw video pool --project <slug> [--max-concurrent <N>] [--scenes <csv>]` renders a project's pending scenes as independent units **in parallel** (no chaining, unlike `--auto-chain`), resumable (scenes with a selected candidate are skipped) and spend-gated (`--dry-run` to plan, `--confirm-spend` to render). `--max-concurrent` caps the number of scenes in flight (default 2) and the pool auto-refills a slot as each scene completes. Concurrent renders are lost-update-safe: each scene's `scene-candidates.json`/`scene-selection.json` read-modify-write runs under a shared artifact lock (re-read current → apply this scene's delta → write), so two scenes never clobber each other (no double-spend), while their slow provider submit/poll overlaps. The concurrency scheduler is built + adversarially tested.
163
+
164
+ `vclaw video render-scenes --project <slug> [--method <route>] [--fallback-chain] [--continue-from <i>] [--scenes <csv>]` is the **fallback-ladder** driver: it renders pending scenes **sequentially** and, per scene, walks a **fallback route ladder** — try the primary route; if the provider rejects it, escalate to the next route, and so on (the first route that succeeds wins). This productizes the hand-written `voice-render.mjs` / `chain.mjs` loops (render one scene, on rejection escalate to a fallback method, resumable across crashes). `--method` picks the primary route; `--fallback-chain` appends the project's `routePreference` / mode defaults as the fallback rungs (without it the ladder is just the primary — a plain sequential render). Resumable via `--continue-from <i>` (skips scenes below `i`) and already-selected scenes; spend-gated (`--dry-run` to plan, `--confirm-spend` to render). Contrast: `--auto-chain` = sequential + chained on one route; `pool` = parallel + independent on one route; `render-scenes` = sequential + per-scene route fallback.
165
+
162
166
  **Or just run the packaged pre-flight that does build + tests + smokes + guardrails for you:**
163
167
 
164
168
  ```bash
@@ -259,7 +263,7 @@ flowchart TB
259
263
 
260
264
  - **CLI layer** — argparse + dispatch only; no business logic.
261
265
  - **Domain layer** (`src/video/*`) — small, single-purpose modules. Each file owns one concept (artifacts, checkpoints, readiness, execution-plan, execution-runtime, doctor, metrics, next-actions, project-index, obsidian-export, etc.).
262
- - **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi`.
266
+ - **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi`, `magnific-rest`.
263
267
  - **Adapter layer** — three resolution strategies (custom binary → built-in adapter with command shim → native in-process transport). Explicit fall-through, never silent.
264
268
  - **Schemas** — JSON Schema contracts under `schemas/video/` are the source of truth for every artifact shape.
265
269
 
@@ -373,6 +377,9 @@ flowchart TD
373
377
  | `VCLAW_RUNWAY_USEAPI_ADAPTER` | runway-useapi | custom adapter binary override |
374
378
  | `VCLAW_SEEDANCE_DIRECT_SUBMIT_CMD` · `_POLL_CMD` · `_CANCEL_CMD` | seedance-direct | command shim through built-in adapter |
375
379
  | `SUTUI_API_KEY` | seedance-direct (native) | XSkill API credentials for in-process transport |
380
+ | `VCLAW_MAGNIFIC_REST_ADAPTER` · `_SUBMIT_CMD` · `_POLL_CMD` · `_CANCEL_CMD` | magnific-rest | custom adapter override / command shim |
381
+ | `MAGNIFIC_API_KEY` | magnific-rest (native) + `finish --backend magnific-precision` | Magnific/Freepik REST key (`x-magnific-api-key`) for video generation + upscale |
382
+ | `VCLAW_MAGNIFIC_MODEL` · `VCLAW_MAGNIFIC_API_URL` | magnific-rest | proxied model (default = cheapest catalog model fitting the op; premium incl. Seedance Pro 1080p opt-in) · API base override |
376
383
  | `VIDEOCLAW_APPROVE_STORYBOARD` | director mode | `=1` to approve storyboard and allow provider submission |
377
384
  | `DIRECTOR_AUTO_FIX_CONTENT` | director mode | `=1` to rewrite provider-risk phrases in storyboard |
378
385
  | `SKIP_DIRECTOR_PREFLIGHT` | director mode | `=1` to bypass preflight (use sparingly) |
@@ -421,20 +428,39 @@ storyboard still candidates exist. It locks the best available stills, promotes
421
428
  artifact-backed upscaled handoff assets, fills the reference and assembly gates,
422
429
  and writes the same review artifacts as the browser station.
423
430
 
431
+ **Live run dashboard** (`vclaw video portal --surface run` → `run.html`) is the
432
+ operations view of a render: one card per generation (storyboard scene) with a
433
+ STATUS badge (`done`/`rendering`/`pending`/`failed`), the provider job id + error,
434
+ the input keyframe, a playable in-progress clip (`outputs/scene-N.mp4`), the exact
435
+ submit prompt + contract, a spend estimate, and an event log — auto-refreshing so
436
+ an open tab stays current. It paints a RED **diff-vs-contract alarm** when the
437
+ payload that was actually submitted has diverged from the current contract (the
438
+ class of bug where an `@tag` silently hijacks the references), backed by a frozen
439
+ `artifacts/run-contract.json` snapshot that `produce`/`execute` persists at submit
440
+ time. `run.html` is part of the default `vclaw video portal` surface set and is
441
+ regenerated automatically on every `produce`/`execute` and `execute-status` poll
442
+ (`VCLAW_NO_RUN_SURFACE=1` opts out).
443
+
424
444
  ### Templates · cloning · storyboard templates
425
445
  `analyze` · `analyze-template` · `template-create` · `template-save` · `template-list` · `template-show` · `template-validate` · `clone-plan` · `clone-init` · `clone-ad` · `clone-execute` · `storyboard-from-clone` · `storyboard-template-list` · `storyboard-template-show`
426
446
 
427
447
  ### Character subsystem
428
- `character-add` · `character-list` · `character-show` · `character-consistency` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `voice-clone` · `show-bible`
448
+ `character-add` · `character-list` · `character-show` · `character-consistency` · `consistency-audit` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `voice-clone` · `show-bible` · `show-preflight`
449
+
450
+ `consistency-audit` is the **automated character identity/costume vision audit**: for each rendered scene it extracts a representative mid-frame and asks an (injectable, Gemini-backed) vision client whether each registered scene character still matches its locked reference face/hair AND costume/colours, plus a deterministic dark-border check and an extra-figure flag — catching wardrobe/identity drift (a dhoti rendering crimson in one scene and tan in another) BEFORE a render is presented as done. It writes `consistency-audit.json` and also runs advisory/non-fatal at the end of a real `produce`/`execute` run when a Gemini key is configured.
429
451
 
430
452
  ### Portfolio · ops · reporting
431
453
  `list` · `index` · `metrics` · `workload` · `next-actions` · `dependencies` · `status` · `doctor-project` · `doctor-portfolio` · `report` · `report-snapshot` · `report-history` · `report-diff` · `trends` · `export-csv` · `artifact-history` · `verify-env` · `cost-estimate`
432
454
 
455
+ ### Mission Control
456
+ - `vclaw video monitor` — Mission Control: a live localhost cockpit across every project and provider.
457
+ - `vclaw video migrate-home [--confirm] [--root <home>]` — consolidate scattered projects (`~/.videoclaw-*` roots) into the one canonical workspace home (`~/videoclaw`) via `mv` + a symlink left at the old path. Dry-run by default; `--confirm` performs the moves. Collision-safe and idempotent.
458
+
433
459
  ### Metadata
434
460
  `set-meta` · `set-execution-profile` · `import-legacy`
435
461
 
436
462
  ### Post-production
437
- `remix-narrated` · `verify-final` · `make-vertical` · `make-square` · `make-loop` · `thumbnail` · `archive-project` · `motion-overlay` · subtitle burn-in
463
+ `remix-narrated` · `verify-final` · `qc` · `make-vertical` · `make-square` · `make-loop` · `thumbnail` · `archive-project` · `motion-overlay` · subtitle burn-in
438
464
 
439
465
  ### Obsidian
440
466
  `export-obsidian` · `sync-obsidian` · `scaffold-obsidian-vault`
@@ -460,6 +486,7 @@ Two recent additions are worth calling out because they fix the two things that
460
486
  - **Narration / TTS** (`vclaw video narrate`) — synthesize a narration clip from a script via a **TTS backend** (`gemini-tts`, the Gemini API `gemini-2.5-flash-preview-tts` model — API-key product, resolves a key from `GEMINI_API_KEYS` / `GOOGLE_API_KEYS` / `GOOGLE_API_KEY`) to `artifacts/audio/narration.wav` + a typed `narration.json`. `--video-duration-ms` embeds a narration-fit timing plan; `--dry-run` estimates duration with no keys. Full guide: [`docs/ASSEMBLE.md`](https://videoclaw-docs.vercel.app/reference/ASSEMBLE).
461
487
  - **Cartoon-show voice clone** (`vclaw video voice-clone`) — build the **"blank video with audio" voice reference** (the production-learned voice-cloning trick) so a target voice — including **your own** — locks into a Seedance/Veo generation. A raw MP3/WAV reference drifts to a generic accent; a **black-frame video carrying the same audio** locks the voice. Renders that clip from `--audio` (local ffmpeg, no spend) and persists it in `voice-clones.json`; `--character` binds it so the character's scene `@Name` tags auto-route the clip into Seedance `reference_videos`. Plan-only by default; `--execute` renders + persists. `--slice-seconds` splits the recording per line for drift control. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
462
488
  - **Cartoon-show bible** (`vclaw video show-bible`) — the repeatable cartoon-SHOW **asset-library index** (`show-bible.json`): tie the project's characters + locations + voice clones into one reusable world and track the episode list, so a solo creator can make many consistent episodes. Derives the bible from existing artifacts (auto-binding each character's voice clone), or `--from-json` to persist an authored one; `--add-episode "id|title|logline"` merges episodes by id; `--show` prints without writing. Deterministic, no spend — distinct from `story-bible` (continuity) and `director-blueprint` (visual direction). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
489
+ - **Cartoon-show method, ENFORCED** — once a project has a `show-bible`, `produce`/`execute` **auto-attach the route-correct references per scene** (Seedance routes: each scene cast member's character sheet + the matched location plate as image refs + each speaking character's bound voice clip as a video ref; Flow/`veo-useapi`: scene cast → registered Flow Characters) and **refuse to render if a piece is missing**. The gate is `vclaw video show-preflight --project <slug>` — a read-only fail-fast check that exits `3` with a JSON blocker report when a cast sheet, Asset-Library registration, location plate, bound voice clip, Flow Character, or specific descriptor (never "the man") is missing for the resolved route; `produce`/`execute` run the same gate (skip with `SKIP_SHOW_PREFLIGHT=1`). Projects with no `show-bible` are unaffected (opt-in).
463
490
  - **Diegetic stills** (`vclaw video gen-image`) — generate an in-world **prop**, on-screen **screen** (UI/dashboard), or **overlay** graphic (e.g. a "SYSTEM COMPROMISED" alert) into `assets/props/`. Three backends via `--backend`: **gobananas** (default, `GO_BANANAS_API_KEY`, no OpenAI key), **openai** (gpt-image), and **flow** — Google Flow via useapi.net (`USEAPI_API_TOKEN` + `USEAPI_ACCOUNT_EMAIL`): `imagen-4` / `nano-banana` / `nano-banana-pro` auto-selected by reference count, repeated `--ref` (`reference_1..10`, local paths upload first) + `--character` (`character_1..7`, names resolve via `flow-characters.json`) slots, `--count`/`--seed`, and inline `@reference_N`/`@character_N` prompt markers validated **before any upload or spend**. Per-kind render directives (screens/overlays keep text, props suppress it); `--dry-run` prints the composed request with no spend. Composite it onto footage with the assemble overlay builders. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
464
491
  - **Motion-graphics overlays** (`vclaw video overlay`) — composite a graphic onto a clip (time-gated, faded, positioned — pairs with `gen-image` to drop a generated screen/alert onto footage, **font-free + real-render validated**), or burn a pulsing `--alert` / boxed `--lower-third` caption (FFmpeg `drawtext`, needs a libfreetype build). `--dry-run` prints the planned ffmpeg command. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
465
492
  - **Motion-overlay reels** (`vclaw video motion-overlay`) — turn an existing **talking-head video** into a reel with **motion-graphics overlays synced to the speech** via Google Flow's **Omni Flash V2V** (kinetic typography / icons / metaphors painted on the footage, original voice preserved). Plan/dry by default — ingest → Gemini STT (or `--transcript`) → sentence-boundary slice into ≤10s takes → per-take overlay-prompt composition → work folder + manifest + `--preview` review surface, **no spend**. `--execute --confirm-spend` renders each take (V2V → audio-restore → clip-stitch). Four layouts (`split` / `overlay` / `motion-only` / `avatar-host`); the `avatar-host` layout fills the frame with an **identity-locked character host** (go-bananas `generate_with_character` → Veo I2V) and needs `--gb-character <Name:ID>`. Full guide: [`docs/MOTION_OVERLAY.md`](https://videoclaw-docs.vercel.app/reference/MOTION_OVERLAY).
@@ -468,7 +495,8 @@ Two recent additions are worth calling out because they fix the two things that
468
495
 
469
496
  - **Music-video titles** (`vclaw video title-card`) — burn the **titles you see in music videos** (a faded **lower-third** + a centred **end card** that holds to EOF) onto a finished cut. Text is rasterized via **Pillow + RAQM**, so it works on **any ffmpeg build** (no libfreetype) and **any script** — including **Devanagari/Arabic** (vowel marks shape + stack correctly). Each card is a looped PNG input so delayed alpha fades animate. Fully local, no spend; `--dry-run` plans, omit to render. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
470
497
 
471
- - **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill aggregator, or a local Topaz CLI). The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY`. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
498
+ - **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill aggregator, or a local Topaz CLI) or **Magnific Video Upscaler Precision** (`--backend magnific-precision`, direct Magnific REST, `--target-resolution 1k|2k|4k`). Magnific accepts MP4/MOV/AVI/WebM/MKV and ffprobe-preflights every input against its limits (≤15 s / ≤450 frames / ≤150 MB / ≤4K), failing fast unless `--normalize` re-encodes to fit. The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY` (Topaz) or `MAGNIFIC_API_KEY` (Magnific). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
499
+ - **Image upscale** (`vclaw video image-ops --op upscale`) — still-image upscaling 2×–16× via **Magnific's image upscaler** (`image-upscaler-precision-v2`, live-verified). Local image is base64-encoded inline; an `http(s)` URL is passed through. `--logo-safe` keeps flat graphics/text crisp without hallucinated texture. **Paid** → `--confirm-spend` (`--dry-run` plans free); needs `MAGNIFIC_API_KEY`.
472
500
 
473
501
  - **Audio-driven lip-sync** (`vclaw video lipsync`) — a **still/keyframe + a vocal track** → a **lip-synced talking-head clip** via **OmniHuman v1.5** (apiz/xskill). Uploads image+audio → submits → awaits → downloads → **normalizes** to CFR fps + even dims (OmniHuman's 25fps/odd dims otherwise break frame-accurate seeking). Drives an **external** vocal (a rapper's verse, a singer's hook) — the lane's way to put a performer's real vocal on their face. Audio cap enforced up front (1080p≤30s, 720p≤60s). **Paid** → refuses without `--confirm-spend` (`--dry-run` plans free); needs `APIZ_API_KEY`/`XSKILL_API_KEY`. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
474
502
 
@@ -588,6 +616,7 @@ Every stage writes a canonical JSON artifact under `projects/<slug>/artifacts/`.
588
616
  - **publish report** → `publish-report.json`
589
617
  - **analyze output** → `analyze-output.json`
590
618
  - **character consistency** → `character-consistency.json`
619
+ - **consistency audit** → `consistency-audit.json`
591
620
 
592
621
  Artifacts are append-only via `artifacts/history/` and every write emits a machine-readable event to `events/events.jsonl`.
593
622
 
@@ -1,5 +1,18 @@
1
1
  export declare function validateInitSlug(value: string): void;
2
2
  export declare function parseFlagValue(args: string[], flag: string): string | undefined;
3
+ /**
4
+ * The ONE workspace-root resolver for CLI handlers. Precedence:
5
+ * 1. an explicit `--workspace-root` / `--root` flag value, else
6
+ * 2. the environment (`VCLAW_WORKSPACE` / `VIDEOCLAW_WORKSPACE`), else
7
+ * 3. the canonical home (`~/videoclaw`).
8
+ *
9
+ * Replaces the old `parseFlagValue(args, '--root') ?? process.cwd()` fallback
10
+ * every handler used, so a bare `vclaw video ...` (no --root, run from any
11
+ * directory) operates on the single canonical home instead of whatever cwd the
12
+ * shell happened to be in. Pass the handler's `args` to honor the flags; call
13
+ * with no args for the env-or-home default.
14
+ */
15
+ export declare function resolveWorkspaceRoot(args?: string[]): string;
3
16
  /**
4
17
  * Parse `--project <slug>` (or another slug-bearing flag) and validate the
5
18
  * value against `isProjectSlug`, so a flag-looking token (`--project --json`)
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAmCA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAuCpD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,SAAc,GAAG,MAAM,GAAG,SAAS,CAoB3F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAU1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAkB1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAa1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAavE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAON;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWlF;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa1B"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAqCA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAuCpD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,SAAc,GAAG,MAAM,GAAG,SAAS,CAoB3F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAU1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAkB1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAa1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAavE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAON;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWlF;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa1B"}
package/dist/cli/args.js CHANGED
@@ -14,10 +14,12 @@
14
14
  * `GRADE_FILTER_IDS` list, and the `parseExecutionProfileInput` normalizer (none
15
15
  * of which import the CLI, so there is no import cycle).
16
16
  */
17
+ import { resolve } from 'node:path';
17
18
  import { VclawError } from '../video/errors.js';
18
19
  import { isProjectSlug } from '../video/projects.js';
19
20
  import { GRADE_FILTER_IDS } from '../video/assemble/stitch.js';
20
21
  import { parseExecutionProfileInput } from '../video/execution-profile.js';
22
+ import { resolveWorkspaceRootFromEnv } from '../video/workspace-root.js';
21
23
  const RESERVED_SLUG_NAMES = new Set([
22
24
  'history',
23
25
  'artifacts',
@@ -57,6 +59,26 @@ export function parseFlagValue(args, flag) {
57
59
  return undefined;
58
60
  return args[index + 1];
59
61
  }
62
+ /**
63
+ * The ONE workspace-root resolver for CLI handlers. Precedence:
64
+ * 1. an explicit `--workspace-root` / `--root` flag value, else
65
+ * 2. the environment (`VCLAW_WORKSPACE` / `VIDEOCLAW_WORKSPACE`), else
66
+ * 3. the canonical home (`~/videoclaw`).
67
+ *
68
+ * Replaces the old `parseFlagValue(args, '--root') ?? process.cwd()` fallback
69
+ * every handler used, so a bare `vclaw video ...` (no --root, run from any
70
+ * directory) operates on the single canonical home instead of whatever cwd the
71
+ * shell happened to be in. Pass the handler's `args` to honor the flags; call
72
+ * with no args for the env-or-home default.
73
+ */
74
+ export function resolveWorkspaceRoot(args) {
75
+ if (args) {
76
+ const flag = parseFlagValue(args, '--workspace-root') ?? parseFlagValue(args, '--root');
77
+ if (flag)
78
+ return resolve(flag);
79
+ }
80
+ return resolveWorkspaceRootFromEnv();
81
+ }
60
82
  /**
61
83
  * Parse `--project <slug>` (or another slug-bearing flag) and validate the
62
84
  * value against `isProjectSlug`, so a flag-looking token (`--project --json`)
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,SAAS;IACT,WAAW;IACX,aAAa;IACb,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,OAAO;IACP,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,4CAA4C,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EACrF,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,mEAAmE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;YAC5F,6HAA6H,EAC7H,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,wEAAwE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK;YAClG,uFAAuF,EACvF,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CACnC,CAAC;IACJ,CAAC;IACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,6CAA6C;YACtF,aAAa,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1D,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CACpC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,iEAAiE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAC1F,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CACzC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,IAAY;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxF,IAAI,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,2BAA2B,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAc,EAAE,IAAI,GAAG,WAAW;IACrE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,GAAG,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,8CAA8C;YACpF,iCAAiC,IAAI,GAAG,EACxC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAChD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,GAAG,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,+BAA+B;YACrE,oFAAoF,EACpF,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CACzC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAc,EAAE,IAAY;IAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAc,EAAE,IAAY;IACnE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,qCAAqC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACxI,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAc,EAAE,IAAY;IACtE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yCAAyC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5I,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE,8BAA8B,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,oBAAoB,EAAE,0BAA0B,GAAG,oCAAoC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,6BAA6B,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,6BAA6B,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3F,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,gCAAgC,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3F,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,+BAA+B,CAAC,CAAC;QAC9F,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3F,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,gCAAgC,CAAC,CAAC;QACnG,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,uCAAuC,UAAU,iDAAiD,CAAC,CAAC;YACtH,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAc,EACd,MAAe,EACf,OAAe,EACf,QAAgB;IAEhB,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO;IACvD,MAAM,IAAI,UAAU,CAClB,6BAA6B,EAC7B,SAAS,OAAO,sBAAsB,QAAQ,iGAAiG,EAC/I,EAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,EAAE,CACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAc;IACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,0BAA0B,CAAC;QACzC,WAAW,EAAE,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACnD,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC;QAChD,aAAa,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACrH,WAAW,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACtG,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;KAC9C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,QAA4B,EAC5B,OAAgC;IAEhC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5F,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAStC;IACC,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,OAAO,KAAK,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,GAAG,CAAC,OAAO,KAAK,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC;YAC1E,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -1,3 +1,12 @@
1
1
  export declare function handleVideoAnalyze(args: string[]): Promise<void>;
2
2
  export declare function handleVideoBrandExtract(args: string[]): Promise<void>;
3
+ /**
4
+ * `vclaw video consistency-audit` — run the automated character identity/costume
5
+ * vision audit over the project's rendered scenes and persist
6
+ * `artifacts/consistency-audit.json`. Uses the default Gemini-backed vision
7
+ * client; errors fail-fast when no vision key is configured so the operator
8
+ * knows the audit could not actually look at the frames. `--json` keeps the same
9
+ * machine-readable output (it always emits JSON).
10
+ */
11
+ export declare function handleVideoConsistencyAudit(args: string[]): Promise<void>;
3
12
  //# sourceMappingURL=analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"AA0BA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEtE;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3E"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"AA4BA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEtE;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3E;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E"}
@@ -6,24 +6,26 @@
6
6
  * the Gemini key pool) and `brand-extract` (scrape a website -> brand-DNA
7
7
  * artifact for `brief --from-brand-dna`). Dispatch stays in `vclaw.ts`.
8
8
  */
9
- import { basename } from 'node:path';
10
- import { parseFlagValue, parseProjectSlugFlag, parseRepeatableFlag } from '../args.js';
9
+ import { basename, join } from 'node:path';
10
+ import { parseFlagValue, parseProjectSlugFlag, parseRepeatableFlag, resolveWorkspaceRoot } from '../args.js';
11
11
  import { VclawError } from '../../video/errors.js';
12
12
  import { ensureProjectWorkspace, updateProjectManifestState } from '../../video/workspace.js';
13
13
  import { writeArtifact } from '../../video/artifact-store.js';
14
+ import { writeTextFileAtomic } from '../../video/atomic-write.js';
14
15
  import { appendProjectEvent } from '../../video/events.js';
15
16
  import { writeStageCheckpoint } from '../../video/checkpoints.js';
16
17
  import { createAnalyzeOutput } from '../../video/analyze-output.js';
17
18
  import { generateAnalyzeOutputWithGemini } from '../../video/gemini-analyze.js';
18
19
  import { appendVideoContextChangelog } from '../../video/video-context.js';
19
20
  import { scrapeSite, runBrandExtraction, createBrandDnaArtifact, writeBrandDnaArtifact, } from '../../video/brand-dna.js';
21
+ import { auditProjectConsistency, hasVisionKey } from '../../video/consistency-audit.js';
20
22
  export async function handleVideoAnalyze(args) {
21
23
  const slug = parseProjectSlugFlag(args);
22
24
  const source = parseFlagValue(args, '--source');
23
25
  if (!slug || !source) {
24
26
  throw new VclawError('missing_required_flag', 'video analyze requires --project <slug> and --source <path-or-url>');
25
27
  }
26
- const root = parseFlagValue(args, '--root') ?? process.cwd();
28
+ const root = resolveWorkspaceRoot(args);
27
29
  const workspace = await ensureProjectWorkspace(slug, root);
28
30
  const title = parseFlagValue(args, '--title') ?? basename(source);
29
31
  const durationRaw = parseFlagValue(args, '--duration');
@@ -98,7 +100,7 @@ export async function handleVideoBrandExtract(args) {
98
100
  missing.push('--url');
99
101
  throw new VclawError('missing_required_flag', 'video brand-extract requires --project <slug> and --url <website>', { missing });
100
102
  }
101
- const root = parseFlagValue(args, '--root') ?? process.cwd();
103
+ const root = resolveWorkspaceRoot(args);
102
104
  const endpoint = parseFlagValue(args, '--gemini-endpoint') ?? undefined;
103
105
  const workspace = await ensureProjectWorkspace(slug, root);
104
106
  const scraped = await scrapeSite(url);
@@ -108,4 +110,33 @@ export async function handleVideoBrandExtract(args) {
108
110
  await appendVideoContextChangelog(root, `${artifact.createdAt} brand-extract: captured brand DNA for project ${slug} from ${url}.`);
109
111
  process.stdout.write(`${JSON.stringify({ workspace, artifactPath, artifact }, null, 2)}\n`);
110
112
  }
113
+ /**
114
+ * `vclaw video consistency-audit` — run the automated character identity/costume
115
+ * vision audit over the project's rendered scenes and persist
116
+ * `artifacts/consistency-audit.json`. Uses the default Gemini-backed vision
117
+ * client; errors fail-fast when no vision key is configured so the operator
118
+ * knows the audit could not actually look at the frames. `--json` keeps the same
119
+ * machine-readable output (it always emits JSON).
120
+ */
121
+ export async function handleVideoConsistencyAudit(args) {
122
+ const slug = parseProjectSlugFlag(args);
123
+ if (!slug) {
124
+ throw new VclawError('missing_required_flag', 'video consistency-audit requires --project <slug>', { missing: ['--project'] });
125
+ }
126
+ const root = resolveWorkspaceRoot(args);
127
+ if (!hasVisionKey()) {
128
+ throw new VclawError('env_var_missing', 'video consistency-audit needs a Gemini vision key to inspect rendered frames. Set GEMINI_API_KEYS (or GOOGLE_API_KEY).', { env: ['GEMINI_API_KEYS', 'GOOGLE_API_KEY'] });
129
+ }
130
+ const workspace = await ensureProjectWorkspace(slug, root);
131
+ const report = await auditProjectConsistency(slug, root);
132
+ const artifactPath = join(workspace.artifactsDir, 'consistency-audit.json');
133
+ await writeTextFileAtomic(artifactPath, `${JSON.stringify(report, null, 2)}\n`);
134
+ await appendProjectEvent(workspace, {
135
+ type: 'artifact.consistency-audit.written',
136
+ recordedAt: report.generatedAt,
137
+ payload: { artifactPath, ok: report.ok, findings: report.findings.length },
138
+ });
139
+ await appendVideoContextChangelog(root, `${report.generatedAt} consistency-audit: ${report.ok ? 'ok' : `${report.findings.length} finding(s)`} for project ${slug}.`);
140
+ process.stdout.write(`${JSON.stringify({ workspace, artifactPath, report }, null, 2)}\n`);
141
+ }
111
142
  //# sourceMappingURL=analysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"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"}