mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-01 02:04:24 +00:00
Petri main now carries the fork entry point, the interrupt control, the incremental replay and the records the views asked for. Only the Petri source lines move in the lockfile. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
220 lines
10 KiB
TOML
220 lines
10 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.357.0-nightly.0"
|
|
license = "MIT"
|
|
|
|
[workspace.dependencies]
|
|
agent-client-protocol = { version = "0.11.1", features = ["unstable_session_usage"] }
|
|
agent-client-protocol-tokio = "0.11.1"
|
|
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"
|
|
# AWS building blocks for the native Bedrock adapter. Lean stack: request
|
|
# signing + credential chain + event-stream decode only. Transport for the
|
|
# actual Bedrock inference calls stays on fabro-http; the full
|
|
# aws-sdk-bedrockruntime (and its parallel hyper stack) is not pulled in.
|
|
# aws-config keeps its DEFAULT features on purpose: `rt-tokio` supplies the
|
|
# TokioSleep impl the credential chain's retry requires (without it,
|
|
# resolving the default chain panics with "an async sleep implementation is
|
|
# required"), and `sso`/`credentials-process` make from_default_chain's
|
|
# documented SSO/credential-process support real. `rustls` pins the TLS
|
|
# backend for credential-resolution HTTP.
|
|
aws-config = { version = "1", features = ["behavior-version-latest", "rustls"] }
|
|
aws-credential-types = { version = "1", features = ["hardcoded-credentials"] }
|
|
aws-sigv4 = "1"
|
|
aws-smithy-eventstream = "0.60"
|
|
aws-smithy-runtime-api = "1"
|
|
aws-smithy-types = "1"
|
|
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" }
|
|
# Provider-neutral LLM catalog and client. Pinned to a revision until 0.x is
|
|
# published to crates.io.
|
|
lithos-llm = { git = "https://github.com/lithoscomputer/lithos-llm", rev = "55add4596b861a0623d00c3a54aa5c147c8d504b", default-features = false }
|
|
# Deterministic OpenAI twin used by twin-mode E2E tests; the same revision
|
|
# lithos-llm verifies its codecs against.
|
|
twin-openai = { git = "https://github.com/lithoscomputer/twins", rev = "ca45f0e50a6716d716aa2f638ca3cf767e88f613" }
|
|
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. Pinned by rev to sandbox-driver
|
|
# `main` (the `section-4-driver-items` work merged in #20; #21 gave the
|
|
# protocol crate's `PluginSupervisor` numbered generations, a health probe
|
|
# before a generation serves, and a refusal of a replacement that reports
|
|
# another resource namespace; #22 made the Daytona exec decoder resync on a
|
|
# torn frame and report what it dropped as `ExecStreamingResult::output_loss`
|
|
# instead of failing the command). The CI plugin job installs the driver
|
|
# executables at the same rev, read from this file.
|
|
sandbox-driver = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-protocol = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-host = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-docker = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-docker-config = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-daytona = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-daytona-config = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
sandbox-driver-testing = { git = "https://github.com/lithoscomputer/sandbox-driver", rev = "64c14b89d078a4b34d1555092ad01d41541f7a7d" }
|
|
# pebble: the coding agent loop fabro runs its agent stages, Ask Fabro
|
|
# sessions, hook evaluators, and `fabro exec` on. Pinned by rev to pebble
|
|
# `main`. Pebble owns the `PortRoutes` trait fabro implements over its run
|
|
# sandbox, so the pebble and sandbox-driver pins move independently. Pebble
|
|
# pins the same lithos-llm rev as fabro, and its lockfile policy is that
|
|
# every shared crate resolves to the version lithos-llm locks.
|
|
pebble-agent = { git = "https://github.com/lithoscomputer/pebble", rev = "a39f43e26effdf99635eaf343f095c17157c9c93" }
|
|
pebble-coding-agent = { git = "https://github.com/lithoscomputer/pebble", rev = "a39f43e26effdf99635eaf343f095c17157c9c93", features = ["mcp", "search-providers"] }
|
|
pebble-cli-core = { git = "https://github.com/lithoscomputer/pebble", rev = "a39f43e26effdf99635eaf343f095c17157c9c93" }
|
|
# petri: the workflow engine Fabro runs its workflows on. Pinned by rev, the
|
|
# same way pebble and sandbox-driver are. Petri pins the same pebble,
|
|
# lithos-llm and sandbox-driver revisions as this file, so the workspace links
|
|
# one copy of each. Only `fabro-petri` 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", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-runtime" }
|
|
petri_execution = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-execution" }
|
|
petri_store = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-store" }
|
|
petri_attractor_steps = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-attractor-steps" }
|
|
petri_frontend_attractor = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-frontend-attractor" }
|
|
petri_frontend_fabro = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", package = "petri-frontend-fabro" }
|
|
petri_testkit = { git = "https://github.com/lithoscomputer/petri.git", rev = "639ce3e368b84ff48a3d8f695b8c5736b1c1563e", 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
|