@kenkaiiii/gg-editor 0.1.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 (815) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +453 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +173 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/core/ass.d.ts +75 -0
  8. package/dist/core/ass.d.ts.map +1 -0
  9. package/dist/core/ass.js +128 -0
  10. package/dist/core/ass.js.map +1 -0
  11. package/dist/core/ass.test.d.ts +2 -0
  12. package/dist/core/ass.test.d.ts.map +1 -0
  13. package/dist/core/ass.test.js +112 -0
  14. package/dist/core/ass.test.js.map +1 -0
  15. package/dist/core/audio-cleanup.d.ts +16 -0
  16. package/dist/core/audio-cleanup.d.ts.map +1 -0
  17. package/dist/core/audio-cleanup.js +79 -0
  18. package/dist/core/audio-cleanup.js.map +1 -0
  19. package/dist/core/audio-cleanup.test.d.ts +2 -0
  20. package/dist/core/audio-cleanup.test.d.ts.map +1 -0
  21. package/dist/core/audio-cleanup.test.js +41 -0
  22. package/dist/core/audio-cleanup.test.js.map +1 -0
  23. package/dist/core/audio-mix.d.ts +89 -0
  24. package/dist/core/audio-mix.d.ts.map +1 -0
  25. package/dist/core/audio-mix.js +156 -0
  26. package/dist/core/audio-mix.js.map +1 -0
  27. package/dist/core/audio-mix.test.d.ts +2 -0
  28. package/dist/core/audio-mix.test.d.ts.map +1 -0
  29. package/dist/core/audio-mix.test.js +91 -0
  30. package/dist/core/audio-mix.test.js.map +1 -0
  31. package/dist/core/auth/anthropic.d.ts +4 -0
  32. package/dist/core/auth/anthropic.d.ts.map +1 -0
  33. package/dist/core/auth/anthropic.js +78 -0
  34. package/dist/core/auth/anthropic.js.map +1 -0
  35. package/dist/core/auth/index.d.ts +7 -0
  36. package/dist/core/auth/index.d.ts.map +1 -0
  37. package/dist/core/auth/index.js +6 -0
  38. package/dist/core/auth/index.js.map +1 -0
  39. package/dist/core/auth/login.d.ts +13 -0
  40. package/dist/core/auth/login.d.ts.map +1 -0
  41. package/dist/core/auth/login.js +188 -0
  42. package/dist/core/auth/login.js.map +1 -0
  43. package/dist/core/auth/openai.d.ts +4 -0
  44. package/dist/core/auth/openai.d.ts.map +1 -0
  45. package/dist/core/auth/openai.js +170 -0
  46. package/dist/core/auth/openai.js.map +1 -0
  47. package/dist/core/auth/pkce.d.ts +5 -0
  48. package/dist/core/auth/pkce.d.ts.map +1 -0
  49. package/dist/core/auth/pkce.js +17 -0
  50. package/dist/core/auth/pkce.js.map +1 -0
  51. package/dist/core/auth/storage.d.ts +29 -0
  52. package/dist/core/auth/storage.d.ts.map +1 -0
  53. package/dist/core/auth/storage.js +127 -0
  54. package/dist/core/auth/storage.js.map +1 -0
  55. package/dist/core/auth/types.d.ts +22 -0
  56. package/dist/core/auth/types.d.ts.map +1 -0
  57. package/dist/core/auth/types.js +12 -0
  58. package/dist/core/auth/types.js.map +1 -0
  59. package/dist/core/clustering.d.ts +52 -0
  60. package/dist/core/clustering.d.ts.map +1 -0
  61. package/dist/core/clustering.js +163 -0
  62. package/dist/core/clustering.js.map +1 -0
  63. package/dist/core/clustering.test.d.ts +2 -0
  64. package/dist/core/clustering.test.d.ts.map +1 -0
  65. package/dist/core/clustering.test.js +112 -0
  66. package/dist/core/clustering.test.js.map +1 -0
  67. package/dist/core/color-match.d.ts +19 -0
  68. package/dist/core/color-match.d.ts.map +1 -0
  69. package/dist/core/color-match.js +118 -0
  70. package/dist/core/color-match.js.map +1 -0
  71. package/dist/core/color-match.test.d.ts +2 -0
  72. package/dist/core/color-match.test.d.ts.map +1 -0
  73. package/dist/core/color-match.test.js +40 -0
  74. package/dist/core/color-match.test.js.map +1 -0
  75. package/dist/core/ducking.d.ts +37 -0
  76. package/dist/core/ducking.d.ts.map +1 -0
  77. package/dist/core/ducking.js +71 -0
  78. package/dist/core/ducking.js.map +1 -0
  79. package/dist/core/ducking.test.d.ts +2 -0
  80. package/dist/core/ducking.test.d.ts.map +1 -0
  81. package/dist/core/ducking.test.js +38 -0
  82. package/dist/core/ducking.test.js.map +1 -0
  83. package/dist/core/edl-roundtrip.test.d.ts +2 -0
  84. package/dist/core/edl-roundtrip.test.d.ts.map +1 -0
  85. package/dist/core/edl-roundtrip.test.js +171 -0
  86. package/dist/core/edl-roundtrip.test.js.map +1 -0
  87. package/dist/core/edl.d.ts +41 -0
  88. package/dist/core/edl.d.ts.map +1 -0
  89. package/dist/core/edl.js +56 -0
  90. package/dist/core/edl.js.map +1 -0
  91. package/dist/core/edl.test.d.ts +2 -0
  92. package/dist/core/edl.test.d.ts.map +1 -0
  93. package/dist/core/edl.test.js +62 -0
  94. package/dist/core/edl.test.js.map +1 -0
  95. package/dist/core/envelope-sync.d.ts +52 -0
  96. package/dist/core/envelope-sync.d.ts.map +1 -0
  97. package/dist/core/envelope-sync.js +169 -0
  98. package/dist/core/envelope-sync.js.map +1 -0
  99. package/dist/core/envelope-sync.test.d.ts +2 -0
  100. package/dist/core/envelope-sync.test.d.ts.map +1 -0
  101. package/dist/core/envelope-sync.test.js +70 -0
  102. package/dist/core/envelope-sync.test.js.map +1 -0
  103. package/dist/core/fcpxml-roundtrip.test.d.ts +2 -0
  104. package/dist/core/fcpxml-roundtrip.test.d.ts.map +1 -0
  105. package/dist/core/fcpxml-roundtrip.test.js +251 -0
  106. package/dist/core/fcpxml-roundtrip.test.js.map +1 -0
  107. package/dist/core/fcpxml.d.ts +172 -0
  108. package/dist/core/fcpxml.d.ts.map +1 -0
  109. package/dist/core/fcpxml.js +406 -0
  110. package/dist/core/fcpxml.js.map +1 -0
  111. package/dist/core/fcpxml.test.d.ts +2 -0
  112. package/dist/core/fcpxml.test.d.ts.map +1 -0
  113. package/dist/core/fcpxml.test.js +360 -0
  114. package/dist/core/fcpxml.test.js.map +1 -0
  115. package/dist/core/filler-words.d.ts +107 -0
  116. package/dist/core/filler-words.d.ts.map +1 -0
  117. package/dist/core/filler-words.js +221 -0
  118. package/dist/core/filler-words.js.map +1 -0
  119. package/dist/core/filler-words.test.d.ts +2 -0
  120. package/dist/core/filler-words.test.d.ts.map +1 -0
  121. package/dist/core/filler-words.test.js +177 -0
  122. package/dist/core/filler-words.test.js.map +1 -0
  123. package/dist/core/format.d.ts +36 -0
  124. package/dist/core/format.d.ts.map +1 -0
  125. package/dist/core/format.js +57 -0
  126. package/dist/core/format.js.map +1 -0
  127. package/dist/core/format.test.d.ts +2 -0
  128. package/dist/core/format.test.d.ts.map +1 -0
  129. package/dist/core/format.test.js +81 -0
  130. package/dist/core/format.test.js.map +1 -0
  131. package/dist/core/frames.d.ts +35 -0
  132. package/dist/core/frames.d.ts.map +1 -0
  133. package/dist/core/frames.js +64 -0
  134. package/dist/core/frames.js.map +1 -0
  135. package/dist/core/hook-analysis.d.ts +90 -0
  136. package/dist/core/hook-analysis.d.ts.map +1 -0
  137. package/dist/core/hook-analysis.js +222 -0
  138. package/dist/core/hook-analysis.js.map +1 -0
  139. package/dist/core/hook-analysis.test.d.ts +2 -0
  140. package/dist/core/hook-analysis.test.d.ts.map +1 -0
  141. package/dist/core/hook-analysis.test.js +130 -0
  142. package/dist/core/hook-analysis.test.js.map +1 -0
  143. package/dist/core/hosts/detect.d.ts +17 -0
  144. package/dist/core/hosts/detect.d.ts.map +1 -0
  145. package/dist/core/hosts/detect.js +64 -0
  146. package/dist/core/hosts/detect.js.map +1 -0
  147. package/dist/core/hosts/detect.test.d.ts +2 -0
  148. package/dist/core/hosts/detect.test.d.ts.map +1 -0
  149. package/dist/core/hosts/detect.test.js +17 -0
  150. package/dist/core/hosts/detect.test.js.map +1 -0
  151. package/dist/core/hosts/index.d.ts +13 -0
  152. package/dist/core/hosts/index.d.ts.map +1 -0
  153. package/dist/core/hosts/index.js +30 -0
  154. package/dist/core/hosts/index.js.map +1 -0
  155. package/dist/core/hosts/lazy.d.ts +53 -0
  156. package/dist/core/hosts/lazy.d.ts.map +1 -0
  157. package/dist/core/hosts/lazy.js +125 -0
  158. package/dist/core/hosts/lazy.js.map +1 -0
  159. package/dist/core/hosts/lazy.test.d.ts +2 -0
  160. package/dist/core/hosts/lazy.test.d.ts.map +1 -0
  161. package/dist/core/hosts/lazy.test.js +117 -0
  162. package/dist/core/hosts/lazy.test.js.map +1 -0
  163. package/dist/core/hosts/none/adapter.d.ts +74 -0
  164. package/dist/core/hosts/none/adapter.d.ts.map +1 -0
  165. package/dist/core/hosts/none/adapter.js +99 -0
  166. package/dist/core/hosts/none/adapter.js.map +1 -0
  167. package/dist/core/hosts/premiere/adapter.d.ts +87 -0
  168. package/dist/core/hosts/premiere/adapter.d.ts.map +1 -0
  169. package/dist/core/hosts/premiere/adapter.js +218 -0
  170. package/dist/core/hosts/premiere/adapter.js.map +1 -0
  171. package/dist/core/hosts/premiere/bridge-source.d.ts +26 -0
  172. package/dist/core/hosts/premiere/bridge-source.d.ts.map +1 -0
  173. package/dist/core/hosts/premiere/bridge-source.js +326 -0
  174. package/dist/core/hosts/premiere/bridge-source.js.map +1 -0
  175. package/dist/core/hosts/premiere/bridge-source.test.d.ts +2 -0
  176. package/dist/core/hosts/premiere/bridge-source.test.d.ts.map +1 -0
  177. package/dist/core/hosts/premiere/bridge-source.test.js +36 -0
  178. package/dist/core/hosts/premiere/bridge-source.test.js.map +1 -0
  179. package/dist/core/hosts/premiere/bridge.d.ts +38 -0
  180. package/dist/core/hosts/premiere/bridge.d.ts.map +1 -0
  181. package/dist/core/hosts/premiere/bridge.js +238 -0
  182. package/dist/core/hosts/premiere/bridge.js.map +1 -0
  183. package/dist/core/hosts/premiere/http-bridge.d.ts +47 -0
  184. package/dist/core/hosts/premiere/http-bridge.d.ts.map +1 -0
  185. package/dist/core/hosts/premiere/http-bridge.js +82 -0
  186. package/dist/core/hosts/premiere/http-bridge.js.map +1 -0
  187. package/dist/core/hosts/premiere/http-bridge.test.d.ts +2 -0
  188. package/dist/core/hosts/premiere/http-bridge.test.d.ts.map +1 -0
  189. package/dist/core/hosts/premiere/http-bridge.test.js +113 -0
  190. package/dist/core/hosts/premiere/http-bridge.test.js.map +1 -0
  191. package/dist/core/hosts/premiere/ws-bridge.d.ts +91 -0
  192. package/dist/core/hosts/premiere/ws-bridge.d.ts.map +1 -0
  193. package/dist/core/hosts/premiere/ws-bridge.js +303 -0
  194. package/dist/core/hosts/premiere/ws-bridge.js.map +1 -0
  195. package/dist/core/hosts/premiere/ws-bridge.test.d.ts +2 -0
  196. package/dist/core/hosts/premiere/ws-bridge.test.d.ts.map +1 -0
  197. package/dist/core/hosts/premiere/ws-bridge.test.js +146 -0
  198. package/dist/core/hosts/premiere/ws-bridge.test.js.map +1 -0
  199. package/dist/core/hosts/resolve/adapter.d.ts +99 -0
  200. package/dist/core/hosts/resolve/adapter.d.ts.map +1 -0
  201. package/dist/core/hosts/resolve/adapter.js +187 -0
  202. package/dist/core/hosts/resolve/adapter.js.map +1 -0
  203. package/dist/core/hosts/resolve/bridge-source.d.ts +17 -0
  204. package/dist/core/hosts/resolve/bridge-source.d.ts.map +1 -0
  205. package/dist/core/hosts/resolve/bridge-source.js +660 -0
  206. package/dist/core/hosts/resolve/bridge-source.js.map +1 -0
  207. package/dist/core/hosts/resolve/bridge.d.ts +51 -0
  208. package/dist/core/hosts/resolve/bridge.d.ts.map +1 -0
  209. package/dist/core/hosts/resolve/bridge.integration.test.d.ts +2 -0
  210. package/dist/core/hosts/resolve/bridge.integration.test.d.ts.map +1 -0
  211. package/dist/core/hosts/resolve/bridge.integration.test.js +472 -0
  212. package/dist/core/hosts/resolve/bridge.integration.test.js.map +1 -0
  213. package/dist/core/hosts/resolve/bridge.js +270 -0
  214. package/dist/core/hosts/resolve/bridge.js.map +1 -0
  215. package/dist/core/hosts/resolve/bridge.test.d.ts +2 -0
  216. package/dist/core/hosts/resolve/bridge.test.d.ts.map +1 -0
  217. package/dist/core/hosts/resolve/bridge.test.js +50 -0
  218. package/dist/core/hosts/resolve/bridge.test.js.map +1 -0
  219. package/dist/core/hosts/types.d.ts +167 -0
  220. package/dist/core/hosts/types.d.ts.map +1 -0
  221. package/dist/core/hosts/types.js +27 -0
  222. package/dist/core/hosts/types.js.map +1 -0
  223. package/dist/core/keyframes.d.ts +35 -0
  224. package/dist/core/keyframes.d.ts.map +1 -0
  225. package/dist/core/keyframes.js +90 -0
  226. package/dist/core/keyframes.js.map +1 -0
  227. package/dist/core/keyframes.test.d.ts +2 -0
  228. package/dist/core/keyframes.test.d.ts.map +1 -0
  229. package/dist/core/keyframes.test.js +73 -0
  230. package/dist/core/keyframes.test.js.map +1 -0
  231. package/dist/core/keyword-captions.d.ts +75 -0
  232. package/dist/core/keyword-captions.d.ts.map +1 -0
  233. package/dist/core/keyword-captions.js +285 -0
  234. package/dist/core/keyword-captions.js.map +1 -0
  235. package/dist/core/keyword-captions.test.d.ts +2 -0
  236. package/dist/core/keyword-captions.test.d.ts.map +1 -0
  237. package/dist/core/keyword-captions.test.js +90 -0
  238. package/dist/core/keyword-captions.test.js.map +1 -0
  239. package/dist/core/loudness.d.ts +52 -0
  240. package/dist/core/loudness.d.ts.map +1 -0
  241. package/dist/core/loudness.js +120 -0
  242. package/dist/core/loudness.js.map +1 -0
  243. package/dist/core/loudness.test.d.ts +2 -0
  244. package/dist/core/loudness.test.d.ts.map +1 -0
  245. package/dist/core/loudness.test.js +34 -0
  246. package/dist/core/loudness.test.js.map +1 -0
  247. package/dist/core/marker-colors.d.ts +39 -0
  248. package/dist/core/marker-colors.d.ts.map +1 -0
  249. package/dist/core/marker-colors.js +83 -0
  250. package/dist/core/marker-colors.js.map +1 -0
  251. package/dist/core/marker-colors.test.d.ts +2 -0
  252. package/dist/core/marker-colors.test.d.ts.map +1 -0
  253. package/dist/core/marker-colors.test.js +116 -0
  254. package/dist/core/marker-colors.test.js.map +1 -0
  255. package/dist/core/media/ffmpeg.d.ts +27 -0
  256. package/dist/core/media/ffmpeg.d.ts.map +1 -0
  257. package/dist/core/media/ffmpeg.js +53 -0
  258. package/dist/core/media/ffmpeg.js.map +1 -0
  259. package/dist/core/multicam.d.ts +40 -0
  260. package/dist/core/multicam.d.ts.map +1 -0
  261. package/dist/core/multicam.js +77 -0
  262. package/dist/core/multicam.js.map +1 -0
  263. package/dist/core/multicam.test.d.ts +2 -0
  264. package/dist/core/multicam.test.d.ts.map +1 -0
  265. package/dist/core/multicam.test.js +56 -0
  266. package/dist/core/multicam.test.js.map +1 -0
  267. package/dist/core/punch-in.d.ts +72 -0
  268. package/dist/core/punch-in.d.ts.map +1 -0
  269. package/dist/core/punch-in.js +133 -0
  270. package/dist/core/punch-in.js.map +1 -0
  271. package/dist/core/punch-in.test.d.ts +2 -0
  272. package/dist/core/punch-in.test.d.ts.map +1 -0
  273. package/dist/core/punch-in.test.js +118 -0
  274. package/dist/core/punch-in.test.js.map +1 -0
  275. package/dist/core/reformat.d.ts +26 -0
  276. package/dist/core/reformat.d.ts.map +1 -0
  277. package/dist/core/reformat.js +31 -0
  278. package/dist/core/reformat.js.map +1 -0
  279. package/dist/core/reformat.test.d.ts +2 -0
  280. package/dist/core/reformat.test.d.ts.map +1 -0
  281. package/dist/core/reformat.test.js +29 -0
  282. package/dist/core/reformat.test.js.map +1 -0
  283. package/dist/core/reorder.d.ts +42 -0
  284. package/dist/core/reorder.d.ts.map +1 -0
  285. package/dist/core/reorder.js +80 -0
  286. package/dist/core/reorder.js.map +1 -0
  287. package/dist/core/reorder.test.d.ts +2 -0
  288. package/dist/core/reorder.test.d.ts.map +1 -0
  289. package/dist/core/reorder.test.js +88 -0
  290. package/dist/core/reorder.test.js.map +1 -0
  291. package/dist/core/review.d.ts +38 -0
  292. package/dist/core/review.d.ts.map +1 -0
  293. package/dist/core/review.js +128 -0
  294. package/dist/core/review.js.map +1 -0
  295. package/dist/core/review.test.d.ts +2 -0
  296. package/dist/core/review.test.d.ts.map +1 -0
  297. package/dist/core/review.test.js +76 -0
  298. package/dist/core/review.test.js.map +1 -0
  299. package/dist/core/sessions.d.ts +40 -0
  300. package/dist/core/sessions.d.ts.map +1 -0
  301. package/dist/core/sessions.js +61 -0
  302. package/dist/core/sessions.js.map +1 -0
  303. package/dist/core/sfx-on-cuts.d.ts +60 -0
  304. package/dist/core/sfx-on-cuts.d.ts.map +1 -0
  305. package/dist/core/sfx-on-cuts.js +90 -0
  306. package/dist/core/sfx-on-cuts.js.map +1 -0
  307. package/dist/core/sfx-on-cuts.test.d.ts +2 -0
  308. package/dist/core/sfx-on-cuts.test.d.ts.map +1 -0
  309. package/dist/core/sfx-on-cuts.test.js +53 -0
  310. package/dist/core/sfx-on-cuts.test.js.map +1 -0
  311. package/dist/core/silence.d.ts +41 -0
  312. package/dist/core/silence.d.ts.map +1 -0
  313. package/dist/core/silence.js +104 -0
  314. package/dist/core/silence.js.map +1 -0
  315. package/dist/core/silence.test.d.ts +2 -0
  316. package/dist/core/silence.test.d.ts.map +1 -0
  317. package/dist/core/silence.test.js +143 -0
  318. package/dist/core/silence.test.js.map +1 -0
  319. package/dist/core/skills-loader.d.ts +34 -0
  320. package/dist/core/skills-loader.d.ts.map +1 -0
  321. package/dist/core/skills-loader.js +80 -0
  322. package/dist/core/skills-loader.js.map +1 -0
  323. package/dist/core/skills-loader.test.d.ts +2 -0
  324. package/dist/core/skills-loader.test.d.ts.map +1 -0
  325. package/dist/core/skills-loader.test.js +68 -0
  326. package/dist/core/skills-loader.test.js.map +1 -0
  327. package/dist/core/skin-grade.d.ts +62 -0
  328. package/dist/core/skin-grade.d.ts.map +1 -0
  329. package/dist/core/skin-grade.js +270 -0
  330. package/dist/core/skin-grade.js.map +1 -0
  331. package/dist/core/skin-grade.test.d.ts +2 -0
  332. package/dist/core/skin-grade.test.d.ts.map +1 -0
  333. package/dist/core/skin-grade.test.js +182 -0
  334. package/dist/core/skin-grade.test.js.map +1 -0
  335. package/dist/core/speaker-changes.d.ts +30 -0
  336. package/dist/core/speaker-changes.d.ts.map +1 -0
  337. package/dist/core/speaker-changes.js +19 -0
  338. package/dist/core/speaker-changes.js.map +1 -0
  339. package/dist/core/speaker-changes.test.d.ts +2 -0
  340. package/dist/core/speaker-changes.test.d.ts.map +1 -0
  341. package/dist/core/speaker-changes.test.js +46 -0
  342. package/dist/core/speaker-changes.test.js.map +1 -0
  343. package/dist/core/speed-ramp.d.ts +60 -0
  344. package/dist/core/speed-ramp.d.ts.map +1 -0
  345. package/dist/core/speed-ramp.js +113 -0
  346. package/dist/core/speed-ramp.js.map +1 -0
  347. package/dist/core/speed-ramp.test.d.ts +2 -0
  348. package/dist/core/speed-ramp.test.d.ts.map +1 -0
  349. package/dist/core/speed-ramp.test.js +74 -0
  350. package/dist/core/speed-ramp.test.js.map +1 -0
  351. package/dist/core/srt.d.ts +56 -0
  352. package/dist/core/srt.d.ts.map +1 -0
  353. package/dist/core/srt.js +90 -0
  354. package/dist/core/srt.js.map +1 -0
  355. package/dist/core/srt.test.d.ts +2 -0
  356. package/dist/core/srt.test.d.ts.map +1 -0
  357. package/dist/core/srt.test.js +107 -0
  358. package/dist/core/srt.test.js.map +1 -0
  359. package/dist/core/stabilize.d.ts +15 -0
  360. package/dist/core/stabilize.d.ts.map +1 -0
  361. package/dist/core/stabilize.js +69 -0
  362. package/dist/core/stabilize.js.map +1 -0
  363. package/dist/core/styles-loader.d.ts +33 -0
  364. package/dist/core/styles-loader.d.ts.map +1 -0
  365. package/dist/core/styles-loader.js +67 -0
  366. package/dist/core/styles-loader.js.map +1 -0
  367. package/dist/core/styles-loader.test.d.ts +2 -0
  368. package/dist/core/styles-loader.test.d.ts.map +1 -0
  369. package/dist/core/styles-loader.test.js +72 -0
  370. package/dist/core/styles-loader.test.js.map +1 -0
  371. package/dist/core/text-overlay.d.ts +76 -0
  372. package/dist/core/text-overlay.d.ts.map +1 -0
  373. package/dist/core/text-overlay.js +233 -0
  374. package/dist/core/text-overlay.js.map +1 -0
  375. package/dist/core/text-overlay.test.d.ts +2 -0
  376. package/dist/core/text-overlay.test.d.ts.map +1 -0
  377. package/dist/core/text-overlay.test.js +103 -0
  378. package/dist/core/text-overlay.test.js.map +1 -0
  379. package/dist/core/vision.d.ts +53 -0
  380. package/dist/core/vision.d.ts.map +1 -0
  381. package/dist/core/vision.js +150 -0
  382. package/dist/core/vision.js.map +1 -0
  383. package/dist/core/vision.test.d.ts +2 -0
  384. package/dist/core/vision.test.d.ts.map +1 -0
  385. package/dist/core/vision.test.js +76 -0
  386. package/dist/core/vision.test.js.map +1 -0
  387. package/dist/core/whisper.d.ts +188 -0
  388. package/dist/core/whisper.d.ts.map +1 -0
  389. package/dist/core/whisper.js +380 -0
  390. package/dist/core/whisper.js.map +1 -0
  391. package/dist/core/whisper.test.d.ts +2 -0
  392. package/dist/core/whisper.test.d.ts.map +1 -0
  393. package/dist/core/whisper.test.js +262 -0
  394. package/dist/core/whisper.test.js.map +1 -0
  395. package/dist/director/delegate-tool.d.ts +22 -0
  396. package/dist/director/delegate-tool.d.ts.map +1 -0
  397. package/dist/director/delegate-tool.js +62 -0
  398. package/dist/director/delegate-tool.js.map +1 -0
  399. package/dist/director/delegate-tool.test.d.ts +2 -0
  400. package/dist/director/delegate-tool.test.d.ts.map +1 -0
  401. package/dist/director/delegate-tool.test.js +38 -0
  402. package/dist/director/delegate-tool.test.js.map +1 -0
  403. package/dist/director/director-prompt.d.ts +7 -0
  404. package/dist/director/director-prompt.d.ts.map +1 -0
  405. package/dist/director/director-prompt.js +52 -0
  406. package/dist/director/director-prompt.js.map +1 -0
  407. package/dist/director/director.d.ts +16 -0
  408. package/dist/director/director.d.ts.map +1 -0
  409. package/dist/director/director.js +28 -0
  410. package/dist/director/director.js.map +1 -0
  411. package/dist/director/executor.d.ts +19 -0
  412. package/dist/director/executor.d.ts.map +1 -0
  413. package/dist/director/executor.js +93 -0
  414. package/dist/director/executor.js.map +1 -0
  415. package/dist/director/index.d.ts +6 -0
  416. package/dist/director/index.d.ts.map +1 -0
  417. package/dist/director/index.js +5 -0
  418. package/dist/director/index.js.map +1 -0
  419. package/dist/director/types.d.ts +38 -0
  420. package/dist/director/types.d.ts.map +1 -0
  421. package/dist/director/types.js +2 -0
  422. package/dist/director/types.js.map +1 -0
  423. package/dist/index.d.ts +14 -0
  424. package/dist/index.d.ts.map +1 -0
  425. package/dist/index.js +12 -0
  426. package/dist/index.js.map +1 -0
  427. package/dist/skills.d.ts +18 -0
  428. package/dist/skills.d.ts.map +1 -0
  429. package/dist/skills.js +674 -0
  430. package/dist/skills.js.map +1 -0
  431. package/dist/system-prompt.d.ts +35 -0
  432. package/dist/system-prompt.d.ts.map +1 -0
  433. package/dist/system-prompt.js +478 -0
  434. package/dist/system-prompt.js.map +1 -0
  435. package/dist/system-prompt.test.d.ts +2 -0
  436. package/dist/system-prompt.test.d.ts.map +1 -0
  437. package/dist/system-prompt.test.js +87 -0
  438. package/dist/system-prompt.test.js.map +1 -0
  439. package/dist/tools/add-fades.d.ts +13 -0
  440. package/dist/tools/add-fades.d.ts.map +1 -0
  441. package/dist/tools/add-fades.js +88 -0
  442. package/dist/tools/add-fades.js.map +1 -0
  443. package/dist/tools/add-marker.d.ts +31 -0
  444. package/dist/tools/add-marker.d.ts.map +1 -0
  445. package/dist/tools/add-marker.js +56 -0
  446. package/dist/tools/add-marker.js.map +1 -0
  447. package/dist/tools/add-sfx-at-cuts.d.ts +24 -0
  448. package/dist/tools/add-sfx-at-cuts.d.ts.map +1 -0
  449. package/dist/tools/add-sfx-at-cuts.js +120 -0
  450. package/dist/tools/add-sfx-at-cuts.js.map +1 -0
  451. package/dist/tools/add-track.d.ts +13 -0
  452. package/dist/tools/add-track.d.ts.map +1 -0
  453. package/dist/tools/add-track.js +26 -0
  454. package/dist/tools/add-track.js.map +1 -0
  455. package/dist/tools/analyze-hook.d.ts +28 -0
  456. package/dist/tools/analyze-hook.d.ts.map +1 -0
  457. package/dist/tools/analyze-hook.js +126 -0
  458. package/dist/tools/analyze-hook.js.map +1 -0
  459. package/dist/tools/append-clip.d.ts +10 -0
  460. package/dist/tools/append-clip.d.ts.map +1 -0
  461. package/dist/tools/append-clip.js +27 -0
  462. package/dist/tools/append-clip.js.map +1 -0
  463. package/dist/tools/apply-lut.d.ts +11 -0
  464. package/dist/tools/apply-lut.d.ts.map +1 -0
  465. package/dist/tools/apply-lut.js +33 -0
  466. package/dist/tools/apply-lut.js.map +1 -0
  467. package/dist/tools/burn-subtitles.d.ts +28 -0
  468. package/dist/tools/burn-subtitles.d.ts.map +1 -0
  469. package/dist/tools/burn-subtitles.js +87 -0
  470. package/dist/tools/burn-subtitles.js.map +1 -0
  471. package/dist/tools/clean-audio.d.ts +18 -0
  472. package/dist/tools/clean-audio.d.ts.map +1 -0
  473. package/dist/tools/clean-audio.js +54 -0
  474. package/dist/tools/clean-audio.js.map +1 -0
  475. package/dist/tools/clone-timeline.d.ts +9 -0
  476. package/dist/tools/clone-timeline.d.ts.map +1 -0
  477. package/dist/tools/clone-timeline.js +28 -0
  478. package/dist/tools/clone-timeline.js.map +1 -0
  479. package/dist/tools/cluster-takes.d.ts +11 -0
  480. package/dist/tools/cluster-takes.d.ts.map +1 -0
  481. package/dist/tools/cluster-takes.js +71 -0
  482. package/dist/tools/cluster-takes.js.map +1 -0
  483. package/dist/tools/color-match.d.ts +16 -0
  484. package/dist/tools/color-match.d.ts.map +1 -0
  485. package/dist/tools/color-match.js +55 -0
  486. package/dist/tools/color-match.js.map +1 -0
  487. package/dist/tools/compose-layered.d.ts +47 -0
  488. package/dist/tools/compose-layered.d.ts.map +1 -0
  489. package/dist/tools/compose-layered.js +103 -0
  490. package/dist/tools/compose-layered.js.map +1 -0
  491. package/dist/tools/compose-thumbnail.d.ts +35 -0
  492. package/dist/tools/compose-thumbnail.d.ts.map +1 -0
  493. package/dist/tools/compose-thumbnail.js +130 -0
  494. package/dist/tools/compose-thumbnail.js.map +1 -0
  495. package/dist/tools/concat-videos.d.ts +18 -0
  496. package/dist/tools/concat-videos.d.ts.map +1 -0
  497. package/dist/tools/concat-videos.js +79 -0
  498. package/dist/tools/concat-videos.js.map +1 -0
  499. package/dist/tools/copy-grade.d.ts +10 -0
  500. package/dist/tools/copy-grade.d.ts.map +1 -0
  501. package/dist/tools/copy-grade.js +29 -0
  502. package/dist/tools/copy-grade.js.map +1 -0
  503. package/dist/tools/create-timeline.d.ts +12 -0
  504. package/dist/tools/create-timeline.d.ts.map +1 -0
  505. package/dist/tools/create-timeline.js +35 -0
  506. package/dist/tools/create-timeline.js.map +1 -0
  507. package/dist/tools/crossfade-videos.d.ts +49 -0
  508. package/dist/tools/crossfade-videos.d.ts.map +1 -0
  509. package/dist/tools/crossfade-videos.js +121 -0
  510. package/dist/tools/crossfade-videos.js.map +1 -0
  511. package/dist/tools/cut-at.d.ts +10 -0
  512. package/dist/tools/cut-at.d.ts.map +1 -0
  513. package/dist/tools/cut-at.js +24 -0
  514. package/dist/tools/cut-at.js.map +1 -0
  515. package/dist/tools/cut-filler-words.d.ts +27 -0
  516. package/dist/tools/cut-filler-words.d.ts.map +1 -0
  517. package/dist/tools/cut-filler-words.js +165 -0
  518. package/dist/tools/cut-filler-words.js.map +1 -0
  519. package/dist/tools/detect-silence.d.ts +13 -0
  520. package/dist/tools/detect-silence.d.ts.map +1 -0
  521. package/dist/tools/detect-silence.js +98 -0
  522. package/dist/tools/detect-silence.js.map +1 -0
  523. package/dist/tools/detect-speaker-changes.d.ts +9 -0
  524. package/dist/tools/detect-speaker-changes.d.ts.map +1 -0
  525. package/dist/tools/detect-speaker-changes.js +42 -0
  526. package/dist/tools/detect-speaker-changes.js.map +1 -0
  527. package/dist/tools/dry-run.d.ts +23 -0
  528. package/dist/tools/dry-run.d.ts.map +1 -0
  529. package/dist/tools/dry-run.js +66 -0
  530. package/dist/tools/dry-run.js.map +1 -0
  531. package/dist/tools/dry-run.test.d.ts +2 -0
  532. package/dist/tools/dry-run.test.d.ts.map +1 -0
  533. package/dist/tools/dry-run.test.js +66 -0
  534. package/dist/tools/dry-run.test.js.map +1 -0
  535. package/dist/tools/duck-audio.d.ts +16 -0
  536. package/dist/tools/duck-audio.d.ts.map +1 -0
  537. package/dist/tools/duck-audio.js +73 -0
  538. package/dist/tools/duck-audio.js.map +1 -0
  539. package/dist/tools/extract-audio.d.ts +10 -0
  540. package/dist/tools/extract-audio.d.ts.map +1 -0
  541. package/dist/tools/extract-audio.js +30 -0
  542. package/dist/tools/extract-audio.js.map +1 -0
  543. package/dist/tools/extract-frame.d.ts +12 -0
  544. package/dist/tools/extract-frame.d.ts.map +1 -0
  545. package/dist/tools/extract-frame.js +63 -0
  546. package/dist/tools/extract-frame.js.map +1 -0
  547. package/dist/tools/generate-gif.d.ts +13 -0
  548. package/dist/tools/generate-gif.d.ts.map +1 -0
  549. package/dist/tools/generate-gif.js +94 -0
  550. package/dist/tools/generate-gif.js.map +1 -0
  551. package/dist/tools/get-markers.d.ts +13 -0
  552. package/dist/tools/get-markers.d.ts.map +1 -0
  553. package/dist/tools/get-markers.js +71 -0
  554. package/dist/tools/get-markers.js.map +1 -0
  555. package/dist/tools/get-timeline.d.ts +9 -0
  556. package/dist/tools/get-timeline.d.ts.map +1 -0
  557. package/dist/tools/get-timeline.js +43 -0
  558. package/dist/tools/get-timeline.js.map +1 -0
  559. package/dist/tools/grade-skin-tones.d.ts +31 -0
  560. package/dist/tools/grade-skin-tones.d.ts.map +1 -0
  561. package/dist/tools/grade-skin-tones.js +92 -0
  562. package/dist/tools/grade-skin-tones.js.map +1 -0
  563. package/dist/tools/host-info.d.ts +7 -0
  564. package/dist/tools/host-info.d.ts.map +1 -0
  565. package/dist/tools/host-info.js +33 -0
  566. package/dist/tools/host-info.js.map +1 -0
  567. package/dist/tools/host-tools.test.d.ts +2 -0
  568. package/dist/tools/host-tools.test.d.ts.map +1 -0
  569. package/dist/tools/host-tools.test.js +83 -0
  570. package/dist/tools/host-tools.test.js.map +1 -0
  571. package/dist/tools/import-edl.d.ts +9 -0
  572. package/dist/tools/import-edl.d.ts.map +1 -0
  573. package/dist/tools/import-edl.js +25 -0
  574. package/dist/tools/import-edl.js.map +1 -0
  575. package/dist/tools/import-subtitles.d.ts +9 -0
  576. package/dist/tools/import-subtitles.d.ts.map +1 -0
  577. package/dist/tools/import-subtitles.js +31 -0
  578. package/dist/tools/import-subtitles.js.map +1 -0
  579. package/dist/tools/import-to-media-pool.d.ts +10 -0
  580. package/dist/tools/import-to-media-pool.d.ts.map +1 -0
  581. package/dist/tools/import-to-media-pool.js +27 -0
  582. package/dist/tools/import-to-media-pool.js.map +1 -0
  583. package/dist/tools/index.d.ts +94 -0
  584. package/dist/tools/index.d.ts.map +1 -0
  585. package/dist/tools/index.js +242 -0
  586. package/dist/tools/index.js.map +1 -0
  587. package/dist/tools/index.test.d.ts +2 -0
  588. package/dist/tools/index.test.d.ts.map +1 -0
  589. package/dist/tools/index.test.js +128 -0
  590. package/dist/tools/index.test.js.map +1 -0
  591. package/dist/tools/insert-broll.d.ts +13 -0
  592. package/dist/tools/insert-broll.d.ts.map +1 -0
  593. package/dist/tools/insert-broll.js +56 -0
  594. package/dist/tools/insert-broll.js.map +1 -0
  595. package/dist/tools/ken-burns.d.ts +26 -0
  596. package/dist/tools/ken-burns.d.ts.map +1 -0
  597. package/dist/tools/ken-burns.js +125 -0
  598. package/dist/tools/ken-burns.js.map +1 -0
  599. package/dist/tools/list-render-presets.d.ts +7 -0
  600. package/dist/tools/list-render-presets.d.ts.map +1 -0
  601. package/dist/tools/list-render-presets.js +30 -0
  602. package/dist/tools/list-render-presets.js.map +1 -0
  603. package/dist/tools/match-clip-color.d.ts +29 -0
  604. package/dist/tools/match-clip-color.d.ts.map +1 -0
  605. package/dist/tools/match-clip-color.js +99 -0
  606. package/dist/tools/match-clip-color.js.map +1 -0
  607. package/dist/tools/measure-loudness.d.ts +8 -0
  608. package/dist/tools/measure-loudness.d.ts.map +1 -0
  609. package/dist/tools/measure-loudness.js +40 -0
  610. package/dist/tools/measure-loudness.js.map +1 -0
  611. package/dist/tools/mix-audio.d.ts +46 -0
  612. package/dist/tools/mix-audio.d.ts.map +1 -0
  613. package/dist/tools/mix-audio.js +101 -0
  614. package/dist/tools/mix-audio.js.map +1 -0
  615. package/dist/tools/multicam-sync.d.ts +14 -0
  616. package/dist/tools/multicam-sync.d.ts.map +1 -0
  617. package/dist/tools/multicam-sync.js +75 -0
  618. package/dist/tools/multicam-sync.js.map +1 -0
  619. package/dist/tools/new-tools.test.d.ts +2 -0
  620. package/dist/tools/new-tools.test.d.ts.map +1 -0
  621. package/dist/tools/new-tools.test.js +511 -0
  622. package/dist/tools/new-tools.test.js.map +1 -0
  623. package/dist/tools/normalize-loudness.d.ts +21 -0
  624. package/dist/tools/normalize-loudness.d.ts.map +1 -0
  625. package/dist/tools/normalize-loudness.js +94 -0
  626. package/dist/tools/normalize-loudness.js.map +1 -0
  627. package/dist/tools/open-page.d.ts +17 -0
  628. package/dist/tools/open-page.d.ts.map +1 -0
  629. package/dist/tools/open-page.js +27 -0
  630. package/dist/tools/open-page.js.map +1 -0
  631. package/dist/tools/overlay-watermark.d.ts +28 -0
  632. package/dist/tools/overlay-watermark.d.ts.map +1 -0
  633. package/dist/tools/overlay-watermark.js +98 -0
  634. package/dist/tools/overlay-watermark.js.map +1 -0
  635. package/dist/tools/pick-best-takes.d.ts +20 -0
  636. package/dist/tools/pick-best-takes.d.ts.map +1 -0
  637. package/dist/tools/pick-best-takes.js +147 -0
  638. package/dist/tools/pick-best-takes.js.map +1 -0
  639. package/dist/tools/post-tools.test.d.ts +2 -0
  640. package/dist/tools/post-tools.test.d.ts.map +1 -0
  641. package/dist/tools/post-tools.test.js +83 -0
  642. package/dist/tools/post-tools.test.js.map +1 -0
  643. package/dist/tools/pre-render-check.d.ts +23 -0
  644. package/dist/tools/pre-render-check.d.ts.map +1 -0
  645. package/dist/tools/pre-render-check.js +134 -0
  646. package/dist/tools/pre-render-check.js.map +1 -0
  647. package/dist/tools/probe-media.d.ts +8 -0
  648. package/dist/tools/probe-media.d.ts.map +1 -0
  649. package/dist/tools/probe-media.js +32 -0
  650. package/dist/tools/probe-media.js.map +1 -0
  651. package/dist/tools/punch-in.d.ts +30 -0
  652. package/dist/tools/punch-in.d.ts.map +1 -0
  653. package/dist/tools/punch-in.js +130 -0
  654. package/dist/tools/punch-in.js.map +1 -0
  655. package/dist/tools/read-skill.d.ts +9 -0
  656. package/dist/tools/read-skill.d.ts.map +1 -0
  657. package/dist/tools/read-skill.js +24 -0
  658. package/dist/tools/read-skill.js.map +1 -0
  659. package/dist/tools/read-transcript.d.ts +14 -0
  660. package/dist/tools/read-transcript.d.ts.map +1 -0
  661. package/dist/tools/read-transcript.js +85 -0
  662. package/dist/tools/read-transcript.js.map +1 -0
  663. package/dist/tools/read-transcript.test.d.ts +2 -0
  664. package/dist/tools/read-transcript.test.d.ts.map +1 -0
  665. package/dist/tools/read-transcript.test.js +136 -0
  666. package/dist/tools/read-transcript.test.js.map +1 -0
  667. package/dist/tools/reformat-timeline.d.ts +25 -0
  668. package/dist/tools/reformat-timeline.d.ts.map +1 -0
  669. package/dist/tools/reformat-timeline.js +60 -0
  670. package/dist/tools/reformat-timeline.js.map +1 -0
  671. package/dist/tools/render.d.ts +10 -0
  672. package/dist/tools/render.d.ts.map +1 -0
  673. package/dist/tools/render.js +26 -0
  674. package/dist/tools/render.js.map +1 -0
  675. package/dist/tools/reorder-timeline.d.ts +12 -0
  676. package/dist/tools/reorder-timeline.d.ts.map +1 -0
  677. package/dist/tools/reorder-timeline.js +65 -0
  678. package/dist/tools/reorder-timeline.js.map +1 -0
  679. package/dist/tools/replace-clip.d.ts +10 -0
  680. package/dist/tools/replace-clip.d.ts.map +1 -0
  681. package/dist/tools/replace-clip.js +28 -0
  682. package/dist/tools/replace-clip.js.map +1 -0
  683. package/dist/tools/review-edit.d.ts +23 -0
  684. package/dist/tools/review-edit.d.ts.map +1 -0
  685. package/dist/tools/review-edit.js +47 -0
  686. package/dist/tools/review-edit.js.map +1 -0
  687. package/dist/tools/ripple-delete.d.ts +11 -0
  688. package/dist/tools/ripple-delete.d.ts.map +1 -0
  689. package/dist/tools/ripple-delete.js +27 -0
  690. package/dist/tools/ripple-delete.js.map +1 -0
  691. package/dist/tools/save-project.d.ts +7 -0
  692. package/dist/tools/save-project.d.ts.map +1 -0
  693. package/dist/tools/save-project.js +22 -0
  694. package/dist/tools/save-project.js.map +1 -0
  695. package/dist/tools/score-shot.d.ts +18 -0
  696. package/dist/tools/score-shot.d.ts.map +1 -0
  697. package/dist/tools/score-shot.js +127 -0
  698. package/dist/tools/score-shot.js.map +1 -0
  699. package/dist/tools/set-clip-speed.d.ts +10 -0
  700. package/dist/tools/set-clip-speed.d.ts.map +1 -0
  701. package/dist/tools/set-clip-speed.js +28 -0
  702. package/dist/tools/set-clip-speed.js.map +1 -0
  703. package/dist/tools/set-clip-volume.d.ts +10 -0
  704. package/dist/tools/set-clip-volume.d.ts.map +1 -0
  705. package/dist/tools/set-clip-volume.js +33 -0
  706. package/dist/tools/set-clip-volume.js.map +1 -0
  707. package/dist/tools/set-primary-correction.d.ts +14 -0
  708. package/dist/tools/set-primary-correction.d.ts.map +1 -0
  709. package/dist/tools/set-primary-correction.js +45 -0
  710. package/dist/tools/set-primary-correction.js.map +1 -0
  711. package/dist/tools/smart-reframe.d.ts +22 -0
  712. package/dist/tools/smart-reframe.d.ts.map +1 -0
  713. package/dist/tools/smart-reframe.js +39 -0
  714. package/dist/tools/smart-reframe.js.map +1 -0
  715. package/dist/tools/speed-ramp.d.ts +14 -0
  716. package/dist/tools/speed-ramp.d.ts.map +1 -0
  717. package/dist/tools/speed-ramp.js +71 -0
  718. package/dist/tools/speed-ramp.js.map +1 -0
  719. package/dist/tools/stabilize-video.d.ts +12 -0
  720. package/dist/tools/stabilize-video.d.ts.map +1 -0
  721. package/dist/tools/stabilize-video.js +63 -0
  722. package/dist/tools/stabilize-video.js.map +1 -0
  723. package/dist/tools/transcribe.d.ts +29 -0
  724. package/dist/tools/transcribe.d.ts.map +1 -0
  725. package/dist/tools/transcribe.js +116 -0
  726. package/dist/tools/transcribe.js.map +1 -0
  727. package/dist/tools/transition-videos.d.ts +29 -0
  728. package/dist/tools/transition-videos.d.ts.map +1 -0
  729. package/dist/tools/transition-videos.js +129 -0
  730. package/dist/tools/transition-videos.js.map +1 -0
  731. package/dist/tools/write-ass.d.ts +34 -0
  732. package/dist/tools/write-ass.d.ts.map +1 -0
  733. package/dist/tools/write-ass.js +101 -0
  734. package/dist/tools/write-ass.js.map +1 -0
  735. package/dist/tools/write-edl.d.ts +24 -0
  736. package/dist/tools/write-edl.d.ts.map +1 -0
  737. package/dist/tools/write-edl.js +59 -0
  738. package/dist/tools/write-edl.js.map +1 -0
  739. package/dist/tools/write-fcpxml.d.ts +20 -0
  740. package/dist/tools/write-fcpxml.d.ts.map +1 -0
  741. package/dist/tools/write-fcpxml.js +52 -0
  742. package/dist/tools/write-fcpxml.js.map +1 -0
  743. package/dist/tools/write-keyword-captions.d.ts +36 -0
  744. package/dist/tools/write-keyword-captions.d.ts.map +1 -0
  745. package/dist/tools/write-keyword-captions.js +183 -0
  746. package/dist/tools/write-keyword-captions.js.map +1 -0
  747. package/dist/tools/write-lower-third.d.ts +34 -0
  748. package/dist/tools/write-lower-third.d.ts.map +1 -0
  749. package/dist/tools/write-lower-third.js +52 -0
  750. package/dist/tools/write-lower-third.js.map +1 -0
  751. package/dist/tools/write-srt.d.ts +20 -0
  752. package/dist/tools/write-srt.d.ts.map +1 -0
  753. package/dist/tools/write-srt.js +72 -0
  754. package/dist/tools/write-srt.js.map +1 -0
  755. package/dist/tools/write-title-card.d.ts +25 -0
  756. package/dist/tools/write-title-card.d.ts.map +1 -0
  757. package/dist/tools/write-title-card.js +57 -0
  758. package/dist/tools/write-title-card.js.map +1 -0
  759. package/dist/types.d.ts +83 -0
  760. package/dist/types.d.ts.map +1 -0
  761. package/dist/types.js +3 -0
  762. package/dist/types.js.map +1 -0
  763. package/dist/ui/App.d.ts +44 -0
  764. package/dist/ui/App.d.ts.map +1 -0
  765. package/dist/ui/App.js +454 -0
  766. package/dist/ui/App.js.map +1 -0
  767. package/dist/ui/components/Banner.d.ts +13 -0
  768. package/dist/ui/components/Banner.d.ts.map +1 -0
  769. package/dist/ui/components/Banner.js +59 -0
  770. package/dist/ui/components/Banner.js.map +1 -0
  771. package/dist/ui/components/Footer.d.ts +19 -0
  772. package/dist/ui/components/Footer.d.ts.map +1 -0
  773. package/dist/ui/components/Footer.js +20 -0
  774. package/dist/ui/components/Footer.js.map +1 -0
  775. package/dist/ui/components/Header.d.ts +16 -0
  776. package/dist/ui/components/Header.d.ts.map +1 -0
  777. package/dist/ui/components/Header.js +12 -0
  778. package/dist/ui/components/Header.js.map +1 -0
  779. package/dist/ui/components/InputBox.d.ts +21 -0
  780. package/dist/ui/components/InputBox.d.ts.map +1 -0
  781. package/dist/ui/components/InputBox.js +81 -0
  782. package/dist/ui/components/InputBox.js.map +1 -0
  783. package/dist/ui/components/Message.d.ts +14 -0
  784. package/dist/ui/components/Message.d.ts.map +1 -0
  785. package/dist/ui/components/Message.js +24 -0
  786. package/dist/ui/components/Message.js.map +1 -0
  787. package/dist/ui/components/SlashMenu.d.ts +19 -0
  788. package/dist/ui/components/SlashMenu.d.ts.map +1 -0
  789. package/dist/ui/components/SlashMenu.js +33 -0
  790. package/dist/ui/components/SlashMenu.js.map +1 -0
  791. package/dist/ui/components/SlashMenu.test.d.ts +2 -0
  792. package/dist/ui/components/SlashMenu.test.d.ts.map +1 -0
  793. package/dist/ui/components/SlashMenu.test.js +23 -0
  794. package/dist/ui/components/SlashMenu.test.js.map +1 -0
  795. package/dist/ui/components/Spinner.d.ts +6 -0
  796. package/dist/ui/components/Spinner.d.ts.map +1 -0
  797. package/dist/ui/components/Spinner.js +16 -0
  798. package/dist/ui/components/Spinner.js.map +1 -0
  799. package/dist/ui/components/ToolCallLine.d.ts +16 -0
  800. package/dist/ui/components/ToolCallLine.d.ts.map +1 -0
  801. package/dist/ui/components/ToolCallLine.js +35 -0
  802. package/dist/ui/components/ToolCallLine.js.map +1 -0
  803. package/dist/ui/render.d.ts +9 -0
  804. package/dist/ui/render.d.ts.map +1 -0
  805. package/dist/ui/render.js +56 -0
  806. package/dist/ui/render.js.map +1 -0
  807. package/dist/ui/spinner-frames.d.ts +3 -0
  808. package/dist/ui/spinner-frames.d.ts.map +1 -0
  809. package/dist/ui/spinner-frames.js +16 -0
  810. package/dist/ui/spinner-frames.js.map +1 -0
  811. package/dist/ui/theme.d.ts +27 -0
  812. package/dist/ui/theme.d.ts.map +1 -0
  813. package/dist/ui/theme.js +26 -0
  814. package/dist/ui/theme.js.map +1 -0
  815. package/package.json +50 -0
package/dist/skills.js ADDED
@@ -0,0 +1,674 @@
1
+ /**
2
+ * Bundled skill markdowns. Embedded as TS string constants so they ship in the
3
+ * compiled package without depending on disk layout. Authored in
4
+ * src/skills/*.md — regenerate this file by running `node build-skills.mjs`
5
+ * from the package root if you edit the source markdowns.
6
+ *
7
+ * Skills are exposed through the read_skill tool; their descriptions live in
8
+ * the system prompt. Pattern follows the Anthropic skills convention:
9
+ * description in the prompt, full content on demand.
10
+ */
11
+ const LONG_FORM_CONTENT_EDIT = `# long-form-content-edit
12
+
13
+ **When to use:** podcasts, interviews, vlogs, courses, talking-head — anything
14
+ where a person speaks for >5 minutes and the editorial work is take-selection,
15
+ filler removal, silence trimming, and pacing.
16
+
17
+ **Goal:** turn a raw recording into a tight, watchable cut without losing the
18
+ speaker's voice or the moments that matter. Captions are non-negotiable.
19
+
20
+ ---
21
+
22
+ ## The 5-pass method
23
+
24
+ These run in order. Each pass narrows the cut. Don't skip — passes 1–2 are
25
+ where 80% of the time savings live.
26
+
27
+ ### Pass 1 — Utterance segmentation
28
+
29
+ \`\`\`
30
+ probe_media(input) → fps, duration
31
+ extract_audio(input, audio.wav, 16000)
32
+ transcribe(audio.wav, transcript.json) → segment-level transcript
33
+ \`\`\`
34
+
35
+ Now you have a segment list keyed by start/end seconds. Treat each segment as
36
+ the smallest editorial unit. Don't cut inside a segment unless the speaker
37
+ changes mid-segment.
38
+
39
+ ### Pass 2 — Take detection
40
+
41
+ \`\`\`
42
+ cluster_takes(transcript.json) → groups of similar segments
43
+ \`\`\`
44
+
45
+ Multi-member clusters mean the speaker re-took a line. Pick the winner per
46
+ cluster:
47
+
48
+ - **Default to the last take** — speaker had practice.
49
+ - **Visual doubt** → \`score_shot(times=[mid of each member])\`, pick highest.
50
+ - **Audio doubt** → \`read_transcript(startSec=A, endSec=B)\` to inspect.
51
+ - Add a marker on each decision: \`add_marker(color="green", note="kept: take 3 of 3 — strongest delivery")\`.
52
+
53
+ ### Pass 3 — Filler removal
54
+
55
+ For each kept segment, look for these and add cut markers:
56
+
57
+ - "um", "uh", "like" used as filler (not as comparison)
58
+ - restart phrases: "so the thing is — actually, the thing is…"
59
+ - mid-sentence aborts the speaker self-corrected past
60
+
61
+ Mark each one with \`add_marker(color="red", note="cut: filler 'um'")\`.
62
+
63
+ ### Pass 4 — Incomplete-sentence trim
64
+
65
+ Drop segments that:
66
+
67
+ - Trail off with no point ("…and yeah, anyway")
68
+ - Start mid-thought because the previous take was kept
69
+ - Repeat content already covered in a kept take
70
+
71
+ \`add_marker(color="red", note="cut: incomplete; covered in earlier take")\`.
72
+
73
+ ### Pass 5 — Silence normalization
74
+
75
+ \`\`\`
76
+ detect_silence(input) → frame-aligned KEEP ranges
77
+ \`\`\`
78
+
79
+ Use the KEEP ranges to remove dead air >1s. Don't kill all silence —
80
+ breathing space matters for pacing. The default threshold usually leaves
81
+ natural pauses intact.
82
+
83
+ ---
84
+
85
+ ## Final assembly
86
+
87
+ Combine pass-2 winners + pass-3/4 surviving segments into a single decision
88
+ list. Each entry is one EDL event.
89
+
90
+ \`\`\`
91
+ write_edl(events=decisions, frameRate=fps)
92
+ import_edl(path)
93
+ \`\`\`
94
+
95
+ Then captions:
96
+
97
+ \`\`\`
98
+ write_srt(cues=transcript.segments mapped to start/end/text)
99
+ import_subtitles(srtPath)
100
+ \`\`\`
101
+
102
+ For long-form: sidecar SRT (don't burn in) so YouTube/podcast players can
103
+ toggle them. Mention this to the user.
104
+
105
+ ---
106
+
107
+ ## Red flags — pause and ask
108
+
109
+ - Cluster has takes that are roughly equal quality — \`add_marker(color="red", note="PAUSE: which take? 1=A, 2=B")\` and stop.
110
+ - Segment is editorial-content-bearing but has bad audio — flag, don't drop.
111
+ - The user said "trim filler" but every "um" is intentional emphasis (rare but real) — confirm.
112
+
113
+ ## Don't
114
+
115
+ - Don't render until the user reviews the markers.
116
+ - Don't read full transcript without \`startSec/endSec\` — context blow-up.
117
+ - Don't cut inside a segment unless the speaker changes mid-segment.
118
+ - Don't skip captions for long-form unless explicitly told to.
119
+ `;
120
+ const SHORT_FORM_CONTENT_EDIT = `# short-form-content-edit
121
+
122
+ **When to use:** TikTok / Reels / Shorts / vertical clips. Source is usually
123
+ a longer horizontal video the user wants reframed, captioned, hooked, and
124
+ shipped.
125
+
126
+ **Goal:** the first 2 seconds win or lose retention. The cut, the caption,
127
+ and the hook all serve that one number.
128
+
129
+ ---
130
+
131
+ ## Recipe
132
+
133
+ ### 1. Find the moment
134
+
135
+ If the user gives you a horizontal video without timestamps, find the moment
136
+ worth clipping:
137
+
138
+ \`\`\`
139
+ probe_media(input)
140
+ extract_audio(input, audio.wav, 16000)
141
+ transcribe(audio.wav, transcript.json)
142
+ read_transcript(transcript.json, contains="<keyword from user>")
143
+ \`\`\`
144
+
145
+ Or for visual moments: \`score_shot(input, intervalSec=15)\` then inspect tops.
146
+
147
+ Settle on a \`[startSec, endSec]\` window. Aim for **15–60 seconds** for shorts;
148
+ 90s max for Reels.
149
+
150
+ ### 2. Reformat to vertical
151
+
152
+ Build the vertical timeline as FCPXML and import:
153
+
154
+ \`\`\`
155
+ reformat_timeline(
156
+ output="vertical.fcpxml",
157
+ preset="9:16",
158
+ title="<short name>",
159
+ frameRate=<source fps>,
160
+ events=[{ reel, sourcePath, sourceInFrame, sourceOutFrame }]
161
+ )
162
+ import_edl("vertical.fcpxml")
163
+ \`\`\`
164
+
165
+ Then on Resolve Studio, switch to color page and prompt the user to apply
166
+ Smart Reframe per clip:
167
+
168
+ \`\`\`
169
+ open_page("color")
170
+ add_marker(color="yellow", note="apply Smart Reframe per clip (Resolve Studio: right-click clip → Smart Reframe)")
171
+ \`\`\`
172
+
173
+ Premiere users: prompt for Auto Reframe via the captions/effects panel.
174
+
175
+ ### 3. Hook the first 2 seconds
176
+
177
+ The hook lives in the first 60 frames. Options:
178
+
179
+ - **Cold-open the punchline** — start at the most attention-grabbing line,
180
+ not the setup. Use \`read_transcript\` to find it.
181
+ - **Speed-up the intro** — \`set_clip_speed(clipId, speed=1.5)\` on the opening clip.
182
+ - **Pre-roll text/marker** — \`add_marker(color="yellow", note="add hook text overlay: '<line from transcript>'")\` for the user to add.
183
+
184
+ ### 4. Burned-in captions
185
+
186
+ Vertical = burned-in (most viewers watch muted, native captions are tiny).
187
+
188
+ \`\`\`
189
+ write_srt(cues=transcript.segments_in_window)
190
+ import_subtitles(srtPath)
191
+ add_marker(color="yellow", note="style captions: large, center-bottom, high-contrast — burn in via Resolve subtitle track styling")
192
+ \`\`\`
193
+
194
+ If the user is on Resolve Studio, they can right-click the subtitle track →
195
+ "Convert Subtitles to Text+" and style it. Note this to them.
196
+
197
+ ### 5. Render
198
+
199
+ Don't render until the user reviews. When they say "render":
200
+
201
+ \`\`\`
202
+ render(preset=<host preset>, output="<name>.mp4")
203
+ \`\`\`
204
+
205
+ Common presets: H.264 Master, YouTube 1080p (works for Shorts too),
206
+ Vimeo 1080p.
207
+
208
+ ---
209
+
210
+ ## Defaults for short-form
211
+
212
+ | Knob | Default | Why |
213
+ |---|---|---|
214
+ | Aspect | 9:16 (TikTok/Reels/Shorts) | Most platforms |
215
+ | Length | 15–60s | Algorithm sweet spot |
216
+ | Captions | burned-in | Watched muted |
217
+ | First 2s | the hook | Retention curve |
218
+ | Music | not added by you | Style decision; ask the user |
219
+
220
+ ## Red flags — pause and ask
221
+
222
+ - User wants 9:16 but the source has critical wide-shot framing → \`add_marker(color="red", note="PAUSE: source is composed for 16:9. 9:16 will crop heads/sides. Confirm reframe vs. letterbox.")\`.
223
+ - Window selection is ambiguous → propose 2–3 candidates as red markers, stop.
224
+ - No clear hook in the chosen window → say so, suggest a different start.
225
+
226
+ ## Don't
227
+
228
+ - Don't render until the user reviews markers.
229
+ - Don't burn captions before the user approves the SRT text.
230
+ - Don't pick a hook blindly — surface options.
231
+ - Don't leave silence >0.4s in the first 2 seconds.
232
+ `;
233
+ const CHAPTER_MARKERS = `# chapter-markers
234
+
235
+ **When to use:** YouTube videos, podcasts, courses, long-form interviews. The
236
+ user wants chapter timestamps the audience can jump to.
237
+
238
+ **Goal:** derive 5–15 semantic chapter boundaries from a transcript, drop a
239
+ timeline marker at each one, and (optionally) emit a YouTube-formatted
240
+ description block.
241
+
242
+ ---
243
+
244
+ ## Recipe
245
+
246
+ ### 1. Get a transcript
247
+
248
+ \`\`\`
249
+ probe_media(input)
250
+ extract_audio(input, audio.wav, 16000)
251
+ transcribe(audio.wav, transcript.json)
252
+ \`\`\`
253
+
254
+ ### 2. Read with topic-shift framing
255
+
256
+ DON'T dump the whole transcript. Read in 60–120 second windows and look for
257
+ **topic shifts** — sentences that change subject, introduce a new question,
258
+ move from setup to payoff, etc.
259
+
260
+ \`\`\`
261
+ read_transcript(transcript.json, startSec=0, endSec=120)
262
+ read_transcript(transcript.json, startSec=120, endSec=240)
263
+ ...
264
+ \`\`\`
265
+
266
+ For each window, identify ZERO or ONE chapter start. Skip windows with no
267
+ clear topic boundary.
268
+
269
+ ### 3. Constraints (YouTube specifics)
270
+
271
+ - First chapter MUST be \`00:00\` (YouTube's rule).
272
+ - Chapters must be ≥10 seconds apart.
273
+ - Aim for 5–15 chapters total. Fewer is fine; more crowds the scrubber.
274
+ - Title each chapter with **3–6 words**, plain language, no clickbait.
275
+ - ✅ \`"Why most edits fail"\`
276
+ - ❌ \`"You won't believe this insane editing tip!!"\`
277
+
278
+ ### 4. Drop markers + emit description
279
+
280
+ For each chapter:
281
+
282
+ \`\`\`
283
+ add_marker(frame=<sec * fps>, color="purple", note="Chapter: <title>")
284
+ \`\`\`
285
+
286
+ Then output a YouTube-formatted block to the user as a chat message:
287
+
288
+ \`\`\`
289
+ 00:00 Intro
290
+ 01:42 Why most edits fail
291
+ 04:30 The 3-pass method
292
+ ...
293
+ \`\`\`
294
+
295
+ This block lives in the YouTube description; markers in the timeline help the
296
+ user verify before publishing.
297
+
298
+ ---
299
+
300
+ ## Defaults
301
+
302
+ | Knob | Default | Why |
303
+ |---|---|---|
304
+ | Marker color | purple | Distinct from take/cut markers |
305
+ | Min chapter length | 30s | YouTube standard |
306
+ | Max chapters | 15 | Audience scrubber readability |
307
+ | Window size for reading | 90s | Balances context vs. token cost |
308
+
309
+ ## Red flags — pause and ask
310
+
311
+ - Transcript is monologue with no clear topic shifts → tell the user; suggest
312
+ manual chapter input rather than fabricating boundaries.
313
+ - Video is <5 minutes total — chapters add noise. Tell the user; ask to skip.
314
+ - User wants "chapters that match my outline" without supplying one → ask for
315
+ the outline. Don't guess from headings in the script alone.
316
+
317
+ ## Don't
318
+
319
+ - Don't invent topic boundaries to hit a target count.
320
+ - Don't use timestamps you didn't verify with \`read_transcript\` (including the
321
+ text at that timestamp). Drift kills the feature.
322
+ - Don't burn chapters into video — markers + description block only.
323
+ - Don't render until the user reviews the chapters.
324
+ `;
325
+ const KEYFRAMING_AND_TITLES = `# keyframing-and-titles
326
+
327
+ **When to use:** the user asks to reorder clips, animate fades / pans /
328
+ zooms, add lower-thirds or title cards, build coordinated multi-track
329
+ B-roll compositions, or do speed ramps.
330
+
331
+ **Goal:** these are the seven gaps neither Resolve nor Premiere exposes
332
+ through their scripting APIs. The agent's path is FCPXML rebuild for
333
+ timeline-shape changes (reorder, lanes, keyframes, titles) and
334
+ file-only ffmpeg passes for content-shape changes (speed ramps, mixing,
335
+ zoom-on-stills, transitions).
336
+
337
+ ---
338
+
339
+ ## Recipe 1 — Reorder clips on the timeline
340
+
341
+ The user says "move clip 5 to the start" or "swap clips 2 and 3".
342
+
343
+ \`\`\`
344
+ get_timeline # discover clipIds in order
345
+ clone_timeline(newName="<original>-v2") # safety net
346
+ reorder_timeline(newOrder=["c5","c1","c2","c3","c4"])
347
+ \`\`\`
348
+
349
+ \`reorder_timeline\` reads the current timeline, emits a permuted FCPXML,
350
+ and \`import_timeline\`s it. Clips not listed in \`newOrder\` keep their
351
+ original relative order and append at the end.
352
+
353
+ ---
354
+
355
+ ## Recipe 2 — Multi-track B-roll composition
356
+
357
+ The user wants several B-roll cutaways stacked above the main A-roll
358
+ with per-clip opacity and timing.
359
+
360
+ \`\`\`
361
+ clone_timeline(newName="<original>-broll")
362
+ compose_layered(
363
+ title="<sequence name>",
364
+ frameRate=<source fps>,
365
+ layers=[
366
+ # Main spine (lane 0)
367
+ { reel:"main", sourcePath:"main.mov", sourceInFrame:0, sourceOutFrame:1800,
368
+ lane:0, recordOffsetFrame:0 },
369
+ # B-roll on lane 1 with a 30-frame opacity fade-in
370
+ { reel:"broll1", sourcePath:"broll-coffee.mov", sourceInFrame:0,
371
+ sourceOutFrame:120, lane:1, recordOffsetFrame:300,
372
+ opacity:{ keyframes:[
373
+ { frame:0, value:0 },
374
+ { frame:30, value:1, interp:"easeOut" },
375
+ { frame:90, value:1 },
376
+ { frame:120, value:0, interp:"easeIn" }
377
+ ] } }
378
+ ]
379
+ )
380
+ \`\`\`
381
+
382
+ For single-clip layers without keyframes, \`insert_broll\` is simpler.
383
+
384
+ ---
385
+
386
+ ## Recipe 3 — Lower-thirds + title cards
387
+
388
+ Both go through \`.ass\` (Advanced SubStation Alpha) files because stock
389
+ Homebrew ffmpeg doesn't ship \`drawtext\`. Pair with \`burn_subtitles\` to
390
+ bake into a finished video.
391
+
392
+ \`\`\`
393
+ write_lower_third(
394
+ output="lt.ass", width=1920, height=1080,
395
+ items=[{
396
+ primaryText:"Jane Doe",
397
+ secondaryText:"Director, Cinema Co.",
398
+ startSec:8, durationSec:4,
399
+ position:"bottom-left",
400
+ animation:"slide-left",
401
+ primaryColor:"FFFFFF", accentColor:"000000"
402
+ }]
403
+ )
404
+ write_title_card(
405
+ output="cards.ass", width=1920, height=1080,
406
+ items=[{ text:"Chapter 1", startSec:0, durationSec:3,
407
+ animation:"fade-in-out", fontSize:140 }]
408
+ )
409
+ burn_subtitles(input="rough.mp4", subtitles="lt.ass", output="rough+lt.mp4")
410
+ burn_subtitles(input="rough+lt.mp4", subtitles="cards.ass", output="final.mp4")
411
+ \`\`\`
412
+
413
+ To keep titles editable inside the NLE instead of baked, use
414
+ \`write_fcpxml\` with the \`titles\` field, then \`import_edl\`.
415
+
416
+ ---
417
+
418
+ ## Recipe 4 — Speed ramps
419
+
420
+ Cinematic slow-down-then-resume:
421
+
422
+ \`\`\`
423
+ speed_ramp(
424
+ input="action.mp4", output="action.ramped.mp4",
425
+ points=[
426
+ { atSec:0, speed:1 }, # normal
427
+ { atSec:2.5, speed:0.4 }, # slow-mo
428
+ { atSec:4.0, speed:1 } # back to normal
429
+ ]
430
+ )
431
+ \`\`\`
432
+
433
+ Audio is time-stretched via atempo, no pitch shift. For ramps where
434
+ you want video without audio: pass \`muteAudio=true\`.
435
+
436
+ ---
437
+
438
+ ## Recipe 5 — Audio mixing per clip
439
+
440
+ Voice-preset:
441
+
442
+ \`\`\`
443
+ mix_audio(
444
+ input="raw.wav", output="raw.mixed.wav",
445
+ eq=[
446
+ { type:"high", freqHz:80 }, # rumble
447
+ { type:"peak", freqHz:4000, gainDb:3, q:1.5 } # presence
448
+ ],
449
+ compressor={ thresholdDb:-18, ratio:4, attackMs:20, releaseMs:250, makeupDb:3 },
450
+ deess={ freqHz:6500, thresholdDb:-25 },
451
+ limiter={ ceilingDb:-1 }
452
+ )
453
+ \`\`\`
454
+
455
+ Order: \`clean_audio\` (denoise) → \`mix_audio\` (shape) →
456
+ \`normalize_loudness\` (target platform LUFS).
457
+
458
+ ---
459
+
460
+ ## Recipe 6 — Ken-Burns on stills
461
+
462
+ For photo galleries / quote cards / book covers:
463
+
464
+ \`\`\`
465
+ ken_burns(input="photo.jpg", output="photo.kb.mp4",
466
+ durationSec=4, startZoom=1, endZoom=1.4, direction="ne")
467
+ \`\`\`
468
+
469
+ Output is a silent libx264 clip. Then \`concat_videos\` it with main
470
+ footage, or \`insert_broll\` it onto a higher track via \`compose_layered\`.
471
+
472
+ ---
473
+
474
+ ## Recipe 7 — Named transitions
475
+
476
+ For energetic cuts:
477
+
478
+ \`\`\`
479
+ transition_videos(inputA="a.mp4", inputB="b.mp4", output="ab.mp4",
480
+ preset="whip-left") # 0.15s wipe
481
+ transition_videos(..., preset="smash-cut") # 1-frame blend, jump-cut feel
482
+ transition_videos(..., preset="dip-to-black", durationSec=0.8)
483
+ \`\`\`
484
+
485
+ For raw xfade names beyond the preset list, use \`crossfade_videos\`.
486
+
487
+ ---
488
+
489
+ ## Don't
490
+
491
+ - Don't render before the user reviews the rebuilt timeline.
492
+ - Don't run reorder_timeline / compose_layered without
493
+ \`clone_timeline\` first — the import is destructive.
494
+ - Don't try to drawtext on a still frame; ffmpeg doesn't have it on
495
+ most installs. Always go through ASS.
496
+ - Don't keyframe opacity / position on Premiere via UXP — it's not
497
+ exposed; emit FCPXML with the keyframes baked in instead.
498
+ `;
499
+ const SKIN_TONE_MATCHING = `# skin-tone-matching
500
+
501
+ **When to use:** the host's face looks different across clips — warmer in
502
+ one shot, cooler / paler in the next. Different camera, different
503
+ location, different white-balance setting, sun behind a cloud. The user
504
+ wants the faces to match.
505
+
506
+ **Goal:** bring the target clip's skin tones toward a reference clip
507
+ without re-grading the whole frame. Skin lives in the reds and yellows;
508
+ that's where we operate.
509
+
510
+ ---
511
+
512
+ ## Two paths
513
+
514
+ | Path | When | Where the grade lives |
515
+ |---|---|---|
516
+ | \`grade_skin_tones\` | works on every host (Resolve, Premiere, no-NLE) | baked into a new file |
517
+ | \`match_clip_color\` | Resolve only | non-destructive, in the clip's grade node |
518
+
519
+ Pick **\`grade_skin_tones\`** when the user is on Premiere, when there's no
520
+ NLE, or when they want a finished file they can drop anywhere. Pair with
521
+ \`replace_clip\` to swap it onto the timeline.
522
+
523
+ Pick **\`match_clip_color\`** when the user is on Resolve and wants to keep
524
+ the grade tweakable. The tool pipes the CDL through
525
+ \`set_primary_correction\`, so the colorist can adjust after.
526
+
527
+ ---
528
+
529
+ ## Recipe
530
+
531
+ ### 1. Pick the frames (most important step)
532
+
533
+ Vision is only as good as what you show it. For BOTH the reference and
534
+ the target:
535
+
536
+ - The face must be visible and large enough (not a wide shot from across
537
+ the room).
538
+ - The lighting on the face must be representative (not the one frame
539
+ where they walked through a shadow).
540
+ - Eyes open, mouth not in a weird shape, no motion blur.
541
+
542
+ Use \`score_shot(input, intervalSec=15)\` or \`extract_frame\` to find good
543
+ candidates. If the user already pointed at a moment ("match shot 3 to
544
+ shot 1") use those timestamps directly.
545
+
546
+ ### 2. Run the grade
547
+
548
+ **File-only path (works in every host):**
549
+
550
+ \`\`\`
551
+ grade_skin_tones(
552
+ referenceVideo="<ref.mp4>",
553
+ referenceAtSec=<face-forward time>,
554
+ targetVideo="<tgt.mp4>",
555
+ targetAtSec=<face-forward time>,
556
+ output="<tgt-graded.mp4>"
557
+ )
558
+ \`\`\`
559
+
560
+ Returns \`{path, confidence, why, grade}\`. Then:
561
+
562
+ \`\`\`
563
+ replace_clip(clipId="<target clip id>", mediaPath="<tgt-graded.mp4>")
564
+ add_marker(color="yellow", note="skin grade: <why>")
565
+ \`\`\`
566
+
567
+ **Resolve non-baked path:**
568
+
569
+ \`\`\`
570
+ match_clip_color(
571
+ referenceVideo="<ref.mp4>",
572
+ referenceAtSec=<face-forward time>,
573
+ targetClipId="<target clip id>",
574
+ targetAtSec=<face-forward time>,
575
+ applyAutomatically=true
576
+ )
577
+ \`\`\`
578
+
579
+ Returns \`{applied, confidence, why, grade}\`. The CDL goes into node 1
580
+ (or \`nodeIndex=N\` if you want a specific node).
581
+
582
+ ### 3. Check confidence
583
+
584
+ The model's confidence is the most important field. Always inspect it:
585
+
586
+ - \`confidence ≥ 0.7\` — apply. Trust the result.
587
+ - \`0.4 ≤ confidence < 0.7\` — apply but flag for review:
588
+ \`add_marker(color="yellow", note="skin grade: review — confidence <X>")\`.
589
+ - \`confidence < 0.4\` — DO NOT apply. The model is guessing. Tell the
590
+ user what you saw, suggest they grade the shot manually or pick a
591
+ better reference frame.
592
+
593
+ \`match_clip_color\` enforces this: with \`applyAutomatically=true\`,
594
+ confidence < 0.4 returns \`{applied: false}\` and the grade is surfaced
595
+ without writing to the node. \`grade_skin_tones\` always bakes the file
596
+ because the agent asked for an output path — but you can re-run with a
597
+ better reference frame if confidence was low.
598
+
599
+ ---
600
+
601
+ ## Defaults
602
+
603
+ | Knob | Default | Why |
604
+ |---|---|---|
605
+ | Vision detail | \`low\` | cheap; skin balance doesn't need pixel-peeping |
606
+ | Vision model | \`gpt-4o-mini\` | well-calibrated for color comparisons |
607
+ | Output codec | \`libx264 crf=18\` | visually lossless |
608
+ | Reference frame width | 768px | enough for skin-tone discrimination |
609
+
610
+ ---
611
+
612
+ ## What this is NOT
613
+
614
+ - NOT a deterministic ColorChecker match. There's no chart, no
615
+ colorimetry — it's a vision pass.
616
+ - NOT a substitute for a colorist. Power windows / qualifiers / curves
617
+ are out of scope. If skin needs to be isolated from a colored
618
+ background, surface that and stop.
619
+ - NOT for whole-look matching across a project. For session-wide LUT
620
+ application use \`apply_lut\` + \`copy_grade\`.
621
+
622
+ ---
623
+
624
+ ## Red flags — pause and ask
625
+
626
+ - Reference and target are filmed under fundamentally different
627
+ lighting (tungsten vs daylight) → confidence will be low. Tell the
628
+ user and suggest a less aggressive match (or LUT-based correction
629
+ first).
630
+ - Target shot has multiple people with different skin tones → the
631
+ vision model averages. Pick the primary face's frame and warn the
632
+ user the secondary face may shift.
633
+ - User wants pixel-perfect match across 50 clips → run on a hero pair,
634
+ then \`copy_grade(sourceClipId=hero, targetClipIds=[...])\` instead of
635
+ re-running vision on every clip.
636
+
637
+ ## Don't
638
+
639
+ - Don't pick a target frame where the face is in shadow or motion blur.
640
+ - Don't apply low-confidence grades silently.
641
+ - Don't run on top of an existing aggressive grade — clean state first
642
+ or expect compounding shifts.
643
+ - Don't bake \`grade_skin_tones\` over the original target file. Always
644
+ write to a new path.
645
+ `;
646
+ export const SKILLS = {
647
+ "long-form-content-edit": {
648
+ name: "long-form-content-edit",
649
+ description: "Recipe for podcasts, interviews, vlogs, courses, talking-head. Five-pass method: utterance segmentation → take detection → filler removal → incomplete-sentence trim → silence normalization. Wires our tools (transcribe, cluster_takes, detect_silence, write_edl, import_edl, write_srt, add_marker) into a single workflow.",
650
+ content: LONG_FORM_CONTENT_EDIT,
651
+ },
652
+ "short-form-content-edit": {
653
+ name: "short-form-content-edit",
654
+ description: "Recipe for TikTok / Reels / Shorts. Find the moment → reformat 9:16 → hook the first 2 seconds → burn captions → render. Uses reformat_timeline, import_edl, set_clip_speed, write_srt, import_subtitles, open_page (Resolve).",
655
+ content: SHORT_FORM_CONTENT_EDIT,
656
+ },
657
+ "chapter-markers": {
658
+ name: "chapter-markers",
659
+ description: "Recipe for YouTube/podcast chapter timestamps. Reads transcript in 90s windows, identifies topic shifts, drops purple markers, and emits a YouTube-formatted description block. Constraints: first chapter at 00:00, 5–15 chapters, ≥30s apart.",
660
+ content: CHAPTER_MARKERS,
661
+ },
662
+ "keyframing-and-titles": {
663
+ name: "keyframing-and-titles",
664
+ description: "Recipes for the seven gaps neither Resolve nor Premiere expose via scripting: timeline reordering, multi-track / lane composition, lower-thirds and title cards (via ASS), keyframed opacity / position / volume ramps, audio mixing chains (EQ + comp + gate + de-esser + limiter), speed ramps, Ken-Burns on stills, and named transitions (smash-cut, whip-pan, dip-to-black). Wires reorder_timeline, compose_layered, write_lower_third, write_title_card, mix_audio, speed_ramp, ken_burns, transition_videos.",
665
+ content: KEYFRAMING_AND_TITLES,
666
+ },
667
+ "skin-tone-matching": {
668
+ name: "skin-tone-matching",
669
+ description: "Recipe for matching faces across clips when host scripting can't reach power windows or qualifiers. Two paths: grade_skin_tones (file-only, every host — bakes a vision-derived colorbalance + selectivecolor + eq grade into a new mp4, pair with replace_clip) and match_clip_color (Resolve only — derives the same grade as a CDL and pipes it through set_primary_correction, non-baked). Both share one vision pass over a reference frame and a target frame; below confidence 0.4 the grade is unreliable.",
670
+ content: SKIN_TONE_MATCHING,
671
+ },
672
+ };
673
+ export const SKILL_NAMES = Object.keys(SKILLS);
674
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4G9B,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgH/B,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FvB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6K7B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJ1B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAiC;IAClD,wBAAwB,EAAE;QACxB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,iUAAiU;QACnU,OAAO,EAAE,sBAAsB;KAChC;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,gOAAgO;QAClO,OAAO,EAAE,uBAAuB;KACjC;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,iPAAiP;QACnP,OAAO,EAAE,eAAe;KACzB;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,sfAAsf;QACxf,OAAO,EAAE,qBAAqB;KAC/B;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,ofAAof;QACtf,OAAO,EAAE,kBAAkB;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC"}