@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,228 +0,0 @@
1
- import { createInterface } from "node:readline";
2
- import { readFile, writeFile, access } from "node:fs/promises";
3
- import { resolve } from "node:path";
4
- import { config } from "dotenv";
5
- import chalk from "chalk";
6
- import { getApiKeyFromConfig } from "../config/index.js";
7
- /**
8
- * Load environment variables from .env files.
9
- * Priority: CWD .env (project-scoped) > monorepo root .env (development)
10
- * Later loads don't override earlier values, so CWD takes precedence.
11
- */
12
- export function loadEnv() {
13
- // 1. Load from current working directory (project-scoped, highest priority)
14
- config({ path: resolve(process.cwd(), ".env"), debug: false, quiet: true });
15
- // 2. Load from monorepo root if in development (won't override existing vars)
16
- const monorepoRoot = findMonorepoRoot();
17
- if (monorepoRoot && monorepoRoot !== process.cwd()) {
18
- config({ path: resolve(monorepoRoot, ".env"), debug: false, quiet: true });
19
- }
20
- }
21
- // Find monorepo root for development environments
22
- function findMonorepoRoot() {
23
- let dir = process.cwd();
24
- while (dir !== "/") {
25
- try {
26
- require.resolve(resolve(dir, "pnpm-workspace.yaml"));
27
- return dir;
28
- }
29
- catch {
30
- dir = resolve(dir, "..");
31
- }
32
- }
33
- return null;
34
- }
35
- /**
36
- * Prompt user for input (hidden for API keys)
37
- */
38
- async function prompt(question, hidden = false) {
39
- const rl = createInterface({
40
- input: process.stdin,
41
- output: process.stdout,
42
- });
43
- return new Promise((resolve) => {
44
- // For hidden input, we need to handle it differently
45
- if (hidden && process.stdin.isTTY) {
46
- process.stdout.write(question);
47
- let input = "";
48
- process.stdin.setRawMode(true);
49
- process.stdin.resume();
50
- process.stdin.setEncoding("utf8");
51
- const onData = (char) => {
52
- if (char === "\n" || char === "\r" || char === "\u0004") {
53
- process.stdin.setRawMode(false);
54
- process.stdin.pause();
55
- process.stdin.removeListener("data", onData);
56
- process.stdout.write("\n");
57
- rl.close();
58
- resolve(input);
59
- }
60
- else if (char === "\u0003") {
61
- // Ctrl+C
62
- process.exit(1);
63
- }
64
- else if (char === "\u007F" || char === "\b") {
65
- // Backspace
66
- if (input.length > 0) {
67
- input = input.slice(0, -1);
68
- }
69
- }
70
- else {
71
- input += char;
72
- }
73
- };
74
- process.stdin.on("data", onData);
75
- }
76
- else {
77
- rl.question(question, (answer) => {
78
- rl.close();
79
- resolve(answer);
80
- });
81
- }
82
- });
83
- }
84
- /**
85
- * Get API key from config, environment, or prompt
86
- */
87
- export async function getApiKey(envVar, providerName, optionValue) {
88
- // 1. Check command line option
89
- if (optionValue) {
90
- return optionValue;
91
- }
92
- // 2. Check ~/.vibeframe/config.yaml
93
- // Map env var to provider key
94
- const providerKeyMap = {
95
- ANTHROPIC_API_KEY: "anthropic",
96
- OPENAI_API_KEY: "openai",
97
- GOOGLE_API_KEY: "google",
98
- XAI_API_KEY: "xai",
99
- ELEVENLABS_API_KEY: "elevenlabs",
100
- RUNWAY_API_SECRET: "runway",
101
- KLING_API_KEY: "kling",
102
- OPENROUTER_API_KEY: "openrouter",
103
- IMGBB_API_KEY: "imgbb",
104
- REPLICATE_API_TOKEN: "replicate",
105
- };
106
- const providerKey = providerKeyMap[envVar];
107
- if (providerKey) {
108
- const configKey = await getApiKeyFromConfig(providerKey);
109
- if (configKey) {
110
- return configKey;
111
- }
112
- }
113
- // 3. Load .env and check environment
114
- loadEnv();
115
- const envValue = process.env[envVar];
116
- if (envValue) {
117
- return envValue;
118
- }
119
- // 4. Check if running in TTY (interactive terminal)
120
- if (!process.stdin.isTTY) {
121
- return null;
122
- }
123
- // 5. Prompt for API key
124
- console.log();
125
- console.log(chalk.yellow(`${providerName} API key not found.`));
126
- console.log(chalk.dim(`Set ${envVar} in .env (current directory), run 'vibe setup', or enter below.`));
127
- console.log();
128
- const apiKey = await prompt(chalk.cyan(`Enter ${providerName} API key: `), true);
129
- if (!apiKey || apiKey.trim() === "") {
130
- return null;
131
- }
132
- // 6. Ask if user wants to save to .env
133
- const save = await prompt(chalk.cyan("Save to .env for future use? (y/N): "));
134
- if (save.toLowerCase() === "y" || save.toLowerCase() === "yes") {
135
- await saveApiKeyToEnv(envVar, apiKey.trim());
136
- console.log(chalk.green("API key saved to .env"));
137
- }
138
- return apiKey.trim();
139
- }
140
- /**
141
- * Error thrown when a required API key is missing (non-interactive mode)
142
- */
143
- /** URLs where users can obtain API keys */
144
- const API_KEY_URLS = {
145
- GOOGLE_API_KEY: "https://aistudio.google.com/apikey",
146
- OPENAI_API_KEY: "https://platform.openai.com/api-keys",
147
- ANTHROPIC_API_KEY: "https://console.anthropic.com/settings/keys",
148
- XAI_API_KEY: "https://console.x.ai",
149
- ELEVENLABS_API_KEY: "https://elevenlabs.io/app/settings/api-keys",
150
- RUNWAY_API_SECRET: "https://app.runwayml.com/settings/api-keys",
151
- KLING_API_KEY: "https://klingai.com/dev",
152
- REPLICATE_API_TOKEN: "https://replicate.com/account/api-tokens",
153
- };
154
- export class ApiKeyError extends Error {
155
- envVar;
156
- providerName;
157
- constructor(envVar, providerName) {
158
- const keyUrl = API_KEY_URLS[envVar];
159
- const urlHint = keyUrl ? `\n Get key: ${keyUrl}` : "";
160
- super(`${providerName} API key required.\n` +
161
- ` Set ${envVar} in .env, or run: vibe setup${urlHint}`);
162
- this.name = "ApiKeyError";
163
- this.envVar = envVar;
164
- this.providerName = providerName;
165
- }
166
- toStructured() {
167
- const keyUrl = API_KEY_URLS[this.envVar];
168
- const urlHint = keyUrl ? ` Get key: ${keyUrl}` : "";
169
- return {
170
- success: false,
171
- error: `${this.providerName} API key required.`,
172
- code: "API_KEY_MISSING",
173
- exitCode: 4,
174
- suggestion: `Set ${this.envVar} in .env, or run: vibe setup. Check available features: vibe doctor --json.${urlHint}`,
175
- retryable: false,
176
- };
177
- }
178
- }
179
- /**
180
- * Check if an API key is available without prompting or side effects.
181
- */
182
- export function hasApiKey(envVar) {
183
- loadEnv();
184
- if (process.env[envVar])
185
- return true;
186
- const key = getApiKeyFromConfig(envVar);
187
- return !!key;
188
- }
189
- /**
190
- * Get API key or throw ApiKeyError if not found.
191
- * Use this instead of getApiKey() + manual null check.
192
- */
193
- export async function requireApiKey(envVar, providerName, cliOverride) {
194
- const key = await getApiKey(envVar, providerName, cliOverride);
195
- if (!key) {
196
- throw new ApiKeyError(envVar, providerName);
197
- }
198
- return key;
199
- }
200
- /**
201
- * Save API key to .env file
202
- */
203
- async function saveApiKeyToEnv(envVar, apiKey) {
204
- const envPath = resolve(process.cwd(), ".env");
205
- let content = "";
206
- try {
207
- await access(envPath);
208
- content = await readFile(envPath, "utf-8");
209
- }
210
- catch {
211
- // File doesn't exist, will create new
212
- }
213
- // Check if variable already exists
214
- const regex = new RegExp(`^${envVar}=.*$`, "m");
215
- if (regex.test(content)) {
216
- // Replace existing
217
- content = content.replace(regex, `${envVar}=${apiKey}`);
218
- }
219
- else {
220
- // Append new
221
- if (content && !content.endsWith("\n")) {
222
- content += "\n";
223
- }
224
- content += `${envVar}=${apiKey}\n`;
225
- }
226
- await writeFile(envPath, content, "utf-8");
227
- }
228
- //# sourceMappingURL=api-key.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/utils/api-key.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api-key.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key.test.d.ts","sourceRoot":"","sources":["../../src/utils/api-key.test.ts"],"names":[],"mappings":""}
@@ -1,35 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { loadEnv, getApiKey } from "./api-key.js";
3
- describe("api-key utilities", () => {
4
- const originalEnv = process.env;
5
- beforeEach(() => {
6
- vi.resetModules();
7
- process.env = { ...originalEnv };
8
- });
9
- afterEach(() => {
10
- process.env = originalEnv;
11
- });
12
- describe("loadEnv", () => {
13
- it("does not throw when .env file is missing", () => {
14
- expect(() => loadEnv()).not.toThrow();
15
- });
16
- });
17
- describe("getApiKey", () => {
18
- it("returns option value if provided", async () => {
19
- const result = await getApiKey("TEST_KEY", "Test", "my-api-key");
20
- expect(result).toBe("my-api-key");
21
- });
22
- it("returns env value if option not provided", async () => {
23
- process.env.TEST_KEY = "env-api-key";
24
- const result = await getApiKey("TEST_KEY", "Test");
25
- expect(result).toBe("env-api-key");
26
- });
27
- it("returns null when no key available and not TTY", async () => {
28
- // In test environment, stdin is not TTY, so it should return null
29
- delete process.env.TEST_KEY;
30
- const result = await getApiKey("TEST_KEY", "Test");
31
- expect(result).toBeNull();
32
- });
33
- });
34
- });
35
- //# sourceMappingURL=api-key.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key.test.js","sourceRoot":"","sources":["../../src/utils/api-key.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAElD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,kEAAkE;YAClE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Get the duration of an audio file using ffprobe
3
- * @param filePath - Path to the audio file
4
- * @returns Duration in seconds
5
- */
6
- export declare function getAudioDuration(filePath: string): Promise<number>;
7
- /**
8
- * Get the duration of a video file using ffprobe
9
- * @param filePath - Path to the video file
10
- * @returns Duration in seconds
11
- */
12
- export declare function getVideoDuration(filePath: string): Promise<number>;
13
- /**
14
- * Extend a video naturally to match target duration using progressive techniques.
15
- * Uses slowdown, frame interpolation, and freeze frames based on extension ratio.
16
- *
17
- * @param videoPath - Path to the source video
18
- * @param targetDuration - Target duration in seconds
19
- * @param outputPath - Path for the extended video output
20
- * @returns Promise that resolves when extension is complete
21
- */
22
- export declare function extendVideoNaturally(videoPath: string, targetDuration: number, outputPath: string): Promise<void>;
23
- //# sourceMappingURL=audio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -1,79 +0,0 @@
1
- import { execSafe, ffprobeDuration } from "./exec-safe.js";
2
- /**
3
- * Get the duration of an audio file using ffprobe
4
- * @param filePath - Path to the audio file
5
- * @returns Duration in seconds
6
- */
7
- export async function getAudioDuration(filePath) {
8
- try {
9
- return await ffprobeDuration(filePath);
10
- }
11
- catch (error) {
12
- const message = error instanceof Error ? error.message : String(error);
13
- throw new Error(`Failed to get audio duration: ${message}`);
14
- }
15
- }
16
- /**
17
- * Get the duration of a video file using ffprobe
18
- * @param filePath - Path to the video file
19
- * @returns Duration in seconds
20
- */
21
- export async function getVideoDuration(filePath) {
22
- try {
23
- return await ffprobeDuration(filePath);
24
- }
25
- catch (error) {
26
- const message = error instanceof Error ? error.message : String(error);
27
- throw new Error(`Failed to get video duration: ${message}`);
28
- }
29
- }
30
- /**
31
- * Extend a video naturally to match target duration using progressive techniques.
32
- * Uses slowdown, frame interpolation, and freeze frames based on extension ratio.
33
- *
34
- * @param videoPath - Path to the source video
35
- * @param targetDuration - Target duration in seconds
36
- * @param outputPath - Path for the extended video output
37
- * @returns Promise that resolves when extension is complete
38
- */
39
- export async function extendVideoNaturally(videoPath, targetDuration, outputPath) {
40
- const videoDuration = await getVideoDuration(videoPath);
41
- const ratio = targetDuration / videoDuration;
42
- if (ratio <= 1.0) {
43
- // No extension needed, just copy
44
- const { copyFile } = await import("node:fs/promises");
45
- await copyFile(videoPath, outputPath);
46
- return;
47
- }
48
- if (ratio <= 1.15) {
49
- // 0-15% extension: Simple slowdown using setpts
50
- // setpts factor = 1/ratio to slow down the video
51
- const slowFactor = (1 / ratio).toFixed(4);
52
- await execSafe("ffmpeg", ["-y", "-i", videoPath, "-filter:v", `setpts=${slowFactor}*PTS`, "-an", outputPath]);
53
- }
54
- else if (ratio <= 1.4) {
55
- // 15-40% extension: Frame interpolation + slowdown
56
- // minterpolate creates smooth slow-motion effect
57
- const slowFactor = (1 / ratio).toFixed(4);
58
- await execSafe("ffmpeg", ["-y", "-i", videoPath, "-filter:v", `minterpolate=fps=60:mi_mode=mci,setpts=${slowFactor}*PTS`, "-an", outputPath]);
59
- }
60
- else {
61
- // 40%+ extension: Slowdown to 0.7x speed + freeze last frame for remainder
62
- // First, slow down to get ~43% extension
63
- const slowRatio = 0.7;
64
- const slowedDuration = videoDuration / slowRatio;
65
- const freezeDuration = targetDuration - slowedDuration;
66
- if (freezeDuration <= 0) {
67
- // Can achieve target with slowdown alone
68
- const slowFactor = (1 / ratio).toFixed(4);
69
- await execSafe("ffmpeg", ["-y", "-i", videoPath, "-filter:v", `minterpolate=fps=60:mi_mode=mci,setpts=${slowFactor}*PTS`, "-an", outputPath]);
70
- }
71
- else {
72
- // Need slowdown + freeze frame
73
- // Use tpad to extend the last frame
74
- const slowFactor = (1 / slowRatio).toFixed(4); // ~1.43 for 0.7x speed
75
- await execSafe("ffmpeg", ["-y", "-i", videoPath, "-filter:v", `setpts=${slowFactor}*PTS,tpad=stop_mode=clone:stop_duration=${freezeDuration.toFixed(2)}`, "-an", outputPath]);
76
- }
77
- }
78
- }
79
- //# sourceMappingURL=audio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/utils/audio.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /** Safe async exec — no shell, args as array */
2
- export declare function execSafe(cmd: string, args: string[], options?: {
3
- timeout?: number;
4
- maxBuffer?: number;
5
- }): Promise<{
6
- stdout: string;
7
- stderr: string;
8
- }>;
9
- /** Safe sync exec — no shell, args as array */
10
- export declare function execSafeSync(cmd: string, args: string[], options?: {
11
- stdio?: "pipe" | "ignore";
12
- }): string;
13
- /** Shorthand: ffprobe duration query */
14
- export declare function ffprobeDuration(filePath: string): Promise<number>;
15
- /** Shorthand: ffprobe video dimensions */
16
- export declare function ffprobeVideoSize(filePath: string): Promise<{
17
- width: number;
18
- height: number;
19
- }>;
20
- /** Shorthand: check if a command exists */
21
- export declare function commandExists(cmd: string): boolean;
22
- //# sourceMappingURL=exec-safe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-safe.d.ts","sourceRoot":"","sources":["../../src/utils/exec-safe.ts"],"names":[],"mappings":"AAKA,gDAAgD;AAChD,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAK7C;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GACtC,MAAM,CAKR;AAED,wCAAwC;AACxC,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAavE;AAED,0CAA0C;AAC1C,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB5C;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD"}
@@ -1,62 +0,0 @@
1
- import { execFile, execFileSync } from "node:child_process";
2
- import { promisify } from "node:util";
3
- const execFileAsync = promisify(execFile);
4
- /** Safe async exec — no shell, args as array */
5
- export async function execSafe(cmd, args, options) {
6
- return execFileAsync(cmd, args, {
7
- timeout: options?.timeout,
8
- maxBuffer: options?.maxBuffer ?? 50 * 1024 * 1024,
9
- });
10
- }
11
- /** Safe sync exec — no shell, args as array */
12
- export function execSafeSync(cmd, args, options) {
13
- return execFileSync(cmd, args, {
14
- encoding: "utf-8",
15
- stdio: options?.stdio ?? "pipe",
16
- });
17
- }
18
- /** Shorthand: ffprobe duration query */
19
- export async function ffprobeDuration(filePath) {
20
- const { stdout } = await execSafe("ffprobe", [
21
- "-v",
22
- "error",
23
- "-show_entries",
24
- "format=duration",
25
- "-of",
26
- "default=noprint_wrappers=1:nokey=1",
27
- filePath,
28
- ]);
29
- const duration = parseFloat(stdout.trim());
30
- if (isNaN(duration))
31
- throw new Error(`Invalid duration: ${stdout}`);
32
- return duration;
33
- }
34
- /** Shorthand: ffprobe video dimensions */
35
- export async function ffprobeVideoSize(filePath) {
36
- const { stdout } = await execSafe("ffprobe", [
37
- "-v",
38
- "error",
39
- "-select_streams",
40
- "v:0",
41
- "-show_entries",
42
- "stream=width,height",
43
- "-of",
44
- "csv=p=0:s=x",
45
- filePath,
46
- ]);
47
- const [w, h] = stdout.trim().split("x").map(Number);
48
- if (isNaN(w) || isNaN(h))
49
- throw new Error(`Invalid dimensions: ${stdout.trim()}`);
50
- return { width: w, height: h };
51
- }
52
- /** Shorthand: check if a command exists */
53
- export function commandExists(cmd) {
54
- try {
55
- execFileSync("which", [cmd], { stdio: "ignore" });
56
- return true;
57
- }
58
- catch {
59
- return false;
60
- }
61
- }
62
- //# sourceMappingURL=exec-safe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-safe.js","sourceRoot":"","sources":["../../src/utils/exec-safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,IAAc,EACd,OAAkD;IAElD,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;QAC9B,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;KAClD,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,IAAc,EACd,OAAuC;IAEvC,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,MAAM;KAChC,CAAC,CAAC;AACL,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;QAC3C,IAAI;QACJ,OAAO;QACP,eAAe;QACf,iBAAiB;QACjB,KAAK;QACL,oCAAoC;QACpC,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACpE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB;IAEhB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;QAC3C,IAAI;QACJ,OAAO;QACP,iBAAiB;QACjB,KAAK;QACL,eAAe;QACf,qBAAqB;QACrB,KAAK;QACL,aAAa;QACb,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * First-run detection for VibeFrame CLI
3
- * Shows a welcome banner when user has never configured the tool
4
- */
5
- /**
6
- * Check if this is the user's first run (no config and no env vars set)
7
- */
8
- export declare function isFirstRun(): Promise<boolean>;
9
- /**
10
- * Mark that the first-run banner has been shown (won't show again)
11
- */
12
- export declare function markBannerShown(): Promise<void>;
13
- /**
14
- * Show a friendly welcome banner for first-time users
15
- */
16
- export declare function showFirstRunBanner(): void;
17
- //# sourceMappingURL=first-run.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"first-run.d.ts","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA4BnD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAczC"}
@@ -1,73 +0,0 @@
1
- /**
2
- * First-run detection for VibeFrame CLI
3
- * Shows a welcome banner when user has never configured the tool
4
- */
5
- import { access, writeFile, mkdir } from "node:fs/promises";
6
- import { dirname } from "node:path";
7
- import chalk from "chalk";
8
- import { CONFIG_PATH } from "../config/index.js";
9
- import { PROVIDER_ENV_VARS } from "../config/schema.js";
10
- import { loadEnv } from "./api-key.js";
11
- /** Marker file to track if banner has been shown */
12
- const BANNER_SHOWN_PATH = CONFIG_PATH.replace(/config\.yaml$/, ".banner-shown");
13
- /**
14
- * Check if this is the user's first run (no config and no env vars set)
15
- */
16
- export async function isFirstRun() {
17
- // Check if banner was already shown
18
- try {
19
- await access(BANNER_SHOWN_PATH);
20
- return false;
21
- }
22
- catch {
23
- // Banner not shown yet
24
- }
25
- // Check if config file exists
26
- try {
27
- await access(CONFIG_PATH);
28
- return false;
29
- }
30
- catch {
31
- // Config doesn't exist, check env vars
32
- }
33
- // Load .env files
34
- loadEnv();
35
- // Check if any provider API key is set in environment
36
- for (const envVar of Object.values(PROVIDER_ENV_VARS)) {
37
- if (process.env[envVar]) {
38
- return false;
39
- }
40
- }
41
- return true;
42
- }
43
- /**
44
- * Mark that the first-run banner has been shown (won't show again)
45
- */
46
- export async function markBannerShown() {
47
- try {
48
- await mkdir(dirname(BANNER_SHOWN_PATH), { recursive: true });
49
- await writeFile(BANNER_SHOWN_PATH, new Date().toISOString());
50
- }
51
- catch {
52
- // Best-effort
53
- }
54
- }
55
- /**
56
- * Show a friendly welcome banner for first-time users
57
- */
58
- export function showFirstRunBanner() {
59
- console.log();
60
- console.log(chalk.cyan.bold(" Welcome to VibeFrame!"));
61
- console.log(chalk.dim(" AI-native video editing from your terminal."));
62
- console.log();
63
- console.log(` ${chalk.white("1.")} ${chalk.green("vibe setup")} Configure API keys ${chalk.dim("(1 min)")}`);
64
- console.log(` ${chalk.white("2.")} ${chalk.green("vibe doctor")} Check system health`);
65
- console.log(` ${chalk.white("3.")} ${chalk.green("vibe --help")} See all commands`);
66
- console.log();
67
- console.log(chalk.dim(" No API keys yet? Try these offline:"));
68
- console.log(chalk.dim(" vibe edit silence-cut video.mp4 -o clean.mp4"));
69
- console.log(chalk.dim(" vibe detect scenes video.mp4"));
70
- console.log(chalk.dim(" vibe edit fade video.mp4 -o faded.mp4 --fade-in 1 --fade-out 1"));
71
- console.log();
72
- }
73
- //# sourceMappingURL=first-run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"first-run.js","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Input validation utilities for agent-safety (agentic CLI hardening).
3
- *
4
- * Defends against: path traversal, control character injection,
5
- * and overly long inputs that agents may hallucinate.
6
- */
7
- /**
8
- * Reject strings containing control characters (below ASCII 0x20,
9
- * excluding tab, newline, CR which are sometimes intentional).
10
- */
11
- export declare function rejectControlChars(value: string, fieldName?: string): string;
12
- /**
13
- * Validate that a file path does not escape the sandbox directory.
14
- * Returns the resolved absolute path.
15
- */
16
- export declare function validateSafePath(inputPath: string, sandbox?: string): string;
17
- /**
18
- * Validate output path — must not traverse outside cwd unless absolute.
19
- * Allows absolute paths (user-specified like /tmp/output.mp4).
20
- */
21
- export declare function validateOutputPath(outputPath: string): string;
22
- /**
23
- * Validate a user-provided string (prompt text, etc.) for sanity.
24
- * Rejects control chars and caps length to prevent context abuse.
25
- */
26
- export declare function validateTextInput(value: string, fieldName?: string, maxLength?: number): string;
27
- //# sourceMappingURL=input-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/utils/input-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,MAAM,CAO7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,SAAU,EACnB,SAAS,SAAQ,GAChB,MAAM,CAQR"}