fabro/Cargo.toml
Scott Werner 6ac6d5495f fix: run built-in sandbox providers in process
Register lazy Host, Docker, and Daytona factories for Petri execution,
fork, and prune. Share server provider configuration, preserve lease
fingerprints, and source Daytona credentials from the vault.

Remove built-in plugin setup and skip gates; add a release-mode worker
and prune regression to catch the failure that blocked nightly builds.

Co-Authored-By: Codex <noreply@openai.com>
2026-09-24 17:14:47 -04:00

195 lines
7.7 KiB
TOML

[workspace]
members = [
"lib/apps/*",
"lib/components/*",
"lib/foundation/*",
"test/twin/github",
]
default-members = ["lib/apps/fabro-cli"]
resolver = "2"
[workspace.package]
edition = "2021"
version = "0.362.0-nightly.0"
license = "MIT"
[workspace.dependencies]
anyhow = "1"
axum = { version = "0.8" }
axum-extra = { version = "0.10", features = ["cookie-private", "query"] }
cookie = { version = "0.18", features = ["percent-encode", "private", "signed", "key-expansion"] }
croner = "3.0.1"
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
sqlx = { version = "0.9", default-features = false, features = ["runtime-tokio", "sqlite-bundled", "migrate", "macros"] }
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.13", default-features = false, features = ["json", "stream", "rustls", "query", "form", "multipart"] }
ulid = "1"
uuid = { version = "1", features = ["v4", "v7", "v8"] }
rand = "0.9"
dotenvy = "0.15"
futures = "0.3"
tokio-stream = "0.1"
async-trait = "0.1"
async_zip = { version = "0.0.18", features = ["tokio", "deflate"] }
fs2 = "0.4"
base64 = "0.22"
bytes = "1"
tokio-util = "0.7"
clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4"
jsonschema = { version = "0.42", default-features = false }
chrono = { version = "0.4", features = ["clock", "serde"] }
dashmap = "6"
cli-table = { version = "0.5", default-features = false }
console = "0.15"
dialoguer = "0.12"
git2 = { version = "0.20", default-features = false, features = ["vendored-libgit2", "vendored-openssl", "https"] }
tracing = "0.1"
unicase = "2"
unicode-normalization = "0.1"
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
tracing-appender = "0.2"
rmcp = { version = "1.4", default-features = false }
walkdir = "2"
regex = "1"
semver = "1"
aho-corasick = "1"
globset = "0.4"
glob = "0.3"
dirs = "6"
mac_address = "1"
md5 = "0.7"
mime_guess = "2"
indicatif = "0.18"
termimad = "0.34"
toml = "0.8"
toml_edit = "0.22"
jsonwebtoken = { version = "10", features = ["aws_lc_rs"] }
hkdf = "0.12"
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"
insta = "1"
fabro-test = { path = "lib/foundation/fabro-test" }
# Lithos libraries track `main`; this lockfile picks the commits — move one
# with `cargo update -p <crate>`. Try unmerged library work with an
# uncommitted `[patch]`, not a PR-head pin.
# Provider-neutral LLM catalog and client, from git until 0.x is published to
# crates.io.
lithos-llm = { git = "https://github.com/lithoscomputer/lithos-llm", branch = "main", default-features = false }
# Deterministic OpenAI twin used by twin-mode E2E tests, the twin lithos-llm
# verifies its codecs against.
twin-openai = { git = "https://github.com/lithoscomputer/twins", branch = "main" }
twin-github = { path = "test/twin/github" }
tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"] }
futures-util = "0.3"
# sandbox-driver: the sandbox provider layer. Bundled Host, Docker, and
# Daytona providers link in-process; third-party providers run as stdio
# plugins through sandbox-driver-protocol.
sandbox-driver = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-protocol = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-host = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-docker = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-docker-config = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-daytona = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-daytona-config = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
sandbox-driver-testing = { git = "https://github.com/lithoscomputer/sandbox-driver", branch = "main" }
# pebble: the coding agent loop fabro runs its agent stages, Ask Fabro
# sessions, hook evaluators, and `fabro exec` on. The `Environment` over a
# sandbox-driver handle is pebble's `sandbox_driver` module (the
# `sandbox-driver` feature).
pebble-agent = { git = "https://github.com/lithoscomputer/pebble", branch = "main" }
pebble-coding-agent = { git = "https://github.com/lithoscomputer/pebble", branch = "main", features = ["mcp", "search-providers", "sandbox-driver"] }
pebble-cli-core = { git = "https://github.com/lithoscomputer/pebble", branch = "main" }
# petri: the workflow engine Fabro runs its workflows on. Only `fabro-petri`
# and `fabro-dot` (the DOT parser alone) may depend on these packages; the
# keys carry the `petri_` prefix so the crate names say where they come from.
petri_runtime = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-runtime" }
petri_execution = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-execution" }
petri_store = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-store" }
petri_attractor_steps = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-attractor-steps" }
petri_frontend_attractor = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-frontend-attractor" }
petri_frontend_fabro = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-frontend-fabro" }
petri_testkit = { git = "https://github.com/lithoscomputer/petri.git", branch = "main", package = "petri-testkit" }
sentry = { version = "0.35", default-features = false, features = ["backtrace", "contexts", "ureq", "rustls"] }
fork = "0.2"
exec = "0.3"
object_store = { version = "0.12.5", features = ["aws"] }
rust-embed = "8"
percent-encoding = "2"
minijinja = "=2.19.0"
miette = { version = "7.6", features = ["fancy"] }
fabro-http = { path = "lib/foundation/fabro-http" }
fabro-environment = { path = "lib/components/fabro-environment" }
fabro-options-metadata = { path = "lib/foundation/fabro-options-metadata" }
fabro-redact = { path = "lib/foundation/fabro-redact" }
fabro-static = { path = "lib/foundation/fabro-static" }
graphviz-sys = { git = "https://github.com/fabro-sh/graphviz-sys" }
ref-cast = "1"
strum = { version = "0.28", features = ["derive"] }
url = "2"
zeroize = "1"
[workspace.lints.rust]
unsafe_code = "deny"
unreachable_pub = "warn"
[workspace.lints.clippy]
pedantic = { level = "warn", priority = -2 }
allow_attributes_without_reason = "warn"
# Allowed pedantic lints
implicit_hasher = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
too_many_arguments = "allow"
too_many_lines = "allow"
cast_precision_loss = "allow"
doc_markdown = "allow"
# Disallowed restriction lints
print_stdout = "warn"
print_stderr = "warn"
dbg_macro = "warn"
empty_drop = "warn"
empty_structs_with_brackets = "warn"
disallowed_methods = "deny"
exit = "warn"
get_unwrap = "warn"
unwrap_used = "deny"
rc_buffer = "warn"
rc_mutex = "warn"
rest_pat_in_fully_bound_structs = "warn"
use_self = "warn"
# Project-specific lints
wildcard_imports = "warn"
absolute_paths = "warn"
[profile.release]
lto = "thin"
strip = true
[profile.dev]
debug = "line-tables-only"
split-debuginfo = "off"
[profile.test]
debug = "line-tables-only"
split-debuginfo = "off"
[profile.dev.package."*"]
debug = false # Disable debug info for all dependencies
opt-level = 1 # Shrinks monomorphized generics, reducing test binary size
# regex is extremely slow in debug builds (~10s to compile gitleaks patterns)
[profile.dev.package.regex]
opt-level = 2
[profile.dev.package.regex-automata]
opt-level = 2
[profile.dev.package.regex-syntax]
opt-level = 2