@vibeframe/cli 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-lint.log +21 -0
  3. package/.turbo/turbo-test.log +689 -0
  4. package/dist/agent/adapters/claude.d.ts +15 -0
  5. package/dist/agent/adapters/claude.d.ts.map +1 -0
  6. package/dist/agent/adapters/claude.js +119 -0
  7. package/dist/agent/adapters/claude.js.map +1 -0
  8. package/dist/agent/adapters/gemini.d.ts +15 -0
  9. package/dist/agent/adapters/gemini.d.ts.map +1 -0
  10. package/dist/agent/adapters/gemini.js +132 -0
  11. package/dist/agent/adapters/gemini.js.map +1 -0
  12. package/dist/agent/adapters/index.d.ts +27 -0
  13. package/dist/agent/adapters/index.d.ts.map +1 -0
  14. package/dist/agent/adapters/index.js +38 -0
  15. package/dist/agent/adapters/index.js.map +1 -0
  16. package/dist/agent/adapters/ollama.d.ts +20 -0
  17. package/dist/agent/adapters/ollama.d.ts.map +1 -0
  18. package/dist/agent/adapters/ollama.js +186 -0
  19. package/dist/agent/adapters/ollama.js.map +1 -0
  20. package/dist/agent/adapters/openai.d.ts +15 -0
  21. package/dist/agent/adapters/openai.d.ts.map +1 -0
  22. package/dist/agent/adapters/openai.js +92 -0
  23. package/dist/agent/adapters/openai.js.map +1 -0
  24. package/dist/agent/adapters/xai.d.ts +15 -0
  25. package/dist/agent/adapters/xai.d.ts.map +1 -0
  26. package/dist/agent/adapters/xai.js +95 -0
  27. package/dist/agent/adapters/xai.js.map +1 -0
  28. package/dist/agent/index.d.ts +69 -0
  29. package/dist/agent/index.d.ts.map +1 -0
  30. package/dist/agent/index.js +180 -0
  31. package/dist/agent/index.js.map +1 -0
  32. package/dist/agent/memory/index.d.ts +70 -0
  33. package/dist/agent/memory/index.d.ts.map +1 -0
  34. package/dist/agent/memory/index.js +132 -0
  35. package/dist/agent/memory/index.js.map +1 -0
  36. package/dist/agent/prompts/system.d.ts +6 -0
  37. package/dist/agent/prompts/system.d.ts.map +1 -0
  38. package/dist/agent/prompts/system.js +103 -0
  39. package/dist/agent/prompts/system.js.map +1 -0
  40. package/dist/agent/tools/ai-editing.d.ts +15 -0
  41. package/dist/agent/tools/ai-editing.d.ts.map +1 -0
  42. package/dist/agent/tools/ai-editing.js +763 -0
  43. package/dist/agent/tools/ai-editing.js.map +1 -0
  44. package/dist/agent/tools/ai-generation.d.ts +13 -0
  45. package/dist/agent/tools/ai-generation.d.ts.map +1 -0
  46. package/dist/agent/tools/ai-generation.js +973 -0
  47. package/dist/agent/tools/ai-generation.js.map +1 -0
  48. package/dist/agent/tools/ai-pipeline.d.ts +14 -0
  49. package/dist/agent/tools/ai-pipeline.d.ts.map +1 -0
  50. package/dist/agent/tools/ai-pipeline.js +961 -0
  51. package/dist/agent/tools/ai-pipeline.js.map +1 -0
  52. package/dist/agent/tools/ai.d.ts +13 -0
  53. package/dist/agent/tools/ai.d.ts.map +1 -0
  54. package/dist/agent/tools/ai.js +19 -0
  55. package/dist/agent/tools/ai.js.map +1 -0
  56. package/dist/agent/tools/batch.d.ts +6 -0
  57. package/dist/agent/tools/batch.d.ts.map +1 -0
  58. package/dist/agent/tools/batch.js +383 -0
  59. package/dist/agent/tools/batch.js.map +1 -0
  60. package/dist/agent/tools/e2e.test.d.ts +26 -0
  61. package/dist/agent/tools/e2e.test.d.ts.map +1 -0
  62. package/dist/agent/tools/e2e.test.js +397 -0
  63. package/dist/agent/tools/e2e.test.js.map +1 -0
  64. package/dist/agent/tools/export.d.ts +6 -0
  65. package/dist/agent/tools/export.d.ts.map +1 -0
  66. package/dist/agent/tools/export.js +171 -0
  67. package/dist/agent/tools/export.js.map +1 -0
  68. package/dist/agent/tools/filesystem.d.ts +6 -0
  69. package/dist/agent/tools/filesystem.d.ts.map +1 -0
  70. package/dist/agent/tools/filesystem.js +212 -0
  71. package/dist/agent/tools/filesystem.js.map +1 -0
  72. package/dist/agent/tools/index.d.ts +65 -0
  73. package/dist/agent/tools/index.d.ts.map +1 -0
  74. package/dist/agent/tools/index.js +120 -0
  75. package/dist/agent/tools/index.js.map +1 -0
  76. package/dist/agent/tools/integration.test.d.ts +11 -0
  77. package/dist/agent/tools/integration.test.d.ts.map +1 -0
  78. package/dist/agent/tools/integration.test.js +659 -0
  79. package/dist/agent/tools/integration.test.js.map +1 -0
  80. package/dist/agent/tools/media.d.ts +6 -0
  81. package/dist/agent/tools/media.d.ts.map +1 -0
  82. package/dist/agent/tools/media.js +616 -0
  83. package/dist/agent/tools/media.js.map +1 -0
  84. package/dist/agent/tools/project.d.ts +6 -0
  85. package/dist/agent/tools/project.d.ts.map +1 -0
  86. package/dist/agent/tools/project.js +284 -0
  87. package/dist/agent/tools/project.js.map +1 -0
  88. package/dist/agent/tools/timeline.d.ts +6 -0
  89. package/dist/agent/tools/timeline.d.ts.map +1 -0
  90. package/dist/agent/tools/timeline.js +873 -0
  91. package/dist/agent/tools/timeline.js.map +1 -0
  92. package/dist/agent/types.d.ts +59 -0
  93. package/dist/agent/types.d.ts.map +1 -0
  94. package/dist/agent/types.js +5 -0
  95. package/dist/agent/types.js.map +1 -0
  96. package/dist/commands/agent.d.ts +21 -0
  97. package/dist/commands/agent.d.ts.map +1 -0
  98. package/dist/commands/agent.js +290 -0
  99. package/dist/commands/agent.js.map +1 -0
  100. package/dist/commands/ai-analyze.d.ts +106 -0
  101. package/dist/commands/ai-analyze.d.ts.map +1 -0
  102. package/dist/commands/ai-analyze.js +327 -0
  103. package/dist/commands/ai-analyze.js.map +1 -0
  104. package/dist/commands/ai-animated-caption.d.ts +64 -0
  105. package/dist/commands/ai-animated-caption.d.ts.map +1 -0
  106. package/dist/commands/ai-animated-caption.js +272 -0
  107. package/dist/commands/ai-animated-caption.js.map +1 -0
  108. package/dist/commands/ai-audio.d.ts +20 -0
  109. package/dist/commands/ai-audio.d.ts.map +1 -0
  110. package/dist/commands/ai-audio.js +808 -0
  111. package/dist/commands/ai-audio.js.map +1 -0
  112. package/dist/commands/ai-broll.d.ts +15 -0
  113. package/dist/commands/ai-broll.d.ts.map +1 -0
  114. package/dist/commands/ai-broll.js +406 -0
  115. package/dist/commands/ai-broll.js.map +1 -0
  116. package/dist/commands/ai-edit-cli.d.ts +14 -0
  117. package/dist/commands/ai-edit-cli.d.ts.map +1 -0
  118. package/dist/commands/ai-edit-cli.js +579 -0
  119. package/dist/commands/ai-edit-cli.js.map +1 -0
  120. package/dist/commands/ai-edit.d.ts +398 -0
  121. package/dist/commands/ai-edit.d.ts.map +1 -0
  122. package/dist/commands/ai-edit.js +1019 -0
  123. package/dist/commands/ai-edit.js.map +1 -0
  124. package/dist/commands/ai-fill-gaps.d.ts +14 -0
  125. package/dist/commands/ai-fill-gaps.d.ts.map +1 -0
  126. package/dist/commands/ai-fill-gaps.js +451 -0
  127. package/dist/commands/ai-fill-gaps.js.map +1 -0
  128. package/dist/commands/ai-helpers.d.ts +20 -0
  129. package/dist/commands/ai-helpers.d.ts.map +1 -0
  130. package/dist/commands/ai-helpers.js +59 -0
  131. package/dist/commands/ai-helpers.js.map +1 -0
  132. package/dist/commands/ai-highlights.d.ts +127 -0
  133. package/dist/commands/ai-highlights.d.ts.map +1 -0
  134. package/dist/commands/ai-highlights.js +1026 -0
  135. package/dist/commands/ai-highlights.js.map +1 -0
  136. package/dist/commands/ai-image.d.ts +34 -0
  137. package/dist/commands/ai-image.d.ts.map +1 -0
  138. package/dist/commands/ai-image.js +653 -0
  139. package/dist/commands/ai-image.js.map +1 -0
  140. package/dist/commands/ai-motion.d.ts +50 -0
  141. package/dist/commands/ai-motion.d.ts.map +1 -0
  142. package/dist/commands/ai-motion.js +271 -0
  143. package/dist/commands/ai-motion.js.map +1 -0
  144. package/dist/commands/ai-narrate.d.ts +66 -0
  145. package/dist/commands/ai-narrate.d.ts.map +1 -0
  146. package/dist/commands/ai-narrate.js +329 -0
  147. package/dist/commands/ai-narrate.js.map +1 -0
  148. package/dist/commands/ai-review.d.ts +57 -0
  149. package/dist/commands/ai-review.d.ts.map +1 -0
  150. package/dist/commands/ai-review.js +251 -0
  151. package/dist/commands/ai-review.js.map +1 -0
  152. package/dist/commands/ai-script-pipeline-cli.d.ts +9 -0
  153. package/dist/commands/ai-script-pipeline-cli.d.ts.map +1 -0
  154. package/dist/commands/ai-script-pipeline-cli.js +1494 -0
  155. package/dist/commands/ai-script-pipeline-cli.js.map +1 -0
  156. package/dist/commands/ai-script-pipeline.d.ts +259 -0
  157. package/dist/commands/ai-script-pipeline.d.ts.map +1 -0
  158. package/dist/commands/ai-script-pipeline.js +1027 -0
  159. package/dist/commands/ai-script-pipeline.js.map +1 -0
  160. package/dist/commands/ai-suggest-edit.d.ts +14 -0
  161. package/dist/commands/ai-suggest-edit.d.ts.map +1 -0
  162. package/dist/commands/ai-suggest-edit.js +220 -0
  163. package/dist/commands/ai-suggest-edit.js.map +1 -0
  164. package/dist/commands/ai-video-fx.d.ts +14 -0
  165. package/dist/commands/ai-video-fx.d.ts.map +1 -0
  166. package/dist/commands/ai-video-fx.js +395 -0
  167. package/dist/commands/ai-video-fx.js.map +1 -0
  168. package/dist/commands/ai-video.d.ts +15 -0
  169. package/dist/commands/ai-video.d.ts.map +1 -0
  170. package/dist/commands/ai-video.js +785 -0
  171. package/dist/commands/ai-video.js.map +1 -0
  172. package/dist/commands/ai-viral.d.ts +15 -0
  173. package/dist/commands/ai-viral.d.ts.map +1 -0
  174. package/dist/commands/ai-viral.js +519 -0
  175. package/dist/commands/ai-viral.js.map +1 -0
  176. package/dist/commands/ai-visual-fx.d.ts +14 -0
  177. package/dist/commands/ai-visual-fx.d.ts.map +1 -0
  178. package/dist/commands/ai-visual-fx.js +505 -0
  179. package/dist/commands/ai-visual-fx.js.map +1 -0
  180. package/dist/commands/ai.d.ts +38 -0
  181. package/dist/commands/ai.d.ts.map +1 -0
  182. package/dist/commands/ai.js +225 -0
  183. package/dist/commands/ai.js.map +1 -0
  184. package/dist/commands/ai.test.d.ts +2 -0
  185. package/dist/commands/ai.test.d.ts.map +1 -0
  186. package/dist/commands/ai.test.js +554 -0
  187. package/dist/commands/ai.test.js.map +1 -0
  188. package/dist/commands/analyze.d.ts +16 -0
  189. package/dist/commands/analyze.d.ts.map +1 -0
  190. package/dist/commands/analyze.js +247 -0
  191. package/dist/commands/analyze.js.map +1 -0
  192. package/dist/commands/audio.d.ts +18 -0
  193. package/dist/commands/audio.d.ts.map +1 -0
  194. package/dist/commands/audio.js +539 -0
  195. package/dist/commands/audio.js.map +1 -0
  196. package/dist/commands/batch.d.ts +3 -0
  197. package/dist/commands/batch.d.ts.map +1 -0
  198. package/dist/commands/batch.js +366 -0
  199. package/dist/commands/batch.js.map +1 -0
  200. package/dist/commands/batch.test.d.ts +2 -0
  201. package/dist/commands/batch.test.d.ts.map +1 -0
  202. package/dist/commands/batch.test.js +203 -0
  203. package/dist/commands/batch.test.js.map +1 -0
  204. package/dist/commands/detect.d.ts +3 -0
  205. package/dist/commands/detect.d.ts.map +1 -0
  206. package/dist/commands/detect.js +273 -0
  207. package/dist/commands/detect.js.map +1 -0
  208. package/dist/commands/doctor.d.ts +6 -0
  209. package/dist/commands/doctor.d.ts.map +1 -0
  210. package/dist/commands/doctor.js +191 -0
  211. package/dist/commands/doctor.js.map +1 -0
  212. package/dist/commands/edit-cmd.d.ts +26 -0
  213. package/dist/commands/edit-cmd.d.ts.map +1 -0
  214. package/dist/commands/edit-cmd.js +870 -0
  215. package/dist/commands/edit-cmd.js.map +1 -0
  216. package/dist/commands/export.d.ts +39 -0
  217. package/dist/commands/export.d.ts.map +1 -0
  218. package/dist/commands/export.js +730 -0
  219. package/dist/commands/export.js.map +1 -0
  220. package/dist/commands/generate.d.ts +25 -0
  221. package/dist/commands/generate.d.ts.map +1 -0
  222. package/dist/commands/generate.js +1885 -0
  223. package/dist/commands/generate.js.map +1 -0
  224. package/dist/commands/media.d.ts +3 -0
  225. package/dist/commands/media.d.ts.map +1 -0
  226. package/dist/commands/media.js +165 -0
  227. package/dist/commands/media.js.map +1 -0
  228. package/dist/commands/output.d.ts +45 -0
  229. package/dist/commands/output.d.ts.map +1 -0
  230. package/dist/commands/output.js +122 -0
  231. package/dist/commands/output.js.map +1 -0
  232. package/dist/commands/pipeline.d.ts +19 -0
  233. package/dist/commands/pipeline.d.ts.map +1 -0
  234. package/dist/commands/pipeline.js +345 -0
  235. package/dist/commands/pipeline.js.map +1 -0
  236. package/dist/commands/project.d.ts +3 -0
  237. package/dist/commands/project.d.ts.map +1 -0
  238. package/dist/commands/project.js +139 -0
  239. package/dist/commands/project.js.map +1 -0
  240. package/dist/commands/project.test.d.ts +2 -0
  241. package/dist/commands/project.test.d.ts.map +1 -0
  242. package/dist/commands/project.test.js +105 -0
  243. package/dist/commands/project.test.js.map +1 -0
  244. package/dist/commands/sanitize.d.ts +21 -0
  245. package/dist/commands/sanitize.d.ts.map +1 -0
  246. package/dist/commands/sanitize.js +56 -0
  247. package/dist/commands/sanitize.js.map +1 -0
  248. package/dist/commands/schema.d.ts +11 -0
  249. package/dist/commands/schema.d.ts.map +1 -0
  250. package/dist/commands/schema.js +101 -0
  251. package/dist/commands/schema.js.map +1 -0
  252. package/dist/commands/setup.d.ts +6 -0
  253. package/dist/commands/setup.d.ts.map +1 -0
  254. package/dist/commands/setup.js +440 -0
  255. package/dist/commands/setup.js.map +1 -0
  256. package/dist/commands/timeline.d.ts +3 -0
  257. package/dist/commands/timeline.d.ts.map +1 -0
  258. package/dist/commands/timeline.js +469 -0
  259. package/dist/commands/timeline.js.map +1 -0
  260. package/dist/commands/timeline.test.d.ts +2 -0
  261. package/dist/commands/timeline.test.d.ts.map +1 -0
  262. package/dist/commands/timeline.test.js +320 -0
  263. package/dist/commands/timeline.test.js.map +1 -0
  264. package/dist/commands/validate.d.ts +32 -0
  265. package/dist/commands/validate.d.ts.map +1 -0
  266. package/dist/commands/validate.js +63 -0
  267. package/dist/commands/validate.js.map +1 -0
  268. package/dist/config/config.test.d.ts +2 -0
  269. package/dist/config/config.test.d.ts.map +1 -0
  270. package/dist/config/config.test.js +164 -0
  271. package/dist/config/config.test.js.map +1 -0
  272. package/dist/config/index.d.ts +35 -0
  273. package/dist/config/index.d.ts.map +1 -0
  274. package/dist/config/index.js +101 -0
  275. package/dist/config/index.js.map +1 -0
  276. package/dist/config/schema.d.ts +43 -0
  277. package/dist/config/schema.d.ts.map +1 -0
  278. package/dist/config/schema.js +42 -0
  279. package/dist/config/schema.js.map +1 -0
  280. package/dist/engine/index.d.ts +3 -0
  281. package/dist/engine/index.d.ts.map +1 -0
  282. package/dist/engine/index.js +2 -0
  283. package/dist/engine/index.js.map +1 -0
  284. package/dist/engine/project.d.ts +84 -0
  285. package/dist/engine/project.d.ts.map +1 -0
  286. package/dist/engine/project.js +355 -0
  287. package/dist/engine/project.js.map +1 -0
  288. package/dist/engine/project.test.d.ts +2 -0
  289. package/dist/engine/project.test.d.ts.map +1 -0
  290. package/dist/engine/project.test.js +599 -0
  291. package/dist/engine/project.test.js.map +1 -0
  292. package/dist/index.d.ts +7 -0
  293. package/dist/index.d.ts.map +1 -0
  294. package/dist/index.js +131 -0
  295. package/dist/index.js.map +1 -0
  296. package/dist/utils/api-key.d.ts +36 -0
  297. package/dist/utils/api-key.d.ts.map +1 -0
  298. package/dist/utils/api-key.js +211 -0
  299. package/dist/utils/api-key.js.map +1 -0
  300. package/dist/utils/api-key.test.d.ts +2 -0
  301. package/dist/utils/api-key.test.d.ts.map +1 -0
  302. package/dist/utils/api-key.test.js +35 -0
  303. package/dist/utils/api-key.test.js.map +1 -0
  304. package/dist/utils/audio.d.ts +23 -0
  305. package/dist/utils/audio.d.ts.map +1 -0
  306. package/dist/utils/audio.js +79 -0
  307. package/dist/utils/audio.js.map +1 -0
  308. package/dist/utils/exec-safe.d.ts +22 -0
  309. package/dist/utils/exec-safe.d.ts.map +1 -0
  310. package/dist/utils/exec-safe.js +62 -0
  311. package/dist/utils/exec-safe.js.map +1 -0
  312. package/dist/utils/first-run.d.ts +13 -0
  313. package/dist/utils/first-run.d.ts.map +1 -0
  314. package/dist/utils/first-run.js +48 -0
  315. package/dist/utils/first-run.js.map +1 -0
  316. package/dist/utils/provider-resolver.d.ts +15 -0
  317. package/dist/utils/provider-resolver.d.ts.map +1 -0
  318. package/dist/utils/provider-resolver.js +42 -0
  319. package/dist/utils/provider-resolver.js.map +1 -0
  320. package/dist/utils/remotion.d.ts +210 -0
  321. package/dist/utils/remotion.d.ts.map +1 -0
  322. package/dist/utils/remotion.js +731 -0
  323. package/dist/utils/remotion.js.map +1 -0
  324. package/dist/utils/subtitle.d.ts +65 -0
  325. package/dist/utils/subtitle.d.ts.map +1 -0
  326. package/dist/utils/subtitle.js +135 -0
  327. package/dist/utils/subtitle.js.map +1 -0
  328. package/dist/utils/subtitle.test.d.ts +2 -0
  329. package/dist/utils/subtitle.test.d.ts.map +1 -0
  330. package/dist/utils/subtitle.test.js +175 -0
  331. package/dist/utils/subtitle.test.js.map +1 -0
  332. package/dist/utils/tty.d.ts +45 -0
  333. package/dist/utils/tty.d.ts.map +1 -0
  334. package/dist/utils/tty.js +172 -0
  335. package/dist/utils/tty.js.map +1 -0
  336. package/package.json +102 -0
  337. package/src/agent/adapters/claude.ts +143 -0
  338. package/src/agent/adapters/gemini.ts +159 -0
  339. package/src/agent/adapters/index.ts +61 -0
  340. package/src/agent/adapters/ollama.ts +231 -0
  341. package/src/agent/adapters/openai.ts +116 -0
  342. package/src/agent/adapters/xai.ts +119 -0
  343. package/src/agent/index.ts +251 -0
  344. package/src/agent/memory/index.ts +151 -0
  345. package/src/agent/prompts/system.ts +106 -0
  346. package/src/agent/tools/ai-editing.ts +845 -0
  347. package/src/agent/tools/ai-generation.ts +1073 -0
  348. package/src/agent/tools/ai-pipeline.ts +1055 -0
  349. package/src/agent/tools/ai.ts +21 -0
  350. package/src/agent/tools/batch.ts +429 -0
  351. package/src/agent/tools/e2e.test.ts +545 -0
  352. package/src/agent/tools/export.ts +184 -0
  353. package/src/agent/tools/filesystem.ts +237 -0
  354. package/src/agent/tools/index.ts +150 -0
  355. package/src/agent/tools/integration.test.ts +775 -0
  356. package/src/agent/tools/media.ts +697 -0
  357. package/src/agent/tools/project.ts +313 -0
  358. package/src/agent/tools/timeline.ts +951 -0
  359. package/src/agent/types.ts +68 -0
  360. package/src/commands/agent.ts +340 -0
  361. package/src/commands/ai-analyze.ts +429 -0
  362. package/src/commands/ai-animated-caption.ts +390 -0
  363. package/src/commands/ai-audio.ts +941 -0
  364. package/src/commands/ai-broll.ts +490 -0
  365. package/src/commands/ai-edit-cli.ts +658 -0
  366. package/src/commands/ai-edit.ts +1542 -0
  367. package/src/commands/ai-fill-gaps.ts +566 -0
  368. package/src/commands/ai-helpers.ts +65 -0
  369. package/src/commands/ai-highlights.ts +1303 -0
  370. package/src/commands/ai-image.ts +761 -0
  371. package/src/commands/ai-motion.ts +347 -0
  372. package/src/commands/ai-narrate.ts +451 -0
  373. package/src/commands/ai-review.ts +309 -0
  374. package/src/commands/ai-script-pipeline-cli.ts +1710 -0
  375. package/src/commands/ai-script-pipeline.ts +1365 -0
  376. package/src/commands/ai-suggest-edit.ts +264 -0
  377. package/src/commands/ai-video-fx.ts +445 -0
  378. package/src/commands/ai-video.ts +915 -0
  379. package/src/commands/ai-viral.ts +595 -0
  380. package/src/commands/ai-visual-fx.ts +601 -0
  381. package/src/commands/ai.test.ts +627 -0
  382. package/src/commands/ai.ts +307 -0
  383. package/src/commands/analyze.ts +282 -0
  384. package/src/commands/audio.ts +644 -0
  385. package/src/commands/batch.test.ts +279 -0
  386. package/src/commands/batch.ts +440 -0
  387. package/src/commands/detect.ts +329 -0
  388. package/src/commands/doctor.ts +237 -0
  389. package/src/commands/edit-cmd.ts +1014 -0
  390. package/src/commands/export.ts +918 -0
  391. package/src/commands/generate.ts +2146 -0
  392. package/src/commands/media.ts +177 -0
  393. package/src/commands/output.ts +142 -0
  394. package/src/commands/pipeline.ts +398 -0
  395. package/src/commands/project.test.ts +127 -0
  396. package/src/commands/project.ts +149 -0
  397. package/src/commands/sanitize.ts +60 -0
  398. package/src/commands/schema.ts +130 -0
  399. package/src/commands/setup.ts +509 -0
  400. package/src/commands/timeline.test.ts +499 -0
  401. package/src/commands/timeline.ts +529 -0
  402. package/src/commands/validate.ts +77 -0
  403. package/src/config/config.test.ts +197 -0
  404. package/src/config/index.ts +125 -0
  405. package/src/config/schema.ts +82 -0
  406. package/src/engine/index.ts +2 -0
  407. package/src/engine/project.test.ts +702 -0
  408. package/src/engine/project.ts +439 -0
  409. package/src/index.ts +146 -0
  410. package/src/utils/api-key.test.ts +41 -0
  411. package/src/utils/api-key.ts +247 -0
  412. package/src/utils/audio.ts +83 -0
  413. package/src/utils/exec-safe.ts +75 -0
  414. package/src/utils/first-run.ts +52 -0
  415. package/src/utils/provider-resolver.ts +56 -0
  416. package/src/utils/remotion.ts +951 -0
  417. package/src/utils/subtitle.test.ts +227 -0
  418. package/src/utils/subtitle.ts +169 -0
  419. package/src/utils/tty.ts +196 -0
  420. package/tsconfig.json +20 -0
@@ -0,0 +1,398 @@
1
+ /**
2
+ * @module ai-edit
3
+ *
4
+ * Video/audio editing execute functions and supporting types.
5
+ *
6
+ * CLI commands: silence-cut, jump-cut, caption, noise-reduce, fade,
7
+ * translate-srt, text-overlay
8
+ *
9
+ * Execute functions (also used by agent tools via ai.ts re-exports):
10
+ * executeSilenceCut, executeJumpCut, executeCaption, executeNoiseReduce,
11
+ * executeFade, executeTranslateSrt, applyTextOverlays, executeTextOverlay
12
+ *
13
+ * CLI command registrations live in ai-edit-cli.ts (registerEditCommands).
14
+ * Extracted from ai.ts as part of modularisation.
15
+ *
16
+ * @dependencies FFmpeg, Whisper (OpenAI), Gemini (Google), Claude/OpenAI (translation)
17
+ */
18
+ /** A detected silent segment within a media file. */
19
+ export interface SilencePeriod {
20
+ /** Start time in seconds */
21
+ start: number;
22
+ /** End time in seconds */
23
+ end: number;
24
+ /** Duration of the silent period in seconds */
25
+ duration: number;
26
+ }
27
+ /** Options for {@link executeSilenceCut}. */
28
+ export interface SilenceCutOptions {
29
+ /** Path to the input video file */
30
+ videoPath: string;
31
+ /** Path for the output video (silent segments removed) */
32
+ outputPath: string;
33
+ /** FFmpeg noise threshold in dB (default: -30) */
34
+ noiseThreshold?: number;
35
+ /** Minimum silence duration in seconds to detect (default: 0.5) */
36
+ minDuration?: number;
37
+ /** Padding in seconds kept around cuts (default: 0.1) */
38
+ padding?: number;
39
+ /** If true, only analyze without producing output video */
40
+ analyzeOnly?: boolean;
41
+ /** Use Gemini multimodal analysis instead of FFmpeg silencedetect */
42
+ useGemini?: boolean;
43
+ /** Gemini model shorthand: "flash", "flash-2.5", "pro" */
44
+ model?: string;
45
+ /** Use low-resolution mode for Gemini (longer videos) */
46
+ lowRes?: boolean;
47
+ /** Override API key (Google for Gemini mode) */
48
+ apiKey?: string;
49
+ }
50
+ /** Result from {@link executeSilenceCut}. */
51
+ export interface SilenceCutResult {
52
+ /** Whether the operation succeeded */
53
+ success: boolean;
54
+ /** Path to the output video (undefined in analyze-only mode) */
55
+ outputPath?: string;
56
+ /** Total duration of the source video in seconds */
57
+ totalDuration?: number;
58
+ /** Detected silent periods */
59
+ silentPeriods?: SilencePeriod[];
60
+ /** Total silent duration removed in seconds */
61
+ silentDuration?: number;
62
+ /** Detection method used */
63
+ method?: "ffmpeg" | "gemini";
64
+ /** Error message on failure */
65
+ error?: string;
66
+ }
67
+ /**
68
+ * Remove silent segments from a video using FFmpeg or Gemini detection.
69
+ *
70
+ * Detects silence via FFmpeg silencedetect (default) or Gemini multimodal
71
+ * analysis, then trims and concatenates the non-silent segments.
72
+ *
73
+ * @param options - Silence cut configuration
74
+ * @returns Result with output path and detected silent periods
75
+ */
76
+ export declare function executeSilenceCut(options: SilenceCutOptions): Promise<SilenceCutResult>;
77
+ /** A detected filler word with its time range. */
78
+ export interface FillerWord {
79
+ /** The filler word or merged phrase */
80
+ word: string;
81
+ /** Start time in seconds */
82
+ start: number;
83
+ /** End time in seconds */
84
+ end: number;
85
+ }
86
+ /** Options for {@link executeJumpCut}. */
87
+ export interface JumpCutOptions {
88
+ /** Path to the input video file */
89
+ videoPath: string;
90
+ /** Path for the output video (filler words removed) */
91
+ outputPath: string;
92
+ /** Custom filler words to detect (default: {@link DEFAULT_FILLER_WORDS}) */
93
+ fillers?: string[];
94
+ /** Padding in seconds around filler cuts (default: 0.05) */
95
+ padding?: number;
96
+ /** Language code for Whisper transcription */
97
+ language?: string;
98
+ /** If true, only analyze without producing output video */
99
+ analyzeOnly?: boolean;
100
+ /** Override OpenAI API key */
101
+ apiKey?: string;
102
+ }
103
+ /** Result from {@link executeJumpCut}. */
104
+ export interface JumpCutResult {
105
+ /** Whether the operation succeeded */
106
+ success: boolean;
107
+ /** Path to the output video (undefined in analyze-only mode) */
108
+ outputPath?: string;
109
+ /** Total duration of the source video in seconds */
110
+ totalDuration?: number;
111
+ /** Number of filler word occurrences detected */
112
+ fillerCount?: number;
113
+ /** Total duration of filler words in seconds */
114
+ fillerDuration?: number;
115
+ /** Detected filler word ranges */
116
+ fillers?: FillerWord[];
117
+ /** Error message on failure */
118
+ error?: string;
119
+ }
120
+ /** Default set of filler words detected by jump-cut. */
121
+ export declare const DEFAULT_FILLER_WORDS: string[];
122
+ /**
123
+ * Transcribe audio with word-level timestamps using Whisper API directly.
124
+ * Uses timestamp_granularities[]=word for filler detection.
125
+ */
126
+ export declare function transcribeWithWords(audioPath: string, apiKey: string, language?: string): Promise<{
127
+ words: {
128
+ word: string;
129
+ start: number;
130
+ end: number;
131
+ }[];
132
+ text: string;
133
+ }>;
134
+ /**
135
+ * Detect filler word ranges and merge adjacent ones within padding distance.
136
+ *
137
+ * @param words - Word-level transcript with timestamps
138
+ * @param fillers - List of filler words/phrases to match
139
+ * @param padding - Maximum gap in seconds to merge adjacent fillers
140
+ * @returns Merged filler word ranges sorted by start time
141
+ */
142
+ export declare function detectFillerRanges(words: {
143
+ word: string;
144
+ start: number;
145
+ end: number;
146
+ }[], fillers: string[], padding: number): FillerWord[];
147
+ /**
148
+ * Remove filler words from a video using Whisper word-level timestamps + FFmpeg concat.
149
+ *
150
+ * Pipeline: extract audio -> Whisper transcription (word-level) -> detect fillers ->
151
+ * invert to keep-segments -> FFmpeg stream-copy concat.
152
+ *
153
+ * @param options - Jump cut configuration
154
+ * @returns Result with output path and detected fillers
155
+ */
156
+ export declare function executeJumpCut(options: JumpCutOptions): Promise<JumpCutResult>;
157
+ /** Visual style preset for burned-in captions. */
158
+ export type CaptionStyle = "minimal" | "bold" | "outline" | "karaoke";
159
+ /** Options for {@link executeCaption}. */
160
+ export interface CaptionOptions {
161
+ /** Path to the input video file */
162
+ videoPath: string;
163
+ /** Path for the output video with burned-in captions */
164
+ outputPath: string;
165
+ /** Caption visual style preset (default: "bold") */
166
+ style?: CaptionStyle;
167
+ /** Font size override (auto-calculated from video height if omitted) */
168
+ fontSize?: number;
169
+ /** Font color name (default: "white") */
170
+ fontColor?: string;
171
+ /** Language code for Whisper transcription */
172
+ language?: string;
173
+ /** Vertical position of captions (default: "bottom") */
174
+ position?: "top" | "center" | "bottom";
175
+ /** Override OpenAI API key */
176
+ apiKey?: string;
177
+ }
178
+ /** Result from {@link executeCaption}. */
179
+ export interface CaptionResult {
180
+ /** Whether the operation succeeded */
181
+ success: boolean;
182
+ /** Path to the output video with captions */
183
+ outputPath?: string;
184
+ /** Path to the generated SRT file */
185
+ srtPath?: string;
186
+ /** Number of transcript segments */
187
+ segmentCount?: number;
188
+ /** Error message on failure */
189
+ error?: string;
190
+ }
191
+ /**
192
+ * Transcribe video audio and burn styled captions using Whisper + FFmpeg.
193
+ *
194
+ * Pipeline: extract audio -> Whisper transcription -> generate SRT ->
195
+ * burn captions via FFmpeg subtitles filter (or Remotion fallback).
196
+ *
197
+ * @param options - Caption configuration
198
+ * @returns Result with output video path and SRT path
199
+ */
200
+ export declare function executeCaption(options: CaptionOptions): Promise<CaptionResult>;
201
+ /** Options for {@link executeNoiseReduce}. */
202
+ export interface NoiseReduceOptions {
203
+ /** Path to the input audio or video file */
204
+ inputPath: string;
205
+ /** Path for the noise-reduced output file */
206
+ outputPath: string;
207
+ /** Reduction strength preset (default: "medium") */
208
+ strength?: "low" | "medium" | "high";
209
+ /** Custom noise floor in dB (overrides strength preset) */
210
+ noiseFloor?: number;
211
+ }
212
+ /** Result from {@link executeNoiseReduce}. */
213
+ export interface NoiseReduceResult {
214
+ /** Whether the operation succeeded */
215
+ success: boolean;
216
+ /** Path to the noise-reduced output file */
217
+ outputPath?: string;
218
+ /** Duration of the input file in seconds */
219
+ inputDuration?: number;
220
+ /** Error message on failure */
221
+ error?: string;
222
+ }
223
+ /**
224
+ * Reduce audio noise in a video or audio file using FFmpeg afftdn filter.
225
+ *
226
+ * Supports three strength presets (low/medium/high) with optional highpass/lowpass
227
+ * for the "high" setting. Video streams are copied without re-encoding.
228
+ *
229
+ * @param options - Noise reduction configuration
230
+ * @returns Result with output path and input duration
231
+ */
232
+ export declare function executeNoiseReduce(options: NoiseReduceOptions): Promise<NoiseReduceResult>;
233
+ /** Options for {@link executeFade}. */
234
+ export interface FadeOptions {
235
+ /** Path to the input video file */
236
+ videoPath: string;
237
+ /** Path for the output video with fade effects */
238
+ outputPath: string;
239
+ /** Fade-in duration in seconds (default: 1) */
240
+ fadeIn?: number;
241
+ /** Fade-out duration in seconds (default: 1) */
242
+ fadeOut?: number;
243
+ /** Apply fade to audio only (video copied) */
244
+ audioOnly?: boolean;
245
+ /** Apply fade to video only (audio copied) */
246
+ videoOnly?: boolean;
247
+ }
248
+ /** Result from {@link executeFade}. */
249
+ export interface FadeResult {
250
+ /** Whether the operation succeeded */
251
+ success: boolean;
252
+ /** Path to the output video */
253
+ outputPath?: string;
254
+ /** Total duration of the source video in seconds */
255
+ totalDuration?: number;
256
+ /** Whether fade-in was applied */
257
+ fadeInApplied?: boolean;
258
+ /** Whether fade-out was applied */
259
+ fadeOutApplied?: boolean;
260
+ /** Error message on failure */
261
+ error?: string;
262
+ }
263
+ /**
264
+ * Apply fade-in and/or fade-out effects to video and/or audio using FFmpeg.
265
+ *
266
+ * @param options - Fade configuration
267
+ * @returns Result with output path and which fades were applied
268
+ */
269
+ export declare function executeFade(options: FadeOptions): Promise<FadeResult>;
270
+ /** Options for {@link executeTranslateSrt}. */
271
+ export interface TranslateSrtOptions {
272
+ /** Path to the source SRT subtitle file */
273
+ srtPath: string;
274
+ /** Path for the translated SRT output */
275
+ outputPath: string;
276
+ /** Target language name (e.g. "Korean", "Spanish") */
277
+ targetLanguage: string;
278
+ /** LLM provider for translation (default: "claude") */
279
+ provider?: "claude" | "openai";
280
+ /** Source language hint (auto-detected if omitted) */
281
+ sourceLanguage?: string;
282
+ /** Override API key for the chosen provider */
283
+ apiKey?: string;
284
+ }
285
+ /** Result from {@link executeTranslateSrt}. */
286
+ export interface TranslateSrtResult {
287
+ /** Whether the operation succeeded */
288
+ success: boolean;
289
+ /** Path to the translated SRT file */
290
+ outputPath?: string;
291
+ /** Number of subtitle segments translated */
292
+ segmentCount?: number;
293
+ /** Detected or specified source language */
294
+ sourceLanguage?: string;
295
+ /** Target language used for translation */
296
+ targetLanguage?: string;
297
+ /** Error message on failure */
298
+ error?: string;
299
+ }
300
+ /**
301
+ * Translate an SRT subtitle file to a target language using Claude or OpenAI.
302
+ *
303
+ * Segments are batched (~30 at a time) for efficient API usage. Preserves
304
+ * original timestamps; only text content is translated.
305
+ *
306
+ * @param options - Translation configuration
307
+ * @returns Result with output path and segment count
308
+ */
309
+ export declare function executeTranslateSrt(options: TranslateSrtOptions): Promise<TranslateSrtResult>;
310
+ /** Visual style preset for text overlays. */
311
+ export type TextOverlayStyle = "lower-third" | "center-bold" | "subtitle" | "minimal";
312
+ /** Options for {@link applyTextOverlays} and {@link executeTextOverlay}. */
313
+ export interface TextOverlayOptions {
314
+ /** Path to the input video file */
315
+ videoPath: string;
316
+ /** Array of text lines to overlay */
317
+ texts: string[];
318
+ /** Path for the output video */
319
+ outputPath: string;
320
+ /** Text overlay style preset (default: "lower-third") */
321
+ style?: TextOverlayStyle;
322
+ /** Font size override (auto-calculated from video height if omitted) */
323
+ fontSize?: number;
324
+ /** Font color name (default: "white") */
325
+ fontColor?: string;
326
+ /** Fade in/out duration for text in seconds (default: 0.3) */
327
+ fadeDuration?: number;
328
+ /** Start time for text display in seconds (default: 0) */
329
+ startTime?: number;
330
+ /** End time for text display in seconds (default: video duration) */
331
+ endTime?: number;
332
+ }
333
+ /** Result from {@link applyTextOverlays} and {@link executeTextOverlay}. */
334
+ export interface TextOverlayResult {
335
+ /** Whether the operation succeeded */
336
+ success: boolean;
337
+ /** Absolute path to the output video */
338
+ outputPath?: string;
339
+ /** Error message on failure */
340
+ error?: string;
341
+ }
342
+ /**
343
+ * Apply text overlays to a video using FFmpeg drawtext filter.
344
+ *
345
+ * Supports multiple text lines with configurable style, position, font,
346
+ * and fade-in/out. Auto-detects system fonts across macOS, Linux, and Windows.
347
+ *
348
+ * @param options - Text overlay configuration
349
+ * @returns Result with absolute output path
350
+ */
351
+ export declare function applyTextOverlays(options: TextOverlayOptions): Promise<TextOverlayResult>;
352
+ /**
353
+ * Execute text overlay for CLI/Agent usage. Delegates to {@link applyTextOverlays}.
354
+ *
355
+ * @param options - Text overlay configuration
356
+ * @returns Result with absolute output path
357
+ */
358
+ export declare function executeTextOverlay(options: TextOverlayOptions): Promise<TextOverlayResult>;
359
+ /** A single auto-fixable issue identified during video review. */
360
+ export interface AutoFix {
361
+ /** Category of the fix */
362
+ type: "color_grade" | "text_overlay_adjust" | "speed_adjust" | "crop";
363
+ /** Human-readable description of the issue */
364
+ description: string;
365
+ /** FFmpeg filter string to apply the fix (if applicable) */
366
+ ffmpegFilter?: string;
367
+ }
368
+ /** Scored review for a single quality category. */
369
+ export interface VideoReviewCategory {
370
+ /** Quality score from 1-10 */
371
+ score: number;
372
+ /** List of identified issues */
373
+ issues: string[];
374
+ /** Whether the issues can be auto-fixed */
375
+ fixable: boolean;
376
+ /** Suggested FFmpeg filter for fixing (color category) */
377
+ suggestedFilter?: string;
378
+ /** Improvement suggestions (text readability category) */
379
+ suggestions?: string[];
380
+ }
381
+ /** Complete AI video review feedback from Gemini analysis. */
382
+ export interface VideoReviewFeedback {
383
+ /** Overall quality score from 1-10 */
384
+ overallScore: number;
385
+ /** Per-category quality assessments */
386
+ categories: {
387
+ pacing: VideoReviewCategory;
388
+ color: VideoReviewCategory;
389
+ textReadability: VideoReviewCategory;
390
+ audioVisualSync: VideoReviewCategory;
391
+ composition: VideoReviewCategory;
392
+ };
393
+ /** List of auto-fixable issues with FFmpeg filter suggestions */
394
+ autoFixable: AutoFix[];
395
+ /** General improvement recommendations */
396
+ recommendations: string[];
397
+ }
398
+ //# sourceMappingURL=ai-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-edit.d.ts","sourceRoot":"","sources":["../../src/commands/ai-edit.ts"],"names":[],"mappings":"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"}