@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,208 +0,0 @@
1
- import { validateWire } from './wire-validation.js';
2
- export { validateWire };
3
- export { validateCallbackResult } from './callback-result.js';
4
- /** Readiness is more than a schema-shaped state label. Use the same progress
5
- * semantics on server results and recovered SDK observations. */
6
- export function validateDependencyMaterialization(value) {
7
- validateWire('DependencyMaterialization', value);
8
- const status = value;
9
- if (new Set(status.callbackGrantIds).size !== status.callbackGrantIds.length
10
- || status.entries.some((entry, index) => entry.index !== index || entry.state === 'applied' && entry.revision === null)
11
- || status.state === 'ready' && (status.directoryRevision === null || status.error !== undefined || status.entries.some(entry => entry.state !== 'applied')))
12
- throw new TypeError('Invalid dependency preparation progress or readiness');
13
- }
14
- function reject() { throw new TypeError('Invalid dependency manifest'); }
15
- function record(value, keys) {
16
- if (!value || typeof value !== 'object' || Array.isArray(value))
17
- reject();
18
- const result = value;
19
- if (Object.keys(result).some(key => !keys.includes(key)))
20
- reject();
21
- return result;
22
- }
23
- function id(value) {
24
- if (typeof value !== 'string' || value.length === 0 || value.length > 256)
25
- reject();
26
- }
27
- function bytes(value, limit) {
28
- if (!Array.isArray(value) || !value.length || value.length > limit)
29
- reject();
30
- // Iteration visits holes as undefined; Array#some skips them and would admit
31
- // SDK values whose JSON wire representation contains invalid null octets.
32
- for (const n of value)
33
- if (!Number.isInteger(n) || n < 1 || n > 255)
34
- reject();
35
- }
36
- function decimal(value, signed = false) {
37
- if (typeof value !== 'string' || !value.length || value.length > 20)
38
- reject();
39
- const digits = signed && value.startsWith('-') ? value.slice(1) : value;
40
- if (!digits.length || (digits.length > 1 && digits[0] === '0') || value === '-0'
41
- || Array.from(digits).some(c => c < '0' || c > '9'))
42
- reject();
43
- const n = BigInt(value);
44
- if (n < (signed ? -9223372036854775808n : 0n) || n > 9223372036854775807n)
45
- reject();
46
- }
47
- /** Pure wire/structural validation shared by REST and SDK. Does no IO and grants
48
- * no authority. Server admission must additionally verify bindings, collisions,
49
- * blobs, snapshot guarantees and callback rights using authenticated host state. */
50
- /** Preparation accepts host-issued identities, never caller-selected physical
51
- * destinations. Scope and revision authority are separately checked by the host. */
52
- export function validateDependencyMaterializeRequest(value) {
53
- const request = record(value, ['sessionId', 'epoch', 'manifestId', 'manifestRevision', 'bindingId', 'expectedDirectoryRevision', 'operationKey']);
54
- for (const field of ['sessionId', 'epoch', 'manifestId', 'manifestRevision', 'bindingId', 'operationKey'])
55
- id(request[field]);
56
- if (request.expectedDirectoryRevision !== null)
57
- id(request.expectedDirectoryRevision);
58
- }
59
- export function validateDependencyManifest(value, limits) {
60
- if (!Number.isSafeInteger(limits.maxEntries) || limits.maxEntries < 0
61
- || !Number.isSafeInteger(limits.maxPathBytes) || limits.maxPathBytes < 1)
62
- reject();
63
- const m = record(value, ['version', 'sessionId', 'epoch', 'namespaceId', 'revision', 'logicalRoot', 'cwd', 'sourceAuthorityId', 'entries']);
64
- if (m.version !== 1)
65
- reject();
66
- for (const key of ['sessionId', 'epoch', 'namespaceId', 'revision', 'sourceAuthorityId'])
67
- id(m[key]);
68
- for (const key of ['logicalRoot', 'cwd']) {
69
- bytes(m[key], limits.maxPathBytes);
70
- if (m[key][0] !== 47)
71
- reject();
72
- }
73
- if (!Array.isArray(m.entries) || m.entries.length > limits.maxEntries)
74
- reject();
75
- const paths = new Map();
76
- const identities = new Map();
77
- let previous;
78
- for (const raw of m.entries) {
79
- const kind = record(raw, ['kind', 'path', 'source', 'metadata', 'blob', 'identityRef', 'target', 'operations']).kind;
80
- const fields = { directory: [], file: ['blob', 'identityRef'], symlink: ['target'], hardlink: ['identityRef'], 'output-intent': ['operations'] };
81
- if (typeof kind !== 'string' || !Object.hasOwn(fields, kind))
82
- reject();
83
- const entry = record(raw, ['kind', 'path', 'source', 'metadata', ...fields[kind]]);
84
- if (!Array.isArray(entry.path) || !entry.path.length)
85
- reject();
86
- const components = [];
87
- for (const component of entry.path) {
88
- bytes(component, limits.maxPathBytes);
89
- if (component.includes(47) || (component.every(n => n === 46) && component.length <= 2))
90
- reject();
91
- components.push(component);
92
- }
93
- const flat = components.flatMap((c, i) => i === 0 ? c : [47, ...c]);
94
- if (flat.length > limits.maxPathBytes)
95
- reject();
96
- const key = JSON.stringify(components);
97
- if (paths.has(key))
98
- reject();
99
- if (components.length > 1 && paths.get(JSON.stringify(components.slice(0, -1))) !== 'directory')
100
- reject();
101
- if (previous) {
102
- const different = flat.findIndex((n, i) => n !== previous?.[i]);
103
- if (different < 0 || flat[different] < (previous[different] ?? -1))
104
- reject();
105
- }
106
- previous = flat;
107
- paths.set(key, kind);
108
- const source = record(entry.source, ['authorityId', 'path', 'freshness', 'observedVersion', 'retainedIdentity', 'snapshotId', 'callbackGrantId']);
109
- id(source.authorityId);
110
- if (source.authorityId !== m.sourceAuthorityId)
111
- reject();
112
- bytes(source.path, limits.maxPathBytes);
113
- if (source.path[0] !== 47)
114
- reject();
115
- for (const k of ['observedVersion', 'retainedIdentity'])
116
- if (source[k] !== null)
117
- id(source[k]);
118
- if (source.freshness === 'immutable')
119
- id(source.snapshotId);
120
- else if (source.freshness === 'live' || source.freshness === 'revalidate-on-open')
121
- id(source.callbackGrantId);
122
- else
123
- reject();
124
- if (source.snapshotId !== undefined)
125
- id(source.snapshotId);
126
- if (source.callbackGrantId !== undefined)
127
- id(source.callbackGrantId);
128
- if (entry.metadata !== undefined) {
129
- const meta = record(entry.metadata, ['mode', 'atimeNs', 'mtimeNs']);
130
- if (meta.mode !== undefined && (typeof meta.mode !== 'number' || !Number.isInteger(meta.mode) || meta.mode < 0 || meta.mode > 0o7777))
131
- reject();
132
- for (const k of ['atimeNs', 'mtimeNs'])
133
- if (meta[k] !== undefined)
134
- decimal(meta[k], true);
135
- }
136
- if (kind === 'file') {
137
- const blob = record(entry.blob, ['blobId', 'size', 'sha256']);
138
- id(blob.blobId);
139
- decimal(blob.size);
140
- if (typeof blob.sha256 !== 'string' || blob.sha256.length !== 64
141
- || Array.from(blob.sha256).some(c => !'0123456789abcdef'.includes(c)))
142
- reject();
143
- if (entry.identityRef !== undefined) {
144
- id(entry.identityRef);
145
- if (identities.has(entry.identityRef))
146
- reject();
147
- identities.set(entry.identityRef, {});
148
- }
149
- }
150
- if (kind === 'hardlink') {
151
- id(entry.identityRef);
152
- if (!identities.has(entry.identityRef))
153
- reject();
154
- }
155
- if ((kind === 'file' || kind === 'hardlink') && entry.identityRef !== undefined && entry.metadata !== undefined) {
156
- const metadata = entry.metadata;
157
- const requested = identities.get(entry.identityRef);
158
- for (const field of ['mode', 'atimeNs', 'mtimeNs']) {
159
- if (metadata[field] === undefined)
160
- continue;
161
- if (requested[field] !== undefined && requested[field] !== metadata[field])
162
- reject();
163
- requested[field] = metadata[field];
164
- }
165
- }
166
- if (kind === 'symlink')
167
- bytes(entry.target, limits.maxPathBytes);
168
- if (kind === 'output-intent') {
169
- if (!Array.isArray(entry.operations) || !entry.operations.length
170
- || new Set(entry.operations).size !== entry.operations.length)
171
- reject();
172
- for (const op of entry.operations)
173
- if (!['create', 'truncate', 'append', 'replace'].includes(op))
174
- reject();
175
- if (entry.metadata !== undefined || source.freshness === 'immutable')
176
- reject();
177
- }
178
- }
179
- }
180
- /** Pure invocation admission. Host admission must separately match the manifest,
181
- * ready revision and canonical cwd, and qualify the native launcher's byte support.
182
- * maxArgvBytes includes one native NUL terminator per argument, never pointer bytes. */
183
- export function validateManifestInvocation(value, limits) {
184
- for (const limit of [limits.maxArguments, limits.maxArgvBytes]) {
185
- if (!Number.isSafeInteger(limit) || limit < 0)
186
- reject();
187
- }
188
- if (!Number.isSafeInteger(limits.maxPathBytes) || limits.maxPathBytes < 1)
189
- reject();
190
- const invocation = record(value, ['manifestId', 'manifestRevision', 'directoryRevision', 'cwd', 'originalArgv']);
191
- for (const field of ['manifestId', 'manifestRevision', 'directoryRevision'])
192
- id(invocation[field]);
193
- bytes(invocation.cwd, limits.maxPathBytes);
194
- if (invocation.cwd[0] !== 47)
195
- reject();
196
- if (!Array.isArray(invocation.originalArgv) || invocation.originalArgv.length > limits.maxArguments)
197
- reject();
198
- let remaining = limits.maxArgvBytes;
199
- for (const argument of invocation.originalArgv) {
200
- if (!Array.isArray(argument) || argument.length >= remaining)
201
- reject();
202
- // Empty arguments are valid; holes and NUL octets are never empty arguments.
203
- if (argument.length > 0)
204
- bytes(argument, remaining - 1);
205
- remaining -= argument.length + 1;
206
- }
207
- }
208
- export { uploadInteger, validateUploadRequest } from './upload-protocol.js';
@@ -1,91 +0,0 @@
1
- /** Transport-only forwarding. Native retains TLS, HTTP, redirects, cookies,
2
- * ranges, retries and live reads. A runtime socket bridge is required to restore
3
- * endpoint metadata; merely forwarding packets does not qualify peer identity.
4
- * Frames are bounded to 1 MiB. Stream adapters may frame a larger byte stream;
5
- * datagram adapters must reject oversized packets without splitting them. */
6
- export async function relayTransport(semantics, left, right, signal) {
7
- // Retain the authenticated adapters and their retirement methods before any
8
- // I/O yields. Later producer mutation must not substitute a different port.
9
- [left, right] = [left, right].map(port => ({
10
- receive: port.receive.bind(port),
11
- send: port.send.bind(port),
12
- close: port.close.bind(port),
13
- }));
14
- const controller = new AbortController();
15
- // AbortController replaces an undefined reason with AbortError. Retain the
16
- // first adapter failure separately so cancellation cannot rewrite it.
17
- let transportFailure;
18
- const abort = () => controller.abort(signal?.reason);
19
- signal?.addEventListener('abort', abort, { once: true });
20
- if (signal?.aborted)
21
- abort();
22
- async function forward(source, target) {
23
- let ended = false;
24
- try {
25
- for (;;) {
26
- controller.signal.throwIfAborted();
27
- const received = await source.receive(controller.signal);
28
- controller.signal.throwIfAborted();
29
- if (received === null)
30
- return;
31
- // Validate and forward the same metadata, even for adapter accessors.
32
- const frame = { ...received };
33
- if (semantics === 'datagram' ? frame.kind !== 'datagram' : frame.kind !== 'bytes' && frame.kind !== 'end') {
34
- throw new Error('Relay frame violates admitted transport semantics');
35
- }
36
- if (frame.kind !== 'end' && !(frame.payload instanceof Uint8Array)) {
37
- throw new Error('Relay frame requires native payload bytes');
38
- }
39
- // Typed-array metadata can be shadowed by an adapter. Bound the native
40
- // buffer before allocation; datagrams must never be split to fit.
41
- if (frame.kind !== 'end' && Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(frame.payload) > 1024 * 1024) {
42
- throw new Error('Relay frame exceeds transport limit');
43
- }
44
- if (frame.kind === 'datagram' && (typeof frame.source !== 'string' || !frame.source
45
- || typeof frame.destination !== 'string' || !frame.destination)) {
46
- throw new Error('Relay frame requires native endpoint identities');
47
- }
48
- if (ended)
49
- throw new Error('Relay received data after stream half-close');
50
- if (frame.kind === 'end')
51
- ended = true;
52
- // Native metadata accessors can cancel while the frame is captured.
53
- // Do not hand canceled work to a transport adapter after validation.
54
- controller.signal.throwIfAborted();
55
- await target.send(frame.kind === 'end' ? { kind: 'end' } : { ...frame, payload: new Uint8Array(frame.payload) }, controller.signal);
56
- }
57
- }
58
- catch (error) {
59
- if (!controller.signal.aborted)
60
- transportFailure = { cause: error };
61
- controller.abort(error);
62
- throw error;
63
- }
64
- }
65
- const failures = [];
66
- try {
67
- if (semantics !== 'stream' && semantics !== 'datagram') {
68
- throw new Error('Relay transport requires supported semantics');
69
- }
70
- const results = await Promise.allSettled([forward(left, right), forward(right, left)]);
71
- if (controller.signal.aborted)
72
- throw transportFailure ? transportFailure.cause : controller.signal.reason;
73
- for (const result of results)
74
- if (result.status === 'rejected')
75
- throw result.reason;
76
- }
77
- catch (error) {
78
- failures.push(error);
79
- }
80
- finally {
81
- signal?.removeEventListener('abort', abort);
82
- const cleanup = await Promise.allSettled([left, right].map(port => Promise.resolve().then(() => port.close())));
83
- for (const result of cleanup)
84
- if (result.status === 'rejected')
85
- failures.push(result.reason);
86
- }
87
- if (failures.length === 1)
88
- throw failures[0];
89
- if (failures.length > 1)
90
- throw new AggregateError(failures, 'Relay transport retirement failed');
91
- }
@@ -1,93 +0,0 @@
1
- import { boundedTransfer } from './hosting-stream.js';
2
- import { hostingRequest } from './hosting-request.js';
3
- import { hostingOperation } from './hosting-operation.js';
4
- /** The trusted resolver binds tenancy and readiness. Resolving on each request
5
- * permits token/tunnel rotation and restart without replaying a request body.
6
- * Existing servers are never provisioned or destroyed by this driver. */
7
- export function createRestExecutionDriver(config, resolve, fetch = globalThis.fetch, now = Date.now, retire) {
8
- if (config.transport !== 'https')
9
- throw new TypeError('HTTPS transport required');
10
- if (!resolve && !config.endpoints)
11
- throw new TypeError('Existing-server bindings or resolver required');
12
- const bindings = new Map(Object.entries(config.endpoints ?? {}).map(([namespaceId, endpoint]) => [namespaceId, { ...endpoint }]));
13
- const endpoints = new Map();
14
- const cleanups = new Map();
15
- return {
16
- async acquire(namespaceId) {
17
- if (!namespaceId)
18
- throw new TypeError('Trusted namespace identity required');
19
- await cleanups.get(namespaceId);
20
- let entry = endpoints.get(namespaceId);
21
- if (!entry) {
22
- entry = { retired: false, abort: new AbortController() };
23
- endpoints.set(namespaceId, entry);
24
- }
25
- const lease = entry;
26
- if (lease.retired)
27
- throw new Error('Endpoint retired');
28
- return { async fetch(request) {
29
- if (lease.retired)
30
- throw new Error('Endpoint retired');
31
- request.signal.throwIfAborted();
32
- const signal = AbortSignal.any([request.signal, lease.abort.signal]);
33
- const endpoint = await hostingOperation(signal, async () => {
34
- if (resolve)
35
- return resolve(namespaceId, signal);
36
- const binding = bindings.get(namespaceId);
37
- if (!binding)
38
- throw new Error('Existing-server tenant binding required');
39
- return binding;
40
- });
41
- signal.throwIfAborted();
42
- if (lease.retired)
43
- throw new Error('Endpoint retired');
44
- const remaining = endpoint.expiresAt - now();
45
- if (!Number.isFinite(endpoint.expiresAt) || remaining <= 0)
46
- throw new Error('Endpoint lease expired');
47
- const origin = new URL(endpoint.origin);
48
- if (origin.protocol !== 'https:' || origin.username || origin.password || origin.pathname !== '/' || origin.search || origin.hash)
49
- throw new TypeError('Credential-free HTTPS origin required');
50
- const incoming = new URL(request.url);
51
- const target = new URL(origin);
52
- target.pathname = incoming.pathname;
53
- target.search = incoming.search;
54
- // Retain the original stream and protocol headers without eager stdin pulls.
55
- // Keep the deadline attached to the transport after headers arrive, so
56
- // native fetch also cancels streaming request and response bodies at expiry.
57
- const abort = new AbortController();
58
- const transportSignal = AbortSignal.any([signal, abort.signal, AbortSignal.timeout(Math.min(Math.ceil(remaining), 2147483647))]);
59
- const body = request.body ? boundedTransfer(request.body, undefined, transportSignal, abort, false, false) : null;
60
- try {
61
- const response = await hostingOperation(transportSignal, () => fetch(hostingRequest(request, target, { body, signal: transportSignal, redirect: 'manual' })), response => response.body?.cancel(transportSignal.reason));
62
- const output = response.body ? boundedTransfer(response.body, undefined, transportSignal, abort) : null;
63
- return new Response(output, { status: response.status, statusText: response.statusText, headers: response.headers });
64
- }
65
- catch (error) {
66
- abort.abort(error);
67
- throw error;
68
- }
69
- } };
70
- },
71
- async destroy(namespaceId) {
72
- if (!namespaceId)
73
- throw new TypeError('Trusted namespace identity required');
74
- const pending = cleanups.get(namespaceId);
75
- if (pending)
76
- return pending;
77
- // Old handles cannot attach to a replacement tenant binding. Failed
78
- // cleanup stays quarantined until the operator explicitly retries it.
79
- const entry = endpoints.get(namespaceId) ?? { retired: false, abort: new AbortController() };
80
- entry.retired = true;
81
- endpoints.set(namespaceId, entry);
82
- entry.abort.abort(new Error('Endpoint retired'));
83
- const cleanup = Promise.resolve().then(() => retire?.(namespaceId)).then(() => { endpoints.delete(namespaceId); });
84
- cleanups.set(namespaceId, cleanup);
85
- try {
86
- await cleanup;
87
- }
88
- finally {
89
- cleanups.delete(namespaceId);
90
- }
91
- },
92
- };
93
- }
@@ -1,201 +0,0 @@
1
- import { UploadError, uploadInteger, uploadRouteId, validateUploadRequest } from './upload-protocol.js';
2
- /** The caller owns descriptor admission/accounting and close. This function never
3
- * opens paths, replaces descriptors, or upgrades a live read to a snapshot.
4
- * A rejected chunk/commit request has an unknown remote outcome: retain the
5
- * upload for inspection instead of destroying resumable progress. Recovery must
6
- * inspect its offset and validate the same canonical freshness binding. */
7
- export async function uploadDescriptor(client, descriptor, declaration, options) {
8
- // Host callbacks may await or mutate borrowed configuration. Retain the
9
- // admitted bounds and recovery cursor for this capture.
10
- options = { ...options, resume: options.resume ? { ...options.resume, source: { ...options.resume.source } } : undefined };
11
- options.signal?.throwIfAborted();
12
- if (!declaration || typeof declaration !== 'object' || Array.isArray(declaration))
13
- throw new UploadError(400, 'Invalid upload request');
14
- // Validate the same owned size/digest later sent and checked against receipts.
15
- // Host getters cannot substitute a second declaration after admission.
16
- declaration = { ...declaration };
17
- validateUploadRequest(declaration);
18
- const size = uploadInteger(declaration.size);
19
- let offset = uploadInteger(options.resume?.offset ?? '0');
20
- if (options.resume)
21
- uploadRouteId(options.resume.uploadId);
22
- if (offset > size)
23
- throw new UploadError(400, 'Resume exceeds declared size');
24
- if (!Number.isSafeInteger(options.maxChunkBytes) || options.maxChunkBytes < 1)
25
- throw new UploadError(400, 'Invalid chunk bound');
26
- const exact = descriptor.exact;
27
- if (!exact && size > BigInt(Number.MAX_SAFE_INTEGER))
28
- throw new UploadError(422, 'Canonical exact descriptor required');
29
- if (size > 9223372036854775807n)
30
- throw new UploadError(422, 'Canonical descriptor offset exceeds signed 64-bit profile');
31
- if (!options.freshness || !['immutable', 'revalidate-on-open'].includes(options.freshness.profile))
32
- throw new UploadError(422, 'Stable source freshness binding required');
33
- const { signal, freshness } = options;
34
- const { descriptor: authorizedDescriptor, identity, version, profile } = freshness;
35
- if (authorizedDescriptor !== descriptor || identity === null || !['object', 'symbol'].includes(typeof identity)
36
- || typeof version !== 'string' || !version.length || version.length > 256
37
- || typeof freshness.assertCurrent !== 'function' || typeof freshness.invalidate !== 'function') {
38
- throw new UploadError(422, 'Qualified retained source identity and version required');
39
- }
40
- if (options.resume && (options.resume.source.identity !== identity || options.resume.source.version !== version)) {
41
- throw new UploadError(422, 'Resume belongs to another canonical object or content version');
42
- }
43
- // Retain the authorized capabilities before host callbacks can await. Keeping
44
- // their receivers preserves backend revision state without allowing method or
45
- // exact-facet replacement to change this capture's reader or freshness guard.
46
- const read = descriptor.read.bind(descriptor);
47
- const exactRead = exact?.read.bind(exact);
48
- const assertCurrent = freshness.assertCurrent.bind(freshness);
49
- const invalidate = freshness.invalidate.bind(freshness);
50
- // Keep this capture on its admitted authenticated transport, including recovery
51
- // and retirement. Awaited host guards cannot substitute another client facet.
52
- client = Object.freeze({
53
- beginUpload: client.beginUpload.bind(client), inspectUpload: client.inspectUpload.bind(client),
54
- uploadChunk: client.uploadChunk.bind(client), commitUpload: client.commitUpload.bind(client),
55
- abortUpload: client.abortUpload.bind(client),
56
- });
57
- let id = options.resume?.uploadId;
58
- let admitted = false;
59
- let unknownOutcome = false;
60
- let stale = false;
61
- function invalidateSource(cause) {
62
- stale = true;
63
- try {
64
- invalidate(cause);
65
- }
66
- catch (failure) {
67
- throw new AggregateError([cause, failure], 'Source freshness and manifest invalidation failed', { cause });
68
- }
69
- throw cause;
70
- }
71
- async function current() {
72
- signal?.throwIfAborted();
73
- try {
74
- if (freshness.descriptor !== authorizedDescriptor || freshness.identity !== identity || freshness.version !== version || freshness.profile !== profile)
75
- throw new UploadError(409, 'Canonical capture binding changed');
76
- await assertCurrent(signal);
77
- if (freshness.descriptor !== authorizedDescriptor || freshness.identity !== identity || freshness.version !== version || freshness.profile !== profile)
78
- throw new UploadError(409, 'Canonical capture binding changed');
79
- }
80
- catch (error) {
81
- // A canceled guard did not establish that the canonical source changed.
82
- // Preserve resumable staging until this capture has actually admitted it.
83
- signal?.throwIfAborted();
84
- invalidateSource(error);
85
- }
86
- signal?.throwIfAborted();
87
- }
88
- try {
89
- await current();
90
- if (id) {
91
- const { uploadId, state, size: receiptSize, digest, committedOffset, blobId } = await client.inspectUpload(id, signal);
92
- const receipt = { uploadId, state, size: receiptSize, digest, committedOffset, blobId };
93
- await current();
94
- if (receipt.uploadId !== id || !['open', 'committed'].includes(receipt.state) || receipt.size !== declaration.size
95
- || receipt.digest !== declaration.digest || receipt.committedOffset !== String(offset))
96
- throw new UploadError(409, 'Resume declaration or acknowledged offset mismatch');
97
- if (receipt.state === 'committed') {
98
- if (offset !== size || typeof receipt.blobId !== 'string' || !receipt.blobId.length || receipt.blobId.length > 256)
99
- throw new UploadError(409, 'Committed upload acknowledgement mismatch');
100
- try {
101
- uploadRouteId(receipt.blobId);
102
- }
103
- catch {
104
- throw new UploadError(409, 'Unroutable committed upload acknowledgement');
105
- }
106
- return { size: declaration.size, digest: declaration.digest, blobId: receipt.blobId };
107
- }
108
- }
109
- else {
110
- unknownOutcome = true;
111
- // Acquisition borrows its own copy. The capture's admitted size/digest
112
- // remain authoritative for every subsequent read and acknowledgment.
113
- const { uploadId, state, size: receiptSize, digest, committedOffset } = await client.beginUpload({ ...declaration }, signal);
114
- const receipt = { uploadId, state, size: receiptSize, digest, committedOffset };
115
- id = receipt.uploadId;
116
- admitted = true;
117
- if (typeof id !== 'string' || !id.length || id.length > 256 || receipt.state !== 'open'
118
- || receipt.size !== declaration.size || receipt.digest !== declaration.digest || receipt.committedOffset !== '0') {
119
- throw new UploadError(502, 'Upload acquisition acknowledgement mismatch');
120
- }
121
- try {
122
- uploadRouteId(id);
123
- }
124
- catch {
125
- throw new UploadError(502, 'Unroutable upload acquisition acknowledgement');
126
- }
127
- unknownOutcome = false;
128
- signal?.throwIfAborted();
129
- }
130
- admitted = true;
131
- while (offset < size) {
132
- await current();
133
- const count = Number(size - offset > BigInt(options.maxChunkBytes) ? BigInt(options.maxChunkBytes) : size - offset);
134
- const data = exactRead
135
- ? await exactRead(offset, count, { signal })
136
- : await read(Number(offset), count, { signal });
137
- if (!(data instanceof Uint8Array))
138
- throw new UploadError(503, 'Invalid canonical read response');
139
- const span = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(data);
140
- if (span > count)
141
- throw new UploadError(503, 'Invalid canonical read response');
142
- // Own the fragment before calling another asynchronous provider hook.
143
- const owned = new Uint8Array(data);
144
- await current();
145
- if (!owned.length) {
146
- invalidateSource(new UploadError(409, 'Unstable source length'));
147
- }
148
- const end = offset + BigInt(owned.length);
149
- unknownOutcome = true;
150
- const { uploadId, state, size: receiptSize, digest, committedOffset } = await client.uploadChunk(id, String(offset), owned, signal);
151
- const receipt = { uploadId, state, size: receiptSize, digest, committedOffset };
152
- if (receipt.uploadId !== id || receipt.state !== 'open' || receipt.size !== declaration.size
153
- || receipt.digest !== declaration.digest || receipt.committedOffset !== String(end)) {
154
- throw new UploadError(502, 'Upload chunk acknowledgement mismatch; inspect before recovery');
155
- }
156
- unknownOutcome = false;
157
- offset = end;
158
- }
159
- await current();
160
- const extra = exactRead ? await exactRead(size, 1, { signal }) : await read(Number(size), 1, { signal });
161
- if (!(extra instanceof Uint8Array))
162
- throw new UploadError(503, 'Invalid canonical read response');
163
- const extraSpan = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(extra);
164
- if (extraSpan > 1)
165
- throw new UploadError(503, 'Invalid canonical read response');
166
- if (extraSpan)
167
- invalidateSource(new UploadError(409, 'Source exceeds declaration'));
168
- await current();
169
- unknownOutcome = true;
170
- // A transport receipt is borrowed. Validate and return the same captured
171
- // identity, including across the final asynchronous freshness check.
172
- const { size: blobSize, digest, blobId } = await client.commitUpload(id, signal);
173
- const blob = { size: blobSize, digest, blobId };
174
- if (blob.size !== declaration.size || blob.digest !== declaration.digest
175
- || typeof blob.blobId !== 'string' || !blob.blobId.length || blob.blobId.length > 256)
176
- throw new UploadError(502, 'Committed blob declaration or handle mismatch');
177
- try {
178
- uploadRouteId(blob.blobId);
179
- }
180
- catch {
181
- throw new UploadError(502, 'Unroutable committed blob acknowledgement');
182
- }
183
- unknownOutcome = false;
184
- await current();
185
- return blob;
186
- }
187
- catch (error) {
188
- // Await cooperative cleanup with a fresh request; preserve original failure.
189
- if (id && (admitted || stale) && !unknownOutcome) {
190
- try {
191
- await client.abortUpload(id);
192
- }
193
- catch (cleanup) {
194
- signal?.throwIfAborted();
195
- throw new AggregateError([error, cleanup], 'Upload capture and staging retirement failed', { cause: error });
196
- }
197
- }
198
- signal?.throwIfAborted();
199
- throw error;
200
- }
201
- }
@@ -1,62 +0,0 @@
1
- /** Opaque IDs occupy one URL segment. URL dot-segment normalization must never
2
- * redirect an authenticated transfer to another resource or lifecycle route. */
3
- export function uploadRouteId(value) {
4
- if (typeof value !== 'string' || !value.length || value.length > 256 || value === '.' || value === '..') {
5
- throw new UploadError(400, 'Invalid upload resource ID');
6
- }
7
- return encodeURIComponent(value);
8
- }
9
- export class UploadError extends Error {
10
- status;
11
- code;
12
- constructor(status, message, code) {
13
- super(message);
14
- this.status = status;
15
- this.code = code;
16
- this.name = 'UploadError';
17
- }
18
- }
19
- export function uploadInteger(value) {
20
- if (typeof value !== 'string' || !value.length || value.length > 20
21
- || (value.length > 1 && value[0] === '0') || [...value].some(c => c < '0' || c > '9')) {
22
- throw new UploadError(400, 'Invalid v1 uint64');
23
- }
24
- const n = BigInt(value);
25
- if (n > 18446744073709551615n)
26
- throw new UploadError(400, 'Invalid v1 uint64');
27
- return n;
28
- }
29
- export function validateUploadRequest(value) {
30
- if (!value || typeof value !== 'object' || Array.isArray(value)
31
- || Object.keys(value).some(k => k !== 'size' && k !== 'digest'))
32
- throw new UploadError(400, 'Invalid upload request');
33
- const v = value;
34
- uploadInteger(v.size);
35
- if (typeof v.digest !== 'string' || v.digest.length !== 64 || [...v.digest].some(c => !'0123456789abcdef'.includes(c))) {
36
- throw new UploadError(400, 'Invalid SHA-256');
37
- }
38
- }
39
- /** Semantic checks after the v1 control record's shape has been validated. */
40
- export function validateUploadState(upload, creationReplayed) {
41
- try {
42
- uploadRouteId(upload.uploadId);
43
- if (upload.blobId !== undefined)
44
- uploadRouteId(upload.blobId);
45
- }
46
- catch {
47
- throw new UploadError(502, 'Unroutable upload acknowledgement');
48
- }
49
- if (uploadInteger(upload.committedOffset) > uploadInteger(upload.size)
50
- || (creationReplayed === false && (upload.state !== 'open' || upload.committedOffset !== '0'))
51
- || (upload.state !== 'committed' && upload.blobId !== undefined)
52
- || (upload.state === 'committed' && (!upload.blobId || upload.committedOffset !== upload.size))) {
53
- throw new UploadError(502, 'Incomplete or inconsistent upload acknowledgement');
54
- }
55
- }
56
- export function digestHeader(digest) {
57
- return `sha-256=:${btoa(String.fromCharCode(...digest))}:`;
58
- }
59
- /** Read actual typed-array storage without producer-owned length properties. */
60
- export function uploadByteLength(bytes) {
61
- return Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteLength').get.call(bytes);
62
- }