[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 = "../fabro-auth" } fabro-config = { path = "../fabro-config" } fabro-llm = { path = "../fabro-llm" } fabro-model = { path = "../fabro-model" } fabro-oauth = { path = "../fabro-oauth" } fabro-github = { path = "../fabro-github" } fabro-agent = { path = "../fabro-agent" } fabro-devcontainer = { path = "../fabro-devcontainer" } fabro-hooks = { path = "../fabro-hooks" } fabro-install = { path = "../fabro-install" } fabro-interview = { path = "../fabro-interview" } fabro-mcp = { path = "../fabro-mcp" } fabro-proc = { path = "../fabro-proc" } fabro-retro = { path = "../fabro-retro" } fabro-sandbox = { path = "../fabro-sandbox", features = ["daytona"] } fabro-checkpoint = { path = "../fabro-checkpoint" } fabro-graphviz = { path = "../fabro-graphviz" } graphviz-sys.workspace = true fabro-validate = { path = "../fabro-validate" } fabro-workflow = { path = "../fabro-workflow" } fabro-server = { path = "../fabro-server" } fabro-client = { path = "../fabro-client" } fabro-api = { path = "../fabro-api" } fabro-telemetry = { path = "../fabro-telemetry" } fabro-store = { path = "../fabro-store" } fabro-vault = { path = "../fabro-vault" } fabro-types = { path = "../fabro-types" } fabro-util = { path = "../fabro-util" } fabro-http.workspace = true clap.workspace = true clap_complete.workspace = true cli-table.workspace = true console.workspace = true indicatif.workspace = true daytona-sdk.workspace = true anyhow.workspace = true dotenvy.workspace = true tokio.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 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" [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] chrono = { workspace = true } [dev-dependencies] assert_cmd = "2" insta = { workspace = true, features = ["filters"] } paste = "1" predicates = "3" serde_json.workspace = true tempfile = "3" httpmock = "0.8" fabro-test = { workspace = true } fabro-macros = { path = "../fabro-macros" } hkdf.workspace = true reqwest = { workspace = true, features = ["cookies"] }