adk-code 2.1.0

Code execution substrate for ADK-Rust — typed executor abstraction, sandbox policy model, and built-in execution backends
Documentation
[package]
name = "adk-code"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
description = "Code execution substrate for ADK-Rust — typed executor abstraction, sandbox policy model, and built-in execution backends"
repository = "https://github.com/zavora-ai/adk-rust"
documentation = "https://docs.rs/adk-code"
keywords = ["ai", "agent", "adk", "code-execution", "sandbox"]
categories = ["api-bindings", "asynchronous"]
readme = "README.md"

[dependencies]
adk-core = { workspace = true }
adk-gcp = { workspace = true, optional = true }
adk-sandbox = { workspace = true }
async-trait = { workspace = true }
base64 = { version = "0.22", optional = true }
boa_engine = { version = "0.20", optional = true }
bollard = { version = "0.18", optional = true }
futures = { workspace = true, optional = true }
google-cloud-auth = { version = "1.8", default-features = false, features = ["default-rustls-provider"], optional = true }
rand = { version = "0.9", optional = true }
reqwest = { workspace = true, optional = true }
serde = { workspace = true }
serde_json = { workspace = true }
tempfile = "3"
thiserror = { workspace = true }
tokio = { workspace = true, features = ["fs", "process", "time", "io-util", "sync", "macros"] }
tracing = { workspace = true }
# Pydantic Monty — a minimal, secure, Rust-native Python interpreter for AI.
# `"0.0.21"` resolves to exactly the release monty itself was built against, so
# the three crates can never diverge (Cargo treats every `0.0.x` as its own
# compatibility range). This is the single place the Monty release is stated:
# `embedded_python` re-exports the three crates, and `adk-codeact-monty`
# consumes them through that re-export.
#
# monty 0.0.21 pulls `ruff_python_ast 0.0.3`, whose `get-size` feature derives
# `get_size2::GetSize` on `compact_str 0.9` fields; `get-size2 0.10.2+` moved to
# `compact_str ^0.10`, so the derive stops resolving. `ruff_python_ast` accepts
# `get-size2 ^0.10`, so the committed workspace Cargo.lock pins `get-size2` to
# `0.10.1` (the last `compact_str ^0.9` release). Remove the pin once monty
# upgrades past ruff_python_ast 0.0.3.
monty = { version = "0.0.21", optional = true }
monty-types = { version = "0.0.21", optional = true }
monty-fs = { version = "0.0.21", optional = true }
# `date.today()` / `datetime.now()` OS calls are serviced from the host clock
# (see `embedded_python::os_access`). `clock` pulls in the local-timezone
# lookup. `default-features = false` because standalone `adk-code` builds do
# not need chrono's `serde` feature.
chrono = { version = "0.4", default-features = false, features = ["clock", "std"], optional = true }

[features]
default = []
embedded-js = ["dep:boa_engine"]
embedded-python = ["dep:monty", "dep:monty-types", "dep:monty-fs", "dep:chrono"]
docker = ["dep:bollard", "dep:rand", "dep:futures"]
# Vertex AI Agent Engine sandbox client (sandboxEnvironments, v1beta1):
# lifecycle + synchronous :execute, SandboxCodeExecutor, VertexSandboxTool.
vertex-sandbox = ["dep:adk-gcp", "dep:base64", "dep:google-cloud-auth", "dep:reqwest"]

[dev-dependencies]
axum = "0.8"
proptest = "1.5"
# rt-multi-thread: the property tests build a runtime with `Runtime::new()`, which
# is gated on it. Without this the crate only compiles as part of a workspace
# build that happens to unify the feature in from another member.
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "test-util"] }