@poe-platform/safe-bash 0.1.803 → 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 +56 -31
- 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 -8364
- package/dist/image-ast/index.js +692 -8364
- 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-5OHX7C2V.js → chunk-62BOHHJT.js} +1 -1
- 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-PNBBUWSM.js → chunk-AW5KIT6V.js} +3488 -39
- package/dist/safe-bash/chunks/{chunk-JMMEIDPF.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-2LSAMQER.js → chunk-CTXNARJH.js} +1 -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-VBTDHOWC.js → chunk-IOHH2GTI.js} +4 -3
- 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-RYFQ3LZG.js → chunk-LPOVNKNB.js} +173 -153
- 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-EEEWOYEG.js → chunk-S4RFUUXO.js} +839 -24
- 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-B7PIL77G.js → chunk-W2IYOVHK.js} +804 -1195
- 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-A7XEHALN.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-ZDN7MJE6.js → chunk-4R5ADJM5.js} +11 -1
- 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-PICVQ6B5.js → chunk-6GKYHPJG.js} +1 -1
- 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-4FEVBOL5.js → chunk-ARZMP2L2.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-NKIELG7Y.js → chunk-BAKFZ477.js} +40 -19
- package/dist/safe-bash/command-chunks/{chunk-QRRYN2KO.js → chunk-BC7BK6R6.js} +0 -2424
- package/dist/safe-bash/command-chunks/{chunk-CQHP3I66.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-QVOS4YXL.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-V4K2JDYU.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-GFC2NTDG.js → chunk-ICANWOXH.js} +5 -29
- package/dist/safe-bash/command-chunks/{chunk-SQRQW3CT.js → chunk-IJ6LGLXM.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-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-EARHPPPJ.js → chunk-NJYHWKIL.js} +39 -9
- package/dist/safe-bash/command-chunks/{chunk-6JSIFWYT.js → chunk-OJQRSCBP.js} +1 -1
- 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-NASVPT6F.js → chunk-R7C4MGZ5.js} +17 -224
- 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-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-GIRNFXP3.js → chunk-TZRI7BJZ.js} +45 -15
- 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-ILX2NOLF.js → chunk-WPANOB4A.js} +20 -20
- package/dist/safe-bash/command-chunks/{chunk-Y2WBSJG6.js → chunk-X4QZQI5Q.js} +65 -64
- package/dist/safe-bash/command-chunks/{chunk-HDCNKOIX.js → chunk-XGI57GCN.js} +1 -1
- 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-WWIBP2ET.js → chunk-Z5ZZVDUD.js} +143 -22
- package/dist/safe-bash/command-chunks/{chunk-LOICUCHG.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/index.js +2 -1
- package/dist/safe-bash/commands/chmod/index.browser.js +1 -1
- 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/index.browser.js +3 -4
- 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/mktemp/index.browser.js +1 -1
- 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/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 +1 -1
- 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 +28 -24
- 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 +283 -945
- 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 +2 -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 +23 -18
- 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 +21 -4
- package/dist/safe-bash/shell/runtime.js +373 -412
- 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 +5 -0
- package/dist/safe-bash/shell/value-state.js +1 -1
- package/dist/safe-bash/shell-entry.browser.js +32 -33
- package/dist/safe-bash/trap.browser.js +4 -4
- 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 +206 -60
- 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 +278 -50
- 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 +1 -4
- 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-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 +56 -6
- 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 +37 -61
- 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 +2804 -2771
- 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/command.js +1 -1
- package/dist/safe-bash-command-mktemp/index.js +1 -1
- 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 +10 -6
- package/dist/safe-bash-command-op/index.js +39 -32
- 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 +2 -2
- package/dist/safe-bash-command-soffice/index.js +97 -12
- package/dist/safe-bash-command-sponge/index.js +4 -1
- 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/command.js +1 -1
- package/dist/safe-bash-command-stat/index.js +1 -1
- 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 +26 -4
- 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 +41 -10
- package/dist/safe-bash-command-yq/accounting.js +1 -1
- package/dist/safe-bash-command-yq/index.js +3 -2
- package/dist/safe-bash-command-yq/native-work.js +2 -0
- package/dist/safe-bash-command-yq/parser.js +2 -2
- package/dist/safe-bash-command-yq/query.js +5 -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 +2 -2
- package/dist/safe-bash-compression-engine/codec-loader.js +1 -1
- package/dist/safe-bash-compression-engine/files.js +5 -5
- package/dist/safe-bash-compression-engine/index.js +4 -4
- package/dist/safe-bash-compression-engine/operand.js +5 -5
- package/dist/safe-bash-compression-engine/stream.js +4 -4
- package/dist/safe-bash-compression-engine/zstd-decode.js +3 -3
- 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.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-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 +1 -1
- package/dist/safe-bash-search-engine/grep.js +16 -9
- package/dist/safe-bash-search-engine/matcher.d.ts +2 -2
- package/dist/safe-bash-search-engine/matcher.js +12 -8
- package/dist/safe-bash-search-engine/shared.js +1 -1
- package/dist/safe-bash-search-engine/walk.js +13 -1
- 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-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 +86 -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-GDYNCWRV.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/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 -9167
- 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-BXCXRYVU.js → chunk-JNANXVJV.js} +0 -0
- 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,474 +0,0 @@
|
|
|
1
|
-
import { validateWire } from './wire-validation.js';
|
|
2
|
-
import { admitOutputFreshness } from './output-freshness.js';
|
|
3
|
-
/** Project settled invocation effects without enumerating any source directory.
|
|
4
|
-
* Paths describe observed namespace effects; identities remain the authority
|
|
5
|
-
* for reads, including removed and replaced outputs. */
|
|
6
|
-
export function inspectOutputTree(manifest, logicalRoot) {
|
|
7
|
-
validateWire('EffectManifest', manifest);
|
|
8
|
-
// Keep the inspected effects and native outcome together even if transfer
|
|
9
|
-
// fails. Caller mutation must not change the revision used by this transfer.
|
|
10
|
-
manifest = structuredClone(manifest);
|
|
11
|
-
// Sequence identifies an operation, not its settlement time. Concurrent
|
|
12
|
-
// operations can settle out of sequence, and requested/settled receipts share
|
|
13
|
-
// a sequence. Preserve observation order while refusing ambiguous replay.
|
|
14
|
-
const sequences = new Map();
|
|
15
|
-
const receipts = new Map();
|
|
16
|
-
for (const effect of manifest.effects) {
|
|
17
|
-
const owner = sequences.get(effect.sequence);
|
|
18
|
-
const previous = receipts.get(effect.operationId);
|
|
19
|
-
if ((owner !== undefined && owner !== effect.operationId)
|
|
20
|
-
|| (previous && (previous.sequence !== effect.sequence || previous.state !== 'requested' || effect.state === 'requested'
|
|
21
|
-
|| ['operation', 'namespaceId', 'path', 'destination', 'identityId', 'offset', 'length', 'handleId']
|
|
22
|
-
.some(field => previous[field] !== undefined && previous[field] !== effect[field]))))
|
|
23
|
-
throw new TypeError('Conflicting output effect receipt');
|
|
24
|
-
sequences.set(effect.sequence, effect.operationId);
|
|
25
|
-
receipts.set(effect.operationId, effect);
|
|
26
|
-
}
|
|
27
|
-
if (!logicalRoot.startsWith('/') || logicalRoot.includes('\0') || logicalRoot.split('/').some(part => part === '..' || part === '.'))
|
|
28
|
-
throw new TypeError('Invalid output root');
|
|
29
|
-
const root = logicalRoot === '/' ? '' : logicalRoot.endsWith('/') ? logicalRoot.slice(0, -1) : logicalRoot;
|
|
30
|
-
const files = new Map();
|
|
31
|
-
const directories = new Set();
|
|
32
|
-
const detached = new Set();
|
|
33
|
-
// Untouched input names are namespace observations, not output membership.
|
|
34
|
-
// They still establish same-object rename no-ops involving generated aliases.
|
|
35
|
-
const occupants = new Map();
|
|
36
|
-
const unresolvedEffects = [];
|
|
37
|
-
const uncertainIdentities = new Set();
|
|
38
|
-
const produced = new Set(manifest.effects.flatMap(effect => effect.state === 'applied' && effect.identityId
|
|
39
|
-
&& ['created', 'modified', 'write', 'append', 'truncate', 'metadata', 'link', 'rename'].includes(effect.operation)
|
|
40
|
-
&& !((effect.operation === 'write' || effect.operation === 'append') && effect.acknowledgedBytes === '0') ? [effect.identityId] : []));
|
|
41
|
-
// A link produces its destination, but does not modify the original input.
|
|
42
|
-
// Initial open observations locate later mutations, never untouched sources
|
|
43
|
-
// that merely gained a generated alias or were renamed elsewhere.
|
|
44
|
-
const modified = new Set(manifest.effects.flatMap(effect => effect.state === 'applied' && effect.identityId
|
|
45
|
-
&& ['created', 'modified', 'write', 'append', 'truncate', 'metadata'].includes(effect.operation)
|
|
46
|
-
&& !((effect.operation === 'write' || effect.operation === 'append') && effect.acknowledgedBytes === '0') ? [effect.identityId] : []));
|
|
47
|
-
const inside = (path) => path.startsWith(root + '/') && path.length > root.length + 1;
|
|
48
|
-
const relative = (path) => {
|
|
49
|
-
const value = path.slice(root.length + 1);
|
|
50
|
-
if (value.split('/').some(part => !part || part === '.' || part === '..') || value.includes('\0'))
|
|
51
|
-
throw new TypeError('Unsafe output path');
|
|
52
|
-
return value;
|
|
53
|
-
};
|
|
54
|
-
for (const effect of manifest.effects) {
|
|
55
|
-
// Native settlement alone cannot locate a namespace mutation. A receipt
|
|
56
|
-
// without the affected names must not preserve an earlier observed alias.
|
|
57
|
-
const incompleteNamespace = effect.state === 'applied' && ((effect.operation === 'rename' && (!effect.path || !effect.destination))
|
|
58
|
-
|| (['unlink', 'rmdir', 'mkdir', 'symlink'].includes(effect.operation) && !effect.path)
|
|
59
|
-
|| (effect.operation === 'link' && !effect.destination)
|
|
60
|
-
// Handle-only IO can be correlated through retained identity. Without
|
|
61
|
-
// either identity or pathname, a settled mutation cannot certify a tree.
|
|
62
|
-
|| (!effect.path && !effect.identityId
|
|
63
|
-
&& ['created', 'modified', 'write', 'append', 'truncate', 'metadata'].includes(effect.operation)
|
|
64
|
-
&& !((effect.operation === 'write' || effect.operation === 'append') && effect.acknowledgedBytes === '0')));
|
|
65
|
-
// Requested receipts are unresolved only when no later settlement for this
|
|
66
|
-
// operation was observed. Treat their affected names as uncertain, just as
|
|
67
|
-
// unknown settlement, without discarding independent settled outputs.
|
|
68
|
-
const pending = effect.state === 'requested' && receipts.get(effect.operationId) === effect;
|
|
69
|
-
if (effect.state === 'unknown' || pending || incompleteNamespace) {
|
|
70
|
-
unresolvedEffects.push(effect.operationId);
|
|
71
|
-
// An unlocated directory removal could remove any observed empty output
|
|
72
|
-
// directory. Keep known files, whose required parents are derived below,
|
|
73
|
-
// but do not recreate directories that may have been removed.
|
|
74
|
-
if (effect.operation === 'rmdir' && !effect.path)
|
|
75
|
-
directories.clear();
|
|
76
|
-
// An identity-only namespace receipt cannot tell which retained alias
|
|
77
|
-
// moved or disappeared. Invalidate its observed locations rather than
|
|
78
|
-
// reconstructing a name from an earlier open or a stale handle hint.
|
|
79
|
-
if (effect.identityId && ['rename', 'unlink'].includes(effect.operation) && !effect.path) {
|
|
80
|
-
for (const [path, identity] of occupants)
|
|
81
|
-
if (identity === effect.identityId)
|
|
82
|
-
occupants.delete(path);
|
|
83
|
-
uncertainIdentities.add(effect.identityId);
|
|
84
|
-
for (const [path, identity] of files)
|
|
85
|
-
if (identity === effect.identityId)
|
|
86
|
-
files.delete(path);
|
|
87
|
-
}
|
|
88
|
-
// An uncertain mutation cannot authorize either former or destination
|
|
89
|
-
// spelling. Keep retained identities readable without guessing a move.
|
|
90
|
-
// A link's source remains in place even when its destination is unknown.
|
|
91
|
-
for (const affected of effect.operation === 'link' ? [effect.destination] : [effect.path, effect.destination]) {
|
|
92
|
-
if (!affected)
|
|
93
|
-
continue;
|
|
94
|
-
for (const path of occupants.keys())
|
|
95
|
-
if (path === affected || path.startsWith(affected + '/'))
|
|
96
|
-
occupants.delete(path);
|
|
97
|
-
for (const [path, identity] of files)
|
|
98
|
-
if (path === affected || path.startsWith(affected + '/')) {
|
|
99
|
-
if (identity)
|
|
100
|
-
uncertainIdentities.add(identity);
|
|
101
|
-
files.delete(path);
|
|
102
|
-
}
|
|
103
|
-
for (const path of directories)
|
|
104
|
-
if (path === affected || path.startsWith(affected + '/'))
|
|
105
|
-
directories.delete(path);
|
|
106
|
-
}
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
if (effect.state !== 'applied')
|
|
110
|
-
continue;
|
|
111
|
-
// Preserve the receipt in inspection, but zero settled bytes do not establish
|
|
112
|
-
// output membership for an existing file opened without truncation.
|
|
113
|
-
if ((effect.operation === 'write' || effect.operation === 'append') && effect.acknowledgedBytes === '0')
|
|
114
|
-
continue;
|
|
115
|
-
// A generated hard link grants retrieval of its identity, but does not
|
|
116
|
-
// produce every known input alias of that object. Reopening an unchanged
|
|
117
|
-
// source must not promote it into the output tree.
|
|
118
|
-
const untouchedSource = effect.operation === 'open' && effect.path !== undefined && effect.identityId !== undefined
|
|
119
|
-
&& occupants.get(effect.path) === effect.identityId && !files.has(effect.path) && !modified.has(effect.identityId);
|
|
120
|
-
if (effect.operation === 'rename' && effect.path && effect.destination) {
|
|
121
|
-
const sourceIdentity = files.get(effect.path) ?? effect.identityId ?? occupants.get(effect.path);
|
|
122
|
-
if (effect.path === effect.destination || (sourceIdentity !== undefined
|
|
123
|
-
&& sourceIdentity === (files.get(effect.destination) ?? occupants.get(effect.destination))))
|
|
124
|
-
continue;
|
|
125
|
-
for (const path of occupants.keys())
|
|
126
|
-
if (path === effect.destination || path.startsWith(effect.destination + '/'))
|
|
127
|
-
occupants.delete(path);
|
|
128
|
-
for (const [path, identity] of [...occupants])
|
|
129
|
-
if (path === effect.path || path.startsWith(effect.path + '/')) {
|
|
130
|
-
occupants.delete(path);
|
|
131
|
-
occupants.set(effect.destination + path.slice(effect.path.length), identity);
|
|
132
|
-
}
|
|
133
|
-
if (effect.identityId)
|
|
134
|
-
occupants.set(effect.destination, effect.identityId);
|
|
135
|
-
}
|
|
136
|
-
else if (effect.operation === 'link' && effect.destination) {
|
|
137
|
-
occupants.delete(effect.destination);
|
|
138
|
-
if (effect.identityId) {
|
|
139
|
-
occupants.set(effect.destination, effect.identityId);
|
|
140
|
-
if (effect.path)
|
|
141
|
-
occupants.set(effect.path, effect.identityId);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else if (effect.path && ['open', 'created', 'unlink', 'rmdir', 'mkdir', 'symlink'].includes(effect.operation)) {
|
|
145
|
-
occupants.delete(effect.path);
|
|
146
|
-
if (effect.identityId && ['open', 'created'].includes(effect.operation))
|
|
147
|
-
occupants.set(effect.path, effect.identityId);
|
|
148
|
-
}
|
|
149
|
-
if (effect.operation === 'open' && effect.path) {
|
|
150
|
-
const located = effect.identityId !== undefined && [...files.values()].includes(effect.identityId);
|
|
151
|
-
const displaced = files.get(effect.path);
|
|
152
|
-
if (displaced && displaced !== effect.identityId)
|
|
153
|
-
detached.add(displaced);
|
|
154
|
-
// Opens observe namespace occupants, but do not themselves produce an
|
|
155
|
-
// output. Do not copy an untouched input over a prior output's name.
|
|
156
|
-
files.delete(effect.path);
|
|
157
|
-
if (effect.identityId && !untouchedSource && (modified.has(effect.identityId) || located)) {
|
|
158
|
-
uncertainIdentities.delete(effect.identityId);
|
|
159
|
-
detached.delete(effect.identityId);
|
|
160
|
-
files.set(effect.path, effect.identityId);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
else if (effect.operation === 'link' && effect.destination) {
|
|
164
|
-
const replaced = files.get(effect.destination);
|
|
165
|
-
if (replaced && replaced !== effect.identityId)
|
|
166
|
-
detached.add(replaced);
|
|
167
|
-
files.set(effect.destination, effect.identityId);
|
|
168
|
-
if (effect.identityId) {
|
|
169
|
-
detached.delete(effect.identityId);
|
|
170
|
-
uncertainIdentities.delete(effect.identityId);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
else if (effect.operation === 'rename' && effect.path && effect.destination) {
|
|
174
|
-
// A renamed input can become an output without an earlier create/write.
|
|
175
|
-
// Bind only an explicitly retained identity, never enumerate the source.
|
|
176
|
-
if (!files.has(effect.path) && !directories.has(effect.path) && effect.identityId && manifest.outputs.includes(effect.identityId))
|
|
177
|
-
files.set(effect.path, effect.identityId);
|
|
178
|
-
const sourceObserved = [...files.keys(), ...directories].some(path => path === effect.path || path.startsWith(effect.path + '/'));
|
|
179
|
-
const replaced = files.get(effect.destination);
|
|
180
|
-
if (replaced && replaced !== files.get(effect.path))
|
|
181
|
-
detached.add(replaced);
|
|
182
|
-
// A settled rename replaces the destination even when its source was
|
|
183
|
-
// never retained by this invocation. Keep the old object downloadable,
|
|
184
|
-
// but do not reconstruct it at a name now occupied by an unknown object.
|
|
185
|
-
files.delete(effect.destination);
|
|
186
|
-
directories.delete(effect.destination);
|
|
187
|
-
if (!sourceObserved)
|
|
188
|
-
files.set(effect.destination, undefined);
|
|
189
|
-
for (const [path, identity] of [...files])
|
|
190
|
-
if (path === effect.path || path.startsWith(effect.path + '/')) {
|
|
191
|
-
files.delete(path);
|
|
192
|
-
files.set(effect.destination + path.slice(effect.path.length), identity);
|
|
193
|
-
}
|
|
194
|
-
for (const path of [...directories])
|
|
195
|
-
if (path === effect.path || path.startsWith(effect.path + '/')) {
|
|
196
|
-
directories.delete(path);
|
|
197
|
-
directories.add(effect.destination + path.slice(effect.path.length));
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
else if (effect.path && effect.operation === 'symlink') {
|
|
201
|
-
// A regular-file destination cannot materialize this namespace effect.
|
|
202
|
-
// Keep its location visible while allowing independent files to settle.
|
|
203
|
-
const displaced = files.get(effect.path);
|
|
204
|
-
if (displaced)
|
|
205
|
-
detached.add(displaced);
|
|
206
|
-
files.set(effect.path, undefined);
|
|
207
|
-
}
|
|
208
|
-
else if (effect.path && ['unlink', 'rmdir'].includes(effect.operation)) {
|
|
209
|
-
const identity = files.get(effect.path) ?? effect.identityId;
|
|
210
|
-
if (identity)
|
|
211
|
-
detached.add(identity);
|
|
212
|
-
files.delete(effect.path);
|
|
213
|
-
directories.delete(effect.path);
|
|
214
|
-
}
|
|
215
|
-
else if (effect.path && effect.operation === 'mkdir')
|
|
216
|
-
directories.add(effect.path);
|
|
217
|
-
else if (effect.path && !effect.identityId && ['created', 'modified', 'write', 'append', 'truncate', 'metadata'].includes(effect.operation)) {
|
|
218
|
-
const displaced = files.get(effect.path);
|
|
219
|
-
if (displaced)
|
|
220
|
-
detached.add(displaced);
|
|
221
|
-
files.set(effect.path, undefined);
|
|
222
|
-
}
|
|
223
|
-
else if (effect.path && effect.identityId && ['created', 'modified', 'write', 'append', 'truncate', 'metadata'].includes(effect.operation)) {
|
|
224
|
-
if (effect.operation === 'created') {
|
|
225
|
-
detached.delete(effect.identityId);
|
|
226
|
-
uncertainIdentities.delete(effect.identityId);
|
|
227
|
-
}
|
|
228
|
-
// Handle receipts can carry the pathname used at open. Once a namespace
|
|
229
|
-
// operation moves that identity, subsequent IO must not bind it there again.
|
|
230
|
-
if (detached.has(effect.identityId) || uncertainIdentities.has(effect.identityId) || (effect.operation !== 'created' && [...files.values()].includes(effect.identityId)))
|
|
231
|
-
continue;
|
|
232
|
-
const displaced = files.get(effect.path);
|
|
233
|
-
if (displaced && displaced !== effect.identityId)
|
|
234
|
-
detached.add(displaced);
|
|
235
|
-
files.set(effect.path, effect.identityId);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// A receipt can identify a settled object even when retaining it failed.
|
|
239
|
-
// Namespace correlation is useful while projecting moves and replacements,
|
|
240
|
-
// but only manifest output authority permits a retrieval request. Preserve
|
|
241
|
-
// unavailable names and transfer independent retained files first.
|
|
242
|
-
const retained = new Set(manifest.outputs);
|
|
243
|
-
// An admitted output with no receipt is still retrievable by identity, but
|
|
244
|
-
// cannot certify a reconstructed tree. Do not guess its name or enumerate
|
|
245
|
-
// shared storage. Known opens and zero-byte writes remain non-producing.
|
|
246
|
-
const observedIdentities = new Set(manifest.effects.flatMap(effect => effect.identityId ? [effect.identityId] : []));
|
|
247
|
-
// Keep namespace observations even when retaining their objects failed.
|
|
248
|
-
// Located missing retains are reported as unavailablePaths; unlocated settled
|
|
249
|
-
// writes must also prevent success, without blocking independent transfers.
|
|
250
|
-
const observedLocations = new Set(files.values());
|
|
251
|
-
for (const [path, identity] of files)
|
|
252
|
-
if (identity !== undefined && !retained.has(identity))
|
|
253
|
-
files.set(path, undefined);
|
|
254
|
-
for (const path of [...files.keys(), ...directories])
|
|
255
|
-
if (inside(path)) {
|
|
256
|
-
const components = relative(path).split('/');
|
|
257
|
-
for (let i = 1; i < components.length; i++)
|
|
258
|
-
directories.add(root + '/' + components.slice(0, i).join('/'));
|
|
259
|
-
}
|
|
260
|
-
const located = new Set(files.values());
|
|
261
|
-
return {
|
|
262
|
-
manifest,
|
|
263
|
-
files: [...files].flatMap(([path, identityId]) => inside(path) && identityId !== undefined ? [{ path, relativePath: relative(path), identityId }] : []),
|
|
264
|
-
directories: [...directories].filter(inside).sort((a, b) => a.split('/').length - b.split('/').length).map(path => ({ path, relativePath: relative(path) })),
|
|
265
|
-
retainedIdentities: [...manifest.outputs],
|
|
266
|
-
detachedIdentities: [...detached].filter(identity => retained.has(identity) && !located.has(identity)),
|
|
267
|
-
// Preserve produced objects without known locations, including failed
|
|
268
|
-
// retains, and retained outputs from newer receipt operations. Known opens
|
|
269
|
-
// and zero-progress writes do not produce untouched inputs.
|
|
270
|
-
unlocatedIdentities: [...new Set([...produced, ...manifest.outputs.filter(identity => !observedIdentities.has(identity)), ...manifest.effects.flatMap(effect => effect.state === 'applied' && effect.identityId && manifest.outputs.includes(effect.identityId)
|
|
271
|
-
&& !['open', 'created', 'modified', 'write', 'append', 'truncate', 'metadata', 'link', 'rename', 'unlink', 'mkdir', 'rmdir'].includes(effect.operation)
|
|
272
|
-
? [effect.identityId] : [])])].filter(identity => !detached.has(identity) && !observedLocations.has(identity)),
|
|
273
|
-
unavailablePaths: [...files].flatMap(([path, identityId]) => inside(path) && identityId === undefined ? [{ path, relativePath: relative(path) }] : []),
|
|
274
|
-
unresolvedEffects,
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/** Reconstruct the surviving output tree, even after native error/cancellation.
|
|
278
|
-
* Each write settles independently; completed files are never rolled back.
|
|
279
|
-
* Resume requires the same manifest and unchanged retained source content.
|
|
280
|
-
* This is retrieval, not the live canonical execution adapter. */
|
|
281
|
-
export async function retrieveOutputs(manifest, logicalRoot, source, destination, cursor = { completed: new Set(), offsets: new Map() }, signal, options = {}) {
|
|
282
|
-
let currentPath;
|
|
283
|
-
try {
|
|
284
|
-
const tree = inspectOutputTree(manifest, logicalRoot);
|
|
285
|
-
manifest = tree.manifest;
|
|
286
|
-
const maxFrameBytes = options.maxFrameBytes ?? 1048576;
|
|
287
|
-
if (!Number.isSafeInteger(maxFrameBytes) || maxFrameBytes < 1)
|
|
288
|
-
throw new TypeError('Invalid output transfer frame bound');
|
|
289
|
-
// Pin admitted host facets before freshness or destination work can await.
|
|
290
|
-
// Bound receivers continue observing live retained bytes and backend policy.
|
|
291
|
-
source = Object.freeze({ scope: source.scope, metadata: source.metadata.bind(source), range: source.range.bind(source),
|
|
292
|
-
freshness: source.freshness?.bind(source) });
|
|
293
|
-
const destinationIdentity = destination.identity ?? destination;
|
|
294
|
-
if ((typeof destinationIdentity !== 'object' || destinationIdentity === null) && typeof destinationIdentity !== 'symbol')
|
|
295
|
-
throw new TypeError('Invalid output destination identity');
|
|
296
|
-
destination = Object.freeze({ mkdir: destination.mkdir.bind(destination), open: destination.open.bind(destination) });
|
|
297
|
-
signal?.throwIfAborted();
|
|
298
|
-
const root = logicalRoot === '/' ? '' : logicalRoot.endsWith('/') ? logicalRoot.slice(0, -1) : logicalRoot;
|
|
299
|
-
const binding = JSON.stringify([manifest.jobId, root, manifest.effectBarrier, manifest.outputs, manifest.effects]);
|
|
300
|
-
if (cursor.binding !== undefined && cursor.binding !== binding)
|
|
301
|
-
throw new Error('Output resume cursor belongs to a different effect manifest or root');
|
|
302
|
-
if (cursor.binding === undefined && (cursor.completed.size || cursor.offsets.size || cursor.directories?.size))
|
|
303
|
-
throw new Error('Output resume cursor has no manifest binding');
|
|
304
|
-
const progressed = cursor.completed.size || cursor.offsets.size || cursor.directories?.size;
|
|
305
|
-
if (progressed && cursor.destination !== destinationIdentity)
|
|
306
|
-
throw new Error('Output resume cursor belongs to a different destination or has no destination binding');
|
|
307
|
-
if (progressed && cursor.sourceScope !== source.scope)
|
|
308
|
-
throw new Error('Output resume cursor belongs to a different source scope or has no source binding');
|
|
309
|
-
cursor.binding = binding;
|
|
310
|
-
cursor.destination = destinationIdentity;
|
|
311
|
-
cursor.sourceScope = source.scope;
|
|
312
|
-
// Completed files still participate in the qualified source revision. Check
|
|
313
|
-
// them before any new destination effects, while preserving settled bytes.
|
|
314
|
-
for (const { relativePath, identityId } of tree.files) {
|
|
315
|
-
if (!cursor.completed.has(relativePath))
|
|
316
|
-
continue;
|
|
317
|
-
const previous = cursor.sources?.get(relativePath);
|
|
318
|
-
currentPath = relativePath;
|
|
319
|
-
signal?.throwIfAborted();
|
|
320
|
-
if (!previous)
|
|
321
|
-
throw new Error('Output resume requires qualified source identity and version');
|
|
322
|
-
await previous.assertCurrent(signal);
|
|
323
|
-
const supplied = await source.freshness?.(identityId, signal);
|
|
324
|
-
const freshness = supplied ? admitOutputFreshness(supplied) : undefined;
|
|
325
|
-
const { identity, version, assertCurrent } = freshness ?? {};
|
|
326
|
-
if (previous.identityId !== identityId || previous.identity !== identity || previous.version !== version || typeof assertCurrent !== 'function')
|
|
327
|
-
throw new Error('Output source identity or version changed');
|
|
328
|
-
await assertCurrent.call(freshness, signal);
|
|
329
|
-
}
|
|
330
|
-
for (const directory of tree.directories) {
|
|
331
|
-
currentPath = directory.relativePath;
|
|
332
|
-
if (cursor.directories?.has(currentPath))
|
|
333
|
-
continue;
|
|
334
|
-
signal?.throwIfAborted();
|
|
335
|
-
await destination.mkdir(currentPath, signal);
|
|
336
|
-
(cursor.directories ??= new Set()).add(currentPath);
|
|
337
|
-
}
|
|
338
|
-
for (const { relativePath, identityId: identity } of tree.files) {
|
|
339
|
-
currentPath = relativePath;
|
|
340
|
-
if (cursor.completed.has(currentPath))
|
|
341
|
-
continue;
|
|
342
|
-
signal?.throwIfAborted();
|
|
343
|
-
let offset = cursor.offsets.get(currentPath) ?? 0n;
|
|
344
|
-
const previous = cursor.sources?.get(currentPath);
|
|
345
|
-
await previous?.assertCurrent(signal);
|
|
346
|
-
const supplied = await source.freshness?.(identity, signal);
|
|
347
|
-
const freshness = supplied ? admitOutputFreshness(supplied) : undefined;
|
|
348
|
-
// Admission pins the token and checks its original binding around every
|
|
349
|
-
// validation, including later cursor reuse and completed-file checks.
|
|
350
|
-
const { identity: object, version, assertCurrent } = freshness ?? {};
|
|
351
|
-
const observedCurrent = assertCurrent?.bind(freshness);
|
|
352
|
-
if (offset > 0n && (!previous || !observedCurrent))
|
|
353
|
-
throw new Error('Output resume requires qualified source identity and version');
|
|
354
|
-
if (previous && (!observedCurrent || previous.identityId !== identity || previous.identity !== object || previous.version !== version))
|
|
355
|
-
throw new Error('Output source identity or version changed');
|
|
356
|
-
await observedCurrent?.(signal);
|
|
357
|
-
const current = previous?.assertCurrent ?? observedCurrent;
|
|
358
|
-
await current?.(signal);
|
|
359
|
-
if (freshness && !previous)
|
|
360
|
-
(cursor.sources ??= new Map()).set(currentPath, { identityId: identity, identity: object, version: version, assertCurrent: current });
|
|
361
|
-
const metadata = structuredClone(await source.metadata(identity, signal));
|
|
362
|
-
validateWire('FileMetadata', metadata);
|
|
363
|
-
if (metadata.type !== 'file')
|
|
364
|
-
throw new Error('Output is not a regular file');
|
|
365
|
-
const size = BigInt(metadata.size);
|
|
366
|
-
if (offset < 0n || offset > size)
|
|
367
|
-
throw new Error('Output resume cursor no longer matches retained file');
|
|
368
|
-
await current?.(signal);
|
|
369
|
-
const file = await destination.open(currentPath, metadata, signal);
|
|
370
|
-
const close = file.close.bind(file);
|
|
371
|
-
let reader;
|
|
372
|
-
let primary;
|
|
373
|
-
let cancellation;
|
|
374
|
-
const cancelRead = () => {
|
|
375
|
-
cancellation ??= reader.cancel(signal?.reason);
|
|
376
|
-
// Observe rejection immediately; cleanup still reports its outcome.
|
|
377
|
-
void cancellation.catch(() => { });
|
|
378
|
-
};
|
|
379
|
-
try {
|
|
380
|
-
const write = file.write.bind(file);
|
|
381
|
-
const truncate = file.truncate.bind(file);
|
|
382
|
-
if (offset < size) {
|
|
383
|
-
reader = (await source.range(identity, offset, signal)).getReader();
|
|
384
|
-
signal?.addEventListener('abort', cancelRead, { once: true });
|
|
385
|
-
if (signal?.aborted)
|
|
386
|
-
cancelRead();
|
|
387
|
-
for (;;) {
|
|
388
|
-
signal?.throwIfAborted();
|
|
389
|
-
await current?.(signal);
|
|
390
|
-
const part = await reader.read();
|
|
391
|
-
signal?.throwIfAborted();
|
|
392
|
-
if (part.done) {
|
|
393
|
-
await current?.(signal);
|
|
394
|
-
break;
|
|
395
|
-
}
|
|
396
|
-
const fragment = part.value;
|
|
397
|
-
if (!(fragment instanceof Uint8Array))
|
|
398
|
-
throw new Error('Invalid output range bytes');
|
|
399
|
-
const length = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(fragment);
|
|
400
|
-
if (!length)
|
|
401
|
-
throw new Error('Invalid output range bytes');
|
|
402
|
-
if (length > maxFrameBytes)
|
|
403
|
-
throw new Error('Output range frame exceeds transfer bound');
|
|
404
|
-
if (offset + BigInt(length) > size)
|
|
405
|
-
throw new Error('Invalid output range bytes');
|
|
406
|
-
const bytes = new Uint8Array(fragment);
|
|
407
|
-
await current?.(signal);
|
|
408
|
-
for (let position = 0; position < bytes.length;) {
|
|
409
|
-
signal?.throwIfAborted();
|
|
410
|
-
await current?.(signal);
|
|
411
|
-
// A consumer owns its admitted buffer, but a partial receipt must
|
|
412
|
-
// not let it rewrite the remaining ordered source bytes.
|
|
413
|
-
const count = await write(offset, bytes.slice(position), signal);
|
|
414
|
-
if (!Number.isSafeInteger(count) || count < 1 || count > bytes.length - position)
|
|
415
|
-
throw new Error('Invalid output write receipt');
|
|
416
|
-
position += count;
|
|
417
|
-
offset += BigInt(count);
|
|
418
|
-
cursor.offsets.set(currentPath, offset);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
signal?.throwIfAborted();
|
|
423
|
-
await current?.(signal);
|
|
424
|
-
if (offset !== size)
|
|
425
|
-
throw new Error('Output range interrupted');
|
|
426
|
-
await truncate(size, signal);
|
|
427
|
-
await current?.(signal);
|
|
428
|
-
}
|
|
429
|
-
catch (cause) {
|
|
430
|
-
primary = { cause };
|
|
431
|
-
}
|
|
432
|
-
signal?.removeEventListener('abort', cancelRead);
|
|
433
|
-
// Admit both cleanup operations before calling adapters, which may throw
|
|
434
|
-
// synchronously. Keep every failure and always release the reader lock.
|
|
435
|
-
const cleanup = await Promise.allSettled([
|
|
436
|
-
cancellation ?? Promise.resolve().then(() => reader?.cancel()),
|
|
437
|
-
Promise.resolve().then(close),
|
|
438
|
-
]);
|
|
439
|
-
reader?.releaseLock();
|
|
440
|
-
const failures = cleanup.filter(result => result.status === 'rejected');
|
|
441
|
-
if (failures.length)
|
|
442
|
-
throw new AggregateError([...(primary === undefined ? [] : [primary.cause]), ...failures.map(result => result.reason)], 'Output transfer cleanup failed');
|
|
443
|
-
if (primary)
|
|
444
|
-
throw primary.cause;
|
|
445
|
-
// Final destination work can await concurrent canonical mutations. Keep
|
|
446
|
-
// acknowledged progress, but do not certify a stale source as complete.
|
|
447
|
-
await current?.(signal);
|
|
448
|
-
cursor.completed.add(currentPath);
|
|
449
|
-
}
|
|
450
|
-
// Every settled operation remains acknowledged, including the last one.
|
|
451
|
-
// Consumer closure still prevents reporting a successful transfer.
|
|
452
|
-
signal?.throwIfAborted();
|
|
453
|
-
// Later files and destination cleanup can await concurrent canonical writers.
|
|
454
|
-
// Revalidate every qualified version before certifying the transfer; this
|
|
455
|
-
// is a measured observation, not cross-file snapshot isolation. Keep all
|
|
456
|
-
// settled destination progress if an earlier source has since changed.
|
|
457
|
-
for (const { relativePath } of tree.files) {
|
|
458
|
-
currentPath = relativePath;
|
|
459
|
-
await cursor.sources?.get(relativePath)?.assertCurrent(signal);
|
|
460
|
-
}
|
|
461
|
-
signal?.throwIfAborted();
|
|
462
|
-
currentPath = undefined;
|
|
463
|
-
if (tree.unresolvedEffects.length)
|
|
464
|
-
throw new Error('Output effect settlement unavailable: ' + tree.unresolvedEffects.join(', '));
|
|
465
|
-
if (tree.unlocatedIdentities.length)
|
|
466
|
-
throw new Error('Output namespace location unavailable: ' + tree.unlocatedIdentities.join(', '));
|
|
467
|
-
if (tree.unavailablePaths.length)
|
|
468
|
-
throw new Error('Output retained identity unavailable: ' + tree.unavailablePaths.map(file => file.relativePath).join(', '));
|
|
469
|
-
return { manifest, processOutcome: manifest.processOutcome, outcome: manifest.outcome, transfer: { state: 'complete', cursor } };
|
|
470
|
-
}
|
|
471
|
-
catch (error) {
|
|
472
|
-
return { manifest, processOutcome: manifest.processOutcome, outcome: manifest.outcome, transfer: { state: 'failed', path: currentPath, error, cursor } };
|
|
473
|
-
}
|
|
474
|
-
}
|