bashkit 0.10.0__tar.gz → 0.11.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.
- {bashkit-0.10.0 → bashkit-0.11.0}/Cargo.lock +35 -35
- {bashkit-0.10.0 → bashkit-0.11.0}/Cargo.toml +2 -2
- {bashkit-0.10.0 → bashkit-0.11.0}/PKG-INFO +5 -2
- {bashkit-0.10.0/crates/bashkit-python → bashkit-0.11.0}/README.md +3 -1
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/_bashkit.pyi +20 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/README.md +3 -3
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/compatibility.md +2 -2
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/threat-model.md +67 -0
- bashkit-0.11.0/crates/bashkit/examples/dump_builtins.rs +78 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/awk/parser.rs +12 -2
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/awk/tests.rs +14 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/compgen.rs +61 -54
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/limits.rs +2 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/paste.rs +44 -12
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/path.rs +1 -1
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/python.rs +84 -17
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/rg/mod.rs +151 -11
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/template.rs +2 -2
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/error.rs +10 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/overlay.rs +45 -9
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interpreter/glob.rs +50 -22
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interpreter/mod.rs +159 -43
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/lib.rs +11 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/limits.rs +39 -2
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/lexer.rs +113 -17
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/mod.rs +31 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/tool.rs +35 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/blackbox_security_tests.rs +183 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/builtin_registry_tests.rs +22 -0
- bashkit-0.11.0/crates/bashkit/tests/integration/compgen_tests.rs +106 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/coreutils_differential_tests.rs +19 -1
- bashkit-0.11.0/crates/bashkit/tests/integration/limitations_doc_tests.rs +135 -0
- bashkit-0.11.0/crates/bashkit/tests/integration/limitations_evidence_tests.rs +128 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/main.rs +4 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/python_security_tests.rs +2 -8
- bashkit-0.11.0/crates/bashkit/tests/integration/threat_model_doc_tests.rs +105 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/threat_model_tests.rs +15 -6
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/paste-flags.test.sh +15 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/python/env_leak.test.sh +11 -3
- {bashkit-0.10.0 → bashkit-0.11.0/crates/bashkit-python}/README.md +3 -1
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/bash_basics.py +7 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/src/lib.rs +84 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/_bashkit_categories.py +35 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_basic.py +5 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/pyproject.toml +1 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/__init__.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/deepagents.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/langchain.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/py.typed +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/bashkit/pydantic_ai.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/Cargo.toml +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/file_ops.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/hotpath.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/parallel_execution.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/README.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/criterion-file_ops-linux-x86_64-1779759850.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/criterion-hotpath-attrs+shopt-linux-x86_64-1779759850.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/criterion-hotpath-perf-linux-x86_64-1779744742.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/criterion-parallel-(none)-linux-x86_64-1773469129.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/results/criterion-sqlite-vm-linux-x86_64-1777865268.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/benches/sqlite.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/clap-builtins.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/credential-injection.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/custom_builtins.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/hooks.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/jq.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/live_mounts.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/logging.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/python.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/sqlite.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/ssh.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/docs/typescript.md +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/agent_tool.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/basic.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/clap_builtin.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/clap_builtin_subcommands.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/custom_backend.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/custom_builtins.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/custom_filesystem_impl.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/custom_fs.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/git_workflow.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/live_mounts.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/python_external_functions.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/python_scripts.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/realfs_readonly.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/realfs_readwrite.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/resource_limits.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/scripted_tool.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/show_tool_output.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/sqlite_basic.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/sqlite_workflow.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/ssh_supabase.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/streaming_output.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/text_files.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/text_processing.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/typescript_external_functions.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/typescript_scripts.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/examples/virtual_identity.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/out file.txt +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/proptest-regressions/builtins/sqlite/tests.txt +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/alias.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/archive.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/arg_parser.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/assert.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/awk/interpreter.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/awk/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/base64.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/bc.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/caller.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/cat.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/checksum.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/clap_env.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/clear.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/column.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/comm.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/csv.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/curl.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/cuttr.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/date.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/diff.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/dirstack.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/disk.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/dotenv.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/echo.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/environ.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/envsubst.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/expand.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/export.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/expr.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/fc.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/fileops.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/flow.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/fold.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/cat_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/extendedbigdecimal.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/argument.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/escape.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/human.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/num_format.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format/spec.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/format_support.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/ls_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/mktemp_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/num_parser.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/od_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/readlink_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/realpath_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/shuf_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/stat_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/tac_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/tee_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/generated/truncate_args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/git/client.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/git/cmd.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/git/config.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/git/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/glob_cmd.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/grep.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/headtail.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/help.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/helpers.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/hextools.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/http.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/iconv.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/inspect.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/introspect.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/join.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/args.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/compat.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/convert.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/errors.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/format.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/regex_compat.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/jq/tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/json.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/log.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/find.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/glob.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/list.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/rmdir.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ls/tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/mapfile.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/mkfifo.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/navigation.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/nl.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/numfmt.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/parallel.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/patch.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/pipeline.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/printf.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/read.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/retry.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/search_common.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sed.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/semver.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/seq.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/shuf.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sleep.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sortuniq.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/source.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/split.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/dot_commands.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/engine.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/formatter.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/parser.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/sqlite/vfs_io.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/allowlist.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/client.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/cmd.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/config.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/handler.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/ssh/russh_handler.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/strings.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/system.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/textrev.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/timeout.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/tomlq.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/trap.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/tree.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/truncate.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/typescript.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/vars.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/verify.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/wait.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/wc.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/yaml.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/yes.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/builtins/zip_cmd.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/credential.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/backend.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/limits.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/memory.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/mountable.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/posix.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/readonly.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/realfs.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/search.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/fs/traits.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/hooks.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interop/fs.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interop/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interpreter/jobs.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/interpreter/state.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/logging_impl.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/network/allowlist.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/network/bot_auth.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/network/client.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/network/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/ast.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/budget.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/span.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/parser/tokens.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/scripted_tool/execute.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/scripted_tool/extension.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/scripted_tool/mod.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/scripted_tool/toolset.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/snapshot.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/testing.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/tool_def.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/src/trace.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/agent_skills_publication_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/allexport_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/awk_fuzz_scaffold_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/awk_newline_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/awk_pattern_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/awk_printf_expr_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/awk_range_pattern_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/background_exec_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/base64_binary_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/bash_source_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/builtin_error_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/byte_range_panic_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/cancellation_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/cmdsub_quote_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/coproc_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/credential_injection_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/custom_builtins_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/custom_fs_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/dev_null_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/final_env_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/find_multi_path_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/git_advanced_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/git_inspection_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/git_integration_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/git_remote_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/git_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/harness_example_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/history_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_1175_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_1776_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_1777_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_274_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_275_279_282_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_276_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_277_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_289_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_290_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_291_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_853_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_872_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_873_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/issue_875_test.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/jq_fuzz_scaffold_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/live_mount_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/mkfifo_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/nested_subscript_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/network_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/output_truncation_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/proptest_differential.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/python_integration_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/regex_limit_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/release_profile_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/script_execution_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/security_audit_pocs.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/set_e_and_or_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/shuf_resource_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/skills_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/snapshot_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/source_function_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/spec_runner.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/spec_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/sqlite_compat_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/sqlite_differential_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/sqlite_fuzz_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/sqlite_integration_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/sqlite_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/stack_overflow_regression_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/subst_depth_limit_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/symlink_overlay_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/tty_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/typescript_integration_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/typescript_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/unicode_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/unset_function_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/urandom_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/integration/workflow_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/logging_security_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/proptest_security.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/realfs_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/security_failpoint_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/azure_discover_rank.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/azure_generate_url.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/azure_query_capacity.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/helm_validate_chart.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/jwt_test_setup.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/stitch_download_asset.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/stitch_fetch.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/stitch_verify_setup.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/superpowers_find_polluter.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/skills_fixtures/vercel_deploy.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/awk.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/delete-array.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/dev-stderr.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/eval-bugs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/filename.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/awk/getline-file.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/alias.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/append_redirect.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/arith-dynamic.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/arithmetic-base-expansion.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/arithmetic.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/array-slicing.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/array-splat.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/arrays.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/assoc-arrays.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/awk-printf-width.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/background.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bash-c-exports.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bash-command.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bash-flags.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bash-source-var.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bash-stdin-pipe.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/bc.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/blackbox-edge-cases.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/blackbox-exploration.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/brace-expansion.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/brace_expansion_lookahead.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/cat.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/checksum.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/chown-kill.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/cmd-suggestions.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/cmdsub_depth_unquoted.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/column.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/comm.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/command-not-found.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/command-subst.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/command.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/command_v.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/compgen-path.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/conditional-short-circuit.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/conditional.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/control-flow.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/cuttr.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/date.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/declare.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/df.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/diff.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/dirstack.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/du.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/echo.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/empty-bodies.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/env.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/errexit.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/eval-bugs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/exec-command.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-redirect.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-variable.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/exit-status.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/expr.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/extglob.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/file.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/fileops.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/find.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/functions.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/getopts.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/glob-options.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/glob_match_cap.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/globs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/gzip.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/headtail.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/help-flag.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/heredoc-edge.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/heredoc.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/herestring.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/hextools.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/history.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/indirect-expansion.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/less.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/ln.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/ls.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/memory_budget_desync.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/mktemp.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/nameref-assoc.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/nameref.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/negative-tests.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/nl.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/nounset.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/numfmt.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/od.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/parse-errors.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/paste.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/path.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/pipes-redirects.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/printenv.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/printf.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/procsub.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/quote.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/read-builtin.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/readlink.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/recursive-cmdsub.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/regex-limit.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/replace_pattern_limit.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/script-exec.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/seq.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/set-allexport.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/shell-grammar.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/shuf.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/sleep.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/sortuniq.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/source.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/stat.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/string-ops.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/strings.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/subprocess-isolation.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/subshell.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/tar.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/tar_create.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/tee.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/temp-binding.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/test-operators.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/test-tty.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/textrev.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/time.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/timeout.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/tree.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/truncate.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/type.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/unicode.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/unset-exported-var.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/var-op-test.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/variables.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/wait.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/watch.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/wc.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/word-split.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/bash/xargs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/grep/eval-bugs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/grep/grep.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/grep/rg.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/jq/jq.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/python/python.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/sed/eval-bugs.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/sed/sed.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/spec_cases/typescript/typescript.test.sh +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/ssh_builtin_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit/tests/ssh_supabase_tests.rs +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/Cargo.toml +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/custom_filesystem_interop.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/data_pipeline.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/fastapi_async_tool.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/jupyter_async_test.ipynb +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/k8s_orchestrator.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/langgraph_async_tool.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/examples/llm_tool.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/_security_advanced.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/_security_core.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_ai_adapters.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_async_callbacks.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_builtins.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_control_flow.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_custom_builtin_fs.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_error_handling.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_fastapi_integration.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_filesystem_interop.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_integration.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_jupyter_compat.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_langgraph_integration.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_network_config.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_network_credentials.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_python_security.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_registered_tools.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_scripts.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_security.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_shell_injection.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_sqlite.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_streaming_output.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_strings_and_quoting.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_teardown_determinism.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_tool_metadata.py +0 -0
- {bashkit-0.10.0 → bashkit-0.11.0}/crates/bashkit-python/tests/test_vfs.py +0 -0
|
@@ -195,9 +195,9 @@ dependencies = [
|
|
|
195
195
|
|
|
196
196
|
[[package]]
|
|
197
197
|
name = "antithesis_sdk"
|
|
198
|
-
version = "0.2.
|
|
198
|
+
version = "0.2.9"
|
|
199
199
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
200
|
-
checksum = "
|
|
200
|
+
checksum = "08410fcac93669a476c006cd6c4512ac1e2b30fd117231a5d55d8a2c76599b82"
|
|
201
201
|
dependencies = [
|
|
202
202
|
"libc",
|
|
203
203
|
"libloading 0.8.9",
|
|
@@ -347,7 +347,7 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
|
|
|
347
347
|
|
|
348
348
|
[[package]]
|
|
349
349
|
name = "bashkit"
|
|
350
|
-
version = "0.
|
|
350
|
+
version = "0.11.0"
|
|
351
351
|
dependencies = [
|
|
352
352
|
"anyhow",
|
|
353
353
|
"async-trait",
|
|
@@ -400,7 +400,7 @@ dependencies = [
|
|
|
400
400
|
|
|
401
401
|
[[package]]
|
|
402
402
|
name = "bashkit-bench"
|
|
403
|
-
version = "0.
|
|
403
|
+
version = "0.11.0"
|
|
404
404
|
dependencies = [
|
|
405
405
|
"anyhow",
|
|
406
406
|
"bashkit",
|
|
@@ -415,7 +415,7 @@ dependencies = [
|
|
|
415
415
|
|
|
416
416
|
[[package]]
|
|
417
417
|
name = "bashkit-cli"
|
|
418
|
-
version = "0.
|
|
418
|
+
version = "0.11.0"
|
|
419
419
|
dependencies = [
|
|
420
420
|
"anyhow",
|
|
421
421
|
"bashkit",
|
|
@@ -429,7 +429,7 @@ dependencies = [
|
|
|
429
429
|
|
|
430
430
|
[[package]]
|
|
431
431
|
name = "bashkit-coreutils-port"
|
|
432
|
-
version = "0.
|
|
432
|
+
version = "0.11.0"
|
|
433
433
|
dependencies = [
|
|
434
434
|
"anyhow",
|
|
435
435
|
"prettyplease",
|
|
@@ -443,7 +443,7 @@ dependencies = [
|
|
|
443
443
|
|
|
444
444
|
[[package]]
|
|
445
445
|
name = "bashkit-eval"
|
|
446
|
-
version = "0.
|
|
446
|
+
version = "0.11.0"
|
|
447
447
|
dependencies = [
|
|
448
448
|
"anyhow",
|
|
449
449
|
"async-trait",
|
|
@@ -460,7 +460,7 @@ dependencies = [
|
|
|
460
460
|
|
|
461
461
|
[[package]]
|
|
462
462
|
name = "bashkit-js"
|
|
463
|
-
version = "0.
|
|
463
|
+
version = "0.11.0"
|
|
464
464
|
dependencies = [
|
|
465
465
|
"bashkit",
|
|
466
466
|
"napi",
|
|
@@ -472,7 +472,7 @@ dependencies = [
|
|
|
472
472
|
|
|
473
473
|
[[package]]
|
|
474
474
|
name = "bashkit-python"
|
|
475
|
-
version = "0.
|
|
475
|
+
version = "0.11.0"
|
|
476
476
|
dependencies = [
|
|
477
477
|
"bashkit",
|
|
478
478
|
"num-bigint",
|
|
@@ -676,9 +676,9 @@ dependencies = [
|
|
|
676
676
|
|
|
677
677
|
[[package]]
|
|
678
678
|
name = "cc"
|
|
679
|
-
version = "1.2.
|
|
679
|
+
version = "1.2.64"
|
|
680
680
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
681
|
-
checksum = "
|
|
681
|
+
checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
|
|
682
682
|
dependencies = [
|
|
683
683
|
"find-msvc-tools",
|
|
684
684
|
"jobserver",
|
|
@@ -2481,9 +2481,9 @@ dependencies = [
|
|
|
2481
2481
|
|
|
2482
2482
|
[[package]]
|
|
2483
2483
|
name = "js-sys"
|
|
2484
|
-
version = "0.3.
|
|
2484
|
+
version = "0.3.102"
|
|
2485
2485
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2486
|
-
checksum = "
|
|
2486
|
+
checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
|
|
2487
2487
|
dependencies = [
|
|
2488
2488
|
"cfg-if",
|
|
2489
2489
|
"futures-util",
|
|
@@ -2689,9 +2689,9 @@ checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0"
|
|
|
2689
2689
|
|
|
2690
2690
|
[[package]]
|
|
2691
2691
|
name = "memchr"
|
|
2692
|
-
version = "2.8.
|
|
2692
|
+
version = "2.8.2"
|
|
2693
2693
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2694
|
-
checksum = "
|
|
2694
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
2695
2695
|
|
|
2696
2696
|
[[package]]
|
|
2697
2697
|
name = "memoffset"
|
|
@@ -2811,9 +2811,9 @@ dependencies = [
|
|
|
2811
2811
|
|
|
2812
2812
|
[[package]]
|
|
2813
2813
|
name = "napi"
|
|
2814
|
-
version = "3.9.
|
|
2814
|
+
version = "3.9.2"
|
|
2815
2815
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2816
|
-
checksum = "
|
|
2816
|
+
checksum = "26d3c7dd60231116a47854321c9ac8df6f13435d11aa3a59d8533a76e07a3730"
|
|
2817
2817
|
dependencies = [
|
|
2818
2818
|
"bitflags",
|
|
2819
2819
|
"ctor",
|
|
@@ -4829,9 +4829,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
|
|
|
4829
4829
|
|
|
4830
4830
|
[[package]]
|
|
4831
4831
|
name = "smallvec"
|
|
4832
|
-
version = "1.15.
|
|
4832
|
+
version = "1.15.2"
|
|
4833
4833
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4834
|
-
checksum = "
|
|
4834
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
4835
4835
|
dependencies = [
|
|
4836
4836
|
"serde",
|
|
4837
4837
|
]
|
|
@@ -5767,9 +5767,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
|
5767
5767
|
|
|
5768
5768
|
[[package]]
|
|
5769
5769
|
name = "wasip2"
|
|
5770
|
-
version = "1.0.
|
|
5770
|
+
version = "1.0.4+wasi-0.2.12"
|
|
5771
5771
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5772
|
-
checksum = "
|
|
5772
|
+
checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
|
|
5773
5773
|
dependencies = [
|
|
5774
5774
|
"wit-bindgen 0.57.1",
|
|
5775
5775
|
]
|
|
@@ -5785,9 +5785,9 @@ dependencies = [
|
|
|
5785
5785
|
|
|
5786
5786
|
[[package]]
|
|
5787
5787
|
name = "wasm-bindgen"
|
|
5788
|
-
version = "0.2.
|
|
5788
|
+
version = "0.2.125"
|
|
5789
5789
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5790
|
-
checksum = "
|
|
5790
|
+
checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
|
|
5791
5791
|
dependencies = [
|
|
5792
5792
|
"cfg-if",
|
|
5793
5793
|
"once_cell",
|
|
@@ -5798,9 +5798,9 @@ dependencies = [
|
|
|
5798
5798
|
|
|
5799
5799
|
[[package]]
|
|
5800
5800
|
name = "wasm-bindgen-futures"
|
|
5801
|
-
version = "0.4.
|
|
5801
|
+
version = "0.4.75"
|
|
5802
5802
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5803
|
-
checksum = "
|
|
5803
|
+
checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280"
|
|
5804
5804
|
dependencies = [
|
|
5805
5805
|
"js-sys",
|
|
5806
5806
|
"wasm-bindgen",
|
|
@@ -5808,9 +5808,9 @@ dependencies = [
|
|
|
5808
5808
|
|
|
5809
5809
|
[[package]]
|
|
5810
5810
|
name = "wasm-bindgen-macro"
|
|
5811
|
-
version = "0.2.
|
|
5811
|
+
version = "0.2.125"
|
|
5812
5812
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5813
|
-
checksum = "
|
|
5813
|
+
checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
|
|
5814
5814
|
dependencies = [
|
|
5815
5815
|
"quote",
|
|
5816
5816
|
"wasm-bindgen-macro-support",
|
|
@@ -5818,9 +5818,9 @@ dependencies = [
|
|
|
5818
5818
|
|
|
5819
5819
|
[[package]]
|
|
5820
5820
|
name = "wasm-bindgen-macro-support"
|
|
5821
|
-
version = "0.2.
|
|
5821
|
+
version = "0.2.125"
|
|
5822
5822
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5823
|
-
checksum = "
|
|
5823
|
+
checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
|
|
5824
5824
|
dependencies = [
|
|
5825
5825
|
"bumpalo",
|
|
5826
5826
|
"proc-macro2",
|
|
@@ -5831,9 +5831,9 @@ dependencies = [
|
|
|
5831
5831
|
|
|
5832
5832
|
[[package]]
|
|
5833
5833
|
name = "wasm-bindgen-shared"
|
|
5834
|
-
version = "0.2.
|
|
5834
|
+
version = "0.2.125"
|
|
5835
5835
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5836
|
-
checksum = "
|
|
5836
|
+
checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
|
|
5837
5837
|
dependencies = [
|
|
5838
5838
|
"unicode-ident",
|
|
5839
5839
|
]
|
|
@@ -5887,9 +5887,9 @@ dependencies = [
|
|
|
5887
5887
|
|
|
5888
5888
|
[[package]]
|
|
5889
5889
|
name = "web-sys"
|
|
5890
|
-
version = "0.3.
|
|
5890
|
+
version = "0.3.102"
|
|
5891
5891
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5892
|
-
checksum = "
|
|
5892
|
+
checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
|
|
5893
5893
|
dependencies = [
|
|
5894
5894
|
"js-sys",
|
|
5895
5895
|
"wasm-bindgen",
|
|
@@ -6331,9 +6331,9 @@ dependencies = [
|
|
|
6331
6331
|
|
|
6332
6332
|
[[package]]
|
|
6333
6333
|
name = "zeroize"
|
|
6334
|
-
version = "1.
|
|
6334
|
+
version = "1.9.0"
|
|
6335
6335
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6336
|
-
checksum = "
|
|
6336
|
+
checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
|
6337
6337
|
|
|
6338
6338
|
[[package]]
|
|
6339
6339
|
name = "zerotrie"
|
|
@@ -7,10 +7,10 @@ resolver = "2"
|
|
|
7
7
|
members = ["crates/*"]
|
|
8
8
|
|
|
9
9
|
[workspace.package]
|
|
10
|
-
version = "0.
|
|
10
|
+
version = "0.11.0"
|
|
11
11
|
edition = "2024"
|
|
12
12
|
license = "MIT"
|
|
13
|
-
authors = ["Everruns"]
|
|
13
|
+
authors = ["Mykhailo Chalyi <mike@chaliy.name>", "Everruns"]
|
|
14
14
|
repository = "https://github.com/everruns/bashkit"
|
|
15
15
|
description = "Awesomely fast virtual sandbox with bash and file system"
|
|
16
16
|
keywords = ["bash", "virtual", "ai", "agent", "everruns"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bashkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -27,6 +27,7 @@ Provides-Extra: langchain
|
|
|
27
27
|
Provides-Extra: pydantic-ai
|
|
28
28
|
Summary: A sandboxed bash interpreter for AI agents
|
|
29
29
|
Keywords: bash,sandbox,ai,agent,shell,interpreter
|
|
30
|
+
Author-email: Mykhailo Chalyi <mike@chaliy.name>
|
|
30
31
|
License: MIT
|
|
31
32
|
Requires-Python: >=3.9
|
|
32
33
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
@@ -47,7 +48,7 @@ Homepage: [bashkit.sh](https://bashkit.sh)
|
|
|
47
48
|
|
|
48
49
|
- Sandboxed execution in-process, without containers or subprocess orchestration
|
|
49
50
|
- Full bash syntax: variables, pipelines, redirects, loops, functions, and arrays
|
|
50
|
-
-
|
|
51
|
+
- 156 built-in commands including `grep`, `sed`, `awk`, `jq`, `curl`, and `find`
|
|
51
52
|
- Persistent interpreter state across calls, including variables, cwd, and VFS contents
|
|
52
53
|
- Direct virtual filesystem APIs, constructor mounts, and live host mounts
|
|
53
54
|
- Snapshot and restore support on `Bash` and `BashTool`
|
|
@@ -111,6 +112,8 @@ from bashkit import Bash
|
|
|
111
112
|
bash = Bash(
|
|
112
113
|
username="agent",
|
|
113
114
|
hostname="sandbox",
|
|
115
|
+
cwd="/home/agent",
|
|
116
|
+
env={"LANG": "en_US.UTF-8"},
|
|
114
117
|
max_commands=1000,
|
|
115
118
|
max_loop_iterations=10000,
|
|
116
119
|
max_memory=10 * 1024 * 1024,
|
|
@@ -10,7 +10,7 @@ Homepage: [bashkit.sh](https://bashkit.sh)
|
|
|
10
10
|
|
|
11
11
|
- Sandboxed execution in-process, without containers or subprocess orchestration
|
|
12
12
|
- Full bash syntax: variables, pipelines, redirects, loops, functions, and arrays
|
|
13
|
-
-
|
|
13
|
+
- 156 built-in commands including `grep`, `sed`, `awk`, `jq`, `curl`, and `find`
|
|
14
14
|
- Persistent interpreter state across calls, including variables, cwd, and VFS contents
|
|
15
15
|
- Direct virtual filesystem APIs, constructor mounts, and live host mounts
|
|
16
16
|
- Snapshot and restore support on `Bash` and `BashTool`
|
|
@@ -74,6 +74,8 @@ from bashkit import Bash
|
|
|
74
74
|
bash = Bash(
|
|
75
75
|
username="agent",
|
|
76
76
|
hostname="sandbox",
|
|
77
|
+
cwd="/home/agent",
|
|
78
|
+
env={"LANG": "en_US.UTF-8"},
|
|
77
79
|
max_commands=1000,
|
|
78
80
|
max_loop_iterations=10000,
|
|
79
81
|
max_memory=10 * 1024 * 1024,
|
|
@@ -465,6 +465,8 @@ class Bash:
|
|
|
465
465
|
self,
|
|
466
466
|
username: str | None = None,
|
|
467
467
|
hostname: str | None = None,
|
|
468
|
+
cwd: str | None = None,
|
|
469
|
+
env: Mapping[str, str] | None = None,
|
|
468
470
|
max_commands: int | None = None,
|
|
469
471
|
max_loop_iterations: int | None = None,
|
|
470
472
|
max_memory: int | None = None,
|
|
@@ -485,6 +487,10 @@ class Bash:
|
|
|
485
487
|
Args:
|
|
486
488
|
username: Custom username (default ``"user"``).
|
|
487
489
|
hostname: Custom hostname (default ``"bashkit"``).
|
|
490
|
+
cwd: Initial working directory for the shell. Sets the starting
|
|
491
|
+
directory directly instead of running a leading ``cd``.
|
|
492
|
+
env: Initial environment variables applied before execution, so
|
|
493
|
+
scripts see them without an ``export`` prelude.
|
|
488
494
|
max_commands: Limit total commands executed.
|
|
489
495
|
max_loop_iterations: Limit iterations per loop.
|
|
490
496
|
max_memory: Memory limit in bytes for the VFS.
|
|
@@ -716,6 +722,8 @@ class Bash:
|
|
|
716
722
|
data: bytes,
|
|
717
723
|
username: str | None = None,
|
|
718
724
|
hostname: str | None = None,
|
|
725
|
+
cwd: str | None = None,
|
|
726
|
+
env: Mapping[str, str] | None = None,
|
|
719
727
|
max_commands: int | None = None,
|
|
720
728
|
max_loop_iterations: int | None = None,
|
|
721
729
|
max_memory: int | None = None,
|
|
@@ -740,6 +748,8 @@ class Bash:
|
|
|
740
748
|
key: bytes,
|
|
741
749
|
username: str | None = None,
|
|
742
750
|
hostname: str | None = None,
|
|
751
|
+
cwd: str | None = None,
|
|
752
|
+
env: Mapping[str, str] | None = None,
|
|
743
753
|
max_commands: int | None = None,
|
|
744
754
|
max_loop_iterations: int | None = None,
|
|
745
755
|
max_memory: int | None = None,
|
|
@@ -922,6 +932,8 @@ class BashTool:
|
|
|
922
932
|
self,
|
|
923
933
|
username: str | None = None,
|
|
924
934
|
hostname: str | None = None,
|
|
935
|
+
cwd: str | None = None,
|
|
936
|
+
env: Mapping[str, str] | None = None,
|
|
925
937
|
max_commands: int | None = None,
|
|
926
938
|
max_loop_iterations: int | None = None,
|
|
927
939
|
max_memory: int | None = None,
|
|
@@ -938,6 +950,10 @@ class BashTool:
|
|
|
938
950
|
Args:
|
|
939
951
|
username: Custom username (default ``"user"``).
|
|
940
952
|
hostname: Custom hostname (default ``"bashkit"``).
|
|
953
|
+
cwd: Initial working directory for the shell. Sets the starting
|
|
954
|
+
directory directly instead of running a leading ``cd``.
|
|
955
|
+
env: Initial environment variables applied before execution, so
|
|
956
|
+
scripts see them without an ``export`` prelude.
|
|
941
957
|
max_commands: Limit total commands executed.
|
|
942
958
|
max_loop_iterations: Limit iterations per loop.
|
|
943
959
|
max_memory: Memory limit in bytes for the VFS.
|
|
@@ -1188,6 +1204,8 @@ class BashTool:
|
|
|
1188
1204
|
data: bytes,
|
|
1189
1205
|
username: str | None = None,
|
|
1190
1206
|
hostname: str | None = None,
|
|
1207
|
+
cwd: str | None = None,
|
|
1208
|
+
env: Mapping[str, str] | None = None,
|
|
1191
1209
|
max_commands: int | None = None,
|
|
1192
1210
|
max_loop_iterations: int | None = None,
|
|
1193
1211
|
max_memory: int | None = None,
|
|
@@ -1208,6 +1226,8 @@ class BashTool:
|
|
|
1208
1226
|
key: bytes,
|
|
1209
1227
|
username: str | None = None,
|
|
1210
1228
|
hostname: str | None = None,
|
|
1229
|
+
cwd: str | None = None,
|
|
1230
|
+
env: Mapping[str, str] | None = None,
|
|
1211
1231
|
max_commands: int | None = None,
|
|
1212
1232
|
max_loop_iterations: int | None = None,
|
|
1213
1233
|
max_memory: int | None = None,
|
|
@@ -14,7 +14,7 @@ Homepage: [bashkit.sh](https://bashkit.sh)
|
|
|
14
14
|
|
|
15
15
|
- **Secure by default** - No process spawning, no filesystem access, no network access unless explicitly enabled. [280+ threats](specs/threat-model.md) analyzed and mitigated
|
|
16
16
|
- **POSIX compliant** - Substantial IEEE 1003.1-2024 Shell Command Language compliance
|
|
17
|
-
- **Sandboxed, in-process execution** - All
|
|
17
|
+
- **Sandboxed, in-process execution** - All 156 commands reimplemented in Rust, no `fork`/`exec`
|
|
18
18
|
- **Virtual filesystem** - InMemoryFs, OverlayFs, MountableFs with optional RealFs backend (`realfs` feature)
|
|
19
19
|
- **Resource limits** - Command count, loop iterations, function depth, output size, filesystem size, parser fuel
|
|
20
20
|
- **Network allowlist** - HTTP access denied by default, per-domain control
|
|
@@ -123,7 +123,7 @@ assert_eq!(output.result["stdout"], "hello\nworld\n");
|
|
|
123
123
|
</a>
|
|
124
124
|
</div>
|
|
125
125
|
|
|
126
|
-
## Built-in Commands (
|
|
126
|
+
## Built-in Commands (156)
|
|
127
127
|
|
|
128
128
|
| Category | Commands |
|
|
129
129
|
|----------|----------|
|
|
@@ -540,7 +540,7 @@ Bashkit is built for running untrusted scripts from AI agents and users. Securit
|
|
|
540
540
|
|
|
541
541
|
| Layer | Protection |
|
|
542
542
|
|-------|------------|
|
|
543
|
-
| **No process spawning** | All
|
|
543
|
+
| **No process spawning** | All 156 commands are reimplemented in Rust — no `fork`, `exec`, or shell escape |
|
|
544
544
|
| **Virtual filesystem** | Scripts see an in-memory FS by default; no host filesystem access unless explicitly mounted |
|
|
545
545
|
| **Network allowlist** | HTTP access is denied by default; each domain must be explicitly allowed |
|
|
546
546
|
| **Resource limits** | Configurable caps on commands (10K), loop iterations (100K), function depth (100), output (10MB), input (10MB) |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
## POSIX Shell Compliance
|
|
13
13
|
|
|
14
14
|
Bashkit provides substantial compliance with IEEE Std 1003.1-2024 (POSIX.1-2024)
|
|
15
|
-
Shell Command Language. See [specs/
|
|
15
|
+
Shell Command Language. See [specs/limitations.md](../specs/limitations.md)
|
|
16
16
|
for detailed compliance status.
|
|
17
17
|
|
|
18
18
|
| POSIX Category | Status |
|
|
@@ -479,5 +479,5 @@ Identified from eval analysis — all items now implemented:
|
|
|
479
479
|
|
|
480
480
|
## See Also
|
|
481
481
|
|
|
482
|
-
- [specs/
|
|
482
|
+
- [specs/limitations.md](../../../specs/limitations.md) - Intentional gaps and partial features
|
|
483
483
|
- [specs/](../../../specs/) - Design specifications
|
|
@@ -671,6 +671,68 @@ let bash = Bash::builder()
|
|
|
671
671
|
// Commits use virtual identity, never host ~/.gitconfig
|
|
672
672
|
```
|
|
673
673
|
|
|
674
|
+
### SSH Security (TM-SSH-*)
|
|
675
|
+
|
|
676
|
+
The `ssh`/`scp`/`sftp` builtins (opt-in `ssh` feature) connect to remote hosts
|
|
677
|
+
through a sandboxed client. Connections are default-deny: callers must allowlist
|
|
678
|
+
each host via `SshConfig::allow(...)`, and credentials come only from the VFS —
|
|
679
|
+
never the host `~/.ssh/`.
|
|
680
|
+
|
|
681
|
+
| Threat | Attack Example | Mitigation | Status |
|
|
682
|
+
|--------|---------------|------------|--------|
|
|
683
|
+
| Unauthorized host access (TM-SSH-001) | Connect to arbitrary hosts | Host allowlist (default-deny) | MITIGATED |
|
|
684
|
+
| Credential leakage (TM-SSH-002) | Read host `~/.ssh/` keys | Keys from VFS only | MITIGATED |
|
|
685
|
+
| Session exhaustion (TM-SSH-003) | Open many concurrent sessions | Max concurrent sessions limit | MITIGATED |
|
|
686
|
+
| OOM via large response (TM-SSH-004) | Server sends huge output | Streaming size limit | MITIGATED |
|
|
687
|
+
| Connection hang (TM-SSH-005) | Server never responds | Configurable timeout | MITIGATED |
|
|
688
|
+
| MITM via unverified host key (TM-SSH-006) | Attacker intercepts connection | Strict host key checking (default: on) | MITIGATED |
|
|
689
|
+
| Non-standard port access (TM-SSH-007) | Connect to services on unexpected ports | Port allowlist | MITIGATED |
|
|
690
|
+
| Remote command injection (TM-SSH-008) | Inject via remote path in SCP | Shell-escape remote paths | MITIGATED |
|
|
691
|
+
|
|
692
|
+
### TypeScript / ZapCode Security (TM-TS-*)
|
|
693
|
+
|
|
694
|
+
The `typescript` feature embeds the ZapCode runtime. Scripts run under
|
|
695
|
+
wall-clock, memory, allocation, and stack-depth limits, and all filesystem
|
|
696
|
+
access is bridged through Bashkit's VFS — never the host filesystem.
|
|
697
|
+
|
|
698
|
+
| Threat | Attack Example | Mitigation | Status |
|
|
699
|
+
|--------|---------------|------------|--------|
|
|
700
|
+
| Infinite loop (TM-TS-001) | `while (true) {}` | ZapCode time limit (default 30s) | MITIGATED |
|
|
701
|
+
| Memory exhaustion (TM-TS-002) | Large allocation | `max_memory` (64MB) + `max_allocations` (1M) | MITIGATED |
|
|
702
|
+
| Stack overflow (TM-TS-003) | Deep recursion | `max_stack_depth` (512) | MITIGATED |
|
|
703
|
+
| Allocation bomb (TM-TS-004) | Many small objects | `max_allocations` (1M) | MITIGATED |
|
|
704
|
+
| Real filesystem read (TM-TS-005) | Read host files via VFS | VFS bridge reads only Bashkit VFS | MITIGATED |
|
|
705
|
+
| VFS write escape (TM-TS-006) | Write to host | VFS bridge writes only Bashkit VFS | MITIGATED |
|
|
706
|
+
| Path traversal (TM-TS-007) | `../../etc/passwd` | Paths resolved within sandbox | MITIGATED |
|
|
707
|
+
| Host `/tmp` escape (TM-TS-011) | Operations escape to host | All operations through Bashkit VFS | MITIGATED |
|
|
708
|
+
| Limit bypass (TM-TS-018) | Evade Bashkit caps via TS | Command budget still enforced | MITIGATED |
|
|
709
|
+
|
|
710
|
+
Full per-threat coverage (TM-TS-001 … TM-TS-020), including error-isolation and
|
|
711
|
+
exit-code propagation cases, lives in the spec and the `threat_ts_*` tests.
|
|
712
|
+
|
|
713
|
+
### Request Signing & Snapshot Integrity (TM-CRY-*, TM-SNAP-*)
|
|
714
|
+
|
|
715
|
+
The `bot-auth` request signer (Ed25519, RFC 9421) and the snapshot
|
|
716
|
+
serialization API both handle key material and integrity tags.
|
|
717
|
+
|
|
718
|
+
| Threat | Attack Example | Mitigation | Status |
|
|
719
|
+
|--------|---------------|------------|--------|
|
|
720
|
+
| Private key recovery (TM-CRY-001) | Heap/core-dump inspection of the Ed25519 seed | `BotAuthConfig` zeroizes the seed in `Drop`; debug output redacts key material | MITIGATED |
|
|
721
|
+
| Snapshot forgery (TM-SNAP-001) | Forge a valid digest using the public `BKSNAP01` tag | Keyed HMAC API (`to_bytes_keyed`/`from_bytes_keyed`) for tamper-evident snapshots | MITIGATED |
|
|
722
|
+
|
|
723
|
+
`from_bytes` uses `SHA-256(BKSNAP01 || payload)` (the tag is a public constant,
|
|
724
|
+
so it detects accidental corruption, not forgery); `from_bytes_keyed` uses
|
|
725
|
+
`HMAC-SHA256(secret_key, payload)` with a caller-provided key for authenticity.
|
|
726
|
+
|
|
727
|
+
### RealFs Mount Security (TM-FS-*)
|
|
728
|
+
|
|
729
|
+
The `realfs` feature can mount real host directories into the VFS. Mounts are
|
|
730
|
+
read-only by default and gated by an allowlist.
|
|
731
|
+
|
|
732
|
+
| Threat | Attack Example | Mitigation | Status |
|
|
733
|
+
|--------|---------------|------------|--------|
|
|
734
|
+
| Permissive RealFs mount (TM-FS-013) | `mount_real_readonly_at("/", …)` exposes the whole host | Allowlist-first: broad roots (`/`, `/etc`, `/root`, `/home`, …) and any path component matching `.ssh`, `.aws`, `.kube`, `.docker`, `.gnupg`, `.gcloud` are refused unless explicitly allowlisted | MITIGATED |
|
|
735
|
+
|
|
674
736
|
### Unicode Security (TM-UNI-*)
|
|
675
737
|
|
|
676
738
|
Unicode input from untrusted scripts creates attack surface across the parser, builtins,
|
|
@@ -789,8 +851,13 @@ All threats use stable IDs in the format `TM-<CATEGORY>-<NUMBER>`:
|
|
|
789
851
|
| TM-INT | Internal Error Handling |
|
|
790
852
|
| TM-LOG | Logging Security |
|
|
791
853
|
| TM-GIT | Git Security |
|
|
854
|
+
| TM-SSH | SSH Security |
|
|
792
855
|
| TM-PY | Python/Monty Security |
|
|
793
856
|
| TM-SQL | SQLite Security |
|
|
857
|
+
| TM-TS | TypeScript/ZapCode Security |
|
|
858
|
+
| TM-CRY | Cryptography / Request Signing |
|
|
859
|
+
| TM-SNAP | Snapshot Integrity |
|
|
860
|
+
| TM-FS | RealFs Mount Security |
|
|
794
861
|
| TM-UNI | Unicode Security |
|
|
795
862
|
|
|
796
863
|
Full threat analysis: [`specs/threat-model.md`][spec]
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
//! Dump the canonical builtin inventory as JSON.
|
|
2
|
+
//!
|
|
3
|
+
//! Source generator for `specs/status/builtins.json` (the data behind the
|
|
4
|
+
//! site's builtins page). Run via `just regen-builtins`, which enables every
|
|
5
|
+
//! builtin-affecting feature so the inventory is complete; the
|
|
6
|
+
//! `builtins-drift` workflow regenerates and fails on diff.
|
|
7
|
+
//!
|
|
8
|
+
//! Attribution: builder-registered opt-ins (python, typescript, sqlite) are
|
|
9
|
+
//! discovered by diffing `builtin_names()` against a default `Bash`;
|
|
10
|
+
//! cfg-registered families are tagged from the table below, which must stay
|
|
11
|
+
//! in sync with the `#[cfg(feature = ...)]` blocks in
|
|
12
|
+
//! `interpreter::with_config`.
|
|
13
|
+
|
|
14
|
+
use bashkit::Bash;
|
|
15
|
+
use std::collections::BTreeMap;
|
|
16
|
+
|
|
17
|
+
/// Families registered by compile feature alone (present in a default-built
|
|
18
|
+
/// `Bash` whenever the feature is on).
|
|
19
|
+
const CFG_REGISTERED: &[(&str, &[&str])] = &[
|
|
20
|
+
("jq", &["jq"]),
|
|
21
|
+
("git", &["git"]),
|
|
22
|
+
("ssh", &["ssh", "scp", "sftp"]),
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
fn main() {
|
|
26
|
+
let base = Bash::new().builtin_names();
|
|
27
|
+
let mut feature_of: BTreeMap<String, String> = BTreeMap::new();
|
|
28
|
+
|
|
29
|
+
for (feature, names) in CFG_REGISTERED {
|
|
30
|
+
for name in *names {
|
|
31
|
+
if base.iter().any(|n| n == name) {
|
|
32
|
+
feature_of.insert((*name).to_string(), (*feature).to_string());
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let mut tag_builder_optin = |names: Vec<String>, feature: &str| {
|
|
38
|
+
for name in names {
|
|
39
|
+
if !base.contains(&name) {
|
|
40
|
+
feature_of.insert(name, feature.to_string());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
#[cfg(feature = "python")]
|
|
46
|
+
tag_builder_optin(Bash::builder().python().build().builtin_names(), "python");
|
|
47
|
+
#[cfg(feature = "typescript")]
|
|
48
|
+
tag_builder_optin(
|
|
49
|
+
Bash::builder().typescript().build().builtin_names(),
|
|
50
|
+
"typescript",
|
|
51
|
+
);
|
|
52
|
+
#[cfg(feature = "sqlite")]
|
|
53
|
+
tag_builder_optin(Bash::builder().sqlite().build().builtin_names(), "sqlite");
|
|
54
|
+
#[cfg(not(any(feature = "python", feature = "typescript", feature = "sqlite")))]
|
|
55
|
+
let _ = &mut tag_builder_optin;
|
|
56
|
+
|
|
57
|
+
let mut all: Vec<String> = base;
|
|
58
|
+
all.extend(feature_of.keys().cloned());
|
|
59
|
+
all.sort();
|
|
60
|
+
all.dedup();
|
|
61
|
+
|
|
62
|
+
let builtins: Vec<serde_json::Value> = all
|
|
63
|
+
.iter()
|
|
64
|
+
.map(|name| {
|
|
65
|
+
serde_json::json!({
|
|
66
|
+
"name": name,
|
|
67
|
+
"feature": feature_of.get(name),
|
|
68
|
+
})
|
|
69
|
+
})
|
|
70
|
+
.collect();
|
|
71
|
+
|
|
72
|
+
let doc = serde_json::json!({
|
|
73
|
+
"_generated": "just regen-builtins — do not edit by hand",
|
|
74
|
+
"count": builtins.len(),
|
|
75
|
+
"builtins": builtins,
|
|
76
|
+
});
|
|
77
|
+
println!("{}", serde_json::to_string_pretty(&doc).expect("serialize"));
|
|
78
|
+
}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
use std::collections::HashMap;
|
|
4
4
|
|
|
5
5
|
use super::{AwkAction, AwkExpr, AwkFunctionDef, AwkOutputTarget, AwkPattern, AwkProgram, AwkRule};
|
|
6
|
-
use crate::builtins::limits::
|
|
6
|
+
use crate::builtins::limits::{
|
|
7
|
+
AWK_MAX_MULTI_SUBSCRIPTS as MAX_AWK_MULTI_SUBSCRIPTS,
|
|
8
|
+
AWK_MAX_PARSER_DEPTH as MAX_AWK_PARSER_DEPTH,
|
|
9
|
+
};
|
|
7
10
|
use crate::builtins::search_common::build_regex;
|
|
8
11
|
use crate::error::{Error, Result};
|
|
9
12
|
|
|
@@ -1484,8 +1487,15 @@ impl<'a> AwkParser<'a> {
|
|
|
1484
1487
|
self.pos += 1; // consume '['
|
|
1485
1488
|
let mut subscripts = vec![self.parse_expression()?];
|
|
1486
1489
|
self.skip_whitespace();
|
|
1487
|
-
//
|
|
1490
|
+
// THREAT[TM-DOS-027]: SUBSEP_CONCAT still evaluates recursively, so cap
|
|
1491
|
+
// attacker-controlled comma lists before folding them into a left-deep AST.
|
|
1488
1492
|
while self.pos < self.input.len() && self.current_char().unwrap() == ',' {
|
|
1493
|
+
if subscripts.len() >= MAX_AWK_MULTI_SUBSCRIPTS {
|
|
1494
|
+
return Err(Error::Execution(format!(
|
|
1495
|
+
"awk: too many array subscripts (max {})",
|
|
1496
|
+
MAX_AWK_MULTI_SUBSCRIPTS
|
|
1497
|
+
)));
|
|
1498
|
+
}
|
|
1489
1499
|
self.pos += 1; // consume ','
|
|
1490
1500
|
self.skip_whitespace();
|
|
1491
1501
|
subscripts.push(self.parse_expression()?);
|
|
@@ -7,6 +7,7 @@ use crate::builtins::limits::{
|
|
|
7
7
|
AWK_MAX_GETLINE_CACHE_BYTES as MAX_GETLINE_CACHE_BYTES,
|
|
8
8
|
AWK_MAX_GETLINE_CACHED_FILES as MAX_GETLINE_CACHED_FILES,
|
|
9
9
|
AWK_MAX_GETLINE_FILE_BYTES as MAX_GETLINE_FILE_BYTES,
|
|
10
|
+
AWK_MAX_MULTI_SUBSCRIPTS,
|
|
10
11
|
AWK_MAX_OUTPUT_BYTES as MAX_OUTPUT_BYTES,
|
|
11
12
|
AWK_MAX_OUTPUT_TARGETS as MAX_OUTPUT_TARGETS,
|
|
12
13
|
};
|
|
@@ -593,6 +594,19 @@ async fn test_awk_multi_subscript() {
|
|
|
593
594
|
assert_eq!(result.stdout.trim(), "1");
|
|
594
595
|
}
|
|
595
596
|
|
|
597
|
+
#[tokio::test]
|
|
598
|
+
async fn test_awk_rejects_too_many_multi_subscripts() {
|
|
599
|
+
// Regression: unbounded multi-subscript lists built a recursive SUBSEP_CONCAT AST.
|
|
600
|
+
let subscripts = std::iter::repeat_n("1", AWK_MAX_MULTI_SUBSCRIPTS + 1)
|
|
601
|
+
.collect::<Vec<_>>()
|
|
602
|
+
.join(",");
|
|
603
|
+
let program = format!("BEGIN {{ a[{subscripts}] = 1 }}");
|
|
604
|
+
|
|
605
|
+
let err = run_awk(&[&program], Some("")).await.unwrap_err();
|
|
606
|
+
|
|
607
|
+
assert!(err.to_string().contains("too many array subscripts"));
|
|
608
|
+
}
|
|
609
|
+
|
|
596
610
|
#[tokio::test]
|
|
597
611
|
async fn test_awk_subsep_defined() {
|
|
598
612
|
// Issue #396.3: SUBSEP should be defined as \034
|