@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
@@ -0,0 +1,326 @@
1
+ /**
2
+ * ExtendScript runtime for the Premiere bridge.
3
+ *
4
+ * Design: per-call self-contained JSX file. Each invocation generates a
5
+ * complete script that:
6
+ * 1. Defines small helpers (frame conversion, file writer)
7
+ * 2. Reads command + params hard-coded into the file
8
+ * 3. Writes result JSON to a known output path
9
+ * 4. Always wraps work in try/catch so a Premiere-side exception still
10
+ * yields a parseable result file
11
+ *
12
+ * We keep JSX minimal — agent-facing logic lives in the TS adapter; JSX is
13
+ * only the thin glue that walks app.project.* and writes JSON.
14
+ *
15
+ * Modern Premiere (2018+) ships with full ECMAScript 5 JSON support. We
16
+ * don't polyfill; older versions get a clear error.
17
+ */
18
+ const PREAMBLE = String.raw `
19
+ function _writeJson(path, obj) {
20
+ var f = new File(path);
21
+ f.encoding = "UTF-8";
22
+ f.open("w");
23
+ f.write(JSON.stringify(obj));
24
+ f.close();
25
+ }
26
+
27
+ function _seq() {
28
+ if (!app.project) throw new Error("No project open in Premiere.");
29
+ var s = app.project.activeSequence;
30
+ if (!s) throw new Error("No active sequence in Premiere.");
31
+ return s;
32
+ }
33
+
34
+ function _fps(seq) {
35
+ // videoFrameRate is a Time; .seconds = frame duration in seconds.
36
+ var fd = seq.getSettings().videoFrameRate.seconds;
37
+ return fd > 0 ? 1 / fd : 30;
38
+ }
39
+
40
+ function _frames(time, seq) {
41
+ // seq.timebase: ticks per frame (TickValue). time.ticks: ticks since 0.
42
+ var tb = parseInt(seq.timebase, 10);
43
+ if (!tb || isNaN(tb)) tb = 1;
44
+ return Math.round(parseInt(time.ticks, 10) / tb);
45
+ }
46
+
47
+ function _markerColor(name) {
48
+ // Premiere marker colorIndex: 0..7 maps to Green, Red, Purple, Orange,
49
+ // Yellow, White, Blue, Cyan (varies by version; this is the common map).
50
+ var m = { green:0, red:1, purple:2, orange:3, yellow:4, white:5, blue:6, cyan:7 };
51
+ var k = (name || "blue").toLowerCase();
52
+ return m[k] !== undefined ? m[k] : 6;
53
+ }
54
+
55
+ function _findClipBin(name) {
56
+ // Walk root bin recursively for a ProjectItem matching imported file name.
57
+ var stack = [app.project.rootItem];
58
+ while (stack.length) {
59
+ var item = stack.pop();
60
+ for (var i = 0; i < item.children.numItems; i++) {
61
+ var child = item.children[i];
62
+ if (child.name === name) return child;
63
+ if (child.type === 2 /* BIN */) stack.push(child);
64
+ }
65
+ }
66
+ return null;
67
+ }
68
+ `;
69
+ // ── Per-method bodies ───────────────────────────────────────
70
+ const METHODS = {
71
+ ping: String.raw `
72
+ return { product: "Premiere Pro", version: app.version || "?" };
73
+ `,
74
+ get_timeline: String.raw `
75
+ var seq = _seq();
76
+ var fps = _fps(seq);
77
+ var clips = [];
78
+ function collect(tracks, kind) {
79
+ for (var ti = 0; ti < tracks.numTracks; ti++) {
80
+ var tr = tracks[ti];
81
+ for (var ci = 0; ci < tr.clips.numItems; ci++) {
82
+ var c = tr.clips[ci];
83
+ try {
84
+ clips.push({
85
+ id: String(c.nodeId || c.name + ":" + ci),
86
+ track: ti + 1,
87
+ trackKind: kind,
88
+ startFrame: _frames(c.start, seq),
89
+ endFrame: _frames(c.end, seq),
90
+ name: c.name
91
+ });
92
+ } catch (e) { /* skip uninspectable */ }
93
+ }
94
+ }
95
+ }
96
+ collect(seq.videoTracks, "video");
97
+ collect(seq.audioTracks, "audio");
98
+
99
+ var markers = [];
100
+ var mc = seq.markers;
101
+ var m = mc.getFirstMarker();
102
+ while (m) {
103
+ markers.push({
104
+ frame: _frames(m.start, seq),
105
+ note: (m.comments || m.name || ""),
106
+ color: m.colorIndex,
107
+ durationFrames: _frames(m.end, seq) - _frames(m.start, seq)
108
+ });
109
+ m = mc.getNextMarker(m);
110
+ }
111
+
112
+ var dur = (seq.end ? _frames({ ticks: seq.end }, seq) : 0);
113
+ return {
114
+ name: seq.name,
115
+ frameRate: fps,
116
+ durationFrames: dur,
117
+ clips: clips,
118
+ markers: markers
119
+ };
120
+ `,
121
+ add_marker: String.raw `
122
+ var seq = _seq();
123
+ var fps = _fps(seq);
124
+ var m = seq.markers.createMarker(P.frame / fps);
125
+ m.name = (P.note || "").substring(0, 60);
126
+ m.comments = P.note || "";
127
+ if (P.durationFrames && P.durationFrames > 1) {
128
+ m.end = m.start + (P.durationFrames / fps);
129
+ }
130
+ try { m.setColorByIndex(_markerColor(P.color)); } catch (e) {}
131
+ return null;
132
+ `,
133
+ append_clip: String.raw `
134
+ var seq = _seq();
135
+ var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
136
+ if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
137
+ // Find the imported item by basename.
138
+ var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
139
+ var pi = _findClipBin(base);
140
+ if (!pi) throw new Error("Imported item not found in project bin: " + base);
141
+ var track = seq.videoTracks[(P.track || 1) - 1];
142
+ if (!track) throw new Error("Track " + P.track + " does not exist on active sequence.");
143
+ // Insert at sequence end.
144
+ var endSec = seq.end ? (parseInt(seq.end, 10) / 254016000000) : 0;
145
+ track.insertClip(pi, endSec);
146
+ // Find the inserted clip — it's the last one on the track.
147
+ var inserted = track.clips[track.clips.numItems - 1];
148
+ return {
149
+ id: String(inserted.nodeId || inserted.name),
150
+ track: P.track || 1,
151
+ trackKind: "video",
152
+ startFrame: _frames(inserted.start, seq),
153
+ endFrame: _frames(inserted.end, seq),
154
+ name: inserted.name
155
+ };
156
+ `,
157
+ import_timeline: String.raw `
158
+ // Premiere's importFiles handles FCPXML/EDL — they create new sequences.
159
+ var ok = app.project.importFiles([P.filePath], true, app.project.rootItem, false);
160
+ if (!ok) throw new Error("importFiles returned false for " + P.filePath);
161
+ return null;
162
+ `,
163
+ get_markers: String.raw `
164
+ var seq = _seq();
165
+ var markers = [];
166
+ var mc = seq.markers;
167
+ var m = mc.getFirstMarker();
168
+ while (m) {
169
+ markers.push({
170
+ frame: _frames(m.start, seq),
171
+ note: (m.comments || m.name || ""),
172
+ color: m.colorIndex,
173
+ durationFrames: _frames(m.end, seq) - _frames(m.start, seq)
174
+ });
175
+ m = mc.getNextMarker(m);
176
+ }
177
+ return markers;
178
+ `,
179
+ create_timeline: String.raw `
180
+ if (!app.project) throw new Error("No project open in Premiere.");
181
+ var name = String(P.name || "GG Sequence");
182
+ var preset = P.presetPath || "";
183
+ var newSeq = null;
184
+ if (preset) {
185
+ try { newSeq = app.project.createNewSequence(name, preset); } catch (e) { newSeq = null; }
186
+ }
187
+ if (!newSeq) {
188
+ // Fallback: clone the active sequence so we get a usable preset.
189
+ var src = app.project.activeSequence;
190
+ if (!src) {
191
+ throw new Error("create_timeline needs either a sqpreset path (P.presetPath) or an active sequence to clone.");
192
+ }
193
+ try {
194
+ newSeq = src.clone();
195
+ if (newSeq && newSeq.name !== undefined) newSeq.name = name;
196
+ } catch (e2) {
197
+ throw new Error("create_timeline fallback failed: " + (e2 && e2.message ? e2.message : e2));
198
+ }
199
+ }
200
+ return { name: newSeq.name || name };
201
+ `,
202
+ import_to_media_pool: String.raw `
203
+ if (!app.project) throw new Error("No project open in Premiere.");
204
+ var paths = P.paths || [];
205
+ if (!paths.length) throw new Error("import_to_media_pool: paths array is empty.");
206
+ var parent = app.project.rootItem;
207
+ if (P.bin) {
208
+ var existing = null;
209
+ for (var i = 0; i < parent.children.numItems; i++) {
210
+ var child = parent.children[i];
211
+ if (child.name === P.bin && child.type === 2 /* BIN */) { existing = child; break; }
212
+ }
213
+ parent = existing || parent.createBin(P.bin);
214
+ }
215
+ var ok = app.project.importFiles(paths, true, parent, false);
216
+ if (!ok) throw new Error("importFiles returned false.");
217
+ return { imported: paths.length };
218
+ `,
219
+ clone_timeline: String.raw `
220
+ var src = _seq();
221
+ var newName = String(P.newName || (src.name + " copy"));
222
+ var cloned = null;
223
+ try { cloned = src.clone(); } catch (e) { cloned = null; }
224
+ if (!cloned) throw new Error("sequence clone failed (older Premiere versions don't expose Sequence.clone)");
225
+ if (cloned.name !== undefined) {
226
+ try { cloned.name = newName; } catch (e2) {}
227
+ }
228
+ return { name: cloned.name || newName };
229
+ `,
230
+ save_project: String.raw `
231
+ if (!app.project) throw new Error("No project open in Premiere.");
232
+ if (typeof app.project.save !== "function") throw new Error("app.project.save is not callable in this Premiere version");
233
+ app.project.save();
234
+ return null;
235
+ `,
236
+ insert_clip_on_track: String.raw `
237
+ var seq = _seq();
238
+ var fps = _fps(seq);
239
+ // Import media first.
240
+ var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
241
+ if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
242
+ var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
243
+ var pi = _findClipBin(base);
244
+ if (!pi) throw new Error("imported item not found: " + base);
245
+ var trackIdx = (P.track || 2) - 1;
246
+ var track = seq.videoTracks[trackIdx];
247
+ if (!track) throw new Error("track " + P.track + " does not exist on active sequence.");
248
+ var recordSec = P.recordFrame / fps;
249
+ track.insertClip(pi, recordSec);
250
+ var inserted = null;
251
+ for (var i = 0; i < track.clips.numItems; i++) {
252
+ var c = track.clips[i];
253
+ if (Math.abs(_frames(c.start, seq) - P.recordFrame) < 2) { inserted = c; break; }
254
+ }
255
+ if (!inserted) inserted = track.clips[track.clips.numItems - 1];
256
+ return {
257
+ id: String(inserted.nodeId || inserted.name),
258
+ track: P.track || 2,
259
+ trackKind: "video",
260
+ startFrame: _frames(inserted.start, seq),
261
+ endFrame: _frames(inserted.end, seq),
262
+ name: inserted.name
263
+ };
264
+ `,
265
+ replace_clip: String.raw `
266
+ var seq = _seq();
267
+ var target = null;
268
+ function scan(tracks) {
269
+ for (var ti = 0; ti < tracks.numTracks; ti++) {
270
+ var tr = tracks[ti];
271
+ for (var ci = 0; ci < tr.clips.numItems; ci++) {
272
+ var c = tr.clips[ci];
273
+ var iid = String(c.nodeId || c.name + ":" + ci);
274
+ if (iid === P.clipId) { target = c; return; }
275
+ }
276
+ }
277
+ }
278
+ scan(seq.videoTracks);
279
+ if (!target) scan(seq.audioTracks);
280
+ if (!target) throw new Error("clip not found on active sequence: " + P.clipId);
281
+ // Import the new media if not already in the project.
282
+ var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
283
+ if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
284
+ var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
285
+ var pi = _findClipBin(base);
286
+ if (!pi) throw new Error("imported item not found: " + base);
287
+ // Premiere's TrackItem exposes changeMediaPath in some versions.
288
+ if (typeof target.changeMediaPath === "function") {
289
+ target.changeMediaPath(P.mediaPath);
290
+ return { clipId: P.clipId, mediaPath: P.mediaPath };
291
+ }
292
+ throw new Error("replace_clip not supported by this Premiere version. fix: rebuild via FCPXML with the new media reference.");
293
+ `,
294
+ import_subtitles: String.raw `
295
+ if (!app.project) throw new Error("No project open in Premiere.");
296
+ var ok = app.project.importFiles([P.srtPath], true, app.project.rootItem, false);
297
+ if (!ok) throw new Error("importFiles returned false for " + P.srtPath);
298
+ return { imported: true, attached: false, note: "SRT imported to project; drag onto a captions track on the active sequence." };
299
+ `,
300
+ };
301
+ /**
302
+ * Generate a self-contained JSX script for one method invocation.
303
+ * @param method Method name (must match METHODS)
304
+ * @param params JSON-encoded params (will be JSON.parsed in JSX as `P`)
305
+ * @param outPath Absolute path where the result JSON is written
306
+ */
307
+ export function buildJsxScript(method, params, outPath) {
308
+ const body = METHODS[method];
309
+ if (!body)
310
+ throw new Error(`unknown premiere method: ${method}`);
311
+ // Escape outPath for safe JSX string literal.
312
+ const safeOut = outPath.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
313
+ const safeParams = JSON.stringify(params).replace(/\\/g, "\\\\").replace(/"/g, '\\"');
314
+ return `${PREAMBLE}
315
+ var P = JSON.parse("${safeParams}");
316
+ var __out = "${safeOut}";
317
+ try {
318
+ var __result = (function () { ${body} })();
319
+ _writeJson(__out, { ok: true, result: __result === undefined ? null : __result });
320
+ } catch (__e) {
321
+ _writeJson(__out, { ok: false, error: (__e && __e.message) ? __e.message : String(__e) });
322
+ }
323
+ `;
324
+ }
325
+ export const PREMIERE_METHODS = Object.keys(METHODS);
326
+ //# sourceMappingURL=bridge-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-source.js","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD1B,CAAC;AAEF,+DAA+D;AAE/D,MAAM,OAAO,GAA2B;IACtC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAA;;GAEf;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CvB;IAED,UAAU,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;GAWrB;IAED,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBtB;IAED,eAAe,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAK1B;IAED,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;GAetB;IAED,eAAe,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsB1B;IAED,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;GAgB/B;IAED,cAAc,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;GAUzB;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAKvB;IAED,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4B/B;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BvB;IAED,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAK3B;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,MAA+B,EAC/B,OAAe;IAEf,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;IACjE,8CAA8C;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtF,OAAO,GAAG,QAAQ;sBACE,UAAU;eACjB,OAAO;;kCAEY,IAAI;;;;;CAKrC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bridge-source.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-source.test.d.ts","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildJsxScript, PREMIERE_METHODS } from "./bridge-source.js";
3
+ describe("buildJsxScript", () => {
4
+ it("produces a non-empty script for every supported method", () => {
5
+ for (const m of PREMIERE_METHODS) {
6
+ const jsx = buildJsxScript(m, {}, "/tmp/out.json");
7
+ expect(jsx.length).toBeGreaterThan(0);
8
+ expect(jsx).toContain("_writeJson");
9
+ expect(jsx).toContain("/tmp/out.json");
10
+ }
11
+ });
12
+ it("throws on unknown method", () => {
13
+ expect(() => buildJsxScript("not_a_method", {}, "/tmp/out.json")).toThrow(/unknown premiere method/);
14
+ });
15
+ it("escapes quotes in output path", () => {
16
+ const jsx = buildJsxScript("ping", {}, '/tmp/with "quote".json');
17
+ // Should appear escaped, not raw.
18
+ expect(jsx).not.toContain('"/tmp/with "quote".json"');
19
+ expect(jsx).toContain('with \\"quote\\"');
20
+ });
21
+ it("encodes params as a JSON-parseable string in JSX", () => {
22
+ const jsx = buildJsxScript("add_marker", { frame: 30, note: 'hi "there"' }, "/tmp/o.json");
23
+ // The script should contain a JSON.parse(...) call with our params.
24
+ expect(jsx).toContain("JSON.parse(");
25
+ expect(jsx).toContain("frame");
26
+ // Quotes inside the JSON-string must be doubly escaped.
27
+ expect(jsx).toContain('\\"frame\\":30');
28
+ });
29
+ it("wraps every method body in try/catch that emits ok:false on throw", () => {
30
+ const jsx = buildJsxScript("ping", {}, "/tmp/o.json");
31
+ expect(jsx).toContain("try {");
32
+ expect(jsx).toContain("ok: false");
33
+ expect(jsx).toContain("ok: true");
34
+ });
35
+ });
36
+ //# sourceMappingURL=bridge-source.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-source.test.js","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CACvE,yBAAyB,CAC1B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACjE,kCAAkC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;QAC3F,oEAAoE;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,wDAAwD;QACxD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ export type BridgeError = Error;
2
+ /**
3
+ * Active panel runtime, surfaced for capability + diagnostic messages.
4
+ * - 'http-uxp' Modern UXP panel (Premiere 25.6+).
5
+ * - 'http-cep' Legacy CEP panel — supported by Adobe through Sept 2026.
6
+ * - 'osascript-cep' ExtendScript via osascript (no panel installed). macOS-only.
7
+ */
8
+ export type PremiereTransportKind = "http-uxp" | "http-cep" | "osascript-cep";
9
+ export declare class PremiereBridge {
10
+ private transport?;
11
+ private transportProbe?;
12
+ /**
13
+ * Cheap pre-flight reachability check. Async because it probes the panel.
14
+ * Safe to call from capabilities() — also surfaces the panel runtime kind so
15
+ * the adapter can include it in HostCapabilities without needing to issue a
16
+ * full RPC first.
17
+ */
18
+ static checkReachable(): Promise<{
19
+ ok: true;
20
+ transport: PremiereTransportKind;
21
+ } | {
22
+ ok: false;
23
+ reason: string;
24
+ }>;
25
+ /**
26
+ * What flavour of bridge is currently in use. Returns undefined before the
27
+ * first call (transport hasn't been resolved yet).
28
+ */
29
+ getTransportKind(): PremiereTransportKind | undefined;
30
+ private getTransport;
31
+ call<T = unknown>(method: string, params?: Record<string, unknown>, opts?: {
32
+ signal?: AbortSignal;
33
+ }): Promise<T>;
34
+ private callViaOsascript;
35
+ private runOsascript;
36
+ shutdown(): void;
37
+ }
38
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAc9E,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAqB;IAE5C;;;;;OAKG;WACU,cAAc,IAAI,OAAO,CACpC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,qBAAqB,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAC/E;IAwCD;;;OAGG;IACH,gBAAgB,IAAI,qBAAqB,GAAG,SAAS;YASvC,YAAY;IAuDpB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAClC,OAAO,CAAC,CAAC,CAAC;YAWC,gBAAgB;IAuC9B,OAAO,CAAC,YAAY;IAiCpB,QAAQ,IAAI,IAAI;CAMjB"}
@@ -0,0 +1,238 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdtempSync, readFileSync, writeFileSync, unlinkSync } from "node:fs";
3
+ import { tmpdir, platform } from "node:os";
4
+ import { join } from "node:path";
5
+ import { buildJsxScript } from "./bridge-source.js";
6
+ import { PremiereHttpBridge } from "./http-bridge.js";
7
+ import { PremiereWsBridge } from "./ws-bridge.js";
8
+ /**
9
+ * Premiere bridge. Three transports, selected lazily on first use:
10
+ *
11
+ * 1. **HTTP** — talks to the gg-editor-premiere-panel CEP extension running
12
+ * inside Premiere. The CEP panel is the HTTP server; ggeditor is the
13
+ * client. Required on Windows when the user is on the legacy CEP path.
14
+ * Per-call latency: ~10-30ms.
15
+ *
16
+ * 2. **WebSocket** — talks to the gg-editor-premiere-panel UXP plugin.
17
+ * UXP plugins **cannot listen on TCP ports**, so the roles are flipped:
18
+ * ggeditor hosts a localhost WS server, the plugin connects out.
19
+ * The plugin's hello frame is what we treat as 'health' here.
20
+ *
21
+ * 3. **osascript** — macOS only fallback. Spawns AppleScript that asks
22
+ * Premiere to evalFile a per-call JSX. Per-call latency ~200-500ms.
23
+ * Used when neither panel is installed/running.
24
+ *
25
+ * Probe order:
26
+ * - Try HTTP first (cheapest — pure fetch, no listening sockets).
27
+ * - Otherwise spin up the WS listener and wait briefly for the UXP plugin.
28
+ * - Otherwise on macOS, fall back to osascript.
29
+ * - Otherwise on Windows, surface a clear install instruction.
30
+ */
31
+ let nextId = 1;
32
+ /**
33
+ * How long we wait for the UXP plugin to dial back into our WS listener
34
+ * before giving up and trying the next transport. Kept short so users
35
+ * without a plugin don't pay this cost on every CLI launch.
36
+ */
37
+ const WS_HELLO_TIMEOUT_MS = 1500;
38
+ export class PremiereBridge {
39
+ transport;
40
+ transportProbe;
41
+ /**
42
+ * Cheap pre-flight reachability check. Async because it probes the panel.
43
+ * Safe to call from capabilities() — also surfaces the panel runtime kind so
44
+ * the adapter can include it in HostCapabilities without needing to issue a
45
+ * full RPC first.
46
+ */
47
+ static async checkReachable() {
48
+ // 1. Try HTTP (existing CEP panel) first — cheapest probe.
49
+ const http = new PremiereHttpBridge();
50
+ const health = await http.health();
51
+ if (health?.ok) {
52
+ const transport = health.kind === "uxp" ? "http-uxp" : "http-cep";
53
+ return { ok: true, transport };
54
+ }
55
+ // 2. Try WS (UXP plugin). Spin up a temporary listener and see if the
56
+ // plugin dials in. We tear it down regardless — the real bridge in
57
+ // `getTransport()` will start its own listener if WS turns out to be
58
+ // the chosen transport.
59
+ const probe = new PremiereWsBridge();
60
+ try {
61
+ await probe.start();
62
+ const ws = await probe.health(WS_HELLO_TIMEOUT_MS);
63
+ if (ws?.ok)
64
+ return { ok: true, transport: "http-uxp" };
65
+ }
66
+ catch {
67
+ // Couldn't bind — fall through to osascript / install message.
68
+ }
69
+ finally {
70
+ probe.shutdown();
71
+ }
72
+ if (platform() === "darwin")
73
+ return { ok: true, transport: "osascript-cep" };
74
+ if (platform() === "win32") {
75
+ return {
76
+ ok: false,
77
+ reason: "Premiere panel not reachable on http://127.0.0.1:7437. " +
78
+ "Install the UXP panel (Premiere 25.6+, recommended): " +
79
+ "`npx @kenkaiiii/gg-editor-premiere-panel install --uxp`. " +
80
+ "Or the legacy CEP panel (works through Sept 2026): " +
81
+ "`npx @kenkaiiii/gg-editor-premiere-panel install --cep`. " +
82
+ "Then restart Premiere and open Window → Extensions → GG Editor.",
83
+ };
84
+ }
85
+ return { ok: false, reason: `Premiere is not supported on platform '${platform()}'.` };
86
+ }
87
+ /**
88
+ * What flavour of bridge is currently in use. Returns undefined before the
89
+ * first call (transport hasn't been resolved yet).
90
+ */
91
+ getTransportKind() {
92
+ if (!this.transport)
93
+ return undefined;
94
+ if (this.transport.kind === "http") {
95
+ return this.transport.panelKind === "uxp" ? "http-uxp" : "http-cep";
96
+ }
97
+ if (this.transport.kind === "ws")
98
+ return "http-uxp";
99
+ return "osascript-cep";
100
+ }
101
+ async getTransport() {
102
+ if (this.transport)
103
+ return this.transport;
104
+ if (this.transportProbe)
105
+ return this.transportProbe;
106
+ this.transportProbe = (async () => {
107
+ // 1. HTTP — pre-existing CEP panel.
108
+ const http = new PremiereHttpBridge();
109
+ const health = await http.health();
110
+ if (health?.ok) {
111
+ const t = {
112
+ kind: "http",
113
+ panelKind: health.kind ?? "cep",
114
+ bridge: http,
115
+ };
116
+ this.transport = t;
117
+ return t;
118
+ }
119
+ // 2. WS — UXP plugin connects to us. Hold the listener open: it stays
120
+ // bound for the rest of the session so the plugin can reconnect
121
+ // after a Premiere restart without us missing it.
122
+ const ws = new PremiereWsBridge();
123
+ try {
124
+ await ws.start();
125
+ const hello = await ws.health(WS_HELLO_TIMEOUT_MS);
126
+ if (hello?.ok) {
127
+ const t = { kind: "ws", panelKind: "uxp", bridge: ws };
128
+ this.transport = t;
129
+ return t;
130
+ }
131
+ ws.shutdown();
132
+ }
133
+ catch {
134
+ ws.shutdown();
135
+ }
136
+ // 3. osascript — macOS only.
137
+ if (platform() === "darwin") {
138
+ const t = {
139
+ kind: "osascript",
140
+ workDir: mkdtempSync(join(tmpdir(), "gg-editor-premiere-")),
141
+ };
142
+ this.transport = t;
143
+ return t;
144
+ }
145
+ throw new Error("Premiere panel not reachable and osascript not available. " +
146
+ "On Windows: install @kenkaiiii/gg-editor-premiere-panel " +
147
+ "(use --uxp for Premiere 25.6+, --cep for older versions). " +
148
+ "On macOS: ensure Premiere Pro is running.");
149
+ })();
150
+ return this.transportProbe;
151
+ }
152
+ async call(method, params = {}, opts = {}) {
153
+ const t = await this.getTransport();
154
+ if (t.kind === "http") {
155
+ return t.bridge.call(method, params, opts);
156
+ }
157
+ if (t.kind === "ws") {
158
+ return t.bridge.call(method, params, opts);
159
+ }
160
+ return this.callViaOsascript(method, params, t.workDir, opts.signal);
161
+ }
162
+ async callViaOsascript(method, params, workDir, signal) {
163
+ if (signal?.aborted) {
164
+ throw Object.assign(new Error("call aborted before send"), { name: "AbortError" });
165
+ }
166
+ const id = String(nextId++);
167
+ const scriptPath = join(workDir, `cmd-${id}.jsx`);
168
+ const outPath = join(workDir, `out-${id}.json`);
169
+ const jsx = buildJsxScript(method, params, outPath);
170
+ writeFileSync(scriptPath, jsx, "utf8");
171
+ try {
172
+ await this.runOsascript(scriptPath, signal);
173
+ const raw = readFileSync(outPath, "utf8");
174
+ const msg = JSON.parse(raw);
175
+ if (!msg.ok) {
176
+ const err = new Error(msg.error ?? "premiere bridge error");
177
+ throw err;
178
+ }
179
+ return msg.result;
180
+ }
181
+ finally {
182
+ try {
183
+ unlinkSync(scriptPath);
184
+ }
185
+ catch {
186
+ /* */
187
+ }
188
+ try {
189
+ unlinkSync(outPath);
190
+ }
191
+ catch {
192
+ /* */
193
+ }
194
+ }
195
+ }
196
+ runOsascript(scriptPath, signal) {
197
+ return new Promise((resolve, reject) => {
198
+ const jsxPath = scriptPath.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
199
+ const apple = [
200
+ 'tell application "Adobe Premiere Pro"',
201
+ ` do script "$.evalFile(\\"${jsxPath}\\")"`,
202
+ "end tell",
203
+ ].join("\n");
204
+ const child = spawn("osascript", ["-e", apple], {
205
+ stdio: ["ignore", "pipe", "pipe"],
206
+ });
207
+ let stderr = "";
208
+ child.stderr.on("data", (d) => (stderr += d.toString()));
209
+ const onAbort = () => {
210
+ child.kill("SIGTERM");
211
+ reject(Object.assign(new Error("osascript aborted"), { name: "AbortError" }));
212
+ };
213
+ signal?.addEventListener("abort", onAbort, { once: true });
214
+ child.on("error", (e) => {
215
+ signal?.removeEventListener("abort", onAbort);
216
+ reject(e);
217
+ });
218
+ child.on("close", (code) => {
219
+ signal?.removeEventListener("abort", onAbort);
220
+ if (signal?.aborted)
221
+ return; // already rejected
222
+ if (code === 0)
223
+ resolve();
224
+ else
225
+ reject(new Error(`osascript exited ${code}${stderr ? ": " + stderr.slice(-300) : ""}`));
226
+ });
227
+ });
228
+ }
229
+ shutdown() {
230
+ if (this.transport?.kind === "http")
231
+ this.transport.bridge.shutdown();
232
+ if (this.transport?.kind === "ws")
233
+ this.transport.bridge.shutdown();
234
+ this.transport = undefined;
235
+ this.transportProbe = undefined;
236
+ }
237
+ }
238
+ //# sourceMappingURL=bridge.js.map