[workspace] members = [ "crates/cloud-sdk", "crates/cli", "crates/function-agent-core", "crates/rust-cloud-sdk-node", "crates/rust-cloud-sdk-py", ] # Private crates are resolution-only placeholders. Excluding them keeps default workspace builds # public-only; official full builds ephemerally inject their sources before enabling client features. exclude = ["crates/gsvc-mount", "crates/gsvc-codec", "crates/gsvc-fs-client"] resolver = "3" [workspace.package] version = "0.5.158" authors = ["Tensorlake Inc. "] edition = "2024" license = "Apache-2.0" [workspace.dependencies] async-trait = "0.1" fastcdc = "3" # Internal crates tensorlake = { path = "crates/cloud-sdk" } tensorlake-function-agent-core = { path = "crates/function-agent-core" } # Resolution-only placeholder for the private gsvc-codec packfile codec (backs `tl git clone`). # The real source is no longer vendored here: official builds swap it in ephemerally — see # crates/VENDORED_FROM and the `build-cli-full` justfile recipe / vendor-private-crates CI action. gsvc-codec = { path = "crates/gsvc-codec" } # Private mount core. The source is injected only for official full builds. gsvc-mount = { path = "crates/gsvc-mount" } # Private filesystem client engine. It owns all filesystem behavior; the public CLI calls it through # a thin host adapter and the public SDK exposes no native-filesystem module in default builds. gsvc-fs-client = { path = "crates/gsvc-fs-client" } # Async runtime tokio = { version = "1.49.0", features = ["macros", "rt-multi-thread", "time", "process", "io-std", "io-util", "signal"] } tokio-util = { version = "0.7.18", features = ["codec", "io"] } tokio-tungstenite = { version = "0.28.0", features = ["rustls-tls-webpki-roots"] } futures = "0.3.32" async-compression = { version = "0.4.41", default-features = false, features = ["tokio", "gzip"] } des = "0.8" png = "0.18" # Serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.149" serde_repr = "0.1" serde_with = { version = "3.17", default-features = false, features = ["base64", "std", "macros"] } serde_path_to_error = "0.1.20" # HTTP # `http2` is required, not optional: without it reqwest advertises only # `http/1.1` in ALPN, so every concurrent request opens its own TCP connection # and `Client::with_base_url`'s connection coalescing (which it documents) can # never happen. reqwest = { version = "0.13.2", default-features = false, features = ["http2", "json", "multipart", "rustls-no-provider", "stream"] } rustls = { version = "0.23", default-features = false, features = ["ring"] } webpki-root-certs = "1" # OS keychain for the login token of each context. One store crate per OS; the Linux store is # pure Rust (zbus over the session bus), so it fits the static musl builds. keyring-core = "1.0" apple-native-keyring-store = { version = "1.0", features = ["keychain"] } windows-native-keyring-store = { version = "1.1", default-features = false } zbus-secret-service-keyring-store = { version = "1.0", features = ["rt-tokio-crypto-rust"] } eventsource-stream = "0.2" reqwest-middleware = { version = "0.5.1", features = ["json", "multipart", "query"] } url = "2.5.8" urlencoding = "2.1" # Crypto & encoding blake3 = "1.8" filetime = "0.2" sha1 = "0.11" sha2 = "0.10" hex = "0.4" base64 = "0.22" p256 = { version = "0.11.1", features = ["pem"] } postcard = { version = "1", features = ["alloc"] } shlex = "1.3" crc32fast = "1" # Docker bollard = "0.20" docker-credentials-config = "0.1.0" docker_credential = "1.3.3" http = "1" http-body-util = "0.1" # Templating minijinja = "2" # Data types bytes = "1.11.1" chrono = { version = "0.4.44", features = ["serde"] } rand = "0.9.2" nanoid = "0.4" uuid = { version = "1.22.0", features = ["serde", "v4"] } zeroize = "1.8.2" xattr = "1" # Utilities thiserror = "2.0.18" anyhow = "1.0.102" derive_builder = "0.20" pin-project-lite = "0.2.17" ignore = "0.4" parking_lot = "0.12" rayon = "1" redb = "4.1" tempfile = "3" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } # Compression & archives # zlib-rs matches artifact_storage's flate2 feature choice, which the (ephemerally vendored) # gsvc-codec is tested against; the default miniz_oxide backend has produced a divergent test result. flate2 = { version = "1.1.9", features = ["zlib-rs"] } tar = "0.4" zip = "0.6" # JavaScript/TypeScript bundling. Rolldown's Rust API does not promise semver # compatibility, so keep this exact and upgrade it deliberately. rolldown = "=1.2.0" rolldown_common = "=1.2.0" # OpenAPI utoipa = { version = "5.4.0", features = ["chrono"] } # CLI clap = { version = "4", features = ["derive", "env"] } toml = "0.9.8" dirs = "6" comfy-table = "7" indicatif = "0.18.4" console = "0.16.2" dialoguer = "0.12" open = "5" crossterm = "0.29" gethostname = "0.5" env-file-reader = "0.3.0" # Python bindings pyo3 = { version = "0.28.2", features = ["abi3-py310", "extension-module"] } pyo3-async-runtimes = { version = "0.28", features = ["tokio-runtime"] } # Node.js bindings (napi-rs) napi = { version = "2", default-features = false, features = ["napi6", "async", "tokio_rt", "serde-json"] } napi-derive = "2" napi-build = "2" [profile.release] codegen-units = 1 strip = true lto = true [patch.crates-io] # Fork of fuser 0.18.0 adding Config::read_buffer_size; consumed by the vendored # gsvc-fs-client mount client. See tensorlakeai/fuser and cberner/fuser#338. fuser = { git = "https://github.com/tensorlakeai/fuser", branch = "configurable-buffer-size" }