🥇 export from upstream (cdd2f6d)

This commit is contained in:
sandcage-export
2026-05-22 15:30:15 +02:00
parent 061db28096
commit ea7bb89295
11 changed files with 202 additions and 32 deletions
Generated
+155
View File
@@ -17,6 +17,15 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aho-corasick"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
[[package]]
name = "anstream"
version = "1.0.0"
@@ -73,6 +82,21 @@ version = "1.0.102"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
[[package]]
name = "assert_cmd"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2aa3a22042e45de04255c7bf3626e239f450200fd0493c1e382263544b20aea6"
dependencies = [
"anstyle",
"bstr",
"libc",
"predicates",
"predicates-core",
"predicates-tree",
"wait-timeout",
]
[[package]]
name = "atomic"
version = "0.6.1"
@@ -82,6 +106,12 @@ dependencies = [
"bytemuck",
]
[[package]]
name = "autocfg"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
[[package]]
name = "backtrace"
version = "0.3.76"
@@ -121,6 +151,17 @@ dependencies = [
"generic-array",
]
[[package]]
name = "bstr"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
dependencies = [
"memchr",
"regex-automata",
"serde",
]
[[package]]
name = "bytemuck"
version = "1.25.0"
@@ -198,6 +239,12 @@ dependencies = [
"typenum",
]
[[package]]
name = "difflib"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
[[package]]
name = "digest"
version = "0.10.7"
@@ -277,6 +324,15 @@ dependencies = [
"version_check",
]
[[package]]
name = "float-cmp"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8"
dependencies = [
"num-traits",
]
[[package]]
name = "foldhash"
version = "0.1.5"
@@ -470,6 +526,21 @@ dependencies = [
"adler2",
]
[[package]]
name = "normalize-line-endings"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "object"
version = "0.37.3"
@@ -526,6 +597,36 @@ dependencies = [
"syn",
]
[[package]]
name = "predicates"
version = "3.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ada8f2932f28a27ee7b70dd6c1c39ea0675c55a36879ab92f3a715eaa1e63cfe"
dependencies = [
"anstyle",
"difflib",
"float-cmp",
"normalize-line-endings",
"predicates-core",
"regex",
]
[[package]]
name = "predicates-core"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cad38746f3166b4031b1a0d39ad9f954dd291e7854fcc0eed52ee41a0b50d144"
[[package]]
name = "predicates-tree"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0de1b847b39c8131db0467e9df1ff60e6d0562ab8e9a16e568ad0fdb372e2f2"
dependencies = [
"predicates-core",
"termtree",
]
[[package]]
name = "prettyplease"
version = "0.2.37"
@@ -584,6 +685,35 @@ dependencies = [
"thiserror",
]
[[package]]
name = "regex"
version = "1.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]]
name = "rustc-demangle"
version = "0.1.27"
@@ -626,6 +756,16 @@ dependencies = [
"which",
]
[[package]]
name = "sandcage-test"
version = "0.0.0"
dependencies = [
"assert_cmd",
"predicates",
"sandcage",
"tempfile",
]
[[package]]
name = "semver"
version = "1.0.28"
@@ -769,6 +909,12 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "termtree"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683"
[[package]]
name = "textwrap"
version = "0.16.2"
@@ -903,6 +1049,15 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "wait-timeout"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11"
dependencies = [
"libc",
]
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
+3 -20
View File
@@ -1,20 +1,3 @@
[package]
name = "sandcage"
version = "0.1.0"
edition = "2024"
description = "Sandboxed containers for AI coding agents"
license = "MIT"
keywords = ["docker", "sandbox", "ai", "agent"]
[dependencies]
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_yaml = "0.9"
figment = { version = "0.10", features = ["toml", "env"] }
miette = { version = "7", features = ["fancy"] }
thiserror = "2"
which = "7"
dirs = "6"
sha2 = "0.10"
hex = "0.4"
tempfile = "3"
[workspace]
members = ["crates/sandcage"]
resolver = "3"
+1 -1
View File
@@ -24,7 +24,7 @@ cargo install --git https://github.com/dirigence/sandcage
Or from a local checkout:
```bash
cargo install --path .
cargo install --path crates/sandcage
```
### Build the images
+20
View File
@@ -0,0 +1,20 @@
[package]
name = "sandcage"
version = "0.1.0"
edition = "2024"
description = "Sandboxed containers for AI coding agents"
license = "MIT"
keywords = ["docker", "sandbox", "ai", "agent"]
[dependencies]
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_yaml = "0.9"
figment = { version = "0.10", features = ["toml", "env"] }
miette = { version = "7", features = ["fancy"] }
thiserror = "2"
which = "7"
dirs = "6"
sha2 = "0.10"
hex = "0.4"
tempfile = "3"
@@ -14,11 +14,11 @@ use crate::config::SandcageConfig;
// Bundled Dockerfiles
// ---------------------------------------------------------------------------
const DOCKERFILE_BASE: &str = include_str!("../images/base/Dockerfile");
const DOCKERFILE_CLAUDE: &str = include_str!("../images/claude/Dockerfile");
const DOCKERFILE_CODEX: &str = include_str!("../images/codex/Dockerfile");
pub const DOCKERFILE_BASE: &str = include_str!("../../../images/base/Dockerfile");
pub const DOCKERFILE_CLAUDE: &str = include_str!("../../../images/claude/Dockerfile");
pub const DOCKERFILE_CODEX: &str = include_str!("../../../images/codex/Dockerfile");
const COMPOSE_YAML: &str = include_str!("../compose/docker-compose.yml");
pub const COMPOSE_YAML: &str = include_str!("../../../compose/docker-compose.yml");
#[derive(Debug, Error, Diagnostic)]
pub enum DockerError {
+1 -1
View File
@@ -4,7 +4,7 @@ use miette::Diagnostic;
use thiserror::Error;
const CLAUDE_SETTINGS_TEMPLATE: &str =
include_str!("../templates/claude/settings.json");
include_str!("../../../templates/claude/settings.json");
#[derive(Debug, Error, Diagnostic)]
pub enum InitError {
+4
View File
@@ -0,0 +1,4 @@
pub mod config;
pub mod docker;
pub mod init;
pub mod workspace;
+4 -4
View File
@@ -3,10 +3,10 @@ use miette::Diagnostic;
use std::path::PathBuf;
use thiserror::Error;
mod config;
mod docker;
mod init;
mod workspace;
use sandcage::config;
use sandcage::docker;
use sandcage::init;
use sandcage::workspace;
/// Sandboxed containers for AI coding agents
#[derive(Parser, Debug)]
+10 -2
View File
@@ -19,9 +19,17 @@ check:
build:
cargo build
# Run tests.
# Run unit tests (fast, no Docker required).
test:
cargo test
cargo test --workspace --exclude sandcage-test
# Run functional tests (requires Docker).
test-functional:
cargo test -p sandcage-test -- --test-threads=1
# Run all tests.
test-all:
cargo test --workspace
# Run Claude Code.
claude: