@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.
- package/README.md +16 -5
- package/dist/image-ast/index.browser.js +119 -75
- package/dist/image-ast/index.js +119 -75
- package/dist/pdf-ast/index.js +4 -3
- package/dist/safe-bash/chunks/{chunk-LUOFIVNI.js → chunk-3NDIFSNM.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-4SEW2Q6H.js → chunk-3R3AANOR.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HHW7MGS2.js → chunk-45PK3NWI.js} +4 -4
- package/dist/safe-bash/chunks/{chunk-KHMGTPD6.js → chunk-46Z5E5EV.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-XB3B7KMM.js → chunk-6O77NL2S.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-T3JTVIEP.js → chunk-6PAVEFT3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-PYVEAFJM.js → chunk-74GHTNJA.js} +3 -2
- package/dist/safe-bash/chunks/{chunk-LQHGH25W.js → chunk-7R5BDCG7.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-RMWLWH7Q.js → chunk-7VNF5BFF.js} +300 -737
- package/dist/safe-bash/chunks/{chunk-QVSRRNZT.js → chunk-A7XEHALN.js} +4 -4
- package/dist/safe-bash/chunks/{chunk-MHZ24KEI.js → chunk-AM5ESLPH.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3L3T6LYV.js → chunk-AUSNDQTJ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-YG5WAHK7.js → chunk-B7TAL7S5.js} +1 -3
- package/dist/safe-bash/chunks/{chunk-K7IQZE7D.js → chunk-C5OWC2TL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-F3RV2F72.js → chunk-CHYGPFVM.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-M4CFCXHN.js → chunk-CS4MNM6I.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-H6JW3E4F.js → chunk-CTVWDACF.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-BHJE5LPZ.js → chunk-D3ANYGMC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-NLAW7KDI.js → chunk-E7OYNDGL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-SOZK5JVX.js → chunk-FBUCWVTE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-RKKRJ54E.js → chunk-FNDNHAGE.js} +30 -23
- package/dist/safe-bash/chunks/{chunk-KCVSVD65.js → chunk-I5HZ4FGE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-JJSTTIEZ.js → chunk-ICFDYV64.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TYD7EVUJ.js → chunk-IVRQ4BXL.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-KV7PKOHV.js → chunk-IWDICZVK.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I4OAEOP6.js → chunk-J42RIHHJ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-K2VCOJ2B.js → chunk-K6VCD7IY.js} +7 -12
- package/dist/safe-bash/chunks/{chunk-63FXVDGF.js → chunk-LVOBFF4D.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-U5NUZPCC.js → chunk-MHMMRCYC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-6HZYFL3H.js → chunk-NR3EM4LS.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VYZTG3GV.js → chunk-NZQXYWA3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-TFGRKY43.js → chunk-OQRVVGR6.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-PPYM75Z3.js → chunk-OV6IHKO6.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-KW24TAIU.js → chunk-PQRAK7HU.js} +920 -432
- package/dist/safe-bash/chunks/{chunk-K4YMYFRJ.js → chunk-SZH7EJLD.js} +116 -697
- package/dist/safe-bash/chunks/{chunk-7YSRXFEG.js → chunk-TFIBK2GI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I7L3G3NX.js → chunk-UE5KZDEK.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-QU3BVQ53.js → chunk-UTBUUFDM.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-JTLSUJ7V.js → chunk-VQDD3G76.js} +42 -25
- package/dist/safe-bash/chunks/{chunk-46UISJCK.js → chunk-VTH3MLDU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-LLZCZ24K.js → chunk-XVOSKJE2.js} +1 -1
- package/dist/safe-bash/chunks/{csvkit-QGP3GAOB.js → csvkit-TACDU7FC.js} +3 -3
- package/dist/safe-bash/chunks/{ffmpeg-JTVH26MK.js → ffmpeg-WTC3TEFI.js} +2 -2
- package/dist/safe-bash/chunks/{gh-I7QX7N5C.js → gh-6WU6PXL4.js} +2 -2
- package/dist/safe-bash/chunks/{git-MA7NKYVP.js → git-EFZIGJW4.js} +2 -2
- package/dist/safe-bash/chunks/{imagemagick-Y4NPWX2Q.js → imagemagick-EIEYGWPF.js} +2 -2
- package/dist/safe-bash/chunks/{implementation-BWDKOVQJ.js → implementation-MLFHUQ5M.js} +2 -2
- package/dist/safe-bash/chunks/{mmdc-44PELHDG.js → mmdc-ROQJT5HQ.js} +2 -2
- package/dist/safe-bash/chunks/{pdfimages-635TRW4Q.js → pdfimages-DW7LWXFI.js} +2 -2
- package/dist/safe-bash/chunks/{pdfinfo-FSDAA2KY.js → pdfinfo-TIP6XLUQ.js} +2 -2
- package/dist/safe-bash/chunks/{pdftk-GQ5UH3VG.js → pdftk-DMG22ITZ.js} +2 -2
- package/dist/safe-bash/chunks/{pdftoppm-YTXQCAYT.js → pdftoppm-WNDYR72T.js} +2 -2
- package/dist/safe-bash/chunks/{pdftotext-CVA2G7FY.js → pdftotext-5IPZ4NI7.js} +2 -2
- package/dist/safe-bash/chunks/{qpdf-HZMIFG4A.js → qpdf-TTX2DIUA.js} +2 -2
- package/dist/safe-bash/chunks/{sips-E7UBDP33.js → sips-XYS46JPJ.js} +2 -2
- package/dist/safe-bash/chunks/{soffice-ELASUWUK.js → soffice-TU73E5KL.js} +2 -2
- package/dist/safe-bash/chunks/{wkhtmltopdf-EPO6YCMG.js → wkhtmltopdf-FSZ2CHGE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-QBGA56UH.js → chunk-2ELYGJDD.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-52PCQXD2.js → chunk-2NHI5F5S.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-HDKVO47G.js → chunk-2SQEIUGJ.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-5LSGEIZY.js → chunk-3HHCU5YU.js} +4 -3
- package/dist/safe-bash/command-chunks/{chunk-TF6OA2GK.js → chunk-3NV3HYT2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-2QHG43WJ.js → chunk-4BB2SWJ5.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IEXHHNOF.js → chunk-4J5CZ2DP.js} +2 -7
- package/dist/safe-bash/command-chunks/{chunk-WDHI3S6Y.js → chunk-4OOUQTQO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-YMONDXET.js → chunk-4ZQWGOZB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-L6DVEBW3.js → chunk-5BSTFCXG.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-Q3DII3Q7.js → chunk-5PWJG2UK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-JMPP4TCW.js → chunk-5UBXNSFZ.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-3NG75MOB.js → chunk-67GQA75T.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-L6SU4S26.js → chunk-6B7WQIKB.js} +0 -7
- package/dist/safe-bash/command-chunks/{chunk-V6MSPQLA.js → chunk-6BNTBWIK.js} +4 -39
- package/dist/safe-bash/command-chunks/{chunk-JN7WIP6S.js → chunk-6KJ3LPI2.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HLDTOR7M.js → chunk-6ZVI7LUY.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-X6NJC3IC.js → chunk-75OFBY5R.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-MRW5HD2D.js → chunk-7O3E4LPT.js} +4 -22
- package/dist/safe-bash/command-chunks/{chunk-TEVJJPTC.js → chunk-7U7EXOXX.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-6CYTRQ24.js → chunk-7VTKQUA5.js} +20 -17
- package/dist/safe-bash/command-chunks/{chunk-BZPAWTUL.js → chunk-AEF5BA3D.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-63R3FEZJ.js → chunk-AIV5BF5W.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AYUTO323.js → chunk-AKJG2XD3.js} +2 -18
- package/dist/safe-bash/command-chunks/{chunk-J34TZVMW.js → chunk-ALDC4XP4.js} +0 -5
- package/dist/safe-bash/command-chunks/{chunk-CKXV2CLD.js → chunk-ARBYOQUZ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-44AHAB5O.js → chunk-BDSMROQZ.js} +1 -4
- package/dist/safe-bash/command-chunks/{chunk-53P53XFM.js → chunk-BPE5INLI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-OT4LZMLB.js → chunk-BR73BIOW.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WB5SVIG7.js → chunk-C5YYCQHW.js} +498 -88
- package/dist/safe-bash/command-chunks/{chunk-EUSPTFAX.js → chunk-CAP7ZJSY.js} +7 -7
- package/dist/safe-bash/command-chunks/{chunk-DWFLVJC6.js → chunk-CCRHMAU5.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-GI4CJED2.js → chunk-CQTRW45K.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-N2F74VRO.js → chunk-CZ7EN3JG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-KKG4BAFZ.js → chunk-DIEPXUM4.js} +6 -0
- package/dist/safe-bash/command-chunks/{chunk-QJAFJP2G.js → chunk-DZCY63VJ.js} +12 -10
- package/dist/safe-bash/command-chunks/{chunk-QUENU6GM.js → chunk-E55UKBIE.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-HLGKIZ25.js → chunk-F6OYH562.js} +2 -0
- package/dist/safe-bash/command-chunks/{chunk-MC3VWLIZ.js → chunk-FDBUV4HJ.js} +28 -19
- package/dist/safe-bash/command-chunks/{chunk-7FKUC34S.js → chunk-FPVUD6TH.js} +6 -3
- package/dist/safe-bash/command-chunks/{chunk-E2LB7FRT.js → chunk-FXOA7RBK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QWIDNAAK.js → chunk-FZTK4MFI.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-K543PB3I.js → chunk-G66QUHIZ.js} +6 -35
- package/dist/safe-bash/command-chunks/{chunk-YJDV76GL.js → chunk-GFQZCKO6.js} +29 -19
- package/dist/safe-bash/command-chunks/{chunk-FKKB5X5V.js → chunk-GOB777HR.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IYPAQ7PH.js → chunk-GRBWW4SG.js} +6 -0
- package/dist/safe-bash/command-chunks/{chunk-PPNBNFAU.js → chunk-GYQ2HAKQ.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-PJJUYO3R.js → chunk-II77KPZN.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-VL67NWNS.js → chunk-JDYXY44P.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4QJOYXVB.js → chunk-JV7LBUTP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IKS2YXZQ.js → chunk-K67MWWWH.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-BKCNF5U3.js → chunk-KQLD3AED.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-UMDIOL3O.js → chunk-KXU3IRUO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QZF3SINC.js → chunk-LAOM65EE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HFII3QYO.js → chunk-LWS62ISU.js} +46 -32
- package/dist/safe-bash/command-chunks/{chunk-BZDDAPSV.js → chunk-LWSBAWLT.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-U6G67N23.js → chunk-MIXBO6U7.js} +18 -5
- package/dist/safe-bash/command-chunks/{chunk-JQ74HC37.js → chunk-MQFIPHIQ.js} +23 -50
- package/dist/safe-bash/command-chunks/{chunk-ZJBR5Q5I.js → chunk-MSFXC3OC.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-NI7MKJPN.js → chunk-MTQH74CF.js} +3 -55
- package/dist/safe-bash/command-chunks/chunk-MWUZZWXK.js +354 -0
- package/dist/safe-bash/command-chunks/{chunk-RVLO4DYT.js → chunk-N4PFUSRM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-D4OP2BR3.js → chunk-NKFYQSES.js} +1 -2
- package/dist/safe-bash/command-chunks/{chunk-NGWB2YBL.js → chunk-O4JQSB7O.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-7L24L4UO.js → chunk-OQU6UT6X.js} +2 -20
- package/dist/safe-bash/command-chunks/{chunk-TYCGMRLM.js → chunk-OYYV7ZAF.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-SVULUDOP.js → chunk-P2N33UMN.js} +20 -81
- package/dist/safe-bash/command-chunks/{chunk-Q7Q5GM5S.js → chunk-P5APDEFB.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-SAMH7SQE.js → chunk-PCEFOYA3.js} +237 -145
- package/dist/safe-bash/command-chunks/{chunk-3HXDA5PT.js → chunk-PMBFZXTK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-4Y3WVMK4.js → chunk-PV66YWHB.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-AXK3H4PX.js → chunk-QJ33BHI4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3LSOYLNV.js → chunk-QKFSRZGQ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-JZSNU2MY.js → chunk-QKJLP53H.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-LC2MFKT4.js → chunk-RMWQAAO5.js} +24 -25
- package/dist/safe-bash/command-chunks/{chunk-QDTBMSBE.js → chunk-RO62EWX6.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4C6QI5BQ.js → chunk-RZZI24ZE.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-PFAADCB5.js → chunk-SDNBCQ3X.js} +10 -24
- package/dist/safe-bash/command-chunks/{chunk-36O5OT7E.js → chunk-T35Y7YQD.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-6HMX4CQS.js → chunk-TGSNCQSR.js} +44 -16
- package/dist/safe-bash/command-chunks/{chunk-5T7CRJHW.js → chunk-TIOCQVUQ.js} +4 -7
- package/dist/safe-bash/command-chunks/{chunk-T5H5UJQ3.js → chunk-TNOA7FCQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-GN2TKLE7.js → chunk-TS65BJHG.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-7RGB363W.js → chunk-TSCGT46G.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-KBEURXFF.js → chunk-UN6WS55J.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-SX2X3IH4.js → chunk-V2V5OCL3.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ERYJLO6G.js → chunk-V7A7DRTU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-5SHGJ7NO.js → chunk-VA5ZHYYA.js} +73 -33
- package/dist/safe-bash/command-chunks/{chunk-XETLEHZP.js → chunk-VPR5LQYX.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-3DT2YOGW.js → chunk-VSRGNQCP.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-J5SN3PZ3.js → chunk-VXSLJH7G.js} +53 -3
- package/dist/safe-bash/command-chunks/{chunk-PXYOWWMV.js → chunk-W7RAD4EW.js} +4 -3
- package/dist/safe-bash/command-chunks/{chunk-YGC6OS5O.js → chunk-WECIOOQB.js} +5 -8
- package/dist/safe-bash/command-chunks/{chunk-HHP343KT.js → chunk-WTECBRU4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AO6Z5EQ7.js → chunk-WVE64WM2.js} +6 -5
- package/dist/safe-bash/command-chunks/{chunk-Z7RVSD5K.js → chunk-WVHONVZ4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QNIMV57G.js → chunk-XNLFHHOC.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XAFSZDY2.js → chunk-XS72HTMA.js} +11 -0
- package/dist/safe-bash/command-chunks/{chunk-KYSPGS33.js → chunk-YIQACGEW.js} +2 -0
- package/dist/safe-bash/command-chunks/{chunk-NAY27PXB.js → chunk-YOFC45RK.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-QI7LGHJJ.js → chunk-Z45N42QC.js} +21 -6
- package/dist/safe-bash/command-chunks/{chunk-67IQF5GC.js → chunk-ZYHTWNAE.js} +23 -9
- package/dist/safe-bash/command-chunks/{chunk-STC3LEWJ.js → chunk-ZYXH3B66.js} +5 -3
- package/dist/safe-bash/commands/bytes/compression/index.js +3 -2
- package/dist/safe-bash/commands/copy-preserve.d.ts +1 -0
- package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
- package/dist/safe-bash/commands/docx/index.browser.js +1 -1
- package/dist/safe-bash/commands/execution.js +19 -13
- package/dist/safe-bash/commands/factor/index.browser.js +2 -2
- package/dist/safe-bash/commands/filesystem.d.ts +1 -1
- package/dist/safe-bash/commands/filesystem.js +17 -13
- package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
- package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
- package/dist/safe-bash/commands/htmlq/index.d.ts +1 -1
- package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
- package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/index.browser.js +2 -2
- package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
- package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
- package/dist/safe-bash/commands/media/index.browser.js +1 -1
- package/dist/safe-bash/commands/network/curl.d.ts +1 -1
- package/dist/safe-bash/commands/network/curl.js +1 -3
- package/dist/safe-bash/commands/network/index.browser.js +4 -4
- package/dist/safe-bash/commands/network/platform-portable.d.ts +1 -5
- package/dist/safe-bash/commands/network/platform-portable.js +1 -26
- package/dist/safe-bash/commands/network/public.d.ts +2 -2
- package/dist/safe-bash/commands/network/public.js +2 -2
- package/dist/safe-bash/commands/network/transport.js +2 -2
- package/dist/safe-bash/commands/network/wget.d.ts +1 -1
- package/dist/safe-bash/commands/network/wget.js +1 -3
- package/dist/safe-bash/commands/node/filesystem.js +3 -2
- package/dist/safe-bash/commands/node/index.browser.js +8 -8
- package/dist/safe-bash/commands/node/types.js +1 -1
- package/dist/safe-bash/commands/op/index.browser.js +3 -3
- package/dist/safe-bash/commands/pr/index.browser.js +2 -2
- package/dist/safe-bash/commands/python/host-capabilities.js +31 -14
- package/dist/safe-bash/commands/python/index.browser.js +11 -11
- package/dist/safe-bash/commands/python/manifest.d.ts +1 -0
- package/dist/safe-bash/commands/python/manifest.js +6 -3
- package/dist/safe-bash/commands/python/shell-capability.d.ts +1 -0
- package/dist/safe-bash/commands/python/shell-capability.js +3 -2
- package/dist/safe-bash/commands/python/worker.browser.js +3 -3
- package/dist/safe-bash/commands/regex-execution/public.browser.js +4 -4
- package/dist/safe-bash/commands/safejs/runtime.js +16 -7
- package/dist/safe-bash/commands/standard.d.ts +1 -0
- package/dist/safe-bash/commands/standard.js +2 -1
- package/dist/safe-bash/commands/streams.js +6 -24
- package/dist/safe-bash/commands/text.js +268 -364
- package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
- package/dist/safe-bash/commands/xml/index.browser.js +2 -2
- package/dist/safe-bash/commands/yq/index.browser.js +2 -2
- package/dist/safe-bash/core.browser.js +1 -1
- package/dist/safe-bash/core.d.ts +6 -1
- package/dist/safe-bash/core.js +1 -1
- package/dist/safe-bash/full-core.browser.js +108 -104
- package/dist/safe-bash/jobs.browser.js +5 -5
- package/dist/safe-bash/opt-in/commands/dd/index.js +2 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/options.d.ts +1 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/options.js +2 -4
- package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +2 -1
- package/dist/safe-bash/optional-host.browser.js +11 -11
- package/dist/safe-bash/plugins/composition.d.ts +1 -0
- package/dist/safe-bash/plugins/composition.js +3 -8
- package/dist/safe-bash/plugins/index.browser.js +27 -27
- package/dist/safe-bash/registry-entry.browser.js +28 -28
- package/dist/safe-bash/shell/arrays/bindings.js +1 -1
- package/dist/safe-bash/shell/arrays/state.js +4 -0
- package/dist/safe-bash/shell/brace-expansion.js +1 -1
- package/dist/safe-bash/shell/dynamic-variables.d.ts +10 -0
- package/dist/safe-bash/shell/dynamic-variables.js +25 -0
- package/dist/safe-bash/shell/parser.js +8 -1
- package/dist/safe-bash/shell/runtime.d.ts +4 -4
- package/dist/safe-bash/shell/runtime.js +291 -741
- package/dist/safe-bash/shell/shell.js +2 -31
- package/dist/safe-bash/shell-entry.browser.js +25 -25
- package/dist/safe-bash/trap.browser.js +4 -4
- package/dist/safe-bash/yq-browser/index.js +1 -1
- package/dist/safe-bash-base-encoding-engine/base.js +2 -2
- package/dist/safe-bash-base-encoding-engine/shared.js +1 -1
- package/dist/safe-bash-byte-input-engine/index.d.ts +3 -2
- package/dist/safe-bash-byte-input-engine/index.js +4 -1
- package/dist/safe-bash-checksum-engine/index.js +13 -6
- package/dist/safe-bash-command-apply-patch/apply.d.ts +1 -1
- package/dist/safe-bash-command-apply-patch/apply.js +4 -3
- package/dist/safe-bash-command-apply-patch/index.js +3 -3
- package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
- package/dist/safe-bash-command-apply-patch/parser.js +1 -1
- package/dist/safe-bash-command-awk/awk-inspection.js +2 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
- package/dist/safe-bash-command-awk/awk-syntax.d.ts +1 -1
- package/dist/safe-bash-command-awk/awk-syntax.js +2 -2
- package/dist/safe-bash-command-awk/awk-values.js +1 -1
- package/dist/safe-bash-command-awk/awk.js +5 -5
- package/dist/safe-bash-command-awk/index.js +5 -5
- package/dist/safe-bash-command-bc/index.d.ts +2 -0
- package/dist/safe-bash-command-bc/index.js +123 -92
- package/dist/safe-bash-command-column/column.js +5 -5
- package/dist/safe-bash-command-column/display.d.ts +1 -1
- package/dist/safe-bash-command-column/display.js +1 -1
- package/dist/safe-bash-command-column/index.js +5 -5
- package/dist/safe-bash-command-column/internal.d.ts +0 -2
- package/dist/safe-bash-command-column/internal.js +1 -1
- package/dist/safe-bash-command-column/layout.js +4 -4
- package/dist/safe-bash-command-column/table.js +2 -2
- package/dist/safe-bash-command-comm/comm.js +1 -1
- package/dist/safe-bash-command-comm/index.js +1 -1
- package/dist/safe-bash-command-csvcut/index.d.ts +1 -0
- package/dist/safe-bash-command-csvcut/index.js +1 -0
- package/dist/safe-bash-command-csvgrep/index.d.ts +1 -0
- package/dist/safe-bash-command-csvgrep/index.js +2 -2
- package/dist/safe-bash-command-csvkit/index.js +9 -9
- package/dist/safe-bash-command-csvkit/sync-support.js +1 -1
- package/dist/safe-bash-command-curl/curl.js +1 -1
- package/dist/safe-bash-command-curl/index.js +1 -1
- package/dist/safe-bash-command-dd/index.js +2 -0
- package/dist/safe-bash-command-diff/diff.js +1 -1
- package/dist/safe-bash-command-diff/index.js +1 -1
- package/dist/safe-bash-command-exiftool/index.d.ts +1 -0
- package/dist/safe-bash-command-fd/index.js +9 -9
- package/dist/safe-bash-command-ffmpeg/index.js +31 -8
- package/dist/safe-bash-command-file/index.js +1 -1
- package/dist/safe-bash-command-file/shared.js +1 -1
- package/dist/safe-bash-command-find/find.js +1 -1
- package/dist/safe-bash-command-find/index.js +1 -1
- package/dist/safe-bash-command-gzip/index.js +3 -2
- package/dist/safe-bash-command-hexdump/command.js +4 -4
- package/dist/safe-bash-command-hexdump/custom.d.ts +24 -0
- package/dist/safe-bash-command-hexdump/index.js +4 -4
- package/dist/safe-bash-command-hexdump/internal.d.ts +2 -0
- package/dist/safe-bash-command-hexdump/internal.js +1 -1
- package/dist/safe-bash-command-hexdump/io.js +2 -2
- package/dist/safe-bash-command-hexdump/options.d.ts +3 -0
- package/dist/safe-bash-command-hexdump/options.js +2 -2
- package/dist/safe-bash-command-hostname/index.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/budget.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/entities.js +3 -3
- package/dist/safe-bash-command-html-to-markdown/index.js +6 -6
- package/dist/safe-bash-command-html-to-markdown/input.js +5 -5
- package/dist/safe-bash-command-html-to-markdown/parser.d.ts +1 -0
- package/dist/safe-bash-command-html-to-markdown/parser.js +4 -4
- package/dist/safe-bash-command-html-to-markdown/render.js +5 -5
- package/dist/safe-bash-command-html-to-markdown/text.js +2 -2
- package/dist/safe-bash-command-htmlq/index.d.ts +1 -0
- package/dist/safe-bash-command-htmlq/index.js +27 -9
- package/dist/safe-bash-command-iconv/codec.js +1 -1
- package/dist/safe-bash-command-iconv/command.js +2 -2
- package/dist/safe-bash-command-iconv/index.js +2 -2
- package/dist/safe-bash-command-imagemagick/index.js +24 -6
- package/dist/safe-bash-command-join/index.js +1 -1
- package/dist/safe-bash-command-join/join.js +1 -1
- package/dist/safe-bash-command-jq/index.js +1 -1
- package/dist/safe-bash-command-jq/jq.js +1 -1
- package/dist/safe-bash-command-less/index.js +43 -28
- package/dist/safe-bash-command-mmdc/index.d.ts +1 -0
- package/dist/safe-bash-command-numfmt/index.js +0 -11
- package/dist/safe-bash-command-od/index.js +101 -68
- package/dist/safe-bash-command-pandoc/command.js +1 -1
- package/dist/safe-bash-command-pandoc/index.js +1 -1
- package/dist/safe-bash-command-paste/index.js +1 -1
- package/dist/safe-bash-command-paste/paste.js +1 -1
- package/dist/safe-bash-command-pathchk/index.js +3 -13
- package/dist/safe-bash-command-pdfimages/index.js +27 -11
- package/dist/safe-bash-command-pdfinfo/index.js +19 -10
- package/dist/safe-bash-command-pdftk/index.js +3 -3
- package/dist/safe-bash-command-pdftoppm/index.js +26 -10
- package/dist/safe-bash-command-pdftotext/index.js +27 -13
- package/dist/safe-bash-command-qpdf/index.js +5 -5
- package/dist/safe-bash-command-sed/index.js +1 -1
- package/dist/safe-bash-command-sed/sed.js +1 -1
- package/dist/safe-bash-command-shuf/options.d.ts +1 -0
- package/dist/safe-bash-command-shuf/options.js +2 -4
- package/dist/safe-bash-command-shuf/shuf.js +2 -1
- package/dist/safe-bash-command-soffice/index.js +20 -16
- package/dist/safe-bash-command-split/index.js +3 -3
- package/dist/safe-bash-command-split/io.js +1 -1
- package/dist/safe-bash-command-split/outputs.js +2 -2
- package/dist/safe-bash-command-split/split.js +3 -3
- package/dist/safe-bash-command-sqlite3/btree.d.ts +1 -0
- package/dist/safe-bash-command-sqlite3/engine.d.ts +6 -0
- package/dist/safe-bash-command-sqlite3/index.js +284 -85
- package/dist/safe-bash-command-ssconvert/commands.js +9 -9
- package/dist/safe-bash-command-ssconvert/core.js +8 -8
- package/dist/safe-bash-command-ssconvert/formats/csv.js +9 -9
- package/dist/safe-bash-command-ssconvert/formats/ods.js +8 -8
- package/dist/safe-bash-command-ssconvert/formats/spreadsheetml.js +2 -2
- package/dist/safe-bash-command-ssconvert/formats/xls.js +9 -9
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +8 -8
- package/dist/safe-bash-command-ssconvert/index.js +20 -20
- package/dist/safe-bash-command-tar/extract.js +1 -1
- package/dist/safe-bash-command-tar/index.js +5 -4
- package/dist/safe-bash-command-tar/modes.js +2 -2
- package/dist/safe-bash-command-tree/arguments.js +3 -3
- package/dist/safe-bash-command-tree/charset.js +1 -1
- package/dist/safe-bash-command-tree/index.js +4 -4
- package/dist/safe-bash-command-tree/io.js +1 -1
- package/dist/safe-bash-command-tree/pattern.js +2 -2
- package/dist/safe-bash-command-tree/tree.js +4 -4
- package/dist/safe-bash-command-unrtf/index.js +14 -7
- package/dist/safe-bash-command-unzip/index.js +1 -1
- package/dist/safe-bash-command-unzip/unzip.js +1 -1
- package/dist/safe-bash-command-wget/index.js +1 -1
- package/dist/safe-bash-command-wget/wget.js +1 -1
- package/dist/safe-bash-command-xan/argv.d.ts +1 -1
- package/dist/safe-bash-command-xan/argv.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +5 -3
- package/dist/safe-bash-command-xan/csv.d.ts +1 -1
- package/dist/safe-bash-command-xan/csv.js +1 -1
- package/dist/safe-bash-command-xan/index.js +7 -7
- package/dist/safe-bash-command-xan/io.js +3 -3
- package/dist/safe-bash-command-xmllint/index.js +1 -1
- package/dist/safe-bash-command-xxd/index.js +105 -91
- package/dist/safe-bash-command-xz/command.d.ts +2 -0
- package/dist/safe-bash-command-xz/index.d.ts +1 -1
- package/dist/safe-bash-command-xz/index.js +8 -0
- package/dist/safe-bash-command-yq/query.js +1 -1
- package/dist/safe-bash-command-zip/index.js +1 -1
- package/dist/safe-bash-command-zip/zip.js +1 -1
- package/dist/safe-bash-contracts/escaping.js +3 -3
- package/dist/safe-bash-contracts/filesystem-output.js +2 -2
- package/dist/safe-bash-contracts/index.d.ts +1 -0
- package/dist/safe-bash-contracts/index.js +7 -3
- package/dist/safe-bash-contracts/io.d.ts +4 -1
- package/dist/safe-bash-contracts/io.js +3 -1
- package/dist/safe-bash-contracts/managed-abort.d.ts +10 -0
- package/dist/safe-bash-contracts/output.js +2 -2
- package/dist/safe-bash-diff-engine/index.js +1 -1
- package/dist/safe-bash-diff-engine/shared.d.ts +3 -2
- package/dist/safe-bash-diff-engine/shared.js +1 -1
- package/dist/safe-bash-io-engine/commands/archive/internal.js +5 -23
- package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +33 -44
- package/dist/safe-bash-io-engine/internal.js +1 -1
- package/dist/safe-bash-io-engine/shell/pattern.js +1 -1
- package/dist/safe-bash-io-engine/shell/string-operations.js +1 -1
- package/dist/safe-bash-mcp/index.browser.d.ts +155 -35
- package/dist/safe-bash-mcp/index.browser.js +416 -0
- package/dist/safe-bash-mcp/index.d.ts +54 -2
- package/dist/safe-bash-mcp/index.js +283 -89
- package/dist/safe-bash-network-engine/aggregate.js +2 -2
- package/dist/safe-bash-network-engine/args.js +4 -4
- package/dist/safe-bash-network-engine/authorizer.js +1 -1
- package/dist/safe-bash-network-engine/body.js +6 -6
- package/dist/safe-bash-network-engine/decode.d.ts +1 -1
- package/dist/safe-bash-network-engine/decode.js +3 -4
- package/dist/safe-bash-network-engine/fetch-transport.js +3 -3
- package/dist/safe-bash-network-engine/form-content-type.js +2 -2
- package/dist/safe-bash-network-engine/form-headers.js +2 -2
- package/dist/safe-bash-network-engine/glob.js +1 -1
- package/dist/safe-bash-network-engine/index.js +4 -4
- package/dist/safe-bash-network-engine/input.js +6 -6
- package/dist/safe-bash-network-engine/output.js +2 -2
- package/dist/safe-bash-network-engine/platform-portable.js +3 -3
- package/dist/safe-bash-network-engine/shared.js +2 -2
- package/dist/safe-bash-network-engine/types.d.ts +7 -2
- package/dist/safe-bash-network-engine/types.js +1 -1
- package/dist/safe-bash-network-engine/url.js +2 -2
- package/dist/safe-bash-query-engine/capture.js +3 -3
- package/dist/safe-bash-query-engine/delpaths.js +3 -3
- package/dist/safe-bash-query-engine/formats.js +2 -2
- package/dist/safe-bash-query-engine/index.js +11 -11
- package/dist/safe-bash-query-engine/indices.js +3 -3
- package/dist/safe-bash-query-engine/input.js +1 -1
- package/dist/safe-bash-query-engine/interpreter.js +9 -9
- package/dist/safe-bash-query-engine/parser.js +1 -1
- package/dist/safe-bash-query-engine/query-core.js +11 -11
- package/dist/safe-bash-query-engine/regex.js +4 -4
- package/dist/safe-bash-query-engine/splits.js +5 -5
- package/dist/safe-bash-query-engine/values.js +2 -2
- package/dist/safe-bash-regex-engine/ere/matcher.js +102 -30
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +55 -67
- package/dist/safe-bash-regex-engine/execution/portable.d.ts +0 -1
- package/dist/safe-bash-regex-engine/execution/portable.js +6 -10
- package/dist/safe-bash-regex-engine/execution/protocol.d.ts +0 -5
- package/dist/safe-bash-regex-engine/execution/protocol.js +1 -3
- package/dist/safe-bash-regex-engine/index.js +6 -4
- package/dist/safe-bash-regex-engine/text/budget.d.ts +1 -0
- package/dist/safe-bash-regex-engine/text/budget.js +1 -1
- package/dist/safe-bash-regex-engine/text/regex.d.ts +14 -0
- package/dist/safe-bash-regex-engine/text/regex.js +6 -4
- package/dist/safe-bash-regex-engine/text/replacement-buffer.js +2 -2
- package/dist/safe-bash-regex-engine/text/rust-syntax.js +2 -2
- package/dist/safe-bash-search-engine/grep.js +189 -227
- package/dist/safe-bash-table-text-engine/table-text/internal.d.ts +7 -5
- package/dist/safe-bash-table-text-engine/table-text/internal.js +39 -21
- package/dist/safe-playwright-cloudflare/browser-trace-budget.js +6 -2
- package/dist/spreadsheet-engine/codecs/odf-hyperlinks.js +8 -2
- package/dist/spreadsheet-engine/formulas/functions/captured-bessel-phase.js +2 -2
- package/dist/spreadsheet-engine/formulas/label-references.js +54 -33
- package/dist/spreadsheet-engine/formulas/parser.js +3 -1
- package/dist/spreadsheet-engine/formulas/rewriting.js +13 -3
- package/dist/spreadsheet-format-xls/biff-data-tables.js +4 -6
- package/dist/spreadsheet-format-xls/biff-formulas.js +3 -0
- package/dist/spreadsheet-format-xls/biff-label-ranges.js +9 -6
- package/dist/spreadsheet-format-xls/biff.js +1 -1
- package/dist/xlsx-ast/xlsx.js +8 -5
- package/package.json +9 -8
- package/dist/safe-bash/command-chunks/chunk-KAGBORIC.js +0 -88
- /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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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 (
|
|
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-
|
|
20
|
-
import "../../chunks/chunk-
|
|
21
|
-
import "../../chunks/chunk-
|
|
22
|
-
import "../../chunks/chunk-
|
|
23
|
-
import "../../chunks/chunk-
|
|
24
|
-
import "../../chunks/chunk-
|
|
25
|
-
import "../../chunks/chunk-
|
|
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-
|
|
30
|
-
import "../../chunks/chunk-
|
|
31
|
-
import "../../chunks/chunk-
|
|
32
|
-
import "../../chunks/chunk-
|
|
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
|
-
|
|
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 =
|
|
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)
|
|
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 :
|
|
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-
|
|
12
|
-
import "../../chunks/chunk-
|
|
11
|
+
} from "../../chunks/chunk-LVOBFF4D.js";
|
|
12
|
+
import "../../chunks/chunk-IWDICZVK.js";
|
|
13
13
|
import {
|
|
14
14
|
init_platform
|
|
15
|
-
} from "../../chunks/chunk-
|
|
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-
|
|
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-
|
|
12
|
+
} from "../../chunks/chunk-6O77NL2S.js";
|
|
13
13
|
import {
|
|
14
14
|
RegexExecutor,
|
|
15
15
|
RegexSession,
|
|
16
16
|
createBoundedRegexProvider
|
|
17
|
-
} from "../../chunks/chunk-
|
|
18
|
-
import "../../chunks/chunk-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
...(
|
|
217
|
-
...(prepared
|
|
218
|
-
|
|
219
|
-
|
|
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();
|