@poe-platform/safe-bash 0.1.800 → 0.1.801

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 (459) hide show
  1. package/README.md +16 -5
  2. package/dist/image-ast/index.browser.js +119 -75
  3. package/dist/image-ast/index.js +119 -75
  4. package/dist/pdf-ast/index.js +4 -3
  5. package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
  6. package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
  7. package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-45PK3NWI.js} +4 -4
  8. package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
  9. package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
  10. package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
  11. package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
  12. package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-7VNF5BFF.js} +300 -737
  14. package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-A7XEHALN.js} +4 -4
  15. package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
  17. package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
  18. package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
  19. package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
  20. package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
  21. package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
  23. package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
  25. package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-FNDNHAGE.js} +30 -23
  26. package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
  27. package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-ICFDYV64.js} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-IVRQ4BXL.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
  31. package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
  32. package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
  33. package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
  34. package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-NR3EM4LS.js} +1 -1
  35. package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
  36. package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
  38. package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-PQRAK7HU.js} +920 -432
  39. package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-SZH7EJLD.js} +116 -697
  40. package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
  41. package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
  42. package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
  43. package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-VQDD3G76.js} +42 -25
  44. package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
  45. package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
  46. package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
  47. package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
  48. package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
  49. package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
  50. package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
  51. package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
  52. package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
  53. package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
  54. package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
  55. package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
  56. package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
  57. package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
  58. package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
  59. package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
  60. package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
  61. package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
  62. package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
  63. package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
  64. package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
  65. package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
  66. package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
  67. package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
  68. package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
  69. package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
  70. package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
  71. package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
  72. package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
  73. package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
  74. package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
  75. package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
  76. package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
  77. package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
  78. package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
  79. package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
  80. package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
  81. package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
  82. package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
  83. package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
  84. package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
  85. package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
  86. package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
  87. package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
  88. package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
  89. package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
  90. package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
  91. package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
  92. package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
  93. package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
  94. package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
  95. package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-CZ7EN3JG.js} +1 -1
  96. package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
  97. package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
  98. package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
  99. package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-F6OYH562.js} +2 -0
  100. package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
  101. package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
  102. package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
  103. package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
  104. package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
  105. package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
  106. package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
  107. package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
  108. package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
  109. package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
  110. package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
  111. package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
  112. package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
  113. package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
  114. package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
  115. package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
  116. package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
  117. package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
  118. package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
  119. package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
  120. package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
  121. package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
  122. package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
  123. package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
  124. package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
  125. package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
  126. package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
  127. package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
  128. package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
  129. package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
  130. package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-PCEFOYA3.js} +237 -145
  131. package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
  133. package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
  134. package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
  135. package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
  136. package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
  137. package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
  138. package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
  139. package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
  140. package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
  141. package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
  142. package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
  143. package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-TNOA7FCQ.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
  145. package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
  146. package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
  147. package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
  149. package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
  150. package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
  151. package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
  152. package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
  153. package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
  154. package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
  155. package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
  156. package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
  157. package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
  158. package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
  159. package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
  160. package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
  161. package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
  162. package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
  163. package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
  164. package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
  165. package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
  166. package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
  167. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  168. package/dist/safe-bash/commands/docx/index.browser.js +1 -1
  169. package/dist/safe-bash/commands/execution.js +19 -13
  170. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  171. package/dist/safe-bash/commands/filesystem.d.ts +1 -1
  172. package/dist/safe-bash/commands/filesystem.js +17 -13
  173. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  174. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  175. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
  176. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  177. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  178. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  179. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  180. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  181. package/dist/safe-bash/commands/media/index.browser.js +1 -1
  182. package/dist/safe-bash/commands/network/curl.d.ts +1 -1
  183. package/dist/safe-bash/commands/network/curl.js +1 -3
  184. package/dist/safe-bash/commands/network/index.browser.js +4 -4
  185. package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
  186. package/dist/safe-bash/commands/network/platform-portable.js +1 -26
  187. package/dist/safe-bash/commands/network/public.d.ts +2 -2
  188. package/dist/safe-bash/commands/network/public.js +2 -2
  189. package/dist/safe-bash/commands/network/transport.js +2 -2
  190. package/dist/safe-bash/commands/network/wget.d.ts +1 -1
  191. package/dist/safe-bash/commands/network/wget.js +1 -3
  192. package/dist/safe-bash/commands/node/filesystem.js +3 -2
  193. package/dist/safe-bash/commands/node/index.browser.js +8 -8
  194. package/dist/safe-bash/commands/node/types.js +1 -1
  195. package/dist/safe-bash/commands/op/index.browser.js +3 -3
  196. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  197. package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
  198. package/dist/safe-bash/commands/python/index.browser.js +11 -11
  199. package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
  200. package/dist/safe-bash/commands/python/manifest.js +6 -3
  201. package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
  202. package/dist/safe-bash/commands/python/shell-capability.js +3 -2
  203. package/dist/safe-bash/commands/python/worker.browser.js +3 -3
  204. package/dist/safe-bash/commands/regex-execution/public.browser.js +4 -4
  205. package/dist/safe-bash/commands/safejs/runtime.js +16 -7
  206. package/dist/safe-bash/commands/standard.d.ts +1 -0
  207. package/dist/safe-bash/commands/standard.js +2 -1
  208. package/dist/safe-bash/commands/streams.js +6 -24
  209. package/dist/safe-bash/commands/text.js +268 -364
  210. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  211. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  212. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  213. package/dist/safe-bash/core.browser.js +1 -1
  214. package/dist/safe-bash/core.d.ts +6 -1
  215. package/dist/safe-bash/core.js +1 -1
  216. package/dist/safe-bash/full-core.browser.js +108 -104
  217. package/dist/safe-bash/jobs.browser.js +5 -5
  218. package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
  219. package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
  220. package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
  221. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
  222. package/dist/safe-bash/optional-host.browser.js +11 -11
  223. package/dist/safe-bash/plugins/composition.d.ts +1 -0
  224. package/dist/safe-bash/plugins/composition.js +3 -8
  225. package/dist/safe-bash/plugins/index.browser.js +27 -27
  226. package/dist/safe-bash/registry-entry.browser.js +28 -28
  227. package/dist/safe-bash/shell/arrays/bindings.js +1 -1
  228. package/dist/safe-bash/shell/arrays/state.js +4 -0
  229. package/dist/safe-bash/shell/brace-expansion.js +1 -1
  230. package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
  231. package/dist/safe-bash/shell/dynamic-variables.js +25 -0
  232. package/dist/safe-bash/shell/parser.js +8 -1
  233. package/dist/safe-bash/shell/runtime.d.ts +4 -4
  234. package/dist/safe-bash/shell/runtime.js +291 -741
  235. package/dist/safe-bash/shell/shell.js +2 -31
  236. package/dist/safe-bash/shell-entry.browser.js +25 -25
  237. package/dist/safe-bash/trap.browser.js +4 -4
  238. package/dist/safe-bash/yq-browser/index.js +1 -1
  239. package/dist/safe-bash-base-encoding-engine/base.js +2 -2
  240. package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
  241. package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
  242. package/dist/safe-bash-byte-input-engine/index.js +4 -1
  243. package/dist/safe-bash-checksum-engine/index.js +13 -6
  244. package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
  245. package/dist/safe-bash-command-apply-patch/apply.js +4 -3
  246. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  247. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  248. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  249. package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
  250. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  251. package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
  252. package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
  253. package/dist/safe-bash-command-awk/awk-values.js +1 -1
  254. package/dist/safe-bash-command-awk/awk.js +5 -5
  255. package/dist/safe-bash-command-awk/index.js +5 -5
  256. package/dist/safe-bash-command-bc/index.d.ts +2 -0
  257. package/dist/safe-bash-command-bc/index.js +123 -92
  258. package/dist/safe-bash-command-column/column.js +5 -5
  259. package/dist/safe-bash-command-column/display.d.ts +1 -1
  260. package/dist/safe-bash-command-column/display.js +1 -1
  261. package/dist/safe-bash-command-column/index.js +5 -5
  262. package/dist/safe-bash-command-column/internal.d.ts +0 -2
  263. package/dist/safe-bash-command-column/internal.js +1 -1
  264. package/dist/safe-bash-command-column/layout.js +4 -4
  265. package/dist/safe-bash-command-column/table.js +2 -2
  266. package/dist/safe-bash-command-comm/comm.js +1 -1
  267. package/dist/safe-bash-command-comm/index.js +1 -1
  268. package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
  269. package/dist/safe-bash-command-csvcut/index.js +1 -0
  270. package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
  271. package/dist/safe-bash-command-csvgrep/index.js +2 -2
  272. package/dist/safe-bash-command-csvkit/index.js +9 -9
  273. package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
  274. package/dist/safe-bash-command-curl/curl.js +1 -1
  275. package/dist/safe-bash-command-curl/index.js +1 -1
  276. package/dist/safe-bash-command-dd/index.js +2 -0
  277. package/dist/safe-bash-command-diff/diff.js +1 -1
  278. package/dist/safe-bash-command-diff/index.js +1 -1
  279. package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
  280. package/dist/safe-bash-command-fd/index.js +9 -9
  281. package/dist/safe-bash-command-ffmpeg/index.js +31 -8
  282. package/dist/safe-bash-command-file/index.js +1 -1
  283. package/dist/safe-bash-command-file/shared.js +1 -1
  284. package/dist/safe-bash-command-find/find.js +1 -1
  285. package/dist/safe-bash-command-find/index.js +1 -1
  286. package/dist/safe-bash-command-gzip/index.js +3 -2
  287. package/dist/safe-bash-command-hexdump/command.js +4 -4
  288. package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
  289. package/dist/safe-bash-command-hexdump/index.js +4 -4
  290. package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
  291. package/dist/safe-bash-command-hexdump/internal.js +1 -1
  292. package/dist/safe-bash-command-hexdump/io.js +2 -2
  293. package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
  294. package/dist/safe-bash-command-hexdump/options.js +2 -2
  295. package/dist/safe-bash-command-hostname/index.js +1 -1
  296. package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
  297. package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
  298. package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
  299. package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
  300. package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
  301. package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
  302. package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
  303. package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
  304. package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
  305. package/dist/safe-bash-command-htmlq/index.js +27 -9
  306. package/dist/safe-bash-command-iconv/codec.js +1 -1
  307. package/dist/safe-bash-command-iconv/command.js +2 -2
  308. package/dist/safe-bash-command-iconv/index.js +2 -2
  309. package/dist/safe-bash-command-imagemagick/index.js +24 -6
  310. package/dist/safe-bash-command-join/index.js +1 -1
  311. package/dist/safe-bash-command-join/join.js +1 -1
  312. package/dist/safe-bash-command-jq/index.js +1 -1
  313. package/dist/safe-bash-command-jq/jq.js +1 -1
  314. package/dist/safe-bash-command-less/index.js +43 -28
  315. package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
  316. package/dist/safe-bash-command-numfmt/index.js +0 -11
  317. package/dist/safe-bash-command-od/index.js +101 -68
  318. package/dist/safe-bash-command-pandoc/command.js +1 -1
  319. package/dist/safe-bash-command-pandoc/index.js +1 -1
  320. package/dist/safe-bash-command-paste/index.js +1 -1
  321. package/dist/safe-bash-command-paste/paste.js +1 -1
  322. package/dist/safe-bash-command-pathchk/index.js +3 -13
  323. package/dist/safe-bash-command-pdfimages/index.js +27 -11
  324. package/dist/safe-bash-command-pdfinfo/index.js +19 -10
  325. package/dist/safe-bash-command-pdftk/index.js +3 -3
  326. package/dist/safe-bash-command-pdftoppm/index.js +26 -10
  327. package/dist/safe-bash-command-pdftotext/index.js +27 -13
  328. package/dist/safe-bash-command-qpdf/index.js +5 -5
  329. package/dist/safe-bash-command-sed/index.js +1 -1
  330. package/dist/safe-bash-command-sed/sed.js +1 -1
  331. package/dist/safe-bash-command-shuf/options.d.ts +1 -0
  332. package/dist/safe-bash-command-shuf/options.js +2 -4
  333. package/dist/safe-bash-command-shuf/shuf.js +2 -1
  334. package/dist/safe-bash-command-soffice/index.js +20 -16
  335. package/dist/safe-bash-command-split/index.js +3 -3
  336. package/dist/safe-bash-command-split/io.js +1 -1
  337. package/dist/safe-bash-command-split/outputs.js +2 -2
  338. package/dist/safe-bash-command-split/split.js +3 -3
  339. package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
  340. package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
  341. package/dist/safe-bash-command-sqlite3/index.js +284 -85
  342. package/dist/safe-bash-command-ssconvert/commands.js +9 -9
  343. package/dist/safe-bash-command-ssconvert/core.js +8 -8
  344. package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
  345. package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
  346. package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
  347. package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
  348. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
  349. package/dist/safe-bash-command-ssconvert/index.js +20 -20
  350. package/dist/safe-bash-command-tar/extract.js +1 -1
  351. package/dist/safe-bash-command-tar/index.js +5 -4
  352. package/dist/safe-bash-command-tar/modes.js +2 -2
  353. package/dist/safe-bash-command-tree/arguments.js +3 -3
  354. package/dist/safe-bash-command-tree/charset.js +1 -1
  355. package/dist/safe-bash-command-tree/index.js +4 -4
  356. package/dist/safe-bash-command-tree/io.js +1 -1
  357. package/dist/safe-bash-command-tree/pattern.js +2 -2
  358. package/dist/safe-bash-command-tree/tree.js +4 -4
  359. package/dist/safe-bash-command-unrtf/index.js +14 -7
  360. package/dist/safe-bash-command-unzip/index.js +1 -1
  361. package/dist/safe-bash-command-unzip/unzip.js +1 -1
  362. package/dist/safe-bash-command-wget/index.js +1 -1
  363. package/dist/safe-bash-command-wget/wget.js +1 -1
  364. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  365. package/dist/safe-bash-command-xan/argv.js +1 -1
  366. package/dist/safe-bash-command-xan/commands.js +5 -3
  367. package/dist/safe-bash-command-xan/csv.d.ts +1 -1
  368. package/dist/safe-bash-command-xan/csv.js +1 -1
  369. package/dist/safe-bash-command-xan/index.js +7 -7
  370. package/dist/safe-bash-command-xan/io.js +3 -3
  371. package/dist/safe-bash-command-xmllint/index.js +1 -1
  372. package/dist/safe-bash-command-xxd/index.js +105 -91
  373. package/dist/safe-bash-command-xz/command.d.ts +2 -0
  374. package/dist/safe-bash-command-xz/index.d.ts +1 -1
  375. package/dist/safe-bash-command-xz/index.js +8 -0
  376. package/dist/safe-bash-command-yq/query.js +1 -1
  377. package/dist/safe-bash-command-zip/index.js +1 -1
  378. package/dist/safe-bash-command-zip/zip.js +1 -1
  379. package/dist/safe-bash-contracts/escaping.js +3 -3
  380. package/dist/safe-bash-contracts/filesystem-output.js +2 -2
  381. package/dist/safe-bash-contracts/index.d.ts +1 -0
  382. package/dist/safe-bash-contracts/index.js +7 -3
  383. package/dist/safe-bash-contracts/io.d.ts +4 -1
  384. package/dist/safe-bash-contracts/io.js +3 -1
  385. package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
  386. package/dist/safe-bash-contracts/output.js +2 -2
  387. package/dist/safe-bash-diff-engine/index.js +1 -1
  388. package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
  389. package/dist/safe-bash-diff-engine/shared.js +1 -1
  390. package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
  391. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  392. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
  393. package/dist/safe-bash-io-engine/internal.js +1 -1
  394. package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
  395. package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
  396. package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
  397. package/dist/safe-bash-mcp/index.browser.js +416 -0
  398. package/dist/safe-bash-mcp/index.d.ts +54 -2
  399. package/dist/safe-bash-mcp/index.js +283 -89
  400. package/dist/safe-bash-network-engine/aggregate.js +2 -2
  401. package/dist/safe-bash-network-engine/args.js +4 -4
  402. package/dist/safe-bash-network-engine/authorizer.js +1 -1
  403. package/dist/safe-bash-network-engine/body.js +6 -6
  404. package/dist/safe-bash-network-engine/decode.d.ts +1 -1
  405. package/dist/safe-bash-network-engine/decode.js +3 -4
  406. package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
  407. package/dist/safe-bash-network-engine/form-content-type.js +2 -2
  408. package/dist/safe-bash-network-engine/form-headers.js +2 -2
  409. package/dist/safe-bash-network-engine/glob.js +1 -1
  410. package/dist/safe-bash-network-engine/index.js +4 -4
  411. package/dist/safe-bash-network-engine/input.js +6 -6
  412. package/dist/safe-bash-network-engine/output.js +2 -2
  413. package/dist/safe-bash-network-engine/platform-portable.js +3 -3
  414. package/dist/safe-bash-network-engine/shared.js +2 -2
  415. package/dist/safe-bash-network-engine/types.d.ts +7 -2
  416. package/dist/safe-bash-network-engine/types.js +1 -1
  417. package/dist/safe-bash-network-engine/url.js +2 -2
  418. package/dist/safe-bash-query-engine/capture.js +3 -3
  419. package/dist/safe-bash-query-engine/delpaths.js +3 -3
  420. package/dist/safe-bash-query-engine/formats.js +2 -2
  421. package/dist/safe-bash-query-engine/index.js +11 -11
  422. package/dist/safe-bash-query-engine/indices.js +3 -3
  423. package/dist/safe-bash-query-engine/input.js +1 -1
  424. package/dist/safe-bash-query-engine/interpreter.js +9 -9
  425. package/dist/safe-bash-query-engine/parser.js +1 -1
  426. package/dist/safe-bash-query-engine/query-core.js +11 -11
  427. package/dist/safe-bash-query-engine/regex.js +4 -4
  428. package/dist/safe-bash-query-engine/splits.js +5 -5
  429. package/dist/safe-bash-query-engine/values.js +2 -2
  430. package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
  431. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
  432. package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
  433. package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
  434. package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
  435. package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
  436. package/dist/safe-bash-regex-engine/index.js +6 -4
  437. package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -0
  438. package/dist/safe-bash-regex-engine/text/budget.js +1 -1
  439. package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
  440. package/dist/safe-bash-regex-engine/text/regex.js +6 -4
  441. package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
  442. package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
  443. package/dist/safe-bash-search-engine/grep.js +189 -227
  444. package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
  445. package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
  446. package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
  447. package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
  448. package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
  449. package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
  450. package/dist/spreadsheet-engine/formulas/parser.js +3 -1
  451. package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
  452. package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
  453. package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
  454. package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
  455. package/dist/spreadsheet-format-xls/biff.js +1 -1
  456. package/dist/xlsx-ast/xlsx.js +8 -5
  457. package/package.json +9 -8
  458. package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
  459. /package/dist/safe-bash/command-chunks/{chunk-BWNXWI33.js → chunk-2LMZVE3I.js} +0 -0
@@ -47901,6 +47901,7 @@ function formatExtractedPageText(page, options = {}) {
47901
47901
  if (Math.abs(dy) > 4) return dy;
47902
47902
  return a.bbox[0] - b.bbox[0];
47903
47903
  });
47904
+ const leftMargin = allLines.reduce((left, line) => Math.min(left, line.bbox[0]), Infinity);
47904
47905
  const rows = [];
47905
47906
  for (const l of allLines) {
47906
47907
  const lastRow = rows[rows.length - 1];
@@ -47914,17 +47915,17 @@ function formatExtractedPageText(page, options = {}) {
47914
47915
  row.sort((a, b) => a.bbox[0] - b.bbox[0]);
47915
47916
  const pitch = options.fixedPitch !== void 0 && options.fixedPitch > 0 ? options.fixedPitch : 6;
47916
47917
  let lineStr = "";
47917
- let curX = 0;
47918
+ let curX = leftMargin;
47918
47919
  if (options.fixedPitch !== void 0 && options.fixedPitch > 0) {
47919
47920
  const words = row.flatMap((seg) => seg.words).sort((a, b) => a.bbox[0] - b.bbox[0]);
47920
47921
  for (const w of words) {
47921
- const spaces = Math.max(curX > 0 ? 1 : 0, Math.round((w.bbox[0] - curX) / pitch));
47922
+ const spaces = Math.max(lineStr.length > 0 ? 1 : 0, Math.round((w.bbox[0] - curX) / pitch));
47922
47923
  lineStr += " ".repeat(Math.min(spaces, 80)) + w.text;
47923
47924
  curX = w.bbox[2];
47924
47925
  }
47925
47926
  } else {
47926
47927
  for (const seg of row) {
47927
- const spaces = Math.max(curX > 0 ? 2 : 0, Math.round((seg.bbox[0] - curX) / pitch));
47928
+ const spaces = Math.max(lineStr.length > 0 ? 2 : 0, Math.round((seg.bbox[0] - curX) / pitch));
47928
47929
  lineStr += " ".repeat(Math.min(spaces, 40)) + seg.text;
47929
47930
  curX = seg.bbox[2];
47930
47931
  }
@@ -57693,16 +57694,31 @@ async function openFileDescriptor(path, options, capabilities, acquire) {
57693
57694
  }
57694
57695
 
57695
57696
  // ../safe-fs/dist/contracts/virtual-path.js
57696
- var MAX_PATH_BYTES = 65536;
57697
- var MAX_PATH_COMPONENTS = 2048;
57698
- function validatePath(path, maxComponents = MAX_PATH_COMPONENTS) {
57697
+ function pathByteLength(path) {
57698
+ let bytes = 0;
57699
+ for (const point of path) {
57700
+ const code = point.codePointAt(0);
57701
+ bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
57702
+ }
57703
+ return bytes;
57704
+ }
57705
+ function validatePath(path, limits = {}) {
57706
+ const maxBytes = typeof limits === "number" ? Infinity : limits.maxPathBytes ?? Infinity;
57707
+ const maxComponents = typeof limits === "number" ? limits : limits.maxPathComponents ?? Infinity;
57708
+ for (const value of [maxBytes, maxComponents]) {
57709
+ if (value !== Infinity && (!Number.isSafeInteger(value) || value < 0)) {
57710
+ throw new RangeError("Path limits must be nonnegative safe integers or Infinity");
57711
+ }
57712
+ }
57699
57713
  if (typeof path !== "string" || path.includes("\0")) {
57700
57714
  throw new FsError("EINVAL", { syscall: "resolve", message: "paths must be strings without NUL bytes" });
57701
57715
  }
57702
- if (path.length > MAX_PATH_BYTES) {
57716
+ if (maxBytes !== Infinity && pathByteLength(path) > maxBytes) {
57703
57717
  throw new FsError("ENAMETOOLONG", { syscall: "resolve", path });
57704
57718
  }
57705
- const limit = Math.min(maxComponents, MAX_PATH_COMPONENTS);
57719
+ if (maxComponents === Infinity)
57720
+ return;
57721
+ const limit = maxComponents;
57706
57722
  let components2 = 0;
57707
57723
  let inComponent = false;
57708
57724
  for (let i = 0; i < path.length; i++) {
@@ -58351,11 +58367,14 @@ function components(path, signal) {
58351
58367
  }
58352
58368
  return result;
58353
58369
  }
58354
- function resolveMissingTarget(root, path, signal) {
58370
+ function resolveMissingTarget(root, path, signal, limits = {}) {
58371
+ validatePath(path, limits);
58355
58372
  const fail3 = (code, failedPath = path) => {
58356
58373
  throw new FsError(code, { syscall: "realpath", path: failedPath });
58357
58374
  };
58358
58375
  const origin = components(path, signal);
58376
+ let remainingBytes = (limits.maxPathBytes ?? Infinity) - pathByteLength(path);
58377
+ let remainingComponents = (limits.maxPathComponents ?? Infinity) - origin.length;
58359
58378
  const initial = { node: root, name: "" };
58360
58379
  let position = initial;
58361
58380
  let links = 0;
@@ -58408,7 +58427,10 @@ function resolveMissingTarget(root, path, signal) {
58408
58427
  if (node.type === "symlink") {
58409
58428
  if (++links > 40)
58410
58429
  return fail3("ELOOP");
58430
+ validatePath(node.target, { maxPathBytes: remainingBytes, maxPathComponents: remainingComponents });
58411
58431
  const names2 = components(node.target, signal);
58432
+ remainingBytes -= pathByteLength(node.target);
58433
+ remainingComponents -= names2.length;
58412
58434
  if (node.target.endsWith("/"))
58413
58435
  names2.push({ name: ".", start: node.target.length });
58414
58436
  if (node.target.startsWith("/"))
@@ -58612,26 +58634,22 @@ function readConfigRecord(value, label, keys) {
58612
58634
 
58613
58635
  // ../safe-fs/dist/fs/memory/limits.js
58614
58636
  var defaultMemoryFileSystemLimits = Object.freeze({
58637
+ maxPathBytes: Infinity,
58638
+ maxPathComponents: Infinity,
58615
58639
  maxFileBytes: Infinity,
58616
58640
  maxRetainedBytes: Infinity,
58617
58641
  maxMetadataUnits: Infinity
58618
58642
  });
58619
58643
  function normalizeMemoryFileSystemLimits(options) {
58620
- const keys = ["maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
58644
+ const keys = ["maxPathBytes", "maxPathComponents", "maxFileBytes", "maxRetainedBytes", "maxMetadataUnits"];
58621
58645
  const record2 = readConfigRecord(options, "memory option", [...keys, "maxBytes"]);
58622
58646
  const limits = { ...defaultMemoryFileSystemLimits };
58623
- if (Object.hasOwn(record2, "maxBytes") && record2.maxBytes !== void 0) {
58624
- if (typeof record2.maxBytes !== "number" || !Number.isSafeInteger(record2.maxBytes) || record2.maxBytes < 0) {
58625
- throw new RangeError("maxBytes must be a nonnegative safe integer");
58626
- }
58627
- limits.maxBytes = record2.maxBytes;
58628
- }
58629
- for (const key of keys) {
58630
- if (!Object.hasOwn(record2, key))
58631
- continue;
58647
+ for (const key of [...keys, "maxBytes"]) {
58632
58648
  const value = record2[key];
58649
+ if (value === void 0 || value === Infinity)
58650
+ continue;
58633
58651
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < (key === "maxMetadataUnits" ? 1 : 0)) {
58634
- throw new RangeError(`${key} must be a ${key === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer`);
58652
+ throw new RangeError(`${key} must be a ${key === "maxMetadataUnits" ? "positive" : "nonnegative"} safe integer or Infinity`);
58635
58653
  }
58636
58654
  limits[key] = value;
58637
58655
  }
@@ -58680,12 +58698,10 @@ var DUMMY_POOL_FILE_NODE = new MemoryFileNode(0, 0, null, 0, DUMMY_POOL_ALLOCATI
58680
58698
  DUMMY_POOL_FILE_NODE.atimeMs = DUMMY_POOL_FILE_NODE.mtimeMs = DUMMY_POOL_FILE_NODE.ctimeMs = DUMMY_POOL_FILE_NODE.birthtimeMs = 17e11;
58681
58699
  var defaultDateNow = Date.now;
58682
58700
  var fastWriteCachedNow = Date.now();
58683
- var lastFastMapMiss = {
58684
- map: void 0,
58685
- key: "",
58686
- slot: -1
58687
- };
58688
58701
  var FastDirectoryEntriesMap = class {
58702
+ // Keep speculative slots local so a failed write cannot pin a tenant globally.
58703
+ _missKey = "";
58704
+ _missSlot = -1;
58689
58705
  _table = new Int16Array(128).fill(-1);
58690
58706
  _mask = 127;
58691
58707
  _keys = new Array(64).fill("");
@@ -58722,9 +58738,8 @@ var FastDirectoryEntriesMap = class {
58722
58738
  getForWriteWithHash(k, h) {
58723
58739
  let slot = h & this._mask;
58724
58740
  if (this.size === 0) {
58725
- lastFastMapMiss.map = this;
58726
- lastFastMapMiss.key = k;
58727
- lastFastMapMiss.slot = slot;
58741
+ this._missKey = k;
58742
+ this._missSlot = slot;
58728
58743
  return void 0;
58729
58744
  }
58730
58745
  const mask = this._mask;
@@ -58734,9 +58749,8 @@ var FastDirectoryEntriesMap = class {
58734
58749
  while (true) {
58735
58750
  const idx = table[slot];
58736
58751
  if (idx === -1) {
58737
- lastFastMapMiss.map = this;
58738
- lastFastMapMiss.key = k;
58739
- lastFastMapMiss.slot = firstDeleted !== -1 ? firstDeleted : slot;
58752
+ this._missKey = k;
58753
+ this._missSlot = firstDeleted !== -1 ? firstDeleted : slot;
58740
58754
  return void 0;
58741
58755
  }
58742
58756
  if (idx === -2) {
@@ -58785,6 +58799,7 @@ var FastDirectoryEntriesMap = class {
58785
58799
  return this.get(k) !== void 0;
58786
58800
  }
58787
58801
  _rebuild(newCap) {
58802
+ this._missKey = "";
58788
58803
  const newTableLen = newCap * 2;
58789
58804
  const newMask = newTableLen - 1;
58790
58805
  const newTable = newCap <= 16384 ? new Int16Array(newTableLen).fill(-1) : new Int32Array(newTableLen).fill(-1);
@@ -58824,15 +58839,16 @@ var FastDirectoryEntriesMap = class {
58824
58839
  this._next = writeIdx;
58825
58840
  }
58826
58841
  set(k, v) {
58827
- if (this === lastFastMapMiss.map && k === lastFastMapMiss.key && this._next < this._keys.length) {
58842
+ if (k === this._missKey && this._next < this._keys.length) {
58828
58843
  const entryIdx = this._next++;
58829
- this._table[lastFastMapMiss.slot] = entryIdx;
58844
+ this._table[this._missSlot] = entryIdx;
58830
58845
  this._keys[entryIdx] = k;
58831
58846
  this._vals[entryIdx] = v;
58832
58847
  this.size++;
58833
- lastFastMapMiss.map = void 0;
58848
+ this._missKey = "";
58834
58849
  return this;
58835
58850
  }
58851
+ this._missKey = "";
58836
58852
  if (this._next >= this._keys.length) {
58837
58853
  this._rebuild(this.size * 2 <= this._keys.length ? this._keys.length : this._keys.length * 2);
58838
58854
  }
@@ -58863,6 +58879,7 @@ var FastDirectoryEntriesMap = class {
58863
58879
  }
58864
58880
  }
58865
58881
  delete(k) {
58882
+ this._missKey = "";
58866
58883
  if (this.size === 0)
58867
58884
  return false;
58868
58885
  let slot = this._hash(k);
@@ -58888,6 +58905,7 @@ var FastDirectoryEntriesMap = class {
58888
58905
  }
58889
58906
  }
58890
58907
  clear() {
58908
+ this._missKey = "";
58891
58909
  if (this._next > 0) {
58892
58910
  this._table.fill(-1);
58893
58911
  for (let i = 0; i < this._next; i++) {
@@ -59340,7 +59358,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
59340
59358
  const owner = ownedStores.get(this);
59341
59359
  if (path !== "")
59342
59360
  this.validatePath(path, "realpath");
59343
- return resolveMissingTarget(owner.root, path || ".", options.signal);
59361
+ return resolveMissingTarget(owner.root, path || ".", options.signal, this.ledger.limits);
59344
59362
  }
59345
59363
  async confineExtraction(roots, options = {}) {
59346
59364
  options.signal?.throwIfAborted();
@@ -59593,6 +59611,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
59593
59611
  this.fail("EINVAL", syscall, path);
59594
59612
  if (path.length === 0)
59595
59613
  this.fail("ENOENT", syscall, path);
59614
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
59615
+ validatePath(path, this.ledger.limits);
59596
59616
  }
59597
59617
  permission(node, mask, syscall, path) {
59598
59618
  if ((node.mode >> 6 & mask) !== mask)
@@ -59614,6 +59634,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
59614
59634
  node.mtimeMs = node.ctimeMs = now;
59615
59635
  }
59616
59636
  resolveNode(path, syscall, followFinal = true) {
59637
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
59638
+ validatePath(path, this.ledger.limits);
59617
59639
  const cache = memoryCaches.get(this.ledger);
59618
59640
  if (this.symlinkCount === 0 && isCleanAbsolutePath(path)) {
59619
59641
  const fastDir = cache.lastFastDirNode;
@@ -59698,7 +59720,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
59698
59720
  start = slash + 1;
59699
59721
  }
59700
59722
  }
59701
- let remainingPathUnits = 65536 - path.length;
59723
+ let remainingPathUnits = this.ledger.limits.maxPathBytes - pathByteLength(path);
59702
59724
  if (remainingPathUnits < 0)
59703
59725
  this.fail("ENAMETOOLONG", syscall, path);
59704
59726
  let initialComponents = 0;
@@ -59708,12 +59730,12 @@ var MemoryFileSystem = class _MemoryFileSystem {
59708
59730
  inComp = false;
59709
59731
  else if (!inComp) {
59710
59732
  inComp = true;
59711
- if (++initialComponents > 256)
59733
+ if (++initialComponents > this.ledger.limits.maxPathComponents)
59712
59734
  this.fail("ENAMETOOLONG", syscall, path);
59713
59735
  }
59714
59736
  }
59715
- const pending = path.split("/").filter(Boolean);
59716
- let remainingComponents = 256 - pending.length;
59737
+ let pending = path.split("/").filter(Boolean);
59738
+ let remainingComponents = this.ledger.limits.maxPathComponents - pending.length;
59717
59739
  if (path.endsWith("/"))
59718
59740
  pending.push("");
59719
59741
  const stack = [{ node: this.root, name: "" }];
@@ -59763,9 +59785,9 @@ var MemoryFileSystem = class _MemoryFileSystem {
59763
59785
  if (node.type === "symlink" && (options.followFinal !== false || pending.length > 0)) {
59764
59786
  if (++links > 40)
59765
59787
  this.fail("ELOOP", syscall, path);
59766
- if (node.target.length > remainingPathUnits)
59788
+ if (pathByteLength(node.target) > remainingPathUnits)
59767
59789
  this.fail("ENAMETOOLONG", syscall, path);
59768
- remainingPathUnits -= node.target.length;
59790
+ remainingPathUnits -= pathByteLength(node.target);
59769
59791
  const target = node.target.split("/").filter(Boolean);
59770
59792
  if (target.length > remainingComponents)
59771
59793
  this.fail("ENAMETOOLONG", syscall, path);
@@ -59774,7 +59796,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
59774
59796
  target.push("");
59775
59797
  if (options.resizeCreate !== void 0 && target.at(-1) === "" && pending[0] === "")
59776
59798
  target.pop();
59777
- pending.unshift(...target);
59799
+ pending = target.concat(pending);
59778
59800
  if (node.target.startsWith("/"))
59779
59801
  stack.splice(1);
59780
59802
  continue;
@@ -59790,6 +59812,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
59790
59812
  };
59791
59813
  }
59792
59814
  file(path, syscall) {
59815
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
59816
+ validatePath(path, this.ledger.limits);
59793
59817
  if (this.symlinkCount === 0 && path.charCodeAt(0) === 47 && path.length > 1 && path.indexOf("/", 1) === -1 && !path.includes("\0")) {
59794
59818
  const name = path === _lastFileSlice1Path ? _lastFileSlice1Name : (_lastFileSlice1Path = path, _lastFileSlice1Name = path.slice(1));
59795
59819
  if (name !== "." && name !== "..") {
@@ -60064,6 +60088,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
60064
60088
  }, syscall, path);
60065
60089
  }
60066
60090
  writeData(path, data, options, syscall) {
60091
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
60092
+ validatePath(path, this.ledger.limits);
60067
60093
  if (!(data instanceof Uint8Array))
60068
60094
  throw new TypeError("Memory files require Uint8Array data");
60069
60095
  const target = this.prepareWrite(path, options, syscall);
@@ -60180,9 +60206,11 @@ var MemoryFileSystem = class _MemoryFileSystem {
60180
60206
  this.changed(node, now);
60181
60207
  }
60182
60208
  writeMemoryFileFast(path, data, append, mode) {
60209
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
60210
+ validatePath(path, this.ledger.limits);
60183
60211
  const cache = memoryCaches.get(this.ledger);
60184
60212
  const syscall = append ? "appendFile" : "writeFile";
60185
- if (append && path === 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) {
60213
+ if (append && path === 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) {
60186
60214
  const current2 = cache.lastFastFileNode;
60187
60215
  const length2 = current2.byteLength + data.byteLength;
60188
60216
  this.admitSize(current2, length2, syscall, path);
@@ -60196,7 +60224,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60196
60224
  let name = "";
60197
60225
  const cachedPrefix = cache.lastFastDirPrefix;
60198
60226
  const cachedDir = cache.lastFastDirNode;
60199
- if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 1) !== 0 && cachedPrefix.length > 1 && path.startsWith(cachedPrefix) && path.indexOf("/", cachedPrefix.length) === -1) {
60227
+ if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && cachedPrefix.length > 1 && path.startsWith(cachedPrefix) && path.indexOf("/", cachedPrefix.length) === -1) {
60200
60228
  parent = cachedDir;
60201
60229
  name = path.slice(cachedPrefix.length);
60202
60230
  if (exceedsComponentByteLimit2(name))
@@ -60209,7 +60237,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60209
60237
  name = path.slice(start);
60210
60238
  if (exceedsComponentByteLimit2(name))
60211
60239
  this.fail("ENAMETOOLONG", syscall, path);
60212
- if (start > 1 && (parent.mode & 1) !== 0) {
60240
+ if (start > 1 && (parent.mode & 64) !== 0) {
60213
60241
  cache.lastFastDirPrefix = path.slice(0, start);
60214
60242
  cache.lastFastDirNode = parent;
60215
60243
  }
@@ -60329,6 +60357,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60329
60357
  let ino = this.nextInode;
60330
60358
  this.nextInode = ino + batchCount;
60331
60359
  let nextIdx = 1;
60360
+ entries2._missKey = "";
60332
60361
  entries2._next = 1 + batchCount;
60333
60362
  entries2.size = 1 + batchCount;
60334
60363
  const table = entries2._table;
@@ -60378,6 +60407,8 @@ var MemoryFileSystem = class _MemoryFileSystem {
60378
60407
  }
60379
60408
  }
60380
60409
  writeMemoryFileInDirFast(dirPrefix, name, data, append, mode, nameHash) {
60410
+ if (this.ledger.limits.maxPathBytes !== Infinity || this.ledger.limits.maxPathComponents !== Infinity)
60411
+ validatePath(dirPrefix + name, this.ledger.limits);
60381
60412
  const cache = this._cache;
60382
60413
  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) {
60383
60414
  const parent = cache.lastFastDirNode;
@@ -60405,12 +60436,11 @@ var MemoryFileSystem = class _MemoryFileSystem {
60405
60436
  node.allocation = DUMMY_POOL_ALLOCATION;
60406
60437
  node.sourceRef = node.data.subarray(0);
60407
60438
  const entryIdx = entries2._next++;
60408
- entries2._table[lastFastMapMiss.slot] = entryIdx;
60439
+ entries2._table[entries2._missSlot] = entryIdx;
60409
60440
  entries2._keys[entryIdx] = name;
60410
60441
  entries2._vals[entryIdx] = node;
60411
60442
  entries2.size++;
60412
- lastFastMapMiss.map = void 0;
60413
- lastFastMapMiss.key = "";
60443
+ entries2._missKey = "";
60414
60444
  this.ledger.reserve(name.length * 2, 2, "writeFile", name);
60415
60445
  this.totalBytes += length;
60416
60446
  this.mutationTick = this.mutationTick + 1 | 0;
@@ -60424,7 +60454,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60424
60454
  }
60425
60455
  const syscall = append ? "appendFile" : "writeFile";
60426
60456
  try {
60427
- 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) {
60457
+ 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) {
60428
60458
  const current2 = cache.lastFastFileNode;
60429
60459
  const length2 = current2.byteLength + data.byteLength;
60430
60460
  this.admitSize(current2, length2, syscall, name);
@@ -60435,7 +60465,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60435
60465
  }
60436
60466
  let parent = this.root;
60437
60467
  const cachedDir = cache.lastFastDirNode;
60438
- if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 1) !== 0 && dirPrefix === cache.lastFastDirPrefix) {
60468
+ if (cachedDir !== void 0 && cachedDir.nlink !== 0 && (cachedDir.mode & 64) !== 0 && dirPrefix === cache.lastFastDirPrefix) {
60439
60469
  parent = cachedDir;
60440
60470
  if (exceedsComponentByteLimit2(name))
60441
60471
  this.fail("ENAMETOOLONG", syscall, name);
@@ -60460,7 +60490,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60460
60490
  this.permission(parent, 1, syscall, name);
60461
60491
  if (exceedsComponentByteLimit2(name))
60462
60492
  this.fail("ENAMETOOLONG", syscall, name);
60463
- if (dirPrefix.length > 1 && (parent.mode & 1) !== 0) {
60493
+ if (dirPrefix.length > 1 && (parent.mode & 64) !== 0) {
60464
60494
  cache.lastFastDirPrefix = dirPrefix;
60465
60495
  cache.lastFastDirNode = parent;
60466
60496
  }
@@ -60536,11 +60566,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
60536
60566
  cache.lastFastFilePath = "";
60537
60567
  cache.lastFastFileName = name;
60538
60568
  cache.lastFastFileNode = node;
60539
- lastFastMapMiss.map = void 0;
60540
- lastFastMapMiss.key = "";
60541
60569
  } catch (error) {
60542
- lastFastMapMiss.map = void 0;
60543
- lastFastMapMiss.key = "";
60544
60570
  this.ledger.release(nameBytes, 2);
60545
60571
  throw error;
60546
60572
  }
@@ -62534,27 +62560,42 @@ function* parseXmlSteps(input, limits = {}) {
62534
62560
  throw new XmlLimitError("maxContentNodes", "XML content node limit exceeded");
62535
62561
  };
62536
62562
  let pendingWork = 0;
62537
- const skipWhitespace = () => {
62563
+ const skipWhitespace = function* () {
62538
62564
  const start2 = offset;
62539
62565
  while (offset < source.length) {
62540
62566
  const c = source.charCodeAt(offset);
62541
62567
  if (c !== 32 && c !== 9 && c !== 10 && c !== 13)
62542
62568
  break;
62543
62569
  offset++;
62570
+ pendingWork++;
62571
+ if (pendingWork >= 512) {
62572
+ yield 512;
62573
+ pendingWork -= 512;
62574
+ }
62544
62575
  }
62545
62576
  return offset - start2;
62546
62577
  };
62547
- const scanName = () => {
62578
+ const scanName = function* () {
62548
62579
  const start2 = offset;
62549
62580
  while (offset < source.length) {
62550
62581
  const c = source.charCodeAt(offset);
62551
62582
  if (c === 32 || c === 9 || c === 13 || c === 10 || c === 47 || c === 61 || c === 62 || c === 63)
62552
62583
  break;
62553
62584
  offset++;
62585
+ pendingWork++;
62586
+ if (pendingWork >= 512) {
62587
+ yield 512;
62588
+ pendingWork -= 512;
62589
+ }
62554
62590
  }
62555
62591
  const name = source.slice(start2, offset);
62592
+ pendingWork += offset - start2;
62593
+ while (pendingWork >= 512) {
62594
+ yield 512;
62595
+ pendingWork -= 512;
62596
+ }
62556
62597
  const [prefix, localName] = qualifiedNameSync(name, qualifiedNames);
62557
- return [name, prefix, localName, (offset - start2) * 2];
62598
+ return [name, prefix, localName];
62558
62599
  };
62559
62600
  while (offset < source.length) {
62560
62601
  pendingWork += 1;
@@ -62591,11 +62632,15 @@ function* parseXmlSteps(input, limits = {}) {
62591
62632
  }
62592
62633
  } else {
62593
62634
  for (let index = 0; index < resolved.length; index++) {
62635
+ pendingWork++;
62636
+ if (pendingWork >= 512) {
62637
+ yield 512;
62638
+ pendingWork -= 512;
62639
+ }
62594
62640
  const c = resolved.charCodeAt(index);
62595
62641
  if (c !== 32 && c !== 9 && c !== 13 && c !== 10)
62596
62642
  invalid("text outside the root");
62597
62643
  }
62598
- pendingWork += resolved.length;
62599
62644
  while (pendingWork >= 512) {
62600
62645
  yield 512;
62601
62646
  pendingWork -= 512;
@@ -62637,8 +62682,7 @@ function* parseXmlSteps(input, limits = {}) {
62637
62682
  } else if (source.startsWith("<?", offset)) {
62638
62683
  const start2 = offset;
62639
62684
  offset += 2;
62640
- const [target, , , wName] = scanName();
62641
- pendingWork += wName;
62685
+ const [target] = yield* scanName();
62642
62686
  while (pendingWork >= 512) {
62643
62687
  yield 512;
62644
62688
  pendingWork -= 512;
@@ -62677,8 +62721,8 @@ function* parseXmlSteps(input, limits = {}) {
62677
62721
  invalid("DTD and entity declarations are forbidden");
62678
62722
  } else if (source.charCodeAt(offset + 1) === 47) {
62679
62723
  offset += 2;
62680
- const [name, , , wName] = scanName();
62681
- pendingWork += wName + skipWhitespace();
62724
+ const [name] = yield* scanName();
62725
+ yield* skipWhitespace();
62682
62726
  while (pendingWork >= 512) {
62683
62727
  yield 512;
62684
62728
  pendingWork -= 512;
@@ -62691,10 +62735,11 @@ function* parseXmlSteps(input, limits = {}) {
62691
62735
  } else {
62692
62736
  offset++;
62693
62737
  const repeated = previousEmpty && source.startsWith(previousEmpty.suffix, offset) ? previousEmpty : void 0;
62694
- const [name, prefix, localName, wName] = repeated ? [repeated.name, repeated.prefix, repeated.localName, repeated.name.length * 2] : scanName();
62738
+ const [name, prefix, localName] = repeated ? [repeated.name, repeated.prefix, repeated.localName] : yield* scanName();
62695
62739
  if (repeated)
62696
62740
  offset += name.length;
62697
- pendingWork += wName;
62741
+ if (repeated)
62742
+ pendingWork += name.length * 2;
62698
62743
  while (pendingWork >= 512) {
62699
62744
  yield 512;
62700
62745
  pendingWork -= 512;
@@ -62704,8 +62749,7 @@ function* parseXmlSteps(input, limits = {}) {
62704
62749
  let namespaces = stack.at(-1)?.namespaces ?? /* @__PURE__ */ new Map([["xml", xmlNamespace]]);
62705
62750
  let ownsNamespaces = stack.length === 0;
62706
62751
  while (!repeated) {
62707
- const ws = skipWhitespace();
62708
- pendingWork += ws;
62752
+ const ws = yield* skipWhitespace();
62709
62753
  while (pendingWork >= 512) {
62710
62754
  yield 512;
62711
62755
  pendingWork -= 512;
@@ -62715,8 +62759,7 @@ function* parseXmlSteps(input, limits = {}) {
62715
62759
  break;
62716
62760
  if (ws === 0)
62717
62761
  invalid("attributes require whitespace");
62718
- const [attribute, attrPrefix, attrLocal, wAttr] = scanName();
62719
- pendingWork += wAttr;
62762
+ const [attribute, attrPrefix, attrLocal] = yield* scanName();
62720
62763
  while (pendingWork >= 512) {
62721
62764
  yield 512;
62722
62765
  pendingWork -= 512;
@@ -62727,10 +62770,10 @@ function* parseXmlSteps(input, limits = {}) {
62727
62770
  throw new XmlLimitError("maxAttributes", "XML attribute limit exceeded");
62728
62771
  if ((attributes?.size ?? 0) >= maxAttributesPerElement)
62729
62772
  throw new XmlLimitError("maxAttributesPerElement", "XML attribute limit exceeded");
62730
- pendingWork += skipWhitespace();
62773
+ yield* skipWhitespace();
62731
62774
  if (source[offset++] !== "=")
62732
62775
  invalid("missing attribute equals");
62733
- pendingWork += skipWhitespace();
62776
+ yield* skipWhitespace();
62734
62777
  const quote = source[offset++];
62735
62778
  if (quote !== '"' && quote !== "'")
62736
62779
  invalid("unquoted attribute");
@@ -62917,14 +62960,13 @@ function scalar(element) {
62917
62960
 
62918
62961
  // ../safe-fs/dist/fs/webdav/webdav.js
62919
62962
  var timestampNamespace = "urn:virtual-bash:metadata";
62920
- var maxTimestampPropertyBytes = 4096;
62921
- function preflightTimestamps(property) {
62963
+ function preflightTimestamps(property, maxTimestampPropertyBytes) {
62922
62964
  let bytes = 0;
62923
62965
  for (const point of property.text) {
62924
62966
  const code = point.codePointAt(0);
62925
62967
  bytes += code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
62926
62968
  if (bytes > maxTimestampPropertyBytes)
62927
- throw new Error("timestamp property exceeds 4KiB limit");
62969
+ throw new Error("timestamp property exceeds byte limit");
62928
62970
  }
62929
62971
  const text = scalar(property);
62930
62972
  let offset = 0;
@@ -63165,6 +63207,7 @@ var WebDavFileSystem = class {
63165
63207
  headers;
63166
63208
  maxResponseBytes;
63167
63209
  maxXmlBytes;
63210
+ maxTimestampPropertyBytes;
63168
63211
  maxEntries;
63169
63212
  xmlLimits;
63170
63213
  timeoutMs;
@@ -63234,6 +63277,7 @@ var WebDavFileSystem = class {
63234
63277
  streamingAppend: this.requestStreamSupport !== false
63235
63278
  });
63236
63279
  this.maxResponseBytes = options.maxResponseBytes === void 0 ? Infinity : positive(options.maxResponseBytes, "maxResponseBytes", false, true);
63280
+ this.maxTimestampPropertyBytes = positive(options.maxTimestampPropertyBytes ?? Infinity, "maxTimestampPropertyBytes", true, true);
63237
63281
  this.maxXmlBytes = options.maxXmlBytes === void 0 ? Infinity : positive(options.maxXmlBytes, "maxXmlBytes", false, true);
63238
63282
  this.xmlLimits = Object.freeze({ ...options.xmlLimits });
63239
63283
  for (const [name, value] of Object.entries(this.xmlLimits))
@@ -63669,7 +63713,7 @@ var WebDavFileSystem = class {
63669
63713
  let mtimeMs = date("getlastmodified") ?? 0;
63670
63714
  let atimeMs = 0;
63671
63715
  if (timestampProperty) {
63672
- const timestamps = JSON.parse(preflightTimestamps(timestampProperty));
63716
+ const timestamps = JSON.parse(preflightTimestamps(timestampProperty, this.maxTimestampPropertyBytes));
63673
63717
  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)
63674
63718
  throw new Error("invalid timestamp property");
63675
63719
  if (timestamps.etag === validator && timestamps.type === (directory ? "directory" : "file")) {
@@ -37317,6 +37317,7 @@ function formatExtractedPageText(page, options = {}) {
37317
37317
  if (Math.abs(dy) > 4) return dy;
37318
37318
  return a.bbox[0] - b.bbox[0];
37319
37319
  });
37320
+ const leftMargin = allLines.reduce((left, line) => Math.min(left, line.bbox[0]), Infinity);
37320
37321
  const rows = [];
37321
37322
  for (const l of allLines) {
37322
37323
  const lastRow = rows[rows.length - 1];
@@ -37330,17 +37331,17 @@ function formatExtractedPageText(page, options = {}) {
37330
37331
  row.sort((a, b) => a.bbox[0] - b.bbox[0]);
37331
37332
  const pitch = options.fixedPitch !== void 0 && options.fixedPitch > 0 ? options.fixedPitch : 6;
37332
37333
  let lineStr = "";
37333
- let curX = 0;
37334
+ let curX = leftMargin;
37334
37335
  if (options.fixedPitch !== void 0 && options.fixedPitch > 0) {
37335
37336
  const words = row.flatMap((seg) => seg.words).sort((a, b) => a.bbox[0] - b.bbox[0]);
37336
37337
  for (const w of words) {
37337
- const spaces = Math.max(curX > 0 ? 1 : 0, Math.round((w.bbox[0] - curX) / pitch));
37338
+ const spaces = Math.max(lineStr.length > 0 ? 1 : 0, Math.round((w.bbox[0] - curX) / pitch));
37338
37339
  lineStr += " ".repeat(Math.min(spaces, 80)) + w.text;
37339
37340
  curX = w.bbox[2];
37340
37341
  }
37341
37342
  } else {
37342
37343
  for (const seg of row) {
37343
- const spaces = Math.max(curX > 0 ? 2 : 0, Math.round((seg.bbox[0] - curX) / pitch));
37344
+ const spaces = Math.max(lineStr.length > 0 ? 2 : 0, Math.round((seg.bbox[0] - curX) / pitch));
37344
37345
  lineStr += " ".repeat(Math.min(spaces, 40)) + seg.text;
37345
37346
  curX = seg.bbox[2];
37346
37347
  }
@@ -2,13 +2,13 @@ import {
2
2
  shellValueByteLength,
3
3
  shellValueBytes,
4
4
  shellValueText
5
- } from "./chunk-I4OAEOP6.js";
5
+ } from "./chunk-J42RIHHJ.js";
6
6
  import {
7
7
  commandRuntimeIdentity
8
- } from "./chunk-LQHGH25W.js";
8
+ } from "./chunk-7R5BDCG7.js";
9
9
  import {
10
10
  init_platform
11
- } from "./chunk-YG5WAHK7.js";
11
+ } from "./chunk-B7TAL7S5.js";
12
12
 
13
13
  // packages/safe-bash/src/shell/trap.ts
14
14
  init_platform();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_platform
3
- } from "./chunk-YG5WAHK7.js";
3
+ } from "./chunk-B7TAL7S5.js";
4
4
 
5
5
  // packages/safe-bash/src/commands/line-endings/index.ts
6
6
  init_platform();
@@ -2,13 +2,13 @@ import {
2
2
  composeAgentCommands,
3
3
  createAgentCommandPlugin,
4
4
  createRegexExecutors
5
- } from "./chunk-KW24TAIU.js";
5
+ } from "./chunk-PQRAK7HU.js";
6
6
  import {
7
7
  commandRuntimeIdentity
8
- } from "./chunk-LQHGH25W.js";
8
+ } from "./chunk-7R5BDCG7.js";
9
9
  import {
10
10
  init_platform
11
- } from "./chunk-YG5WAHK7.js";
11
+ } from "./chunk-B7TAL7S5.js";
12
12
 
13
13
  // packages/safe-bash/src/plugins/index.ts
14
14
  init_platform();
@@ -72,7 +72,7 @@ function lazyCommandPlugin(name, commands, replace = false) {
72
72
  }
73
73
 
74
74
  // packages/safe-bash/src/lazy-gh.ts
75
- var loadgh = /* @__PURE__ */ createLazyCommandLoader(() => import("./gh-I7QX7N5C.js"));
75
+ var loadgh = /* @__PURE__ */ createLazyCommandLoader(() => import("./gh-6WU6PXL4.js"));
76
76
  var ghMetadata = [
77
77
  { name: "gh", description: "Work seamlessly with GitHub from the command line" }
78
78
  ];
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  init_platform
3
- } from "./chunk-YG5WAHK7.js";
3
+ } from "./chunk-B7TAL7S5.js";
4
4
 
5
5
  // packages/safe-bash/src/commands/regex-execution/public.ts
6
6
  init_platform();
7
7
 
8
8
  // packages/safe-bash/src/commands/regex-execution/protocol.ts
9
9
  init_platform();
10
- import { ExprMatchError, RegexExecutionError, breSearchSymbolWidth, defaults, exprMatchCeilings, inProcessRegexProviders, inProcessRegexWorkers, inputBytes, matchRangeLimits, policy, reusableBatchRows, reusableTrustedRequest, trustedInputRows, trustedWorkerReplies, trustedWorkerRequests, validateBreSearchInput, validateBreSearchReply, validateBreSearchRequest, validateExprInput, validateExprReply, validateExprRequest, validateReply } from "../../safe-bash-regex-engine/execution/protocol.js";
10
+ import { ExprMatchError, RegexExecutionError, breSearchSymbolWidth, defaults, exprMatchCeilings, inProcessRegexProviders, inProcessRegexWorkers, inputBytes, matchRangeLimits, policy, reusableBatchRows, trustedInputRows, trustedWorkerReplies, trustedWorkerRequests, validateBreSearchInput, validateBreSearchReply, validateBreSearchRequest, validateExprInput, validateExprReply, validateExprRequest, validateReply } from "../../safe-bash-regex-engine/execution/protocol.js";
11
11
 
12
12
  export {
13
13
  RegexExecutionError