just-bash-nx 3.0.1 → 3.0.3

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 (356) hide show
  1. package/dist/Bash.commands.test.d.ts +1 -0
  2. package/dist/Bash.exec-args-forwarding.test.d.ts +1 -0
  3. package/dist/Bash.exec-options.test.d.ts +1 -0
  4. package/dist/Bash.general.test.d.ts +1 -0
  5. package/dist/bin/default-init.sh +225 -0
  6. package/dist/bin/just-bash.js +227 -221
  7. package/dist/bin/shell/shell.js +2 -2
  8. package/dist/browser.bundle.test.d.ts +9 -0
  9. package/dist/bundle/browser.js +2 -2
  10. package/dist/bundle/index.cjs +2 -2
  11. package/dist/bundle/index.js +2 -2
  12. package/dist/command-position-array-expansion.test.d.ts +1 -0
  13. package/dist/commands/alias/alias.test.d.ts +1 -0
  14. package/dist/commands/awk/awk.arrays.test.d.ts +1 -0
  15. package/dist/commands/awk/awk.binary.test.d.ts +1 -0
  16. package/dist/commands/awk/awk.edge-cases.test.d.ts +1 -0
  17. package/dist/commands/awk/awk.errors.test.d.ts +1 -0
  18. package/dist/commands/awk/awk.expressions.test.d.ts +1 -0
  19. package/dist/commands/awk/awk.fields.test.d.ts +1 -0
  20. package/dist/commands/awk/awk.functions.test.d.ts +1 -0
  21. package/dist/commands/awk/awk.getline.test.d.ts +1 -0
  22. package/dist/commands/awk/awk.limits.test.d.ts +1 -0
  23. package/dist/commands/awk/awk.math.test.d.ts +1 -0
  24. package/dist/commands/awk/awk.modulo.test.d.ts +1 -0
  25. package/dist/commands/awk/awk.nextfile.test.d.ts +1 -0
  26. package/dist/commands/awk/awk.operators.test.d.ts +1 -0
  27. package/dist/commands/awk/awk.output.test.d.ts +1 -0
  28. package/dist/commands/awk/awk.parsing.test.d.ts +1 -0
  29. package/dist/commands/awk/awk.patterns.test.d.ts +1 -0
  30. package/dist/commands/awk/awk.prototype-pollution.test.d.ts +1 -0
  31. package/dist/commands/awk/awk.range.test.d.ts +1 -0
  32. package/dist/commands/awk/awk.strings.test.d.ts +1 -0
  33. package/dist/commands/awk/awk.ternary.test.d.ts +1 -0
  34. package/dist/commands/awk/awk.test.d.ts +1 -0
  35. package/dist/commands/awk/awk.utf8-stdin.test.d.ts +1 -0
  36. package/dist/commands/base64/base64.binary.test.d.ts +1 -0
  37. package/dist/commands/base64/base64.test.d.ts +1 -0
  38. package/dist/commands/base64/base64.utf8-stdin.test.d.ts +1 -0
  39. package/dist/commands/basename/basename.test.d.ts +1 -0
  40. package/dist/commands/bash/bash.test.d.ts +1 -0
  41. package/dist/commands/bash/bash.utf8-stdin.test.d.ts +1 -0
  42. package/dist/commands/cat/cat.binary.test.d.ts +1 -0
  43. package/dist/commands/cat/cat.test.d.ts +1 -0
  44. package/dist/commands/cat/cat.utf8-stdin.test.d.ts +1 -0
  45. package/dist/commands/chmod/chmod.test.d.ts +1 -0
  46. package/dist/commands/clear/clear.test.d.ts +1 -0
  47. package/dist/commands/column/column.test.d.ts +1 -0
  48. package/dist/commands/column/column.utf8-stdin.test.d.ts +1 -0
  49. package/dist/commands/comm/comm.test.d.ts +1 -0
  50. package/dist/commands/comm/comm.utf8-stdin.test.d.ts +1 -0
  51. package/dist/commands/cp/cp.binary.test.d.ts +1 -0
  52. package/dist/commands/cp/cp.test.d.ts +1 -0
  53. package/dist/commands/curl/curl.prototype-pollution.test.d.ts +1 -0
  54. package/dist/commands/curl/tests/allowlist.test.d.ts +4 -0
  55. package/dist/commands/curl/tests/auth.test.d.ts +4 -0
  56. package/dist/commands/curl/tests/availability.test.d.ts +6 -0
  57. package/dist/commands/curl/tests/binary.test.d.ts +4 -0
  58. package/dist/commands/curl/tests/cookies.test.d.ts +4 -0
  59. package/dist/commands/curl/tests/errors.test.d.ts +4 -0
  60. package/dist/commands/curl/tests/form.test.d.ts +4 -0
  61. package/dist/commands/curl/tests/methods.test.d.ts +7 -0
  62. package/dist/commands/curl/tests/options.test.d.ts +4 -0
  63. package/dist/commands/curl/tests/parse.test.d.ts +4 -0
  64. package/dist/commands/curl/tests/timeout.test.d.ts +4 -0
  65. package/dist/commands/curl/tests/upload.test.d.ts +4 -0
  66. package/dist/commands/curl/tests/verbose.test.d.ts +4 -0
  67. package/dist/commands/curl/tests/writeout.test.d.ts +4 -0
  68. package/dist/commands/cut/cut.binary.test.d.ts +1 -0
  69. package/dist/commands/cut/cut.test.d.ts +1 -0
  70. package/dist/commands/cut/cut.utf8-stdin.test.d.ts +1 -0
  71. package/dist/commands/date/date.test.d.ts +1 -0
  72. package/dist/commands/diff/diff.binary.test.d.ts +1 -0
  73. package/dist/commands/diff/diff.test.d.ts +1 -0
  74. package/dist/commands/diff/diff.utf8-stdin.test.d.ts +1 -0
  75. package/dist/commands/dirname/dirname.test.d.ts +1 -0
  76. package/dist/commands/du/du.test.d.ts +1 -0
  77. package/dist/commands/echo/echo.binary.test.d.ts +1 -0
  78. package/dist/commands/echo/echo.test.d.ts +1 -0
  79. package/dist/commands/env/env.test.d.ts +1 -0
  80. package/dist/commands/env/env.utf8-stdin.test.d.ts +1 -0
  81. package/dist/commands/expand/expand.test.d.ts +1 -0
  82. package/dist/commands/expand/expand.utf8-stdin.test.d.ts +1 -0
  83. package/dist/commands/expand/unexpand.test.d.ts +1 -0
  84. package/dist/commands/expand/unexpand.utf8-stdin.test.d.ts +1 -0
  85. package/dist/commands/file/file.test.d.ts +1 -0
  86. package/dist/commands/find/find.actions.test.d.ts +1 -0
  87. package/dist/commands/find/find.basic.test.d.ts +1 -0
  88. package/dist/commands/find/find.depth.test.d.ts +1 -0
  89. package/dist/commands/find/find.exec-command-name-quoting.test.d.ts +1 -0
  90. package/dist/commands/find/find.exec.test.d.ts +1 -0
  91. package/dist/commands/find/find.operators.test.d.ts +1 -0
  92. package/dist/commands/find/find.patterns.test.d.ts +1 -0
  93. package/dist/commands/find/find.perf.test.d.ts +1 -0
  94. package/dist/commands/find/find.perm.test.d.ts +1 -0
  95. package/dist/commands/find/find.predicates.test.d.ts +1 -0
  96. package/dist/commands/find/find.printf.test.d.ts +1 -0
  97. package/dist/commands/fold/fold.test.d.ts +1 -0
  98. package/dist/commands/fold/fold.utf8-stdin.test.d.ts +1 -0
  99. package/dist/commands/grep/grep.advanced.test.d.ts +1 -0
  100. package/dist/commands/grep/grep.basic.test.d.ts +1 -0
  101. package/dist/commands/grep/grep.binary.test.d.ts +1 -0
  102. package/dist/commands/grep/grep.exclude.test.d.ts +1 -0
  103. package/dist/commands/grep/grep.perl.test.d.ts +1 -0
  104. package/dist/commands/grep/grep.utf8-stdin.test.d.ts +1 -0
  105. package/dist/commands/gzip/gzip.binary.test.d.ts +1 -0
  106. package/dist/commands/gzip/gzip.security.test.d.ts +1 -0
  107. package/dist/commands/gzip/gzip.test.d.ts +1 -0
  108. package/dist/commands/gzip/gzip.utf8-stdin.test.d.ts +1 -0
  109. package/dist/commands/head/head.binary.test.d.ts +1 -0
  110. package/dist/commands/head/head.test.d.ts +1 -0
  111. package/dist/commands/head/head.utf8-stdin.test.d.ts +1 -0
  112. package/dist/commands/help/help.test.d.ts +1 -0
  113. package/dist/commands/history/history.test.d.ts +1 -0
  114. package/dist/commands/hostname/hostname.test.d.ts +1 -0
  115. package/dist/commands/html-to-markdown/html-to-markdown.test.d.ts +1 -0
  116. package/dist/commands/html-to-markdown/html-to-markdown.utf8-stdin.test.d.ts +1 -0
  117. package/dist/commands/join/join.test.d.ts +1 -0
  118. package/dist/commands/join/join.utf8-stdin.test.d.ts +1 -0
  119. package/dist/commands/jq/jq.arg.test.d.ts +1 -0
  120. package/dist/commands/jq/jq.basic.test.d.ts +1 -0
  121. package/dist/commands/jq/jq.construction.test.d.ts +1 -0
  122. package/dist/commands/jq/jq.dot-adjacency.test.d.ts +1 -0
  123. package/dist/commands/jq/jq.filters.test.d.ts +1 -0
  124. package/dist/commands/jq/jq.functions.test.d.ts +1 -0
  125. package/dist/commands/jq/jq.keyword-field-access.test.d.ts +1 -0
  126. package/dist/commands/jq/jq.limits.test.d.ts +1 -0
  127. package/dist/commands/jq/jq.operators.test.d.ts +1 -0
  128. package/dist/commands/jq/jq.permissive-control-chars.test.d.ts +1 -0
  129. package/dist/commands/jq/jq.prototype-pollution.test.d.ts +1 -0
  130. package/dist/commands/jq/jq.raw-input.test.d.ts +1 -0
  131. package/dist/commands/jq/jq.strings.test.d.ts +1 -0
  132. package/dist/commands/jq/jq.test.d.ts +1 -0
  133. package/dist/commands/jq/jq.utf8-stdin.test.d.ts +1 -0
  134. package/dist/commands/js-exec/js-exec.esm.test.d.ts +1 -0
  135. package/dist/commands/js-exec/js-exec.exec.test.d.ts +1 -0
  136. package/dist/commands/js-exec/js-exec.fs.test.d.ts +1 -0
  137. package/dist/commands/js-exec/js-exec.http.test.d.ts +1 -0
  138. package/dist/commands/js-exec/js-exec.invoke-tool.test.d.ts +9 -0
  139. package/dist/commands/js-exec/js-exec.module-resolution-security.test.d.ts +1 -0
  140. package/dist/commands/js-exec/js-exec.node-compat.test.d.ts +1 -0
  141. package/dist/commands/js-exec/js-exec.security.test.d.ts +1 -0
  142. package/dist/commands/js-exec/js-exec.test.d.ts +1 -0
  143. package/dist/commands/js-exec/js-exec.ts-strip.test.d.ts +1 -0
  144. package/dist/commands/js-exec/js-exec.utf8-stdin.test.d.ts +1 -0
  145. package/dist/commands/ln/ln.error-forwarding.test.d.ts +1 -0
  146. package/dist/commands/ln/ln.test.d.ts +1 -0
  147. package/dist/commands/ls/ls.human.test.d.ts +1 -0
  148. package/dist/commands/ls/ls.test.d.ts +1 -0
  149. package/dist/commands/md5sum/checksum.binary.test.d.ts +1 -0
  150. package/dist/commands/md5sum/md5sum.test.d.ts +1 -0
  151. package/dist/commands/md5sum/md5sum.utf8-stdin.test.d.ts +1 -0
  152. package/dist/commands/mkdir/mkdir.test.d.ts +1 -0
  153. package/dist/commands/mv/mv.test.d.ts +1 -0
  154. package/dist/commands/nl/nl.test.d.ts +1 -0
  155. package/dist/commands/nl/nl.utf8-stdin.test.d.ts +1 -0
  156. package/dist/commands/od/od.binary.test.d.ts +1 -0
  157. package/dist/commands/od/od.test.d.ts +1 -0
  158. package/dist/commands/od/od.utf8-stdin.test.d.ts +1 -0
  159. package/dist/commands/paste/paste.test.d.ts +1 -0
  160. package/dist/commands/paste/paste.utf8-stdin.test.d.ts +1 -0
  161. package/dist/commands/printf/escapes.test.d.ts +1 -0
  162. package/dist/commands/printf/printf.binary.test.d.ts +1 -0
  163. package/dist/commands/printf/printf.test.d.ts +1 -0
  164. package/dist/commands/pwd/pwd.test.d.ts +1 -0
  165. package/dist/commands/python3/fs-bridge-handler.output-limit.test.d.ts +1 -0
  166. package/dist/commands/python3/python3.advanced.test.d.ts +1 -0
  167. package/dist/commands/python3/python3.env.test.d.ts +1 -0
  168. package/dist/commands/python3/python3.files.test.d.ts +1 -0
  169. package/dist/commands/python3/python3.http.test.d.ts +1 -0
  170. package/dist/commands/python3/python3.oop.test.d.ts +1 -0
  171. package/dist/commands/python3/python3.optin.test.d.ts +1 -0
  172. package/dist/commands/python3/python3.queue-desync.runtime.test.d.ts +1 -0
  173. package/dist/commands/python3/python3.queue-timeout-exploit.test.d.ts +1 -0
  174. package/dist/commands/python3/python3.security.test.d.ts +1 -0
  175. package/dist/commands/python3/python3.stdlib.test.d.ts +1 -0
  176. package/dist/commands/python3/python3.test.d.ts +1 -0
  177. package/dist/commands/python3/python3.utf8-stdin.test.d.ts +1 -0
  178. package/dist/commands/python3/python3.worker-protocol-abuse.test.d.ts +1 -0
  179. package/dist/commands/query-engine/safe-object.sanitize-parsed-data.test.d.ts +1 -0
  180. package/dist/commands/query-engine/safe-object.test.d.ts +1 -0
  181. package/dist/commands/readlink/readlink.test.d.ts +1 -0
  182. package/dist/commands/registry.test.d.ts +1 -0
  183. package/dist/commands/rev/rev.test.d.ts +1 -0
  184. package/dist/commands/rev/rev.utf8-stdin.test.d.ts +1 -0
  185. package/dist/commands/rg/gitignore.test.d.ts +1 -0
  186. package/dist/commands/rg/imported-tests/binary.test.d.ts +1 -0
  187. package/dist/commands/rg/imported-tests/feature.test.d.ts +1 -0
  188. package/dist/commands/rg/imported-tests/json.test.d.ts +11 -0
  189. package/dist/commands/rg/imported-tests/misc.test.d.ts +1 -0
  190. package/dist/commands/rg/imported-tests/multiline.test.d.ts +10 -0
  191. package/dist/commands/rg/imported-tests/regression.test.d.ts +1 -0
  192. package/dist/commands/rg/rg-parser-threads.test.d.ts +1 -0
  193. package/dist/commands/rg/rg.basic.test.d.ts +1 -0
  194. package/dist/commands/rg/rg.edge-cases.test.d.ts +1 -0
  195. package/dist/commands/rg/rg.filtering.test.d.ts +1 -0
  196. package/dist/commands/rg/rg.flags.test.d.ts +6 -0
  197. package/dist/commands/rg/rg.max-count.test.d.ts +1 -0
  198. package/dist/commands/rg/rg.no-filename.test.d.ts +1 -0
  199. package/dist/commands/rg/rg.output.test.d.ts +1 -0
  200. package/dist/commands/rg/rg.patterns.test.d.ts +1 -0
  201. package/dist/commands/rg/rg.ripgrep-compat.test.d.ts +1 -0
  202. package/dist/commands/rg/rg.utf8-stdin.test.d.ts +1 -0
  203. package/dist/commands/rm/rm.test.d.ts +1 -0
  204. package/dist/commands/search-engine/regex.test.d.ts +1 -0
  205. package/dist/commands/sed/sed.advanced.test.d.ts +1 -0
  206. package/dist/commands/sed/sed.binary.test.d.ts +1 -0
  207. package/dist/commands/sed/sed.commands.test.d.ts +1 -0
  208. package/dist/commands/sed/sed.errors.test.d.ts +1 -0
  209. package/dist/commands/sed/sed.limits.test.d.ts +1 -0
  210. package/dist/commands/sed/sed.regex.test.d.ts +1 -0
  211. package/dist/commands/sed/sed.security.test.d.ts +6 -0
  212. package/dist/commands/sed/sed.test.d.ts +1 -0
  213. package/dist/commands/sed/sed.utf8-stdin.test.d.ts +1 -0
  214. package/dist/commands/seq/seq.test.d.ts +1 -0
  215. package/dist/commands/sleep/sleep.test.d.ts +1 -0
  216. package/dist/commands/sort/sort.advanced.test.d.ts +1 -0
  217. package/dist/commands/sort/sort.binary.test.d.ts +1 -0
  218. package/dist/commands/sort/sort.test.d.ts +1 -0
  219. package/dist/commands/sort/sort.utf8-stdin.test.d.ts +1 -0
  220. package/dist/commands/split/split.test.d.ts +1 -0
  221. package/dist/commands/split/split.utf8-stdin.test.d.ts +1 -0
  222. package/dist/commands/sqlite3/sqlite3.errors.test.d.ts +1 -0
  223. package/dist/commands/sqlite3/sqlite3.fixtures.test.d.ts +1 -0
  224. package/dist/commands/sqlite3/sqlite3.formatters.test.d.ts +1 -0
  225. package/dist/commands/sqlite3/sqlite3.options.test.d.ts +1 -0
  226. package/dist/commands/sqlite3/sqlite3.output-modes.test.d.ts +1 -0
  227. package/dist/commands/sqlite3/sqlite3.parsing.test.d.ts +1 -0
  228. package/dist/commands/sqlite3/sqlite3.test.d.ts +1 -0
  229. package/dist/commands/sqlite3/sqlite3.utf8-stdin.test.d.ts +1 -0
  230. package/dist/commands/sqlite3/sqlite3.worker-protocol-abuse.test.d.ts +1 -0
  231. package/dist/commands/sqlite3/sqlite3.worker-resolution.test.d.ts +11 -0
  232. package/dist/commands/sqlite3/sqlite3.write-ops.test.d.ts +1 -0
  233. package/dist/commands/sqlite3/sqlite3.writeback-edge-cases.test.d.ts +1 -0
  234. package/dist/commands/sqlite3/worker.js +227 -1700
  235. package/dist/commands/stat/stat.test.d.ts +1 -0
  236. package/dist/commands/strings/strings.binary.test.d.ts +1 -0
  237. package/dist/commands/strings/strings.test.d.ts +1 -0
  238. package/dist/commands/strings/strings.utf8-stdin.test.d.ts +1 -0
  239. package/dist/commands/tac/tac.test.d.ts +1 -0
  240. package/dist/commands/tail/tail.binary.test.d.ts +1 -0
  241. package/dist/commands/tail/tail.test.d.ts +1 -0
  242. package/dist/commands/tar/bzip2-compress.test.d.ts +1 -0
  243. package/dist/commands/tar/tar.binary.test.d.ts +1 -0
  244. package/dist/commands/tar/tar.bundle.test.d.ts +1 -0
  245. package/dist/commands/tar/tar.security.test.d.ts +1 -0
  246. package/dist/commands/tar/tar.test.d.ts +1 -0
  247. package/dist/commands/tar/tar.utf8-stdin.test.d.ts +1 -0
  248. package/dist/commands/tee/tee.binary.test.d.ts +1 -0
  249. package/dist/commands/tee/tee.test.d.ts +1 -0
  250. package/dist/commands/tee/tee.utf8-stdin.test.d.ts +1 -0
  251. package/dist/commands/test/test.test.d.ts +1 -0
  252. package/dist/commands/time/time.utf8-stdin.test.d.ts +1 -0
  253. package/dist/commands/timeout/timeout.command-name-quoting.test.d.ts +1 -0
  254. package/dist/commands/timeout/timeout.nested-cancellation.test.d.ts +1 -0
  255. package/dist/commands/timeout/timeout.test.d.ts +1 -0
  256. package/dist/commands/timeout/timeout.utf8-stdin.test.d.ts +1 -0
  257. package/dist/commands/touch/touch.test.d.ts +1 -0
  258. package/dist/commands/tr/tr.binary.test.d.ts +1 -0
  259. package/dist/commands/tr/tr.complement.test.d.ts +1 -0
  260. package/dist/commands/tr/tr.test.d.ts +1 -0
  261. package/dist/commands/tr/tr.utf8-stdin.test.d.ts +1 -0
  262. package/dist/commands/tree/tree.test.d.ts +1 -0
  263. package/dist/commands/true/true.test.d.ts +1 -0
  264. package/dist/commands/uniq/uniq.binary.test.d.ts +1 -0
  265. package/dist/commands/uniq/uniq.test.d.ts +1 -0
  266. package/dist/commands/uniq/uniq.utf8-stdin.test.d.ts +1 -0
  267. package/dist/commands/utf8-across-commands.test.d.ts +1 -0
  268. package/dist/commands/utf8-bytestring.test.d.ts +1 -0
  269. package/dist/commands/wc/wc.binary.test.d.ts +1 -0
  270. package/dist/commands/wc/wc.test.d.ts +1 -0
  271. package/dist/commands/wc/wc.utf8-stdin.test.d.ts +1 -0
  272. package/dist/commands/which/which.test.d.ts +1 -0
  273. package/dist/commands/worker-bridge/bridge-handler.test.d.ts +1 -0
  274. package/dist/commands/xan/moonblade-parser.test.d.ts +1 -0
  275. package/dist/commands/xan/xan.agg.test.d.ts +5 -0
  276. package/dist/commands/xan/xan.basic.test.d.ts +5 -0
  277. package/dist/commands/xan/xan.columns.test.d.ts +5 -0
  278. package/dist/commands/xan/xan.data.test.d.ts +5 -0
  279. package/dist/commands/xan/xan.filter-sort.test.d.ts +5 -0
  280. package/dist/commands/xan/xan.frequency.test.d.ts +5 -0
  281. package/dist/commands/xan/xan.groupby.test.d.ts +5 -0
  282. package/dist/commands/xan/xan.map.test.d.ts +5 -0
  283. package/dist/commands/xan/xan.multifile.test.d.ts +5 -0
  284. package/dist/commands/xan/xan.prototype-pollution.test.d.ts +1 -0
  285. package/dist/commands/xan/xan.reshape.test.d.ts +5 -0
  286. package/dist/commands/xan/xan.select-advanced.test.d.ts +5 -0
  287. package/dist/commands/xan/xan.transform.test.d.ts +5 -0
  288. package/dist/commands/xan/xan.utf8-stdin.test.d.ts +1 -0
  289. package/dist/commands/xargs/xargs.command-name-quoting.test.d.ts +1 -0
  290. package/dist/commands/xargs/xargs.test.d.ts +1 -0
  291. package/dist/commands/xargs/xargs.utf8-stdin.test.d.ts +1 -0
  292. package/dist/commands/yq/yq.env.test.d.ts +1 -0
  293. package/dist/commands/yq/yq.fixtures.test.d.ts +10 -0
  294. package/dist/commands/yq/yq.format-strings.test.d.ts +1 -0
  295. package/dist/commands/yq/yq.navigation.test.d.ts +1 -0
  296. package/dist/commands/yq/yq.prototype-pollution.test.d.ts +1 -0
  297. package/dist/commands/yq/yq.test.d.ts +1 -0
  298. package/dist/commands/yq/yq.utf8-stdin.test.d.ts +1 -0
  299. package/dist/commands/yq/yq.yaml-security.test.d.ts +11 -0
  300. package/dist/custom-commands.test.d.ts +1 -0
  301. package/dist/encoding-pipeline.test.d.ts +1 -0
  302. package/dist/encoding.fs-fallback.test.d.ts +1 -0
  303. package/dist/fs/cross-fs-no-symlinks.test.d.ts +8 -0
  304. package/dist/fs/cross-fs-security.test.d.ts +12 -0
  305. package/dist/fs/in-memory-fs/in-memory-fs.security.test.d.ts +8 -0
  306. package/dist/fs/in-memory-fs/in-memory-fs.test.d.ts +1 -0
  307. package/dist/fs/mountable-fs/mountable-fs.security.test.d.ts +8 -0
  308. package/dist/fs/mountable-fs/mountable-fs.test.d.ts +1 -0
  309. package/dist/fs/overlay-fs/overlay-fs.e2e.test.d.ts +7 -0
  310. package/dist/fs/overlay-fs/overlay-fs.security.test.d.ts +7 -0
  311. package/dist/fs/overlay-fs/overlay-fs.test.d.ts +1 -0
  312. package/dist/fs/read-write-fs/read-write-fs.piping.test.d.ts +1 -0
  313. package/dist/fs/read-write-fs/read-write-fs.security.test.d.ts +11 -0
  314. package/dist/fs/read-write-fs/read-write-fs.test.d.ts +1 -0
  315. package/dist/fs/real-fs-utils.sanitize.test.d.ts +1 -0
  316. package/dist/fs/real-fs-utils.test.d.ts +7 -0
  317. package/dist/fs/sanitize-error.test.d.ts +1 -0
  318. package/dist/interpreter/arithmetic.test.d.ts +1 -0
  319. package/dist/interpreter/assoc-array.test.d.ts +1 -0
  320. package/dist/interpreter/builtins/break.test.d.ts +1 -0
  321. package/dist/interpreter/builtins/cd.test.d.ts +1 -0
  322. package/dist/interpreter/builtins/complete.test.d.ts +1 -0
  323. package/dist/interpreter/builtins/compopt.test.d.ts +1 -0
  324. package/dist/interpreter/builtins/continue.test.d.ts +1 -0
  325. package/dist/interpreter/builtins/eval.test.d.ts +1 -0
  326. package/dist/interpreter/builtins/exit.test.d.ts +1 -0
  327. package/dist/interpreter/builtins/export.test.d.ts +1 -0
  328. package/dist/interpreter/builtins/local.test.d.ts +1 -0
  329. package/dist/interpreter/builtins/posix-fatal.test.d.ts +1 -0
  330. package/dist/interpreter/builtins/read.test.d.ts +1 -0
  331. package/dist/interpreter/builtins/return.test.d.ts +1 -0
  332. package/dist/interpreter/builtins/set.test.d.ts +1 -0
  333. package/dist/interpreter/builtins/shift.test.d.ts +1 -0
  334. package/dist/interpreter/builtins/source.test.d.ts +1 -0
  335. package/dist/interpreter/builtins/unset.test.d.ts +1 -0
  336. package/dist/interpreter/control-flow.test.d.ts +1 -0
  337. package/dist/interpreter/expansion/prompt.test.d.ts +1 -0
  338. package/dist/interpreter/helpers/xtrace.test.d.ts +1 -0
  339. package/dist/interpreter/pipeline-execution.test.d.ts +1 -0
  340. package/dist/interpreter/prototype-pollution.test.d.ts +1 -0
  341. package/dist/interpreter/redirections.binary.test.d.ts +1 -0
  342. package/dist/network/allow-list/bypass.test.d.ts +7 -0
  343. package/dist/network/allow-list/dns-rebinding-integration.test.d.ts +8 -0
  344. package/dist/network/allow-list/dns-rebinding.test.d.ts +7 -0
  345. package/dist/network/allow-list/e2e.test.d.ts +7 -0
  346. package/dist/network/allow-list/firewall.test.d.ts +7 -0
  347. package/dist/network/allow-list/mock.test.d.ts +5 -0
  348. package/dist/network/allow-list/pen-test-pocs.test.d.ts +1 -0
  349. package/dist/network/allow-list/unit.test.d.ts +1 -0
  350. package/dist/network/dns-pin-fetch.test.d.ts +1 -0
  351. package/dist/network/dns-pin.test.d.ts +1 -0
  352. package/dist/readme.test.d.ts +9 -0
  353. package/dist/sandbox/Sandbox.security.test.d.ts +1 -0
  354. package/dist/sandbox/Sandbox.test.d.ts +1 -0
  355. package/dist/security-limits.test.d.ts +4 -0
  356. package/package.json +2 -2
@@ -693,8 +693,8 @@ ${t}
693
693
  esac${Ce(e.redirections)}`}function el(e){let t=e.patterns.map(oe).join(" | "),s=ge(e.body);return s?`${t})
694
694
  ${s}
695
695
  ${e.terminator}`:`${t})
696
- ${e.terminator}`}function tl(e){return`(${ge(e.body)})${Ce(e.redirections)}`}function sl(e){return`{ ${ge(e.body)}; }${Ce(e.redirections)}`}function nl(e){return`((${H(e.expression.expression)}))${Ce(e.redirections)}`}function rl(e){return`[[ ${Xe(e.expression)} ]]${Ce(e.redirections)}`}function il(e){let t=Ri(e.body);return`${e.name}() ${t}${Ce(e.redirections)}`}function H(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${H(e.left)} ${e.operator} ${H(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${H(e.operand)}`:`${H(e.operand)}${e.operator}`;case"ArithTernary":return`${H(e.condition)} ? ${H(e.consequent)} : ${H(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${H(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${H(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${H(e.target)}[${H(e.subscript)}]`:H(e.target)} ${e.operator} ${H(e.value)}`;case"ArithDynamicElement":return`${H(e.nameExpr)}[${H(e.subscript)}]`;case"ArithGroup":return`(${H(e.expression)})`;case"ArithNested":return`$((${H(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${H(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(H).join("");case"ArithDoubleSubscript":return`${e.array}[${H(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Xe(e){switch(e.type){case"CondBinary":return`${oe(e.left)} ${e.operator} ${oe(e.right)}`;case"CondUnary":return`${e.operator} ${oe(e.operand)}`;case"CondNot":return`! ${Xe(e.operand)}`;case"CondAnd":return`${Xe(e.left)} && ${Xe(e.right)}`;case"CondOr":return`${Xe(e.left)} || ${Xe(e.right)}`;case"CondGroup":return`( ${Xe(e.expression)} )`;case"CondWord":return oe(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var ps=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let s=t.fs??new wt(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["JUST_BASH","1"],["IFS",`
697
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Ai({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Pn(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","JUST_BASH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Ns(this.state.options)),this.state.env.set("BASHOPTS",Os(this.state.shoptOptions)),rr(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof wt)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let a of Yn(t.commands))this.registerCommand(a);if(t.fetch||t.network)for(let a of Qn())this.registerCommand(a);if(t.python)for(let a of Jn())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let a of er())this.registerCommand(a);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let a of t.customCommands)tr(a)?this.registerCommand(sr(a)):this.registerCommand({...a,trusted:a.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
696
+ ${e.terminator}`}function tl(e){return`(${ge(e.body)})${Ce(e.redirections)}`}function sl(e){return`{ ${ge(e.body)}; }${Ce(e.redirections)}`}function nl(e){return`((${H(e.expression.expression)}))${Ce(e.redirections)}`}function rl(e){return`[[ ${Xe(e.expression)} ]]${Ce(e.redirections)}`}function il(e){let t=Ri(e.body);return`${e.name}() ${t}${Ce(e.redirections)}`}function H(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${H(e.left)} ${e.operator} ${H(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${H(e.operand)}`:`${H(e.operand)}${e.operator}`;case"ArithTernary":return`${H(e.condition)} ? ${H(e.consequent)} : ${H(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${H(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${H(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${H(e.target)}[${H(e.subscript)}]`:H(e.target)} ${e.operator} ${H(e.value)}`;case"ArithDynamicElement":return`${H(e.nameExpr)}[${H(e.subscript)}]`;case"ArithGroup":return`(${H(e.expression)})`;case"ArithNested":return`$((${H(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${H(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(H).join("");case"ArithDoubleSubscript":return`${e.array}[${H(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Xe(e){switch(e.type){case"CondBinary":return`${oe(e.left)} ${e.operator} ${oe(e.right)}`;case"CondUnary":return`${e.operator} ${oe(e.operand)}`;case"CondNot":return`! ${Xe(e.operand)}`;case"CondAnd":return`${Xe(e.left)} && ${Xe(e.right)}`;case"CondOr":return`${Xe(e.left)} || ${Xe(e.right)}`;case"CondGroup":return`( ${Xe(e.expression)} )`;case"CondWord":return oe(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var ps=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let s=t.fs??new wt(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
697
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Ai({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Pn(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Ns(this.state.options)),this.state.env.set("BASHOPTS",Os(this.state.shoptOptions)),rr(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof wt)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let a of Yn(t.commands))this.registerCommand(a);if(t.fetch||t.network)for(let a of Qn())this.registerCommand(a);if(t.python)for(let a of Jn())this.registerCommand(a);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let a of er())this.registerCommand(a);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let a of t.customCommands)tr(a)?this.registerCommand(sr(a)):this.registerCommand({...a,trusted:a.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
698
698
  # Built-in command: ${t.name}
699
699
  `;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=zi(t.stdout),t.stderr=zi(t.stderr),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
700
700
  `,exitCode:1,env:me(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:me(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let a=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))a.set(f,d);r!==void 0&&a.set("PWD",r);let o={...this.state,env:a,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:ol(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=Wi(t));let c=this.defenseInDepthConfig?ve.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=Ee(l,{maxHeredocSize:this.limits.maxHeredocSize}),h;if(this.transformPlugins.length>0){let y=Object.create(null);for(let v of this.transformPlugins){let b=v.transform({ast:d,metadata:y});d=b.ast,b.metadata&&(y=gs(y,b.metadata))}h=y}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},w=await new _t(m,o).executeScript(d);return h&&(w.metadata=h),this.logResult(w)};return u?await u.run(f):await f()}catch(f){if(f instanceof B)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof be)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof Ue)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:me(this.state.env,s?.env)});if(f instanceof Tt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:me(this.state.env,s?.env)});if(f instanceof Y)return this.logResult({stdout:f.stdout,stderr:Te(f.stderr),exitCode:Y.EXIT_CODE,env:me(this.state.env,s?.env)});if(f instanceof Je)return this.logResult({stdout:"",stderr:`bash: security violation: ${Te(f.message)}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Browser bundle safety tests
3
+ *
4
+ * These tests verify that the browser bundle:
5
+ * 1. Does not contain Node.js-only imports
6
+ * 2. Does not include browser-excluded commands like yq/xan/sqlite3
7
+ * 3. Shows helpful error messages for browser-excluded commands
8
+ */
9
+ export {};
@@ -1488,8 +1488,8 @@ ${t}
1488
1488
  esac${Pn(e.redirections)}`}function Wv(e){let t=e.patterns.map(Wt).join(" | "),n=bn(e.body);return n?`${t})
1489
1489
  ${n}
1490
1490
  ${e.terminator}`:`${t})
1491
- ${e.terminator}`}function zv(e){return`(${bn(e.body)})${Pn(e.redirections)}`}function Hv(e){return`{ ${bn(e.body)}; }${Pn(e.redirections)}`}function jv(e){return`((${qe(e.expression.expression)}))${Pn(e.redirections)}`}function Gv(e){return`[[ ${Yr(e.expression)} ]]${Pn(e.redirections)}`}function Vv(e){let t=D7(e.body);return`${e.name}() ${t}${Pn(e.redirections)}`}function qe(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${qe(e.left)} ${e.operator} ${qe(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${qe(e.operand)}`:`${qe(e.operand)}${e.operator}`;case"ArithTernary":return`${qe(e.condition)} ? ${qe(e.consequent)} : ${qe(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${qe(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${qe(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${qe(e.target)}[${qe(e.subscript)}]`:qe(e.target)} ${e.operator} ${qe(e.value)}`;case"ArithDynamicElement":return`${qe(e.nameExpr)}[${qe(e.subscript)}]`;case"ArithGroup":return`(${qe(e.expression)})`;case"ArithNested":return`$((${qe(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${qe(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(qe).join("");case"ArithDoubleSubscript":return`${e.array}[${qe(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Yr(e){switch(e.type){case"CondBinary":return`${Wt(e.left)} ${e.operator} ${Wt(e.right)}`;case"CondUnary":return`${e.operator} ${Wt(e.operand)}`;case"CondNot":return`! ${Yr(e.operand)}`;case"CondAnd":return`${Yr(e.left)} && ${Yr(e.right)}`;case"CondOr":return`${Yr(e.left)} || ${Yr(e.right)}`;case"CondGroup":return`( ${Yr(e.expression)} )`;case"CondWord":return Wt(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var Rf=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let n=t.fs??new rr(t.files);this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["JUST_BASH","1"],["IFS",`
1492
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=E7({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Of(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:s,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","JUST_BASH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",zc(this.state.options)),this.state.env.set("BASHOPTS",Hc(this.state.shoptOptions)),F2(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof rr)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of k2(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of N2())this.registerCommand(o);if(t.python)for(let o of I2())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of $2())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)T2(o)?this.registerCommand(O2(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let n=this.fs;if(typeof n.writeFileSync=="function"){let r=`#!/bin/bash
1491
+ ${e.terminator}`}function zv(e){return`(${bn(e.body)})${Pn(e.redirections)}`}function Hv(e){return`{ ${bn(e.body)}; }${Pn(e.redirections)}`}function jv(e){return`((${qe(e.expression.expression)}))${Pn(e.redirections)}`}function Gv(e){return`[[ ${Yr(e.expression)} ]]${Pn(e.redirections)}`}function Vv(e){let t=D7(e.body);return`${e.name}() ${t}${Pn(e.redirections)}`}function qe(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${qe(e.left)} ${e.operator} ${qe(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${qe(e.operand)}`:`${qe(e.operand)}${e.operator}`;case"ArithTernary":return`${qe(e.condition)} ? ${qe(e.consequent)} : ${qe(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${qe(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${qe(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${qe(e.target)}[${qe(e.subscript)}]`:qe(e.target)} ${e.operator} ${qe(e.value)}`;case"ArithDynamicElement":return`${qe(e.nameExpr)}[${qe(e.subscript)}]`;case"ArithGroup":return`(${qe(e.expression)})`;case"ArithNested":return`$((${qe(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${qe(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(qe).join("");case"ArithDoubleSubscript":return`${e.array}[${qe(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Yr(e){switch(e.type){case"CondBinary":return`${Wt(e.left)} ${e.operator} ${Wt(e.right)}`;case"CondUnary":return`${e.operator} ${Wt(e.operand)}`;case"CondNot":return`! ${Yr(e.operand)}`;case"CondAnd":return`${Yr(e.left)} && ${Yr(e.right)}`;case"CondOr":return`${Yr(e.left)} || ${Yr(e.right)}`;case"CondGroup":return`( ${Yr(e.expression)} )`;case"CondWord":return Wt(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var Rf=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let n=t.fs??new rr(t.files);this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
1492
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=E7({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Of(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:s,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",zc(this.state.options)),this.state.env.set("BASHOPTS",Hc(this.state.shoptOptions)),F2(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof rr)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of k2(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of N2())this.registerCommand(o);if(t.python)for(let o of I2())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of $2())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)T2(o)?this.registerCommand(O2(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let n=this.fs;if(typeof n.writeFileSync=="function"){let r=`#!/bin/bash
1493
1493
  # Built-in command: ${t.name}
1494
1494
  `;try{n.writeFileSync(`/bin/${t.name}`,r)}catch{}try{n.writeFileSync(`/usr/bin/${t.name}`,r)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=U7(t.stdout),t.stderr=U7(t.stderr),t}async exec(t,n){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
1495
1495
  `,exitCode:1,env:pn(this.state.env,n?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:pn(this.state.env,n?.env)};this.logger?.info("exec",{command:t});let r=n?.cwd??this.state.cwd,s,i=r;if(n?.cwd)if(n.env&&"PWD"in n.env)s=n.env.PWD;else if(n?.env&&!("PWD"in n.env))try{s=await this.fs.realpath(r),i=s}catch{s=r}else s=r;let o=n?.replaceEnv?new Map:new Map(this.state.env);if(n?.env)for(let[f,p]of Object.entries(n.env))o.set(f,p);s!==void 0&&o.set("PWD",s);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Zv(n?.stdin,n?.stdinKind),signal:n?.signal,extraArgs:n?.args},l=t;n?.rawScript||(l=M7(t));let c=this.defenseInDepthConfig?Et.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let p=Nn(l,{maxHeredocSize:this.limits.maxHeredocSize}),h;if(this.transformPlugins.length>0){let w=Object.create(null);for(let b of this.transformPlugins){let x=b.transform({ast:p,metadata:w});p=x.ast,x.metadata&&(w=Dr(w,x.metadata))}h=w}let d={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},y=await new Di(d,a).executeScript(p);return h&&(y.metadata=h),this.logResult(y)};return u?await u.run(f):await f()}catch(f){if(f instanceof we)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:pn(this.state.env,n?.env)});if(f instanceof nn)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:pn(this.state.env,n?.env)});if(f instanceof Le)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:pn(this.state.env,n?.env)});if(f instanceof is)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:pn(this.state.env,n?.env)});if(f instanceof X)return this.logResult({stdout:f.stdout,stderr:He(f.stderr),exitCode:X.EXIT_CODE,env:pn(this.state.env,n?.env)});if(f instanceof de)return this.logResult({stdout:"",stderr:`bash: security violation: ${He(f.message)}
@@ -2102,8 +2102,8 @@ ${e}
2102
2102
  esac${es(t.redirections)}`}function RG(t){let e=t.patterns.map(fn).join(" | "),n=_r(t.body);return n?`${e})
2103
2103
  ${n}
2104
2104
  ${t.terminator}`:`${e})
2105
- ${t.terminator}`}function $G(t){return`(${_r(t.body)})${es(t.redirections)}`}function FG(t){return`{ ${_r(t.body)}; }${es(t.redirections)}`}function _G(t){return`((${At(t.expression.expression)}))${es(t.redirections)}`}function DG(t){return`[[ ${uo(t.expression)} ]]${es(t.redirections)}`}function LG(t){let e=fT(t.body);return`${t.name}() ${e}${es(t.redirections)}`}function At(t){switch(t.type){case"ArithNumber":return String(t.value);case"ArithVariable":return t.hasDollarPrefix?`$${t.name}`:t.name;case"ArithSpecialVar":return`$${t.name}`;case"ArithBinary":return`${At(t.left)} ${t.operator} ${At(t.right)}`;case"ArithUnary":return t.prefix?`${t.operator}${At(t.operand)}`:`${At(t.operand)}${t.operator}`;case"ArithTernary":return`${At(t.condition)} ? ${At(t.consequent)} : ${At(t.alternate)}`;case"ArithAssignment":return`${t.subscript?`${t.variable}[${At(t.subscript)}]`:t.stringKey!==void 0?`${t.variable}[${t.stringKey}]`:t.variable} ${t.operator} ${At(t.value)}`;case"ArithDynamicAssignment":return`${t.subscript?`${At(t.target)}[${At(t.subscript)}]`:At(t.target)} ${t.operator} ${At(t.value)}`;case"ArithDynamicElement":return`${At(t.nameExpr)}[${At(t.subscript)}]`;case"ArithGroup":return`(${At(t.expression)})`;case"ArithNested":return`$((${At(t.expression)}))`;case"ArithCommandSubst":return`$(${t.command})`;case"ArithBracedExpansion":return`\${${t.content}}`;case"ArithArrayElement":return t.stringKey!==void 0?`${t.array}[${t.stringKey}]`:t.index?`${t.array}[${At(t.index)}]`:t.array;case"ArithDynamicBase":return`\${${t.baseExpr}}#${t.value}`;case"ArithDynamicNumber":return`\${${t.prefix}}${t.suffix}`;case"ArithConcat":return t.parts.map(At).join("");case"ArithDoubleSubscript":return`${t.array}[${At(t.index)}]`;case"ArithNumberSubscript":return`${t.number}[${t.errorToken}]`;case"ArithSyntaxError":return t.errorToken;case"ArithSingleQuote":return`'${t.content}'`;default:{let e=t;throw new Error(`Unsupported arithmetic expression type: ${e.type}`)}}}function uo(t){switch(t.type){case"CondBinary":return`${fn(t.left)} ${t.operator} ${fn(t.right)}`;case"CondUnary":return`${t.operator} ${fn(t.operand)}`;case"CondNot":return`! ${uo(t.operand)}`;case"CondAnd":return`${uo(t.left)} && ${uo(t.right)}`;case"CondOr":return`${uo(t.left)} || ${uo(t.right)}`;case"CondGroup":return`( ${uo(t.expression)} )`;case"CondWord":return fn(t.word);default:{let e=t;throw new Error(`Unsupported conditional expression type: ${e.type}`)}}}var Oa=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(e={}){let n=e.fs??new bs(e.files);this.fs=n,this.useDefaultLayout=!e.cwd&&!e.files;let r=e.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["JUST_BASH","1"],["IFS",`
2106
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(e.env??{})]);if(this.limits=eT({...e.executionLimits,...e.maxCallDepth!==void 0&&{maxCallDepth:e.maxCallDepth},...e.maxCommandCount!==void 0&&{maxCommandCount:e.maxCommandCount},...e.maxLoopIterations!==void 0&&{maxLoopIterations:e.maxLoopIterations}}),e.fetch?this.secureFetch=e.fetch:e.network&&(this.secureFetch=Xw(e.network)),this.sleepFn=e.sleep,this.traceFn=e.trace,this.logger=e.logger,this.defenseInDepthConfig=e.defenseInDepth??!0,this.coverageWriter=e.coverage,this.state={env:s,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:e.processInfo?.pid??1,virtualPpid:e.processInfo?.ppid??0,virtualUid:e.processInfo?.uid??1e3,virtualGid:e.processInfo?.gid??1e3,bashPid:e.processInfo?.pid??1,nextVirtualPid:(e.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","JUST_BASH","PWD","OLDPWD",...Object.keys(e.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",f6(this.state.options)),this.state.env.set("BASHOPTS",h6(this.state.shoptOptions)),mv(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof bs)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of sv(e.commands))this.registerCommand(o);if(e.fetch||e.network)for(let o of iv())this.registerCommand(o);if(e.python)for(let o of av())this.registerCommand(o);let i=typeof e.javascript=="object"?e.javascript:Object.create(null);if(e.javascript||i.invokeTool){for(let o of cv())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(e.customCommands)for(let o of e.customCommands)uv(o)?this.registerCommand(hv(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(e){this.commands.set(e.name,e);let n=this.fs;if(typeof n.writeFileSync=="function"){let r=`#!/bin/bash
2105
+ ${t.terminator}`}function $G(t){return`(${_r(t.body)})${es(t.redirections)}`}function FG(t){return`{ ${_r(t.body)}; }${es(t.redirections)}`}function _G(t){return`((${At(t.expression.expression)}))${es(t.redirections)}`}function DG(t){return`[[ ${uo(t.expression)} ]]${es(t.redirections)}`}function LG(t){let e=fT(t.body);return`${t.name}() ${e}${es(t.redirections)}`}function At(t){switch(t.type){case"ArithNumber":return String(t.value);case"ArithVariable":return t.hasDollarPrefix?`$${t.name}`:t.name;case"ArithSpecialVar":return`$${t.name}`;case"ArithBinary":return`${At(t.left)} ${t.operator} ${At(t.right)}`;case"ArithUnary":return t.prefix?`${t.operator}${At(t.operand)}`:`${At(t.operand)}${t.operator}`;case"ArithTernary":return`${At(t.condition)} ? ${At(t.consequent)} : ${At(t.alternate)}`;case"ArithAssignment":return`${t.subscript?`${t.variable}[${At(t.subscript)}]`:t.stringKey!==void 0?`${t.variable}[${t.stringKey}]`:t.variable} ${t.operator} ${At(t.value)}`;case"ArithDynamicAssignment":return`${t.subscript?`${At(t.target)}[${At(t.subscript)}]`:At(t.target)} ${t.operator} ${At(t.value)}`;case"ArithDynamicElement":return`${At(t.nameExpr)}[${At(t.subscript)}]`;case"ArithGroup":return`(${At(t.expression)})`;case"ArithNested":return`$((${At(t.expression)}))`;case"ArithCommandSubst":return`$(${t.command})`;case"ArithBracedExpansion":return`\${${t.content}}`;case"ArithArrayElement":return t.stringKey!==void 0?`${t.array}[${t.stringKey}]`:t.index?`${t.array}[${At(t.index)}]`:t.array;case"ArithDynamicBase":return`\${${t.baseExpr}}#${t.value}`;case"ArithDynamicNumber":return`\${${t.prefix}}${t.suffix}`;case"ArithConcat":return t.parts.map(At).join("");case"ArithDoubleSubscript":return`${t.array}[${At(t.index)}]`;case"ArithNumberSubscript":return`${t.number}[${t.errorToken}]`;case"ArithSyntaxError":return t.errorToken;case"ArithSingleQuote":return`'${t.content}'`;default:{let e=t;throw new Error(`Unsupported arithmetic expression type: ${e.type}`)}}}function uo(t){switch(t.type){case"CondBinary":return`${fn(t.left)} ${t.operator} ${fn(t.right)}`;case"CondUnary":return`${t.operator} ${fn(t.operand)}`;case"CondNot":return`! ${uo(t.operand)}`;case"CondAnd":return`${uo(t.left)} && ${uo(t.right)}`;case"CondOr":return`${uo(t.left)} || ${uo(t.right)}`;case"CondGroup":return`( ${uo(t.expression)} )`;case"CondWord":return fn(t.word);default:{let e=t;throw new Error(`Unsupported conditional expression type: ${e.type}`)}}}var Oa=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(e={}){let n=e.fs??new bs(e.files);this.fs=n,this.useDefaultLayout=!e.cwd&&!e.files;let r=e.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
2106
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(e.env??{})]);if(this.limits=eT({...e.executionLimits,...e.maxCallDepth!==void 0&&{maxCallDepth:e.maxCallDepth},...e.maxCommandCount!==void 0&&{maxCommandCount:e.maxCommandCount},...e.maxLoopIterations!==void 0&&{maxLoopIterations:e.maxLoopIterations}}),e.fetch?this.secureFetch=e.fetch:e.network&&(this.secureFetch=Xw(e.network)),this.sleepFn=e.sleep,this.traceFn=e.trace,this.logger=e.logger,this.defenseInDepthConfig=e.defenseInDepth??!0,this.coverageWriter=e.coverage,this.state={env:s,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:e.processInfo?.pid??1,virtualPpid:e.processInfo?.ppid??0,virtualUid:e.processInfo?.uid??1e3,virtualGid:e.processInfo?.gid??1e3,bashPid:e.processInfo?.pid??1,nextVirtualPid:(e.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(e.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",f6(this.state.options)),this.state.env.set("BASHOPTS",h6(this.state.shoptOptions)),mv(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof bs)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of sv(e.commands))this.registerCommand(o);if(e.fetch||e.network)for(let o of iv())this.registerCommand(o);if(e.python)for(let o of av())this.registerCommand(o);let i=typeof e.javascript=="object"?e.javascript:Object.create(null);if(e.javascript||i.invokeTool){for(let o of cv())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(e.customCommands)for(let o of e.customCommands)uv(o)?this.registerCommand(hv(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(e){this.commands.set(e.name,e);let n=this.fs;if(typeof n.writeFileSync=="function"){let r=`#!/bin/bash
2107
2107
  # Built-in command: ${e.name}
2108
2108
  `;try{n.writeFileSync(`/bin/${e.name}`,r)}catch{}try{n.writeFileSync(`/usr/bin/${e.name}`,r)}catch{}}}logResult(e){return this.logger&&(e.stdout&&this.logger.debug("stdout",{output:e.stdout}),e.stderr&&this.logger.info("stderr",{output:e.stderr}),this.logger.info("exit",{exitCode:e.exitCode})),e.stdout=gT(e.stdout),e.stderr=gT(e.stderr),e}async exec(e,n){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
2109
2109
  `,exitCode:1,env:Sr(this.state.env,n?.env)};if(!e.trim())return{stdout:"",stderr:"",exitCode:0,env:Sr(this.state.env,n?.env)};this.logger?.info("exec",{command:e});let r=n?.cwd??this.state.cwd,s,i=r;if(n?.cwd)if(n.env&&"PWD"in n.env)s=n.env.PWD;else if(n?.env&&!("PWD"in n.env))try{s=await this.fs.realpath(r),i=s}catch{s=r}else s=r;let o=n?.replaceEnv?new Map:new Map(this.state.env);if(n?.env)for(let[f,h]of Object.entries(n.env))o.set(f,h);s!==void 0&&o.set("PWD",s);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:BG(n?.stdin,n?.stdinKind),signal:n?.signal,extraArgs:n?.args},l=e;n?.rawScript||(l=mT(e));let c=this.defenseInDepthConfig?tt.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let h=Bn(l,{maxHeredocSize:this.limits.maxHeredocSize}),p;if(this.transformPlugins.length>0){let w=Object.create(null);for(let b of this.transformPlugins){let E=b.transform({ast:h,metadata:w});h=E.ast,E.metadata&&(w=Is(w,E.metadata))}p=w}let d={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},y=await new fc(d,a).executeScript(h);return p&&(y.metadata=p),this.logResult(y)};return u?await u.run(f):await f()}catch(f){if(f instanceof Re)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:Sr(this.state.env,n?.env)});if(f instanceof ar)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:Sr(this.state.env,n?.env)});if(f instanceof lt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:Sr(this.state.env,n?.env)});if(f instanceof Eo)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:Sr(this.state.env,n?.env)});if(f instanceof se)return this.logResult({stdout:f.stdout,stderr:Fe(f.stderr),exitCode:se.EXIT_CODE,env:Sr(this.state.env,n?.env)});if(f instanceof Se)return this.logResult({stdout:"",stderr:`bash: security violation: ${Fe(f.message)}
@@ -692,8 +692,8 @@ ${t}
692
692
  esac${Ne(e.redirections)}`}function wl(e){let t=e.patterns.map(ie).join(" | "),s=$e(e.body);return s?`${t})
693
693
  ${s}
694
694
  ${e.terminator}`:`${t})
695
- ${e.terminator}`}function vl(e){return`(${$e(e.body)})${Ne(e.redirections)}`}function bl(e){return`{ ${$e(e.body)}; }${Ne(e.redirections)}`}function El(e){return`((${Z(e.expression.expression)}))${Ne(e.redirections)}`}function $l(e){return`[[ ${it(e.expression)} ]]${Ne(e.redirections)}`}function Sl(e){let t=Gi(e.body);return`${e.name}() ${t}${Ne(e.redirections)}`}function Z(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${Z(e.left)} ${e.operator} ${Z(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${Z(e.operand)}`:`${Z(e.operand)}${e.operator}`;case"ArithTernary":return`${Z(e.condition)} ? ${Z(e.consequent)} : ${Z(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${Z(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${Z(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${Z(e.target)}[${Z(e.subscript)}]`:Z(e.target)} ${e.operator} ${Z(e.value)}`;case"ArithDynamicElement":return`${Z(e.nameExpr)}[${Z(e.subscript)}]`;case"ArithGroup":return`(${Z(e.expression)})`;case"ArithNested":return`$((${Z(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${Z(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(Z).join("");case"ArithDoubleSubscript":return`${e.array}[${Z(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function it(e){switch(e.type){case"CondBinary":return`${ie(e.left)} ${e.operator} ${ie(e.right)}`;case"CondUnary":return`${e.operator} ${ie(e.operand)}`;case"CondNot":return`! ${it(e.operand)}`;case"CondAnd":return`${it(e.left)} && ${it(e.right)}`;case"CondOr":return`${it(e.left)} || ${it(e.right)}`;case"CondGroup":return`( ${it(e.expression)} )`;case"CondWord":return ie(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var Ft=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let s=t.fs??new ze(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["JUST_BASH","1"],["IFS",`
696
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Mi({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Ur(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","JUST_BASH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Zs(this.state.options)),this.state.env.set("BASHOPTS",qs(this.state.shoptOptions)),vn(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof ze)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let o of hn(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of pn())this.registerCommand(o);if(t.python)for(let o of mn())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of yn())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)gn(o)?this.registerCommand(wn(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
695
+ ${e.terminator}`}function vl(e){return`(${$e(e.body)})${Ne(e.redirections)}`}function bl(e){return`{ ${$e(e.body)}; }${Ne(e.redirections)}`}function El(e){return`((${Z(e.expression.expression)}))${Ne(e.redirections)}`}function $l(e){return`[[ ${it(e.expression)} ]]${Ne(e.redirections)}`}function Sl(e){let t=Gi(e.body);return`${e.name}() ${t}${Ne(e.redirections)}`}function Z(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${Z(e.left)} ${e.operator} ${Z(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${Z(e.operand)}`:`${Z(e.operand)}${e.operator}`;case"ArithTernary":return`${Z(e.condition)} ? ${Z(e.consequent)} : ${Z(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${Z(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${Z(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${Z(e.target)}[${Z(e.subscript)}]`:Z(e.target)} ${e.operator} ${Z(e.value)}`;case"ArithDynamicElement":return`${Z(e.nameExpr)}[${Z(e.subscript)}]`;case"ArithGroup":return`(${Z(e.expression)})`;case"ArithNested":return`$((${Z(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${Z(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(Z).join("");case"ArithDoubleSubscript":return`${e.array}[${Z(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function it(e){switch(e.type){case"CondBinary":return`${ie(e.left)} ${e.operator} ${ie(e.right)}`;case"CondUnary":return`${e.operator} ${ie(e.operand)}`;case"CondNot":return`! ${it(e.operand)}`;case"CondAnd":return`${it(e.left)} && ${it(e.right)}`;case"CondOr":return`${it(e.left)} || ${it(e.right)}`;case"CondGroup":return`( ${it(e.expression)} )`;case"CondWord":return ie(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var Ft=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;invokeToolFn;transformPlugins=[];state;constructor(t={}){let s=t.fs??new ze(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
696
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Mi({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Ur(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Zs(this.state.options)),this.state.env.set("BASHOPTS",qs(this.state.shoptOptions)),vn(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof ze)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let o of hn(t.commands))this.registerCommand(o);if(t.fetch||t.network)for(let o of pn())this.registerCommand(o);if(t.python)for(let o of mn())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of yn())this.registerCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)gn(o)?this.registerCommand(wn(o)):this.registerCommand({...o,trusted:o.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
697
697
  # Built-in command: ${t.name}
698
698
  `;try{s.writeFileSync(`/bin/${t.name}`,r)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,r)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=Ji(t.stdout),t.stderr=Ji(t.stderr),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
699
699
  `,exitCode:1,env:ve(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:ve(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let r=s?.cwd??this.state.cwd,n,i=r;if(s?.cwd)if(s.env&&"PWD"in s.env)n=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{n=await this.fs.realpath(r),i=n}catch{n=r}else n=r;let o=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);n!==void 0&&o.set("PWD",n);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Al(s?.stdin,s?.stdinKind),signal:s?.signal,extraArgs:s?.args},l=t;s?.rawScript||(l=Qi(t));let c=this.defenseInDepthConfig?me.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=fe(l,{maxHeredocSize:this.limits.maxHeredocSize}),h;if(this.transformPlugins.length>0){let y=Object.create(null);for(let v of this.transformPlugins){let b=v.transform({ast:d,metadata:y});d=b.ast,b.metadata&&(y=Ct(y,b.metadata))}h=y}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},w=await new It(m,a).executeScript(d);return h&&(w.metadata=h),this.logResult(w)};return u?await u.run(f):await f()}catch(f){if(f instanceof j)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:ve(this.state.env,s?.env)});if(f instanceof Pe)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:ve(this.state.env,s?.env)});if(f instanceof Je)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:ve(this.state.env,s?.env)});if(f instanceof Ht)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:ve(this.state.env,s?.env)});if(f instanceof J)return this.logResult({stdout:f.stdout,stderr:Le(f.stderr),exitCode:J.EXIT_CODE,env:ve(this.state.env,s?.env)});if(f instanceof Ve)return this.logResult({stdout:"",stderr:`bash: security violation: ${Le(f.message)}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl URL allow-list enforcement
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl authentication options
3
+ */
4
+ export {};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tests for curl command availability
3
+ *
4
+ * curl is only available when network is explicitly configured.
5
+ */
6
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl binary data handling
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl cookie options
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl error handling
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl form data options
3
+ */
4
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for HTTP method restrictions in curl
3
+ *
4
+ * By default, only GET and HEAD methods are allowed.
5
+ * Other methods require explicit allowedMethods config or dangerouslyAllowFullInternetAccess.
6
+ */
7
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl command-line options parsing and behavior
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl option parsing edge cases
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl timeout options
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl upload options
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl verbose output (-v)
3
+ */
4
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Tests for curl write-out format (-w)
3
+ */
4
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};