hyperframes 0.8.185 → 0.8.188

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 (186) hide show
  1. package/dist/{add-ODTNPRGG.js → add-UORF6235.js} +12 -12
  2. package/dist/{animatedGifPrep-PEP5GWOJ.js → animatedGifPrep-23MLSEXF.js} +7 -7
  3. package/dist/api.js +16 -16
  4. package/dist/{asset-EZG42XPA.js → asset-DOKDVHCW.js} +2 -2
  5. package/dist/{assetCataloger-OHAJFCA7.js → assetCataloger-CD27MHEY.js} +7 -7
  6. package/dist/audio-3NMZHNNU.js +2317 -0
  7. package/dist/{auth-VP2SIZFN.js → auth-AWKTSKGC.js} +1 -1
  8. package/dist/{autoUpdate-RVSUX4SS.js → autoUpdate-VBOI4CNU.js} +2 -2
  9. package/dist/{backgroundChecks-LEHK74NS.js → backgroundChecks-S4R454YU.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-3X6CL7PK.js → batchRender-EGPYNDHK.js} +4 -4
  12. package/dist/{beats-66VPQLSC.js → beats-YENEQUOA.js} +5 -5
  13. package/dist/{benchmark-PBJVTOJP.js → benchmark-THSJIQG7.js} +9 -9
  14. package/dist/{browser-TPL5MWGC.js → browser-BDMVQ6WJ.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-67MLTHKM.js → bundleWithLocalizedFonts-3QG722YD.js} +2 -2
  16. package/dist/{capture-YYRE7EV3.js → capture-WM4XDMFX.js} +2 -2
  17. package/dist/{capture-F3GNMRZM.js → capture-Z6BGCTK3.js} +10 -10
  18. package/dist/{captureCompositionFrame-PXV2ISHD.js → captureCompositionFrame-EMHSAIBZ.js} +15 -11
  19. package/dist/{catalog-6SDD3OHF.js → catalog-7TV6UNCG.js} +12 -12
  20. package/dist/{catch-up-CWIVA5VG.js → catch-up-63IUDZRW.js} +4 -4
  21. package/dist/{check-YQ6REK2S.js → check-7RHZL4DV.js} +32 -32
  22. package/dist/{checkBrowser-5XZCBRXM.js → checkBrowser-PF56CT5X.js} +29 -29
  23. package/dist/{chunk-TAX2ZJAP.js → chunk-2DHCCBCN.js} +9 -9
  24. package/dist/{chunk-K73RJB23.js → chunk-2WUDFZCR.js} +2 -2
  25. package/dist/{chunk-4CTNDBE3.js → chunk-44QWRPGE.js} +2 -2
  26. package/dist/{chunk-X6L6MD5B.js → chunk-46VJ2UAV.js} +6 -6
  27. package/dist/{chunk-BRAPBUPQ.js → chunk-57XL23DE.js} +1 -1
  28. package/dist/{chunk-J36JVBLR.js → chunk-5C7R55BJ.js} +1 -1
  29. package/dist/{chunk-SKYPMHQC.js → chunk-5DPV7LU3.js} +3 -3
  30. package/dist/{chunk-D42NU3DZ.js → chunk-5OZI55AC.js} +1 -1
  31. package/dist/{chunk-5UBZPG74.js → chunk-6A45RKAK.js} +1 -1
  32. package/dist/{chunk-I7QMXZSB.js → chunk-6HYPEIH7.js} +2 -2
  33. package/dist/{chunk-KQ4JEJLF.js → chunk-6HZ7TSJJ.js} +14 -8
  34. package/dist/{chunk-6ASIXMFP.js → chunk-6OWNUXTU.js} +1 -1
  35. package/dist/{chunk-WQLKDL35.js → chunk-6Q5CFUAP.js} +1 -1
  36. package/dist/{chunk-G2UANIDX.js → chunk-B2P4JRUJ.js} +1 -1
  37. package/dist/chunk-BPX7LZG6.js +3896 -0
  38. package/dist/{chunk-EMAWIZ54.js → chunk-BU4HRISA.js} +58 -21
  39. package/dist/{chunk-ESBMUZXZ.js → chunk-BWEZDN6U.js} +1 -1
  40. package/dist/{chunk-5UDRPPN2.js → chunk-CE7EQUBV.js} +8 -5
  41. package/dist/{chunk-UPR3MU6Z.js → chunk-DA4TQFSF.js} +1 -1
  42. package/dist/{chunk-HDIRZGK4.js → chunk-DG4ME554.js} +1 -1
  43. package/dist/{chunk-RTBSA3EA.js → chunk-DLFAVRF3.js} +1 -1
  44. package/dist/{chunk-TTVHYD5R.js → chunk-EI7FP7F3.js} +1 -1
  45. package/dist/{chunk-RUEGYANA.js → chunk-FOLMMQF3.js} +11 -11
  46. package/dist/{chunk-5GUKZRQN.js → chunk-FSTLXRIN.js} +1 -1
  47. package/dist/{chunk-CX3USX23.js → chunk-FWVILDOZ.js} +3 -3
  48. package/dist/{chunk-IVEFOUZI.js → chunk-GYBPAKBM.js} +2287 -2264
  49. package/dist/{chunk-HXUTX5GR.js → chunk-HKUZCSNZ.js} +2 -2
  50. package/dist/{chunk-PMMQRJDE.js → chunk-HPQSUPR7.js} +1 -1
  51. package/dist/{chunk-7RAY4WZP.js → chunk-I7C5GUEQ.js} +3 -3
  52. package/dist/{chunk-55YELV7B.js → chunk-IA2IDJAG.js} +1 -1
  53. package/dist/{chunk-7PS6RVWD.js → chunk-IJYR4TTA.js} +1 -1
  54. package/dist/{chunk-6RIZY7OP.js → chunk-JWRT2IXO.js} +1 -1
  55. package/dist/{chunk-2TAS5O4P.js → chunk-JYC53CW4.js} +108 -20
  56. package/dist/{chunk-IDFNKFPL.js → chunk-KDBPZOXK.js} +18 -7
  57. package/dist/{chunk-ISTRDGIX.js → chunk-KWSEIVR6.js} +1 -1
  58. package/dist/{chunk-IPDKZ5IN.js → chunk-KY7375C4.js} +1 -1
  59. package/dist/{chunk-F3OPUWQX.js → chunk-L243NE72.js} +7 -7
  60. package/dist/{chunk-H6UY725W.js → chunk-LWY3PFJ7.js} +2 -2
  61. package/dist/{chunk-6GPR3G3C.js → chunk-LWYZN7HS.js} +1 -1
  62. package/dist/{chunk-OAG47RE6.js → chunk-MJKUCR3C.js} +1 -1
  63. package/dist/{chunk-SQVRXHOW.js → chunk-MTPPEEYZ.js} +3 -3
  64. package/dist/{chunk-TOI35GN2.js → chunk-MXXX6WVC.js} +1 -1
  65. package/dist/{chunk-BH7TTIPN.js → chunk-NFHRGHCJ.js} +5 -5
  66. package/dist/{chunk-IDGLGXPA.js → chunk-NFLZNSUZ.js} +1 -1
  67. package/dist/{chunk-K2ZKXTVL.js → chunk-NMOTNNP2.js} +1 -1
  68. package/dist/{chunk-LYKSTRAY.js → chunk-OJOZXWLC.js} +3 -3
  69. package/dist/{chunk-FX6RUJUY.js → chunk-OKSYDQHY.js} +3 -3
  70. package/dist/{chunk-H5SM5PJI.js → chunk-PMXR3IUH.js} +1 -1
  71. package/dist/{chunk-A6QCO474.js → chunk-PQLFJYGP.js} +5 -5
  72. package/dist/{chunk-PFD25NAC.js → chunk-RIJHDTM5.js} +4 -0
  73. package/dist/{chunk-Q47FAYYK.js → chunk-SMF6YAUL.js} +9 -11
  74. package/dist/{chunk-EMSDWBG3.js → chunk-T3OXKSRG.js} +2 -2
  75. package/dist/{chunk-VHZ6DL3M.js → chunk-TMK4Q7JA.js} +10 -7
  76. package/dist/{chunk-Q447CX26.js → chunk-TSFA2Y5C.js} +60 -47
  77. package/dist/{chunk-XWC7CNPY.js → chunk-UF6RCYA5.js} +1 -1
  78. package/dist/{chunk-I45HL3VP.js → chunk-V6NM4KL3.js} +3 -3
  79. package/dist/{chunk-FFJ5TDRD.js → chunk-VHBBV5DH.js} +10 -3
  80. package/dist/{chunk-HHSJJFVM.js → chunk-W2KGJHUL.js} +2 -2
  81. package/dist/{chunk-37CNYTQQ.js → chunk-X556BGL7.js} +1 -1
  82. package/dist/{chunk-UJKQWGFF.js → chunk-X7HBSTCZ.js} +8 -0
  83. package/dist/{chunk-CML25PAF.js → chunk-XNFDDVJS.js} +27 -3
  84. package/dist/{chunk-J5XEZ24I.js → chunk-XPVN4R66.js} +3 -3
  85. package/dist/{chunk-I3IH5MV5.js → chunk-YCW345M4.js} +222 -118
  86. package/dist/{chunk-KROXPHXX.js → chunk-YV4WT7CJ.js} +5 -9
  87. package/dist/{chunk-PHMBMOXF.js → chunk-YZ73IPW2.js} +48 -4
  88. package/dist/{clean-7J6ZCCGV.js → clean-43O47OTN.js} +16 -16
  89. package/dist/cli.js +53 -53
  90. package/dist/{cloud-7IJCJCDD.js → cloud-ZFWKFFSU.js} +4 -4
  91. package/dist/{cloudrun-UNZRIIDB.js → cloudrun-XBBESKEU.js} +5 -5
  92. package/dist/{compare-Q7VW5JZT.js → compare-OW4ELTFZ.js} +26 -26
  93. package/dist/{compiler-KPHYGFXL.js → compiler-23MT6CX6.js} +4 -4
  94. package/dist/{component-UUBREJKN.js → component-SDV7LWH6.js} +3 -3
  95. package/dist/{compositions-T4FTKIDP.js → compositions-DI5QZCEK.js} +11 -11
  96. package/dist/{delete-WZQF2IIA.js → delete-QY2NSQ2G.js} +4 -4
  97. package/dist/deploy-MJVC4EFY.js +300 -0
  98. package/dist/{destroy-4B5HW5FH.js → destroy-SSPAKADI.js} +13 -3
  99. package/dist/{dist-LM7AVHOU.js → dist-JH32CBQL.js} +1 -1
  100. package/dist/{dist-ULGTPSU4.js → dist-RFTGYT26.js} +7 -5
  101. package/dist/{doctor-VSNGRKXJ.js → doctor-7ZOECPHR.js} +11 -11
  102. package/dist/{events-E63YBUL2.js → events-WIX4JM2K.js} +3 -3
  103. package/dist/{events-CRW2DYUT.js → events-XVQQGECC.js} +2 -2
  104. package/dist/{feedback-OSZWVR6N.js → feedback-GBYBR6UO.js} +7 -7
  105. package/dist/{ffmpeg-JLH3Z7G7.js → ffmpeg-QGQBYMO3.js} +7 -7
  106. package/dist/{figma-2BQNNR53.js → figma-2CMKUGJQ.js} +3 -3
  107. package/dist/fontLocalizeCli.js +9 -9
  108. package/dist/{get-P2XI53QW.js → get-RWCNUOHU.js} +4 -4
  109. package/dist/{gpuPolicy-NTKQJY75.js → gpuPolicy-UGWSN32D.js} +7 -7
  110. package/dist/{grade-compare-OYASIHIB.js → grade-compare-J2MX7HZL.js} +27 -27
  111. package/dist/{help-HK6K2N4G.js → help-SH3ID7MV.js} +1 -1
  112. package/dist/{history-JMTYKLXW.js → history-C7V5QH7J.js} +6 -6
  113. package/dist/hyperframe.manifest.json +1 -1
  114. package/dist/hyperframe.runtime.iife.js +70 -69
  115. package/dist/hyperframes-player.global.js +3 -3
  116. package/dist/{info-AW7CIVRE.js → info-ZN3JJ3IN.js} +8 -8
  117. package/dist/{init-6KIDG4LB.js → init-KRNGSRNH.js} +65 -47
  118. package/dist/{inspect-B7BLYMRZ.js → inspect-AYDZXTX7.js} +27 -27
  119. package/dist/{installer-ZP2LQZUQ.js → installer-N6AIK6XQ.js} +5 -5
  120. package/dist/{keyframes-EQ36A5JE.js → keyframes-2RFUCEDK.js} +6 -6
  121. package/dist/{lambda-E6VURLIS.js → lambda-VW3CF6EE.js} +20 -13
  122. package/dist/{layout-XYC64QQQ.js → layout-OE64APE7.js} +27 -27
  123. package/dist/{lint-V5DJYWBX.js → lint-UXJTX5WS.js} +7 -7
  124. package/dist/{lintProject-JATQKR64.js → lintProject-XM3DLUKG.js} +1 -1
  125. package/dist/{list-RUGVRTVD.js → list-KOL6JPZJ.js} +7 -7
  126. package/dist/{login-ZTKGKXGS.js → login-MAQXOPDG.js} +4 -4
  127. package/dist/{manager-JUP7PM6N.js → manager-3LZKRK7P.js} +8 -8
  128. package/dist/{media-treatment-VIUPK4OR.js → media-treatment-COLSXXQJ.js} +13 -13
  129. package/dist/{models-LJS2HBOZ.js → models-XXWMGOD7.js} +11 -11
  130. package/dist/{motionShot-3UAXZ7SN.js → motionShot-RECBNTBZ.js} +14 -14
  131. package/dist/{normalize-4UDISLPL.js → normalize-3AYFSN2F.js} +1 -1
  132. package/dist/{normalize-audio-SBYI4YIH.js → normalize-audio-LKVGHZWR.js} +6 -6
  133. package/dist/{open-S27TUD3A.js → open-UEQVSRKH.js} +12 -12
  134. package/dist/{parakeetRunner-ETLMLJ4L.js → parakeetRunner-QVPCZ36U.js} +12 -12
  135. package/dist/{pipeline-I2M22M24.js → pipeline-5VSMQBKW.js} +8 -8
  136. package/dist/{play-COJU6VJK.js → play-MNEABYN4.js} +19 -19
  137. package/dist/{policies-XXNGXWHV.js → policies-MBWGLMWB.js} +17 -0
  138. package/dist/{preflight-FZ24NCHH.js → preflight-ONJ74DWQ.js} +8 -8
  139. package/dist/{present-YAHKLC5D.js → present-GQ24GTYX.js} +15 -15
  140. package/dist/{preview-KQOEU5YE.js → preview-ALL7O4RG.js} +18 -18
  141. package/dist/{producer-DTNNG4T6.js → producer-43L2UDF6.js} +1 -1
  142. package/dist/{progress-NHJIHAAG.js → progress-PX3PVAIM.js} +5 -3
  143. package/dist/{projectConfig-4A76VYUP.js → projectConfig-VJXUXK7U.js} +7 -7
  144. package/dist/{publication-SQPMC2W3.js → publication-L6E5NTFV.js} +3 -3
  145. package/dist/{publish-QUEJBGGT.js → publish-LCLBJEPR.js} +9 -9
  146. package/dist/{remove-background-FP2ETAQH.js → remove-background-PDL4KPR4.js} +9 -9
  147. package/dist/{render-P664SMC7.js → render-7HVKJ7T4.js} +9 -7
  148. package/dist/{render-BIFIL4U6.js → render-J33ZHR6I.js} +44 -28
  149. package/dist/{render-GQFXJWLV.js → render-OPCRLZVL.js} +31 -22
  150. package/dist/{render-batch-ZCPMYH6Z.js → render-batch-ZHHIGXU3.js} +5 -5
  151. package/dist/renderSetupWorker.js +1 -1
  152. package/dist/{resolver-BUC2GFZQ.js → resolver-KNNIMMBM.js} +5 -5
  153. package/dist/{sam-MC24SZHC.js → sam-FHJ7IL7T.js} +3 -1
  154. package/dist/{sherpa-HFT6XEP6.js → sherpa-GI62H3H5.js} +11 -11
  155. package/dist/{sites-MAVH57MO.js → sites-5PWHAMEG.js} +1 -1
  156. package/dist/skills/hyperframes/references/motion.md +1 -0
  157. package/dist/{skills-3WEVO3NU.js → skills-IUTD6VQO.js} +5 -5
  158. package/dist/{skillsUpdateCheck-BFPWFOK5.js → skillsUpdateCheck-XZE7MJG6.js} +3 -3
  159. package/dist/{snapshot-WDQ6S7CJ.js → snapshot-XEXTHLZP.js} +37 -34
  160. package/dist/{src-NPR2JZOJ.js → src-6STRGCDC.js} +8 -8
  161. package/dist/{src-RZ574OKP.js → src-ZPIV4PGX.js} +10 -6
  162. package/dist/{state-ORRPOLMQ.js → state-JPNCCXAV.js} +3 -1
  163. package/dist/{staticProjectServer-FTGTEZI4.js → staticProjectServer-HJLT7MHE.js} +15 -15
  164. package/dist/studio/assets/{hyperframes-player-CoOdf435.js → hyperframes-player-DwWIKKZG.js} +1 -1
  165. package/dist/studio/assets/{index-CR85xg2x.js → index-Cjwz7_13.js} +1 -1
  166. package/dist/studio/assets/{index-C_6rTpaB.js → index-M8lEpS0Q.js} +131 -131
  167. package/dist/studio/index.html +1 -1
  168. package/dist/{studio-api-TAWB7B23.js → studio-api-OBHEB5ND.js} +9 -9
  169. package/dist/{studioServer-HRQGJTBU.js → studioServer-KRIZFYML.js} +47 -46
  170. package/dist/{telemetry-QZ6HJF4W.js → telemetry-N5OOVBCP.js} +3 -3
  171. package/dist/templates/_shared/AGENTS.md +5 -0
  172. package/dist/templates/_shared/CLAUDE.md +5 -0
  173. package/dist/{timeline-IKUEW42T.js → timeline-YUFH65OG.js} +17 -17
  174. package/dist/{tokens-AUGUEWHS.js → tokens-K4VYLSWJ.js} +2 -2
  175. package/dist/{transcribe-7734CG3N.js → transcribe-CY4CVO54.js} +17 -17
  176. package/dist/{transcribe-FWU6EMEO.js → transcribe-GMQXKDYN.js} +10 -10
  177. package/dist/{updateCheck-VIPQ3FPW.js → updateCheck-2625RXK4.js} +2 -2
  178. package/dist/{upgrade-4VNDQTVO.js → upgrade-6ZY5MSBQ.js} +2 -2
  179. package/dist/{urlDownloader-6CXL4CL7.js → urlDownloader-PVJWG7V3.js} +6 -6
  180. package/dist/{validate-QWCMVWID.js → validate-XSRHEE7E.js} +21 -21
  181. package/dist/{video-245Q5WN4.js → video-MBFHC54F.js} +7 -7
  182. package/dist/warmCheck.js +34 -34
  183. package/package.json +18 -2
  184. package/dist/audio-65R4T74I.js +0 -1154
  185. package/dist/chunk-3NPOFC43.js +0 -3805
  186. package/dist/deploy-JU7A3XNC.js +0 -196
@@ -11,13 +11,13 @@ import {
11
11
  } from "./chunk-57GN6KWT.js";
12
12
  import {
13
13
  captureArtifactRevision
14
- } from "./chunk-OAG47RE6.js";
14
+ } from "./chunk-MJKUCR3C.js";
15
15
  import {
16
16
  loadProducer
17
- } from "./chunk-7PS6RVWD.js";
17
+ } from "./chunk-IJYR4TTA.js";
18
18
  import {
19
19
  trackLintRun
20
- } from "./chunk-I45HL3VP.js";
20
+ } from "./chunk-V6NM4KL3.js";
21
21
  import {
22
22
  beginCheckSnapshots,
23
23
  checkSnapshotDirectory,
@@ -46,27 +46,27 @@ import {
46
46
  mergeSampleTimes,
47
47
  parseAt,
48
48
  readMotionSpec
49
- } from "./chunk-TAX2ZJAP.js";
49
+ } from "./chunk-2DHCCBCN.js";
50
50
  import {
51
51
  resolveProject
52
- } from "./chunk-5GUKZRQN.js";
52
+ } from "./chunk-FSTLXRIN.js";
53
53
  import {
54
54
  recordArtifacts
55
55
  } from "./chunk-U6RXZNZE.js";
56
56
  import {
57
57
  BrowserCleanupError,
58
58
  closeManagedBrowser
59
- } from "./chunk-TOI35GN2.js";
59
+ } from "./chunk-MXXX6WVC.js";
60
60
  import {
61
61
  withRemainingBudget
62
62
  } from "./chunk-EHSBBBR2.js";
63
63
  import {
64
64
  resolveLocalBrowserGpuMode
65
- } from "./chunk-EMSDWBG3.js";
65
+ } from "./chunk-T3OXKSRG.js";
66
66
  import {
67
67
  trackCheckReport,
68
68
  trackCommandFailure
69
- } from "./chunk-WQLKDL35.js";
69
+ } from "./chunk-6Q5CFUAP.js";
70
70
  import {
71
71
  swallowedFlagUsageError
72
72
  } from "./chunk-HTIUNMTP.js";
@@ -86,17 +86,17 @@ import {
86
86
  import {
87
87
  extractMediaMetadata,
88
88
  findHdrAutoPromotion
89
- } from "./chunk-I3IH5MV5.js";
89
+ } from "./chunk-YCW345M4.js";
90
90
  import {
91
91
  lintProject,
92
92
  shouldBlockRender
93
- } from "./chunk-Q447CX26.js";
93
+ } from "./chunk-TSFA2Y5C.js";
94
94
  import {
95
95
  resolveProjectRelativeSrc
96
96
  } from "./chunk-6BNTGNGD.js";
97
97
  import {
98
98
  withMeta
99
- } from "./chunk-ISTRDGIX.js";
99
+ } from "./chunk-KWSEIVR6.js";
100
100
  import {
101
101
  normalizeErrorMessage
102
102
  } from "./chunk-KNU5COPB.js";
@@ -110,10 +110,20 @@ import { join as join2, resolve } from "path";
110
110
  var CHECK_DEADLINE_MS = 12e4;
111
111
  var SCRIPT_START = "[hyperframes:script:start] ";
112
112
  var SCRIPT_FINISH = "[hyperframes:script:finish] ";
113
+ var PHASE_LABELS = {
114
+ copies: "making video copies",
115
+ launch: "starting Chrome",
116
+ load: "loading the page",
117
+ settle: "waiting for the page to be ready",
118
+ samples: "checking samples",
119
+ overlap: "running the overlap pass",
120
+ crops: "capturing finding crops"
121
+ };
122
+ var BEFORE_DEADLINE = /* @__PURE__ */ new Set(["copies", "launch"]);
113
123
  var CheckDeadlineError = class extends Error {
114
- constructor(sourceFile) {
124
+ constructor(sourceFile, phases = "") {
115
125
  super(
116
- sourceFile === void 0 ? "Check did not finish within its deadline." : `${sourceFile}: its script did not finish within the check deadline.`
126
+ (sourceFile === void 0 ? "Check did not finish within its deadline" : `${sourceFile}: its script did not finish within the check deadline`) + (phases || ".")
117
127
  );
118
128
  this.sourceFile = sourceFile;
119
129
  }
@@ -130,16 +140,38 @@ var CheckDeadline = class {
130
140
  expiry;
131
141
  rejectExpiry;
132
142
  phase = "waiting";
143
+ work;
144
+ spent = /* @__PURE__ */ new Map();
133
145
  constructor() {
134
146
  this.expiry = new Promise((_, reject) => {
135
147
  this.rejectExpiry = reject;
136
148
  });
137
149
  }
150
+ enter = (phase) => {
151
+ if (this.expired) return;
152
+ const now = Date.now();
153
+ if (this.work) this.spend(this.work.phase, now - this.work.since);
154
+ this.work = { phase, since: now };
155
+ this.spend(phase, 0);
156
+ };
157
+ spend(phase, ms) {
158
+ this.spent.set(phase, (this.spent.get(phase) ?? 0) + ms);
159
+ }
160
+ describe() {
161
+ if (!this.work) return "";
162
+ const open = Date.now() - this.work.since;
163
+ const parts = [...this.spent].map(([phase, ms]) => {
164
+ const seconds2 = ((phase === this.work?.phase ? ms + open : ms) / 1e3).toFixed(1);
165
+ return `${PHASE_LABELS[phase]} ${seconds2}${BEFORE_DEADLINE.has(phase) ? " (before the deadline)" : ""}`;
166
+ });
167
+ return ` (${CHECK_DEADLINE_MS / 1e3} s from when Chrome was ready), while ${PHASE_LABELS[this.work.phase]}. Seconds per phase: ${parts.join(", ")}.`;
168
+ }
138
169
  start = () => {
139
170
  if (this.phase !== "waiting") return;
140
171
  this.phase = "started";
172
+ this.enter("load");
141
173
  this.timer = setTimeout(() => {
142
- this.expired = new CheckDeadlineError(this.scripts.at(-1));
174
+ this.expired = new CheckDeadlineError(this.scripts.at(-1), this.describe());
143
175
  this.rejectExpiry(this.expired);
144
176
  this.abort.abort(this.expired);
145
177
  }, CHECK_DEADLINE_MS);
@@ -573,7 +605,7 @@ function round(value) {
573
605
 
574
606
  // src/utils/hdrPromotion.ts
575
607
  async function bundleProjectHtml(projectDir) {
576
- const { bundleToSingleHtml } = await import("./compiler-KPHYGFXL.js");
608
+ const { bundleToSingleHtml } = await import("./compiler-23MT6CX6.js");
577
609
  return bundleToSingleHtml(projectDir);
578
610
  }
579
611
  async function collectBundledRenderMedia(html) {
@@ -933,7 +965,7 @@ async function collectSampleAt(driver, options, grid, motion, sets, time) {
933
965
  await collectContrastAt(driver, options, time, issuesAtTime, collected);
934
966
  return collected;
935
967
  }
936
- async function collectGridSamples(driver, options, grid, motion, helpers) {
968
+ async function collectGridSamples(driver, options, grid, motion, helpers, enter) {
937
969
  const geometryEnabled = grid.captionSamples.length > 0 || grid.frameSamples.length > 0;
938
970
  const sets = {
939
971
  layout: new Set(grid.layoutSamples),
@@ -977,6 +1009,7 @@ async function collectGridSamples(driver, options, grid, motion, helpers) {
977
1009
  driver.markSamples?.("end");
978
1010
  const collected = emptyGridSamples();
979
1011
  for (const samples of perTime) appendGridSamples(collected, samples);
1012
+ enter("overlap");
980
1013
  await collectMotionOverlapSamples(
981
1014
  driver,
982
1015
  grid,
@@ -984,6 +1017,7 @@ async function collectGridSamples(driver, options, grid, motion, helpers) {
984
1017
  options.range,
985
1018
  craftEnabled(driver, options)
986
1019
  );
1020
+ enter("samples");
987
1021
  return collected;
988
1022
  }
989
1023
  function craftEnabled(driver, options) {
@@ -1543,7 +1577,9 @@ function wholeCompositionKeepsMoving(assertions) {
1543
1577
  function disabledCraft() {
1544
1578
  return { enabled: false, step: 0, samples: 0, findings: [] };
1545
1579
  }
1546
- async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([])) {
1580
+ async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([]), enter = () => {
1581
+ }) {
1582
+ enter("samples");
1547
1583
  await driver.initialize(options.contrast);
1548
1584
  const grid = await buildSampleGrid(driver, options);
1549
1585
  const plan = await planMotionSampling(
@@ -1552,7 +1588,7 @@ async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([
1552
1588
  grid.duration
1553
1589
  );
1554
1590
  const seekLoopStart = Date.now();
1555
- const collected = await collectGridSamples(driver, options, grid, plan, helpers);
1591
+ const collected = await collectGridSamples(driver, options, grid, plan, helpers, enter);
1556
1592
  const seekLoopMs = Date.now() - seekLoopStart;
1557
1593
  let motionIssues = plan.preflightIssues;
1558
1594
  if (motion.kind === "valid" && plan.assertions.length > 0 && collected.motionFrames.length > 0) {
@@ -1756,6 +1792,7 @@ async function withFindingCrops(dependencies, project, options, report, deadline
1756
1792
  const cropRequests = selectFindingCropRequests(report);
1757
1793
  if (cropRequests.length === 0) return report;
1758
1794
  try {
1795
+ deadline.enter("crops");
1759
1796
  const findingFiles = await deadline.run(
1760
1797
  () => dependencies.captureFindingCrops(project, options, cropRequests, deadline)
1761
1798
  );
@@ -2096,7 +2133,7 @@ function resolveMotionSpec(projectDir) {
2096
2133
  };
2097
2134
  }
2098
2135
  async function runBrowserCheck(project, options, motion, deadline, prelaunched) {
2099
- const module = await import("./checkBrowser-5XZCBRXM.js");
2136
+ const module = await import("./checkBrowser-PF56CT5X.js");
2100
2137
  return module.runBrowserCheck(project, options, motion, runAuditGrid, deadline, prelaunched);
2101
2138
  }
2102
2139
  var adoptedBrowser;
@@ -2110,7 +2147,7 @@ async function prelaunchBrowser(project, options) {
2110
2147
  if (adopted) return adopted;
2111
2148
  const html = await readFile(project.indexPath, "utf8").catch(() => void 0);
2112
2149
  if (html === void 0) return void 0;
2113
- const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-PXV2ISHD.js");
2150
+ const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-EMHSAIBZ.js");
2114
2151
  return prelaunchCompositionBrowser(html, options.browserGpuMode);
2115
2152
  }
2116
2153
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -2122,7 +2159,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
2122
2159
  return relative(projectDir, path);
2123
2160
  }
2124
2161
  async function captureFindingCrops(project, options, requests, deadline) {
2125
- const module = await import("./checkBrowser-5XZCBRXM.js");
2162
+ const module = await import("./checkBrowser-PF56CT5X.js");
2126
2163
  return module.captureFindingCrops(project, options, requests, deadline);
2127
2164
  }
2128
2165
  var DEFAULT_DEPENDENCIES2 = {
@@ -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-H5SM5PJI.js";
9
+ } from "./chunk-PMXR3IUH.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  HyperframesApiError
9
- } from "./chunk-5UBZPG74.js";
9
+ } from "./chunk-6A45RKAK.js";
10
10
 
11
11
  // src/cloud/upload.ts
12
12
  import { createHash } from "crypto";
@@ -36,14 +36,15 @@ function normalizeUploadHeaders(raw) {
36
36
  }
37
37
  return out;
38
38
  }
39
- async function putBytesToPresignedUrl(fetchImpl, uploadUrl, uploadHeaders, body, contentType) {
39
+ async function putBytesToPresignedUrl(fetchImpl, uploadUrl, uploadHeaders, body, contentType, signal) {
40
40
  const headers = {
41
41
  "content-type": contentType,
42
42
  ...normalizeUploadHeaders(uploadHeaders)
43
43
  };
44
- if (!(body instanceof Uint8Array)) return putFileToPresignedUrl(uploadUrl, headers, body);
44
+ if (!(body instanceof Uint8Array)) return putFileToPresignedUrl(uploadUrl, headers, body, signal);
45
45
  const res = await fetchImpl(uploadUrl, {
46
46
  method: "PUT",
47
+ signal,
47
48
  headers,
48
49
  body
49
50
  });
@@ -54,10 +55,11 @@ async function putBytesToPresignedUrl(fetchImpl, uploadUrl, uploadHeaders, body,
54
55
  );
55
56
  }
56
57
  }
57
- async function putFileToPresignedUrl(uploadUrl, headers, file) {
58
+ async function putFileToPresignedUrl(uploadUrl, headers, file, signal) {
58
59
  const send = new URL(uploadUrl).protocol === "https:" ? httpsRequest : httpRequest;
59
60
  const req = send(uploadUrl, {
60
61
  method: "PUT",
62
+ signal,
61
63
  headers: { ...headers, "content-length": String(file.size) }
62
64
  });
63
65
  const response = new Promise((resolve, reject) => {
@@ -121,7 +123,8 @@ async function uploadAssetViaDirectUpload(opts) {
121
123
  initialize.upload_url,
122
124
  initialize.upload_headers,
123
125
  body,
124
- opts.contentType
126
+ opts.contentType,
127
+ opts.signal
125
128
  );
126
129
  opts.onProgress?.({ phase: "upload", percent: 100 });
127
130
  opts.onProgress?.({ phase: "complete" });
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-AWDFDFI3.js";
18
18
  import {
19
19
  isBlockedNetworkHost
20
- } from "./chunk-I3IH5MV5.js";
20
+ } from "./chunk-YCW345M4.js";
21
21
  import {
22
22
  DOMParser,
23
23
  parseHTML
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-PMMQRJDE.js";
15
+ } from "./chunk-HPQSUPR7.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_REGISTRY_URL,
12
12
  fetchItemManifest,
13
13
  fetchRegistryManifest
14
- } from "./chunk-PMMQRJDE.js";
14
+ } from "./chunk-HPQSUPR7.js";
15
15
 
16
16
  // src/registry/resolver.ts
17
17
  function defaultWarn(message) {
@@ -11,7 +11,7 @@ import {
11
11
  MAX_AUDIO_GAIN_DB,
12
12
  formatAudioGain,
13
13
  isAudibleVideoElement
14
- } from "./chunk-UJKQWGFF.js";
14
+ } from "./chunk-X7HBSTCZ.js";
15
15
  import {
16
16
  findFfBinary
17
17
  } from "./chunk-VAS6HQX3.js";
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-5GUKZRQN.js";
9
+ } from "./chunk-FSTLXRIN.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-IDFNKFPL.js";
15
+ } from "./chunk-KDBPZOXK.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-TOI35GN2.js";
22
+ } from "./chunk-MXXX6WVC.js";
23
23
  import {
24
24
  pageNavigationTimeoutMs
25
- } from "./chunk-SQVRXHOW.js";
25
+ } from "./chunk-MTPPEEYZ.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -39,7 +39,7 @@ import {
39
39
  import {
40
40
  printDeprecationNotice,
41
41
  withMeta
42
- } from "./chunk-ISTRDGIX.js";
42
+ } from "./chunk-KWSEIVR6.js";
43
43
  import {
44
44
  normalizeErrorMessage
45
45
  } from "./chunk-KNU5COPB.js";
@@ -227,7 +227,7 @@ function extractCompositionErrorsFromLint(lintResult) {
227
227
  async function localizeRemoteAssets(html) {
228
228
  let dir;
229
229
  try {
230
- const { loadProducer } = await import("./producer-DTNNG4T6.js");
230
+ const { loadProducer } = await import("./producer-43L2UDF6.js");
231
231
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
232
232
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
233
233
  const assetDir = dir;
@@ -248,10 +248,10 @@ async function localizeRemoteAssets(html) {
248
248
  }
249
249
  async function validateInBrowser(project, opts) {
250
250
  const projectDir = project.dir;
251
- const { bundleToSingleHtml } = await import("./compiler-KPHYGFXL.js");
251
+ const { bundleToSingleHtml } = await import("./compiler-23MT6CX6.js");
252
252
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-FTGTEZI4.js");
254
- const { lintProject } = await import("./lintProject-JATQKR64.js");
253
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-HJLT7MHE.js");
254
+ const { lintProject } = await import("./lintProject-XM3DLUKG.js");
255
255
  const lintResult = await lintProject(projectDir);
256
256
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
257
257
  const html = await bundleToSingleHtml(projectDir);
@@ -272,9 +272,9 @@ async function validateInBrowser(project, opts) {
272
272
  try {
273
273
  const browser = await ensureBrowser();
274
274
  const puppeteer = await import("puppeteer-core");
275
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-RZ574OKP.js");
275
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-ZPIV4PGX.js");
276
276
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-NTKQJY75.js");
277
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-UGWSN32D.js");
278
278
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
279
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
280
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-WQLKDL35.js";
12
+ } from "./chunk-6Q5CFUAP.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-JVBRJMOP.js";
@@ -21,13 +21,13 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-7RAY4WZP.js";
24
+ } from "./chunk-I7C5GUEQ.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-IDGLGXPA.js";
27
+ } from "./chunk-NFLZNSUZ.js";
28
28
  import {
29
29
  verifies
30
- } from "./chunk-6ASIXMFP.js";
30
+ } from "./chunk-6OWNUXTU.js";
31
31
  import {
32
32
  PARAKEET_MODEL_LABEL,
33
33
  SHERPA_ERROR_PREFIX,