[package]
edition = "2024"
name = "bashkit"
version = "0.8.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",
]
default = []
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 = "integration"
path = "tests/integration/main.rs"
[[test]]
name = "logging_security_tests"
path = "tests/logging_security_tests.rs"
[[test]]
name = "proptest_security"
path = "tests/proptest_security.rs"
[[test]]
name = "realfs_tests"
path = "tests/realfs_tests.rs"
[[test]]
name = "security_failpoint_tests"
path = "tests/security_failpoint_tests.rs"
[[test]]
name = "ssh_builtin_tests"
path = "tests/ssh_builtin_tests.rs"
[[test]]
name = "ssh_supabase_tests"
path = "tests/ssh_supabase_tests.rs"
[[bench]]
name = "file_ops"
path = "benches/file_ops.rs"
harness = false
[[bench]]
name = "hotpath"
path = "benches/hotpath.rs"
harness = false
[[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.bigdecimal]
version = "0.4"
[dependencies.bitflags]
version = "2"
[dependencies.chrono]
version = "0.4"
[dependencies.clap]
version = "4"
features = ["derive"]
[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.getrandom]
version = "0.4"
features = ["wasm_js"]
[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.num-traits]
version = "0.2"
[dependencies.os_display]
version = "0.1.3"
[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.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.6"
optional = true
[dependencies.unit-prefix]
version = "0.5"
[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",
]