@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
@@ -22,6 +22,7 @@ export function createPythonHostBridge(capabilities, options) {
22
22
  const pending = new Set();
23
23
  const streams = new Map();
24
24
  const jobs = new Map();
25
+ const activeCalls = new Set();
25
26
  const cleanupFailures = [];
26
27
  const jobWork = new Set();
27
28
  let nextJob = 1;
@@ -93,16 +94,17 @@ export function createPythonHostBridge(capabilities, options) {
93
94
  const stream = streams.get(handle);
94
95
  if (!stream)
95
96
  throw new Error('Unknown Python host stream');
96
- streams.delete(handle);
97
- if (cancel)
98
- stream.controller.abort(new Error('Python host stream released'));
99
- try {
100
- await stream.iterator.return?.();
101
- }
102
- catch (error) {
103
- cleanupFailures.push(error);
104
- throw error;
97
+ if (!stream.closing) {
98
+ stream.closing = Promise.resolve().then(async () => {
99
+ if (cancel)
100
+ stream.controller.abort(new Error('Python host stream released'));
101
+ await stream.iterator.return?.();
102
+ // Retained iterators consume admission until cleanup succeeds, including
103
+ // when a host ignores cancellation or its cleanup fails.
104
+ streams.delete(handle);
105
+ }).catch(error => { cleanupFailures.push(error); throw error; });
105
106
  }
107
+ await stream.closing;
106
108
  };
107
109
  const pull = async (handle) => {
108
110
  const stream = streams.get(handle);
@@ -140,6 +142,7 @@ export function createPythonHostBridge(capabilities, options) {
140
142
  const payload = data(incoming);
141
143
  if (!payload || Array.isArray(payload) || typeof payload !== 'object' || payload.version !== 1)
142
144
  throw new TypeError('Unsupported Python host protocol');
145
+ let reservation;
143
146
  const operation = Promise.resolve().then(async () => {
144
147
  assertLive();
145
148
  if (payload.operation === 'poll' || payload.operation === 'cancel') {
@@ -151,23 +154,29 @@ export function createPythonHostBridge(capabilities, options) {
151
154
  throw new Error('Unknown Python host job');
152
155
  if (payload.operation === 'cancel') {
153
156
  jobs.delete(handle);
157
+ if (job.settled)
158
+ activeCalls.delete(job.reservation);
154
159
  job.controller.abort(new Error('Python guest cancelled host operation'));
155
160
  return null;
156
161
  }
157
162
  if (job.result === undefined && !job.failed)
158
163
  return { done: false };
159
164
  jobs.delete(handle);
165
+ if (job.settled)
166
+ activeCalls.delete(job.reservation);
160
167
  return job.failed ? { done: true, error: 'Python host operation failed', errorCode: job.failed } : { done: true, value: job.result };
161
168
  }
162
- if (Math.max(jobWork.size, jobs.size) >= maxConcurrentCalls)
169
+ if (activeCalls.size >= maxConcurrentCalls)
163
170
  throw new Error('Python host call concurrency limit exceeded');
171
+ reservation = {};
172
+ activeCalls.add(reservation);
164
173
  if (payload.operation === 'begin' || payload.operation === 'begin-next') {
165
174
  let work;
166
175
  let child;
167
176
  let reservedStream;
168
177
  if (payload.operation === 'begin-next') {
169
178
  const stream = typeof payload.handle === 'number' ? streams.get(payload.handle) : undefined;
170
- if (!stream || stream.busy)
179
+ if (!stream || stream.busy || stream.closing)
171
180
  throw new Error('Unknown or busy Python host stream');
172
181
  reservedStream = stream;
173
182
  stream.busy = true;
@@ -182,8 +191,10 @@ export function createPythonHostBridge(capabilities, options) {
182
191
  work = childSignal => capability.call(payload.value ?? null, { signal: childSignal });
183
192
  }
184
193
  const handle = nextJob++;
185
- const job = { controller: child };
194
+ const job = { controller: child, reservation, settled: false };
186
195
  jobs.set(handle, job);
196
+ // Transfer admission to the job until both host work and guest ownership end.
197
+ reservation = undefined;
187
198
  const task = Promise.resolve().then(() => {
188
199
  const childSignal = AbortSignal.any([signal, child.signal]);
189
200
  childSignal.throwIfAborted();
@@ -193,6 +204,9 @@ export function createPythonHostBridge(capabilities, options) {
193
204
  child.signal.throwIfAborted();
194
205
  job.result = data(value);
195
206
  }).catch(error => { job.failed = pythonHostFailureCode(error); }).finally(() => {
207
+ job.settled = true;
208
+ if (!jobs.has(handle))
209
+ activeCalls.delete(job.reservation);
196
210
  if (reservedStream)
197
211
  reservedStream.busy = false;
198
212
  jobWork.delete(task);
@@ -207,8 +221,8 @@ export function createPythonHostBridge(capabilities, options) {
207
221
  const stream = streams.get(handle);
208
222
  if (!stream)
209
223
  throw new Error('Unknown Python host stream');
210
- if (stream.busy)
211
- throw new Error('Python host stream already pulling');
224
+ if (stream.busy || stream.closing)
225
+ throw new Error('Python host stream already pulling or closing');
212
226
  if (payload.operation === 'release') {
213
227
  await release(handle);
214
228
  return null;
@@ -248,6 +262,8 @@ export function createPythonHostBridge(capabilities, options) {
248
262
  }
249
263
  finally {
250
264
  pending.delete(operation);
265
+ if (reservation)
266
+ activeCalls.delete(reservation);
251
267
  }
252
268
  };
253
269
  const close = () => {
@@ -260,6 +276,7 @@ export function createPythonHostBridge(capabilities, options) {
260
276
  job.controller.abort(controller.signal.reason);
261
277
  await Promise.allSettled([...pending, ...jobWork]);
262
278
  jobs.clear();
279
+ activeCalls.clear();
263
280
  const results = await Promise.allSettled([...streams.keys()].map(handle => release(handle)));
264
281
  registry.clear();
265
282
  for (const result of results)
@@ -16,20 +16,20 @@ import {
16
16
  pythonCommands,
17
17
  pythonDocumentPackages,
18
18
  pythonHostFailureCode
19
- } from "../../chunks/chunk-JTLSUJ7V.js";
20
- import "../../chunks/chunk-KCVSVD65.js";
21
- import "../../chunks/chunk-JJSTTIEZ.js";
22
- import "../../chunks/chunk-46UISJCK.js";
23
- import "../../chunks/chunk-VYZTG3GV.js";
24
- import "../../chunks/chunk-PYVEAFJM.js";
25
- import "../../chunks/chunk-LQHGH25W.js";
19
+ } from "../../chunks/chunk-VQDD3G76.js";
20
+ import "../../chunks/chunk-I5HZ4FGE.js";
21
+ import "../../chunks/chunk-ICFDYV64.js";
22
+ import "../../chunks/chunk-VTH3MLDU.js";
23
+ import "../../chunks/chunk-NZQXYWA3.js";
24
+ import "../../chunks/chunk-74GHTNJA.js";
25
+ import "../../chunks/chunk-7R5BDCG7.js";
26
26
  import {
27
27
  PythonFailure,
28
28
  inspectPythonCapabilities
29
- } from "../../chunks/chunk-63FXVDGF.js";
30
- import "../../chunks/chunk-KV7PKOHV.js";
31
- import "../../chunks/chunk-NLAW7KDI.js";
32
- import "../../chunks/chunk-YG5WAHK7.js";
29
+ } from "../../chunks/chunk-LVOBFF4D.js";
30
+ import "../../chunks/chunk-IWDICZVK.js";
31
+ import "../../chunks/chunk-E7OYNDGL.js";
32
+ import "../../chunks/chunk-B7TAL7S5.js";
33
33
  export {
34
34
  PythonFailure,
35
35
  PythonPackageConflictError,
@@ -18,6 +18,7 @@ export declare class PythonPackageConflictError extends Error {
18
18
  export declare function createPythonPackageManifestStore(options?: {
19
19
  readonly maxBytes?: number;
20
20
  readonly maxEntries?: number;
21
+ readonly maxScopeLength?: number;
21
22
  }): PythonPackageManifestStore & {
22
23
  dispose(): void;
23
24
  };
@@ -9,14 +9,15 @@ export class PythonPackageConflictError extends Error {
9
9
  export function createPythonPackageManifestStore(options = {}) {
10
10
  const maxBytes = options.maxBytes ?? Infinity;
11
11
  const maxEntries = options.maxEntries ?? Infinity;
12
- for (const [name, value] of Object.entries({ maxBytes, maxEntries })) {
12
+ const maxScopeLength = options.maxScopeLength ?? Infinity;
13
+ for (const [name, value] of Object.entries({ maxBytes, maxEntries, maxScopeLength })) {
13
14
  if (value !== Infinity && (!Number.isSafeInteger(value) || value < 1)) {
14
15
  throw new RangeError(`Python manifest ${name} must be a positive safe integer or Infinity`);
15
16
  }
16
17
  }
17
18
  const manifests = new Map();
18
19
  let retainedBytes = 0;
19
- let revision = 0;
20
+ let revision = 0n;
20
21
  let disposed = false;
21
22
  const check = (scope, signal) => {
22
23
  signal.throwIfAborted();
@@ -24,6 +25,8 @@ export function createPythonPackageManifestStore(options = {}) {
24
25
  throw new Error('Python manifest store is disposed');
25
26
  if (typeof scope !== 'string' || !scope)
26
27
  throw new TypeError('Invalid Python manifest scope');
28
+ if (scope.length > maxScopeLength)
29
+ throw new RangeError('Python manifest scope budget exhausted');
27
30
  };
28
31
  return {
29
32
  async get(scope, { signal }) {
@@ -39,7 +42,7 @@ export function createPythonPackageManifestStore(options = {}) {
39
42
  if (!(bytes instanceof Uint8Array))
40
43
  throw new TypeError('Python manifest must contain bytes');
41
44
  const nextBytes = retainedBytes - (current?.bytes.length ?? 0) + bytes.length;
42
- if (nextBytes > maxBytes || (!current && manifests.size >= maxEntries) || revision >= Number.MAX_SAFE_INTEGER) {
45
+ if (nextBytes > maxBytes || (!current && manifests.size >= maxEntries)) {
43
46
  throw new RangeError('Python manifest store budget exhausted');
44
47
  }
45
48
  manifests.set(scope, { revision: String(++revision), bytes: Uint8Array.from(bytes) });
@@ -5,6 +5,7 @@ export declare function pythonShellDispatchActive(scope: object | undefined): bo
5
5
  export declare function createPythonShellCapability(context: CommandContext, options?: {
6
6
  readonly maxInputBytes?: number;
7
7
  readonly maxOutputBytes?: number;
8
+ readonly maxBufferedOutputBytes?: number;
8
9
  readonly maxConcurrentCalls?: number;
9
10
  readonly maxStreamChunkBytes?: number;
10
11
  }): PythonHostCapability;
@@ -8,8 +8,9 @@ export function createPythonShellCapability(context, options = {}) {
8
8
  throw new TypeError('Python shell capability requires a parent shell invocation');
9
9
  const maxInputBytes = options.maxInputBytes ?? Infinity;
10
10
  const maxOutputBytes = options.maxOutputBytes ?? Infinity;
11
+ const maxBufferedOutputBytes = options.maxBufferedOutputBytes ?? Infinity;
11
12
  const maxConcurrentCalls = options.maxConcurrentCalls ?? Infinity;
12
- for (const limit of [maxInputBytes, maxOutputBytes, maxConcurrentCalls])
13
+ for (const limit of [maxInputBytes, maxOutputBytes, maxBufferedOutputBytes, maxConcurrentCalls])
13
14
  if (limit !== Infinity && (!Number.isSafeInteger(limit) || limit < 1))
14
15
  throw new RangeError('Invalid Python shell limit');
15
16
  const chunkBytes = options.maxStreamChunkBytes ?? 16384;
@@ -28,7 +29,7 @@ export function createPythonShellCapability(context, options = {}) {
28
29
  const requestedOutput = request.maxOutputBytes;
29
30
  if (requestedOutput !== undefined && (typeof requestedOutput !== 'number' || requestedOutput !== Infinity && (!Number.isSafeInteger(requestedOutput) || requestedOutput < 0)))
30
31
  throw new RangeError('Invalid Python shell output limit');
31
- const outputLimit = Math.min(maxOutputBytes, typeof requestedOutput === 'number' ? requestedOutput : maxOutputBytes);
32
+ const outputLimit = Math.min(maxOutputBytes, publish ? Infinity : maxBufferedOutputBytes, typeof requestedOutput === 'number' ? requestedOutput : Infinity);
32
33
  const timeoutMs = request.timeoutMs;
33
34
  if (timeoutMs !== undefined && (typeof timeoutMs !== 'number' || !Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 2147483647))
34
35
  throw new RangeError('Invalid Python shell timeout');
@@ -8,11 +8,11 @@ import {
8
8
  pythonRuntimeRelocation,
9
9
  pythonStatProjection,
10
10
  pythonTreeCleanup
11
- } from "../../chunks/chunk-63FXVDGF.js";
12
- import "../../chunks/chunk-KV7PKOHV.js";
11
+ } from "../../chunks/chunk-LVOBFF4D.js";
12
+ import "../../chunks/chunk-IWDICZVK.js";
13
13
  import {
14
14
  init_platform
15
- } from "../../chunks/chunk-YG5WAHK7.js";
15
+ } from "../../chunks/chunk-B7TAL7S5.js";
16
16
 
17
17
  // packages/safe-bash/src/commands/python/worker.ts
18
18
  init_platform();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RegexExecutionError
3
- } from "../../chunks/chunk-KHMGTPD6.js";
3
+ } from "../../chunks/chunk-46Z5E5EV.js";
4
4
  import {
5
5
  EreLedger,
6
6
  EreProfileLimitError,
@@ -9,13 +9,13 @@ import {
9
9
  EreUsageUnknownError,
10
10
  compileEre,
11
11
  matchEre
12
- } from "../../chunks/chunk-XB3B7KMM.js";
12
+ } from "../../chunks/chunk-6O77NL2S.js";
13
13
  import {
14
14
  RegexExecutor,
15
15
  RegexSession,
16
16
  createBoundedRegexProvider
17
- } from "../../chunks/chunk-6HZYFL3H.js";
18
- import "../../chunks/chunk-YG5WAHK7.js";
17
+ } from "../../chunks/chunk-NR3EM4LS.js";
18
+ import "../../chunks/chunk-B7TAL7S5.js";
19
19
  export {
20
20
  EreLedger,
21
21
  EreProfileLimitError,
@@ -210,13 +210,22 @@ export function createSafeJsCommands(options, dialect) {
210
210
  }
211
211
  },
212
212
  });
213
- const result = record(await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
214
- ...(parsed.nodeOptions?.length ? { nodeOptions: parsed.nodeOptions } : {}),
215
- budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings,
216
- ...(prepared.sourceLocation ? { sourceLocation: prepared.sourceLocation } : {}),
217
- ...(prepared.importSpecifiers ? { importSpecifiers: prepared.importSpecifiers } : {}) } : {}),
218
- sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
219
- })), "SafeJS run result");
213
+ let rawResult;
214
+ try {
215
+ rawResult = await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
216
+ ...(parsed.nodeOptions?.length ? { nodeOptions: parsed.nodeOptions } : {}),
217
+ budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings,
218
+ ...(prepared.sourceLocation ? { sourceLocation: prepared.sourceLocation } : {}),
219
+ ...(prepared.importSpecifiers ? { importSpecifiers: prepared.importSpecifiers } : {}) } : {}),
220
+ sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
221
+ }));
222
+ }
223
+ catch (error) {
224
+ if (error instanceof SafeJsCommandLimitError || statusField(error, "code") === "budgetExceeded" || signal.aborted)
225
+ throw error;
226
+ throw new GuestDiagnostic(errorInfo(error));
227
+ }
228
+ const result = record(rawResult, "SafeJS run result");
220
229
  signal.throwIfAborted();
221
230
  if (result.ok !== true && result.ok !== false)
222
231
  throw new TypeError("Invalid SafeJS run result.ok");
@@ -12,6 +12,7 @@ export interface StandardCommandsOptions {
12
12
  readonly regex?: RegexExecutionOptions;
13
13
  readonly regexExecutor?: BoundedRegexProvider;
14
14
  readonly maxDirectoryEntries?: number;
15
+ readonly maxRecursiveDirectoryDepth?: number;
15
16
  readonly maxTeeTargets?: number;
16
17
  readonly maxTailFollowHandles?: number;
17
18
  }
@@ -24,6 +24,7 @@ export function createStandardCommandsWithGrep(options, grep) {
24
24
  return { exitCode: 127 };
25
25
  }));
26
26
  if (options.maxDirectoryEntries === undefined &&
27
+ options.maxRecursiveDirectoryDepth === undefined &&
27
28
  options.maxTeeTargets === undefined &&
28
29
  options.maxTailFollowHandles === undefined &&
29
30
  options.predicateIdentity === undefined) {
@@ -45,7 +46,7 @@ export function createStandardCommandsWithGrep(options, grep) {
45
46
  builtInDirectContextExecutors.add(commands[i].execute);
46
47
  return commands;
47
48
  }
48
- commands.push(...basicCommands(), ...filesystemCommands(options.maxDirectoryEntries), ...streamCommands(options.maxTeeTargets, options.maxTailFollowHandles), ...textCommands(), ...grep, ...predicateCommands(options.predicateIdentity), ...executionCommands(execute, options.execution), ...findCommands(execute, options.maxDirectoryEntries));
49
+ commands.push(...basicCommands(), ...filesystemCommands(options.maxDirectoryEntries, options.maxRecursiveDirectoryDepth), ...streamCommands(options.maxTeeTargets, options.maxTailFollowHandles), ...textCommands(), ...grep, ...predicateCommands(options.predicateIdentity), ...executionCommands(execute, options.execution), ...findCommands(execute, options.maxDirectoryEntries));
49
50
  commands.push(cmpCommand(), fmtCommand(), shufCommand(), numfmtCommand());
50
51
  for (let i = 0; i < commands.length; i++)
51
52
  builtInDirectContextExecutors.add(commands[i].execute);
@@ -1,4 +1,3 @@
1
- import { encodeBytes, equalBytes } from "../byte-encoding.js";
2
1
  import { hasYieldCheckpoint } from "../contracts/yield.js";
3
2
  const SMALL_WC_COUNT_LINES = Array.from({ length: 129 }, (_, i) => `${i}\n`);
4
3
  const SINGLE_STDIN_OPERAND = ["-"];
@@ -17,9 +16,6 @@ function isSyncResolved(promise) {
17
16
  return Boolean(promise && typeof promise === "object" && promise[syncResolved]);
18
17
  }
19
18
  let sharedTrOutBuffer = new Uint8Array(64 * 1024);
20
- const cachedTrOutBuffer = new Uint8Array(32768);
21
- let lastTrInBuf;
22
- let lastTrMapping;
23
19
  let sharedTrOutInUse = false;
24
20
  const trConfigCache = new Map();
25
21
  let lastTrArg0;
@@ -1034,26 +1030,8 @@ export function streamCommands(maxTeeTargets = Infinity, maxTailFollowHandles =
1034
1030
  const useShared = chunk.length <= sharedTrOutBuffer.length;
1035
1031
  const buf = useShared ? sharedTrOutBuffer : new Uint8Array(chunk.length);
1036
1032
  if (!deleting && !squeezing) {
1037
- if (useShared &&
1038
- chunk.length >= 256 &&
1039
- lastTrInBuf !== undefined &&
1040
- chunk.length === lastTrInBuf.byteLength &&
1041
- mapping === lastTrMapping &&
1042
- equalBytes(lastTrInBuf, chunk)) {
1043
- const p = outputRange(context, cachedTrOutBuffer, chunk.length);
1044
- if (!isSyncResolved(p)) {
1045
- released = true;
1046
- return executeTrAfterPending(p, context, iter, deleting, squeezing, mapping, removed, squeezed, previous, true);
1047
- }
1048
- continue;
1049
- }
1050
1033
  for (let index = 0; index < chunk.length; index++)
1051
1034
  buf[index] = mapping[chunk[index]];
1052
- if (useShared && chunk.length >= 256 && chunk.length <= 32768) {
1053
- lastTrInBuf = encodeBytes(chunk);
1054
- lastTrMapping = mapping;
1055
- cachedTrOutBuffer.set(buf.subarray(0, chunk.length));
1056
- }
1057
1035
  const p = useShared ? outputRange(context, buf, chunk.length) : output(context, buf);
1058
1036
  if (!isSyncResolved(p)) {
1059
1037
  released = true;
@@ -1086,8 +1064,10 @@ export function streamCommands(maxTeeTargets = Infinity, maxTailFollowHandles =
1086
1064
  return rejectTrOutput(iter, err);
1087
1065
  }
1088
1066
  finally {
1089
- if (!released)
1067
+ if (!released) {
1068
+ sharedTrOutBuffer.fill(0);
1090
1069
  sharedTrOutInUse = false;
1070
+ }
1091
1071
  }
1092
1072
  }
1093
1073
  return executeTrAsync(context, iter, deleting, squeezing, mapping, removed, squeezed, previous, false);
@@ -1149,8 +1129,10 @@ async function executeTrAsync(context, iter, deleting, squeezing, mapping, remov
1149
1129
  throw error;
1150
1130
  }
1151
1131
  finally {
1152
- if (ownsShared)
1132
+ if (ownsShared) {
1133
+ sharedTrOutBuffer.fill(0);
1153
1134
  sharedTrOutInUse = false;
1135
+ }
1154
1136
  if (!done) {
1155
1137
  if (typeof iter.syncReturn === "function")
1156
1138
  iter.syncReturn();