Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/cli-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ jobs:
class Bashkit < Formula
desc "Virtual bash interpreter with sandboxed execution"
homepage "${{ github.server_url }}/${{ github.repository }}"
license "Apache-2.0"
license "MIT"

on_macos do
if Hardware::CPU.arm?
Expand Down Expand Up @@ -254,8 +254,8 @@ jobs:
cp bashkit.rb tap/Formula/bashkit.rb

cd tap
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "Mykhailo Chalyi"
git config user.email "mike@chaliy.name"
git add Formula/bashkit.rb
git diff --cached --quiet && echo "No changes to commit" && exit 0
git commit -m "bashkit ${VERSION}"
Expand Down
296 changes: 296 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ resolver = "2"
members = ["crates/*"]

[workspace.package]
version = "0.18.2"
version = "0.19.0"
edition = "2024"
license = "MIT"
authors = ["Mykhailo Chalyi <mike@chaliy.name>", "Everruns"]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ Enable the `sqlite` feature to embed [Turso](https://github.com/tursodatabase/tu

```toml
[dependencies]
bashkit = { version = "0.18.2", features = ["sqlite"] }
bashkit = { version = "0.19.0", features = ["sqlite"] }
```

```rust
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ interactive = ["dep:rustyline", "dep:terminal_size", "dep:signal-hook"]
# `tzdata` is listed explicitly: an interactive shell must keep honouring
# named `TZ=` zones in `date`, which stopped being implied when chrono-tz
# moved behind a feature.
bashkit = { path = "../bashkit", version = "0.18.2", default-features = false, features = ["http_client", "ring", "git", "jq", "tzdata"] }
bashkit = { path = "../bashkit", version = "0.19.0", default-features = false, features = ["http_client", "ring", "git", "jq", "tzdata"] }
tokio = { workspace = true, features = ["macros", "net", "rt", "rt-multi-thread", "time"] }
clap.workspace = true
anyhow.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@everruns/bashkit",
"version": "0.18.2",
"version": "0.19.0",
"description": "Sandboxed bash interpreter for JavaScript/TypeScript",
"packageManager": "pnpm@10.33.0",
"main": "wrapper.js",
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit-python/bashkit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
get_version,
)

__version__ = "0.1.2"
__version__ = get_version()
__all__ = [
"AnalyzedCommand",
"AnalyzedRedirect",
Expand Down
9 changes: 9 additions & 0 deletions crates/bashkit-python/tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,15 @@ def test_bashtool_system_prompt_includes_username():
assert "agent007" in sp


def test_package_version_matches_native_and_distribution():
"""Every public version surface identifies the installed release."""
from importlib.metadata import version

import bashkit

assert bashkit.__version__ == bashkit.get_version() == version("bashkit")


def test_bashtool_version_format():
"""Version string looks like a semver."""
tool = BashTool()
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit-scripted-tool/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jq = ["bashkit/jq"]
tracing = ["dep:tracing"]

[dependencies]
bashkit = { path = "../bashkit", version = "0.18.2", default-features = false, features = ["bash_tool"] }
bashkit = { path = "../bashkit", version = "0.19.0", default-features = false, features = ["bash_tool"] }
tokio = { workspace = true }
async-trait = { workspace = true }
tower = { workspace = true }
Expand Down
4 changes: 2 additions & 2 deletions crates/bashkit-scripted-tool/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ with pipes, variables, loops and `jq`.

```toml
[dependencies]
bashkit = "0.18"
bashkit-scripted-tool = { version = "0.18", features = ["jq"] }
bashkit = "0.19"
bashkit-scripted-tool = { version = "0.19", features = ["jq"] }
```

```rust,ignore
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit-wasm/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@everruns/bashkit-wasm",
"version": "0.18.2",
"version": "0.19.0",
"description": "Sandboxed bash interpreter for the browser (WebAssembly). Single-threaded — no SharedArrayBuffer, no COOP/COEP headers.",
"type": "module",
"main": "index.js",
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ monty = { version = "=0.0.19", optional = true }

# Real CPython 3.14 as a WASI guest, precompiled to Pulley (cpython feature).
# See knowledge/runtimes/cpython-wasm.md.
bashkit-cpython-wasm = { path = "../bashkit-cpython-wasm", version = "0.18.2", optional = true }
bashkit-cpython-wasm = { path = "../bashkit-cpython-wasm", version = "0.19.0", optional = true }
wasmtime = { workspace = true, optional = true, features = ["pooling-allocator"] }
monty-types = { version = "=0.0.19", optional = true }
# Monty's ruff AST uses compact_str 0.9; get-size2 >=0.10.2 only implements
Expand Down
4 changes: 2 additions & 2 deletions crates/bashkit/docs/cpython.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Enable the `cpython` cargo feature and register the builtins:

```toml
[dependencies]
bashkit = { version = "0.18.2", features = ["cpython"] }
bashkit = { version = "0.19.0", features = ["cpython"] }
```

```rust
Expand Down Expand Up @@ -242,7 +242,7 @@ executable memory. Enable `cpython-native` instead of `cpython` to compile it
to machine code for your target at build time:

```toml
bashkit = { version = "0.18.2", features = ["cpython-native"] }
bashkit = { version = "0.19.0", features = ["cpython-native"] }
```

Calls get 4-10x faster (`print(1)` ~1 ms instead of ~4 ms; CPU-bound code
Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit/docs/logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Add the `logging` feature to your `Cargo.toml`:

```toml
[dependencies]
bashkit = { version = "0.18.2", features = ["logging"] }
bashkit = { version = "0.19.0", features = ["logging"] }
tracing-subscriber = "0.3" # or your preferred subscriber
```

Expand Down
2 changes: 1 addition & 1 deletion crates/bashkit/docs/sqlite.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ the `sqlite` feature. The engine is [Turso](https://github.com/tursodatabase/tur

```toml
# Cargo.toml
bashkit = { version = "0.18.2", features = ["sqlite"] }
bashkit = { version = "0.19.0", features = ["sqlite"] }
```

```rust,ignore
Expand Down
4 changes: 2 additions & 2 deletions crates/bashkit/fuzz/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions crates/bashkit/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@
//!
//! ```toml
//! [dependencies]
//! bashkit = { version = "0.18.2", features = ["git"] }
//! bashkit = { version = "0.19.0", features = ["git"] }
//! ```
//!
//! ```rust,ignore
Expand Down Expand Up @@ -354,7 +354,7 @@
//!
//! ```toml
//! [dependencies]
//! bashkit = { version = "0.18.2", features = ["python"] }
//! bashkit = { version = "0.19.0", features = ["python"] }
//! ```
//!
//! ```rust,ignore
Expand Down
2 changes: 1 addition & 1 deletion docs/builtin_typescript.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Add the `typescript` feature to your `Cargo.toml`:

```toml
[dependencies]
bashkit = { version = "0.18.2", features = ["typescript"] }
bashkit = { version = "0.19.0", features = ["typescript"] }
```

Enable TypeScript in the builder:
Expand Down
8 changes: 5 additions & 3 deletions docs/migrating-scripted-tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ types, same builders, same logic-only shell, same security defaults.
Before:

```toml
bashkit = { version = "0.18.2", features = ["scripted_tool", "python", "typescript", "jq"] }
[dependencies.bashkit]
version = "0.18.2"
features = ["scripted_tool", "python", "typescript", "jq"]
```

After:

```toml
bashkit = { version = "0.18.2", features = ["python", "typescript", "jq"] }
bashkit-scripted-tool = { version = "0.18.2", features = ["python", "typescript", "jq"] }
bashkit = { version = "0.19.0", features = ["python", "typescript", "jq"] }
bashkit-scripted-tool = { version = "0.19.0", features = ["python", "typescript", "jq"] }
```

Keep `bashkit` only if you use it directly (`Bash`, `BashTool`, the `Tool`
Expand Down
2 changes: 1 addition & 1 deletion examples/hyperlight/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 5 additions & 58 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -427,65 +427,12 @@ release-check:
# Check nightly CI jobs (last 3 runs must be green)
just check-nightly

# Monty is a registry dependency, so verify the exact package that CI
# publishes. Rewriting manifests here can hide real packaging failures.
# Cargo stages selected workspace packages in a temporary registry, so
# verification builds the exact new graph before any internal crate is live.
echo ""
echo "Dry-run publish bashkit..."
cargo publish -p bashkit --dry-run --allow-dirty

echo ""
echo "Dry-run publish bashkit-cli..."
# bashkit-cli verifies against the registry package of bashkit.
# Before the matching bashkit release is published, local dry-run cannot
# resolve that package. Package a disposable workspace against the latest
# published core as a structural proxy. The real workflow publishes and
# verifies the matching core before publishing the CLI.
CLI_VERIFY_ROOT=$(mktemp -d)
trap 'rm -rf "$CLI_VERIFY_ROOT"' EXIT
# tar, not rsync: rsync is absent from some cloud release sandboxes.
mkdir -p "$CLI_VERIFY_ROOT/workspace"
tar -c --exclude .git --exclude node_modules --exclude target . \
| tar -x -C "$CLI_VERIFY_ROOT/workspace"
LATEST_CORE=$(cargo search bashkit --limit 1 | sed -n 's/^bashkit = "\([^"]*\)".*/\1/p')
if [ -z "$LATEST_CORE" ]; then
echo "Error: could not determine latest published bashkit version"
exit 1
fi
WORKSPACE_VERSION=$(grep '^version' Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/')
CLI_TOML="$CLI_VERIFY_ROOT/workspace/crates/bashkit-cli/Cargo.toml"
sed -i.bak \
"s/version = \"$WORKSPACE_VERSION\"/version = \"$LATEST_CORE\"/" \
"$CLI_TOML"
rm "$CLI_TOML.bak"
# The proxy resolves the core from crates.io, so it can only request
# features the published core already has. Features added in this release
# cycle (and Python, which the published core predates) are dropped in the
# disposable copy only; the exact new core package dry-run above validates
# them. Failing here means real packaging drift, not a missing feature.
python3 scripts/cli_publish_proxy.py "$CLI_TOML" "$LATEST_CORE"
cargo publish \
--manifest-path "$CLI_VERIFY_ROOT/workspace/Cargo.toml" \
-p bashkit-cli \
--dry-run \
--allow-dirty \
--no-verify

echo ""
echo "Dry-run publish bashkit-scripted-tool..."
# Same structural proxy as the CLI: point the copy's core pin at the latest
# published bashkit. Every core feature it forwards (bash_tool, jq, python,
# typescript) is already on crates.io.
ST_TOML="$CLI_VERIFY_ROOT/workspace/crates/bashkit-scripted-tool/Cargo.toml"
sed -i.bak \
"s/version = \"$WORKSPACE_VERSION\"/version = \"$LATEST_CORE\"/" \
"$ST_TOML"
rm "$ST_TOML.bak"
cargo publish \
--manifest-path "$CLI_VERIFY_ROOT/workspace/Cargo.toml" \
-p bashkit-scripted-tool \
--dry-run \
--allow-dirty \
--no-verify
echo "Dry-run publish all release crates..."
cargo publish --dry-run --allow-dirty \
-p bashkit-cpython-wasm -p bashkit -p bashkit-cli -p bashkit-scripted-tool

echo ""
echo "All release checks passed!"
Expand Down
Loading
Loading