libnoa 0.4.0

AI-native distributed version control
Documentation
[package]
name = "libnoa"
version = "0.4.0"
edition = "2021"
rust-version = "1.85"

publish = true
authors = ["langyo <langyo.china@gmail.com>"]
description = "AI-native distributed version control"
license-file = "LICENSE"
repository = "https://github.com/celestia-island/noa"
documentation = "https://docs.rs/libnoa"
readme = "README.md"
keywords = ["vcs", "version-control", "ai", "agent", "git"]
categories = ["artificial-intelligence", "development-tools", "command-line-utilities", "filesystem", "data-structures"]

[[bin]]
name = "noa"
path = "bin/main.rs"

[[bin]]
name = "noa-server"
path = "bin/server.rs"

[lib]
crate-type = ["rlib"]

[dependencies]
redb = "^2"

serde = { version = "^1", features = ["derive"] }
serde_json = "^1"
rmp-serde = "^1"
toml = "^0.8"

clap = { version = "^4", features = ["derive"] }

sha2 = "^0.10"
hex = "^0.4"
base64 = "^0.22"

tokio = { version = "^1", features = ["full"] }
async-trait = "^0.1"

gix = "^0.84"

ignore = "^0.4"
regex = "^1"

axum = "^0.8"

aws-sdk-s3 = { version = "^1", default-features = false, features = ["sigv4a", "rt-tokio"] }
aws-config = { version = "^1", default-features = false, features = ["credentials-process", "rt-tokio", "sso"] }
# Pure-Rust TLS: use rustls+ring instead of aws-lc-rs (avoids C compilation of aws-lc-sys).
# The explicit `rustls` dep below is the key: aws-smithy-http-client's `rustls-ring`
# feature enables `__rustls` which pulls in rustls as `dep:rustls` WITHOUT disabling
# its default features. rustls 0.23's default feature set includes `aws-lc-rs`, so
# without this override the whole graph unifies on aws-lc-rs and forces the C build.
# Pinning rustls here with default-features=false + ring kills aws-lc-rs at the source.
aws-smithy-http-client = { version = "^1", default-features = false, features = ["rustls-ring"] }
rustls = { version = "^0.23", default-features = false, features = ["ring", "std", "logging", "tls12"] }
# tokio-rustls + hyper-rustls: their DEFAULT features include aws_lc_rs 鈫?# rustls/aws_lc_rs 鈫?aws-lc-sys. aws-smithy-http-client's __rustls pulls them in
# via bare dep: (no feature spec) so their defaults apply. Pinning both here
# with default-features=false + ring is the only way to stop the leak 鈥?noa is
# the sole consumer of aws-smithy-http-client, so this is the true root.
tokio-rustls = { version = "^0.26", default-features = false, features = ["ring", "logging", "tls12"] }
hyper-rustls = { version = "^0.27", default-features = false, features = ["native-tokio", "http1", "tls12", "logging", "ring"] }

reqwest = { version = "^0.12", default-features = false, features = ["rustls-tls-no-provider", "json", "multipart"] }

suppaftp = { version = "^9", features = ["tokio"], optional = true }

anyhow = "^1"
thiserror = "^2"
chrono = "^0.4"
tracing = "^0.1"
tracing-subscriber = "^0.3"
getrandom = "^0.2"
subtle = "^2"

crossterm = "^0.27"
ratatui = { version = "^0.29", features = ["crossterm"] }

[features]
default = ["ftp"]
ftp = ["suppaftp"]

[dev-dependencies]
tempfile = "^3"
tower = "^0.5"