[package] name = "botserver" version = "6.1.0" edition = "2021" resolver = "2" [dependencies.botlib] workspace = true features = ["database", "i18n"] [features] # ===== DEFAULT ===== default = ["chat", "automation", "drive", "tasks", "cache", "directory"] # ===== CORE INFRASTRUCTURE (Can be used standalone) ===== scripting = ["dep:rhai"] automation = ["scripting", "dep:cron"] drive = ["dep:aws-config", "dep:aws-sdk-s3", "dep:aws-smithy-async", "dep:pdf-extract"] cache = ["dep:redis"] directory = [] # ===== APPS (Each includes what it needs from core) ===== # Communication chat = ["automation", "drive", "cache"] people = ["automation", "drive", "cache"] mail = ["automation", "drive", "cache", "dep:lettre", "dep:mailparse", "dep:imap", "dep:native-tls"] meet = ["automation", "drive", "cache", "dep:livekit"] social = ["automation", "drive", "cache"] # Productivity calendar = ["automation", "drive", "cache"] tasks = ["automation", "drive", "cache", "dep:cron"] project = ["automation", "drive", "cache", "quick-xml"] goals = ["automation", "drive", "cache"] workspaces = ["automation", "drive", "cache"] tickets = ["automation", "drive", "cache"] billing = ["automation", "drive", "cache"] # Documents docs = ["automation", "drive", "cache", "docx-rs", "ooxmlsdk"] sheet = ["automation", "drive", "cache", "calamine", "spreadsheet-ods", "dep:rust_xlsxwriter", "dep:umya-spreadsheet"] slides = ["automation", "drive", "cache", "ooxmlsdk"] paper = ["automation", "drive", "cache"] # Media video = ["automation", "drive", "cache"] player = ["automation", "drive", "cache"] canvas = ["automation", "drive", "cache"] # Learning learn = ["automation", "drive", "cache"] research = ["automation", "drive", "cache", "llm", "vectordb"] sources = ["automation", "drive", "cache"] # Analytics analytics = ["automation", "drive", "cache"] dashboards = ["automation", "drive", "cache"] monitoring = ["automation", "drive", "cache", "dep:sysinfo"] # Development designer = ["automation", "drive", "cache"] editor = ["automation", "drive", "cache"] # Admin attendant = ["automation", "drive", "cache"] security = ["automation", "drive", "cache"] settings = ["automation", "drive", "cache"] whatsapp = ["automation", "drive", "cache"] telegram = ["automation", "drive", "cache"] instagram = ["automation", "drive", "cache"] msteams = ["automation", "drive", "cache"] # Core Tech llm = ["automation", "drive", "cache"] vectordb = ["automation", "drive", "cache", "dep:qdrant-client"] nvidia = ["automation", "drive", "cache"] compliance = ["automation", "drive", "cache", "dep:csv"] timeseries = ["automation", "drive", "cache"] weba = ["automation", "drive", "cache"] progress-bars = ["automation", "drive", "cache", "dep:indicatif"] grpc = ["automation", "drive", "cache"] jemalloc = ["automation", "drive", "cache", "dep:tikv-jemallocator", "dep:tikv-jemalloc-ctl"] console = ["automation", "drive", "cache", "dep:crossterm", "dep:ratatui"] # ===== BUNDLES (Optional - for convenience) ===== minimal = ["chat"] lightweight = ["chat", "tasks", "people"] full = ["chat", "people", "mail", "tasks", "calendar", "drive", "docs", "llm", "cache", "compliance"] [dependencies] diesel_migrations = { workspace = true } bigdecimal = { workspace = true } # === CORE RUNTIME === aes-gcm = { workspace = true } anyhow = { workspace = true } argon2 = { workspace = true } async-lock = { workspace = true } async-stream = { workspace = true } async-trait = { workspace = true } axum = { workspace = true } axum-server = { workspace = true } base64 = { workspace = true } bytes = { workspace = true } chrono = { workspace = true, features = ["clock", "std"] } color-eyre = { workspace = true } diesel = { workspace = true, features = ["postgres", "uuid", "chrono", "serde_json", "r2d2", "numeric", "32-column-tables"] } dirs = { workspace = true } dotenvy = { workspace = true } env_logger = { workspace = true } futures = { workspace = true } futures-util = { workspace = true } tokio-util = { workspace = true, features = ["codec"] } hex = { workspace = true } hmac = { workspace = true } hyper = { workspace = true, features = ["client", "server", "http1", "http2"] } hyper-rustls = { workspace = true, features = ["http2"] } log = { workspace = true } num-format = { workspace = true } once_cell = { workspace = true } rand = { workspace = true } regex = { workspace = true } reqwest = { workspace = true, features = ["rustls-tls", "multipart", "stream", "json"] } serde = { workspace = true, features = ["derive", "std"] } serde_json = { workspace = true } toml = { workspace = true } sha2 = { workspace = true } sha1 = { workspace = true } tokio = { workspace = true, features = ["full", "process"] } tokio-stream = { workspace = true } tower = { workspace = true } tower-http = { workspace = true, features = ["cors", "fs", "trace"] } tracing = { workspace = true } tracing-subscriber = { workspace = true } urlencoding = { workspace = true } uuid = { workspace = true, features = ["v4", "v5"] } # === TLS/SECURITY DEPENDENCIES === rustls = { workspace = true, features = ["ring", "std", "tls12"] } tokio-rustls = { workspace = true } rcgen = { workspace = true, features = ["crypto", "ring", "pem"] } x509-parser = { workspace = true } rustls-native-certs = { workspace = true } webpki-roots = { workspace = true } ring = { workspace = true } ciborium = { workspace = true } time = { workspace = true, features = ["formatting"] } jsonwebtoken = { workspace = true } tower-cookies = { workspace = true } # === APP-SPECIFIC DEPENDENCIES === # mail Integration (mail feature) imap = { workspace = true, optional = true } lettre = { workspace = true, optional = true } mailparse = { workspace = true, optional = true } native-tls = { workspace = true, optional = true } # Video Meetings (meet feature) livekit = { workspace = true, optional = true } # Vector Database (vectordb feature) qdrant-client = { workspace = true, optional = true } # Document Processing docx-rs = { workspace = true, optional = true } ooxmlsdk = { workspace = true, optional = true, features = ["parts"] } calamine = { workspace = true, optional = true } spreadsheet-ods = { workspace = true, optional = true } rust_xlsxwriter = { workspace = true, optional = true } umya-spreadsheet = { workspace = true, optional = true } # File Storage & Drive (drive feature) aws-config = { workspace = true, features = ["behavior-version-latest", "rt-tokio", "rustls"], optional = true } aws-sdk-s3 = { workspace = true, features = ["rt-tokio", "rustls"], optional = true } aws-smithy-async = { workspace = true, optional = true } pdf-extract = { workspace = true, optional = true } quick-xml = { workspace = true, optional = true } flate2 = { workspace = true } zip = { workspace = true } tar = { workspace = true } # Task Management (tasks feature) cron = { workspace = true, optional = true } # Automation & Scripting (automation feature) rhai = { workspace = true, optional = true } # Compliance & Reporting (compliance feature) csv = { workspace = true, optional = true } # Console/TUI (console feature) crossterm = { workspace = true, optional = true } ratatui = { workspace = true, optional = true } # QR Code Generation png = { workspace = true } qrcode = { workspace = true } # Error handling thiserror = { workspace = true } # Caching/Sessions (cache feature) redis = { workspace = true, features = ["tokio-comp"], optional = true } # System Monitoring (monitoring feature) sysinfo = { workspace = true, optional = true } # Networking/gRPC (grpc feature) tonic = { workspace = true, features = ["transport"], optional = true } # UI Enhancement (progress-bars feature) indicatif = { workspace = true, optional = true } smartstring = { workspace = true } # Memory allocator (jemalloc feature) tikv-jemallocator = { workspace = true, optional = true } tikv-jemalloc-ctl = { workspace = true, optional = true } scopeguard = { workspace = true } # Vault secrets management vaultrs = { workspace = true } # Calendar standards (RFC 5545) icalendar = { workspace = true } # Layered configuration figment = { workspace = true, features = ["toml"] } # Rate limiting governor = { workspace = true } # RSS feed parsing rss = { workspace = true } # HTML parsing/web scraping scraper = { workspace = true } walkdir = { workspace = true } # Embedded static files rust-embed = { workspace = true } mime_guess = { workspace = true } hyper-util = { workspace = true, features = ["client-legacy"] } http-body-util = { workspace = true } [dev-dependencies] mockito = { workspace = true } tempfile = { workspace = true } bigdecimal = { workspace = true } [lints] workspace = true