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
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  warnOnDimensionMismatch
9
- } from "./chunk-THXFSPLV.js";
9
+ } from "./chunk-ZIRIDSDB.js";
10
10
  import {
11
11
  requireStack,
12
12
  stateFilePath
@@ -15,27 +15,28 @@ import {
15
15
  reportVariableIssues,
16
16
  resolveVariablesArg,
17
17
  validateVariablesAgainstProject
18
- } from "./chunk-BM5PX3DJ.js";
19
- import "./chunk-5Z63TBTX.js";
20
- import "./chunk-IHFUKJOR.js";
21
- import "./chunk-PFCFR3KZ.js";
18
+ } from "./chunk-LW6HO6U3.js";
19
+ import "./chunk-FH7WODJH.js";
20
+ import "./chunk-K2FLNJVB.js";
21
+ import "./chunk-442JNXRM.js";
22
22
  import {
23
23
  setCommandExitCode
24
24
  } from "./chunk-PBN6GBJE.js";
25
- import "./chunk-6E6CM7WS.js";
26
- import "./chunk-OZUQF4NB.js";
27
- import "./chunk-DPVXBVLL.js";
28
- import "./chunk-SYKKFAUW.js";
25
+ import "./chunk-4M4EC7JX.js";
26
+ import "./chunk-6TPZSTCL.js";
29
27
  import "./chunk-VC76R6W2.js";
30
28
  import "./chunk-YA62XGXS.js";
29
+ import "./chunk-MQZVBHEY.js";
31
30
  import "./chunk-OFQWTKPW.js";
31
+ import "./chunk-DPVXBVLL.js";
32
32
  import "./chunk-T76PLPD6.js";
33
33
  import "./chunk-FXMKHHPO.js";
34
34
  import "./chunk-RQVDTPGD.js";
35
- import "./chunk-TQFG7HTI.js";
36
- import "./chunk-GK4AIFIH.js";
35
+ import "./chunk-3RM2ETQT.js";
36
+ import "./chunk-ZLW2V65P.js";
37
+ import "./chunk-SDYDNHEE.js";
37
38
  import "./chunk-2PSPARWP.js";
38
- import "./chunk-PMRBLBUP.js";
39
+ import "./chunk-T42U2W2R.js";
39
40
  import {
40
41
  c
41
42
  } from "./chunk-ZTZA4UWZ.js";
@@ -8,7 +8,7 @@ import {
8
8
  parseEnumFlag,
9
9
  parseIntFlag,
10
10
  parseNumericFlag
11
- } from "./chunk-RVCWIIZ7.js";
11
+ } from "./chunk-GV5R5B7Q.js";
12
12
  import {
13
13
  colorStatus
14
14
  } from "./chunk-U7CZBDMV.js";
@@ -20,34 +20,34 @@ import {
20
20
  createCloudClient,
21
21
  pollUntilTerminal,
22
22
  reportApiError
23
- } from "./chunk-HKCNZITN.js";
23
+ } from "./chunk-4OA4LDTU.js";
24
24
  import {
25
25
  downloadToFile
26
26
  } from "./chunk-BXCMXMJQ.js";
27
27
  import {
28
28
  buildPublishFileMap,
29
29
  zipPublishFileMap
30
- } from "./chunk-EDYBFSPE.js";
31
- import "./chunk-XTFJOR3K.js";
32
- import "./chunk-BRITLL56.js";
33
- import "./chunk-246MOR5U.js";
30
+ } from "./chunk-OBXQRJWQ.js";
31
+ import "./chunk-4SFGME7K.js";
32
+ import "./chunk-B4P5VDFQ.js";
33
+ import "./chunk-DKSDVDXG.js";
34
34
  import {
35
35
  reportVariableIssues,
36
36
  resolveVariablesArg,
37
37
  validateVariablesAgainstProject
38
- } from "./chunk-BM5PX3DJ.js";
38
+ } from "./chunk-LW6HO6U3.js";
39
39
  import {
40
40
  resolveProject
41
- } from "./chunk-TC2FBZJZ.js";
41
+ } from "./chunk-VIVBA6E6.js";
42
42
  import {
43
43
  errorBox,
44
44
  formatBytes,
45
45
  formatDuration
46
- } from "./chunk-IHFUKJOR.js";
46
+ } from "./chunk-K2FLNJVB.js";
47
47
  import "./chunk-EOVYQ3IG.js";
48
- import "./chunk-PFCFR3KZ.js";
49
- import "./chunk-7XTZVLE6.js";
50
- import "./chunk-RCFCZT5O.js";
48
+ import "./chunk-442JNXRM.js";
49
+ import "./chunk-QFN7NVWM.js";
50
+ import "./chunk-OSSHSIMD.js";
51
51
  import "./chunk-VWG7OQKU.js";
52
52
  import "./chunk-GQJZORQP.js";
53
53
  import "./chunk-AMKC3AXA.js";
@@ -59,28 +59,29 @@ import {
59
59
  failCommand
60
60
  } from "./chunk-PBN6GBJE.js";
61
61
  import "./chunk-USDEMXXL.js";
62
- import "./chunk-6E6CM7WS.js";
63
- import "./chunk-OZUQF4NB.js";
64
- import "./chunk-DPVXBVLL.js";
65
- import "./chunk-SYKKFAUW.js";
62
+ import "./chunk-4M4EC7JX.js";
63
+ import "./chunk-6TPZSTCL.js";
66
64
  import "./chunk-VC76R6W2.js";
67
65
  import "./chunk-YA62XGXS.js";
66
+ import "./chunk-MQZVBHEY.js";
68
67
  import "./chunk-OFQWTKPW.js";
68
+ import "./chunk-DPVXBVLL.js";
69
69
  import "./chunk-T76PLPD6.js";
70
70
  import "./chunk-FXMKHHPO.js";
71
71
  import "./chunk-RQVDTPGD.js";
72
- import "./chunk-TQFG7HTI.js";
73
- import "./chunk-GK4AIFIH.js";
72
+ import "./chunk-3RM2ETQT.js";
73
+ import "./chunk-ZLW2V65P.js";
74
+ import "./chunk-SDYDNHEE.js";
74
75
  import "./chunk-2PSPARWP.js";
75
- import "./chunk-PMRBLBUP.js";
76
+ import "./chunk-T42U2W2R.js";
76
77
  import {
77
78
  withMeta
78
- } from "./chunk-IYFKBFTW.js";
79
+ } from "./chunk-Y6QL2LGO.js";
79
80
  import "./chunk-K4WIOZFP.js";
80
81
  import "./chunk-XUXGIA7H.js";
81
82
  import "./chunk-WERLJGIC.js";
82
83
  import "./chunk-ISN5GRYI.js";
83
- import "./chunk-W6HTOVHU.js";
84
+ import "./chunk-W35EKBS6.js";
84
85
  import {
85
86
  normalizeErrorMessage
86
87
  } from "./chunk-KNU5COPB.js";
@@ -6,21 +6,21 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  maybePromptRenderFeedback
9
- } from "./chunk-6IFXWJDX.js";
9
+ } from "./chunk-3NE7ZYU2.js";
10
10
  import {
11
11
  reportVariableIssues,
12
12
  resolveVariablesArg,
13
13
  validateVariablesAgainstProject
14
- } from "./chunk-BM5PX3DJ.js";
14
+ } from "./chunk-LW6HO6U3.js";
15
15
  import {
16
16
  loadProducer
17
- } from "./chunk-N77KD7ZZ.js";
17
+ } from "./chunk-QVYVUCWD.js";
18
18
  import {
19
19
  formatLintStartupMessage
20
20
  } from "./chunk-6CSYCFQV.js";
21
21
  import {
22
22
  resolveProject
23
- } from "./chunk-TC2FBZJZ.js";
23
+ } from "./chunk-VIVBA6E6.js";
24
24
  import {
25
25
  renderJobObservabilityTelemetryPayload
26
26
  } from "./chunk-VXVRPIJA.js";
@@ -32,8 +32,8 @@ import {
32
32
  resolveCompositionEntryArg,
33
33
  resolveDefaultFpsArg,
34
34
  windowsChromeCrashRemediation
35
- } from "./chunk-EKA4ZZBI.js";
36
- import "./chunk-YEIFI443.js";
35
+ } from "./chunk-P7THMINS.js";
36
+ import "./chunk-WPNE5NEP.js";
37
37
  import {
38
38
  desktopHint
39
39
  } from "./chunk-EDUBJPGL.js";
@@ -44,29 +44,29 @@ import {
44
44
  formatRenderSummaryDetail,
45
45
  formatScreenshotFallbackHint,
46
46
  resolvePrintedCaptureMode
47
- } from "./chunk-IHFUKJOR.js";
47
+ } from "./chunk-K2FLNJVB.js";
48
48
  import "./chunk-DCAI5DBR.js";
49
49
  import "./chunk-EOVYQ3IG.js";
50
50
  import {
51
51
  runEnvironmentChecks
52
52
  } from "./chunk-KOEWEFHK.js";
53
- import "./chunk-PFCFR3KZ.js";
53
+ import "./chunk-442JNXRM.js";
54
54
  import {
55
55
  createRenderCancellationScope
56
- } from "./chunk-3A5AAPMP.js";
56
+ } from "./chunk-UICWP23D.js";
57
57
  import {
58
58
  loadProjectConfig,
59
59
  readProjectConfigWithStatus,
60
60
  seedProjectAuthoringSkill
61
- } from "./chunk-AVWEIOEN.js";
61
+ } from "./chunk-2LBBHMKT.js";
62
62
  import "./chunk-XT7X6QCP.js";
63
63
  import "./chunk-4YYJOFKS.js";
64
64
  import {
65
65
  normalizeSkillSlug
66
66
  } from "./chunk-HVW7ABXD.js";
67
- import "./chunk-IKVBTDLO.js";
68
- import "./chunk-L3JSAB4L.js";
69
- import "./chunk-Q65ZQFF2.js";
67
+ import "./chunk-HW4AKJ5F.js";
68
+ import "./chunk-CLOH4LIB.js";
69
+ import "./chunk-TAMQYQGJ.js";
70
70
  import "./chunk-AWDFDFI3.js";
71
71
  import "./chunk-P6LJ4Y32.js";
72
72
  import {
@@ -82,8 +82,8 @@ import {
82
82
  trackRenderError,
83
83
  trackRenderObservation,
84
84
  trackRenderPreflightRejected
85
- } from "./chunk-7XTZVLE6.js";
86
- import "./chunk-RCFCZT5O.js";
85
+ } from "./chunk-QFN7NVWM.js";
86
+ import "./chunk-OSSHSIMD.js";
87
87
  import "./chunk-VWG7OQKU.js";
88
88
  import {
89
89
  bytesToMb
@@ -110,27 +110,27 @@ import {
110
110
  MAX_VP9_CPU_USED,
111
111
  MIN_VP9_CPU_USED,
112
112
  isVideoFrameFormat
113
- } from "./chunk-E6SDW5FV.js";
114
- import "./chunk-35RSNI77.js";
115
- import "./chunk-A4KQZXZI.js";
113
+ } from "./chunk-33RZPZ4K.js";
114
+ import "./chunk-F26LCYRY.js";
115
+ import "./chunk-NE55C6S5.js";
116
116
  import "./chunk-USDEMXXL.js";
117
117
  import {
118
118
  formatRenderOutputTimestamp,
119
119
  fpsToFfmpegArg,
120
120
  fpsToNumber,
121
121
  parseFps
122
- } from "./chunk-6E6CM7WS.js";
122
+ } from "./chunk-4M4EC7JX.js";
123
+ import "./chunk-6TPZSTCL.js";
124
+ import "./chunk-VC76R6W2.js";
125
+ import "./chunk-YA62XGXS.js";
123
126
  import {
124
127
  checkOutputResolutionCompatibility,
125
128
  isAspectAgnosticResolutionAlias,
126
129
  normalizeResolutionFlag,
127
130
  suggestMatchingPreset
128
- } from "./chunk-OZUQF4NB.js";
129
- import "./chunk-DPVXBVLL.js";
130
- import "./chunk-SYKKFAUW.js";
131
- import "./chunk-VC76R6W2.js";
132
- import "./chunk-YA62XGXS.js";
131
+ } from "./chunk-MQZVBHEY.js";
133
132
  import "./chunk-OFQWTKPW.js";
133
+ import "./chunk-DPVXBVLL.js";
134
134
  import "./chunk-T76PLPD6.js";
135
135
  import "./chunk-FXMKHHPO.js";
136
136
  import "./chunk-RQVDTPGD.js";
@@ -148,17 +148,17 @@ import "./chunk-TWWSYAKJ.js";
148
148
  import {
149
149
  lintProject,
150
150
  shouldBlockRender
151
- } from "./chunk-WY5OODN5.js";
152
- import "./chunk-24OWOBQH.js";
151
+ } from "./chunk-XONFUK3M.js";
153
152
  import {
154
153
  collectSubCompositionSrcs
155
- } from "./chunk-JFKL3WAE.js";
156
- import "./chunk-HBBJFK6I.js";
154
+ } from "./chunk-IWFLMU2N.js";
155
+ import "./chunk-APDLWWFG.js";
157
156
  import "./chunk-PJ3HDUCY.js";
158
- import "./chunk-TQFG7HTI.js";
159
- import "./chunk-GK4AIFIH.js";
157
+ import "./chunk-3RM2ETQT.js";
158
+ import "./chunk-ZLW2V65P.js";
159
+ import "./chunk-SDYDNHEE.js";
160
160
  import "./chunk-2PSPARWP.js";
161
- import "./chunk-PMRBLBUP.js";
161
+ import "./chunk-T42U2W2R.js";
162
162
  import "./chunk-K4WIOZFP.js";
163
163
  import {
164
164
  readConfigFresh,
@@ -172,7 +172,7 @@ import {
172
172
  } from "./chunk-ISN5GRYI.js";
173
173
  import {
174
174
  VERSION
175
- } from "./chunk-W6HTOVHU.js";
175
+ } from "./chunk-W35EKBS6.js";
176
176
  import {
177
177
  normalizeErrorMessage
178
178
  } from "./chunk-KNU5COPB.js";
@@ -646,7 +646,7 @@ function formatGpuModes(plan) {
646
646
  }
647
647
  async function warnForSlideshow(plan) {
648
648
  try {
649
- const { slideshowIslandRegex } = await import("./slideshow-EJ4IMY6P.js");
649
+ const { slideshowIslandRegex } = await import("./slideshow-4OJEPWNZ.js");
650
650
  if (!slideshowIslandRegex("i").test(readFileSync2(plan.renderTarget, "utf8"))) return;
651
651
  console.log(
652
652
  c.warn("\u26A0") + " This composition carries a slideshow island \u2014 `render` captures only the first scene, so the MP4 will be truncated to slide 1. Use " + c.accent("hyperframes present") + " for the deck; a linear main-line MP4 export is not yet available."
@@ -671,7 +671,7 @@ async function executeRenderPlan(plan, dependencies, cancellation) {
671
671
  let batchModule;
672
672
  let preparedBatch;
673
673
  if (plan.batchPath) {
674
- batchModule = await import("./batchRender-GOLLOE4V.js");
674
+ batchModule = await import("./batchRender-4U73BYTU.js");
675
675
  try {
676
676
  preparedBatch = batchModule.prepareBatchRender({
677
677
  batchPath: plan.batchPath,
@@ -1461,7 +1461,7 @@ var render_default = defineCommand({
1461
1461
  });
1462
1462
  async function readCompositionDimensions(compositionHtml) {
1463
1463
  try {
1464
- const { ensureDOMParser } = await import("./dom-IROKGVJI.js");
1464
+ const { ensureDOMParser } = await import("./dom-37K6YOH4.js");
1465
1465
  ensureDOMParser();
1466
1466
  const doc = new DOMParser().parseFromString(compositionHtml, "text/html");
1467
1467
  const rootEl = doc.querySelector("[data-composition-id]");
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  warnOnDimensionMismatch
9
- } from "./chunk-THXFSPLV.js";
9
+ } from "./chunk-ZIRIDSDB.js";
10
10
  import {
11
11
  requireStack
12
12
  } from "./chunk-H4YZZ2VQ.js";
@@ -14,30 +14,31 @@ import {
14
14
  loadProjectVariableSchema,
15
15
  reportVariableIssues,
16
16
  validateVariablesAgainstSchema
17
- } from "./chunk-BM5PX3DJ.js";
18
- import "./chunk-5Z63TBTX.js";
17
+ } from "./chunk-LW6HO6U3.js";
18
+ import "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  errorBox
21
- } from "./chunk-IHFUKJOR.js";
22
- import "./chunk-PFCFR3KZ.js";
21
+ } from "./chunk-K2FLNJVB.js";
22
+ import "./chunk-442JNXRM.js";
23
23
  import {
24
24
  failCommand,
25
25
  setCommandExitCode
26
26
  } from "./chunk-PBN6GBJE.js";
27
- import "./chunk-6E6CM7WS.js";
28
- import "./chunk-OZUQF4NB.js";
29
- import "./chunk-DPVXBVLL.js";
30
- import "./chunk-SYKKFAUW.js";
27
+ import "./chunk-4M4EC7JX.js";
28
+ import "./chunk-6TPZSTCL.js";
31
29
  import "./chunk-VC76R6W2.js";
32
30
  import "./chunk-YA62XGXS.js";
31
+ import "./chunk-MQZVBHEY.js";
33
32
  import "./chunk-OFQWTKPW.js";
33
+ import "./chunk-DPVXBVLL.js";
34
34
  import "./chunk-T76PLPD6.js";
35
35
  import "./chunk-FXMKHHPO.js";
36
36
  import "./chunk-RQVDTPGD.js";
37
- import "./chunk-TQFG7HTI.js";
38
- import "./chunk-GK4AIFIH.js";
37
+ import "./chunk-3RM2ETQT.js";
38
+ import "./chunk-ZLW2V65P.js";
39
+ import "./chunk-SDYDNHEE.js";
39
40
  import "./chunk-2PSPARWP.js";
40
- import "./chunk-PMRBLBUP.js";
41
+ import "./chunk-T42U2W2R.js";
41
42
  import {
42
43
  normalizeErrorMessage
43
44
  } from "./chunk-KNU5COPB.js";
@@ -7,33 +7,33 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  createRenderCancellationScope,
9
9
  stoppedByCancelSignal
10
- } from "./chunk-3A5AAPMP.js";
11
- import "./chunk-E6SDW5FV.js";
12
- import "./chunk-35RSNI77.js";
13
- import "./chunk-A4KQZXZI.js";
10
+ } from "./chunk-UICWP23D.js";
11
+ import "./chunk-33RZPZ4K.js";
12
+ import "./chunk-F26LCYRY.js";
13
+ import "./chunk-NE55C6S5.js";
14
14
  import "./chunk-USDEMXXL.js";
15
- import "./chunk-6E6CM7WS.js";
16
- import "./chunk-OZUQF4NB.js";
17
- import "./chunk-DPVXBVLL.js";
18
- import "./chunk-SYKKFAUW.js";
15
+ import "./chunk-4M4EC7JX.js";
16
+ import "./chunk-6TPZSTCL.js";
19
17
  import "./chunk-VC76R6W2.js";
20
18
  import "./chunk-YA62XGXS.js";
19
+ import "./chunk-MQZVBHEY.js";
21
20
  import "./chunk-OFQWTKPW.js";
21
+ import "./chunk-DPVXBVLL.js";
22
22
  import "./chunk-T76PLPD6.js";
23
23
  import "./chunk-FXMKHHPO.js";
24
24
  import "./chunk-RQVDTPGD.js";
25
25
  import "./chunk-LAOCA3MQ.js";
26
26
  import "./chunk-LCSMOLGX.js";
27
27
  import "./chunk-TWWSYAKJ.js";
28
- import "./chunk-WY5OODN5.js";
29
- import "./chunk-24OWOBQH.js";
30
- import "./chunk-JFKL3WAE.js";
31
- import "./chunk-HBBJFK6I.js";
28
+ import "./chunk-XONFUK3M.js";
29
+ import "./chunk-IWFLMU2N.js";
30
+ import "./chunk-APDLWWFG.js";
32
31
  import "./chunk-PJ3HDUCY.js";
33
- import "./chunk-TQFG7HTI.js";
34
- import "./chunk-GK4AIFIH.js";
32
+ import "./chunk-3RM2ETQT.js";
33
+ import "./chunk-ZLW2V65P.js";
34
+ import "./chunk-SDYDNHEE.js";
35
35
  import "./chunk-2PSPARWP.js";
36
- import "./chunk-PMRBLBUP.js";
36
+ import "./chunk-T42U2W2R.js";
37
37
  import "./chunk-3GXQPCJC.js";
38
38
  import "./chunk-M2WBOQ2Q.js";
39
39
  export {
@@ -16,15 +16,15 @@ import "./chunk-LCSMOLGX.js";
16
16
  import "./chunk-TWWSYAKJ.js";
17
17
  import {
18
18
  lintProject
19
- } from "./chunk-WY5OODN5.js";
20
- import "./chunk-24OWOBQH.js";
21
- import "./chunk-JFKL3WAE.js";
22
- import "./chunk-HBBJFK6I.js";
19
+ } from "./chunk-XONFUK3M.js";
20
+ import "./chunk-IWFLMU2N.js";
21
+ import "./chunk-APDLWWFG.js";
23
22
  import "./chunk-PJ3HDUCY.js";
24
- import "./chunk-TQFG7HTI.js";
25
- import "./chunk-GK4AIFIH.js";
23
+ import "./chunk-3RM2ETQT.js";
24
+ import "./chunk-ZLW2V65P.js";
25
+ import "./chunk-SDYDNHEE.js";
26
26
  import "./chunk-2PSPARWP.js";
27
- import "./chunk-PMRBLBUP.js";
27
+ import "./chunk-T42U2W2R.js";
28
28
  import "./chunk-KNU5COPB.js";
29
29
  import "./chunk-M2WBOQ2Q.js";
30
30
 
@@ -11,25 +11,26 @@ import {
11
11
  resolveItemWithDependencies,
12
12
  resolveItemsByTag,
13
13
  unreachableRegistryMessage
14
- } from "./chunk-IKVBTDLO.js";
15
- import "./chunk-Q65ZQFF2.js";
14
+ } from "./chunk-HW4AKJ5F.js";
15
+ import "./chunk-TAMQYQGJ.js";
16
16
  import "./chunk-AWDFDFI3.js";
17
17
  import "./chunk-P6LJ4Y32.js";
18
18
  import "./chunk-GMECXFAN.js";
19
- import "./chunk-6E6CM7WS.js";
20
- import "./chunk-OZUQF4NB.js";
21
- import "./chunk-DPVXBVLL.js";
22
- import "./chunk-SYKKFAUW.js";
19
+ import "./chunk-4M4EC7JX.js";
20
+ import "./chunk-6TPZSTCL.js";
23
21
  import "./chunk-VC76R6W2.js";
24
22
  import "./chunk-YA62XGXS.js";
23
+ import "./chunk-MQZVBHEY.js";
25
24
  import "./chunk-OFQWTKPW.js";
25
+ import "./chunk-DPVXBVLL.js";
26
26
  import "./chunk-T76PLPD6.js";
27
27
  import "./chunk-FXMKHHPO.js";
28
28
  import "./chunk-RQVDTPGD.js";
29
- import "./chunk-TQFG7HTI.js";
30
- import "./chunk-GK4AIFIH.js";
29
+ import "./chunk-3RM2ETQT.js";
30
+ import "./chunk-ZLW2V65P.js";
31
+ import "./chunk-SDYDNHEE.js";
31
32
  import "./chunk-2PSPARWP.js";
32
- import "./chunk-PMRBLBUP.js";
33
+ import "./chunk-T42U2W2R.js";
33
34
  import "./chunk-M2WBOQ2Q.js";
34
35
  export {
35
36
  listRegistryItems,
@@ -4,13 +4,20 @@ 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
+ DEFAULT_MAX_SCREENSHOTS
9
+ } from "./chunk-P36MALQF.js";
7
10
  import {
8
11
  isDegradableEvaluateTimeoutError
9
12
  } from "./chunk-AWNBM3MZ.js";
10
13
  import {
14
+ CaptureDirRefusedError,
11
15
  ensureCaptureDirSync,
12
16
  writeCaptureFileSync
13
17
  } from "./chunk-MRF4AMKD.js";
18
+ import {
19
+ normalizeErrorMessage
20
+ } from "./chunk-KNU5COPB.js";
14
21
  import "./chunk-M2WBOQ2Q.js";
15
22
 
16
23
  // src/capture/screenshotCapture.ts
@@ -35,13 +42,15 @@ async function captureFullPagePlate(page, screenshotsDir, budget = {}) {
35
42
  const docHeight = await page.evaluate(
36
43
  `Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)`
37
44
  );
38
- if (docHeight > MAX_PLATE_HEIGHT_PX) return null;
39
- if ((budget.remainingMs?.() ?? 1) <= 0) return null;
45
+ if (docHeight > MAX_PLATE_HEIGHT_PX) return { kind: "omitted", reason: "height-limit" };
46
+ if ((budget.remainingMs?.() ?? 1) <= 0) return { kind: "omitted", reason: "budget-exhausted" };
40
47
  const buffer = await page.screenshot({ type: "png", fullPage: true });
41
48
  const produced = pngHeight(buffer);
42
- if (produced != null && produced > MAX_PLATE_HEIGHT_PX) return null;
49
+ if (produced != null && produced > MAX_PLATE_HEIGHT_PX)
50
+ return { kind: "omitted", reason: "height-limit" };
43
51
  writeCaptureFileSync(join(screenshotsDir, "full-page.png"), buffer);
44
- return "screenshots/full-page.png";
52
+ budget.files?.push("screenshots/full-page.png");
53
+ return { kind: "captured", file: "screenshots/full-page.png" };
45
54
  } finally {
46
55
  try {
47
56
  await page.evaluate(
@@ -57,9 +66,21 @@ async function captureFullPagePlate(page, screenshotsDir, budget = {}) {
57
66
  async function captureScrollScreenshots(page, outputDir, budget = {}) {
58
67
  const screenshotsDir = join(outputDir, "screenshots");
59
68
  ensureCaptureDirSync(outputDir, screenshotsDir);
60
- const MAX_SCREENSHOTS = 20;
61
- const filePaths = [];
62
- if ((budget.remainingMs?.() ?? 1) <= 0) return filePaths;
69
+ const maxScreenshots = budget.maxScreenshots ?? DEFAULT_MAX_SCREENSHOTS;
70
+ const viewportLimit = Math.max(1, maxScreenshots - 1);
71
+ const filePaths = budget.files ?? [];
72
+ filePaths.length = 0;
73
+ const filenames = /* @__PURE__ */ new Set();
74
+ const result = { files: filePaths, interruption: null };
75
+ const budgetSpent = () => {
76
+ if ((budget.remainingMs?.() ?? 1) > 0) return false;
77
+ result.interruption = {
78
+ reason: "budget-exhausted",
79
+ message: "post-navigation budget exhausted during screenshots"
80
+ };
81
+ return true;
82
+ };
83
+ if (budgetSpent()) return result;
63
84
  try {
64
85
  await page.evaluate(() => {
65
86
  const selectors = [
@@ -126,50 +147,49 @@ async function captureScrollScreenshots(page, outputDir, budget = {}) {
126
147
  `Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)`
127
148
  );
128
149
  const viewportHeight = await page.evaluate(`window.innerHeight`);
129
- const step = Math.floor(viewportHeight * 0.7);
130
- const positions = [0];
131
- for (let y = step; y < scrollHeight - viewportHeight; y += step) {
132
- positions.push(y);
133
- }
150
+ const step = Math.max(1, Math.floor(viewportHeight * 0.7));
134
151
  const lastPos = Math.max(0, scrollHeight - viewportHeight);
135
- if (positions[positions.length - 1] !== lastPos) {
136
- positions.push(lastPos);
137
- }
138
- let finalPositions = positions;
139
- if (positions.length > MAX_SCREENSHOTS) {
140
- finalPositions = [positions[0]];
141
- const stride = (positions.length - 1) / (MAX_SCREENSHOTS - 1);
142
- for (let i = 1; i < MAX_SCREENSHOTS - 1; i++) {
143
- finalPositions.push(positions[Math.round(i * stride)]);
144
- }
145
- finalPositions.push(positions[positions.length - 1]);
152
+ const positionCount = Math.ceil(lastPos / step) + 1;
153
+ const count = Math.min(viewportLimit, positionCount);
154
+ const finalPositions = [];
155
+ for (let i = 0; i < count; i++) {
156
+ const positionIndex = count === 1 ? 0 : Math.round(i * (positionCount - 1) / (count - 1));
157
+ finalPositions.push(Math.min(positionIndex * step, lastPos));
146
158
  }
147
159
  for (let i = 0; i < finalPositions.length; i++) {
148
- if ((budget.remainingMs?.() ?? 1) <= 0) break;
160
+ if (budgetSpent()) break;
149
161
  await page.evaluate(`window.scrollTo(0, ${finalPositions[i]})`);
150
162
  await new Promise((r) => setTimeout(r, 400));
151
163
  const pct = Math.round(
152
164
  finalPositions[i] / Math.max(1, scrollHeight - viewportHeight) * 100
153
165
  );
154
- const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
166
+ const stem = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}`;
167
+ let filename = `${stem}.png`;
168
+ if (filenames.has(filename)) filename = `${stem}-${i}.png`;
169
+ filenames.add(filename);
155
170
  const filePath = join(screenshotsDir, filename);
156
- if ((budget.remainingMs?.() ?? 1) <= 0) break;
171
+ if (budgetSpent()) break;
157
172
  const buffer = await page.screenshot({ type: "png" });
158
173
  writeCaptureFileSync(filePath, buffer);
159
174
  filePaths.push(`screenshots/${filename}`);
160
175
  }
161
176
  await page.evaluate(`window.scrollTo(0, 0)`);
162
177
  await new Promise((r) => setTimeout(r, 200));
163
- if ((budget.remainingMs?.() ?? 1) > 0) {
164
- const plate = await captureFullPagePlate(page, screenshotsDir, budget);
165
- if (plate) filePaths.push(plate);
178
+ if (filePaths.length < maxScreenshots && !budgetSpent()) {
179
+ const plate = await captureFullPagePlate(page, screenshotsDir, {
180
+ ...budget,
181
+ files: filePaths
182
+ });
183
+ if (plate.kind === "omitted" && plate.reason === "budget-exhausted") budgetSpent();
166
184
  }
167
185
  } catch (err) {
168
- if (isDegradableEvaluateTimeoutError(err)) {
169
- throw err;
170
- }
186
+ if (err instanceof CaptureDirRefusedError) throw err;
187
+ result.interruption = {
188
+ reason: isDegradableEvaluateTimeoutError(err) ? "request-timeout" : "internal-error",
189
+ message: normalizeErrorMessage(err)
190
+ };
171
191
  }
172
- return filePaths;
192
+ return result;
173
193
  }
174
194
  export {
175
195
  MAX_PLATE_HEIGHT_PX,