diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..dc726f0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,196 @@ +[workspace] +resolver = "2" + +members = [ + "crates/vapora-backend", + "crates/vapora-frontend", + "crates/vapora-shared", + "crates/vapora-agents", + "crates/vapora-llm-router", + "crates/vapora-mcp-server", + "crates/vapora-tracking", + "crates/vapora-worktree", + "crates/vapora-knowledge-graph", + "crates/vapora-analytics", + "crates/vapora-swarm", + "crates/vapora-telemetry", +] + +[workspace.package] +version = "1.2.0" +edition = "2021" +rust-version = "1.75" +authors = ["VAPORA Team"] +license = "MIT OR Apache-2.0" +repository = "https://github.com/vapora/vapora" +homepage = "https://vapora.dev" +keywords = ["multi-agent", "llm", "cloud-native", "orchestration"] +categories = ["development-tools", "web-programming"] + +[workspace.dependencies] +# Vapora internal crates +vapora-shared = { path = "crates/vapora-shared" } +vapora-agents = { path = "crates/vapora-agents" } +vapora-llm-router = { path = "crates/vapora-llm-router" } +vapora-worktree = { path = "crates/vapora-worktree" } +vapora-knowledge-graph = { path = "crates/vapora-knowledge-graph" } +vapora-analytics = { path = "crates/vapora-analytics" } +vapora-swarm = { path = "crates/vapora-swarm" } +vapora-telemetry = { path = "crates/vapora-telemetry" } + +# SecretumVault - Post-quantum secrets management +secretumvault = { path = "../secretumvault", default-features = false, features = ["server", "surrealdb-storage", "openssl", "cedar"] } + +# Leptos ecosystem (CSR-only for frontend) +leptos = { version = "0.8.12" } +leptos_router = { version = "0.8.9" } +leptos_meta = { version = "0.8.5" } + +# Web Framework (Backend) +axum = "0.8.6" +tower = "0.5.2" +tower-http = { version = "0.6.6", features = ["fs", "cors", "trace", "compression-full"] } + +# Async runtime +tokio = { version = "1.48", features = ["rt-multi-thread", "macros", "fs", "net", "sync"] } +futures = "0.3.31" +async-trait = "0.1.89" + +# Serialization +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +toml = "0.9" +serde_yaml = { version = "0.9" } + +# Error handling +thiserror = "2.0.17" +anyhow = "1.0.100" + +# HTTP +http = "1" +reqwest = { version = "0.12.24", features = ["json", "rustls-tls"] } +reqwasm = "0.5.0" + +# Logging and tracing +log = "0.4.28" +env_logger = "0.11" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } + +# WASM support +wasm-bindgen = "0.2.105" +wasm-bindgen-futures = "0.4.55" +wasm-bindgen-test = "0.3" +serde-wasm-bindgen = "0.6.5" +console_error_panic_hook = "0.1.7" +console_log = "1" +js-sys = "0.3.82" +web-sys = { version = "0.3.82", features = ["Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "Storage", "console", "File"] } + +# Gloo ecosystem +gloo-timers = { version = "0.3", features = ["futures"] } +gloo-net = { version = "0.6.0" } + +# Utilities +rand = "0.9" +rand_core = { version = "0.6", features = ["getrandom"] } +getrandom = { version = "0.2", features = ["std", "js"] } +uuid = { version = "1.18", features = ["v4", "serde", "js"] } +chrono = { version = "0.4", features = ["serde"] } +regex = "1.12.2" +hex = "0.4.3" +base64 = { version = "0.22" } + +# Configuration +dotenv = "0.15.0" +once_cell = "1.21.3" + +# TLS Support +axum-server = { version = "0.7", features = ["tls-rustls"] } +rustls = { version = "0.23" } +rustls-pemfile = { version = "2.2" } + +# Authentication & Authorization +jsonwebtoken = { version = "10.2", features = ["rust_crypto"] } +argon2 = { version = "0.5" } +oauth2 = { version = "5.0" } +tower-sessions = { version = "0.14" } +tower-cookies = { version = "0.11" } +time = { version = "0.3", features = ["serde"] } + +# Database +sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "postgres", "sqlite", "chrono", "uuid", "migrate"] } +# Note: SurrealDB will be added when available in workspace +surrealdb = "2.3" + +# Message Queue +# Note: async-nats will be added when available in workspace +async-nats = "0.45" + +# LLM Agent Framework & RAG +rig-core = "0.15" +# Embeddings: Use provider APIs (Claude, OpenAI, Gemini, Ollama) instead of fastembed +# - rig-core integrates with all major providers +# - Routing through vapora-llm-router for optimal provider selection +# - Phase 3: Implement embedding service using provider APIs + +# Cryptography +aes-gcm = { version = "0.10" } +sha2 = { version = "0.10" } + +# Metrics & Observability +prometheus = { version = "0.14" } +opentelemetry = { version = "0.22", features = ["trace", "metrics"] } +opentelemetry-jaeger = { version = "0.21", features = ["rt-tokio"] } +opentelemetry_sdk = { version = "0.22", features = ["rt-tokio"] } +tracing-opentelemetry = "0.23" + +# File system +glob = "0.3.3" +walkdir = "2.5" +tempfile = { version = "3.23" } +notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] } +ignore = "0.4" + +# CLI support +clap = { version = "4.5", features = ["derive"] } +dialoguer = "0.12" +console = "0.16" +indicatif = "0.18" + +# Async compression +async-compression = { version = "0.4", features = ["gzip", "tokio"] } + +# Utility +cfg-if = "1.0" +paste = "1.0.15" +typed-builder = "0.23" +shellexpand = "3.1" +semver = "1.0" +pathdiff = "0.2" +dashmap = "5.5" +parking_lot = "0.12" + +# Testing +mockall = "0.13" +wiremock = "0.6" +axum-test = "18.2" +mockito = "0.31" +criterion = { version = "0.5", features = ["async_tokio"] } + +# Proc macros +syn = { version = "2.0", features = ["full"] } +quote = "1.0" +proc-macro2 = "1.0" + +[profile.release] +codegen-units = 1 +lto = true +opt-level = "z" + +[profile.dev] +opt-level = 0 +debug = true + +[profile.test] +opt-level = 0