hyperframes 0.8.181 → 0.8.183

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 (215) hide show
  1. package/bin/hyperframes.mjs +3 -1
  2. package/dist/{add-AWQ2EGBU.js → add-HW3ZGR36.js} +22 -22
  3. package/dist/{animatedGifPrep-SENXJ7TN.js → animatedGifPrep-EPLN37ZN.js} +13 -13
  4. package/dist/api.js +28 -28
  5. package/dist/{asset-XBH3MN3Y.js → asset-TOASKL3Z.js} +3 -3
  6. package/dist/{assetCataloger-KH4X2CRO.js → assetCataloger-PZN5HYG2.js} +15 -13
  7. package/dist/{audio-Q7I473UN.js → audio-F5OIQVJO.js} +29 -29
  8. package/dist/{auth-I7CBTEUS.js → auth-YVQLRS3T.js} +4 -4
  9. package/dist/{autoUpdate-KY5TLSN7.js → autoUpdate-EG4ZFW4D.js} +2 -2
  10. package/dist/{backgroundChecks-4Q3VVK5W.js → backgroundChecks-WINNQVR2.js} +3 -3
  11. package/dist/backgroundChecksWorker.js +3 -3
  12. package/dist/{batchRender-3AYDQRBI.js → batchRender-PASZTMEE.js} +7 -7
  13. package/dist/{beats-P4LENNVT.js → beats-KGIOEBLW.js} +12 -12
  14. package/dist/{benchmark-AXOAECN3.js → benchmark-ZNY2L7HN.js} +24 -24
  15. package/dist/{browser-XZKB5HGJ.js → browser-REAO7RU4.js} +20 -20
  16. package/dist/{bundleWithLocalizedFonts-2WCR57IN.js → bundleWithLocalizedFonts-OAYLYC4W.js} +2 -2
  17. package/dist/{capture-NWARHRHR.js → capture-IK6GWQDD.js} +8 -5
  18. package/dist/{capture-4RN4APDF.js → capture-WOSF276U.js} +49 -41
  19. package/dist/{captureCompositionFrame-QOF5BRF4.js → captureCompositionFrame-DDZNKYRE.js} +21 -20
  20. package/dist/{captureTimeout-K2JNVVCI.js → captureTimeout-RIMG6IYH.js} +1 -1
  21. package/dist/{catalog-CRPOPVD5.js → catalog-AKTXS7OJ.js} +42 -42
  22. package/dist/{catch-up-MHWGUQ42.js → catch-up-O3VZMPVE.js} +15 -15
  23. package/dist/check-6E46NIWI.js +116 -0
  24. package/dist/checkBrowser-UNZHQFNH.js +117 -0
  25. package/dist/{chunk-Y2RXRPL2.js → chunk-3BA2GP4H.js} +5 -5
  26. package/dist/{chunk-N5SXQCJL.js → chunk-3OLIGYWN.js} +3 -3
  27. package/dist/{chunk-OR5WCFWZ.js → chunk-3Q47QC46.js} +2 -2
  28. package/dist/{chunk-EOADENKV.js → chunk-4FQKS7BJ.js} +16 -14
  29. package/dist/{chunk-HODBPO4A.js → chunk-4UFJWRHG.js} +461 -275
  30. package/dist/{chunk-537IYAEE.js → chunk-4UMPIPCQ.js} +9 -1
  31. package/dist/{chunk-OJTDUF4W.js → chunk-5MBLWFLM.js} +1 -1
  32. package/dist/{chunk-UVEQLDKB.js → chunk-5OGDBU4G.js} +3 -2
  33. package/dist/{chunk-L3YOGIPG.js → chunk-66LREXGS.js} +1 -1
  34. package/dist/{chunk-YPBIAONI.js → chunk-73LTCCZI.js} +218 -150
  35. package/dist/{chunk-GZVP4TWN.js → chunk-7JAD4MEW.js} +1 -1
  36. package/dist/{chunk-NAMGMP3R.js → chunk-7KVVNF7B.js} +1 -1
  37. package/dist/{chunk-GK2FIKIQ.js → chunk-ADDHW2FS.js} +214 -37
  38. package/dist/{chunk-WUQUR33W.js → chunk-AKFADCMS.js} +1 -1
  39. package/dist/{chunk-VAJIPSN6.js → chunk-ANR6WOC3.js} +1 -1
  40. package/dist/{chunk-4USWWI2Y.js → chunk-ATMDOUNN.js} +2 -2
  41. package/dist/{chunk-XSRUVMXK.js → chunk-B2SZZFWW.js} +4 -4
  42. package/dist/{chunk-TO6JNTML.js → chunk-BP4VNTZL.js} +13 -8
  43. package/dist/{chunk-DJJ7SK4F.js → chunk-CAHTO62O.js} +8 -8
  44. package/dist/{chunk-GNE57O7U.js → chunk-CGK4XZ2J.js} +1 -1
  45. package/dist/{chunk-O5AE7HOP.js → chunk-CJYAJ3QM.js} +37 -33
  46. package/dist/{chunk-5JMZLQT6.js → chunk-COTLNID2.js} +16 -16
  47. package/dist/{chunk-E24HSMZV.js → chunk-CYBXXSC4.js} +65 -14
  48. package/dist/{chunk-NZZYJOMJ.js → chunk-CZUAX3BV.js} +6 -5
  49. package/dist/{chunk-K26FR4SM.js → chunk-DEORFAWP.js} +12 -12
  50. package/dist/{chunk-GV5R5B7Q.js → chunk-DGECWPTL.js} +1 -1
  51. package/dist/{chunk-BRHI7EIA.js → chunk-DKPNNYBZ.js} +4 -0
  52. package/dist/{chunk-5E5EYPZO.js → chunk-DLC2FICN.js} +7 -7
  53. package/dist/{chunk-D3ZWBHZP.js → chunk-DYAPHNV6.js} +3 -2
  54. package/dist/{chunk-RGHQID2E.js → chunk-EHSBBBR2.js} +5 -3
  55. package/dist/{chunk-IWTRHPTP.js → chunk-EVAQPW6O.js} +8 -8
  56. package/dist/{chunk-S3RYRF3W.js → chunk-F6WHPHLF.js} +1 -1
  57. package/dist/chunk-FG4BBFZI.js +122 -0
  58. package/dist/{chunk-WITHUCCB.js → chunk-GAGMLVCV.js} +2 -2
  59. package/dist/chunk-GMNHAOMJ.js +3805 -0
  60. package/dist/{chunk-KIO3R4QN.js → chunk-GPE3WWTO.js} +16 -6
  61. package/dist/{chunk-IL3GTCQY.js → chunk-GTE5WZAM.js} +72 -140
  62. package/dist/{chunk-55IG255C.js → chunk-HLBODNGW.js} +1 -1
  63. package/dist/{chunk-KMAAOHLO.js → chunk-HRPWRZGF.js} +1 -1
  64. package/dist/{chunk-UPFUC4DB.js → chunk-HTIUNMTP.js} +1 -1
  65. package/dist/{chunk-WUUCEFL5.js → chunk-IC2WYONA.js} +5 -5
  66. package/dist/{chunk-DUN63LHY.js → chunk-ITSLKUQM.js} +2 -2
  67. package/dist/{chunk-YJDB4FLT.js → chunk-JQYJXUJW.js} +1 -1
  68. package/dist/{chunk-PBN6GBJE.js → chunk-JVBRJMOP.js} +14 -1
  69. package/dist/{chunk-XH262OWN.js → chunk-K2Z5DZBS.js} +1 -1
  70. package/dist/{chunk-RHWJKSGH.js → chunk-KANNRHY7.js} +1 -1
  71. package/dist/{chunk-AOWDVB2T.js → chunk-KRFAX5JK.js} +1 -1
  72. package/dist/{chunk-UIDZRCBG.js → chunk-LBWRQ4XA.js} +1 -1
  73. package/dist/{chunk-T7UHTUUE.js → chunk-MIZDJVPZ.js} +9 -9
  74. package/dist/{chunk-32GKETR7.js → chunk-MMQ52NIZ.js} +74 -0
  75. package/dist/chunk-MOEGCMKI.js +180 -0
  76. package/dist/{chunk-E6RPWJVC.js → chunk-NAUKCKCJ.js} +5 -1
  77. package/dist/{chunk-JBCU6NR5.js → chunk-NZ3BE2QE.js} +56 -55
  78. package/dist/{chunk-JMFJI26U.js → chunk-O7N3A7PE.js} +2 -2
  79. package/dist/{chunk-3PULCIY5.js → chunk-OH56PXFH.js} +5 -5
  80. package/dist/{chunk-H4YZZ2VQ.js → chunk-PFD25NAC.js} +1 -1
  81. package/dist/{check-DJCUOUDI.js → chunk-Q6UYKWBG.js} +198 -142
  82. package/dist/{chunk-3DKN5WKL.js → chunk-QH3T4WI2.js} +77 -6
  83. package/dist/{chunk-Y5GY6Y7A.js → chunk-QX4GGPMY.js} +2 -2
  84. package/dist/{chunk-B6JLCPT3.js → chunk-R6OV4J4K.js} +6 -6
  85. package/dist/{chunk-XEWHUPFS.js → chunk-RZXUQR42.js} +2 -2
  86. package/dist/{chunk-YMS6CJCD.js → chunk-SAQYJLI6.js} +1 -1
  87. package/dist/{chunk-OJDXABUF.js → chunk-TJB4GAV6.js} +2 -2
  88. package/dist/{checkBrowser-VES2NF3K.js → chunk-TOHA5NAU.js} +187 -114
  89. package/dist/{chunk-RXQHSGAQ.js → chunk-TXGZZKDF.js} +2 -2
  90. package/dist/{chunk-3XDOGSRD.js → chunk-U5YVWG5W.js} +3 -3
  91. package/dist/{chunk-ICMXC3MI.js → chunk-U6RXZNZE.js} +31 -18
  92. package/dist/{chunk-PF7OWVTL.js → chunk-UNOSCGBG.js} +2 -2
  93. package/dist/{chunk-X7CCSMRR.js → chunk-VAK7A2N6.js} +16 -16
  94. package/dist/{chunk-OFY6JTZC.js → chunk-VDJO4DJ7.js} +2 -2
  95. package/dist/{chunk-LBQFLUIY.js → chunk-VFBAKPRC.js} +9 -49
  96. package/dist/{chunk-ZUOSILUE.js → chunk-VH5KESLX.js} +1 -1
  97. package/dist/{chunk-22QHO26F.js → chunk-W64L7IFS.js} +1 -1
  98. package/dist/{chunk-4IEH6EAC.js → chunk-WT4PYV2J.js} +4 -6
  99. package/dist/{chunk-XFCLWWL3.js → chunk-X3IA5RYH.js} +2 -2
  100. package/dist/{chunk-UZOZ2W2E.js → chunk-XAQDR5Y5.js} +2 -2
  101. package/dist/{chunk-6I7V6Q7F.js → chunk-XJHKJXT4.js} +103 -20
  102. package/dist/{chunk-V2UNZ7QP.js → chunk-XOVHO3TT.js} +25 -14
  103. package/dist/{chunk-65WIUIHL.js → chunk-XR5BSEUF.js} +7 -15
  104. package/dist/{chunk-IZM562YJ.js → chunk-Z4R35NJS.js} +4 -4
  105. package/dist/{chunk-4OT3FWVV.js → chunk-ZFO3A3QL.js} +2 -2
  106. package/dist/{clean-GJNDVVDI.js → clean-WNEIVBF3.js} +40 -40
  107. package/dist/cli.js +68 -64
  108. package/dist/{cloud-JCWNMKXC.js → cloud-6GSSDCJL.js} +4 -4
  109. package/dist/{cloudrun-2BKGY53X.js → cloudrun-4NEJRE4T.js} +8 -8
  110. package/dist/commands/layout-audit.browser.js +15 -4
  111. package/dist/commands/motion-signature.browser.js +52 -0
  112. package/dist/{compare-XWM7FAYM.js → compare-2JWQ5ABA.js} +50 -47
  113. package/dist/{compiler-U3W6CJW7.js → compiler-27KQD7KW.js} +6 -6
  114. package/dist/{component-CBRAE325.js → component-HCRET3MH.js} +4 -4
  115. package/dist/{compositions-EZYJEHQ3.js → compositions-HTSQ6SUJ.js} +28 -29
  116. package/dist/{contactSheet-27SRU7A4.js → contactSheet-CAGMKI3E.js} +3 -1
  117. package/dist/{delete-JWWMOITI.js → delete-GHQ5UYM7.js} +9 -9
  118. package/dist/{deploy-UGOV76OH.js → deploy-I3Z3NAVA.js} +11 -11
  119. package/dist/{destroy-QBLMYDBF.js → destroy-4B5HW5FH.js} +5 -5
  120. package/dist/{deterministicFonts-L7YEEFGI.js → deterministicFonts-JFLSSKRB.js} +2 -2
  121. package/dist/{dist-2FMTAVGL.js → dist-SENYPQGW.js} +4 -4
  122. package/dist/{dist-VO7OXOFK.js → dist-WRDLWRMS.js} +5 -5
  123. package/dist/{docs-MPOM3PHH.js → docs-UEWLIP6D.js} +1 -1
  124. package/dist/{doctor-XSKSZRR7.js → doctor-UGFVQZHI.js} +27 -27
  125. package/dist/{events-AIZODZMP.js → events-BLJGWMNP.js} +9 -9
  126. package/dist/{events-RGS4MAH4.js → events-YS4OVX3I.js} +6 -6
  127. package/dist/{feedback-GE3VDZOH.js → feedback-AZ3SJ5HF.js} +35 -35
  128. package/dist/{ffmpeg-SCXZTR6X.js → ffmpeg-2AECXG7V.js} +15 -15
  129. package/dist/{figma-3R4XST4Y.js → figma-DRYIJQHV.js} +3 -3
  130. package/dist/fontLocalizeCli.js +23 -23
  131. package/dist/{get-4FKJP6IM.js → get-DDEAOFPB.js} +9 -9
  132. package/dist/{gpuPolicy-4NNXESM7.js → gpuPolicy-UDJT2MQK.js} +13 -13
  133. package/dist/{grade-compare-FAYVPXUR.js → grade-compare-LJKK5NSY.js} +55 -50
  134. package/dist/{help-C3UQMYXK.js → help-TQBGYOID.js} +1 -1
  135. package/dist/{history-LDGQ2IZJ.js → history-5TOOCF2Y.js} +15 -15
  136. package/dist/hyperframe.manifest.json +1 -1
  137. package/dist/hyperframe.runtime.iife.js +17 -17
  138. package/dist/hyperframes-player.global.js +8 -3
  139. package/dist/{info-KMXFLD3Q.js → info-ENI5MP4W.js} +20 -20
  140. package/dist/{init-D7GYHSX5.js → init-JXPXWV3G.js} +68 -68
  141. package/dist/{inspect-CUKWHCGS.js → inspect-WZNYQ5AB.js} +45 -44
  142. package/dist/{installer-EPRSH6QI.js → installer-3SGRBLJW.js} +7 -7
  143. package/dist/{keyframes-XCUPHBW3.js → keyframes-HEOC4CT4.js} +16 -16
  144. package/dist/{lambda-IMORFJHN.js → lambda-2VHQ4AL2.js} +15 -15
  145. package/dist/{layout-JD2IOBMS.js → layout-7WEUNO6T.js} +45 -44
  146. package/dist/{lint-FHLER36Y.js → lint-5YMAF3L7.js} +23 -23
  147. package/dist/{lintProject-ARKJXDQF.js → lintProject-C2ONSH2U.js} +4 -4
  148. package/dist/{list-MGCFG5MA.js → list-BIE3X7CO.js} +10 -10
  149. package/dist/{login-QX6M4UTR.js → login-YDIGJWCG.js} +7 -7
  150. package/dist/{logout-DKJANASY.js → logout-DDC4QLVK.js} +3 -3
  151. package/dist/{manager-IETAVBZS.js → manager-D2UV6RDQ.js} +16 -16
  152. package/dist/{manager-V2QCCPOJ.js → manager-UHWEKPXC.js} +8 -3
  153. package/dist/{media-treatment-MDAQRITV.js → media-treatment-FSKHPMWA.js} +33 -33
  154. package/dist/{media-use-4XXGABIL.js → media-use-JBN57JE3.js} +1 -1
  155. package/dist/{models-NZAOSI5A.js → models-COEK6LXG.js} +24 -24
  156. package/dist/{motionShot-6ZDUM2K4.js → motionShot-HYZ2ZGJQ.js} +28 -26
  157. package/dist/{normalize-audio-7PRYX6QM.js → normalize-audio-UXR6WQ7Q.js} +12 -12
  158. package/dist/{open-I254NY5J.js → open-OFT2GIDG.js} +24 -24
  159. package/dist/{parakeetRunner-TL3TOGUS.js → parakeetRunner-4NZ3QXS3.js} +25 -25
  160. package/dist/{pipeline-YPERVOQM.js → pipeline-ZKE54JMG.js} +18 -18
  161. package/dist/{play-MYI7BYKS.js → play-2VG77FT6.js} +39 -38
  162. package/dist/{policies-5NTZOHJA.js → policies-XXNGXWHV.js} +1 -1
  163. package/dist/{preflight-HRCSZ52D.js → preflight-QTWDIM5C.js} +18 -18
  164. package/dist/{present-WYXQDV4Q.js → present-OONXQLJG.js} +33 -33
  165. package/dist/{preview-535HTWQO.js → preview-6RZJFU76.js} +49 -49
  166. package/dist/{producer-C76CRJ5O.js → producer-6YM3UH3B.js} +1 -1
  167. package/dist/{progress-I37JB7R4.js → progress-NHJIHAAG.js} +2 -2
  168. package/dist/{projectConfig-5QCNTGQT.js → projectConfig-YMW4P2X6.js} +9 -9
  169. package/dist/{publication-2QT7VVE2.js → publication-SEINUAPZ.js} +5 -5
  170. package/dist/{publish-53EBL7OO.js → publish-KZBTBWFO.js} +27 -27
  171. package/dist/{refresh-MGCVWX56.js → refresh-RXTOPRBB.js} +3 -3
  172. package/dist/{remove-background-OBYHMPD4.js → remove-background-BIQNMIR7.js} +31 -31
  173. package/dist/{render-5BXTEEG7.js → render-65K3K6SD.js} +31 -31
  174. package/dist/{render-3MELF6Y3.js → render-FIH37HJA.js} +101 -96
  175. package/dist/{render-75CRB3BW.js → render-LW76HOMJ.js} +8 -8
  176. package/dist/{render-batch-CEVWUYBP.js → render-batch-POLEEYD4.js} +8 -8
  177. package/dist/renderSetupWorker.js +12 -9
  178. package/dist/{resolver-4ICE2AT6.js → resolver-O2SED3XB.js} +7 -7
  179. package/dist/{screenshotCapture-HXEZ3TNJ.js → screenshotCapture-UBY6TT75.js} +33 -6
  180. package/dist/{sherpa-L4UACXT3.js → sherpa-HTFFFTVQ.js} +24 -24
  181. package/dist/{sites-3ZBYB5X4.js → sites-MAVH57MO.js} +2 -2
  182. package/dist/skills/hyperframes/references/review-loop.md +1 -1
  183. package/dist/{skills-DXTQPCAO.js → skills-J6MBGS5O.js} +17 -17
  184. package/dist/{skillsUpdateCheck-ULXRGLDU.js → skillsUpdateCheck-ZAXNLBF3.js} +3 -3
  185. package/dist/{snapshot-PWFHQU5E.js → snapshot-TL7TTFS6.js} +72 -71
  186. package/dist/{src-RDSWHMJS.js → src-EL6HGIS4.js} +33 -26
  187. package/dist/{src-S7NVL5VF.js → src-Z5H5N5T4.js} +19 -19
  188. package/dist/{state-KAXGHF77.js → state-ORRPOLMQ.js} +2 -2
  189. package/dist/{staticProjectServer-GYPUQGI7.js → staticProjectServer-EO7X7RAY.js} +20 -20
  190. package/dist/{status-BV7QAUQD.js → status-CM7IQTU2.js} +6 -6
  191. package/dist/studio/assets/{hyperframes-player-DcD3NXpX.js → hyperframes-player-hz_VqxBZ.js} +7 -2
  192. package/dist/studio/assets/{index-BIDKYk0h.js → index-CV_ojgp5.js} +1 -1
  193. package/dist/studio/assets/{index-CFrZAwKo.js → index-S1ceEagc.js} +4 -4
  194. package/dist/studio/index.html +1 -1
  195. package/dist/{studio-api-IXGX5ZFI.js → studio-api-CUZDC5B3.js} +17 -17
  196. package/dist/{studioServer-LA5Z7RSS.js → studioServer-EZPRV43Y.js} +90 -84
  197. package/dist/{telemetry-STEMAMAX.js → telemetry-LFUVHARP.js} +10 -10
  198. package/dist/{telemetry-CQYHCCPL.js → telemetry-QG5AANZ4.js} +1 -1
  199. package/dist/{timeline-KLD24EN6.js → timeline-GSH743JE.js} +41 -41
  200. package/dist/{tokens-ICLORAA4.js → tokens-3ZMPSH7B.js} +3 -3
  201. package/dist/{transcribe-A6IKK7VS.js → transcribe-4SHNDPWW.js} +47 -47
  202. package/dist/{transcribe-CTHZLRXF.js → transcribe-TV7JBZQS.js} +19 -19
  203. package/dist/{tts-EDK3QS7M.js → tts-A2WILYGN.js} +6 -6
  204. package/dist/{updateCheck-FHCAAAXA.js → updateCheck-W7FTFOQF.js} +2 -2
  205. package/dist/{upgrade-7EV4F2R7.js → upgrade-7YYYNAPF.js} +3 -3
  206. package/dist/{urlDownloader-MIMGVASJ.js → urlDownloader-PQSUS2CP.js} +12 -12
  207. package/dist/{validate-LZF46W3V.js → validate-GCHAEVXM.js} +39 -38
  208. package/dist/{video-ZC47NFOL.js → video-KGN7NJS5.js} +16 -14
  209. package/dist/warmCheck.js +227 -0
  210. package/dist/warmCheckClient.js +139 -0
  211. package/package.json +4 -2
  212. package/dist/chunk-BAZ5LCR3.js +0 -3805
  213. package/dist/hyperframe-runtime.js +0 -1125
  214. package/dist/{chunk-B4VT6YU2.js → chunk-QGOYNPQT.js} +3 -3
  215. package/dist/{synthesize-I2C24XJ5.js → synthesize-PKTB5ATG.js} +1 -1
@@ -16,37 +16,37 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-T7UHTUUE.js";
19
+ } from "./chunk-MIZDJVPZ.js";
20
20
  import {
21
- getAvailableMemoryMb,
22
- getFreeDiskMb,
23
- getShmSizeMb,
24
- getSystemMeta
25
- } from "./chunk-T6AGUTZJ.js";
21
+ OPTIONAL_PACKAGES,
22
+ installedOptionalPackageVersion
23
+ } from "./chunk-QH3T4WI2.js";
26
24
  import {
27
25
  defineCommand
28
26
  } from "./chunk-S3S4TGEH.js";
29
27
  import {
30
28
  c
31
29
  } from "./chunk-ZTZA4UWZ.js";
30
+ import {
31
+ resolveExtractCacheDir
32
+ } from "./chunk-73LTCCZI.js";
33
+ import {
34
+ getAvailableMemoryMb,
35
+ getFreeDiskMb,
36
+ getShmSizeMb,
37
+ getSystemMeta
38
+ } from "./chunk-T6AGUTZJ.js";
32
39
  import {
33
40
  getUpdateMeta,
34
41
  withMeta
35
- } from "./chunk-VAJIPSN6.js";
42
+ } from "./chunk-ANR6WOC3.js";
36
43
  import {
37
44
  CONFIG_PATH,
38
45
  withFileLock
39
46
  } from "./chunk-XUXGIA7H.js";
40
47
  import {
41
48
  VERSION
42
- } from "./chunk-XEWHUPFS.js";
43
- import {
44
- OPTIONAL_PACKAGES,
45
- installedOptionalPackageVersion
46
- } from "./chunk-3DKN5WKL.js";
47
- import {
48
- resolveExtractCacheDir
49
- } from "./chunk-YPBIAONI.js";
49
+ } from "./chunk-RZXUQR42.js";
50
50
  import {
51
51
  normalizeErrorMessage
52
52
  } from "./chunk-KNU5COPB.js";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-IETAVBZS.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-D2UV6RDQ.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -5,12 +5,17 @@ var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
+ runCancellableProcess,
8
9
  runRenderSetupWorker
9
- } from "./chunk-D3ZWBHZP.js";
10
+ } from "./chunk-DYAPHNV6.js";
10
11
  import {
12
+ getFreeDiskMb
13
+ } from "./chunk-T6AGUTZJ.js";
14
+ import {
15
+ browserPathFromEnv,
11
16
  managedChromeVersion,
12
17
  pickSharedShell
13
- } from "./chunk-537IYAEE.js";
18
+ } from "./chunk-4UMPIPCQ.js";
14
19
  import {
15
20
  normalizeErrorMessage
16
21
  } from "./chunk-KNU5COPB.js";
@@ -31,7 +36,33 @@ import {
31
36
  } from "fs";
32
37
  import { homedir } from "os";
33
38
  import { debuglog } from "util";
34
- import { basename, dirname, join, relative } from "path";
39
+ import { basename, dirname as dirname2, join, relative } from "path";
40
+
41
+ // src/browser/unzipArchive.ts
42
+ import { mkdir } from "fs/promises";
43
+ import { dirname } from "path";
44
+ var UNZIP_DISK_FULL_STATUS = 50;
45
+ async function unzipArchive(archivePath, folderPath) {
46
+ await mkdir(dirname(folderPath), { recursive: true });
47
+ try {
48
+ await runCancellableProcess("unzip", ["-q", "-o", archivePath, "-d", folderPath], {
49
+ detached: false
50
+ });
51
+ return true;
52
+ } catch (err) {
53
+ if (err.code === "ENOENT") return false;
54
+ if (err.status === UNZIP_DISK_FULL_STATUS) {
55
+ throw new Error(
56
+ "Extraction failed: the disk filled up while unpacking Chrome. Free disk space, then retry.",
57
+ { cause: err }
58
+ );
59
+ }
60
+ const said = err.stderr?.trim();
61
+ throw new Error(`Extraction failed: ${said || err.message}`, { cause: err });
62
+ }
63
+ }
64
+
65
+ // src/browser/manager.ts
35
66
  async function loadPuppeteerBrowsers() {
36
67
  try {
37
68
  return await import("@puppeteer/browsers");
@@ -45,6 +76,7 @@ Fix: run \`npm install\` or \`bun install\` to restore missing packages, then re
45
76
  }
46
77
  var CACHE_ROOT_DIR = join(homedir(), ".cache", "hyperframes");
47
78
  var CACHE_DIR = join(homedir(), ".cache", "hyperframes", "chrome");
79
+ var ARCHIVE_PLUS_UNPACKED_SHELL_MB = 512;
48
80
  var PUPPETEER_CACHE_DIR = join(homedir(), ".cache", "puppeteer", "chrome-headless-shell");
49
81
  var INSTALL_LOCK_DIR = join(CACHE_ROOT_DIR, ".chrome.install.lock");
50
82
  var INSTALL_RECLAIM_LOCK_DIR = join(CACHE_ROOT_DIR, ".chrome.install.reclaim.lock");
@@ -206,7 +238,7 @@ function whichBinary(name) {
206
238
  }
207
239
  }
208
240
  function findFromEnv() {
209
- const envPath = process.env["HYPERFRAMES_BROWSER_PATH"] ?? process.env["PRODUCER_HEADLESS_SHELL_PATH"];
241
+ const envPath = browserPathFromEnv()?.path;
210
242
  if (envPath && existsSync(envPath)) {
211
243
  return { executablePath: envPath, source: "env" };
212
244
  }
@@ -458,21 +490,28 @@ async function downloadBrowser(options) {
458
490
  if (isLinuxArm()) {
459
491
  return ensureLinuxArmBrowser(options);
460
492
  }
461
- const { Browser, detectBrowserPlatform, install } = await loadPuppeteerBrowsers();
493
+ removeInstallLeftovers();
494
+ const freeMb = getFreeDiskMb(CACHE_ROOT_DIR);
495
+ if (freeMb !== null && freeMb < ARCHIVE_PLUS_UNPACKED_SHELL_MB) {
496
+ throw new Error(
497
+ `Low disk space: Chrome Headless Shell needs about ${ARCHIVE_PLUS_UNPACKED_SHELL_MB} MB to download, ${freeMb} MB free at ${CACHE_ROOT_DIR}. Free disk space, then retry.`
498
+ );
499
+ }
500
+ const { Browser, Cache, detectBrowserPlatform, install } = await loadPuppeteerBrowsers();
462
501
  const platform = detectBrowserPlatform();
463
502
  if (!platform) {
464
503
  throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);
465
504
  }
466
- removeInstallLeftovers();
467
505
  const stagingDir = join(CACHE_ROOT_DIR, `${STAGING_PREFIX}${randomUUID()}`);
468
506
  const clearStaging = () => rmSync(stagingDir, { recursive: true, force: true });
469
507
  let unzipLog = [];
470
- const runInstall = () => {
508
+ const buildId = managedChromeVersion();
509
+ const runInstall = async () => {
471
510
  unzipLog = [];
472
- return install({
511
+ const installOptions = {
473
512
  cacheDir: stagingDir,
474
513
  browser: Browser.CHROMEHEADLESSSHELL,
475
- buildId: managedChromeVersion(),
514
+ buildId,
476
515
  platform,
477
516
  downloadProgressCallback: options?.onProgress,
478
517
  logger: (prefix) => {
@@ -485,7 +524,14 @@ async function downloadBrowser(options) {
485
524
  if (debug.enabled) debug(line);
486
525
  };
487
526
  }
488
- });
527
+ };
528
+ const unzipMayAskOnInput = process.platform !== "win32";
529
+ if (unzipMayAskOnInput) {
530
+ const archive = await install({ ...installOptions, unpack: false });
531
+ const into = new Cache(stagingDir).installationDir(installOptions.browser, platform, buildId);
532
+ await unzipArchive(archive, into);
533
+ }
534
+ return install(installOptions);
489
535
  };
490
536
  try {
491
537
  const staged = await installWithCorruptArchiveRecovery(
@@ -527,7 +573,7 @@ function assertExecutableUnpacked(stagingDir, executablePath) {
527
573
  function moveStagedInstallIntoCache(stagingDir, staged) {
528
574
  const target = join(CACHE_DIR, relative(stagingDir, staged.path));
529
575
  const aside = join(CACHE_ROOT_DIR, `${REPLACED_PREFIX}${randomUUID()}`);
530
- mkdirSync(dirname(target), { recursive: true });
576
+ mkdirSync(dirname2(target), { recursive: true });
531
577
  let replaced = false;
532
578
  try {
533
579
  renameSync(target, aside);
@@ -546,6 +592,7 @@ function moveStagedInstallIntoCache(stagingDir, staged) {
546
592
  }
547
593
  var STAGING_PREFIX = ".chrome-staging-";
548
594
  var REPLACED_PREFIX = ".chrome-replaced-";
595
+ var isInstallLeftover = (name) => name.startsWith(STAGING_PREFIX) || name.startsWith(REPLACED_PREFIX);
549
596
  function removeInstallLeftovers() {
550
597
  let names;
551
598
  try {
@@ -554,13 +601,16 @@ function removeInstallLeftovers() {
554
601
  if (isErrno(err, "ENOENT")) return false;
555
602
  throw err;
556
603
  }
557
- const leftovers = names.filter(
558
- (name) => name.startsWith(STAGING_PREFIX) || name.startsWith(REPLACED_PREFIX)
559
- );
604
+ const leftovers = names.filter(isInstallLeftover);
560
605
  for (const name of leftovers)
561
606
  rmSync(join(CACHE_ROOT_DIR, name), { recursive: true, force: true });
562
607
  return leftovers.length > 0;
563
608
  }
609
+ async function sweepKilledInstalls() {
610
+ const names = existsSync(CACHE_ROOT_DIR) ? readdirSync(CACHE_ROOT_DIR) : [];
611
+ if (!names.some(isInstallLeftover)) return;
612
+ await withInstallLock(async () => removeInstallLeftovers());
613
+ }
564
614
  function clearBrowser() {
565
615
  const removedLeftovers = removeInstallLeftovers();
566
616
  if (!existsSync(CACHE_DIR)) return removedLeftovers;
@@ -581,6 +631,7 @@ export {
581
631
  ensureBrowser,
582
632
  isCorruptArchiveError,
583
633
  installWithCorruptArchiveRecovery,
634
+ sweepKilledInstalls,
584
635
  clearBrowser,
585
636
  isLinuxArm
586
637
  };
@@ -18,10 +18,11 @@ var CONNECTIONS = 8;
18
18
  var RETRIES = 3;
19
19
  async function downloadToFile(url, destPath, options = {}) {
20
20
  const fetchImpl = options.fetchImpl ?? fetch;
21
+ const partBytes = options.partBytes ?? PART_BYTES;
21
22
  const failFast = new AbortController();
22
23
  const signal = options.signal ? AbortSignal.any([options.signal, failFast.signal]) : failFast.signal;
23
24
  const get = async (range) => fetchImpl(url, { signal, headers: range ? { range } : {} });
24
- let first = await get(`bytes=0-${PART_BYTES - 1}`);
25
+ let first = await get(`bytes=0-${partBytes - 1}`);
25
26
  if (first.status === 416 || first.status === 206 && contentRangeTotal(first) === void 0) {
26
27
  await first.body?.cancel();
27
28
  first = await get();
@@ -74,10 +75,10 @@ async function downloadToFile(url, destPath, options = {}) {
74
75
  };
75
76
  const parts = [];
76
77
  if (ranged && total !== void 0) {
77
- parts.push(fetchRange(0, Math.min(PART_BYTES, total) - 1, first));
78
- const rest = total - PART_BYTES;
79
- const size = Math.ceil(rest / Math.min(CONNECTIONS - 1, Math.ceil(rest / PART_BYTES)));
80
- for (let start = PART_BYTES; start < total; start += size) {
78
+ parts.push(fetchRange(0, Math.min(partBytes, total) - 1, first));
79
+ const rest = total - partBytes;
80
+ const size = Math.ceil(rest / Math.min(CONNECTIONS - 1, Math.ceil(rest / partBytes)));
81
+ for (let start = partBytes; start < total; start += size) {
81
82
  parts.push(fetchRange(start, Math.min(start + size, total) - 1));
82
83
  }
83
84
  } else {
@@ -7,15 +7,23 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  diag
9
9
  } from "./chunk-VWG7OQKU.js";
10
- import {
11
- getSystemMeta
12
- } from "./chunk-T6AGUTZJ.js";
13
10
  import {
14
11
  getInvocationId
15
12
  } from "./chunk-54HJ63Q2.js";
16
13
  import {
17
14
  c
18
15
  } from "./chunk-ZTZA4UWZ.js";
16
+ import {
17
+ CANARIES,
18
+ canaryEnvVar,
19
+ canaryFeatureProperties,
20
+ evaluateCanary,
21
+ findCanary,
22
+ parseCanaryOverride
23
+ } from "./chunk-FXMKHHPO.js";
24
+ import {
25
+ getSystemMeta
26
+ } from "./chunk-T6AGUTZJ.js";
19
27
  import {
20
28
  hostAnswers
21
29
  } from "./chunk-K4WIOZFP.js";
@@ -29,15 +37,7 @@ import {
29
37
  } from "./chunk-XUXGIA7H.js";
30
38
  import {
31
39
  VERSION
32
- } from "./chunk-XEWHUPFS.js";
33
- import {
34
- CANARIES,
35
- canaryEnvVar,
36
- canaryFeatureProperties,
37
- evaluateCanary,
38
- findCanary,
39
- parseCanaryOverride
40
- } from "./chunk-FXMKHHPO.js";
40
+ } from "./chunk-RZXUQR42.js";
41
41
 
42
42
  // src/telemetry/transport.ts
43
43
  import { spawn } from "child_process";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  failUsage
12
- } from "./chunk-PBN6GBJE.js";
12
+ } from "./chunk-JVBRJMOP.js";
13
13
 
14
14
  // src/cloud/parsing.ts
15
15
  var INTEGER_RE = /^-?\d+$/;
@@ -12,6 +12,9 @@ var CPU_COMPOSITING = "--disable-gpu-compositing";
12
12
  function machServiceDenied(errorMessage) {
13
13
  return MACH_SERVICE_DENIED.test(errorMessage);
14
14
  }
15
+ function pipeLaunchClosedOnMac(error, platform = process.platform) {
16
+ return platform === "darwin" && error instanceof Error && error.name === "TargetCloseError";
17
+ }
15
18
  function inAgentSandbox(env = process.env, platform = process.platform) {
16
19
  return platform === "darwin" && env.CODEX_SANDBOX === "seatbelt";
17
20
  }
@@ -33,6 +36,7 @@ function sandboxDeniedRemediation(errorMessage) {
33
36
 
34
37
  export {
35
38
  machServiceDenied,
39
+ pipeLaunchClosedOnMac,
36
40
  inAgentSandbox,
37
41
  oneProcessOverPipe,
38
42
  isOneProcessOverPipe,
@@ -8,19 +8,19 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-K26FR4SM.js";
11
+ } from "./chunk-DEORFAWP.js";
12
+ import {
13
+ CliRuntimeError
14
+ } from "./chunk-JVBRJMOP.js";
15
+ import {
16
+ redactTelemetryString
17
+ } from "./chunk-634HSJ3J.js";
12
18
  import {
13
19
  getPowerState
14
20
  } from "./chunk-T6AGUTZJ.js";
15
- import {
16
- CliRuntimeError
17
- } from "./chunk-PBN6GBJE.js";
18
21
  import {
19
22
  readConfig
20
23
  } from "./chunk-XUXGIA7H.js";
21
- import {
22
- redactTelemetryString
23
- } from "./chunk-634HSJ3J.js";
24
24
 
25
25
  // src/utils/feedbackRating.ts
26
26
  var FEEDBACK_RATING_SCALE = 10;
@@ -86,6 +86,7 @@ var CancellableProcessError = class extends Error {
86
86
  function runCancellableProcess(command, args, options = {}) {
87
87
  const signal = options.signal;
88
88
  signal?.throwIfAborted();
89
+ const detached = options.detached ?? process.platform !== "win32";
89
90
  return new Promise((resolve, reject) => {
90
91
  let child;
91
92
  try {
@@ -94,7 +95,7 @@ function runCancellableProcess(command, args, options = {}) {
94
95
  env: options.env,
95
96
  stdio: ["ignore", "pipe", "pipe"],
96
97
  windowsHide: true,
97
- detached: process.platform !== "win32"
98
+ detached
98
99
  };
99
100
  child = spawn(command, [...args], spawnOptions);
100
101
  } catch (error) {
@@ -130,7 +131,7 @@ function runCancellableProcess(command, args, options = {}) {
130
131
  terminationCode = code;
131
132
  terminationSignal = "SIGTERM";
132
133
  if (processTreePid) {
133
- terminationTask = terminateProcessTree(processTreePid, { child, processGroup: true });
134
+ terminationTask = terminateProcessTree(processTreePid, { child, processGroup: detached });
134
135
  void terminationTask.catch(() => void 0);
135
136
  }
136
137
  };
@@ -6,7 +6,6 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/capture/captureTimeout.ts
9
- import { TimeoutError } from "puppeteer-core";
10
9
  var PUPPETEER_DEFAULT_PROTOCOL_TIMEOUT_MS = 18e4;
11
10
  var StageBudgetTimeoutError = class extends Error {
12
11
  budgetMs;
@@ -25,6 +24,9 @@ function captureProtocolTimeoutMs(navTimeoutMs, postNavBudgetMs) {
25
24
  function errorMessage(err) {
26
25
  return err instanceof Error ? err.message : String(err);
27
26
  }
27
+ function isPuppeteerTimeoutError(err) {
28
+ return err instanceof Error && err.constructor.name === "TimeoutError";
29
+ }
28
30
  function hasNavigationTimeoutMessage(msg) {
29
31
  return /navigation timeout/i.test(msg);
30
32
  }
@@ -32,7 +34,7 @@ function hasProtocolEvaluateTimeoutMessage(msg) {
32
34
  return /Runtime\.evaluate timed out|protocolTimeout|protocol timeout/i.test(msg);
33
35
  }
34
36
  function isNavigationTimeoutError(err) {
35
- if (err instanceof TimeoutError) {
37
+ if (isPuppeteerTimeoutError(err)) {
36
38
  return hasNavigationTimeoutMessage(err.message);
37
39
  }
38
40
  return typeof err === "string" && hasNavigationTimeoutMessage(err);
@@ -41,7 +43,7 @@ function isStageBudgetTimeoutError(err) {
41
43
  return err instanceof StageBudgetTimeoutError;
42
44
  }
43
45
  function isProtocolEvaluateTimeoutError(err) {
44
- if (err instanceof TimeoutError) {
46
+ if (isPuppeteerTimeoutError(err)) {
45
47
  return !hasNavigationTimeoutMessage(err.message);
46
48
  }
47
49
  return hasProtocolEvaluateTimeoutMessage(errorMessage(err));
@@ -7,28 +7,28 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  relinkSplitHalves
9
9
  } from "./chunk-6JR2XUEE.js";
10
+ import {
11
+ isAllowedHtmlAttribute,
12
+ isSafeAttributeValue,
13
+ sanitizeRichTextChildren
14
+ } from "./chunk-VFBAKPRC.js";
10
15
  import {
11
16
  EXCLUDED_TAGS,
12
17
  ensureHfIds,
13
18
  mintHfId,
14
19
  walkCompositionDescendants
15
- } from "./chunk-4IEH6EAC.js";
16
- import {
17
- isAllowedHtmlAttribute,
18
- isSafeAttributeValue,
19
- sanitizeRichTextChildren
20
- } from "./chunk-LBQFLUIY.js";
20
+ } from "./chunk-WT4PYV2J.js";
21
21
  import {
22
22
  decodedUrlPath,
23
23
  removeElementWithGsapCascade
24
24
  } from "./chunk-YMS5FOMC.js";
25
25
  import {
26
26
  require_dist
27
- } from "./chunk-GK2FIKIQ.js";
27
+ } from "./chunk-ADDHW2FS.js";
28
28
  import {
29
29
  readClipTiming,
30
30
  writeClipTiming
31
- } from "./chunk-32GKETR7.js";
31
+ } from "./chunk-MMQ52NIZ.js";
32
32
  import {
33
33
  readMediaOffsetSeconds,
34
34
  readPlaybackRate
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-LBQFLUIY.js";
13
+ } from "./chunk-VFBAKPRC.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -0,0 +1,122 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // src/warmCheckProtocol.ts
9
+ import { createHash, createHmac, randomBytes, timingSafeEqual } from "crypto";
10
+ import { lstatSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs";
11
+ import { homedir } from "os";
12
+ import { join } from "path";
13
+ import { Writable } from "stream";
14
+ import { fileURLToPath } from "url";
15
+ var WARM_IDLE_MS = 5 * 6e4;
16
+ var HANDSHAKE_TIMEOUT_MS = 2e3;
17
+ var MAX_FRAME_BYTES = 64 * 1024 * 1024;
18
+ var Frame = {
19
+ Stdout: 1,
20
+ Stderr: 2,
21
+ Exit: 3,
22
+ Declined: 4,
23
+ Signal: 5,
24
+ Request: 6,
25
+ Hello: 7,
26
+ Proof: 8
27
+ };
28
+ var VOLATILE_ENV = /* @__PURE__ */ new Set(["_", "PWD", "OLDPWD"]);
29
+ function privateToMe(path, kind) {
30
+ const stat = lstatSync(path, { throwIfNoEntry: false });
31
+ if (!stat || stat.isSymbolicLink()) return false;
32
+ if (kind === "dir" ? !stat.isDirectory() : !stat.isFile()) return false;
33
+ if (process.platform === "win32") return true;
34
+ return stat.uid === process.getuid?.() && (stat.mode & 63) === 0;
35
+ }
36
+ function warmCheckDirectory(env = process.env) {
37
+ const dir = process.platform === "win32" ? join(env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local"), "hyperframes", "warm") : env.XDG_RUNTIME_DIR ? join(env.XDG_RUNTIME_DIR, "hyperframes-warm") : join(homedir(), ".cache", "hyperframes", "warm");
38
+ try {
39
+ mkdirSync(dir, { recursive: true, mode: 448 });
40
+ } catch {
41
+ return void 0;
42
+ }
43
+ return privateToMe(dir, "dir") ? dir : void 0;
44
+ }
45
+ function readToken(dir) {
46
+ const path = join(dir, "token");
47
+ try {
48
+ writeFileSync(path, randomBytes(32).toString("hex"), { flag: "wx", mode: 384 });
49
+ } catch {
50
+ }
51
+ if (!privateToMe(path, "file")) return void 0;
52
+ const token = readFileSync(path, "utf8");
53
+ return /^[0-9a-f]{64}$/.test(token) ? token : void 0;
54
+ }
55
+ function keyed(token, ...parts) {
56
+ return createHmac("sha256", token).update(parts.join("\0")).digest("hex");
57
+ }
58
+ function sameProof(expected, received) {
59
+ const a = Buffer.from(expected);
60
+ const b = Buffer.from(typeof received === "string" ? received : "");
61
+ return a.length === b.length && timingSafeEqual(a, b);
62
+ }
63
+ function envDigest(token, env) {
64
+ const entries = Object.keys(env).filter((key) => !VOLATILE_ENV.has(key) && env[key] !== void 0).sort().map((key) => `${key}=${env[key]}`);
65
+ return keyed(token, "env", ...entries);
66
+ }
67
+ function warmCheckEndpoint(env = process.env) {
68
+ const dir = warmCheckDirectory(env);
69
+ const token = dir && readToken(dir);
70
+ if (!dir || !token) return void 0;
71
+ const self = statSync(fileURLToPath(import.meta.url));
72
+ const build = createHash("sha256").update(
73
+ [import.meta.url, self.size, self.mtimeMs, process.execPath, process.version].join("\0")
74
+ ).digest("hex").slice(0, 12);
75
+ const address = process.platform === "win32" ? `\\\\.\\pipe\\hyperframes-warm-${keyed(token, "pipe", build).slice(0, 32)}` : join(dir, `${build}.sock`);
76
+ return { address, token };
77
+ }
78
+ function encodeFrame(type, data) {
79
+ const body = typeof data === "string" ? Buffer.from(data) : Buffer.from(data);
80
+ const head = Buffer.alloc(5);
81
+ head.writeUInt8(type, 0);
82
+ head.writeUInt32BE(body.length, 1);
83
+ return Buffer.concat([head, body]);
84
+ }
85
+ function frameReader(onFrame) {
86
+ let pending = Buffer.alloc(0);
87
+ let refused = false;
88
+ return (chunk) => {
89
+ if (refused) return false;
90
+ pending = Buffer.concat([pending, chunk]);
91
+ while (pending.length >= 5) {
92
+ const length = pending.readUInt32BE(1);
93
+ if (length > MAX_FRAME_BYTES) return !(refused = true);
94
+ if (pending.length < 5 + length) return true;
95
+ onFrame(pending.readUInt8(0), pending.subarray(5, 5 + length));
96
+ pending = pending.subarray(5 + length);
97
+ }
98
+ return true;
99
+ };
100
+ }
101
+ function frameForwarder(socket, type) {
102
+ const sink = new Writable({
103
+ write(chunk, _encoding, next) {
104
+ socket.write(encodeFrame(type, chunk));
105
+ next();
106
+ }
107
+ });
108
+ return sink.write.bind(sink);
109
+ }
110
+
111
+ export {
112
+ WARM_IDLE_MS,
113
+ HANDSHAKE_TIMEOUT_MS,
114
+ Frame,
115
+ keyed,
116
+ sameProof,
117
+ envDigest,
118
+ warmCheckEndpoint,
119
+ encodeFrame,
120
+ frameReader,
121
+ frameForwarder
122
+ };
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-DUN63LHY.js";
23
+ } from "./chunk-ITSLKUQM.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -229,7 +229,7 @@ var asset_default = defineCommand({
229
229
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
230
230
  );
231
231
  }
232
- const { trackFigmaImport } = await import("./telemetry-STEMAMAX.js");
232
+ const { trackFigmaImport } = await import("./telemetry-LFUVHARP.js");
233
233
  trackFigmaImport({
234
234
  phase: "asset",
235
235
  reused: results.every((r) => r.reused),