hyperframes 0.8.155 → 0.8.156

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 (156) hide show
  1. package/dist/{add-QHRTHQDD.js → add-U35DO2JR.js} +13 -13
  2. package/dist/{animatedGifPrep-KYVKRWHT.js → animatedGifPrep-MRGFHBVF.js} +6 -6
  3. package/dist/api.js +14 -14
  4. package/dist/{asset-LBQA2IUJ.js → asset-HS4Q6LS2.js} +2 -2
  5. package/dist/{assetCataloger-Y3OELLLW.js → assetCataloger-SRTQYA6J.js} +2 -2
  6. package/dist/{auth-3MMX5MLV.js → auth-HS6GAILF.js} +2 -2
  7. package/dist/{autoUpdate-6EMWLUKO.js → autoUpdate-MRQ4ULBI.js} +2 -2
  8. package/dist/{backgroundChecks-3VL65XVE.js → backgroundChecks-K2ZMA43S.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-6TD4XSIP.js → batchRender-CMVCRSWP.js} +3 -3
  11. package/dist/{beats-NOHE5FA5.js → beats-JYECNCTZ.js} +12 -12
  12. package/dist/{benchmark-7EFNYNYH.js → benchmark-JGMKJSPN.js} +10 -10
  13. package/dist/{browser-IZ2DJGGN.js → browser-63WITJVS.js} +5 -5
  14. package/dist/{bundleWithLocalizedFonts-YVGLQ72Z.js → bundleWithLocalizedFonts-5SLYBFXL.js} +2 -2
  15. package/dist/{capture-YJEM42PR.js → capture-7MFOIE4K.js} +9 -9
  16. package/dist/{capture-HHK4GA4X.js → capture-T6QSEGKM.js} +2 -2
  17. package/dist/{catalog-GXGFKOX7.js → catalog-KVE5KJJT.js} +13 -13
  18. package/dist/{catch-up-L6E26OPV.js → catch-up-E3WYWSDY.js} +6 -6
  19. package/dist/{check-HSTEN7PX.js → check-QRP5WCP2.js} +32 -32
  20. package/dist/{checkBrowser-547BWZG6.js → checkBrowser-5XFA6PXF.js} +29 -29
  21. package/dist/{chunk-V6UUZGP6.js → chunk-2K5YII2L.js} +1 -1
  22. package/dist/{chunk-ZDEEHQ2Y.js → chunk-3THJEW7G.js} +1 -1
  23. package/dist/{chunk-TA5AUF2J.js → chunk-444O62RL.js} +1 -1
  24. package/dist/{chunk-B4WWDPNF.js → chunk-56AEM2EL.js} +16 -8
  25. package/dist/{chunk-QWQ6GQTI.js → chunk-7FFGZC2X.js} +1 -1
  26. package/dist/{chunk-RTI536FR.js → chunk-7K3CHJS3.js} +9 -9
  27. package/dist/{chunk-PVGDU7SE.js → chunk-7U27WUMQ.js} +1 -1
  28. package/dist/{chunk-O5S54BVW.js → chunk-C7WALYAY.js} +1 -1
  29. package/dist/{chunk-5GZLD7OW.js → chunk-COBIO7VC.js} +1 -1
  30. package/dist/{chunk-BADLIO5R.js → chunk-DDK6E66K.js} +1 -1
  31. package/dist/{chunk-PCBCTD7M.js → chunk-DDSQBREC.js} +2 -2
  32. package/dist/{chunk-GQ73YXKD.js → chunk-DRNTIYT3.js} +3 -3
  33. package/dist/{chunk-WQMTHPTK.js → chunk-DSX7R5M7.js} +1 -1
  34. package/dist/{chunk-HGAOO43L.js → chunk-FIL6QPZT.js} +2 -2
  35. package/dist/{chunk-4OMHV7P2.js → chunk-GVJ4LG62.js} +2 -2
  36. package/dist/{chunk-AVGGHUVK.js → chunk-HBKKW3NL.js} +6 -6
  37. package/dist/{chunk-AF6Y56VA.js → chunk-HG6H2ICP.js} +2 -2
  38. package/dist/{chunk-GD5MYXEK.js → chunk-HVQQN4NG.js} +1 -1
  39. package/dist/{chunk-ECFNYTEM.js → chunk-IOBKVP27.js} +1 -1
  40. package/dist/{chunk-2Q2KQRG7.js → chunk-JJERZGVE.js} +1 -1
  41. package/dist/{chunk-PXOFFSO3.js → chunk-JKCKXGIC.js} +1 -1
  42. package/dist/{chunk-HXU4DWOZ.js → chunk-KMSS5TOQ.js} +1 -1
  43. package/dist/{chunk-PCXEFXRK.js → chunk-LJHF4SKT.js} +2 -2
  44. package/dist/{chunk-XQYLUY2F.js → chunk-LZ2PZIVS.js} +1 -1
  45. package/dist/{chunk-6UMBAJRU.js → chunk-M4CRDGC4.js} +1 -1
  46. package/dist/{chunk-BEM57QP3.js → chunk-MBE4SEL7.js} +5 -5
  47. package/dist/{chunk-DM2D67MP.js → chunk-NV2JPSI4.js} +1 -1
  48. package/dist/{chunk-7KDQAD2W.js → chunk-OBXWIVYN.js} +11 -5
  49. package/dist/{chunk-GV7I3ZSQ.js → chunk-OE4WEQMH.js} +1 -1
  50. package/dist/{chunk-4U66LIUS.js → chunk-OOCONATR.js} +3 -3
  51. package/dist/{chunk-YYMJEQ4D.js → chunk-Q7FDYQR4.js} +1 -1
  52. package/dist/{chunk-SQHWDFTV.js → chunk-QJEHLWM4.js} +1 -1
  53. package/dist/{chunk-D5VMPDTH.js → chunk-QOP5D3UM.js} +2 -2
  54. package/dist/{chunk-HAKVKAUQ.js → chunk-RXTEP3NB.js} +2 -2
  55. package/dist/{chunk-M2IEAI7L.js → chunk-SCMNFRL5.js} +9 -9
  56. package/dist/{chunk-KEGTYA7V.js → chunk-SCOXM5LP.js} +1 -1
  57. package/dist/{chunk-RB6RHOSF.js → chunk-SCXATNSP.js} +3 -3
  58. package/dist/{chunk-TXWPPBIW.js → chunk-SNMMFFKZ.js} +1 -1
  59. package/dist/{chunk-Q3BS3MN5.js → chunk-SO44ETGW.js} +2 -2
  60. package/dist/{chunk-BSMBAP7O.js → chunk-TLUGPEW4.js} +5 -5
  61. package/dist/{chunk-UNO7QJAV.js → chunk-VCCOO2TO.js} +5 -5
  62. package/dist/{chunk-PSDTKP6K.js → chunk-VK5JRYJL.js} +6 -6
  63. package/dist/{chunk-P5CMYIC6.js → chunk-VPOEKLZL.js} +1 -1
  64. package/dist/{chunk-45FUWHHV.js → chunk-VY23BB2D.js} +2 -2
  65. package/dist/{chunk-KS4JPMVV.js → chunk-WLYSVHZE.js} +2 -2
  66. package/dist/{chunk-PFERJHKB.js → chunk-XXTOOXZ7.js} +2 -2
  67. package/dist/{chunk-GC36GZHM.js → chunk-YGLM2DHX.js} +1 -1
  68. package/dist/{chunk-2XEBNYG5.js → chunk-YLSSI4XB.js} +1 -1
  69. package/dist/{chunk-RSNBNSKZ.js → chunk-YNFJWJHW.js} +7 -7
  70. package/dist/{chunk-TLC4GYT5.js → chunk-YUTUYCGK.js} +117 -196
  71. package/dist/{chunk-6ENZIL42.js → chunk-YZEHYWOH.js} +1 -1
  72. package/dist/{clean-J3IRHNY5.js → clean-4HTCYML6.js} +15 -15
  73. package/dist/cli.js +52 -52
  74. package/dist/{cloud-TMV666ML.js → cloud-HFBG33UU.js} +4 -4
  75. package/dist/{cloudrun-OUGI5NN4.js → cloudrun-QK56WQY3.js} +3 -3
  76. package/dist/{compare-UXT7YJAD.js → compare-4RYN3LLC.js} +24 -24
  77. package/dist/{compiler-WHUQZITN.js → compiler-JPA25IUF.js} +2 -2
  78. package/dist/{component-OEWAQBRI.js → component-7ARXR4KZ.js} +3 -3
  79. package/dist/{compositions-J5UAUORI.js → compositions-DNBHEIGP.js} +11 -11
  80. package/dist/{delete-RIWTBVNH.js → delete-4XYV72EU.js} +2 -2
  81. package/dist/{dist-NUSNSGME.js → dist-SKUIM4QJ.js} +2 -2
  82. package/dist/{doctor-L4LKY2ZO.js → doctor-5PHSH7IK.js} +11 -11
  83. package/dist/{events-7O35RPKC.js → events-FOGRN2KV.js} +4 -4
  84. package/dist/{events-CRYKZ3VN.js → events-GQCOQY5E.js} +5 -5
  85. package/dist/{feedback-WL5ILVT2.js → feedback-6T6ZJOTM.js} +8 -8
  86. package/dist/{ffmpeg-2ROTISBL.js → ffmpeg-VJXXLKI6.js} +2 -2
  87. package/dist/{figma-Y36QOXGR.js → figma-PZLGUS6C.js} +3 -3
  88. package/dist/fontLocalizeCli.js +8 -8
  89. package/dist/{get-BKAU2UKN.js → get-XUNYSY2Z.js} +2 -2
  90. package/dist/{gpuPolicy-5AGAE6DM.js → gpuPolicy-SWCZJRZR.js} +6 -6
  91. package/dist/{grade-compare-6F5QLGGK.js → grade-compare-S27N2NRU.js} +25 -25
  92. package/dist/{help-VMH6Q3TP.js → help-4HZ75YVH.js} +1 -1
  93. package/dist/{history-WJI7NN5U.js → history-NENOG3BT.js} +8 -8
  94. package/dist/hyperframe-runtime.js +35 -35
  95. package/dist/hyperframe.manifest.json +1 -1
  96. package/dist/hyperframe.runtime.iife.js +35 -35
  97. package/dist/hyperframes-player.global.js +1 -1
  98. package/dist/{info-ZPGZJKYK.js → info-IDEUAYJZ.js} +9 -9
  99. package/dist/{init-FH3HAGUA.js → init-KWGZEC7F.js} +27 -27
  100. package/dist/{inspect-MIO35XDA.js → inspect-3WLT3EHZ.js} +25 -25
  101. package/dist/{installer-QCHUXV6E.js → installer-I3SLBB7G.js} +4 -4
  102. package/dist/{keyframes-HL66NSCA.js → keyframes-7HPN5DKO.js} +8 -8
  103. package/dist/{lambda-Q5FTNY4J.js → lambda-MJH6U52V.js} +4 -4
  104. package/dist/{layout-HLA3MBNJ.js → layout-ZEW4RZRP.js} +25 -25
  105. package/dist/{lint-BL4JKGPG.js → lint-3TNKI4PK.js} +8 -8
  106. package/dist/{list-34AMRBCS.js → list-BJR2IXU4.js} +2 -2
  107. package/dist/{login-EL5DFM34.js → login-EA27W5T2.js} +4 -4
  108. package/dist/{manager-JNJE54OQ.js → manager-3EUU5UX6.js} +3 -3
  109. package/dist/{media-treatment-UWR4OOHW.js → media-treatment-3JZFCG6I.js} +11 -11
  110. package/dist/{models-2E6AGL43.js → models-IRFIJOIW.js} +10 -10
  111. package/dist/{motionShot-JBH6JWB4.js → motionShot-S4M7QSW3.js} +12 -12
  112. package/dist/{normalize-audio-ZZ3O7VDF.js → normalize-audio-IOY3NRHJ.js} +6 -6
  113. package/dist/{open-QN7XTS6J.js → open-SCBC3NF5.js} +6 -6
  114. package/dist/{parakeetRunner-NUZTNYYF.js → parakeetRunner-FGTIYDG7.js} +11 -11
  115. package/dist/{pipeline-RUEI6IIO.js → pipeline-JEFEWIZ3.js} +7 -7
  116. package/dist/{play-2Y6KCFV3.js → play-4TCSBDHO.js} +18 -18
  117. package/dist/{preflight-JS4P5HFR.js → preflight-OIHM57E7.js} +4 -4
  118. package/dist/{present-J2UUEQWF.js → present-S6UBG5VI.js} +14 -14
  119. package/dist/{preview-BSUSKQBL.js → preview-HBDXDJCV.js} +17 -17
  120. package/dist/{producer-6QJ5624B.js → producer-KSAUIT6F.js} +1 -1
  121. package/dist/{projectConfig-EX35BZLA.js → projectConfig-CNAK65RI.js} +6 -6
  122. package/dist/{publication-OUGS3P7W.js → publication-AUWZFGJI.js} +2 -2
  123. package/dist/{publish-UUFZR6QT.js → publish-EMNP3VCC.js} +7 -7
  124. package/dist/{remove-background-SQUYEUJN.js → remove-background-GICM6TE5.js} +8 -8
  125. package/dist/{render-U7RMOU2K.js → render-DMHQZMV4.js} +24 -24
  126. package/dist/{render-GNHKF76H.js → render-PHEQSRHV.js} +10 -10
  127. package/dist/{render-AWFQGD4T.js → render-WMRNH7HO.js} +3 -3
  128. package/dist/{render-batch-6UN3HT5A.js → render-batch-OUTHTWN5.js} +3 -3
  129. package/dist/{resolver-O6ZENVYP.js → resolver-NTB6HOZC.js} +4 -4
  130. package/dist/{sherpa-CHOSLER6.js → sherpa-3YJNJ6TF.js} +10 -10
  131. package/dist/{skills-2WUDLVDT.js → skills-MKEJGL35.js} +7 -7
  132. package/dist/{skillsUpdateCheck-7N4CXFNJ.js → skillsUpdateCheck-RTLARPPP.js} +3 -3
  133. package/dist/{snapshot-E5IT54QQ.js → snapshot-KMLGFZWY.js} +28 -28
  134. package/dist/{src-CP75EYSP.js → src-4HB343JW.js} +7 -7
  135. package/dist/{src-APLD7CAF.js → src-HJ2NF55P.js} +5 -5
  136. package/dist/{staticProjectServer-VO5U75UA.js → staticProjectServer-4XX72J23.js} +12 -12
  137. package/dist/{status-RGHSK3DJ.js → status-BMXWFO4L.js} +2 -2
  138. package/dist/studio/assets/{hyperframes-player-BvAidsoQ.js → hyperframes-player-u2w3bDWo.js} +1 -1
  139. package/dist/studio/assets/{index-Jt_3ZX4p.js → index-BG28fXIT.js} +1 -1
  140. package/dist/studio/assets/{index-z1M2RwXX.js → index-D8B6eEBj.js} +4 -4
  141. package/dist/studio/assets/{index-CbWWPYt-.js → index-WD9j53l5.js} +1 -1
  142. package/dist/studio/index.html +1 -1
  143. package/dist/{studio-api-7JCPNJA7.js → studio-api-LPHMA57T.js} +6 -6
  144. package/dist/{studioServer-A67X3ZLJ.js → studioServer-P7GSE74X.js} +40 -40
  145. package/dist/{system-VRXC6S4A.js → system-QRHPVRPP.js} +2 -2
  146. package/dist/{telemetry-22DNA5QE.js → telemetry-576VTLGI.js} +5 -5
  147. package/dist/{timeline-K3BXXFQG.js → timeline-BO7LJJ24.js} +14 -14
  148. package/dist/{tokens-MWRAQMQU.js → tokens-TCYANQDA.js} +2 -2
  149. package/dist/{transcribe-C7J56BLL.js → transcribe-6HLMGCL2.js} +16 -16
  150. package/dist/{transcribe-O5B3HUFK.js → transcribe-6PTFIBO6.js} +9 -9
  151. package/dist/{updateCheck-EPJ7WDFT.js → updateCheck-ZLYIZPPQ.js} +2 -2
  152. package/dist/{upgrade-M5XD6ZPM.js → upgrade-DZHQE2PV.js} +2 -2
  153. package/dist/{urlDownloader-IEP2DY4N.js → urlDownloader-PJTOCTJA.js} +5 -5
  154. package/dist/{validate-JAF2KIJI.js → validate-3I45WC7I.js} +19 -19
  155. package/dist/{video-TX6DGLND.js → video-AQFXGGKN.js} +6 -6
  156. package/package.json +1 -1
@@ -10,8 +10,9 @@ import {
10
10
  isLowMemorySystem
11
11
  } from "./chunk-JYVGYKXG.js";
12
12
  import {
13
- describeWslGpuAccess
14
- } from "./chunk-7KDQAD2W.js";
13
+ describeWslGpuAccess,
14
+ detectWsl
15
+ } from "./chunk-OBXWIVYN.js";
15
16
  import {
16
17
  MEDIA_VISUAL_STYLE_PROPERTIES,
17
18
  RENDER_FRAME_ID_PREFIX,
@@ -29,7 +30,7 @@ import {
29
30
  renderFrameIdForRenderId,
30
31
  resolveAuthoredTimingWindow,
31
32
  toFps
32
- } from "./chunk-ZDEEHQ2Y.js";
33
+ } from "./chunk-3THJEW7G.js";
33
34
  import {
34
35
  AUDIO_GROUP_RENDER_ID_ATTR,
35
36
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -58,7 +59,7 @@ import {
58
59
  shiftRateLane,
59
60
  sourceTimeAt,
60
61
  timeAtSourceTime
61
- } from "./chunk-GV7I3ZSQ.js";
62
+ } from "./chunk-OE4WEQMH.js";
62
63
  import {
63
64
  clampAudioGain,
64
65
  isAudibleVideoElement
@@ -1025,6 +1026,43 @@ function resolveHeadlessShellPath(config) {
1025
1026
  join2(home, ".cache", "hyperframes", "chrome", "chrome-headless-shell")
1026
1027
  ) ?? findCachedHeadlessShell(join2(home, ".cache", "puppeteer", "chrome-headless-shell"));
1027
1028
  }
1029
+ function resolveFullChromePath() {
1030
+ const baseDir = join2(homedir(), ".cache", "puppeteer", "chrome");
1031
+ let versions;
1032
+ try {
1033
+ versions = readdirSync(baseDir).sort(compareBrowserVersionsDescending);
1034
+ } catch {
1035
+ return void 0;
1036
+ }
1037
+ for (const version of versions) {
1038
+ const candidates = [
1039
+ join2(
1040
+ baseDir,
1041
+ version,
1042
+ "chrome-mac-arm64",
1043
+ "Google Chrome for Testing.app",
1044
+ "Contents",
1045
+ "MacOS",
1046
+ "Google Chrome for Testing"
1047
+ ),
1048
+ join2(
1049
+ baseDir,
1050
+ version,
1051
+ "chrome-mac-x64",
1052
+ "Google Chrome for Testing.app",
1053
+ "Contents",
1054
+ "MacOS",
1055
+ "Google Chrome for Testing"
1056
+ ),
1057
+ join2(baseDir, version, "chrome-linux64", "chrome"),
1058
+ join2(baseDir, version, "chrome-win64", "chrome.exe")
1059
+ ];
1060
+ for (const binary of candidates) {
1061
+ if (existsSync(binary)) return binary;
1062
+ }
1063
+ }
1064
+ return void 0;
1065
+ }
1028
1066
  var ENABLE_BROWSER_POOL = DEFAULT_CONFIG.enableBrowserPool;
1029
1067
  var BEGINFRAME_ONLY_FLAGS = /* @__PURE__ */ new Set([
1030
1068
  "--deterministic-mode",
@@ -1203,33 +1241,45 @@ function formatProbeFailure(err) {
1203
1241
  return `probe failed (${err instanceof Error ? err.message : String(err)})`;
1204
1242
  }
1205
1243
  async function probeAutoBrowserGpuMode(options) {
1206
- const platform = options.platform ?? process.platform;
1207
- const browserTimeout = options.browserTimeout ?? DEFAULT_CONFIG.browserTimeout;
1208
1244
  const executablePath = options.chromePath ?? resolveHeadlessShellPath({});
1209
1245
  const ppt = await getPuppeteerOrNull();
1210
1246
  if (ppt === null) {
1211
1247
  logResolvedBrowserGpuMode("software", "puppeteer unavailable");
1212
1248
  return { mode: "software", cause: "probe-error" };
1213
1249
  }
1250
+ const probed = await probeWebGlMode(ppt, executablePath, options);
1251
+ if (probed.mode === "hardware" || !detectWsl(options.wslHost)) return probed;
1252
+ return probeWslFullChrome(ppt, executablePath, options, probed);
1253
+ }
1254
+ async function probeWslFullChrome(ppt, shellPath, options, shellOutcome) {
1255
+ const fullChrome = (options.findFullChrome ?? resolveFullChromePath)();
1256
+ let route = { state: "missing" };
1257
+ if (fullChrome) {
1258
+ const viaFullChrome = fullChrome === shellPath ? shellOutcome : await probeWebGlMode(ppt, fullChrome, options, "full Chrome: ");
1259
+ if (viaFullChrome.mode === "hardware") return { mode: "hardware", browserPath: fullChrome };
1260
+ route = { state: viaFullChrome.cause ?? "no-gpu", path: fullChrome };
1261
+ }
1262
+ return { ...shellOutcome, wslAccess: describeWslGpuAccess(options.wslHost, route) ?? void 0 };
1263
+ }
1264
+ async function probeWebGlMode(ppt, executablePath, options, label = "") {
1214
1265
  try {
1215
1266
  const info = await probeHardwareWebGlInfo(ppt, {
1216
- args: getHardwareGpuProbeArgs(platform),
1217
- browserTimeout,
1267
+ args: getHardwareGpuProbeArgs(options.platform ?? process.platform),
1268
+ browserTimeout: options.browserTimeout ?? DEFAULT_CONFIG.browserTimeout,
1218
1269
  executablePath,
1219
1270
  probeLifecycle: options.probeLifecycle
1220
1271
  });
1221
1272
  const resolved = resolveWebGlProbeMode(info);
1222
- logResolvedBrowserGpuMode(resolved, describeWebGlProbe(info));
1223
- if (resolved === "hardware") return { mode: "hardware" };
1224
- return { mode: "software", cause: "no-gpu", ...wslAccess(options) };
1273
+ logResolvedBrowserGpuMode(resolved, label + describeWebGlProbe(info));
1274
+ return resolved === "hardware" ? { mode: "hardware" } : { mode: "software", cause: "no-gpu" };
1225
1275
  } catch (err) {
1226
- logResolvedBrowserGpuMode("software", formatProbeFailure(err));
1227
- return { mode: "software", cause: "probe-error", ...wslAccess(options) };
1276
+ logResolvedBrowserGpuMode("software", label + formatProbeFailure(err));
1277
+ return { mode: "software", cause: "probe-error" };
1228
1278
  }
1229
1279
  }
1230
- function wslAccess(options) {
1231
- const lines = describeWslGpuAccess(options.wslHost);
1232
- return lines ? { wslAccess: lines } : {};
1280
+ async function resolveCaptureBrowserPath(resolvedMode, config) {
1281
+ const probed = resolvedMode === "hardware" ? await _autoBrowserGpuModeCache : void 0;
1282
+ return probed?.browserPath ?? resolveHeadlessShellPath(config);
1233
1283
  }
1234
1284
  function resolveBrowserGpuMode(mode, options = {}) {
1235
1285
  if (mode === "software") return Promise.resolve(mode);
@@ -1253,19 +1303,19 @@ function resolveBrowserGpuMode(mode, options = {}) {
1253
1303
  }
1254
1304
  var _unverifiedHardwareGpuWarned = false;
1255
1305
  var _wslSoftwareNoteLogged = false;
1256
- function buildWslSoftwareNote({ cause, wslAccess: wslAccess2 = [] }) {
1306
+ function buildWslSoftwareNote({ cause, wslAccess = [] }) {
1257
1307
  const check = cause === "probe-error" ? "the GPU check could not finish (see the probe line above)" : "the GPU check found no hardware GPU";
1258
1308
  return [
1259
1309
  `[hyperframes] WSL: ${check}, so this render uses software WebGL (SwiftShader) and runs at CPU speed.`,
1260
- ...wslAccess2,
1310
+ ...wslAccess,
1261
1311
  " Pass --no-browser-gpu to skip the GPU check and render in software."
1262
1312
  ].join("\n");
1263
1313
  }
1264
- function buildUnverifiedHardwareGpuWarning(platform, { cause, wslAccess: wslAccess2 }) {
1314
+ function buildUnverifiedHardwareGpuWarning(platform, { cause, wslAccess }) {
1265
1315
  if (cause === "probe-error") {
1266
- return "[hyperframes] browserGpuMode=hardware was requested, but the GPU probe could not run, so hardware acceleration is UNVERIFIED. If Chrome falls back to software WebGL the capture will run at CPU speed. Honouring the explicit request anyway.\n This is a probe failure, not evidence of a missing GPU: see the `browserGpuMode probe \u2192 software (probe failed ...)` line above for the underlying error, which usually means Chrome could not launch (bad HYPERFRAMES_BROWSER_PATH, missing shared libraries, or a denied sandbox) rather than a GPU problem.\n Run `hyperframes doctor` to check the Chrome install." + (wslAccess2 ? ["", " Under WSL, a GPU path that is slow to start or unreachable can also cause it:"].concat(wslAccess2).join("\n") : "");
1316
+ return "[hyperframes] browserGpuMode=hardware was requested, but the GPU probe could not run, so hardware acceleration is UNVERIFIED. If Chrome falls back to software WebGL the capture will run at CPU speed. Honouring the explicit request anyway.\n This is a probe failure, not evidence of a missing GPU: see the `browserGpuMode probe \u2192 software (probe failed ...)` line above for the underlying error, which usually means Chrome could not launch (bad HYPERFRAMES_BROWSER_PATH, missing shared libraries, or a denied sandbox) rather than a GPU problem.\n Run `hyperframes doctor` to check the Chrome install." + (wslAccess ? ["", " Under WSL, a GPU path that is slow to start or unreachable can also cause it:"].concat(wslAccess).join("\n") : "");
1267
1317
  }
1268
- const remediation = wslAccess2?.join("\n") ?? (platform === "linux" ? " Inside Docker, the container needs GPU passthrough: `--gpus all` with the NVIDIA Container Toolkit installed, or `--device /dev/dri` for Mesa/AMD/Intel. The image also needs the matching userspace driver + libEGL. Verify with `hyperframes render --browser-gpu` and watch for this warning disappearing." : " Check that the host exposes a GPU to this process and that the graphics drivers are installed.");
1318
+ const remediation = wslAccess?.join("\n") ?? (platform === "linux" ? " Inside Docker, the container needs GPU passthrough: `--gpus all` with the NVIDIA Container Toolkit installed, or `--device /dev/dri` for Mesa/AMD/Intel. The image also needs the matching userspace driver + libEGL. Verify with `hyperframes render --browser-gpu` and watch for this warning disappearing." : " Check that the host exposes a GPU to this process and that the graphics drivers are installed.");
1269
1319
  return `[hyperframes] browserGpuMode=hardware was requested, but the WebGL probe found no hardware GPU, so Chrome will silently fall back to software WebGL and the capture will run at CPU speed. Honouring the explicit request anyway.
1270
1320
  ${remediation}
1271
1321
  Pass --no-browser-gpu to select deterministic SwiftShader instead of waiting on a hardware path that is not there.`;
@@ -5265,14 +5315,16 @@ async function createCaptureSession(serverUrl, outputDir, options, onBeforeCaptu
5265
5315
  resolvedGpuMode,
5266
5316
  config
5267
5317
  );
5268
- const preMode = headlessShell && isLinux && !effectiveForceScreenshot && !supersampling && !drawElementTransparent ? "beginframe" : "screenshot";
5318
+ const browserPath = await resolveCaptureBrowserPath(resolvedGpuMode, config);
5319
+ const wslFullChromeHasNoBeginFrame = browserPath !== headlessShell;
5320
+ const preMode = headlessShell && !wslFullChromeHasNoBeginFrame && isLinux && !effectiveForceScreenshot && !supersampling && !drawElementTransparent ? "beginframe" : "screenshot";
5269
5321
  const requiresWebGpu = options.requiresWebGpu ?? await fetch(`${serverUrl}/index.html`, { signal: AbortSignal.timeout(5e3) }).then((res) => res.text()).then(compositionRequiresWebGpu).catch(() => false);
5270
5322
  const gpuConfig = { ...config, browserGpuMode: resolvedGpuMode };
5271
5323
  const chromeArgs = buildChromeArgs(
5272
5324
  { width: options.width, height: options.height, captureMode: preMode, requiresWebGpu },
5273
5325
  gpuConfig
5274
5326
  );
5275
- const browserLease = await acquireBrowser(chromeArgs, config);
5327
+ const browserLease = await acquireBrowser(chromeArgs, { ...config, chromePath: browserPath });
5276
5328
  return constructCaptureSessionWithRollback({
5277
5329
  browserLease,
5278
5330
  serverUrl,
@@ -8031,35 +8083,6 @@ async function runFfmpeg(args, opts) {
8031
8083
  });
8032
8084
  return toResult(await managed.wait());
8033
8085
  }
8034
- async function runFfmpegPipeline(producerArgs, consumerArgs, opts) {
8035
- if (opts?.signal?.aborted) return { ...ABORTED_BEFORE_START };
8036
- const deadlineAtMs = Date.now() + (opts?.timeout ?? DEFAULT_TIMEOUT);
8037
- const producer = spawnFfmpeg(producerArgs);
8038
- const consumer = spawnFfmpeg(consumerArgs);
8039
- consumer.stdin?.on("error", () => {
8040
- });
8041
- for (const event of ["close", "error"]) {
8042
- consumer.once(event, () => producer.stdout?.destroy());
8043
- producer.once(event, () => consumer.stdin?.end());
8044
- }
8045
- if (consumer.stdin) producer.stdout?.pipe(consumer.stdin);
8046
- const settleOrder = [];
8047
- const outcomes = await Promise.all(
8048
- [producer, consumer].map(
8049
- (child) => new ManagedChildProcess(child, {
8050
- signal: opts?.signal,
8051
- deadlineAtMs,
8052
- onStderr: opts?.onStderr
8053
- }).wait().then((outcome) => {
8054
- settleOrder.push(outcome);
8055
- return outcome;
8056
- })
8057
- )
8058
- );
8059
- const reported = settleOrder.find((outcome) => !succeeded(outcome)) ?? outcomes[1];
8060
- const stderr = [...outcomes.filter((outcome) => outcome !== reported), reported].map((outcome) => outcome.stderr).join("");
8061
- return toResult(reported, stderr);
8062
- }
8063
8086
 
8064
8087
  // ../engine/src/utils/ffprobe.ts
8065
8088
  import { spawn as spawn3 } from "child_process";
@@ -11194,7 +11217,7 @@ function framePathsFromDirectory(outputDir, format, allowGaps = false) {
11194
11217
  // ../engine/src/services/extractionCache.ts
11195
11218
  var COMPLETE_SENTINEL = ".hf-complete";
11196
11219
  var GC_MARKER = ".hf-last-gc";
11197
- var SCHEMA_PREFIX = "hfcache-v6-";
11220
+ var SCHEMA_PREFIX = "hfcache-v7-";
11198
11221
  var KEY_HEX_CHARS = 16;
11199
11222
  async function readContentSha256(path, signal) {
11200
11223
  try {
@@ -11809,55 +11832,6 @@ function chromeGuessForUntaggedMatrix(metadata) {
11809
11832
  const hd = metadata.height >= 720 && !CHROME_BT601_UNTAGGED_CODECS.has(metadata.videoCodec);
11810
11833
  return [`setparams=colorspace=${hd ? "bt709" : "smpte170m"}`];
11811
11834
  }
11812
- var NUT_RAW_PIXEL_FORMATS = /* @__PURE__ */ new Set([
11813
- "yuv420p",
11814
- "yuvj420p",
11815
- "yuv422p",
11816
- "yuvj422p",
11817
- "yuv444p",
11818
- "yuvj444p",
11819
- "yuva420p",
11820
- "yuva444p",
11821
- "yuv440p",
11822
- "yuv411p",
11823
- "yuv410p",
11824
- "yuva422p",
11825
- "yuv420p10le",
11826
- "yuv422p10le",
11827
- "yuv444p10le",
11828
- "yuva420p10le",
11829
- "yuva444p10le",
11830
- "yuv420p12le",
11831
- "nv12",
11832
- "nv21",
11833
- "yuyv422",
11834
- "uyvy422",
11835
- "gray",
11836
- "gray10le",
11837
- "ya8",
11838
- "gbrp",
11839
- "gbrap",
11840
- "gbrp10le",
11841
- "gbrp12le",
11842
- "gbrap10le",
11843
- "rgb24",
11844
- "bgr24",
11845
- "rgba",
11846
- "bgra",
11847
- "argb",
11848
- "abgr",
11849
- "rgb48le",
11850
- "rgba64le"
11851
- ]);
11852
- function restoreSourceColourFilter(metadata) {
11853
- const tags = [
11854
- ["range", metadata.colorRange],
11855
- ["colorspace", metadata.colorSpace?.colorSpace],
11856
- ["color_primaries", metadata.colorSpace?.colorPrimaries],
11857
- ["color_trc", metadata.colorSpace?.colorTransfer]
11858
- ].filter(([, value]) => value && value !== "unknown" && value !== "reserved");
11859
- return tags.length > 0 ? [`setparams=${tags.map(([key, value]) => `${key}=${value}`).join(":")}`] : [];
11860
- }
11861
11835
  var EXTRACTION_SEGMENT_SECONDS = 120;
11862
11836
  var EXTRACTION_SLOTS = Math.max(1, Math.floor(cpus().length / 2));
11863
11837
  var inExtractionSlot = createConcurrencyLimit(EXTRACTION_SLOTS);
@@ -11964,8 +11938,8 @@ async function extractVideoFramesRange(videoPath, videoId, startTime, duration,
11964
11938
  const isMacOS = process.platform === "darwin";
11965
11939
  const toneMappedToSdr = options.toneMapHdrToSdr === true && isHdr && await toneMapsWithZscale();
11966
11940
  const decodeWithVideoToolbox = isHdr && isMacOS && !toneMappedToSdr;
11967
- const sampleCfrAtOutputFps = !options.finalFrameOnly && !metadata.isVFR;
11968
- if (options.frameRanges && !sampleCfrAtOutputFps) {
11941
+ const sampleAtOutputFps = !options.finalFrameOnly;
11942
+ if (options.frameRanges && (!sampleAtOutputFps || metadata.isVFR)) {
11969
11943
  throw new Error("frameRanges extraction needs a constant-frame-rate source");
11970
11944
  }
11971
11945
  const args = [];
@@ -11979,14 +11953,14 @@ async function extractVideoFramesRange(videoPath, videoId, startTime, duration,
11979
11953
  if (options.finalFrameOnly) {
11980
11954
  args.push("-i", videoPath, "-ss", String(startTime), "-frames:v", "1");
11981
11955
  } else {
11982
- if (sampleCfrAtOutputFps) args.push("-noaccurate_seek");
11956
+ if (sampleAtOutputFps) args.push("-noaccurate_seek");
11983
11957
  args.push("-ss", String(startTime), "-i", videoPath, "-t", String(duration));
11984
11958
  }
11985
11959
  const vfFilters = [];
11986
11960
  if (decodeWithVideoToolbox) {
11987
11961
  vfFilters.push("format=nv12");
11988
11962
  }
11989
- if (sampleCfrAtOutputFps) {
11963
+ if (sampleAtOutputFps) {
11990
11964
  vfFilters.push(
11991
11965
  "settb=intb/2",
11992
11966
  "setpts=PTS-lte(TB\\,0.001)",
@@ -12011,48 +11985,25 @@ async function extractVideoFramesRange(videoPath, videoId, startTime, duration,
12011
11985
  if (format === "png") encodeArgs.push("-compression_level", "1");
12012
11986
  encodeArgs.push("-y", outputPattern);
12013
11987
  const runOptions = { signal, timeout: ffmpegProcessTimeout };
12014
- const resampleVfrToCfr = !options.finalFrameOnly && metadata.isVFR;
12015
- if (resampleVfrToCfr) args.push("-fps_mode", "cfr", "-r", ffmpegFps);
12016
- let processResult;
12017
- if (resampleVfrToCfr && vfFilters.length > 0 && !isHdr && NUT_RAW_PIXEL_FORMATS.has(metadata.pixelFormat ?? "")) {
12018
- processResult = await inExtractionSlot(
12019
- () => runFfmpegPipeline(
12020
- [...args, "-an", "-sn", "-dn", "-c:v", "rawvideo", "-f", "nut", "pipe:1"],
12021
- [
12022
- "-f",
12023
- "nut",
12024
- "-i",
12025
- "pipe:0",
12026
- "-vf",
12027
- [...restoreSourceColourFilter(metadata), ...vfFilters].join(","),
12028
- "-fps_mode",
12029
- "passthrough",
12030
- ...encodeArgs
12031
- ],
12032
- runOptions
12033
- ),
12034
- signal
12035
- );
12036
- } else {
12037
- const filterArgs = vfFilters.length > 0 ? ["-vf", vfFilters.join(",")] : [];
12038
- const segmentFrames = Math.round(EXTRACTION_SEGMENT_SECONDS * fps);
12039
- const totalFrames = extractionFrameCountForDuration(duration, normalizedFps, false);
12040
- processResult = sampleCfrAtOutputFps && (options.frameRanges || totalFrames > segmentFrames) ? await runSegmentedExtraction({
12041
- decodeArgs,
12042
- filterAndEncodeArgs: [...filterArgs, ...encodeArgs],
12043
- videoPath,
12044
- startTime,
12045
- fps,
12046
- segments: splitFrameRanges(
12047
- options.frameRanges ?? [{ firstFrame: 0, frames: totalFrames }],
12048
- segmentFrames
12049
- ),
12050
- runOptions
12051
- }) : await inExtractionSlot(
12052
- () => runFfmpeg([...args, ...filterArgs, ...encodeArgs], runOptions),
12053
- signal
12054
- );
12055
- }
11988
+ const filterArgs = vfFilters.length > 0 ? ["-vf", vfFilters.join(",")] : [];
11989
+ const segmentFrames = Math.round(EXTRACTION_SEGMENT_SECONDS * fps);
11990
+ const totalFrames = extractionFrameCountForDuration(duration, normalizedFps, metadata.isVFR);
11991
+ const boundVfrFrameCount = metadata.isVFR && totalFrames > 0;
11992
+ const processResult = sampleAtOutputFps && (options.frameRanges || boundVfrFrameCount || totalFrames > segmentFrames) ? await runSegmentedExtraction({
11993
+ decodeArgs,
11994
+ filterAndEncodeArgs: [...filterArgs, ...encodeArgs],
11995
+ videoPath,
11996
+ startTime,
11997
+ fps,
11998
+ segments: splitFrameRanges(
11999
+ options.frameRanges ?? [{ firstFrame: 0, frames: totalFrames }],
12000
+ segmentFrames
12001
+ ),
12002
+ runOptions
12003
+ }) : await inExtractionSlot(
12004
+ () => runFfmpeg([...args, ...filterArgs, ...encodeArgs], runOptions),
12005
+ signal
12006
+ );
12056
12007
  if (processResult.failureReason === "external_interruption") {
12057
12008
  throw new VideoSourceExtractionError(
12058
12009
  "external_interruption",
@@ -14799,10 +14750,11 @@ function buildFadeFilters(track) {
14799
14750
  }
14800
14751
  return stages.length ? `,${stages.join(",")}` : "";
14801
14752
  }
14802
- function buildTrackInputFilter(track, index, volumeFilter, totalDuration) {
14753
+ function buildTrackInputFilter(track, index, volumeFilter, totalDuration, padToDuration = true) {
14803
14754
  const delayMs = Math.round(track.start * 1e3);
14804
14755
  const trimDuration = track.end - track.start + (track.tailSeconds ?? 0);
14805
- return `[${index}:a]atrim=0:${formatFilterNumber(trimDuration)},${volumeFilter}${buildFadeFilters(track)},adelay=${delayMs}|${delayMs},apad,asetpts=N/SR/TB,atrim=0:${formatFilterNumber(totalDuration)}[a${index}]`;
14756
+ const filters = `[${index}:a]atrim=0:${formatFilterNumber(trimDuration)},${volumeFilter}${buildFadeFilters(track)},adelay=${delayMs}|${delayMs}`;
14757
+ return `${filters}${padToDuration ? `,apad,asetpts=N/SR/TB,atrim=0:${formatFilterNumber(totalDuration)}` : ""}[a${index}]`;
14806
14758
  }
14807
14759
  function missingSourceMessage(elementId, src, baseDir, resolvedPath) {
14808
14760
  const relativePath = relative(baseDir, resolvedPath).replace(/\\/g, "/");
@@ -15079,26 +15031,26 @@ async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config,
15079
15031
  }
15080
15032
  const outputDir = dirname6(outputPath);
15081
15033
  if (!existsSync10(outputDir)) mkdirSync7(outputDir, { recursive: true });
15082
- const buildFilterComplex = (ignoreAutomation) => {
15034
+ const buildFilterComplex = (ignoreAutomation, useNormalize2) => {
15083
15035
  const filterParts = [];
15084
15036
  tracks.forEach((track, i) => {
15085
15037
  const volumeFilter = buildVolumeExpression(track, ignoreAutomation);
15086
- filterParts.push(buildTrackInputFilter(track, i, volumeFilter, totalDuration));
15038
+ filterParts.push(buildTrackInputFilter(track, i, volumeFilter, totalDuration, !useNormalize2));
15087
15039
  });
15088
15040
  const mixInputs = tracks.map((_, i) => `[a${i}]`).join("");
15089
- const mixFilter = `${mixInputs}amix=inputs=${tracks.length}:duration=longest:dropout_transition=0[mixed]`;
15090
- const compensatedGain = masterOutputGain * tracks.length;
15091
- const postMixGainFilter = `[mixed]volume=${formatFilterNumber(compensatedGain)}[out]`;
15041
+ const mixFilter = `${mixInputs}amix=inputs=${tracks.length}:duration=longest:dropout_transition=0${useNormalize2 ? ":normalize=0" : ""}[mixed]`;
15042
+ const gain = masterOutputGain * (useNormalize2 ? 1 : tracks.length);
15043
+ const postMixGainFilter = useNormalize2 ? `[mixed]volume=${formatFilterNumber(gain)},apad,asetpts=N/SR/TB,atrim=0:${formatFilterNumber(totalDuration)}[out]` : `[mixed]volume=${formatFilterNumber(gain)}[out]`;
15092
15044
  return [...filterParts, mixFilter, postMixGainFilter].join(";");
15093
15045
  };
15094
- const runMix = async (ignoreAutomation) => {
15046
+ const runMix = async (ignoreAutomation, useNormalize2) => {
15095
15047
  const inputs = [];
15096
15048
  tracks.forEach((track) => inputs.push("-i", track.srcPath));
15097
15049
  const scriptDir = mkdtempSync6(join13(outputDir, ".filter-complex-"));
15098
15050
  const scriptPath = join13(scriptDir, "graph.txt");
15099
15051
  const fd = openSync4(scriptPath, "wx", 384);
15100
15052
  try {
15101
- writeFileSync6(fd, buildFilterComplex(ignoreAutomation));
15053
+ writeFileSync6(fd, buildFilterComplex(ignoreAutomation, useNormalize2));
15102
15054
  } finally {
15103
15055
  closeSync4(fd);
15104
15056
  }
@@ -15126,11 +15078,16 @@ async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config,
15126
15078
  rmSync7(scriptDir, { recursive: true, force: true });
15127
15079
  }
15128
15080
  };
15129
- let result = await runMix(false);
15081
+ let useNormalize = true;
15082
+ let result = await runMix(false, useNormalize);
15083
+ if (!result.success && result.failureReason !== "external_interruption" && !signal?.aborted && groupNormalizeOptionUnsupported(result.stderr)) {
15084
+ useNormalize = false;
15085
+ result = await runMix(false, useNormalize);
15086
+ }
15130
15087
  let degradedAutomation = false;
15131
15088
  const hasAutomation = tracks.some((track) => (track.volumeKeyframes?.length ?? 0) > 0);
15132
15089
  if (!result.success && result.failureReason !== "external_interruption" && !signal?.aborted && hasAutomation) {
15133
- const retry = await runMix(true);
15090
+ const retry = await runMix(true, useNormalize);
15134
15091
  if (retry.success) {
15135
15092
  result = retry;
15136
15093
  degradedAutomation = true;
@@ -16645,9 +16602,6 @@ function verifyGpuParity(a, b, options = {}) {
16645
16602
  }
16646
16603
 
16647
16604
  // ../engine/src/services/hdrCapture.ts
16648
- import { existsSync as existsSync12, readdirSync as readdirSync7 } from "fs";
16649
- import { join as join17 } from "path";
16650
- import { homedir as homedir2 } from "os";
16651
16605
  var PQ_M1 = 0.1593017578125;
16652
16606
  var PQ_M2 = 78.84375;
16653
16607
  var PQ_C1 = 0.8359375;
@@ -16768,39 +16722,6 @@ function float16ToPqRgb(rawBuffer, bytesPerRow, width, height) {
16768
16722
  }
16769
16723
  return output;
16770
16724
  }
16771
- function resolveHeadedChromePath() {
16772
- const baseDir = join17(homedir2(), ".cache", "puppeteer", "chrome");
16773
- if (!existsSync12(baseDir)) return void 0;
16774
- const versions = readdirSync7(baseDir).sort().reverse();
16775
- for (const version of versions) {
16776
- const candidates = [
16777
- join17(
16778
- baseDir,
16779
- version,
16780
- "chrome-mac-arm64",
16781
- "Google Chrome for Testing.app",
16782
- "Contents",
16783
- "MacOS",
16784
- "Google Chrome for Testing"
16785
- ),
16786
- join17(
16787
- baseDir,
16788
- version,
16789
- "chrome-mac-x64",
16790
- "Google Chrome for Testing.app",
16791
- "Contents",
16792
- "MacOS",
16793
- "Google Chrome for Testing"
16794
- ),
16795
- join17(baseDir, version, "chrome-linux64", "chrome"),
16796
- join17(baseDir, version, "chrome-win64", "chrome.exe")
16797
- ];
16798
- for (const binary of candidates) {
16799
- if (existsSync12(binary)) return binary;
16800
- }
16801
- }
16802
- return void 0;
16803
- }
16804
16725
  async function launchHdrBrowser(width, height) {
16805
16726
  let ppt;
16806
16727
  try {
@@ -16815,7 +16736,7 @@ async function launchHdrBrowser(width, height) {
16815
16736
  ppt = mod.default;
16816
16737
  }
16817
16738
  if (!ppt) throw new Error("Neither puppeteer nor puppeteer-core found");
16818
- const chromePath = resolveHeadedChromePath();
16739
+ const chromePath = resolveFullChromePath();
16819
16740
  if (!chromePath) {
16820
16741
  throw new Error(
16821
16742
  "[HDR] No Chrome binary found. Install: npx @puppeteer/browsers install chrome@stable"
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  sherpaParakeetInstalled,
9
9
  sherpaUnsupportedReason
10
- } from "./chunk-PCBCTD7M.js";
10
+ } from "./chunk-DDSQBREC.js";
11
11
  import {
12
12
  findParakeet
13
13
  } from "./chunk-JZIEZCQM.js";
@@ -6,14 +6,14 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  redactHome
9
- } from "./chunk-AVGGHUVK.js";
9
+ } from "./chunk-HBKKW3NL.js";
10
10
  import "./chunk-Z27A7NUB.js";
11
11
  import "./chunk-5ETJX6WM.js";
12
12
  import {
13
13
  loadProducer
14
- } from "./chunk-ECFNYTEM.js";
15
- import "./chunk-PSDTKP6K.js";
16
- import "./chunk-WQMTHPTK.js";
14
+ } from "./chunk-IOBKVP27.js";
15
+ import "./chunk-VK5JRYJL.js";
16
+ import "./chunk-DSX7R5M7.js";
17
17
  import "./chunk-C6TPGUWD.js";
18
18
  import {
19
19
  DEFAULT_HISTORY_ROOT,
@@ -23,14 +23,14 @@ import {
23
23
  import {
24
24
  CACHE_DIR_NAME,
25
25
  cleanupProxyCache
26
- } from "./chunk-PVGDU7SE.js";
26
+ } from "./chunk-7U27WUMQ.js";
27
27
  import "./chunk-FFDC5OWV.js";
28
28
  import {
29
29
  formatBytes
30
30
  } from "./chunk-K2FLNJVB.js";
31
- import "./chunk-45FUWHHV.js";
31
+ import "./chunk-VY23BB2D.js";
32
32
  import "./chunk-5CS4T6C6.js";
33
- import "./chunk-QWQ6GQTI.js";
33
+ import "./chunk-7FFGZC2X.js";
34
34
  import {
35
35
  defineCommand
36
36
  } from "./chunk-S3S4TGEH.js";
@@ -46,29 +46,29 @@ import "./chunk-TJSTGSAW.js";
46
46
  import "./chunk-LBT4AMSF.js";
47
47
  import {
48
48
  withMeta
49
- } from "./chunk-5GZLD7OW.js";
49
+ } from "./chunk-COBIO7VC.js";
50
50
  import "./chunk-K4WIOZFP.js";
51
51
  import "./chunk-XUXGIA7H.js";
52
52
  import "./chunk-WERLJGIC.js";
53
53
  import "./chunk-ISN5GRYI.js";
54
- import "./chunk-Q3BS3MN5.js";
54
+ import "./chunk-SO44ETGW.js";
55
55
  import "./chunk-3DKN5WKL.js";
56
56
  import "./chunk-EOVYQ3IG.js";
57
57
  import "./chunk-6BEFEWFB.js";
58
- import "./chunk-KEGTYA7V.js";
58
+ import "./chunk-SCOXM5LP.js";
59
59
  import "./chunk-XT6MXC7A.js";
60
60
  import {
61
61
  EXTRACT_CACHE_MIN_AGE_MS,
62
62
  directorySizeBytes,
63
63
  gcExtractionCache,
64
64
  resolveExtractCacheDir
65
- } from "./chunk-TLC4GYT5.js";
66
- import "./chunk-V6UUZGP6.js";
65
+ } from "./chunk-YUTUYCGK.js";
66
+ import "./chunk-2K5YII2L.js";
67
67
  import "./chunk-NE55C6S5.js";
68
68
  import "./chunk-JYVGYKXG.js";
69
- import "./chunk-7KDQAD2W.js";
70
- import "./chunk-ZDEEHQ2Y.js";
71
- import "./chunk-GV7I3ZSQ.js";
69
+ import "./chunk-OBXWIVYN.js";
70
+ import "./chunk-3THJEW7G.js";
71
+ import "./chunk-OE4WEQMH.js";
72
72
  import "./chunk-VC76R6W2.js";
73
73
  import "./chunk-UJKQWGFF.js";
74
74
  import "./chunk-VYKPBRCB.js";