@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,660 @@
1
+ /**
2
+ * Embedded Python source for the Resolve bridge. Written to a temp file at
3
+ * first launch and spawned with python3.
4
+ *
5
+ * Protocol: one JSON object per stdin line (request), one JSON object per
6
+ * stdout line (response). All Resolve API access is wrapped in try/except so
7
+ * a single failed call cannot kill the bridge.
8
+ *
9
+ * Request: {"id": "1", "method": "get_timeline", "params": {}}
10
+ * Response: {"id": "1", "ok": true, "result": {...}}
11
+ * {"id": "1", "ok": false, "error": "..."}
12
+ *
13
+ * The bridge keeps the resolve / project / timeline references fresh by
14
+ * re-fetching them per call (cheap, and handles the user switching projects).
15
+ */
16
+ export const BRIDGE_PY = String.raw `#!/usr/bin/env python3
17
+ import json
18
+ import os
19
+ import sys
20
+ import traceback
21
+
22
+ # Resolve loads its scripting module from a non-standard path. The TS wrapper
23
+ # guarantees PYTHONPATH already contains the right Modules dir, but we double-
24
+ # check here so the error is clear if not.
25
+ try:
26
+ import DaVinciResolveScript as dvr # type: ignore
27
+ except ModuleNotFoundError as e:
28
+ sys.stdout.write(json.dumps({
29
+ "id": "_bootstrap",
30
+ "ok": False,
31
+ "error": "DaVinciResolveScript not importable. Set RESOLVE_SCRIPT_API and PYTHONPATH. " + str(e),
32
+ }) + "\n")
33
+ sys.stdout.flush()
34
+ sys.exit(2)
35
+
36
+
37
+ def get_resolve():
38
+ r = dvr.scriptapp("Resolve")
39
+ if r is None:
40
+ raise RuntimeError("Could not connect to Resolve. Is the app running and is external scripting enabled in Preferences?")
41
+ return r
42
+
43
+
44
+ def get_project():
45
+ r = get_resolve()
46
+ pm = r.GetProjectManager()
47
+ p = pm.GetCurrentProject()
48
+ if p is None:
49
+ raise RuntimeError("No project open in Resolve.")
50
+ return p
51
+
52
+
53
+ def get_timeline_obj():
54
+ p = get_project()
55
+ t = p.GetCurrentTimeline()
56
+ if t is None:
57
+ raise RuntimeError("No timeline open in Resolve.")
58
+ return t
59
+
60
+
61
+ # ── Helpers ─────────────────────────────────────────────────
62
+
63
+
64
+ def _find_timeline_item(clip_id):
65
+ t = get_timeline_obj()
66
+ cid = str(clip_id)
67
+ for kind in ("video", "audio"):
68
+ try:
69
+ count = int(t.GetTrackCount(kind))
70
+ except Exception:
71
+ count = 0
72
+ for ti in range(1, count + 1):
73
+ for item in (t.GetItemListInTrack(kind, ti) or []):
74
+ try:
75
+ iid = str(item.GetUniqueId()) if hasattr(item, "GetUniqueId") else item.GetName()
76
+ except Exception:
77
+ iid = None
78
+ if iid == cid:
79
+ return item
80
+ raise RuntimeError(f"clip not found on timeline: {clip_id}")
81
+
82
+
83
+ # ── Method implementations ──────────────────────────────────
84
+
85
+ def m_ping(_params):
86
+ r = get_resolve()
87
+ return {"pong": True, "product": r.GetProductName(), "version": r.GetVersionString()}
88
+
89
+
90
+ def m_get_timeline(_params):
91
+ t = get_timeline_obj()
92
+ fr = float(t.GetSetting("timelineFrameRate") or 24.0)
93
+ start_frame = int(t.GetStartFrame())
94
+ end_frame = int(t.GetEndFrame())
95
+
96
+ clips = []
97
+ for kind in ("video", "audio"):
98
+ try:
99
+ count = int(t.GetTrackCount(kind))
100
+ except Exception:
101
+ count = 0
102
+ for ti in range(1, count + 1):
103
+ items = t.GetItemListInTrack(kind, ti) or []
104
+ for item in items:
105
+ try:
106
+ clips.append({
107
+ "id": str(item.GetUniqueId()) if hasattr(item, "GetUniqueId") else item.GetName(),
108
+ "track": ti,
109
+ "trackKind": kind,
110
+ "startFrame": int(item.GetStart()) - start_frame,
111
+ "endFrame": int(item.GetEnd()) - start_frame,
112
+ "name": item.GetName(),
113
+ })
114
+ except Exception:
115
+ # Skip clips we can't introspect (compound/timeline items)
116
+ pass
117
+
118
+ markers_dict = t.GetMarkers() or {}
119
+ markers = []
120
+ for frame_id, info in markers_dict.items():
121
+ markers.append({
122
+ "frame": int(frame_id),
123
+ "note": info.get("note", "") or info.get("name", ""),
124
+ "color": info.get("color"),
125
+ "durationFrames": int(info.get("duration", 1)),
126
+ })
127
+
128
+ return {
129
+ "name": t.GetName(),
130
+ "frameRate": fr,
131
+ "durationFrames": end_frame - start_frame,
132
+ "clips": clips,
133
+ "markers": markers,
134
+ }
135
+
136
+
137
+ def m_add_marker(params):
138
+ t = get_timeline_obj()
139
+ frame = int(params["frame"])
140
+ note = str(params.get("note", ""))
141
+ color = str(params.get("color", "Blue")).capitalize()
142
+ duration = int(params.get("durationFrames", 1) or 1)
143
+ # Resolve marker color names: Blue, Cyan, Green, Yellow, Red, Pink, Purple,
144
+ # Fuchsia, Rose, Lavender, Sky, Mint, Lemon, Sand, Cocoa, Cream
145
+ ok = t.AddMarker(frame, color, note[:60], note, duration, "")
146
+ if not ok:
147
+ raise RuntimeError("AddMarker returned False (frame may already have a marker, or be out of range).")
148
+ return None
149
+
150
+
151
+ def m_append_clip(params):
152
+ project = get_project()
153
+ media_pool = project.GetMediaPool()
154
+ media_path = params["mediaPath"]
155
+ track = int(params.get("track", 1))
156
+
157
+ # Import the file into the media pool first.
158
+ media_storage = get_resolve().GetMediaStorage()
159
+ items = media_storage.AddItemListToMediaPool([media_path]) or []
160
+ if not items:
161
+ raise RuntimeError(f"Failed to import {media_path} into the media pool.")
162
+
163
+ # AppendToTimeline appends to the end of whatever the current timeline is.
164
+ # Track index is honoured for audio-only / video-only items; for AV items
165
+ # the audio component goes to A1 by default.
166
+ appended = media_pool.AppendToTimeline(items) or []
167
+ if not appended:
168
+ raise RuntimeError("AppendToTimeline returned no items.")
169
+
170
+ item = appended[0]
171
+ t = get_timeline_obj()
172
+ start_frame = int(t.GetStartFrame())
173
+ return {
174
+ "id": str(item.GetUniqueId()) if hasattr(item, "GetUniqueId") else item.GetName(),
175
+ "track": track,
176
+ "trackKind": "video",
177
+ "startFrame": int(item.GetStart()) - start_frame,
178
+ "endFrame": int(item.GetEnd()) - start_frame,
179
+ "name": item.GetName(),
180
+ }
181
+
182
+
183
+ def m_import_timeline(params):
184
+ project = get_project()
185
+ media_pool = project.GetMediaPool()
186
+ file_path = params["filePath"]
187
+ timeline = media_pool.ImportTimelineFromFile(file_path, {})
188
+ if timeline is None:
189
+ raise RuntimeError(f"ImportTimelineFromFile returned None for {file_path}.")
190
+ return {"name": timeline.GetName()}
191
+
192
+
193
+ def m_render(params):
194
+ project = get_project()
195
+ preset = params["preset"]
196
+ output_path = params["output"]
197
+
198
+ if not project.LoadRenderPreset(preset):
199
+ # Try as a built-in preset key. List available so the agent can recover.
200
+ available = project.GetRenderPresetList() or []
201
+ raise RuntimeError(f"Render preset not found: {preset}. Available: {available[:10]}")
202
+
203
+ out_dir = os.path.dirname(output_path) or "."
204
+ out_file = os.path.basename(output_path)
205
+ project.SetRenderSettings({
206
+ "TargetDir": out_dir,
207
+ "CustomName": os.path.splitext(out_file)[0],
208
+ })
209
+
210
+ job_id = project.AddRenderJob()
211
+ if not job_id:
212
+ raise RuntimeError("AddRenderJob failed.")
213
+ project.StartRendering([job_id], False)
214
+
215
+ # Block until done.
216
+ import time
217
+ while project.IsRenderingInProgress():
218
+ time.sleep(0.5)
219
+
220
+ return {"jobId": job_id, "output": output_path}
221
+
222
+
223
+ def m_get_markers(_params):
224
+ t = get_timeline_obj()
225
+ markers_dict = t.GetMarkers() or {}
226
+ out = []
227
+ for frame_id, info in markers_dict.items():
228
+ out.append({
229
+ "frame": int(frame_id),
230
+ "note": info.get("note", "") or info.get("name", ""),
231
+ "color": info.get("color"),
232
+ "durationFrames": int(info.get("duration", 1)),
233
+ })
234
+ return out
235
+
236
+
237
+ def m_create_timeline(params):
238
+ project = get_project()
239
+ media_pool = project.GetMediaPool()
240
+ name = str(params["name"])
241
+ fps = params.get("fps")
242
+ width = params.get("width")
243
+ height = params.get("height")
244
+
245
+ # Project-level frame rate must be set BEFORE creating the timeline; once a
246
+ # project has timelines, the frame rate becomes locked. We try, and if it
247
+ # fails because timelines exist, the new timeline will inherit project fps.
248
+ if fps is not None:
249
+ try:
250
+ project.SetSetting("timelineFrameRate", str(float(fps)))
251
+ except Exception:
252
+ pass
253
+
254
+ timeline = media_pool.CreateEmptyTimeline(name)
255
+ if timeline is None:
256
+ raise RuntimeError("CreateEmptyTimeline returned None.")
257
+
258
+ if width is not None:
259
+ try:
260
+ timeline.SetSetting("useCustomSettings", "1")
261
+ timeline.SetSetting("timelineResolutionWidth", str(int(width)))
262
+ except Exception:
263
+ pass
264
+ if height is not None:
265
+ try:
266
+ timeline.SetSetting("timelineResolutionHeight", str(int(height)))
267
+ except Exception:
268
+ pass
269
+
270
+ return {"name": timeline.GetName()}
271
+
272
+
273
+ def m_import_to_media_pool(params):
274
+ project = get_project()
275
+ media_pool = project.GetMediaPool()
276
+ paths = list(params.get("paths") or [])
277
+ bin_name = params.get("bin")
278
+
279
+ if bin_name:
280
+ # Walk top-level bins for a name match; create if absent.
281
+ root = media_pool.GetRootFolder()
282
+ target = None
283
+ for sub in root.GetSubFolderList() or []:
284
+ if sub.GetName() == bin_name:
285
+ target = sub
286
+ break
287
+ if target is None:
288
+ target = media_pool.AddSubFolder(root, bin_name)
289
+ if target is not None:
290
+ media_pool.SetCurrentFolder(target)
291
+
292
+ media_storage = get_resolve().GetMediaStorage()
293
+ items = media_storage.AddItemListToMediaPool(paths) or []
294
+ return {"imported": len(items)}
295
+
296
+
297
+ def m_open_page(params):
298
+ r = get_resolve()
299
+ name = str(params["name"]).lower()
300
+ valid = {"media", "cut", "edit", "fusion", "color", "fairlight", "deliver"}
301
+ if name not in valid:
302
+ raise RuntimeError(f"unknown page: {name}; valid: {sorted(valid)}")
303
+ ok = r.OpenPage(name)
304
+ if not ok:
305
+ raise RuntimeError(f"OpenPage('{name}') returned False.")
306
+ return None
307
+
308
+
309
+ def m_set_clip_speed(params):
310
+ clip_id = str(params["clipId"])
311
+ speed = float(params["speed"])
312
+ if speed <= 0:
313
+ raise RuntimeError("speed must be > 0")
314
+ found = _find_timeline_item(clip_id)
315
+
316
+ last_err = None
317
+ # Try several APIs; Resolve versions differ.
318
+ for setter in (
319
+ lambda i: i.SetClipProperty("Speed", str(speed * 100.0)),
320
+ lambda i: i.SetProperty("Speed", speed),
321
+ lambda i: i.SetClipProperty("Speed", speed),
322
+ ):
323
+ try:
324
+ ok = setter(found)
325
+ if ok:
326
+ return {"clipId": clip_id, "speed": speed}
327
+ except Exception as e:
328
+ last_err = e
329
+ raise RuntimeError(
330
+ f"Resolve refused all clip-speed setters for this version. Last error: {last_err}. "
331
+ f"fix: rebuild via FCPXML with explicit timeMap."
332
+ )
333
+
334
+
335
+ def m_apply_lut(params):
336
+ import os as _os
337
+ clip_id = str(params["clipId"])
338
+ lut_path = str(params["lutPath"])
339
+ node_index = int(params.get("nodeIndex", 1) or 1)
340
+ if not _os.path.exists(lut_path):
341
+ raise RuntimeError(f"LUT file not found: {lut_path}")
342
+ item = _find_timeline_item(clip_id)
343
+ if not hasattr(item, "SetLUT"):
344
+ raise RuntimeError("this Resolve version's TimelineItem has no SetLUT")
345
+ ok = item.SetLUT(node_index, lut_path)
346
+ if not ok:
347
+ raise RuntimeError(
348
+ f"SetLUT returned False (node {node_index}, lut {lut_path}). "
349
+ f"fix: ensure node {node_index} exists; node 1 always does."
350
+ )
351
+ return {"clipId": clip_id, "lutPath": lut_path, "nodeIndex": node_index}
352
+
353
+
354
+ def _fmt3(triple):
355
+ return "%g %g %g" % (float(triple[0]), float(triple[1]), float(triple[2]))
356
+
357
+
358
+ def m_set_primary_correction(params):
359
+ clip_id = str(params["clipId"])
360
+ node_index = int(params.get("nodeIndex", 1) or 1)
361
+ item = _find_timeline_item(clip_id)
362
+ if not hasattr(item, "SetCDL"):
363
+ raise RuntimeError("this Resolve version's TimelineItem has no SetCDL")
364
+ cdl = {"NodeIndex": node_index}
365
+ if params.get("slope") is not None:
366
+ cdl["Slope"] = _fmt3(params["slope"])
367
+ if params.get("offset") is not None:
368
+ cdl["Offset"] = _fmt3(params["offset"])
369
+ if params.get("power") is not None:
370
+ cdl["Power"] = _fmt3(params["power"])
371
+ if params.get("saturation") is not None:
372
+ cdl["Saturation"] = "%g" % float(params["saturation"])
373
+ ok = item.SetCDL(cdl)
374
+ if not ok:
375
+ raise RuntimeError(
376
+ f"SetCDL returned False for node {node_index}. "
377
+ f"fix: open the Color page (open_page('color')) and retry."
378
+ )
379
+ return {"clipId": clip_id, "nodeIndex": node_index}
380
+
381
+
382
+ def m_copy_grade(params):
383
+ source_id = str(params["sourceClipId"])
384
+ target_ids = [str(x) for x in (params.get("targetClipIds") or [])]
385
+ if not target_ids:
386
+ raise RuntimeError("targetClipIds must be a non-empty list")
387
+ src = _find_timeline_item(source_id)
388
+ targets = [_find_timeline_item(tid) for tid in target_ids]
389
+ if not hasattr(src, "CopyGrades"):
390
+ raise RuntimeError("this Resolve version's TimelineItem has no CopyGrades")
391
+ ok = src.CopyGrades(targets)
392
+ if not ok:
393
+ raise RuntimeError(
394
+ "CopyGrades returned False. fix: open the Color page (open_page('color')) and retry."
395
+ )
396
+ return {"sourceClipId": source_id, "copied": len(targets)}
397
+
398
+
399
+ def m_list_render_presets(_params):
400
+ project = get_project()
401
+ presets = project.GetRenderPresetList() or []
402
+ return list(presets)
403
+
404
+
405
+ def m_replace_clip(params):
406
+ clip_id = str(params["clipId"])
407
+ media_path = str(params["mediaPath"])
408
+ item = _find_timeline_item(clip_id)
409
+ # Newer Resolve API: TimelineItem.ReplaceClip(media_path) or .ReplaceMedia.
410
+ last_err = None
411
+ for setter in (
412
+ lambda i: i.ReplaceClip(media_path) if hasattr(i, "ReplaceClip") else False,
413
+ lambda i: i.ReplaceMedia(media_path) if hasattr(i, "ReplaceMedia") else False,
414
+ ):
415
+ try:
416
+ ok = setter(item)
417
+ if ok:
418
+ return {"clipId": clip_id, "mediaPath": media_path}
419
+ except Exception as e:
420
+ last_err = e
421
+ raise RuntimeError(
422
+ f"replace_clip not supported by this Resolve version. Last error: {last_err}. "
423
+ f"fix: rebuild the segment via FCPXML with the new media reference."
424
+ )
425
+
426
+
427
+ def m_add_track(params):
428
+ t = get_timeline_obj()
429
+ kind = str(params.get("kind", "video"))
430
+ if kind not in ("video", "audio", "subtitle"):
431
+ raise RuntimeError(f"unknown track kind: {kind}")
432
+ if not hasattr(t, "AddTrack"):
433
+ raise RuntimeError("this Resolve version's Timeline has no AddTrack")
434
+ ok = t.AddTrack(kind)
435
+ if not ok:
436
+ raise RuntimeError(f"AddTrack({kind}) returned False")
437
+ try:
438
+ new_count = int(t.GetTrackCount(kind))
439
+ except Exception:
440
+ new_count = 0
441
+ return {"kind": kind, "track": new_count}
442
+
443
+
444
+ def m_set_clip_volume(params):
445
+ clip_id = str(params["clipId"])
446
+ volume_db = float(params["volumeDb"])
447
+ item = _find_timeline_item(clip_id)
448
+ # Resolve audio clips expose Volume as a clip property in dB. Some versions
449
+ # accept dB directly; older versions need linear (10**(dB/20)). Try both.
450
+ last_err = None
451
+ for setter in (
452
+ lambda i: i.SetClipProperty("Volume", str(volume_db)),
453
+ lambda i: i.SetClipProperty("Volume", volume_db),
454
+ lambda i: i.SetClipProperty("Volume", str(10 ** (volume_db / 20.0))),
455
+ ):
456
+ try:
457
+ ok = setter(item)
458
+ if ok:
459
+ return {"clipId": clip_id, "volumeDb": volume_db}
460
+ except Exception as e:
461
+ last_err = e
462
+ raise RuntimeError(
463
+ f"Resolve refused all volume setters. Last error: {last_err}. "
464
+ f"fix: adjust volume manually on the Fairlight page."
465
+ )
466
+
467
+
468
+ def m_clone_timeline(params):
469
+ project = get_project()
470
+ pm = get_resolve().GetProjectManager()
471
+ src = project.GetCurrentTimeline()
472
+ if src is None:
473
+ raise RuntimeError("No active timeline to clone.")
474
+ new_name = str(params["newName"])
475
+ # Resolve API: TimelineItem dup is via Timeline.DuplicateTimeline(name).
476
+ if not hasattr(src, "DuplicateTimeline"):
477
+ raise RuntimeError("this Resolve version's Timeline has no DuplicateTimeline")
478
+ new_tl = src.DuplicateTimeline(new_name)
479
+ if new_tl is None:
480
+ raise RuntimeError("DuplicateTimeline returned None")
481
+ project.SetCurrentTimeline(new_tl)
482
+ pm.SaveProject()
483
+ return {"name": new_tl.GetName()}
484
+
485
+
486
+ def m_save_project(_params):
487
+ pm = get_resolve().GetProjectManager()
488
+ ok = pm.SaveProject()
489
+ if not ok:
490
+ raise RuntimeError("SaveProject returned False")
491
+ return None
492
+
493
+
494
+ def m_insert_clip_on_track(params):
495
+ project = get_project()
496
+ media_pool = project.GetMediaPool()
497
+ media_path = str(params["mediaPath"])
498
+ track = int(params.get("track", 2))
499
+ record_frame = int(params["recordFrame"])
500
+
501
+ # Import media into the pool first.
502
+ media_storage = get_resolve().GetMediaStorage()
503
+ items = media_storage.AddItemListToMediaPool([media_path]) or []
504
+ if not items:
505
+ raise RuntimeError(f"failed to import {media_path} into media pool")
506
+ item = items[0]
507
+
508
+ clip_info = {
509
+ "mediaPoolItem": item,
510
+ "mediaType": 1, # video
511
+ "trackIndex": track,
512
+ "recordFrame": record_frame,
513
+ }
514
+ if params.get("sourceInFrame") is not None:
515
+ clip_info["startFrame"] = int(params["sourceInFrame"])
516
+ if params.get("sourceOutFrame") is not None:
517
+ clip_info["endFrame"] = int(params["sourceOutFrame"])
518
+
519
+ appended = media_pool.AppendToTimeline([clip_info]) or []
520
+ if not appended:
521
+ raise RuntimeError(
522
+ "AppendToTimeline returned no items; verify track index exists and recordFrame is within the timeline."
523
+ )
524
+ inserted = appended[0]
525
+ t = get_timeline_obj()
526
+ start_offset = int(t.GetStartFrame())
527
+ return {
528
+ "id": str(inserted.GetUniqueId()) if hasattr(inserted, "GetUniqueId") else inserted.GetName(),
529
+ "track": track,
530
+ "trackKind": "video",
531
+ "startFrame": int(inserted.GetStart()) - start_offset,
532
+ "endFrame": int(inserted.GetEnd()) - start_offset,
533
+ "name": inserted.GetName(),
534
+ }
535
+
536
+
537
+ def m_smart_reframe(params):
538
+ clip_id = str(params["clipId"])
539
+ aspect = str(params["aspect"])
540
+ frame_interest = str(params.get("frameInterest", "all"))
541
+ reference_frame = params.get("referenceFrame")
542
+ item = _find_timeline_item(clip_id)
543
+ if not hasattr(item, "SmartReframe"):
544
+ raise RuntimeError(
545
+ "this Resolve version's TimelineItem has no SmartReframe (Studio-only feature)"
546
+ )
547
+ # SmartReframe signature varies; pass aspect always, then optional kwargs.
548
+ try:
549
+ if reference_frame is not None and frame_interest == "reference-frame":
550
+ ok = item.SmartReframe(aspect, frame_interest, int(reference_frame))
551
+ else:
552
+ ok = item.SmartReframe(aspect, frame_interest)
553
+ except TypeError:
554
+ ok = item.SmartReframe(aspect)
555
+ if not ok:
556
+ raise RuntimeError(
557
+ "SmartReframe returned False. fix: ensure Resolve Studio (free version lacks AI), and the clip is on the active timeline."
558
+ )
559
+ return {"clipId": clip_id, "aspect": aspect}
560
+
561
+
562
+ def m_import_subtitles(params):
563
+ project = get_project()
564
+ media_pool = project.GetMediaPool()
565
+ srt_path = params["srtPath"]
566
+
567
+ items = media_pool.ImportMedia([srt_path]) or []
568
+ if not items:
569
+ raise RuntimeError(
570
+ f"ImportMedia returned no items for {srt_path}. fix: import the SRT manually via File > Import Subtitle."
571
+ )
572
+
573
+ t = get_timeline_obj()
574
+ # Make sure at least one subtitle track exists.
575
+ try:
576
+ sub_count = int(t.GetTrackCount("subtitle"))
577
+ except Exception:
578
+ sub_count = 0
579
+ if sub_count < 1:
580
+ try:
581
+ t.AddTrack("subtitle")
582
+ except Exception:
583
+ pass
584
+
585
+ appended = media_pool.AppendToTimeline(items) or []
586
+ if not appended:
587
+ return {
588
+ "imported": True,
589
+ "attached": False,
590
+ "note": "SRT imported to media pool but auto-attach failed; drag onto subtitle track manually.",
591
+ }
592
+ return {"imported": True, "attached": True}
593
+
594
+
595
+ METHODS = {
596
+ "ping": m_ping,
597
+ "get_timeline": m_get_timeline,
598
+ "add_marker": m_add_marker,
599
+ "append_clip": m_append_clip,
600
+ "import_timeline": m_import_timeline,
601
+ "render": m_render,
602
+ "get_markers": m_get_markers,
603
+ "create_timeline": m_create_timeline,
604
+ "import_to_media_pool": m_import_to_media_pool,
605
+ "open_page": m_open_page,
606
+ "set_clip_speed": m_set_clip_speed,
607
+ "apply_lut": m_apply_lut,
608
+ "set_primary_correction": m_set_primary_correction,
609
+ "copy_grade": m_copy_grade,
610
+ "list_render_presets": m_list_render_presets,
611
+ "replace_clip": m_replace_clip,
612
+ "smart_reframe": m_smart_reframe,
613
+ "insert_clip_on_track": m_insert_clip_on_track,
614
+ "clone_timeline": m_clone_timeline,
615
+ "save_project": m_save_project,
616
+ "add_track": m_add_track,
617
+ "set_clip_volume": m_set_clip_volume,
618
+ "import_subtitles": m_import_subtitles,
619
+ }
620
+
621
+
622
+ def main():
623
+ # Signal we're alive.
624
+ sys.stdout.write(json.dumps({"id": "_ready", "ok": True, "result": {"ready": True}}) + "\n")
625
+ sys.stdout.flush()
626
+
627
+ for line in sys.stdin:
628
+ line = line.strip()
629
+ if not line:
630
+ continue
631
+ try:
632
+ req = json.loads(line)
633
+ except json.JSONDecodeError as e:
634
+ sys.stdout.write(json.dumps({"id": "_parse", "ok": False, "error": f"bad json: {e}"}) + "\n")
635
+ sys.stdout.flush()
636
+ continue
637
+
638
+ rid = req.get("id", "?")
639
+ method = req.get("method", "")
640
+ params = req.get("params", {}) or {}
641
+
642
+ fn = METHODS.get(method)
643
+ if fn is None:
644
+ sys.stdout.write(json.dumps({"id": rid, "ok": False, "error": f"unknown method: {method}"}) + "\n")
645
+ sys.stdout.flush()
646
+ continue
647
+
648
+ try:
649
+ result = fn(params)
650
+ sys.stdout.write(json.dumps({"id": rid, "ok": True, "result": result}) + "\n")
651
+ except Exception as e:
652
+ tb = traceback.format_exc(limit=2)
653
+ sys.stdout.write(json.dumps({"id": rid, "ok": False, "error": f"{e.__class__.__name__}: {e}", "trace": tb}) + "\n")
654
+ sys.stdout.flush()
655
+
656
+
657
+ if __name__ == "__main__":
658
+ main()
659
+ `;
660
+ //# sourceMappingURL=bridge-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-source.js","sourceRoot":"","sources":["../../../../src/core/hosts/resolve/bridge-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmoBlC,CAAC"}