[workspace] members = [ "lib/apps/*", "lib/components/*", "lib/foundation/*", "test/twin/openai", "test/twin/github", ] default-members = ["lib/apps/fabro-cli"] resolver = "2" [workspace.package] edition = "2021" version = "0.325.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"] } sse-stream = "0.2" 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" bollard = "0.18" tar = "0.4" 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" 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" } twin-openai = { path = "test/twin/openai" } twin-github = { path = "test/twin/github" } tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"] } futures-util = "0.3" daytona-sdk = { git = "https://github.com/brynary/daytona-sdk-rust", rev = "73c9c458dd1a1d096afd3521175637af82afd8d8", package = "daytona-sdk" } daytona-api-client = { git = "https://github.com/brynary/daytona-sdk-rust", rev = "73c9c458dd1a1d096afd3521175637af82afd8d8", package = "daytona-api-client" } sentry = { version = "0.35", default-features = false, features = ["backtrace", "contexts", "ureq", "rustls"] } fork = "0.2" exec = "0.3" slatedb = { version = "0.11.2", features = ["zstd"] } 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