@poe-platform/safe-bash 0.1.802 → 0.1.804
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 +60 -33
- package/dist/image-ast/ast.d.ts +1 -0
- package/dist/image-ast/browser/ast.d.ts +1 -0
- package/dist/image-ast/browser/codecs/jpeg.d.ts +2 -2
- package/dist/image-ast/codecs/jpeg.d.ts +2 -2
- package/dist/image-ast/index.browser.js +692 -8355
- package/dist/image-ast/index.js +692 -8355
- package/dist/mp4-ast/codecs.d.ts +7 -2
- package/dist/safe-bash/chunks/{chunk-CHYGPFVM.js → chunk-22SX3F2R.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-FBUCWVTE.js → chunk-2IVBJTBD.js} +1 -1
- package/dist/safe-bash/chunks/chunk-2POETUMB.js +190 -0
- package/dist/safe-bash/chunks/{chunk-XVOSKJE2.js → chunk-47D7WBJK.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VKNVHEX3.js → chunk-4ESI236Y.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-74GHTNJA.js → chunk-4KTMKD5W.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-55YJASTN.js → chunk-4T53AERN.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-DQP3VHSB.js → chunk-5XIFJVOO.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-NZQXYWA3.js → chunk-62BOHHJT.js} +1 -2
- package/dist/safe-bash/chunks/{chunk-HZAMGT5I.js → chunk-67WIFM3N.js} +17 -6
- package/dist/safe-bash/chunks/{chunk-4D4N7IU2.js → chunk-6LNFRPW5.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-6O77NL2S.js → chunk-6SMICPI3.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-4BSJLKNM.js → chunk-7O76UFQD.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-44ALJ4QG.js → chunk-AW5KIT6V.js} +3549 -84
- package/dist/safe-bash/chunks/{chunk-RSTHLAF3.js → chunk-B2Z73HTZ.js} +52 -28
- package/dist/safe-bash/chunks/chunk-B3ZMOJVM.js +319 -0
- package/dist/safe-bash/chunks/{chunk-7ZBU7KYV.js → chunk-CFAWS3O4.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-I5HZ4FGE.js → chunk-CL2FCTTO.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-KDNSPLII.js → chunk-CTXNARJH.js} +2 -1
- package/dist/safe-bash/chunks/{chunk-TFIBK2GI.js → chunk-D5Q7NFWI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-OQRVVGR6.js → chunk-DSOOVZ6Q.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-VTH3MLDU.js → chunk-DUTAG6ZD.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-XAQMU6OY.js → chunk-EE5YGFIZ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-FZE4HW6G.js → chunk-EJOYT2ME.js} +1 -1
- package/dist/safe-bash/chunks/chunk-FAAIR6EJ.js +887 -0
- package/dist/safe-bash/chunks/{chunk-OV6IHKO6.js → chunk-FOB2FZR4.js} +2 -2
- package/dist/safe-bash/chunks/chunk-G6V4RRSQ.js +14 -0
- package/dist/safe-bash/chunks/{chunk-UTBUUFDM.js → chunk-GGQAGQXQ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-K6VCD7IY.js → chunk-HIIYIJ5G.js} +2 -4
- package/dist/safe-bash/chunks/chunk-IOHH2GTI.js +56 -0
- package/dist/safe-bash/chunks/{chunk-CTVWDACF.js → chunk-IQW34XQT.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-HZ7BWKQ3.js → chunk-IS572AAT.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-AUSNDQTJ.js → chunk-JPSUHHOA.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-ZVD5IS4V.js → chunk-KBZ4UB2O.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-AM5ESLPH.js → chunk-KU5CVWKA.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-NQCM3TYR.js → chunk-LPOVNKNB.js} +225 -176
- package/dist/safe-bash/chunks/{chunk-46Z5E5EV.js → chunk-MBOC3LZ4.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-6PAVEFT3.js → chunk-N4BQFD3P.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-CS4MNM6I.js → chunk-NGKCVNWS.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-7R5BDCG7.js → chunk-OHML2BEU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-C5OWC2TL.js → chunk-OQ3AGYCZ.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-B7TAL7S5.js → chunk-PTAEWLSE.js} +0 -2
- package/dist/safe-bash/chunks/{chunk-LVOBFF4D.js → chunk-Q4FNLOTI.js} +1 -1
- package/dist/safe-bash/chunks/chunk-Q5XO3NAS.js +1036 -0
- package/dist/safe-bash/chunks/{chunk-GEG3BWGE.js → chunk-RHFRJIWQ.js} +1 -1
- package/dist/safe-bash/chunks/chunk-RUR6J33T.js +11 -0
- package/dist/safe-bash/chunks/{chunk-WDLGKIHD.js → chunk-S4RFUUXO.js} +841 -26
- package/dist/safe-bash/chunks/{chunk-RRR7AQ24.js → chunk-SD2ISU5L.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3NDIFSNM.js → chunk-SUJ3NTMH.js} +3 -3
- package/dist/safe-bash/chunks/{chunk-R3NAKOED.js → chunk-SZRUU5HS.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-PH63PLPZ.js → chunk-TC3F4UFF.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-3R3AANOR.js → chunk-TCKYOLUE.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-D3ANYGMC.js → chunk-UV4X32QU.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-E7OYNDGL.js → chunk-V7QT2RWC.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-SHEMU2Z7.js → chunk-W2IYOVHK.js} +839 -1211
- package/dist/safe-bash/chunks/{chunk-3HQU4OJO.js → chunk-XNGVOSGI.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-J42RIHHJ.js → chunk-XQWCQSRN.js} +1 -1
- package/dist/safe-bash/chunks/{chunk-BJA5XNP6.js → chunk-Y7FW6GLT.js} +6 -6
- package/dist/safe-bash/chunks/{chunk-QGUV42T5.js → chunk-YL3GBUG4.js} +1 -1
- package/dist/safe-bash/chunks/chunk-YOXUCJER.js +389 -0
- package/dist/safe-bash/chunks/{chunk-HBCN24ZA.js → chunk-Z2AAYYJN.js} +2 -2
- package/dist/safe-bash/chunks/chunk-ZKYKJCZZ.js +30 -0
- package/dist/safe-bash/chunks/core-IE3AFIDX.js +85806 -0
- package/dist/safe-bash/chunks/{ffmpeg-WTC3TEFI.js → ffmpeg-YANDK6HU.js} +2 -2
- package/dist/safe-bash/chunks/{gh-6WU6PXL4.js → gh-4MBJ2S5V.js} +2 -2
- package/dist/safe-bash/chunks/{git-EFZIGJW4.js → git-2QONJNRQ.js} +2 -2
- package/dist/safe-bash/chunks/{imagemagick-EIEYGWPF.js → imagemagick-JLEHGYSN.js} +2 -2
- package/dist/safe-bash/chunks/{mmdc-ROQJT5HQ.js → mmdc-6LD7A6ND.js} +2 -2
- package/dist/safe-bash/chunks/{pdfimages-DW7LWXFI.js → pdfimages-RSHL7LOP.js} +2 -2
- package/dist/safe-bash/chunks/{pdfinfo-TIP6XLUQ.js → pdfinfo-L3SGWPNG.js} +2 -2
- package/dist/safe-bash/chunks/{pdftk-DMG22ITZ.js → pdftk-LFBJNU5A.js} +2 -2
- package/dist/safe-bash/chunks/{pdftoppm-WNDYR72T.js → pdftoppm-NXXFUIHG.js} +2 -2
- package/dist/safe-bash/chunks/{pdftotext-5IPZ4NI7.js → pdftotext-4IHNWT6F.js} +2 -2
- package/dist/safe-bash/chunks/{qpdf-TTX2DIUA.js → qpdf-ZEIREV63.js} +2 -2
- package/dist/safe-bash/chunks/read-builtin-A4QKAT45.js +9 -0
- package/dist/safe-bash/chunks/{sips-XYS46JPJ.js → sips-D5YBG2V3.js} +2 -2
- package/dist/safe-bash/chunks/{soffice-TU73E5KL.js → soffice-RAJU3JUT.js} +2 -2
- package/dist/safe-bash/chunks/source-files-3XWRRHFA.js +7 -0
- package/dist/safe-bash/chunks/{wkhtmltopdf-FSZ2CHGE.js → wkhtmltopdf-7UE4FORZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-7KWZXKY6.js → chunk-26RTBV2I.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-AQJ2ROJO.js → chunk-2WYNMZR2.js} +10 -8
- package/dist/safe-bash/command-chunks/{chunk-BDSMROQZ.js → chunk-36GFRF2N.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-GC5TJZOF.js → chunk-3VIA2IA7.js} +114 -31
- package/dist/safe-bash/command-chunks/{chunk-NKFYQSES.js → chunk-4CTI3ZTX.js} +1 -0
- package/dist/safe-bash/command-chunks/{chunk-WH627NJL.js → chunk-4MYP2FX4.js} +2 -1
- package/dist/safe-bash/command-chunks/chunk-4R5ADJM5.js +178 -0
- package/dist/safe-bash/command-chunks/{chunk-P2N33UMN.js → chunk-5MIKM54M.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DB453IE6.js → chunk-6FZQUOSJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-WPYIOKE3.js → chunk-6GKYHPJG.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-7K6JYKPJ.js → chunk-6M2ELGEN.js} +17 -15
- package/dist/safe-bash/command-chunks/{chunk-PXEIT2O4.js → chunk-6UR7V3ET.js} +8 -1
- package/dist/safe-bash/command-chunks/{chunk-6KJ3LPI2.js → chunk-6XBS5B46.js} +26 -3
- package/dist/safe-bash/command-chunks/{chunk-5PWJG2UK.js → chunk-6YXLZX7L.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-EK6YNAXT.js → chunk-753YOR54.js} +31 -5
- package/dist/safe-bash/command-chunks/{chunk-RMWQAAO5.js → chunk-7IR4NRNE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-FZTK4MFI.js → chunk-7NM73SVK.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-NXEQ3ESQ.js → chunk-7QD5YY4F.js} +6 -11
- package/dist/safe-bash/command-chunks/{chunk-EMPU65ZK.js → chunk-A5LBSJGH.js} +1 -0
- package/dist/safe-bash/command-chunks/chunk-A7MU7762.js +200 -0
- package/dist/safe-bash/command-chunks/{chunk-ORYGZYKW.js → chunk-ARZMP2L2.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-OQKC5ZU2.js → chunk-BAKFZ477.js} +62 -20
- package/dist/safe-bash/command-chunks/{chunk-QRRYN2KO.js → chunk-BC7BK6R6.js} +0 -2424
- package/dist/safe-bash/command-chunks/{chunk-F4TEEZTL.js → chunk-BOEOJS2Q.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XS72HTMA.js → chunk-BWGGLYEB.js} +5 -22
- package/dist/safe-bash/command-chunks/{chunk-PMBFZXTK.js → chunk-C5ZZKP7V.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-LHIOAFWW.js → chunk-C7SEB6WU.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XPT2UGBF.js → chunk-CHJKFRT7.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TIOCQVUQ.js → chunk-CON26Q2O.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-E55UKBIE.js → chunk-DBAT3IK2.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-Z45N42QC.js → chunk-DPAYAVMS.js} +15 -1
- package/dist/safe-bash/command-chunks/chunk-DS3NXVUM.js +368 -0
- package/dist/safe-bash/command-chunks/{chunk-5ZMZ573Q.js → chunk-DSJ3VRL3.js} +16 -4
- package/dist/safe-bash/command-chunks/{chunk-K2GDEMEU.js → chunk-EFRCFWVR.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DZCY63VJ.js → chunk-EV6HIJ5H.js} +6 -5
- package/dist/safe-bash/command-chunks/{chunk-JDYXY44P.js → chunk-FJURV46Y.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-TZZ4WUKH.js → chunk-FZAWGKSE.js} +6 -4
- package/dist/safe-bash/command-chunks/{chunk-YHFXOX6U.js → chunk-GOCFQ6XV.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-YOFC45RK.js → chunk-HH5O7DJI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3HHCU5YU.js → chunk-HK7F5SDC.js} +13 -0
- package/dist/safe-bash/command-chunks/{chunk-JNZ3CVAE.js → chunk-HQBXIZC7.js} +8 -3
- package/dist/safe-bash/command-chunks/{chunk-2JRBIDAD.js → chunk-I63DBZXZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-WNE7FPVR.js → chunk-I64TLTIW.js} +24 -16
- package/dist/safe-bash/command-chunks/{chunk-QKFSRZGQ.js → chunk-ICANWOXH.js} +7 -31
- package/dist/safe-bash/command-chunks/{chunk-SQRQW3CT.js → chunk-IJ6LGLXM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-5E4WAO4O.js → chunk-JD5QNRNO.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-KJIMDLBB.js → chunk-JNANXVJV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-TGSNCQSR.js → chunk-JT4RYCA6.js} +1771 -1663
- package/dist/safe-bash/command-chunks/{chunk-II77KPZN.js → chunk-JWW6FYBN.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-ZYXH3B66.js → chunk-LCJWKTCJ.js} +250 -203
- package/dist/safe-bash/command-chunks/{chunk-I237SNW5.js → chunk-LFJJQQND.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-LU4HBPP2.js +97 -0
- package/dist/safe-bash/command-chunks/{chunk-XJXU3VVH.js → chunk-LWOE65OE.js} +20 -5
- package/dist/safe-bash/command-chunks/{chunk-GMIHJYDG.js → chunk-M32HFSX7.js} +22 -6
- package/dist/safe-bash/command-chunks/{chunk-YG4EPFWC.js → chunk-M3NINRDU.js} +2880 -172
- package/dist/safe-bash/command-chunks/chunk-MQREDAL6.js +164 -0
- package/dist/safe-bash/command-chunks/{chunk-LWS62ISU.js → chunk-N6DIASO2.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-NGL7YK7O.js +188 -0
- package/dist/safe-bash/command-chunks/{chunk-PEF7K3UQ.js → chunk-NJYHWKIL.js} +40 -10
- package/dist/safe-bash/command-chunks/{chunk-VXSLJH7G.js → chunk-OJQRSCBP.js} +27 -7
- package/dist/safe-bash/command-chunks/{chunk-OQU6UT6X.js → chunk-OV3XREFN.js} +11 -0
- package/dist/safe-bash/command-chunks/{chunk-MIXBO6U7.js → chunk-PTZLF456.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-ALDC4XP4.js → chunk-QILLRNES.js} +34 -10
- package/dist/safe-bash/command-chunks/{chunk-L22T3H7L.js → chunk-QR25JLKO.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-7U7EXOXX.js → chunk-R7C4MGZ5.js} +17 -223
- package/dist/safe-bash/command-chunks/{chunk-LCF3OB7P.js → chunk-RBME3JEH.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-2KG2QLJE.js → chunk-RFWGYT7G.js} +3 -0
- package/dist/safe-bash/command-chunks/{chunk-5TBUOBDE.js → chunk-RZMVRT26.js} +27 -13
- package/dist/safe-bash/command-chunks/chunk-TFR6B3WB.js +44 -0
- package/dist/safe-bash/command-chunks/chunk-TOH3OF3O.js +179 -0
- package/dist/safe-bash/command-chunks/{chunk-VGG2DL5Q.js → chunk-TRR4MYWF.js} +4 -0
- package/dist/safe-bash/command-chunks/chunk-TT4DAFBT.js +13621 -0
- package/dist/safe-bash/command-chunks/{chunk-LWSBAWLT.js → chunk-TXI64OAG.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-TZRI7BJZ.js +496 -0
- package/dist/safe-bash/command-chunks/{chunk-QOKBZFFD.js → chunk-U3MMODA5.js} +2 -7
- package/dist/safe-bash/command-chunks/{chunk-ZYHTWNAE.js → chunk-UAW423ZL.js} +11 -11
- package/dist/safe-bash/command-chunks/{chunk-C5YYCQHW.js → chunk-UXEEUGOV.js} +222 -12
- package/dist/safe-bash/command-chunks/{chunk-GY3BWK7K.js → chunk-VOZPMJRX.js} +87 -80
- package/dist/safe-bash/command-chunks/{chunk-MQFIPHIQ.js → chunk-WPANOB4A.js} +38 -35
- package/dist/safe-bash/command-chunks/{chunk-Y2WBSJG6.js → chunk-X4QZQI5Q.js} +65 -64
- package/dist/safe-bash/command-chunks/{chunk-FPVUD6TH.js → chunk-XGI57GCN.js} +10 -8
- package/dist/safe-bash/command-chunks/{chunk-5UBXNSFZ.js → chunk-XUCU7QQT.js} +1281 -1278
- package/dist/safe-bash/command-chunks/chunk-Y22VXJBD.js +296 -0
- package/dist/safe-bash/command-chunks/{chunk-WVHONVZ4.js → chunk-YMFUUPDX.js} +5 -3
- package/dist/safe-bash/command-chunks/{chunk-IR2BY7EL.js → chunk-YYGIBXFZ.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-MSFXC3OC.js → chunk-Z4FO6OHE.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-6GWJUQAV.js → chunk-Z5ZZVDUD.js} +181 -133
- package/dist/safe-bash/command-chunks/{chunk-W5DNF4JH.js → chunk-ZHN3QDCI.js} +1 -1
- package/dist/safe-bash/commands/alias/index.d.ts +2 -0
- package/dist/safe-bash/commands/alias/index.js +2 -0
- package/dist/safe-bash/commands/apply-patch/index.browser.js +2 -3
- package/dist/safe-bash/commands/apply-patch/index.d.ts +0 -1
- package/dist/safe-bash/commands/apply-patch/index.js +0 -1
- package/dist/safe-bash/commands/archive/index.browser.js +2 -3
- package/dist/safe-bash/commands/archive/index.d.ts +0 -1
- package/dist/safe-bash/commands/archive/index.js +0 -1
- package/dist/safe-bash/commands/bytes/compression/index.js +54 -51
- package/dist/safe-bash/commands/bytes/index.js +2 -1
- package/dist/safe-bash/commands/chmod/index.browser.js +14 -0
- package/dist/safe-bash/commands/chmod/index.d.ts +2 -0
- package/dist/safe-bash/commands/chmod/index.js +2 -0
- package/dist/safe-bash/commands/column/index.browser.js +2 -3
- package/dist/safe-bash/commands/column/index.d.ts +0 -1
- package/dist/safe-bash/commands/column/index.js +0 -1
- package/dist/safe-bash/commands/copy-source.js +1 -0
- package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
- package/dist/safe-bash/commands/csvkit/index.browser.js +72 -0
- package/dist/safe-bash/commands/csvkit/index.d.ts +0 -5
- package/dist/safe-bash/commands/csvkit/index.js +0 -50
- package/dist/safe-bash/commands/docx/index.browser.js +5 -7
- package/dist/safe-bash/commands/du/index.browser.js +2 -3
- package/dist/safe-bash/commands/du/index.d.ts +0 -1
- package/dist/safe-bash/commands/du/index.js +0 -1
- package/dist/safe-bash/commands/expr/index.browser.js +2 -3
- package/dist/safe-bash/commands/expr/index.d.ts +0 -1
- package/dist/safe-bash/commands/expr/index.js +0 -1
- package/dist/safe-bash/commands/factor/index.browser.js +2 -2
- package/dist/safe-bash/commands/file/index.browser.js +2 -3
- package/dist/safe-bash/commands/file/index.d.ts +0 -1
- package/dist/safe-bash/commands/file/index.js +0 -1
- package/dist/safe-bash/commands/filesystem.js +1 -1
- package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
- package/dist/safe-bash/commands/grep-aliases/index.browser.js +3 -3
- package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
- package/dist/safe-bash/commands/html-to-markdown/index.browser.js +2 -3
- package/dist/safe-bash/commands/html-to-markdown/index.d.ts +0 -1
- package/dist/safe-bash/commands/html-to-markdown/index.js +0 -1
- package/dist/safe-bash/commands/htmlq/index.d.ts +1 -5
- package/dist/safe-bash/commands/htmlq/index.js +1 -143
- 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 +4 -16314
- package/dist/safe-bash/commands/media/index.d.ts +1 -5
- package/dist/safe-bash/commands/media/index.js +1 -3
- package/dist/safe-bash/commands/media/plugin.d.ts +1 -18
- package/dist/safe-bash/commands/media/plugin.js +1 -90
- package/dist/safe-bash/commands/media/remote.d.ts +1 -63
- package/dist/safe-bash/commands/media/remote.js +1 -405
- package/dist/safe-bash/commands/media/settings.d.ts +1 -4
- package/dist/safe-bash/commands/media/settings.js +1 -26
- package/dist/safe-bash/commands/metadata/chmod.d.ts +1 -7
- package/dist/safe-bash/commands/metadata/chmod.js +1 -204
- package/dist/safe-bash/commands/metadata/index.browser.js +3 -8
- package/dist/safe-bash/commands/metadata/index.d.ts +0 -1
- package/dist/safe-bash/commands/metadata/index.js +2 -2
- package/dist/safe-bash/commands/metadata/internal.d.ts +1 -30
- package/dist/safe-bash/commands/metadata/internal.js +1 -76
- package/dist/safe-bash/commands/metadata/mktemp.d.ts +1 -3
- package/dist/safe-bash/commands/metadata/mktemp.js +1 -202
- package/dist/safe-bash/commands/metadata/stat.d.ts +1 -7
- package/dist/safe-bash/commands/metadata/stat.js +1 -530
- package/dist/safe-bash/commands/mktemp/index.browser.js +13 -0
- package/dist/safe-bash/commands/mktemp/index.d.ts +2 -0
- package/dist/safe-bash/commands/mktemp/index.js +2 -0
- package/dist/safe-bash/commands/network/curl.js +1 -3
- package/dist/safe-bash/commands/network/index.browser.js +3 -4
- package/dist/safe-bash/commands/network/public.d.ts +0 -1
- package/dist/safe-bash/commands/network/public.js +0 -1
- package/dist/safe-bash/commands/network/transport.js +2 -1
- package/dist/safe-bash/commands/network/wget.js +1 -3
- package/dist/safe-bash/commands/node/browser.d.ts +0 -1
- package/dist/safe-bash/commands/node/browser.js +0 -1
- package/dist/safe-bash/commands/node/default-runtime.d.ts +3 -0
- package/dist/safe-bash/commands/node/default-runtime.js +15 -0
- package/dist/safe-bash/commands/node/index.browser.js +7 -8
- package/dist/safe-bash/commands/node/index.js +3 -3
- package/dist/safe-bash/commands/node/path.js +1 -1
- package/dist/safe-bash/commands/node/preload.d.ts +1 -1
- package/dist/safe-bash/commands/node/preload.js +4 -1
- package/dist/safe-bash/commands/node/quickjs.d.ts +2 -0
- package/dist/safe-bash/commands/node/quickjs.js +2 -0
- package/dist/safe-bash/commands/node/safejs.js +26 -12
- package/dist/safe-bash/commands/op/index.browser.js +2 -3
- package/dist/safe-bash/commands/op/index.d.ts +0 -11
- package/dist/safe-bash/commands/op/index.js +0 -84
- package/dist/safe-bash/commands/pandoc/index.browser.js +44 -0
- package/dist/safe-bash/commands/pandoc/index.d.ts +0 -1
- package/dist/safe-bash/commands/pandoc/index.js +0 -1
- package/dist/safe-bash/commands/portable-random.d.ts +1 -1
- package/dist/safe-bash/commands/portable-random.js +1 -12
- package/dist/safe-bash/commands/pr/index.browser.js +2 -2
- package/dist/safe-bash/commands/python/docker-runner.js +4 -3
- package/dist/safe-bash/commands/python/docker.d.ts +1 -0
- package/dist/safe-bash/commands/python/docker.js +5 -2
- package/dist/safe-bash/commands/python/index.browser.js +17 -13
- package/dist/safe-bash/commands/python/index.d.ts +2 -1
- package/dist/safe-bash/commands/python/index.js +10 -8
- package/dist/safe-bash/commands/python/llm-capability.js +65 -2
- package/dist/safe-bash/commands/python/llm-dependencies.d.ts +27 -0
- package/dist/safe-bash/commands/python/llm-dependencies.js +66 -0
- package/dist/safe-bash/commands/python/llm-module.js +6 -4
- package/dist/safe-bash/commands/python/llm-reference-module.d.ts +3 -0
- package/dist/safe-bash/commands/python/llm-reference-module.js +690 -0
- package/dist/safe-bash/commands/python/worker.browser.js +2 -3
- package/dist/safe-bash/commands/python/worker.d.ts +0 -1
- package/dist/safe-bash/commands/python/worker.js +0 -1
- package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts +1 -1
- package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js +3 -3
- package/dist/safe-bash/commands/regex-execution/public.browser.js +7 -7
- package/dist/safe-bash/commands/safejs/options.js +5 -1
- package/dist/safe-bash/commands/safejs/runtime.d.ts +1 -0
- package/dist/safe-bash/commands/safejs/runtime.js +1 -1
- package/dist/safe-bash/commands/split/index.browser.js +2 -3
- package/dist/safe-bash/commands/split/index.d.ts +0 -1
- package/dist/safe-bash/commands/split/index.js +0 -1
- package/dist/safe-bash/commands/ssconvert/index.browser.js +98 -0
- package/dist/safe-bash/commands/stat/index.browser.js +13 -0
- package/dist/safe-bash/commands/stat/index.d.ts +2 -0
- package/dist/safe-bash/commands/stat/index.js +2 -0
- package/dist/safe-bash/commands/stream-format/index.browser.js +3 -4
- package/dist/safe-bash/commands/stream-format/index.d.ts +0 -1
- package/dist/safe-bash/commands/stream-format/index.js +0 -1
- package/dist/safe-bash/commands/stream-inspection/index.browser.js +3 -4
- package/dist/safe-bash/commands/stream-inspection/index.d.ts +0 -1
- package/dist/safe-bash/commands/stream-inspection/index.js +0 -1
- package/dist/safe-bash/commands/streams.js +2 -1
- package/dist/safe-bash/commands/table-text/index.browser.js +3 -4
- package/dist/safe-bash/commands/table-text/index.d.ts +0 -1
- package/dist/safe-bash/commands/table-text/index.js +0 -1
- package/dist/safe-bash/commands/text.js +74 -34
- package/dist/safe-bash/commands/time-env/index.browser.js +3 -4
- package/dist/safe-bash/commands/time-env/index.d.ts +0 -1
- package/dist/safe-bash/commands/time-env/index.js +0 -1
- package/dist/safe-bash/commands/tree/index.browser.js +2 -3
- package/dist/safe-bash/commands/tree/index.d.ts +0 -1
- package/dist/safe-bash/commands/tree/index.js +0 -1
- package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
- package/dist/safe-bash/commands/unalias/index.d.ts +2 -0
- package/dist/safe-bash/commands/unalias/index.js +2 -0
- 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 +2 -2
- package/dist/safe-bash/core.d.ts +7 -1
- package/dist/safe-bash/core.js +7 -1
- package/dist/safe-bash/execution-runtime.js +2 -1
- package/dist/safe-bash/fs/s3/http/index.d.ts +2 -2
- package/dist/safe-bash/fs/s3/http/index.js +1 -1
- package/dist/safe-bash/full-core.browser.js +254 -916
- package/dist/safe-bash/internal/op/types.d.ts +1 -0
- package/dist/safe-bash/jobs.browser.js +5 -5
- package/dist/safe-bash/lazy-optional.d.ts +3 -3
- package/dist/safe-bash/lazy-optional.js +1 -1
- package/dist/safe-bash/opt-in/commands/cmp/index.js +7 -6
- package/dist/safe-bash/opt-in/commands/dd/index.js +1 -1
- package/dist/safe-bash/opt-in/commands/dd/io.js +51 -5
- package/dist/safe-bash/opt-in/commands/truncate/index.js +2 -2
- package/dist/safe-bash/opt-in/commands/yq/native-work.js +3 -0
- package/dist/safe-bash/opt-in/optional/commands/shuf/input.js +2 -1
- package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +4 -2
- package/dist/safe-bash/opt-in/optional.d.ts +1 -1
- package/dist/safe-bash/opt-in/optional.js +1 -1
- package/dist/safe-bash/opt-in/shell/extensions/read/index.js +2 -344
- package/dist/safe-bash/optional-host.browser.js +19 -14
- package/dist/safe-bash/optional-host.d.ts +1 -0
- package/dist/safe-bash/optional-host.js +1 -0
- package/dist/safe-bash/playwright/controller.js +41 -3
- package/dist/safe-bash/playwright/native-storage-targets.js +4 -2
- package/dist/safe-bash/plugins/base.d.ts +1 -1
- package/dist/safe-bash/plugins/base.js +3 -3
- package/dist/safe-bash/plugins/composition.d.ts +5 -2
- package/dist/safe-bash/plugins/composition.js +10 -7
- package/dist/safe-bash/plugins/index.browser.js +44 -41
- package/dist/safe-bash/plugins/index.js +3 -2
- package/dist/safe-bash/plugins/portable-commands.d.ts +3 -0
- package/dist/safe-bash/plugins/portable-commands.js +31 -0
- package/dist/safe-bash/registry-entry.browser.js +41 -42
- package/dist/safe-bash/search.browser.js +32 -33
- package/dist/safe-bash/shell/arithmetic.js +19 -6
- package/dist/safe-bash/shell/arrays/state.js +1 -1
- package/dist/safe-bash/shell/arrays/syntax.js +4 -3
- package/dist/safe-bash/shell/index.d.ts +0 -1
- package/dist/safe-bash/shell/index.js +0 -1
- package/dist/safe-bash/shell/parser.d.ts +2 -2
- package/dist/safe-bash/shell/parser.js +268 -64
- package/dist/safe-bash/shell/read-builtin.d.ts +3 -0
- package/dist/safe-bash/shell/read-builtin.js +344 -0
- package/dist/safe-bash/shell/runtime.d.ts +24 -4
- package/dist/safe-bash/shell/runtime.js +392 -414
- package/dist/safe-bash/shell/session-state.js +25 -0
- package/dist/safe-bash/shell/shell.js +76 -154
- package/dist/safe-bash/shell/tilde-expansion.d.ts +1 -1
- package/dist/safe-bash/shell/tilde-expansion.js +2 -2
- package/dist/safe-bash/shell/types.d.ts +7 -0
- package/dist/safe-bash/shell/value-state.js +1 -1
- package/dist/safe-bash/shell/worker-limits.js +1 -0
- package/dist/safe-bash/shell-entry.browser.js +32 -33
- package/dist/safe-bash/trap.browser.js +4 -4
- package/dist/safe-bash/worker/host.js +1 -1
- package/dist/safe-bash/yq-browser/index.js +1 -1
- package/dist/safe-bash-calendar-engine/time-env/calendar.d.ts +1 -1
- package/dist/safe-bash-calendar-engine/time-env/calendar.js +1 -1
- package/dist/safe-bash-calendar-engine/time-env/format.js +1 -1
- package/dist/safe-bash-command-alias/index.d.ts +13 -0
- package/dist/safe-bash-command-alias/index.js +88 -0
- package/dist/safe-bash-command-apply-patch/apply.js +3 -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-pipes.js +2 -2
- package/dist/safe-bash-command-awk/awk-reader.js +1 -1
- package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
- 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.js +218 -65
- package/dist/safe-bash-command-bzip2/index.js +4 -3
- package/dist/safe-bash-command-chmod/LICENSE +21 -0
- package/dist/safe-bash-command-chmod/command.d.ts +7 -0
- package/dist/safe-bash-command-chmod/command.js +11 -0
- package/dist/safe-bash-command-chmod/index.d.ts +6 -0
- package/dist/safe-bash-command-chmod/index.js +27 -0
- package/dist/safe-bash-command-cmp/index.js +7 -6
- package/dist/safe-bash-command-column/column.js +3 -3
- package/dist/safe-bash-command-column/index.js +3 -3
- package/dist/safe-bash-command-column/layout.js +2 -2
- package/dist/safe-bash-command-csvkit/index.d.ts +1 -0
- package/dist/safe-bash-command-csvkit/index.js +1505 -7
- package/dist/safe-bash-command-csvkit/sync-support.js +2 -7
- 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-date/date.js +1 -1
- package/dist/safe-bash-command-date/index.js +1 -1
- package/dist/safe-bash-command-dd/index.js +1 -1
- package/dist/safe-bash-command-dd/io.js +51 -5
- 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-diff3/index.js +10 -13
- package/dist/safe-bash-command-exiftool/index.js +283 -55
- package/dist/safe-bash-command-exiftool/registry.d.ts +4 -2
- package/dist/safe-bash-command-factor/command.js +2 -2
- package/dist/safe-bash-command-factor/index.js +2 -2
- package/dist/safe-bash-command-fd/arguments.d.ts +2 -0
- package/dist/safe-bash-command-fd/index.js +42 -12
- package/dist/safe-bash-command-ffmpeg/index.js +356 -66
- package/dist/safe-bash-command-find/find-format.d.ts +3 -0
- package/dist/safe-bash-command-find/find-format.js +1 -1
- package/dist/safe-bash-command-find/find.js +2 -2
- package/dist/safe-bash-command-find/index.js +2 -2
- package/dist/safe-bash-command-fmt/index.js +10 -6
- package/dist/safe-bash-command-fold/engine.d.ts +1 -1
- package/dist/safe-bash-command-fold/family.js +2 -2
- package/dist/safe-bash-command-fold/index.js +1 -1
- package/dist/safe-bash-command-gzip/index.js +45 -42
- package/dist/safe-bash-command-hexdump/command.js +2 -2
- package/dist/safe-bash-command-hexdump/index.js +2 -2
- package/dist/safe-bash-command-html-to-markdown/entities.js +1 -1
- package/dist/safe-bash-command-html-to-markdown/index.js +4 -4
- package/dist/safe-bash-command-html-to-markdown/input.js +3 -3
- package/dist/safe-bash-command-html-to-markdown/parser.js +2 -2
- package/dist/safe-bash-command-html-to-markdown/render.js +3 -3
- package/dist/safe-bash-command-htmlq/contracts.d.ts +5 -2
- package/dist/safe-bash-command-htmlq/index.d.ts +2 -1
- package/dist/safe-bash-command-htmlq/index.js +175 -49
- package/dist/safe-bash-command-htmlq/sync.d.ts +1 -0
- package/dist/safe-bash-command-imagemagick/index.js +59 -7
- package/dist/safe-bash-command-install/arguments.d.ts +27 -0
- package/dist/safe-bash-command-install/arguments.js +224 -0
- package/dist/safe-bash-command-install/index.d.ts +7 -0
- package/dist/safe-bash-command-install/index.js +942 -0
- package/dist/safe-bash-command-install/mode.d.ts +6 -0
- package/dist/safe-bash-command-install/mode.js +71 -0
- package/dist/safe-bash-command-install/options.d.ts +40 -0
- package/dist/safe-bash-command-install/options.js +27 -0
- 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 +42 -57
- package/dist/safe-bash-command-llm/command.js +1 -1
- package/dist/safe-bash-command-llm/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/index.js +4 -4
- package/dist/safe-bash-command-llm/openai.js +2 -2
- package/dist/safe-bash-command-llm/providers/elevenlabs.js +2 -2
- package/dist/safe-bash-command-llm/providers/index.js +3 -3
- package/dist/safe-bash-command-llm/providers/openai.js +2 -2
- package/dist/safe-bash-command-llm/providers/shared.js +1 -1
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.browser.d.ts +463 -46
- package/dist/safe-bash-command-mcp/index.browser.js +19308 -0
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.d.ts +15 -6
- package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.js +2835 -2783
- package/dist/safe-bash-command-media/LICENSE +21 -0
- package/dist/safe-bash-command-media/index.d.ts +6 -0
- package/dist/safe-bash-command-media/index.js +30 -0
- package/dist/safe-bash-command-media/plugin.d.ts +18 -0
- package/dist/safe-bash-command-media/plugin.js +11 -0
- package/dist/safe-bash-command-media/remote.d.ts +63 -0
- package/dist/safe-bash-command-media/remote.js +11 -0
- package/dist/safe-bash-command-media/settings.d.ts +4 -0
- package/dist/safe-bash-command-media/settings.js +41 -0
- package/dist/safe-bash-command-mktemp/LICENSE +21 -0
- package/dist/safe-bash-command-mktemp/command.d.ts +3 -0
- package/dist/safe-bash-command-mktemp/command.js +9 -0
- package/dist/safe-bash-command-mktemp/index.d.ts +6 -0
- package/dist/safe-bash-command-mktemp/index.js +25 -0
- package/dist/safe-bash-command-mmdc/arguments.d.ts +1 -0
- package/dist/safe-bash-command-mmdc/command.d.ts +2 -0
- package/dist/safe-bash-command-mmdc/contracts.d.ts +8 -1
- package/dist/safe-bash-command-mmdc/index.js +359 -7
- package/dist/safe-bash-command-nl/index.js +1 -1
- package/dist/safe-bash-command-nl/nl.js +1 -1
- package/dist/safe-bash-command-node/LICENSE +21 -0
- package/dist/safe-bash-command-node/index.d.ts +17 -0
- package/dist/safe-bash-command-node/index.js +328 -0
- package/dist/safe-bash-command-numfmt/index.js +1 -0
- package/dist/safe-bash-command-od/index.js +16 -8
- package/dist/safe-bash-command-op/index.js +62 -36
- package/dist/safe-bash-command-op/types.d.ts +1 -0
- package/dist/safe-bash-command-pandoc/command.js +3 -3
- package/dist/safe-bash-command-pandoc/index.d.ts +1 -0
- package/dist/safe-bash-command-pandoc/index.js +5 -3
- package/dist/safe-bash-command-pandoc/sync.d.ts +1 -0
- package/dist/safe-bash-command-patch/index.js +4 -4
- package/dist/safe-bash-command-patch/patch.js +4 -4
- package/dist/safe-bash-command-pdfimages/index.js +1 -1
- package/dist/safe-bash-command-pdfinfo/index.js +30 -5
- package/dist/safe-bash-command-pdftk/index.js +21 -23
- package/dist/safe-bash-command-pdftoppm/index.js +17 -4
- package/dist/safe-bash-command-pdftotext/index.js +11 -14
- package/dist/safe-bash-command-qpdf/index.d.ts +1 -0
- package/dist/safe-bash-command-qpdf/index.js +9 -6
- package/dist/safe-bash-command-rg/index.js +1 -1
- package/dist/safe-bash-command-rg/rg-command.js +1 -1
- 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/input.d.ts +2 -2
- package/dist/safe-bash-command-shuf/input.js +2 -1
- package/dist/safe-bash-command-shuf/shuf.js +4 -2
- package/dist/safe-bash-command-sips/index.js +15 -7
- package/dist/safe-bash-command-soffice/index.js +97 -12
- package/dist/safe-bash-command-sponge/index.js +13 -3
- package/dist/safe-bash-command-sqlite3/engine.d.ts +1 -0
- package/dist/safe-bash-command-sqlite3/index.js +510 -70
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +2 -2
- package/dist/safe-bash-command-ssconvert/index.js +44 -22
- package/dist/safe-bash-command-stat/LICENSE +21 -0
- package/dist/safe-bash-command-stat/command.d.ts +7 -0
- package/dist/safe-bash-command-stat/command.js +9 -0
- package/dist/safe-bash-command-stat/index.d.ts +6 -0
- package/dist/safe-bash-command-stat/index.js +25 -0
- package/dist/safe-bash-command-tar/create.d.ts +1 -0
- package/dist/safe-bash-command-tar/create.js +2 -2
- package/dist/safe-bash-command-tar/extract.js +2 -2
- package/dist/safe-bash-command-tar/index.js +4 -4
- package/dist/safe-bash-command-tar/modes.js +4 -4
- package/dist/safe-bash-command-tar/options.js +1 -1
- package/dist/safe-bash-command-truncate/index.js +2 -2
- package/dist/safe-bash-command-tsort/command.js +2 -2
- package/dist/safe-bash-command-tsort/index.js +2 -2
- package/dist/safe-bash-command-unalias/index.d.ts +12 -0
- package/dist/safe-bash-command-unalias/index.js +67 -0
- package/dist/safe-bash-command-unrtf/index.js +37 -5
- package/dist/safe-bash-command-xan/argv.d.ts +1 -1
- package/dist/safe-bash-command-xan/argv.js +2 -2
- package/dist/safe-bash-command-xan/budget.d.ts +0 -1
- package/dist/safe-bash-command-xan/budget.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +6 -6
- package/dist/safe-bash-command-xan/csv.js +2 -2
- package/dist/safe-bash-command-xan/index.js +8 -9
- package/dist/safe-bash-command-xan/io.js +4 -4
- package/dist/safe-bash-command-xan/options.js +1 -1
- package/dist/safe-bash-command-xan/selector.js +2 -2
- package/dist/safe-bash-command-xmllint/index.js +45 -23
- package/dist/safe-bash-command-xxd/index.js +47 -12
- package/dist/safe-bash-command-xz/command.d.ts +1 -1
- package/dist/safe-bash-command-xz/index.js +3 -2
- package/dist/safe-bash-command-yq/accounting.js +1 -1
- package/dist/safe-bash-command-yq/index.js +4 -2
- package/dist/safe-bash-command-yq/native-work.js +3 -0
- package/dist/safe-bash-command-yq/parser.js +2 -2
- package/dist/safe-bash-command-yq/query.js +8 -5
- package/dist/safe-bash-command-yq/toml.js +2 -2
- package/dist/safe-bash-command-zip/index.js +3 -3
- package/dist/safe-bash-compression-engine/bounded-codec.js +3 -3
- package/dist/safe-bash-compression-engine/codec-loader.js +2 -2
- package/dist/safe-bash-compression-engine/files.js +6 -6
- package/dist/safe-bash-compression-engine/index.js +5 -5
- package/dist/safe-bash-compression-engine/operand.js +6 -6
- package/dist/safe-bash-compression-engine/options.js +1 -1
- package/dist/safe-bash-compression-engine/stream.js +5 -5
- package/dist/safe-bash-compression-engine/zstd-decode.js +4 -4
- package/dist/safe-bash-contracts/command.js +3 -3
- package/dist/safe-bash-contracts/default-executor.js +2 -2
- package/dist/safe-bash-contracts/diagnostics.js +3 -3
- package/dist/safe-bash-contracts/escaping.js +6 -6
- package/dist/safe-bash-contracts/filesystem-descriptor.js +3 -3
- package/dist/safe-bash-contracts/filesystem-output.js +5 -5
- package/dist/safe-bash-contracts/http.d.ts +7 -0
- package/dist/safe-bash-contracts/index.js +8 -8
- package/dist/safe-bash-contracts/io.d.ts +2 -0
- package/dist/safe-bash-contracts/io.js +2 -2
- package/dist/safe-bash-contracts/output.js +3 -3
- package/dist/safe-bash-contracts/runtime-control.d.ts +2 -2
- package/dist/safe-bash-contracts/runtime-control.js +4 -2
- package/dist/safe-bash-contracts/signals.d.ts +2 -0
- package/dist/safe-bash-contracts/signals.js +3 -1
- package/dist/safe-bash-contracts/yield.js +1 -1
- package/dist/safe-bash-csv-engine/index.d.ts +2 -1
- package/dist/safe-bash-csv-engine/index.js +21 -15
- package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +6 -6
- package/dist/safe-bash-io-engine/internal.js +1 -1
- package/dist/safe-bash-io-engine/shell/pattern.js +38 -18
- package/dist/safe-bash-line-ending-engine/convert.js +9 -204
- package/dist/safe-bash-line-ending-engine/encoding.js +9 -42
- package/dist/safe-bash-line-ending-engine/index.js +48 -0
- package/dist/safe-bash-line-ending-engine/info.js +9 -90
- package/dist/safe-bash-line-ending-engine/internal.js +15 -160
- package/dist/safe-bash-line-ending-engine/io.js +12 -289
- package/dist/safe-bash-line-ending-engine/stage.js +10 -160
- package/dist/safe-bash-markdown-engine/index.js +3 -3
- package/dist/safe-bash-metadata-engine/LICENSE +21 -0
- package/dist/safe-bash-metadata-engine/index.d.ts +30 -0
- package/dist/safe-bash-metadata-engine/index.js +82 -0
- package/dist/safe-bash-metadata-engine/random.d.ts +1 -0
- package/dist/safe-bash-metadata-engine/random.js +21 -0
- package/dist/safe-bash-network-engine/args.d.ts +6 -0
- package/dist/safe-bash-network-engine/args.js +4 -2
- package/dist/safe-bash-network-engine/body.js +1 -1
- package/dist/safe-bash-network-engine/fetch-transport.js +3 -1
- package/dist/safe-bash-network-engine/index.js +3 -1
- package/dist/safe-bash-network-engine/input.js +2 -2
- package/dist/safe-bash-network-engine/platform-portable.js +3 -1
- package/dist/safe-bash-query-engine/dates.d.ts +1 -1
- package/dist/safe-bash-query-engine/dates.js +1 -1
- package/dist/safe-bash-query-engine/index.js +6 -6
- package/dist/safe-bash-query-engine/interpreter.js +4 -4
- package/dist/safe-bash-query-engine/parser.js +1 -1
- package/dist/safe-bash-query-engine/query-core.js +6 -6
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +10 -0
- package/dist/safe-bash-regex-engine/index.js +1 -1
- package/dist/safe-bash-regex-engine/text/regex.d.ts +1 -1
- package/dist/safe-bash-regex-engine/text/regex.js +1 -1
- package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +1 -0
- package/dist/safe-bash-search-engine/ergonomic-regex.js +2 -2
- package/dist/safe-bash-search-engine/glob.js +2 -2
- package/dist/safe-bash-search-engine/grep.js +17 -10
- package/dist/safe-bash-search-engine/matcher.d.ts +2 -2
- package/dist/safe-bash-search-engine/matcher.js +13 -9
- package/dist/safe-bash-search-engine/options.d.ts +2 -0
- package/dist/safe-bash-search-engine/options.js +1 -1
- package/dist/safe-bash-search-engine/output.js +1 -1
- package/dist/safe-bash-search-engine/shared.js +2 -2
- package/dist/safe-bash-search-engine/walk.js +15 -3
- package/dist/safe-bash-text-stream-engine/stream-format/shared.d.ts +1 -1
- package/dist/safe-bash-text-stream-engine/stream-format/shared.js +2 -1
- package/dist/safe-bash-xml-engine/document.js +3 -3
- package/dist/safe-bash-xml-engine/evaluate.js +2 -2
- package/dist/safe-bash-xml-engine/index.js +4 -4
- package/dist/safe-bash-xml-engine/io.js +7 -2
- package/dist/safe-bash-xml-engine/limits.d.ts +0 -2
- package/dist/safe-bash-xml-engine/limits.js +1 -1
- package/dist/safe-bash-xml-engine/query.js +3 -3
- package/dist/safe-bash-zip-engine/index.js +3 -3
- package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
- package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
- package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
- package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
- package/dist/safe-bash-zip-engine/zip-format.js +3 -3
- package/dist/safe-playwright-cloudflare/browser-snapshot-json.js +2 -2
- package/dist/safe-playwright-cloudflare/browser-snapshot-references.js +1 -1
- package/dist/safe-playwright-cloudflare/browser-socket-closure.js +18 -3
- package/dist/safe-playwright-cloudflare/shell-browser-resource.js +1 -1
- package/dist/xlsx-ast/xlsx.js +6 -5
- package/package.json +112 -98
- package/dist/media-cli/bytes.d.ts +0 -8
- package/dist/media-cli/bytes.js +0 -40
- package/dist/media-cli/concat.d.ts +0 -30
- package/dist/media-cli/concat.js +0 -197
- package/dist/media-cli/content.js +0 -66
- package/dist/media-cli/dependency-grammars.d.ts +0 -12
- package/dist/media-cli/dependency-grammars.js +0 -557
- package/dist/media-cli/discover.js +0 -286
- package/dist/media-cli/engine.js +0 -190
- package/dist/media-cli/filename-expression.js +0 -147
- package/dist/media-cli/filesystem.js +0 -35
- package/dist/media-cli/frontend-contract.js +0 -8
- package/dist/media-cli/frontend-issues.d.ts +0 -6
- package/dist/media-cli/frontend-issues.js +0 -9
- package/dist/media-cli/imagemagick-operand.d.ts +0 -42
- package/dist/media-cli/imagemagick-operand.js +0 -229
- package/dist/media-cli/imagemagick-references.d.ts +0 -7
- package/dist/media-cli/imagemagick-references.js +0 -42
- package/dist/media-cli/imagemagick.generated.js +0 -3254
- package/dist/media-cli/imagemagick.js +0 -615
- package/dist/media-cli/index.js +0 -12
- package/dist/media-cli/mvg.d.ts +0 -10
- package/dist/media-cli/mvg.js +0 -102
- package/dist/media-cli/network.js +0 -78
- package/dist/media-cli/options.generated.js +0 -3312
- package/dist/media-cli/preset.d.ts +0 -11
- package/dist/media-cli/preset.js +0 -57
- package/dist/media-cli/resolution-path.d.ts +0 -23
- package/dist/media-cli/resolution-path.js +0 -217
- package/dist/media-cli/resolver.js +0 -494
- package/dist/media-cli/resources.d.ts +0 -16
- package/dist/media-cli/resources.js +0 -187
- package/dist/media-cli/shim.js +0 -52
- package/dist/media-cli/tee.d.ts +0 -6
- package/dist/media-cli/tee.js +0 -38
- package/dist/office-package/zip-sync.js +0 -111
- package/dist/remote-execution/binary.js +0 -178
- package/dist/remote-execution/callback-result.js +0 -26
- package/dist/remote-execution/canonical-capabilities.d.ts +0 -5
- package/dist/remote-execution/canonical-capabilities.js +0 -45
- package/dist/remote-execution/canonical-metadata.d.ts +0 -4
- package/dist/remote-execution/canonical-metadata.js +0 -32
- package/dist/remote-execution/client.js +0 -824
- package/dist/remote-execution/deployment.js +0 -131
- package/dist/remote-execution/descriptors.js +0 -267
- package/dist/remote-execution/effects.js +0 -357
- package/dist/remote-execution/endpoint.js +0 -224
- package/dist/remote-execution/files.js +0 -291
- package/dist/remote-execution/hosting-operation.js +0 -26
- package/dist/remote-execution/hosting-request.d.ts +0 -4
- package/dist/remote-execution/hosting-request.js +0 -12
- package/dist/remote-execution/hosting-stream.d.ts +0 -8
- package/dist/remote-execution/hosting-stream.js +0 -64
- package/dist/remote-execution/index.js +0 -18
- package/dist/remote-execution/invocation-admission.d.ts +0 -3
- package/dist/remote-execution/invocation-admission.js +0 -17
- package/dist/remote-execution/job-binding.js +0 -1269
- package/dist/remote-execution/materializations.js +0 -284
- package/dist/remote-execution/modal-driver.js +0 -90
- package/dist/remote-execution/native-result.d.ts +0 -3
- package/dist/remote-execution/native-result.js +0 -16
- package/dist/remote-execution/output-freshness.d.ts +0 -4
- package/dist/remote-execution/output-freshness.js +0 -19
- package/dist/remote-execution/output-retrieval.js +0 -474
- package/dist/remote-execution/process-http.js +0 -607
- package/dist/remote-execution/process.js +0 -577
- package/dist/remote-execution/protocol.js +0 -208
- package/dist/remote-execution/relay.js +0 -91
- package/dist/remote-execution/rest-driver.js +0 -93
- package/dist/remote-execution/upload-descriptor.js +0 -201
- package/dist/remote-execution/upload-protocol.js +0 -62
- package/dist/remote-execution/uploads.js +0 -324
- package/dist/remote-execution/wire-json.d.ts +0 -4
- package/dist/remote-execution/wire-json.js +0 -44
- package/dist/remote-execution/wire-validation.js +0 -131
- package/dist/remote-execution/wire.generated.js +0 -4224
- package/dist/safe-bash/chunks/chunk-GETUOD5D.js +0 -161
- package/dist/safe-bash/chunks/chunk-IWDICZVK.js +0 -20
- package/dist/safe-bash/chunks/chunk-MHMMRCYC.js +0 -3464
- package/dist/safe-bash/chunks/chunk-UE5KZDEK.js +0 -77
- package/dist/safe-bash/chunks/chunk-VSAJ4OTM.js +0 -962
- package/dist/safe-bash/chunks/csvkit-TACDU7FC.js +0 -1618
- package/dist/safe-bash/chunks/implementation-MLFHUQ5M.js +0 -133
- package/dist/safe-bash/commands/csvkit/sync.js +0 -1639
- package/dist/safe-bash/commands/node/unconfigured.d.ts +0 -3
- package/dist/safe-bash/commands/node/unconfigured.js +0 -10
- package/dist/safe-bash/commands/pandoc/implementation.d.ts +0 -8
- package/dist/safe-bash/commands/pandoc/implementation.js +0 -94
- package/dist/safe-bash-mcp/index.browser.js +0 -9157
- package/dist/safe-bash/command-chunks/{chunk-ZRRBXU3M.js → chunk-GIN5GUDP.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-LAOM65EE.js → chunk-IEO4XVN6.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-364TMWBT.js → chunk-MWREVL44.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-464RVBGB.js → chunk-Q5TDKFHK.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-AJR3AQYA.js → chunk-UKX3LZHR.js} +0 -0
- package/dist/safe-bash/command-chunks/{chunk-XIIBTGC5.js → chunk-XPXEQKRW.js} +9 -9
- package/dist/safe-bash/command-chunks/{chunk-FDBUV4HJ.js → chunk-Y4HGTG3E.js} +3 -3
- /package/dist/{safe-bash/commands/csvkit → safe-bash-command-csvkit}/sync.d.ts +0 -0
|
@@ -1,577 +0,0 @@
|
|
|
1
|
-
import { readBytes } from "@poe-platform/safe-fs/core";
|
|
2
|
-
import { decodeFrames, encodeFrame } from './binary.js';
|
|
3
|
-
/** Portable structural CommandContext adapter. The connector receives the
|
|
4
|
-
* original scoped context, including stdinInput and any admitted handles; it
|
|
5
|
-
* must install seekable native descriptors rather than staging pipe contents. */
|
|
6
|
-
export async function executeRemoteProcess(context, connect, signalStatus) {
|
|
7
|
-
const controller = new AbortController();
|
|
8
|
-
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
9
|
-
const inputController = new AbortController();
|
|
10
|
-
const inputSignal = AbortSignal.any([signal, inputController.signal]);
|
|
11
|
-
let connection;
|
|
12
|
-
let acquisition;
|
|
13
|
-
let closing;
|
|
14
|
-
let finalizing = false;
|
|
15
|
-
let observationFailure;
|
|
16
|
-
let unsubscribeSignals;
|
|
17
|
-
const signalWork = new Set();
|
|
18
|
-
let rejectSignal;
|
|
19
|
-
const signalFailure = new Promise((_resolve, reject) => { rejectSignal = reject; });
|
|
20
|
-
void signalFailure.catch(() => { });
|
|
21
|
-
const writes = new Set();
|
|
22
|
-
const acknowledgements = new Set();
|
|
23
|
-
const failedAcknowledgements = new Set();
|
|
24
|
-
const inputWork = new Set();
|
|
25
|
-
const inputCleanup = new Set();
|
|
26
|
-
const leases = new Set();
|
|
27
|
-
const descriptorAcquisitions = new Set();
|
|
28
|
-
const outputClosures = new Map();
|
|
29
|
-
const destinationPipeClosures = new Set();
|
|
30
|
-
function stopOutput(channel, cause) {
|
|
31
|
-
const existing = outputClosures.get(channel);
|
|
32
|
-
if (existing)
|
|
33
|
-
return existing;
|
|
34
|
-
if (finalizing)
|
|
35
|
-
return Promise.resolve();
|
|
36
|
-
const operation = Promise.resolve().then(() => connection.closeOutput(channel, cause));
|
|
37
|
-
outputClosures.set(channel, operation);
|
|
38
|
-
void operation.catch(() => { });
|
|
39
|
-
return operation;
|
|
40
|
-
}
|
|
41
|
-
const close = () => {
|
|
42
|
-
finalizing = true;
|
|
43
|
-
controller.abort(new Error('Remote invocation finalized'));
|
|
44
|
-
closing ??= (async () => {
|
|
45
|
-
const acquired = connection ?? await acquisition?.catch(() => undefined);
|
|
46
|
-
// Delivery includes returning credit for effects the canonical sink accepted.
|
|
47
|
-
// Retiring the transport first would erase that acknowledgement on cancel.
|
|
48
|
-
const delivered = await Promise.allSettled([...writes, ...acknowledgements]);
|
|
49
|
-
// A borrowed subscribe can synchronously cancel before returning its
|
|
50
|
-
// acquired cleanup. Close admission immediately, then capture that
|
|
51
|
-
// cleanup after the current acquisition stack has unwound.
|
|
52
|
-
const unsubscribe = unsubscribeSignals;
|
|
53
|
-
unsubscribeSignals = undefined;
|
|
54
|
-
const results = await Promise.allSettled([
|
|
55
|
-
...(acquired ? [Promise.resolve().then(() => acquired.close())] : []),
|
|
56
|
-
Promise.resolve().then(() => unsubscribe?.()),
|
|
57
|
-
...signalWork,
|
|
58
|
-
...outputClosures.values(),
|
|
59
|
-
]);
|
|
60
|
-
results.push(...delivered);
|
|
61
|
-
// Retire transport writers first to unblock pending native credits, then
|
|
62
|
-
// drain borrowed reads and their iterator finalizers before lease release.
|
|
63
|
-
await Promise.allSettled([...inputWork]);
|
|
64
|
-
results.push(...await Promise.allSettled([...inputCleanup]));
|
|
65
|
-
await Promise.allSettled([...descriptorAcquisitions]);
|
|
66
|
-
// A synchronous release failure must not skip or abandon sibling drains.
|
|
67
|
-
results.push(...await Promise.allSettled([...leases].map(lease => Promise.resolve().then(() => lease.close()))));
|
|
68
|
-
const failures = results.filter(result => result.status === 'rejected');
|
|
69
|
-
if (failures.length === 1)
|
|
70
|
-
throw failures[0].reason;
|
|
71
|
-
if (failures.length)
|
|
72
|
-
throw new AggregateError(failures.map(result => result.reason), 'Remote process cleanup failed');
|
|
73
|
-
})();
|
|
74
|
-
void closing.catch(() => { });
|
|
75
|
-
return closing;
|
|
76
|
-
};
|
|
77
|
-
context.registerCleanup?.(close);
|
|
78
|
-
const cancel = () => { void close().catch(() => { }); };
|
|
79
|
-
context.signal.addEventListener('abort', cancel, { once: true });
|
|
80
|
-
let failure;
|
|
81
|
-
let result;
|
|
82
|
-
try {
|
|
83
|
-
result = await (async () => {
|
|
84
|
-
signal.throwIfAborted();
|
|
85
|
-
acquisition = Promise.resolve().then(() => { signal.throwIfAborted(); return connect(context, signal); });
|
|
86
|
-
connection = await acquisition;
|
|
87
|
-
signal.throwIfAborted();
|
|
88
|
-
const remote = connection;
|
|
89
|
-
// Observe failure before descriptor acquisition can block. A failed remote
|
|
90
|
-
// job retires that admission through the invocation signal; normal native
|
|
91
|
-
// exit still leaves input acceptance and output delivery to their barriers.
|
|
92
|
-
const nativeOutcome = remote.outcome.then((outcome) => {
|
|
93
|
-
// An unknown or failed launch cannot leave idle lanes holding execution
|
|
94
|
-
// open. Keep the remote observation for recovery instead of inventing a
|
|
95
|
-
// numeric native status, then drain the same owned cleanup barrier.
|
|
96
|
-
// Validate and retain the observation before waiting on independent lanes
|
|
97
|
-
// or descriptor acquisition. A malformed terminal status must retire idle
|
|
98
|
-
// work, and borrowed accessors cannot replace a native status during drain.
|
|
99
|
-
const kind = outcome.kind;
|
|
100
|
-
if (kind === 'exited') {
|
|
101
|
-
const exitCode = outcome.exitCode;
|
|
102
|
-
if (!Number.isInteger(exitCode) || exitCode < 0 || exitCode > 255)
|
|
103
|
-
throw new TypeError('Invalid native exit status');
|
|
104
|
-
return { kind, exitCode };
|
|
105
|
-
}
|
|
106
|
-
if (kind === 'signaled') {
|
|
107
|
-
const { signal: name, signalNumber } = outcome;
|
|
108
|
-
if (typeof name !== 'string' || !name || name.includes('\0')
|
|
109
|
-
|| !Number.isSafeInteger(signalNumber) || signalNumber < 1 || signalNumber > 255)
|
|
110
|
-
throw new TypeError('Invalid native signal observation');
|
|
111
|
-
return { kind, signal: name, signalNumber };
|
|
112
|
-
}
|
|
113
|
-
throw Object.assign(new Error('Remote process did not produce a qualified shell exit status'), { outcome });
|
|
114
|
-
}).catch(cause => {
|
|
115
|
-
if (!finalizing)
|
|
116
|
-
observationFailure ??= { cause };
|
|
117
|
-
inputController.abort(cause);
|
|
118
|
-
void close().catch(() => { });
|
|
119
|
-
throw cause;
|
|
120
|
-
});
|
|
121
|
-
void nativeOutcome.catch(() => { });
|
|
122
|
-
// Negotiated credit is invocation authority. Retain it once so connector
|
|
123
|
-
// mutation cannot widen reads, change chunk strides or stall an upload.
|
|
124
|
-
const maxFrameBytes = remote.maxFrameBytes;
|
|
125
|
-
const stdinKind = remote.stdinKind;
|
|
126
|
-
const suppliedOutputs = remote.outputs;
|
|
127
|
-
const suppliedChannels = remote.inputChannels ?? (stdinKind === 'pipe' ? [1] : []);
|
|
128
|
-
if (!Array.isArray(suppliedChannels) || suppliedChannels.length > 64)
|
|
129
|
-
throw new TypeError('Invalid native input channels');
|
|
130
|
-
const channels = Array.from({ length: suppliedChannels.length }, (_, index) => {
|
|
131
|
-
if (!Object.hasOwn(suppliedChannels, index))
|
|
132
|
-
throw new TypeError('Invalid native input channels');
|
|
133
|
-
return suppliedChannels[index];
|
|
134
|
-
});
|
|
135
|
-
if (suppliedOutputs.size > 64)
|
|
136
|
-
throw new TypeError('Invalid process lane admission');
|
|
137
|
-
// Retain lane identity before awaiting descriptor leases. The connector's
|
|
138
|
-
// mutable maps and arrays cannot replace streams or widen acquired rights.
|
|
139
|
-
const outputs = new Map(suppliedOutputs);
|
|
140
|
-
async function acknowledge(channel, sequence, offset) {
|
|
141
|
-
const operation = Promise.resolve().then(() => remote.ack(channel, sequence, offset));
|
|
142
|
-
acknowledgements.add(operation);
|
|
143
|
-
try {
|
|
144
|
-
await operation;
|
|
145
|
-
}
|
|
146
|
-
catch (cause) {
|
|
147
|
-
failedAcknowledgements.add(cause);
|
|
148
|
-
throw cause;
|
|
149
|
-
}
|
|
150
|
-
finally {
|
|
151
|
-
acknowledgements.delete(operation);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if ((stdinKind !== 'pipe' && stdinKind !== 'descriptor')
|
|
155
|
-
|| !Number.isSafeInteger(maxFrameBytes) || maxFrameBytes < 1 || maxFrameBytes > 1048576
|
|
156
|
-
|| !outputs.has(2) || !outputs.has(3) || outputs.size > 64
|
|
157
|
-
|| [...outputs.keys()].some(id => !Number.isSafeInteger(id) || id < 2 || id > 1024))
|
|
158
|
-
throw new TypeError('Invalid process lane admission');
|
|
159
|
-
const stdinInput = context.stdinInput;
|
|
160
|
-
if (stdinInput?.seek && stdinKind !== 'descriptor')
|
|
161
|
-
throw new TypeError('Native seekable stdin descriptor is required');
|
|
162
|
-
if (channels.includes(1) !== (stdinKind === 'pipe') || new Set(channels).size !== channels.length || channels.some(id => !Number.isSafeInteger(id) || id < 1 || id === 2 || id === 3 || id > 1024))
|
|
163
|
-
throw new TypeError('Invalid native input channels');
|
|
164
|
-
const readInput = stdinKind === 'pipe' ? stdinInput?.read.bind(stdinInput) : undefined;
|
|
165
|
-
const byteLength = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get;
|
|
166
|
-
async function* readProcessInput(read, description) {
|
|
167
|
-
for (;;) {
|
|
168
|
-
const count = Math.min(maxFrameBytes, 65536);
|
|
169
|
-
const result = await read(count, inputSignal);
|
|
170
|
-
if (!result || typeof result !== 'object' || Array.isArray(result))
|
|
171
|
-
throw new TypeError('Invalid process input read result');
|
|
172
|
-
// Observe EOF once. Truthy malformed values must not truncate input or
|
|
173
|
-
// obtain an END receipt; an empty byte fragment remains ordinary data.
|
|
174
|
-
const done = result.done;
|
|
175
|
-
if (done === true)
|
|
176
|
-
return;
|
|
177
|
-
if (done !== false && done !== undefined)
|
|
178
|
-
throw new TypeError('Invalid process input read result');
|
|
179
|
-
const bytes = result.value;
|
|
180
|
-
if (!(bytes instanceof Uint8Array) || byteLength.call(bytes) > count)
|
|
181
|
-
throw new TypeError(`Invalid ${description} read size`);
|
|
182
|
-
yield bytes;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
const stdin = readInput ? { [Symbol.asyncIterator]: () => readProcessInput(readInput, 'stdinInput') } : context.stdin;
|
|
186
|
-
const inputs = new Map(stdinKind === 'pipe' ? [[1, stdin]] : []);
|
|
187
|
-
const sinks = new Map([[2, context.stdout], [3, context.stderr]]);
|
|
188
|
-
const descriptorSinks = new Set();
|
|
189
|
-
for (const channel of new Set([...channels, ...outputs.keys()])) {
|
|
190
|
-
if (channel < 4)
|
|
191
|
-
continue;
|
|
192
|
-
if (!context.admittedHandles)
|
|
193
|
-
throw new TypeError('Shell descriptor admission is required');
|
|
194
|
-
const rights = [];
|
|
195
|
-
if (channels.includes(channel))
|
|
196
|
-
rights.push('read');
|
|
197
|
-
if (outputs.has(channel))
|
|
198
|
-
rights.push('write');
|
|
199
|
-
signal.throwIfAborted();
|
|
200
|
-
const admission = Promise.resolve().then(() => {
|
|
201
|
-
signal.throwIfAborted();
|
|
202
|
-
return context.admittedHandles.acquire(channel - 1, rights, signal);
|
|
203
|
-
}).then(lease => {
|
|
204
|
-
// Enroll release before inspecting the remaining acquired capability.
|
|
205
|
-
// Retain operations once with their original receiver: partial writes
|
|
206
|
-
// and finalization must not reread a mutable provider's lease methods.
|
|
207
|
-
const close = lease.close.bind(lease);
|
|
208
|
-
leases.add({ close });
|
|
209
|
-
return {
|
|
210
|
-
close,
|
|
211
|
-
consumerClosed: lease.consumerClosed,
|
|
212
|
-
read: rights.includes('read') ? lease.read?.bind(lease) : undefined,
|
|
213
|
-
write: rights.includes('write') ? lease.write?.bind(lease) : undefined,
|
|
214
|
-
};
|
|
215
|
-
});
|
|
216
|
-
descriptorAcquisitions.add(admission);
|
|
217
|
-
let lease;
|
|
218
|
-
try {
|
|
219
|
-
lease = await admission;
|
|
220
|
-
}
|
|
221
|
-
finally {
|
|
222
|
-
descriptorAcquisitions.delete(admission);
|
|
223
|
-
}
|
|
224
|
-
signal.throwIfAborted();
|
|
225
|
-
if (rights.includes('read') && !lease.read || rights.includes('write') && !lease.write)
|
|
226
|
-
throw new TypeError('Descriptor lease is missing admitted operations');
|
|
227
|
-
if (rights.includes('read'))
|
|
228
|
-
inputs.set(channel, { [Symbol.asyncIterator]: () => readProcessInput(lease.read, 'descriptor') });
|
|
229
|
-
if (rights.includes('write')) {
|
|
230
|
-
const sink = { async write(bytes) {
|
|
231
|
-
let offset = 0;
|
|
232
|
-
while (offset < bytes.length) {
|
|
233
|
-
// A short-write receipt settles only this prefix. Retain it, but do
|
|
234
|
-
// not admit another effect after invocation or destination closure.
|
|
235
|
-
signal.throwIfAborted();
|
|
236
|
-
lease.consumerClosed?.throwIfAborted();
|
|
237
|
-
const count = await lease.write(bytes.subarray(offset, Math.min(bytes.length, offset + 65536)), signal);
|
|
238
|
-
if (!Number.isSafeInteger(count) || count < 1 || count > Math.min(bytes.length - offset, 65536))
|
|
239
|
-
throw new TypeError('Invalid descriptor partial write');
|
|
240
|
-
offset += count;
|
|
241
|
-
}
|
|
242
|
-
} };
|
|
243
|
-
if (lease.consumerClosed)
|
|
244
|
-
sink.ownedOutput = { consumerClosed: lease.consumerClosed, write: sink.write };
|
|
245
|
-
sinks.set(channel, sink);
|
|
246
|
-
descriptorSinks.add(sink);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
let lastSignal = 0n;
|
|
250
|
-
const processSignals = context.processSignals;
|
|
251
|
-
signal.throwIfAborted();
|
|
252
|
-
if (processSignals) {
|
|
253
|
-
unsubscribeSignals = processSignals.subscribe(event => {
|
|
254
|
-
const operation = (async () => {
|
|
255
|
-
signal.throwIfAborted();
|
|
256
|
-
const { sequence, name, number, target } = event;
|
|
257
|
-
// Borrowed hosts may expose accessors. Validate, deliver and acknowledge
|
|
258
|
-
// the same event, then recheck lifetime after inspecting host fields.
|
|
259
|
-
signal.throwIfAborted();
|
|
260
|
-
if (finalizing || typeof sequence !== 'bigint' || sequence <= lastSignal
|
|
261
|
-
|| typeof name !== 'string' || !name || name.includes('\0')
|
|
262
|
-
|| !Number.isSafeInteger(number) || number < 1 || number > 255
|
|
263
|
-
|| target !== 'process-group')
|
|
264
|
-
throw new TypeError('Invalid ordered process signal');
|
|
265
|
-
lastSignal = sequence;
|
|
266
|
-
if (!remote.signal)
|
|
267
|
-
throw new TypeError('Native process signals are not admitted');
|
|
268
|
-
await remote.signal(name, number, target);
|
|
269
|
-
return { sequence };
|
|
270
|
-
})();
|
|
271
|
-
signalWork.add(operation);
|
|
272
|
-
void operation.then(() => signalWork.delete(operation), cause => {
|
|
273
|
-
// Record the native rejection before cleanup aborts blocked lanes.
|
|
274
|
-
// The outcome observer runs later and must not replace it with the
|
|
275
|
-
// local retirement reason, including when the rejection is falsey.
|
|
276
|
-
if (!finalizing)
|
|
277
|
-
observationFailure ??= { cause };
|
|
278
|
-
signalWork.delete(operation);
|
|
279
|
-
rejectSignal(cause);
|
|
280
|
-
void close().catch(() => { });
|
|
281
|
-
});
|
|
282
|
-
return operation;
|
|
283
|
-
});
|
|
284
|
-
signal.throwIfAborted();
|
|
285
|
-
}
|
|
286
|
-
const limits = { maxFrameBytes, maxControlBytes: maxFrameBytes, channels };
|
|
287
|
-
let executionFailure;
|
|
288
|
-
function failExecution(cause) {
|
|
289
|
-
if (!finalizing)
|
|
290
|
-
executionFailure ??= { cause };
|
|
291
|
-
void close().catch(() => { });
|
|
292
|
-
}
|
|
293
|
-
const observed = Promise.race([nativeOutcome, signalFailure]).then(outcome => { inputController.abort(new Error('Native process exited')); return outcome; }, cause => {
|
|
294
|
-
if (!finalizing)
|
|
295
|
-
observationFailure ??= { cause };
|
|
296
|
-
inputController.abort(cause);
|
|
297
|
-
void close().catch(() => { });
|
|
298
|
-
throw cause;
|
|
299
|
-
});
|
|
300
|
-
void observed.catch(() => { });
|
|
301
|
-
const inputTasks = [...inputs].map(([channel, source]) => (async () => {
|
|
302
|
-
let sequence = 1n;
|
|
303
|
-
let offset = 0n;
|
|
304
|
-
const nativeInputClosed = {};
|
|
305
|
-
let receiptFailed = false;
|
|
306
|
-
async function send(kind, payload) {
|
|
307
|
-
inputSignal.throwIfAborted();
|
|
308
|
-
const expected = offset + BigInt(payload.length);
|
|
309
|
-
const frame = encodeFrame({ kind, channelId: channel, sequence, offset, correlationId: 0n, payload }, limits);
|
|
310
|
-
let accepted;
|
|
311
|
-
// Exit stops new stdin reads/admission, not a dispatched native write's
|
|
312
|
-
// acceptance receipt. Caller cancellation still retires both scopes.
|
|
313
|
-
try {
|
|
314
|
-
accepted = await remote.send(channel, frame, expected, signal);
|
|
315
|
-
}
|
|
316
|
-
catch (cause) {
|
|
317
|
-
// Only the native writer's EPIPE retires this input. A borrowed
|
|
318
|
-
// source or iterator finalizer with the same errno still failed.
|
|
319
|
-
if (cause?.code === 'EPIPE')
|
|
320
|
-
throw nativeInputClosed;
|
|
321
|
-
receiptFailed = true;
|
|
322
|
-
throw cause;
|
|
323
|
-
}
|
|
324
|
-
if (accepted !== expected)
|
|
325
|
-
throw new TypeError('Native input credit offset conflict');
|
|
326
|
-
sequence++;
|
|
327
|
-
offset = expected;
|
|
328
|
-
}
|
|
329
|
-
try {
|
|
330
|
-
const iterator = source[Symbol.asyncIterator]();
|
|
331
|
-
let returning;
|
|
332
|
-
const ownedSource = { [Symbol.asyncIterator]() {
|
|
333
|
-
return {
|
|
334
|
-
next: iterator.next.bind(iterator),
|
|
335
|
-
...(iterator.return ? { return() {
|
|
336
|
-
returning ??= Promise.resolve().then(() => iterator.return());
|
|
337
|
-
inputCleanup.add(returning);
|
|
338
|
-
void returning.catch(() => { });
|
|
339
|
-
return returning;
|
|
340
|
-
} } : {}),
|
|
341
|
-
};
|
|
342
|
-
} };
|
|
343
|
-
for await (const bytes of readBytes(ownedSource, inputSignal)) {
|
|
344
|
-
// Fragment properties and methods are not stream authority. Slice
|
|
345
|
-
// only the real typed-array span, retaining frame-sized credit even
|
|
346
|
-
// when a borrowed producer shadows length or subarray.
|
|
347
|
-
const length = byteLength.call(bytes);
|
|
348
|
-
for (let start = 0; start < length; start += maxFrameBytes)
|
|
349
|
-
await send('data', Uint8Array.prototype.subarray.call(bytes, start, start + maxFrameBytes));
|
|
350
|
-
}
|
|
351
|
-
await send('end', new Uint8Array());
|
|
352
|
-
}
|
|
353
|
-
catch (cause) {
|
|
354
|
-
// Exit retires a blocked read, but cannot settle an independently
|
|
355
|
-
// failed native acceptance receipt. Preserve that uncertainty even
|
|
356
|
-
// when the native process has already supplied an explicit status.
|
|
357
|
-
if (!receiptFailed && inputController.signal.aborted && !signal.aborted && cause === inputController.signal.reason)
|
|
358
|
-
return;
|
|
359
|
-
if (cause === nativeInputClosed && !signal.aborted)
|
|
360
|
-
return;
|
|
361
|
-
failExecution(cause);
|
|
362
|
-
throw cause;
|
|
363
|
-
}
|
|
364
|
-
})());
|
|
365
|
-
for (const task of inputTasks) {
|
|
366
|
-
inputWork.add(task);
|
|
367
|
-
void task.then(() => inputWork.delete(task), () => inputWork.delete(task));
|
|
368
|
-
}
|
|
369
|
-
async function output(channel, sink) {
|
|
370
|
-
let consumerClosed;
|
|
371
|
-
const sinkFailures = new Set();
|
|
372
|
-
let destinationClosed = false;
|
|
373
|
-
const consumerClose = () => {
|
|
374
|
-
destinationClosed = true;
|
|
375
|
-
void stopOutput(channel, consumerClosed.reason).catch(failExecution);
|
|
376
|
-
};
|
|
377
|
-
try {
|
|
378
|
-
// Capability inspection can fail before any frame is delivered. Enroll
|
|
379
|
-
// those failures in invocation retirement too, so idle sibling lanes
|
|
380
|
-
// cannot keep settlement waiting after destination admission fails.
|
|
381
|
-
const capability = sink.ownedOutput;
|
|
382
|
-
// Retain the admitted destination with its receiver, just as descriptor
|
|
383
|
-
// leases retain their operations. Later frames cannot change enrollment
|
|
384
|
-
// or substitute a different writer while an accepted effect is draining.
|
|
385
|
-
const destination = capability ?? sink;
|
|
386
|
-
const write = destination.write.bind(destination);
|
|
387
|
-
consumerClosed = capability?.consumerClosed;
|
|
388
|
-
const outputSignal = consumerClosed ? AbortSignal.any([signal, consumerClosed]) : signal;
|
|
389
|
-
consumerClosed?.addEventListener('abort', consumerClose, { once: true });
|
|
390
|
-
if (consumerClosed?.aborted) {
|
|
391
|
-
destinationClosed = true;
|
|
392
|
-
await stopOutput(channel, consumerClosed.reason);
|
|
393
|
-
throw consumerClosed.reason;
|
|
394
|
-
}
|
|
395
|
-
const source = outputs.get(channel);
|
|
396
|
-
for await (const frame of decodeFrames(source, { ...limits, channels: [channel], requireEnd: true }, outputSignal)) {
|
|
397
|
-
if (frame.correlationId !== 0n)
|
|
398
|
-
throw new TypeError('Unexpected process stream correlation');
|
|
399
|
-
signal.throwIfAborted();
|
|
400
|
-
if (finalizing)
|
|
401
|
-
return;
|
|
402
|
-
if (consumerClosed?.aborted)
|
|
403
|
-
throw consumerClosed.reason;
|
|
404
|
-
if (frame.kind === 'data') {
|
|
405
|
-
const owned = capability !== undefined || descriptorSinks.has(sink);
|
|
406
|
-
const pending = Promise.resolve().then(async () => {
|
|
407
|
-
if (finalizing)
|
|
408
|
-
throw signal.reason;
|
|
409
|
-
if (destinationClosed)
|
|
410
|
-
throw consumerClosed.reason;
|
|
411
|
-
try {
|
|
412
|
-
await write(frame.payload);
|
|
413
|
-
}
|
|
414
|
-
catch (cause) {
|
|
415
|
-
sinkFailures.add(cause);
|
|
416
|
-
if (cause?.code === 'EPIPE')
|
|
417
|
-
destinationPipeClosures.add(cause);
|
|
418
|
-
throw cause;
|
|
419
|
-
}
|
|
420
|
-
// Opaque destinations cannot enroll host work in our cleanup.
|
|
421
|
-
// Observe their eventual receipt without admitting late credit
|
|
422
|
-
// after cancellation has finalized the invocation.
|
|
423
|
-
if (!owned)
|
|
424
|
-
outputSignal.throwIfAborted();
|
|
425
|
-
await acknowledge(channel, frame.sequence, frame.offset + BigInt(frame.payload.length));
|
|
426
|
-
});
|
|
427
|
-
// The invocation owns descriptor leases even when their destination
|
|
428
|
-
// has no consumer-close notification. Drain accepted writes and
|
|
429
|
-
// their credit before retiring that lease or the transport.
|
|
430
|
-
if (owned) {
|
|
431
|
-
writes.add(pending);
|
|
432
|
-
try {
|
|
433
|
-
await pending;
|
|
434
|
-
}
|
|
435
|
-
finally {
|
|
436
|
-
writes.delete(pending);
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
else {
|
|
440
|
-
let abortWrite;
|
|
441
|
-
const canceled = new Promise((_resolve, reject) => {
|
|
442
|
-
abortWrite = () => reject(outputSignal.reason);
|
|
443
|
-
outputSignal.addEventListener('abort', abortWrite, { once: true });
|
|
444
|
-
if (outputSignal.aborted)
|
|
445
|
-
abortWrite();
|
|
446
|
-
});
|
|
447
|
-
// Promise.race observes late rejection of opaque host work;
|
|
448
|
-
// cancellation only retires our await, not the host operation.
|
|
449
|
-
try {
|
|
450
|
-
await Promise.race([pending, canceled]);
|
|
451
|
-
}
|
|
452
|
-
finally {
|
|
453
|
-
outputSignal.removeEventListener('abort', abortWrite);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
else {
|
|
458
|
-
// Preserve delivery already acknowledged by the canonical destination,
|
|
459
|
-
// even if cancellation arrived during that owned write.
|
|
460
|
-
await acknowledge(channel, frame.sequence, frame.offset + BigInt(frame.payload.length));
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
catch (cause) {
|
|
465
|
-
// Closure stops new delivery; it cannot replace the receipt of an
|
|
466
|
-
// already admitted write or acknowledgement. Decoder cancellation
|
|
467
|
-
// carries the consumer's own reason when no operation failed.
|
|
468
|
-
const failure = cause;
|
|
469
|
-
// EPIPE from a credit transport is delivery uncertainty, even when
|
|
470
|
-
// the destination independently closed its pipe at the same time.
|
|
471
|
-
if (failedAcknowledgements.has(failure) && !finalizing)
|
|
472
|
-
executionFailure ??= { cause: failure };
|
|
473
|
-
// A lane read can fail independently while its consumer closes. Only
|
|
474
|
-
// that destination's own closure reason (or a failed sink write above)
|
|
475
|
-
// qualifies as a broken pipe; transport EPIPE remains uncertainty.
|
|
476
|
-
if (destinationClosed && failure === consumerClosed?.reason && !failedAcknowledgements.has(failure) && failure?.code === 'EPIPE')
|
|
477
|
-
destinationPipeClosures.add(failure);
|
|
478
|
-
if (destinationClosed || sinkFailures.has(failure)) {
|
|
479
|
-
if (!destinationPipeClosures.has(failure) && !finalizing)
|
|
480
|
-
executionFailure ??= { cause: failure };
|
|
481
|
-
try {
|
|
482
|
-
await stopOutput(channel, failure);
|
|
483
|
-
}
|
|
484
|
-
catch (cause) {
|
|
485
|
-
failExecution(cause);
|
|
486
|
-
throw cause;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
else if (!finalizing) {
|
|
490
|
-
failExecution(failure);
|
|
491
|
-
}
|
|
492
|
-
else {
|
|
493
|
-
try {
|
|
494
|
-
await stopOutput(channel, failure);
|
|
495
|
-
}
|
|
496
|
-
catch (cause) {
|
|
497
|
-
failExecution(cause);
|
|
498
|
-
throw cause;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
throw failure;
|
|
502
|
-
}
|
|
503
|
-
finally {
|
|
504
|
-
consumerClosed?.removeEventListener('abort', consumerClose);
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
const tasks = [...inputTasks, ...[...sinks].map(([channel, sink]) => output(channel, sink))];
|
|
508
|
-
const results = await Promise.allSettled(tasks);
|
|
509
|
-
context.signal.throwIfAborted();
|
|
510
|
-
if (observationFailure)
|
|
511
|
-
throw observationFailure.cause;
|
|
512
|
-
if (executionFailure)
|
|
513
|
-
throw executionFailure.cause;
|
|
514
|
-
for (const result of results)
|
|
515
|
-
if (result.status === 'rejected' && !destinationPipeClosures.has(result.reason))
|
|
516
|
-
throw result.reason;
|
|
517
|
-
// END on every lane does not imply that native termination has been
|
|
518
|
-
// observed. Cancellation must also retire this independent wait, without
|
|
519
|
-
// inventing a native outcome or bypassing the owned cleanup barrier.
|
|
520
|
-
let abortOutcome;
|
|
521
|
-
const canceledOutcome = new Promise((_resolve, reject) => {
|
|
522
|
-
abortOutcome = () => reject(signal.reason);
|
|
523
|
-
signal.addEventListener('abort', abortOutcome, { once: true });
|
|
524
|
-
if (signal.aborted)
|
|
525
|
-
abortOutcome();
|
|
526
|
-
});
|
|
527
|
-
let outcome;
|
|
528
|
-
try {
|
|
529
|
-
outcome = await Promise.race([observed, canceledOutcome]);
|
|
530
|
-
}
|
|
531
|
-
finally {
|
|
532
|
-
signal.removeEventListener('abort', abortOutcome);
|
|
533
|
-
}
|
|
534
|
-
if (outcome.kind === 'exited') {
|
|
535
|
-
return { exitCode: outcome.exitCode };
|
|
536
|
-
}
|
|
537
|
-
if (outcome.kind === 'signaled' && signalStatus) {
|
|
538
|
-
const exitCode = signalStatus(outcome.signal, outcome.signalNumber);
|
|
539
|
-
if (!Number.isInteger(exitCode) || exitCode < 0 || exitCode > 255)
|
|
540
|
-
throw new TypeError('Invalid shell signal status');
|
|
541
|
-
return { exitCode };
|
|
542
|
-
}
|
|
543
|
-
throw Object.assign(new Error('Remote process did not produce a qualified shell exit status'), { outcome });
|
|
544
|
-
})();
|
|
545
|
-
}
|
|
546
|
-
catch (cause) {
|
|
547
|
-
failure = { cause: observationFailure ? observationFailure.cause : cause };
|
|
548
|
-
}
|
|
549
|
-
finally {
|
|
550
|
-
context.signal.removeEventListener('abort', cancel);
|
|
551
|
-
}
|
|
552
|
-
let cleanupFailure;
|
|
553
|
-
try {
|
|
554
|
-
await close();
|
|
555
|
-
}
|
|
556
|
-
catch (cause) {
|
|
557
|
-
cleanupFailure = { cause };
|
|
558
|
-
}
|
|
559
|
-
if (cleanupFailure && (context.signal.aborted || failure && context.onInternalError)) {
|
|
560
|
-
// The shell owns primary-error precedence, but local retirement is not
|
|
561
|
-
// proof of remote death. Keep the cleanup observation available to the host.
|
|
562
|
-
try {
|
|
563
|
-
await context.onInternalError?.(cleanupFailure.cause);
|
|
564
|
-
}
|
|
565
|
-
catch { /* A diagnostic hook cannot replace the primary shell failure. */ }
|
|
566
|
-
context.signal.throwIfAborted();
|
|
567
|
-
throw failure.cause;
|
|
568
|
-
}
|
|
569
|
-
context.signal.throwIfAborted();
|
|
570
|
-
if (failure && cleanupFailure)
|
|
571
|
-
throw new AggregateError([failure.cause, cleanupFailure.cause], 'Remote invocation and cleanup failed', { cause: failure.cause });
|
|
572
|
-
if (failure)
|
|
573
|
-
throw failure.cause;
|
|
574
|
-
if (cleanupFailure)
|
|
575
|
-
throw cleanupFailure.cause;
|
|
576
|
-
return result;
|
|
577
|
-
}
|