@poe-platform/safe-bash 0.1.800 → 0.1.802

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 (502) hide show
  1. package/README.md +16 -5
  2. package/dist/image-ast/index.browser.js +122 -76
  3. package/dist/image-ast/index.js +122 -76
  4. package/dist/pdf-ast/index.js +4 -3
  5. package/dist/safe-bash/chunks/chunk-3HQU4OJO.js +13 -0
  6. package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
  7. package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
  8. package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-44ALJ4QG.js} +5809 -7424
  9. package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
  10. package/dist/safe-bash/chunks/chunk-4BSJLKNM.js +14 -0
  11. package/dist/safe-bash/chunks/chunk-4D4N7IU2.js +47 -0
  12. package/dist/safe-bash/chunks/chunk-55YJASTN.js +14 -0
  13. package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
  14. package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
  15. package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
  16. package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
  17. package/dist/safe-bash/chunks/chunk-7ZBU7KYV.js +14 -0
  18. package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
  19. package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
  20. package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
  21. package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-BJA5XNP6.js} +6 -6
  22. package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
  23. package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
  25. package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
  27. package/dist/safe-bash/chunks/chunk-DQP3VHSB.js +15 -0
  28. package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
  30. package/dist/safe-bash/chunks/chunk-FZE4HW6G.js +11 -0
  31. package/dist/safe-bash/chunks/chunk-GEG3BWGE.js +14 -0
  32. package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-GETUOD5D.js} +4 -4
  33. package/dist/safe-bash/chunks/chunk-HBCN24ZA.js +50 -0
  34. package/dist/safe-bash/chunks/chunk-HZ7BWKQ3.js +13 -0
  35. package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-HZAMGT5I.js} +3 -3
  36. package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
  38. package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
  39. package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
  40. package/dist/safe-bash/chunks/chunk-KDNSPLII.js +83 -0
  41. package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
  42. package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
  43. package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-NQCM3TYR.js} +922 -658
  44. package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
  45. package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
  46. package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
  47. package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-PH63PLPZ.js} +8 -8
  48. package/dist/safe-bash/chunks/chunk-QGUV42T5.js +44 -0
  49. package/dist/safe-bash/chunks/chunk-R3NAKOED.js +51 -0
  50. package/dist/safe-bash/chunks/chunk-RRR7AQ24.js +38 -0
  51. package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-RSTHLAF3.js} +30 -23
  52. package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-SHEMU2Z7.js} +378 -1148
  53. package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
  54. package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
  55. package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
  56. package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-VKNVHEX3.js} +2 -7
  57. package/dist/safe-bash/chunks/chunk-VSAJ4OTM.js +962 -0
  58. package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
  59. package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-WDLGKIHD.js} +56 -39
  60. package/dist/safe-bash/chunks/chunk-XAQMU6OY.js +14 -0
  61. package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
  62. package/dist/safe-bash/chunks/chunk-ZVD5IS4V.js +49 -0
  63. package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
  64. package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
  65. package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
  66. package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
  67. package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
  68. package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
  69. package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
  70. package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
  71. package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
  72. package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
  73. package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
  74. package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
  75. package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
  76. package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
  77. package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
  78. package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
  79. package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
  80. package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
  81. package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
  82. package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
  83. package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
  85. package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
  86. package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
  87. package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
  88. package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
  89. package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
  90. package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
  91. package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
  92. package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
  93. package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
  94. package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-6GWJUQAV.js} +237 -145
  95. package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
  96. package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
  97. package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
  98. package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
  99. package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
  100. package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
  101. package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
  102. package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
  103. package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
  104. package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
  105. package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
  106. package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
  107. package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
  108. package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
  109. package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
  110. package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
  111. package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
  112. package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
  114. package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
  115. package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
  116. package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
  117. package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
  118. package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
  119. package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
  120. package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
  121. package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
  122. package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
  123. package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
  124. package/dist/safe-bash/command-chunks/{chunk-EFANWIHL.js → chunk-GY3BWK7K.js} +1 -0
  125. package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
  126. package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
  127. package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
  128. package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
  129. package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
  130. package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
  131. package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
  133. package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
  134. package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
  135. package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
  136. package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
  137. package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
  138. package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
  139. package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
  140. package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
  141. package/dist/safe-bash/command-chunks/{chunk-WBNZ4PRE.js → chunk-NGG2XL56.js} +7 -4
  142. package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
  143. package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-GLOZX57Y.js → chunk-OQKC5ZU2.js} +23 -114
  145. package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
  146. package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
  147. package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
  148. package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
  149. package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
  150. package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
  151. package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
  152. package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
  153. package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
  154. package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
  155. package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
  156. package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
  157. package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
  158. package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
  159. package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
  160. package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
  161. package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
  162. package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
  163. package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
  164. package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
  165. package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
  166. package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
  167. package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
  168. package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
  169. package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-VT6MJBEI.js} +1 -1
  170. package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
  171. package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
  172. package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
  173. package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
  174. package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
  175. package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
  176. package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-X54L3DBL.js} +6 -9
  177. package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
  178. package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
  179. package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
  180. package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
  181. package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-YVNGTIJO.js} +1 -1
  182. package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
  183. package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
  184. package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
  185. package/dist/safe-bash/commands/apply-patch/index.browser.js +14 -0
  186. package/dist/safe-bash/commands/archive/index.browser.js +36 -0
  187. package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
  188. package/dist/safe-bash/commands/column/index.browser.js +12 -0
  189. package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
  190. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  191. package/dist/safe-bash/commands/docx/index.browser.js +1 -1
  192. package/dist/safe-bash/commands/du/index.browser.js +14 -0
  193. package/dist/safe-bash/commands/execution.js +19 -13
  194. package/dist/safe-bash/commands/expr/index.browser.js +12 -0
  195. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  196. package/dist/safe-bash/commands/file/index.browser.js +14 -0
  197. package/dist/safe-bash/commands/filesystem.d.ts +1 -1
  198. package/dist/safe-bash/commands/filesystem.js +26 -15
  199. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  200. package/dist/safe-bash/commands/grep-aliases/index.browser.js +14 -0
  201. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  202. package/dist/safe-bash/commands/html-to-markdown/index.browser.js +16 -0
  203. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
  204. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  205. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  206. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  207. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  208. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  209. package/dist/safe-bash/commands/media/index.browser.js +1 -1
  210. package/dist/safe-bash/commands/metadata/index.browser.js +21 -0
  211. package/dist/safe-bash/commands/network/curl.d.ts +1 -1
  212. package/dist/safe-bash/commands/network/curl.js +1 -3
  213. package/dist/safe-bash/commands/network/index.browser.js +4 -4
  214. package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
  215. package/dist/safe-bash/commands/network/platform-portable.js +1 -26
  216. package/dist/safe-bash/commands/network/public.d.ts +2 -2
  217. package/dist/safe-bash/commands/network/public.js +2 -2
  218. package/dist/safe-bash/commands/network/transport.js +2 -2
  219. package/dist/safe-bash/commands/network/wget.d.ts +1 -1
  220. package/dist/safe-bash/commands/network/wget.js +1 -3
  221. package/dist/safe-bash/commands/node/filesystem.js +3 -2
  222. package/dist/safe-bash/commands/node/index.browser.js +8 -8
  223. package/dist/safe-bash/commands/node/types.js +1 -1
  224. package/dist/safe-bash/commands/op/index.browser.js +3 -3
  225. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  226. package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
  227. package/dist/safe-bash/commands/python/index.browser.js +11 -11
  228. package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
  229. package/dist/safe-bash/commands/python/manifest.js +6 -3
  230. package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
  231. package/dist/safe-bash/commands/python/shell-capability.js +3 -2
  232. package/dist/safe-bash/commands/python/worker.browser.js +3 -3
  233. package/dist/safe-bash/commands/regex-execution/public.browser.js +8 -6
  234. package/dist/safe-bash/commands/safejs/runtime.js +16 -7
  235. package/dist/safe-bash/commands/split/index.browser.js +14 -0
  236. package/dist/safe-bash/commands/standard.d.ts +1 -0
  237. package/dist/safe-bash/commands/standard.js +2 -1
  238. package/dist/safe-bash/commands/stream-format/index.browser.js +11 -0
  239. package/dist/safe-bash/commands/stream-inspection/index.browser.js +11 -0
  240. package/dist/safe-bash/commands/streams.js +11 -29
  241. package/dist/safe-bash/commands/table-text/index.browser.js +11 -0
  242. package/dist/safe-bash/commands/text.js +269 -496
  243. package/dist/safe-bash/commands/time-env/index.browser.js +15 -0
  244. package/dist/safe-bash/commands/tree/index.browser.js +14 -0
  245. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  246. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  247. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  248. package/dist/safe-bash/core.browser.js +1 -1
  249. package/dist/safe-bash/core.d.ts +6 -1
  250. package/dist/safe-bash/core.js +1 -1
  251. package/dist/safe-bash/full-core.browser.js +308 -295
  252. package/dist/safe-bash/jobs.browser.js +5 -5
  253. package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
  254. package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
  255. package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
  256. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
  257. package/dist/safe-bash/optional-host.browser.js +15 -15
  258. package/dist/safe-bash/plugins/composition.d.ts +1 -0
  259. package/dist/safe-bash/plugins/composition.js +3 -8
  260. package/dist/safe-bash/plugins/index.browser.js +41 -27
  261. package/dist/safe-bash/registry-entry.browser.js +42 -28
  262. package/dist/safe-bash/search.browser.js +48 -0
  263. package/dist/safe-bash/shell/arrays/bindings.js +1 -1
  264. package/dist/safe-bash/shell/arrays/state.js +4 -0
  265. package/dist/safe-bash/shell/brace-expansion.js +1 -1
  266. package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
  267. package/dist/safe-bash/shell/dynamic-variables.js +25 -0
  268. package/dist/safe-bash/shell/parser.js +8 -1
  269. package/dist/safe-bash/shell/runtime.d.ts +4 -13
  270. package/dist/safe-bash/shell/runtime.js +334 -1049
  271. package/dist/safe-bash/shell/shell.js +2 -54
  272. package/dist/safe-bash/shell-entry.browser.js +35 -26
  273. package/dist/safe-bash/trap.browser.js +4 -4
  274. package/dist/safe-bash/yq-browser/index.js +1 -1
  275. package/dist/safe-bash-base-encoding-engine/base.js +2 -2
  276. package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
  277. package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
  278. package/dist/safe-bash-byte-input-engine/index.js +4 -1
  279. package/dist/safe-bash-checksum-engine/index.js +13 -6
  280. package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
  281. package/dist/safe-bash-command-apply-patch/apply.js +4 -3
  282. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  283. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  284. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  285. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  286. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  287. package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
  288. package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
  289. package/dist/safe-bash-command-awk/awk-values.js +1 -1
  290. package/dist/safe-bash-command-awk/awk.js +5 -5
  291. package/dist/safe-bash-command-awk/index.js +5 -5
  292. package/dist/safe-bash-command-bc/index.d.ts +2 -0
  293. package/dist/safe-bash-command-bc/index.js +123 -92
  294. package/dist/safe-bash-command-column/column.js +5 -5
  295. package/dist/safe-bash-command-column/display.d.ts +1 -1
  296. package/dist/safe-bash-command-column/display.js +1 -1
  297. package/dist/safe-bash-command-column/index.js +5 -5
  298. package/dist/safe-bash-command-column/internal.d.ts +0 -2
  299. package/dist/safe-bash-command-column/internal.js +1 -1
  300. package/dist/safe-bash-command-column/layout.js +4 -4
  301. package/dist/safe-bash-command-column/table.js +2 -2
  302. package/dist/safe-bash-command-comm/comm.js +1 -1
  303. package/dist/safe-bash-command-comm/index.js +1 -1
  304. package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
  305. package/dist/safe-bash-command-csvcut/index.js +1 -0
  306. package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
  307. package/dist/safe-bash-command-csvgrep/index.js +2 -2
  308. package/dist/safe-bash-command-csvkit/index.js +9 -9
  309. package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
  310. package/dist/safe-bash-command-curl/curl.js +1 -1
  311. package/dist/safe-bash-command-curl/index.js +1 -1
  312. package/dist/safe-bash-command-dd/index.js +2 -0
  313. package/dist/safe-bash-command-diff/diff.js +1 -1
  314. package/dist/safe-bash-command-diff/index.js +1 -1
  315. package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
  316. package/dist/safe-bash-command-fd/index.js +9 -9
  317. package/dist/safe-bash-command-ffmpeg/index.js +31 -8
  318. package/dist/safe-bash-command-file/index.js +1 -1
  319. package/dist/safe-bash-command-file/shared.js +1 -1
  320. package/dist/safe-bash-command-find/find.js +1 -1
  321. package/dist/safe-bash-command-find/index.js +1 -1
  322. package/dist/safe-bash-command-gzip/index.js +3 -2
  323. package/dist/safe-bash-command-hexdump/command.js +4 -4
  324. package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
  325. package/dist/safe-bash-command-hexdump/index.js +4 -4
  326. package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
  327. package/dist/safe-bash-command-hexdump/internal.js +1 -1
  328. package/dist/safe-bash-command-hexdump/io.js +2 -2
  329. package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
  330. package/dist/safe-bash-command-hexdump/options.js +2 -2
  331. package/dist/safe-bash-command-hostname/index.js +1 -1
  332. package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
  333. package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
  334. package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
  335. package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
  336. package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
  337. package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
  338. package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
  339. package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
  340. package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
  341. package/dist/safe-bash-command-htmlq/index.js +27 -9
  342. package/dist/safe-bash-command-iconv/codec.js +1 -1
  343. package/dist/safe-bash-command-iconv/command.js +2 -2
  344. package/dist/safe-bash-command-iconv/index.js +2 -2
  345. package/dist/safe-bash-command-imagemagick/index.js +24 -6
  346. package/dist/safe-bash-command-join/index.js +1 -1
  347. package/dist/safe-bash-command-join/join.js +1 -1
  348. package/dist/safe-bash-command-jq/index.js +1 -1
  349. package/dist/safe-bash-command-jq/jq.js +1 -1
  350. package/dist/safe-bash-command-less/index.js +43 -28
  351. package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
  352. package/dist/safe-bash-command-nl/index.js +1 -1
  353. package/dist/safe-bash-command-nl/nl.js +1 -1
  354. package/dist/safe-bash-command-numfmt/index.js +0 -11
  355. package/dist/safe-bash-command-od/index.js +101 -68
  356. package/dist/safe-bash-command-pandoc/command.js +1 -1
  357. package/dist/safe-bash-command-pandoc/index.js +1 -1
  358. package/dist/safe-bash-command-paste/index.js +1 -1
  359. package/dist/safe-bash-command-paste/paste.js +1 -1
  360. package/dist/safe-bash-command-pathchk/index.js +3 -13
  361. package/dist/safe-bash-command-pdfimages/index.js +27 -11
  362. package/dist/safe-bash-command-pdfinfo/index.js +19 -10
  363. package/dist/safe-bash-command-pdftk/index.js +3 -3
  364. package/dist/safe-bash-command-pdftoppm/index.js +26 -10
  365. package/dist/safe-bash-command-pdftotext/index.js +27 -13
  366. package/dist/safe-bash-command-qpdf/index.js +5 -5
  367. package/dist/safe-bash-command-rg/index.js +1 -1
  368. package/dist/safe-bash-command-rg/rg-command.d.ts +0 -1
  369. package/dist/safe-bash-command-rg/rg-command.js +3 -5
  370. package/dist/safe-bash-command-sed/index.js +1 -1
  371. package/dist/safe-bash-command-sed/sed.js +1 -1
  372. package/dist/safe-bash-command-shuf/options.d.ts +1 -0
  373. package/dist/safe-bash-command-shuf/options.js +2 -4
  374. package/dist/safe-bash-command-shuf/shuf.js +2 -1
  375. package/dist/safe-bash-command-soffice/index.js +20 -16
  376. package/dist/safe-bash-command-split/index.js +3 -3
  377. package/dist/safe-bash-command-split/io.js +1 -1
  378. package/dist/safe-bash-command-split/outputs.js +2 -2
  379. package/dist/safe-bash-command-split/split.js +3 -3
  380. package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
  381. package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
  382. package/dist/safe-bash-command-sqlite3/index.js +284 -85
  383. package/dist/safe-bash-command-ssconvert/commands.js +9 -9
  384. package/dist/safe-bash-command-ssconvert/core.js +8 -8
  385. package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
  386. package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
  387. package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
  388. package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
  389. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
  390. package/dist/safe-bash-command-ssconvert/index.js +20 -20
  391. package/dist/safe-bash-command-tar/extract.js +1 -1
  392. package/dist/safe-bash-command-tar/index.js +5 -4
  393. package/dist/safe-bash-command-tar/modes.js +2 -2
  394. package/dist/safe-bash-command-tree/arguments.js +3 -3
  395. package/dist/safe-bash-command-tree/charset.js +1 -1
  396. package/dist/safe-bash-command-tree/index.js +4 -4
  397. package/dist/safe-bash-command-tree/io.js +1 -1
  398. package/dist/safe-bash-command-tree/pattern.js +2 -2
  399. package/dist/safe-bash-command-tree/tree.js +4 -4
  400. package/dist/safe-bash-command-unexpand/index.js +1 -1
  401. package/dist/safe-bash-command-unexpand/unexpand.js +1 -1
  402. package/dist/safe-bash-command-unrtf/index.js +14 -7
  403. package/dist/safe-bash-command-unzip/index.js +1 -1
  404. package/dist/safe-bash-command-unzip/unzip.js +1 -1
  405. package/dist/safe-bash-command-wget/index.js +1 -1
  406. package/dist/safe-bash-command-wget/wget.js +1 -1
  407. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  408. package/dist/safe-bash-command-xan/argv.js +1 -1
  409. package/dist/safe-bash-command-xan/commands.js +5 -3
  410. package/dist/safe-bash-command-xan/csv.d.ts +1 -1
  411. package/dist/safe-bash-command-xan/csv.js +1 -1
  412. package/dist/safe-bash-command-xan/index.js +7 -7
  413. package/dist/safe-bash-command-xan/io.js +3 -3
  414. package/dist/safe-bash-command-xmllint/index.js +1 -1
  415. package/dist/safe-bash-command-xxd/index.js +105 -91
  416. package/dist/safe-bash-command-xz/command.d.ts +2 -0
  417. package/dist/safe-bash-command-xz/index.d.ts +1 -1
  418. package/dist/safe-bash-command-xz/index.js +8 -0
  419. package/dist/safe-bash-command-yq/query.js +1 -1
  420. package/dist/safe-bash-command-zip/index.js +1 -1
  421. package/dist/safe-bash-command-zip/zip.js +1 -1
  422. package/dist/safe-bash-contracts/escaping.js +3 -3
  423. package/dist/safe-bash-contracts/filesystem-output.js +2 -2
  424. package/dist/safe-bash-contracts/index.d.ts +1 -0
  425. package/dist/safe-bash-contracts/index.js +7 -3
  426. package/dist/safe-bash-contracts/io.d.ts +4 -1
  427. package/dist/safe-bash-contracts/io.js +3 -1
  428. package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
  429. package/dist/safe-bash-contracts/output.js +2 -2
  430. package/dist/safe-bash-diff-engine/index.js +1 -1
  431. package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
  432. package/dist/safe-bash-diff-engine/shared.js +1 -1
  433. package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
  434. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  435. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
  436. package/dist/safe-bash-io-engine/internal.js +1 -1
  437. package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
  438. package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
  439. package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
  440. package/dist/safe-bash-mcp/index.browser.js +416 -0
  441. package/dist/safe-bash-mcp/index.d.ts +54 -2
  442. package/dist/safe-bash-mcp/index.js +286 -90
  443. package/dist/safe-bash-network-engine/aggregate.js +2 -2
  444. package/dist/safe-bash-network-engine/args.js +4 -4
  445. package/dist/safe-bash-network-engine/authorizer.js +1 -1
  446. package/dist/safe-bash-network-engine/body.js +6 -6
  447. package/dist/safe-bash-network-engine/decode.d.ts +1 -1
  448. package/dist/safe-bash-network-engine/decode.js +3 -4
  449. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  450. package/dist/safe-bash-network-engine/form-content-type.js +2 -2
  451. package/dist/safe-bash-network-engine/form-headers.js +2 -2
  452. package/dist/safe-bash-network-engine/glob.js +1 -1
  453. package/dist/safe-bash-network-engine/index.js +4 -4
  454. package/dist/safe-bash-network-engine/input.js +6 -6
  455. package/dist/safe-bash-network-engine/output.js +2 -2
  456. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  457. package/dist/safe-bash-network-engine/shared.js +2 -2
  458. package/dist/safe-bash-network-engine/types.d.ts +7 -2
  459. package/dist/safe-bash-network-engine/types.js +1 -1
  460. package/dist/safe-bash-network-engine/url.js +2 -2
  461. package/dist/safe-bash-query-engine/capture.js +3 -3
  462. package/dist/safe-bash-query-engine/delpaths.js +3 -3
  463. package/dist/safe-bash-query-engine/formats.js +2 -2
  464. package/dist/safe-bash-query-engine/index.js +11 -11
  465. package/dist/safe-bash-query-engine/indices.js +3 -3
  466. package/dist/safe-bash-query-engine/input.js +1 -1
  467. package/dist/safe-bash-query-engine/interpreter.js +9 -9
  468. package/dist/safe-bash-query-engine/parser.js +1 -1
  469. package/dist/safe-bash-query-engine/query-core.js +11 -11
  470. package/dist/safe-bash-query-engine/regex.js +4 -4
  471. package/dist/safe-bash-query-engine/splits.js +5 -5
  472. package/dist/safe-bash-query-engine/values.js +2 -2
  473. package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
  474. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
  475. package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
  476. package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
  477. package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
  478. package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
  479. package/dist/safe-bash-regex-engine/index.js +6 -4
  480. package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -1
  481. package/dist/safe-bash-regex-engine/text/budget.js +1 -1
  482. package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
  483. package/dist/safe-bash-regex-engine/text/regex.js +6 -4
  484. package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
  485. package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
  486. package/dist/safe-bash-search-engine/grep.js +189 -227
  487. package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
  488. package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
  489. package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
  490. package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
  491. package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
  492. package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
  493. package/dist/spreadsheet-engine/formulas/parser.js +3 -1
  494. package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
  495. package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
  496. package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
  497. package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
  498. package/dist/spreadsheet-format-xls/biff.js +1 -1
  499. package/dist/xlsx-ast/xlsx.js +8 -5
  500. package/package.json +68 -12
  501. package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
  502. /package/dist/safe-bash/command-chunks/{chunk-BWNXWI33.js → chunk-2LMZVE3I.js} +0 -0
@@ -1921,7 +1921,7 @@ async function requestTokens(input) {
1921
1921
  if (method === "client_secret_basic") {
1922
1922
  const encoded = new URLSearchParams({ credential: input.clientId }).toString().slice("credential=".length);
1923
1923
  const encodedSecret = new URLSearchParams({ credential: input.clientSecret }).toString().slice("credential=".length);
1924
- headers.set("Authorization", `Basic ${Buffer.from(`${encoded}:${encodedSecret}`).toString("base64")}`);
1924
+ headers.set("Authorization", `Basic ${btoa(`${encoded}:${encodedSecret}`)}`);
1925
1925
  } else {
1926
1926
  body.set("client_id", input.clientId);
1927
1927
  if (method === "client_secret_post")
@@ -2111,10 +2111,10 @@ function createDefaultOAuthClientProvider(options) {
2111
2111
  if (resourceIdentity !== void 0 && selectedSessionStore !== void 0)
2112
2112
  throw new Error("OAuth resourceIdentity requires native-owned persistence; custom stores own their resource trust policy");
2113
2113
  const now = () => {
2114
- const timestamp = clock();
2115
- if (!Number.isSafeInteger(timestamp) || Math.abs(timestamp) > MAX_JS_DATE_MS3)
2114
+ const timestamp2 = clock();
2115
+ if (!Number.isSafeInteger(timestamp2) || Math.abs(timestamp2) > MAX_JS_DATE_MS3)
2116
2116
  throw new Error("OAuth clock must return valid epoch milliseconds");
2117
- return timestamp;
2117
+ return timestamp2;
2118
2118
  };
2119
2119
  const registeredClients = /* @__PURE__ */ new Map();
2120
2120
  const resourceStores = resourceIdentity === void 0 ? void 0 : createResourceBoundOAuthStores(authStore ?? {}, persistenceNamespace, resourceIdentity);
@@ -2901,6 +2901,155 @@ function shouldReRegisterStoredDynamicClient(error, client, alreadyAttempted) {
2901
2901
  return client.registrationOwnership !== "caller";
2902
2902
  }
2903
2903
 
2904
+ // ../mcp-oauth/dist/client/resumable.js
2905
+ var responseParameters = ["code", "state", "iss", "error", "error_description", "error_uri"];
2906
+ function httpsUrl(value) {
2907
+ const url = new URL(value);
2908
+ if (url.protocol !== "https:" || url.username || url.password || url.href.includes("#"))
2909
+ throw new Error();
2910
+ return url;
2911
+ }
2912
+ function base64url(bytes) {
2913
+ return btoa(String.fromCharCode(...bytes)).split("+").join("-").split("/").join("_").split("=").join("");
2914
+ }
2915
+ function timestamp(now) {
2916
+ const value = now();
2917
+ if (!Number.isSafeInteger(value) || value < 0 || value > 864e13 - 6e5)
2918
+ throw new Error();
2919
+ return value;
2920
+ }
2921
+ async function beginRemoteMcpAuthorization(options) {
2922
+ try {
2923
+ const { store, signal, discover } = options;
2924
+ const now = options.now?.bind(options) ?? Date.now;
2925
+ const resource = httpsUrl(options.resource).href;
2926
+ const redirect = httpsUrl(options.redirectUri);
2927
+ if (responseParameters.some((key2) => redirect.searchParams.has(key2)))
2928
+ throw new Error();
2929
+ const client = structuredClone(options.client);
2930
+ if (typeof client.clientId !== "string" || !client.clientId.trim())
2931
+ throw new Error();
2932
+ const method = normalizeOAuthTokenEndpointAuthMethod(client.tokenEndpointAuthMethod) ?? (client.clientSecret === void 0 ? "none" : "client_secret_post");
2933
+ if (client.clientSecret !== void 0 && (typeof client.clientSecret !== "string" || !client.clientSecret.trim()))
2934
+ throw new Error();
2935
+ if (method !== "none" && client.clientSecret === void 0)
2936
+ throw new Error();
2937
+ if (client.registration !== void 0 && (client.registration.client_id !== client.clientId || client.registration.client_secret != null && client.registration.client_secret !== client.clientSecret || client.registration.token_endpoint_auth_method != null && client.registration.token_endpoint_auth_method !== method))
2938
+ throw new Error();
2939
+ client.tokenEndpointAuthMethod = method;
2940
+ if (client.requestedRedirectUri !== void 0 && client.requestedRedirectUri !== redirect.href)
2941
+ throw new Error();
2942
+ if (client.registration?.redirect_uris != null && !client.registration.redirect_uris.includes(redirect.href))
2943
+ throw new Error();
2944
+ const scope = normalizeOAuthScope(options.scope);
2945
+ const ttl = options.ttlMs ?? 6e5;
2946
+ if (!Number.isSafeInteger(ttl) || ttl < 1 || ttl > 6e5)
2947
+ throw new Error();
2948
+ signal?.throwIfAborted();
2949
+ const metadata = structuredClone(await discover(resource, signal));
2950
+ signal?.throwIfAborted();
2951
+ const server = metadata.authorizationServerMetadata;
2952
+ if (httpsUrl(metadata.resource).href !== resource || httpsUrl(metadata.resourceMetadata.resource).href !== resource || server.issuer !== metadata.authorizationServer || !metadata.resourceMetadata.authorization_servers.includes(server.issuer) || !server.response_types_supported.includes("code") || !server.code_challenge_methods_supported.includes("S256"))
2953
+ throw new Error();
2954
+ httpsUrl(server.issuer);
2955
+ httpsUrl(server.token_endpoint);
2956
+ const authorization = httpsUrl(server.authorization_endpoint);
2957
+ const state = base64url(crypto.getRandomValues(new Uint8Array(32)));
2958
+ const codeVerifier = base64url(crypto.getRandomValues(new Uint8Array(32)));
2959
+ const challenge = base64url(new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(codeVerifier))));
2960
+ const expiresAt = timestamp(now) + ttl;
2961
+ const session = {
2962
+ resource,
2963
+ authorizationServer: server.issuer,
2964
+ client: { ...client, registrationOwnership: "caller", requestedRedirectUri: redirect.href },
2965
+ ...scope === void 0 ? {} : { requestedScope: scope },
2966
+ discovery: { resourceMetadataUrl: metadata.resourceMetadataUrl, resourceMetadata: metadata.resourceMetadata, authorizationServerMetadata: server }
2967
+ };
2968
+ for (const [key2, value] of Object.entries({
2969
+ response_type: "code",
2970
+ client_id: client.clientId,
2971
+ redirect_uri: redirect.href,
2972
+ resource,
2973
+ state,
2974
+ code_challenge: challenge,
2975
+ code_challenge_method: "S256"
2976
+ }))
2977
+ authorization.searchParams.set(key2, value);
2978
+ authorization.searchParams.delete("scope");
2979
+ if (scope !== void 0)
2980
+ authorization.searchParams.set("scope", scope);
2981
+ signal?.throwIfAborted();
2982
+ await store.create({
2983
+ state,
2984
+ expiresAt,
2985
+ redirectUri: redirect.href,
2986
+ codeVerifier,
2987
+ requireIssuer: server.authorization_response_iss_parameter_supported === true,
2988
+ session
2989
+ });
2990
+ signal?.throwIfAborted();
2991
+ return { authorizationUrl: authorization.href, expiresAt };
2992
+ } catch {
2993
+ throw new Error("Unable to begin MCP authorization");
2994
+ }
2995
+ }
2996
+ async function completeRemoteMcpAuthorization(options) {
2997
+ try {
2998
+ const { store, fetch: fetch2, signal } = options;
2999
+ const now = options.now?.bind(options) ?? Date.now;
3000
+ const callback = httpsUrl(options.callbackUrl);
3001
+ for (const key2 of responseParameters)
3002
+ if (callback.searchParams.getAll(key2).length > 1)
3003
+ throw new Error();
3004
+ const state = callback.searchParams.get("state");
3005
+ if (!state || state.length > 256)
3006
+ throw new Error();
3007
+ signal?.throwIfAborted();
3008
+ const stored = await store.consume(state);
3009
+ if (stored === null)
3010
+ throw new Error();
3011
+ const transaction = structuredClone(stored);
3012
+ if (transaction.state !== state || !Number.isSafeInteger(transaction.expiresAt) || transaction.expiresAt <= timestamp(now))
3013
+ throw new Error();
3014
+ const expected = httpsUrl(transaction.redirectUri);
3015
+ const issuer = callback.searchParams.get("iss");
3016
+ if (transaction.requireIssuer && issuer === null || issuer !== null && issuer !== transaction.session.authorizationServer)
3017
+ throw new Error();
3018
+ const code = callback.searchParams.get("code");
3019
+ if (!code || callback.searchParams.has("error"))
3020
+ throw new Error();
3021
+ for (const key2 of responseParameters)
3022
+ callback.searchParams.delete(key2);
3023
+ const actualPairs = [...callback.searchParams].sort(), expectedPairs = [...expected.searchParams].sort();
3024
+ if (callback.origin !== expected.origin || callback.pathname !== expected.pathname || JSON.stringify(actualPairs) !== JSON.stringify(expectedPairs))
3025
+ throw new Error();
3026
+ const session = structuredClone(transaction.session);
3027
+ const tokenEndpoint = httpsUrl(String(session.discovery.authorizationServerMetadata.token_endpoint)).href;
3028
+ signal?.throwIfAborted();
3029
+ session.tokens = await exchangeAuthorizationCode({
3030
+ tokenEndpoint,
3031
+ clientId: session.client.clientId,
3032
+ clientSecret: session.client.clientSecret,
3033
+ tokenEndpointAuthMethod: session.client.tokenEndpointAuthMethod,
3034
+ code,
3035
+ codeVerifier: transaction.codeVerifier,
3036
+ redirectUri: transaction.redirectUri,
3037
+ resource: session.resource,
3038
+ fetch: fetch2,
3039
+ signal,
3040
+ now
3041
+ });
3042
+ if (session.tokens.scope === void 0 && session.requestedScope !== void 0)
3043
+ session.tokens.scope = session.requestedScope;
3044
+ signal?.throwIfAborted();
3045
+ if (transaction.expiresAt <= timestamp(now) || !await store.commit(transaction, session))
3046
+ throw new Error();
3047
+ return { resource: session.resource };
3048
+ } catch {
3049
+ throw new Error("Unable to complete MCP authorization");
3050
+ }
3051
+ }
3052
+
2904
3053
  // src/oauth-policy.ts
2905
3054
  function snapshotOAuthBindingOptions(oauth) {
2906
3055
  return {
@@ -2932,8 +3081,8 @@ function snapshotOAuthBrowserOptions(browser) {
2932
3081
  // ../tiny-mcp-client/dist/index.js
2933
3082
  import { PassThrough } from "node:stream";
2934
3083
  import http2 from "node:http";
2935
- import crypto5 from "node:crypto";
2936
3084
  import crypto22 from "node:crypto";
3085
+ import crypto32 from "node:crypto";
2937
3086
  import path42 from "node:path";
2938
3087
  import { createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2, randomBytes as randomBytes2, randomUUID as randomUUID22, scrypt as scrypt2 } from "node:crypto";
2939
3088
  import { promises as fs2 } from "node:fs";
@@ -2948,7 +3097,7 @@ import { homedir as homedir22 } from "node:os";
2948
3097
  import path32 from "node:path";
2949
3098
  import { isIP as isIP2 } from "node:net";
2950
3099
  import { URL as URL22 } from "node:url";
2951
- import crypto32 from "node:crypto";
3100
+ import crypto42 from "node:crypto";
2952
3101
  var __defProp = Object.defineProperty;
2953
3102
  var __getOwnPropNames = Object.getOwnPropertyNames;
2954
3103
  var __esm = (fn, res, err) => function __init() {
@@ -6473,7 +6622,7 @@ function copyBoundedOAuthJson2(value, message) {
6473
6622
  function createAuthorizationState2(input) {
6474
6623
  const payload = {
6475
6624
  v: 1,
6476
- n: crypto5.randomBytes(16).toString("base64url"),
6625
+ n: crypto22.randomBytes(16).toString("base64url"),
6477
6626
  i: input.issuer,
6478
6627
  r: input.requireIssuer
6479
6628
  };
@@ -7731,7 +7880,7 @@ function snapshotPersistenceOptions2(options) {
7731
7880
  }
7732
7881
  function createNamedSecretStore2(key2, options, defaults, namespace) {
7733
7882
  options = snapshotOAuthPersistenceOptions2(options);
7734
- const hash = crypto22.createHash("sha256").update(namespace === void 0 ? key2 : JSON.stringify([namespace, key2])).digest("hex");
7883
+ const hash = crypto32.createHash("sha256").update(namespace === void 0 ? key2 : JSON.stringify([namespace, key2])).digest("hex");
7735
7884
  const configuredFilePath = options.fileStore?.filePath;
7736
7885
  const parsedFilePath = configuredFilePath === void 0 ? null : path42.parse(configuredFilePath);
7737
7886
  const fileStore = {
@@ -8033,10 +8182,10 @@ async function fetchMcpResponse2(fetchImplementation, input, init = {}) {
8033
8182
  });
8034
8183
  }
8035
8184
  function generateCodeVerifier2() {
8036
- return crypto32.randomBytes(32).toString("base64url");
8185
+ return crypto42.randomBytes(32).toString("base64url");
8037
8186
  }
8038
8187
  function generateCodeChallenge2(verifier) {
8039
- return crypto32.createHash("sha256").update(verifier).digest("base64url");
8188
+ return crypto42.createHash("sha256").update(verifier).digest("base64url");
8040
8189
  }
8041
8190
  async function readBoundedResponseText2(response, maxBytes, readers, signal) {
8042
8191
  if (maxBytes !== Infinity && (!Number.isSafeInteger(maxBytes) || maxBytes < 1))
@@ -8165,7 +8314,7 @@ async function requestTokens2(input) {
8165
8314
  if (method === "client_secret_basic") {
8166
8315
  const encoded = new URLSearchParams({ credential: input.clientId }).toString().slice("credential=".length);
8167
8316
  const encodedSecret = new URLSearchParams({ credential: input.clientSecret }).toString().slice("credential=".length);
8168
- headers.set("Authorization", `Basic ${Buffer.from(`${encoded}:${encodedSecret}`).toString("base64")}`);
8317
+ headers.set("Authorization", `Basic ${btoa(`${encoded}:${encodedSecret}`)}`);
8169
8318
  } else {
8170
8319
  body.set("client_id", input.clientId);
8171
8320
  if (method === "client_secret_post")
@@ -8357,10 +8506,10 @@ function createDefaultOAuthClientProvider2(options) {
8357
8506
  if (resourceIdentity !== void 0 && selectedSessionStore !== void 0)
8358
8507
  throw new Error("OAuth resourceIdentity requires native-owned persistence; custom stores own their resource trust policy");
8359
8508
  const now = () => {
8360
- const timestamp = clock();
8361
- if (!Number.isSafeInteger(timestamp) || Math.abs(timestamp) > MAX_JS_DATE_MS32)
8509
+ const timestamp2 = clock();
8510
+ if (!Number.isSafeInteger(timestamp2) || Math.abs(timestamp2) > MAX_JS_DATE_MS32)
8362
8511
  throw new Error("OAuth clock must return valid epoch milliseconds");
8363
- return timestamp;
8512
+ return timestamp2;
8364
8513
  };
8365
8514
  const registeredClients = /* @__PURE__ */ new Map();
8366
8515
  const resourceStores = resourceIdentity === void 0 ? void 0 : createResourceBoundOAuthStores2(authStore ?? {}, persistenceNamespace, resourceIdentity);
@@ -14863,16 +15012,31 @@ async function openFileDescriptor(path6, options, capabilities, acquire) {
14863
15012
  }
14864
15013
 
14865
15014
  // ../safe-fs/dist/contracts/virtual-path.js
14866
- var MAX_PATH_BYTES = 65536;
14867
- var MAX_PATH_COMPONENTS = 2048;
14868
- function validatePath(path6, maxComponents = MAX_PATH_COMPONENTS) {
15015
+ function pathByteLength(path6) {
15016
+ let bytes = 0;
15017
+ for (const point of path6) {
15018
+ const code = point.codePointAt(0);
15019
+ bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
15020
+ }
15021
+ return bytes;
15022
+ }
15023
+ function validatePath(path6, limits = {}) {
15024
+ const maxBytes = typeof limits === "number" ? Infinity : limits.maxPathBytes ?? Infinity;
15025
+ const maxComponents = typeof limits === "number" ? limits : limits.maxPathComponents ?? Infinity;
15026
+ for (const value of [maxBytes, maxComponents]) {
15027
+ if (value !== Infinity && (!Number.isSafeInteger(value) || value < 0)) {
15028
+ throw new RangeError("Path limits must be nonnegative safe integers or Infinity");
15029
+ }
15030
+ }
14869
15031
  if (typeof path6 !== "string" || path6.includes("\0")) {
14870
15032
  throw new FsError("EINVAL", { syscall: "resolve", message: "paths must be strings without NUL bytes" });
14871
15033
  }
14872
- if (path6.length > MAX_PATH_BYTES) {
15034
+ if (maxBytes !== Infinity && pathByteLength(path6) > maxBytes) {
14873
15035
  throw new FsError("ENAMETOOLONG", { syscall: "resolve", path: path6 });
14874
15036
  }
14875
- const limit = Math.min(maxComponents, MAX_PATH_COMPONENTS);
15037
+ if (maxComponents === Infinity)
15038
+ return;
15039
+ const limit = maxComponents;
14876
15040
  let components2 = 0;
14877
15041
  let inComponent = false;
14878
15042
  for (let i = 0; i < path6.length; i++) {
@@ -15536,11 +15700,14 @@ function components(path6, signal) {
15536
15700
  }
15537
15701
  return result;
15538
15702
  }
15539
- function resolveMissingTarget(root, path6, signal) {
15703
+ function resolveMissingTarget(root, path6, signal, limits = {}) {
15704
+ validatePath(path6, limits);
15540
15705
  const fail3 = (code, failedPath = path6) => {
15541
15706
  throw new FsError(code, { syscall: "realpath", path: failedPath });
15542
15707
  };
15543
15708
  const origin = components(path6, signal);
15709
+ let remainingBytes = (limits.maxPathBytes ?? Infinity) - pathByteLength(path6);
15710
+ let remainingComponents = (limits.maxPathComponents ?? Infinity) - origin.length;
15544
15711
  const initial = { node: root, name: "" };
15545
15712
  let position = initial;
15546
15713
  let links = 0;
@@ -15593,7 +15760,10 @@ function resolveMissingTarget(root, path6, signal) {
15593
15760
  if (node.type === "symlink") {
15594
15761
  if (++links > 40)
15595
15762
  return fail3("ELOOP");
15763
+ validatePath(node.target, { maxPathBytes: remainingBytes, maxPathComponents: remainingComponents });
15596
15764
  const names2 = components(node.target, signal);
15765
+ remainingBytes -= pathByteLength(node.target);
15766
+ remainingComponents -= names2.length;
15597
15767
  if (node.target.endsWith("/"))
15598
15768
  names2.push({ name: ".", start: node.target.length });
15599
15769
  if (node.target.startsWith("/"))
@@ -15797,26 +15967,22 @@ function readConfigRecord(value, label, keys) {
15797
15967
 
15798
15968
  // ../safe-fs/dist/fs/memory/limits.js
15799
15969
  var defaultMemoryFileSystemLimits = Object.freeze({
15970
+ maxPathBytes: Infinity,
15971
+ maxPathComponents: Infinity,
15800
15972
  maxFileBytes: Infinity,
15801
15973
  maxRetainedBytes: Infinity,
15802
15974
  maxMetadataUnits: Infinity
15803
15975
  });
15804
15976
  function normalizeMemoryFileSystemLimits(options) {
15805
- const keys = ["maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
15977
+ const keys = ["maxPathBytes", "maxPathComponents", "maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
15806
15978
  const record3 = readConfigRecord(options, "memory option", [...keys, "maxBytes"]);
15807
15979
  const limits = { ...defaultMemoryFileSystemLimits };
15808
- if (Object.hasOwn(record3, "maxBytes") && record3.maxBytes !== void 0) {
15809
- if (typeof record3.maxBytes !== "number" || !Number.isSafeInteger(record3.maxBytes) || record3.maxBytes < 0) {
15810
- throw new RangeError("maxBytes must be a nonnegative safe integer");
15811
- }
15812
- limits.maxBytes = record3.maxBytes;
15813
- }
15814
- for (const key2 of keys) {
15815
- if (!Object.hasOwn(record3, key2))
15816
- continue;
15980
+ for (const key2 of [...keys, "maxBytes"]) {
15817
15981
  const value = record3[key2];
15982
+ if (value === void 0 || value === Infinity)
15983
+ continue;
15818
15984
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < (key2 === "maxMetadataUnits" ? 1 : 0)) {
15819
- throw new RangeError(`${key2} must be a ${key2 === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer`);
15985
+ throw new RangeError(`${key2} must be a ${key2 === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer or Infinity`);
15820
15986
  }
15821
15987
  limits[key2] = value;
15822
15988
  }
@@ -15865,12 +16031,10 @@ var DUMMY_POOL_FILE_NODE = new MemoryFileNode(0, 0, null, 0, DUMMY_POOL_ALLOCATI
15865
16031
  DUMMY_POOL_FILE_NODE.atimeMs = DUMMY_POOL_FILE_NODE.mtimeMs = DUMMY_POOL_FILE_NODE.ctimeMs = DUMMY_POOL_FILE_NODE.birthtimeMs = 17e11;
15866
16032
  var defaultDateNow = Date.now;
15867
16033
  var fastWriteCachedNow = Date.now();
15868
- var lastFastMapMiss = {
15869
- map: void 0,
15870
- key: "",
15871
- slot: -1
15872
- };
15873
16034
  var FastDirectoryEntriesMap = class {
16035
+ // Keep speculative slots local so a failed write cannot pin a tenant globally.
16036
+ _missKey = "";
16037
+ _missSlot = -1;
15874
16038
  _table = new Int16Array(128).fill(-1);
15875
16039
  _mask = 127;
15876
16040
  _keys = new Array(64).fill("");
@@ -15907,9 +16071,8 @@ var FastDirectoryEntriesMap = class {
15907
16071
  getForWriteWithHash(k, h) {
15908
16072
  let slot = h & this._mask;
15909
16073
  if (this.size === 0) {
15910
- lastFastMapMiss.map = this;
15911
- lastFastMapMiss.key = k;
15912
- lastFastMapMiss.slot = slot;
16074
+ this._missKey = k;
16075
+ this._missSlot = slot;
15913
16076
  return void 0;
15914
16077
  }
15915
16078
  const mask = this._mask;
@@ -15919,9 +16082,8 @@ var FastDirectoryEntriesMap = class {
15919
16082
  while (true) {
15920
16083
  const idx = table[slot];
15921
16084
  if (idx === -1) {
15922
- lastFastMapMiss.map = this;
15923
- lastFastMapMiss.key = k;
15924
- lastFastMapMiss.slot = firstDeleted !== -1 ? firstDeleted : slot;
16085
+ this._missKey = k;
16086
+ this._missSlot = firstDeleted !== -1 ? firstDeleted : slot;
15925
16087
  return void 0;
15926
16088
  }
15927
16089
  if (idx === -2) {
@@ -15970,6 +16132,7 @@ var FastDirectoryEntriesMap = class {
15970
16132
  return this.get(k) !== void 0;
15971
16133
  }
15972
16134
  _rebuild(newCap) {
16135
+ this._missKey = "";
15973
16136
  const newTableLen = newCap * 2;
15974
16137
  const newMask = newTableLen - 1;
15975
16138
  const newTable = newCap <= 16384 ? new Int16Array(newTableLen).fill(-1) : new Int32Array(newTableLen).fill(-1);
@@ -16009,15 +16172,16 @@ var FastDirectoryEntriesMap = class {
16009
16172
  this._next = writeIdx;
16010
16173
  }
16011
16174
  set(k, v) {
16012
- if (this === lastFastMapMiss.map && k === lastFastMapMiss.key && this._next < this._keys.length) {
16175
+ if (k === this._missKey && this._next < this._keys.length) {
16013
16176
  const entryIdx = this._next++;
16014
- this._table[lastFastMapMiss.slot] = entryIdx;
16177
+ this._table[this._missSlot] = entryIdx;
16015
16178
  this._keys[entryIdx] = k;
16016
16179
  this._vals[entryIdx] = v;
16017
16180
  this.size++;
16018
- lastFastMapMiss.map = void 0;
16181
+ this._missKey = "";
16019
16182
  return this;
16020
16183
  }
16184
+ this._missKey = "";
16021
16185
  if (this._next >= this._keys.length) {
16022
16186
  this._rebuild(this.size * 2 <= this._keys.length ? this._keys.length : this._keys.length * 2);
16023
16187
  }
@@ -16048,6 +16212,7 @@ var FastDirectoryEntriesMap = class {
16048
16212
  }
16049
16213
  }
16050
16214
  delete(k) {
16215
+ this._missKey = "";
16051
16216
  if (this.size === 0)
16052
16217
  return false;
16053
16218
  let slot = this._hash(k);
@@ -16073,6 +16238,7 @@ var FastDirectoryEntriesMap = class {
16073
16238
  }
16074
16239
  }
16075
16240
  clear() {
16241
+ this._missKey = "";
16076
16242
  if (this._next > 0) {
16077
16243
  this._table.fill(-1);
16078
16244
  for (let i = 0; i < this._next; i++) {
@@ -16525,7 +16691,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
16525
16691
  const owner = ownedStores.get(this);
16526
16692
  if (path6 !== "")
16527
16693
  this.validatePath(path6, "realpath");
16528
- return resolveMissingTarget(owner.root, path6 || ".", options.signal);
16694
+ return resolveMissingTarget(owner.root, path6 || ".", options.signal, this.ledger.limits);
16529
16695
  }
16530
16696
  async confineExtraction(roots, options = {}) {
16531
16697
  options.signal?.throwIfAborted();
@@ -16746,6 +16912,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
16746
16912
  }
16747
16913
  replaceData(node, allocation, length = allocation.data.byteLength) {
16748
16914
  const previous = node.allocation;
16915
+ node.sourceRef = void 0;
16749
16916
  this.totalBytes += length - node.byteLength;
16750
16917
  node.byteLength = length;
16751
16918
  node.view = length === allocation.data.byteLength ? allocation.data : void 0;
@@ -16778,6 +16945,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
16778
16945
  this.fail("EINVAL", syscall, path6);
16779
16946
  if (path6.length === 0)
16780
16947
  this.fail("ENOENT", syscall, path6);
16948
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
16949
+ validatePath(path6, this.ledger.limits);
16781
16950
  }
16782
16951
  permission(node, mask, syscall, path6) {
16783
16952
  if ((node.mode >> 6 & mask) !== mask)
@@ -16799,6 +16968,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
16799
16968
  node.mtimeMs = node.ctimeMs = now;
16800
16969
  }
16801
16970
  resolveNode(path6, syscall, followFinal = true) {
16971
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
16972
+ validatePath(path6, this.ledger.limits);
16802
16973
  const cache = memoryCaches.get(this.ledger);
16803
16974
  if (this.symlinkCount === 0 && isCleanAbsolutePath(path6)) {
16804
16975
  const fastDir = cache.lastFastDirNode;
@@ -16883,7 +17054,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
16883
17054
  start = slash + 1;
16884
17055
  }
16885
17056
  }
16886
- let remainingPathUnits = 65536 - path6.length;
17057
+ let remainingPathUnits = this.ledger.limits.maxPathBytes - pathByteLength(path6);
16887
17058
  if (remainingPathUnits < 0)
16888
17059
  this.fail("ENAMETOOLONG", syscall, path6);
16889
17060
  let initialComponents = 0;
@@ -16893,12 +17064,12 @@ var MemoryFileSystem = class _MemoryFileSystem {
16893
17064
  inComp = false;
16894
17065
  else if (!inComp) {
16895
17066
  inComp = true;
16896
- if (++initialComponents > 256)
17067
+ if (++initialComponents > this.ledger.limits.maxPathComponents)
16897
17068
  this.fail("ENAMETOOLONG", syscall, path6);
16898
17069
  }
16899
17070
  }
16900
- const pending = path6.split("/").filter(Boolean);
16901
- let remainingComponents = 256 - pending.length;
17071
+ let pending = path6.split("/").filter(Boolean);
17072
+ let remainingComponents = this.ledger.limits.maxPathComponents - pending.length;
16902
17073
  if (path6.endsWith("/"))
16903
17074
  pending.push("");
16904
17075
  const stack = [{ node: this.root, name: "" }];
@@ -16948,9 +17119,9 @@ var MemoryFileSystem = class _MemoryFileSystem {
16948
17119
  if (node.type === "symlink" && (options.followFinal !== false || pending.length > 0)) {
16949
17120
  if (++links > 40)
16950
17121
  this.fail("ELOOP", syscall, path6);
16951
- if (node.target.length > remainingPathUnits)
17122
+ if (pathByteLength(node.target) > remainingPathUnits)
16952
17123
  this.fail("ENAMETOOLONG", syscall, path6);
16953
- remainingPathUnits -= node.target.length;
17124
+ remainingPathUnits -= pathByteLength(node.target);
16954
17125
  const target = node.target.split("/").filter(Boolean);
16955
17126
  if (target.length > remainingComponents)
16956
17127
  this.fail("ENAMETOOLONG", syscall, path6);
@@ -16959,7 +17130,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
16959
17130
  target.push("");
16960
17131
  if (options.resizeCreate !== void 0 && target.at(-1) === "" && pending[0] === "")
16961
17132
  target.pop();
16962
- pending.unshift(...target);
17133
+ pending = target.concat(pending);
16963
17134
  if (node.target.startsWith("/"))
16964
17135
  stack.splice(1);
16965
17136
  continue;
@@ -16975,6 +17146,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
16975
17146
  };
16976
17147
  }
16977
17148
  file(path6, syscall) {
17149
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
17150
+ validatePath(path6, this.ledger.limits);
16978
17151
  if (this.symlinkCount === 0 && path6.charCodeAt(0) === 47 && path6.length > 1 && path6.indexOf("/", 1) === -1 && !path6.includes("\0")) {
16979
17152
  const name = path6 === _lastFileSlice1Path ? _lastFileSlice1Name : (_lastFileSlice1Path = path6, _lastFileSlice1Name = path6.slice(1));
16980
17153
  if (name !== "." && name !== "..") {
@@ -17249,6 +17422,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
17249
17422
  }, syscall, path6);
17250
17423
  }
17251
17424
  writeData(path6, data, options, syscall) {
17425
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
17426
+ validatePath(path6, this.ledger.limits);
17252
17427
  if (!(data instanceof Uint8Array))
17253
17428
  throw new TypeError("Memory files require Uint8Array data");
17254
17429
  const target = this.prepareWrite(path6, options, syscall);
@@ -17362,12 +17537,15 @@ var MemoryFileSystem = class _MemoryFileSystem {
17362
17537
  node.byteLength = length;
17363
17538
  node.view = length === allocation.data.byteLength ? allocation.data : void 0;
17364
17539
  }
17540
+ node.sourceRef = void 0;
17365
17541
  this.changed(node, now);
17366
17542
  }
17367
17543
  writeMemoryFileFast(path6, data, append, mode) {
17544
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
17545
+ validatePath(path6, this.ledger.limits);
17368
17546
  const cache = memoryCaches.get(this.ledger);
17369
17547
  const syscall = append ? "appendFile" : "writeFile";
17370
- if (append && path6 === cache.lastFastFilePath && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 1) !== 0 && (cache.lastFastFileNode.mode & 2) !== 0) {
17548
+ if (append && path6 === cache.lastFastFilePath && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 64) !== 0 && (cache.lastFastFileNode.mode & 128) !== 0) {
17371
17549
  const current2 = cache.lastFastFileNode;
17372
17550
  const length2 = current2.byteLength + data.byteLength;
17373
17551
  this.admitSize(current2, length2, syscall, path6);
@@ -17381,7 +17559,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17381
17559
  let name = "";
17382
17560
  const cachedPrefix = cache.lastFastDirPrefix;
17383
17561
  const cachedDir = cache.lastFastDirNode;
17384
- if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 1) !== 0 && cachedPrefix.length > 1 && path6.startsWith(cachedPrefix) && path6.indexOf("/", cachedPrefix.length) === -1) {
17562
+ if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && cachedPrefix.length > 1 && path6.startsWith(cachedPrefix) && path6.indexOf("/", cachedPrefix.length) === -1) {
17385
17563
  parent = cachedDir;
17386
17564
  name = path6.slice(cachedPrefix.length);
17387
17565
  if (exceedsComponentByteLimit2(name))
@@ -17394,7 +17572,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17394
17572
  name = path6.slice(start);
17395
17573
  if (exceedsComponentByteLimit2(name))
17396
17574
  this.fail("ENAMETOOLONG", syscall, path6);
17397
- if (start > 1 && (parent.mode & 1) !== 0) {
17575
+ if (start > 1 && (parent.mode & 64) !== 0) {
17398
17576
  cache.lastFastDirPrefix = path6.slice(0, start);
17399
17577
  cache.lastFastDirNode = parent;
17400
17578
  }
@@ -17514,6 +17692,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17514
17692
  let ino = this.nextInode;
17515
17693
  this.nextInode = ino + batchCount;
17516
17694
  let nextIdx = 1;
17695
+ entries2._missKey = "";
17517
17696
  entries2._next = 1 + batchCount;
17518
17697
  entries2.size = 1 + batchCount;
17519
17698
  const table = entries2._table;
@@ -17563,12 +17742,15 @@ var MemoryFileSystem = class _MemoryFileSystem {
17563
17742
  }
17564
17743
  }
17565
17744
  writeMemoryFileInDirFast(dirPrefix, name, data, append, mode, nameHash) {
17745
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
17746
+ validatePath(dirPrefix + name, this.ledger.limits);
17566
17747
  const cache = this._cache;
17567
17748
  if (!append && dirPrefix === cache.lastFastDirPrefix && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 192) === 192 && name.length <= 85 && this.ledger.hasInfiniteRetained && this.ledger.hasInfiniteFileBytes && this.ledger.limits.maxBytes === void 0 && sharedFileNodePoolLen > 0) {
17568
17749
  const parent = cache.lastFastDirNode;
17569
17750
  const entries2 = parent.entries;
17570
17751
  const existing = nameHash !== void 0 ? entries2.getForWriteWithHash(name, nameHash) : entries2.getForWrite(name);
17571
17752
  if (existing === void 0 && entries2._next < entries2._keys.length) {
17753
+ this.ledger.reserve(name.length * 2, 2, "writeFile", name);
17572
17754
  const now = fastWriteCachedNow;
17573
17755
  const length = data.byteLength;
17574
17756
  const node = sharedFileNodePool[--sharedFileNodePoolLen];
@@ -17590,13 +17772,11 @@ var MemoryFileSystem = class _MemoryFileSystem {
17590
17772
  node.allocation = DUMMY_POOL_ALLOCATION;
17591
17773
  node.sourceRef = node.data.subarray(0);
17592
17774
  const entryIdx = entries2._next++;
17593
- entries2._table[lastFastMapMiss.slot] = entryIdx;
17775
+ entries2._table[entries2._missSlot] = entryIdx;
17594
17776
  entries2._keys[entryIdx] = name;
17595
17777
  entries2._vals[entryIdx] = node;
17596
17778
  entries2.size++;
17597
- lastFastMapMiss.map = void 0;
17598
- lastFastMapMiss.key = "";
17599
- this.ledger.reserve(name.length * 2, 2, "writeFile", name);
17779
+ entries2._missKey = "";
17600
17780
  this.totalBytes += length;
17601
17781
  this.mutationTick = this.mutationTick + 1 | 0;
17602
17782
  parent.revision = parent.revision < 1073741823 ? parent.revision + 1 | 0 : Math.min(Number.MAX_SAFE_INTEGER + 1, parent.revision + 1);
@@ -17609,7 +17789,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17609
17789
  }
17610
17790
  const syscall = append ? "appendFile" : "writeFile";
17611
17791
  try {
17612
- if (append && dirPrefix === cache.lastFastDirPrefix && name === cache.lastFastFileName && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 1) !== 0 && (cache.lastFastFileNode.mode & 2) !== 0) {
17792
+ if (append && dirPrefix === cache.lastFastDirPrefix && name === cache.lastFastFileName && cache.lastFastFileNode !== void 0 && cache.lastFastFileNode.nlink !== 0 && cache.lastFastDirNode !== void 0 && cache.lastFastDirNode.nlink !== 0 && (cache.lastFastDirNode.mode & 64) !== 0 && (cache.lastFastFileNode.mode & 128) !== 0) {
17613
17793
  const current2 = cache.lastFastFileNode;
17614
17794
  const length2 = current2.byteLength + data.byteLength;
17615
17795
  this.admitSize(current2, length2, syscall, name);
@@ -17620,7 +17800,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17620
17800
  }
17621
17801
  let parent = this.root;
17622
17802
  const cachedDir = cache.lastFastDirNode;
17623
- if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 1) !== 0 && dirPrefix === cache.lastFastDirPrefix) {
17803
+ if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && dirPrefix === cache.lastFastDirPrefix) {
17624
17804
  parent = cachedDir;
17625
17805
  if (exceedsComponentByteLimit2(name))
17626
17806
  this.fail("ENAMETOOLONG", syscall, name);
@@ -17645,7 +17825,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17645
17825
  this.permission(parent, 1, syscall, name);
17646
17826
  if (exceedsComponentByteLimit2(name))
17647
17827
  this.fail("ENAMETOOLONG", syscall, name);
17648
- if (dirPrefix.length > 1 && (parent.mode & 1) !== 0) {
17828
+ if (dirPrefix.length > 1 && (parent.mode & 64) !== 0) {
17649
17829
  cache.lastFastDirPrefix = dirPrefix;
17650
17830
  cache.lastFastDirNode = parent;
17651
17831
  }
@@ -17721,11 +17901,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
17721
17901
  cache.lastFastFilePath = "";
17722
17902
  cache.lastFastFileName = name;
17723
17903
  cache.lastFastFileNode = node;
17724
- lastFastMapMiss.map = void 0;
17725
- lastFastMapMiss.key = "";
17726
17904
  } catch (error) {
17727
- lastFastMapMiss.map = void 0;
17728
- lastFastMapMiss.key = "";
17729
17905
  this.ledger.release(nameBytes, 2);
17730
17906
  throw error;
17731
17907
  }
@@ -19719,27 +19895,42 @@ function* parseXmlSteps(input, limits = {}) {
19719
19895
  throw new XmlLimitError("maxContentNodes", "XML content node limit exceeded");
19720
19896
  };
19721
19897
  let pendingWork = 0;
19722
- const skipWhitespace = () => {
19898
+ const skipWhitespace = function* () {
19723
19899
  const start2 = offset;
19724
19900
  while (offset < source.length) {
19725
19901
  const c = source.charCodeAt(offset);
19726
19902
  if (c !== 32 && c !== 9 && c !== 10 && c !== 13)
19727
19903
  break;
19728
19904
  offset++;
19905
+ pendingWork++;
19906
+ if (pendingWork >= 512) {
19907
+ yield 512;
19908
+ pendingWork -= 512;
19909
+ }
19729
19910
  }
19730
19911
  return offset - start2;
19731
19912
  };
19732
- const scanName = () => {
19913
+ const scanName = function* () {
19733
19914
  const start2 = offset;
19734
19915
  while (offset < source.length) {
19735
19916
  const c = source.charCodeAt(offset);
19736
19917
  if (c === 32 || c === 9 || c === 13 || c === 10 || c === 47 || c === 61 || c === 62 || c === 63)
19737
19918
  break;
19738
19919
  offset++;
19920
+ pendingWork++;
19921
+ if (pendingWork >= 512) {
19922
+ yield 512;
19923
+ pendingWork -= 512;
19924
+ }
19739
19925
  }
19740
19926
  const name = source.slice(start2, offset);
19927
+ pendingWork += offset - start2;
19928
+ while (pendingWork >= 512) {
19929
+ yield 512;
19930
+ pendingWork -= 512;
19931
+ }
19741
19932
  const [prefix, localName] = qualifiedNameSync(name, qualifiedNames);
19742
- return [name, prefix, localName, (offset - start2) * 2];
19933
+ return [name, prefix, localName];
19743
19934
  };
19744
19935
  while (offset < source.length) {
19745
19936
  pendingWork += 1;
@@ -19776,11 +19967,15 @@ function* parseXmlSteps(input, limits = {}) {
19776
19967
  }
19777
19968
  } else {
19778
19969
  for (let index = 0; index < resolved.length; index++) {
19970
+ pendingWork++;
19971
+ if (pendingWork >= 512) {
19972
+ yield 512;
19973
+ pendingWork -= 512;
19974
+ }
19779
19975
  const c = resolved.charCodeAt(index);
19780
19976
  if (c !== 32 && c !== 9 && c !== 13 && c !== 10)
19781
19977
  invalid("text outside the root");
19782
19978
  }
19783
- pendingWork += resolved.length;
19784
19979
  while (pendingWork >= 512) {
19785
19980
  yield 512;
19786
19981
  pendingWork -= 512;
@@ -19822,8 +20017,7 @@ function* parseXmlSteps(input, limits = {}) {
19822
20017
  } else if (source.startsWith("<?", offset)) {
19823
20018
  const start2 = offset;
19824
20019
  offset += 2;
19825
- const [target, , , wName] = scanName();
19826
- pendingWork += wName;
20020
+ const [target] = yield* scanName();
19827
20021
  while (pendingWork >= 512) {
19828
20022
  yield 512;
19829
20023
  pendingWork -= 512;
@@ -19862,8 +20056,8 @@ function* parseXmlSteps(input, limits = {}) {
19862
20056
  invalid("DTD and entity declarations are forbidden");
19863
20057
  } else if (source.charCodeAt(offset + 1) === 47) {
19864
20058
  offset += 2;
19865
- const [name, , , wName] = scanName();
19866
- pendingWork += wName + skipWhitespace();
20059
+ const [name] = yield* scanName();
20060
+ yield* skipWhitespace();
19867
20061
  while (pendingWork >= 512) {
19868
20062
  yield 512;
19869
20063
  pendingWork -= 512;
@@ -19876,10 +20070,11 @@ function* parseXmlSteps(input, limits = {}) {
19876
20070
  } else {
19877
20071
  offset++;
19878
20072
  const repeated = previousEmpty && source.startsWith(previousEmpty.suffix, offset) ? previousEmpty : void 0;
19879
- const [name, prefix, localName, wName] = repeated ? [repeated.name, repeated.prefix, repeated.localName, repeated.name.length * 2] : scanName();
20073
+ const [name, prefix, localName] = repeated ? [repeated.name, repeated.prefix, repeated.localName] : yield* scanName();
19880
20074
  if (repeated)
19881
20075
  offset += name.length;
19882
- pendingWork += wName;
20076
+ if (repeated)
20077
+ pendingWork += name.length * 2;
19883
20078
  while (pendingWork >= 512) {
19884
20079
  yield 512;
19885
20080
  pendingWork -= 512;
@@ -19889,8 +20084,7 @@ function* parseXmlSteps(input, limits = {}) {
19889
20084
  let namespaces = stack.at(-1)?.namespaces ?? /* @__PURE__ */ new Map([["xml", xmlNamespace]]);
19890
20085
  let ownsNamespaces = stack.length === 0;
19891
20086
  while (!repeated) {
19892
- const ws = skipWhitespace();
19893
- pendingWork += ws;
20087
+ const ws = yield* skipWhitespace();
19894
20088
  while (pendingWork >= 512) {
19895
20089
  yield 512;
19896
20090
  pendingWork -= 512;
@@ -19900,8 +20094,7 @@ function* parseXmlSteps(input, limits = {}) {
19900
20094
  break;
19901
20095
  if (ws === 0)
19902
20096
  invalid("attributes require whitespace");
19903
- const [attribute, attrPrefix, attrLocal, wAttr] = scanName();
19904
- pendingWork += wAttr;
20097
+ const [attribute, attrPrefix, attrLocal] = yield* scanName();
19905
20098
  while (pendingWork >= 512) {
19906
20099
  yield 512;
19907
20100
  pendingWork -= 512;
@@ -19912,10 +20105,10 @@ function* parseXmlSteps(input, limits = {}) {
19912
20105
  throw new XmlLimitError("maxAttributes", "XML attribute limit exceeded");
19913
20106
  if ((attributes?.size ?? 0) >= maxAttributesPerElement)
19914
20107
  throw new XmlLimitError("maxAttributesPerElement", "XML attribute limit exceeded");
19915
- pendingWork += skipWhitespace();
20108
+ yield* skipWhitespace();
19916
20109
  if (source[offset++] !== "=")
19917
20110
  invalid("missing attribute equals");
19918
- pendingWork += skipWhitespace();
20111
+ yield* skipWhitespace();
19919
20112
  const quote = source[offset++];
19920
20113
  if (quote !== '"' && quote !== "'")
19921
20114
  invalid("unquoted attribute");
@@ -20102,14 +20295,13 @@ function scalar(element) {
20102
20295
 
20103
20296
  // ../safe-fs/dist/fs/webdav/webdav.js
20104
20297
  var timestampNamespace = "urn:virtual-bash:metadata";
20105
- var maxTimestampPropertyBytes = 4096;
20106
- function preflightTimestamps(property) {
20298
+ function preflightTimestamps(property, maxTimestampPropertyBytes) {
20107
20299
  let bytes = 0;
20108
20300
  for (const point of property.text) {
20109
20301
  const code = point.codePointAt(0);
20110
20302
  bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
20111
20303
  if (bytes > maxTimestampPropertyBytes)
20112
- throw new Error("timestamp property exceeds 4KiB limit");
20304
+ throw new Error("timestamp property exceeds byte limit");
20113
20305
  }
20114
20306
  const text = scalar(property);
20115
20307
  let offset = 0;
@@ -20350,6 +20542,7 @@ var WebDavFileSystem = class {
20350
20542
  headers;
20351
20543
  maxResponseBytes;
20352
20544
  maxXmlBytes;
20545
+ maxTimestampPropertyBytes;
20353
20546
  maxEntries;
20354
20547
  xmlLimits;
20355
20548
  timeoutMs;
@@ -20419,6 +20612,7 @@ var WebDavFileSystem = class {
20419
20612
  streamingAppend: this.requestStreamSupport !== false
20420
20613
  });
20421
20614
  this.maxResponseBytes = options.maxResponseBytes === void 0 ? Infinity : positive(options.maxResponseBytes, "maxResponseBytes", false, true);
20615
+ this.maxTimestampPropertyBytes = positive(options.maxTimestampPropertyBytes ?? Infinity, "maxTimestampPropertyBytes", true, true);
20422
20616
  this.maxXmlBytes = options.maxXmlBytes === void 0 ? Infinity : positive(options.maxXmlBytes, "maxXmlBytes", false, true);
20423
20617
  this.xmlLimits = Object.freeze({ ...options.xmlLimits });
20424
20618
  for (const [name, value] of Object.entries(this.xmlLimits))
@@ -20854,7 +21048,7 @@ var WebDavFileSystem = class {
20854
21048
  let mtimeMs = date("getlastmodified") ?? 0;
20855
21049
  let atimeMs = 0;
20856
21050
  if (timestampProperty) {
20857
- const timestamps = JSON.parse(preflightTimestamps(timestampProperty));
21051
+ const timestamps = JSON.parse(preflightTimestamps(timestampProperty, this.maxTimestampPropertyBytes));
20858
21052
  if (typeof timestamps !== "object" || timestamps === null || !("version" in timestamps) || timestamps.version !== 1 || !("etag" in timestamps) || typeof timestamps.etag !== "string" || !/^"[\x21\x23-\x7e\x80-\xff]*"$/.test(timestamps.etag) || !("type" in timestamps) || timestamps.type !== "file" && timestamps.type !== "directory" || !("atimeMs" in timestamps) || typeof timestamps.atimeMs !== "number" || !Number.isFinite(timestamps.atimeMs) || Math.abs(timestamps.atimeMs) > 864e13 || !("mtimeMs" in timestamps) || typeof timestamps.mtimeMs !== "number" || !Number.isFinite(timestamps.mtimeMs) || Math.abs(timestamps.mtimeMs) > 864e13)
20859
21053
  throw new Error("invalid timestamp property");
20860
21054
  if (timestamps.etag === validator && timestamps.type === (directory ? "directory" : "file")) {
@@ -21857,7 +22051,7 @@ var S3FileSystem = class {
21857
22051
  const modified = metadata?.LastModified?.getTime() ?? 0;
21858
22052
  if (!Number.isFinite(modified))
21859
22053
  fail2("EIO", "stat", "", "transport returned an invalid LastModified");
21860
- const timestamp = (key2, fallback) => {
22054
+ const timestamp2 = (key2, fallback) => {
21861
22055
  const value = metadata?.Metadata?.[key2];
21862
22056
  if (value === void 0)
21863
22057
  return fallback;
@@ -21874,8 +22068,8 @@ var S3FileSystem = class {
21874
22068
  type,
21875
22069
  size,
21876
22070
  mode: (type === "directory" ? 16384 : 32768) | mode,
21877
- mtimeMs: timestamp("virtual-bash-mtime", modified),
21878
- atimeMs: timestamp("virtual-bash-atime", 0),
22071
+ mtimeMs: timestamp2("virtual-bash-mtime", modified),
22072
+ atimeMs: timestamp2("virtual-bash-atime", 0),
21879
22073
  ctimeMs: modified
21880
22074
  };
21881
22075
  }
@@ -23780,8 +23974,10 @@ Redirect URI: ${textLine(request.redirectUri)}
23780
23974
  export {
23781
23975
  accessRemoteMcpResources,
23782
23976
  authenticateRemoteMcpServer,
23977
+ beginRemoteMcpAuthorization,
23783
23978
  bindRemoteMcpConfiguration,
23784
23979
  compileToolArguments,
23980
+ completeRemoteMcpAuthorization,
23785
23981
  createRemoteMcpCommands,
23786
23982
  createRemoteMcpManagementCommand,
23787
23983
  fetchRemoteMcpSchema,