bashkit 0.5.0__tar.gz → 0.6.0__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 (510) hide show
  1. {bashkit-0.5.0 → bashkit-0.6.0}/Cargo.lock +88 -9
  2. {bashkit-0.5.0 → bashkit-0.6.0}/Cargo.toml +13 -1
  3. {bashkit-0.5.0 → bashkit-0.6.0}/PKG-INFO +3 -1
  4. {bashkit-0.5.0/crates/bashkit-python → bashkit-0.6.0}/README.md +2 -0
  5. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/Cargo.toml +12 -0
  6. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/README.md +6 -7
  7. bashkit-0.6.0/crates/bashkit/src/builtins/clap_env.rs +255 -0
  8. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/export.rs +15 -6
  9. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/fileops.rs +145 -52
  10. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/cat_args.rs +15 -2
  11. bashkit-0.6.0/crates/bashkit/src/builtins/generated/extendedbigdecimal.rs +239 -0
  12. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/argument.rs +202 -0
  13. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/escape.rs +151 -0
  14. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/human.rs +37 -0
  15. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/mod.rs +347 -0
  16. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/num_format.rs +544 -0
  17. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/spec.rs +527 -0
  18. bashkit-0.6.0/crates/bashkit/src/builtins/generated/format_support.rs +126 -0
  19. bashkit-0.6.0/crates/bashkit/src/builtins/generated/ls_args.rs +971 -0
  20. bashkit-0.6.0/crates/bashkit/src/builtins/generated/mktemp_args.rs +161 -0
  21. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/mod.rs +14 -0
  22. bashkit-0.6.0/crates/bashkit/src/builtins/generated/num_parser.rs +441 -0
  23. bashkit-0.6.0/crates/bashkit/src/builtins/generated/od_args.rs +307 -0
  24. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/readlink_args.rs +13 -2
  25. bashkit-0.6.0/crates/bashkit/src/builtins/generated/realpath_args.rs +206 -0
  26. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/shuf_args.rs +15 -2
  27. bashkit-0.6.0/crates/bashkit/src/builtins/generated/stat_args.rs +107 -0
  28. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/tac_args.rs +15 -2
  29. bashkit-0.6.0/crates/bashkit/src/builtins/generated/tee_args.rs +139 -0
  30. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/generated/truncate_args.rs +15 -2
  31. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/hextools.rs +97 -48
  32. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/inspect.rs +62 -35
  33. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/args.rs +38 -0
  34. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/mod.rs +57 -2
  35. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/regex_compat.rs +41 -1
  36. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/tests.rs +67 -0
  37. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ls.rs +264 -45
  38. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/mod.rs +120 -0
  39. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/path.rs +88 -22
  40. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/pipeline.rs +55 -28
  41. bashkit-0.6.0/crates/bashkit/src/builtins/printf.rs +609 -0
  42. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/shuf.rs +232 -44
  43. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/dot_commands.rs +41 -16
  44. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/engine.rs +12 -1
  45. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/mod.rs +41 -14
  46. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/tests.rs +75 -0
  47. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/cmd.rs +34 -1
  48. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/russh_handler.rs +46 -10
  49. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/truncate.rs +75 -8
  50. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/credential.rs +65 -20
  51. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/limits.rs +147 -3
  52. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/memory.rs +26 -16
  53. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/mountable.rs +9 -1
  54. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/overlay.rs +2 -3
  55. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/realfs.rs +268 -9
  56. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/traits.rs +8 -4
  57. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interop/fs.rs +106 -14
  58. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interpreter/mod.rs +40 -6
  59. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/lib.rs +74 -19
  60. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/network/allowlist.rs +89 -10
  61. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/network/client.rs +267 -36
  62. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/network/mod.rs +1 -1
  63. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/execute.rs +6 -3
  64. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/extension.rs +41 -8
  65. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/mod.rs +110 -0
  66. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/toolset.rs +2 -2
  67. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/snapshot.rs +7 -2
  68. bashkit-0.6.0/crates/bashkit/src/testing.rs +412 -0
  69. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/tool_def.rs +64 -12
  70. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/blackbox_security_tests.rs +258 -0
  71. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/realfs_tests.rs +153 -23
  72. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/security_audit_pocs.rs +125 -0
  73. bashkit-0.6.0/crates/bashkit/tests/shuf_resource_tests.rs +30 -0
  74. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/snapshot_tests.rs +66 -6
  75. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/ln.test.sh +12 -0
  76. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/ls.test.sh +64 -0
  77. bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/mktemp.test.sh +49 -0
  78. bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/od.test.sh +43 -0
  79. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/path.test.sh +2 -1
  80. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/stat.test.sh +24 -0
  81. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tee.test.sh +16 -0
  82. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_integration_tests.rs +44 -0
  83. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_security_tests.rs +4 -7
  84. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/threat_model_tests.rs +76 -0
  85. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/unicode_security_tests.rs +63 -66
  86. bashkit-0.6.0/crates/bashkit/tests/workflow_security_tests.rs +85 -0
  87. {bashkit-0.5.0 → bashkit-0.6.0/crates/bashkit-python}/README.md +2 -0
  88. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/src/lib.rs +58 -10
  89. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_network_credentials.py +21 -0
  90. bashkit-0.5.0/crates/bashkit/src/builtins/printf.rs +0 -766
  91. bashkit-0.5.0/crates/bashkit/src/testing.rs +0 -155
  92. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/__init__.py +0 -0
  93. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/_bashkit.pyi +0 -0
  94. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/deepagents.py +0 -0
  95. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/langchain.py +0 -0
  96. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/py.typed +0 -0
  97. {bashkit-0.5.0 → bashkit-0.6.0}/bashkit/pydantic_ai.py +0 -0
  98. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/benches/parallel_execution.rs +0 -0
  99. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/benches/sqlite.rs +0 -0
  100. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/clap-builtins.md +0 -0
  101. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/compatibility.md +0 -0
  102. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/credential-injection.md +0 -0
  103. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/custom_builtins.md +0 -0
  104. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/hooks.md +0 -0
  105. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/jq.md +0 -0
  106. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/live_mounts.md +0 -0
  107. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/logging.md +0 -0
  108. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/python.md +0 -0
  109. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/sqlite.md +0 -0
  110. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/ssh.md +0 -0
  111. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/threat-model.md +0 -0
  112. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/docs/typescript.md +0 -0
  113. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/agent_tool.rs +0 -0
  114. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/basic.rs +0 -0
  115. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/clap_builtin.rs +0 -0
  116. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/clap_builtin_subcommands.rs +0 -0
  117. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/custom_backend.rs +0 -0
  118. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/custom_builtins.rs +0 -0
  119. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/custom_filesystem_impl.rs +0 -0
  120. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/custom_fs.rs +0 -0
  121. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/git_workflow.rs +0 -0
  122. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/live_mounts.rs +0 -0
  123. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/python_external_functions.rs +0 -0
  124. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/python_scripts.rs +0 -0
  125. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/realfs_readonly.rs +0 -0
  126. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/realfs_readwrite.rs +0 -0
  127. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/resource_limits.rs +0 -0
  128. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/scripted_tool.rs +0 -0
  129. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/show_tool_output.rs +0 -0
  130. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/sqlite_basic.rs +0 -0
  131. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/sqlite_workflow.rs +0 -0
  132. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/ssh_supabase.rs +0 -0
  133. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/streaming_output.rs +0 -0
  134. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/text_files.rs +0 -0
  135. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/text_processing.rs +0 -0
  136. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/typescript_external_functions.rs +0 -0
  137. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/typescript_scripts.rs +0 -0
  138. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/examples/virtual_identity.rs +0 -0
  139. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/proptest-regressions/builtins/sqlite/tests.txt +0 -0
  140. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/alias.rs +0 -0
  141. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/archive.rs +0 -0
  142. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/arg_parser.rs +0 -0
  143. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/assert.rs +0 -0
  144. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/awk.rs +0 -0
  145. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/base64.rs +0 -0
  146. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/bc.rs +0 -0
  147. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/caller.rs +0 -0
  148. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/cat.rs +0 -0
  149. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/checksum.rs +0 -0
  150. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/clear.rs +0 -0
  151. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/column.rs +0 -0
  152. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/comm.rs +0 -0
  153. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/compgen.rs +0 -0
  154. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/csv.rs +0 -0
  155. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/curl.rs +0 -0
  156. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/cuttr.rs +0 -0
  157. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/date.rs +0 -0
  158. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/diff.rs +0 -0
  159. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/dirstack.rs +0 -0
  160. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/disk.rs +0 -0
  161. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/dotenv.rs +0 -0
  162. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/echo.rs +0 -0
  163. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/environ.rs +0 -0
  164. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/envsubst.rs +0 -0
  165. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/expand.rs +0 -0
  166. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/expr.rs +0 -0
  167. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/fc.rs +0 -0
  168. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/flow.rs +0 -0
  169. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/fold.rs +0 -0
  170. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/client.rs +0 -0
  171. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/cmd.rs +0 -0
  172. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/config.rs +0 -0
  173. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/mod.rs +0 -0
  174. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/glob_cmd.rs +0 -0
  175. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/grep.rs +0 -0
  176. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/headtail.rs +0 -0
  177. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/help.rs +0 -0
  178. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/http.rs +0 -0
  179. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/iconv.rs +0 -0
  180. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/introspect.rs +0 -0
  181. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/join.rs +0 -0
  182. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/compat.rs +0 -0
  183. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/convert.rs +0 -0
  184. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/errors.rs +0 -0
  185. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/format.rs +0 -0
  186. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/json.rs +0 -0
  187. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/log.rs +0 -0
  188. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/mapfile.rs +0 -0
  189. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/mkfifo.rs +0 -0
  190. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/navigation.rs +0 -0
  191. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/nl.rs +0 -0
  192. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/numfmt.rs +0 -0
  193. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/parallel.rs +0 -0
  194. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/paste.rs +0 -0
  195. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/patch.rs +0 -0
  196. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/python.rs +0 -0
  197. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/read.rs +0 -0
  198. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/retry.rs +0 -0
  199. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/rg.rs +0 -0
  200. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/search_common.rs +0 -0
  201. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sed.rs +0 -0
  202. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/semver.rs +0 -0
  203. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/seq.rs +0 -0
  204. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sleep.rs +0 -0
  205. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sortuniq.rs +0 -0
  206. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/source.rs +0 -0
  207. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/split.rs +0 -0
  208. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/formatter.rs +0 -0
  209. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/parser.rs +0 -0
  210. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/vfs_io.rs +0 -0
  211. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/allowlist.rs +0 -0
  212. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/client.rs +0 -0
  213. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/config.rs +0 -0
  214. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/handler.rs +0 -0
  215. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/mod.rs +0 -0
  216. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/strings.rs +0 -0
  217. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/system.rs +0 -0
  218. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/template.rs +0 -0
  219. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/test.rs +0 -0
  220. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/textrev.rs +0 -0
  221. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/timeout.rs +0 -0
  222. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/tomlq.rs +0 -0
  223. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/trap.rs +0 -0
  224. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/tree.rs +0 -0
  225. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/typescript.rs +0 -0
  226. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/vars.rs +0 -0
  227. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/verify.rs +0 -0
  228. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/wait.rs +0 -0
  229. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/wc.rs +0 -0
  230. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/yaml.rs +0 -0
  231. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/yes.rs +0 -0
  232. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/builtins/zip_cmd.rs +0 -0
  233. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/error.rs +0 -0
  234. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/backend.rs +0 -0
  235. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/mod.rs +0 -0
  236. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/posix.rs +0 -0
  237. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/fs/search.rs +0 -0
  238. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/hooks.rs +0 -0
  239. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interop/mod.rs +0 -0
  240. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interpreter/glob.rs +0 -0
  241. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interpreter/jobs.rs +0 -0
  242. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/interpreter/state.rs +0 -0
  243. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/limits.rs +0 -0
  244. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/logging_impl.rs +0 -0
  245. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/network/bot_auth.rs +0 -0
  246. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/ast.rs +0 -0
  247. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/budget.rs +0 -0
  248. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/lexer.rs +0 -0
  249. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/mod.rs +0 -0
  250. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/span.rs +0 -0
  251. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/parser/tokens.rs +0 -0
  252. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/tool.rs +0 -0
  253. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/src/trace.rs +0 -0
  254. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/allexport_tests.rs +0 -0
  255. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/awk_fuzz_scaffold_tests.rs +0 -0
  256. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/awk_newline_tests.rs +0 -0
  257. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/awk_pattern_tests.rs +0 -0
  258. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/awk_printf_expr_test.rs +0 -0
  259. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/awk_range_pattern_tests.rs +0 -0
  260. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/background_exec_tests.rs +0 -0
  261. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/bash_source_tests.rs +0 -0
  262. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/builtin_error_security_tests.rs +0 -0
  263. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/byte_range_panic_tests.rs +0 -0
  264. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/cancellation_tests.rs +0 -0
  265. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/cmdsub_quote_test.rs +0 -0
  266. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/coproc_tests.rs +0 -0
  267. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/coreutils_differential_tests.rs +0 -0
  268. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/credential_injection_tests.rs +0 -0
  269. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/custom_builtins_tests.rs +0 -0
  270. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/custom_fs_tests.rs +0 -0
  271. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/dev_null_tests.rs +0 -0
  272. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/final_env_tests.rs +0 -0
  273. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/find_multi_path_tests.rs +0 -0
  274. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/git_advanced_tests.rs +0 -0
  275. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/git_inspection_tests.rs +0 -0
  276. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/git_integration_tests.rs +0 -0
  277. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/git_remote_security_tests.rs +0 -0
  278. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/git_security_tests.rs +0 -0
  279. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/harness_example_tests.rs +0 -0
  280. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/history_tests.rs +0 -0
  281. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_1175_test.rs +0 -0
  282. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_274_test.rs +0 -0
  283. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_275_279_282_test.rs +0 -0
  284. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_276_test.rs +0 -0
  285. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_277_test.rs +0 -0
  286. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_289_test.rs +0 -0
  287. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_290_test.rs +0 -0
  288. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_291_test.rs +0 -0
  289. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_853_test.rs +0 -0
  290. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_872_test.rs +0 -0
  291. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_873_test.rs +0 -0
  292. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/issue_875_test.rs +0 -0
  293. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/jq_fuzz_scaffold_tests.rs +0 -0
  294. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/live_mount_tests.rs +0 -0
  295. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/logging_security_tests.rs +0 -0
  296. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/mkfifo_tests.rs +0 -0
  297. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/nested_subscript_tests.rs +0 -0
  298. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/network_security_tests.rs +0 -0
  299. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/output_truncation_tests.rs +0 -0
  300. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/overlay_path_validation_tests.rs +0 -0
  301. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/proptest_differential.rs +0 -0
  302. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/proptest_security.rs +0 -0
  303. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/python_integration_tests.rs +0 -0
  304. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/python_security_tests.rs +0 -0
  305. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/regex_limit_tests.rs +0 -0
  306. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/release_profile_tests.rs +0 -0
  307. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/script_execution_tests.rs +0 -0
  308. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/security_failpoint_tests.rs +0 -0
  309. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/set_e_and_or_tests.rs +0 -0
  310. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_discover_rank.sh +0 -0
  311. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_generate_url.sh +0 -0
  312. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_query_capacity.sh +0 -0
  313. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/helm_validate_chart.sh +0 -0
  314. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/jwt_test_setup.sh +0 -0
  315. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_download_asset.sh +0 -0
  316. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_fetch.sh +0 -0
  317. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_verify_setup.sh +0 -0
  318. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/superpowers_find_polluter.sh +0 -0
  319. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/vercel_deploy.sh +0 -0
  320. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/skills_tests.rs +0 -0
  321. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/source_function_tests.rs +0 -0
  322. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/awk.test.sh +0 -0
  323. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/delete-array.test.sh +0 -0
  324. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/dev-stderr.test.sh +0 -0
  325. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/eval-bugs.test.sh +0 -0
  326. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/filename.test.sh +0 -0
  327. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/getline-file.test.sh +0 -0
  328. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/alias.test.sh +0 -0
  329. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/append_redirect.test.sh +0 -0
  330. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arith-dynamic.test.sh +0 -0
  331. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arithmetic-base-expansion.test.sh +0 -0
  332. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arithmetic.test.sh +0 -0
  333. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/array-slicing.test.sh +0 -0
  334. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/array-splat.test.sh +0 -0
  335. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arrays.test.sh +0 -0
  336. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/assoc-arrays.test.sh +0 -0
  337. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/awk-printf-width.test.sh +0 -0
  338. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/background.test.sh +0 -0
  339. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-c-exports.test.sh +0 -0
  340. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-command.test.sh +0 -0
  341. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-flags.test.sh +0 -0
  342. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-source-var.test.sh +0 -0
  343. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-stdin-pipe.test.sh +0 -0
  344. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bc.test.sh +0 -0
  345. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/blackbox-edge-cases.test.sh +0 -0
  346. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/blackbox-exploration.test.sh +0 -0
  347. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/brace-expansion.test.sh +0 -0
  348. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/brace_expansion_lookahead.test.sh +0 -0
  349. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cat.test.sh +0 -0
  350. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/checksum.test.sh +0 -0
  351. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/chown-kill.test.sh +0 -0
  352. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cmd-suggestions.test.sh +0 -0
  353. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cmdsub_depth_unquoted.test.sh +0 -0
  354. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/column.test.sh +0 -0
  355. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/comm.test.sh +0 -0
  356. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command-not-found.test.sh +0 -0
  357. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command-subst.test.sh +0 -0
  358. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command.test.sh +0 -0
  359. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command_v.test.sh +0 -0
  360. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/compgen-path.test.sh +0 -0
  361. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/conditional-short-circuit.test.sh +0 -0
  362. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/conditional.test.sh +0 -0
  363. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/control-flow.test.sh +0 -0
  364. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cuttr.test.sh +0 -0
  365. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/date.test.sh +0 -0
  366. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/declare.test.sh +0 -0
  367. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/df.test.sh +0 -0
  368. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/diff.test.sh +0 -0
  369. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/dirstack.test.sh +0 -0
  370. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/du.test.sh +0 -0
  371. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/echo.test.sh +0 -0
  372. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/empty-bodies.test.sh +0 -0
  373. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/env.test.sh +0 -0
  374. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/errexit.test.sh +0 -0
  375. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/eval-bugs.test.sh +0 -0
  376. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-command.test.sh +0 -0
  377. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-redirect.test.sh +0 -0
  378. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-variable.test.sh +0 -0
  379. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exit-status.test.sh +0 -0
  380. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/expr.test.sh +0 -0
  381. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/extglob.test.sh +0 -0
  382. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/file.test.sh +0 -0
  383. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/fileops.test.sh +0 -0
  384. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/find.test.sh +0 -0
  385. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/functions.test.sh +0 -0
  386. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/getopts.test.sh +0 -0
  387. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/glob-options.test.sh +0 -0
  388. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/glob_match_cap.test.sh +0 -0
  389. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/globs.test.sh +0 -0
  390. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/gzip.test.sh +0 -0
  391. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/headtail.test.sh +0 -0
  392. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/help-flag.test.sh +0 -0
  393. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/heredoc-edge.test.sh +0 -0
  394. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/heredoc.test.sh +0 -0
  395. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/herestring.test.sh +0 -0
  396. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/hextools.test.sh +0 -0
  397. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/history.test.sh +0 -0
  398. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/indirect-expansion.test.sh +0 -0
  399. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/less.test.sh +0 -0
  400. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/memory_budget_desync.test.sh +0 -0
  401. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nameref-assoc.test.sh +0 -0
  402. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nameref.test.sh +0 -0
  403. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/negative-tests.test.sh +0 -0
  404. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nl.test.sh +0 -0
  405. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nounset.test.sh +0 -0
  406. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/numfmt.test.sh +0 -0
  407. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/parse-errors.test.sh +0 -0
  408. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/paste-flags.test.sh +0 -0
  409. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/paste.test.sh +0 -0
  410. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/pipes-redirects.test.sh +0 -0
  411. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/printenv.test.sh +0 -0
  412. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/printf.test.sh +0 -0
  413. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/procsub.test.sh +0 -0
  414. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/quote.test.sh +0 -0
  415. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/read-builtin.test.sh +0 -0
  416. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/readlink.test.sh +0 -0
  417. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/recursive-cmdsub.test.sh +0 -0
  418. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/regex-limit.test.sh +0 -0
  419. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/replace_pattern_limit.test.sh +0 -0
  420. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/script-exec.test.sh +0 -0
  421. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/seq.test.sh +0 -0
  422. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/set-allexport.test.sh +0 -0
  423. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/shell-grammar.test.sh +0 -0
  424. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/shuf.test.sh +0 -0
  425. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/sleep.test.sh +0 -0
  426. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/sortuniq.test.sh +0 -0
  427. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/source.test.sh +0 -0
  428. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/string-ops.test.sh +0 -0
  429. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/strings.test.sh +0 -0
  430. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/subprocess-isolation.test.sh +0 -0
  431. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/subshell.test.sh +0 -0
  432. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tar.test.sh +0 -0
  433. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tar_create.test.sh +0 -0
  434. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/temp-binding.test.sh +0 -0
  435. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/test-operators.test.sh +0 -0
  436. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/test-tty.test.sh +0 -0
  437. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/textrev.test.sh +0 -0
  438. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/time.test.sh +0 -0
  439. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/timeout.test.sh +0 -0
  440. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tree.test.sh +0 -0
  441. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/truncate.test.sh +0 -0
  442. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/type.test.sh +0 -0
  443. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/unicode.test.sh +0 -0
  444. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/unset-exported-var.test.sh +0 -0
  445. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/var-op-test.test.sh +0 -0
  446. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/variables.test.sh +0 -0
  447. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/wait.test.sh +0 -0
  448. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/watch.test.sh +0 -0
  449. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/wc.test.sh +0 -0
  450. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/word-split.test.sh +0 -0
  451. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/xargs.test.sh +0 -0
  452. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/eval-bugs.test.sh +0 -0
  453. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/grep.test.sh +0 -0
  454. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/rg.test.sh +0 -0
  455. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/jq/jq.test.sh +0 -0
  456. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/python/env_leak.test.sh +0 -0
  457. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/python/python.test.sh +0 -0
  458. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/sed/eval-bugs.test.sh +0 -0
  459. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/sed/sed.test.sh +0 -0
  460. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/typescript/typescript.test.sh +0 -0
  461. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_runner.rs +0 -0
  462. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/spec_tests.rs +0 -0
  463. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_compat_tests.rs +0 -0
  464. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_differential_tests.rs +0 -0
  465. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_fuzz_tests.rs +0 -0
  466. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/ssh_builtin_tests.rs +0 -0
  467. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/ssh_supabase_tests.rs +0 -0
  468. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/stack_overflow_regression_tests.rs +0 -0
  469. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/subst_depth_limit_tests.rs +0 -0
  470. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/symlink_overlay_security_tests.rs +0 -0
  471. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/tty_tests.rs +0 -0
  472. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/typescript_integration_tests.rs +0 -0
  473. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/typescript_security_tests.rs +0 -0
  474. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/unset_function_tests.rs +0 -0
  475. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit/tests/urandom_tests.rs +0 -0
  476. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/Cargo.toml +0 -0
  477. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/bash_basics.py +0 -0
  478. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/custom_filesystem_interop.py +0 -0
  479. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/data_pipeline.py +0 -0
  480. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/fastapi_async_tool.py +0 -0
  481. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/jupyter_async_test.ipynb +0 -0
  482. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/k8s_orchestrator.py +0 -0
  483. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/langgraph_async_tool.py +0 -0
  484. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/examples/llm_tool.py +0 -0
  485. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/_bashkit_categories.py +0 -0
  486. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/_security_advanced.py +0 -0
  487. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/_security_core.py +0 -0
  488. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_ai_adapters.py +0 -0
  489. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_async_callbacks.py +0 -0
  490. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_basic.py +0 -0
  491. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_builtins.py +0 -0
  492. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_control_flow.py +0 -0
  493. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_error_handling.py +0 -0
  494. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_fastapi_integration.py +0 -0
  495. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_filesystem_interop.py +0 -0
  496. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_integration.py +0 -0
  497. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_jupyter_compat.py +0 -0
  498. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_langgraph_integration.py +0 -0
  499. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_network_config.py +0 -0
  500. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_python_security.py +0 -0
  501. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_registered_tools.py +0 -0
  502. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_scripts.py +0 -0
  503. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_security.py +0 -0
  504. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_shell_injection.py +0 -0
  505. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_sqlite.py +0 -0
  506. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_streaming_output.py +0 -0
  507. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_strings_and_quoting.py +0 -0
  508. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_tool_metadata.py +0 -0
  509. {bashkit-0.5.0 → bashkit-0.6.0}/crates/bashkit-python/tests/test_vfs.py +0 -0
  510. {bashkit-0.5.0 → bashkit-0.6.0}/pyproject.toml +0 -0
@@ -345,11 +345,12 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
345
345
 
346
346
  [[package]]
347
347
  name = "bashkit"
348
- version = "0.5.0"
348
+ version = "0.6.0"
349
349
  dependencies = [
350
350
  "anyhow",
351
351
  "async-trait",
352
352
  "base64",
353
+ "bigdecimal",
353
354
  "chrono",
354
355
  "clap",
355
356
  "criterion",
@@ -359,6 +360,7 @@ dependencies = [
359
360
  "flate2",
360
361
  "futures-core",
361
362
  "futures-util",
363
+ "getrandom 0.4.2",
362
364
  "hmac 0.13.0",
363
365
  "insta",
364
366
  "jaq-core",
@@ -366,6 +368,8 @@ dependencies = [
366
368
  "jaq-std",
367
369
  "md-5",
368
370
  "monty",
371
+ "num-traits",
372
+ "os_display",
369
373
  "pretty_assertions",
370
374
  "proptest",
371
375
  "rand 0.10.1",
@@ -386,6 +390,7 @@ dependencies = [
386
390
  "tower",
387
391
  "tracing",
388
392
  "turso_core",
393
+ "unit-prefix",
389
394
  "url",
390
395
  "zapcode-core",
391
396
  "zeroize",
@@ -393,7 +398,7 @@ dependencies = [
393
398
 
394
399
  [[package]]
395
400
  name = "bashkit-bench"
396
- version = "0.5.0"
401
+ version = "0.6.0"
397
402
  dependencies = [
398
403
  "anyhow",
399
404
  "bashkit",
@@ -407,7 +412,7 @@ dependencies = [
407
412
 
408
413
  [[package]]
409
414
  name = "bashkit-cli"
410
- version = "0.5.0"
415
+ version = "0.6.0"
411
416
  dependencies = [
412
417
  "anyhow",
413
418
  "bashkit",
@@ -423,18 +428,21 @@ dependencies = [
423
428
 
424
429
  [[package]]
425
430
  name = "bashkit-coreutils-port"
426
- version = "0.5.0"
431
+ version = "0.6.0"
427
432
  dependencies = [
428
433
  "anyhow",
429
434
  "prettyplease",
430
435
  "proc-macro2",
431
436
  "quote",
437
+ "serde",
432
438
  "syn",
439
+ "tempfile",
440
+ "toml",
433
441
  ]
434
442
 
435
443
  [[package]]
436
444
  name = "bashkit-eval"
437
- version = "0.5.0"
445
+ version = "0.6.0"
438
446
  dependencies = [
439
447
  "anyhow",
440
448
  "async-trait",
@@ -451,7 +459,7 @@ dependencies = [
451
459
 
452
460
  [[package]]
453
461
  name = "bashkit-js"
454
- version = "0.5.0"
462
+ version = "0.6.0"
455
463
  dependencies = [
456
464
  "bashkit",
457
465
  "napi",
@@ -464,7 +472,7 @@ dependencies = [
464
472
 
465
473
  [[package]]
466
474
  name = "bashkit-python"
467
- version = "0.5.0"
475
+ version = "0.6.0"
468
476
  dependencies = [
469
477
  "bashkit",
470
478
  "num-bigint",
@@ -1813,11 +1821,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1813
1821
  checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
1814
1822
  dependencies = [
1815
1823
  "cfg-if",
1824
+ "js-sys",
1816
1825
  "libc",
1817
1826
  "r-efi 6.0.0",
1818
1827
  "rand_core 0.10.1",
1819
1828
  "wasip2",
1820
1829
  "wasip3",
1830
+ "wasm-bindgen",
1821
1831
  ]
1822
1832
 
1823
1833
  [[package]]
@@ -3045,6 +3055,15 @@ dependencies = [
3045
3055
  "indexmap",
3046
3056
  ]
3047
3057
 
3058
+ [[package]]
3059
+ name = "os_display"
3060
+ version = "0.1.4"
3061
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3062
+ checksum = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f"
3063
+ dependencies = [
3064
+ "unicode-width 0.2.2",
3065
+ ]
3066
+
3048
3067
  [[package]]
3049
3068
  name = "owo-colors"
3050
3069
  version = "3.5.0"
@@ -4781,6 +4800,15 @@ dependencies = [
4781
4800
  "zmij",
4782
4801
  ]
4783
4802
 
4803
+ [[package]]
4804
+ name = "serde_spanned"
4805
+ version = "1.1.1"
4806
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4807
+ checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
4808
+ dependencies = [
4809
+ "serde_core",
4810
+ ]
4811
+
4784
4812
  [[package]]
4785
4813
  name = "serdect"
4786
4814
  version = "0.4.2"
@@ -5363,9 +5391,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
5363
5391
 
5364
5392
  [[package]]
5365
5393
  name = "tokio"
5366
- version = "1.52.1"
5394
+ version = "1.52.3"
5367
5395
  source = "registry+https://github.com/rust-lang/crates.io-index"
5368
- checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6"
5396
+ checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
5369
5397
  dependencies = [
5370
5398
  "bytes",
5371
5399
  "libc",
@@ -5433,6 +5461,45 @@ dependencies = [
5433
5461
  "tokio",
5434
5462
  ]
5435
5463
 
5464
+ [[package]]
5465
+ name = "toml"
5466
+ version = "1.1.2+spec-1.1.0"
5467
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5468
+ checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
5469
+ dependencies = [
5470
+ "indexmap",
5471
+ "serde_core",
5472
+ "serde_spanned",
5473
+ "toml_datetime",
5474
+ "toml_parser",
5475
+ "toml_writer",
5476
+ "winnow",
5477
+ ]
5478
+
5479
+ [[package]]
5480
+ name = "toml_datetime"
5481
+ version = "1.1.1+spec-1.1.0"
5482
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5483
+ checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
5484
+ dependencies = [
5485
+ "serde_core",
5486
+ ]
5487
+
5488
+ [[package]]
5489
+ name = "toml_parser"
5490
+ version = "1.1.2+spec-1.1.0"
5491
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5492
+ checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
5493
+ dependencies = [
5494
+ "winnow",
5495
+ ]
5496
+
5497
+ [[package]]
5498
+ name = "toml_writer"
5499
+ version = "1.1.1+spec-1.1.0"
5500
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5501
+ checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
5502
+
5436
5503
  [[package]]
5437
5504
  name = "tower"
5438
5505
  version = "0.5.3"
@@ -5755,6 +5822,12 @@ dependencies = [
5755
5822
  "rand 0.8.6",
5756
5823
  ]
5757
5824
 
5825
+ [[package]]
5826
+ name = "unit-prefix"
5827
+ version = "0.5.2"
5828
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5829
+ checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
5830
+
5758
5831
  [[package]]
5759
5832
  name = "universal-hash"
5760
5833
  version = "0.5.1"
@@ -6237,6 +6310,12 @@ version = "0.52.6"
6237
6310
  source = "registry+https://github.com/rust-lang/crates.io-index"
6238
6311
  checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6239
6312
 
6313
+ [[package]]
6314
+ name = "winnow"
6315
+ version = "1.0.2"
6316
+ source = "registry+https://github.com/rust-lang/crates.io-index"
6317
+ checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0"
6318
+
6240
6319
  [[package]]
6241
6320
  name = "wit-bindgen"
6242
6321
  version = "0.51.0"
@@ -7,7 +7,7 @@ resolver = "2"
7
7
  members = ["crates/*"]
8
8
 
9
9
  [workspace.package]
10
- version = "0.5.0"
10
+ version = "0.6.0"
11
11
  edition = "2024"
12
12
  license = "MIT"
13
13
  authors = ["Everruns"]
@@ -69,7 +69,19 @@ ed25519-dalek = { version = "2", features = ["rand_core"] }
69
69
  rand = "0.10"
70
70
  zeroize = "1"
71
71
 
72
+ # CSPRNG for placeholder token generation (security-grade randomness).
73
+ # Important decision: enable `wasm_js` so the public `wasm32-unknown-unknown`
74
+ # build gate stays green; bashkit targets JS-backed wasm for that triple.
75
+ # Used by the credential placeholder generator; getrandom is the lowest-level
76
+ # CSPRNG primitive and is already transitively in the dep tree via reqwest/rustls.
77
+ getrandom = { version = "0.4", features = ["wasm_js"] }
78
+
72
79
  # CLI
80
+ # Intentionally NOT enabling clap's `env` feature: it makes `Arg::env(...)`
81
+ # read defaults from `std::env`, which would tunnel host process state into
82
+ # the bashkit sandbox (TM-INF-023). The coreutils-args-port codegen strips
83
+ # `.env(...)` chains from vendored Arg builders; dropping the feature here
84
+ # is defence-in-depth so any re-introduction fails to compile.
73
85
  clap = { version = "4", features = ["derive"] }
74
86
 
75
87
  # Testing
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bashkit
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -41,6 +41,8 @@ Project-URL: Repository, https://github.com/everruns/bashkit
41
41
 
42
42
  Sandboxed bash interpreter for Python. Native bindings to the `bashkit` Rust core for fast, in-process execution with a virtual filesystem.
43
43
 
44
+ Homepage: [bashkit.sh](https://bashkit.sh)
45
+
44
46
  ## Features
45
47
 
46
48
  - Sandboxed execution in-process, without containers or subprocess orchestration
@@ -4,6 +4,8 @@
4
4
 
5
5
  Sandboxed bash interpreter for Python. Native bindings to the `bashkit` Rust core for fast, in-process execution with a virtual filesystem.
6
6
 
7
+ Homepage: [bashkit.sh](https://bashkit.sh)
8
+
7
9
  ## Features
8
10
 
9
11
  - Sandboxed execution in-process, without containers or subprocess orchestration
@@ -68,6 +68,9 @@ ed25519-dalek = { workspace = true, optional = true }
68
68
  rand = { workspace = true, optional = true }
69
69
  zeroize = { workspace = true, optional = true }
70
70
 
71
+ # CSPRNG for credential placeholder generation
72
+ getrandom = { workspace = true }
73
+
71
74
  # Checksums (for md5sum, sha1sum, sha256sum builtins)
72
75
  md-5 = { workspace = true }
73
76
  sha1 = { workspace = true }
@@ -81,6 +84,15 @@ tracing = { workspace = true, optional = true }
81
84
  # argument surfaces. Always on — see specs/coreutils-args-port.md.
82
85
  clap = { workspace = true }
83
86
 
87
+ # Pinned to uutils' workspace versions. Used by the vendored
88
+ # uucore::format module (see crates/bashkit/src/builtins/generated/format)
89
+ # that backs `printf`. Kept platform-clean — no rustix / errno
90
+ # transitive deps — so wasm32 stays buildable.
91
+ bigdecimal = "0.4"
92
+ num-traits = "0.2"
93
+ unit-prefix = "0.5"
94
+ os_display = "0.1.3"
95
+
84
96
  # Embedded Python interpreter (optional)
85
97
  monty = { git = "https://github.com/pydantic/monty", rev = "49faa4c", optional = true }
86
98
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  Awesomely fast virtual sandbox with bash and file system. Written in Rust.
10
10
 
11
+ Homepage: [bashkit.sh](https://bashkit.sh)
12
+
11
13
  ## Features
12
14
 
13
15
  - **Secure by default** - No process spawning, no filesystem access, no network access unless explicitly enabled. [250+ threats](specs/threat-model.md) analyzed and mitigated
@@ -21,7 +23,6 @@ Awesomely fast virtual sandbox with bash and file system. Written in Rust.
21
23
  - **LLM tool contract** - `BashTool` with discovery metadata, streaming output, and system prompts
22
24
  - **Snapshotting** - Serialize shell state and VFS contents for checkpoint/resume workflows
23
25
  - **Scripted tool orchestration** - Compose ToolDef+callback pairs into multi-tool bash scripts (`scripted_tool` feature)
24
- - **MCP server** - Model Context Protocol endpoint via `bashkit mcp`
25
26
  - **Async-first** - Built on tokio
26
27
  - **Language bindings** - Python (PyO3) and JavaScript/TypeScript (NAPI-RS) for Node.js, Bun, and Deno
27
28
  - **Experimental: Git support** - Virtual git operations on the virtual filesystem (`git` feature)
@@ -372,17 +373,15 @@ mountable.mount("/data", Arc::new(InMemoryFs::new()));
372
373
 
373
374
  ```bash
374
375
  # Run a script
375
- bashkit run script.sh
376
+ bashkit script.sh
376
377
 
377
378
  # Interactive REPL
378
- bashkit repl
379
+ bashkit
379
380
 
380
- # MCP server (Model Context Protocol)
381
- bashkit mcp
382
381
 
383
382
  # Mount real filesystem (read-only or read-write)
384
- bashkit run script.sh --mount-ro /data
385
- bashkit run script.sh --mount-rw /workspace
383
+ bashkit --mount-ro /data script.sh
384
+ bashkit --mount-rw /workspace script.sh
386
385
  ```
387
386
 
388
387
  ## Development
@@ -0,0 +1,255 @@
1
+ //! Virtual-env shim for clap-based ported builtins.
2
+ //!
3
+ //! uutils' `uu_app()` ships `Arg::env("FOO")` to default options like
4
+ //! `TIME_STYLE` / `BLOCK_SIZE` / `LS_COLORS` from the host process
5
+ //! environment. bashkit sandboxes scripts inside `ctx.env`, so codegen
6
+ //! strips `.env(...)` from the runtime Arg chain (TM-INF-024) and
7
+ //! instead emits a sidecar `<UTIL>_ENV_DEFAULTS: &[EnvDefault]` table
8
+ //! recording what was stripped.
9
+ //!
10
+ //! `apply_env_defaults` reads that table plus the caller's virtual
11
+ //! `ctx.env` and rewrites argv before clap sees it, emulating clap's
12
+ //! own "argv > env > default" precedence — but sourced from the
13
+ //! sandbox, never `std::env`. One bashkit-side seam, one audit point.
14
+
15
+ use std::collections::HashMap;
16
+ use std::ffi::OsString;
17
+
18
+ /// How an `Arg`'s value materialises on the command line. Mirrors the
19
+ /// shape of the clap chain we found `.env(...)` next to.
20
+ //
21
+ // `Multi` and (later) other variants are reserved for upcoming codegen
22
+ // emissions — current ported utils only exercise `Single`. Allow dead
23
+ // code so the surface stays committed without forcing a port that
24
+ // uses it on day one.
25
+ #[allow(dead_code)]
26
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
27
+ pub enum EnvKind {
28
+ /// `--<long> <value>`. The default for value-bearing options
29
+ /// (uutils' `TIME_STYLE`, `TABSIZE`, `BLOCK_SIZE`, …).
30
+ Single,
31
+ /// `--<long>` with no value. uutils sets `.action(SetTrue)` for
32
+ /// boolean env-defaulted toggles (none ported yet but reserved
33
+ /// so codegen can emit them without shim changes). Truthy iff
34
+ /// the env value is non-empty (matches clap's behaviour).
35
+ Bool,
36
+ /// Multi-value, comma-or-delim-separated. uutils uses
37
+ /// `.value_delimiter(',')` for things like
38
+ /// `LS_COLORS`-adjacent lists. We push `--<long>` once with the
39
+ /// raw value; clap re-splits it via its own delimiter setting.
40
+ Multi,
41
+ }
42
+
43
+ /// One stripped `.env(...)` annotation, harvested at codegen time.
44
+ ///
45
+ /// Lives in `static`-friendly form so generated files can place these
46
+ /// in a `&'static [EnvDefault]` slice without any runtime allocation.
47
+ #[derive(Debug, Clone, Copy)]
48
+ pub struct EnvDefault {
49
+ /// `Arg::new(arg_id)` — matches `ArgMatches::ids()` post-parse.
50
+ /// Carried so callers / round-trip diagnostics can correlate a
51
+ /// default back to its clap option even though the shim itself
52
+ /// only needs `long`. Held intentionally; suppress the unused-field
53
+ /// warning until a consumer reaches for it.
54
+ #[allow(dead_code)]
55
+ pub arg_id: &'static str,
56
+ /// `Arg::long(long)` — the long flag we synthesise into argv.
57
+ pub long: &'static str,
58
+ /// The env-var name uutils originally pulled from `std::env`.
59
+ /// We read this from `ctx.env` instead.
60
+ pub env_var: &'static str,
61
+ /// Drives the argv shape we synthesise.
62
+ pub kind: EnvKind,
63
+ }
64
+
65
+ /// Inject env-sourced defaults into argv before handing it to clap.
66
+ ///
67
+ /// Precedence (matches clap's own `Arg::env`):
68
+ /// 1. argv (if user already passed `--<long>` or `--<long>=…`, leave it).
69
+ /// 2. ctx.env[env_var] (if set, synthesise `--<long> <value>`).
70
+ /// 3. clap's `.default_value(...)` (untouched).
71
+ ///
72
+ /// `argv[0]` is the program name (clap convention); we never inspect or
73
+ /// modify it. Synthesised entries are appended *after* the existing
74
+ /// argv; clap doesn't care about positional order for flags. Positional
75
+ /// arguments are unaffected — none of the env-bound uutils args are
76
+ /// positional.
77
+ ///
78
+ /// Empty env value = unset, intentionally:
79
+ /// - For `Single`/`Multi`, clap would reject an empty value via
80
+ /// `NonEmptyStringValueParser` anyway (uutils' default for these).
81
+ /// - For `Bool`, clap's own `Arg::env` matches "non-empty" as truthy.
82
+ pub fn apply_env_defaults(
83
+ mut argv: Vec<OsString>,
84
+ defaults: &[EnvDefault],
85
+ env: &HashMap<String, String>,
86
+ ) -> Vec<OsString> {
87
+ for d in defaults {
88
+ if argv_has_long(&argv, d.long) {
89
+ continue;
90
+ }
91
+ let Some(val) = env.get(d.env_var) else {
92
+ continue;
93
+ };
94
+ if val.is_empty() {
95
+ continue;
96
+ }
97
+ let long_flag = format!("--{}", d.long);
98
+ match d.kind {
99
+ EnvKind::Bool => argv.push(OsString::from(long_flag)),
100
+ EnvKind::Single | EnvKind::Multi => {
101
+ argv.push(OsString::from(long_flag));
102
+ argv.push(OsString::from(val));
103
+ }
104
+ }
105
+ }
106
+ argv
107
+ }
108
+
109
+ /// Returns `true` iff argv already specifies `--<long>` (with or
110
+ /// without an attached `=value`). Matches clap's own
111
+ /// "is-this-flag-already-set" check shape, modulo short flags — uutils
112
+ /// only env-defaults options that have a `.long(...)`, so we only check
113
+ /// the long form. Skips index 0 (program name).
114
+ fn argv_has_long(argv: &[OsString], long: &str) -> bool {
115
+ let exact = format!("--{long}");
116
+ let prefix = format!("--{long}=");
117
+ argv.iter().skip(1).any(|a| {
118
+ let Some(s) = a.to_str() else {
119
+ return false;
120
+ };
121
+ s == exact || s.starts_with(&prefix)
122
+ })
123
+ }
124
+
125
+ #[cfg(test)]
126
+ mod tests {
127
+ use super::*;
128
+
129
+ fn argv(parts: &[&str]) -> Vec<OsString> {
130
+ parts.iter().map(OsString::from).collect()
131
+ }
132
+
133
+ fn env(pairs: &[(&str, &str)]) -> HashMap<String, String> {
134
+ pairs
135
+ .iter()
136
+ .map(|(k, v)| ((*k).to_string(), (*v).to_string()))
137
+ .collect()
138
+ }
139
+
140
+ const TIME_STYLE: EnvDefault = EnvDefault {
141
+ arg_id: "time-style",
142
+ long: "time-style",
143
+ env_var: "TIME_STYLE",
144
+ kind: EnvKind::Single,
145
+ };
146
+ const TABSIZE: EnvDefault = EnvDefault {
147
+ arg_id: "tab-size",
148
+ long: "tabsize",
149
+ env_var: "TABSIZE",
150
+ kind: EnvKind::Single,
151
+ };
152
+ const COLOR_TOGGLE: EnvDefault = EnvDefault {
153
+ arg_id: "color",
154
+ long: "color",
155
+ env_var: "CLICOLOR",
156
+ kind: EnvKind::Bool,
157
+ };
158
+
159
+ #[test]
160
+ fn single_value_env_synthesised_when_argv_silent() {
161
+ let out = apply_env_defaults(
162
+ argv(&["ls"]),
163
+ &[TIME_STYLE],
164
+ &env(&[("TIME_STYLE", "long-iso")]),
165
+ );
166
+ assert_eq!(out, argv(&["ls", "--time-style", "long-iso"]));
167
+ }
168
+
169
+ #[test]
170
+ fn argv_long_overrides_env_default() {
171
+ let out = apply_env_defaults(
172
+ argv(&["ls", "--time-style", "iso"]),
173
+ &[TIME_STYLE],
174
+ &env(&[("TIME_STYLE", "long-iso")]),
175
+ );
176
+ // ctx.env value not appended; original argv preserved verbatim.
177
+ assert_eq!(out, argv(&["ls", "--time-style", "iso"]));
178
+ }
179
+
180
+ #[test]
181
+ fn argv_long_equals_form_overrides_env_default() {
182
+ let out = apply_env_defaults(
183
+ argv(&["ls", "--time-style=iso"]),
184
+ &[TIME_STYLE],
185
+ &env(&[("TIME_STYLE", "long-iso")]),
186
+ );
187
+ assert_eq!(out, argv(&["ls", "--time-style=iso"]));
188
+ }
189
+
190
+ #[test]
191
+ fn missing_env_var_leaves_argv_alone() {
192
+ let out = apply_env_defaults(argv(&["ls"]), &[TIME_STYLE], &env(&[]));
193
+ assert_eq!(out, argv(&["ls"]));
194
+ }
195
+
196
+ #[test]
197
+ fn empty_env_value_is_treated_as_unset() {
198
+ // Matches clap::Arg::env behaviour: empty == not set for value
199
+ // options (NonEmptyStringValueParser would reject anyway).
200
+ let out = apply_env_defaults(argv(&["ls"]), &[TIME_STYLE], &env(&[("TIME_STYLE", "")]));
201
+ assert_eq!(out, argv(&["ls"]));
202
+ }
203
+
204
+ #[test]
205
+ fn bool_kind_appends_flag_only() {
206
+ let out = apply_env_defaults(argv(&["ls"]), &[COLOR_TOGGLE], &env(&[("CLICOLOR", "1")]));
207
+ assert_eq!(out, argv(&["ls", "--color"]));
208
+ }
209
+
210
+ #[test]
211
+ fn multiple_defaults_processed_independently() {
212
+ let out = apply_env_defaults(
213
+ argv(&["ls"]),
214
+ &[TIME_STYLE, TABSIZE],
215
+ &env(&[("TIME_STYLE", "iso"), ("TABSIZE", "4")]),
216
+ );
217
+ assert_eq!(out, argv(&["ls", "--time-style", "iso", "--tabsize", "4"]));
218
+ }
219
+
220
+ #[test]
221
+ fn does_not_read_std_env() {
222
+ // Sanity: a var present on the host process but absent from
223
+ // ctx.env must NOT leak through. Belt-and-braces against
224
+ // future regressions of TM-INF-024; the fn signature already
225
+ // forbids std::env access (no &std::env::Vars argument).
226
+ // SAFETY: `std::env::set_var` is unsafe in 2024 edition; this
227
+ // test reads its own var only, doesn't race with anything.
228
+ unsafe { std::env::set_var("TIME_STYLE_HOST_LEAK_PROBE", "leaked") };
229
+ let out = apply_env_defaults(
230
+ argv(&["ls"]),
231
+ &[EnvDefault {
232
+ arg_id: "probe",
233
+ long: "probe",
234
+ env_var: "TIME_STYLE_HOST_LEAK_PROBE",
235
+ kind: EnvKind::Single,
236
+ }],
237
+ &env(&[]), // empty virtual env
238
+ );
239
+ unsafe { std::env::remove_var("TIME_STYLE_HOST_LEAK_PROBE") };
240
+ assert_eq!(out, argv(&["ls"]));
241
+ }
242
+
243
+ #[test]
244
+ fn argv_program_name_is_never_matched_as_flag() {
245
+ // If someone passes argv[0] = "--time-style" by mistake, we
246
+ // must still inject the env default — argv[0] is the program
247
+ // name slot per clap convention.
248
+ let out = apply_env_defaults(
249
+ argv(&["--time-style"]),
250
+ &[TIME_STYLE],
251
+ &env(&[("TIME_STYLE", "iso")]),
252
+ );
253
+ assert_eq!(out, argv(&["--time-style", "--time-style", "iso"]));
254
+ }
255
+ }
@@ -27,6 +27,9 @@ impl Builtin for Export {
27
27
  return Ok(ExecResult::ok(output));
28
28
  }
29
29
 
30
+ let mut stderr = String::new();
31
+ let mut exit_code = 0;
32
+
30
33
  for arg in ctx.args {
31
34
  // Handle NAME=VALUE format
32
35
  if let Some(eq_pos) = arg.find('=') {
@@ -34,17 +37,19 @@ impl Builtin for Export {
34
37
  let value = &arg[eq_pos + 1..];
35
38
  // Validate variable name
36
39
  if !is_valid_var_name(name) {
37
- return Ok(ExecResult::err(
38
- format!("export: `{}': not a valid identifier\n", arg),
39
- 1,
40
- ));
40
+ stderr.push_str(&format!("export: `{arg}': not a valid identifier\n"));
41
+ exit_code = 1;
42
+ continue;
41
43
  }
42
44
  // THREAT[TM-INJ-015]: Block internal variable prefix injection via export
43
45
  if is_internal_variable(name) {
44
46
  continue;
45
47
  }
46
- // THREAT[TM-INJ-021]: Refuse to overwrite readonly variables
48
+ // THREAT[TM-INJ-021]: Refuse to overwrite readonly variables and
49
+ // surface the error so callers cannot mistake a silent skip for success.
47
50
  if ctx.variables.contains_key(&format!("_READONLY_{}", name)) {
51
+ stderr.push_str(&format!("bash: export: {name}: readonly variable\n"));
52
+ exit_code = 1;
48
53
  continue;
49
54
  }
50
55
  ctx.variables.insert(name.to_string(), value.to_string());
@@ -54,6 +59,10 @@ impl Builtin for Export {
54
59
  }
55
60
  }
56
61
 
57
- Ok(ExecResult::ok(String::new()))
62
+ Ok(ExecResult {
63
+ stderr,
64
+ exit_code,
65
+ ..Default::default()
66
+ })
58
67
  }
59
68
  }