Cargo.toml
Rama main · réplica de lectura del repositorio original.
[workspace]
default-members = [
"apps/courier",
"crates/acp",
"crates/agents",
"crates/auth",
"crates/auto-reply",
"crates/benchmarks",
"crates/browser",
"crates/caldav",
"crates/canvas",
"crates/channels",
"crates/chat",
"crates/claude-import",
"crates/cli",
"crates/client",
"crates/code-index",
"crates/codex-import",
"crates/common",
"crates/config",
"crates/connector-caldav",
"crates/connector-gmail",
"crates/connector-himalaya",
"crates/connectors",
"crates/cron",
"crates/ctl",
"crates/discord",
"crates/external-agents",
"crates/gateway",
"crates/graphql",
"crates/hermes-import",
"crates/home-assistant",
"crates/httpd",
"crates/import-core",
"crates/matrix",
"crates/mcp",
"crates/mcp-agent-bridge",
"crates/media",
"crates/memory",
"crates/metrics",
"crates/msteams",
"crates/netbird",
"crates/network-filter",
"crates/node-host",
"crates/nostr",
"crates/oauth",
"crates/observability",
"crates/onboarding",
"crates/openclaw-import",
"crates/plugins",
"crates/portable",
"crates/projects",
"crates/protocol",
"crates/provider-setup",
"crates/providers",
"crates/qmd",
"crates/routing",
"crates/secret-store",
"crates/service-traits",
"crates/sessions",
"crates/signal",
"crates/skills",
"crates/slack",
"crates/swift-bridge",
"crates/tailscale",
"crates/telegram",
"crates/telephony",
"crates/tls",
"crates/tools",
"crates/vault",
"crates/voice",
"crates/wasm-precompile",
"crates/wasm-tools/calc",
"crates/wasm-tools/web-fetch",
"crates/wasm-tools/web-search",
"crates/web",
"crates/webhooks",
"crates/whatsapp",
]
exclude = ["apps/desktop", "vendor/agent-client-protocol"]
members = [
"apps/courier",
"crates/acp",
"crates/agents",
"crates/auth",
"crates/auto-reply",
"crates/benchmarks",
"crates/browser",
"crates/caldav",
"crates/canvas",
"crates/channels",
"crates/chat",
"crates/claude-import",
"crates/cli",
"crates/client",
"crates/code-index",
"crates/codex-import",
"crates/common",
"crates/config",
"crates/connector-caldav",
"crates/connector-gmail",
"crates/connector-himalaya",
"crates/connectors",
"crates/cron",
"crates/ctl",
"crates/external-agents",
"crates/gateway",
"crates/graphql",
"crates/hermes-import",
"crates/home-assistant",
"crates/httpd",
"crates/import-core",
"crates/matrix",
"crates/mcp",
"crates/media",
"crates/memory",
"crates/memory-zvec",
"crates/metrics",
"crates/msteams",
"crates/netbird",
"crates/node-host",
"crates/nostr",
"crates/oauth",
"crates/observability",
"crates/onboarding",
"crates/openclaw-import",
"crates/plugins",
"crates/portable",
"crates/projects",
"crates/protocol",
"crates/provider-setup",
"crates/providers",
"crates/qmd",
"crates/routing",
"crates/schema-export",
"crates/secret-store",
"crates/service-traits",
"crates/sessions",
"crates/signal",
"crates/skills",
"crates/slack",
"crates/splitter",
"crates/swift-bridge",
"crates/tailscale",
"crates/telegram",
"crates/telephony",
"crates/tls",
"crates/tools",
"crates/vault",
"crates/voice",
"crates/wasm-precompile",
"crates/wasm-tools/calc",
"crates/wasm-tools/web-fetch",
"crates/wasm-tools/web-search",
"crates/web",
"crates/webhooks",
"crates/whatsapp",
]
resolver = "2"
[patch.crates-io]
# Keep ACP stdin cancellation and EOF processing independent of blocked stdout,
# while bounding queued wire bytes. Remove once a compatible release includes it.
agent-client-protocol = { path = "vendor/agent-client-protocol" }
# Widen libsqlite3-sys pin (0.30.1 → >=0.30.1,<0.36.0) so sqlx-sqlite 0.8.6
# can coexist with matrix-sdk-sqlite's rusqlite 0.37 (libsqlite3-sys 0.35).
# Remove once sqlx ≥ 0.9 ships stable.
sqlx-core = { git = "https://github.com/moltis-org/sqlx", rev = "33747ad2e2d0c7962c6450faf31591c4e0782c23" }
sqlx-sqlite = { git = "https://github.com/moltis-org/sqlx", rev = "33747ad2e2d0c7962c6450faf31591c4e0782c23" }
# whatsapp-rust 0.6.0 plus the DM LID-migration gate (oxidezap/whatsapp-rust#943,
# merged upstream): accounts the server has not migrated to LID 1:1 get their
# LID-addressed DMs silently 400-nacked; the gate keeps wire addressing on PN
# until the account migrates. Pinned to the merge commit of #943; drop this
# patch section for a plain version bump once a whatsapp-rust release includes
# it. The whole family is patched to the same rev so wacore/waproto types stay
# unified (mixing crates.io and git copies makes them incompatible).
wacore = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
wacore-binary = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
waproto = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
whatsapp-rust = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
whatsapp-rust-tokio-transport = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
whatsapp-rust-ureq-http-client = { git = "https://github.com/oxidezap/whatsapp-rust", rev = "96686eac65460b3bc8e10e3c37f27c0a602c3f54" }
[workspace.lints.rust]
unsafe_code = "deny"
unused_qualifications = "deny"
[workspace.lints.clippy]
expect_used = "deny"
unwrap_used = "deny"
[workspace.package]
edition = "2024"
license = "MIT"
repository = "https://github.com/moltis-org/moltis"
rust-version = "1.91"
version = "0.1.0"
[workspace.dependencies]
# APNS
a2 = { default-features = false, features = ["ring"], version = "0.10" }
# Async runtime
agent-client-protocol = "0.10.2"
tokio = { features = ["full"], version = "1" }
# HTTP/WS server
askama = "0.15"
axum = { features = ["ws"], version = "0.8" }
axum-extra = "0.10"
# Serialization
postcard = { features = ["alloc"], version = "1.1" }
process-wrap = { default-features = false, features = ["job-object", "kill-on-drop", "process-group", "tokio1"], version = "9.1" }
schemars = "1.2"
serde = { features = ["derive"], version = "1" }
serde-big-array = "0.5"
serde_json = "1"
# Error handling
anyhow = "1"
thiserror = "2"
# OpenSSL (vendored for cross-compilation)
openssl = { features = ["vendored"], version = "0.10" }
# Logging
opentelemetry = { version = "0.29" }
opentelemetry-otlp = { features = ["tonic"], version = "0.29" }
opentelemetry_sdk = { features = ["rt-tokio"], version = "0.29" }
tracing = "0.1"
tracing-opentelemetry = "0.30"
tracing-subscriber = { features = ["env-filter", "json"], version = "0.3" }
# CLI
clap = { features = ["derive", "env"], version = "4" }
indicatif = "0.17"
# Database
sqlx = { features = ["migrate", "runtime-tokio", "sqlite"], version = "0.8" }
# Embedded key-value store (zvec memory backend cache + file index)
redb = "2"
# Zvec vector database (memory backend)
# Packages renamed in v0.5.1: zvec→zvec-rust, zvec-sys→zvec-rust-sys.
zvec = { git = "https://github.com/zvec-ai/zvec-rust", package = "zvec-rust", rev = "f8e81a1645db9e5004fddc2e3f2160e0a512bfce" }
zvec-sys = { git = "https://github.com/zvec-ai/zvec-rust", package = "zvec-rust-sys", rev = "f8e81a1645db9e5004fddc2e3f2160e0a512bfce" }
# HTTP client
reqwest = { features = ["form", "json", "multipart", "query", "socks", "stream"], version = "0.13" }
# UUID
uuid = { features = ["v4", "v5"], version = "1" }
# Async
async-stream = "0.3"
async-trait = "0.1"
directories = "6"
dotenvy = "0.15"
futures = "0.3"
futures-util = "0.3"
once_cell = "1"
tokio-stream = "0.1"
tokio-test = "0.4"
tokio-util = "0.7"
# Config formats
serde_yaml = "0.9"
tokio-tungstenite = "0.26"
toml = "0.8"
toml_edit = "0.22"
zip = { default-features = false, features = ["deflate"], version = "2" }
# LLM provider crates (optional, behind feature flags)
async-openai = { features = ["chat-completion"], version = "0.32" }
base64 = "0.22"
bytemuck = { features = ["derive"], version = "1" }
bytes = "1"
ed25519-dalek = "2.2"
encoding_rs = "0.8"
fd-lock = "4"
genai = "0.5"
json_schema_ast = "0.3.1"
# GraphQL
async-graphql = "7"
async-graphql-axum = "7"
gix = "0.83"
half = "2"
hex = "0.4"
hmac = "0.12"
jsonwebtoken = { features = ["aws_lc_rs"], version = "10" }
libc = "0.2"
llama-cpp-2 = "0.1"
matrix-sdk = { default-features = false, features = ["e2e-encryption", "markdown", "native-tls", "sqlite"], version = "0.16" }
mockito = "1.7"
nostr-relay-builder = { version = "0.44" }
nostr-sdk = { features = ["nip04", "nip44", "nip59"], version = "0.44" }
open = "5.3"
rand = "0.10"
regex = "1"
ring = "0.17"
rustix = { features = ["fs"], version = "1.1" }
secrecy = { features = ["serde"], version = "0.8" }
serenity = { features = ["cache", "client", "gateway", "model", "rustls_backend"], version = "0.12" }
sha1 = "0.10"
sha2 = "0.10"
slack-morphism = { features = ["axum", "hyper"], version = "2.20" }
sled = "0.34"
sysinfo = "0.34"
teloxide = { features = ["macros"], version = "0.17" }
# WhatsApp (sqlite-storage disabled to avoid libsqlite3-sys conflict with sqlx;
# re-enable once sqlx 0.9 stabilises).
wacore = { default-features = false, version = "0.6" }
wacore-binary = { default-features = false, version = "0.6" }
waproto = "0.6"
whatsapp-rust = { default-features = false, features = ["tokio-native", "tokio-runtime", "tokio-transport", "ureq-client"], version = "0.6" }
whatsapp-rust-tokio-transport = "0.6"
whatsapp-rust-ureq-http-client = "0.6"
# QR code rendering
qrcode = "0.14"
# TLS / certificate generation
axum-server = { features = ["tls-rustls"], version = "0.7" }
rcgen = "0.13"
rustls = { features = ["ring"], version = "0.23" }
rustls-pemfile = "2"
rustls-platform-verifier = "0.6"
time = { features = ["serde-human-readable"], version = "0.3" }
tokio-rustls = "0.26"
# Cryptography / authentication
argon2 = "0.5"
chacha20poly1305 = { features = ["std"], version = "0.10" }
p256 = "0.13"
password-hash = "0.5"
subtle = "2"
webauthn-rs = "0.5"
webauthn-rs-proto = "0.5"
webbrowser = "1.2"
# Web / HTTP utilities
dashmap = "6"
hostname = "0.4"
http = "1"
hyper = { features = ["client", "http1", "http2", "server"], version = "1" }
hyper-util = { features = ["client-legacy", "http1", "http2", "server-auto", "service", "tokio"], version = "0.1" }
isahc = "1.8"
ngrok = "0.18"
tower = "0.5"
tower-http = "0.6"
url = "2"
urlencoding = "2"
# Form bodies (application/x-www-form-urlencoded)
form_urlencoded = "1"
web-push = "0.11"
# Metrics
metrics = "0.24"
metrics-exporter-prometheus = "0.16"
metrics-tracing-context = "0.16"
# Content processing
html2text = "0.16"
image = { default-features = false, features = ["jpeg", "png", "webp"], version = "0.25" }
ipnet = "2"
mdns-sd = "0.18"
mime_guess = "2"
pulldown-cmark = { default-features = false, version = "0.12" }
# Code splitting (tree-sitter based)
text-splitter = { default-features = false, features = ["code"], version = "0.29" }
tree-sitter-bash = "0.25"
tree-sitter-c = "0.24"
tree-sitter-cpp = "0.23"
tree-sitter-css = "0.25"
tree-sitter-go = "0.25"
tree-sitter-html = "0.23"
tree-sitter-java = "0.23"
tree-sitter-javascript = "0.25"
tree-sitter-json = "0.24"
tree-sitter-md = "0.5"
tree-sitter-python = "0.25"
tree-sitter-ruby = "0.23"
tree-sitter-rust = "0.24"
tree-sitter-toml-ng = "0.7"
tree-sitter-typescript = "0.23"
# Allocator
tikv-jemallocator = "0.6"
# Filesystem / archiving
cap-fs-ext = "4.0.2"
cap-std = "4.0.2"
chrono = "0.4"
chrono-tz = { features = ["serde"], version = "0.10" }
cron = "0.13"
dirs-next = "2"
flate2 = "1"
globset = "0.4"
grep-matcher = "0.1"
grep-regex = "0.1"
grep-searcher = "0.1"
ignore = "0.4"
include_dir = "0.7"
json5 = "0.4"
mail-parser = "0.11.6"
notify-debouncer-full = "0.7"
pdf-extract = "0.10"
portable-pty = "0.9"
rstest = "0.25"
serial_test = "3"
shell-words = "1"
tar = "0.4"
tempfile = "3"
walkdir = "2"
wasmtime = { features = ["component-model"], version = "36" }
wasmtime-wasi = "36"
which = "8"
wiremock = "0.6"
wit-bindgen = "0.41"
wit-bindgen-rt = { features = ["bitflags"], version = "0.41" }
# CalDAV / iCalendar
hyper-rustls = { features = ["http1", "native-tokio", "ring", "tls12"], version = "0.27" }
icalendar = "0.17"
libdav = "0.10"
tower-service = "0.3"
zeroize = { features = ["derive"], version = "1" }
# Workspace crates
moltis = { path = "crates/cli" }
moltis-acp = { path = "crates/acp" }
moltis-agents = { path = "crates/agents" }
moltis-auth = { path = "crates/auth" }
moltis-auto-reply = { path = "crates/auto-reply" }
moltis-browser = { path = "crates/browser" }
moltis-caldav = { path = "crates/caldav" }
moltis-canvas = { path = "crates/canvas" }
moltis-channels = { path = "crates/channels" }
moltis-chat = { path = "crates/chat" }
moltis-claude-import = { path = "crates/claude-import" }
moltis-client = { default-features = false, path = "crates/client" }
moltis-code-index = { path = "crates/code-index" }
moltis-codex-import = { path = "crates/codex-import" }
moltis-common = { path = "crates/common" }
moltis-config = { path = "crates/config" }
moltis-connector-caldav = { path = "crates/connector-caldav" }
moltis-connector-gmail = { path = "crates/connector-gmail" }
moltis-connector-himalaya = { path = "crates/connector-himalaya" }
moltis-connectors = { path = "crates/connectors" }
moltis-cron = { path = "crates/cron" }
moltis-discord = { path = "crates/discord" }
moltis-external-agents = { path = "crates/external-agents" }
moltis-gateway = { default-features = false, path = "crates/gateway" }
moltis-graphql = { path = "crates/graphql" }
moltis-hermes-import = { path = "crates/hermes-import" }
moltis-home-assistant = { path = "crates/home-assistant" }
moltis-httpd = { default-features = false, path = "crates/httpd" }
moltis-import-core = { path = "crates/import-core" }
moltis-matrix = { path = "crates/matrix" }
moltis-mcp = { path = "crates/mcp" }
moltis-mcp-agent-bridge = { path = "crates/mcp-agent-bridge" }
moltis-media = { path = "crates/media" }
moltis-memory = { path = "crates/memory" }
moltis-memory-zvec = { path = "crates/memory-zvec" }
moltis-metrics = { path = "crates/metrics" }
moltis-msteams = { path = "crates/msteams" }
moltis-netbird = { path = "crates/netbird" }
moltis-network-filter = { default-features = false, path = "crates/network-filter" }
moltis-node-host = { path = "crates/node-host" }
moltis-nostr = { path = "crates/nostr" }
moltis-oauth = { path = "crates/oauth" }
moltis-observability = { default-features = false, path = "crates/observability" }
moltis-onboarding = { path = "crates/onboarding" }
moltis-openclaw-import = { path = "crates/openclaw-import" }
moltis-plugins = { path = "crates/plugins" }
moltis-portable = { path = "crates/portable" }
moltis-projects = { path = "crates/projects" }
moltis-protocol = { path = "crates/protocol" }
moltis-provider-setup = { path = "crates/provider-setup" }
moltis-providers = { features = ["provider-kimi-code", "provider-openai-codex"], path = "crates/providers" }
moltis-qmd = { path = "crates/qmd" }
moltis-routing = { path = "crates/routing" }
moltis-schema-export = { path = "crates/schema-export" }
moltis-secret-store = { default-features = false, path = "crates/secret-store" }
moltis-service-traits = { path = "crates/service-traits" }
moltis-sessions = { path = "crates/sessions" }
moltis-signal = { path = "crates/signal" }
moltis-skills = { path = "crates/skills" }
moltis-slack = { path = "crates/slack" }
moltis-splitter = { path = "crates/splitter" }
moltis-swift-bridge = { path = "crates/swift-bridge" }
moltis-tailscale = { path = "crates/tailscale" }
moltis-telegram = { path = "crates/telegram" }
moltis-telephony = { path = "crates/telephony" }
moltis-tls = { path = "crates/tls" }
moltis-tools = { path = "crates/tools" }
moltis-vault = { path = "crates/vault" }
moltis-voice = { path = "crates/voice" }
moltis-web = { default-features = false, path = "crates/web" }
moltis-webhooks = { path = "crates/webhooks" }
moltis-whatsapp = { path = "crates/whatsapp" }
[profile.release]
codegen-units = 1
lto = "thin"
panic = "abort"
strip = true
# Build scripts and proc macros never ship, and recent macOS linkers leave a
# stripped proc-macro dylib unloadable ("mis-aligned LINKEDIT string pool").
[profile.release.build-override]
strip = false
[profile.swift-ci]
debug = 0
inherits = "dev"
panic = "abort"
[profile.dev]
debug = "line-tables-only"