hyperframes 0.8.172 → 0.8.174

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 (185) hide show
  1. package/dist/{add-TJNZWO7P.js → add-XANMFNIP.js} +14 -15
  2. package/dist/{animatedGifPrep-K4WFG6KK.js → animatedGifPrep-OUQ4M2T3.js} +9 -11
  3. package/dist/api.js +19 -21
  4. package/dist/{asset-QN5J2P7H.js → asset-SVONSQ67.js} +2 -2
  5. package/dist/{assetCataloger-RLFDI5YD.js → assetCataloger-AG77T6SF.js} +9 -11
  6. package/dist/{audio-QJ4C3NMN.js → audio-DMQOTXKL.js} +16 -18
  7. package/dist/{auth-K7EHUGWE.js → auth-ED7SPBS6.js} +2 -2
  8. package/dist/{autoUpdate-76QXHQRT.js → autoUpdate-4QQYZOVT.js} +2 -2
  9. package/dist/{backgroundChecks-NMYRM5LV.js → backgroundChecks-2VT46P5S.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-RENYERF5.js → batchRender-KIYAPCTG.js} +4 -4
  12. package/dist/{beats-ZOR2HBAR.js → beats-OE7M5BEE.js} +6 -7
  13. package/dist/{benchmark-CY2VFIKL.js → benchmark-2ZQP2RNF.js} +11 -12
  14. package/dist/{browser-NPCKLUT7.js → browser-CSSJ3VWW.js} +5 -6
  15. package/dist/{bundleWithLocalizedFonts-FKH55KKW.js → bundleWithLocalizedFonts-ZUC4MLSO.js} +2 -2
  16. package/dist/{capture-TMSBTUYU.js → capture-3NXAHID3.js} +2 -2
  17. package/dist/{capture-IC2QJMMQ.js → capture-APNSW4ZT.js} +22 -18
  18. package/dist/{catalog-N7OCMRPT.js → catalog-CFDBIVSC.js} +15 -16
  19. package/dist/{catch-up-2MGK5I2D.js → catch-up-OUK522JT.js} +6 -7
  20. package/dist/{check-NU4GL2WC.js → check-PUDEOXGP.js} +37 -39
  21. package/dist/{checkBrowser-HRXAL4QD.js → checkBrowser-PMRJSTFJ.js} +34 -36
  22. package/dist/chunk-2CDBTQKS.js +113 -0
  23. package/dist/{chunk-C2F37AXS.js → chunk-2XSAYE7U.js} +2 -2
  24. package/dist/{chunk-3RM2ETQT.js → chunk-32GKETR7.js} +28 -2
  25. package/dist/{chunk-UIDRXHUY.js → chunk-3MDO2Q4F.js} +1 -1
  26. package/dist/{chunk-5B57KZJX.js → chunk-4PX47Z65.js} +1 -1
  27. package/dist/{chunk-IK3SOMZ4.js → chunk-4VTUDCHM.js} +19 -22
  28. package/dist/{chunk-Z6L3W5KZ.js → chunk-4WQUBVDO.js} +3 -3
  29. package/dist/{chunk-NLEDKGZT.js → chunk-55LJK3H2.js} +3 -3
  30. package/dist/{chunk-KRMOJUVL.js → chunk-6HF2WFPV.js} +5 -5
  31. package/dist/{chunk-EDUBJPGL.js → chunk-ALCCEHX2.js} +33 -7
  32. package/dist/{chunk-FXHGO3NH.js → chunk-APMA7XXB.js} +1 -1
  33. package/dist/{chunk-CDXC2UQ7.js → chunk-AR2SEGPZ.js} +1 -1
  34. package/dist/{chunk-K6SBDWUV.js → chunk-B23GBPCW.js} +2 -2
  35. package/dist/{chunk-YHECAUDC.js → chunk-CI7ZHFSV.js} +11 -11
  36. package/dist/chunk-CIWX5UKC.js +16 -0
  37. package/dist/{chunk-FYR6GKFN.js → chunk-CSMKMVGG.js} +6 -6
  38. package/dist/{chunk-TV2N4UIJ.js → chunk-D2YN4FNH.js} +2 -2
  39. package/dist/{chunk-CUDHVUIF.js → chunk-DRR3UMIY.js} +1 -1
  40. package/dist/{chunk-6K2N6WPO.js → chunk-EAR5LFOH.js} +42 -2
  41. package/dist/{chunk-MEEETF7G.js → chunk-EJZJ5AY7.js} +1 -1
  42. package/dist/{chunk-R73GAMUQ.js → chunk-G4UUEQDT.js} +1 -1
  43. package/dist/{chunk-G47TXPYN.js → chunk-GK2FIKIQ.js} +10 -8
  44. package/dist/{chunk-7DVH2IQQ.js → chunk-GXWV4FNV.js} +1 -1
  45. package/dist/{chunk-UNALPZL6.js → chunk-H2BPHBDY.js} +1 -1
  46. package/dist/{chunk-X3SCQP2A.js → chunk-HB2UP4V7.js} +1 -1
  47. package/dist/chunk-HIP62XAW.js +36 -0
  48. package/dist/{chunk-DQRZWV3B.js → chunk-HIYAJFRH.js} +1 -1
  49. package/dist/{chunk-4UR2EQSR.js → chunk-HZZYJV7K.js} +17 -19
  50. package/dist/{chunk-A2DMF2Q6.js → chunk-HZZZ6C6Z.js} +2 -2
  51. package/dist/{chunk-QQI7R2QL.js → chunk-JKPI7VLI.js} +1 -1
  52. package/dist/{chunk-4N2YVSXH.js → chunk-JL76Y45C.js} +7 -7
  53. package/dist/{chunk-EKKROA7V.js → chunk-LR72ON5B.js} +1 -1
  54. package/dist/{chunk-QVVANKN2.js → chunk-LUKY7253.js} +491 -133
  55. package/dist/{chunk-257IUNPQ.js → chunk-MXNPYP5F.js} +1 -1
  56. package/dist/{chunk-VFCKXTBB.js → chunk-NL5F3AD4.js} +27 -38
  57. package/dist/{chunk-S6JCFZVB.js → chunk-ONXTLGJB.js} +5 -5
  58. package/dist/{chunk-KRTCHLBA.js → chunk-PLYTTPVE.js} +2 -2
  59. package/dist/{chunk-R2P2SANE.js → chunk-QJCVK7CI.js} +4 -4
  60. package/dist/{chunk-HN5WVJZB.js → chunk-QRO2UBWS.js} +1 -1
  61. package/dist/{chunk-KOMXCNZX.js → chunk-QUK2IZKI.js} +1 -1
  62. package/dist/{chunk-2VR7HIPZ.js → chunk-RLBLLBLL.js} +2 -2
  63. package/dist/{chunk-PDFMNU6D.js → chunk-RMKL5FVH.js} +4 -17
  64. package/dist/{chunk-VQSSP7XG.js → chunk-RNKNDYBN.js} +1 -1
  65. package/dist/{chunk-BQYQV6JP.js → chunk-RYR3LTZR.js} +2 -2
  66. package/dist/{chunk-NYXHZOPD.js → chunk-RZ2FMZ5U.js} +1 -1
  67. package/dist/{chunk-DOV2QOFY.js → chunk-S5D4Q74P.js} +2 -2
  68. package/dist/{chunk-Z5ENX63S.js → chunk-SEHRMJTO.js} +13 -7
  69. package/dist/{chunk-XEJUMBIC.js → chunk-SEXAKOK3.js} +3 -3
  70. package/dist/{chunk-HZWXDKYB.js → chunk-SH43VDEF.js} +11 -15
  71. package/dist/{chunk-YAA3AOBA.js → chunk-SI76MFBF.js} +2 -2
  72. package/dist/{chunk-QWQ6GQTI.js → chunk-T6AGUTZJ.js} +2 -4
  73. package/dist/{chunk-ZY43P2M7.js → chunk-TI3HKGQC.js} +3 -3
  74. package/dist/{chunk-MFWQEG2W.js → chunk-UDJHYQSZ.js} +1 -1
  75. package/dist/{chunk-V5IZAL3H.js → chunk-UKAOWORD.js} +8 -8
  76. package/dist/chunk-UKJECUDK.js +3805 -0
  77. package/dist/{chunk-M235XUHL.js → chunk-UQLXFITA.js} +241 -6
  78. package/dist/{chunk-JYVGYKXG.js → chunk-W2LGJSEN.js} +73 -1
  79. package/dist/{chunk-UFAKRR5G.js → chunk-W3YVQ6VI.js} +12 -12
  80. package/dist/{chunk-FQP7TLRF.js → chunk-W4AECR7V.js} +1 -1
  81. package/dist/{chunk-AG2O2USE.js → chunk-X3BE2HX4.js} +3 -3
  82. package/dist/{chunk-TDPVEMBS.js → chunk-XFCLWWL3.js} +1 -1
  83. package/dist/{chunk-NZ5HOUJH.js → chunk-XVIFWEPR.js} +67 -33
  84. package/dist/{clean-JDODBRVL.js → clean-6SVCU47L.js} +18 -20
  85. package/dist/cli.js +53 -53
  86. package/dist/{cloud-YHJZ72XP.js → cloud-TIISRMZV.js} +4 -4
  87. package/dist/{cloudrun-E5EOHYTG.js → cloudrun-4TMBWELQ.js} +5 -5
  88. package/dist/{compare-VQQXHSE3.js → compare-YV2XTKYX.js} +28 -30
  89. package/dist/{compiler-I4GWSEK3.js → compiler-O5R3ZZDV.js} +5 -6
  90. package/dist/{component-WOSMKPL7.js → component-7LWSMRKZ.js} +3 -3
  91. package/dist/{compositions-WLJE5752.js → compositions-5VTSC4M3.js} +14 -16
  92. package/dist/{delete-PILRKH5C.js → delete-AV2SKLZW.js} +4 -4
  93. package/dist/{deploy-4MK3Y67M.js → deploy-NKWMPAMH.js} +19 -5
  94. package/dist/{destroy-GFQLTIY3.js → destroy-UKP522AE.js} +4 -2
  95. package/dist/{dist-7TYQROOE.js → dist-2FMTAVGL.js} +3 -3
  96. package/dist/{dist-SDXOTECD.js → dist-4FY5EEH5.js} +3 -3
  97. package/dist/{doctor-FNICQNSA.js → doctor-XOCYSEAZ.js} +14 -16
  98. package/dist/{events-5WNYSVPY.js → events-6QPRKX45.js} +4 -5
  99. package/dist/{events-YXPWFV5S.js → events-MAZUZI43.js} +5 -6
  100. package/dist/{feedback-KLA5RSSN.js → feedback-MGRILBMP.js} +10 -11
  101. package/dist/{ffmpeg-7BYARPLM.js → ffmpeg-YCULCUB2.js} +24 -4
  102. package/dist/{figma-PQIZI67M.js → figma-UMBACTCG.js} +3 -3
  103. package/dist/fontLocalizeCli.js +11 -13
  104. package/dist/{get-OBOWSUA7.js → get-LWEOLWYN.js} +4 -4
  105. package/dist/{gpuPolicy-HWH4OW6H.js → gpuPolicy-MCIQK5Z7.js} +9 -11
  106. package/dist/{grade-compare-5IOHWZX6.js → grade-compare-MZQOTX3F.js} +29 -31
  107. package/dist/{help-K4IK2N36.js → help-THPG2NRP.js} +1 -1
  108. package/dist/{history-AC5ZUFOX.js → history-2IQYTDU5.js} +8 -9
  109. package/dist/hyperframe-runtime.js +55 -55
  110. package/dist/hyperframe.manifest.json +1 -1
  111. package/dist/hyperframe.runtime.iife.js +55 -55
  112. package/dist/hyperframes-player.global.js +3 -3
  113. package/dist/{info-BD6555FQ.js → info-CXMADV6K.js} +10 -11
  114. package/dist/{init-KTNJH3QB.js → init-Y5GU454D.js} +34 -34
  115. package/dist/{inspect-PF2DWLRP.js → inspect-S7JDKEMJ.js} +29 -31
  116. package/dist/{installer-72NGZ5BM.js → installer-AY23RPEZ.js} +5 -5
  117. package/dist/{keyframes-P3GRO3LL.js → keyframes-FKYT6QAJ.js} +8 -9
  118. package/dist/{lambda-XRNX7HLH.js → lambda-7WMZGRH5.js} +16 -12
  119. package/dist/{layout-KN7SX3WH.js → layout-LL4GOS6G.js} +29 -31
  120. package/dist/{lint-TXBEZUA5.js → lint-2M7FY4ZT.js} +11 -12
  121. package/dist/{lintProject-65YGC4UB.js → lintProject-ARKJXDQF.js} +3 -3
  122. package/dist/{list-4YL3BA2G.js → list-SZBMUHBW.js} +4 -4
  123. package/dist/{login-JUI7PHHJ.js → login-QRACITGK.js} +4 -4
  124. package/dist/{manager-B6MVBM2E.js → manager-W2BTPAVT.js} +25 -3
  125. package/dist/{media-treatment-6DDWZLLE.js → media-treatment-E4VJETTT.js} +30 -22
  126. package/dist/{models-CLSFYHTD.js → models-AHO3MYE7.js} +13 -15
  127. package/dist/{motionShot-WMJSRE67.js → motionShot-LMMYPGPT.js} +21 -23
  128. package/dist/{normalize-audio-YZTHI75G.js → normalize-audio-RDWIWZOO.js} +6 -7
  129. package/dist/{open-VSJ3TPAB.js → open-WOKRHFDH.js} +31 -8
  130. package/dist/{parakeetRunner-YCZT3DG2.js → parakeetRunner-RY2KIE63.js} +16 -18
  131. package/dist/{pipeline-RV64A4MZ.js → pipeline-LEA32KLW.js} +11 -13
  132. package/dist/{play-CF6TJIQL.js → play-3S46XG66.js} +21 -23
  133. package/dist/{policies-DCSIM4AB.js → policies-5NTZOHJA.js} +2 -0
  134. package/dist/preflight-MCOFNWFQ.js +52 -0
  135. package/dist/{present-5XKI26BN.js → present-GR7F4CTI.js} +17 -19
  136. package/dist/{preview-RORZIRSN.js → preview-TKEAF3KR.js} +34 -25
  137. package/dist/{producer-K2H3YFX5.js → producer-BJ5SUPVD.js} +1 -1
  138. package/dist/{progress-5AM2MZ7V.js → progress-I37JB7R4.js} +1 -0
  139. package/dist/{projectConfig-Q2ECBQUG.js → projectConfig-YJBYWSNK.js} +7 -7
  140. package/dist/{publication-2V3WX4HW.js → publication-2HXIW4LS.js} +3 -3
  141. package/dist/{publish-7COI3FRD.js → publish-LHJFEKEI.js} +11 -11
  142. package/dist/{remove-background-QSOESZXW.js → remove-background-AQUUVAPD.js} +12 -14
  143. package/dist/{render-ACRKADG6.js → render-AOHXNGIM.js} +40 -38
  144. package/dist/{render-KHDJ2P4J.js → render-AXTGGHVZ.js} +9 -4
  145. package/dist/{render-3ZLZDN64.js → render-B5S7FLLS.js} +14 -15
  146. package/dist/{render-batch-OG3JHMDF.js → render-batch-DMQG3QWK.js} +4 -4
  147. package/dist/renderSetupWorker.js +3 -3
  148. package/dist/{resolver-ALLVWDQE.js → resolver-FV54X3T2.js} +5 -5
  149. package/dist/sam-IKPEJRRO.js +21 -0
  150. package/dist/{screenshotCapture-XAYELJK7.js → screenshotCapture-HXEZ3TNJ.js} +20 -3
  151. package/dist/{sherpa-QY3NGRLC.js → sherpa-RKURBTUM.js} +15 -17
  152. package/dist/skills/hyperframes/SKILL.md +42 -0
  153. package/dist/skills/hyperframes-cli/references/cloud.md +1 -1
  154. package/dist/skills/media-use/scripts/lib/recipe-store.mjs +5 -2
  155. package/dist/{skills-YIZYEARC.js → skills-YUXI4IRF.js} +11 -10
  156. package/dist/{skillsUpdateCheck-EXZOQQRS.js → skillsUpdateCheck-HK3GDYD6.js} +3 -3
  157. package/dist/{snapshot-3XMGHMRD.js → snapshot-D6Q52Z4X.js} +32 -34
  158. package/dist/{src-CGIRN4KP.js → src-DPR7JBU3.js} +10 -12
  159. package/dist/{src-RY4V2ZZT.js → src-MRYINZ62.js} +10 -10
  160. package/dist/{staticProjectServer-4E3ODA5P.js → staticProjectServer-RT7JATD2.js} +15 -16
  161. package/dist/{status-RGHSK3DJ.js → status-BV7QAUQD.js} +2 -3
  162. package/dist/studio/assets/{hyperframes-player-BDj9J28W.js → hyperframes-player-B4KfQdfl.js} +1 -1
  163. package/dist/studio/assets/{index--HWjGqrU.js → index-Bsc8xBh9.js} +1 -1
  164. package/dist/studio/assets/{index-DkQKsFxx.css → index-CESvLzz0.css} +1 -1
  165. package/dist/studio/assets/{index-CVxB8lqm.js → index-DGl_Zvb3.js} +128 -128
  166. package/dist/studio/index.html +2 -2
  167. package/dist/{studio-api-LTHBT45F.js → studio-api-NL2RMVB5.js} +9 -10
  168. package/dist/{studioServer-NDRRYB5V.js → studioServer-VL2GUVCR.js} +63 -56
  169. package/dist/{system-VRXC6S4A.js → system-7F3UEHQT.js} +2 -3
  170. package/dist/{telemetry-QBHPMHPC.js → telemetry-5PJWDFSZ.js} +5 -6
  171. package/dist/{timeline-J22LXNAI.js → timeline-OH35TN25.js} +124 -51
  172. package/dist/{tokens-EAPT2GUT.js → tokens-YISVK7W2.js} +2 -2
  173. package/dist/{transcribe-L5GHBNR6.js → transcribe-6KBSE76Q.js} +12 -14
  174. package/dist/{transcribe-6LCZK44H.js → transcribe-KRPN2FWA.js} +22 -24
  175. package/dist/{updateCheck-B3U7O3QS.js → updateCheck-QCZTFFSQ.js} +2 -2
  176. package/dist/{upgrade-UMJEDSYD.js → upgrade-DRFQISI6.js} +2 -2
  177. package/dist/{urlDownloader-SRL6J4NU.js → urlDownloader-CJDXTKMC.js} +8 -10
  178. package/dist/{validate-I3KHH5Z4.js → validate-BKY3FIJC.js} +23 -27
  179. package/dist/{video-HWLZYFUC.js → video-3UEJ57Q7.js} +9 -11
  180. package/package.json +1 -1
  181. package/dist/chunk-7KDQAD2W.js +0 -81
  182. package/dist/chunk-BXCMXMJQ.js +0 -73
  183. package/dist/chunk-KCF6GHJP.js +0 -250
  184. package/dist/chunk-Q2E3DQII.js +0 -3803
  185. package/dist/preflight-G5KP7ZKA.js +0 -32
@@ -4,9 +4,12 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ detectGpuEncoder
9
+ } from "./chunk-XVIFWEPR.js";
7
10
  import {
8
11
  detectWsl
9
- } from "./chunk-7KDQAD2W.js";
12
+ } from "./chunk-W2LGJSEN.js";
10
13
  import {
11
14
  runCancellableProcess
12
15
  } from "./chunk-D3ZWBHZP.js";
@@ -14,9 +17,6 @@ import {
14
17
  findFfBinary
15
18
  } from "./chunk-VAS6HQX3.js";
16
19
 
17
- // src/browser/ffmpeg.ts
18
- import { execFileSync as execFileSync2 } from "child_process";
19
-
20
20
  // src/browser/linuxDeps.ts
21
21
  import { execFileSync } from "child_process";
22
22
  import { existsSync, readFileSync } from "fs";
@@ -187,32 +187,30 @@ function chromeLaunchRemediation(errorMessage) {
187
187
 
188
188
  // src/browser/ffmpeg.ts
189
189
  var H264EncoderUnavailableError = class extends Error {
190
- constructor() {
191
- super("This FFmpeg build has neither libx264 nor VideoToolbox H.264 encoding.");
190
+ constructor(hevcEncoderAvailable = false) {
191
+ super("This FFmpeg build has no libx264 and no GPU H.264 encoder that works on this machine.");
192
+ this.hevcEncoderAvailable = hevcEncoderAvailable;
192
193
  this.name = "H264EncoderUnavailableError";
193
194
  }
195
+ hevcEncoderAvailable;
194
196
  };
195
- function resolveH264EncoderMode(ffmpegEncodersOutput, gpuRequested) {
196
- if (gpuRequested) return "gpu";
197
- if (/\blibx264\b/.test(ffmpegEncodersOutput)) return "software";
198
- if (/\bh264_videotoolbox\b/.test(ffmpegEncodersOutput)) return "gpu";
199
- throw new H264EncoderUnavailableError();
197
+ function resolveH264EncoderMode(ffmpegEncodersOutput, gpuRequested, usableGpu) {
198
+ if (gpuRequested && usableGpu) return "gpu";
199
+ if (hasLibx264(ffmpegEncodersOutput)) return "software";
200
+ if (usableGpu) return "gpu";
201
+ throw new H264EncoderUnavailableError(/\blibx265\b/.test(ffmpegEncodersOutput));
200
202
  }
201
- function detectH264EncoderMode(ffmpegPath, gpuRequested) {
202
- const encoders = execFileSync2(ffmpegPath, ["-hide_banner", "-encoders"], {
203
- encoding: "utf-8",
204
- stdio: ["ignore", "pipe", "pipe"],
205
- timeout: FIRST_LAUNCH_TIMEOUT_MS,
206
- windowsHide: true
207
- });
208
- return resolveH264EncoderMode(encoders, gpuRequested);
203
+ function hasLibx264(ffmpegEncodersOutput) {
204
+ return /\blibx264\b/.test(ffmpegEncodersOutput);
209
205
  }
210
- async function detectH264EncoderModeForRender(ffmpegPath, gpuRequested, signal) {
206
+ async function detectH264EncoderModeForRender(ffmpegPath, gpuRequested, signal, probeGpu = detectGpuEncoder) {
211
207
  const result = await runCancellableProcess(ffmpegPath, ["-hide_banner", "-encoders"], {
212
208
  signal,
213
209
  timeoutMs: FIRST_LAUNCH_TIMEOUT_MS
214
210
  });
215
- return resolveH264EncoderMode(result.stdout, gpuRequested);
211
+ const needsGpu = gpuRequested || !hasLibx264(result.stdout);
212
+ const usableGpu = needsGpu && await probeGpu() !== null;
213
+ return resolveH264EncoderMode(result.stdout, gpuRequested, usableGpu);
216
214
  }
217
215
  function findFFmpeg() {
218
216
  return findFfBinary("ffmpeg", { configuredMustExist: true });
@@ -257,7 +255,6 @@ export {
257
255
  chromeLaunchRemediation,
258
256
  H264EncoderUnavailableError,
259
257
  resolveH264EncoderMode,
260
- detectH264EncoderMode,
261
258
  detectH264EncoderModeForRender,
262
259
  findFFmpeg,
263
260
  findFFprobe,
@@ -14,13 +14,13 @@ import {
14
14
  findFFmpeg,
15
15
  findFFprobe,
16
16
  getFFmpegInstallHint
17
- } from "./chunk-IK3SOMZ4.js";
17
+ } from "./chunk-4VTUDCHM.js";
18
18
  import {
19
19
  DEFAULT_VP9_CPU_USED,
20
20
  SDR_RGB_TO_BT709_FILTER,
21
21
  SDR_RGB_TO_TAGGED_BT709_FILTER,
22
22
  renderProvenanceArgs
23
- } from "./chunk-NZ5HOUJH.js";
23
+ } from "./chunk-XVIFWEPR.js";
24
24
 
25
25
  // src/background-removal/pipeline.ts
26
26
  import { spawn } from "child_process";
@@ -270,7 +270,7 @@ function inferInputKind(inputPath) {
270
270
  }
271
271
  async function probeMedia(inputPath) {
272
272
  const isImage = inferInputKind(inputPath) === "image";
273
- const engine = await import("./src-RY4V2ZZT.js");
273
+ const engine = await import("./src-MRYINZ62.js");
274
274
  const meta = await engine.extractMediaMetadata(inputPath);
275
275
  if (isImage) {
276
276
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadToFile
9
- } from "./chunk-BXCMXMJQ.js";
9
+ } from "./chunk-2CDBTQKS.js";
10
10
  import {
11
11
  CACHE_DIR,
12
12
  PINNED_PACKAGES,
@@ -21,10 +21,10 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-ZY43P2M7.js";
24
+ } from "./chunk-TI3HKGQC.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-CDXC2UQ7.js";
27
+ } from "./chunk-AR2SEGPZ.js";
28
28
  import {
29
29
  PARAKEET_MODEL_LABEL,
30
30
  SHERPA_ERROR_PREFIX,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  readCompositionFps
9
- } from "./chunk-7DVH2IQQ.js";
9
+ } from "./chunk-GXWV4FNV.js";
10
10
  import {
11
11
  findSyncPartner,
12
12
  readLinkTiming,
@@ -18,7 +18,7 @@ import {
18
18
  extractMediaMetadata,
19
19
  resolveReferencedDuration,
20
20
  resolveReferencedStart
21
- } from "./chunk-NZ5HOUJH.js";
21
+ } from "./chunk-XVIFWEPR.js";
22
22
  import {
23
23
  byStart,
24
24
  compositionOriginSeconds,
@@ -27,14 +27,14 @@ import {
27
27
  hostInPointSeconds,
28
28
  parseFpsWithDefault,
29
29
  resolveMediaStartSeconds
30
- } from "./chunk-PDFMNU6D.js";
30
+ } from "./chunk-RMKL5FVH.js";
31
31
  import {
32
32
  HF_AUDIO_AUTOMATION_ATTR,
33
33
  HF_AUDIO_FX_ATTR,
34
34
  parseAudioFxChain,
35
35
  parseAutomation,
36
36
  resolveAutomation
37
- } from "./chunk-Q2E3DQII.js";
37
+ } from "./chunk-UKJECUDK.js";
38
38
  import {
39
39
  isSubCompositionHost,
40
40
  topLevelElements,
@@ -45,7 +45,7 @@ import {
45
45
  } from "./chunk-6BNTGNGD.js";
46
46
  import {
47
47
  parseNumeric
48
- } from "./chunk-3RM2ETQT.js";
48
+ } from "./chunk-32GKETR7.js";
49
49
  import {
50
50
  readMediaOffsetSeconds,
51
51
  readPlaybackRate,
@@ -10,10 +10,16 @@ import {
10
10
  readSeen,
11
11
  writeRecord
12
12
  } from "./chunk-DCAI5DBR.js";
13
+ import {
14
+ createProjectConfig
15
+ } from "./chunk-UDJHYQSZ.js";
16
+ import {
17
+ isHyperframesProject
18
+ } from "./chunk-RMKL5FVH.js";
13
19
 
14
20
  // src/utils/desktopApp.ts
15
21
  import { spawn, spawnSync } from "child_process";
16
- import { existsSync, readFileSync } from "fs";
22
+ import { existsSync, readdirSync, readFileSync } from "fs";
17
23
  import { homedir } from "os";
18
24
  import { basename, isAbsolute, join, relative, win32 } from "path";
19
25
  var DESKTOP_BUNDLE_IDS = ["dev.hyperframes.desktop", "dev.hyperframes.desktop.canary"];
@@ -28,6 +34,7 @@ var desktopDownloadUrl = (platform = process.platform) => DOWNLOADS[platform] ??
28
34
  var downloadHint = (url) => `Keep editing by chatting with Framey in the HyperFrames desktop app \u2192 ${url}`;
29
35
  var HANDOFF_READY = process.platform === "darwin";
30
36
  var AGENT_HANDOFF_FILE = join(".hyperframes", "agent-handoff.json");
37
+ var DESKTOP_CTA_RECORD = "desktop-cta.json";
31
38
  function agentSession(env = process.env) {
32
39
  if (env.CLAUDE_CODE_SESSION_ID)
33
40
  return { engine: "claude", sessionId: env.CLAUDE_CODE_SESSION_ID };
@@ -90,6 +97,16 @@ function leaveHandoff(dir, session) {
90
97
  addCatchUpNote(dir);
91
98
  return session;
92
99
  }
100
+ function markBareIndexAsProject(dir) {
101
+ try {
102
+ if (existsSync(join(dir, "index.html")) && !isHyperframesProject(readdirSync(dir)))
103
+ createProjectConfig(dir);
104
+ } catch (error) {
105
+ console.warn(
106
+ `\u25C7 Couldn't add hyperframes.json to ${dir}, so the app may not open it: ${error}`
107
+ );
108
+ }
109
+ }
93
110
  function openInDesktop(dir, {
94
111
  ready = HANDOFF_READY,
95
112
  platform = process.platform,
@@ -97,6 +114,7 @@ function openInDesktop(dir, {
97
114
  launch = launchApp,
98
115
  installed = () => desktopInstalled({ platform }),
99
116
  env = process.env,
117
+ cta,
100
118
  ...where
101
119
  } = {}) {
102
120
  const notOpened = (reason) => ({
@@ -104,12 +122,16 @@ function openInDesktop(dir, {
104
122
  reason,
105
123
  downloadUrl: desktopDownloadUrl(platform) ?? STUDIO_PAGE
106
124
  });
107
- const opened = (canary) => ({
108
- opened: true,
109
- app: canary ? "HyperFrames Canary" : "the HyperFrames desktop app",
110
- handedOver: leaveHandoff(dir, agentSession(env))
111
- });
125
+ const opened = (canary) => {
126
+ if (cta) writeRecord(dir, DESKTOP_CTA_RECORD, JSON.stringify({ cta, at: Date.now() }));
127
+ return {
128
+ opened: true,
129
+ app: canary ? "HyperFrames Canary" : "the HyperFrames desktop app",
130
+ handedOver: leaveHandoff(dir, agentSession(env))
131
+ };
132
+ };
112
133
  if (!ready) return notOpened("handoff-unavailable");
134
+ markBareIndexAsProject(dir);
113
135
  if (platform === "darwin") {
114
136
  const bundleId = DESKTOP_BUNDLE_IDS.find((id) => open(id, dir));
115
137
  if (!bundleId) return notOpened(installed() ? "open-failed" : "not-installed");
@@ -137,13 +159,16 @@ function desktopInstalled({
137
159
  return true;
138
160
  return DESKTOP_BUNDLE_IDS.some(spotlight);
139
161
  }
162
+ function insideHostApp(env = process.env) {
163
+ return Boolean(env.HYPERFRAMES_DESKTOP_PROJECT);
164
+ }
140
165
  function desktopHint(dir, {
141
166
  env = process.env,
142
167
  ready = HANDOFF_READY,
143
168
  installed,
144
169
  platform = process.platform
145
170
  } = {}) {
146
- if (env.HYPERFRAMES_DESKTOP_PROJECT) return null;
171
+ if (insideHostApp(env)) return null;
147
172
  if (ready && (installed ?? desktopInstalled({ platform, env })))
148
173
  return `Keep editing by chatting with Framey in the desktop app: ${openCommandFor(dir)}`;
149
174
  const url = desktopDownloadUrl(platform);
@@ -156,5 +181,6 @@ export {
156
181
  HANDOFF_READY,
157
182
  openInDesktop,
158
183
  desktopInstalled,
184
+ insideHostApp,
159
185
  desktopHint
160
186
  };
@@ -9,7 +9,7 @@ import {
9
9
  formatPreviewProxyBox,
10
10
  hdrToSdrToneMapFilter,
11
11
  parseFirstFrameColour
12
- } from "./chunk-PDFMNU6D.js";
12
+ } from "./chunk-RMKL5FVH.js";
13
13
  import {
14
14
  decodeAuthoredAttribute,
15
15
  scanHtmlOpeningTags
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-NZ5HOUJH.js";
9
+ } from "./chunk-XVIFWEPR.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-VWG7OQKU.js";
10
10
  import {
11
11
  getSystemMeta
12
- } from "./chunk-QWQ6GQTI.js";
12
+ } from "./chunk-T6AGUTZJ.js";
13
13
  import {
14
14
  getInvocationId
15
15
  } from "./chunk-54HJ63Q2.js";
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-XUXGIA7H.js";
30
30
  import {
31
31
  VERSION
32
- } from "./chunk-YAA3AOBA.js";
32
+ } from "./chunk-SI76MFBF.js";
33
33
  import {
34
34
  CANARIES,
35
35
  canaryEnvVar,
@@ -19,7 +19,7 @@ import {
19
19
  splitElementInHtml,
20
20
  unwrapElementsFromHtml,
21
21
  wrapElementsInHtml
22
- } from "./chunk-R2P2SANE.js";
22
+ } from "./chunk-QJCVK7CI.js";
23
23
  import {
24
24
  MEDIA_LINK_ATTR,
25
25
  relinkSplitHalves
@@ -54,7 +54,7 @@ import {
54
54
  scanProjectMediaCodecMap,
55
55
  shouldPrewarmProxy,
56
56
  waitForProxy
57
- } from "./chunk-FXHGO3NH.js";
57
+ } from "./chunk-APMA7XXB.js";
58
58
  import {
59
59
  HistoryBusyError,
60
60
  MAX_WINDOW_IDLE_MS,
@@ -102,12 +102,10 @@ import {
102
102
  replaceFileAtomically
103
103
  } from "./chunk-EOVYQ3IG.js";
104
104
  import {
105
- addScenePartsManifest
106
- } from "./chunk-M235XUHL.js";
107
- import {
105
+ addScenePartsManifest,
108
106
  ensureHfIds,
109
107
  stampHfIdsInPlace
110
- } from "./chunk-KCF6GHJP.js";
108
+ } from "./chunk-UQLXFITA.js";
111
109
  import {
112
110
  PREVIEW_PROXY_BOX_PARAM,
113
111
  formatPreviewProxyBox,
@@ -115,9 +113,8 @@ import {
115
113
  gsapCdnDist,
116
114
  motionPathPluginUrl,
117
115
  parseFps,
118
- parsePreviewProxyBox,
119
- sameInstant
120
- } from "./chunk-PDFMNU6D.js";
116
+ parsePreviewProxyBox
117
+ } from "./chunk-RMKL5FVH.js";
121
118
  import {
122
119
  AFTER_FONTS_SCRIPT_TYPE,
123
120
  RUNTIME_BOOTSTRAP_ATTR,
@@ -131,7 +128,7 @@ import {
131
128
  resolveRateSpec,
132
129
  sourceTimeAt,
133
130
  stripEmbeddedRuntimeScripts
134
- } from "./chunk-Q2E3DQII.js";
131
+ } from "./chunk-UKJECUDK.js";
135
132
  import {
136
133
  HTML_ATTRIBUTE_ENTITIES,
137
134
  MagicString,
@@ -156,6 +153,9 @@ import {
156
153
  FFPROBE_PATH_ENV,
157
154
  findFfBinary
158
155
  } from "./chunk-VAS6HQX3.js";
156
+ import {
157
+ sameInstant
158
+ } from "./chunk-32GKETR7.js";
159
159
  import {
160
160
  decodeCssEscapes,
161
161
  decodeWellFormedEscapes,
@@ -5497,7 +5497,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
5497
5497
  let block = extractGsapScriptBlock(html);
5498
5498
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
5499
5499
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
5500
- const { GSAP_CDN } = await import("./dist-SDXOTECD.js");
5500
+ const { GSAP_CDN } = await import("./dist-4FY5EEH5.js");
5501
5501
  const bootstrap = [
5502
5502
  `<script src="${GSAP_CDN}"></script>`,
5503
5503
  "<script>",
@@ -0,0 +1,16 @@
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
+
8
+ // src/utils/copyDir.ts
9
+ import { cpSync } from "fs";
10
+ function copyDirSync(src, dest, options = {}) {
11
+ cpSync(src, dest, { ...options, recursive: true, filter: () => true });
12
+ }
13
+
14
+ export {
15
+ copyDirSync
16
+ };
@@ -16,13 +16,13 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-A2DMF2Q6.js";
19
+ } from "./chunk-HZZZ6C6Z.js";
20
20
  import {
21
21
  getAvailableMemoryMb,
22
22
  getFreeDiskMb,
23
23
  getShmSizeMb,
24
24
  getSystemMeta
25
- } from "./chunk-QWQ6GQTI.js";
25
+ } from "./chunk-T6AGUTZJ.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -32,21 +32,21 @@ import {
32
32
  import {
33
33
  getUpdateMeta,
34
34
  withMeta
35
- } from "./chunk-QQI7R2QL.js";
35
+ } from "./chunk-JKPI7VLI.js";
36
36
  import {
37
37
  CONFIG_PATH,
38
38
  withFileLock
39
39
  } from "./chunk-XUXGIA7H.js";
40
40
  import {
41
41
  VERSION
42
- } from "./chunk-YAA3AOBA.js";
42
+ } from "./chunk-SI76MFBF.js";
43
43
  import {
44
44
  OPTIONAL_PACKAGES,
45
45
  installedOptionalPackageVersion
46
46
  } from "./chunk-3DKN5WKL.js";
47
47
  import {
48
48
  resolveExtractCacheDir
49
- } from "./chunk-NZ5HOUJH.js";
49
+ } from "./chunk-XVIFWEPR.js";
50
50
  import {
51
51
  normalizeErrorMessage
52
52
  } from "./chunk-KNU5COPB.js";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-B6MVBM2E.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-W2BTPAVT.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -8,10 +8,10 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-K6SBDWUV.js";
11
+ } from "./chunk-B23GBPCW.js";
12
12
  import {
13
13
  getPowerState
14
- } from "./chunk-QWQ6GQTI.js";
14
+ } from "./chunk-T6AGUTZJ.js";
15
15
  import {
16
16
  CliRuntimeError
17
17
  } from "./chunk-PBN6GBJE.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  shouldTrack
9
- } from "./chunk-K6SBDWUV.js";
9
+ } from "./chunk-B23GBPCW.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-BRHI7EIA.js";
14
14
  import {
15
15
  resolveCaptureBrowserGpuMode
16
- } from "./chunk-C2F37AXS.js";
16
+ } from "./chunk-2XSAYE7U.js";
17
17
  import {
18
18
  isNavigationTimeoutError,
19
19
  withRemainingBudget
@@ -237,6 +237,8 @@ async function navigateForCapture(page, url, totalTimeoutMs) {
237
237
  };
238
238
  }
239
239
  var PUPPETEER_LAUNCH_DEFAULT_TIMEOUT_MS = 3e4;
240
+ var PAGE_LOAD_BLOCKING_TYPES = /* @__PURE__ */ new Set(["Document", "Script", "Stylesheet"]);
241
+ var NAMED_BLOCKING_REQUESTS = 3;
240
242
  var SENT_OR_ANSWERED_WITHOUT_NETWORK = [
241
243
  "Network.requestWillBeSentExtraInfo",
242
244
  "Network.responseReceived"
@@ -246,6 +248,7 @@ async function gotoWhenSent(page, url, timeoutMs, coldChromeFirstRequestTimeoutM
246
248
  try {
247
249
  await cdp.send("Network.enable");
248
250
  const sent = documentRequestSent(cdp);
251
+ const unfinished = unfinishedPageLoadRequests(cdp);
249
252
  const navigation = page.goto(url, { waitUntil: "domcontentloaded", timeout: 0 });
250
253
  const navigationAwaitedBelow = navigation.catch(() => void 0);
251
254
  await withRemainingBudget(
@@ -260,7 +263,7 @@ async function gotoWhenSent(page, url, timeoutMs, coldChromeFirstRequestTimeoutM
260
263
  navigation,
261
264
  timeoutMs,
262
265
  "loading the page",
263
- () => new TimeoutError(`Navigation timeout of ${timeoutMs} ms exceeded`)
266
+ () => new TimeoutError(pageLoadTimeoutMessage(timeoutMs, url, unfinished()))
264
267
  );
265
268
  } finally {
266
269
  await cdp.detach().catch(() => void 0);
@@ -285,6 +288,43 @@ function documentRequestSent(cdp) {
285
288
  }
286
289
  });
287
290
  }
291
+ function unfinishedPageLoadRequests(cdp) {
292
+ const unfinished = /* @__PURE__ */ new Map();
293
+ cdp.on("Network.requestWillBeSent", ({ requestId, request, type }) => {
294
+ if (type && PAGE_LOAD_BLOCKING_TYPES.has(type)) unfinished.set(requestId, request.url);
295
+ });
296
+ for (const event of ["Network.loadingFinished", "Network.loadingFailed"]) {
297
+ cdp.on(event, ({ requestId }) => unfinished.delete(requestId));
298
+ }
299
+ return () => [...unfinished.values()];
300
+ }
301
+ function urlWithoutSecrets(raw) {
302
+ try {
303
+ const url = new URL(raw);
304
+ if (url.protocol !== "http:" && url.protocol !== "https:") return `${url.protocol}\u2026`;
305
+ return `${url.origin}${url.pathname}${url.search ? "?\u2026" : ""}`;
306
+ } catch {
307
+ return "(unreadable URL)";
308
+ }
309
+ }
310
+ function originOf(raw) {
311
+ try {
312
+ return new URL(raw).origin;
313
+ } catch {
314
+ return null;
315
+ }
316
+ }
317
+ function pageLoadTimeoutMessage(timeoutMs, pageUrl, waitingOn) {
318
+ const exceeded = `Navigation timeout of ${timeoutMs} ms exceeded`;
319
+ if (waitingOn.length === 0) return exceeded;
320
+ const named = waitingOn.slice(0, NAMED_BLOCKING_REQUESTS).map(urlWithoutSecrets).join(", ");
321
+ const unnamed = waitingOn.length - NAMED_BLOCKING_REQUESTS;
322
+ const more = unnamed > 0 ? ` and ${unnamed} more` : "";
323
+ const pageOrigin = new URL(pageUrl).origin;
324
+ const fromAnotherServer = waitingOn.some((request) => originOf(request) !== pageOrigin);
325
+ const advice = fromAnotherServer ? " A <script> or stylesheet from another server holds the page until it arrives; serve it from the project instead." : "";
326
+ return `${exceeded} while the page was still loading ${named}${more}.${advice}`;
327
+ }
288
328
 
289
329
  export {
290
330
  BrowserCleanupError,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-NZ5HOUJH.js";
17
+ } from "./chunk-XVIFWEPR.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  withOwner
9
- } from "./chunk-FQP7TLRF.js";
9
+ } from "./chunk-W4AECR7V.js";
10
10
  import {
11
11
  HistoryBusyError,
12
12
  beginArtifactCapture
@@ -16,6 +16,9 @@ import {
16
16
  resolveLocalAssetCandidates,
17
17
  resolveProjectRelativeSrc
18
18
  } from "./chunk-6BNTGNGD.js";
19
+ import {
20
+ findFfBinary
21
+ } from "./chunk-VAS6HQX3.js";
19
22
  import {
20
23
  COMPOSITION_VARIABLE_TYPES,
21
24
  FONT_ALIAS_KEYS,
@@ -27,15 +30,14 @@ import {
27
30
  resolveAliasDisplayName
28
31
  } from "./chunk-OYLO6TYK.js";
29
32
  import {
30
- findFfBinary
31
- } from "./chunk-VAS6HQX3.js";
32
- import {
33
+ COLOR_GRADING_SOURCE_TAGS,
33
34
  COMPOSITION_ATTRIBUTES,
34
35
  checkSubCompositionUsability,
35
36
  parseNumeric,
36
37
  readClipTiming,
38
+ spansOverlap,
37
39
  validateColorGradingContract
38
- } from "./chunk-3RM2ETQT.js";
40
+ } from "./chunk-32GKETR7.js";
39
41
  import {
40
42
  readAuthoredDurationSeconds,
41
43
  readDataDurationSeconds,
@@ -5766,11 +5768,11 @@ var mediaRules = [
5766
5768
  snippet: truncateSnippet(tag.raw)
5767
5769
  });
5768
5770
  };
5769
- if (tag.name !== "video" && tag.name !== "img") {
5771
+ if (!COLOR_GRADING_SOURCE_TAGS.includes(tag.name)) {
5770
5772
  report(
5771
5773
  "color_grading_non_media",
5772
- `data-color-grading on <${tag.name}> has no effect. The shader runtime only grades real <video> and <img> elements.`,
5773
- "Move the grading attribute to the real <video> or <img> media element. Do not attach it to a wrapper or CSS background."
5774
+ `data-color-grading on <${tag.name}> has no effect. The shader runtime only grades real <video>, <img> and <canvas> elements.`,
5775
+ "Move the grading attribute to the real <video>, <img> or <canvas> element. Do not attach it to a wrapper or CSS background."
5774
5776
  );
5775
5777
  continue;
5776
5778
  }
@@ -10988,7 +10990,7 @@ function lintDuplicateAudioTracks(htmlSources) {
10988
10990
  const a = tracks[i];
10989
10991
  const b = tracks[j];
10990
10992
  if (a.trackIndex !== b.trackIndex) continue;
10991
- if (a.start < b.end && b.start < a.end) {
10993
+ if (spansOverlap(a.start, a.end, b.start, b.end)) {
10992
10994
  findings.push({
10993
10995
  code: "duplicate_audio_track",
10994
10996
  severity: "warning",
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-PDFMNU6D.js";
13
+ } from "./chunk-RMKL5FVH.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-PDFMNU6D.js";
30
+ } from "./chunk-RMKL5FVH.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-PO2SDVQA.js";
10
10
  import {
11
11
  findFFmpeg
12
- } from "./chunk-IK3SOMZ4.js";
12
+ } from "./chunk-4VTUDCHM.js";
13
13
  import {
14
14
  stoppableExecFile
15
15
  } from "./chunk-HU2SPFNG.js";