@ignix-social/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 (586) hide show
  1. package/LICENSE +190 -0
  2. package/NOTICE +54 -0
  3. package/README.md +23 -0
  4. package/bin/ignix-editor.mjs +8 -0
  5. package/package.json +53 -0
  6. package/patches/index.mjs +53 -0
  7. package/scripts/build-ffmpeg-macos.sh +35 -0
  8. package/scripts/build-whisper-macos.sh +21 -0
  9. package/scripts/vendor.mjs +41 -0
  10. package/skills/ignix-editor/SKILL.md +132 -0
  11. package/src/audio.mjs +31 -0
  12. package/src/binaries.json +46 -0
  13. package/src/binaries.mjs +83 -0
  14. package/src/cli.mjs +254 -0
  15. package/src/prepare.mjs +74 -0
  16. package/src/runtime/ignix-frame.js +92 -0
  17. package/src/transcribe.mjs +71 -0
  18. package/src/validate.mjs +71 -0
  19. package/templates/blank/index.html +41 -0
  20. package/vendor/hyperframes/README.md +181 -0
  21. package/vendor/hyperframes/UPSTREAM.json +12 -0
  22. package/vendor/hyperframes/bin/hyperframes-localize-fonts.mjs +12 -0
  23. package/vendor/hyperframes/bin/hyperframes.mjs +11 -0
  24. package/vendor/hyperframes/dist/add-LR3ZR2A5.js +79 -0
  25. package/vendor/hyperframes/dist/agentPromptGenerator-VIIPZCJ3.js +143 -0
  26. package/vendor/hyperframes/dist/animatedGifPrep-P2T6YM7Z.js +34 -0
  27. package/vendor/hyperframes/dist/asset-BE2DOV72.js +26 -0
  28. package/vendor/hyperframes/dist/assetCataloger-VBLPHX24.js +340 -0
  29. package/vendor/hyperframes/dist/auth-RCQB2ZT7.js +60 -0
  30. package/vendor/hyperframes/dist/autoUpdate-RJAX3DAZ.js +268 -0
  31. package/vendor/hyperframes/dist/backgroundChecks-H2LCUIMJ.js +61 -0
  32. package/vendor/hyperframes/dist/backgroundChecksWorker.js +26 -0
  33. package/vendor/hyperframes/dist/batchRender-FT7AP7XH.js +355 -0
  34. package/vendor/hyperframes/dist/beat-analyzer.global.js +338 -0
  35. package/vendor/hyperframes/dist/beats-Y2EOP72P.js +309 -0
  36. package/vendor/hyperframes/dist/benchmark-MZ7GY3JW.js +231 -0
  37. package/vendor/hyperframes/dist/browser-HUTAMRQE.js +237 -0
  38. package/vendor/hyperframes/dist/bundleWithLocalizedFonts-5QOPOB5D.js +52 -0
  39. package/vendor/hyperframes/dist/capture-RLZA6EMR.js +4079 -0
  40. package/vendor/hyperframes/dist/capture-SZZ4IYJK.js +290 -0
  41. package/vendor/hyperframes/dist/captureFile-LYOJOUIE.js +15 -0
  42. package/vendor/hyperframes/dist/captureTimeout-PA4FYWT5.js +27 -0
  43. package/vendor/hyperframes/dist/catalog-KYU55EWR.js +1001 -0
  44. package/vendor/hyperframes/dist/check-TCG4PXLR.js +1697 -0
  45. package/vendor/hyperframes/dist/checkBrowser-RPMO4OW5.js +1032 -0
  46. package/vendor/hyperframes/dist/chunk-2EAXUCCE.js +88 -0
  47. package/vendor/hyperframes/dist/chunk-2EGFTPWD.js +1077 -0
  48. package/vendor/hyperframes/dist/chunk-2PSPARWP.js +6058 -0
  49. package/vendor/hyperframes/dist/chunk-2YN64IN5.js +5747 -0
  50. package/vendor/hyperframes/dist/chunk-3GXQPCJC.js +682 -0
  51. package/vendor/hyperframes/dist/chunk-3ZP5DXE7.js +15 -0
  52. package/vendor/hyperframes/dist/chunk-4NWOGZZS.js +1990 -0
  53. package/vendor/hyperframes/dist/chunk-4PFZPP2N.js +587 -0
  54. package/vendor/hyperframes/dist/chunk-4THIAPBL.js +128 -0
  55. package/vendor/hyperframes/dist/chunk-4YYJOFKS.js +28 -0
  56. package/vendor/hyperframes/dist/chunk-54HJ63Q2.js +29 -0
  57. package/vendor/hyperframes/dist/chunk-5ETJX6WM.js +89 -0
  58. package/vendor/hyperframes/dist/chunk-5IAKAQA7.js +389 -0
  59. package/vendor/hyperframes/dist/chunk-5Z63TBTX.js +37 -0
  60. package/vendor/hyperframes/dist/chunk-6BEFEWFB.js +25 -0
  61. package/vendor/hyperframes/dist/chunk-6CSYCFQV.js +68 -0
  62. package/vendor/hyperframes/dist/chunk-6CTIGJY7.js +154 -0
  63. package/vendor/hyperframes/dist/chunk-7HG4BFIN.js +93 -0
  64. package/vendor/hyperframes/dist/chunk-7JZ4FXP2.js +118 -0
  65. package/vendor/hyperframes/dist/chunk-A2Z4Z4VL.js +2961 -0
  66. package/vendor/hyperframes/dist/chunk-AMKC3AXA.js +25 -0
  67. package/vendor/hyperframes/dist/chunk-AVUUN2XD.js +4847 -0
  68. package/vendor/hyperframes/dist/chunk-AWDFDFI3.js +46 -0
  69. package/vendor/hyperframes/dist/chunk-AWNBM3MZ.js +94 -0
  70. package/vendor/hyperframes/dist/chunk-BXCMXMJQ.js +73 -0
  71. package/vendor/hyperframes/dist/chunk-BZ56MTDX.js +6 -0
  72. package/vendor/hyperframes/dist/chunk-CFKU7HTK.js +171 -0
  73. package/vendor/hyperframes/dist/chunk-CWPVM2QV.js +308 -0
  74. package/vendor/hyperframes/dist/chunk-DPVXBVLL.js +31292 -0
  75. package/vendor/hyperframes/dist/chunk-DQBY7FRR.js +397 -0
  76. package/vendor/hyperframes/dist/chunk-E6RPWJVC.js +213 -0
  77. package/vendor/hyperframes/dist/chunk-EISRN4E6.js +294 -0
  78. package/vendor/hyperframes/dist/chunk-EOVYQ3IG.js +143 -0
  79. package/vendor/hyperframes/dist/chunk-F3WZGU7C.js +479 -0
  80. package/vendor/hyperframes/dist/chunk-FCSIGXXP.js +366 -0
  81. package/vendor/hyperframes/dist/chunk-FI4I7CME.js +56 -0
  82. package/vendor/hyperframes/dist/chunk-FLWXXDNS.js +15 -0
  83. package/vendor/hyperframes/dist/chunk-GK4AIFIH.js +11171 -0
  84. package/vendor/hyperframes/dist/chunk-GMECXFAN.js +57 -0
  85. package/vendor/hyperframes/dist/chunk-GULOKZLI.js +155 -0
  86. package/vendor/hyperframes/dist/chunk-H4YZZ2VQ.js +68 -0
  87. package/vendor/hyperframes/dist/chunk-H6QMKUYA.js +477 -0
  88. package/vendor/hyperframes/dist/chunk-HBBJFK6I.js +273 -0
  89. package/vendor/hyperframes/dist/chunk-HRUGC23L.js +212 -0
  90. package/vendor/hyperframes/dist/chunk-HVW7ABXD.js +19 -0
  91. package/vendor/hyperframes/dist/chunk-HW6OYASV.js +344 -0
  92. package/vendor/hyperframes/dist/chunk-HWKCIWQT.js +3578 -0
  93. package/vendor/hyperframes/dist/chunk-I465DBM6.js +1214 -0
  94. package/vendor/hyperframes/dist/chunk-IGLEPPTN.js +24 -0
  95. package/vendor/hyperframes/dist/chunk-IGNAAHS3.js +433 -0
  96. package/vendor/hyperframes/dist/chunk-IHFUKJOR.js +85 -0
  97. package/vendor/hyperframes/dist/chunk-IQ3OUQ5Z.js +213 -0
  98. package/vendor/hyperframes/dist/chunk-ISN5GRYI.js +20 -0
  99. package/vendor/hyperframes/dist/chunk-IUZFXWSV.js +446 -0
  100. package/vendor/hyperframes/dist/chunk-JH556Q42.js +647 -0
  101. package/vendor/hyperframes/dist/chunk-JTHMTOMQ.js +601 -0
  102. package/vendor/hyperframes/dist/chunk-K2EQN4VU.js +405 -0
  103. package/vendor/hyperframes/dist/chunk-K2FTXJYH.js +16044 -0
  104. package/vendor/hyperframes/dist/chunk-K4WIOZFP.js +32 -0
  105. package/vendor/hyperframes/dist/chunk-K4WKGXRC.js +18 -0
  106. package/vendor/hyperframes/dist/chunk-KBJUXVOJ.js +172 -0
  107. package/vendor/hyperframes/dist/chunk-KC5XXX3X.js +590 -0
  108. package/vendor/hyperframes/dist/chunk-KNU5COPB.js +29 -0
  109. package/vendor/hyperframes/dist/chunk-KZI44OPA.js +185 -0
  110. package/vendor/hyperframes/dist/chunk-L3YOGIPG.js +48 -0
  111. package/vendor/hyperframes/dist/chunk-LAOCA3MQ.js +189 -0
  112. package/vendor/hyperframes/dist/chunk-LCSMOLGX.js +312 -0
  113. package/vendor/hyperframes/dist/chunk-LFGJWOVA.js +61 -0
  114. package/vendor/hyperframes/dist/chunk-LHSR3M4M.js +498 -0
  115. package/vendor/hyperframes/dist/chunk-LYNI3FOL.js +123 -0
  116. package/vendor/hyperframes/dist/chunk-M2WBOQ2Q.js +54 -0
  117. package/vendor/hyperframes/dist/chunk-MRF4AMKD.js +104 -0
  118. package/vendor/hyperframes/dist/chunk-MWB3ZIFM.js +852 -0
  119. package/vendor/hyperframes/dist/chunk-NGKM64BP.js +39 -0
  120. package/vendor/hyperframes/dist/chunk-NXMYHJAL.js +43 -0
  121. package/vendor/hyperframes/dist/chunk-OAF4XJOW.js +192 -0
  122. package/vendor/hyperframes/dist/chunk-OFQWTKPW.js +117 -0
  123. package/vendor/hyperframes/dist/chunk-P6LJ4Y32.js +4662 -0
  124. package/vendor/hyperframes/dist/chunk-PBN6GBJE.js +108 -0
  125. package/vendor/hyperframes/dist/chunk-PDAMK4Q5.js +28 -0
  126. package/vendor/hyperframes/dist/chunk-PFCFR3KZ.js +20 -0
  127. package/vendor/hyperframes/dist/chunk-PJ3HDUCY.js +108 -0
  128. package/vendor/hyperframes/dist/chunk-PMRBLBUP.js +152 -0
  129. package/vendor/hyperframes/dist/chunk-PPQUYWTW.js +240 -0
  130. package/vendor/hyperframes/dist/chunk-Q5X2B5WT.js +29 -0
  131. package/vendor/hyperframes/dist/chunk-Q7IU7MOR.js +351 -0
  132. package/vendor/hyperframes/dist/chunk-QC4FJVLM.js +371 -0
  133. package/vendor/hyperframes/dist/chunk-QNYYOUU3.js +1318 -0
  134. package/vendor/hyperframes/dist/chunk-RDNNAKEP.js +161 -0
  135. package/vendor/hyperframes/dist/chunk-RMHUQGRK.js +657 -0
  136. package/vendor/hyperframes/dist/chunk-RQVDTPGD.js +6 -0
  137. package/vendor/hyperframes/dist/chunk-RVCWIIZ7.js +68 -0
  138. package/vendor/hyperframes/dist/chunk-S3D6GE5W.js +72 -0
  139. package/vendor/hyperframes/dist/chunk-S3S4TGEH.js +424 -0
  140. package/vendor/hyperframes/dist/chunk-S7NPLFWV.js +11395 -0
  141. package/vendor/hyperframes/dist/chunk-SHB5VDMH.js +51 -0
  142. package/vendor/hyperframes/dist/chunk-TCLGPL65.js +860 -0
  143. package/vendor/hyperframes/dist/chunk-THXFSPLV.js +40 -0
  144. package/vendor/hyperframes/dist/chunk-TJSTGSAW.js +354 -0
  145. package/vendor/hyperframes/dist/chunk-TQFG7HTI.js +1024 -0
  146. package/vendor/hyperframes/dist/chunk-TVCRUG2S.js +265 -0
  147. package/vendor/hyperframes/dist/chunk-TWWSYAKJ.js +24 -0
  148. package/vendor/hyperframes/dist/chunk-U7CZBDMV.js +27 -0
  149. package/vendor/hyperframes/dist/chunk-UEZXMWG3.js +139 -0
  150. package/vendor/hyperframes/dist/chunk-UYEZTK4U.js +61 -0
  151. package/vendor/hyperframes/dist/chunk-VC76R6W2.js +27 -0
  152. package/vendor/hyperframes/dist/chunk-VFCKXTBB.js +159 -0
  153. package/vendor/hyperframes/dist/chunk-VWG7OQKU.js +22 -0
  154. package/vendor/hyperframes/dist/chunk-VXVRPIJA.js +105 -0
  155. package/vendor/hyperframes/dist/chunk-WBLXWOYK.js +15 -0
  156. package/vendor/hyperframes/dist/chunk-WERLJGIC.js +20 -0
  157. package/vendor/hyperframes/dist/chunk-WMQNIQDJ.js +2057 -0
  158. package/vendor/hyperframes/dist/chunk-WPHMNO44.js +4528 -0
  159. package/vendor/hyperframes/dist/chunk-X5HWXQPU.js +113 -0
  160. package/vendor/hyperframes/dist/chunk-X7MTZ4T2.js +6 -0
  161. package/vendor/hyperframes/dist/chunk-XH4DSOS5.js +59 -0
  162. package/vendor/hyperframes/dist/chunk-XS4EJSKU.js +23 -0
  163. package/vendor/hyperframes/dist/chunk-XT5P4QMO.js +181 -0
  164. package/vendor/hyperframes/dist/chunk-XT7X6QCP.js +6 -0
  165. package/vendor/hyperframes/dist/chunk-XUHOIDKG.js +6 -0
  166. package/vendor/hyperframes/dist/chunk-XUXGIA7H.js +485 -0
  167. package/vendor/hyperframes/dist/chunk-XZABUQTX.js +113 -0
  168. package/vendor/hyperframes/dist/chunk-Y6W4DVPS.js +356 -0
  169. package/vendor/hyperframes/dist/chunk-YEIFI443.js +44 -0
  170. package/vendor/hyperframes/dist/chunk-YQZNILVH.js +375 -0
  171. package/vendor/hyperframes/dist/chunk-Z27A7NUB.js +65 -0
  172. package/vendor/hyperframes/dist/chunk-Z6B37SNM.js +3081 -0
  173. package/vendor/hyperframes/dist/chunk-ZJUKFZ2P.js +10954 -0
  174. package/vendor/hyperframes/dist/chunk-ZKDMAOFU.js +32 -0
  175. package/vendor/hyperframes/dist/chunk-ZMXUQLI2.js +17219 -0
  176. package/vendor/hyperframes/dist/chunk-ZTZ7NCJT.js +58 -0
  177. package/vendor/hyperframes/dist/chunk-ZTZA4UWZ.js +108 -0
  178. package/vendor/hyperframes/dist/clean-W57E5YQ3.js +293 -0
  179. package/vendor/hyperframes/dist/cli.js +495 -0
  180. package/vendor/hyperframes/dist/cloud-FFTJGZ24.js +70 -0
  181. package/vendor/hyperframes/dist/cloudrun-AJUTHUEA.js +763 -0
  182. package/vendor/hyperframes/dist/colors-HKWSZCGK.js +15 -0
  183. package/vendor/hyperframes/dist/commands/contrast-audit.browser.js +459 -0
  184. package/vendor/hyperframes/dist/commands/layout-audit.browser.js +2102 -0
  185. package/vendor/hyperframes/dist/commands/motion-sample.browser.js +74 -0
  186. package/vendor/hyperframes/dist/commands/motion-signature.browser.js +374 -0
  187. package/vendor/hyperframes/dist/compare-AYCTT55F.js +421 -0
  188. package/vendor/hyperframes/dist/compiler-QO36EXLS.js +121 -0
  189. package/vendor/hyperframes/dist/component-VFFR2O7T.js +176 -0
  190. package/vendor/hyperframes/dist/compositions-QTVN3U2A.js +228 -0
  191. package/vendor/hyperframes/dist/contactSheet-27SRU7A4.js +22 -0
  192. package/vendor/hyperframes/dist/delete-ZAKYCB7I.js +114 -0
  193. package/vendor/hyperframes/dist/deploy-MX76RZ36.js +101 -0
  194. package/vendor/hyperframes/dist/destroy-H2TZBYHH.js +42 -0
  195. package/vendor/hyperframes/dist/deterministicFonts-HAEMV4TM.js +50 -0
  196. package/vendor/hyperframes/dist/dist-EWXJGN63.js +129 -0
  197. package/vendor/hyperframes/dist/dist-FNNGCKFS.js +29 -0
  198. package/vendor/hyperframes/dist/dist-S3PJNPXQ.js +392 -0
  199. package/vendor/hyperframes/dist/docker/Dockerfile.render +65 -0
  200. package/vendor/hyperframes/dist/docs/compositions.md +67 -0
  201. package/vendor/hyperframes/dist/docs/data-attributes.md +27 -0
  202. package/vendor/hyperframes/dist/docs/examples.md +19 -0
  203. package/vendor/hyperframes/dist/docs/gsap.md +26 -0
  204. package/vendor/hyperframes/dist/docs/rendering.md +35 -0
  205. package/vendor/hyperframes/dist/docs/troubleshooting.md +29 -0
  206. package/vendor/hyperframes/dist/docs-QAPJEGLS.js +131 -0
  207. package/vendor/hyperframes/dist/doctor-AI7C3FON.js +67 -0
  208. package/vendor/hyperframes/dist/dom-IROKGVJI.js +14 -0
  209. package/vendor/hyperframes/dist/dotEnv-AECLXQSO.js +14 -0
  210. package/vendor/hyperframes/dist/events-7LALYNKZ.js +92 -0
  211. package/vendor/hyperframes/dist/events-FQY3HGKZ.js +88 -0
  212. package/vendor/hyperframes/dist/feedback-WCMDMSTK.js +472 -0
  213. package/vendor/hyperframes/dist/ffmpeg-QIUFEFTY.js +35 -0
  214. package/vendor/hyperframes/dist/figma-64WY462P.js +63 -0
  215. package/vendor/hyperframes/dist/fontData.generated-NXAOI4GH.js +13 -0
  216. package/vendor/hyperframes/dist/fontLocalizeCli.js +132 -0
  217. package/vendor/hyperframes/dist/get-FPOMJMZB.js +103 -0
  218. package/vendor/hyperframes/dist/gpuPolicy-2ZUZE5D6.js +38 -0
  219. package/vendor/hyperframes/dist/grade-compare-E2CKPST4.js +647 -0
  220. package/vendor/hyperframes/dist/gsapParser-DIYYX6JT.js +2846 -0
  221. package/vendor/hyperframes/dist/gsapParserAcorn-E3GEIRZB.js +28 -0
  222. package/vendor/hyperframes/dist/help-YRQIDDML.js +197 -0
  223. package/vendor/hyperframes/dist/history-PP5NDRV3.js +571 -0
  224. package/vendor/hyperframes/dist/hyperframe-runtime.js +1081 -0
  225. package/vendor/hyperframes/dist/hyperframe.manifest.json +22 -0
  226. package/vendor/hyperframes/dist/hyperframe.runtime.iife.js +1081 -0
  227. package/vendor/hyperframes/dist/hyperframes-player.global.js +474 -0
  228. package/vendor/hyperframes/dist/hyperframes-slideshow.global.js +149 -0
  229. package/vendor/hyperframes/dist/info-SEX3B7JL.js +153 -0
  230. package/vendor/hyperframes/dist/init-U3AKHO5B.js +1147 -0
  231. package/vendor/hyperframes/dist/inspect-Q3K6EDEK.js +97 -0
  232. package/vendor/hyperframes/dist/installer-K6O5WF44.js +37 -0
  233. package/vendor/hyperframes/dist/keyframes-DC64JCI3.js +2602 -0
  234. package/vendor/hyperframes/dist/lambda-D7UMN4DJ.js +451 -0
  235. package/vendor/hyperframes/dist/layout-XSPPDHOO.js +86 -0
  236. package/vendor/hyperframes/dist/lib-TPG2ZMAX.js +128 -0
  237. package/vendor/hyperframes/dist/lint-7DQZE7L3.js +164 -0
  238. package/vendor/hyperframes/dist/lintProject-OHBBM3DJ.js +27 -0
  239. package/vendor/hyperframes/dist/list-4K5MVDQX.js +162 -0
  240. package/vendor/hyperframes/dist/login-NTX4OWXL.js +377 -0
  241. package/vendor/hyperframes/dist/logout-Q654A3SI.js +100 -0
  242. package/vendor/hyperframes/dist/manager-67P2XFXQ.js +34 -0
  243. package/vendor/hyperframes/dist/manager-CT3D67CG.js +38 -0
  244. package/vendor/hyperframes/dist/manager-GFN75DM4.js +30 -0
  245. package/vendor/hyperframes/dist/media-treatment-5FYAOPNL.js +972 -0
  246. package/vendor/hyperframes/dist/media-use-4XXGABIL.js +113 -0
  247. package/vendor/hyperframes/dist/models-C4E4IWJD.js +137 -0
  248. package/vendor/hyperframes/dist/motionShot-S4MIGMT5.js +614 -0
  249. package/vendor/hyperframes/dist/normalize-O76AC4HE.js +333 -0
  250. package/vendor/hyperframes/dist/normalize-audio-CSFTXLXD.js +276 -0
  251. package/vendor/hyperframes/dist/open-2ZD6BHZG.js +115 -0
  252. package/vendor/hyperframes/dist/pipeline-TNGWUZQC.js +54 -0
  253. package/vendor/hyperframes/dist/play-CTMUXX6E.js +349 -0
  254. package/vendor/hyperframes/dist/policies-FSDZVS2E.js +292 -0
  255. package/vendor/hyperframes/dist/preflight-SMNV6RW2.js +45 -0
  256. package/vendor/hyperframes/dist/present-WQVHV5CR.js +350 -0
  257. package/vendor/hyperframes/dist/preview-JOJXTH75.js +1820 -0
  258. package/vendor/hyperframes/dist/producer-ECLEN5RP.js +13 -0
  259. package/vendor/hyperframes/dist/progress-FBIEEB7Y.js +73 -0
  260. package/vendor/hyperframes/dist/projectConfig-HYJMJ5BY.js +56 -0
  261. package/vendor/hyperframes/dist/publication-HQ5Y3KBM.js +29 -0
  262. package/vendor/hyperframes/dist/publish-VHDYQASC.js +430 -0
  263. package/vendor/hyperframes/dist/refresh-K24ETHMA.js +53 -0
  264. package/vendor/hyperframes/dist/remove-background-W2YX2NVH.js +253 -0
  265. package/vendor/hyperframes/dist/render-AO5VX3YI.js +177 -0
  266. package/vendor/hyperframes/dist/render-LNO62LEL.js +2367 -0
  267. package/vendor/hyperframes/dist/render-TTQI7TGN.js +796 -0
  268. package/vendor/hyperframes/dist/render-batch-YH7CTWNY.js +284 -0
  269. package/vendor/hyperframes/dist/renderCancellation-JPIHE47X.js +35 -0
  270. package/vendor/hyperframes/dist/renderSetupWorker.js +79 -0
  271. package/vendor/hyperframes/dist/resolver-IZ647GBZ.js +38 -0
  272. package/vendor/hyperframes/dist/runtimeVersion.js +18 -0
  273. package/vendor/hyperframes/dist/screenshotCapture-ECBTLCU6.js +179 -0
  274. package/vendor/hyperframes/dist/shaderTransitionWorker.js +44 -0
  275. package/vendor/hyperframes/dist/sherpa-KKLNW6U2.js +314 -0
  276. package/vendor/hyperframes/dist/sherpaWorker.js +77 -0
  277. package/vendor/hyperframes/dist/sites-TNVKZS73.js +52 -0
  278. package/vendor/hyperframes/dist/skill-ZHVLH7KX.js +15 -0
  279. package/vendor/hyperframes/dist/skills/hyperframes/SKILL.md +152 -0
  280. package/vendor/hyperframes/dist/skills/hyperframes/references/brief-contract.md +108 -0
  281. package/vendor/hyperframes/dist/skills/hyperframes/references/brief-format.md +72 -0
  282. package/vendor/hyperframes/dist/skills/hyperframes/references/capability-menu.md +47 -0
  283. package/vendor/hyperframes/dist/skills/hyperframes/references/frame-worker-core.md +80 -0
  284. package/vendor/hyperframes/dist/skills/hyperframes/references/intent-interview.md +73 -0
  285. package/vendor/hyperframes/dist/skills/hyperframes/references/pitch-round.md +40 -0
  286. package/vendor/hyperframes/dist/skills/hyperframes/references/plugin-installation.md +43 -0
  287. package/vendor/hyperframes/dist/skills/hyperframes/references/production-loop.md +26 -0
  288. package/vendor/hyperframes/dist/skills/hyperframes/references/review-loop.md +37 -0
  289. package/vendor/hyperframes/dist/skills/hyperframes/references/route-briefs.md +11 -0
  290. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/embedded-captions.md +11 -0
  291. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
  292. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/general-video.md +12 -0
  293. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/motion-graphics.md +11 -0
  294. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/music-to-video.md +12 -0
  295. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/pr-to-video.md +28 -0
  296. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/product-launch-video.md +13 -0
  297. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
  298. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/slideshow.md +11 -0
  299. package/vendor/hyperframes/dist/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
  300. package/vendor/hyperframes/dist/skills/hyperframes/references/script-format.md +52 -0
  301. package/vendor/hyperframes/dist/skills/hyperframes/references/skill-lifecycle.md +35 -0
  302. package/vendor/hyperframes/dist/skills/hyperframes/references/storyboard-format.md +99 -0
  303. package/vendor/hyperframes/dist/skills/hyperframes/references/subagent-dispatch.md +35 -0
  304. package/vendor/hyperframes/dist/skills/hyperframes/references/workflow-catalog.md +10 -0
  305. package/vendor/hyperframes/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +194 -0
  306. package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.mjs +88 -0
  307. package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.test.mjs +117 -0
  308. package/vendor/hyperframes/dist/skills/hyperframes-cli/SKILL.md +189 -0
  309. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/beats.md +19 -0
  310. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloud.md +163 -0
  311. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloudrun.md +62 -0
  312. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/compare-and-batch.md +105 -0
  313. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/doctor-browser.md +57 -0
  314. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/init-and-scaffold.md +74 -0
  315. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lambda.md +185 -0
  316. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +132 -0
  317. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/preview-render.md +193 -0
  318. package/vendor/hyperframes/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +134 -0
  319. package/vendor/hyperframes/dist/skills/media-use/SKILL.md +100 -0
  320. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/CREDITS.md +35 -0
  321. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/chime.mp3 +0 -0
  322. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click-soft.mp3 +0 -0
  323. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click.mp3 +0 -0
  324. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/error.mp3 +0 -0
  325. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-1.mp3 +0 -0
  326. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-2.mp3 +0 -0
  327. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-3.mp3 +0 -0
  328. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-1.mp3 +0 -0
  329. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-2.mp3 +0 -0
  330. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/key-press.mp3 +0 -0
  331. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/manifest.json +97 -0
  332. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/notification.mp3 +0 -0
  333. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/ping.mp3 +0 -0
  334. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/pop.mp3 +0 -0
  335. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/riser.mp3 +0 -0
  336. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/sparkle.mp3 +0 -0
  337. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/typing.mp3 +0 -0
  338. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-cinematic.mp3 +0 -0
  339. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-short.mp3 +0 -0
  340. package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh.mp3 +0 -0
  341. package/vendor/hyperframes/dist/skills/media-use/audio/references/bgm.md +76 -0
  342. package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/authoring.md +163 -0
  343. package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/motion.md +87 -0
  344. package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/transcript-handling.md +97 -0
  345. package/vendor/hyperframes/dist/skills/media-use/audio/references/remove-background.md +143 -0
  346. package/vendor/hyperframes/dist/skills/media-use/audio/references/requirements.md +29 -0
  347. package/vendor/hyperframes/dist/skills/media-use/audio/references/sfx.md +42 -0
  348. package/vendor/hyperframes/dist/skills/media-use/audio/references/transcribe.md +52 -0
  349. package/vendor/hyperframes/dist/skills/media-use/audio/references/tts-to-captions.md +35 -0
  350. package/vendor/hyperframes/dist/skills/media-use/audio/references/tts.md +260 -0
  351. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.mjs +311 -0
  352. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.test.mjs +159 -0
  353. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +131 -0
  354. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.mjs +122 -0
  355. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.test.mjs +38 -0
  356. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.mjs +98 -0
  357. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.test.mjs +233 -0
  358. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.mjs +39 -0
  359. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.test.mjs +136 -0
  360. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm-volume.mjs +4 -0
  361. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.mjs +257 -0
  362. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.test.mjs +74 -0
  363. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.mjs +14 -0
  364. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.test.mjs +41 -0
  365. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.mjs +43 -0
  366. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.py +52 -0
  367. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.test.mjs +86 -0
  368. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth_test.py +90 -0
  369. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.mjs +122 -0
  370. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.test.mjs +243 -0
  371. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.mjs +197 -0
  372. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +185 -0
  373. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.mjs +114 -0
  374. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.test.mjs +205 -0
  375. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.mjs +77 -0
  376. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.test.mjs +136 -0
  377. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.mjs +165 -0
  378. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.test.mjs +121 -0
  379. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.mjs +389 -0
  380. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.spawn.test.mjs +158 -0
  381. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.test.mjs +230 -0
  382. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lyria-recipe.py +136 -0
  383. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.mjs +175 -0
  384. package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.test.mjs +108 -0
  385. package/vendor/hyperframes/dist/skills/media-use/luts/README.md +28 -0
  386. package/vendor/hyperframes/dist/skills/media-use/luts/index.json +57 -0
  387. package/vendor/hyperframes/dist/skills/media-use/references/audio.md +20 -0
  388. package/vendor/hyperframes/dist/skills/media-use/references/grading.md +160 -0
  389. package/vendor/hyperframes/dist/skills/media-use/references/media-treatment-recipes.md +929 -0
  390. package/vendor/hyperframes/dist/skills/media-use/references/media-treatments.md +202 -0
  391. package/vendor/hyperframes/dist/skills/media-use/references/memory.md +37 -0
  392. package/vendor/hyperframes/dist/skills/media-use/references/meta.md +61 -0
  393. package/vendor/hyperframes/dist/skills/media-use/references/operations.md +327 -0
  394. package/vendor/hyperframes/dist/skills/media-use/references/resolve.md +150 -0
  395. package/vendor/hyperframes/dist/skills/media-use/references/setup-providers.md +80 -0
  396. package/vendor/hyperframes/dist/skills/media-use/references/telemetry-dashboard.md +49 -0
  397. package/vendor/hyperframes/dist/skills/media-use/scripts/audio-duck.mjs +113 -0
  398. package/vendor/hyperframes/dist/skills/media-use/scripts/compatibility.test.mjs +96 -0
  399. package/vendor/hyperframes/dist/skills/media-use/scripts/dither.mjs +328 -0
  400. package/vendor/hyperframes/dist/skills/media-use/scripts/dither.test.mjs +176 -0
  401. package/vendor/hyperframes/dist/skills/media-use/scripts/eval.mjs +369 -0
  402. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.mjs +128 -0
  403. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.test.mjs +95 -0
  404. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
  405. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
  406. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.mjs +119 -0
  407. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.test.mjs +139 -0
  408. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cache.mjs +148 -0
  409. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.mjs +91 -0
  410. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.test.mjs +155 -0
  411. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.mjs +161 -0
  412. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.test.mjs +34 -0
  413. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.d.mts +3 -0
  414. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.mjs +45 -0
  415. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.test.mjs +79 -0
  416. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/coverage.test.mjs +136 -0
  417. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.mjs +181 -0
  418. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.test.mjs +80 -0
  419. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.mjs +198 -0
  420. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.test.mjs +125 -0
  421. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.mjs +184 -0
  422. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.test.mjs +162 -0
  423. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.mjs +95 -0
  424. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.test.mjs +153 -0
  425. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.mjs +230 -0
  426. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.test.mjs +102 -0
  427. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ff-binaries.mjs +37 -0
  428. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.mjs +72 -0
  429. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.test.mjs +138 -0
  430. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.mjs +265 -0
  431. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.test.mjs +285 -0
  432. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.mjs +191 -0
  433. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.test.mjs +301 -0
  434. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.mjs +45 -0
  435. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.test.mjs +49 -0
  436. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.mjs +138 -0
  437. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.test.mjs +435 -0
  438. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/image-provider.mjs +44 -0
  439. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/index-gen.mjs +63 -0
  440. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-media-search.mjs +32 -0
  441. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.mjs +318 -0
  442. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.test.mjs +220 -0
  443. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.mjs +78 -0
  444. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.test.mjs +121 -0
  445. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.mjs +244 -0
  446. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.test.mjs +298 -0
  447. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.mjs +94 -0
  448. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.test.mjs +316 -0
  449. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.mjs +271 -0
  450. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.test.mjs +199 -0
  451. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.d.mts +19 -0
  452. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.mjs +279 -0
  453. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.test.mjs +397 -0
  454. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/match.mjs +47 -0
  455. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.mjs +85 -0
  456. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.test.mjs +197 -0
  457. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
  458. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
  459. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.d.mts +9 -0
  460. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.mjs +107 -0
  461. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.mjs +128 -0
  462. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.test.mjs +174 -0
  463. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.mjs +49 -0
  464. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.test.mjs +89 -0
  465. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.mjs +31 -0
  466. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.test.mjs +50 -0
  467. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.mjs +27 -0
  468. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.test.mjs +44 -0
  469. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.mjs +180 -0
  470. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +189 -0
  471. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.mjs +41 -0
  472. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.test.mjs +148 -0
  473. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/providers.mjs +5 -0
  474. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.mjs +367 -0
  475. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +367 -0
  476. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.mjs +212 -0
  477. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.test.mjs +262 -0
  478. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.mjs +24 -0
  479. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.test.mjs +32 -0
  480. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
  481. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.mjs +132 -0
  482. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.test.mjs +157 -0
  483. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.mjs +117 -0
  484. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.test.mjs +165 -0
  485. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/svg-sanitize.mjs +21 -0
  486. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.mjs +210 -0
  487. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.test.mjs +437 -0
  488. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/test-home.test.mjs +10 -0
  489. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.mjs +21 -0
  490. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.test.mjs +33 -0
  491. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.mjs +94 -0
  492. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.test.mjs +72 -0
  493. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.mjs +57 -0
  494. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.test.mjs +54 -0
  495. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.mjs +57 -0
  496. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.test.mjs +46 -0
  497. package/vendor/hyperframes/dist/skills/media-use/scripts/lib/words.mjs +18 -0
  498. package/vendor/hyperframes/dist/skills/media-use/scripts/prefs.mjs +70 -0
  499. package/vendor/hyperframes/dist/skills/media-use/scripts/recipe.mjs +103 -0
  500. package/vendor/hyperframes/dist/skills/media-use/scripts/resolve-plugin.test.mjs +62 -0
  501. package/vendor/hyperframes/dist/skills/media-use/scripts/resolve.mjs +1369 -0
  502. package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.mjs +194 -0
  503. package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.test.mjs +112 -0
  504. package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.mjs +270 -0
  505. package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.test.mjs +117 -0
  506. package/vendor/hyperframes/dist/skills-MJ2J4GEM.js +808 -0
  507. package/vendor/hyperframes/dist/skillsUpdateCheck-TKTYQN5R.js +26 -0
  508. package/vendor/hyperframes/dist/slideshow-EJ4IMY6P.js +24 -0
  509. package/vendor/hyperframes/dist/snapshot-KIVDUUMN.js +875 -0
  510. package/vendor/hyperframes/dist/src-6YQBJGWR.js +202 -0
  511. package/vendor/hyperframes/dist/src-PVYUYV3M.js +471 -0
  512. package/vendor/hyperframes/dist/state-KAXGHF77.js +26 -0
  513. package/vendor/hyperframes/dist/staticProjectServer-7EU666GS.js +49 -0
  514. package/vendor/hyperframes/dist/status-YM52BQ6S.js +311 -0
  515. package/vendor/hyperframes/dist/studio/assets/hyperframes-player-Cp8e_Zst.js +473 -0
  516. package/vendor/hyperframes/dist/studio/assets/index-BX3KHhGX.js +71 -0
  517. package/vendor/hyperframes/dist/studio/assets/index-CASEBNy2.js +1 -0
  518. package/vendor/hyperframes/dist/studio/assets/index-D11atkBt.css +1 -0
  519. package/vendor/hyperframes/dist/studio/assets/index-DMTt9nTf.js +531 -0
  520. package/vendor/hyperframes/dist/studio/assets/index-oE1pOdAy.js +399 -0
  521. package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js +948 -0
  522. package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js.map +1 -0
  523. package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js +938 -0
  524. package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js.map +1 -0
  525. package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js +190 -0
  526. package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js.map +1 -0
  527. package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js +1441 -0
  528. package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js.map +1 -0
  529. package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js +10 -0
  530. package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js.map +1 -0
  531. package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js +1103 -0
  532. package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js.map +1 -0
  533. package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js +47 -0
  534. package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js.map +1 -0
  535. package/vendor/hyperframes/dist/studio/favicon.svg +14 -0
  536. package/vendor/hyperframes/dist/studio/icons/timeline/audio.svg +7 -0
  537. package/vendor/hyperframes/dist/studio/icons/timeline/captions.svg +5 -0
  538. package/vendor/hyperframes/dist/studio/icons/timeline/composition.svg +12 -0
  539. package/vendor/hyperframes/dist/studio/icons/timeline/image.svg +18 -0
  540. package/vendor/hyperframes/dist/studio/icons/timeline/music.svg +10 -0
  541. package/vendor/hyperframes/dist/studio/icons/timeline/text.svg +3 -0
  542. package/vendor/hyperframes/dist/studio/index.css +165 -0
  543. package/vendor/hyperframes/dist/studio/index.css.map +1 -0
  544. package/vendor/hyperframes/dist/studio/index.d.ts +4296 -0
  545. package/vendor/hyperframes/dist/studio/index.html +23 -0
  546. package/vendor/hyperframes/dist/studio/index.js +99693 -0
  547. package/vendor/hyperframes/dist/studio/index.js.map +1 -0
  548. package/vendor/hyperframes/dist/studio/player.d.ts +30 -0
  549. package/vendor/hyperframes/dist/studio/player.js +10 -0
  550. package/vendor/hyperframes/dist/studio/player.js.map +1 -0
  551. package/vendor/hyperframes/dist/studio/styles/tailwind-preset.d.ts +39 -0
  552. package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js +50 -0
  553. package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js.map +1 -0
  554. package/vendor/hyperframes/dist/studio/styles.css +1 -0
  555. package/vendor/hyperframes/dist/studio/ui.d.ts +296 -0
  556. package/vendor/hyperframes/dist/studio/ui.js +66 -0
  557. package/vendor/hyperframes/dist/studio/ui.js.map +1 -0
  558. package/vendor/hyperframes/dist/studio-api-PNQZRPX5.js +136 -0
  559. package/vendor/hyperframes/dist/studioSelectionClient-IUUPKUHZ.js +25 -0
  560. package/vendor/hyperframes/dist/studioServer-UWRBPIOJ.js +1457 -0
  561. package/vendor/hyperframes/dist/synthesize-K62TIZWI.js +182 -0
  562. package/vendor/hyperframes/dist/system-EZYZNUFD.js +44 -0
  563. package/vendor/hyperframes/dist/telemetry-2YC4SGQU.js +144 -0
  564. package/vendor/hyperframes/dist/telemetry-QMYM4WME.js +95 -0
  565. package/vendor/hyperframes/dist/templates/_shared/AGENTS.md +107 -0
  566. package/vendor/hyperframes/dist/templates/_shared/CLAUDE.md +107 -0
  567. package/vendor/hyperframes/dist/templates/blank/index.html +55 -0
  568. package/vendor/hyperframes/dist/templates/from-file/index.html +75 -0
  569. package/vendor/hyperframes/dist/templates/warm-grain/compositions/captions.html +154 -0
  570. package/vendor/hyperframes/dist/templates/warm-grain/compositions/graphics.html +162 -0
  571. package/vendor/hyperframes/dist/templates/warm-grain/compositions/intro.html +87 -0
  572. package/vendor/hyperframes/dist/templates/warm-grain/index.html +264 -0
  573. package/vendor/hyperframes/dist/templates/warm-grain/registry-item.json +34 -0
  574. package/vendor/hyperframes/dist/timeline-77Z3BBQM.js +1377 -0
  575. package/vendor/hyperframes/dist/tokens-OBGTYE4Z.js +92 -0
  576. package/vendor/hyperframes/dist/transcribe-7NVFHCGA.js +387 -0
  577. package/vendor/hyperframes/dist/transcribe-BNSJRR4M.js +62 -0
  578. package/vendor/hyperframes/dist/tts-P3LIPIL5.js +234 -0
  579. package/vendor/hyperframes/dist/updateCheck-UDWIJ4ZQ.js +39 -0
  580. package/vendor/hyperframes/dist/upgrade-CT3CPO3E.js +231 -0
  581. package/vendor/hyperframes/dist/urlDownloader-H6WRI2UE.js +39 -0
  582. package/vendor/hyperframes/dist/usage-EC3KFUIJ.js +2139 -0
  583. package/vendor/hyperframes/dist/validate-65QDZJWZ.js +70 -0
  584. package/vendor/hyperframes/dist/video-FGSGKRSV.js +261 -0
  585. package/vendor/hyperframes/dist/workspaceBuildCheck-TOLGAI4T.js +133 -0
  586. package/vendor/hyperframes/package.json +80 -0
@@ -0,0 +1,796 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ parseEnumFlag,
9
+ parseIntFlag,
10
+ parseNumericFlag
11
+ } from "./chunk-RVCWIIZ7.js";
12
+ import {
13
+ colorStatus
14
+ } from "./chunk-U7CZBDMV.js";
15
+ import {
16
+ DEFAULT_MAX_WAIT_MS,
17
+ DEFAULT_POLL_INTERVAL_MS,
18
+ HyperframesApiError,
19
+ PollTimeoutError,
20
+ createCloudClient,
21
+ pollUntilTerminal,
22
+ reportApiError
23
+ } from "./chunk-Y6W4DVPS.js";
24
+ import {
25
+ downloadToFile
26
+ } from "./chunk-BXCMXMJQ.js";
27
+ import {
28
+ reportVariableIssues,
29
+ resolveVariablesArg,
30
+ validateVariablesAgainstProject
31
+ } from "./chunk-6CTIGJY7.js";
32
+ import {
33
+ buildPublishFileMap,
34
+ zipPublishFileMap
35
+ } from "./chunk-JH556Q42.js";
36
+ import "./chunk-ZTZ7NCJT.js";
37
+ import "./chunk-SHB5VDMH.js";
38
+ import "./chunk-I465DBM6.js";
39
+ import "./chunk-EOVYQ3IG.js";
40
+ import {
41
+ resolveProject
42
+ } from "./chunk-S3D6GE5W.js";
43
+ import {
44
+ errorBox,
45
+ formatBytes,
46
+ formatDuration
47
+ } from "./chunk-IHFUKJOR.js";
48
+ import "./chunk-PFCFR3KZ.js";
49
+ import "./chunk-JTHMTOMQ.js";
50
+ import "./chunk-EISRN4E6.js";
51
+ import "./chunk-VWG7OQKU.js";
52
+ import {
53
+ c
54
+ } from "./chunk-ZTZA4UWZ.js";
55
+ import "./chunk-IUZFXWSV.js";
56
+ import "./chunk-AMKC3AXA.js";
57
+ import {
58
+ defineCommand
59
+ } from "./chunk-S3S4TGEH.js";
60
+ import "./chunk-54HJ63Q2.js";
61
+ import {
62
+ failCommand
63
+ } from "./chunk-PBN6GBJE.js";
64
+ import "./chunk-K2FTXJYH.js";
65
+ import "./chunk-2YN64IN5.js";
66
+ import "./chunk-AVUUN2XD.js";
67
+ import "./chunk-DPVXBVLL.js";
68
+ import "./chunk-Z6B37SNM.js";
69
+ import "./chunk-HWKCIWQT.js";
70
+ import "./chunk-VC76R6W2.js";
71
+ import "./chunk-OFQWTKPW.js";
72
+ import "./chunk-TWWSYAKJ.js";
73
+ import "./chunk-ZJUKFZ2P.js";
74
+ import "./chunk-HBBJFK6I.js";
75
+ import "./chunk-PJ3HDUCY.js";
76
+ import "./chunk-TQFG7HTI.js";
77
+ import "./chunk-GK4AIFIH.js";
78
+ import "./chunk-2PSPARWP.js";
79
+ import {
80
+ withMeta
81
+ } from "./chunk-HW6OYASV.js";
82
+ import "./chunk-K4WIOZFP.js";
83
+ import "./chunk-XUXGIA7H.js";
84
+ import "./chunk-WERLJGIC.js";
85
+ import "./chunk-ISN5GRYI.js";
86
+ import "./chunk-FLWXXDNS.js";
87
+ import {
88
+ normalizeErrorMessage
89
+ } from "./chunk-KNU5COPB.js";
90
+ import "./chunk-3GXQPCJC.js";
91
+ import "./chunk-RQVDTPGD.js";
92
+ import "./chunk-PMRBLBUP.js";
93
+ import "./chunk-M2WBOQ2Q.js";
94
+
95
+ // src/cloud/detectAspectRatio.ts
96
+ import { readFileSync } from "fs";
97
+ var RATIO_TOLERANCE = 0.05;
98
+ var SUPPORTED_RATIOS = [
99
+ { value: "16:9", ratio: 16 / 9 },
100
+ { value: "9:16", ratio: 9 / 16 },
101
+ { value: "1:1", ratio: 1 }
102
+ ];
103
+ var ROOT_COMPOSITION_DIV_RE = /<div\b[^>]*?\bdata-composition-id\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)[^>]*>/i;
104
+ var DATA_WIDTH_RE = /\bdata-width\s*=\s*(?:"(\d+(?:\.\d+)?)"|'(\d+(?:\.\d+)?)'|(\d+(?:\.\d+)?))(?=\s|>|\/)/i;
105
+ var DATA_HEIGHT_RE = /\bdata-height\s*=\s*(?:"(\d+(?:\.\d+)?)"|'(\d+(?:\.\d+)?)'|(\d+(?:\.\d+)?))(?=\s|>|\/)/i;
106
+ function extractAttributeNumber(tag, re) {
107
+ const match = tag.match(re);
108
+ if (!match) return null;
109
+ const raw = match[1] ?? match[2] ?? match[3];
110
+ if (raw === void 0) return null;
111
+ const value = Number(raw);
112
+ return Number.isFinite(value) ? value : null;
113
+ }
114
+ function detectAspectRatioFromHtml(entryHtmlPath) {
115
+ let html;
116
+ try {
117
+ html = readFileSync(entryHtmlPath, "utf-8");
118
+ } catch (err) {
119
+ return { kind: "read-error", error: normalizeErrorMessage(err) };
120
+ }
121
+ return detectAspectRatioFromHtmlString(html);
122
+ }
123
+ function detectAspectRatioFromHtmlString(html) {
124
+ const tagMatch = html.match(ROOT_COMPOSITION_DIV_RE);
125
+ if (!tagMatch) return { kind: "no-root-div" };
126
+ const openTag = tagMatch[0];
127
+ const width = extractAttributeNumber(openTag, DATA_WIDTH_RE);
128
+ const height = extractAttributeNumber(openTag, DATA_HEIGHT_RE);
129
+ if (width === null || height === null) return { kind: "no-dims" };
130
+ if (width <= 0 || height <= 0) return { kind: "invalid-dims", width, height };
131
+ const ratio = width / height;
132
+ for (const candidate of SUPPORTED_RATIOS) {
133
+ if (Math.abs(ratio - candidate.ratio) <= RATIO_TOLERANCE) {
134
+ return { kind: "matched", aspectRatio: candidate.value, width, height };
135
+ }
136
+ }
137
+ return { kind: "no-match", width, height, ratio };
138
+ }
139
+
140
+ // src/cloud/upload.ts
141
+ import { createHash } from "crypto";
142
+ var COMPLETE_MAX_RETRIES = 5;
143
+ var COMPLETE_RETRY_BASE_MS = 500;
144
+ var CONTENT_TYPE_ZIP = "application/zip";
145
+ function sha256Hex(bytes) {
146
+ return createHash("sha256").update(bytes).digest("hex");
147
+ }
148
+ function sleep(ms) {
149
+ return new Promise((r) => setTimeout(r, ms));
150
+ }
151
+ function normalizeUploadHeaders(raw) {
152
+ const out = {};
153
+ for (const [k, v] of Object.entries(raw ?? {})) {
154
+ if (typeof v === "string") out[k] = v;
155
+ else if (typeof v === "number" || typeof v === "boolean") out[k] = String(v);
156
+ }
157
+ return out;
158
+ }
159
+ async function putBytesToPresignedUrl(fetchImpl, uploadUrl, uploadHeaders, bytes) {
160
+ const headers = {
161
+ "content-type": CONTENT_TYPE_ZIP,
162
+ ...normalizeUploadHeaders(uploadHeaders)
163
+ };
164
+ const res = await fetchImpl(uploadUrl, {
165
+ method: "PUT",
166
+ headers,
167
+ body: bytes
168
+ });
169
+ if (!res.ok) {
170
+ const detail = await res.text().catch(() => "");
171
+ throw new Error(
172
+ `Direct upload PUT failed: ${res.status} ${res.statusText}${detail ? ` \u2014 ${detail.slice(0, 300)}` : ""}`
173
+ );
174
+ }
175
+ }
176
+ async function completeWithRetry(client, asset_id, checksum_sha256) {
177
+ let lastErr;
178
+ for (let attempt = 0; attempt < COMPLETE_MAX_RETRIES; attempt++) {
179
+ try {
180
+ return await client.completeAssetUpload({
181
+ asset_id,
182
+ body: { checksum_sha256 }
183
+ });
184
+ } catch (err) {
185
+ const retryable = err instanceof HyperframesApiError && err.status === 409;
186
+ if (!retryable || attempt === COMPLETE_MAX_RETRIES - 1) {
187
+ throw err;
188
+ }
189
+ lastErr = err;
190
+ await sleep(COMPLETE_RETRY_BASE_MS * (attempt + 1));
191
+ }
192
+ }
193
+ throw lastErr ?? new Error("completeAssetUpload retries exhausted");
194
+ }
195
+ async function uploadZipViaDirectUpload(opts) {
196
+ const start = Date.now();
197
+ const { bytes, filename, idempotencyKey } = opts;
198
+ const size_bytes = bytes.byteLength;
199
+ const checksum_sha256 = sha256Hex(bytes);
200
+ const fetchImpl = opts.fetchImpl ?? fetch;
201
+ opts.onProgress?.({ phase: "initialize" });
202
+ const initialize = await opts.client.createAssetUpload({
203
+ body: { filename, content_type: CONTENT_TYPE_ZIP, size_bytes, checksum_sha256 },
204
+ idempotencyKey
205
+ });
206
+ opts.onProgress?.({ phase: "upload", percent: 0 });
207
+ await putBytesToPresignedUrl(fetchImpl, initialize.upload_url, initialize.upload_headers, bytes);
208
+ opts.onProgress?.({ phase: "upload", percent: 100 });
209
+ opts.onProgress?.({ phase: "complete" });
210
+ const completed = await completeWithRetry(opts.client, initialize.asset_id, checksum_sha256);
211
+ return {
212
+ asset_id: completed.asset_id,
213
+ size_bytes,
214
+ duration_ms: Date.now() - start
215
+ };
216
+ }
217
+
218
+ // src/commands/cloud/render.ts
219
+ import { isAbsolute, relative, resolve as resolvePath } from "path";
220
+ import { existsSync } from "fs";
221
+ var VALID_QUALITY = ["draft", "standard", "high"];
222
+ var VALID_FORMAT = ["mp4", "webm", "mov"];
223
+ var VALID_RESOLUTION = ["1080p", "4k"];
224
+ var VALID_ASPECT_RATIO = ["16:9", "9:16", "1:1"];
225
+ var DIRECT_UPLOAD_LIMIT_BYTES = 200 * 1024 * 1024;
226
+ var ARCHIVE_DIAGNOSTIC_THRESHOLD_BYTES = 150 * 1024 * 1024;
227
+ var LARGEST_FILE_COUNT = 10;
228
+ var FORMAT_EXT = { mp4: ".mp4", webm: ".webm", mov: ".mov" };
229
+ var examples = [
230
+ ["Render the current directory in the cloud", "hyperframes cloud render"],
231
+ ["Inspect archive size without uploading", "hyperframes cloud render --dry-run"],
232
+ [
233
+ "Pick a specific composition + output path",
234
+ "hyperframes cloud render . --composition compositions/intro.html -o ./renders/intro.mp4"
235
+ ],
236
+ ["Higher quality, 60fps", "hyperframes cloud render --quality high --fps 60"],
237
+ [
238
+ "Submit and exit; webhook fires when the render terminates",
239
+ "hyperframes cloud render --callback-url https://example.com/hook --no-wait"
240
+ ],
241
+ [
242
+ "Override variables (parametrized render)",
243
+ `hyperframes cloud render --variables '{"title":"Q4 Recap","theme":"dark"}'`
244
+ ],
245
+ ["Re-render an already-uploaded zip", "hyperframes cloud render --asset-id asst_abc123"]
246
+ ];
247
+ var render_default = defineCommand({
248
+ meta: { name: "render", description: "Render a HyperFrames composition in the cloud" },
249
+ args: {
250
+ dir: { type: "positional", required: false, description: "Project directory (default: .)" },
251
+ fps: { type: "string", description: "Frames per second (1-240). Default: 30." },
252
+ quality: { type: "string", description: "draft | standard | high (default: standard)" },
253
+ format: { type: "string", description: "mp4 | webm | mov (default: mp4)" },
254
+ resolution: {
255
+ type: "string",
256
+ description: "Resolution tier: 1080p | 4k (default: 1080p; 4k is billed at 1.5x)"
257
+ },
258
+ "aspect-ratio": {
259
+ type: "string",
260
+ description: "Aspect ratio: 16:9 | 9:16 | 1:1 (default: 16:9)"
261
+ },
262
+ composition: {
263
+ type: "string",
264
+ alias: "c",
265
+ description: "Entry HTML file inside the zip (default: index.html)"
266
+ },
267
+ variables: {
268
+ type: "string",
269
+ description: `Inline JSON object overriding data-composition-variables. Example: --variables '{"title":"X"}'`
270
+ },
271
+ "variables-file": {
272
+ type: "string",
273
+ description: "Path to a JSON file with variable values (alternative to --variables)"
274
+ },
275
+ "strict-variables": {
276
+ type: "boolean",
277
+ description: "Fail when --variables keys are undeclared or have the wrong type",
278
+ default: false
279
+ },
280
+ title: {
281
+ type: "string",
282
+ description: "Free-text label echoed back in detail responses"
283
+ },
284
+ "callback-url": {
285
+ type: "string",
286
+ description: "HTTPS webhook fired when the render terminates. Fires regardless of whether the CLI is still polling \u2014 combine with --no-wait for true fire-and-forget."
287
+ },
288
+ "callback-id": {
289
+ type: "string",
290
+ description: "Opaque tracking ID echoed in webhook payloads"
291
+ },
292
+ "asset-id": {
293
+ type: "string",
294
+ description: "Skip zip+upload and submit an already-uploaded composition. Mutually exclusive with --url and the project dir."
295
+ },
296
+ url: {
297
+ type: "string",
298
+ description: "Public HTTPS URL of a composition zip. Mutually exclusive with --asset-id and the project dir."
299
+ },
300
+ // Citty parses `--no-FOO` as `--FOO=false`. A flag literally named
301
+ // "no-wait" gets routed as `args.wait=false`, leaving
302
+ // `args["no-wait"]` undefined and the early-return for
303
+ // fire-and-forget mode unreachable. Named the arg `wait` so the
304
+ // user-facing `--no-wait` flag works via citty's negation; the
305
+ // run() body checks `if (!args.wait)`.
306
+ wait: {
307
+ type: "boolean",
308
+ description: "Poll until completion and download the video (default: true). Pass `--no-wait` for fire-and-forget \u2014 submits and exits with the render_id.",
309
+ default: true
310
+ },
311
+ output: {
312
+ type: "string",
313
+ alias: "o",
314
+ description: "Destination path for the downloaded video (default: renders/<render_id>.<ext>)"
315
+ },
316
+ "poll-interval": {
317
+ type: "string",
318
+ description: `Poll cadence in seconds (default: ${DEFAULT_POLL_INTERVAL_MS / 1e3})`
319
+ },
320
+ "max-wait": {
321
+ type: "string",
322
+ description: `Max poll duration in minutes (default: ${DEFAULT_MAX_WAIT_MS / 6e4})`
323
+ },
324
+ json: {
325
+ type: "boolean",
326
+ description: "Emit machine-readable JSON instead of human-friendly progress",
327
+ default: false
328
+ },
329
+ "dry-run": {
330
+ type: "boolean",
331
+ description: "Build and inspect the project zip without authenticating or uploading",
332
+ default: false
333
+ },
334
+ "idempotency-key": {
335
+ type: "string",
336
+ description: "Optional Idempotency-Key for safe retries (1-255 chars from [A-Za-z0-9_:.-])"
337
+ }
338
+ },
339
+ // fallow-ignore-next-line complexity
340
+ async run({ args }) {
341
+ const asJson = Boolean(args.json);
342
+ const fps = parseIntFlag(args.fps, { flag: "--fps", min: 1, max: 240 });
343
+ const quality = parseEnumFlag(args.quality, VALID_QUALITY, { flag: "--quality" });
344
+ const format = parseEnumFlag(args.format, VALID_FORMAT, { flag: "--format" });
345
+ const resolution = parseEnumFlag(args.resolution, VALID_RESOLUTION, {
346
+ flag: "--resolution"
347
+ });
348
+ const explicitAspectRatio = parseEnumFlag(args["aspect-ratio"], VALID_ASPECT_RATIO, {
349
+ flag: "--aspect-ratio"
350
+ });
351
+ const pollIntervalMs = parsePollIntervalMs(args["poll-interval"]);
352
+ const maxWaitMs = parseMaxWaitMs(args["max-wait"]);
353
+ validateIdempotencyKey(args["idempotency-key"]);
354
+ const project = resolveProjectInput({
355
+ dir: args.dir,
356
+ assetId: args["asset-id"],
357
+ url: args.url
358
+ });
359
+ validateDryRunSource(project, args["dry-run"] ?? false);
360
+ validateResolutionFormatCombo(resolution, format);
361
+ const aspectRatio = resolveAspectRatioForSubmit(
362
+ project,
363
+ args.composition,
364
+ explicitAspectRatio,
365
+ asJson
366
+ );
367
+ if (args["dry-run"]) {
368
+ if (project.kind !== "dir") throw new Error("Dry-run project must be a local directory");
369
+ reportDryRun(prepareLocalArchive(project, args.composition, asJson), asJson);
370
+ return;
371
+ }
372
+ const variables = resolveVariablesAndValidateIfLocal(
373
+ args.variables,
374
+ args["variables-file"],
375
+ args["strict-variables"] ?? false,
376
+ project
377
+ );
378
+ const client = await createCloudClient();
379
+ const preparedArchive = project.kind === "dir" ? prepareLocalArchive(project, args.composition, asJson) : void 0;
380
+ const upload = await maybeUploadProject(
381
+ client,
382
+ project,
383
+ preparedArchive,
384
+ asJson,
385
+ args["idempotency-key"]
386
+ );
387
+ const submitted = await submitRender(client, {
388
+ projectInput: upload.projectInput,
389
+ fps,
390
+ quality,
391
+ format,
392
+ resolution,
393
+ aspectRatio,
394
+ composition: args.composition,
395
+ variables,
396
+ title: args.title,
397
+ callbackUrl: args["callback-url"],
398
+ callbackId: args["callback-id"],
399
+ idempotencyKey: args["idempotency-key"]
400
+ });
401
+ const renderId = submitted.render_id;
402
+ if (!args.wait) {
403
+ if (asJson) {
404
+ console.log(
405
+ JSON.stringify(
406
+ withMeta({ render: { render_id: renderId, status: "queued" } }),
407
+ null,
408
+ 2
409
+ )
410
+ );
411
+ } else {
412
+ console.log("");
413
+ console.log(`${c.success("\u2713")} Submitted ${c.accent(renderId)}`);
414
+ console.log(c.dim(` Poll with: hyperframes cloud get ${renderId}`));
415
+ }
416
+ return;
417
+ }
418
+ if (!asJson) {
419
+ console.log("");
420
+ console.log(c.dim(` Polling ${renderId} every ${pollIntervalMs / 1e3}s \u2026`));
421
+ }
422
+ const detail = await pollWithProgress(client, renderId, asJson, {
423
+ intervalMs: pollIntervalMs,
424
+ maxWaitMs
425
+ });
426
+ if (detail.status === "failed") {
427
+ handleFailedRender(detail, asJson);
428
+ }
429
+ if (!detail.video_url) {
430
+ errorBox(
431
+ "Render completed but returned no video_url",
432
+ `render_id: ${renderId}. Try \`hyperframes cloud get ${renderId}\` to inspect raw fields.`
433
+ );
434
+ failCommand();
435
+ }
436
+ const outputPath = resolveOutputPath(args.output, renderId, detail.format);
437
+ const downloadResult = await streamVideo(detail.video_url, outputPath, asJson);
438
+ if (asJson) {
439
+ console.log(
440
+ JSON.stringify(
441
+ withMeta({
442
+ render: detail,
443
+ output_path: outputPath,
444
+ bytes_written: downloadResult.bytes
445
+ }),
446
+ null,
447
+ 2
448
+ )
449
+ );
450
+ }
451
+ }
452
+ });
453
+ function parsePollIntervalMs(raw) {
454
+ const n = parseNumericFlag(raw, { flag: "--poll-interval", min: 1 });
455
+ return n === void 0 ? DEFAULT_POLL_INTERVAL_MS : Math.round(n * 1e3);
456
+ }
457
+ function parseMaxWaitMs(raw) {
458
+ const n = parseNumericFlag(raw, { flag: "--max-wait", min: 1e-4 });
459
+ return n === void 0 ? DEFAULT_MAX_WAIT_MS : Math.round(n * 6e4);
460
+ }
461
+ var IDEMPOTENCY_KEY_RE = /^[A-Za-z0-9_:.-]{1,255}$/;
462
+ function validateIdempotencyKey(key) {
463
+ if (key === void 0) return;
464
+ if (!IDEMPOTENCY_KEY_RE.test(key)) {
465
+ errorBox("Invalid --idempotency-key", `Got "${key}". Must be 1-255 chars from [A-Za-z0-9_:.-]`);
466
+ failCommand();
467
+ }
468
+ }
469
+ function validateDryRunSource(source, dryRun) {
470
+ if (!dryRun || source.kind === "dir") return;
471
+ errorBox(
472
+ "Invalid --dry-run input",
473
+ "--dry-run inspects a local project directory and cannot be combined with --asset-id or --url."
474
+ );
475
+ failCommand();
476
+ }
477
+ function resolveProjectInput(opts) {
478
+ const explicit = {
479
+ dir: opts.dir !== void 0 && opts.dir !== "",
480
+ assetId: opts.assetId !== void 0 && opts.assetId !== "",
481
+ url: opts.url !== void 0 && opts.url !== ""
482
+ };
483
+ const count = Number(explicit.dir) + Number(explicit.assetId) + Number(explicit.url);
484
+ if (count > 1) {
485
+ errorBox("Conflicting inputs", "Pass only one of: project dir, --asset-id, --url.");
486
+ failCommand();
487
+ }
488
+ if (explicit.assetId) return { kind: "asset_id", assetId: opts.assetId };
489
+ if (explicit.url) return { kind: "url", url: opts.url };
490
+ return { kind: "dir", dir: opts.dir ?? "." };
491
+ }
492
+ function resolveAspectRatioForSubmit(project, compositionArg, explicit, asJson) {
493
+ if (project.kind !== "dir") {
494
+ if (!explicit) {
495
+ const reason = project.kind === "asset_id" ? "--asset-id" : "--url";
496
+ logDetection(asJson, `Auto-detect skipped (project is ${reason})`);
497
+ }
498
+ return explicit;
499
+ }
500
+ const dir = project.dir ?? ".";
501
+ const entryRelative = compositionArg ?? "index.html";
502
+ const entryPath = resolvePath(dir, entryRelative);
503
+ if (!existsSync(entryPath)) {
504
+ errorBox(
505
+ "Composition not found",
506
+ `Entry file "${entryRelative}" does not exist in ${dir}.`,
507
+ "Pass --composition with a path that exists inside the project, or omit it to use index.html."
508
+ );
509
+ failCommand();
510
+ }
511
+ const detection = detectAspectRatioFromHtml(entryPath);
512
+ if (explicit) {
513
+ const conflictDetail = detection.kind === "matched" && detection.aspectRatio !== explicit ? `${detection.width}\xD7${detection.height} \u2192 ${detection.aspectRatio}` : detection.kind === "no-match" ? `${detection.width}\xD7${detection.height}, ratio ${detection.ratio.toFixed(2)} \u2014 not a supported ratio` : void 0;
514
+ if (conflictDetail) {
515
+ errorBox(
516
+ "Aspect ratio mismatch",
517
+ `--aspect-ratio ${explicit} doesn't match the composition (${conflictDetail}).`,
518
+ "The renderer matches the composition's authored aspect ratio \u2014 it can't reshape it. Drop --aspect-ratio (it's auto-detected) or re-author the composition at the target ratio."
519
+ );
520
+ failCommand();
521
+ }
522
+ return explicit;
523
+ }
524
+ logDetection(asJson, summarizeDetection(detection, entryRelative));
525
+ return detection.kind === "matched" ? detection.aspectRatio : void 0;
526
+ }
527
+ function validateResolutionFormatCombo(resolution, format) {
528
+ if (resolution === "4k" && (format === "webm" || format === "mov")) {
529
+ errorBox(
530
+ "Unsupported combination",
531
+ `--resolution 4k cannot be combined with --format ${format}.`,
532
+ "The alpha (webm/mov) capture path doesn't support 4k supersampling. Render 4k as mp4, or render alpha at composition resolution."
533
+ );
534
+ failCommand();
535
+ }
536
+ }
537
+ var ASPECT_FALLBACK_HINT = "server will default aspect_ratio to 16:9. Pass --aspect-ratio to override.";
538
+ function logDetection(asJson, message) {
539
+ if (asJson) return;
540
+ const suffix = message.startsWith("Detected aspect ratio") ? "" : `; ${ASPECT_FALLBACK_HINT}`;
541
+ console.log(c.dim(` ${message}${suffix}`));
542
+ }
543
+ function summarizeDetection(detection, entryRelative) {
544
+ switch (detection.kind) {
545
+ case "matched":
546
+ return `Detected aspect ratio: ${detection.aspectRatio} (from ${entryRelative} dims ${detection.width}\xD7${detection.height})`;
547
+ case "no-root-div":
548
+ return `No <div data-composition-id> found in ${entryRelative}`;
549
+ case "no-dims":
550
+ return `${entryRelative} root composition has no data-width / data-height`;
551
+ case "invalid-dims":
552
+ return `${entryRelative} root has invalid dims (${detection.width}\xD7${detection.height})`;
553
+ case "no-match":
554
+ return `${entryRelative} dims ${detection.width}\xD7${detection.height} (ratio ${detection.ratio.toFixed(2)}) don't match 16:9, 9:16, or 1:1`;
555
+ case "read-error":
556
+ return `Couldn't read ${entryRelative} for aspect-ratio detection (${detection.error})`;
557
+ }
558
+ }
559
+ function resolveVariablesAndValidateIfLocal(inline, filePath, strict, source) {
560
+ const variables = resolveVariablesArg(inline, filePath);
561
+ if (!variables || Object.keys(variables).length === 0) return variables;
562
+ if (source.kind !== "dir") return variables;
563
+ const { indexPath } = resolveProject(source.dir);
564
+ const issues = validateVariablesAgainstProject(indexPath, variables);
565
+ reportVariableIssues(issues, { strict, quiet: false });
566
+ return variables;
567
+ }
568
+ function summarizeLargestFiles(fileMap) {
569
+ return [...fileMap.entries()].map(([path, content]) => ({ path, size_bytes: content.byteLength })).sort((a, b) => b.size_bytes - a.size_bytes || a.path.localeCompare(b.path)).slice(0, LARGEST_FILE_COUNT);
570
+ }
571
+ function prepareLocalArchive(source, composition, asJson) {
572
+ const project = resolveProject(source.dir);
573
+ if (!asJson) {
574
+ console.log("");
575
+ console.log(`${c.accent("\u25C6")} Zipping ${c.accent(project.name)}`);
576
+ }
577
+ try {
578
+ const fileMap = buildPublishFileMap(project.dir);
579
+ const entryPath = relative(
580
+ project.dir,
581
+ resolvePath(project.dir, composition ?? "index.html")
582
+ ).replaceAll("\\", "/");
583
+ if (!fileMap.has(entryPath)) {
584
+ throw new Error(
585
+ `Composition "${composition ?? "index.html"}" is excluded from the archive. Check .hyperframesignore.`
586
+ );
587
+ }
588
+ const archive = zipPublishFileMap(fileMap);
589
+ if (!asJson) {
590
+ console.log(
591
+ c.dim(` ${archive.fileCount} files \xB7 ${formatBytes(archive.buffer.byteLength)}`)
592
+ );
593
+ }
594
+ const prepared = { project, archive, largestFiles: summarizeLargestFiles(fileMap) };
595
+ if (!asJson && archive.buffer.byteLength >= ARCHIVE_DIAGNOSTIC_THRESHOLD_BYTES) {
596
+ reportLargestFiles(prepared);
597
+ }
598
+ return prepared;
599
+ } catch (err) {
600
+ const msg = normalizeErrorMessage(err);
601
+ errorBox("Zip failed", msg, "Check the project and .hyperframesignore for missing files.");
602
+ failCommand();
603
+ }
604
+ }
605
+ function reportLargestFiles(prepared) {
606
+ console.log(c.dim(" Largest included files:"));
607
+ for (const file of prepared.largestFiles) {
608
+ console.log(c.dim(` ${formatBytes(file.size_bytes).padStart(9)} ${file.path}`));
609
+ }
610
+ console.log(c.dim(" Exclude verified-unneeded files with .hyperframesignore."));
611
+ }
612
+ function reportDryRun(prepared, asJson) {
613
+ const sizeBytes = prepared.archive.buffer.byteLength;
614
+ if (asJson) {
615
+ console.log(
616
+ JSON.stringify(
617
+ withMeta({
618
+ archive: {
619
+ project: prepared.project.name,
620
+ file_count: prepared.archive.fileCount,
621
+ size_bytes: sizeBytes,
622
+ upload_limit_bytes: DIRECT_UPLOAD_LIMIT_BYTES,
623
+ exceeds_upload_limit: sizeBytes > DIRECT_UPLOAD_LIMIT_BYTES,
624
+ largest_files: prepared.largestFiles
625
+ }
626
+ }),
627
+ null,
628
+ 2
629
+ )
630
+ );
631
+ return;
632
+ }
633
+ if (sizeBytes < ARCHIVE_DIAGNOSTIC_THRESHOLD_BYTES) reportLargestFiles(prepared);
634
+ console.log("");
635
+ console.log(`${c.success("\u2713")} Dry run complete \u2014 nothing uploaded`);
636
+ if (sizeBytes > DIRECT_UPLOAD_LIMIT_BYTES) {
637
+ console.log(c.warn(` Archive exceeds the 200 MB direct-upload limit.`));
638
+ }
639
+ }
640
+ async function maybeUploadProject(client, source, preparedArchive, asJson, idempotencyKey) {
641
+ if (source.kind === "asset_id") {
642
+ return { projectInput: { type: "asset_id", asset_id: source.assetId } };
643
+ }
644
+ if (source.kind === "url") {
645
+ return { projectInput: { type: "url", url: source.url } };
646
+ }
647
+ if (!preparedArchive) throw new Error("Local project archive was not prepared");
648
+ const { project, archive } = preparedArchive;
649
+ if (!asJson) {
650
+ console.log("");
651
+ console.log(`${c.accent("\u25C6")} Uploading (direct-to-S3)`);
652
+ }
653
+ const uploadStart = Date.now();
654
+ let uploaded;
655
+ try {
656
+ uploaded = await uploadZipViaDirectUpload({
657
+ client,
658
+ bytes: archive.buffer,
659
+ filename: `${project.name}.zip`,
660
+ idempotencyKey,
661
+ onProgress: !asJson ? (ev) => {
662
+ if (ev.phase === "initialize") {
663
+ console.log(c.dim(` initializing\u2026`));
664
+ } else if (ev.phase === "upload" && ev.percent === 0) {
665
+ console.log(c.dim(` uploading to S3\u2026`));
666
+ } else if (ev.phase === "complete") {
667
+ console.log(c.dim(` finalizing\u2026`));
668
+ }
669
+ } : void 0
670
+ });
671
+ } catch (err) {
672
+ reportApiError("Upload failed", err);
673
+ }
674
+ if (!asJson) {
675
+ console.log(
676
+ c.dim(
677
+ ` asset_id: ${c.accent(uploaded.asset_id)} \xB7 ${formatDuration(Date.now() - uploadStart)}`
678
+ )
679
+ );
680
+ }
681
+ return { projectInput: { type: "asset_id", asset_id: uploaded.asset_id } };
682
+ }
683
+ async function submitRender(client, opts) {
684
+ const body = buildRenderBody(opts);
685
+ try {
686
+ return await client.createRender({ body, idempotencyKey: opts.idempotencyKey });
687
+ } catch (err) {
688
+ reportApiError("Submit failed", err);
689
+ }
690
+ }
691
+ function buildRenderBody(opts) {
692
+ const body = { project: opts.projectInput };
693
+ if (opts.fps !== void 0) body.fps = opts.fps;
694
+ if (opts.quality !== void 0) body.quality = opts.quality;
695
+ if (opts.format !== void 0) body.format = opts.format;
696
+ if (opts.resolution !== void 0) body.resolution = opts.resolution;
697
+ if (opts.aspectRatio !== void 0) body.aspect_ratio = opts.aspectRatio;
698
+ if (opts.composition !== void 0) body.composition = opts.composition;
699
+ if (opts.variables !== void 0) body.variables = opts.variables;
700
+ if (opts.title !== void 0) body.title = opts.title;
701
+ if (opts.callbackUrl !== void 0) body.callback_url = opts.callbackUrl;
702
+ if (opts.callbackId !== void 0) body.callback_id = opts.callbackId;
703
+ return body;
704
+ }
705
+ async function pollWithProgress(client, renderId, asJson, poll) {
706
+ const interactive = !asJson && process.stdout.isTTY === true;
707
+ let lastStatus = "";
708
+ try {
709
+ return await pollUntilTerminal(client, renderId, {
710
+ intervalMs: poll.intervalMs,
711
+ maxWaitMs: poll.maxWaitMs,
712
+ // fallow-ignore-next-line complexity
713
+ onTick: (detail, elapsedMs) => {
714
+ if (asJson) return;
715
+ if (interactive) {
716
+ if (detail.status === lastStatus) {
717
+ process.stdout.write(`\r\x1B[2K ${formatTickLine(detail, elapsedMs)}`);
718
+ } else {
719
+ if (lastStatus) process.stdout.write("\n");
720
+ process.stdout.write(` ${formatTickLine(detail, elapsedMs)}`);
721
+ lastStatus = detail.status;
722
+ }
723
+ } else if (detail.status !== lastStatus) {
724
+ console.log(` ${formatTickLine(detail, elapsedMs)}`);
725
+ lastStatus = detail.status;
726
+ }
727
+ }
728
+ });
729
+ } catch (err) {
730
+ if (!asJson && lastStatus && interactive) process.stdout.write("\n");
731
+ if (err instanceof PollTimeoutError) {
732
+ errorBox(
733
+ "Poll timed out",
734
+ err.message,
735
+ `The render may still complete. Resume with: hyperframes cloud get ${renderId}`
736
+ );
737
+ failCommand();
738
+ }
739
+ return reportApiError("API error during poll", err, {
740
+ suggestion: `The render may still be running. Resume with: hyperframes cloud get ${renderId}`
741
+ });
742
+ } finally {
743
+ if (!asJson && lastStatus && interactive) process.stdout.write("\n");
744
+ }
745
+ }
746
+ function formatTickLine(detail, elapsedMs) {
747
+ const status = colorStatus(detail.status);
748
+ return `${status} ${c.dim(formatDuration(elapsedMs))}`;
749
+ }
750
+ function handleFailedRender(detail, asJson) {
751
+ if (asJson) {
752
+ console.log(JSON.stringify(withMeta({ render: detail }), null, 2));
753
+ failCommand();
754
+ }
755
+ errorBox(
756
+ "Render failed",
757
+ detail.failure_message ?? "(no failure_message returned)",
758
+ `Inspect: hyperframes cloud get ${detail.render_id}`
759
+ );
760
+ failCommand();
761
+ }
762
+ function resolveOutputPath(output, renderId, format) {
763
+ if (output) {
764
+ return isAbsolute(output) ? output : resolvePath(process.cwd(), output);
765
+ }
766
+ const ext = FORMAT_EXT[format] ?? `.${format}`;
767
+ return resolvePath(process.cwd(), "renders", `${renderId}${ext}`);
768
+ }
769
+ async function streamVideo(url, destPath, asJson) {
770
+ if (!asJson) {
771
+ console.log("");
772
+ console.log(`${c.accent("\u25C6")} Downloading to ${c.accent(destPath)}`);
773
+ }
774
+ try {
775
+ const result = await downloadToFile(url, destPath);
776
+ if (!asJson) {
777
+ console.log(c.dim(` ${formatBytes(result.bytes)} written`));
778
+ }
779
+ return { bytes: result.bytes };
780
+ } catch (err) {
781
+ const message = normalizeErrorMessage(err);
782
+ errorBox(
783
+ "Download failed",
784
+ message,
785
+ "The presigned URL is short-lived; re-fetch with `hyperframes cloud get`."
786
+ );
787
+ failCommand();
788
+ }
789
+ }
790
+ export {
791
+ render_default as default,
792
+ examples,
793
+ resolveAspectRatioForSubmit,
794
+ validateDryRunSource,
795
+ validateResolutionFormatCombo
796
+ };