submilli-engine 0.4.0

Compiles Submilli programs, a TypeScript subset, to WebAssembly and runs them under capability policy
Documentation
[package]
name = "submilli-engine"
description = "Compiles Submilli programs, a TypeScript subset, to WebAssembly and runs them under capability policy"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
readme = "README.md"
keywords = ["submilli", "typescript", "webassembly", "sandbox", "agents"]
categories = ["compilers", "wasm"]
publish = true
# Tests and their snapshots stay in the repository; the package is the library.
exclude = ["tests/**", "**/snapshots/**"]

[lints]
workspace = true

[dependencies]
wasmtime = { workspace = true }
wasm-encoder = { workspace = true }
wasmparser = { workspace = true }
wast = { workspace = true }
gimli = { workspace = true }
unicode-ident = { workspace = true }
unicode-width = "0.2.2"
unicode-normalization = { workspace = true }
async-trait = { workspace = true }
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "net", "time"] }
reqwest = { workspace = true }
futures = { workspace = true }
uuid = { workspace = true }
url = { workspace = true }
ipnet = { workspace = true }
percent-encoding = { workspace = true }
base64 = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
tempfile = { workspace = true }
ureq = { workspace = true }
cap-std = { workspace = true }
cap-fs-ext = { workspace = true }
num-bigint = { workspace = true }
num-traits = { workspace = true }
flate2 = { workspace = true }
zstd = { workspace = true }
regex = { workspace = true }
regex-syntax = { workspace = true }
ignore = "0.4"
globset = "0.4"
similar = "2.7"
jiff = { workspace = true }
jiff-tzdb = "=0.1.6"
# SUB-279: `Math.random()` entropy source. Already a transitive dep
# through uuid; calling it directly avoids pulling in `rand`.
getrandom = "0.2"
# SUB-182: `submilli:crypto` hashing + HMAC. Battle-tested RustCrypto
# crates; bundled in pure Rust so they slot straight into wasmtime
# host fns. Constant-time comparison is hand-rolled to keep the dep
# footprint small.
sha2 = "0.10"
hmac = "0.12"
gix = { version = "0.87.1", default-features = false, features = ["sha1", "basic", "revision", "index", "blocking-network-client", "blocking-http-transport-reqwest-rust-tls"] }
# The timestamp gix-index decodes an index with; already in the tree through gix.
filetime = "0.2"

[target.'cfg(unix)'.dependencies]
libc = { workspace = true }

[target.'cfg(windows)'.dependencies]
cap-primitives = { workspace = true }

[dev-dependencies]
tokio-rustls = "0.26"
insta = { workspace = true }
httpmock = { workspace = true }
flate2 = { workspace = true }
pollster = { workspace = true }