@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,607 +0,0 @@
|
|
|
1
|
-
import { parseWireJson } from './wire-json.js';
|
|
2
|
-
import { binaryContentType, decodeFrames } from './binary.js';
|
|
3
|
-
import { RemoteExecutionError, UnrecoverableTransportError } from './client.js';
|
|
4
|
-
import { validateWire } from './wire-validation.js';
|
|
5
|
-
function path(identity) { return `/v1/sessions/${encodeURIComponent(identity.sessionId)}/jobs/${encodeURIComponent(identity.jobId)}/process`; }
|
|
6
|
-
async function bytes(body, max, signal) {
|
|
7
|
-
if (!body)
|
|
8
|
-
throw new TypeError('Missing process document');
|
|
9
|
-
const reader = body.getReader();
|
|
10
|
-
const chunks = [];
|
|
11
|
-
let size = 0;
|
|
12
|
-
const abort = () => { void reader.cancel(signal.reason).catch(() => { }); };
|
|
13
|
-
signal.addEventListener('abort', abort, { once: true });
|
|
14
|
-
try {
|
|
15
|
-
signal.throwIfAborted();
|
|
16
|
-
for (;;) {
|
|
17
|
-
const result = await reader.read();
|
|
18
|
-
signal.throwIfAborted();
|
|
19
|
-
if (result.done)
|
|
20
|
-
break;
|
|
21
|
-
if (!(result.value instanceof Uint8Array))
|
|
22
|
-
throw new TypeError('Process document bytes required');
|
|
23
|
-
const length = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(result.value);
|
|
24
|
-
if (length > max - size)
|
|
25
|
-
throw new TypeError('Process document exceeds admission');
|
|
26
|
-
const owned = new Uint8Array(length);
|
|
27
|
-
Uint8Array.prototype.set.call(owned, result.value);
|
|
28
|
-
chunks.push(owned);
|
|
29
|
-
size += length;
|
|
30
|
-
}
|
|
31
|
-
const value = new Uint8Array(size);
|
|
32
|
-
let offset = 0;
|
|
33
|
-
for (const chunk of chunks) {
|
|
34
|
-
value.set(chunk, offset);
|
|
35
|
-
offset += chunk.length;
|
|
36
|
-
}
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
39
|
-
finally {
|
|
40
|
-
signal.removeEventListener('abort', abort);
|
|
41
|
-
await reader.cancel().catch(() => { });
|
|
42
|
-
reader.releaseLock();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async function document(body, signal) { return parseWireJson(new TextDecoder('utf-8', { fatal: true }).decode(await bytes(body, 4096, signal))); }
|
|
46
|
-
function record(value, keys) {
|
|
47
|
-
if (!value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).length !== keys.length || keys.some(key => !Object.hasOwn(value, key)))
|
|
48
|
-
throw new TypeError('Invalid process control');
|
|
49
|
-
}
|
|
50
|
-
function integer(value) { if (!Number.isSafeInteger(value) || Number(value) < 1 || Number(value) > 1024)
|
|
51
|
-
throw new TypeError('Invalid process stream'); return value; }
|
|
52
|
-
function offset(value) { validateWire('Uint64', value); return BigInt(value); }
|
|
53
|
-
/** Mount only for a job admitted by the authenticated isolation/session owner.
|
|
54
|
-
* There is no executable, argv, descriptor acquisition or launch endpoint.
|
|
55
|
-
* authorize must validate current principal/session/job authority on every call.
|
|
56
|
-
* The owning job retains lease expiry, disposal and delegate reaping authority. */
|
|
57
|
-
export function createProcessHttpHandler(options) {
|
|
58
|
-
options = { ...options };
|
|
59
|
-
if (!Number.isSafeInteger(options.maxRequests) || options.maxRequests < 1)
|
|
60
|
-
throw new TypeError('Invalid process request bound');
|
|
61
|
-
const identity = { ...options.identity };
|
|
62
|
-
const prefix = path(identity);
|
|
63
|
-
const connection = options.connection;
|
|
64
|
-
const maxRequests = options.maxRequests;
|
|
65
|
-
const stdinKind = connection.stdinKind;
|
|
66
|
-
const maxFrameBytes = connection.maxFrameBytes;
|
|
67
|
-
const suppliedInputs = connection.inputChannels ?? (stdinKind === 'pipe' ? [1] : []);
|
|
68
|
-
const suppliedOutputs = connection.outputs;
|
|
69
|
-
if (!Array.isArray(suppliedInputs) || suppliedInputs.length > 64 || suppliedOutputs.size > 64
|
|
70
|
-
|| !['pipe', 'descriptor'].includes(stdinKind) || !Number.isSafeInteger(maxFrameBytes) || maxFrameBytes < 1 || maxFrameBytes > 1048576)
|
|
71
|
-
throw new TypeError('Invalid process lane capacity');
|
|
72
|
-
// Lane identity and credit are fixed admission authority, including across
|
|
73
|
-
// asynchronous authorization. A mutable connector cannot replace a borrowed
|
|
74
|
-
// stream or enlarge a frame allocation after the handler is mounted.
|
|
75
|
-
const inputs = Array.from({ length: suppliedInputs.length }, (_, index) => {
|
|
76
|
-
if (!Object.hasOwn(suppliedInputs, index))
|
|
77
|
-
throw new TypeError('Invalid process lane capacity');
|
|
78
|
-
return integer(suppliedInputs[index]);
|
|
79
|
-
});
|
|
80
|
-
const outputs = new Map(suppliedOutputs);
|
|
81
|
-
if (new Set(inputs).size !== inputs.length || inputs.includes(2) || inputs.includes(3)
|
|
82
|
-
|| inputs.includes(1) !== (stdinKind === 'pipe') || outputs.has(1) || !outputs.has(2) || !outputs.has(3) || outputs.size > 64)
|
|
83
|
-
throw new TypeError('Invalid process lane capacity');
|
|
84
|
-
const lanes = [...inputs.map(channel => 'POST:' + channel + '/frames'), ...[...outputs.keys()].flatMap(channel => {
|
|
85
|
-
integer(channel);
|
|
86
|
-
return ['GET:' + channel + '/frames', 'POST:' + channel + '/ack', 'POST:' + channel + '/close-output'];
|
|
87
|
-
})];
|
|
88
|
-
// Fixed admitted lane budgets prevent a blocked native descriptor from
|
|
89
|
-
// starving another descriptor. Observation and control have independent
|
|
90
|
-
// bounds too; unadmitted routes cannot allocate new capacity entries.
|
|
91
|
-
const active = new Map(['data', 'control', 'outcome', ...lanes].map(key => [key, 0]));
|
|
92
|
-
const json = (value, status = 200) => Response.json(value, { status, headers: { 'Execution-Epoch': identity.epoch, 'Cache-Control': 'no-store' } });
|
|
93
|
-
return async (request) => {
|
|
94
|
-
const url = new URL(request.url);
|
|
95
|
-
const route = url.pathname.startsWith(prefix + '/') ? url.pathname.slice(prefix.length + 1).split('/') : [];
|
|
96
|
-
const control = request.method === 'POST' && !url.search && (route.length === 1 && ['close', 'signal'].includes(route[0])
|
|
97
|
-
|| route.length === 2 && ['ack', 'close-output'].includes(route[1]));
|
|
98
|
-
const outcome = request.method === 'GET' && !url.search && route.length === 1 && route[0] === 'outcome';
|
|
99
|
-
const lane = route.length === 2 ? request.method + ':' + route.join('/') : undefined;
|
|
100
|
-
const capacity = lane && active.has(lane) ? lane : control ? 'control' : outcome ? 'outcome' : 'data';
|
|
101
|
-
if (active.get(capacity) >= maxRequests)
|
|
102
|
-
return json({ code: 'admissionBound' }, 429);
|
|
103
|
-
active.set(capacity, active.get(capacity) + 1);
|
|
104
|
-
try {
|
|
105
|
-
if (!await options.authorize(request))
|
|
106
|
-
return json({ code: 'authorization' }, 403);
|
|
107
|
-
if (request.headers.get('Execution-Protocol') !== '1')
|
|
108
|
-
return json({ code: 'protocol' }, 400);
|
|
109
|
-
if (request.headers.get('Execution-Epoch') !== identity.epoch)
|
|
110
|
-
return json({ code: 'epochLost' }, 410);
|
|
111
|
-
if (url.search || !url.pathname.startsWith(prefix + '/'))
|
|
112
|
-
return json({ code: 'notFound' }, 404);
|
|
113
|
-
request.signal.throwIfAborted();
|
|
114
|
-
if (route.length === 1 && route[0] === 'metadata' && request.method === 'GET')
|
|
115
|
-
return json({ stdinKind, maxFrameBytes, inputChannels: inputs, outputChannels: [...outputs.keys()] });
|
|
116
|
-
if (route.length === 1 && route[0] === 'outcome' && request.method === 'GET') {
|
|
117
|
-
let abort;
|
|
118
|
-
const canceled = new Promise((_, reject) => { abort = () => reject(request.signal.reason); request.signal.addEventListener('abort', abort, { once: true }); });
|
|
119
|
-
try {
|
|
120
|
-
return json(await Promise.race([connection.outcome, canceled]));
|
|
121
|
-
}
|
|
122
|
-
finally {
|
|
123
|
-
request.signal.removeEventListener('abort', abort);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (route.length === 1 && route[0] === 'close' && request.method === 'POST') {
|
|
127
|
-
await connection.close();
|
|
128
|
-
return json({ closed: true });
|
|
129
|
-
}
|
|
130
|
-
if (route.length === 1 && route[0] === 'signal' && request.method === 'POST') {
|
|
131
|
-
const value = await document(request.body, request.signal);
|
|
132
|
-
record(value, ['name', ...(value && typeof value === 'object' && Object.hasOwn(value, 'number') ? ['number'] : []), ...(value && typeof value === 'object' && Object.hasOwn(value, 'target') ? ['target'] : [])]);
|
|
133
|
-
if (typeof value.name !== 'string' || !value.name || value.name.includes('\0') || value.number !== undefined && (!Number.isSafeInteger(value.number) || Number(value.number) < 1 || Number(value.number) > 255) || value.target !== undefined && value.target !== 'process-group' || !connection.signal)
|
|
134
|
-
throw new TypeError('Invalid admitted signal');
|
|
135
|
-
if (!await options.authorize(request))
|
|
136
|
-
return json({ code: 'authorization' }, 403);
|
|
137
|
-
request.signal.throwIfAborted();
|
|
138
|
-
await connection.signal(value.name, value.number, value.target);
|
|
139
|
-
return json({ accepted: true });
|
|
140
|
-
}
|
|
141
|
-
if (route.length !== 2)
|
|
142
|
-
return json({ code: 'notFound' }, 404);
|
|
143
|
-
const channel = integer(Number(route[0]));
|
|
144
|
-
if (String(channel) !== route[0])
|
|
145
|
-
throw new TypeError('Invalid process stream');
|
|
146
|
-
// The authenticated connection's directional lanes are the descriptor
|
|
147
|
-
// authority. A bounded control slot does not admit an arbitrary stream ID.
|
|
148
|
-
if (!lane || !active.has(lane))
|
|
149
|
-
return json({ code: 'notFound' }, 404);
|
|
150
|
-
if (route[1] === 'frames' && request.method === 'GET') {
|
|
151
|
-
const source = outputs.get(channel);
|
|
152
|
-
if (!source)
|
|
153
|
-
return json({ code: 'notFound' }, 404);
|
|
154
|
-
if (source.locked)
|
|
155
|
-
return json({ code: 'consumerBusy' }, 409);
|
|
156
|
-
// Network body consumption never returns native credit. Only /ack does.
|
|
157
|
-
let reader;
|
|
158
|
-
let released;
|
|
159
|
-
const abort = () => { void release(request.signal.reason).catch(() => { }); };
|
|
160
|
-
request.signal.addEventListener('abort', abort, { once: true });
|
|
161
|
-
try {
|
|
162
|
-
reader = source.getReader();
|
|
163
|
-
}
|
|
164
|
-
catch (cause) {
|
|
165
|
-
request.signal.removeEventListener('abort', abort);
|
|
166
|
-
throw cause;
|
|
167
|
-
}
|
|
168
|
-
function release(cause) {
|
|
169
|
-
released ??= (async () => { request.signal.removeEventListener('abort', abort); try {
|
|
170
|
-
await reader.cancel(cause);
|
|
171
|
-
}
|
|
172
|
-
finally {
|
|
173
|
-
reader.releaseLock();
|
|
174
|
-
} })();
|
|
175
|
-
return released;
|
|
176
|
-
}
|
|
177
|
-
const body = new ReadableStream({ async pull(controller) {
|
|
178
|
-
try {
|
|
179
|
-
request.signal.throwIfAborted();
|
|
180
|
-
if (!await options.authorize(request))
|
|
181
|
-
throw new Error('Process stream authority expired');
|
|
182
|
-
const result = await reader.read();
|
|
183
|
-
request.signal.throwIfAborted();
|
|
184
|
-
if (!await options.authorize(request))
|
|
185
|
-
throw new Error('Process stream authority expired');
|
|
186
|
-
if (result.done) {
|
|
187
|
-
await release();
|
|
188
|
-
controller.close();
|
|
189
|
-
}
|
|
190
|
-
else
|
|
191
|
-
controller.enqueue(result.value);
|
|
192
|
-
}
|
|
193
|
-
catch (cause) {
|
|
194
|
-
await release(cause);
|
|
195
|
-
controller.error(cause);
|
|
196
|
-
}
|
|
197
|
-
}, cancel: release }, { highWaterMark: 0 });
|
|
198
|
-
return new Response(body, { headers: { 'Content-Type': binaryContentType, 'Execution-Epoch': identity.epoch, 'Cache-Control': 'no-store', 'X-Accel-Buffering': 'no' } });
|
|
199
|
-
}
|
|
200
|
-
if (route[1] === 'frames' && request.method === 'POST') {
|
|
201
|
-
if (request.headers.get('Content-Type') !== binaryContentType)
|
|
202
|
-
throw new TypeError('Binary process frame required');
|
|
203
|
-
const expected = offset(request.headers.get('Execution-Offset'));
|
|
204
|
-
const frame = await bytes(request.body, 40 + maxFrameBytes, request.signal);
|
|
205
|
-
if (!await options.authorize(request))
|
|
206
|
-
return json({ code: 'authorization' }, 403);
|
|
207
|
-
return json({ offset: String(await connection.send(channel, frame, expected, request.signal)) });
|
|
208
|
-
}
|
|
209
|
-
if (route[1] === 'ack' && request.method === 'POST') {
|
|
210
|
-
const value = await document(request.body, request.signal);
|
|
211
|
-
record(value, ['sequence', 'offset']);
|
|
212
|
-
const sequence = offset(value.sequence);
|
|
213
|
-
const position = offset(value.offset);
|
|
214
|
-
if (!await options.authorize(request))
|
|
215
|
-
return json({ code: 'authorization' }, 403);
|
|
216
|
-
request.signal.throwIfAborted();
|
|
217
|
-
await connection.ack(channel, sequence, position);
|
|
218
|
-
return json({ accepted: true });
|
|
219
|
-
}
|
|
220
|
-
if (route[1] === 'close-output' && request.method === 'POST') {
|
|
221
|
-
const value = await document(request.body, request.signal);
|
|
222
|
-
record(value, ['code']);
|
|
223
|
-
if (value.code !== 'EPIPE')
|
|
224
|
-
throw new TypeError('Invalid destination closure');
|
|
225
|
-
if (!await options.authorize(request))
|
|
226
|
-
return json({ code: 'authorization' }, 403);
|
|
227
|
-
request.signal.throwIfAborted();
|
|
228
|
-
await connection.closeOutput(channel, Object.assign(new Error('Remote destination closed'), { code: 'EPIPE' }));
|
|
229
|
-
return json({ accepted: true });
|
|
230
|
-
}
|
|
231
|
-
return json({ code: 'notFound' }, 404);
|
|
232
|
-
}
|
|
233
|
-
catch (cause) {
|
|
234
|
-
return json({ code: cause?.code === 'EPIPE' ? 'EPIPE' : 'processOperationFailed' }, cause?.code === 'EPIPE' ? 409 : 503);
|
|
235
|
-
}
|
|
236
|
-
finally {
|
|
237
|
-
active.set(capacity, active.get(capacity) - 1);
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
/** Portable paired HTTPS transport. Frame credits reflect native acceptance and
|
|
242
|
-
* canonical destination delivery; fetch/WebSocket buffering supplies no credit.
|
|
243
|
-
* Ack/cleanup use independent bounded requests so invocation cancellation cannot
|
|
244
|
-
* erase effects already accepted by an owned destination. */
|
|
245
|
-
export async function connectHttpProcess(options, signal) {
|
|
246
|
-
options = { ...options };
|
|
247
|
-
const origin = new URL(options.baseUrl);
|
|
248
|
-
if (origin.protocol !== 'https:' || origin.username || origin.password || origin.search || origin.hash || origin.pathname !== '/')
|
|
249
|
-
throw new TypeError('An authenticated HTTPS origin is required');
|
|
250
|
-
const identity = { ...options.identity };
|
|
251
|
-
const prefix = path(identity);
|
|
252
|
-
const transport = options.fetch ?? globalThis.fetch;
|
|
253
|
-
const timeout = options.requestTimeoutMs ?? 5000;
|
|
254
|
-
const owner = new AbortController();
|
|
255
|
-
const lifetime = AbortSignal.any([signal, owner.signal]);
|
|
256
|
-
let finalized = false;
|
|
257
|
-
let acquisitionDispatched = false;
|
|
258
|
-
const outputWork = new Set();
|
|
259
|
-
const inputWork = new Set();
|
|
260
|
-
const deliveries = new Set();
|
|
261
|
-
const activeControls = new Set();
|
|
262
|
-
if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 2147483647)
|
|
263
|
-
throw new TypeError('Invalid process request timeout');
|
|
264
|
-
async function request(route, method, body, borrowed, binary = false, expected) {
|
|
265
|
-
const controller = new AbortController();
|
|
266
|
-
const timer = setTimeout(() => controller.abort(new Error('Process request timed out')), timeout);
|
|
267
|
-
const bounded = controller.signal;
|
|
268
|
-
const credentialSignal = borrowed ? AbortSignal.any([borrowed, bounded]) : bounded;
|
|
269
|
-
const persistent = method === 'GET' && (route === 'outcome' || route.endsWith('/frames'));
|
|
270
|
-
const requestSignal = persistent ? (borrowed ?? new AbortController().signal) : credentialSignal;
|
|
271
|
-
requestSignal.throwIfAborted();
|
|
272
|
-
const credential = Promise.resolve().then(() => options.token());
|
|
273
|
-
void credential.catch(() => { });
|
|
274
|
-
let abort;
|
|
275
|
-
const canceled = new Promise((_, reject) => { abort = () => reject(credentialSignal.reason); credentialSignal.addEventListener('abort', abort, { once: true }); });
|
|
276
|
-
let token;
|
|
277
|
-
try {
|
|
278
|
-
credentialSignal.throwIfAborted();
|
|
279
|
-
token = await Promise.race([credential, canceled]);
|
|
280
|
-
}
|
|
281
|
-
catch (cause) {
|
|
282
|
-
clearTimeout(timer);
|
|
283
|
-
if (borrowed?.aborted)
|
|
284
|
-
throw borrowed.reason;
|
|
285
|
-
throw new RemoteExecutionError('Process credentials unavailable', 'notAccepted', identity, 401, { cause });
|
|
286
|
-
}
|
|
287
|
-
finally {
|
|
288
|
-
credentialSignal.removeEventListener('abort', abort);
|
|
289
|
-
}
|
|
290
|
-
if (persistent)
|
|
291
|
-
clearTimeout(timer);
|
|
292
|
-
requestSignal.throwIfAborted();
|
|
293
|
-
const headers = new Headers({ 'Authorization': 'Bearer ' + token, 'Execution-Epoch': identity.epoch, 'Execution-Protocol': '1' });
|
|
294
|
-
if (body !== undefined)
|
|
295
|
-
headers.set('Content-Type', binary ? binaryContentType : 'application/json');
|
|
296
|
-
if (expected !== undefined)
|
|
297
|
-
headers.set('Execution-Offset', String(expected));
|
|
298
|
-
let response;
|
|
299
|
-
try {
|
|
300
|
-
if (route === 'metadata')
|
|
301
|
-
acquisitionDispatched = true;
|
|
302
|
-
response = await transport(new URL(prefix + '/' + route, origin), { method, body, headers, signal: requestSignal, redirect: 'error' });
|
|
303
|
-
}
|
|
304
|
-
catch (cause) {
|
|
305
|
-
clearTimeout(timer);
|
|
306
|
-
if (borrowed?.aborted)
|
|
307
|
-
throw borrowed.reason;
|
|
308
|
-
throw new RemoteExecutionError('Process transport interrupted', 'unknown', identity, undefined, { cause });
|
|
309
|
-
}
|
|
310
|
-
if (!response.ok || response.headers.get('Execution-Epoch') !== identity.epoch) {
|
|
311
|
-
if (route === 'metadata')
|
|
312
|
-
acquisitionDispatched = false;
|
|
313
|
-
try {
|
|
314
|
-
if (response.status === 409 && response.headers.get('Execution-Epoch') === identity.epoch && binary) {
|
|
315
|
-
const error = await document(response.body, requestSignal);
|
|
316
|
-
record(error, ['code']);
|
|
317
|
-
if (error.code === 'EPIPE')
|
|
318
|
-
throw Object.assign(new Error('Native process input closed'), { code: 'EPIPE' });
|
|
319
|
-
}
|
|
320
|
-
if (response.status === 410 || response.ok && response.headers.get('Execution-Epoch') !== identity.epoch)
|
|
321
|
-
throw new UnrecoverableTransportError(identity);
|
|
322
|
-
throw new RemoteExecutionError('Process transport admission failed', 'unknown', identity, response.status);
|
|
323
|
-
}
|
|
324
|
-
finally {
|
|
325
|
-
clearTimeout(timer);
|
|
326
|
-
await response.body?.cancel().catch(() => { });
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
return { response, requestSignal, dispose() { clearTimeout(timer); } };
|
|
330
|
-
}
|
|
331
|
-
async function control(route, method, body, borrowed) {
|
|
332
|
-
// Admit before credentials or dispatch. Each destination's credit and closure
|
|
333
|
-
// have separate slots; neither competes with signals or invocation retirement.
|
|
334
|
-
if (method === 'POST') {
|
|
335
|
-
if (activeControls.has(route))
|
|
336
|
-
throw new TypeError('Process control admission limit');
|
|
337
|
-
activeControls.add(route);
|
|
338
|
-
}
|
|
339
|
-
try {
|
|
340
|
-
const result = await request(route, method, body === undefined ? undefined : JSON.stringify(body), borrowed);
|
|
341
|
-
try {
|
|
342
|
-
const value = await document(result.response.body, result.requestSignal);
|
|
343
|
-
if (route === 'close') {
|
|
344
|
-
record(value, ['closed']);
|
|
345
|
-
if (value.closed !== true)
|
|
346
|
-
throw new TypeError('Missing process retirement acknowledgement');
|
|
347
|
-
}
|
|
348
|
-
else if (method === 'POST') {
|
|
349
|
-
record(value, ['accepted']);
|
|
350
|
-
if (value.accepted !== true)
|
|
351
|
-
throw new TypeError('Missing process control acknowledgement');
|
|
352
|
-
}
|
|
353
|
-
return value;
|
|
354
|
-
}
|
|
355
|
-
catch (cause) {
|
|
356
|
-
if (borrowed?.aborted)
|
|
357
|
-
throw borrowed.reason;
|
|
358
|
-
throw new RemoteExecutionError('Process control delivery interrupted', 'unknown', identity, undefined, { cause });
|
|
359
|
-
}
|
|
360
|
-
finally {
|
|
361
|
-
result.dispose();
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
finally {
|
|
365
|
-
if (method === 'POST')
|
|
366
|
-
activeControls.delete(route);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
try {
|
|
370
|
-
const metadata = await control('metadata', 'GET', undefined, lifetime);
|
|
371
|
-
record(metadata, ['stdinKind', 'maxFrameBytes', 'inputChannels', 'outputChannels']);
|
|
372
|
-
if (!['pipe', 'descriptor'].includes(metadata.stdinKind) || !Number.isSafeInteger(metadata.maxFrameBytes) || Number(metadata.maxFrameBytes) < 1 || Number(metadata.maxFrameBytes) > 1048576 || !Array.isArray(metadata.inputChannels) || !Array.isArray(metadata.outputChannels))
|
|
373
|
-
throw new TypeError('Invalid process lane admission');
|
|
374
|
-
if (metadata.inputChannels.length > 64 || metadata.outputChannels.length > 64)
|
|
375
|
-
throw new TypeError('Invalid process lane admission');
|
|
376
|
-
const inputs = Object.freeze(metadata.inputChannels.map(integer));
|
|
377
|
-
const channels = metadata.outputChannels.map(integer);
|
|
378
|
-
if (new Set(inputs).size !== inputs.length || new Set(channels).size !== channels.length || !channels.includes(2) || !channels.includes(3) || channels.includes(1) || inputs.includes(2) || inputs.includes(3) || inputs.includes(1) !== (metadata.stdinKind === 'pipe'))
|
|
379
|
-
throw new TypeError('Invalid process lane admission');
|
|
380
|
-
const inputBusy = new Set();
|
|
381
|
-
const inputEnded = new Set();
|
|
382
|
-
const inputSequences = new Map();
|
|
383
|
-
const inputOffsets = new Map();
|
|
384
|
-
const inputFailures = new Map();
|
|
385
|
-
const readers = new Set();
|
|
386
|
-
const outputs = new Map(channels.map(channel => {
|
|
387
|
-
let reader;
|
|
388
|
-
return [channel, new ReadableStream({
|
|
389
|
-
async pull(controller) {
|
|
390
|
-
const operation = (async () => {
|
|
391
|
-
try {
|
|
392
|
-
lifetime.throwIfAborted();
|
|
393
|
-
if (!reader) {
|
|
394
|
-
const { response } = await request(channel + '/frames', 'GET', undefined, lifetime);
|
|
395
|
-
if (finalized || lifetime.aborted) {
|
|
396
|
-
await response.body?.cancel().catch(() => { });
|
|
397
|
-
lifetime.throwIfAborted();
|
|
398
|
-
throw new Error('Process transport finalized');
|
|
399
|
-
}
|
|
400
|
-
if (response.headers.get('Content-Type') !== binaryContentType || !response.body) {
|
|
401
|
-
await response.body?.cancel();
|
|
402
|
-
throw new TypeError('Invalid process binary response');
|
|
403
|
-
}
|
|
404
|
-
reader = response.body.getReader();
|
|
405
|
-
readers.add(reader);
|
|
406
|
-
}
|
|
407
|
-
const result = await reader.read();
|
|
408
|
-
lifetime.throwIfAborted();
|
|
409
|
-
if (result.done) {
|
|
410
|
-
readers.delete(reader);
|
|
411
|
-
reader.releaseLock();
|
|
412
|
-
controller.close();
|
|
413
|
-
}
|
|
414
|
-
else
|
|
415
|
-
controller.enqueue(result.value);
|
|
416
|
-
}
|
|
417
|
-
catch (cause) {
|
|
418
|
-
// A failed body cannot be resumed through this reader. Retire its local
|
|
419
|
-
// ownership without mistaking reader cancellation failure for group loss.
|
|
420
|
-
if (reader) {
|
|
421
|
-
readers.delete(reader);
|
|
422
|
-
await reader.cancel(cause).catch(() => { });
|
|
423
|
-
reader.releaseLock();
|
|
424
|
-
reader = undefined;
|
|
425
|
-
}
|
|
426
|
-
controller.error(lifetime.aborted ? lifetime.reason : cause instanceof RemoteExecutionError ? cause : new RemoteExecutionError('Process output delivery interrupted', 'unknown', identity, undefined, { cause }));
|
|
427
|
-
}
|
|
428
|
-
})();
|
|
429
|
-
outputWork.add(operation);
|
|
430
|
-
try {
|
|
431
|
-
await operation;
|
|
432
|
-
}
|
|
433
|
-
finally {
|
|
434
|
-
outputWork.delete(operation);
|
|
435
|
-
}
|
|
436
|
-
},
|
|
437
|
-
async cancel(cause) {
|
|
438
|
-
if (reader) {
|
|
439
|
-
// A blocked pull can retire/reset the shared reader while cancellation
|
|
440
|
-
// settles. Release the same acquired reader without replacing its failure.
|
|
441
|
-
const retiring = reader;
|
|
442
|
-
readers.delete(retiring);
|
|
443
|
-
try {
|
|
444
|
-
await retiring.cancel(cause);
|
|
445
|
-
}
|
|
446
|
-
finally {
|
|
447
|
-
retiring.releaseLock();
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
},
|
|
451
|
-
}, { highWaterMark: 0 })];
|
|
452
|
-
}));
|
|
453
|
-
const outcome = control('outcome', 'GET', undefined, lifetime).then(value => { validateWire('Outcome', value); return value; });
|
|
454
|
-
void outcome.catch(() => { });
|
|
455
|
-
let closing;
|
|
456
|
-
return { stdinKind: metadata.stdinKind, maxFrameBytes: metadata.maxFrameBytes, inputChannels: inputs, outputs, outcome,
|
|
457
|
-
async send(channel, frame, expected, caller) {
|
|
458
|
-
if (finalized)
|
|
459
|
-
throw new TypeError('Process transport finalized');
|
|
460
|
-
if (inputFailures.has(channel))
|
|
461
|
-
throw inputFailures.get(channel);
|
|
462
|
-
const admittedSignal = AbortSignal.any([caller, lifetime]);
|
|
463
|
-
admittedSignal.throwIfAborted();
|
|
464
|
-
if (!inputs.includes(channel) || inputBusy.has(channel) || inputEnded.has(channel)
|
|
465
|
-
|| !(frame instanceof Uint8Array)
|
|
466
|
-
|| typeof expected !== 'bigint' || expected < 0n || expected > 18446744073709551615n)
|
|
467
|
-
throw new TypeError('Invalid process input credit');
|
|
468
|
-
// Admit the intrinsic byte span before allocation. Borrowed producers can
|
|
469
|
-
// shadow instance properties; those properties cannot widen lane credit or
|
|
470
|
-
// replace the bytes whose native acceptance we will acknowledge.
|
|
471
|
-
const prototype = Object.getPrototypeOf(Uint8Array.prototype);
|
|
472
|
-
const length = Object.getOwnPropertyDescriptor(prototype, 'byteLength').get.call(frame);
|
|
473
|
-
if (length < 40 || length > 40 + Number(metadata.maxFrameBytes))
|
|
474
|
-
throw new TypeError('Invalid process input credit');
|
|
475
|
-
const buffer = Object.getOwnPropertyDescriptor(prototype, 'buffer').get.call(frame);
|
|
476
|
-
const byteOffset = Object.getOwnPropertyDescriptor(prototype, 'byteOffset').get.call(frame);
|
|
477
|
-
if (new DataView(buffer, byteOffset, length).getUint32(12) !== length - 40)
|
|
478
|
-
throw new TypeError('Invalid process input credit');
|
|
479
|
-
const owned = new Uint8Array(length);
|
|
480
|
-
Uint8Array.prototype.set.call(owned, frame);
|
|
481
|
-
frame = owned;
|
|
482
|
-
inputBusy.add(channel);
|
|
483
|
-
const operation = (async () => {
|
|
484
|
-
const source = new ReadableStream({ start(controller) { controller.enqueue(frame); controller.close(); } });
|
|
485
|
-
let sequence = 0n;
|
|
486
|
-
let ended = false;
|
|
487
|
-
for await (const decoded of decodeFrames(source, { channels: [channel], maxFrameBytes: Number(metadata.maxFrameBytes), maxControlBytes: Number(metadata.maxFrameBytes), firstSequence: inputSequences.get(channel) ?? 1n, offsets: new Map([[channel, inputOffsets.get(channel) ?? 0n]]) }, admittedSignal)) {
|
|
488
|
-
if (decoded.kind === 'control' || decoded.correlationId !== 0n || decoded.offset + BigInt(decoded.payload.length) !== expected)
|
|
489
|
-
throw new TypeError('Invalid process input credit');
|
|
490
|
-
sequence = decoded.sequence;
|
|
491
|
-
ended = decoded.kind === 'end';
|
|
492
|
-
}
|
|
493
|
-
try {
|
|
494
|
-
const result = await request(channel + '/frames', 'POST', frame, admittedSignal, true, expected);
|
|
495
|
-
try {
|
|
496
|
-
const value = await document(result.response.body, result.requestSignal);
|
|
497
|
-
record(value, ['offset']);
|
|
498
|
-
const accepted = offset(value.offset);
|
|
499
|
-
if (accepted !== expected)
|
|
500
|
-
throw new TypeError('Native input credit offset conflict');
|
|
501
|
-
inputSequences.set(channel, sequence + 1n);
|
|
502
|
-
inputOffsets.set(channel, accepted);
|
|
503
|
-
if (ended)
|
|
504
|
-
inputEnded.add(channel);
|
|
505
|
-
return accepted;
|
|
506
|
-
}
|
|
507
|
-
catch (cause) {
|
|
508
|
-
if (admittedSignal.aborted)
|
|
509
|
-
throw admittedSignal.reason;
|
|
510
|
-
throw cause instanceof RemoteExecutionError ? cause : new RemoteExecutionError('Process input receipt interrupted; native acceptance unknown', 'unknown', identity, undefined, { cause });
|
|
511
|
-
}
|
|
512
|
-
finally {
|
|
513
|
-
result.dispose();
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
catch (cause) {
|
|
517
|
-
// A missing native receipt is not authority to repeat a write at the old
|
|
518
|
-
// offset. Retire only this input; siblings retain their independent credit.
|
|
519
|
-
if (!(cause instanceof RemoteExecutionError && cause.phase === 'notAccepted'))
|
|
520
|
-
inputFailures.set(channel, cause);
|
|
521
|
-
throw cause;
|
|
522
|
-
}
|
|
523
|
-
})();
|
|
524
|
-
inputWork.add(operation);
|
|
525
|
-
try {
|
|
526
|
-
return await operation;
|
|
527
|
-
}
|
|
528
|
-
finally {
|
|
529
|
-
inputWork.delete(operation);
|
|
530
|
-
inputBusy.delete(channel);
|
|
531
|
-
}
|
|
532
|
-
},
|
|
533
|
-
async ack(channel, sequence, position) {
|
|
534
|
-
if (finalized)
|
|
535
|
-
throw new TypeError('Process transport finalized');
|
|
536
|
-
if (!channels.includes(channel) || typeof sequence !== 'bigint' || sequence < 1n || sequence > 18446744073709551615n
|
|
537
|
-
|| typeof position !== 'bigint' || position < 0n || position > 18446744073709551615n)
|
|
538
|
-
throw new TypeError('Invalid process output credit');
|
|
539
|
-
const operation = control(channel + '/ack', 'POST', { sequence: String(sequence), offset: String(position) });
|
|
540
|
-
deliveries.add(operation);
|
|
541
|
-
try {
|
|
542
|
-
await operation;
|
|
543
|
-
}
|
|
544
|
-
finally {
|
|
545
|
-
deliveries.delete(operation);
|
|
546
|
-
}
|
|
547
|
-
},
|
|
548
|
-
async closeOutput(channel) { if (finalized)
|
|
549
|
-
throw new TypeError('Process transport finalized'); if (!channels.includes(channel))
|
|
550
|
-
throw new TypeError('Invalid process output channel'); const operation = control(channel + '/close-output', 'POST', { code: 'EPIPE' }); deliveries.add(operation); try {
|
|
551
|
-
await operation;
|
|
552
|
-
}
|
|
553
|
-
finally {
|
|
554
|
-
deliveries.delete(operation);
|
|
555
|
-
} },
|
|
556
|
-
async signal(name, number, target) {
|
|
557
|
-
if (finalized)
|
|
558
|
-
throw new TypeError('Process transport finalized');
|
|
559
|
-
if (typeof name !== 'string' || !name || name.includes('\0') || number !== undefined && (!Number.isSafeInteger(number) || number < 1 || number > 255)
|
|
560
|
-
|| target !== undefined && target !== 'process-group')
|
|
561
|
-
throw new TypeError('Invalid admitted signal');
|
|
562
|
-
const operation = control('signal', 'POST', { name, number, target });
|
|
563
|
-
deliveries.add(operation);
|
|
564
|
-
try {
|
|
565
|
-
await operation;
|
|
566
|
-
}
|
|
567
|
-
finally {
|
|
568
|
-
deliveries.delete(operation);
|
|
569
|
-
}
|
|
570
|
-
},
|
|
571
|
-
close() {
|
|
572
|
-
if (!closing) {
|
|
573
|
-
finalized = true;
|
|
574
|
-
owner.abort(new Error('Process transport finalized'));
|
|
575
|
-
closing = (async () => {
|
|
576
|
-
const delivered = await Promise.allSettled([...deliveries]);
|
|
577
|
-
const results = await Promise.allSettled([control('close', 'POST'), outcome.catch(() => { }), ...inputWork, ...outputWork, ...[...readers].map(async (reader) => { try {
|
|
578
|
-
await reader.cancel();
|
|
579
|
-
}
|
|
580
|
-
finally {
|
|
581
|
-
reader.releaseLock();
|
|
582
|
-
} })]);
|
|
583
|
-
readers.clear();
|
|
584
|
-
const failures = [...delivered, ...results].filter((result) => result.status === 'rejected' && result.reason !== owner.signal.reason && result.reason !== signal.reason);
|
|
585
|
-
if (failures.length)
|
|
586
|
-
throw new RemoteExecutionError('Remote process retirement could not be confirmed', 'unknown', identity, undefined, { cause: new AggregateError(failures.map(result => result.reason), 'Remote process retirement failed') });
|
|
587
|
-
})();
|
|
588
|
-
void closing.catch(() => { });
|
|
589
|
-
}
|
|
590
|
-
return closing;
|
|
591
|
-
},
|
|
592
|
-
};
|
|
593
|
-
}
|
|
594
|
-
catch (cause) {
|
|
595
|
-
// Own dispatched acquisition through an interrupted or late response. An
|
|
596
|
-
// explicit admission/epoch rejection or failure before credential dispatch
|
|
597
|
-
// supplies no authority to retire the invocation.
|
|
598
|
-
if (acquisitionDispatched)
|
|
599
|
-
try {
|
|
600
|
-
await control('close', 'POST');
|
|
601
|
-
}
|
|
602
|
-
catch (cleanup) {
|
|
603
|
-
throw new AggregateError([cause, cleanup], 'Process acquisition and cleanup failed', { cause });
|
|
604
|
-
}
|
|
605
|
-
throw cause;
|
|
606
|
-
}
|
|
607
|
-
}
|