[package] name = "rcoder" version.workspace = true edition.workspace = true authors.workspace = true license.workspace = true [lib] name = "rcoder" path = "src/lib.rs" [features] default = [] # 调试功能:启用 /debug/* 路由,用于开发和问题排查 # 生产环境默认不启用,需要显式添加 --features debug debug = [] # 🔧 eBPF 调试模式:启用容器特权,允许使用 eBPF 诊断工具 # 警告:仅在开发调试时使用,生产环境请勿启用 # 此 feature 会传递给 docker_manager crate ebpf-debug = ["docker_manager/ebpf-debug"] # Kubernetes 支持:启用 Kubernetes 运行时模式 # 启用后可通过 CONTAINER_RUNTIME=kubernetes 环境变量切换到 K8s 模式 kubernetes = ["docker_manager/kubernetes"] [dev-dependencies] filetime = "0.2" [dependencies] # Internal crates shared_types = { path = "../shared_types" } rcoder-proxy = { path = "../rcoder-proxy" } container-runtime-api = { path = "../container-runtime-api" } # 🚀 无锁配置热更新 arc-swap = "1.8" docker_manager = { path = "../docker_manager" } duckdb_manager = { path = "../duckdb_manager" } rcoder-telemetry = { workspace = true } clap = { workspace = true } async-trait = "0.1" parking_lot = "0.12" tempfile = { workspace = true } # HTTP server axum = { workspace = true, features = ["multipart"] } tower = { workspace = true } tower-http = { workspace = true, features = ["cors", "trace"] } hyper = { version = "1.8", features = ["server", "http1"] } hyper-util = { version = "0.1", features = ["server", "server-auto", "tokio"] } futures = { workspace = true } tokio-stream = "0.1" async-stream = "0.3" # gRPC Client tonic = { workspace = true } # Serialization serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } serde_yaml = "=0.9.33" serde_urlencoded = "0.7" # Validation garde = { version = "0.22.1", features = ["derive"] } derive_builder = { workspace = true } # Workspace dependencies tokio = { workspace = true, features = ["full"] } tokio-util = { workspace = true } anyhow = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = [ "fmt", "env-filter", "json", ] } tracing-appender = "0.2" uuid = { workspace = true, features = ["v4", "serde"] } chrono = { workspace = true, features = ["serde"] } dashmap = { workspace = true } notify = { workspace = true } bytes = "1.0" futures-util = { workspace = true } piper = "0.2" base64 = { workspace = true } reqwest = { workspace = true } url = { workspace = true } bollard = { workspace = true } rustls = { workspace = true } # OpenTelemetry opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } tracing-opentelemetry = { workspace = true } axum-tracing-opentelemetry = { workspace = true } # File system tokio-fs = { workspace = true } path-clean = { workspace = true } # OpenAPI documentation utoipa = { workspace = true } utoipa-swagger-ui = { workspace = true } ringbuf = { workspace = true } # Random and hashing rand = { workspace = true } md5 = "0.8" # Cache moka = { workspace = true }