bashkit 0.18.1__tar.gz → 0.18.2__tar.gz

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 (633) hide show
  1. {bashkit-0.18.1 → bashkit-0.18.2}/Cargo.lock +47 -47
  2. {bashkit-0.18.1 → bashkit-0.18.2}/Cargo.toml +1 -1
  3. {bashkit-0.18.1 → bashkit-0.18.2}/PKG-INFO +1 -1
  4. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/README.md +2 -2
  5. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/compatibility.md +6 -1
  6. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/logging.md +1 -1
  7. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/sqlite.md +1 -1
  8. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/threat-model.md +3 -2
  9. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/archive.rs +8 -2
  10. bashkit-0.18.2/crates/bashkit/src/builtins/atomic_write.rs +92 -0
  11. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/awk/interpreter.rs +3 -2
  12. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/awk/mod.rs +3 -2
  13. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/cat.rs +2 -1
  14. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/checksum.rs +2 -1
  15. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/column.rs +2 -1
  16. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/comm.rs +3 -2
  17. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/cuttr.rs +2 -1
  18. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/diff.rs +3 -2
  19. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/dirstack.rs +2 -1
  20. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/disk.rs +32 -2
  21. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/fileops.rs +3 -2
  22. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/git/client.rs +71 -68
  23. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/grep.rs +56 -6
  24. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/headtail.rs +3 -2
  25. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/hextools.rs +2 -1
  26. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/limits.rs +4 -0
  27. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/find.rs +2 -1
  28. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/list.rs +3 -2
  29. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/mod.rs +92 -1
  30. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/navigation.rs +2 -1
  31. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/nl.rs +2 -1
  32. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/paste.rs +2 -1
  33. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/path.rs +3 -2
  34. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/python.rs +3 -2
  35. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/rg/mod.rs +21 -14
  36. bashkit-0.18.2/crates/bashkit/src/builtins/sed/exec.rs +851 -0
  37. bashkit-0.18.2/crates/bashkit/src/builtins/sed/mod.rs +487 -0
  38. bashkit-0.18.2/crates/bashkit/src/builtins/sed/pattern.rs +377 -0
  39. bashkit-0.18.2/crates/bashkit/src/builtins/sed/script.rs +888 -0
  40. bashkit-0.18.2/crates/bashkit/src/builtins/sed/tests.rs +801 -0
  41. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/shuf.rs +3 -2
  42. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sortuniq.rs +5 -4
  43. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/mod.rs +6 -1
  44. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/strings.rs +2 -1
  45. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/test.rs +2 -1
  46. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/textrev.rs +3 -2
  47. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/tree.rs +2 -1
  48. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/typescript.rs +2 -1
  49. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/wc.rs +37 -1
  50. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/yq.rs +14 -70
  51. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/zip_cmd.rs +3 -2
  52. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/memory.rs +28 -1
  53. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/mod.rs +118 -0
  54. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/mountable.rs +2 -1
  55. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/namespace.rs +4 -3
  56. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/overlay.rs +11 -7
  57. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/realfs.rs +7 -1
  58. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/glob.rs +6 -5
  59. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/mod.rs +3 -3
  60. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/lib.rs +3 -3
  61. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/testing.rs +6 -0
  62. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/main.rs +1 -0
  63. bashkit-0.18.2/crates/bashkit/tests/integration/sed_fuzz_scaffold_tests.rs +114 -0
  64. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/spec_tests.rs +15 -2
  65. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/realfs_tests.rs +26 -0
  66. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/security_failpoint_tests.rs +81 -0
  67. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/sed/sed.test.sh +340 -0
  68. bashkit-0.18.1/crates/bashkit/src/builtins/sed.rs +0 -1474
  69. {bashkit-0.18.1 → bashkit-0.18.2}/README.md +0 -0
  70. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/__init__.py +0 -0
  71. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/_bashkit.pyi +0 -0
  72. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/deepagents.py +0 -0
  73. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/langchain.py +0 -0
  74. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/py.typed +0 -0
  75. {bashkit-0.18.1 → bashkit-0.18.2}/bashkit/pydantic_ai.py +0 -0
  76. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/Cargo.toml +0 -0
  77. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/awk_regex.rs +0 -0
  78. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/builtin_args.rs +0 -0
  79. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/file_ops.rs +0 -0
  80. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/hotpath.rs +0 -0
  81. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/parallel_execution.rs +0 -0
  82. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/README.md +0 -0
  83. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-awk-regex-mykhailos-mini-darwin-arm64-1785952907.md +0 -0
  84. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-builtin_args-baseline-linux-x86_64-1787421390.md +0 -0
  85. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-file_ops-linux-x86_64-1779759850.md +0 -0
  86. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-hotpath-attrs+shopt-linux-x86_64-1779759850.md +0 -0
  87. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-hotpath-perf-linux-x86_64-1779744742.md +0 -0
  88. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-parallel-(none)-linux-x86_64-1773469129.md +0 -0
  89. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-parallel-Mykhailos-Mac-mini.local-darwin-arm64-1788628263.md +0 -0
  90. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-parallel-vm-linux-x86_64-1782162173.md +0 -0
  91. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-parallel-vm-linux-x86_64-1782168239.md +0 -0
  92. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-snapshot-history-baseline-linux-x86_64-1785444523.md +0 -0
  93. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-sqlite-Mykhailos-Mac-mini.local-darwin-arm64-1788628889.md +0 -0
  94. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-sqlite-Mykhailos-Mini.lan-darwin-arm64-1785957173.md +0 -0
  95. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-sqlite-vm-linux-x86_64-1777865268.md +0 -0
  96. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-sqlite-vm-linux-x86_64-1786872580.md +0 -0
  97. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/results/criterion-sqlite-vm-linux-x86_64-1788221595.md +0 -0
  98. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/snapshot_history.rs +0 -0
  99. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/benches/sqlite.rs +0 -0
  100. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/clap-builtins.md +0 -0
  101. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/credential-injection.md +0 -0
  102. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/custom_builtins.md +0 -0
  103. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/hooks.md +0 -0
  104. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/jq.md +0 -0
  105. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/live_mounts.md +0 -0
  106. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/namespace_filesystems.md +0 -0
  107. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/python.md +0 -0
  108. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/script-analysis.md +0 -0
  109. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/ssh.md +0 -0
  110. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/typescript.md +0 -0
  111. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/docs/yq.md +0 -0
  112. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/agent_tool.rs +0 -0
  113. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/basic.rs +0 -0
  114. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/clap_builtin.rs +0 -0
  115. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/clap_builtin_subcommands.rs +0 -0
  116. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/custom_backend.rs +0 -0
  117. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/custom_builtins.rs +0 -0
  118. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/custom_filesystem_impl.rs +0 -0
  119. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/custom_fs.rs +0 -0
  120. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/dump_builtins.rs +0 -0
  121. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/generate_snapshot_fixtures.rs +0 -0
  122. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/git_workflow.rs +0 -0
  123. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/large_binary_probe.rs +0 -0
  124. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/live_mounts.rs +0 -0
  125. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/namespace_rebase.rs +0 -0
  126. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/namespace_sandbox.rs +0 -0
  127. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/python_external_functions.rs +0 -0
  128. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/python_scripts.rs +0 -0
  129. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/realfs_readonly.rs +0 -0
  130. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/realfs_readwrite.rs +0 -0
  131. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/resource_limits.rs +0 -0
  132. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/scripted_tool.rs +0 -0
  133. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/scripted_tool_clap_builtin.rs +0 -0
  134. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/show_tool_output.rs +0 -0
  135. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/sqlite_basic.rs +0 -0
  136. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/sqlite_workflow.rs +0 -0
  137. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/ssh_supabase.rs +0 -0
  138. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/streaming_output.rs +0 -0
  139. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/text_files.rs +0 -0
  140. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/text_processing.rs +0 -0
  141. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/typescript_external_functions.rs +0 -0
  142. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/typescript_scripts.rs +0 -0
  143. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/examples/virtual_identity.rs +0 -0
  144. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/out file.txt +0 -0
  145. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/proptest-regressions/builtins/sqlite/tests.txt +0 -0
  146. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/analysis.rs +0 -0
  147. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/alias.rs +0 -0
  148. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/arg_parser.rs +0 -0
  149. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/assert.rs +0 -0
  150. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/awk/parser.rs +0 -0
  151. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/awk/tests.rs +0 -0
  152. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/base64.rs +0 -0
  153. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/bc.rs +0 -0
  154. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/caller.rs +0 -0
  155. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/clap_cache.rs +0 -0
  156. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/clap_env.rs +0 -0
  157. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/clear.rs +0 -0
  158. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/compgen.rs +0 -0
  159. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/csv.rs +0 -0
  160. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/curl.rs +0 -0
  161. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/date.rs +0 -0
  162. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/dotenv.rs +0 -0
  163. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/echo.rs +0 -0
  164. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/environ.rs +0 -0
  165. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/envsubst.rs +0 -0
  166. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/expand.rs +0 -0
  167. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/export.rs +0 -0
  168. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/expr.rs +0 -0
  169. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/fc.rs +0 -0
  170. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/flow.rs +0 -0
  171. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/fold.rs +0 -0
  172. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/cat_args.rs +0 -0
  173. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/extendedbigdecimal.rs +0 -0
  174. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/argument.rs +0 -0
  175. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/escape.rs +0 -0
  176. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/human.rs +0 -0
  177. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/mod.rs +0 -0
  178. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/num_format.rs +0 -0
  179. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format/spec.rs +0 -0
  180. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/format_support.rs +0 -0
  181. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/ls_args.rs +0 -0
  182. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/mktemp_args.rs +0 -0
  183. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/mod.rs +0 -0
  184. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/num_parser.rs +0 -0
  185. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/od_args.rs +0 -0
  186. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/readlink_args.rs +0 -0
  187. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/realpath_args.rs +0 -0
  188. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/shuf_args.rs +0 -0
  189. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/stat_args.rs +0 -0
  190. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/tac_args.rs +0 -0
  191. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/tee_args.rs +0 -0
  192. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/generated/truncate_args.rs +0 -0
  193. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/git/cmd.rs +0 -0
  194. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/git/config.rs +0 -0
  195. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/git/mod.rs +0 -0
  196. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/glob_cmd.rs +0 -0
  197. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/help.rs +0 -0
  198. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/helpers.rs +0 -0
  199. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/http.rs +0 -0
  200. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/iconv.rs +0 -0
  201. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/inspect.rs +0 -0
  202. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/introspect.rs +0 -0
  203. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/join.rs +0 -0
  204. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/args.rs +0 -0
  205. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/compat.rs +0 -0
  206. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/convert.rs +0 -0
  207. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/errors.rs +0 -0
  208. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/format.rs +0 -0
  209. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/input.rs +0 -0
  210. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/mod.rs +0 -0
  211. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/regex_compat.rs +0 -0
  212. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/jq/tests.rs +0 -0
  213. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/json.rs +0 -0
  214. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/log.rs +0 -0
  215. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/glob.rs +0 -0
  216. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/mod.rs +0 -0
  217. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/rmdir.rs +0 -0
  218. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ls/tests.rs +0 -0
  219. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/mapfile.rs +0 -0
  220. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/mkfifo.rs +0 -0
  221. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/numfmt.rs +0 -0
  222. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/parallel.rs +0 -0
  223. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/patch.rs +0 -0
  224. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/pipeline.rs +0 -0
  225. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/printf.rs +0 -0
  226. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/read.rs +0 -0
  227. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/retry.rs +0 -0
  228. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/runtime_limits.rs +0 -0
  229. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/search_common.rs +0 -0
  230. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/semver.rs +0 -0
  231. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/seq.rs +0 -0
  232. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sleep.rs +0 -0
  233. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/source.rs +0 -0
  234. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/split.rs +0 -0
  235. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/dot_commands.rs +0 -0
  236. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/engine.rs +0 -0
  237. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/formatter.rs +0 -0
  238. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/parser.rs +0 -0
  239. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/tests.rs +0 -0
  240. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/sqlite/vfs_io.rs +0 -0
  241. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/allowlist.rs +0 -0
  242. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/client.rs +0 -0
  243. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/cmd.rs +0 -0
  244. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/config.rs +0 -0
  245. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/handler.rs +0 -0
  246. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/mod.rs +0 -0
  247. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/ssh/russh_handler.rs +0 -0
  248. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/system.rs +0 -0
  249. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/template.rs +0 -0
  250. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/timeout.rs +0 -0
  251. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/tomlq.rs +0 -0
  252. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/trap.rs +0 -0
  253. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/truncate.rs +0 -0
  254. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/vars.rs +0 -0
  255. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/verify.rs +0 -0
  256. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/wait.rs +0 -0
  257. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/builtins/yes.rs +0 -0
  258. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/credential.rs +0 -0
  259. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/error.rs +0 -0
  260. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/execution_capability.rs +0 -0
  261. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/backend.rs +0 -0
  262. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/limits.rs +0 -0
  263. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/posix.rs +0 -0
  264. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/readonly.rs +0 -0
  265. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/search.rs +0 -0
  266. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/fs/traits.rs +0 -0
  267. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/hooks.rs +0 -0
  268. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/host_call.rs +0 -0
  269. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interop/fs.rs +0 -0
  270. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interop/mod.rs +0 -0
  271. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/arithmetic.rs +0 -0
  272. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/brace_expansion.rs +0 -0
  273. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/expansion.rs +0 -0
  274. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/jobs.rs +0 -0
  275. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/redirection.rs +0 -0
  276. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/state.rs +0 -0
  277. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/interpreter/time_command.rs +0 -0
  278. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/limits.rs +0 -0
  279. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/logging_impl.rs +0 -0
  280. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/network/allowlist.rs +0 -0
  281. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/network/bot_auth.rs +0 -0
  282. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/network/client.rs +0 -0
  283. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/network/mod.rs +0 -0
  284. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/network/transport.rs +0 -0
  285. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/ast.rs +0 -0
  286. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/budget.rs +0 -0
  287. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/lexer.rs +0 -0
  288. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/mod.rs +0 -0
  289. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/span.rs +0 -0
  290. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/parser/tokens.rs +0 -0
  291. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/profile.rs +0 -0
  292. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/scripted_tool/execute.rs +0 -0
  293. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/scripted_tool/extension.rs +0 -0
  294. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/scripted_tool/mod.rs +0 -0
  295. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/scripted_tool/toolset.rs +0 -0
  296. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/capabilities.rs +0 -0
  297. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/chunker.rs +0 -0
  298. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/container.rs +0 -0
  299. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/graph.rs +0 -0
  300. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/mod.rs +0 -0
  301. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/snapshot/objects.rs +0 -0
  302. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/stream.rs +0 -0
  303. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/time_compat/host_clock.rs +0 -0
  304. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/time_compat/mod.rs +0 -0
  305. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/tool.rs +0 -0
  306. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/tool_def.rs +0 -0
  307. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/tool_registry.rs +0 -0
  308. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/src/trace.rs +0 -0
  309. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/fixtures/competitor-regressions/just-bash-2026-08-05.json +0 -0
  310. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/fixtures/snapshots/v1.snapshot +0 -0
  311. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/fixtures/snapshots/v2.snapshot +0 -0
  312. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/agent_skills_publication_tests.rs +0 -0
  313. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/allexport_tests.rs +0 -0
  314. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/archive_bzip2_tests.rs +0 -0
  315. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/awk_fuzz_scaffold_tests.rs +0 -0
  316. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/awk_newline_tests.rs +0 -0
  317. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/awk_pattern_tests.rs +0 -0
  318. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/awk_printf_expr_test.rs +0 -0
  319. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/awk_range_pattern_tests.rs +0 -0
  320. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/background_exec_tests.rs +0 -0
  321. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/base64_binary_tests.rs +0 -0
  322. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/bash_source_tests.rs +0 -0
  323. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/blackbox_security_tests.rs +0 -0
  324. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/builtin_error_security_tests.rs +0 -0
  325. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/builtin_registry_tests.rs +0 -0
  326. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/byte_range_panic_tests.rs +0 -0
  327. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/byte_stream_tests.rs +0 -0
  328. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/cancellation_tests.rs +0 -0
  329. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/cmdsub_quote_test.rs +0 -0
  330. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/command_resolver_tests.rs +0 -0
  331. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/competitor_regression_tests.rs +0 -0
  332. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/compgen_tests.rs +0 -0
  333. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/coproc_tests.rs +0 -0
  334. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/coreutils_differential_tests.rs +0 -0
  335. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/credential_injection_tests.rs +0 -0
  336. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/curl_data_compat_tests.rs +0 -0
  337. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/custom_builtins_tests.rs +0 -0
  338. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/custom_fs_tests.rs +0 -0
  339. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/date_timezone_differential_tests.rs +0 -0
  340. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/date_timezone_no_tzdata_tests.rs +0 -0
  341. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/date_timezone_tests.rs +0 -0
  342. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/dev_null_tests.rs +0 -0
  343. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/exec_options_tests.rs +0 -0
  344. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/execution_budget_tests.rs +0 -0
  345. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/execution_capability_tests.rs +0 -0
  346. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/execution_profile_tests.rs +0 -0
  347. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/filesystem_security_conformance_tests.rs +0 -0
  348. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/final_env_tests.rs +0 -0
  349. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/find_multi_path_tests.rs +0 -0
  350. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/for_in_reserved_word_tests.rs +0 -0
  351. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/git_advanced_tests.rs +0 -0
  352. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/git_inspection_tests.rs +0 -0
  353. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/git_integration_tests.rs +0 -0
  354. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/git_remote_security_tests.rs +0 -0
  355. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/git_security_tests.rs +0 -0
  356. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/glob_fuzz_scaffold_tests.rs +0 -0
  357. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/glob_intermediate_component_tests.rs +0 -0
  358. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/harness_example_tests.rs +0 -0
  359. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/history_tests.rs +0 -0
  360. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/host_call_execution_tests.rs +0 -0
  361. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/host_mounts_tests.rs +0 -0
  362. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_1175_test.rs +0 -0
  363. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_1776_test.rs +0 -0
  364. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_1777_test.rs +0 -0
  365. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_274_test.rs +0 -0
  366. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_275_279_282_test.rs +0 -0
  367. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_276_test.rs +0 -0
  368. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_277_test.rs +0 -0
  369. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_289_test.rs +0 -0
  370. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_290_test.rs +0 -0
  371. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_291_test.rs +0 -0
  372. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_853_test.rs +0 -0
  373. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_872_test.rs +0 -0
  374. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_873_test.rs +0 -0
  375. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/issue_875_test.rs +0 -0
  376. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/jq_fuzz_scaffold_tests.rs +0 -0
  377. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/limitations_doc_tests.rs +0 -0
  378. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/limitations_evidence_tests.rs +0 -0
  379. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/live_mount_tests.rs +0 -0
  380. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/mkfifo_tests.rs +0 -0
  381. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/namespace_fs_tests.rs +0 -0
  382. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/nested_subscript_tests.rs +0 -0
  383. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/network_security_tests.rs +0 -0
  384. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/output_truncation_tests.rs +0 -0
  385. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/parallel_sessions_tests.rs +0 -0
  386. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/proptest_differential.rs +0 -0
  387. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/python_integration_tests.rs +0 -0
  388. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/python_security_tests.rs +0 -0
  389. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/regex_limit_tests.rs +0 -0
  390. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/release_profile_tests.rs +0 -0
  391. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/request_lifecycle_contract_tests.rs +0 -0
  392. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/runtime_env_tests.rs +0 -0
  393. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/script_analysis.rs +0 -0
  394. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/script_execution_tests.rs +0 -0
  395. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/security_audit_pocs.rs +0 -0
  396. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/set_e_and_or_tests.rs +0 -0
  397. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/shuf_resource_tests.rs +0 -0
  398. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/skills_tests.rs +0 -0
  399. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/snapshot_fixture_tests.rs +0 -0
  400. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/snapshot_history_tests.rs +0 -0
  401. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/snapshot_tests.rs +0 -0
  402. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/source_function_tests.rs +0 -0
  403. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/spec_runner.rs +0 -0
  404. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/sqlite_compat_tests.rs +0 -0
  405. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/sqlite_differential_tests.rs +0 -0
  406. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/sqlite_fuzz_tests.rs +0 -0
  407. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/sqlite_integration_tests.rs +0 -0
  408. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/sqlite_security_tests.rs +0 -0
  409. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/stack_overflow_regression_tests.rs +0 -0
  410. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/subst_depth_limit_tests.rs +0 -0
  411. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/symlink_overlay_security_tests.rs +0 -0
  412. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/thirdparty_adoption_tests.rs +0 -0
  413. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/threat_model_doc_tests.rs +0 -0
  414. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/threat_model_tests.rs +0 -0
  415. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/time_command_tests.rs +0 -0
  416. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/time_compat_scan_tests.rs +0 -0
  417. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/tool_registry_tests.rs +0 -0
  418. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/tty_tests.rs +0 -0
  419. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/typescript_integration_tests.rs +0 -0
  420. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/typescript_security_tests.rs +0 -0
  421. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/unicode_security_tests.rs +0 -0
  422. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/unset_function_tests.rs +0 -0
  423. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/urandom_tests.rs +0 -0
  424. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/workflow_security_tests.rs +0 -0
  425. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/integration/yq_integration_tests.rs +0 -0
  426. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/logging_security_tests.rs +0 -0
  427. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/proptest_security.rs +0 -0
  428. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/azure_discover_rank.sh +0 -0
  429. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/azure_generate_url.sh +0 -0
  430. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/azure_query_capacity.sh +0 -0
  431. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/helm_validate_chart.sh +0 -0
  432. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/jwt_test_setup.sh +0 -0
  433. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/stitch_download_asset.sh +0 -0
  434. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/stitch_fetch.sh +0 -0
  435. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/stitch_verify_setup.sh +0 -0
  436. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/superpowers_find_polluter.sh +0 -0
  437. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/skills_fixtures/vercel_deploy.sh +0 -0
  438. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/awk.test.sh +0 -0
  439. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/delete-array.test.sh +0 -0
  440. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/dev-stderr.test.sh +0 -0
  441. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/eval-bugs.test.sh +0 -0
  442. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/filename.test.sh +0 -0
  443. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/awk/getline-file.test.sh +0 -0
  444. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/alias.test.sh +0 -0
  445. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/append_redirect.test.sh +0 -0
  446. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/arith-dynamic.test.sh +0 -0
  447. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/arithmetic-base-expansion.test.sh +0 -0
  448. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/arithmetic.test.sh +0 -0
  449. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/array-slicing.test.sh +0 -0
  450. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/array-splat.test.sh +0 -0
  451. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/arrays.test.sh +0 -0
  452. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/assoc-arrays.test.sh +0 -0
  453. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/awk-printf-width.test.sh +0 -0
  454. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/background.test.sh +0 -0
  455. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bash-c-exports.test.sh +0 -0
  456. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bash-command.test.sh +0 -0
  457. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bash-flags.test.sh +0 -0
  458. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bash-source-var.test.sh +0 -0
  459. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bash-stdin-pipe.test.sh +0 -0
  460. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/bc.test.sh +0 -0
  461. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/blackbox-edge-cases.test.sh +0 -0
  462. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/blackbox-exploration.test.sh +0 -0
  463. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/brace-expansion.test.sh +0 -0
  464. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/brace_expansion_lookahead.test.sh +0 -0
  465. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/cat.test.sh +0 -0
  466. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/checksum.test.sh +0 -0
  467. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/chown-kill.test.sh +0 -0
  468. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/cmd-suggestions.test.sh +0 -0
  469. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/cmdsub_depth_unquoted.test.sh +0 -0
  470. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/column.test.sh +0 -0
  471. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/comm.test.sh +0 -0
  472. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/command-not-found.test.sh +0 -0
  473. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/command-subst.test.sh +0 -0
  474. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/command.test.sh +0 -0
  475. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/command_v.test.sh +0 -0
  476. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/compgen-path.test.sh +0 -0
  477. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/conditional-short-circuit.test.sh +0 -0
  478. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/conditional.test.sh +0 -0
  479. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/control-flow.test.sh +0 -0
  480. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/cuttr.test.sh +0 -0
  481. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/date.test.sh +0 -0
  482. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/declare.test.sh +0 -0
  483. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/df.test.sh +0 -0
  484. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/diff.test.sh +0 -0
  485. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/dirstack.test.sh +0 -0
  486. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/du.test.sh +0 -0
  487. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/echo.test.sh +0 -0
  488. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/empty-bodies.test.sh +0 -0
  489. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/env.test.sh +0 -0
  490. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/errexit.test.sh +0 -0
  491. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/eval-bugs.test.sh +0 -0
  492. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/exec-command.test.sh +0 -0
  493. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/exec-fd-redirect.test.sh +0 -0
  494. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/exec-fd-variable.test.sh +0 -0
  495. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/exit-status.test.sh +0 -0
  496. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/expr.test.sh +0 -0
  497. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/extglob.test.sh +0 -0
  498. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/file.test.sh +0 -0
  499. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/fileops.test.sh +0 -0
  500. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/find.test.sh +0 -0
  501. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/functions.test.sh +0 -0
  502. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/getopts.test.sh +0 -0
  503. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/glob-options.test.sh +0 -0
  504. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/glob_match_cap.test.sh +0 -0
  505. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/globs.test.sh +0 -0
  506. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/gzip.test.sh +0 -0
  507. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/headtail.test.sh +0 -0
  508. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/help-flag.test.sh +0 -0
  509. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/heredoc-edge.test.sh +0 -0
  510. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/heredoc.test.sh +0 -0
  511. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/herestring.test.sh +0 -0
  512. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/hextools.test.sh +0 -0
  513. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/history.test.sh +0 -0
  514. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/indirect-expansion.test.sh +0 -0
  515. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/less.test.sh +0 -0
  516. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/ln.test.sh +0 -0
  517. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/ls.test.sh +0 -0
  518. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/memory_budget_desync.test.sh +0 -0
  519. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/mktemp.test.sh +0 -0
  520. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/nameref-assoc.test.sh +0 -0
  521. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/nameref.test.sh +0 -0
  522. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/negative-tests.test.sh +0 -0
  523. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/nl.test.sh +0 -0
  524. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/nounset.test.sh +0 -0
  525. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/numfmt.test.sh +0 -0
  526. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/od.test.sh +0 -0
  527. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/parse-errors.test.sh +0 -0
  528. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/paste-flags.test.sh +0 -0
  529. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/paste.test.sh +0 -0
  530. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/path.test.sh +0 -0
  531. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/pipes-redirects.test.sh +0 -0
  532. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/printenv.test.sh +0 -0
  533. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/printf.test.sh +0 -0
  534. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/procsub.test.sh +0 -0
  535. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/quote.test.sh +0 -0
  536. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/read-builtin.test.sh +0 -0
  537. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/readlink.test.sh +0 -0
  538. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/recursive-cmdsub.test.sh +0 -0
  539. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/regex-limit.test.sh +0 -0
  540. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/replace_pattern_limit.test.sh +0 -0
  541. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/script-exec.test.sh +0 -0
  542. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/seq.test.sh +0 -0
  543. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/set-allexport.test.sh +0 -0
  544. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/shell-grammar.test.sh +0 -0
  545. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/shuf.test.sh +0 -0
  546. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/sleep.test.sh +0 -0
  547. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/sortuniq.test.sh +0 -0
  548. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/source.test.sh +0 -0
  549. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/stat.test.sh +0 -0
  550. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/string-ops.test.sh +0 -0
  551. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/strings.test.sh +0 -0
  552. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/subprocess-isolation.test.sh +0 -0
  553. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/subshell.test.sh +0 -0
  554. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/tar.test.sh +0 -0
  555. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/tar_create.test.sh +0 -0
  556. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/tee.test.sh +0 -0
  557. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/temp-binding.test.sh +0 -0
  558. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/test-operators.test.sh +0 -0
  559. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/test-tty.test.sh +0 -0
  560. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/textrev.test.sh +0 -0
  561. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/time.test.sh +0 -0
  562. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/timeout.test.sh +0 -0
  563. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/tree.test.sh +0 -0
  564. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/truncate.test.sh +0 -0
  565. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/type.test.sh +0 -0
  566. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/unicode.test.sh +0 -0
  567. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/unset-exported-var.test.sh +0 -0
  568. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/var-op-test.test.sh +0 -0
  569. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/variables.test.sh +0 -0
  570. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/wait.test.sh +0 -0
  571. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/watch.test.sh +0 -0
  572. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/wc.test.sh +0 -0
  573. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/word-split.test.sh +0 -0
  574. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/bash/xargs.test.sh +0 -0
  575. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/grep/eval-bugs.test.sh +0 -0
  576. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/grep/grep.test.sh +0 -0
  577. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/grep/rg.test.sh +0 -0
  578. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/jq/jq.test.sh +0 -0
  579. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/python/env_leak.test.sh +0 -0
  580. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/python/python.test.sh +0 -0
  581. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/sed/eval-bugs.test.sh +0 -0
  582. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/typescript/typescript.test.sh +0 -0
  583. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/spec_cases/yq/yq.test.sh +0 -0
  584. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/ssh_builtin_tests.rs +0 -0
  585. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/ssh_supabase_tests.rs +0 -0
  586. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit/tests/support/filesystem_security_conformance.rs +0 -0
  587. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/Cargo.toml +0 -0
  588. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/README.md +0 -0
  589. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/bash_basics.py +0 -0
  590. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/custom_filesystem_interop.py +0 -0
  591. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/data_pipeline.py +0 -0
  592. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/fastapi_async_tool.py +0 -0
  593. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/jupyter_async_test.ipynb +0 -0
  594. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/k8s_orchestrator.py +0 -0
  595. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/langgraph_async_tool.py +0 -0
  596. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/llm_tool.py +0 -0
  597. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/examples/session_history.py +0 -0
  598. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/src/lib.rs +0 -0
  599. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/_bashkit_categories.py +0 -0
  600. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/_security_advanced.py +0 -0
  601. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/_security_core.py +0 -0
  602. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_ai_adapters.py +0 -0
  603. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_analyze.py +0 -0
  604. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_async_callbacks.py +0 -0
  605. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_basic.py +0 -0
  606. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_builtins.py +0 -0
  607. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_control_flow.py +0 -0
  608. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_custom_builtin_fs.py +0 -0
  609. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_deepagents_backend.py +0 -0
  610. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_error_handling.py +0 -0
  611. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_execution_profiles.py +0 -0
  612. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_fastapi_integration.py +0 -0
  613. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_filesystem_interop.py +0 -0
  614. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_integration.py +0 -0
  615. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_jupyter_compat.py +0 -0
  616. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_langgraph_integration.py +0 -0
  617. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_network_config.py +0 -0
  618. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_network_credentials.py +0 -0
  619. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_python_security.py +0 -0
  620. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_readonly_mounts.py +0 -0
  621. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_registered_tools.py +0 -0
  622. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_runtime_extension.py +0 -0
  623. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_scripts.py +0 -0
  624. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_security.py +0 -0
  625. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_shell_injection.py +0 -0
  626. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_snapshot_history.py +0 -0
  627. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_sqlite.py +0 -0
  628. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_streaming_output.py +0 -0
  629. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_strings_and_quoting.py +0 -0
  630. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_teardown_determinism.py +0 -0
  631. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_tool_metadata.py +0 -0
  632. {bashkit-0.18.1 → bashkit-0.18.2}/crates/bashkit-python/tests/test_vfs.py +0 -0
  633. {bashkit-0.18.1 → bashkit-0.18.2}/pyproject.toml +0 -0
@@ -238,7 +238,7 @@ checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"
238
238
  dependencies = [
239
239
  "proc-macro2",
240
240
  "quote",
241
- "syn 3.0.5",
241
+ "syn 3.0.6",
242
242
  ]
243
243
 
244
244
  [[package]]
@@ -342,7 +342,7 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
342
342
 
343
343
  [[package]]
344
344
  name = "bashkit"
345
- version = "0.18.1"
345
+ version = "0.18.2"
346
346
  dependencies = [
347
347
  "anyhow",
348
348
  "async-trait",
@@ -404,7 +404,7 @@ dependencies = [
404
404
 
405
405
  [[package]]
406
406
  name = "bashkit-bench"
407
- version = "0.18.1"
407
+ version = "0.18.2"
408
408
  dependencies = [
409
409
  "anyhow",
410
410
  "bashkit",
@@ -419,7 +419,7 @@ dependencies = [
419
419
 
420
420
  [[package]]
421
421
  name = "bashkit-capi"
422
- version = "0.18.1"
422
+ version = "0.18.2"
423
423
  dependencies = [
424
424
  "bashkit",
425
425
  "serde",
@@ -429,7 +429,7 @@ dependencies = [
429
429
 
430
430
  [[package]]
431
431
  name = "bashkit-cli"
432
- version = "0.18.1"
432
+ version = "0.18.2"
433
433
  dependencies = [
434
434
  "anyhow",
435
435
  "bashkit",
@@ -443,21 +443,21 @@ dependencies = [
443
443
 
444
444
  [[package]]
445
445
  name = "bashkit-coreutils-port"
446
- version = "0.18.1"
446
+ version = "0.18.2"
447
447
  dependencies = [
448
448
  "anyhow",
449
449
  "prettyplease",
450
450
  "proc-macro2",
451
451
  "quote",
452
452
  "serde",
453
- "syn 3.0.5",
453
+ "syn 3.0.6",
454
454
  "tempfile",
455
455
  "toml",
456
456
  ]
457
457
 
458
458
  [[package]]
459
459
  name = "bashkit-eval"
460
- version = "0.18.1"
460
+ version = "0.18.2"
461
461
  dependencies = [
462
462
  "anyhow",
463
463
  "async-trait",
@@ -474,7 +474,7 @@ dependencies = [
474
474
 
475
475
  [[package]]
476
476
  name = "bashkit-js"
477
- version = "0.18.1"
477
+ version = "0.18.2"
478
478
  dependencies = [
479
479
  "bashkit",
480
480
  "napi",
@@ -486,7 +486,7 @@ dependencies = [
486
486
 
487
487
  [[package]]
488
488
  name = "bashkit-python"
489
- version = "0.18.1"
489
+ version = "0.18.2"
490
490
  dependencies = [
491
491
  "bashkit",
492
492
  "num-bigint 0.4.8",
@@ -498,7 +498,7 @@ dependencies = [
498
498
 
499
499
  [[package]]
500
500
  name = "bashkit-wasm"
501
- version = "0.18.1"
501
+ version = "0.18.2"
502
502
  dependencies = [
503
503
  "bashkit",
504
504
  "console_error_panic_hook",
@@ -664,7 +664,7 @@ checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f"
664
664
  dependencies = [
665
665
  "proc-macro2",
666
666
  "quote",
667
- "syn 3.0.5",
667
+ "syn 3.0.6",
668
668
  ]
669
669
 
670
670
  [[package]]
@@ -830,9 +830,9 @@ dependencies = [
830
830
 
831
831
  [[package]]
832
832
  name = "clap"
833
- version = "4.6.6"
833
+ version = "4.6.7"
834
834
  source = "registry+https://github.com/rust-lang/crates.io-index"
835
- checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca"
835
+ checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946"
836
836
  dependencies = [
837
837
  "clap_builder",
838
838
  "clap_derive",
@@ -840,9 +840,9 @@ dependencies = [
840
840
 
841
841
  [[package]]
842
842
  name = "clap_builder"
843
- version = "4.6.6"
843
+ version = "4.6.7"
844
844
  source = "registry+https://github.com/rust-lang/crates.io-index"
845
- checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889"
845
+ checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d"
846
846
  dependencies = [
847
847
  "anstyle",
848
848
  "clap_lex",
@@ -850,14 +850,14 @@ dependencies = [
850
850
 
851
851
  [[package]]
852
852
  name = "clap_derive"
853
- version = "4.6.4"
853
+ version = "4.6.7"
854
854
  source = "registry+https://github.com/rust-lang/crates.io-index"
855
- checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061"
855
+ checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0"
856
856
  dependencies = [
857
857
  "heck",
858
858
  "proc-macro2",
859
859
  "quote",
860
- "syn 3.0.5",
860
+ "syn 3.0.6",
861
861
  ]
862
862
 
863
863
  [[package]]
@@ -911,7 +911,7 @@ version = "3.1.1"
911
911
  source = "registry+https://github.com/rust-lang/crates.io-index"
912
912
  checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34"
913
913
  dependencies = [
914
- "windows-sys 0.52.0",
914
+ "windows-sys 0.61.2",
915
915
  ]
916
916
 
917
917
  [[package]]
@@ -1336,7 +1336,7 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
1336
1336
  dependencies = [
1337
1337
  "proc-macro2",
1338
1338
  "quote",
1339
- "syn 3.0.5",
1339
+ "syn 3.0.6",
1340
1340
  ]
1341
1341
 
1342
1342
  [[package]]
@@ -1475,7 +1475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1475
1475
  checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1476
1476
  dependencies = [
1477
1477
  "libc",
1478
- "windows-sys 0.52.0",
1478
+ "windows-sys 0.61.2",
1479
1479
  ]
1480
1480
 
1481
1481
  [[package]]
@@ -1668,7 +1668,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
1668
1668
  dependencies = [
1669
1669
  "proc-macro2",
1670
1670
  "quote",
1671
- "syn 3.0.5",
1671
+ "syn 3.0.6",
1672
1672
  ]
1673
1673
 
1674
1674
  [[package]]
@@ -2675,7 +2675,7 @@ checksum = "77060ebe535362c3da75682cd17b0431017b6e7c5661e714fc69a7ad017d1301"
2675
2675
  dependencies = [
2676
2676
  "proc-macro2",
2677
2677
  "quote",
2678
- "syn 3.0.5",
2678
+ "syn 3.0.6",
2679
2679
  ]
2680
2680
 
2681
2681
  [[package]]
@@ -2938,9 +2938,9 @@ dependencies = [
2938
2938
 
2939
2939
  [[package]]
2940
2940
  name = "napi"
2941
- version = "3.12.4"
2941
+ version = "3.12.7"
2942
2942
  source = "registry+https://github.com/rust-lang/crates.io-index"
2943
- checksum = "3d2c1d080c842ec1347ebf3cfb9347c15f8c2262f143cc30eea41ddf1c7da720"
2943
+ checksum = "b7d3c1107f2fda46a7bd2676d65221b7b8160054494b38554b0e055c731714db"
2944
2944
  dependencies = [
2945
2945
  "bitflags 2.13.2",
2946
2946
  "ctor",
@@ -2955,15 +2955,15 @@ dependencies = [
2955
2955
 
2956
2956
  [[package]]
2957
2957
  name = "napi-build"
2958
- version = "2.4.2"
2958
+ version = "2.4.4"
2959
2959
  source = "registry+https://github.com/rust-lang/crates.io-index"
2960
- checksum = "860e7c40864f95cfb83cde99f9ebadd88ef3d9bdccd7dd2cee0cc96a2dd4ffa7"
2960
+ checksum = "9befcb51d87271051c0c11aaf625d09340266b7f1ac3fef5975e62274dc2813f"
2961
2961
 
2962
2962
  [[package]]
2963
2963
  name = "napi-derive"
2964
- version = "3.6.5"
2964
+ version = "3.6.8"
2965
2965
  source = "registry+https://github.com/rust-lang/crates.io-index"
2966
- checksum = "350057056a30368aa76c11a0d406b0aa61321710be2c36656ab4f6efe0b785a2"
2966
+ checksum = "7e332e701386d8101b093203e296059ad8aeef58ddd4c75594f3c84ce637405e"
2967
2967
  dependencies = [
2968
2968
  "convert_case",
2969
2969
  "ctor",
@@ -2975,9 +2975,9 @@ dependencies = [
2975
2975
 
2976
2976
  [[package]]
2977
2977
  name = "napi-derive-backend"
2978
- version = "6.1.3"
2978
+ version = "6.1.4"
2979
2979
  source = "registry+https://github.com/rust-lang/crates.io-index"
2980
- checksum = "4c1c87a71568f3fe5c736b10878ff55064b250bb4ea4b48c8055713e07b9e463"
2980
+ checksum = "fd6856fe1686867da90ed0dc292d7c0c87a695eb7c578b913360f33619ee01e3"
2981
2981
  dependencies = [
2982
2982
  "convert_case",
2983
2983
  "proc-macro2",
@@ -2988,9 +2988,9 @@ dependencies = [
2988
2988
 
2989
2989
  [[package]]
2990
2990
  name = "napi-sys"
2991
- version = "3.3.1"
2991
+ version = "3.3.2"
2992
2992
  source = "registry+https://github.com/rust-lang/crates.io-index"
2993
- checksum = "4d29a242104e456960e6c6479847570be731c1a92b8f8c05ddfb5439e5c09915"
2993
+ checksum = "6801fc65ba4d7035636e93635e281113f00410401a237dcd4f55b1565ead2115"
2994
2994
  dependencies = [
2995
2995
  "libloading 0.9.0",
2996
2996
  ]
@@ -3788,7 +3788,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3788
3788
  checksum = "2bfe0f4c752e450fc2faf62654f1c134747922825d5b04ca717b8874f41a40c0"
3789
3789
  dependencies = [
3790
3790
  "proc-macro2",
3791
- "syn 3.0.5",
3791
+ "syn 3.0.6",
3792
3792
  ]
3793
3793
 
3794
3794
  [[package]]
@@ -4468,7 +4468,7 @@ dependencies = [
4468
4468
  "errno",
4469
4469
  "libc",
4470
4470
  "linux-raw-sys",
4471
- "windows-sys 0.52.0",
4471
+ "windows-sys 0.61.2",
4472
4472
  ]
4473
4473
 
4474
4474
  [[package]]
@@ -4526,7 +4526,7 @@ dependencies = [
4526
4526
  "security-framework",
4527
4527
  "security-framework-sys",
4528
4528
  "webpki-root-certs",
4529
- "windows-sys 0.52.0",
4529
+ "windows-sys 0.61.2",
4530
4530
  ]
4531
4531
 
4532
4532
  [[package]]
@@ -4746,7 +4746,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
4746
4746
  dependencies = [
4747
4747
  "proc-macro2",
4748
4748
  "quote",
4749
- "syn 3.0.5",
4749
+ "syn 3.0.6",
4750
4750
  ]
4751
4751
 
4752
4752
  [[package]]
@@ -4816,7 +4816,7 @@ checksum = "a22144e767da4ddd8416dbf383700542ffd8a5dc493dfecedfe1fe3ad03c98ae"
4816
4816
  dependencies = [
4817
4817
  "proc-macro2",
4818
4818
  "quote",
4819
- "syn 3.0.5",
4819
+ "syn 3.0.6",
4820
4820
  ]
4821
4821
 
4822
4822
  [[package]]
@@ -5182,9 +5182,9 @@ dependencies = [
5182
5182
 
5183
5183
  [[package]]
5184
5184
  name = "syn"
5185
- version = "3.0.5"
5185
+ version = "3.0.6"
5186
5186
  source = "registry+https://github.com/rust-lang/crates.io-index"
5187
- checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9"
5187
+ checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
5188
5188
  dependencies = [
5189
5189
  "proc-macro2",
5190
5190
  "quote",
@@ -5256,7 +5256,7 @@ dependencies = [
5256
5256
  "getrandom 0.4.3",
5257
5257
  "once_cell",
5258
5258
  "rustix",
5259
- "windows-sys 0.52.0",
5259
+ "windows-sys 0.61.2",
5260
5260
  ]
5261
5261
 
5262
5262
  [[package]]
@@ -5312,7 +5312,7 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
5312
5312
  dependencies = [
5313
5313
  "proc-macro2",
5314
5314
  "quote",
5315
- "syn 3.0.5",
5315
+ "syn 3.0.6",
5316
5316
  ]
5317
5317
 
5318
5318
  [[package]]
@@ -5384,7 +5384,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
5384
5384
  dependencies = [
5385
5385
  "proc-macro2",
5386
5386
  "quote",
5387
- "syn 3.0.5",
5387
+ "syn 3.0.6",
5388
5388
  ]
5389
5389
 
5390
5390
  [[package]]
@@ -5990,7 +5990,7 @@ dependencies = [
5990
5990
  "bumpalo",
5991
5991
  "proc-macro2",
5992
5992
  "quote",
5993
- "syn 3.0.5",
5993
+ "syn 3.0.6",
5994
5994
  "wasm-bindgen-shared",
5995
5995
  ]
5996
5996
 
@@ -6067,7 +6067,7 @@ version = "0.1.11"
6067
6067
  source = "registry+https://github.com/rust-lang/crates.io-index"
6068
6068
  checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
6069
6069
  dependencies = [
6070
- "windows-sys 0.52.0",
6070
+ "windows-sys 0.61.2",
6071
6071
  ]
6072
6072
 
6073
6073
  [[package]]
@@ -6438,7 +6438,7 @@ checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
6438
6438
  dependencies = [
6439
6439
  "proc-macro2",
6440
6440
  "quote",
6441
- "syn 3.0.5",
6441
+ "syn 3.0.6",
6442
6442
  ]
6443
6443
 
6444
6444
  [[package]]
@@ -7,7 +7,7 @@ resolver = "2"
7
7
  members = ["crates/*"]
8
8
 
9
9
  [workspace.package]
10
- version = "0.18.1"
10
+ version = "0.18.2"
11
11
  edition = "2024"
12
12
  license = "MIT"
13
13
  authors = ["Mykhailo Chalyi <mike@chaliy.name>", "Everruns"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bashkit
3
- Version: 0.18.1
3
+ Version: 0.18.2
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -431,7 +431,7 @@ Enable the `sqlite` feature to embed [Turso](https://github.com/tursodatabase/tu
431
431
 
432
432
  ```toml
433
433
  [dependencies]
434
- bashkit = { version = "0.18.1", features = ["sqlite"] }
434
+ bashkit = { version = "0.18.2", features = ["sqlite"] }
435
435
  ```
436
436
 
437
437
  ```rust
@@ -617,7 +617,7 @@ Hex as `ex_bashkit`. Independent community project, unaffiliated with Everruns.
617
617
 
618
618
  ### .NET (community)
619
619
 
620
- [computerwelt](https://github.com/theolivenbaum/computerwelt) — Community .NET binding for Bashkit. Independent community project, unaffiliated with Everruns.
620
+ [computerwelt](https://github.com/curiosity-ai/computerwelt) — Community .NET binding for Bashkit. Independent community project, unaffiliated with Everruns.
621
621
 
622
622
  ## Security
623
623
 
@@ -72,7 +72,7 @@ for sandbox security reasons. See the compliance spec for details.
72
72
  | `times` | - | POSIX display process times |
73
73
  | `grep` | `-i`, `-v`, `-c`, `-n`, `-E`, `-q` | Pattern matching |
74
74
  | `rg` | `-i/-S/-s`, `-n/-N`, `--column`, `-b/--byte-offset`, `--vimgrep`, basic `--json`, `--stats`, `--null`, `-c`, `--count-matches`, `--include-zero`, `-l`, `--files-with-matches`, `--files-without-match`, `--files`, `-F`, `-w`, `-x`, `-a/--text`, `--binary`, `-m`, `-M/--max-columns`, `--max-columns-preview`, `--max-depth`, `-A`, `-B`, `-C`, separator flags, `--heading/--no-heading`, `--sort/--sortr`, `--path-separator`, `-g/--glob`, `--ignore-file`, `.ignore`/`.gitignore`, `--no-ignore*`, `--require-git/--no-require-git`, `-u/--unrestricted`, `--messages/--no-messages`, `-t/--type`, `-T/--type-not`, `--type-add`, `--type-clear`, `--type-list`, `--hidden/--no-hidden`, `-o`, `-q`, `-e`, `-f`, `-E/--encoding` (`auto`, `none`, UTF-8, UTF-16LE/BE), `-r`, `--passthru`, `--trim`, `-H/-I`, `--no-config`, `--line-buffered`, `--block-buffered`, `--mmap/--no-mmap`, `-P/--pcre2`, `--no-pcre2`, `--engine`, `--auto-hybrid-regex`, `--no-auto-hybrid-regex`, `--help`, `--version` | Recursive ripgrep-style search |
75
- | `sed` | `s///[g]`, `d`, `p`, `q`, `a`, `i`, `c`, `h/H/g/G/x`, `-E`, `-n`, `!` | Stream editing |
75
+ | `sed` | `s///[gpiImMN w]`, `y`, `d`, `D`, `p`, `P`, `n`, `N`, `q[N]`, `Q[N]`, `=`, `l[N]`, `z`, `F`, `a`, `i`, `c`, `r`, `R`, `w`, `W`, `h/H/g/G/x`, `b`/`t`/`T`/`:label`, `{}`, `#`/`#n`; addresses `N`, `$`, `/re/[IM]`, `\cREc`, `first~step`, `a,b`, `a,+N`, `a,~N`, `0,/re/`, `!`; options `-n -e -f -i[SUF] -E/-r -s -z -l N -u --` and long forms | Stream editing; one stream across operands unless `-s`/`-i` |
76
76
  | `awk` | `'{print}'`, `-F`, `-v`, loops, arrays, increment, ternary | Text processing |
77
77
  | `jq` | `.field`, `.[n]`, pipes, file args, `-r`, `-c`, `-n`, `-s`, `-S`, `-e`, `-j`, `--tab`, `--arg`, `--argjson`, `-V`, combined flags | JSON processing |
78
78
  | `sleep` | `N`, `N.N` | Pause execution (max 60s) |
@@ -502,6 +502,11 @@ Identified from eval analysis, all items now implemented:
502
502
  - [x] `sed` `0~2` step addressing, even/odd line processing
503
503
  - [x] `sed` `Q` quiet quit command
504
504
  - [x] `sed` `0,/pattern/` first match addressing
505
+ - [x] `sed` GNU rewrite, issue #2427: literal `$` in the replacement, BRE/ERE
506
+ translation shared by `s///` and address regexes, stateful range addresses,
507
+ single-stream multi-file input, preserved missing final newline, `s///Ng`,
508
+ the `y = l n N P D T z F r R w W` commands, `#` comments and `#n`, atomic
509
+ mode-preserving `-i`, and full getopt-style option parsing
505
510
  - [x] AWK `$0` modification with field re-splitting
506
511
 
507
512
  ### Not Planned
@@ -14,7 +14,7 @@ Add the `logging` feature to your `Cargo.toml`:
14
14
 
15
15
  ```toml
16
16
  [dependencies]
17
- bashkit = { version = "0.18.1", features = ["logging"] }
17
+ bashkit = { version = "0.18.2", features = ["logging"] }
18
18
  tracing-subscriber = "0.3" # or your preferred subscriber
19
19
  ```
20
20
 
@@ -13,7 +13,7 @@ the `sqlite` feature. The engine is [Turso](https://github.com/tursodatabase/tur
13
13
 
14
14
  ```toml
15
15
  # Cargo.toml
16
- bashkit = { version = "0.18.1", features = ["sqlite"] }
16
+ bashkit = { version = "0.18.2", features = ["sqlite"] }
17
17
  ```
18
18
 
19
19
  ```rust,ignore
@@ -277,7 +277,7 @@ Scripts may attempt to leak sensitive information.
277
277
 
278
278
  | Threat | Attack Example | Mitigation | Status |
279
279
  |--------|---------------|------------|--------|
280
- | Fork-PR secret exfil (TM-INF-026) | Fork PR edits `examples/*.rs` or `build.rs` to read `$DOPPLER_TOKEN` / `$ANTHROPIC_API_KEY` from the runner env and exfiltrate; first-time-contributor approval gate runs the workflow from PR head, and `DOPPLER_TOKEN` is the master key to every other secret in the Doppler config | Trusted-run gates exclude PR execution from secret-backed examples. Dedicated fetch steps in `.github/workflows/{ci,js,publish-js}.yml` request one API key, mask it, and exit before build/example execution. Execution steps receive only that scoped key; Docker inherits it by name, without a secret value in argv. Neither the execution shell nor a live Doppler parent retains the broad service token. This protects process environments on a trusted runner; it does not sandbox dependencies persisting across steps. Workflow-script regression tests check child/parent environments. CI has contents-read permission only and does not persist checkout credentials; release examples install the reviewed lockfile without lifecycle scripts before linking the built artifact | **FIXED** |
280
+ | Fork-PR secret exfil (TM-INF-026) | Fork PR edits `examples/*.rs` or `build.rs` to read `$DOPPLER_TOKEN` / `$ANTHROPIC_API_KEY` from the runner env and exfiltrate; first-time-contributor approval gate runs the workflow from PR head, and `DOPPLER_TOKEN` is the master key to every other secret in the Doppler config | Trusted-run gates exclude PR execution from secret-backed examples. Dedicated fetch steps in `.github/workflows/{ci,js,publish-js}.yml` request one API key, mask it, and exit before build/example execution. Execution steps receive only that scoped key; Docker inherits it by name, without a secret value in argv. Neither the execution shell nor a live Doppler parent retains the broad service token. This protects process environments on a trusted runner; it does not sandbox dependencies persisting across steps. Workflow-script regression tests check child/parent environments. CI has contents-read permission only and does not persist checkout credentials anywhere they could reach untrusted code (TM-INF-034); release examples install the reviewed lockfile without lifecycle scripts before linking the built artifact | **FIXED** |
281
281
 
282
282
  **Additional information-disclosure hardening:**
283
283
 
@@ -287,6 +287,7 @@ Scripts may attempt to leak sensitive information.
287
287
  | jq `halt`/`halt_error` exits the host process (TM-INF-023) | Filter calls `halt(N)` → `std::process::exit` | Upstream `halt` native stripped; safe replacement returns a jq error | MITIGATED |
288
288
  | Host env side-channel via clap `Arg::env` (TM-INF-024) | `ls` resolved `TABSIZE`/`TIME_STYLE` from host env | Codegen strips `.env(...)`; builtins read `ctx.env` only | MITIGATED |
289
289
  | Untrusted generated Rust in drift CI (TM-INF-025) | Malicious upstream `uu_app()` runs with a write token | Generator validates the emitted shape; drift workflow splits read/write privilege | FIXED |
290
+ | Checkout token readable by untrusted CI code (TM-INF-034) | `actions/checkout` leaves `GITHUB_TOKEN` in `.git/config`, where a dependency build script or test in the same job can read it | `persist-credentials: false` on every checkout that does not back an authenticated `git`/`gh` call, and on every job of a pull-request-triggered workflow; every workflow declares a read-only default `permissions` block | FIXED |
290
291
  | Publish from unverified release refs (TM-INF-027) | Dispatch publish from a branch or unprotected tag | Dispatch requires `refs/heads/main`; publish gated on real `vX.Y.Z` tags | FIXED |
291
292
  | JS `onOutput` errors expose host stack traces (TM-INF-028) | Callback throws, leaking `error.stack` | Propagate `error.message` only; strip absolute/`file://` paths | FIXED |
292
293
  | Raw callback errors leak host internals (TM-INF-030) | Tool callback throws API keys/connection strings/stack traces | `sanitize_errors` defaults on for `ScriptedTool`/`ToolImpl`/`ToolRegistry` across shell/Python/TypeScript | MITIGATED |
@@ -882,7 +883,7 @@ builtin silently fails.
882
883
  | Threat | Attack Example | Mitigation | Status |
883
884
  |--------|---------------|------------|--------|
884
885
  | Awk byte-boundary panic (TM-UNI-001) | Multi-byte chars in awk input | `catch_unwind` catches panic | PARTIAL |
885
- | Sed byte-boundary panic (TM-UNI-002) | Box-drawing chars in sed pattern | `catch_unwind` catches panic | PARTIAL |
886
+ | Sed byte-boundary panic (TM-UNI-002) | Multi-byte `s` delimiter, e.g. `sed 's≠a≠X≠'` | Char-based script parser; no byte slicing of script text | FIXED |
886
887
  | Expr substr panic (TM-UNI-015) | `expr substr "café" 4 1` | `catch_unwind` catches panic | PARTIAL |
887
888
  | Printf precision panic (TM-UNI-016) | `printf "%.1s" "é"` | `catch_unwind` catches panic | PARTIAL |
888
889
  | Cut/tr byte-level parsing (TM-UNI-017) | `tr 'é' 'e'`, multi-byte in char set | `catch_unwind` catches; silent data loss | PARTIAL |
@@ -31,6 +31,7 @@ use std::path::{Path, PathBuf};
31
31
  use super::limits::ARCHIVE_MAX_DECOMPRESSION_RATIO as MAX_DECOMPRESSION_RATIO;
32
32
  use super::{Builtin, Context, resolve_path};
33
33
  use crate::error::Result;
34
+ use crate::fs::vfs_join;
34
35
  use crate::interpreter::ExecResult;
35
36
  use crate::limits::{BudgetedBytes, BudgetedString, BudgetedVec, LimitExceeded};
36
37
 
@@ -586,7 +587,7 @@ fn add_directory_to_tar<'a>(
586
587
  // Add directory contents
587
588
  let entries = ctx.fs.read_dir(path).await?;
588
589
  for entry in entries {
589
- let child_path = path.join(&entry.name);
590
+ let child_path = vfs_join(path, &entry.name);
590
591
  let child_name = format!("{}/{}", name, entry.name);
591
592
 
592
593
  if entry.metadata.file_type.is_dir() {
@@ -661,7 +662,12 @@ fn validate_tar_for_extraction(
661
662
 
662
663
  if !to_stdout {
663
664
  let entry = Path::new(name.as_ref());
664
- if entry.is_absolute()
665
+ // `has_root()` rather than `is_absolute()`: a `/etc/passwd` entry
666
+ // carries no drive prefix, so on Windows `is_absolute()` is false
667
+ // and this arm never fired (issue #2425's class). The
668
+ // `starts_with(extract_base)` arm below still blocked the write.
669
+ if entry.has_root()
670
+ || entry.is_absolute()
665
671
  || entry
666
672
  .components()
667
673
  .any(|component| matches!(component, std::path::Component::ParentDir))
@@ -0,0 +1,92 @@
1
+ //! Shared atomic in-place file replacement for builtins that rewrite files.
2
+ //!
3
+ //! THREAT[TM-FS-016]: write a sibling temporary file, copy the original mode
4
+ //! onto it, and rename only after the new content is fully written. Any failure
5
+ //! leaves the source file untouched and removes the temporary.
6
+ //!
7
+ //! Extracted from `yq` so `sed -i` gets the same guarantees (issue #2427,
8
+ //! finding E): the previous `sed -i` wrote straight through
9
+ //! `FileSystem::write_file`, which recreates the entry with mode 0644 and loses
10
+ //! the original content if the write fails part-way.
11
+
12
+ use std::path::Path;
13
+
14
+ use crate::fs::vfs_join;
15
+
16
+ /// Failpoint names for one call site. Each builtin supplies its own so the
17
+ /// security failpoint suite can target them independently.
18
+ #[cfg_attr(not(feature = "failpoints"), allow(dead_code))]
19
+ pub(crate) struct AtomicFailpoints {
20
+ pub(crate) allocate: &'static str,
21
+ pub(crate) chmod: &'static str,
22
+ pub(crate) rename: &'static str,
23
+ }
24
+
25
+ pub(crate) async fn atomic_replace(
26
+ fs: &dyn crate::fs::FileSystem,
27
+ target: &Path,
28
+ content: &[u8],
29
+ tool: &str,
30
+ failpoints: AtomicFailpoints,
31
+ ) -> std::result::Result<(), String> {
32
+ let parent = target.parent().unwrap_or_else(|| Path::new("/"));
33
+ #[cfg(feature = "failpoints")]
34
+ if injected_failure(failpoints.allocate, "exhausted") {
35
+ return Err("cannot allocate temporary file".to_string());
36
+ }
37
+ let mut temp = None;
38
+ for _ in 0..16 {
39
+ let mut suffix = [0u8; 8];
40
+ getrandom::fill(&mut suffix)
41
+ .map_err(|_| "cannot generate temporary filename".to_string())?;
42
+ let suffix = suffix
43
+ .iter()
44
+ .map(|byte| format!("{byte:02x}"))
45
+ .collect::<String>();
46
+ let candidate = vfs_join(parent, format!(".bashkit-{tool}-{suffix}.tmp"));
47
+ if !fs
48
+ .exists(&candidate)
49
+ .await
50
+ .map_err(|error| error.to_string())?
51
+ {
52
+ temp = Some(candidate);
53
+ break;
54
+ }
55
+ }
56
+ let temp = temp.ok_or_else(|| "cannot allocate temporary file".to_string())?;
57
+ if let Err(error) = fs.write_file(&temp, content).await {
58
+ let _ = fs.remove(&temp, false).await;
59
+ return Err(format!("cannot write temporary file: {error}"));
60
+ }
61
+ #[cfg(feature = "failpoints")]
62
+ if injected_failure(failpoints.chmod, "error") {
63
+ let _ = fs.remove(&temp, false).await;
64
+ return Err("cannot preserve file mode: injected failure".to_string());
65
+ }
66
+ if let Ok(metadata) = fs.stat(target).await
67
+ && let Err(error) = fs.chmod(&temp, metadata.mode).await
68
+ {
69
+ let _ = fs.remove(&temp, false).await;
70
+ return Err(format!("cannot preserve file mode: {error}"));
71
+ }
72
+ #[cfg(feature = "failpoints")]
73
+ if injected_failure(failpoints.rename, "error") {
74
+ let _ = fs.remove(&temp, false).await;
75
+ return Err(format!(
76
+ "cannot replace '{}': injected failure",
77
+ target.display()
78
+ ));
79
+ }
80
+ if let Err(error) = fs.rename(&temp, target).await {
81
+ let _ = fs.remove(&temp, false).await;
82
+ return Err(format!("cannot replace '{}': {error}", target.display()));
83
+ }
84
+ #[cfg(not(feature = "failpoints"))]
85
+ let _ = failpoints;
86
+ Ok(())
87
+ }
88
+
89
+ #[cfg(feature = "failpoints")]
90
+ fn injected_failure(name: &str, expected: &str) -> bool {
91
+ fail::eval(name, |action| action.as_deref() == Some(expected)).unwrap_or(false)
92
+ }
@@ -18,6 +18,7 @@ use crate::fs::{FileSystem, normalize_path};
18
18
  use crate::limits::ExecutionLimits;
19
19
  // On wasm32 there is no OS thread to bridge the sync AWK evaluator to the async
20
20
  // VFS, so redirected reads/writes drive the VFS future inline with now_or_never.
21
+ use crate::fs::vfs_join;
21
22
  #[cfg(target_family = "wasm")]
22
23
  use futures_util::FutureExt;
23
24
 
@@ -234,7 +235,7 @@ impl AwkInterpreter {
234
235
  let resolved = if path_str.starts_with('/') {
235
236
  PathBuf::from(path_str)
236
237
  } else {
237
- self.cwd.join(path_str)
238
+ vfs_join(&self.cwd, path_str)
238
239
  };
239
240
  normalize_path(&resolved).to_string_lossy().to_string()
240
241
  }
@@ -1200,7 +1201,7 @@ impl AwkInterpreter {
1200
1201
  let resolved = if path.starts_with('/') {
1201
1202
  PathBuf::from(path)
1202
1203
  } else {
1203
- self.cwd.join(path)
1204
+ vfs_join(&self.cwd, path)
1204
1205
  };
1205
1206
  let key = resolved.to_string_lossy().into_owned();
1206
1207
  // Bound the number of distinct redirect targets (DoS guard, parity with
@@ -451,6 +451,7 @@ fn normalize_awk_newlines(input: &str) -> String {
451
451
 
452
452
  mod interpreter;
453
453
  mod parser;
454
+ use crate::fs::vfs_join;
454
455
  use interpreter::{AwkFlow, AwkInterpreter};
455
456
  use parser::AwkParser;
456
457
 
@@ -535,7 +536,7 @@ impl Builtin for Awk {
535
536
  let path = if ctx.args[i].starts_with('/') {
536
537
  std::path::PathBuf::from(&ctx.args[i])
537
538
  } else {
538
- ctx.cwd.join(&ctx.args[i])
539
+ vfs_join(ctx.cwd, &ctx.args[i])
539
540
  };
540
541
  program_str = match read_text_file(&*ctx.fs, &path, "awk").await {
541
542
  Ok(t) => t,
@@ -615,7 +616,7 @@ impl Builtin for Awk {
615
616
  let path = if file.starts_with('/') {
616
617
  std::path::PathBuf::from(file)
617
618
  } else {
618
- ctx.cwd.join(file)
619
+ vfs_join(ctx.cwd, file)
619
620
  };
620
621
 
621
622
  let text = match read_text_file(&*ctx.fs, &path, "awk").await {
@@ -12,6 +12,7 @@ use std::path::Path;
12
12
 
13
13
  use super::{Builtin, Context};
14
14
  use crate::error::Result;
15
+ use crate::fs::vfs_join;
15
16
  use crate::interpreter::ExecResult;
16
17
 
17
18
  pub struct Cat;
@@ -72,7 +73,7 @@ impl Builtin for Cat {
72
73
  let path = if Path::new(file).is_absolute() {
73
74
  file.clone()
74
75
  } else {
75
- ctx.cwd.join(file).to_string_lossy().into_owned()
76
+ vfs_join(ctx.cwd, file).to_string_lossy().into_owned()
76
77
  };
77
78
  match ctx.fs.read_file(Path::new(&path)).await {
78
79
  Ok(bytes) => raw.extend_from_slice(&bytes),
@@ -7,6 +7,7 @@ use sha2::{Digest, Sha256};
7
7
 
8
8
  use super::{Builtin, Context};
9
9
  use crate::error::Result;
10
+ use crate::fs::vfs_join;
10
11
  use crate::interpreter::ExecResult;
11
12
 
12
13
  /// md5sum builtin - compute MD5 message digest
@@ -100,7 +101,7 @@ async fn checksum_execute<D: Digest>(ctx: &Context<'_>, cmd: &str) -> Result<Exe
100
101
  let path = if file.starts_with('/') {
101
102
  std::path::PathBuf::from(file)
102
103
  } else {
103
- ctx.cwd.join(file)
104
+ vfs_join(ctx.cwd, file)
104
105
  };
105
106
 
106
107
  match ctx.fs.read_file(&path).await {