@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.
Files changed (696) hide show
  1. package/README.md +56 -31
  2. package/dist/image-ast/ast.d.ts +1 -0
  3. package/dist/image-ast/browser/ast.d.ts +1 -0
  4. package/dist/image-ast/browser/codecs/jpeg.d.ts +2 -2
  5. package/dist/image-ast/codecs/jpeg.d.ts +2 -2
  6. package/dist/image-ast/index.browser.js +692 -8364
  7. package/dist/image-ast/index.js +692 -8364
  8. package/dist/mp4-ast/codecs.d.ts +7 -2
  9. package/dist/safe-bash/chunks/{chunk-CHYGPFVM.js → chunk-22SX3F2R.js} +1 -1
  10. package/dist/safe-bash/chunks/{chunk-FBUCWVTE.js → chunk-2IVBJTBD.js} +1 -1
  11. package/dist/safe-bash/chunks/chunk-2POETUMB.js +190 -0
  12. package/dist/safe-bash/chunks/{chunk-XVOSKJE2.js → chunk-47D7WBJK.js} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-VKNVHEX3.js → chunk-4ESI236Y.js} +1 -1
  14. package/dist/safe-bash/chunks/{chunk-74GHTNJA.js → chunk-4KTMKD5W.js} +1 -1
  15. package/dist/safe-bash/chunks/{chunk-55YJASTN.js → chunk-4T53AERN.js} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-DQP3VHSB.js → chunk-5XIFJVOO.js} +1 -1
  17. package/dist/safe-bash/chunks/{chunk-5OHX7C2V.js → chunk-62BOHHJT.js} +1 -1
  18. package/dist/safe-bash/chunks/{chunk-HZAMGT5I.js → chunk-67WIFM3N.js} +17 -6
  19. package/dist/safe-bash/chunks/{chunk-4D4N7IU2.js → chunk-6LNFRPW5.js} +2 -2
  20. package/dist/safe-bash/chunks/{chunk-6O77NL2S.js → chunk-6SMICPI3.js} +1 -1
  21. package/dist/safe-bash/chunks/{chunk-4BSJLKNM.js → chunk-7O76UFQD.js} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-PNBBUWSM.js → chunk-AW5KIT6V.js} +3488 -39
  23. package/dist/safe-bash/chunks/{chunk-JMMEIDPF.js → chunk-B2Z73HTZ.js} +52 -28
  24. package/dist/safe-bash/chunks/chunk-B3ZMOJVM.js +319 -0
  25. package/dist/safe-bash/chunks/{chunk-7ZBU7KYV.js → chunk-CFAWS3O4.js} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-I5HZ4FGE.js → chunk-CL2FCTTO.js} +1 -1
  27. package/dist/safe-bash/chunks/{chunk-2LSAMQER.js → chunk-CTXNARJH.js} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-TFIBK2GI.js → chunk-D5Q7NFWI.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-OQRVVGR6.js → chunk-DSOOVZ6Q.js} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-VTH3MLDU.js → chunk-DUTAG6ZD.js} +1 -1
  31. package/dist/safe-bash/chunks/{chunk-XAQMU6OY.js → chunk-EE5YGFIZ.js} +1 -1
  32. package/dist/safe-bash/chunks/{chunk-FZE4HW6G.js → chunk-EJOYT2ME.js} +1 -1
  33. package/dist/safe-bash/chunks/chunk-FAAIR6EJ.js +887 -0
  34. package/dist/safe-bash/chunks/{chunk-OV6IHKO6.js → chunk-FOB2FZR4.js} +2 -2
  35. package/dist/safe-bash/chunks/chunk-G6V4RRSQ.js +14 -0
  36. package/dist/safe-bash/chunks/{chunk-UTBUUFDM.js → chunk-GGQAGQXQ.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-K6VCD7IY.js → chunk-HIIYIJ5G.js} +2 -4
  38. package/dist/safe-bash/chunks/{chunk-VBTDHOWC.js → chunk-IOHH2GTI.js} +4 -3
  39. package/dist/safe-bash/chunks/{chunk-CTVWDACF.js → chunk-IQW34XQT.js} +1 -1
  40. package/dist/safe-bash/chunks/{chunk-HZ7BWKQ3.js → chunk-IS572AAT.js} +1 -1
  41. package/dist/safe-bash/chunks/{chunk-AUSNDQTJ.js → chunk-JPSUHHOA.js} +1 -1
  42. package/dist/safe-bash/chunks/{chunk-ZVD5IS4V.js → chunk-KBZ4UB2O.js} +2 -2
  43. package/dist/safe-bash/chunks/{chunk-AM5ESLPH.js → chunk-KU5CVWKA.js} +1 -1
  44. package/dist/safe-bash/chunks/{chunk-RYFQ3LZG.js → chunk-LPOVNKNB.js} +173 -153
  45. package/dist/safe-bash/chunks/{chunk-46Z5E5EV.js → chunk-MBOC3LZ4.js} +1 -1
  46. package/dist/safe-bash/chunks/{chunk-6PAVEFT3.js → chunk-N4BQFD3P.js} +1 -1
  47. package/dist/safe-bash/chunks/{chunk-CS4MNM6I.js → chunk-NGKCVNWS.js} +1 -1
  48. package/dist/safe-bash/chunks/{chunk-7R5BDCG7.js → chunk-OHML2BEU.js} +1 -1
  49. package/dist/safe-bash/chunks/{chunk-C5OWC2TL.js → chunk-OQ3AGYCZ.js} +1 -1
  50. package/dist/safe-bash/chunks/{chunk-B7TAL7S5.js → chunk-PTAEWLSE.js} +0 -2
  51. package/dist/safe-bash/chunks/{chunk-LVOBFF4D.js → chunk-Q4FNLOTI.js} +1 -1
  52. package/dist/safe-bash/chunks/chunk-Q5XO3NAS.js +1036 -0
  53. package/dist/safe-bash/chunks/{chunk-GEG3BWGE.js → chunk-RHFRJIWQ.js} +1 -1
  54. package/dist/safe-bash/chunks/chunk-RUR6J33T.js +11 -0
  55. package/dist/safe-bash/chunks/{chunk-EEEWOYEG.js → chunk-S4RFUUXO.js} +839 -24
  56. package/dist/safe-bash/chunks/{chunk-RRR7AQ24.js → chunk-SD2ISU5L.js} +1 -1
  57. package/dist/safe-bash/chunks/{chunk-3NDIFSNM.js → chunk-SUJ3NTMH.js} +3 -3
  58. package/dist/safe-bash/chunks/{chunk-R3NAKOED.js → chunk-SZRUU5HS.js} +2 -2
  59. package/dist/safe-bash/chunks/{chunk-PH63PLPZ.js → chunk-TC3F4UFF.js} +1 -1
  60. package/dist/safe-bash/chunks/{chunk-3R3AANOR.js → chunk-TCKYOLUE.js} +1 -1
  61. package/dist/safe-bash/chunks/{chunk-D3ANYGMC.js → chunk-UV4X32QU.js} +1 -1
  62. package/dist/safe-bash/chunks/{chunk-E7OYNDGL.js → chunk-V7QT2RWC.js} +1 -1
  63. package/dist/safe-bash/chunks/{chunk-B7PIL77G.js → chunk-W2IYOVHK.js} +804 -1195
  64. package/dist/safe-bash/chunks/{chunk-3HQU4OJO.js → chunk-XNGVOSGI.js} +1 -1
  65. package/dist/safe-bash/chunks/{chunk-J42RIHHJ.js → chunk-XQWCQSRN.js} +1 -1
  66. package/dist/safe-bash/chunks/{chunk-A7XEHALN.js → chunk-Y7FW6GLT.js} +6 -6
  67. package/dist/safe-bash/chunks/{chunk-QGUV42T5.js → chunk-YL3GBUG4.js} +1 -1
  68. package/dist/safe-bash/chunks/chunk-YOXUCJER.js +389 -0
  69. package/dist/safe-bash/chunks/{chunk-HBCN24ZA.js → chunk-Z2AAYYJN.js} +2 -2
  70. package/dist/safe-bash/chunks/chunk-ZKYKJCZZ.js +30 -0
  71. package/dist/safe-bash/chunks/core-IE3AFIDX.js +85806 -0
  72. package/dist/safe-bash/chunks/{ffmpeg-WTC3TEFI.js → ffmpeg-YANDK6HU.js} +2 -2
  73. package/dist/safe-bash/chunks/{gh-6WU6PXL4.js → gh-4MBJ2S5V.js} +2 -2
  74. package/dist/safe-bash/chunks/{git-EFZIGJW4.js → git-2QONJNRQ.js} +2 -2
  75. package/dist/safe-bash/chunks/{imagemagick-EIEYGWPF.js → imagemagick-JLEHGYSN.js} +2 -2
  76. package/dist/safe-bash/chunks/{mmdc-ROQJT5HQ.js → mmdc-6LD7A6ND.js} +2 -2
  77. package/dist/safe-bash/chunks/{pdfimages-DW7LWXFI.js → pdfimages-RSHL7LOP.js} +2 -2
  78. package/dist/safe-bash/chunks/{pdfinfo-TIP6XLUQ.js → pdfinfo-L3SGWPNG.js} +2 -2
  79. package/dist/safe-bash/chunks/{pdftk-DMG22ITZ.js → pdftk-LFBJNU5A.js} +2 -2
  80. package/dist/safe-bash/chunks/{pdftoppm-WNDYR72T.js → pdftoppm-NXXFUIHG.js} +2 -2
  81. package/dist/safe-bash/chunks/{pdftotext-5IPZ4NI7.js → pdftotext-4IHNWT6F.js} +2 -2
  82. package/dist/safe-bash/chunks/{qpdf-TTX2DIUA.js → qpdf-ZEIREV63.js} +2 -2
  83. package/dist/safe-bash/chunks/read-builtin-A4QKAT45.js +9 -0
  84. package/dist/safe-bash/chunks/{sips-XYS46JPJ.js → sips-D5YBG2V3.js} +2 -2
  85. package/dist/safe-bash/chunks/{soffice-TU73E5KL.js → soffice-RAJU3JUT.js} +2 -2
  86. package/dist/safe-bash/chunks/source-files-3XWRRHFA.js +7 -0
  87. package/dist/safe-bash/chunks/{wkhtmltopdf-FSZ2CHGE.js → wkhtmltopdf-7UE4FORZ.js} +2 -2
  88. package/dist/safe-bash/command-chunks/{chunk-7KWZXKY6.js → chunk-26RTBV2I.js} +1 -0
  89. package/dist/safe-bash/command-chunks/{chunk-AQJ2ROJO.js → chunk-2WYNMZR2.js} +10 -8
  90. package/dist/safe-bash/command-chunks/{chunk-BDSMROQZ.js → chunk-36GFRF2N.js} +2 -1
  91. package/dist/safe-bash/command-chunks/{chunk-GC5TJZOF.js → chunk-3VIA2IA7.js} +114 -31
  92. package/dist/safe-bash/command-chunks/{chunk-NKFYQSES.js → chunk-4CTI3ZTX.js} +1 -0
  93. package/dist/safe-bash/command-chunks/{chunk-WH627NJL.js → chunk-4MYP2FX4.js} +2 -1
  94. package/dist/safe-bash/command-chunks/{chunk-ZDN7MJE6.js → chunk-4R5ADJM5.js} +11 -1
  95. package/dist/safe-bash/command-chunks/{chunk-P2N33UMN.js → chunk-5MIKM54M.js} +4 -4
  96. package/dist/safe-bash/command-chunks/{chunk-DB453IE6.js → chunk-6FZQUOSJ.js} +1 -1
  97. package/dist/safe-bash/command-chunks/{chunk-PICVQ6B5.js → chunk-6GKYHPJG.js} +1 -1
  98. package/dist/safe-bash/command-chunks/{chunk-7K6JYKPJ.js → chunk-6M2ELGEN.js} +17 -15
  99. package/dist/safe-bash/command-chunks/{chunk-PXEIT2O4.js → chunk-6UR7V3ET.js} +8 -1
  100. package/dist/safe-bash/command-chunks/{chunk-6KJ3LPI2.js → chunk-6XBS5B46.js} +26 -3
  101. package/dist/safe-bash/command-chunks/{chunk-5PWJG2UK.js → chunk-6YXLZX7L.js} +2 -2
  102. package/dist/safe-bash/command-chunks/{chunk-EK6YNAXT.js → chunk-753YOR54.js} +31 -5
  103. package/dist/safe-bash/command-chunks/{chunk-RMWQAAO5.js → chunk-7IR4NRNE.js} +2 -2
  104. package/dist/safe-bash/command-chunks/{chunk-FZTK4MFI.js → chunk-7NM73SVK.js} +8 -8
  105. package/dist/safe-bash/command-chunks/{chunk-NXEQ3ESQ.js → chunk-7QD5YY4F.js} +6 -11
  106. package/dist/safe-bash/command-chunks/{chunk-EMPU65ZK.js → chunk-A5LBSJGH.js} +1 -0
  107. package/dist/safe-bash/command-chunks/{chunk-4FEVBOL5.js → chunk-ARZMP2L2.js} +2 -2
  108. package/dist/safe-bash/command-chunks/{chunk-NKIELG7Y.js → chunk-BAKFZ477.js} +40 -19
  109. package/dist/safe-bash/command-chunks/{chunk-QRRYN2KO.js → chunk-BC7BK6R6.js} +0 -2424
  110. package/dist/safe-bash/command-chunks/{chunk-CQHP3I66.js → chunk-BOEOJS2Q.js} +1 -1
  111. package/dist/safe-bash/command-chunks/{chunk-XS72HTMA.js → chunk-BWGGLYEB.js} +5 -22
  112. package/dist/safe-bash/command-chunks/{chunk-PMBFZXTK.js → chunk-C5ZZKP7V.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-LHIOAFWW.js → chunk-C7SEB6WU.js} +1 -1
  114. package/dist/safe-bash/command-chunks/{chunk-XPT2UGBF.js → chunk-CHJKFRT7.js} +1 -1
  115. package/dist/safe-bash/command-chunks/{chunk-TIOCQVUQ.js → chunk-CON26Q2O.js} +1 -1
  116. package/dist/safe-bash/command-chunks/{chunk-E55UKBIE.js → chunk-DBAT3IK2.js} +1 -1
  117. package/dist/safe-bash/command-chunks/{chunk-Z45N42QC.js → chunk-DPAYAVMS.js} +15 -1
  118. package/dist/safe-bash/command-chunks/chunk-DS3NXVUM.js +368 -0
  119. package/dist/safe-bash/command-chunks/{chunk-5ZMZ573Q.js → chunk-DSJ3VRL3.js} +16 -4
  120. package/dist/safe-bash/command-chunks/{chunk-K2GDEMEU.js → chunk-EFRCFWVR.js} +4 -4
  121. package/dist/safe-bash/command-chunks/{chunk-DZCY63VJ.js → chunk-EV6HIJ5H.js} +6 -5
  122. package/dist/safe-bash/command-chunks/{chunk-JDYXY44P.js → chunk-FJURV46Y.js} +3 -3
  123. package/dist/safe-bash/command-chunks/{chunk-TZZ4WUKH.js → chunk-FZAWGKSE.js} +6 -4
  124. package/dist/safe-bash/command-chunks/{chunk-YHFXOX6U.js → chunk-GOCFQ6XV.js} +4 -4
  125. package/dist/safe-bash/command-chunks/{chunk-QVOS4YXL.js → chunk-HH5O7DJI.js} +1 -1
  126. package/dist/safe-bash/command-chunks/{chunk-3HHCU5YU.js → chunk-HK7F5SDC.js} +13 -0
  127. package/dist/safe-bash/command-chunks/{chunk-JNZ3CVAE.js → chunk-HQBXIZC7.js} +8 -3
  128. package/dist/safe-bash/command-chunks/{chunk-V4K2JDYU.js → chunk-I63DBZXZ.js} +2 -2
  129. package/dist/safe-bash/command-chunks/{chunk-WNE7FPVR.js → chunk-I64TLTIW.js} +24 -16
  130. package/dist/safe-bash/command-chunks/{chunk-GFC2NTDG.js → chunk-ICANWOXH.js} +5 -29
  131. package/dist/safe-bash/command-chunks/{chunk-SQRQW3CT.js → chunk-IJ6LGLXM.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-TGSNCQSR.js → chunk-JT4RYCA6.js} +1771 -1663
  133. package/dist/safe-bash/command-chunks/{chunk-II77KPZN.js → chunk-JWW6FYBN.js} +2 -2
  134. package/dist/safe-bash/command-chunks/{chunk-ZYXH3B66.js → chunk-LCJWKTCJ.js} +250 -203
  135. package/dist/safe-bash/command-chunks/chunk-LU4HBPP2.js +97 -0
  136. package/dist/safe-bash/command-chunks/{chunk-XJXU3VVH.js → chunk-LWOE65OE.js} +20 -5
  137. package/dist/safe-bash/command-chunks/{chunk-GMIHJYDG.js → chunk-M32HFSX7.js} +22 -6
  138. package/dist/safe-bash/command-chunks/{chunk-YG4EPFWC.js → chunk-M3NINRDU.js} +2880 -172
  139. package/dist/safe-bash/command-chunks/chunk-MQREDAL6.js +164 -0
  140. package/dist/safe-bash/command-chunks/{chunk-LWS62ISU.js → chunk-N6DIASO2.js} +1 -1
  141. package/dist/safe-bash/command-chunks/chunk-NGL7YK7O.js +188 -0
  142. package/dist/safe-bash/command-chunks/{chunk-EARHPPPJ.js → chunk-NJYHWKIL.js} +39 -9
  143. package/dist/safe-bash/command-chunks/{chunk-6JSIFWYT.js → chunk-OJQRSCBP.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-OQU6UT6X.js → chunk-OV3XREFN.js} +11 -0
  145. package/dist/safe-bash/command-chunks/{chunk-MIXBO6U7.js → chunk-PTZLF456.js} +2 -2
  146. package/dist/safe-bash/command-chunks/{chunk-ALDC4XP4.js → chunk-QILLRNES.js} +34 -10
  147. package/dist/safe-bash/command-chunks/{chunk-L22T3H7L.js → chunk-QR25JLKO.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-NASVPT6F.js → chunk-R7C4MGZ5.js} +17 -224
  149. package/dist/safe-bash/command-chunks/{chunk-LCF3OB7P.js → chunk-RBME3JEH.js} +1 -1
  150. package/dist/safe-bash/command-chunks/{chunk-2KG2QLJE.js → chunk-RFWGYT7G.js} +3 -0
  151. package/dist/safe-bash/command-chunks/{chunk-5TBUOBDE.js → chunk-RZMVRT26.js} +27 -13
  152. package/dist/safe-bash/command-chunks/chunk-TFR6B3WB.js +44 -0
  153. package/dist/safe-bash/command-chunks/chunk-TOH3OF3O.js +179 -0
  154. package/dist/safe-bash/command-chunks/chunk-TT4DAFBT.js +13621 -0
  155. package/dist/safe-bash/command-chunks/{chunk-LWSBAWLT.js → chunk-TXI64OAG.js} +1 -1
  156. package/dist/safe-bash/command-chunks/{chunk-GIRNFXP3.js → chunk-TZRI7BJZ.js} +45 -15
  157. package/dist/safe-bash/command-chunks/{chunk-QOKBZFFD.js → chunk-U3MMODA5.js} +2 -7
  158. package/dist/safe-bash/command-chunks/{chunk-ZYHTWNAE.js → chunk-UAW423ZL.js} +11 -11
  159. package/dist/safe-bash/command-chunks/{chunk-C5YYCQHW.js → chunk-UXEEUGOV.js} +222 -12
  160. package/dist/safe-bash/command-chunks/{chunk-GY3BWK7K.js → chunk-VOZPMJRX.js} +87 -80
  161. package/dist/safe-bash/command-chunks/{chunk-ILX2NOLF.js → chunk-WPANOB4A.js} +20 -20
  162. package/dist/safe-bash/command-chunks/{chunk-Y2WBSJG6.js → chunk-X4QZQI5Q.js} +65 -64
  163. package/dist/safe-bash/command-chunks/{chunk-HDCNKOIX.js → chunk-XGI57GCN.js} +1 -1
  164. package/dist/safe-bash/command-chunks/{chunk-5UBXNSFZ.js → chunk-XUCU7QQT.js} +1281 -1278
  165. package/dist/safe-bash/command-chunks/chunk-Y22VXJBD.js +296 -0
  166. package/dist/safe-bash/command-chunks/{chunk-WVHONVZ4.js → chunk-YMFUUPDX.js} +5 -3
  167. package/dist/safe-bash/command-chunks/{chunk-IR2BY7EL.js → chunk-YYGIBXFZ.js} +2 -2
  168. package/dist/safe-bash/command-chunks/{chunk-MSFXC3OC.js → chunk-Z4FO6OHE.js} +2 -2
  169. package/dist/safe-bash/command-chunks/{chunk-WWIBP2ET.js → chunk-Z5ZZVDUD.js} +143 -22
  170. package/dist/safe-bash/command-chunks/{chunk-LOICUCHG.js → chunk-ZHN3QDCI.js} +1 -1
  171. package/dist/safe-bash/commands/alias/index.d.ts +2 -0
  172. package/dist/safe-bash/commands/alias/index.js +2 -0
  173. package/dist/safe-bash/commands/apply-patch/index.browser.js +2 -3
  174. package/dist/safe-bash/commands/apply-patch/index.d.ts +0 -1
  175. package/dist/safe-bash/commands/apply-patch/index.js +0 -1
  176. package/dist/safe-bash/commands/archive/index.browser.js +2 -3
  177. package/dist/safe-bash/commands/archive/index.d.ts +0 -1
  178. package/dist/safe-bash/commands/archive/index.js +0 -1
  179. package/dist/safe-bash/commands/bytes/index.js +2 -1
  180. package/dist/safe-bash/commands/chmod/index.browser.js +1 -1
  181. package/dist/safe-bash/commands/column/index.browser.js +2 -3
  182. package/dist/safe-bash/commands/column/index.d.ts +0 -1
  183. package/dist/safe-bash/commands/column/index.js +0 -1
  184. package/dist/safe-bash/commands/copy-source.js +1 -0
  185. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  186. package/dist/safe-bash/commands/csvkit/index.browser.js +72 -0
  187. package/dist/safe-bash/commands/csvkit/index.d.ts +0 -5
  188. package/dist/safe-bash/commands/csvkit/index.js +0 -50
  189. package/dist/safe-bash/commands/docx/index.browser.js +5 -7
  190. package/dist/safe-bash/commands/du/index.browser.js +2 -3
  191. package/dist/safe-bash/commands/du/index.d.ts +0 -1
  192. package/dist/safe-bash/commands/du/index.js +0 -1
  193. package/dist/safe-bash/commands/expr/index.browser.js +2 -3
  194. package/dist/safe-bash/commands/expr/index.d.ts +0 -1
  195. package/dist/safe-bash/commands/expr/index.js +0 -1
  196. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  197. package/dist/safe-bash/commands/file/index.browser.js +2 -3
  198. package/dist/safe-bash/commands/file/index.d.ts +0 -1
  199. package/dist/safe-bash/commands/file/index.js +0 -1
  200. package/dist/safe-bash/commands/filesystem.js +1 -1
  201. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  202. package/dist/safe-bash/commands/grep-aliases/index.browser.js +3 -3
  203. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  204. package/dist/safe-bash/commands/html-to-markdown/index.browser.js +2 -3
  205. package/dist/safe-bash/commands/html-to-markdown/index.d.ts +0 -1
  206. package/dist/safe-bash/commands/html-to-markdown/index.js +0 -1
  207. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -5
  208. package/dist/safe-bash/commands/htmlq/index.js +1 -143
  209. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  210. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  211. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  212. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  213. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  214. package/dist/safe-bash/commands/media/index.browser.js +4 -16314
  215. package/dist/safe-bash/commands/media/index.d.ts +1 -5
  216. package/dist/safe-bash/commands/media/index.js +1 -3
  217. package/dist/safe-bash/commands/media/plugin.d.ts +1 -18
  218. package/dist/safe-bash/commands/media/plugin.js +1 -90
  219. package/dist/safe-bash/commands/media/remote.d.ts +1 -63
  220. package/dist/safe-bash/commands/media/remote.js +1 -405
  221. package/dist/safe-bash/commands/media/settings.d.ts +1 -4
  222. package/dist/safe-bash/commands/media/settings.js +1 -26
  223. package/dist/safe-bash/commands/metadata/index.browser.js +3 -4
  224. package/dist/safe-bash/commands/metadata/index.d.ts +0 -1
  225. package/dist/safe-bash/commands/metadata/index.js +2 -2
  226. package/dist/safe-bash/commands/mktemp/index.browser.js +1 -1
  227. package/dist/safe-bash/commands/network/curl.js +1 -3
  228. package/dist/safe-bash/commands/network/index.browser.js +3 -4
  229. package/dist/safe-bash/commands/network/public.d.ts +0 -1
  230. package/dist/safe-bash/commands/network/public.js +0 -1
  231. package/dist/safe-bash/commands/network/transport.js +2 -1
  232. package/dist/safe-bash/commands/network/wget.js +1 -3
  233. package/dist/safe-bash/commands/node/browser.d.ts +0 -1
  234. package/dist/safe-bash/commands/node/browser.js +0 -1
  235. package/dist/safe-bash/commands/node/default-runtime.d.ts +3 -0
  236. package/dist/safe-bash/commands/node/default-runtime.js +15 -0
  237. package/dist/safe-bash/commands/node/index.browser.js +7 -8
  238. package/dist/safe-bash/commands/node/index.js +3 -3
  239. package/dist/safe-bash/commands/node/path.js +1 -1
  240. package/dist/safe-bash/commands/node/preload.d.ts +1 -1
  241. package/dist/safe-bash/commands/node/preload.js +4 -1
  242. package/dist/safe-bash/commands/node/quickjs.d.ts +2 -0
  243. package/dist/safe-bash/commands/node/quickjs.js +2 -0
  244. package/dist/safe-bash/commands/node/safejs.js +26 -12
  245. package/dist/safe-bash/commands/op/index.browser.js +2 -3
  246. package/dist/safe-bash/commands/op/index.d.ts +0 -11
  247. package/dist/safe-bash/commands/op/index.js +0 -84
  248. package/dist/safe-bash/commands/pandoc/index.browser.js +44 -0
  249. package/dist/safe-bash/commands/pandoc/index.d.ts +0 -1
  250. package/dist/safe-bash/commands/pandoc/index.js +0 -1
  251. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  252. package/dist/safe-bash/commands/python/docker-runner.js +4 -3
  253. package/dist/safe-bash/commands/python/docker.d.ts +1 -0
  254. package/dist/safe-bash/commands/python/docker.js +5 -2
  255. package/dist/safe-bash/commands/python/index.browser.js +17 -13
  256. package/dist/safe-bash/commands/python/index.d.ts +2 -1
  257. package/dist/safe-bash/commands/python/index.js +10 -8
  258. package/dist/safe-bash/commands/python/llm-capability.js +65 -2
  259. package/dist/safe-bash/commands/python/llm-dependencies.d.ts +27 -0
  260. package/dist/safe-bash/commands/python/llm-dependencies.js +66 -0
  261. package/dist/safe-bash/commands/python/llm-module.js +6 -4
  262. package/dist/safe-bash/commands/python/llm-reference-module.d.ts +3 -0
  263. package/dist/safe-bash/commands/python/llm-reference-module.js +690 -0
  264. package/dist/safe-bash/commands/python/worker.browser.js +2 -3
  265. package/dist/safe-bash/commands/python/worker.d.ts +0 -1
  266. package/dist/safe-bash/commands/python/worker.js +0 -1
  267. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts +1 -1
  268. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js +3 -3
  269. package/dist/safe-bash/commands/regex-execution/public.browser.js +7 -7
  270. package/dist/safe-bash/commands/safejs/options.js +5 -1
  271. package/dist/safe-bash/commands/safejs/runtime.d.ts +1 -0
  272. package/dist/safe-bash/commands/safejs/runtime.js +1 -1
  273. package/dist/safe-bash/commands/split/index.browser.js +2 -3
  274. package/dist/safe-bash/commands/split/index.d.ts +0 -1
  275. package/dist/safe-bash/commands/split/index.js +0 -1
  276. package/dist/safe-bash/commands/ssconvert/index.browser.js +98 -0
  277. package/dist/safe-bash/commands/stat/index.browser.js +1 -1
  278. package/dist/safe-bash/commands/stream-format/index.browser.js +3 -4
  279. package/dist/safe-bash/commands/stream-format/index.d.ts +0 -1
  280. package/dist/safe-bash/commands/stream-format/index.js +0 -1
  281. package/dist/safe-bash/commands/stream-inspection/index.browser.js +3 -4
  282. package/dist/safe-bash/commands/stream-inspection/index.d.ts +0 -1
  283. package/dist/safe-bash/commands/stream-inspection/index.js +0 -1
  284. package/dist/safe-bash/commands/streams.js +2 -1
  285. package/dist/safe-bash/commands/table-text/index.browser.js +3 -4
  286. package/dist/safe-bash/commands/table-text/index.d.ts +0 -1
  287. package/dist/safe-bash/commands/table-text/index.js +0 -1
  288. package/dist/safe-bash/commands/text.js +28 -24
  289. package/dist/safe-bash/commands/time-env/index.browser.js +3 -4
  290. package/dist/safe-bash/commands/time-env/index.d.ts +0 -1
  291. package/dist/safe-bash/commands/time-env/index.js +0 -1
  292. package/dist/safe-bash/commands/tree/index.browser.js +2 -3
  293. package/dist/safe-bash/commands/tree/index.d.ts +0 -1
  294. package/dist/safe-bash/commands/tree/index.js +0 -1
  295. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  296. package/dist/safe-bash/commands/unalias/index.d.ts +2 -0
  297. package/dist/safe-bash/commands/unalias/index.js +2 -0
  298. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  299. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  300. package/dist/safe-bash/core.browser.js +2 -2
  301. package/dist/safe-bash/core.d.ts +7 -1
  302. package/dist/safe-bash/core.js +7 -1
  303. package/dist/safe-bash/execution-runtime.js +2 -1
  304. package/dist/safe-bash/fs/s3/http/index.d.ts +2 -2
  305. package/dist/safe-bash/fs/s3/http/index.js +1 -1
  306. package/dist/safe-bash/full-core.browser.js +283 -945
  307. package/dist/safe-bash/internal/op/types.d.ts +1 -0
  308. package/dist/safe-bash/jobs.browser.js +5 -5
  309. package/dist/safe-bash/lazy-optional.d.ts +3 -3
  310. package/dist/safe-bash/lazy-optional.js +1 -1
  311. package/dist/safe-bash/opt-in/commands/cmp/index.js +7 -6
  312. package/dist/safe-bash/opt-in/commands/dd/index.js +1 -1
  313. package/dist/safe-bash/opt-in/commands/dd/io.js +51 -5
  314. package/dist/safe-bash/opt-in/commands/truncate/index.js +2 -2
  315. package/dist/safe-bash/opt-in/commands/yq/native-work.js +2 -0
  316. package/dist/safe-bash/opt-in/optional/commands/shuf/input.js +2 -1
  317. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +4 -2
  318. package/dist/safe-bash/opt-in/optional.d.ts +1 -1
  319. package/dist/safe-bash/opt-in/optional.js +1 -1
  320. package/dist/safe-bash/opt-in/shell/extensions/read/index.js +2 -344
  321. package/dist/safe-bash/optional-host.browser.js +23 -18
  322. package/dist/safe-bash/optional-host.d.ts +1 -0
  323. package/dist/safe-bash/optional-host.js +1 -0
  324. package/dist/safe-bash/playwright/controller.js +41 -3
  325. package/dist/safe-bash/playwright/native-storage-targets.js +4 -2
  326. package/dist/safe-bash/plugins/base.d.ts +1 -1
  327. package/dist/safe-bash/plugins/base.js +3 -3
  328. package/dist/safe-bash/plugins/composition.d.ts +5 -2
  329. package/dist/safe-bash/plugins/composition.js +10 -7
  330. package/dist/safe-bash/plugins/index.browser.js +44 -41
  331. package/dist/safe-bash/plugins/index.js +3 -2
  332. package/dist/safe-bash/plugins/portable-commands.d.ts +3 -0
  333. package/dist/safe-bash/plugins/portable-commands.js +31 -0
  334. package/dist/safe-bash/registry-entry.browser.js +41 -42
  335. package/dist/safe-bash/search.browser.js +32 -33
  336. package/dist/safe-bash/shell/arithmetic.js +19 -6
  337. package/dist/safe-bash/shell/arrays/state.js +1 -1
  338. package/dist/safe-bash/shell/arrays/syntax.js +4 -3
  339. package/dist/safe-bash/shell/index.d.ts +0 -1
  340. package/dist/safe-bash/shell/index.js +0 -1
  341. package/dist/safe-bash/shell/parser.d.ts +2 -2
  342. package/dist/safe-bash/shell/parser.js +268 -64
  343. package/dist/safe-bash/shell/read-builtin.d.ts +3 -0
  344. package/dist/safe-bash/shell/read-builtin.js +344 -0
  345. package/dist/safe-bash/shell/runtime.d.ts +21 -4
  346. package/dist/safe-bash/shell/runtime.js +373 -412
  347. package/dist/safe-bash/shell/session-state.js +25 -0
  348. package/dist/safe-bash/shell/shell.js +76 -154
  349. package/dist/safe-bash/shell/tilde-expansion.d.ts +1 -1
  350. package/dist/safe-bash/shell/tilde-expansion.js +2 -2
  351. package/dist/safe-bash/shell/types.d.ts +5 -0
  352. package/dist/safe-bash/shell/value-state.js +1 -1
  353. package/dist/safe-bash/shell-entry.browser.js +32 -33
  354. package/dist/safe-bash/trap.browser.js +4 -4
  355. package/dist/safe-bash/yq-browser/index.js +1 -1
  356. package/dist/safe-bash-calendar-engine/time-env/calendar.d.ts +1 -1
  357. package/dist/safe-bash-calendar-engine/time-env/calendar.js +1 -1
  358. package/dist/safe-bash-calendar-engine/time-env/format.js +1 -1
  359. package/dist/safe-bash-command-alias/index.d.ts +13 -0
  360. package/dist/safe-bash-command-alias/index.js +88 -0
  361. package/dist/safe-bash-command-apply-patch/apply.js +3 -3
  362. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  363. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  364. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  365. package/dist/safe-bash-command-awk/awk-pipes.js +2 -2
  366. package/dist/safe-bash-command-awk/awk-reader.js +1 -1
  367. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  368. package/dist/safe-bash-command-awk/awk.js +5 -5
  369. package/dist/safe-bash-command-awk/index.js +5 -5
  370. package/dist/safe-bash-command-bc/index.js +206 -60
  371. package/dist/safe-bash-command-cmp/index.js +7 -6
  372. package/dist/safe-bash-command-column/column.js +3 -3
  373. package/dist/safe-bash-command-column/index.js +3 -3
  374. package/dist/safe-bash-command-column/layout.js +2 -2
  375. package/dist/safe-bash-command-csvkit/index.d.ts +1 -0
  376. package/dist/safe-bash-command-csvkit/index.js +1505 -7
  377. package/dist/safe-bash-command-csvkit/sync-support.js +2 -7
  378. package/dist/safe-bash-command-curl/curl.js +1 -1
  379. package/dist/safe-bash-command-curl/index.js +1 -1
  380. package/dist/safe-bash-command-date/date.js +1 -1
  381. package/dist/safe-bash-command-date/index.js +1 -1
  382. package/dist/safe-bash-command-dd/index.js +1 -1
  383. package/dist/safe-bash-command-dd/io.js +51 -5
  384. package/dist/safe-bash-command-diff/diff.js +1 -1
  385. package/dist/safe-bash-command-diff/index.js +1 -1
  386. package/dist/safe-bash-command-diff3/index.js +10 -13
  387. package/dist/safe-bash-command-exiftool/index.js +278 -50
  388. package/dist/safe-bash-command-exiftool/registry.d.ts +4 -2
  389. package/dist/safe-bash-command-factor/command.js +2 -2
  390. package/dist/safe-bash-command-factor/index.js +2 -2
  391. package/dist/safe-bash-command-fd/arguments.d.ts +2 -0
  392. package/dist/safe-bash-command-fd/index.js +42 -12
  393. package/dist/safe-bash-command-ffmpeg/index.js +356 -66
  394. package/dist/safe-bash-command-find/find-format.d.ts +3 -0
  395. package/dist/safe-bash-command-find/find-format.js +1 -1
  396. package/dist/safe-bash-command-find/find.js +2 -2
  397. package/dist/safe-bash-command-find/index.js +2 -2
  398. package/dist/safe-bash-command-fmt/index.js +1 -4
  399. package/dist/safe-bash-command-fold/engine.d.ts +1 -1
  400. package/dist/safe-bash-command-fold/family.js +2 -2
  401. package/dist/safe-bash-command-fold/index.js +1 -1
  402. package/dist/safe-bash-command-hexdump/command.js +2 -2
  403. package/dist/safe-bash-command-hexdump/index.js +2 -2
  404. package/dist/safe-bash-command-html-to-markdown/entities.js +1 -1
  405. package/dist/safe-bash-command-html-to-markdown/index.js +4 -4
  406. package/dist/safe-bash-command-html-to-markdown/input.js +3 -3
  407. package/dist/safe-bash-command-html-to-markdown/parser.js +2 -2
  408. package/dist/safe-bash-command-html-to-markdown/render.js +3 -3
  409. package/dist/safe-bash-command-htmlq/contracts.d.ts +5 -2
  410. package/dist/safe-bash-command-htmlq/index.d.ts +2 -1
  411. package/dist/safe-bash-command-htmlq/index.js +175 -49
  412. package/dist/safe-bash-command-htmlq/sync.d.ts +1 -0
  413. package/dist/safe-bash-command-imagemagick/index.js +56 -6
  414. package/dist/safe-bash-command-install/arguments.d.ts +27 -0
  415. package/dist/safe-bash-command-install/arguments.js +224 -0
  416. package/dist/safe-bash-command-install/index.d.ts +7 -0
  417. package/dist/safe-bash-command-install/index.js +942 -0
  418. package/dist/safe-bash-command-install/mode.d.ts +6 -0
  419. package/dist/safe-bash-command-install/mode.js +71 -0
  420. package/dist/safe-bash-command-install/options.d.ts +40 -0
  421. package/dist/safe-bash-command-install/options.js +27 -0
  422. package/dist/safe-bash-command-jq/index.js +1 -1
  423. package/dist/safe-bash-command-jq/jq.js +1 -1
  424. package/dist/safe-bash-command-less/index.js +37 -61
  425. package/dist/safe-bash-command-llm/command.js +1 -1
  426. package/dist/safe-bash-command-llm/elevenlabs.js +2 -2
  427. package/dist/safe-bash-command-llm/index.js +4 -4
  428. package/dist/safe-bash-command-llm/openai.js +2 -2
  429. package/dist/safe-bash-command-llm/providers/elevenlabs.js +2 -2
  430. package/dist/safe-bash-command-llm/providers/index.js +3 -3
  431. package/dist/safe-bash-command-llm/providers/openai.js +2 -2
  432. package/dist/safe-bash-command-llm/providers/shared.js +1 -1
  433. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.browser.d.ts +463 -46
  434. package/dist/safe-bash-command-mcp/index.browser.js +19308 -0
  435. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.d.ts +15 -6
  436. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.js +2804 -2771
  437. package/dist/safe-bash-command-media/LICENSE +21 -0
  438. package/dist/safe-bash-command-media/index.d.ts +6 -0
  439. package/dist/safe-bash-command-media/index.js +30 -0
  440. package/dist/safe-bash-command-media/plugin.d.ts +18 -0
  441. package/dist/safe-bash-command-media/plugin.js +11 -0
  442. package/dist/safe-bash-command-media/remote.d.ts +63 -0
  443. package/dist/safe-bash-command-media/remote.js +11 -0
  444. package/dist/safe-bash-command-media/settings.d.ts +4 -0
  445. package/dist/safe-bash-command-media/settings.js +41 -0
  446. package/dist/safe-bash-command-mktemp/command.js +1 -1
  447. package/dist/safe-bash-command-mktemp/index.js +1 -1
  448. package/dist/safe-bash-command-mmdc/arguments.d.ts +1 -0
  449. package/dist/safe-bash-command-mmdc/command.d.ts +2 -0
  450. package/dist/safe-bash-command-mmdc/contracts.d.ts +8 -1
  451. package/dist/safe-bash-command-mmdc/index.js +359 -7
  452. package/dist/safe-bash-command-nl/index.js +1 -1
  453. package/dist/safe-bash-command-nl/nl.js +1 -1
  454. package/dist/safe-bash-command-node/LICENSE +21 -0
  455. package/dist/safe-bash-command-node/index.d.ts +17 -0
  456. package/dist/safe-bash-command-node/index.js +328 -0
  457. package/dist/safe-bash-command-numfmt/index.js +1 -0
  458. package/dist/safe-bash-command-od/index.js +10 -6
  459. package/dist/safe-bash-command-op/index.js +39 -32
  460. package/dist/safe-bash-command-op/types.d.ts +1 -0
  461. package/dist/safe-bash-command-pandoc/command.js +3 -3
  462. package/dist/safe-bash-command-pandoc/index.d.ts +1 -0
  463. package/dist/safe-bash-command-pandoc/index.js +5 -3
  464. package/dist/safe-bash-command-pandoc/sync.d.ts +1 -0
  465. package/dist/safe-bash-command-patch/index.js +4 -4
  466. package/dist/safe-bash-command-patch/patch.js +4 -4
  467. package/dist/safe-bash-command-pdfimages/index.js +1 -1
  468. package/dist/safe-bash-command-pdfinfo/index.js +30 -5
  469. package/dist/safe-bash-command-pdftk/index.js +21 -23
  470. package/dist/safe-bash-command-pdftoppm/index.js +17 -4
  471. package/dist/safe-bash-command-pdftotext/index.js +11 -14
  472. package/dist/safe-bash-command-qpdf/index.d.ts +1 -0
  473. package/dist/safe-bash-command-qpdf/index.js +9 -6
  474. package/dist/safe-bash-command-rg/index.js +1 -1
  475. package/dist/safe-bash-command-rg/rg-command.js +1 -1
  476. package/dist/safe-bash-command-sed/index.js +1 -1
  477. package/dist/safe-bash-command-sed/sed.js +1 -1
  478. package/dist/safe-bash-command-shuf/input.d.ts +2 -2
  479. package/dist/safe-bash-command-shuf/input.js +2 -1
  480. package/dist/safe-bash-command-shuf/shuf.js +4 -2
  481. package/dist/safe-bash-command-sips/index.js +2 -2
  482. package/dist/safe-bash-command-soffice/index.js +97 -12
  483. package/dist/safe-bash-command-sponge/index.js +4 -1
  484. package/dist/safe-bash-command-sqlite3/engine.d.ts +1 -0
  485. package/dist/safe-bash-command-sqlite3/index.js +510 -70
  486. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +2 -2
  487. package/dist/safe-bash-command-ssconvert/index.js +44 -22
  488. package/dist/safe-bash-command-stat/command.js +1 -1
  489. package/dist/safe-bash-command-stat/index.js +1 -1
  490. package/dist/safe-bash-command-tar/create.d.ts +1 -0
  491. package/dist/safe-bash-command-tar/create.js +2 -2
  492. package/dist/safe-bash-command-tar/extract.js +2 -2
  493. package/dist/safe-bash-command-tar/index.js +4 -4
  494. package/dist/safe-bash-command-tar/modes.js +4 -4
  495. package/dist/safe-bash-command-tar/options.js +1 -1
  496. package/dist/safe-bash-command-truncate/index.js +2 -2
  497. package/dist/safe-bash-command-tsort/command.js +2 -2
  498. package/dist/safe-bash-command-tsort/index.js +2 -2
  499. package/dist/safe-bash-command-unalias/index.d.ts +12 -0
  500. package/dist/safe-bash-command-unalias/index.js +67 -0
  501. package/dist/safe-bash-command-unrtf/index.js +26 -4
  502. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  503. package/dist/safe-bash-command-xan/argv.js +2 -2
  504. package/dist/safe-bash-command-xan/budget.d.ts +0 -1
  505. package/dist/safe-bash-command-xan/budget.js +1 -1
  506. package/dist/safe-bash-command-xan/commands.js +6 -6
  507. package/dist/safe-bash-command-xan/csv.js +2 -2
  508. package/dist/safe-bash-command-xan/index.js +8 -9
  509. package/dist/safe-bash-command-xan/io.js +4 -4
  510. package/dist/safe-bash-command-xan/options.js +1 -1
  511. package/dist/safe-bash-command-xan/selector.js +2 -2
  512. package/dist/safe-bash-command-xmllint/index.js +45 -23
  513. package/dist/safe-bash-command-xxd/index.js +41 -10
  514. package/dist/safe-bash-command-yq/accounting.js +1 -1
  515. package/dist/safe-bash-command-yq/index.js +3 -2
  516. package/dist/safe-bash-command-yq/native-work.js +2 -0
  517. package/dist/safe-bash-command-yq/parser.js +2 -2
  518. package/dist/safe-bash-command-yq/query.js +5 -5
  519. package/dist/safe-bash-command-yq/toml.js +2 -2
  520. package/dist/safe-bash-command-zip/index.js +3 -3
  521. package/dist/safe-bash-compression-engine/bounded-codec.js +2 -2
  522. package/dist/safe-bash-compression-engine/codec-loader.js +1 -1
  523. package/dist/safe-bash-compression-engine/files.js +5 -5
  524. package/dist/safe-bash-compression-engine/index.js +4 -4
  525. package/dist/safe-bash-compression-engine/operand.js +5 -5
  526. package/dist/safe-bash-compression-engine/stream.js +4 -4
  527. package/dist/safe-bash-compression-engine/zstd-decode.js +3 -3
  528. package/dist/safe-bash-contracts/command.js +3 -3
  529. package/dist/safe-bash-contracts/default-executor.js +2 -2
  530. package/dist/safe-bash-contracts/diagnostics.js +3 -3
  531. package/dist/safe-bash-contracts/escaping.js +6 -6
  532. package/dist/safe-bash-contracts/filesystem-descriptor.js +3 -3
  533. package/dist/safe-bash-contracts/filesystem-output.js +5 -5
  534. package/dist/safe-bash-contracts/http.d.ts +7 -0
  535. package/dist/safe-bash-contracts/index.js +8 -8
  536. package/dist/safe-bash-contracts/io.js +2 -2
  537. package/dist/safe-bash-contracts/output.js +3 -3
  538. package/dist/safe-bash-contracts/runtime-control.d.ts +2 -2
  539. package/dist/safe-bash-contracts/runtime-control.js +4 -2
  540. package/dist/safe-bash-contracts/signals.d.ts +2 -0
  541. package/dist/safe-bash-contracts/signals.js +3 -1
  542. package/dist/safe-bash-contracts/yield.js +1 -1
  543. package/dist/safe-bash-csv-engine/index.d.ts +2 -1
  544. package/dist/safe-bash-csv-engine/index.js +21 -15
  545. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  546. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +6 -6
  547. package/dist/safe-bash-io-engine/internal.js +1 -1
  548. package/dist/safe-bash-io-engine/shell/pattern.js +38 -18
  549. package/dist/safe-bash-line-ending-engine/convert.js +9 -204
  550. package/dist/safe-bash-line-ending-engine/encoding.js +9 -42
  551. package/dist/safe-bash-line-ending-engine/index.js +48 -0
  552. package/dist/safe-bash-line-ending-engine/info.js +9 -90
  553. package/dist/safe-bash-line-ending-engine/internal.js +15 -160
  554. package/dist/safe-bash-line-ending-engine/io.js +12 -289
  555. package/dist/safe-bash-line-ending-engine/stage.js +10 -160
  556. package/dist/safe-bash-markdown-engine/index.js +3 -3
  557. package/dist/safe-bash-network-engine/args.d.ts +6 -0
  558. package/dist/safe-bash-network-engine/args.js +4 -2
  559. package/dist/safe-bash-network-engine/body.js +1 -1
  560. package/dist/safe-bash-network-engine/fetch-transport.js +3 -1
  561. package/dist/safe-bash-network-engine/index.js +3 -1
  562. package/dist/safe-bash-network-engine/input.js +2 -2
  563. package/dist/safe-bash-network-engine/platform-portable.js +3 -1
  564. package/dist/safe-bash-query-engine/dates.d.ts +1 -1
  565. package/dist/safe-bash-query-engine/dates.js +1 -1
  566. package/dist/safe-bash-query-engine/index.js +6 -6
  567. package/dist/safe-bash-query-engine/interpreter.js +4 -4
  568. package/dist/safe-bash-query-engine/parser.js +1 -1
  569. package/dist/safe-bash-query-engine/query-core.js +6 -6
  570. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +10 -0
  571. package/dist/safe-bash-regex-engine/index.js +1 -1
  572. package/dist/safe-bash-regex-engine/text/regex.d.ts +1 -1
  573. package/dist/safe-bash-regex-engine/text/regex.js +1 -1
  574. package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +1 -0
  575. package/dist/safe-bash-search-engine/ergonomic-regex.js +1 -1
  576. package/dist/safe-bash-search-engine/grep.js +16 -9
  577. package/dist/safe-bash-search-engine/matcher.d.ts +2 -2
  578. package/dist/safe-bash-search-engine/matcher.js +12 -8
  579. package/dist/safe-bash-search-engine/shared.js +1 -1
  580. package/dist/safe-bash-search-engine/walk.js +13 -1
  581. package/dist/safe-bash-text-stream-engine/stream-format/shared.d.ts +1 -1
  582. package/dist/safe-bash-text-stream-engine/stream-format/shared.js +2 -1
  583. package/dist/safe-bash-xml-engine/document.js +3 -3
  584. package/dist/safe-bash-xml-engine/evaluate.js +2 -2
  585. package/dist/safe-bash-xml-engine/index.js +4 -4
  586. package/dist/safe-bash-xml-engine/io.js +7 -2
  587. package/dist/safe-bash-xml-engine/limits.d.ts +0 -2
  588. package/dist/safe-bash-xml-engine/limits.js +1 -1
  589. package/dist/safe-bash-xml-engine/query.js +3 -3
  590. package/dist/safe-bash-zip-engine/index.js +3 -3
  591. package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
  592. package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
  593. package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
  594. package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
  595. package/dist/safe-bash-zip-engine/zip-format.js +3 -3
  596. package/dist/safe-playwright-cloudflare/browser-socket-closure.js +18 -3
  597. package/dist/safe-playwright-cloudflare/shell-browser-resource.js +1 -1
  598. package/dist/xlsx-ast/xlsx.js +6 -5
  599. package/package.json +86 -98
  600. package/dist/media-cli/bytes.d.ts +0 -8
  601. package/dist/media-cli/bytes.js +0 -40
  602. package/dist/media-cli/concat.d.ts +0 -30
  603. package/dist/media-cli/concat.js +0 -197
  604. package/dist/media-cli/content.js +0 -66
  605. package/dist/media-cli/dependency-grammars.d.ts +0 -12
  606. package/dist/media-cli/dependency-grammars.js +0 -557
  607. package/dist/media-cli/discover.js +0 -286
  608. package/dist/media-cli/engine.js +0 -190
  609. package/dist/media-cli/filename-expression.js +0 -147
  610. package/dist/media-cli/filesystem.js +0 -35
  611. package/dist/media-cli/frontend-contract.js +0 -8
  612. package/dist/media-cli/frontend-issues.d.ts +0 -6
  613. package/dist/media-cli/frontend-issues.js +0 -9
  614. package/dist/media-cli/imagemagick-operand.d.ts +0 -42
  615. package/dist/media-cli/imagemagick-operand.js +0 -229
  616. package/dist/media-cli/imagemagick-references.d.ts +0 -7
  617. package/dist/media-cli/imagemagick-references.js +0 -42
  618. package/dist/media-cli/imagemagick.generated.js +0 -3254
  619. package/dist/media-cli/imagemagick.js +0 -615
  620. package/dist/media-cli/index.js +0 -12
  621. package/dist/media-cli/mvg.d.ts +0 -10
  622. package/dist/media-cli/mvg.js +0 -102
  623. package/dist/media-cli/network.js +0 -78
  624. package/dist/media-cli/options.generated.js +0 -3312
  625. package/dist/media-cli/preset.d.ts +0 -11
  626. package/dist/media-cli/preset.js +0 -57
  627. package/dist/media-cli/resolution-path.d.ts +0 -23
  628. package/dist/media-cli/resolution-path.js +0 -217
  629. package/dist/media-cli/resolver.js +0 -494
  630. package/dist/media-cli/resources.d.ts +0 -16
  631. package/dist/media-cli/resources.js +0 -187
  632. package/dist/media-cli/shim.js +0 -52
  633. package/dist/media-cli/tee.d.ts +0 -6
  634. package/dist/media-cli/tee.js +0 -38
  635. package/dist/office-package/zip-sync.js +0 -111
  636. package/dist/remote-execution/binary.js +0 -178
  637. package/dist/remote-execution/callback-result.js +0 -26
  638. package/dist/remote-execution/canonical-capabilities.d.ts +0 -5
  639. package/dist/remote-execution/canonical-capabilities.js +0 -45
  640. package/dist/remote-execution/canonical-metadata.d.ts +0 -4
  641. package/dist/remote-execution/canonical-metadata.js +0 -32
  642. package/dist/remote-execution/client.js +0 -824
  643. package/dist/remote-execution/deployment.js +0 -131
  644. package/dist/remote-execution/descriptors.js +0 -267
  645. package/dist/remote-execution/effects.js +0 -357
  646. package/dist/remote-execution/endpoint.js +0 -224
  647. package/dist/remote-execution/files.js +0 -291
  648. package/dist/remote-execution/hosting-operation.js +0 -26
  649. package/dist/remote-execution/hosting-request.d.ts +0 -4
  650. package/dist/remote-execution/hosting-request.js +0 -12
  651. package/dist/remote-execution/hosting-stream.d.ts +0 -8
  652. package/dist/remote-execution/hosting-stream.js +0 -64
  653. package/dist/remote-execution/index.js +0 -18
  654. package/dist/remote-execution/invocation-admission.d.ts +0 -3
  655. package/dist/remote-execution/invocation-admission.js +0 -17
  656. package/dist/remote-execution/job-binding.js +0 -1269
  657. package/dist/remote-execution/materializations.js +0 -284
  658. package/dist/remote-execution/modal-driver.js +0 -90
  659. package/dist/remote-execution/native-result.d.ts +0 -3
  660. package/dist/remote-execution/native-result.js +0 -16
  661. package/dist/remote-execution/output-freshness.d.ts +0 -4
  662. package/dist/remote-execution/output-freshness.js +0 -19
  663. package/dist/remote-execution/output-retrieval.js +0 -474
  664. package/dist/remote-execution/process-http.js +0 -607
  665. package/dist/remote-execution/process.js +0 -577
  666. package/dist/remote-execution/protocol.js +0 -208
  667. package/dist/remote-execution/relay.js +0 -91
  668. package/dist/remote-execution/rest-driver.js +0 -93
  669. package/dist/remote-execution/upload-descriptor.js +0 -201
  670. package/dist/remote-execution/upload-protocol.js +0 -62
  671. package/dist/remote-execution/uploads.js +0 -324
  672. package/dist/remote-execution/wire-json.d.ts +0 -4
  673. package/dist/remote-execution/wire-json.js +0 -44
  674. package/dist/remote-execution/wire-validation.js +0 -131
  675. package/dist/remote-execution/wire.generated.js +0 -4224
  676. package/dist/safe-bash/chunks/chunk-GDYNCWRV.js +0 -161
  677. package/dist/safe-bash/chunks/chunk-IWDICZVK.js +0 -20
  678. package/dist/safe-bash/chunks/chunk-MHMMRCYC.js +0 -3464
  679. package/dist/safe-bash/chunks/chunk-UE5KZDEK.js +0 -77
  680. package/dist/safe-bash/chunks/csvkit-TACDU7FC.js +0 -1618
  681. package/dist/safe-bash/chunks/implementation-MLFHUQ5M.js +0 -133
  682. package/dist/safe-bash/commands/csvkit/sync.js +0 -1639
  683. package/dist/safe-bash/commands/node/unconfigured.d.ts +0 -3
  684. package/dist/safe-bash/commands/node/unconfigured.js +0 -10
  685. package/dist/safe-bash/commands/pandoc/implementation.d.ts +0 -8
  686. package/dist/safe-bash/commands/pandoc/implementation.js +0 -94
  687. package/dist/safe-bash-mcp/index.browser.js +0 -9167
  688. package/dist/safe-bash/command-chunks/{chunk-ZRRBXU3M.js → chunk-GIN5GUDP.js} +4 -4
  689. package/dist/safe-bash/command-chunks/{chunk-LAOM65EE.js → chunk-IEO4XVN6.js} +3 -3
  690. package/dist/safe-bash/command-chunks/{chunk-BXCXRYVU.js → chunk-JNANXVJV.js} +0 -0
  691. package/dist/safe-bash/command-chunks/{chunk-364TMWBT.js → chunk-MWREVL44.js} +6 -6
  692. package/dist/safe-bash/command-chunks/{chunk-464RVBGB.js → chunk-Q5TDKFHK.js} +3 -3
  693. package/dist/safe-bash/command-chunks/{chunk-AJR3AQYA.js → chunk-UKX3LZHR.js} +0 -0
  694. package/dist/safe-bash/command-chunks/{chunk-XIIBTGC5.js → chunk-XPXEQKRW.js} +9 -9
  695. package/dist/safe-bash/command-chunks/{chunk-FDBUV4HJ.js → chunk-Y4HGTG3E.js} +3 -3
  696. /package/dist/{safe-bash/commands/csvkit → safe-bash-command-csvkit}/sync.d.ts +0 -0
@@ -1,607 +0,0 @@
1
- import { parseWireJson } from './wire-json.js';
2
- import { binaryContentType, decodeFrames } from './binary.js';
3
- import { RemoteExecutionError, UnrecoverableTransportError } from './client.js';
4
- import { validateWire } from './wire-validation.js';
5
- function path(identity) { return `/v1/sessions/${encodeURIComponent(identity.sessionId)}/jobs/${encodeURIComponent(identity.jobId)}/process`; }
6
- async function bytes(body, max, signal) {
7
- if (!body)
8
- throw new TypeError('Missing process document');
9
- const reader = body.getReader();
10
- const chunks = [];
11
- let size = 0;
12
- const abort = () => { void reader.cancel(signal.reason).catch(() => { }); };
13
- signal.addEventListener('abort', abort, { once: true });
14
- try {
15
- signal.throwIfAborted();
16
- for (;;) {
17
- const result = await reader.read();
18
- signal.throwIfAborted();
19
- if (result.done)
20
- break;
21
- if (!(result.value instanceof Uint8Array))
22
- throw new TypeError('Process document bytes required');
23
- const length = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(result.value);
24
- if (length > max - size)
25
- throw new TypeError('Process document exceeds admission');
26
- const owned = new Uint8Array(length);
27
- Uint8Array.prototype.set.call(owned, result.value);
28
- chunks.push(owned);
29
- size += length;
30
- }
31
- const value = new Uint8Array(size);
32
- let offset = 0;
33
- for (const chunk of chunks) {
34
- value.set(chunk, offset);
35
- offset += chunk.length;
36
- }
37
- return value;
38
- }
39
- finally {
40
- signal.removeEventListener('abort', abort);
41
- await reader.cancel().catch(() => { });
42
- reader.releaseLock();
43
- }
44
- }
45
- async function document(body, signal) { return parseWireJson(new TextDecoder('utf-8', { fatal: true }).decode(await bytes(body, 4096, signal))); }
46
- function record(value, keys) {
47
- if (!value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).length !== keys.length || keys.some(key => !Object.hasOwn(value, key)))
48
- throw new TypeError('Invalid process control');
49
- }
50
- function integer(value) { if (!Number.isSafeInteger(value) || Number(value) < 1 || Number(value) > 1024)
51
- throw new TypeError('Invalid process stream'); return value; }
52
- function offset(value) { validateWire('Uint64', value); return BigInt(value); }
53
- /** Mount only for a job admitted by the authenticated isolation/session owner.
54
- * There is no executable, argv, descriptor acquisition or launch endpoint.
55
- * authorize must validate current principal/session/job authority on every call.
56
- * The owning job retains lease expiry, disposal and delegate reaping authority. */
57
- export function createProcessHttpHandler(options) {
58
- options = { ...options };
59
- if (!Number.isSafeInteger(options.maxRequests) || options.maxRequests < 1)
60
- throw new TypeError('Invalid process request bound');
61
- const identity = { ...options.identity };
62
- const prefix = path(identity);
63
- const connection = options.connection;
64
- const maxRequests = options.maxRequests;
65
- const stdinKind = connection.stdinKind;
66
- const maxFrameBytes = connection.maxFrameBytes;
67
- const suppliedInputs = connection.inputChannels ?? (stdinKind === 'pipe' ? [1] : []);
68
- const suppliedOutputs = connection.outputs;
69
- if (!Array.isArray(suppliedInputs) || suppliedInputs.length > 64 || suppliedOutputs.size > 64
70
- || !['pipe', 'descriptor'].includes(stdinKind) || !Number.isSafeInteger(maxFrameBytes) || maxFrameBytes < 1 || maxFrameBytes > 1048576)
71
- throw new TypeError('Invalid process lane capacity');
72
- // Lane identity and credit are fixed admission authority, including across
73
- // asynchronous authorization. A mutable connector cannot replace a borrowed
74
- // stream or enlarge a frame allocation after the handler is mounted.
75
- const inputs = Array.from({ length: suppliedInputs.length }, (_, index) => {
76
- if (!Object.hasOwn(suppliedInputs, index))
77
- throw new TypeError('Invalid process lane capacity');
78
- return integer(suppliedInputs[index]);
79
- });
80
- const outputs = new Map(suppliedOutputs);
81
- if (new Set(inputs).size !== inputs.length || inputs.includes(2) || inputs.includes(3)
82
- || inputs.includes(1) !== (stdinKind === 'pipe') || outputs.has(1) || !outputs.has(2) || !outputs.has(3) || outputs.size > 64)
83
- throw new TypeError('Invalid process lane capacity');
84
- const lanes = [...inputs.map(channel => 'POST:' + channel + '/frames'), ...[...outputs.keys()].flatMap(channel => {
85
- integer(channel);
86
- return ['GET:' + channel + '/frames', 'POST:' + channel + '/ack', 'POST:' + channel + '/close-output'];
87
- })];
88
- // Fixed admitted lane budgets prevent a blocked native descriptor from
89
- // starving another descriptor. Observation and control have independent
90
- // bounds too; unadmitted routes cannot allocate new capacity entries.
91
- const active = new Map(['data', 'control', 'outcome', ...lanes].map(key => [key, 0]));
92
- const json = (value, status = 200) => Response.json(value, { status, headers: { 'Execution-Epoch': identity.epoch, 'Cache-Control': 'no-store' } });
93
- return async (request) => {
94
- const url = new URL(request.url);
95
- const route = url.pathname.startsWith(prefix + '/') ? url.pathname.slice(prefix.length + 1).split('/') : [];
96
- const control = request.method === 'POST' && !url.search && (route.length === 1 && ['close', 'signal'].includes(route[0])
97
- || route.length === 2 && ['ack', 'close-output'].includes(route[1]));
98
- const outcome = request.method === 'GET' && !url.search && route.length === 1 && route[0] === 'outcome';
99
- const lane = route.length === 2 ? request.method + ':' + route.join('/') : undefined;
100
- const capacity = lane && active.has(lane) ? lane : control ? 'control' : outcome ? 'outcome' : 'data';
101
- if (active.get(capacity) >= maxRequests)
102
- return json({ code: 'admissionBound' }, 429);
103
- active.set(capacity, active.get(capacity) + 1);
104
- try {
105
- if (!await options.authorize(request))
106
- return json({ code: 'authorization' }, 403);
107
- if (request.headers.get('Execution-Protocol') !== '1')
108
- return json({ code: 'protocol' }, 400);
109
- if (request.headers.get('Execution-Epoch') !== identity.epoch)
110
- return json({ code: 'epochLost' }, 410);
111
- if (url.search || !url.pathname.startsWith(prefix + '/'))
112
- return json({ code: 'notFound' }, 404);
113
- request.signal.throwIfAborted();
114
- if (route.length === 1 && route[0] === 'metadata' && request.method === 'GET')
115
- return json({ stdinKind, maxFrameBytes, inputChannels: inputs, outputChannels: [...outputs.keys()] });
116
- if (route.length === 1 && route[0] === 'outcome' && request.method === 'GET') {
117
- let abort;
118
- const canceled = new Promise((_, reject) => { abort = () => reject(request.signal.reason); request.signal.addEventListener('abort', abort, { once: true }); });
119
- try {
120
- return json(await Promise.race([connection.outcome, canceled]));
121
- }
122
- finally {
123
- request.signal.removeEventListener('abort', abort);
124
- }
125
- }
126
- if (route.length === 1 && route[0] === 'close' && request.method === 'POST') {
127
- await connection.close();
128
- return json({ closed: true });
129
- }
130
- if (route.length === 1 && route[0] === 'signal' && request.method === 'POST') {
131
- const value = await document(request.body, request.signal);
132
- record(value, ['name', ...(value && typeof value === 'object' && Object.hasOwn(value, 'number') ? ['number'] : []), ...(value && typeof value === 'object' && Object.hasOwn(value, 'target') ? ['target'] : [])]);
133
- if (typeof value.name !== 'string' || !value.name || value.name.includes('\0') || value.number !== undefined && (!Number.isSafeInteger(value.number) || Number(value.number) < 1 || Number(value.number) > 255) || value.target !== undefined && value.target !== 'process-group' || !connection.signal)
134
- throw new TypeError('Invalid admitted signal');
135
- if (!await options.authorize(request))
136
- return json({ code: 'authorization' }, 403);
137
- request.signal.throwIfAborted();
138
- await connection.signal(value.name, value.number, value.target);
139
- return json({ accepted: true });
140
- }
141
- if (route.length !== 2)
142
- return json({ code: 'notFound' }, 404);
143
- const channel = integer(Number(route[0]));
144
- if (String(channel) !== route[0])
145
- throw new TypeError('Invalid process stream');
146
- // The authenticated connection's directional lanes are the descriptor
147
- // authority. A bounded control slot does not admit an arbitrary stream ID.
148
- if (!lane || !active.has(lane))
149
- return json({ code: 'notFound' }, 404);
150
- if (route[1] === 'frames' && request.method === 'GET') {
151
- const source = outputs.get(channel);
152
- if (!source)
153
- return json({ code: 'notFound' }, 404);
154
- if (source.locked)
155
- return json({ code: 'consumerBusy' }, 409);
156
- // Network body consumption never returns native credit. Only /ack does.
157
- let reader;
158
- let released;
159
- const abort = () => { void release(request.signal.reason).catch(() => { }); };
160
- request.signal.addEventListener('abort', abort, { once: true });
161
- try {
162
- reader = source.getReader();
163
- }
164
- catch (cause) {
165
- request.signal.removeEventListener('abort', abort);
166
- throw cause;
167
- }
168
- function release(cause) {
169
- released ??= (async () => { request.signal.removeEventListener('abort', abort); try {
170
- await reader.cancel(cause);
171
- }
172
- finally {
173
- reader.releaseLock();
174
- } })();
175
- return released;
176
- }
177
- const body = new ReadableStream({ async pull(controller) {
178
- try {
179
- request.signal.throwIfAborted();
180
- if (!await options.authorize(request))
181
- throw new Error('Process stream authority expired');
182
- const result = await reader.read();
183
- request.signal.throwIfAborted();
184
- if (!await options.authorize(request))
185
- throw new Error('Process stream authority expired');
186
- if (result.done) {
187
- await release();
188
- controller.close();
189
- }
190
- else
191
- controller.enqueue(result.value);
192
- }
193
- catch (cause) {
194
- await release(cause);
195
- controller.error(cause);
196
- }
197
- }, cancel: release }, { highWaterMark: 0 });
198
- return new Response(body, { headers: { 'Content-Type': binaryContentType, 'Execution-Epoch': identity.epoch, 'Cache-Control': 'no-store', 'X-Accel-Buffering': 'no' } });
199
- }
200
- if (route[1] === 'frames' && request.method === 'POST') {
201
- if (request.headers.get('Content-Type') !== binaryContentType)
202
- throw new TypeError('Binary process frame required');
203
- const expected = offset(request.headers.get('Execution-Offset'));
204
- const frame = await bytes(request.body, 40 + maxFrameBytes, request.signal);
205
- if (!await options.authorize(request))
206
- return json({ code: 'authorization' }, 403);
207
- return json({ offset: String(await connection.send(channel, frame, expected, request.signal)) });
208
- }
209
- if (route[1] === 'ack' && request.method === 'POST') {
210
- const value = await document(request.body, request.signal);
211
- record(value, ['sequence', 'offset']);
212
- const sequence = offset(value.sequence);
213
- const position = offset(value.offset);
214
- if (!await options.authorize(request))
215
- return json({ code: 'authorization' }, 403);
216
- request.signal.throwIfAborted();
217
- await connection.ack(channel, sequence, position);
218
- return json({ accepted: true });
219
- }
220
- if (route[1] === 'close-output' && request.method === 'POST') {
221
- const value = await document(request.body, request.signal);
222
- record(value, ['code']);
223
- if (value.code !== 'EPIPE')
224
- throw new TypeError('Invalid destination closure');
225
- if (!await options.authorize(request))
226
- return json({ code: 'authorization' }, 403);
227
- request.signal.throwIfAborted();
228
- await connection.closeOutput(channel, Object.assign(new Error('Remote destination closed'), { code: 'EPIPE' }));
229
- return json({ accepted: true });
230
- }
231
- return json({ code: 'notFound' }, 404);
232
- }
233
- catch (cause) {
234
- return json({ code: cause?.code === 'EPIPE' ? 'EPIPE' : 'processOperationFailed' }, cause?.code === 'EPIPE' ? 409 : 503);
235
- }
236
- finally {
237
- active.set(capacity, active.get(capacity) - 1);
238
- }
239
- };
240
- }
241
- /** Portable paired HTTPS transport. Frame credits reflect native acceptance and
242
- * canonical destination delivery; fetch/WebSocket buffering supplies no credit.
243
- * Ack/cleanup use independent bounded requests so invocation cancellation cannot
244
- * erase effects already accepted by an owned destination. */
245
- export async function connectHttpProcess(options, signal) {
246
- options = { ...options };
247
- const origin = new URL(options.baseUrl);
248
- if (origin.protocol !== 'https:' || origin.username || origin.password || origin.search || origin.hash || origin.pathname !== '/')
249
- throw new TypeError('An authenticated HTTPS origin is required');
250
- const identity = { ...options.identity };
251
- const prefix = path(identity);
252
- const transport = options.fetch ?? globalThis.fetch;
253
- const timeout = options.requestTimeoutMs ?? 5000;
254
- const owner = new AbortController();
255
- const lifetime = AbortSignal.any([signal, owner.signal]);
256
- let finalized = false;
257
- let acquisitionDispatched = false;
258
- const outputWork = new Set();
259
- const inputWork = new Set();
260
- const deliveries = new Set();
261
- const activeControls = new Set();
262
- if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 2147483647)
263
- throw new TypeError('Invalid process request timeout');
264
- async function request(route, method, body, borrowed, binary = false, expected) {
265
- const controller = new AbortController();
266
- const timer = setTimeout(() => controller.abort(new Error('Process request timed out')), timeout);
267
- const bounded = controller.signal;
268
- const credentialSignal = borrowed ? AbortSignal.any([borrowed, bounded]) : bounded;
269
- const persistent = method === 'GET' && (route === 'outcome' || route.endsWith('/frames'));
270
- const requestSignal = persistent ? (borrowed ?? new AbortController().signal) : credentialSignal;
271
- requestSignal.throwIfAborted();
272
- const credential = Promise.resolve().then(() => options.token());
273
- void credential.catch(() => { });
274
- let abort;
275
- const canceled = new Promise((_, reject) => { abort = () => reject(credentialSignal.reason); credentialSignal.addEventListener('abort', abort, { once: true }); });
276
- let token;
277
- try {
278
- credentialSignal.throwIfAborted();
279
- token = await Promise.race([credential, canceled]);
280
- }
281
- catch (cause) {
282
- clearTimeout(timer);
283
- if (borrowed?.aborted)
284
- throw borrowed.reason;
285
- throw new RemoteExecutionError('Process credentials unavailable', 'notAccepted', identity, 401, { cause });
286
- }
287
- finally {
288
- credentialSignal.removeEventListener('abort', abort);
289
- }
290
- if (persistent)
291
- clearTimeout(timer);
292
- requestSignal.throwIfAborted();
293
- const headers = new Headers({ 'Authorization': 'Bearer ' + token, 'Execution-Epoch': identity.epoch, 'Execution-Protocol': '1' });
294
- if (body !== undefined)
295
- headers.set('Content-Type', binary ? binaryContentType : 'application/json');
296
- if (expected !== undefined)
297
- headers.set('Execution-Offset', String(expected));
298
- let response;
299
- try {
300
- if (route === 'metadata')
301
- acquisitionDispatched = true;
302
- response = await transport(new URL(prefix + '/' + route, origin), { method, body, headers, signal: requestSignal, redirect: 'error' });
303
- }
304
- catch (cause) {
305
- clearTimeout(timer);
306
- if (borrowed?.aborted)
307
- throw borrowed.reason;
308
- throw new RemoteExecutionError('Process transport interrupted', 'unknown', identity, undefined, { cause });
309
- }
310
- if (!response.ok || response.headers.get('Execution-Epoch') !== identity.epoch) {
311
- if (route === 'metadata')
312
- acquisitionDispatched = false;
313
- try {
314
- if (response.status === 409 && response.headers.get('Execution-Epoch') === identity.epoch && binary) {
315
- const error = await document(response.body, requestSignal);
316
- record(error, ['code']);
317
- if (error.code === 'EPIPE')
318
- throw Object.assign(new Error('Native process input closed'), { code: 'EPIPE' });
319
- }
320
- if (response.status === 410 || response.ok && response.headers.get('Execution-Epoch') !== identity.epoch)
321
- throw new UnrecoverableTransportError(identity);
322
- throw new RemoteExecutionError('Process transport admission failed', 'unknown', identity, response.status);
323
- }
324
- finally {
325
- clearTimeout(timer);
326
- await response.body?.cancel().catch(() => { });
327
- }
328
- }
329
- return { response, requestSignal, dispose() { clearTimeout(timer); } };
330
- }
331
- async function control(route, method, body, borrowed) {
332
- // Admit before credentials or dispatch. Each destination's credit and closure
333
- // have separate slots; neither competes with signals or invocation retirement.
334
- if (method === 'POST') {
335
- if (activeControls.has(route))
336
- throw new TypeError('Process control admission limit');
337
- activeControls.add(route);
338
- }
339
- try {
340
- const result = await request(route, method, body === undefined ? undefined : JSON.stringify(body), borrowed);
341
- try {
342
- const value = await document(result.response.body, result.requestSignal);
343
- if (route === 'close') {
344
- record(value, ['closed']);
345
- if (value.closed !== true)
346
- throw new TypeError('Missing process retirement acknowledgement');
347
- }
348
- else if (method === 'POST') {
349
- record(value, ['accepted']);
350
- if (value.accepted !== true)
351
- throw new TypeError('Missing process control acknowledgement');
352
- }
353
- return value;
354
- }
355
- catch (cause) {
356
- if (borrowed?.aborted)
357
- throw borrowed.reason;
358
- throw new RemoteExecutionError('Process control delivery interrupted', 'unknown', identity, undefined, { cause });
359
- }
360
- finally {
361
- result.dispose();
362
- }
363
- }
364
- finally {
365
- if (method === 'POST')
366
- activeControls.delete(route);
367
- }
368
- }
369
- try {
370
- const metadata = await control('metadata', 'GET', undefined, lifetime);
371
- record(metadata, ['stdinKind', 'maxFrameBytes', 'inputChannels', 'outputChannels']);
372
- if (!['pipe', 'descriptor'].includes(metadata.stdinKind) || !Number.isSafeInteger(metadata.maxFrameBytes) || Number(metadata.maxFrameBytes) < 1 || Number(metadata.maxFrameBytes) > 1048576 || !Array.isArray(metadata.inputChannels) || !Array.isArray(metadata.outputChannels))
373
- throw new TypeError('Invalid process lane admission');
374
- if (metadata.inputChannels.length > 64 || metadata.outputChannels.length > 64)
375
- throw new TypeError('Invalid process lane admission');
376
- const inputs = Object.freeze(metadata.inputChannels.map(integer));
377
- const channels = metadata.outputChannels.map(integer);
378
- if (new Set(inputs).size !== inputs.length || new Set(channels).size !== channels.length || !channels.includes(2) || !channels.includes(3) || channels.includes(1) || inputs.includes(2) || inputs.includes(3) || inputs.includes(1) !== (metadata.stdinKind === 'pipe'))
379
- throw new TypeError('Invalid process lane admission');
380
- const inputBusy = new Set();
381
- const inputEnded = new Set();
382
- const inputSequences = new Map();
383
- const inputOffsets = new Map();
384
- const inputFailures = new Map();
385
- const readers = new Set();
386
- const outputs = new Map(channels.map(channel => {
387
- let reader;
388
- return [channel, new ReadableStream({
389
- async pull(controller) {
390
- const operation = (async () => {
391
- try {
392
- lifetime.throwIfAborted();
393
- if (!reader) {
394
- const { response } = await request(channel + '/frames', 'GET', undefined, lifetime);
395
- if (finalized || lifetime.aborted) {
396
- await response.body?.cancel().catch(() => { });
397
- lifetime.throwIfAborted();
398
- throw new Error('Process transport finalized');
399
- }
400
- if (response.headers.get('Content-Type') !== binaryContentType || !response.body) {
401
- await response.body?.cancel();
402
- throw new TypeError('Invalid process binary response');
403
- }
404
- reader = response.body.getReader();
405
- readers.add(reader);
406
- }
407
- const result = await reader.read();
408
- lifetime.throwIfAborted();
409
- if (result.done) {
410
- readers.delete(reader);
411
- reader.releaseLock();
412
- controller.close();
413
- }
414
- else
415
- controller.enqueue(result.value);
416
- }
417
- catch (cause) {
418
- // A failed body cannot be resumed through this reader. Retire its local
419
- // ownership without mistaking reader cancellation failure for group loss.
420
- if (reader) {
421
- readers.delete(reader);
422
- await reader.cancel(cause).catch(() => { });
423
- reader.releaseLock();
424
- reader = undefined;
425
- }
426
- controller.error(lifetime.aborted ? lifetime.reason : cause instanceof RemoteExecutionError ? cause : new RemoteExecutionError('Process output delivery interrupted', 'unknown', identity, undefined, { cause }));
427
- }
428
- })();
429
- outputWork.add(operation);
430
- try {
431
- await operation;
432
- }
433
- finally {
434
- outputWork.delete(operation);
435
- }
436
- },
437
- async cancel(cause) {
438
- if (reader) {
439
- // A blocked pull can retire/reset the shared reader while cancellation
440
- // settles. Release the same acquired reader without replacing its failure.
441
- const retiring = reader;
442
- readers.delete(retiring);
443
- try {
444
- await retiring.cancel(cause);
445
- }
446
- finally {
447
- retiring.releaseLock();
448
- }
449
- }
450
- },
451
- }, { highWaterMark: 0 })];
452
- }));
453
- const outcome = control('outcome', 'GET', undefined, lifetime).then(value => { validateWire('Outcome', value); return value; });
454
- void outcome.catch(() => { });
455
- let closing;
456
- return { stdinKind: metadata.stdinKind, maxFrameBytes: metadata.maxFrameBytes, inputChannels: inputs, outputs, outcome,
457
- async send(channel, frame, expected, caller) {
458
- if (finalized)
459
- throw new TypeError('Process transport finalized');
460
- if (inputFailures.has(channel))
461
- throw inputFailures.get(channel);
462
- const admittedSignal = AbortSignal.any([caller, lifetime]);
463
- admittedSignal.throwIfAborted();
464
- if (!inputs.includes(channel) || inputBusy.has(channel) || inputEnded.has(channel)
465
- || !(frame instanceof Uint8Array)
466
- || typeof expected !== 'bigint' || expected < 0n || expected > 18446744073709551615n)
467
- throw new TypeError('Invalid process input credit');
468
- // Admit the intrinsic byte span before allocation. Borrowed producers can
469
- // shadow instance properties; those properties cannot widen lane credit or
470
- // replace the bytes whose native acceptance we will acknowledge.
471
- const prototype = Object.getPrototypeOf(Uint8Array.prototype);
472
- const length = Object.getOwnPropertyDescriptor(prototype, 'byteLength').get.call(frame);
473
- if (length < 40 || length > 40 + Number(metadata.maxFrameBytes))
474
- throw new TypeError('Invalid process input credit');
475
- const buffer = Object.getOwnPropertyDescriptor(prototype, 'buffer').get.call(frame);
476
- const byteOffset = Object.getOwnPropertyDescriptor(prototype, 'byteOffset').get.call(frame);
477
- if (new DataView(buffer, byteOffset, length).getUint32(12) !== length - 40)
478
- throw new TypeError('Invalid process input credit');
479
- const owned = new Uint8Array(length);
480
- Uint8Array.prototype.set.call(owned, frame);
481
- frame = owned;
482
- inputBusy.add(channel);
483
- const operation = (async () => {
484
- const source = new ReadableStream({ start(controller) { controller.enqueue(frame); controller.close(); } });
485
- let sequence = 0n;
486
- let ended = false;
487
- for await (const decoded of decodeFrames(source, { channels: [channel], maxFrameBytes: Number(metadata.maxFrameBytes), maxControlBytes: Number(metadata.maxFrameBytes), firstSequence: inputSequences.get(channel) ?? 1n, offsets: new Map([[channel, inputOffsets.get(channel) ?? 0n]]) }, admittedSignal)) {
488
- if (decoded.kind === 'control' || decoded.correlationId !== 0n || decoded.offset + BigInt(decoded.payload.length) !== expected)
489
- throw new TypeError('Invalid process input credit');
490
- sequence = decoded.sequence;
491
- ended = decoded.kind === 'end';
492
- }
493
- try {
494
- const result = await request(channel + '/frames', 'POST', frame, admittedSignal, true, expected);
495
- try {
496
- const value = await document(result.response.body, result.requestSignal);
497
- record(value, ['offset']);
498
- const accepted = offset(value.offset);
499
- if (accepted !== expected)
500
- throw new TypeError('Native input credit offset conflict');
501
- inputSequences.set(channel, sequence + 1n);
502
- inputOffsets.set(channel, accepted);
503
- if (ended)
504
- inputEnded.add(channel);
505
- return accepted;
506
- }
507
- catch (cause) {
508
- if (admittedSignal.aborted)
509
- throw admittedSignal.reason;
510
- throw cause instanceof RemoteExecutionError ? cause : new RemoteExecutionError('Process input receipt interrupted; native acceptance unknown', 'unknown', identity, undefined, { cause });
511
- }
512
- finally {
513
- result.dispose();
514
- }
515
- }
516
- catch (cause) {
517
- // A missing native receipt is not authority to repeat a write at the old
518
- // offset. Retire only this input; siblings retain their independent credit.
519
- if (!(cause instanceof RemoteExecutionError && cause.phase === 'notAccepted'))
520
- inputFailures.set(channel, cause);
521
- throw cause;
522
- }
523
- })();
524
- inputWork.add(operation);
525
- try {
526
- return await operation;
527
- }
528
- finally {
529
- inputWork.delete(operation);
530
- inputBusy.delete(channel);
531
- }
532
- },
533
- async ack(channel, sequence, position) {
534
- if (finalized)
535
- throw new TypeError('Process transport finalized');
536
- if (!channels.includes(channel) || typeof sequence !== 'bigint' || sequence < 1n || sequence > 18446744073709551615n
537
- || typeof position !== 'bigint' || position < 0n || position > 18446744073709551615n)
538
- throw new TypeError('Invalid process output credit');
539
- const operation = control(channel + '/ack', 'POST', { sequence: String(sequence), offset: String(position) });
540
- deliveries.add(operation);
541
- try {
542
- await operation;
543
- }
544
- finally {
545
- deliveries.delete(operation);
546
- }
547
- },
548
- async closeOutput(channel) { if (finalized)
549
- throw new TypeError('Process transport finalized'); if (!channels.includes(channel))
550
- throw new TypeError('Invalid process output channel'); const operation = control(channel + '/close-output', 'POST', { code: 'EPIPE' }); deliveries.add(operation); try {
551
- await operation;
552
- }
553
- finally {
554
- deliveries.delete(operation);
555
- } },
556
- async signal(name, number, target) {
557
- if (finalized)
558
- throw new TypeError('Process transport finalized');
559
- if (typeof name !== 'string' || !name || name.includes('\0') || number !== undefined && (!Number.isSafeInteger(number) || number < 1 || number > 255)
560
- || target !== undefined && target !== 'process-group')
561
- throw new TypeError('Invalid admitted signal');
562
- const operation = control('signal', 'POST', { name, number, target });
563
- deliveries.add(operation);
564
- try {
565
- await operation;
566
- }
567
- finally {
568
- deliveries.delete(operation);
569
- }
570
- },
571
- close() {
572
- if (!closing) {
573
- finalized = true;
574
- owner.abort(new Error('Process transport finalized'));
575
- closing = (async () => {
576
- const delivered = await Promise.allSettled([...deliveries]);
577
- const results = await Promise.allSettled([control('close', 'POST'), outcome.catch(() => { }), ...inputWork, ...outputWork, ...[...readers].map(async (reader) => { try {
578
- await reader.cancel();
579
- }
580
- finally {
581
- reader.releaseLock();
582
- } })]);
583
- readers.clear();
584
- const failures = [...delivered, ...results].filter((result) => result.status === 'rejected' && result.reason !== owner.signal.reason && result.reason !== signal.reason);
585
- if (failures.length)
586
- throw new RemoteExecutionError('Remote process retirement could not be confirmed', 'unknown', identity, undefined, { cause: new AggregateError(failures.map(result => result.reason), 'Remote process retirement failed') });
587
- })();
588
- void closing.catch(() => { });
589
- }
590
- return closing;
591
- },
592
- };
593
- }
594
- catch (cause) {
595
- // Own dispatched acquisition through an interrupted or late response. An
596
- // explicit admission/epoch rejection or failure before credential dispatch
597
- // supplies no authority to retire the invocation.
598
- if (acquisitionDispatched)
599
- try {
600
- await control('close', 'POST');
601
- }
602
- catch (cleanup) {
603
- throw new AggregateError([cause, cleanup], 'Process acquisition and cleanup failed', { cause });
604
- }
605
- throw cause;
606
- }
607
- }