[package]
edition = "2024"
name = "bashkit"
version = "0.4.0"
authors = ["Everruns"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Awesomely fast virtual sandbox with bash and file system"
readme = "README.md"
keywords = [
"bash",
"virtual",
"ai",
"agent",
"everruns",
]
categories = [
"command-line-utilities",
"parser-implementations",
]
license = "MIT"
repository = "https://github.com/everruns/bashkit"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
bot-auth = [
"http_client",
"dep:ed25519-dalek",
"dep:rand",
"dep:zeroize",
]
clap-builtins = ["dep:clap"]
default = ["clap-builtins"]
failpoints = ["fail/failpoints"]
git = []
http_client = [
"reqwest",
"rustls",
]
interop = ["tokio/rt-multi-thread"]
jq = [
"dep:jaq-core",
"dep:jaq-std",
"dep:jaq-json",
]
logging = ["tracing"]
realfs = []
scripted_tool = []
sqlite = [
"dep:turso_core",
"tokio/rt-multi-thread",
]
ssh = ["russh"]
typescript = ["dep:zapcode-core"]
[lib]
name = "bashkit"
path = "src/lib.rs"
[[example]]
name = "agent_tool"
path = "examples/agent_tool.rs"
required-features = ["http_client"]
[[example]]
name = "basic"
path = "examples/basic.rs"
[[example]]
name = "clap_builtin"
path = "examples/clap_builtin.rs"
[[example]]
name = "clap_builtin_subcommands"
path = "examples/clap_builtin_subcommands.rs"
[[example]]
name = "custom_backend"
path = "examples/custom_backend.rs"
[[example]]
name = "custom_builtins"
path = "examples/custom_builtins.rs"
[[example]]
name = "custom_filesystem_impl"
path = "examples/custom_filesystem_impl.rs"
[[example]]
name = "custom_fs"
path = "examples/custom_fs.rs"
[[example]]
name = "git_workflow"
path = "examples/git_workflow.rs"
required-features = ["git"]
[[example]]
name = "live_mounts"
path = "examples/live_mounts.rs"
[[example]]
name = "python_external_functions"
path = "examples/python_external_functions.rs"
[[example]]
name = "python_scripts"
path = "examples/python_scripts.rs"
[[example]]
name = "realfs_readonly"
path = "examples/realfs_readonly.rs"
required-features = ["realfs"]
[[example]]
name = "realfs_readwrite"
path = "examples/realfs_readwrite.rs"
required-features = ["realfs"]
[[example]]
name = "resource_limits"
path = "examples/resource_limits.rs"
[[example]]
name = "scripted_tool"
path = "examples/scripted_tool.rs"
required-features = ["scripted_tool"]
[[example]]
name = "show_tool_output"
path = "examples/show_tool_output.rs"
[[example]]
name = "sqlite_basic"
path = "examples/sqlite_basic.rs"
required-features = ["sqlite"]
[[example]]
name = "sqlite_workflow"
path = "examples/sqlite_workflow.rs"
required-features = ["sqlite"]
[[example]]
name = "ssh_supabase"
path = "examples/ssh_supabase.rs"
required-features = ["ssh"]
[[example]]
name = "streaming_output"
path = "examples/streaming_output.rs"
[[example]]
name = "text_files"
path = "examples/text_files.rs"
[[example]]
name = "text_processing"
path = "examples/text_processing.rs"
[[example]]
name = "typescript_external_functions"
path = "examples/typescript_external_functions.rs"
required-features = ["typescript"]
[[example]]
name = "typescript_scripts"
path = "examples/typescript_scripts.rs"
required-features = ["typescript"]
[[example]]
name = "virtual_identity"
path = "examples/virtual_identity.rs"
[[test]]
name = "allexport_tests"
path = "tests/allexport_tests.rs"
[[test]]
name = "awk_fuzz_scaffold_tests"
path = "tests/awk_fuzz_scaffold_tests.rs"
[[test]]
name = "awk_newline_tests"
path = "tests/awk_newline_tests.rs"
[[test]]
name = "awk_pattern_tests"
path = "tests/awk_pattern_tests.rs"
[[test]]
name = "awk_printf_expr_test"
path = "tests/awk_printf_expr_test.rs"
[[test]]
name = "awk_range_pattern_tests"
path = "tests/awk_range_pattern_tests.rs"
[[test]]
name = "background_exec_tests"
path = "tests/background_exec_tests.rs"
[[test]]
name = "bash_source_tests"
path = "tests/bash_source_tests.rs"
[[test]]
name = "blackbox_security_tests"
path = "tests/blackbox_security_tests.rs"
[[test]]
name = "builtin_error_security_tests"
path = "tests/builtin_error_security_tests.rs"
[[test]]
name = "byte_range_panic_tests"
path = "tests/byte_range_panic_tests.rs"
[[test]]
name = "cancellation_tests"
path = "tests/cancellation_tests.rs"
[[test]]
name = "cmdsub_quote_test"
path = "tests/cmdsub_quote_test.rs"
[[test]]
name = "coproc_tests"
path = "tests/coproc_tests.rs"
[[test]]
name = "credential_injection_tests"
path = "tests/credential_injection_tests.rs"
[[test]]
name = "custom_builtins_tests"
path = "tests/custom_builtins_tests.rs"
[[test]]
name = "custom_fs_tests"
path = "tests/custom_fs_tests.rs"
[[test]]
name = "dev_null_tests"
path = "tests/dev_null_tests.rs"
[[test]]
name = "final_env_tests"
path = "tests/final_env_tests.rs"
[[test]]
name = "find_multi_path_tests"
path = "tests/find_multi_path_tests.rs"
[[test]]
name = "git_advanced_tests"
path = "tests/git_advanced_tests.rs"
[[test]]
name = "git_inspection_tests"
path = "tests/git_inspection_tests.rs"
[[test]]
name = "git_integration_tests"
path = "tests/git_integration_tests.rs"
[[test]]
name = "git_remote_security_tests"
path = "tests/git_remote_security_tests.rs"
[[test]]
name = "git_security_tests"
path = "tests/git_security_tests.rs"
[[test]]
name = "harness_example_tests"
path = "tests/harness_example_tests.rs"
[[test]]
name = "history_tests"
path = "tests/history_tests.rs"
[[test]]
name = "issue_1175_test"
path = "tests/issue_1175_test.rs"
[[test]]
name = "issue_274_test"
path = "tests/issue_274_test.rs"
[[test]]
name = "issue_275_279_282_test"
path = "tests/issue_275_279_282_test.rs"
[[test]]
name = "issue_276_test"
path = "tests/issue_276_test.rs"
[[test]]
name = "issue_277_test"
path = "tests/issue_277_test.rs"
[[test]]
name = "issue_289_test"
path = "tests/issue_289_test.rs"
[[test]]
name = "issue_290_test"
path = "tests/issue_290_test.rs"
[[test]]
name = "issue_291_test"
path = "tests/issue_291_test.rs"
[[test]]
name = "issue_853_test"
path = "tests/issue_853_test.rs"
[[test]]
name = "issue_872_test"
path = "tests/issue_872_test.rs"
[[test]]
name = "issue_873_test"
path = "tests/issue_873_test.rs"
[[test]]
name = "issue_875_test"
path = "tests/issue_875_test.rs"
[[test]]
name = "jq_fuzz_scaffold_tests"
path = "tests/jq_fuzz_scaffold_tests.rs"
[[test]]
name = "live_mount_tests"
path = "tests/live_mount_tests.rs"
[[test]]
name = "logging_security_tests"
path = "tests/logging_security_tests.rs"
[[test]]
name = "mkfifo_tests"
path = "tests/mkfifo_tests.rs"
[[test]]
name = "nested_subscript_tests"
path = "tests/nested_subscript_tests.rs"
[[test]]
name = "network_security_tests"
path = "tests/network_security_tests.rs"
[[test]]
name = "output_truncation_tests"
path = "tests/output_truncation_tests.rs"
[[test]]
name = "overlay_path_validation_tests"
path = "tests/overlay_path_validation_tests.rs"
[[test]]
name = "proptest_differential"
path = "tests/proptest_differential.rs"
[[test]]
name = "proptest_security"
path = "tests/proptest_security.rs"
[[test]]
name = "python_integration_tests"
path = "tests/python_integration_tests.rs"
[[test]]
name = "python_security_tests"
path = "tests/python_security_tests.rs"
[[test]]
name = "realfs_tests"
path = "tests/realfs_tests.rs"
[[test]]
name = "regex_limit_tests"
path = "tests/regex_limit_tests.rs"
[[test]]
name = "release_profile_tests"
path = "tests/release_profile_tests.rs"
[[test]]
name = "script_execution_tests"
path = "tests/script_execution_tests.rs"
[[test]]
name = "security_audit_pocs"
path = "tests/security_audit_pocs.rs"
[[test]]
name = "security_failpoint_tests"
path = "tests/security_failpoint_tests.rs"
[[test]]
name = "set_e_and_or_tests"
path = "tests/set_e_and_or_tests.rs"
[[test]]
name = "skills_tests"
path = "tests/skills_tests.rs"
[[test]]
name = "snapshot_tests"
path = "tests/snapshot_tests.rs"
[[test]]
name = "source_function_tests"
path = "tests/source_function_tests.rs"
[[test]]
name = "spec_runner"
path = "tests/spec_runner.rs"
[[test]]
name = "spec_tests"
path = "tests/spec_tests.rs"
[[test]]
name = "sqlite_compat_tests"
path = "tests/sqlite_compat_tests.rs"
[[test]]
name = "sqlite_differential_tests"
path = "tests/sqlite_differential_tests.rs"
[[test]]
name = "sqlite_fuzz_tests"
path = "tests/sqlite_fuzz_tests.rs"
[[test]]
name = "sqlite_integration_tests"
path = "tests/sqlite_integration_tests.rs"
[[test]]
name = "sqlite_security_tests"
path = "tests/sqlite_security_tests.rs"
[[test]]
name = "ssh_builtin_tests"
path = "tests/ssh_builtin_tests.rs"
[[test]]
name = "ssh_supabase_tests"
path = "tests/ssh_supabase_tests.rs"
[[test]]
name = "stack_overflow_regression_tests"
path = "tests/stack_overflow_regression_tests.rs"
[[test]]
name = "subst_depth_limit_tests"
path = "tests/subst_depth_limit_tests.rs"
[[test]]
name = "symlink_overlay_security_tests"
path = "tests/symlink_overlay_security_tests.rs"
[[test]]
name = "threat_model_tests"
path = "tests/threat_model_tests.rs"
[[test]]
name = "tty_tests"
path = "tests/tty_tests.rs"
[[test]]
name = "typescript_integration_tests"
path = "tests/typescript_integration_tests.rs"
[[test]]
name = "typescript_security_tests"
path = "tests/typescript_security_tests.rs"
[[test]]
name = "unicode_security_tests"
path = "tests/unicode_security_tests.rs"
[[test]]
name = "unset_function_tests"
path = "tests/unset_function_tests.rs"
[[test]]
name = "urandom_tests"
path = "tests/urandom_tests.rs"
[[bench]]
name = "parallel_execution"
path = "benches/parallel_execution.rs"
harness = false
[[bench]]
name = "sqlite"
path = "benches/sqlite.rs"
harness = false
required-features = ["sqlite"]
[dependencies.anyhow]
version = "1"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.chrono]
version = "0.4"
[dependencies.clap]
version = "4"
features = ["derive"]
optional = true
[dependencies.ed25519-dalek]
version = "2"
features = ["rand_core"]
optional = true
[dependencies.fail]
version = "0.5"
optional = true
[dependencies.fancy-regex]
version = "0.18"
[dependencies.flate2]
version = "1"
[dependencies.futures-core]
version = "0.3"
[dependencies.futures-util]
version = "0.3"
[dependencies.hmac]
version = "0.13"
[dependencies.jaq-core]
version = "3.0"
optional = true
[dependencies.jaq-json]
version = "2.0"
optional = true
[dependencies.jaq-std]
version = "3.0"
optional = true
[dependencies.md-5]
version = "0.11"
[dependencies.rand]
version = "0.10"
optional = true
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls-no-provider",
"stream",
]
optional = true
default-features = false
[dependencies.russh]
version = "0.60"
optional = true
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
"tls12",
"logging",
]
optional = true
default-features = false
[dependencies.schemars]
version = "1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha1]
version = "0.11"
[dependencies.sha2]
version = "0.11"
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"sync",
"macros",
"io-util",
"rt",
"time",
]
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.turso_core]
version = "0.5"
optional = true
[dependencies.url]
version = "2"
[dependencies.zapcode-core]
version = "1.5"
optional = true
[dependencies.zeroize]
version = "1"
optional = true
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.insta]
version = "1"
[dev-dependencies.pretty_assertions]
version = "1"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.serial_test]
version = "3"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio-test]
version = "0.4"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"fs",
]