@vibeframe/cli 0.55.0 → 0.55.1

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 +63452 -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,585 +0,0 @@
1
- /**
2
- * ai-edit-cli.ts — CLI command registrations for video/audio editing commands.
3
- *
4
- * Commands: silence-cut, caption, noise-reduce, fade, translate-srt, jump-cut
5
- *
6
- * This file contains only the Commander.js command definitions (UI layer).
7
- * All execute functions and types live in ai-edit.ts.
8
- *
9
- * Extracted from ai-edit.ts as part of modularisation.
10
- * ai.ts calls registerEditCommands(aiCommand).
11
- */
12
- import { resolve, extname, basename } from 'node:path';
13
- import { existsSync } from 'node:fs';
14
- import { commandExists } from '../utils/exec-safe.js';
15
- import chalk from 'chalk';
16
- import ora from 'ora';
17
- import { getApiKey } from '../utils/api-key.js';
18
- import { executeSilenceCut, executeCaption, executeNoiseReduce, executeFade, executeTranslateSrt, executeJumpCut, } from './ai-edit.js';
19
- import { isJsonMode, outputResult, exitWithError, authError, notFoundError, apiError, usageError, generalError } from "./output.js";
20
- import { rejectControlChars, validateOutputPath } from "./validate.js";
21
- // ── Command registrations ───────────────────────────────────────────────────
22
- export function registerEditCommands(aiCommand) {
23
- // ============================================================================
24
- aiCommand
25
- .command("silence-cut")
26
- .alias("sc")
27
- .description("Remove silent segments from video (FFmpeg default, or Gemini for smart detection)")
28
- .argument("<video>", "Video file path")
29
- .option("-o, --output <path>", "Output file path (default: <name>-cut.<ext>)")
30
- .option("-n, --noise <dB>", "Silence threshold in dB (default: -30)", "-30")
31
- .option("-d, --min-duration <seconds>", "Minimum silence duration to cut (default: 0.5)", "0.5")
32
- .option("--padding <seconds>", "Padding around non-silent segments (default: 0.1)", "0.1")
33
- .option("--analyze-only", "Only detect silence, don't cut")
34
- .option("--use-gemini", "Use Gemini Video Understanding for context-aware silence detection")
35
- .option("-m, --model <model>", "Gemini model (default: flash)")
36
- .option("--low-res", "Low resolution mode for longer videos (Gemini only)")
37
- .option("-k, --api-key <key>", "Google API key override (or set GOOGLE_API_KEY env)")
38
- .option("--dry-run", "Preview parameters without executing")
39
- .addHelpText("after", `
40
- Examples:
41
- $ vibe edit silence-cut interview.mp4 -o clean.mp4
42
- $ vibe ed sc podcast.mp4 -o trimmed.mp4 -n -25 -d 1.0
43
- $ vibe ed sc video.mp4 --use-gemini -o smart-cut.mp4 # AI-powered detection
44
- $ vibe ed sc video.mp4 --analyze-only # Detect only, no cut
45
- $ vibe ed sc video.mp4 --dry-run --json
46
-
47
- No API key needed (FFmpeg only). Use --use-gemini for smart detection (requires GOOGLE_API_KEY).`)
48
- .action(async (videoPath, options) => {
49
- try {
50
- if (options.output) {
51
- validateOutputPath(options.output);
52
- }
53
- const absVideoPath = resolve(process.cwd(), videoPath);
54
- if (!existsSync(absVideoPath)) {
55
- exitWithError(notFoundError(absVideoPath));
56
- }
57
- // Check FFmpeg
58
- if (!commandExists("ffmpeg")) {
59
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
60
- }
61
- const ext = extname(videoPath);
62
- const name = basename(videoPath, ext);
63
- const outputPath = options.output || `${name}-cut${ext}`;
64
- const useGemini = options.useGemini || false;
65
- if (options.dryRun) {
66
- outputResult({
67
- dryRun: true,
68
- command: "edit silence-cut",
69
- params: {
70
- videoPath: absVideoPath,
71
- noiseThreshold: parseFloat(options.noise),
72
- minDuration: parseFloat(options.minDuration),
73
- padding: parseFloat(options.padding),
74
- useGemini,
75
- analyzeOnly: options.analyzeOnly || false,
76
- },
77
- });
78
- return;
79
- }
80
- const spinnerText = useGemini
81
- ? "Analyzing video with Gemini (visual + audio)..."
82
- : "Detecting silence...";
83
- const spinner = ora(spinnerText).start();
84
- const result = await executeSilenceCut({
85
- videoPath: absVideoPath,
86
- outputPath: resolve(process.cwd(), outputPath),
87
- noiseThreshold: parseFloat(options.noise),
88
- minDuration: parseFloat(options.minDuration),
89
- padding: parseFloat(options.padding),
90
- analyzeOnly: options.analyzeOnly || false,
91
- useGemini,
92
- model: options.model,
93
- lowRes: options.lowRes,
94
- apiKey: options.apiKey,
95
- });
96
- if (!result.success) {
97
- spinner.fail("Silence cut failed");
98
- exitWithError(apiError(result.error || "Silence cut failed", true));
99
- }
100
- spinner.succeed(chalk.green("Silence detection complete"));
101
- if (isJsonMode()) {
102
- outputResult({
103
- success: true,
104
- method: result.method,
105
- totalDuration: result.totalDuration,
106
- silentPeriods: result.silentPeriods,
107
- silentDuration: result.silentDuration,
108
- outputPath: result.outputPath,
109
- });
110
- return;
111
- }
112
- console.log();
113
- console.log(chalk.bold.cyan("Silence Analysis"));
114
- console.log(chalk.dim("─".repeat(60)));
115
- console.log(`Detection method: ${chalk.bold(result.method === "gemini" ? "Gemini Video Understanding" : "FFmpeg silencedetect")}`);
116
- console.log(`Total duration: ${chalk.bold(result.totalDuration.toFixed(1))}s`);
117
- console.log(`Silent periods: ${chalk.bold(String(result.silentPeriods.length))}`);
118
- console.log(`Silent duration: ${chalk.bold(result.silentDuration.toFixed(1))}s`);
119
- console.log(`Non-silent duration: ${chalk.bold((result.totalDuration - result.silentDuration).toFixed(1))}s`);
120
- if (result.silentPeriods.length > 0) {
121
- console.log();
122
- console.log(chalk.dim("Silent periods:"));
123
- for (const period of result.silentPeriods) {
124
- console.log(chalk.dim(` ${period.start.toFixed(2)}s - ${period.end.toFixed(2)}s (${period.duration.toFixed(2)}s)`));
125
- }
126
- }
127
- if (!options.analyzeOnly && result.outputPath) {
128
- console.log();
129
- console.log(chalk.green(`Output: ${result.outputPath}`));
130
- console.log(chalk.dim(`Removed ${result.silentDuration.toFixed(1)}s of silence`));
131
- }
132
- console.log();
133
- }
134
- catch (error) {
135
- exitWithError(apiError(`Silence cut failed: ${error instanceof Error ? error.message : String(error)}`, true));
136
- }
137
- });
138
- // ============================================================================
139
- // Caption Command
140
- // ============================================================================
141
- aiCommand
142
- .command("caption")
143
- .alias("cap")
144
- .description("Transcribe and burn styled captions onto video (Whisper + FFmpeg)")
145
- .argument("<video>", "Video file path")
146
- .option("-o, --output <path>", "Output file path (default: <name>-captioned.<ext>)")
147
- .option("-s, --style <style>", "Caption style: minimal, bold, outline, karaoke (default: bold)", "bold")
148
- .option("--font-size <pixels>", "Override auto-calculated font size")
149
- .option("--color <color>", "Font color (default: white)", "white")
150
- .option("-l, --language <lang>", "Language code for transcription (e.g., en, ko)")
151
- .option("--position <pos>", "Caption position: top, center, bottom (default: bottom)", "bottom")
152
- .option("-k, --api-key <key>", "OpenAI API key (or set OPENAI_API_KEY env)")
153
- .option("--dry-run", "Preview parameters without executing")
154
- .addHelpText("after", `
155
- Examples:
156
- $ vibe edit caption video.mp4 -o captioned.mp4
157
- $ vibe ed cap video.mp4 -o out.mp4 -s bold --position top
158
- $ vibe ed cap video.mp4 -o out.mp4 -l ko # Korean transcription
159
- $ vibe ed cap video.mp4 -o out.mp4 -s karaoke # Karaoke-style
160
- $ vibe ed cap video.mp4 --dry-run --json
161
-
162
- Requires: OPENAI_API_KEY (Whisper transcription) + FFmpeg`)
163
- .action(async (videoPath, options) => {
164
- try {
165
- if (options.output) {
166
- validateOutputPath(options.output);
167
- }
168
- const absVideoPath = resolve(process.cwd(), videoPath);
169
- if (!existsSync(absVideoPath)) {
170
- exitWithError(notFoundError(absVideoPath));
171
- }
172
- // Check FFmpeg
173
- if (!commandExists("ffmpeg")) {
174
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
175
- }
176
- if (options.dryRun) {
177
- outputResult({
178
- dryRun: true,
179
- command: "edit caption",
180
- params: {
181
- videoPath: absVideoPath,
182
- style: options.style,
183
- fontSize: options.fontSize ? parseInt(options.fontSize) : undefined,
184
- fontColor: options.color,
185
- language: options.language,
186
- position: options.position,
187
- },
188
- });
189
- return;
190
- }
191
- const apiKey = await getApiKey("OPENAI_API_KEY", "OpenAI", options.apiKey);
192
- if (!apiKey) {
193
- exitWithError(authError("OPENAI_API_KEY", "OpenAI"));
194
- }
195
- const ext = extname(videoPath);
196
- const name = basename(videoPath, ext);
197
- const outputPath = options.output || `${name}-captioned${ext}`;
198
- const spinner = ora("Starting caption process...").start();
199
- const result = await executeCaption({
200
- videoPath: absVideoPath,
201
- outputPath: resolve(process.cwd(), outputPath),
202
- style: options.style,
203
- fontSize: options.fontSize ? parseInt(options.fontSize) : undefined,
204
- fontColor: options.color,
205
- language: options.language,
206
- position: options.position,
207
- apiKey,
208
- });
209
- if (!result.success) {
210
- spinner.fail("Caption failed");
211
- exitWithError(apiError(result.error || "Caption failed", true));
212
- }
213
- spinner.succeed(chalk.green("Captions applied"));
214
- if (isJsonMode()) {
215
- outputResult({
216
- success: true,
217
- segmentCount: result.segmentCount,
218
- style: options.style || "bold",
219
- outputPath: result.outputPath,
220
- srtPath: result.srtPath,
221
- });
222
- return;
223
- }
224
- console.log();
225
- console.log(chalk.bold.cyan("Caption Result"));
226
- console.log(chalk.dim("─".repeat(60)));
227
- console.log(`Segments transcribed: ${chalk.bold(String(result.segmentCount))}`);
228
- console.log(`Style: ${chalk.bold(options.style || "bold")}`);
229
- console.log(`Output: ${chalk.green(result.outputPath)}`);
230
- if (result.srtPath) {
231
- console.log(`SRT file: ${chalk.dim(result.srtPath)}`);
232
- }
233
- console.log();
234
- }
235
- catch (error) {
236
- exitWithError(apiError(`Caption failed: ${error instanceof Error ? error.message : String(error)}`, true));
237
- }
238
- });
239
- // ============================================================================
240
- // Noise Reduce Command
241
- // ============================================================================
242
- aiCommand
243
- .command("noise-reduce")
244
- .description("Remove background noise from audio/video using FFmpeg (no API key needed)")
245
- .argument("<input>", "Audio or video file path")
246
- .option("-o, --output <path>", "Output file path (default: <name>-denoised.<ext>)")
247
- .option("-s, --strength <level>", "Noise reduction strength: low, medium, high (default: medium)", "medium")
248
- .option("-n, --noise-floor <dB>", "Custom noise floor in dB (overrides strength preset)")
249
- .option("--dry-run", "Preview parameters without executing")
250
- .action(async (inputPath, options) => {
251
- try {
252
- if (options.output) {
253
- validateOutputPath(options.output);
254
- }
255
- const absInputPath = resolve(process.cwd(), inputPath);
256
- if (!existsSync(absInputPath)) {
257
- exitWithError(notFoundError(absInputPath));
258
- }
259
- if (!commandExists("ffmpeg")) {
260
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
261
- }
262
- if (options.dryRun) {
263
- outputResult({
264
- dryRun: true,
265
- command: "edit noise-reduce",
266
- params: {
267
- inputPath: absInputPath,
268
- strength: options.strength,
269
- noiseFloor: options.noiseFloor ? parseFloat(options.noiseFloor) : undefined,
270
- },
271
- });
272
- return;
273
- }
274
- const ext = extname(inputPath);
275
- const name = basename(inputPath, ext);
276
- const outputPath = options.output || `${name}-denoised${ext}`;
277
- const spinner = ora("Applying noise reduction...").start();
278
- const result = await executeNoiseReduce({
279
- inputPath: absInputPath,
280
- outputPath: resolve(process.cwd(), outputPath),
281
- strength: options.strength,
282
- noiseFloor: options.noiseFloor ? parseFloat(options.noiseFloor) : undefined,
283
- });
284
- if (!result.success) {
285
- spinner.fail("Noise reduction failed");
286
- exitWithError(apiError(result.error || "Noise reduction failed", true));
287
- }
288
- spinner.succeed(chalk.green("Noise reduction complete"));
289
- if (isJsonMode()) {
290
- outputResult({
291
- success: true,
292
- inputDuration: result.inputDuration,
293
- strength: options.strength || "medium",
294
- outputPath: result.outputPath,
295
- });
296
- return;
297
- }
298
- console.log();
299
- console.log(chalk.bold.cyan("Noise Reduction Result"));
300
- console.log(chalk.dim("─".repeat(60)));
301
- console.log(`Input duration: ${chalk.bold(result.inputDuration.toFixed(1))}s`);
302
- console.log(`Strength: ${chalk.bold(options.strength || "medium")}`);
303
- console.log(`Output: ${chalk.green(result.outputPath)}`);
304
- console.log();
305
- }
306
- catch (error) {
307
- exitWithError(generalError(`Noise reduction failed: ${error instanceof Error ? error.message : String(error)}`));
308
- }
309
- });
310
- // ============================================================================
311
- // Fade Command
312
- // ============================================================================
313
- aiCommand
314
- .command("fade")
315
- .description("Apply fade in/out effects to video (FFmpeg only, no API key needed)")
316
- .argument("<video>", "Video file path")
317
- .option("-o, --output <path>", "Output file path (default: <name>-faded.<ext>)")
318
- .option("--fade-in <seconds>", "Fade-in duration in seconds (default: 1)", "1")
319
- .option("--fade-out <seconds>", "Fade-out duration in seconds (default: 1)", "1")
320
- .option("--audio-only", "Apply fade to audio only (video stream copied)")
321
- .option("--video-only", "Apply fade to video only (audio stream copied)")
322
- .option("--dry-run", "Preview parameters without executing")
323
- .action(async (videoPath, options) => {
324
- try {
325
- if (options.output) {
326
- validateOutputPath(options.output);
327
- }
328
- const absVideoPath = resolve(process.cwd(), videoPath);
329
- if (!existsSync(absVideoPath)) {
330
- exitWithError(notFoundError(absVideoPath));
331
- }
332
- if (!commandExists("ffmpeg")) {
333
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
334
- }
335
- if (options.dryRun) {
336
- outputResult({
337
- dryRun: true,
338
- command: "edit fade",
339
- params: {
340
- videoPath: absVideoPath,
341
- fadeIn: parseFloat(options.fadeIn),
342
- fadeOut: parseFloat(options.fadeOut),
343
- audioOnly: options.audioOnly || false,
344
- videoOnly: options.videoOnly || false,
345
- },
346
- });
347
- return;
348
- }
349
- const ext = extname(videoPath);
350
- const name = basename(videoPath, ext);
351
- const outputPath = options.output || `${name}-faded${ext}`;
352
- const spinner = ora("Applying fade effects...").start();
353
- const result = await executeFade({
354
- videoPath: absVideoPath,
355
- outputPath: resolve(process.cwd(), outputPath),
356
- fadeIn: parseFloat(options.fadeIn),
357
- fadeOut: parseFloat(options.fadeOut),
358
- audioOnly: options.audioOnly || false,
359
- videoOnly: options.videoOnly || false,
360
- });
361
- if (!result.success) {
362
- spinner.fail("Fade failed");
363
- exitWithError(generalError(result.error || "Fade failed"));
364
- }
365
- spinner.succeed(chalk.green("Fade effects applied"));
366
- if (isJsonMode()) {
367
- outputResult({
368
- success: true,
369
- totalDuration: result.totalDuration,
370
- fadeInApplied: result.fadeInApplied,
371
- fadeOutApplied: result.fadeOutApplied,
372
- outputPath: result.outputPath,
373
- });
374
- return;
375
- }
376
- console.log();
377
- console.log(chalk.bold.cyan("Fade Result"));
378
- console.log(chalk.dim("─".repeat(60)));
379
- console.log(`Total duration: ${chalk.bold(result.totalDuration.toFixed(1))}s`);
380
- if (result.fadeInApplied)
381
- console.log(`Fade-in: ${chalk.bold(options.fadeIn)}s`);
382
- if (result.fadeOutApplied)
383
- console.log(`Fade-out: ${chalk.bold(options.fadeOut)}s`);
384
- console.log(`Output: ${chalk.green(result.outputPath)}`);
385
- console.log();
386
- }
387
- catch (error) {
388
- exitWithError(generalError(`Fade failed: ${error instanceof Error ? error.message : String(error)}`));
389
- }
390
- });
391
- // ============================================================================
392
- // Translate SRT Command
393
- // ============================================================================
394
- aiCommand
395
- .command("translate-srt")
396
- .description("Translate SRT subtitle file to another language (Claude/OpenAI)")
397
- .argument("<srt>", "SRT file path")
398
- .option("-t, --target <language>", "Target language (e.g., ko, es, fr, ja, zh)")
399
- .option("-o, --output <path>", "Output file path (default: <name>-<target>.srt)")
400
- .option("-p, --provider <provider>", "Translation provider: claude, openai (default: claude)", "claude")
401
- .option("--source <language>", "Source language (auto-detected if omitted)")
402
- .option("-k, --api-key <key>", "API key (or set ANTHROPIC_API_KEY / OPENAI_API_KEY env)")
403
- .option("--dry-run", "Preview parameters without executing")
404
- .action(async (srtPath, options) => {
405
- try {
406
- if (options.output) {
407
- validateOutputPath(options.output);
408
- }
409
- if (!options.target) {
410
- exitWithError(usageError("Target language required. Use -t or --target"));
411
- }
412
- const absSrtPath = resolve(process.cwd(), srtPath);
413
- if (!existsSync(absSrtPath)) {
414
- exitWithError(notFoundError(absSrtPath));
415
- }
416
- if (options.dryRun) {
417
- outputResult({
418
- dryRun: true,
419
- command: "edit translate-srt",
420
- params: {
421
- srtPath: absSrtPath,
422
- targetLanguage: options.target,
423
- provider: options.provider || "claude",
424
- sourceLanguage: options.source,
425
- },
426
- });
427
- return;
428
- }
429
- const provider = options.provider || "claude";
430
- const envKey = provider === "openai" ? "OPENAI_API_KEY" : "ANTHROPIC_API_KEY";
431
- const providerName = provider === "openai" ? "OpenAI" : "Anthropic";
432
- const apiKey = await getApiKey(envKey, providerName, options.apiKey);
433
- if (!apiKey) {
434
- exitWithError(authError(envKey, providerName));
435
- }
436
- const ext = extname(srtPath);
437
- const name = basename(srtPath, ext);
438
- const outputPath = options.output || `${name}-${options.target}${ext}`;
439
- const spinner = ora(`Translating to ${options.target}...`).start();
440
- const result = await executeTranslateSrt({
441
- srtPath: absSrtPath,
442
- outputPath: resolve(process.cwd(), outputPath),
443
- targetLanguage: options.target,
444
- provider: provider,
445
- sourceLanguage: options.source,
446
- apiKey,
447
- });
448
- if (!result.success) {
449
- spinner.fail("Translation failed");
450
- exitWithError(apiError(result.error || "Translation failed", true));
451
- }
452
- spinner.succeed(chalk.green("Translation complete"));
453
- if (isJsonMode()) {
454
- outputResult({
455
- success: true,
456
- segmentCount: result.segmentCount,
457
- sourceLanguage: result.sourceLanguage,
458
- targetLanguage: result.targetLanguage,
459
- outputPath: result.outputPath,
460
- });
461
- return;
462
- }
463
- console.log();
464
- console.log(chalk.bold.cyan("Translation Result"));
465
- console.log(chalk.dim("─".repeat(60)));
466
- console.log(`Segments translated: ${chalk.bold(String(result.segmentCount))}`);
467
- if (result.sourceLanguage)
468
- console.log(`Source language: ${chalk.bold(result.sourceLanguage)}`);
469
- console.log(`Target language: ${chalk.bold(result.targetLanguage)}`);
470
- console.log(`Output: ${chalk.green(result.outputPath)}`);
471
- console.log();
472
- }
473
- catch (error) {
474
- exitWithError(apiError(`Translation failed: ${error instanceof Error ? error.message : String(error)}`, true));
475
- }
476
- });
477
- // ============================================================================
478
- // Jump Cut Command
479
- // ============================================================================
480
- aiCommand
481
- .command("jump-cut")
482
- .description("Remove filler words (um, uh, like, etc.) from video using Whisper word-level timestamps")
483
- .argument("<video>", "Video file path")
484
- .option("-o, --output <path>", "Output file path (default: <name>-jumpcut.<ext>)")
485
- .option("--fillers <words>", "Comma-separated filler words to detect")
486
- .option("--padding <seconds>", "Padding around cuts in seconds (default: 0.05)", "0.05")
487
- .option("-l, --language <lang>", "Language code for transcription (e.g., en, ko)")
488
- .option("--analyze-only", "Only detect fillers, don't cut")
489
- .option("-k, --api-key <key>", "OpenAI API key (or set OPENAI_API_KEY env)")
490
- .option("--dry-run", "Preview parameters without executing")
491
- .action(async (videoPath, options) => {
492
- try {
493
- if (options.output) {
494
- validateOutputPath(options.output);
495
- }
496
- if (options.fillers)
497
- rejectControlChars(options.fillers);
498
- const absVideoPath = resolve(process.cwd(), videoPath);
499
- if (!existsSync(absVideoPath)) {
500
- exitWithError(notFoundError(absVideoPath));
501
- }
502
- // Check FFmpeg
503
- if (!commandExists("ffmpeg")) {
504
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
505
- }
506
- if (options.dryRun) {
507
- const fillers = options.fillers
508
- ? options.fillers.split(",").map((f) => f.trim())
509
- : undefined;
510
- outputResult({
511
- dryRun: true,
512
- command: "edit jump-cut",
513
- params: {
514
- videoPath: absVideoPath,
515
- fillers,
516
- padding: parseFloat(options.padding),
517
- language: options.language,
518
- analyzeOnly: options.analyzeOnly || false,
519
- },
520
- });
521
- return;
522
- }
523
- const apiKey = await getApiKey("OPENAI_API_KEY", "OpenAI", options.apiKey);
524
- if (!apiKey) {
525
- exitWithError(authError("OPENAI_API_KEY", "OpenAI"));
526
- }
527
- const ext = extname(videoPath);
528
- const name = basename(videoPath, ext);
529
- const outputPath = options.output || `${name}-jumpcut${ext}`;
530
- const fillers = options.fillers
531
- ? options.fillers.split(",").map((f) => f.trim())
532
- : undefined;
533
- const spinner = ora("Transcribing with word-level timestamps...").start();
534
- const result = await executeJumpCut({
535
- videoPath: absVideoPath,
536
- outputPath: resolve(process.cwd(), outputPath),
537
- fillers,
538
- padding: parseFloat(options.padding),
539
- language: options.language,
540
- analyzeOnly: options.analyzeOnly || false,
541
- apiKey,
542
- });
543
- if (!result.success) {
544
- spinner.fail("Jump cut failed");
545
- exitWithError(apiError(result.error || "Jump cut failed", true));
546
- }
547
- spinner.succeed(chalk.green("Filler detection complete"));
548
- if (isJsonMode()) {
549
- outputResult({
550
- success: true,
551
- totalDuration: result.totalDuration,
552
- fillerCount: result.fillerCount,
553
- fillerDuration: result.fillerDuration,
554
- fillers: result.fillers,
555
- outputPath: result.outputPath,
556
- });
557
- return;
558
- }
559
- console.log();
560
- console.log(chalk.bold.cyan("Filler Word Analysis"));
561
- console.log(chalk.dim("-".repeat(60)));
562
- console.log(`Total duration: ${chalk.bold(result.totalDuration.toFixed(1))}s`);
563
- console.log(`Filler words found: ${chalk.bold(String(result.fillerCount))}`);
564
- console.log(`Filler duration: ${chalk.bold(result.fillerDuration.toFixed(1))}s`);
565
- console.log(`Clean duration: ${chalk.bold((result.totalDuration - result.fillerDuration).toFixed(1))}s`);
566
- if (result.fillers && result.fillers.length > 0) {
567
- console.log();
568
- console.log(chalk.dim("Detected fillers:"));
569
- for (const filler of result.fillers) {
570
- console.log(chalk.dim(` "${filler.word}" at ${filler.start.toFixed(2)}s - ${filler.end.toFixed(2)}s`));
571
- }
572
- }
573
- if (!options.analyzeOnly && result.outputPath) {
574
- console.log();
575
- console.log(chalk.green(`Output: ${result.outputPath}`));
576
- console.log(chalk.dim(`Removed ${result.fillerDuration.toFixed(1)}s of filler words`));
577
- }
578
- console.log();
579
- }
580
- catch (error) {
581
- exitWithError(apiError(`Jump cut failed: ${error instanceof Error ? error.message : String(error)}`, true));
582
- }
583
- });
584
- }
585
- //# sourceMappingURL=ai-edit-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-edit-cli.js","sourceRoot":"","sources":["../../src/commands/ai-edit-cli.ts"],"names":[],"mappings":"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"}