@vibeframe/cli 0.55.0 → 0.55.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 (497) hide show
  1. package/dist/index.js +63450 -233
  2. package/package.json +11 -6
  3. package/dist/agent/adapters/claude.d.ts +0 -15
  4. package/dist/agent/adapters/claude.d.ts.map +0 -1
  5. package/dist/agent/adapters/claude.js +0 -119
  6. package/dist/agent/adapters/claude.js.map +0 -1
  7. package/dist/agent/adapters/gemini.d.ts +0 -15
  8. package/dist/agent/adapters/gemini.d.ts.map +0 -1
  9. package/dist/agent/adapters/gemini.js +0 -132
  10. package/dist/agent/adapters/gemini.js.map +0 -1
  11. package/dist/agent/adapters/index.d.ts +0 -28
  12. package/dist/agent/adapters/index.d.ts.map +0 -1
  13. package/dist/agent/adapters/index.js +0 -43
  14. package/dist/agent/adapters/index.js.map +0 -1
  15. package/dist/agent/adapters/ollama.d.ts +0 -20
  16. package/dist/agent/adapters/ollama.d.ts.map +0 -1
  17. package/dist/agent/adapters/ollama.js +0 -186
  18. package/dist/agent/adapters/ollama.js.map +0 -1
  19. package/dist/agent/adapters/openai.d.ts +0 -15
  20. package/dist/agent/adapters/openai.d.ts.map +0 -1
  21. package/dist/agent/adapters/openai.js +0 -92
  22. package/dist/agent/adapters/openai.js.map +0 -1
  23. package/dist/agent/adapters/openrouter.d.ts +0 -16
  24. package/dist/agent/adapters/openrouter.d.ts.map +0 -1
  25. package/dist/agent/adapters/openrouter.js +0 -100
  26. package/dist/agent/adapters/openrouter.js.map +0 -1
  27. package/dist/agent/adapters/openrouter.test.d.ts +0 -5
  28. package/dist/agent/adapters/openrouter.test.d.ts.map +0 -1
  29. package/dist/agent/adapters/openrouter.test.js +0 -73
  30. package/dist/agent/adapters/openrouter.test.js.map +0 -1
  31. package/dist/agent/adapters/xai.d.ts +0 -15
  32. package/dist/agent/adapters/xai.d.ts.map +0 -1
  33. package/dist/agent/adapters/xai.js +0 -95
  34. package/dist/agent/adapters/xai.js.map +0 -1
  35. package/dist/agent/index.d.ts +0 -69
  36. package/dist/agent/index.d.ts.map +0 -1
  37. package/dist/agent/index.js +0 -180
  38. package/dist/agent/index.js.map +0 -1
  39. package/dist/agent/memory/index.d.ts +0 -70
  40. package/dist/agent/memory/index.d.ts.map +0 -1
  41. package/dist/agent/memory/index.js +0 -132
  42. package/dist/agent/memory/index.js.map +0 -1
  43. package/dist/agent/prompts/system.d.ts +0 -6
  44. package/dist/agent/prompts/system.d.ts.map +0 -1
  45. package/dist/agent/prompts/system.js +0 -103
  46. package/dist/agent/prompts/system.js.map +0 -1
  47. package/dist/agent/tools/ai-editing.d.ts +0 -15
  48. package/dist/agent/tools/ai-editing.d.ts.map +0 -1
  49. package/dist/agent/tools/ai-editing.js +0 -763
  50. package/dist/agent/tools/ai-editing.js.map +0 -1
  51. package/dist/agent/tools/ai-generation.d.ts +0 -13
  52. package/dist/agent/tools/ai-generation.d.ts.map +0 -1
  53. package/dist/agent/tools/ai-generation.js +0 -973
  54. package/dist/agent/tools/ai-generation.js.map +0 -1
  55. package/dist/agent/tools/ai-pipeline.d.ts +0 -14
  56. package/dist/agent/tools/ai-pipeline.d.ts.map +0 -1
  57. package/dist/agent/tools/ai-pipeline.js +0 -961
  58. package/dist/agent/tools/ai-pipeline.js.map +0 -1
  59. package/dist/agent/tools/ai.d.ts +0 -13
  60. package/dist/agent/tools/ai.d.ts.map +0 -1
  61. package/dist/agent/tools/ai.js +0 -19
  62. package/dist/agent/tools/ai.js.map +0 -1
  63. package/dist/agent/tools/batch.d.ts +0 -6
  64. package/dist/agent/tools/batch.d.ts.map +0 -1
  65. package/dist/agent/tools/batch.js +0 -383
  66. package/dist/agent/tools/batch.js.map +0 -1
  67. package/dist/agent/tools/e2e.test.d.ts +0 -26
  68. package/dist/agent/tools/e2e.test.d.ts.map +0 -1
  69. package/dist/agent/tools/e2e.test.js +0 -397
  70. package/dist/agent/tools/e2e.test.js.map +0 -1
  71. package/dist/agent/tools/export.d.ts +0 -6
  72. package/dist/agent/tools/export.d.ts.map +0 -1
  73. package/dist/agent/tools/export.js +0 -171
  74. package/dist/agent/tools/export.js.map +0 -1
  75. package/dist/agent/tools/filesystem.d.ts +0 -6
  76. package/dist/agent/tools/filesystem.d.ts.map +0 -1
  77. package/dist/agent/tools/filesystem.js +0 -212
  78. package/dist/agent/tools/filesystem.js.map +0 -1
  79. package/dist/agent/tools/index.d.ts +0 -66
  80. package/dist/agent/tools/index.d.ts.map +0 -1
  81. package/dist/agent/tools/index.js +0 -123
  82. package/dist/agent/tools/index.js.map +0 -1
  83. package/dist/agent/tools/integration.test.d.ts +0 -11
  84. package/dist/agent/tools/integration.test.d.ts.map +0 -1
  85. package/dist/agent/tools/integration.test.js +0 -659
  86. package/dist/agent/tools/integration.test.js.map +0 -1
  87. package/dist/agent/tools/media.d.ts +0 -6
  88. package/dist/agent/tools/media.d.ts.map +0 -1
  89. package/dist/agent/tools/media.js +0 -616
  90. package/dist/agent/tools/media.js.map +0 -1
  91. package/dist/agent/tools/project.d.ts +0 -6
  92. package/dist/agent/tools/project.d.ts.map +0 -1
  93. package/dist/agent/tools/project.js +0 -284
  94. package/dist/agent/tools/project.js.map +0 -1
  95. package/dist/agent/tools/scene.d.ts +0 -17
  96. package/dist/agent/tools/scene.d.ts.map +0 -1
  97. package/dist/agent/tools/scene.js +0 -263
  98. package/dist/agent/tools/scene.js.map +0 -1
  99. package/dist/agent/tools/scene.test.d.ts +0 -2
  100. package/dist/agent/tools/scene.test.d.ts.map +0 -1
  101. package/dist/agent/tools/scene.test.js +0 -139
  102. package/dist/agent/tools/scene.test.js.map +0 -1
  103. package/dist/agent/tools/timeline.d.ts +0 -6
  104. package/dist/agent/tools/timeline.d.ts.map +0 -1
  105. package/dist/agent/tools/timeline.js +0 -875
  106. package/dist/agent/tools/timeline.js.map +0 -1
  107. package/dist/agent/types.d.ts +0 -59
  108. package/dist/agent/types.d.ts.map +0 -1
  109. package/dist/agent/types.js +0 -5
  110. package/dist/agent/types.js.map +0 -1
  111. package/dist/commands/_shared/scene-audio-mux.d.ts +0 -75
  112. package/dist/commands/_shared/scene-audio-mux.d.ts.map +0 -1
  113. package/dist/commands/_shared/scene-audio-mux.js +0 -159
  114. package/dist/commands/_shared/scene-audio-mux.js.map +0 -1
  115. package/dist/commands/_shared/scene-audio-mux.test.d.ts +0 -7
  116. package/dist/commands/_shared/scene-audio-mux.test.d.ts.map +0 -1
  117. package/dist/commands/_shared/scene-audio-mux.test.js +0 -94
  118. package/dist/commands/_shared/scene-audio-mux.test.js.map +0 -1
  119. package/dist/commands/_shared/scene-audio-scan.d.ts +0 -94
  120. package/dist/commands/_shared/scene-audio-scan.d.ts.map +0 -1
  121. package/dist/commands/_shared/scene-audio-scan.js +0 -144
  122. package/dist/commands/_shared/scene-audio-scan.js.map +0 -1
  123. package/dist/commands/_shared/scene-audio-scan.test.d.ts +0 -6
  124. package/dist/commands/_shared/scene-audio-scan.test.d.ts.map +0 -1
  125. package/dist/commands/_shared/scene-audio-scan.test.js +0 -190
  126. package/dist/commands/_shared/scene-audio-scan.test.js.map +0 -1
  127. package/dist/commands/_shared/scene-html-emit.d.ts +0 -120
  128. package/dist/commands/_shared/scene-html-emit.d.ts.map +0 -1
  129. package/dist/commands/_shared/scene-html-emit.js +0 -422
  130. package/dist/commands/_shared/scene-html-emit.js.map +0 -1
  131. package/dist/commands/_shared/scene-html-emit.test.d.ts +0 -2
  132. package/dist/commands/_shared/scene-html-emit.test.d.ts.map +0 -1
  133. package/dist/commands/_shared/scene-html-emit.test.js +0 -396
  134. package/dist/commands/_shared/scene-html-emit.test.js.map +0 -1
  135. package/dist/commands/_shared/scene-lint.d.ts +0 -110
  136. package/dist/commands/_shared/scene-lint.d.ts.map +0 -1
  137. package/dist/commands/_shared/scene-lint.js +0 -207
  138. package/dist/commands/_shared/scene-lint.js.map +0 -1
  139. package/dist/commands/_shared/scene-lint.test.d.ts +0 -2
  140. package/dist/commands/_shared/scene-lint.test.d.ts.map +0 -1
  141. package/dist/commands/_shared/scene-lint.test.js +0 -208
  142. package/dist/commands/_shared/scene-lint.test.js.map +0 -1
  143. package/dist/commands/_shared/scene-project.d.ts +0 -101
  144. package/dist/commands/_shared/scene-project.d.ts.map +0 -1
  145. package/dist/commands/_shared/scene-project.js +0 -281
  146. package/dist/commands/_shared/scene-project.js.map +0 -1
  147. package/dist/commands/_shared/scene-project.test.d.ts +0 -2
  148. package/dist/commands/_shared/scene-project.test.d.ts.map +0 -1
  149. package/dist/commands/_shared/scene-project.test.js +0 -203
  150. package/dist/commands/_shared/scene-project.test.js.map +0 -1
  151. package/dist/commands/_shared/scene-render.d.ts +0 -85
  152. package/dist/commands/_shared/scene-render.d.ts.map +0 -1
  153. package/dist/commands/_shared/scene-render.js +0 -178
  154. package/dist/commands/_shared/scene-render.js.map +0 -1
  155. package/dist/commands/_shared/scene-render.test.d.ts +0 -2
  156. package/dist/commands/_shared/scene-render.test.d.ts.map +0 -1
  157. package/dist/commands/_shared/scene-render.test.js +0 -145
  158. package/dist/commands/_shared/scene-render.test.js.map +0 -1
  159. package/dist/commands/_shared/segments-to-scenes.d.ts +0 -85
  160. package/dist/commands/_shared/segments-to-scenes.d.ts.map +0 -1
  161. package/dist/commands/_shared/segments-to-scenes.js +0 -202
  162. package/dist/commands/_shared/segments-to-scenes.js.map +0 -1
  163. package/dist/commands/_shared/segments-to-scenes.test.d.ts +0 -2
  164. package/dist/commands/_shared/segments-to-scenes.test.d.ts.map +0 -1
  165. package/dist/commands/_shared/segments-to-scenes.test.js +0 -219
  166. package/dist/commands/_shared/segments-to-scenes.test.js.map +0 -1
  167. package/dist/commands/_shared/tts-resolve.d.ts +0 -75
  168. package/dist/commands/_shared/tts-resolve.d.ts.map +0 -1
  169. package/dist/commands/_shared/tts-resolve.js +0 -89
  170. package/dist/commands/_shared/tts-resolve.js.map +0 -1
  171. package/dist/commands/_shared/tts-resolve.test.d.ts +0 -6
  172. package/dist/commands/_shared/tts-resolve.test.d.ts.map +0 -1
  173. package/dist/commands/_shared/tts-resolve.test.js +0 -147
  174. package/dist/commands/_shared/tts-resolve.test.js.map +0 -1
  175. package/dist/commands/agent.d.ts +0 -21
  176. package/dist/commands/agent.d.ts.map +0 -1
  177. package/dist/commands/agent.js +0 -285
  178. package/dist/commands/agent.js.map +0 -1
  179. package/dist/commands/ai-analyze.d.ts +0 -106
  180. package/dist/commands/ai-analyze.d.ts.map +0 -1
  181. package/dist/commands/ai-analyze.js +0 -320
  182. package/dist/commands/ai-analyze.js.map +0 -1
  183. package/dist/commands/ai-animated-caption.d.ts +0 -64
  184. package/dist/commands/ai-animated-caption.d.ts.map +0 -1
  185. package/dist/commands/ai-animated-caption.js +0 -272
  186. package/dist/commands/ai-animated-caption.js.map +0 -1
  187. package/dist/commands/ai-audio.d.ts +0 -98
  188. package/dist/commands/ai-audio.d.ts.map +0 -1
  189. package/dist/commands/ai-audio.js +0 -1059
  190. package/dist/commands/ai-audio.js.map +0 -1
  191. package/dist/commands/ai-broll.d.ts +0 -15
  192. package/dist/commands/ai-broll.d.ts.map +0 -1
  193. package/dist/commands/ai-broll.js +0 -421
  194. package/dist/commands/ai-broll.js.map +0 -1
  195. package/dist/commands/ai-edit-cli.d.ts +0 -14
  196. package/dist/commands/ai-edit-cli.d.ts.map +0 -1
  197. package/dist/commands/ai-edit-cli.js +0 -585
  198. package/dist/commands/ai-edit-cli.js.map +0 -1
  199. package/dist/commands/ai-edit.d.ts +0 -398
  200. package/dist/commands/ai-edit.d.ts.map +0 -1
  201. package/dist/commands/ai-edit.js +0 -1060
  202. package/dist/commands/ai-edit.js.map +0 -1
  203. package/dist/commands/ai-fill-gaps.d.ts +0 -14
  204. package/dist/commands/ai-fill-gaps.d.ts.map +0 -1
  205. package/dist/commands/ai-fill-gaps.js +0 -447
  206. package/dist/commands/ai-fill-gaps.js.map +0 -1
  207. package/dist/commands/ai-helpers.d.ts +0 -20
  208. package/dist/commands/ai-helpers.d.ts.map +0 -1
  209. package/dist/commands/ai-helpers.js +0 -59
  210. package/dist/commands/ai-helpers.js.map +0 -1
  211. package/dist/commands/ai-highlights.d.ts +0 -127
  212. package/dist/commands/ai-highlights.d.ts.map +0 -1
  213. package/dist/commands/ai-highlights.js +0 -1053
  214. package/dist/commands/ai-highlights.js.map +0 -1
  215. package/dist/commands/ai-image.d.ts +0 -76
  216. package/dist/commands/ai-image.d.ts.map +0 -1
  217. package/dist/commands/ai-image.js +0 -858
  218. package/dist/commands/ai-image.js.map +0 -1
  219. package/dist/commands/ai-motion.d.ts +0 -50
  220. package/dist/commands/ai-motion.d.ts.map +0 -1
  221. package/dist/commands/ai-motion.js +0 -297
  222. package/dist/commands/ai-motion.js.map +0 -1
  223. package/dist/commands/ai-narrate.d.ts +0 -66
  224. package/dist/commands/ai-narrate.d.ts.map +0 -1
  225. package/dist/commands/ai-narrate.js +0 -332
  226. package/dist/commands/ai-narrate.js.map +0 -1
  227. package/dist/commands/ai-review.d.ts +0 -57
  228. package/dist/commands/ai-review.d.ts.map +0 -1
  229. package/dist/commands/ai-review.js +0 -270
  230. package/dist/commands/ai-review.js.map +0 -1
  231. package/dist/commands/ai-script-pipeline-cli.d.ts +0 -9
  232. package/dist/commands/ai-script-pipeline-cli.d.ts.map +0 -1
  233. package/dist/commands/ai-script-pipeline-cli.js +0 -502
  234. package/dist/commands/ai-script-pipeline-cli.js.map +0 -1
  235. package/dist/commands/ai-script-pipeline.d.ts +0 -305
  236. package/dist/commands/ai-script-pipeline.d.ts.map +0 -1
  237. package/dist/commands/ai-script-pipeline.js +0 -1546
  238. package/dist/commands/ai-script-pipeline.js.map +0 -1
  239. package/dist/commands/ai-suggest-edit.d.ts +0 -14
  240. package/dist/commands/ai-suggest-edit.d.ts.map +0 -1
  241. package/dist/commands/ai-suggest-edit.js +0 -215
  242. package/dist/commands/ai-suggest-edit.js.map +0 -1
  243. package/dist/commands/ai-video-fx.d.ts +0 -14
  244. package/dist/commands/ai-video-fx.d.ts.map +0 -1
  245. package/dist/commands/ai-video-fx.js +0 -396
  246. package/dist/commands/ai-video-fx.js.map +0 -1
  247. package/dist/commands/ai-video.d.ts +0 -91
  248. package/dist/commands/ai-video.d.ts.map +0 -1
  249. package/dist/commands/ai-video.js +0 -1055
  250. package/dist/commands/ai-video.js.map +0 -1
  251. package/dist/commands/ai-viral.d.ts +0 -15
  252. package/dist/commands/ai-viral.d.ts.map +0 -1
  253. package/dist/commands/ai-viral.js +0 -507
  254. package/dist/commands/ai-viral.js.map +0 -1
  255. package/dist/commands/ai-visual-fx.d.ts +0 -14
  256. package/dist/commands/ai-visual-fx.d.ts.map +0 -1
  257. package/dist/commands/ai-visual-fx.js +0 -521
  258. package/dist/commands/ai-visual-fx.js.map +0 -1
  259. package/dist/commands/ai.d.ts +0 -38
  260. package/dist/commands/ai.d.ts.map +0 -1
  261. package/dist/commands/ai.js +0 -225
  262. package/dist/commands/ai.js.map +0 -1
  263. package/dist/commands/ai.test.d.ts +0 -2
  264. package/dist/commands/ai.test.d.ts.map +0 -1
  265. package/dist/commands/ai.test.js +0 -557
  266. package/dist/commands/ai.test.js.map +0 -1
  267. package/dist/commands/analyze.d.ts +0 -16
  268. package/dist/commands/analyze.d.ts.map +0 -1
  269. package/dist/commands/analyze.js +0 -247
  270. package/dist/commands/analyze.js.map +0 -1
  271. package/dist/commands/audio.d.ts +0 -18
  272. package/dist/commands/audio.d.ts.map +0 -1
  273. package/dist/commands/audio.js +0 -539
  274. package/dist/commands/audio.js.map +0 -1
  275. package/dist/commands/batch.d.ts +0 -3
  276. package/dist/commands/batch.d.ts.map +0 -1
  277. package/dist/commands/batch.js +0 -419
  278. package/dist/commands/batch.js.map +0 -1
  279. package/dist/commands/batch.test.d.ts +0 -2
  280. package/dist/commands/batch.test.d.ts.map +0 -1
  281. package/dist/commands/batch.test.js +0 -203
  282. package/dist/commands/batch.test.js.map +0 -1
  283. package/dist/commands/context.d.ts +0 -7
  284. package/dist/commands/context.d.ts.map +0 -1
  285. package/dist/commands/context.js +0 -66
  286. package/dist/commands/context.js.map +0 -1
  287. package/dist/commands/demo.d.ts +0 -7
  288. package/dist/commands/demo.d.ts.map +0 -1
  289. package/dist/commands/demo.js +0 -192
  290. package/dist/commands/demo.js.map +0 -1
  291. package/dist/commands/detect.d.ts +0 -56
  292. package/dist/commands/detect.d.ts.map +0 -1
  293. package/dist/commands/detect.js +0 -464
  294. package/dist/commands/detect.js.map +0 -1
  295. package/dist/commands/doctor.d.ts +0 -6
  296. package/dist/commands/doctor.d.ts.map +0 -1
  297. package/dist/commands/doctor.js +0 -322
  298. package/dist/commands/doctor.js.map +0 -1
  299. package/dist/commands/edit-cmd.d.ts +0 -112
  300. package/dist/commands/edit-cmd.d.ts.map +0 -1
  301. package/dist/commands/edit-cmd.js +0 -1041
  302. package/dist/commands/edit-cmd.js.map +0 -1
  303. package/dist/commands/export.d.ts +0 -61
  304. package/dist/commands/export.d.ts.map +0 -1
  305. package/dist/commands/export.js +0 -980
  306. package/dist/commands/export.js.map +0 -1
  307. package/dist/commands/export.test.d.ts +0 -2
  308. package/dist/commands/export.test.d.ts.map +0 -1
  309. package/dist/commands/export.test.js +0 -107
  310. package/dist/commands/export.test.js.map +0 -1
  311. package/dist/commands/generate.d.ts +0 -84
  312. package/dist/commands/generate.d.ts.map +0 -1
  313. package/dist/commands/generate.js +0 -2030
  314. package/dist/commands/generate.js.map +0 -1
  315. package/dist/commands/media.d.ts +0 -3
  316. package/dist/commands/media.d.ts.map +0 -1
  317. package/dist/commands/media.js +0 -163
  318. package/dist/commands/media.js.map +0 -1
  319. package/dist/commands/output.d.ts +0 -51
  320. package/dist/commands/output.d.ts.map +0 -1
  321. package/dist/commands/output.js +0 -219
  322. package/dist/commands/output.js.map +0 -1
  323. package/dist/commands/output.test.d.ts +0 -2
  324. package/dist/commands/output.test.d.ts.map +0 -1
  325. package/dist/commands/output.test.js +0 -151
  326. package/dist/commands/output.test.js.map +0 -1
  327. package/dist/commands/pipeline.d.ts +0 -19
  328. package/dist/commands/pipeline.d.ts.map +0 -1
  329. package/dist/commands/pipeline.js +0 -345
  330. package/dist/commands/pipeline.js.map +0 -1
  331. package/dist/commands/project.d.ts +0 -3
  332. package/dist/commands/project.d.ts.map +0 -1
  333. package/dist/commands/project.js +0 -181
  334. package/dist/commands/project.js.map +0 -1
  335. package/dist/commands/project.test.d.ts +0 -2
  336. package/dist/commands/project.test.d.ts.map +0 -1
  337. package/dist/commands/project.test.js +0 -105
  338. package/dist/commands/project.test.js.map +0 -1
  339. package/dist/commands/run.d.ts +0 -15
  340. package/dist/commands/run.d.ts.map +0 -1
  341. package/dist/commands/run.js +0 -204
  342. package/dist/commands/run.js.map +0 -1
  343. package/dist/commands/sanitize.d.ts +0 -21
  344. package/dist/commands/sanitize.d.ts.map +0 -1
  345. package/dist/commands/sanitize.js +0 -56
  346. package/dist/commands/sanitize.js.map +0 -1
  347. package/dist/commands/scene.d.ts +0 -86
  348. package/dist/commands/scene.d.ts.map +0 -1
  349. package/dist/commands/scene.js +0 -728
  350. package/dist/commands/scene.js.map +0 -1
  351. package/dist/commands/scene.test.d.ts +0 -2
  352. package/dist/commands/scene.test.d.ts.map +0 -1
  353. package/dist/commands/scene.test.js +0 -219
  354. package/dist/commands/scene.test.js.map +0 -1
  355. package/dist/commands/schema.d.ts +0 -13
  356. package/dist/commands/schema.d.ts.map +0 -1
  357. package/dist/commands/schema.js +0 -218
  358. package/dist/commands/schema.js.map +0 -1
  359. package/dist/commands/setup.d.ts +0 -6
  360. package/dist/commands/setup.d.ts.map +0 -1
  361. package/dist/commands/setup.js +0 -461
  362. package/dist/commands/setup.js.map +0 -1
  363. package/dist/commands/timeline.d.ts +0 -3
  364. package/dist/commands/timeline.d.ts.map +0 -1
  365. package/dist/commands/timeline.js +0 -609
  366. package/dist/commands/timeline.js.map +0 -1
  367. package/dist/commands/timeline.test.d.ts +0 -2
  368. package/dist/commands/timeline.test.d.ts.map +0 -1
  369. package/dist/commands/timeline.test.js +0 -334
  370. package/dist/commands/timeline.test.js.map +0 -1
  371. package/dist/commands/validate.d.ts +0 -34
  372. package/dist/commands/validate.d.ts.map +0 -1
  373. package/dist/commands/validate.js +0 -70
  374. package/dist/commands/validate.js.map +0 -1
  375. package/dist/config/config.test.d.ts +0 -2
  376. package/dist/config/config.test.d.ts.map +0 -1
  377. package/dist/config/config.test.js +0 -164
  378. package/dist/config/config.test.js.map +0 -1
  379. package/dist/config/index.d.ts +0 -35
  380. package/dist/config/index.d.ts.map +0 -1
  381. package/dist/config/index.js +0 -101
  382. package/dist/config/index.js.map +0 -1
  383. package/dist/config/schema.d.ts +0 -52
  384. package/dist/config/schema.d.ts.map +0 -1
  385. package/dist/config/schema.js +0 -44
  386. package/dist/config/schema.js.map +0 -1
  387. package/dist/engine/index.d.ts +0 -3
  388. package/dist/engine/index.d.ts.map +0 -1
  389. package/dist/engine/index.js +0 -2
  390. package/dist/engine/index.js.map +0 -1
  391. package/dist/engine/project.d.ts +0 -84
  392. package/dist/engine/project.d.ts.map +0 -1
  393. package/dist/engine/project.js +0 -355
  394. package/dist/engine/project.js.map +0 -1
  395. package/dist/engine/project.test.d.ts +0 -2
  396. package/dist/engine/project.test.d.ts.map +0 -1
  397. package/dist/engine/project.test.js +0 -599
  398. package/dist/engine/project.test.js.map +0 -1
  399. package/dist/index.d.ts +0 -7
  400. package/dist/index.d.ts.map +0 -1
  401. package/dist/index.js.map +0 -1
  402. package/dist/pipeline/executor.d.ts +0 -19
  403. package/dist/pipeline/executor.d.ts.map +0 -1
  404. package/dist/pipeline/executor.js +0 -397
  405. package/dist/pipeline/executor.js.map +0 -1
  406. package/dist/pipeline/index.d.ts +0 -4
  407. package/dist/pipeline/index.d.ts.map +0 -1
  408. package/dist/pipeline/index.js +0 -2
  409. package/dist/pipeline/index.js.map +0 -1
  410. package/dist/pipeline/renderers/__tests__/html-template.test.d.ts +0 -2
  411. package/dist/pipeline/renderers/__tests__/html-template.test.d.ts.map +0 -1
  412. package/dist/pipeline/renderers/__tests__/html-template.test.js +0 -170
  413. package/dist/pipeline/renderers/__tests__/html-template.test.js.map +0 -1
  414. package/dist/pipeline/renderers/__tests__/integration.test.d.ts +0 -2
  415. package/dist/pipeline/renderers/__tests__/integration.test.d.ts.map +0 -1
  416. package/dist/pipeline/renderers/__tests__/integration.test.js +0 -175
  417. package/dist/pipeline/renderers/__tests__/integration.test.js.map +0 -1
  418. package/dist/pipeline/renderers/chrome.d.ts +0 -26
  419. package/dist/pipeline/renderers/chrome.d.ts.map +0 -1
  420. package/dist/pipeline/renderers/chrome.js +0 -48
  421. package/dist/pipeline/renderers/chrome.js.map +0 -1
  422. package/dist/pipeline/renderers/html-clips.d.ts +0 -20
  423. package/dist/pipeline/renderers/html-clips.d.ts.map +0 -1
  424. package/dist/pipeline/renderers/html-clips.js +0 -50
  425. package/dist/pipeline/renderers/html-clips.js.map +0 -1
  426. package/dist/pipeline/renderers/html-runtime.d.ts +0 -7
  427. package/dist/pipeline/renderers/html-runtime.d.ts.map +0 -1
  428. package/dist/pipeline/renderers/html-runtime.js +0 -80
  429. package/dist/pipeline/renderers/html-runtime.js.map +0 -1
  430. package/dist/pipeline/renderers/html-template.d.ts +0 -3
  431. package/dist/pipeline/renderers/html-template.d.ts.map +0 -1
  432. package/dist/pipeline/renderers/html-template.js +0 -36
  433. package/dist/pipeline/renderers/html-template.js.map +0 -1
  434. package/dist/pipeline/renderers/hyperframes.d.ts +0 -8
  435. package/dist/pipeline/renderers/hyperframes.d.ts.map +0 -1
  436. package/dist/pipeline/renderers/hyperframes.js +0 -63
  437. package/dist/pipeline/renderers/hyperframes.js.map +0 -1
  438. package/dist/pipeline/renderers/project-builder.d.ts +0 -8
  439. package/dist/pipeline/renderers/project-builder.d.ts.map +0 -1
  440. package/dist/pipeline/renderers/project-builder.js +0 -65
  441. package/dist/pipeline/renderers/project-builder.js.map +0 -1
  442. package/dist/pipeline/renderers/types.d.ts +0 -41
  443. package/dist/pipeline/renderers/types.d.ts.map +0 -1
  444. package/dist/pipeline/renderers/types.js +0 -11
  445. package/dist/pipeline/renderers/types.js.map +0 -1
  446. package/dist/pipeline/resolver.d.ts +0 -20
  447. package/dist/pipeline/resolver.d.ts.map +0 -1
  448. package/dist/pipeline/resolver.js +0 -74
  449. package/dist/pipeline/resolver.js.map +0 -1
  450. package/dist/pipeline/types.d.ts +0 -82
  451. package/dist/pipeline/types.d.ts.map +0 -1
  452. package/dist/pipeline/types.js +0 -8
  453. package/dist/pipeline/types.js.map +0 -1
  454. package/dist/utils/api-key.d.ts +0 -33
  455. package/dist/utils/api-key.d.ts.map +0 -1
  456. package/dist/utils/api-key.js +0 -228
  457. package/dist/utils/api-key.js.map +0 -1
  458. package/dist/utils/api-key.test.d.ts +0 -2
  459. package/dist/utils/api-key.test.d.ts.map +0 -1
  460. package/dist/utils/api-key.test.js +0 -35
  461. package/dist/utils/api-key.test.js.map +0 -1
  462. package/dist/utils/audio.d.ts +0 -23
  463. package/dist/utils/audio.d.ts.map +0 -1
  464. package/dist/utils/audio.js +0 -79
  465. package/dist/utils/audio.js.map +0 -1
  466. package/dist/utils/exec-safe.d.ts +0 -22
  467. package/dist/utils/exec-safe.d.ts.map +0 -1
  468. package/dist/utils/exec-safe.js +0 -62
  469. package/dist/utils/exec-safe.js.map +0 -1
  470. package/dist/utils/first-run.d.ts +0 -17
  471. package/dist/utils/first-run.d.ts.map +0 -1
  472. package/dist/utils/first-run.js +0 -73
  473. package/dist/utils/first-run.js.map +0 -1
  474. package/dist/utils/input-validation.d.ts +0 -27
  475. package/dist/utils/input-validation.d.ts.map +0 -1
  476. package/dist/utils/input-validation.js +0 -67
  477. package/dist/utils/input-validation.js.map +0 -1
  478. package/dist/utils/provider-resolver.d.ts +0 -19
  479. package/dist/utils/provider-resolver.d.ts.map +0 -1
  480. package/dist/utils/provider-resolver.js +0 -75
  481. package/dist/utils/provider-resolver.js.map +0 -1
  482. package/dist/utils/remotion.d.ts +0 -231
  483. package/dist/utils/remotion.d.ts.map +0 -1
  484. package/dist/utils/remotion.js +0 -879
  485. package/dist/utils/remotion.js.map +0 -1
  486. package/dist/utils/subtitle.d.ts +0 -65
  487. package/dist/utils/subtitle.d.ts.map +0 -1
  488. package/dist/utils/subtitle.js +0 -135
  489. package/dist/utils/subtitle.js.map +0 -1
  490. package/dist/utils/subtitle.test.d.ts +0 -2
  491. package/dist/utils/subtitle.test.d.ts.map +0 -1
  492. package/dist/utils/subtitle.test.js +0 -175
  493. package/dist/utils/subtitle.test.js.map +0 -1
  494. package/dist/utils/tty.d.ts +0 -45
  495. package/dist/utils/tty.d.ts.map +0 -1
  496. package/dist/utils/tty.js +0 -231
  497. package/dist/utils/tty.js.map +0 -1
@@ -1,144 +0,0 @@
1
- /**
2
- * @module _shared/scene-audio-scan
3
- *
4
- * Reads a scene project's root + sub-composition HTML and returns a flat list
5
- * of audio elements with **absolute** timeline positions. Used by `executeSceneRender`
6
- * to mux narration / background-audio tracks into the producer's silent video
7
- * output via ffmpeg.
8
- *
9
- * Why a post-render scanner: at time of writing, `@hyperframes/producer`
10
- * renders frames + assembles the MP4 but does not embed audio from
11
- * `<audio>` elements that live inside sub-compositions. We pick up the slack
12
- * here without touching the producer.
13
- *
14
- * Pure module — no I/O beyond the explicit `loadCompositionHtml` reader the
15
- * orchestrator passes in. Easy to unit-test with fixture strings.
16
- */
17
- import { readFile } from "node:fs/promises";
18
- import { resolve } from "node:path";
19
- /**
20
- * Walk the root HTML for clip references. Returns one entry per
21
- * `<div class="clip">` with the four attributes we care about. Pure: a
22
- * regex-based scan, not a full DOM parser. The root file is generated by
23
- * VibeFrame so the markup is predictable; if a user hand-edits it into
24
- * something unparseable, the scanner simply finds fewer clips.
25
- */
26
- export function parseRootClips(rootHtml) {
27
- const clips = [];
28
- // Anchor on `class="clip"` and pull every relevant data attribute that
29
- // appears in the same opening tag. Attribute order is not assumed.
30
- const clipRegex = /<div\b[^>]*class="clip"[^>]*>/gi;
31
- let match;
32
- while ((match = clipRegex.exec(rootHtml)) !== null) {
33
- const tag = match[0];
34
- const compositionId = pickAttr(tag, "data-composition-id");
35
- const compositionSrc = pickAttr(tag, "data-composition-src");
36
- const start = pickNumberAttr(tag, "data-start");
37
- const duration = pickNumberAttr(tag, "data-duration");
38
- const trackIndex = pickNumberAttr(tag, "data-track-index") ?? 1;
39
- if (!compositionId || !compositionSrc || start === null || duration === null) {
40
- continue;
41
- }
42
- clips.push({ compositionId, compositionSrc, start, duration, trackIndex });
43
- }
44
- return clips;
45
- }
46
- /**
47
- * Walk a single composition's HTML for `<audio>` elements. Returns one entry
48
- * per element with attributes resolved into our shape. Composition-local —
49
- * caller adds the parent clip's start to compute absolute timing.
50
- */
51
- export function parseSceneAudios(compositionHtml) {
52
- const out = [];
53
- // `<audio>` opens may span multiple lines in our emitted HTML; capture the
54
- // full open tag (everything up to `>`).
55
- const audioRegex = /<audio\b([^>]*)>/gi;
56
- let match;
57
- while ((match = audioRegex.exec(compositionHtml)) !== null) {
58
- const attrs = match[1];
59
- const src = pickAttr(attrs, "src");
60
- if (!src)
61
- continue;
62
- const localStart = pickNumberAttr(attrs, "data-start") ?? 0;
63
- const durationRaw = pickAttr(attrs, "data-duration");
64
- const durationHint = !durationRaw || durationRaw === "auto"
65
- ? "auto"
66
- : Number(durationRaw);
67
- const volume = pickNumberAttr(attrs, "data-volume") ?? 1;
68
- const trackIndex = pickNumberAttr(attrs, "data-track-index") ?? 2;
69
- out.push({ srcRel: src, localStart, durationHint, volume, trackIndex });
70
- }
71
- return out;
72
- }
73
- /**
74
- * Default reader: read the composition file from disk relative to the
75
- * project directory. Returns `null` for missing files so the scanner can
76
- * skip them and continue.
77
- */
78
- export function makeFsCompositionReader(projectDir) {
79
- return async (compositionSrcRel) => {
80
- const abs = resolve(projectDir, compositionSrcRel);
81
- try {
82
- return await readFile(abs, "utf-8");
83
- }
84
- catch {
85
- return null;
86
- }
87
- };
88
- }
89
- /**
90
- * Top-level scan. Parses every clip in the root, loads each composition,
91
- * pulls every audio element, and resolves absolute timeline positions.
92
- *
93
- * Audio absolute start = clip.start + audio.localStart. The `clipDurationCap`
94
- * is filled in from the clip's own duration so the mux pass can trim audio
95
- * that runs past the visual end of its parent scene.
96
- */
97
- export async function scanSceneAudio(opts) {
98
- const reader = opts.readComposition ?? makeFsCompositionReader(opts.projectDir);
99
- const clips = parseRootClips(opts.rootHtml);
100
- const out = [];
101
- for (const clip of clips) {
102
- const html = await reader(clip.compositionSrc);
103
- if (!html)
104
- continue;
105
- const audios = parseSceneAudios(html);
106
- for (const audio of audios) {
107
- out.push({
108
- srcRel: audio.srcRel,
109
- srcAbs: resolve(opts.projectDir, audio.srcRel),
110
- absoluteStart: clip.start + audio.localStart,
111
- durationHint: audio.durationHint,
112
- clipDurationCap: clip.duration - audio.localStart,
113
- volume: audio.volume,
114
- trackIndex: audio.trackIndex,
115
- compositionSrc: clip.compositionSrc,
116
- });
117
- }
118
- }
119
- // Stable sort by absolute start so downstream filter graphs are deterministic.
120
- out.sort((a, b) => a.absoluteStart - b.absoluteStart);
121
- return out;
122
- }
123
- // ---------------------------------------------------------------------------
124
- // Helpers
125
- // ---------------------------------------------------------------------------
126
- function pickAttr(tag, name) {
127
- // Allow either single or double quotes; tolerate whitespace around `=`.
128
- const re = new RegExp(`\\b${escapeRegex(name)}\\s*=\\s*("([^"]*)"|'([^']*)')`);
129
- const m = tag.match(re);
130
- if (!m)
131
- return null;
132
- return m[2] ?? m[3] ?? null;
133
- }
134
- function pickNumberAttr(tag, name) {
135
- const raw = pickAttr(tag, name);
136
- if (raw === null)
137
- return null;
138
- const n = Number(raw);
139
- return Number.isFinite(n) ? n : null;
140
- }
141
- function escapeRegex(s) {
142
- return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
143
- }
144
- //# sourceMappingURL=scene-audio-scan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-audio-scan.js","sourceRoot":"","sources":["../../../src/commands/_shared/scene-audio-scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,uEAAuE;IACvE,mEAAmE;IACnE,MAAM,SAAS,GAAG,iCAAiC,CAAC;IACpD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7E,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,eAAuB;IAQvB,MAAM,GAAG,GAMJ,EAAE,CAAC;IAER,2EAA2E;IAC3E,wCAAwC;IACxC,MAAM,UAAU,GAAG,oBAAoB,CAAC;IACxC,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,YAAY,GAChB,CAAC,WAAW,IAAI,WAAW,KAAK,MAAM;YACpC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,OAAO,KAAK,EAAE,iBAAyB,EAA0B,EAAE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAKpC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC9C,aAAa,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU;gBAC5C,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,eAAe,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU;gBACjD,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACzC,wEAAwE;IACxE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,IAAY;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Unit tests for scene-audio-scan. Pure parsing — no fs touches via the
3
- * injected `readComposition` reader.
4
- */
5
- export {};
6
- //# sourceMappingURL=scene-audio-scan.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-audio-scan.test.d.ts","sourceRoot":"","sources":["../../../src/commands/_shared/scene-audio-scan.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,190 +0,0 @@
1
- /**
2
- * Unit tests for scene-audio-scan. Pure parsing — no fs touches via the
3
- * injected `readComposition` reader.
4
- */
5
- import { describe, expect, it } from "vitest";
6
- import { parseRootClips, parseSceneAudios, scanSceneAudio, } from "./scene-audio-scan.js";
7
- describe("parseRootClips", () => {
8
- it("returns one entry per <div class=\"clip\"> with all four attrs", () => {
9
- const html = `
10
- <div id="root" data-composition-id="main" data-start="0" data-duration="10">
11
- <div class="clip" data-composition-id="intro" data-composition-src="compositions/scene-intro.html" data-start="0" data-duration="3" data-track-index="1"></div>
12
- <div class="clip" data-composition-id="outro" data-composition-src="compositions/scene-outro.html" data-start="3" data-duration="4" data-track-index="1"></div>
13
- </div>`;
14
- const clips = parseRootClips(html);
15
- expect(clips).toEqual([
16
- {
17
- compositionId: "intro",
18
- compositionSrc: "compositions/scene-intro.html",
19
- start: 0,
20
- duration: 3,
21
- trackIndex: 1,
22
- },
23
- {
24
- compositionId: "outro",
25
- compositionSrc: "compositions/scene-outro.html",
26
- start: 3,
27
- duration: 4,
28
- trackIndex: 1,
29
- },
30
- ]);
31
- });
32
- it("ignores divs without class=\"clip\"", () => {
33
- const html = `<div class="backdrop" data-composition-id="x" data-start="0" data-duration="1"></div>`;
34
- expect(parseRootClips(html)).toEqual([]);
35
- });
36
- it("skips clips missing required attributes", () => {
37
- const html = `<div class="clip" data-start="0" data-duration="3"></div>`; // no composition-id/src
38
- expect(parseRootClips(html)).toEqual([]);
39
- });
40
- it("defaults trackIndex to 1 when absent", () => {
41
- const html = `<div class="clip" data-composition-id="x" data-composition-src="x.html" data-start="0" data-duration="2"></div>`;
42
- expect(parseRootClips(html)[0].trackIndex).toBe(1);
43
- });
44
- it("tolerates attribute order and whitespace", () => {
45
- const html = `<div data-start="2" class="clip"
46
- data-duration="5"
47
- data-composition-id="mid"
48
- data-composition-src="compositions/mid.html"></div>`;
49
- expect(parseRootClips(html)).toHaveLength(1);
50
- expect(parseRootClips(html)[0]).toMatchObject({
51
- compositionId: "mid",
52
- start: 2,
53
- duration: 5,
54
- });
55
- });
56
- });
57
- describe("parseSceneAudios", () => {
58
- it("extracts narration audio with all attributes", () => {
59
- const html = `
60
- <template id="scene-intro-template">
61
- <div data-composition-id="intro" data-start="0" data-duration="5">
62
- <audio
63
- id="narration"
64
- data-start="0"
65
- data-duration="auto"
66
- data-track-index="2"
67
- src="assets/narration-intro.wav"
68
- data-volume="1"
69
- ></audio>
70
- </div>
71
- </template>`;
72
- const audios = parseSceneAudios(html);
73
- expect(audios).toEqual([
74
- {
75
- srcRel: "assets/narration-intro.wav",
76
- localStart: 0,
77
- durationHint: "auto",
78
- volume: 1,
79
- trackIndex: 2,
80
- },
81
- ]);
82
- });
83
- it("treats numeric data-duration as a hard duration", () => {
84
- const html = `<audio src="x.mp3" data-start="1.5" data-duration="3.2" data-volume="0.6"></audio>`;
85
- expect(parseSceneAudios(html)[0]).toMatchObject({
86
- localStart: 1.5,
87
- durationHint: 3.2,
88
- volume: 0.6,
89
- });
90
- });
91
- it("defaults volume to 1 and trackIndex to 2 when absent", () => {
92
- const html = `<audio src="x.wav" data-start="0"></audio>`;
93
- const audios = parseSceneAudios(html);
94
- expect(audios[0]).toMatchObject({ volume: 1, trackIndex: 2, durationHint: "auto" });
95
- });
96
- it("ignores audio without src", () => {
97
- const html = `<audio data-start="0" data-duration="auto"></audio>`;
98
- expect(parseSceneAudios(html)).toEqual([]);
99
- });
100
- it("supports multiple audios in one composition (narration + music)", () => {
101
- const html = `
102
- <audio src="assets/narration-1.wav" data-start="0" data-duration="auto" data-track-index="2"></audio>
103
- <audio src="assets/music.mp3" data-start="0" data-duration="auto" data-track-index="3" data-volume="0.4"></audio>`;
104
- const audios = parseSceneAudios(html);
105
- expect(audios).toHaveLength(2);
106
- expect(audios[0].trackIndex).toBe(2);
107
- expect(audios[1]).toMatchObject({ trackIndex: 3, volume: 0.4 });
108
- });
109
- });
110
- describe("scanSceneAudio (top-level)", () => {
111
- const rootHtml = `
112
- <div id="root">
113
- <div class="clip" data-composition-id="intro" data-composition-src="compositions/scene-intro.html" data-start="0" data-duration="3" data-track-index="1"></div>
114
- <div class="clip" data-composition-id="outro" data-composition-src="compositions/scene-outro.html" data-start="3" data-duration="4" data-track-index="1"></div>
115
- </div>`;
116
- const introHtml = `
117
- <audio src="assets/narration-intro.wav" data-start="0" data-duration="auto" data-track-index="2"></audio>`;
118
- const outroHtml = `
119
- <audio src="assets/narration-outro.wav" data-start="0.5" data-duration="auto" data-track-index="2" data-volume="0.8"></audio>`;
120
- const reader = async (path) => {
121
- if (path === "compositions/scene-intro.html")
122
- return introHtml;
123
- if (path === "compositions/scene-outro.html")
124
- return outroHtml;
125
- return null;
126
- };
127
- it("walks every clip and resolves absolute timing", async () => {
128
- const result = await scanSceneAudio({
129
- projectDir: "/tmp/proj",
130
- rootHtml,
131
- readComposition: reader,
132
- });
133
- expect(result).toEqual([
134
- {
135
- srcRel: "assets/narration-intro.wav",
136
- srcAbs: "/tmp/proj/assets/narration-intro.wav",
137
- absoluteStart: 0,
138
- durationHint: "auto",
139
- clipDurationCap: 3,
140
- volume: 1,
141
- trackIndex: 2,
142
- compositionSrc: "compositions/scene-intro.html",
143
- },
144
- {
145
- srcRel: "assets/narration-outro.wav",
146
- srcAbs: "/tmp/proj/assets/narration-outro.wav",
147
- absoluteStart: 3.5,
148
- durationHint: "auto",
149
- clipDurationCap: 3.5, // 4 - 0.5 (audio.localStart)
150
- volume: 0.8,
151
- trackIndex: 2,
152
- compositionSrc: "compositions/scene-outro.html",
153
- },
154
- ]);
155
- });
156
- it("skips clips whose composition file is missing", async () => {
157
- const sparseReader = async (p) => p === "compositions/scene-intro.html" ? introHtml : null;
158
- const result = await scanSceneAudio({
159
- projectDir: "/tmp/proj",
160
- rootHtml,
161
- readComposition: sparseReader,
162
- });
163
- expect(result).toHaveLength(1);
164
- expect(result[0].srcRel).toBe("assets/narration-intro.wav");
165
- });
166
- it("skips clips with no <audio> elements", async () => {
167
- const silentReader = async () => `<div data-composition-id="x"></div>`;
168
- const result = await scanSceneAudio({
169
- projectDir: "/tmp/proj",
170
- rootHtml,
171
- readComposition: silentReader,
172
- });
173
- expect(result).toEqual([]);
174
- });
175
- it("returns audios sorted by absolute start", async () => {
176
- const reorderedRoot = `
177
- <div class="clip" data-composition-id="b" data-composition-src="b.html" data-start="5" data-duration="2"></div>
178
- <div class="clip" data-composition-id="a" data-composition-src="a.html" data-start="0" data-duration="3"></div>`;
179
- const r = async (p) => p === "a.html" || p === "b.html"
180
- ? `<audio src="x.wav" data-start="0"></audio>`
181
- : null;
182
- const result = await scanSceneAudio({
183
- projectDir: "/p",
184
- rootHtml: reorderedRoot,
185
- readComposition: r,
186
- });
187
- expect(result.map((r) => r.absoluteStart)).toEqual([0, 5]);
188
- });
189
- });
190
- //# sourceMappingURL=scene-audio-scan.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-audio-scan.test.js","sourceRoot":"","sources":["../../../src/commands/_shared/scene-audio-scan.test.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- /**
2
- * @module _shared/scene-html-emit
3
- *
4
- * Pure HTML emitters for `vibe scene add`. Each preset produces a self-contained
5
- * Hyperframes-compatible scene composition: a `<template>`-wrapped `<div
6
- * data-composition-id>` with scoped CSS, optional audio/image, and a paused
7
- * GSAP timeline registered on `window.__timelines`.
8
- *
9
- * Also exposes helpers that mutate the root index.html:
10
- * - `nextSceneStart()` — sum existing clip end-times to choose the new start
11
- * - `insertClipIntoRoot()` — splice a `<div class="clip">` reference before the
12
- * root's closing div, preserving the user's hand-edited markup
13
- * - `slugifySceneName()` — name → kebab-case scene id
14
- *
15
- * Pure functions only — no I/O. The orchestrating command (`scene add`) wires
16
- * these to the filesystem.
17
- */
18
- export type ScenePreset = "simple" | "announcement" | "explainer" | "kinetic-type" | "product-shot";
19
- export declare const SCENE_PRESETS: readonly ScenePreset[];
20
- /**
21
- * One word from a Whisper word-level transcript. Mirrors
22
- * {@link import("@vibeframe/ai-providers").TranscriptWord} but is duplicated
23
- * here so this module stays pure (no provider package import).
24
- */
25
- export interface SceneTranscriptWord {
26
- text: string;
27
- start: number;
28
- end: number;
29
- }
30
- export interface EmitSceneInput {
31
- /** Kebab-case scene id; appears in `data-composition-id` and template id. */
32
- id: string;
33
- preset: ScenePreset;
34
- /** Canvas width in px (must match the root composition). */
35
- width: number;
36
- /** Canvas height in px (must match the root composition). */
37
- height: number;
38
- /** Visible composition duration in seconds. */
39
- duration: number;
40
- /** Headline text — required for non-simple presets; defaulted from id. */
41
- headline?: string;
42
- /** Secondary text (subhead/caption). Often the narration. */
43
- subhead?: string;
44
- /** Optional small label above the headline (explainer / product-shot). */
45
- kicker?: string;
46
- /** Project-relative image path (e.g. "assets/scene-intro.png"). */
47
- imagePath?: string;
48
- /** Project-relative narration audio path (e.g. "assets/narration-intro.mp3"). */
49
- audioPath?: string;
50
- /**
51
- * Word-level timings (Whisper output) for narration sync. When supplied, the
52
- * `simple`, `explainer`, and `kinetic-type` presets render each word as its
53
- * own `<span class="word">` and animate them at their absolute audio start
54
- * times via GSAP. `announcement` and `product-shot` ignore this field —
55
- * their headlines are intentionally static.
56
- */
57
- transcript?: SceneTranscriptWord[];
58
- }
59
- /**
60
- * Slugify a free-form scene name to a kebab-case id usable in HTML attributes
61
- * and filenames. Strips diacritics, collapses whitespace, lowercases.
62
- */
63
- export declare function slugifySceneName(name: string): string;
64
- /**
65
- * Render a transcript as `<span class="word" data-i="N">…</span>` markup,
66
- * separated by literal whitespace so kerning and wrapping behave naturally.
67
- * Returns the empty string when there's nothing to render.
68
- */
69
- export declare function renderTranscriptSpans(transcript: SceneTranscriptWord[]): string;
70
- /**
71
- * Build absolute-timing GSAP tweens that fade each transcript word in at its
72
- * narration `start` time. The `targetSelector` parametrises the scope so the
73
- * same routine can drive `simple` (`.caption .word`), `explainer`
74
- * (`#subtitle .word`), or `kinetic-type` (`.kinetic .word`).
75
- *
76
- * Each tween is `tl.fromTo(sel, {opacity:0,y:10}, {opacity:1,y:0,duration:0.18}, start)`
77
- * — short enough to feel responsive at any speech rate, long enough to avoid
78
- * popping at 30fps. Words clamp to non-negative starts.
79
- */
80
- export declare function buildTranscriptTweens(transcript: SceneTranscriptWord[], targetSelector: string): string;
81
- /**
82
- * Emit the full per-scene HTML. Returns a complete `<template>`-wrapped
83
- * composition ready to write to `compositions/scene-<id>.html`.
84
- */
85
- export declare function emitSceneHtml(input: EmitSceneInput): string;
86
- /**
87
- * Sum existing `<div class="clip">` end-times to find where the next scene
88
- * should start. Returns 0 for an empty root.
89
- */
90
- export declare function nextSceneStart(rootHtml: string): number;
91
- export interface ClipReferenceInput {
92
- /** Scene id — used to derive the composition src path. */
93
- id: string;
94
- start: number;
95
- duration: number;
96
- trackIndex?: number;
97
- /** Override the default `compositions/scene-<id>.html` src. */
98
- src?: string;
99
- }
100
- /** Build the `<div class="clip" data-composition-id=... data-composition-src=...>` reference string. */
101
- export declare function buildClipReference(opts: ClipReferenceInput): string;
102
- /**
103
- * Insert a clip reference inside the root composition's `#root` div, just
104
- * before its closing `</div>`. Throws if the expected closing tag isn't
105
- * found — callers should surface this as a structured error so users know
106
- * to inspect a hand-edited root.
107
- *
108
- * Also grows the root's `data-duration` to fit the new clip's end-time.
109
- */
110
- export declare function insertClipIntoRoot(rootHtml: string, clip: ClipReferenceInput): string;
111
- /**
112
- * Read the root composition's canvas dims by parsing `data-width`/`data-height`
113
- * on the `#root` div. Returns null if either is missing — caller should fall
114
- * back to the project's aspect config.
115
- */
116
- export declare function readRootDims(rootHtml: string): {
117
- width: number;
118
- height: number;
119
- } | null;
120
- //# sourceMappingURL=scene-html-emit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-html-emit.d.ts","sourceRoot":"","sources":["../../../src/commands/_shared/scene-html-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,cAAc,GACd,WAAW,GACX,cAAc,GACd,cAAc,CAAC;AAEnB,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAMtC,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AA4BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAI/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,mBAAmB,EAAE,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,CAQR;AAwPD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CA2C3D;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAMnE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAiCrF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKvF"}