hyperframes 0.8.141 → 0.8.143

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 (200) hide show
  1. package/dist/{add-KH2CF4FD.js → add-Q5EYDUAY.js} +18 -17
  2. package/dist/{animatedGifPrep-QO4BSKR7.js → animatedGifPrep-H2DUQEZ3.js} +15 -15
  3. package/dist/{asset-4RDZILVJ.js → asset-C7JBYYX4.js} +4 -4
  4. package/dist/{assetCataloger-WGR4LYYN.js → assetCataloger-FRO4G6OU.js} +8 -7
  5. package/dist/{auth-WYQCOYE5.js → auth-FRWLCO36.js} +5 -4
  6. package/dist/{autoUpdate-PC5TN3NL.js → autoUpdate-E4OZXQK6.js} +2 -2
  7. package/dist/{backgroundChecks-7M3T44EP.js → backgroundChecks-FSUVHN5L.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-GOLLOE4V.js → batchRender-4U73BYTU.js} +11 -10
  10. package/dist/{beats-XJ7WP6QS.js → beats-U6KJWF35.js} +32 -28
  11. package/dist/{benchmark-HCGFBEZJ.js → benchmark-5ONT7V7B.js} +15 -14
  12. package/dist/{browser-VQKO2FKG.js → browser-R4DU46IE.js} +4 -4
  13. package/dist/{bundleWithLocalizedFonts-FH7PHTTX.js → bundleWithLocalizedFonts-VH55VOAL.js} +2 -2
  14. package/dist/{capture-TFZZSF6F.js → capture-26G2DPSI.js} +83 -41
  15. package/dist/{capture-XD3P3YQR.js → capture-OGQAEYKO.js} +24 -8
  16. package/dist/{catalog-4S33QWJJ.js → catalog-RKORTIUE.js} +19 -18
  17. package/dist/{catch-up-RW7YXXNT.js → catch-up-4OBERRQO.js} +5 -5
  18. package/dist/{check-XVTRRN4Y.js → check-P2XDN57S.js} +89 -85
  19. package/dist/{checkBrowser-HZXJ2EDU.js → checkBrowser-NTGJGAEA.js} +42 -42
  20. package/dist/{chunk-AVWEIOEN.js → chunk-2LBBHMKT.js} +1 -1
  21. package/dist/{chunk-E6SDW5FV.js → chunk-33RZPZ4K.js} +192 -45
  22. package/dist/{chunk-6IFXWJDX.js → chunk-3NE7ZYU2.js} +2 -2
  23. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-6E6CM7WS.js → chunk-4M4EC7JX.js} +19 -12
  26. package/dist/{chunk-HKCNZITN.js → chunk-4OA4LDTU.js} +2 -2
  27. package/dist/{chunk-XTFJOR3K.js → chunk-4SFGME7K.js} +1 -1
  28. package/dist/{chunk-34TXESM7.js → chunk-5FISWJ37.js} +12 -4
  29. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  30. package/dist/chunk-6TPZSTCL.js +3681 -0
  31. package/dist/{chunk-P6E4HFFU.js → chunk-6XMFEICO.js} +263 -75
  32. package/dist/{chunk-6Q6FR4KH.js → chunk-7UYBQ6NF.js} +296 -89
  33. package/dist/{chunk-BRITLL56.js → chunk-B4P5VDFQ.js} +1 -1
  34. package/dist/{chunk-U7E736AJ.js → chunk-BFDJ63J5.js} +32 -14
  35. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  36. package/dist/{chunk-IO7ZIDRP.js → chunk-BT27OYYX.js} +53 -12
  37. package/dist/{chunk-KFH6UD26.js → chunk-BYK73CR7.js} +4 -4
  38. package/dist/{chunk-L3JSAB4L.js → chunk-CLOH4LIB.js} +3 -3
  39. package/dist/{chunk-R7UDXKI3.js → chunk-DF2BHILQ.js} +3 -3
  40. package/dist/{chunk-246MOR5U.js → chunk-DKSDVDXG.js} +175 -162
  41. package/dist/{chunk-35RSNI77.js → chunk-F26LCYRY.js} +42 -34
  42. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  43. package/dist/{chunk-NORZWWLK.js → chunk-FVYXDXEV.js} +2 -2
  44. package/dist/{chunk-YURXPGAM.js → chunk-GNBGPUJ7.js} +6 -8
  45. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  46. package/dist/{chunk-GS6FE3IW.js → chunk-HC7EVDEL.js} +1 -1
  47. package/dist/{chunk-K2GOFLTX.js → chunk-HLYOEIWM.js} +14 -6
  48. package/dist/{chunk-XDSOIJC3.js → chunk-HMT2RPZU.js} +6 -6
  49. package/dist/{chunk-IKVBTDLO.js → chunk-HW4AKJ5F.js} +1 -1
  50. package/dist/{chunk-OLDDJS3S.js → chunk-I7QGQAZM.js} +8 -8
  51. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  52. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  53. package/dist/chunk-KJJLA674.js +121 -0
  54. package/dist/{chunk-XWVGSEUT.js → chunk-KO5QBV73.js} +1 -1
  55. package/dist/{chunk-INI3TM6I.js → chunk-KQLGTGE5.js} +3 -3
  56. package/dist/{chunk-E4BSCXMU.js → chunk-LVX6NK36.js} +3 -3
  57. package/dist/{chunk-BM5PX3DJ.js → chunk-LW6HO6U3.js} +4 -4
  58. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  59. package/dist/{chunk-IV7EI5E2.js → chunk-N3DQEVSI.js} +2 -2
  60. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  61. package/dist/{chunk-EDYBFSPE.js → chunk-OBXQRJWQ.js} +7 -10
  62. package/dist/{chunk-RCFCZT5O.js → chunk-OSSHSIMD.js} +1 -1
  63. package/dist/chunk-P36MALQF.js +15 -0
  64. package/dist/{chunk-EKA4ZZBI.js → chunk-P7THMINS.js} +3 -3
  65. package/dist/{chunk-3NBKW2QJ.js → chunk-PAGIICKN.js} +2 -2
  66. package/dist/{chunk-O3SKIXQK.js → chunk-PJU63L6W.js} +1 -1
  67. package/dist/{chunk-RPYPW5NN.js → chunk-POLR33RB.js} +20 -13
  68. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  69. package/dist/{chunk-7XTZVLE6.js → chunk-QFN7NVWM.js} +1 -1
  70. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  71. package/dist/{chunk-J5IPIQU2.js → chunk-QRKLPWEX.js} +1 -1
  72. package/dist/{chunk-N77KD7ZZ.js → chunk-QVYVUCWD.js} +1 -1
  73. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  74. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  75. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  76. package/dist/{chunk-Q65ZQFF2.js → chunk-TAMQYQGJ.js} +1 -1
  77. package/dist/{chunk-PXSM4HPB.js → chunk-U3X3TPBW.js} +1 -1
  78. package/dist/{chunk-3A5AAPMP.js → chunk-UICWP23D.js} +1 -1
  79. package/dist/{chunk-A7YQNIQT.js → chunk-UM2GRYM3.js} +113 -10
  80. package/dist/{chunk-TC2FBZJZ.js → chunk-VIVBA6E6.js} +2 -2
  81. package/dist/{chunk-W6HTOVHU.js → chunk-W35EKBS6.js} +2 -2
  82. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  83. package/dist/{chunk-WY5OODN5.js → chunk-XONFUK3M.js} +3693 -28
  84. package/dist/{chunk-IYFKBFTW.js → chunk-Y6QL2LGO.js} +8 -5
  85. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  86. package/dist/chunk-ZLW2V65P.js +209 -0
  87. package/dist/{chunk-4BB7V6AI.js → chunk-ZQQ3SEIE.js} +33 -32
  88. package/dist/{clean-L2E4VD57.js → clean-YHGPY33K.js} +23 -23
  89. package/dist/cli.js +57 -159
  90. package/dist/{cloud-IDUQRYLO.js → cloud-DOFI5ISR.js} +4 -4
  91. package/dist/{cloudrun-R3JXWXGG.js → cloudrun-KTZ4XDHL.js} +13 -12
  92. package/dist/commands/contrast-audit.browser.js +60 -4
  93. package/dist/commands/layout-audit.browser.js +88 -20
  94. package/dist/{compare-VYBWSP3Y.js → compare-SMMIZN2C.js} +37 -37
  95. package/dist/{compiler-ACHWOU5N.js → compiler-TEXQWW6N.js} +14 -11
  96. package/dist/{component-PYYV2V3F.js → component-B3GCNGSS.js} +5 -5
  97. package/dist/{compositions-B5GQSXH7.js → compositions-OQNZZTKF.js} +38 -34
  98. package/dist/{delete-EAX2U3WI.js → delete-EL5LVSEP.js} +6 -6
  99. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  100. package/dist/{dist-NZSQCYOF.js → dist-5UVIRMSM.js} +7 -7
  101. package/dist/{dist-ROUDWGLO.js → dist-XN234YFQ.js} +41 -39
  102. package/dist/{doctor-PJX7MLFG.js → doctor-UOL3OI2A.js} +17 -17
  103. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  104. package/dist/{events-SBC54MHO.js → events-K2DB2PBC.js} +2 -2
  105. package/dist/{events-YFFXKAQQ.js → events-NIZBS6S7.js} +3 -3
  106. package/dist/{feedback-UETLWREV.js → feedback-QMP4E6L7.js} +16 -15
  107. package/dist/{figma-QDSJPIRW.js → figma-2AUJRNVC.js} +3 -3
  108. package/dist/fontLocalizeCli.js +18 -18
  109. package/dist/{get-B5TS6C7H.js → get-P5NC7SRM.js} +6 -6
  110. package/dist/{gpuPolicy-LYOVBAJP.js → gpuPolicy-7N5MCE2G.js} +15 -15
  111. package/dist/{grade-compare-LBIHMAUN.js → grade-compare-HV5AFZ6P.js} +37 -37
  112. package/dist/{help-XBP6A6LT.js → help-3TSTXBLN.js} +1 -1
  113. package/dist/{history-2S42ZXKL.js → history-D65XFJ6D.js} +6 -6
  114. package/dist/hyperframe-runtime.js +25 -25
  115. package/dist/hyperframe.manifest.json +1 -1
  116. package/dist/hyperframe.runtime.iife.js +25 -25
  117. package/dist/hyperframes-player.global.js +3 -3
  118. package/dist/hyperframes-slideshow.global.js +23 -23
  119. package/dist/{info-I2VDAWT7.js → info-TXV7MLFO.js} +17 -16
  120. package/dist/{init-BGHSDODI.js → init-OSDMJZJV.js} +38 -38
  121. package/dist/{inspect-MZK5B5RP.js → inspect-RQQSAYIJ.js} +38 -38
  122. package/dist/{installer-LL4QAKFW.js → installer-CDOB32HE.js} +11 -10
  123. package/dist/{keyframes-2EBF7OSS.js → keyframes-V75Q6GRM.js} +10 -10
  124. package/dist/{lambda-XKFPAOFE.js → lambda-RODV4RCX.js} +12 -11
  125. package/dist/{layout-TP5ERKEF.js → layout-IZAI5SFC.js} +38 -38
  126. package/dist/{lint-FQ6CEI7E.js → lint-PLXOXY5R.js} +14 -14
  127. package/dist/{lintProject-LM3XZRPZ.js → lintProject-OQ6H6XBR.js} +7 -7
  128. package/dist/{list-FRNUJXZ3.js → list-BQBPNKDZ.js} +7 -7
  129. package/dist/{login-C25QU3BQ.js → login-NP6F4FHC.js} +20 -24
  130. package/dist/{logout-GJXZQKOA.js → logout-B4KS4A7S.js} +6 -6
  131. package/dist/{manager-DXB7JDHU.js → manager-GXYF4AVO.js} +2 -2
  132. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  133. package/dist/{media-treatment-DCANGWSV.js → media-treatment-PXGMZ4A4.js} +55 -34
  134. package/dist/{models-GOD6ARB3.js → models-CEZM6XZ7.js} +17 -17
  135. package/dist/{motionShot-FSKETANX.js → motionShot-R4GHYWYM.js} +25 -25
  136. package/dist/{normalize-IGLHCWTF.js → normalize-H6KUHHEI.js} +18 -7
  137. package/dist/{normalize-audio-C2IM7OID.js → normalize-audio-MQ7NFCOV.js} +10 -6
  138. package/dist/{open-VVISXIII.js → open-AKQTGNXF.js} +5 -5
  139. package/dist/{pipeline-7YHZPYIS.js → pipeline-SYJYP2RM.js} +17 -17
  140. package/dist/{play-DSELK7G3.js → play-NBH4B7PL.js} +31 -30
  141. package/dist/{present-N72YFDKP.js → present-XAX55CFS.js} +26 -26
  142. package/dist/{preview-XTYN4NJ2.js → preview-OLANKNFA.js} +26 -26
  143. package/dist/{producer-NDCU3MHK.js → producer-Q6YNZZUJ.js} +1 -1
  144. package/dist/{projectConfig-MH4QU4AC.js → projectConfig-EM26P45P.js} +13 -12
  145. package/dist/{publication-KUSHI5MG.js → publication-OXWJZKSX.js} +8 -7
  146. package/dist/{publish-3XEEFWMF.js → publish-4VBWP2UB.js} +23 -22
  147. package/dist/{refresh-MFITBIKV.js → refresh-PVHBEABE.js} +2 -2
  148. package/dist/{remove-background-2QKJ7XOD.js → remove-background-REB7427G.js} +19 -19
  149. package/dist/{render-75E342ZU.js → render-3CVZ2SZG.js} +13 -12
  150. package/dist/{render-S73DW4KK.js → render-K25YOG3M.js} +22 -21
  151. package/dist/{render-2DVYTVLQ.js → render-TSE75QUL.js} +35 -35
  152. package/dist/{render-batch-YURBS54Q.js → render-batch-GGUOK3DS.js} +13 -12
  153. package/dist/{renderCancellation-373ASJTO.js → renderCancellation-PZRWB53I.js} +15 -15
  154. package/dist/renderSetupWorker.js +7 -7
  155. package/dist/{resolver-FE3GBZ4T.js → resolver-S5VK6UCB.js} +10 -9
  156. package/dist/{screenshotCapture-ECBTLCU6.js → screenshotCapture-TEUIWXWN.js} +53 -33
  157. package/dist/{sherpa-B2D3AGP6.js → sherpa-LVIUEAGF.js} +18 -18
  158. package/dist/skills/hyperframes-cli/references/cloud.md +1 -1
  159. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  160. package/dist/skills/media-use/references/grading.md +4 -2
  161. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  162. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  163. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  164. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  165. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  166. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  167. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  168. package/dist/{skills-ICJ22CZZ.js → skills-I65FU5HD.js} +5 -5
  169. package/dist/{skillsUpdateCheck-GXZN56I5.js → skillsUpdateCheck-J57RNNIV.js} +3 -3
  170. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  171. package/dist/{snapshot-XHKOAWF4.js → snapshot-YROOGY22.js} +42 -39
  172. package/dist/{src-I7UC3JTL.js → src-JO5JOV7Y.js} +16 -14
  173. package/dist/{src-74PFDTDX.js → src-X426BZAG.js} +17 -17
  174. package/dist/{staticProjectServer-2DGKD6TF.js → staticProjectServer-5VMBS262.js} +23 -23
  175. package/dist/{status-JA6SKQVH.js → status-LXPGSSKY.js} +6 -4
  176. package/dist/studio/assets/{hyperframes-player-5Vx2AiUz.js → hyperframes-player-BXSuksFh.js} +3 -3
  177. package/dist/studio/assets/{index-BAnh7cSQ.js → index-BgOVCqjo.js} +1 -1
  178. package/dist/studio/assets/{index-P8fgj_Xa.js → index-FgyO_5Kv.js} +1 -1
  179. package/dist/studio/assets/{index-C0thd4eM.js → index-J7jpL4pj.js} +157 -157
  180. package/dist/studio/index.html +1 -1
  181. package/dist/studio/index.js +148 -175
  182. package/dist/studio/index.js.map +1 -1
  183. package/dist/{studio-api-PROBO7JG.js → studio-api-VRBZUGAE.js} +22 -18
  184. package/dist/{studioServer-ID6UV2NE.js → studioServer-DBNKZ6I6.js} +50 -50
  185. package/dist/{synthesize-77PTU6C5.js → synthesize-C3IWDAXF.js} +2 -2
  186. package/dist/{telemetry-65LFHIWH.js → telemetry-CXAX3TO3.js} +3 -3
  187. package/dist/{timeline-6UV3JJXD.js → timeline-VQ34WH7J.js} +91 -70
  188. package/dist/{tokens-HIL4TZXI.js → tokens-62R7VFAZ.js} +4 -4
  189. package/dist/{transcribe-TIO6W3EQ.js → transcribe-7KR7IPJA.js} +18 -18
  190. package/dist/{transcribe-V7F6QDSN.js → transcribe-XOHPPL2O.js} +11 -11
  191. package/dist/{tts-TOHSPWEG.js → tts-MUV42JXT.js} +6 -6
  192. package/dist/{updateCheck-GZELANMA.js → updateCheck-POYNH3B5.js} +2 -2
  193. package/dist/{upgrade-BX3KDDZJ.js → upgrade-NBNOT7J2.js} +2 -2
  194. package/dist/{urlDownloader-R76OHFIE.js → urlDownloader-3NS63A7B.js} +14 -14
  195. package/dist/{validate-7UX4I443.js → validate-Y2QDHAEP.js} +40 -28
  196. package/dist/{video-RVGYEFQU.js → video-SJDMTSTL.js} +15 -15
  197. package/package.json +1 -1
  198. package/dist/chunk-24OWOBQH.js +0 -3656
  199. package/dist/chunk-SYKKFAUW.js +0 -3711
  200. /package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
@@ -8,6 +8,10 @@ import {
8
8
  createCaptureWatchdog,
9
9
  runWithWatchdog
10
10
  } from "./chunk-UYEZTK4U.js";
11
+ import {
12
+ CAPTURE_PHASE_SCHEMA,
13
+ DEFAULT_MAX_SCREENSHOTS
14
+ } from "./chunk-P36MALQF.js";
11
15
  import {
12
16
  CAPTURE_USER_AGENT,
13
17
  downloadAndRewriteFonts,
@@ -17,7 +21,7 @@ import {
17
21
  noDrops,
18
22
  safeFetch,
19
23
  totalDrops
20
- } from "./chunk-3NBKW2QJ.js";
24
+ } from "./chunk-PAGIICKN.js";
21
25
  import {
22
26
  captureProtocolTimeoutMs,
23
27
  isDegradableEvaluateTimeoutError,
@@ -35,8 +39,8 @@ import {
35
39
  } from "./chunk-3DKN5WKL.js";
36
40
  import {
37
41
  launchManagedBrowser
38
- } from "./chunk-O3SKIXQK.js";
39
- import "./chunk-J5IPIQU2.js";
42
+ } from "./chunk-PJU63L6W.js";
43
+ import "./chunk-QRKLPWEX.js";
40
44
  import {
41
45
  writeNewFileSync
42
46
  } from "./chunk-4YYJOFKS.js";
@@ -53,32 +57,32 @@ import {
53
57
  } from "./chunk-NGKM64BP.js";
54
58
  import "./chunk-IGLEPPTN.js";
55
59
  import "./chunk-PBN6GBJE.js";
56
- import "./chunk-E6SDW5FV.js";
57
- import "./chunk-35RSNI77.js";
58
- import "./chunk-A4KQZXZI.js";
60
+ import "./chunk-33RZPZ4K.js";
61
+ import "./chunk-F26LCYRY.js";
62
+ import "./chunk-NE55C6S5.js";
59
63
  import "./chunk-USDEMXXL.js";
60
- import "./chunk-6E6CM7WS.js";
61
- import "./chunk-OZUQF4NB.js";
62
- import "./chunk-DPVXBVLL.js";
63
- import "./chunk-SYKKFAUW.js";
64
+ import "./chunk-4M4EC7JX.js";
65
+ import "./chunk-6TPZSTCL.js";
64
66
  import "./chunk-VC76R6W2.js";
65
67
  import "./chunk-YA62XGXS.js";
68
+ import "./chunk-MQZVBHEY.js";
66
69
  import "./chunk-OFQWTKPW.js";
70
+ import "./chunk-DPVXBVLL.js";
67
71
  import "./chunk-T76PLPD6.js";
68
72
  import "./chunk-FXMKHHPO.js";
69
73
  import "./chunk-RQVDTPGD.js";
70
74
  import "./chunk-TWWSYAKJ.js";
71
- import "./chunk-WY5OODN5.js";
72
- import "./chunk-24OWOBQH.js";
73
- import "./chunk-JFKL3WAE.js";
74
- import "./chunk-HBBJFK6I.js";
75
+ import "./chunk-XONFUK3M.js";
76
+ import "./chunk-IWFLMU2N.js";
77
+ import "./chunk-APDLWWFG.js";
75
78
  import "./chunk-PJ3HDUCY.js";
76
- import "./chunk-TQFG7HTI.js";
79
+ import "./chunk-3RM2ETQT.js";
80
+ import "./chunk-ZLW2V65P.js";
77
81
  import {
78
82
  parseHTML
79
- } from "./chunk-GK4AIFIH.js";
83
+ } from "./chunk-SDYDNHEE.js";
80
84
  import "./chunk-2PSPARWP.js";
81
- import "./chunk-PMRBLBUP.js";
85
+ import "./chunk-T42U2W2R.js";
82
86
  import {
83
87
  normalizeErrorMessage
84
88
  } from "./chunk-KNU5COPB.js";
@@ -688,9 +692,6 @@ async function generateProjectScaffold(outputDir, url, tokens, animationCatalog,
688
692
  }
689
693
  }
690
694
 
691
- // src/capture/types.ts
692
- var CAPTURE_PHASE_SCHEMA = "hyperframes.capture.phase.v1";
693
-
694
695
  // src/capture/browserLaunchArgs.ts
695
696
  function captureBrowserArgs(disableWebgl, viewportWidth, viewportHeight) {
696
697
  return [
@@ -3045,6 +3046,13 @@ async function runCoreExtraction(input) {
3045
3046
  downloadByteBudget,
3046
3047
  canWrite
3047
3048
  } = input;
3049
+ const { maxScreenshots } = input;
3050
+ let exhaustedPhase = remainingMs() <= 0 ? "navigation checks" : void 0;
3051
+ const recordBudget = (phase) => {
3052
+ if (exhaustedPhase === void 0 && remainingMs() <= 0) exhaustedPhase = phase;
3053
+ };
3054
+ const animationWarning = () => remainingMs() > 0 ? "animation catalog evaluate timed out; continuing without animation catalog" : "--capture-budget spent before the animation catalog finished; continuing without animation catalog";
3055
+ let screenshotOutcome = { kind: "complete" };
3048
3056
  const runLazyAndLottie = async () => {
3049
3057
  if (!contentCheckTimedOut && pageContentCheck.textLength < 100) {
3050
3058
  const reason = "Page has very little text content (" + pageContentCheck.textLength + " chars) \u2014 may be blocked or a client-rendered SPA that needs more time";
@@ -3066,6 +3074,7 @@ async function runCoreExtraction(input) {
3066
3074
  await new Promise((r) => setTimeout(r, 300));
3067
3075
  };
3068
3076
  await runLazyAndLottie();
3077
+ recordBudget("lazy scrolling");
3069
3078
  const runAnimationDiscovery = async () => {
3070
3079
  const scanDomLotties = async () => {
3071
3080
  try {
@@ -3124,6 +3133,7 @@ async function runCoreExtraction(input) {
3124
3133
  await saveDiscoveredLotties();
3125
3134
  };
3126
3135
  await runAnimationDiscovery();
3136
+ recordBudget("animation discovery");
3127
3137
  const runShaderCapture = async () => {
3128
3138
  try {
3129
3139
  const shaders = await page1.evaluate(`window.__capturedShaders || []`);
@@ -3148,6 +3158,7 @@ async function runCoreExtraction(input) {
3148
3158
  }
3149
3159
  };
3150
3160
  await runShaderCapture();
3161
+ recordBudget("shader capture");
3151
3162
  const runTokenExtraction = async () => {
3152
3163
  progress("tokens", "Extracting design tokens...");
3153
3164
  tokens = await extractTokens(page1);
@@ -3182,6 +3193,7 @@ ${err.stack}` : normalizeErrorMessage(err);
3182
3193
  }
3183
3194
  };
3184
3195
  await runTokenExtraction();
3196
+ recordBudget("design token extraction");
3185
3197
  const runAnimationCapture = async () => {
3186
3198
  progress("animations", "Cataloging animations...");
3187
3199
  try {
@@ -3191,7 +3203,7 @@ ${err.stack}` : normalizeErrorMessage(err);
3191
3203
  });
3192
3204
  animationCatalog = animationOutcome.catalog;
3193
3205
  if (animationOutcome.timedOut) {
3194
- const message = "animation catalog evaluate timed out; continuing without animation catalog";
3206
+ const message = animationWarning();
3195
3207
  warnings.push(message);
3196
3208
  progress("warn", message);
3197
3209
  }
@@ -3199,7 +3211,7 @@ ${err.stack}` : normalizeErrorMessage(err);
3199
3211
  if (!isDegradableEvaluateTimeoutError(err)) {
3200
3212
  throw err;
3201
3213
  }
3202
- const message = "animation catalog evaluate timed out; continuing without animation catalog";
3214
+ const message = animationWarning();
3203
3215
  warnings.push(message);
3204
3216
  progress("warn", message);
3205
3217
  try {
@@ -3207,27 +3219,48 @@ ${err.stack}` : normalizeErrorMessage(err);
3207
3219
  } catch {
3208
3220
  }
3209
3221
  }
3222
+ recordBudget("animation catalog");
3223
+ };
3224
+ await runAnimationCapture();
3225
+ const runScreenshotCapture = async () => {
3210
3226
  progress("screenshots", "Capturing scroll screenshots...");
3211
- const { captureScrollScreenshots } = await import("./screenshotCapture-ECBTLCU6.js");
3212
- try {
3213
- if (!canWrite()) return;
3214
- screenshots = await captureScrollScreenshots(page1, outputDir, { remainingMs });
3215
- state.screenshots = screenshots;
3216
- progress("screenshots", `${screenshots.length} scroll screenshots captured`);
3217
- } catch (err) {
3218
- if (!isDegradableEvaluateTimeoutError(err)) {
3219
- throw err;
3220
- }
3221
- const message = "scroll screenshots timed out; continuing without screenshots";
3227
+ const { captureScrollScreenshots } = await import("./screenshotCapture-TEUIWXWN.js");
3228
+ if (!canWrite()) {
3229
+ screenshotOutcome = {
3230
+ kind: "failed",
3231
+ reason: "deadline"
3232
+ };
3233
+ return;
3234
+ }
3235
+ screenshots = [];
3236
+ state.screenshots = screenshots;
3237
+ const capture = await captureScrollScreenshots(page1, outputDir, {
3238
+ remainingMs,
3239
+ maxScreenshots,
3240
+ files: screenshots
3241
+ });
3242
+ if (capture.interruption || screenshots.length === 0) {
3243
+ recordBudget("screenshots");
3244
+ const { reason, message: detail } = capture.interruption ?? {
3245
+ reason: "internal-error",
3246
+ message: "screenshot capture produced no files"
3247
+ };
3248
+ const cause = reason === "budget-exhausted" ? `--capture-budget exhausted during ${exhaustedPhase}` : detail;
3249
+ const message = `${screenshots.length}/${maxScreenshots} requested screenshot files captured: ${cause}`;
3250
+ screenshotOutcome = {
3251
+ kind: screenshots.length === 0 ? "failed" : "partial",
3252
+ reason
3253
+ };
3222
3254
  warnings.push(message);
3223
3255
  progress("warn", message);
3224
3256
  }
3257
+ progress("screenshots", `${screenshots.length} scroll screenshots captured`);
3225
3258
  };
3226
- await runAnimationCapture();
3259
+ await runScreenshotCapture();
3227
3260
  const runHtmlExtraction = async () => {
3228
3261
  progress("design", "Cataloging assets...");
3229
3262
  try {
3230
- const { catalogAssets } = await import("./assetCataloger-WGR4LYYN.js");
3263
+ const { catalogAssets } = await import("./assetCataloger-FRO4G6OU.js");
3231
3264
  catalogedAssets = await catalogAssets(page1);
3232
3265
  progress("design", `${catalogedAssets.length} assets cataloged`);
3233
3266
  if (catalogedAssets.length === 0) {
@@ -3278,6 +3311,7 @@ ${err.stack}` : normalizeErrorMessage(err);
3278
3311
  };
3279
3312
  await runHtmlExtraction();
3280
3313
  return {
3314
+ screenshotOutcome,
3281
3315
  animationCatalog,
3282
3316
  capturedShaders,
3283
3317
  catalogedAssets,
@@ -3799,7 +3833,7 @@ async function captureWebsiteAttempt(opts, onProgress, disableWebgl, watchdog, s
3799
3833
  viewportHeight = 1080,
3800
3834
  timeout = 12e4,
3801
3835
  settleTime = 3e3,
3802
- maxScreenshots: _maxScreenshots = 24,
3836
+ maxScreenshots = DEFAULT_MAX_SCREENSHOTS,
3803
3837
  skipAssets = false,
3804
3838
  skipVision = false,
3805
3839
  postNavigationBudgetMs = DEFAULT_POST_NAVIGATION_BUDGET_MS,
@@ -3959,7 +3993,8 @@ async function captureWebsiteAttempt(opts, onProgress, disableWebgl, watchdog, s
3959
3993
  extracted,
3960
3994
  screenshots,
3961
3995
  downloadByteBudget,
3962
- canWrite
3996
+ canWrite,
3997
+ maxScreenshots
3963
3998
  });
3964
3999
  ({
3965
4000
  animationCatalog,
@@ -3972,7 +4007,9 @@ async function captureWebsiteAttempt(opts, onProgress, disableWebgl, watchdog, s
3972
4007
  extracted,
3973
4008
  screenshots
3974
4009
  } = coreResult);
3975
- phase("core-extraction", "completed");
4010
+ const screenshotOutcome = coreResult.screenshotOutcome;
4011
+ if (screenshotOutcome.kind === "complete") phase("core-extraction", "completed");
4012
+ else phase("core-extraction", "degraded", screenshotOutcome.reason);
3976
4013
  const postResult = await runPostExtraction({
3977
4014
  state,
3978
4015
  outputDir,
@@ -4012,10 +4049,15 @@ async function captureWebsiteAttempt(opts, onProgress, disableWebgl, watchdog, s
4012
4049
  );
4013
4050
  }
4014
4051
  phase("scaffold", "completed");
4015
- progress("done", "Capture complete");
4016
- phase("complete", "completed");
4052
+ progress(
4053
+ "done",
4054
+ screenshotOutcome.kind === "failed" ? "Capture failed: no screenshots captured" : "Capture complete"
4055
+ );
4056
+ if (screenshotOutcome.kind === "failed")
4057
+ phase("complete", "degraded", screenshotOutcome.reason);
4058
+ else phase("complete", "completed");
4017
4059
  return {
4018
- ok: true,
4060
+ ok: screenshotOutcome.kind !== "failed",
4019
4061
  projectDir: outputDir,
4020
4062
  url,
4021
4063
  httpStatus,
@@ -7,6 +7,9 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseCaptureDeadline
9
9
  } from "./chunk-UYEZTK4U.js";
10
+ import {
11
+ DEFAULT_MAX_SCREENSHOTS
12
+ } from "./chunk-P36MALQF.js";
10
13
  import {
11
14
  diag
12
15
  } from "./chunk-VWG7OQKU.js";
@@ -27,11 +30,11 @@ var CAPTURE_PHASE_PREFIX = "HYPERFRAMES_CAPTURE_PHASE ";
27
30
  function emitCapturePhase(event) {
28
31
  diag.notice(`${CAPTURE_PHASE_PREFIX}${JSON.stringify(event)}`);
29
32
  }
30
- function parseCaptureBudget(raw) {
33
+ function parsePositiveInteger(raw, flag, unit = "") {
31
34
  if (raw === void 0) return void 0;
32
35
  const parsed = Number(raw);
33
36
  if (!Number.isInteger(parsed) || parsed <= 0) {
34
- console.error("--capture-budget must be a positive integer in milliseconds.");
37
+ console.error(`${flag} must be a positive integer${unit}.`);
35
38
  failCommand();
36
39
  }
37
40
  return parsed;
@@ -77,7 +80,7 @@ var capture_default = defineCommand({
77
80
  },
78
81
  "max-screenshots": {
79
82
  type: "string",
80
- description: "Maximum screenshots to capture (default: 24)"
83
+ description: `Maximum page-capture files including the full-page plate, excluding derived contact sheets (default: ${DEFAULT_MAX_SCREENSHOTS})`
81
84
  },
82
85
  timeout: {
83
86
  type: "string",
@@ -113,7 +116,7 @@ var capture_default = defineCommand({
113
116
  // fallow-ignore-next-line complexity
114
117
  async run({ args }) {
115
118
  if (args.video) {
116
- const { runVideoMode } = await import("./video-RVGYEFQU.js");
119
+ const { runVideoMode } = await import("./video-SJDMTSTL.js");
117
120
  await runVideoMode({
118
121
  project: args.video,
119
122
  index: args.index ?? null,
@@ -135,7 +138,15 @@ var capture_default = defineCommand({
135
138
  console.error(`Invalid URL: ${url}`);
136
139
  failCommand();
137
140
  }
138
- const captureBudgetMs = parseCaptureBudget(args["capture-budget"]);
141
+ const captureBudgetMs = parsePositiveInteger(
142
+ args["capture-budget"],
143
+ "--capture-budget",
144
+ " in milliseconds"
145
+ );
146
+ const maxScreenshots = parsePositiveInteger(
147
+ args["max-screenshots"],
148
+ "--max-screenshots"
149
+ );
139
150
  const isDefaultOutput = !args.output;
140
151
  let outputName = args.output ?? "capture";
141
152
  let outputDir = resolve(outputName);
@@ -162,7 +173,8 @@ var capture_default = defineCommand({
162
173
  }
163
174
  console.log();
164
175
  }
165
- const { captureWebsite } = await import("./capture-TFZZSF6F.js");
176
+ const { captureWebsite } = await import("./capture-26G2DPSI.js");
177
+ let captureFailed = false;
166
178
  try {
167
179
  const result = await captureWebsite(
168
180
  {
@@ -170,7 +182,7 @@ var capture_default = defineCommand({
170
182
  outputDir,
171
183
  skipAssets: args["skip-assets"],
172
184
  skipVision: args["skip-vision"],
173
- maxScreenshots: args["max-screenshots"] ? parseInt(args["max-screenshots"]) : void 0,
185
+ maxScreenshots,
174
186
  timeout: args.timeout ? parseInt(args.timeout) : void 0,
175
187
  postNavigationBudgetMs: captureBudgetMs,
176
188
  captureDeadlineMs: parseCaptureDeadline(process.env.HYPERFRAMES_CAPTURE_DEADLINE_MS),
@@ -192,6 +204,7 @@ var capture_default = defineCommand({
192
204
  console.log(detail ? `${label} ${detail}` : label);
193
205
  }
194
206
  );
207
+ captureFailed = !result.ok;
195
208
  if (isJson) {
196
209
  console.log(
197
210
  JSON.stringify(
@@ -220,7 +233,9 @@ var capture_default = defineCommand({
220
233
  } else {
221
234
  const { c } = await import("./colors-HKWSZCGK.js");
222
235
  console.log();
223
- console.log(c.success("\u25C7") + ` Captured ${c.bold(result.title)} \u2192 ${c.dim(outputDir)}`);
236
+ const icon = result.ok ? c.success("\u25C7") : c.error("\u2717");
237
+ const status = result.ok ? "Captured" : "Capture failed";
238
+ console.log(icon + ` ${status} ${c.bold(result.title)} \u2192 ${c.dim(outputDir)}`);
224
239
  console.log();
225
240
  console.log(` ${c.dim("Screenshots:")} ${result.screenshots.length}`);
226
241
  console.log(` ${c.dim("Assets:")} ${result.assets.length}`);
@@ -282,6 +297,7 @@ URL: ${url}
282
297
  }
283
298
  failCommand();
284
299
  }
300
+ if (captureFailed) failCommand();
285
301
  }
286
302
  });
287
303
  export {
@@ -11,30 +11,30 @@ import {
11
11
  } from "./chunk-3DKN5WKL.js";
12
12
  import {
13
13
  runAdd
14
- } from "./chunk-OLDDJS3S.js";
15
- import "./chunk-XWVGSEUT.js";
14
+ } from "./chunk-I7QGQAZM.js";
15
+ import "./chunk-KO5QBV73.js";
16
16
  import {
17
17
  DEFAULT_PROJECT_CONFIG,
18
18
  loadProjectConfig
19
- } from "./chunk-AVWEIOEN.js";
19
+ } from "./chunk-2LBBHMKT.js";
20
20
  import "./chunk-XT7X6QCP.js";
21
21
  import "./chunk-4YYJOFKS.js";
22
22
  import "./chunk-HVW7ABXD.js";
23
23
  import "./chunk-6BEFEWFB.js";
24
24
  import {
25
25
  loadAllItems
26
- } from "./chunk-IKVBTDLO.js";
27
- import "./chunk-L3JSAB4L.js";
26
+ } from "./chunk-HW4AKJ5F.js";
27
+ import "./chunk-CLOH4LIB.js";
28
28
  import {
29
29
  fetchRegistryManifest
30
- } from "./chunk-Q65ZQFF2.js";
30
+ } from "./chunk-TAMQYQGJ.js";
31
31
  import "./chunk-AWDFDFI3.js";
32
32
  import "./chunk-P6LJ4Y32.js";
33
33
  import {
34
34
  downloadFile
35
- } from "./chunk-WCJGTLPF.js";
36
- import "./chunk-7XTZVLE6.js";
37
- import "./chunk-RCFCZT5O.js";
35
+ } from "./chunk-BHVFTYSI.js";
36
+ import "./chunk-QFN7NVWM.js";
37
+ import "./chunk-OSSHSIMD.js";
38
38
  import "./chunk-VWG7OQKU.js";
39
39
  import "./chunk-GQJZORQP.js";
40
40
  import "./chunk-AMKC3AXA.js";
@@ -53,23 +53,24 @@ import {
53
53
  finishCommand
54
54
  } from "./chunk-PBN6GBJE.js";
55
55
  import "./chunk-USDEMXXL.js";
56
- import "./chunk-6E6CM7WS.js";
57
- import "./chunk-OZUQF4NB.js";
58
- import "./chunk-DPVXBVLL.js";
59
- import "./chunk-SYKKFAUW.js";
56
+ import "./chunk-4M4EC7JX.js";
57
+ import "./chunk-6TPZSTCL.js";
60
58
  import "./chunk-VC76R6W2.js";
61
59
  import "./chunk-YA62XGXS.js";
60
+ import "./chunk-MQZVBHEY.js";
62
61
  import {
63
62
  realpath
64
63
  } from "./chunk-OFQWTKPW.js";
64
+ import "./chunk-DPVXBVLL.js";
65
65
  import "./chunk-T76PLPD6.js";
66
66
  import "./chunk-FXMKHHPO.js";
67
67
  import "./chunk-RQVDTPGD.js";
68
- import "./chunk-HBBJFK6I.js";
69
- import "./chunk-TQFG7HTI.js";
70
- import "./chunk-GK4AIFIH.js";
68
+ import "./chunk-APDLWWFG.js";
69
+ import "./chunk-3RM2ETQT.js";
70
+ import "./chunk-ZLW2V65P.js";
71
+ import "./chunk-SDYDNHEE.js";
71
72
  import "./chunk-2PSPARWP.js";
72
- import "./chunk-PMRBLBUP.js";
73
+ import "./chunk-T42U2W2R.js";
73
74
  import "./chunk-K4WIOZFP.js";
74
75
  import {
75
76
  readConfig,
@@ -79,7 +80,7 @@ import {
79
80
  isAttendedTerminal
80
81
  } from "./chunk-WERLJGIC.js";
81
82
  import "./chunk-ISN5GRYI.js";
82
- import "./chunk-W6HTOVHU.js";
83
+ import "./chunk-W35EKBS6.js";
83
84
  import "./chunk-KNU5COPB.js";
84
85
  import {
85
86
  c
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-TC2FBZJZ.js";
10
- import "./chunk-IHFUKJOR.js";
9
+ } from "./chunk-VIVBA6E6.js";
10
+ import "./chunk-K2FLNJVB.js";
11
11
  import {
12
12
  filesChangedSince,
13
13
  markSeen,
@@ -15,8 +15,8 @@ import {
15
15
  unseenTurns
16
16
  } from "./chunk-DCAI5DBR.js";
17
17
  import "./chunk-EOVYQ3IG.js";
18
- import "./chunk-7XTZVLE6.js";
19
- import "./chunk-RCFCZT5O.js";
18
+ import "./chunk-QFN7NVWM.js";
19
+ import "./chunk-OSSHSIMD.js";
20
20
  import "./chunk-VWG7OQKU.js";
21
21
  import "./chunk-GQJZORQP.js";
22
22
  import "./chunk-AMKC3AXA.js";
@@ -33,7 +33,7 @@ import "./chunk-K4WIOZFP.js";
33
33
  import "./chunk-XUXGIA7H.js";
34
34
  import "./chunk-WERLJGIC.js";
35
35
  import "./chunk-ISN5GRYI.js";
36
- import "./chunk-W6HTOVHU.js";
36
+ import "./chunk-W35EKBS6.js";
37
37
  import "./chunk-KNU5COPB.js";
38
38
  import {
39
39
  c