230 lines
5.2 KiB
TOML
230 lines
5.2 KiB
TOML
[workspace]
|
||
members = ["crates/*"]
|
||
exclude = ["tmp/*", "crates/ai-agents", "crates/codex-acp-agent"]
|
||
resolver = "2"
|
||
|
||
default-members = [
|
||
"crates/rcoder",
|
||
"crates/agent_runner",
|
||
"crates/shared_types",
|
||
"crates/docker_manager",
|
||
"crates/rcoder-proxy",
|
||
"crates/duckdb_manager",
|
||
"crates/container-runtime-api",
|
||
]
|
||
|
||
|
||
[workspace.lints]
|
||
rustdoc.unbroken_backticks = "warn"
|
||
rustdoc.redundant_explicit_links = "warn"
|
||
rust.unused_lifetimes = "warn"
|
||
rust.unused_qualifications = "warn"
|
||
rust.variant_size_differences = "warn"
|
||
rust.allow_leading_underscore = "warn"
|
||
|
||
[workspace.package]
|
||
version = "0.1.0"
|
||
edition = "2024"
|
||
authors = ["soddy <soddygo@qq.com>"]
|
||
license = "MIT OR Apache-2.0"
|
||
description = "Rust-based AI agent framework"
|
||
publish = false
|
||
|
||
[workspace.dependencies]
|
||
# ACP Protocol - 官方 SDK(完全 Send-safe,无需 LocalSet)
|
||
agent-client-protocol = { version = "0.11.1", features = ["unstable_session_usage"] }
|
||
|
||
# MCP 协议 - rmcp 官方库 (升级到 0.12 以兼容 SACP)
|
||
rmcp = { version = "0.12.0", features = ["server", "client", "transport-io", "transport-child-process", "schemars"] }
|
||
|
||
piper = "0.2"
|
||
|
||
clap = { version = "4.6", features = ["derive", "env"] }
|
||
|
||
# Async runtime
|
||
tokio = { version = "1.52", features = ["full"] }
|
||
tokio-util = { version = "0.7", features = ["compat"] }
|
||
async-trait = "0.1"
|
||
smol = "2.0"
|
||
|
||
# HTTP server
|
||
axum = { version = "0.8", features = [
|
||
"http2",
|
||
"query",
|
||
"tracing",
|
||
"ws",
|
||
"multipart",
|
||
"macros",
|
||
] }
|
||
tower = "0.5"
|
||
tower-http = { version = "0.6", features = ["cors", "trace"] }
|
||
tonic = { version = "0.14.5", features = ["tls-native-roots"] }
|
||
http = "1.0"
|
||
http-body = "1.0"
|
||
http-body-util = "0.1"
|
||
|
||
# Database
|
||
sqlx = { version = "0.8", features = [
|
||
"runtime-tokio-rustls",
|
||
"sqlite",
|
||
"chrono",
|
||
"uuid",
|
||
] }
|
||
duckdb = { version = "1.4", features = ["bundled"] }
|
||
|
||
# Serialization
|
||
serde = { version = "1.0", features = ["derive"] }
|
||
serde_json = "1.0.148"
|
||
serde_json_lenient = "0.2"
|
||
schemars = { version = "1.2", features = ["derive"] }
|
||
config = "0.15"
|
||
|
||
# Error handling
|
||
anyhow = "1.0"
|
||
thiserror = "2.0"
|
||
|
||
# Logging
|
||
tracing = "0.1"
|
||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||
log = "0.4"
|
||
env_logger = "0.11"
|
||
|
||
# OpenTelemetry (统一使用 0.30 以兼容 tracing-opentelemetry)
|
||
opentelemetry = "0.31"
|
||
opentelemetry_sdk = { version = "0.31", features = ["rt-tokio"] }
|
||
opentelemetry-otlp = { version = "0.31", features = [
|
||
"grpc-tonic",
|
||
"http-proto",
|
||
] }
|
||
tracing-opentelemetry = "0.32"
|
||
axum-tracing-opentelemetry = "0.33"
|
||
|
||
# Prometheus Metrics
|
||
metrics = "0.24"
|
||
metrics-exporter-prometheus = "0.18"
|
||
|
||
# UUID
|
||
uuid = { version = "1.0", features = ["serde", "v4", "v7"] }
|
||
|
||
# Date/time
|
||
chrono = { version = "0.4", features = ["serde"] }
|
||
|
||
# File system watching
|
||
notify = "8.2"
|
||
|
||
# File system utilities
|
||
tokio-fs = "0.1"
|
||
path-clean = "1.0"
|
||
|
||
# Utilities
|
||
dashmap = "6.0"
|
||
futures = "0.3"
|
||
futures-util = "0.3"
|
||
itertools = "0.14"
|
||
bytes = "1.11"
|
||
arrayvec = "0.7"
|
||
# collections = "0.2" # 这个包不存在
|
||
|
||
|
||
url = { version = "2.5", features = ["serde"] }
|
||
|
||
# TLS/Crypto
|
||
rustls = { version = "0.23", features = ["ring"] }
|
||
|
||
# Additional utilities
|
||
indoc = "2.0"
|
||
parking_lot = "0.12"
|
||
convert_case = "0.11"
|
||
handlebars = { version = "6.3", features = ["rust-embed"] }
|
||
rust-embed = "8.0"
|
||
zstd = "0.13"
|
||
|
||
|
||
# 构建工具
|
||
derive_builder = "0.20"
|
||
|
||
# Zed 核心功能依赖
|
||
libc = "0.2"
|
||
nix = { version = "0.31.2", features = ["fs", "process", "term", "signal"] }
|
||
unindent = "0.2" # 使用 crates.io 版本
|
||
open = "5.0" # 使用 crates.io 版本
|
||
git2 = "0.20.4"
|
||
tree-sitter-rust = "0.24" # 使用 crates.io 版本
|
||
|
||
|
||
# Additional dependencies for nuwax_parser
|
||
sha2 = "0.11"
|
||
hex = "0.4"
|
||
walkdir = "2.5"
|
||
reqwest = { version = "0.13", features = ["json", "stream"] }
|
||
|
||
# 项目依赖 - 保留核心功能
|
||
aho-corasick = "1.0"
|
||
# askpass = "0.1" # 这个包不存在
|
||
base64 = "0.22"
|
||
circular-buffer = "1.2"
|
||
fancy-regex = "0.18"
|
||
fuzzy = "0.0.1"
|
||
globset = "0.4"
|
||
image = "0.25"
|
||
indexmap = "2.14"
|
||
pathdiff = "0.2"
|
||
postage = "0.5"
|
||
regex = "1.0"
|
||
semver = "1.0"
|
||
shellexpand = "3.1"
|
||
shlex = "1.0"
|
||
smallvec = "1.15"
|
||
|
||
toml = "0.9"
|
||
which = "8.0"
|
||
|
||
|
||
# Dev dependencies for testing
|
||
ctor = "0.13"
|
||
pretty_assertions = "1.4"
|
||
tempfile = "3.24"
|
||
rand = "0.10"
|
||
tokio-test = "0.4"
|
||
expect-test = "1.5"
|
||
|
||
# File system utilities
|
||
dirs = "6.0"
|
||
|
||
# Archive utilities
|
||
flate2 = "1.0"
|
||
tar = "0.4"
|
||
zip = "8.6"
|
||
|
||
utoipa = { version = "5.4", features = ["axum_extras", "uuid", "chrono"] }
|
||
utoipa-swagger-ui = { version = "9.0", features = ["axum"] }
|
||
|
||
|
||
ringbuf = "0.5"
|
||
|
||
|
||
diffy = { version = "0.5" }
|
||
|
||
pingora = { version = "0.8", features = ["lb", "rustls"] }
|
||
pingora-core = { version = "0.8", features = ["rustls"] }
|
||
pingora-http = "0.8"
|
||
pingora-proxy = { version = "0.8", features = ["rustls"] }
|
||
pingora-load-balancing = { version = "0.8", features = ["rustls"] }
|
||
matchit = "0.9.2"
|
||
structopt = "0.3"
|
||
|
||
bollard = { version = "0.21" }
|
||
|
||
# Cache library
|
||
moka = { version = "0.12", features = ["future", "sync"] }
|
||
|
||
# i18n (国际化)
|
||
rust-i18n = "4"
|
||
|
||
# Internal crates
|
||
rcoder-telemetry = { path = "crates/rcoder-telemetry" }
|
||
|
||
# Pyroscope Continuous Profiling
|
||
pyroscope = "0.5"
|
||
pyroscope_pprofrs = "0.2"
|