@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,6 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type { MediaCommandsOptions } from './plugin.js';
|
|
3
|
-
export { createRemoteMediaCommands } from './remote.js';
|
|
4
|
-
export type { RemoteMediaOptions, RemoteMediaControlContext, MediaProviderSettings, MediaProviderRuntime } from './remote.js';
|
|
5
|
-
export { grammarRevision, nativeReference, imageMagickGrammarRevision, imageMagickReference, mediaFrontendContract } from "../../../media-cli/index.js";
|
|
1
|
+
export * from "../../../safe-bash-command-media/index.js";
|
|
6
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { createRemoteMediaCommands } from './remote.js';
|
|
3
|
-
export { grammarRevision, nativeReference, imageMagickGrammarRevision, imageMagickReference, mediaFrontendContract } from "../../../media-cli/index.js";
|
|
1
|
+
export * from "../../../safe-bash-command-media/index.js";
|
|
4
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import type { VirtualShellPlugin } from "../../../safe-bash-contracts/plugin.js";
|
|
3
|
-
import { type NativeBinding } from "../../../media-cli/index.js";
|
|
4
|
-
import { type ImageMagickBinding } from "../../../media-cli/index.js";
|
|
5
|
-
import type { MediaEngineRequest } from "../../../media-cli/index.js";
|
|
6
|
-
export interface MediaCommandsOptions {
|
|
7
|
-
readonly engine?: {
|
|
8
|
-
execute(request: MediaEngineRequest): Promise<{
|
|
9
|
-
exitCode: number;
|
|
10
|
-
}>;
|
|
11
|
-
};
|
|
12
|
-
readonly ffmpeg?: NativeBinding<CommandContext>;
|
|
13
|
-
readonly imageMagick?: ImageMagickBinding<CommandContext>;
|
|
14
|
-
readonly replace?: boolean;
|
|
15
|
-
}
|
|
16
|
-
/** Explicit host bindings own authenticated remote execution and native streams.
|
|
17
|
-
* Configuration never enters native argv. Discovery remains advisory. */
|
|
18
|
-
export declare function mediaCommands(options: MediaCommandsOptions): VirtualShellPlugin;
|
|
1
|
+
export * from "../../../safe-bash-command-media/plugin.js";
|
|
19
2
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1,91 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { createFFmpegShims } from "../../../media-cli/index.js";
|
|
3
|
-
import { createImageMagickShims } from "../../../media-cli/index.js";
|
|
4
|
-
import { imageMagickReference, imageMagickGrammarRevision } from "../../../media-cli/index.js";
|
|
5
|
-
import { nativeReference, grammarRevision } from "../../../media-cli/index.js";
|
|
6
|
-
/** Explicit host bindings own authenticated remote execution and native streams.
|
|
7
|
-
* Configuration never enters native argv. Discovery remains advisory. */
|
|
8
|
-
export function mediaCommands(options) {
|
|
9
|
-
if (options.replace !== undefined && typeof options.replace !== 'boolean')
|
|
10
|
-
throw new TypeError('Media replacement policy must be a boolean');
|
|
11
|
-
const replace = options.replace ?? false;
|
|
12
|
-
if (options.engine) {
|
|
13
|
-
if (options.ffmpeg || options.imageMagick)
|
|
14
|
-
throw new TypeError('Choose engine or explicit media bindings');
|
|
15
|
-
const execute = options.engine.execute.bind(options.engine);
|
|
16
|
-
const run = ({ tool, argv, discovery, context }) => execute({ ...context, command: tool, args: argv, discovery });
|
|
17
|
-
options = { ...options,
|
|
18
|
-
ffmpeg: { build: nativeReference.id, grammarRevision, argv: 'bytes', lateAccess: 'complete', effects: 'live', run },
|
|
19
|
-
imageMagick: { build: imageMagickReference.id, grammarRevision: imageMagickGrammarRevision, argv: 'bytes', lateAccess: 'complete', effects: 'live', run,
|
|
20
|
-
discoveryContext(context) {
|
|
21
|
-
// Preserve .. and literal colons for the invocation filesystem. Its
|
|
22
|
-
// string API cannot probe arbitrary native octets losslessly; those
|
|
23
|
-
// names remain unknown here and are resolved by the native bridge.
|
|
24
|
-
const path = (bytes) => {
|
|
25
|
-
const name = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
|
|
26
|
-
return name.startsWith('/') ? name : context.cwd + (context.cwd.endsWith('/') ? '' : '/') + name;
|
|
27
|
-
};
|
|
28
|
-
return {
|
|
29
|
-
async accessible(bytes) {
|
|
30
|
-
try {
|
|
31
|
-
const name = path(bytes);
|
|
32
|
-
if ((await context.fs.stat(name, { signal: context.signal })).type !== 'file')
|
|
33
|
-
return false;
|
|
34
|
-
await context.fs.access(name, 0, { signal: context.signal });
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
catch (cause) {
|
|
38
|
-
if (cause && typeof cause === 'object' && 'code' in cause && ['ENOENT', 'ENOTDIR', 'EACCES'].includes(String(cause.code)))
|
|
39
|
-
return false;
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
async exists(bytes) {
|
|
44
|
-
try {
|
|
45
|
-
await context.fs.stat(path(bytes), { signal: context.signal });
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
catch (cause) {
|
|
49
|
-
if (cause && typeof cause === 'object' && 'code' in cause && ['ENOENT', 'ENOTDIR'].includes(String(cause.code)))
|
|
50
|
-
return false;
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
async read(bytes) {
|
|
55
|
-
try {
|
|
56
|
-
return await context.fs.readFile(path(bytes), { signal: context.signal });
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return undefined;
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (!options.ffmpeg && !options.imageMagick)
|
|
68
|
-
throw new TypeError('Explicit remote media bindings required');
|
|
69
|
-
const shims = {
|
|
70
|
-
...(options.ffmpeg ? createFFmpegShims(options.ffmpeg) : {}),
|
|
71
|
-
...(options.imageMagick ? createImageMagickShims(options.imageMagick) : {}),
|
|
72
|
-
};
|
|
73
|
-
const definitions = Object.entries(shims)
|
|
74
|
-
.filter(([name]) => !Object.hasOwn(imageMagickReference.executables, name)
|
|
75
|
-
|| imageMagickReference.executables[name].kind === 'media')
|
|
76
|
-
.map(([name, run]) => ({ name, async execute(context) {
|
|
77
|
-
const arguments_ = getCommandArguments(context);
|
|
78
|
-
const argv = arguments_.args.map((_, index) => arguments_.bytes(index));
|
|
79
|
-
return run(argv, context);
|
|
80
|
-
} }));
|
|
81
|
-
return { name: 'media-commands', setup(host) {
|
|
82
|
-
if (!replace)
|
|
83
|
-
for (const definition of definitions) {
|
|
84
|
-
if (host.commands.has(definition.name))
|
|
85
|
-
throw new Error(`Command already registered: ${definition.name}`);
|
|
86
|
-
}
|
|
87
|
-
for (const definition of definitions)
|
|
88
|
-
host.commands.register(definition, { replace });
|
|
89
|
-
} };
|
|
90
|
-
}
|
|
1
|
+
export * from "../../../safe-bash-command-media/plugin.js";
|
|
91
2
|
//# sourceMappingURL=plugin.js.map
|
|
@@ -1,64 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import type { CommandContext } from "../../../safe-bash-contracts/command.js";
|
|
3
|
-
import type { VirtualShellPlugin } from "../../../safe-bash-contracts/plugin.js";
|
|
4
|
-
import type { MediaEngineRequest } from "../../../media-cli/index.js";
|
|
5
|
-
import { mediaFrontendContract } from "../../../media-cli/index.js";
|
|
6
|
-
export { mediaFrontendContract };
|
|
7
|
-
export interface RemoteMediaControlContext {
|
|
8
|
-
readonly signal: AbortSignal;
|
|
9
|
-
/** Answer only the callback currently delivered to this invocation's handler.
|
|
10
|
-
* The adapter retains session credentials, job identity and cleanup ownership. */
|
|
11
|
-
respond(result: CallbackResult): Promise<CallbackResult>;
|
|
12
|
-
}
|
|
13
|
-
export interface RemoteMediaOptions {
|
|
14
|
-
/** Use the shell registry's explicit replacement policy (default false). */
|
|
15
|
-
readonly replace?: boolean;
|
|
16
|
-
readonly service: string;
|
|
17
|
-
readonly authToken: string;
|
|
18
|
-
readonly buildDigest: string;
|
|
19
|
-
readonly resource: Binding;
|
|
20
|
-
readonly limits?: Limits;
|
|
21
|
-
/** Explicit trusted provider, loaded only on media invocation.
|
|
22
|
-
* The module exports createMediaProvider(settings). */
|
|
23
|
-
readonly provider?: {
|
|
24
|
-
readonly module: string;
|
|
25
|
-
readonly options?: unknown;
|
|
26
|
-
};
|
|
27
|
-
/** Inject a provider transport without changing native argv. */
|
|
28
|
-
readonly fetch?: typeof globalThis.fetch;
|
|
29
|
-
/** Explicit remote descriptor bindings, established by the trusted host. */
|
|
30
|
-
readonly descriptors?: readonly Descriptor[];
|
|
31
|
-
readonly grants?: readonly Grant[];
|
|
32
|
-
readonly stdin?: Input;
|
|
33
|
-
readonly onControl?: (control: Control, context: CommandContext, remote: RemoteMediaControlContext) => Promise<void>;
|
|
34
|
-
/** Bind an authenticated, invocation-owned output channel before consuming it.
|
|
35
|
-
* The returned sink is borrowed; remote END never closes the host destination.
|
|
36
|
-
* Seekable access must use retained file callbacks rather than this byte stream. */
|
|
37
|
-
readonly onOutputChannel?: (channel: ChannelOpen, context: CommandContext) => Promise<Pick<CommandContext['stdout'], 'write' | 'ownedOutput'>>;
|
|
38
|
-
readonly onProgress?: (event: {
|
|
39
|
-
direction: 'upload' | 'download';
|
|
40
|
-
bytes: number;
|
|
41
|
-
}) => void | Promise<void>;
|
|
42
|
-
/** Host-qualified shell status projection for actual signal-only termination.
|
|
43
|
-
* Native explicit exit codes never pass through this projection. */
|
|
44
|
-
readonly signalStatus?: (name: string, number: number) => number;
|
|
45
|
-
}
|
|
46
|
-
export type MediaProviderSettings = Omit<RemoteMediaOptions, 'provider'> & {
|
|
47
|
-
readonly providerOptions?: unknown;
|
|
48
|
-
};
|
|
49
|
-
export interface MediaProviderRuntime {
|
|
50
|
-
readonly fetch: typeof globalThis.fetch;
|
|
51
|
-
/** Optional existing remote engine: retains the entire scoped descriptor,
|
|
52
|
-
* filesystem, environment, stream and cleanup context. Must execute only on
|
|
53
|
-
* the verified remote build; no host process fallback is admitted. */
|
|
54
|
-
execute?(request: MediaEngineRequest): Promise<{
|
|
55
|
-
exitCode: number;
|
|
56
|
-
}>;
|
|
57
|
-
dispose?(): Promise<void>;
|
|
58
|
-
}
|
|
59
|
-
/** Connect only on explicit media invocation; server resource authority stays
|
|
60
|
-
* server-owned. Local discovery supplies advisory transfer hints only. */
|
|
61
|
-
export declare function createRemoteMediaCommands(options: RemoteMediaOptions): VirtualShellPlugin & {
|
|
62
|
-
dispose(): Promise<void>;
|
|
63
|
-
};
|
|
1
|
+
export * from "../../../safe-bash-command-media/remote.js";
|
|
64
2
|
//# sourceMappingURL=remote.d.ts.map
|
|
@@ -1,406 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { validateCallbackResult } from "../../../remote-execution/protocol.js";
|
|
3
|
-
import { readBytes } from "@poe-platform/safe-fs/core";
|
|
4
|
-
import { mediaCommands } from './plugin.js';
|
|
5
|
-
import { grammarRevision, nativeReference } from "../../../media-cli/index.js";
|
|
6
|
-
import { imageMagickGrammarRevision, imageMagickReference } from "../../../media-cli/index.js";
|
|
7
|
-
import { mediaFrontendContract } from "../../../media-cli/index.js";
|
|
8
|
-
export { mediaFrontendContract };
|
|
9
|
-
/** Connect only on explicit media invocation; server resource authority stays
|
|
10
|
-
* server-owned. Local discovery supplies advisory transfer hints only. */
|
|
11
|
-
export function createRemoteMediaCommands(options) {
|
|
12
|
-
if (!options.service || !options.authToken || !options.buildDigest || !options.resource)
|
|
13
|
-
throw new TypeError('Explicit media service/auth/build/resource configuration required');
|
|
14
|
-
options = { ...options,
|
|
15
|
-
resource: structuredClone(options.resource),
|
|
16
|
-
...(options.provider ? { provider: structuredClone(options.provider) } : {}),
|
|
17
|
-
...(options.limits ? { limits: structuredClone(options.limits) } : {}),
|
|
18
|
-
...(options.grants ? { grants: structuredClone(options.grants) } : {}),
|
|
19
|
-
...(options.descriptors ? { descriptors: structuredClone(options.descriptors) } : {}),
|
|
20
|
-
...(options.stdin ? { stdin: structuredClone(options.stdin) } : {}),
|
|
21
|
-
};
|
|
22
|
-
const resource = structuredClone(options.resource);
|
|
23
|
-
let provider;
|
|
24
|
-
const transport = async (input, init) => {
|
|
25
|
-
if (!options.provider)
|
|
26
|
-
return (options.fetch ?? globalThis.fetch)(input, init);
|
|
27
|
-
provider ??= import(options.provider.module).then(async (module) => {
|
|
28
|
-
if (typeof module.createMediaProvider !== 'function')
|
|
29
|
-
throw new TypeError('Media provider must export createMediaProvider(settings)');
|
|
30
|
-
const { provider: configuration, ...settings } = options;
|
|
31
|
-
const runtime = await module.createMediaProvider({ ...settings, providerOptions: configuration.options });
|
|
32
|
-
if (!runtime || typeof runtime.fetch !== 'function' || (runtime.execute !== undefined && typeof runtime.execute !== 'function'))
|
|
33
|
-
throw new TypeError('Media provider must return a Fetch transport and optional remote engine');
|
|
34
|
-
return runtime;
|
|
35
|
-
});
|
|
36
|
-
return (await provider).fetch(input, init);
|
|
37
|
-
};
|
|
38
|
-
async function run(invocation) {
|
|
39
|
-
// Each invocation owns credential/data admission. Input and output must
|
|
40
|
-
// progress together, with a third slot for independent process control.
|
|
41
|
-
// Input frame sends remain serialized on their single ordered lane below.
|
|
42
|
-
const client = createClient({ baseUrl: options.service, token: async () => options.authToken,
|
|
43
|
-
fetch: transport, maxConcurrentUploads: 3 });
|
|
44
|
-
const context = invocation.context;
|
|
45
|
-
const controller = new AbortController();
|
|
46
|
-
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
47
|
-
const inputController = new AbortController();
|
|
48
|
-
const inputSignal = AbortSignal.any([signal, inputController.signal]);
|
|
49
|
-
let session;
|
|
50
|
-
let job;
|
|
51
|
-
let cleanup;
|
|
52
|
-
let acquisition;
|
|
53
|
-
let processExited = false;
|
|
54
|
-
let primaryFailed = false;
|
|
55
|
-
let finalization;
|
|
56
|
-
let unsubscribe;
|
|
57
|
-
let cleanupAdmission = true;
|
|
58
|
-
const ownedCleanups = [];
|
|
59
|
-
const leases = new Map();
|
|
60
|
-
const work = new Set();
|
|
61
|
-
const close = () => cleanup ??= (async () => {
|
|
62
|
-
cleanupAdmission = false;
|
|
63
|
-
controller.abort(new Error('Media invocation finalized'));
|
|
64
|
-
await acquisition?.catch(() => { });
|
|
65
|
-
const retirement = Promise.resolve().then(() => unsubscribe?.());
|
|
66
|
-
// Provider resources belong to this invocation even when the borrowed
|
|
67
|
-
// shell context has no registrar. Start retirement before waiting for
|
|
68
|
-
// execution: a cooperative cleanup can release a blocked dependency.
|
|
69
|
-
// Both barriers drain before remote session release or public settlement.
|
|
70
|
-
const retired = Promise.allSettled(ownedCleanups.map(close => Promise.resolve().then(close)));
|
|
71
|
-
const results = await Promise.allSettled([...work, retirement]);
|
|
72
|
-
const failures = (await retired).filter(result => result.status === 'rejected').map(result => result.reason);
|
|
73
|
-
if (job && session) {
|
|
74
|
-
try {
|
|
75
|
-
const canceled = await client.cancelJob(session, job.jobId, { reason: 'Media invocation finalized' }, crypto.randomUUID());
|
|
76
|
-
if (canceled.outcome?.kind === 'unknown' || canceled.cleanup === 'unknown')
|
|
77
|
-
throw new Error('Remote termination could not be confirmed');
|
|
78
|
-
}
|
|
79
|
-
catch (cause) {
|
|
80
|
-
failures.push(cause);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const releases = await Promise.allSettled([
|
|
84
|
-
...Array.from(leases.values(), lease => Promise.resolve().then(() => lease.close())),
|
|
85
|
-
...(session ? [client.closeSession(session, crypto.randomUUID())] : []), retirement,
|
|
86
|
-
]);
|
|
87
|
-
for (const result of releases)
|
|
88
|
-
if (result.status === 'rejected')
|
|
89
|
-
failures.push(result.reason);
|
|
90
|
-
if (failures.length === 1)
|
|
91
|
-
throw failures[0];
|
|
92
|
-
if (failures.length)
|
|
93
|
-
throw new AggregateError(failures, 'Media invocation cleanup failed');
|
|
94
|
-
// Stream failures are reported by the primary invocation, after cleanup.
|
|
95
|
-
void results;
|
|
96
|
-
})();
|
|
97
|
-
const finalize = () => finalization ??= (async () => {
|
|
98
|
-
try {
|
|
99
|
-
await close();
|
|
100
|
-
}
|
|
101
|
-
catch (cause) {
|
|
102
|
-
if (!primaryFailed)
|
|
103
|
-
throw cause;
|
|
104
|
-
// Cleanup diagnostics must not replace the original stream/cancellation
|
|
105
|
-
// failure, including falsey thrown reasons. The shell owns precedence.
|
|
106
|
-
try {
|
|
107
|
-
await context.onInternalError?.(cause);
|
|
108
|
-
}
|
|
109
|
-
catch { /* Preserve primary failure. */ }
|
|
110
|
-
}
|
|
111
|
-
})();
|
|
112
|
-
context.registerCleanup?.(finalize);
|
|
113
|
-
try {
|
|
114
|
-
const capabilities = await client.capabilities(signal);
|
|
115
|
-
const build = capabilities.builds.find(build => build.digest === options.buildDigest);
|
|
116
|
-
if (!build || build.grammarRevision !== mediaFrontendContract.grammarRevision || build.sourceRevision !== mediaFrontendContract.sourceRevision || !Object.hasOwn(build.executables, invocation.tool))
|
|
117
|
-
throw new Error('Remote build does not match the pinned media frontend');
|
|
118
|
-
const byteArgv = capabilities.features.includes('byte-argv');
|
|
119
|
-
if (!byteArgv && !capabilities.features.includes('utf8-argv'))
|
|
120
|
-
throw new Error('Remote media requires byte argv or lossless UTF-8 argv capabilities');
|
|
121
|
-
const limits = options.limits ?? capabilities.limits;
|
|
122
|
-
if (!Number.isSafeInteger(limits.maxArgvBytes) || limits.maxArgvBytes < 1)
|
|
123
|
-
throw new TypeError('Invalid remote argv byte bound');
|
|
124
|
-
let argvBytes = 0;
|
|
125
|
-
for (const arg of invocation.argv) {
|
|
126
|
-
argvBytes += arg.length + 1;
|
|
127
|
-
if (argvBytes > limits.maxArgvBytes)
|
|
128
|
-
throw new TypeError('Remote argv byte bound');
|
|
129
|
-
}
|
|
130
|
-
for (const arg of invocation.argv) {
|
|
131
|
-
if (arg.includes(0))
|
|
132
|
-
throw new TypeError('NUL in native argv');
|
|
133
|
-
if (!byteArgv) {
|
|
134
|
-
try {
|
|
135
|
-
new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(arg);
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
throw new TypeError('Remote UTF-8 launcher cannot preserve these argv bytes');
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (!capabilities.features.includes('live-files') || resource.profile !== 'live')
|
|
143
|
-
throw new Error('Remote media requires admitted live resource capabilities');
|
|
144
|
-
const backend = await provider;
|
|
145
|
-
if (backend?.execute) {
|
|
146
|
-
const execution = Promise.resolve().then(() => {
|
|
147
|
-
signal.throwIfAborted();
|
|
148
|
-
return backend.execute({ ...context, command: invocation.tool, args: invocation.argv, discovery: invocation.discovery, signal,
|
|
149
|
-
registerCleanup(close) {
|
|
150
|
-
if (!cleanupAdmission)
|
|
151
|
-
throw new Error('Media invocation cleanup admission closed');
|
|
152
|
-
if (typeof close !== 'function')
|
|
153
|
-
throw new TypeError('Invalid media invocation cleanup');
|
|
154
|
-
ownedCleanups.push(close);
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
work.add(execution);
|
|
159
|
-
return await execution;
|
|
160
|
-
}
|
|
161
|
-
const input = context.stdinInput;
|
|
162
|
-
if ((input?.seek || input?.stat?.type === 'file') && !options.stdin?.seekable)
|
|
163
|
-
throw new Error('Explicit remote descriptor bindings required for seekable native stdin');
|
|
164
|
-
const sinks = new Map([[2, context.stdout], [3, context.stderr]]);
|
|
165
|
-
const descriptors = options.descriptors ?? [];
|
|
166
|
-
if (descriptors.length > limits.maxHandles || new Set(descriptors.map(descriptor => descriptor.fd)).size !== descriptors.length || descriptors.some(descriptor => !Number.isSafeInteger(descriptor.fd) || descriptor.fd < 3 || descriptor.fd > limits.maxHandles + 2))
|
|
167
|
-
throw new TypeError('Remote descriptor count or mapping exceeds admission');
|
|
168
|
-
const streamedDescriptors = (options.descriptors ?? []).filter(descriptor => !descriptor.seekable && descriptor.rights.some(right => right === 'read' || right === 'write'));
|
|
169
|
-
if (streamedDescriptors.length && (!capabilities.features.includes('descriptors') || !context.admittedHandles))
|
|
170
|
-
throw new Error('Remote descriptors require admitted host leases and server capabilities');
|
|
171
|
-
for (const descriptor of streamedDescriptors) {
|
|
172
|
-
const rights = descriptor.rights.filter(right => right === 'read' || right === 'write');
|
|
173
|
-
const acquiring = context.admittedHandles.acquire(descriptor.fd, rights, signal).then(lease => { leases.set(descriptor.fd, lease); return lease; });
|
|
174
|
-
work.add(acquiring);
|
|
175
|
-
const lease = await acquiring;
|
|
176
|
-
if (rights.includes('read') && !lease.read || rights.includes('write') && !lease.write)
|
|
177
|
-
throw new TypeError('Host descriptor lease lacks requested operations');
|
|
178
|
-
if (rights.includes('write'))
|
|
179
|
-
sinks.set(descriptor.fd + 1, { async write(bytes) {
|
|
180
|
-
let offset = 0;
|
|
181
|
-
while (offset < bytes.length) {
|
|
182
|
-
signal.throwIfAborted();
|
|
183
|
-
lease.consumerClosed?.throwIfAborted();
|
|
184
|
-
const remaining = Math.min(bytes.length - offset, 65536);
|
|
185
|
-
const count = await lease.write(bytes.subarray(offset, offset + remaining), signal);
|
|
186
|
-
if (!Number.isSafeInteger(count) || count < 1 || count > remaining)
|
|
187
|
-
throw new TypeError('Invalid admitted descriptor write count');
|
|
188
|
-
offset += count;
|
|
189
|
-
}
|
|
190
|
-
} });
|
|
191
|
-
}
|
|
192
|
-
acquisition = client.openSession({ buildDigest: build.digest, bindings: [resource], limits }, crypto.randomUUID(), signal).then(value => { session = value; });
|
|
193
|
-
await acquisition;
|
|
194
|
-
acquisition = client.submitJob(session, {
|
|
195
|
-
buildDigest: build.digest, toolId: invocation.tool, args: invocation.argv.map(arg => Array.from(arg)),
|
|
196
|
-
namespaceId: resource.namespaceId, materializationRevision: null, cwd: context.cwd, env: { ...context.env },
|
|
197
|
-
stdin: options.stdin ?? { kind: 'stream', seekable: false }, descriptors: [...options.descriptors ?? []], grants: [...options.grants ?? []],
|
|
198
|
-
freshness: 'live', limits, frontendContract: mediaFrontendContract,
|
|
199
|
-
}, crypto.randomUUID(), signal).then(value => { job = value; });
|
|
200
|
-
await acquisition;
|
|
201
|
-
const identity = session;
|
|
202
|
-
const nativeJob = job;
|
|
203
|
-
unsubscribe = context.processSignals?.subscribe(async (event) => {
|
|
204
|
-
signal.throwIfAborted();
|
|
205
|
-
if (event.target !== 'process-group')
|
|
206
|
-
throw new TypeError('Remote signals require process-group authority');
|
|
207
|
-
const operation = client.signalJob(identity, nativeJob.jobId, event.name, `signal:${nativeJob.jobId}:${event.sequence}`, signal);
|
|
208
|
-
work.add(operation);
|
|
209
|
-
try {
|
|
210
|
-
await operation;
|
|
211
|
-
return { sequence: event.sequence };
|
|
212
|
-
}
|
|
213
|
-
finally {
|
|
214
|
-
work.delete(operation);
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
const output = await client.attach(identity, nativeJob.jobId, { direction: 'output', consumerId: crypto.randomUUID() }, crypto.randomUUID(), signal);
|
|
218
|
-
const binaryLimits = { maxFrameBytes: output.maxFrameBytes, maxControlBytes: output.maxFrameBytes, channels: [...sinks.keys()], maxChannels: limits.maxHandles + 2 };
|
|
219
|
-
const cursor = { ...identity, jobId: nativeJob.jobId, laneId: output.laneId, nextSequence: BigInt(output.floorSequence), offsets: new Map([...sinks.keys()].map(channel => [channel, 0n])), endedChannels: new Set() };
|
|
220
|
-
const download = client.resumeStream(cursor, binaryLimits, async (frame) => {
|
|
221
|
-
if (frame.kind === 'data') {
|
|
222
|
-
const sink = sinks.get(frame.channelId);
|
|
223
|
-
if (!sink)
|
|
224
|
-
throw new Error('Remote channel requires an explicit host control binding');
|
|
225
|
-
signal.throwIfAborted();
|
|
226
|
-
sink.ownedOutput?.consumerClosed.throwIfAborted();
|
|
227
|
-
await (sink.ownedOutput ?? sink).write(frame.payload);
|
|
228
|
-
await options.onProgress?.({ direction: 'download', bytes: frame.payload.length });
|
|
229
|
-
}
|
|
230
|
-
else if (frame.kind === 'control') {
|
|
231
|
-
const control = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(frame.payload));
|
|
232
|
-
if (control.type === 'ChannelOpen' && control.direction === 'write') {
|
|
233
|
-
if (control.seekable || !options.onOutputChannel)
|
|
234
|
-
throw new Error('Remote output channel requires an explicit host stream binding');
|
|
235
|
-
const sink = await options.onOutputChannel(control, context);
|
|
236
|
-
if (!sink || typeof sink.write !== 'function')
|
|
237
|
-
throw new TypeError('Remote output channel requires a writable host sink');
|
|
238
|
-
sinks.set(control.channelId, sink);
|
|
239
|
-
}
|
|
240
|
-
else if (control.type === 'Callback' || control.type === 'CanonicalCallback' || control.type === 'ChannelOpen') {
|
|
241
|
-
if (!options.onControl)
|
|
242
|
-
throw new Error('Remote resource callback requires an explicit host control binding');
|
|
243
|
-
const callback = structuredClone(control);
|
|
244
|
-
const remote = { signal, async respond(result) {
|
|
245
|
-
signal.throwIfAborted();
|
|
246
|
-
if (callback.type !== 'Callback' || callback.epoch !== identity.epoch
|
|
247
|
-
|| callback.namespaceId !== resource.namespaceId || callback.owner.kind !== 'job'
|
|
248
|
-
|| callback.owner.id !== nativeJob.jobId || Date.parse(callback.expiresAt) <= Date.now()
|
|
249
|
-
|| !options.grants?.some(grant => grant.grantId === callback.grantId
|
|
250
|
-
&& grant.operations.includes(callback.operation.op)))
|
|
251
|
-
throw new Error('Unauthorized remote callback response');
|
|
252
|
-
const owned = structuredClone(result);
|
|
253
|
-
if (owned.callbackId !== callback.callbackId || owned.operationId !== callback.operationId)
|
|
254
|
-
throw new Error('Remote callback response belongs to another operation');
|
|
255
|
-
validateCallbackResult(callback.operation, owned);
|
|
256
|
-
const response = client.answerCallback(identity, nativeJob.jobId, owned, crypto.randomUUID(), signal);
|
|
257
|
-
work.add(response);
|
|
258
|
-
try {
|
|
259
|
-
const receipt = await response;
|
|
260
|
-
if (receipt.callbackId !== callback.callbackId || receipt.operationId !== callback.operationId)
|
|
261
|
-
throw new Error('Remote callback acknowledgement belongs to another operation');
|
|
262
|
-
return receipt;
|
|
263
|
-
}
|
|
264
|
-
finally {
|
|
265
|
-
work.delete(response);
|
|
266
|
-
}
|
|
267
|
-
} };
|
|
268
|
-
await options.onControl(control, context, remote);
|
|
269
|
-
}
|
|
270
|
-
else if (control.type === 'Failure')
|
|
271
|
-
throw new Error(control.error.message);
|
|
272
|
-
else if (control.type === 'JobState' && (control.job.processOutcome || control.job.state === 'terminal')) {
|
|
273
|
-
processExited = true;
|
|
274
|
-
inputController.abort(new Error('Native process exited'));
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}, signal);
|
|
278
|
-
work.add(download);
|
|
279
|
-
void download.catch(() => controller.abort(new Error('Remote output failed')));
|
|
280
|
-
const upload = (async () => {
|
|
281
|
-
let receiptFailed = false;
|
|
282
|
-
let inputFailure;
|
|
283
|
-
try {
|
|
284
|
-
const reads = streamedDescriptors.filter(descriptor => descriptor.rights.includes('read'));
|
|
285
|
-
const streamStdin = !options.stdin || options.stdin.kind === 'stream';
|
|
286
|
-
if (!streamStdin && !reads.length)
|
|
287
|
-
return;
|
|
288
|
-
const input = await client.attach(identity, nativeJob.jobId, { direction: 'input', consumerId: crypto.randomUUID() }, crypto.randomUUID(), inputSignal);
|
|
289
|
-
const channels = [...(streamStdin ? [1] : []), ...reads.map(descriptor => descriptor.fd + 1)];
|
|
290
|
-
const offsets = new Map(channels.map(channel => [channel, 0n]));
|
|
291
|
-
let sequence = BigInt(input.nextSequence);
|
|
292
|
-
let tail = Promise.resolve();
|
|
293
|
-
function send(channelId, kind, payload) {
|
|
294
|
-
const operation = tail.then(async () => {
|
|
295
|
-
inputSignal.throwIfAborted();
|
|
296
|
-
const offset = offsets.get(channelId);
|
|
297
|
-
// Exit retires new reads, not a dispatched native write's receipt.
|
|
298
|
-
// Caller cancellation still owns both scopes.
|
|
299
|
-
try {
|
|
300
|
-
await client.sendFrames(identity, nativeJob.jobId, input.laneId, [{ kind, channelId, sequence, offset, correlationId: 0n, payload }], { maxFrameBytes: input.maxFrameBytes, maxControlBytes: input.maxFrameBytes, channels }, crypto.randomUUID(), signal);
|
|
301
|
-
}
|
|
302
|
-
catch (cause) {
|
|
303
|
-
receiptFailed = true;
|
|
304
|
-
throw cause;
|
|
305
|
-
}
|
|
306
|
-
sequence++;
|
|
307
|
-
offsets.set(channelId, offset + BigInt(payload.length));
|
|
308
|
-
});
|
|
309
|
-
tail = operation;
|
|
310
|
-
return operation;
|
|
311
|
-
}
|
|
312
|
-
const byteLength = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get;
|
|
313
|
-
async function* readInput(read, description) {
|
|
314
|
-
for (;;) {
|
|
315
|
-
const count = Math.min(input.maxFrameBytes, 65536);
|
|
316
|
-
const next = await read(count, inputSignal);
|
|
317
|
-
if (!next || typeof next !== 'object' || Array.isArray(next))
|
|
318
|
-
throw new TypeError('Invalid process input read result');
|
|
319
|
-
const done = next.done;
|
|
320
|
-
if (done === true)
|
|
321
|
-
return;
|
|
322
|
-
if (done !== false && done !== undefined)
|
|
323
|
-
throw new TypeError('Invalid process input read result');
|
|
324
|
-
const fragment = next.value;
|
|
325
|
-
if (!(fragment instanceof Uint8Array) || byteLength.call(fragment) > count)
|
|
326
|
-
throw new TypeError(`Invalid ${description} read size`);
|
|
327
|
-
yield fragment;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
// Borrow one cursor and retain its operation/receiver for the invocation.
|
|
331
|
-
// Empty fragments remain data; only an explicit done=true admits END.
|
|
332
|
-
const stdinRead = context.stdinInput?.read.bind(context.stdinInput);
|
|
333
|
-
const stdin = stdinRead ? { [Symbol.asyncIterator]: () => readInput(stdinRead, 'stdinInput') } : context.stdin;
|
|
334
|
-
const sources = streamStdin ? [[1, readBytes(stdin, inputSignal)]] : [];
|
|
335
|
-
for (const descriptor of reads) {
|
|
336
|
-
const lease = leases.get(descriptor.fd);
|
|
337
|
-
const read = lease.read.bind(lease);
|
|
338
|
-
sources.push([descriptor.fd + 1, readBytes({ [Symbol.asyncIterator]: () => readInput(read, 'admitted descriptor') }, inputSignal)]);
|
|
339
|
-
}
|
|
340
|
-
const producers = sources.map(async ([channel, source]) => {
|
|
341
|
-
for await (const incoming of source) {
|
|
342
|
-
for (let start = 0; start < incoming.length; start += input.maxFrameBytes) {
|
|
343
|
-
const bytes = Uint8Array.from(incoming.subarray(start, start + input.maxFrameBytes));
|
|
344
|
-
await send(channel, 'data', bytes);
|
|
345
|
-
await options.onProgress?.({ direction: 'upload', bytes: bytes.length });
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
await send(channel, 'end', new Uint8Array());
|
|
349
|
-
});
|
|
350
|
-
// Retire siblings on failure and observe every admitted source before cleanup.
|
|
351
|
-
for (const producer of producers)
|
|
352
|
-
void producer.catch(cause => {
|
|
353
|
-
// Record the originating failure before canceling competing readers.
|
|
354
|
-
// A sibling's retirement must not replace it, even for falsey causes.
|
|
355
|
-
if (!(processExited && !receiptFailed && inputSignal.aborted && cause === inputSignal.reason))
|
|
356
|
-
inputFailure ??= { cause };
|
|
357
|
-
inputController.abort(new Error('Remote descriptor input failed'));
|
|
358
|
-
});
|
|
359
|
-
const results = await Promise.allSettled(producers);
|
|
360
|
-
if (inputFailure)
|
|
361
|
-
throw inputFailure.cause;
|
|
362
|
-
const failure = results.find(result => result.status === 'rejected');
|
|
363
|
-
if (failure?.status === 'rejected')
|
|
364
|
-
throw failure.reason;
|
|
365
|
-
}
|
|
366
|
-
catch (cause) {
|
|
367
|
-
if (!receiptFailed && processExited && !signal.aborted && cause === inputSignal.reason)
|
|
368
|
-
return;
|
|
369
|
-
throw cause;
|
|
370
|
-
}
|
|
371
|
-
})();
|
|
372
|
-
work.add(upload);
|
|
373
|
-
void upload.catch(() => controller.abort(new Error('Remote input failed')));
|
|
374
|
-
await Promise.all([download, upload]);
|
|
375
|
-
const settled = await client.waitJob(identity, nativeJob.jobId, signal);
|
|
376
|
-
if (!settled.outputComplete || settled.cleanup !== 'complete')
|
|
377
|
-
throw new Error('Remote media cleanup or output is incomplete');
|
|
378
|
-
if (settled.outcome?.kind === 'exited')
|
|
379
|
-
return { exitCode: settled.outcome.exitCode };
|
|
380
|
-
if (settled.outcome?.kind === 'signaled' && options.signalStatus) {
|
|
381
|
-
const exitCode = options.signalStatus(settled.outcome.signal, settled.outcome.signalNumber);
|
|
382
|
-
if (!Number.isInteger(exitCode) || exitCode < 0 || exitCode > 255)
|
|
383
|
-
throw new TypeError('Invalid shell signal status');
|
|
384
|
-
return { exitCode };
|
|
385
|
-
}
|
|
386
|
-
throw new Error(`Remote media outcome: ${settled.outcome?.kind ?? 'unknown'}`);
|
|
387
|
-
}
|
|
388
|
-
catch (cause) {
|
|
389
|
-
primaryFailed = true;
|
|
390
|
-
throw cause;
|
|
391
|
-
}
|
|
392
|
-
finally {
|
|
393
|
-
await finalize();
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
const plugin = mediaCommands({
|
|
397
|
-
...(options.replace !== undefined ? { replace: options.replace } : {}),
|
|
398
|
-
ffmpeg: { build: nativeReference.id, grammarRevision, argv: 'bytes', lateAccess: 'complete', effects: 'live', run },
|
|
399
|
-
imageMagick: { build: imageMagickReference.id, grammarRevision: imageMagickGrammarRevision, argv: 'bytes', lateAccess: 'complete', effects: 'live', run },
|
|
400
|
-
});
|
|
401
|
-
return { ...plugin, async dispose() {
|
|
402
|
-
const runtime = await provider?.catch(() => undefined);
|
|
403
|
-
await runtime?.dispose?.();
|
|
404
|
-
} };
|
|
405
|
-
}
|
|
1
|
+
export * from "../../../safe-bash-command-media/remote.js";
|
|
406
2
|
//# sourceMappingURL=remote.js.map
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import type { RemoteMediaOptions } from './remote.js';
|
|
3
|
-
/** Own settings before a host yields, without loading shell or transport code. */
|
|
4
|
-
export declare function captureMediaOptions(options: RemoteMediaOptions | MediaCommandsOptions): RemoteMediaOptions | MediaCommandsOptions;
|
|
1
|
+
export * from "../../../safe-bash-command-media/settings.js";
|
|
5
2
|
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export function captureMediaOptions(options) {
|
|
3
|
-
if ('service' in options)
|
|
4
|
-
return { ...options,
|
|
5
|
-
resource: structuredClone(options.resource),
|
|
6
|
-
...(options.provider ? { provider: structuredClone(options.provider) } : {}),
|
|
7
|
-
...(options.limits ? { limits: structuredClone(options.limits) } : {}),
|
|
8
|
-
...(options.grants ? { grants: structuredClone(options.grants) } : {}),
|
|
9
|
-
...(options.descriptors ? { descriptors: structuredClone(options.descriptors) } : {}),
|
|
10
|
-
...(options.stdin ? { stdin: structuredClone(options.stdin) } : {}),
|
|
11
|
-
};
|
|
12
|
-
return { ...options,
|
|
13
|
-
...(options.engine ? { engine: { execute: options.engine.execute.bind(options.engine) } } : {}),
|
|
14
|
-
...(options.ffmpeg ? { ffmpeg: {
|
|
15
|
-
build: options.ffmpeg.build, grammarRevision: options.ffmpeg.grammarRevision,
|
|
16
|
-
argv: options.ffmpeg.argv, lateAccess: options.ffmpeg.lateAccess, effects: options.ffmpeg.effects,
|
|
17
|
-
run: options.ffmpeg.run.bind(options.ffmpeg),
|
|
18
|
-
} } : {}),
|
|
19
|
-
...(options.imageMagick ? { imageMagick: {
|
|
20
|
-
build: options.imageMagick.build, grammarRevision: options.imageMagick.grammarRevision,
|
|
21
|
-
argv: options.imageMagick.argv, lateAccess: options.imageMagick.lateAccess, effects: options.imageMagick.effects,
|
|
22
|
-
...(options.imageMagick.discoveryContext ? { discoveryContext: options.imageMagick.discoveryContext.bind(options.imageMagick) } : {}),
|
|
23
|
-
run: options.imageMagick.run.bind(options.imageMagick),
|
|
24
|
-
} } : {}),
|
|
25
|
-
};
|
|
26
|
-
}
|
|
1
|
+
export * from "../../../safe-bash-command-media/settings.js";
|
|
27
2
|
//# sourceMappingURL=settings.js.map
|