1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# Bashkit core library
# Sandboxed bash interpreter for multi-tenant environments
[]
= "bashkit"
= true
= true
= true
= true
= true
= true
= true
= true
= "../../README.md"
[]
# Async runtime
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# Error handling
= { = true }
= { = true }
# Serialization
= { = true }
= { = true }
# Regex
= { = true }
= { = true }
# Date/Time
= { = true }
# HTTP client (for curl/wget) - optional, enabled with http_client feature
= { = true, = true }
# Direct rustls dep so we can install the `ring` crypto provider at runtime
# (paired with reqwest's `rustls-no-provider` feature). Optional, gated under http_client.
= { = true, = true }
# SSH client (for ssh/scp/sftp) - optional, enabled with ssh feature
= { = true, = true }
# Fault injection for testing (optional)
= { = true, = true }
# URL parsing
= "2"
# Compact flag bitsets used by the interpreter for variable attributes
# (readonly/integer/lower/upper) and shell options (set -e/-u/-x/-o pipefail).
# Stays the format!()-based `_READONLY_X`/`SHOPT_*` keys off the hot path.
= "2"
# JSON processing (jq) - optional, enabled with jq feature
= { = true, = true }
= { = true, = true }
= { = true, = true }
# Compression (for gzip/gunzip)
= { = true }
# Base64 encoding (for base64 builtin and HTTP basic auth)
= { = true }
# Ed25519 signing for bot-auth request signing (optional)
= { = true, = true }
= { = true, = true }
= { = true, = true }
# CSPRNG for credential placeholder generation
= { = true }
# Checksums (for md5sum, sha1sum, sha256sum builtins)
= { = true }
= { = true }
= { = true }
= "0.13"
# Logging/tracing (optional)
= { = true, = true }
# CLI-style argument parsing for custom builtins and ported coreutils
# argument surfaces. Always on — see specs/coreutils-args-port.md.
= { = true }
# Pinned to uutils' workspace versions. Used by the vendored
# uucore::format module (see crates/bashkit/src/builtins/generated/format)
# that backs `printf`. Kept platform-clean — no rustix / errno
# transitive deps — so wasm32 stays buildable.
= "0.4"
= "0.2"
= "0.5"
= "0.1.3"
# Embedded Python interpreter (optional)
# Embedded TypeScript interpreter (optional)
= { = "1.5", = true }
# Embedded SQLite engine via Turso (optional, BETA upstream).
# Pulls a multi-MB transitive dep tree only when the `sqlite` feature is active.
= { = true, = true }
[]
= []
# Enable jq builtin via embedded jaq interpreter
# Usage: cargo build --features jq
= ["dep:jaq-core", "dep:jaq-std", "dep:jaq-json"]
= ["reqwest", "rustls"]
# Enable Ed25519 request signing per RFC 9421 / web-bot-auth profile
= ["http_client", "dep:ed25519-dalek", "dep:rand", "dep:zeroize"]
# Enable fail points for security/fault injection testing
# Usage: FAILPOINTS="fail_point_name=action" cargo test --features failpoints
= ["fail/failpoints"]
# Enable structured logging via tracing crate
# Usage: cargo build --features logging
= ["tracing"]
# Enable git builtin for sandboxed git operations
# Phase 1: Local operations (init, config, add, commit, status, log)
# Phase 2 will add gix dependency for remote operations
# Usage: cargo build --features git
= []
# Enable ssh/scp/sftp builtins for remote command execution and file transfer
# Usage: cargo build --features ssh
= ["russh"]
# Enable ScriptedTool: compose ToolDef+callback pairs into a single Tool
# Usage: cargo build --features scripted_tool
= []
# Enable python/python3 builtins via embedded Monty interpreter
# Monty is a git dep (not yet on crates.io) — feature unavailable from registry
# Enable ts/node/deno/bun builtins via embedded ZapCode TypeScript interpreter
# Usage: cargo build --features typescript
= ["dep:zapcode-core"]
# Enable sqlite/sqlite3 builtins backed by Turso (pure-Rust SQLite-compatible
# engine). Phase 1 uses turso's `MemoryIO` with a load/flush against the VFS
# at command boundaries; Phase 2 plugs the bashkit VFS in via a custom `IO`
# implementation. Both paths share the same builtin and dot-command surface.
# See specs/sqlite-builtin.md.
#
# Turso is BETA upstream — keep this off by default and document the risk.
# Requires the multi-threaded tokio runtime so the sync `IO` trait can bridge
# back to the async VFS via `block_in_place`.
# Usage: cargo build --features sqlite
= ["dep:turso_core", "tokio/rt-multi-thread"]
# Enable RealFs backend for accessing host filesystem directories
# WARNING: This intentionally breaks the sandbox boundary.
# Usage: cargo build --features realfs
= []
# Enable native-extension interop contracts such as bashkit::interop::fs.
= ["tokio/rt-multi-thread"]
[]
= true
= ["--cfg", "docsrs"]
[]
= { = true }
= { = true }
= { = true }
= { = "0.8", = ["async_tokio"] }
= { = true }
= "3"
= { = true }
# Important decision: consolidate the bulk of integration tests into one
# binary. Cargo's auto-discovery makes every `tests/*.rs` its own crate,
# statically linking the world (monty, zapcode, turso, russh, jaq,
# reqwest+rustls, ed25519-dalek) — 80+ link steps blew CI runner disk.
# This single `[[test]]` rolls them up. Tests that need their own binary
# (process-global env mutation, `--test-threads=1`, ssh-only feature
# isolation) remain as siblings at `tests/<name>.rs`. See
# `specs/testing.md` for the convention.
[[]]
= "integration"
= "tests/integration/main.rs"
[[]]
= "parallel_execution"
= false
[[]]
= "hotpath"
= false
[[]]
= "file_ops"
= false
[[]]
= "sqlite"
= false
= ["sqlite"]
[[]]
= "agent_tool"
= ["http_client"]
[[]]
= "git_workflow"
= ["git"]
[[]]
= "ssh_supabase"
= ["ssh"]
[[]]
= "scripted_tool"
= ["scripted_tool"]
[[]]
= "typescript_scripts"
= ["typescript"]
[[]]
= "typescript_external_functions"
= ["typescript"]
[[]]
= "realfs_readonly"
= ["realfs"]
[[]]
= "realfs_readwrite"
= ["realfs"]
[[]]
= "sqlite_basic"
= ["sqlite"]
[[]]
= "sqlite_workflow"
= ["sqlite"]
# Additional tokio features needed only on native (not WASM)
[]
= { = "1", = ["rt-multi-thread", "fs"] }