[package] name = "botserver" version = "6.1.0" edition = "2021" resolver = "2" [dependencies.botlib] workspace = true features = ["database", "i18n"] [features] # ===== SINGLE DEFAULT FEATURE SET ===== # Note: automation (Rhai scripting) is required for .gbot script execution default = ["chat", "automation", "drive", "tasks", "cache", "directory"] # ===== CORE CAPABILITIES (Internal Bundles) ===== storage_core = ["dep:aws-config", "dep:aws-sdk-s3", "dep:aws-smithy-async"] automation_core = ["dep:rhai", "dep:cron"] cache_core = ["dep:redis"] mail_core = ["dep:lettre", "dep:mailparse", "dep:imap", "dep:native-tls"] realtime_core = ["dep:livekit"] pdf_core = ["dep:pdf-extract"] # ===== COMMUNICATION APPS ===== chat = [] people = [] mail = ["mail_core"] meet = ["realtime_core"] social = [] whatsapp = [] telegram = [] instagram = [] msteams = [] communications = ["chat", "people", "mail", "meet", "social", "whatsapp", "telegram", "instagram", "msteams", "cache"] # ===== PRODUCTIVITY APPS ===== calendar = [] # Tasks requires automation (scripts) and drive (attachments) tasks = ["automation", "drive", "monitoring"] project = ["quick-xml"] goals = [] workspace = [] workspaces = ["workspace"] tickets = [] billing = [] productivity = ["calendar", "tasks", "project", "goals", "workspaces", "cache"] # ===== DOCUMENT APPS ===== paper = ["docs", "pdf"] docs = ["docx-rs", "ooxmlsdk"] sheet = ["calamine", "spreadsheet-ods"] slides = ["ooxmlsdk"] drive = ["storage_core", "pdf"] documents = ["paper", "docs", "sheet", "slides", "drive"] # ===== MEDIA APPS ===== video = [] player = [] canvas = [] media = ["video", "player", "canvas"] # ===== LEARNING & RESEARCH APPS ===== learn = [] research = ["llm", "vectordb"] sources = [] learning = ["learn", "research", "sources"] # ===== ANALYTICS APPS ===== analytics = [] dashboards = [] monitoring = ["dep:sysinfo"] analytics_suite = ["analytics", "dashboards", "monitoring"] # ===== DEVELOPMENT TOOLS ===== designer = [] editor = [] automation = ["automation_core"] development = ["designer", "editor", "automation"] # ===== ADMIN APPS ===== attendant = [] security = [] settings = [] admin = ["attendant", "security", "settings"] # ===== COMPATIBILITY ALIASES ===== # These ensure old feature names still work or map correctly pdf = ["pdf_core"] cache = ["cache_core"] # ===== CORE TECHNOLOGIES ===== llm = [] vectordb = ["dep:qdrant-client"] nvidia = [] compliance = ["dep:csv"] timeseries = [] weba = [] directory = [] progress-bars = ["dep:indicatif"] grpc = [] jemalloc = ["dep:tikv-jemallocator", "dep:tikv-jemalloc-ctl"] console = ["dep:crossterm", "dep:ratatui", "monitoring"] # ===== BUNDLE FEATURES ===== full = [ "chat", "people", "mail", "tasks", "calendar", "drive", "docs", "llm", "cache", "compliance" ] # Minimal build includes core infrastructure: automation (Rhai), drive (S3), cache (Redis) # These are deeply integrated and used throughout the codebase minimal = ["chat", "automation", "drive", "cache"] lightweight = ["chat", "drive", "tasks", "people"] [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 } calamine = { workspace = true, optional = true } spreadsheet-ods = { 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