[package] name = "fabro-cli" edition.workspace = true version.workspace = true publish = false license.workspace = true description = "Unified CLI for the Fabro AI framework" [[bin]] name = "fabro" path = "src/main.rs" [features] default = [] sleep_inhibitor = ["dep:core-foundation"] [lints] workspace = true [dependencies] fabro-auth = { path = "../../foundation/fabro-auth" } fabro-config = { path = "../../foundation/fabro-config" } fabro-environment = { path = "../../components/fabro-environment" } fabro-llm = { path = "../../components/fabro-llm" } fabro-model = { path = "../../foundation/fabro-model" } fabro-oauth = { path = "../../foundation/fabro-oauth" } fabro-github = { path = "../../components/fabro-github" } fabro-agent = { path = "../../components/fabro-agent" } fabro-dump = { path = "../../components/fabro-dump" } fabro-hooks = { path = "../../components/fabro-hooks" } fabro-install = { path = "../../components/fabro-install" } fabro-interview = { path = "../../components/fabro-interview" } fabro-mcp = { path = "../../components/fabro-mcp" } fabro-mcp-server = { path = "../fabro-mcp-server" } fabro-manifest = { path = "../../components/fabro-manifest" } fabro-proc = { path = "../../foundation/fabro-proc" } fabro-sandbox = { path = "../../components/fabro-sandbox", features = ["daytona"] } fabro-checkpoint = { path = "../../components/fabro-checkpoint" } fabro-graphviz = { path = "../../components/fabro-graphviz" } fabro-validate = { path = "../../components/fabro-validate" } fabro-workflow = { path = "../../components/fabro-workflow" } fabro-server = { path = "../fabro-server" } fabro-client = { path = "../../foundation/fabro-client" } fabro-api = { path = "../../foundation/fabro-api" } fabro-telemetry = { path = "../../foundation/fabro-telemetry" } fabro-store = { path = "../../components/fabro-store" } fabro-vault = { path = "../../foundation/fabro-vault" } fabro-types = { path = "../../foundation/fabro-types", features = ["clap"] } fabro-redact.workspace = true fabro-util = { path = "../../foundation/fabro-util" } fabro-http.workspace = true fabro-static.workspace = true fabro-template = { path = "../../foundation/fabro-template" } fabro-tool = { path = "../../components/fabro-tool" } clap.workspace = true clap_complete.workspace = true cli-table.workspace = true console.workspace = true indicatif.workspace = true daytona-sdk.workspace = true anyhow.workspace = true miette.workspace = true dotenvy.workspace = true tokio.workspace = true tokio-tungstenite.workspace = true tracing.workspace = true tracing-subscriber.workspace = true tracing-appender.workspace = true chrono = { workspace = true, features = ["serde"] } dirs.workspace = true fs2.workspace = true serde.workspace = true thiserror.workspace = true toml.workspace = true toml_edit.workspace = true futures.workspace = true regex.workspace = true semver.workspace = true progenitor-client = "0.13" async-trait.workspace = true jsonwebtoken.workspace = true base64.workspace = true ulid.workspace = true scopeguard = "1" rustls = { version = "0.23", default-features = false, features = ["std", "ring"] } ring = "0.17" x509-parser = "0.16" rand.workspace = true dialoguer.workspace = true git2.workspace = true axum.workspace = true serde_json.workspace = true serde_yaml = "0.9" tempfile = "3" sha2.workspace = true shlex = "1" walkdir.workspace = true object_store.workspace = true bytes.workspace = true tokio-util.workspace = true libc = "0.2" nix = { version = "0.30", features = ["fs"] } [target.'cfg(target_os = "macos")'.dependencies] core-foundation = { version = "0.9", optional = true } # Vendor openssl only for musl targets. daytona-sdk transitively pulls # native-tls via reqwest, which needs libssl. On glibc runners the system # libssl is used; on musl runners we compile openssl from source. [target.'cfg(target_env = "musl")'.dependencies] openssl = { version = "0.10", features = ["vendored"] } [build-dependencies] fabro-build-support = { path = "../../foundation/build-support" } chrono = { workspace = true } [dev-dependencies] assert_cmd = "2" fabro-acp = { path = "../../components/fabro-acp", features = ["test-support"] } fabro-build-support = { path = "../../foundation/build-support" } fabro-server = { path = "../fabro-server", features = ["test-support"] } fabro-workflow = { path = "../../components/fabro-workflow", features = ["test-support"] } fabro-types = { path = "../../foundation/fabro-types", features = ["clap", "test-support"] } insta = { workspace = true, features = ["filters"] } paste = "1" predicates = "3" serde_json.workspace = true tempfile = "3" temp-env = "0.3" httpmock = "0.8" fabro-test = { workspace = true } fabro-macros = { path = "../../foundation/fabro-macros" } hkdf.workspace = true reqwest = { workspace = true, features = ["cookies"] } tokio = { workspace = true, features = ["test-util", "macros"] }