hyperframes 0.8.188 → 0.8.189

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 (159) hide show
  1. package/dist/{add-UORF6235.js → add-TIKUM2YX.js} +10 -10
  2. package/dist/{animatedGifPrep-23MLSEXF.js → animatedGifPrep-25X4G5IE.js} +3 -3
  3. package/dist/api.js +11 -11
  4. package/dist/{asset-DOKDVHCW.js → asset-TPKLIP4R.js} +2 -2
  5. package/dist/{assetCataloger-CD27MHEY.js → assetCataloger-PQAIV3FI.js} +3 -3
  6. package/dist/{audio-3NMZHNNU.js → audio-6RLPKB5X.js} +9 -9
  7. package/dist/{auth-AWKTSKGC.js → auth-O7QSTP6Y.js} +1 -1
  8. package/dist/{autoUpdate-VBOI4CNU.js → autoUpdate-TIEJODP7.js} +2 -2
  9. package/dist/{backgroundChecks-S4R454YU.js → backgroundChecks-K2AXYDYG.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-EGPYNDHK.js → batchRender-ORVWYJAH.js} +2 -2
  12. package/dist/{beats-YENEQUOA.js → beats-2VTB2ATR.js} +4 -4
  13. package/dist/{benchmark-THSJIQG7.js → benchmark-NLNBL6YR.js} +7 -7
  14. package/dist/{browser-BDMVQ6WJ.js → browser-M5UV6VJB.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-3QG722YD.js → bundleWithLocalizedFonts-EDD2XDS2.js} +1 -1
  16. package/dist/{capture-Z6BGCTK3.js → capture-JSYVNFKO.js} +6 -6
  17. package/dist/{capture-WM4XDMFX.js → capture-WHWEE5FE.js} +2 -2
  18. package/dist/{captureCompositionFrame-EMHSAIBZ.js → captureCompositionFrame-JANGQCIA.js} +9 -9
  19. package/dist/{catalog-7TV6UNCG.js → catalog-MPOOKNSZ.js} +10 -10
  20. package/dist/{catch-up-63IUDZRW.js → catch-up-6KZV3UMZ.js} +4 -4
  21. package/dist/{check-7RHZL4DV.js → check-G273NWK7.js} +32 -31
  22. package/dist/{checkBrowser-PF56CT5X.js → checkBrowser-G53E2ZQI.js} +27 -28
  23. package/dist/{chunk-5DPV7LU3.js → chunk-2CYM34M7.js} +1 -1
  24. package/dist/{chunk-FSTLXRIN.js → chunk-37EPEFXM.js} +1 -1
  25. package/dist/{chunk-NMOTNNP2.js → chunk-3OLOVRWS.js} +1 -1
  26. package/dist/{chunk-ZIRIDSDB.js → chunk-3X6LH25W.js} +1 -1
  27. package/dist/{chunk-BU4HRISA.js → chunk-44TJOEH5.js} +90 -23
  28. package/dist/{chunk-YZ73IPW2.js → chunk-4DZ3HBKF.js} +2 -2
  29. package/dist/{chunk-W2KGJHUL.js → chunk-4QFKGRTB.js} +2 -2
  30. package/dist/{chunk-IA2IDJAG.js → chunk-5544QB3U.js} +1 -1
  31. package/dist/{chunk-MTPPEEYZ.js → chunk-565X6Q4X.js} +3 -3
  32. package/dist/{chunk-HPQSUPR7.js → chunk-5HJJEHGE.js} +1 -1
  33. package/dist/{chunk-6OWNUXTU.js → chunk-6RA4TWGV.js} +1 -1
  34. package/dist/{chunk-I7C5GUEQ.js → chunk-74Y43RJZ.js} +3 -3
  35. package/dist/{chunk-57XL23DE.js → chunk-ANYBRVPF.js} +1 -1
  36. package/dist/{chunk-LWY3PFJ7.js → chunk-AQ3L7DVB.js} +1 -1
  37. package/dist/{chunk-6HYPEIH7.js → chunk-ASZ4IQB4.js} +2 -2
  38. package/dist/{chunk-MJKUCR3C.js → chunk-AYBKDHYD.js} +2 -2
  39. package/dist/{chunk-T3OXKSRG.js → chunk-B52BJM5K.js} +2 -2
  40. package/dist/{chunk-JWRT2IXO.js → chunk-B634ZCY2.js} +1 -1
  41. package/dist/{chunk-LWYZN7HS.js → chunk-BZQLTNMB.js} +219 -79
  42. package/dist/{chunk-XPVN4R66.js → chunk-CSYSEPWL.js} +31 -7
  43. package/dist/{chunk-V6NM4KL3.js → chunk-CTF7BYCV.js} +2 -2
  44. package/dist/{chunk-JYC53CW4.js → chunk-E676Y7AY.js} +81 -28
  45. package/dist/{chunk-5OZI55AC.js → chunk-E7TI5PAQ.js} +1 -1
  46. package/dist/{chunk-BWEZDN6U.js → chunk-F45HHA3M.js} +1 -1
  47. package/dist/{chunk-DA4TQFSF.js → chunk-FJF5JBYU.js} +1 -1
  48. package/dist/{chunk-NFHRGHCJ.js → chunk-GBT7P3OQ.js} +3 -3
  49. package/dist/{chunk-UF6RCYA5.js → chunk-GWYMAII7.js} +1 -1
  50. package/dist/{chunk-MXXX6WVC.js → chunk-HNMDLKA4.js} +1 -1
  51. package/dist/{chunk-GYBPAKBM.js → chunk-HQIFMCQN.js} +16 -10
  52. package/dist/{chunk-B2P4JRUJ.js → chunk-HUG47UEE.js} +1 -1
  53. package/dist/{chunk-YCW345M4.js → chunk-HXM2ISEK.js} +119 -8
  54. package/dist/{chunk-OJOZXWLC.js → chunk-IFXOMIBP.js} +3 -3
  55. package/dist/{chunk-6Q5CFUAP.js → chunk-IPEP346Y.js} +1 -1
  56. package/dist/{chunk-FOLMMQF3.js → chunk-JIPUWKLA.js} +12 -12
  57. package/dist/{chunk-44QWRPGE.js → chunk-JZDVIDFH.js} +2 -2
  58. package/dist/{chunk-L243NE72.js → chunk-KLWUB37U.js} +7 -7
  59. package/dist/{chunk-IJYR4TTA.js → chunk-KS4HMJJD.js} +1 -1
  60. package/dist/{chunk-FWVILDOZ.js → chunk-M6FHSQZ3.js} +3 -3
  61. package/dist/{chunk-PQLFJYGP.js → chunk-NDBWI7OA.js} +5 -5
  62. package/dist/{chunk-46VJ2UAV.js → chunk-NSJ5HD6A.js} +5 -5
  63. package/dist/{chunk-KWSEIVR6.js → chunk-OHXHBMF4.js} +1 -1
  64. package/dist/{chunk-X556BGL7.js → chunk-QMFI4N7J.js} +1 -1
  65. package/dist/{chunk-OKSYDQHY.js → chunk-QYQ2EYOI.js} +3 -3
  66. package/dist/{chunk-KY7375C4.js → chunk-R5FS7GFU.js} +1 -1
  67. package/dist/{chunk-FH7WODJH.js → chunk-SGFMCNLY.js} +8 -0
  68. package/dist/{chunk-PMXR3IUH.js → chunk-T37XXYRK.js} +1 -1
  69. package/dist/{chunk-NFLZNSUZ.js → chunk-TFUAKV6O.js} +1 -1
  70. package/dist/{chunk-U6RXZNZE.js → chunk-TMBUBLZB.js} +55 -23
  71. package/dist/{chunk-2DHCCBCN.js → chunk-TPTQHOXU.js} +8 -8
  72. package/dist/{chunk-KDBPZOXK.js → chunk-TREMHDWT.js} +11 -11
  73. package/dist/{chunk-DLFAVRF3.js → chunk-VRQU564T.js} +1 -1
  74. package/dist/{chunk-HKUZCSNZ.js → chunk-WMJJCHVQ.js} +2 -2
  75. package/dist/{chunk-YV4WT7CJ.js → chunk-WYCFMNU3.js} +11 -0
  76. package/dist/{chunk-2WUDFZCR.js → chunk-XJVXROOL.js} +2 -2
  77. package/dist/{chunk-DG4ME554.js → chunk-Z2BW2WJS.js} +1 -1
  78. package/dist/{chunk-6HZ7TSJJ.js → chunk-ZPMF6GAQ.js} +8 -8
  79. package/dist/{clean-43O47OTN.js → clean-PS4VYGQ6.js} +12 -12
  80. package/dist/cli.js +53 -53
  81. package/dist/{cloud-ZFWKFFSU.js → cloud-E47CE5VQ.js} +4 -4
  82. package/dist/{cloudrun-XBBESKEU.js → cloudrun-3J4SQBXE.js} +3 -3
  83. package/dist/{compare-OW4ELTFZ.js → compare-EAKHXBDO.js} +23 -23
  84. package/dist/{component-SDV7LWH6.js → component-QBOXYJJS.js} +3 -3
  85. package/dist/{compositions-DI5QZCEK.js → compositions-QC3EO3MJ.js} +7 -7
  86. package/dist/{delete-QY2NSQ2G.js → delete-TXEOLPC6.js} +2 -2
  87. package/dist/{deploy-MJVC4EFY.js → deploy-3B3WJ6PM.js} +1 -1
  88. package/dist/{dist-RFTGYT26.js → dist-F4UJFK4S.js} +3 -1
  89. package/dist/{doctor-7ZOECPHR.js → doctor-2CRFH4B3.js} +7 -7
  90. package/dist/{events-WIX4JM2K.js → events-GUIOSBIB.js} +3 -3
  91. package/dist/{events-XVQQGECC.js → events-KVTX3QFV.js} +2 -2
  92. package/dist/{feedback-GBYBR6UO.js → feedback-VQIOSTIB.js} +5 -5
  93. package/dist/{ffmpeg-QGQBYMO3.js → ffmpeg-BPCZGXFW.js} +3 -3
  94. package/dist/{figma-2CMKUGJQ.js → figma-QIOKCH26.js} +3 -3
  95. package/dist/fontLocalizeCli.js +5 -5
  96. package/dist/{get-RWCNUOHU.js → get-TU45SNXF.js} +2 -2
  97. package/dist/{gpuPolicy-UGWSN32D.js → gpuPolicy-AWAJBGYY.js} +3 -3
  98. package/dist/{grade-compare-J2MX7HZL.js → grade-compare-LDNUXX3Q.js} +24 -24
  99. package/dist/{help-SH3ID7MV.js → help-YUCHJKKL.js} +1 -1
  100. package/dist/{history-C7V5QH7J.js → history-MMHFUMIG.js} +7 -7
  101. package/dist/hyperframes-player.global.js +1 -1
  102. package/dist/{info-ZN3JJ3IN.js → info-HBHOFSC2.js} +6 -6
  103. package/dist/{init-KRNGSRNH.js → init-3E4GUXIZ.js} +23 -23
  104. package/dist/{inspect-AYDZXTX7.js → inspect-YNUPJVIH.js} +25 -25
  105. package/dist/{installer-N6AIK6XQ.js → installer-WLCRP33K.js} +3 -3
  106. package/dist/{keyframes-2RFUCEDK.js → keyframes-Z47GHCGO.js} +6 -6
  107. package/dist/{lambda-VW3CF6EE.js → lambda-CA4PEUO2.js} +5 -5
  108. package/dist/{layout-OE64APE7.js → layout-YPV6PIKF.js} +25 -25
  109. package/dist/{lint-UXJTX5WS.js → lint-3AVVQ74A.js} +6 -6
  110. package/dist/{list-KOL6JPZJ.js → list-JH52Y735.js} +2 -2
  111. package/dist/{login-MAQXOPDG.js → login-G7NPJUAW.js} +4 -4
  112. package/dist/{manager-3LZKRK7P.js → manager-2LSMMZY4.js} +4 -4
  113. package/dist/{media-treatment-COLSXXQJ.js → media-treatment-BVMMD5EN.js} +9 -9
  114. package/dist/{models-XXWMGOD7.js → models-P3TNRVRV.js} +7 -7
  115. package/dist/{motionShot-RECBNTBZ.js → motionShot-LK62QHNE.js} +13 -13
  116. package/dist/{normalize-audio-LKVGHZWR.js → normalize-audio-Y7BAQ7AR.js} +4 -4
  117. package/dist/{open-UEQVSRKH.js → open-CCFFLAT7.js} +10 -10
  118. package/dist/{parakeetRunner-QVPCZ36U.js → parakeetRunner-N2BWSOSD.js} +8 -8
  119. package/dist/{pipeline-5VSMQBKW.js → pipeline-3VT2DQGU.js} +4 -4
  120. package/dist/{play-MNEABYN4.js → play-G4I5IFHO.js} +15 -15
  121. package/dist/{preflight-ONJ74DWQ.js → preflight-2KU2QLCZ.js} +4 -4
  122. package/dist/{present-GQ24GTYX.js → present-EJ7XHGQO.js} +11 -11
  123. package/dist/{preview-ALL7O4RG.js → preview-O23BYFAY.js} +14 -14
  124. package/dist/{producer-43L2UDF6.js → producer-UJQVLKLP.js} +1 -1
  125. package/dist/{projectConfig-VJXUXK7U.js → projectConfig-QFVIBT37.js} +5 -5
  126. package/dist/{publication-L6E5NTFV.js → publication-4UYGFB2X.js} +1 -1
  127. package/dist/{publish-LCLBJEPR.js → publish-MHLVJLCR.js} +6 -6
  128. package/dist/{remove-background-PDL4KPR4.js → remove-background-N7AHTZWP.js} +5 -5
  129. package/dist/{render-7HVKJ7T4.js → render-6HQV4LZJ.js} +4 -4
  130. package/dist/{render-OPCRLZVL.js → render-CDATEVDJ.js} +10 -10
  131. package/dist/{render-J33ZHR6I.js → render-EI2ODKOP.js} +25 -25
  132. package/dist/{render-batch-ZHHIGXU3.js → render-batch-F7HMC7XH.js} +4 -4
  133. package/dist/{resolver-KNNIMMBM.js → resolver-63DB5JCY.js} +3 -3
  134. package/dist/{sherpa-GI62H3H5.js → sherpa-AK3MTPL3.js} +7 -7
  135. package/dist/{skills-IUTD6VQO.js → skills-EVIDL7PV.js} +5 -5
  136. package/dist/{skillsUpdateCheck-XZE7MJG6.js → skillsUpdateCheck-YCNJYDJO.js} +3 -3
  137. package/dist/{snapshot-XEXTHLZP.js → snapshot-WSYZKR3C.js} +29 -29
  138. package/dist/{src-6STRGCDC.js → src-KTD6WTEV.js} +4 -4
  139. package/dist/{src-ZPIV4PGX.js → src-YNXBU4ZQ.js} +4 -2
  140. package/dist/{staticProjectServer-HJLT7MHE.js → staticProjectServer-D2D3BKBP.js} +13 -11
  141. package/dist/studio/assets/{hyperframes-player-DwWIKKZG.js → hyperframes-player-CkK8Zijf.js} +1 -1
  142. package/dist/studio/assets/{index-Cjwz7_13.js → index-ATnRoBug.js} +1 -1
  143. package/dist/studio/assets/{index-M8lEpS0Q.js → index-B2JcCaRF.js} +4 -4
  144. package/dist/studio/index.html +1 -1
  145. package/dist/{studio-api-OBHEB5ND.js → studio-api-3ZGQPE5J.js} +5 -5
  146. package/dist/{studioServer-KRIZFYML.js → studioServer-VWM4J7ZP.js} +41 -41
  147. package/dist/{telemetry-N5OOVBCP.js → telemetry-BEVI64BB.js} +3 -3
  148. package/dist/{timeline-YUFH65OG.js → timeline-P57FUXJQ.js} +13 -13
  149. package/dist/{tokens-K4VYLSWJ.js → tokens-OUQY6LPD.js} +2 -2
  150. package/dist/{transcribe-GMQXKDYN.js → transcribe-CK66VIU4.js} +6 -6
  151. package/dist/{transcribe-CY4CVO54.js → transcribe-QUPX67KC.js} +12 -12
  152. package/dist/{updateCheck-2625RXK4.js → updateCheck-XZ43CH3L.js} +2 -2
  153. package/dist/{upgrade-6ZY5MSBQ.js → upgrade-7QQNGI7I.js} +2 -2
  154. package/dist/{urlDownloader-PVJWG7V3.js → urlDownloader-ESAEL6YX.js} +2 -2
  155. package/dist/{validate-XSRHEE7E.js → validate-5GZ6KFRU.js} +19 -19
  156. package/dist/{video-MBFHC54F.js → video-AQNVR6PE.js} +3 -3
  157. package/dist/warmCheck.js +32 -33
  158. package/package.json +1 -1
  159. package/dist/chunk-KANNRHY7.js +0 -53
@@ -4,22 +4,22 @@ 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
+ ambiguousIssue,
9
+ loadBrowserScript
10
+ } from "./chunk-TPTQHOXU.js";
7
11
  import {
8
12
  auditClipDurations,
9
13
  shouldIgnoreHttpError,
10
14
  shouldIgnoreRequestFailure
11
- } from "./chunk-FOLMMQF3.js";
12
- import {
13
- checkSnapshotDirectory,
14
- rectToBbox
15
- } from "./chunk-KANNRHY7.js";
16
- import {
17
- ambiguousIssue,
18
- loadBrowserScript
19
- } from "./chunk-2DHCCBCN.js";
15
+ } from "./chunk-JIPUWKLA.js";
20
16
  import {
21
17
  serveStaticProjectHtml
22
- } from "./chunk-XPVN4R66.js";
18
+ } from "./chunk-CSYSEPWL.js";
19
+ import {
20
+ artifactDirectory,
21
+ finishSnapshotRun
22
+ } from "./chunk-TMBUBLZB.js";
23
23
  import {
24
24
  FfmpegUnavailableError,
25
25
  decideMediaProxyEligibility,
@@ -27,7 +27,7 @@ import {
27
27
  proxyVariantFor,
28
28
  resolveProxies,
29
29
  scanProjectMediaCodecMap
30
- } from "./chunk-LWYZN7HS.js";
30
+ } from "./chunk-BZQLTNMB.js";
31
31
  import {
32
32
  AUDIT_SEEK_OPTIONS,
33
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -41,14 +41,17 @@ import {
41
41
  seekCompositionTimeline,
42
42
  seekInPage,
43
43
  waitForPreferredSeekTarget
44
- } from "./chunk-KDBPZOXK.js";
44
+ } from "./chunk-TREMHDWT.js";
45
45
  import {
46
46
  BrowserCleanupError,
47
47
  closeManagedBrowser
48
- } from "./chunk-MXXX6WVC.js";
48
+ } from "./chunk-HNMDLKA4.js";
49
+ import {
50
+ findStageProxyBox
51
+ } from "./chunk-SGFMCNLY.js";
49
52
  import {
50
53
  resolveAutoProxy
51
- } from "./chunk-DG4ME554.js";
54
+ } from "./chunk-Z2BW2WJS.js";
52
55
  import {
53
56
  normalizeErrorMessage
54
57
  } from "./chunk-KNU5COPB.js";
@@ -132,10 +135,41 @@ function dropMotionBlurConsoleEcho(drafts, found) {
132
135
  );
133
136
  }
134
137
 
138
+ // src/utils/checkSnapshotDirectory.ts
139
+ import { resolve } from "path";
140
+ var runDirectories = /* @__PURE__ */ new Map();
141
+ var activeChecks = /* @__PURE__ */ new Map();
142
+ function beginCheckSnapshots(projectDir) {
143
+ const project = resolve(projectDir);
144
+ activeChecks.set(project, (activeChecks.get(project) ?? 0) + 1);
145
+ }
146
+ function checkSnapshotDirectory(projectDir) {
147
+ const project = resolve(projectDir);
148
+ let directory = runDirectories.get(project);
149
+ if (!directory) {
150
+ directory = artifactDirectory(project, "snapshots");
151
+ runDirectories.set(project, directory);
152
+ }
153
+ return directory;
154
+ }
155
+ async function finishCheckSnapshots(projectDir) {
156
+ const project = resolve(projectDir);
157
+ const remaining = Math.max(0, (activeChecks.get(project) ?? 1) - 1);
158
+ if (remaining > 0) {
159
+ activeChecks.set(project, remaining);
160
+ return;
161
+ }
162
+ activeChecks.delete(project);
163
+ const path = runDirectories.get(project);
164
+ if (!path) return;
165
+ runDirectories.delete(project);
166
+ await finishSnapshotRun(project, path);
167
+ }
168
+
135
169
  // src/utils/checkBrowser.ts
136
170
  import { existsSync, mkdirSync, writeFileSync } from "fs";
137
171
  import os from "os";
138
- import { join, resolve } from "path";
172
+ import { join, resolve as resolve2 } from "path";
139
173
 
140
174
  // src/utils/gsapTweenTails.ts
141
175
  var TWEEN_TAIL_WINDOW = 0.25;
@@ -247,9 +281,14 @@ function collectTweenRecords() {
247
281
  );
248
282
  }
249
283
 
284
+ // src/utils/checkTypes.ts
285
+ function rectToBbox(rect) {
286
+ return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
287
+ }
288
+
250
289
  // src/utils/checkBrowser.ts
251
290
  async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride) {
252
- const none = { findings: [], failedPaths: /* @__PURE__ */ new Set() };
291
+ const none = { findings: [], failedPaths: /* @__PURE__ */ new Set(), files: [] };
253
292
  if (!resolveAutoProxy(projectDir, autoProxyOverride)) return none;
254
293
  let codecMap;
255
294
  try {
@@ -265,17 +304,20 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
265
304
  );
266
305
  if (hostileEntries.length === 0) return none;
267
306
  const startedAt = Date.now();
307
+ const stageBox = findStageProxyBox(html);
268
308
  const sources = hostileEntries.map(([pathname, facts]) => {
269
309
  const file = pathname.replace(/^\/+/, "");
270
310
  return {
271
311
  pathname,
272
312
  file,
273
- sourcePath: resolve(projectDir, file),
274
- variant: proxyVariantFor(facts)
313
+ sourcePath: resolve2(projectDir, file),
314
+ variant: proxyVariantFor(facts),
315
+ box: stageBox
275
316
  };
276
317
  });
277
318
  const total = hostileEntries.length;
278
- const toMake = sources.filter((source) => !proxyCached(projectDir, source)).length;
319
+ const cached = sources.map((source) => proxyCached(projectDir, source));
320
+ const toMake = cached.filter((isCached) => !isCached).length;
279
321
  if (toMake > 0) {
280
322
  console.error(
281
323
  `[hyperframes] Making browser-playable copies of ${toMake} video${toMake === 1 ? "" : "s"} Chrome cannot decode. Only the first check of these files waits for this; later checks reuse the copies.`
@@ -306,11 +348,18 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
306
348
  )
307
349
  );
308
350
  }
309
- return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)) };
351
+ const files = sources.map(({ file }, index) => {
352
+ const result = results[index];
353
+ if (result.status === "rejected") {
354
+ return { file, state: "failed", reason: normalizeErrorMessage(result.reason) };
355
+ }
356
+ return { file, state: cached[index] ? "cached" : "ready" };
357
+ });
358
+ return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)), files };
310
359
  }
311
360
  function proxyCached(projectDir, source) {
312
361
  try {
313
- return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant));
362
+ return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant, source.box));
314
363
  } catch {
315
364
  return false;
316
365
  }
@@ -319,7 +368,7 @@ function proxyFailedDraft(message) {
319
368
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
320
369
  }
321
370
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
322
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3QG722YD.js");
371
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDD2XDS2.js");
323
372
  const html = await bundleWithLocalizedFonts(project.dir);
324
373
  deadline?.enter("copies");
325
374
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
@@ -366,7 +415,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
366
415
  await waitForPreferredSeekTarget(page);
367
416
  const rootAnchor = await resolveRootAnchor(page);
368
417
  const launchSettleMs = Date.now() - launchSettleStart;
369
- const { analyzeClipMediaFit } = await import("./src-ZPIV4PGX.js");
418
+ const { analyzeClipMediaFit } = await import("./src-YNXBU4ZQ.js");
370
419
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
371
420
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
372
421
  }
@@ -475,7 +524,7 @@ function mergeHelperDrafts(primary, helper) {
475
524
  }
476
525
  async function captureFindingCrops(project, options, requests, deadline) {
477
526
  if (requests.length === 0) return [];
478
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3QG722YD.js");
527
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDD2XDS2.js");
479
528
  const html = await bundleWithLocalizedFonts(project.dir);
480
529
  const server = await serveStaticProjectHtml(
481
530
  project.dir,
@@ -651,11 +700,11 @@ async function abortedImagesStillBroken(page, drafts) {
651
700
  if (urls.length === 0) return /* @__PURE__ */ new Set();
652
701
  const broken = await page.evaluate(
653
702
  async (candidates, capMs) => {
654
- const fails = (img) => new Promise((resolve2) => {
655
- const cap = setTimeout(() => resolve2(false), capMs);
703
+ const fails = (img) => new Promise((resolve3) => {
704
+ const cap = setTimeout(() => resolve3(false), capMs);
656
705
  img.decode().then(
657
- () => resolve2(false),
658
- () => resolve2(true)
706
+ () => resolve3(false),
707
+ () => resolve3(true)
659
708
  ).finally(() => clearTimeout(cap));
660
709
  });
661
710
  const stillBroken = await Promise.all(
@@ -1680,6 +1729,10 @@ function matchComponentFindings({
1680
1729
  }
1681
1730
 
1682
1731
  export {
1732
+ beginCheckSnapshots,
1733
+ checkSnapshotDirectory,
1734
+ finishCheckSnapshots,
1735
+ rectToBbox,
1683
1736
  preResolveHostileMediaProxies,
1684
1737
  runBrowserCheck,
1685
1738
  samplingBrowserCount,
@@ -1278,7 +1278,7 @@ async function withFigmaErrors(command, fn) {
1278
1278
  } catch (err) {
1279
1279
  if (err instanceof Error) {
1280
1280
  try {
1281
- const { trackCommandFailure } = await import("./events-WIX4JM2K.js");
1281
+ const { trackCommandFailure } = await import("./events-GUIOSBIB.js");
1282
1282
  trackCommandFailure(
1283
1283
  command,
1284
1284
  err,
@@ -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-PMXR3IUH.js";
9
+ } from "./chunk-T37XXYRK.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-AWDFDFI3.js";
18
18
  import {
19
19
  isBlockedNetworkHost
20
- } from "./chunk-YCW345M4.js";
20
+ } from "./chunk-HXM2ISEK.js";
21
21
  import {
22
22
  DOMParser,
23
23
  parseHTML
@@ -14,17 +14,17 @@ import {
14
14
  } from "./chunk-6JR2XUEE.js";
15
15
  import {
16
16
  readCompositionFps
17
- } from "./chunk-B2P4JRUJ.js";
17
+ } from "./chunk-HUG47UEE.js";
18
18
  import {
19
19
  HF_AUDIO_GROUP_ATTR,
20
20
  extractAudioMetadata,
21
21
  extractMediaMetadata
22
- } from "./chunk-YCW345M4.js";
22
+ } from "./chunk-HXM2ISEK.js";
23
23
  import {
24
24
  byStart,
25
25
  fpsToNumber,
26
26
  parseFpsWithDefault
27
- } from "./chunk-YV4WT7CJ.js";
27
+ } from "./chunk-WYCFMNU3.js";
28
28
  import {
29
29
  HF_AUDIO_AUTOMATION_ATTR,
30
30
  HF_AUDIO_FX_ATTR,
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  sherpaParakeetInstalled,
9
9
  sherpaUnsupportedReason
10
- } from "./chunk-FWVILDOZ.js";
10
+ } from "./chunk-M6FHSQZ3.js";
11
11
  import {
12
12
  findParakeet
13
13
  } from "./chunk-JZIEZCQM.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-DKPNNYBZ.js";
15
15
  import {
16
16
  resolveCaptureBrowserGpuMode
17
- } from "./chunk-T3OXKSRG.js";
17
+ } from "./chunk-B52BJM5K.js";
18
18
  import {
19
19
  requestCliExit
20
20
  } from "./chunk-JVBRJMOP.js";
@@ -8,7 +8,7 @@ import {
8
8
  EncoderInterruptedError,
9
9
  encoderFailureError,
10
10
  prepareAnimatedGifInputs
11
- } from "./chunk-2WUDFZCR.js";
11
+ } from "./chunk-XJVXROOL.js";
12
12
  import {
13
13
  GENERIC_FAMILIES,
14
14
  collectFontFamilyCustomProperties,
@@ -41,6 +41,7 @@ import {
41
41
  analyzeCompositionHdr,
42
42
  analyzeKeyframeIntervals,
43
43
  appendRenderProvenanceArgs,
44
+ appendSoftwareEncoderThreadsArg,
44
45
  applyConcreteGpuScreenshotClamp,
45
46
  applyDomLayerMask,
46
47
  applyFaststart,
@@ -155,7 +156,7 @@ import {
155
156
  validateEngineConfigSnapshot,
156
157
  verifyDiskDrawElementSamples,
157
158
  writeCapturedFrame
158
- } from "./chunk-YCW345M4.js";
159
+ } from "./chunk-HXM2ISEK.js";
159
160
  import {
160
161
  DISTRIBUTED_FPS,
161
162
  HF_VFX_ATTR,
@@ -170,7 +171,7 @@ import {
170
171
  parseVfxChain,
171
172
  resolveAuthoredTimingWindow,
172
173
  toFps
173
- } from "./chunk-YV4WT7CJ.js";
174
+ } from "./chunk-WYCFMNU3.js";
174
175
  import {
175
176
  assignBundledRuntimeCompositionIds,
176
177
  buildVariablesByCompScript,
@@ -15499,7 +15500,7 @@ async function compilePlanComposition(projectDir, config, planDir, options) {
15499
15500
  if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
15500
15501
  if (probeResult.probeSession) {
15501
15502
  try {
15502
- const { closeCaptureSession: closeCaptureSession2 } = await import("./src-ZPIV4PGX.js");
15503
+ const { closeCaptureSession: closeCaptureSession2 } = await import("./src-YNXBU4ZQ.js");
15503
15504
  await closeCaptureSession2(probeResult.probeSession);
15504
15505
  } catch (err) {
15505
15506
  log.warn("[plan] probe session close failed", {
@@ -17148,7 +17149,7 @@ function startServer(options = {}) {
17148
17149
  });
17149
17150
  async function shutdown(signal) {
17150
17151
  log.info(`Received ${signal}, shutting down`);
17151
- const { drainBrowserPool } = await import("./src-ZPIV4PGX.js");
17152
+ const { drainBrowserPool } = await import("./src-YNXBU4ZQ.js");
17152
17153
  await drainBrowserPool().catch(() => {
17153
17154
  });
17154
17155
  const handle = await Promise.race([
@@ -18193,10 +18194,9 @@ function readAssemblePlan(planDir, chunkPaths) {
18193
18194
  function videoInputArgs(ctx, videoSources) {
18194
18195
  return videoSources.length === 1 ? ["-i", videoSources[0]] : concatDemuxerInput(videoSources, ctx.workDir, ctx.fpsArg);
18195
18196
  }
18196
- async function reencodeCfr(ctx, chunkPaths, encoder) {
18197
- const cfrOutputPath = join39(ctx.workDir, `cfr.${ctx.format}`);
18198
- const cfrArgs = [
18199
- ...videoInputArgs(ctx, chunkPaths),
18197
+ function cfrEncodeArgs(inputArgs, encoder, fpsArg) {
18198
+ const args = [
18199
+ ...inputArgs,
18200
18200
  "-c:v",
18201
18201
  "libx264",
18202
18202
  ...cfrRateControlArgs(encoder),
@@ -18205,8 +18205,14 @@ async function reencodeCfr(ctx, chunkPaths, encoder) {
18205
18205
  "-fps_mode",
18206
18206
  "cfr",
18207
18207
  "-r",
18208
- ctx.fpsArg
18208
+ fpsArg
18209
18209
  ];
18210
+ appendSoftwareEncoderThreadsArg(args);
18211
+ return args;
18212
+ }
18213
+ async function reencodeCfr(ctx, chunkPaths, encoder) {
18214
+ const cfrOutputPath = join39(ctx.workDir, `cfr.${ctx.format}`);
18215
+ const cfrArgs = cfrEncodeArgs(videoInputArgs(ctx, chunkPaths), encoder, ctx.fpsArg);
18210
18216
  appendRenderProvenanceArgs(cfrArgs, cfrOutputPath);
18211
18217
  cfrArgs.push("-y", cfrOutputPath);
18212
18218
  await ctx.timed(
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-YV4WT7CJ.js";
13
+ } from "./chunk-WYCFMNU3.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -26,7 +26,7 @@ import {
26
26
  renderFrameIdForRenderId,
27
27
  resolveAuthoredTimingWindow,
28
28
  toFps
29
- } from "./chunk-YV4WT7CJ.js";
29
+ } from "./chunk-WYCFMNU3.js";
30
30
  import {
31
31
  AUDIO_GROUP_RENDER_ID_ATTR,
32
32
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -8993,6 +8993,12 @@ async function analyzeKeyframeIntervalsUncached(filePath, videoStreamStartSecond
8993
8993
  };
8994
8994
  }
8995
8995
 
8996
+ // ../engine/src/services/softwareEncoderThreads.ts
8997
+ import { availableParallelism } from "os";
8998
+ function appendSoftwareEncoderThreadsArg(args, parallelism = availableParallelism()) {
8999
+ args.push("-threads", String(Math.max(1, Math.floor(parallelism))));
9000
+ }
9001
+
8996
9002
  // ../engine/src/utils/renderProvenance.ts
8997
9003
  import { readFileSync as readFileSync2 } from "fs";
8998
9004
  import { dirname, join as join5 } from "path";
@@ -9217,6 +9223,7 @@ function buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder = null) {
9217
9223
  } else {
9218
9224
  const encoderName = codec === "h264" ? "libx264" : "libx265";
9219
9225
  args.push("-c:v", encoderName, "-preset", preset);
9226
+ appendSoftwareEncoderThreadsArg(args);
9220
9227
  if (bitrate) args.push("-b:v", bitrate);
9221
9228
  else args.push("-crf", String(quality));
9222
9229
  const gop = resolveLockedGopSize(options);
@@ -9921,6 +9928,7 @@ function buildStreamingArgs(options, outputPath, gpuEncoder = null) {
9921
9928
  } else {
9922
9929
  const encoderName = codec === "h264" ? "libx264" : "libx265";
9923
9930
  args.push("-c:v", encoderName, "-preset", preset);
9931
+ appendSoftwareEncoderThreadsArg(args);
9924
9932
  if (bitrate) args.push("-b:v", bitrate);
9925
9933
  else args.push("-crf", String(quality));
9926
9934
  const lockedGop = resolveLockedGopSize(options);
@@ -12472,6 +12480,7 @@ function resolveVideoExtractionDuration(video, metadata, timelineEnd) {
12472
12480
  return resolveVideoExtractionWindow(video, metadata, timelineEnd).durationSeconds;
12473
12481
  }
12474
12482
  var ALPHA_CAPABLE_CODECS = /* @__PURE__ */ new Set(["vp9", "vp8", "prores"]);
12483
+ var SIDECAR_ALPHA_CODECS = /* @__PURE__ */ new Set(["vp9", "vp8"]);
12475
12484
  function codecMayHaveAlpha(codec) {
12476
12485
  return ALPHA_CAPABLE_CODECS.has((codec ?? "").toLowerCase());
12477
12486
  }
@@ -12479,7 +12488,8 @@ function decoderForCodec(codec) {
12479
12488
  return alphaDecoderFor(codec) ?? (codec ?? "").toLowerCase();
12480
12489
  }
12481
12490
  function resolveFrameFormat(metadata, requested) {
12482
- if (metadata.hasAlpha || codecMayHaveAlpha(metadata.videoCodec)) return "png";
12491
+ if (metadata.hasAlpha || SIDECAR_ALPHA_CODECS.has((metadata.videoCodec ?? "").toLowerCase()))
12492
+ return "png";
12483
12493
  if (requested === "png" || requested === "jpg") return requested;
12484
12494
  return "jpg";
12485
12495
  }
@@ -15239,7 +15249,8 @@ function boundedDetail(message, maxLength = 2e3) {
15239
15249
  /(^|[\s"'(])\/.+?(?=:\s[A-Z]|\s(?:ENOENT|EACCES|EPERM)\b|\r?$)/gm,
15240
15250
  "$1<redacted-path>"
15241
15251
  );
15242
- return redacted.length <= maxLength ? redacted : `${redacted.slice(0, maxLength - 1)}\u2026`;
15252
+ const head = Math.floor(maxLength / 4);
15253
+ return redacted.length <= maxLength ? redacted : `${redacted.slice(0, head)}\u2026${redacted.slice(-(maxLength - head - 1))}`;
15243
15254
  }
15244
15255
  function probeFailure(message, elementId) {
15245
15256
  const unavailable = /(?:not found|ENOENT|spawn)/i.test(message);
@@ -15303,7 +15314,7 @@ function ffmpegFailure(stage, result, timeoutMs, elementId) {
15303
15314
  elementId,
15304
15315
  subprocess: audioSubprocessEvidence(result),
15305
15316
  detail: boundedDetail(
15306
- result.error?.message ? `${describeFfmpegFailure(result, timeoutMs)}: ${result.error.message}` : describeFfmpegFailure(result, timeoutMs)
15317
+ `(ran ${result.durationMs} ms, limit ${timeoutMs} ms) ` + (result.error?.message ? `${describeFfmpegFailure(result, timeoutMs)}: ${result.error.message}` : describeFfmpegFailure(result, timeoutMs))
15307
15318
  )
15308
15319
  };
15309
15320
  }
@@ -15500,8 +15511,13 @@ async function generateSilence(outputPath, duration, signal, config) {
15500
15511
  failure
15501
15512
  };
15502
15513
  }
15503
- async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config) {
15504
- const ffmpegProcessTimeout = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG.ffmpegProcessTimeout;
15514
+ var MIX_TIMEOUT_MS_PER_FILM_SECOND = 100;
15515
+ function mixProcessTimeout(config, totalDuration) {
15516
+ const configured = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG.ffmpegProcessTimeout;
15517
+ return Math.max(configured, Math.ceil(totalDuration * MIX_TIMEOUT_MS_PER_FILM_SECOND));
15518
+ }
15519
+ async function mixAudioTracksFlat(tracks, outputPath, totalDuration, signal, config) {
15520
+ const ffmpegProcessTimeout = mixProcessTimeout(config, totalDuration);
15505
15521
  const masterOutputGain = config?.audioGain ?? DEFAULT_CONFIG.audioGain;
15506
15522
  if (tracks.length === 0) {
15507
15523
  const result2 = await generateSilence(outputPath, totalDuration, signal, config);
@@ -15621,8 +15637,8 @@ async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config)
15621
15637
  function groupNormalizeOptionUnsupported(stderr) {
15622
15638
  return /normalize/i.test(stderr) && /(?:unrecognized option|option (?:was )?not found|no option name)/i.test(stderr);
15623
15639
  }
15624
- async function mixGroupMembers(memberTracks, outputPath, totalDuration, signal, config) {
15625
- const ffmpegProcessTimeout = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG.ffmpegProcessTimeout;
15640
+ async function mixGroupMembersFlat(memberTracks, outputPath, totalDuration, signal, config) {
15641
+ const ffmpegProcessTimeout = mixProcessTimeout(config, totalDuration);
15626
15642
  const outputDir = dirname7(outputPath);
15627
15643
  if (!existsSync11(outputDir)) mkdirSync7(outputDir, { recursive: true });
15628
15644
  const buildInputFilters = (ignoreKeyframes, padMembers) => memberTracks.map((track, i) => {
@@ -15707,6 +15723,100 @@ async function mixGroupMembers(memberTracks, outputPath, totalDuration, signal,
15707
15723
  }
15708
15724
  return { success: true, degradedAutomation };
15709
15725
  }
15726
+ var MAX_MIX_INPUTS = 96;
15727
+ async function sumInSlices(tracks, scratchDir, totalDuration, signal, config) {
15728
+ const wavTrack = (id, srcPath) => ({
15729
+ id,
15730
+ srcPath,
15731
+ start: 0,
15732
+ end: totalDuration,
15733
+ mediaStart: 0,
15734
+ duration: totalDuration,
15735
+ volume: 1
15736
+ });
15737
+ let running = null;
15738
+ let degradedAutomation = false;
15739
+ for (let at = 0; at < tracks.length; at += MAX_MIX_INPUTS) {
15740
+ const id = `sum-${at / MAX_MIX_INPUTS}`;
15741
+ const slicePath = join14(scratchDir, `${id}-slice.wav`);
15742
+ const slice = await mixGroupMembersFlat(
15743
+ tracks.slice(at, at + MAX_MIX_INPUTS),
15744
+ slicePath,
15745
+ totalDuration,
15746
+ signal,
15747
+ config
15748
+ );
15749
+ if (!slice.success) return slice;
15750
+ degradedAutomation ||= slice.degradedAutomation === true;
15751
+ if (!running) {
15752
+ running = wavTrack(id, slicePath);
15753
+ continue;
15754
+ }
15755
+ const foldedPath = join14(scratchDir, `${id}.wav`);
15756
+ const folded = await mixGroupMembersFlat(
15757
+ [running, wavTrack(`${id}-slice`, slicePath)],
15758
+ foldedPath,
15759
+ totalDuration,
15760
+ signal,
15761
+ config
15762
+ );
15763
+ rmSync8(running.srcPath, { force: true });
15764
+ rmSync8(slicePath, { force: true });
15765
+ if (!folded.success) return folded;
15766
+ running = wavTrack(id, foldedPath);
15767
+ }
15768
+ if (!running) throw new Error("[audioMixer] sumInSlices needs at least one track");
15769
+ return { success: true, track: running, degradedAutomation };
15770
+ }
15771
+ async function mixGroupMembers(memberTracks, outputPath, totalDuration, signal, config) {
15772
+ if (memberTracks.length <= MAX_MIX_INPUTS) {
15773
+ return mixGroupMembersFlat(memberTracks, outputPath, totalDuration, signal, config);
15774
+ }
15775
+ mkdirSync7(dirname7(outputPath), { recursive: true });
15776
+ const scratchDir = mkdtempSync7(join14(dirname7(outputPath), ".mix-batches-"));
15777
+ try {
15778
+ const summed = await sumInSlices(memberTracks, scratchDir, totalDuration, signal, config);
15779
+ if (!summed.success) return summed;
15780
+ renameSync3(summed.track.srcPath, outputPath);
15781
+ return { success: true, degradedAutomation: summed.degradedAutomation };
15782
+ } finally {
15783
+ rmSync8(scratchDir, { recursive: true, force: true });
15784
+ }
15785
+ }
15786
+ async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config) {
15787
+ if (tracks.length <= MAX_MIX_INPUTS) {
15788
+ return mixAudioTracksFlat(tracks, outputPath, totalDuration, signal, config);
15789
+ }
15790
+ mkdirSync7(dirname7(outputPath), { recursive: true });
15791
+ const scratchDir = mkdtempSync7(join14(dirname7(outputPath), ".mix-batches-"));
15792
+ try {
15793
+ const summed = await sumInSlices(tracks, scratchDir, totalDuration, signal, config);
15794
+ if (!summed.success) {
15795
+ return {
15796
+ success: false,
15797
+ outputPath,
15798
+ durationMs: 0,
15799
+ tracksProcessed: 0,
15800
+ error: summed.error,
15801
+ failures: [summed.failure]
15802
+ };
15803
+ }
15804
+ const mixed = await mixAudioTracksFlat(
15805
+ [summed.track],
15806
+ outputPath,
15807
+ totalDuration,
15808
+ signal,
15809
+ config
15810
+ );
15811
+ return mixed.success ? {
15812
+ ...mixed,
15813
+ tracksProcessed: tracks.length,
15814
+ error: summed.degradedAutomation ? "Volume automation exceeded this ffmpeg build's expression limits; rendered at base volume" : mixed.error
15815
+ } : mixed;
15816
+ } finally {
15817
+ rmSync8(scratchDir, { recursive: true, force: true });
15818
+ }
15819
+ }
15710
15820
  async function mixThroughFloatSum(tracks, masterChain, outputPath, workDir, totalDuration, signal, config) {
15711
15821
  const sumPath = join14(workDir, "master-sum.wav");
15712
15822
  const sum = await mixAudioTracks(tracks, sumPath, totalDuration, signal, config);
@@ -17396,6 +17506,7 @@ export {
17396
17506
  extractVideoMetadata,
17397
17507
  extractAudioMetadata,
17398
17508
  analyzeKeyframeIntervals,
17509
+ appendSoftwareEncoderThreadsArg,
17399
17510
  PROVENANCE_RENDERER_TAG,
17400
17511
  PROVENANCE_VERSION_TAG,
17401
17512
  PROVENANCE_RENDERER_NAME,
@@ -15,13 +15,13 @@ import {
15
15
  findFFmpeg,
16
16
  findFFprobe,
17
17
  getFFmpegInstallHint
18
- } from "./chunk-NMOTNNP2.js";
18
+ } from "./chunk-3OLOVRWS.js";
19
19
  import {
20
20
  DEFAULT_VP9_CPU_USED,
21
21
  SDR_RGB_TO_BT709_FILTER,
22
22
  SDR_RGB_TO_TAGGED_BT709_FILTER,
23
23
  renderProvenanceArgs
24
- } from "./chunk-YCW345M4.js";
24
+ } from "./chunk-HXM2ISEK.js";
25
25
 
26
26
  // src/background-removal/pipeline.ts
27
27
  import { spawn } from "child_process";
@@ -262,7 +262,7 @@ function inferInputKind(inputPath) {
262
262
  }
263
263
  async function probeMedia(inputPath) {
264
264
  const isImage = inferInputKind(inputPath) === "image";
265
- const engine = await import("./src-ZPIV4PGX.js");
265
+ const engine = await import("./src-YNXBU4ZQ.js");
266
266
  const meta = await engine.extractMediaMetadata(inputPath);
267
267
  if (isImage) {
268
268
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -8,7 +8,7 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-PMXR3IUH.js";
11
+ } from "./chunk-T37XXYRK.js";
12
12
  import {
13
13
  CliRuntimeError
14
14
  } from "./chunk-JVBRJMOP.js";