Cargo.toml
Rama main · réplica de lectura del repositorio original.
[workspace]
resolver = "2"
# Patched third-party crates ([patch.crates-io]), not workspace members.
exclude = ["vendor"]
members = [
"crates/access_requests",
"crates/agent_api_keys",
"crates/routines",
"crates/routine_program",
"crates/activity",
"crates/agent", "crates/agent_changes", "crates/agent_egress", "crates/folds/agent_fold", "crates/folds/claude_fold", "crates/folds/codex_fold",
"crates/agent_harness",
"crates/trigger_context",
"crates/agent_preview",
"crates/agent_code_mode",
"crates/agent_correlation",
"crates/code_mode_assets",
"crates/dynamic_ui",
"crates/agent_inmem",
"crates/agent_runtime_protocol", "crates/agent_session", "crates/agent_session_realtime",
"crates/agent_trigger",
"crates/ai_billing",
"crates/ai_projections",
"crates/ai_usage",
"crates/attention_feed",
"crates/bot_id",
"crates/bot_token",
"crates/bots",
"crates/broadcast",
"crates/calendar_events",
"crates/calendar_scheduling",
"crates/channel_bots",
"crates/channel_labels",
"crates/client/cache-core",
"crates/client/cache-turso",
"crates/client/cache-wasm",
"crates/client/turso-opfs",
"crates/coding_agent_worker",
"crates/code_execution",
"crates/cognition",
"crates/codex_cloud_agents",
"crates/codex_connection",
"crates/connect_client",
"crates/collab_surface",
"crates/complete_graph",
"crates/cowlike",
"crates/crm",
"crates/cursor_api_key",
"crates/cursor_cloud_agents",
"crates/jev",
"crates/universal_input",
"crates/database_sql",
"crates/database_webhooks",
"crates/databases",
"crates/databases_sql",
"crates/models_databases",
"crates/forms",
"crates/models_forms",
"crates/embedding",
"crates/image_generation",
"crates/web_search",
"crates/dictation",
"crates/email_api_client",
"crates/entity_mutation",
"crates/entity_registry/entity_registry",
"crates/entity_registry/entity_registry_db_utils",
"crates/entity_registry/shared_entity_registry",
"crates/favorites",
"crates/feature_flags",
"crates/foreign_entity",
"crates/genai_telemetry",
"crates/generic_email_domains",
"crates/git_patch",
"crates/gmail_client",
"crates/google_token",
"crates/graphql_activity",
"crates/graphql_calendar",
"crates/graphql_contacts",
"crates/graphql_channel",
"crates/graphql_common",
"crates/graphql_databases",
"crates/graphql_email",
"crates/graphql_entity_mutation",
"crates/graphql_favorite",
"crates/graphql_crm",
"crates/graphql_initiative",
"crates/graphql_notification",
"crates/graphql_notification_inbox",
"crates/graphql_permission",
"crates/graphql_properties",
"crates/graphql_scheduled_action",
"crates/graphql_soup",
"crates/graphql_soup_filter_input",
"crates/graphql_registered_work",
"crates/graphql_work_feed",
"crates/gtm_invite",
"crates/computer_id",
"crates/pairing_id",
"crates/harness_id",
"crates/harness_token",
"crates/harnesses",
"crates/incus_client",
"crates/import",
"crates/import_notion",
"crates/import_tracker",
"crates/import_linear",
"crates/import_jira",
"crates/initiative",
"crates/initiative_description",
"crates/item_filter_index",
"crates/integration_tests/local_e2e",
"crates/loops_client",
"crates/macro_authorization",
"crates/macro_config",
"crates/macro_event_broker",
"crates/macro_event_topics",
"crates/macro_queues",
"crates/macro_sync_service_jwt",
"crates/maybe_send",
"crates/memory",
"crates/messages",
"crates/model_owner",
"crates/mcp_select",
"crates/mcp_toolset",
"crates/natural_time",
"crates/notification_inbox",
"crates/notification_state",
"crates/pipedream_mcp",
"crates/granola_sync",
"crates/onboarding",
"crates/ai_engine",
"crates/docx_engine",
"crates/fig_engine",
"crates/pptx_engine",
"crates/psd_engine",
"crates/predicate_index",
"crates/prompt",
"crates/properties_service",
"crates/reminders",
"crates/search_service",
"crates/subsequence_match",
"crates/skills",
"crates/slack_integration",
"crates/soup_filter_cache_adapter",
"crates/soup_filter_projection",
"crates/soup_realtime",
"crates/system_skills",
"crates/system_status",
"crates/task_dedup",
"crates/unfurl",
"crates/upstream_error",
"crates/account_manager",
"crates/user_api_key",
"crates/user_language",
"crates/webhook_signature",
"crates/whatsapp_e2e",
"crates/whatsapp_fake_server",
"crates/external_chat",
"crates/whatsapp_linked",
"crates/whatsapp_store_pg",
"crates/whatsmeow",
"crates/whatsmeow_proto",
"crates/whatsmeow_signal",
"crates/work_feed",
"crates/worker-rs-otel",
"crates/workspace-hack",
"services/agent_harness_service",
"services/agent_trigger_service",
"services/authentication_service",
"services/calendar_service",
"services/call_recording_preview_handler",
"services/connection_gateway",
"services/contacts_service",
"services/convert_service",
"services/dataloss_prevention_handler",
"services/delete_chat_handler",
"services/deleted_item_poller",
"services/agent_harness_service/load-test",
"services/document_storage_service",
"services/document_text_extractor",
"services/document_upload_finalizer_handler",
"services/docx_unzip_handler",
"services/email_focus_worker",
"services/email_refresh_handler",
"services/email_scheduled_handler",
"services/email_service",
"services/email_sfs_delete_handler",
"services/email_suppression_handler",
"services/image_optimizer",
"services/image_proxy_service",
"services/mcp_auth_proxy",
"services/notification_retention_handler",
"services/notification_service",
"services/organization_retention_handler",
"services/organization_retention_trigger",
"crates/scheduled_action",
"services/search_processing_service",
"services/search_upload_handler",
"services/sha_cleanup_worker",
"services/slack_import_worker",
"services/static_file_service",
"crates/sync_router",
"services/sync-service",
"services/sync-service/bebop-schema",
"services/unfurl_service",
"services/upload_extractor_lambda_handler",
"services/upload_extractor_lambda_trigger",
"services/user_link_cleanup_handler",
"services/whatsapp_session_service",
"services/worker_trigger",
"tooling/native_app_server",
"tooling/notification_sandbox",
"tooling/ai_billing_cli",
"tooling/seed_cli",
"tooling/xtask",
"tooling/xtask/crates/*",
]
[workspace.dependencies]
macro_user_id = { path = "crates/macro_user_id" }
aes = "0.8.4"
aes-gcm = { version = "0.10.3", features = ["zeroize"] }
anyhow = "1.0.100"
apollo-compiler = "1"
apollo-parser = "0.8"
# Locally forked (see third_party/README.md). Defaults off so the fold's
# dependency chain stays wasm-reachable; whoever spawns an agent as a
# subprocess asks for `features = ["subprocess"]`.
# Pinned past the v2.0.0 tag to pick up wasm32 support (PR #294, merged to
# main but not yet in a tagged release):
# https://github.com/agentclientprotocol/rust-sdk/pull/294
# Swap back to a plain version once upstream cuts a release containing it.
agent-client-protocol = { git = "https://github.com/agentclientprotocol/rust-sdk", rev = "8769d16d10e0c9fa7e662ee18424a4313b06ea88", features = [
"unstable_elicitation",
] }
arboard = { version = "3.6.1", default-features = false, features = ["wayland-data-control"] }
# Templates use built-in defaults; omit the unused config parser and basic-toml.
askama = { version = "0.14", default-features = false, features = ["derive", "std", "urlencode"] }
async-graphql = "7.2.1"
async-lock = "3"
async-openai = { version = "0.36.1", features = [
"byot",
"chat-completion",
"completions",
"embedding",
] }
async-stream = "0.3.6"
async-trait = "0.1.86"
automod = "1"
aws-config = { version = "1.8.16", features = ["behavior-version-latest"] }
aws-msk-iam-sasl-signer = "1.0.1"
# SDK defaults also enable the deprecated `rustls` feature, which pulls in
# rustls 0.21 / hyper 0.14. Keep the modern HTTPS client and the other defaults;
# macro_aws_config uses BehaviorVersion::latest() with this transport.
aws-sdk-dynamodb = { version = "1.111.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-ecs = { version = "1.124.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-kms = { version = "1.104.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-lambda = { version = "1.122.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-s3 = { version = "1.132.0", default-features = false, features = ["sigv4a", "http-1x", "default-https-client", "rt-tokio"] }
aws-sdk-secretsmanager = { version = "1.104.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-sesv2 = { version = "1.118.0", default-features = false, features = ["sigv4a", "default-https-client", "rt-tokio"] }
aws-sdk-sns = { version = "1.99.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-sdk-sqs = { version = "1.98.0", default-features = false, features = ["default-https-client", "rt-tokio"] }
aws-smithy-types = "1.4.7"
aws-types = "1"
aws_lambda_events = { version = "0.16.0", default-features = false }
axum = { version = "0.8", features = ["tower-log"] }
axum-extra = { version = "0.10" }
backoff = { version = "0.4.0", features = ["tokio"] }
base64 = "0.22.1"
bebop = "3.1.3"
brotli-decompressor = { version = "5.0.3", default-features = false, features = ["std"] }
cached = { version = "0.54.0", features = ["async_tokio_rt_multi_thread"] }
chrono = { version = "0.4.39", features = ["serde"] }
chrono-tz = { version = "0.10.4", features = ["serde"] }
clap = { version = "4.5.20", features = ["derive"] }
cloudfront_sign = "0.3.0"
cbc = { version = "0.1.2", features = ["std"] }
constant_time_eq = "0.3.1"
console_error_panic_hook = "0.1.7"
crossterm = "0.28"
cookie = "0.18.1"
cron = "0.16.0"
csv = "1"
dashmap = "6.1.0"
dateparser = "0.2.1"
determinator = "0.12.0"
dotenvy = "0.15.7"
ego-tree = "0.6.2"
either = "1"
eventsource-stream = "0.2.3"
flate2 = "1"
fractional_index = { version = "2.0.2", default-features = false }
futures = "0.3.31"
getrandom = "0.3"
gif = { version = "0.14", default-features = false, features = ["std"] }
glob = "0.3.3"
# Pinned engine for the generated dependency artifacts (used by the xtask
# graph/deps commands). This version lives in Cargo.lock, so dev machines and
# CI always run the identical generator; guppy is pinned to the version the
# hakari release is built against.
guppy = "0.17.24"
h2 = "0.4"
hex = "0.4.3"
hkdf = "0.12.4"
hmac = "0.12.1"
encoding_rs = "0.8"
http = "1"
http-body = "1.0.1"
http-body-util = "0.1.2"
httpdate = "1"
hyper = "1"
hyper-util = { version = "0.1", features = ["tokio"] }
# image's default formats minus "avif": its AVIF encoder pulls in rav1e, whose
# build script records whether it runs in CI, so rav1e and everything above it
# (attachment, image_optimizer, ...) compiled differently on developer machines
# and in CI. Nothing here decodes AVIF (that needs "avif-native"), so AVIF
# inputs already failed before reaching the encoder.
image = { version = "0.25", default-features = false, features = [
"rayon", "bmp", "dds", "exr", "ff", "gif", "hdr", "ico", "jpeg", "png", "pnm",
"qoi", "tga", "tiff", "webp",
] }
image-webp = "0.2"
indexmap = "2"
infer = "0.19.0"
indoc = "2"
inquire = "0.7"
itertools = "0.14"
jsonschema = { version = "0.58.6", default-features = false }
jsonwebtoken = { git = "https://github.com/whutchinson98/jsonwebtoken", features = [
"rust_crypto",
] }
lambda_runtime = "0.13.0"
lazy-regex = "3.6.1"
lazy_static = "1.5.0"
libc = "0.2"
# Signal's curve25519 keys and XEdDSA; see crates/whatsmeow_signal/AGENTS.md.
libsignal-core = { git = "https://github.com/signalapp/libsignal", tag = "v0.105.2" }
livekit-api = { version = "0.4.16", default-features = false, features = [
"access-token",
"rustls-tls-webpki-roots",
"services-tokio",
"webhooks",
] }
livekit-protocol = "0.7.2"
log = "0.4.26"
logos = "0.16"
lol_html = "2.4.0"
loro = "1.16.2"
lru = "0.16"
md-5 = "0.10.6"
mimalloc = { version = "0.1", default-features = false }
miniz_oxide = { version = "0.8", features = ["with-alloc"] }
mockall = "0.13"
nutype = { version = "0.8.0", features = ["serde", "derive_unchecked"] }
nom = "8"
openssl-sys = "0.9"
opus-pure = "0.2.1"
opentelemetry = { version = "0.31.0", default-features = false }
opentelemetry-appender-tracing = { version = "0.31.1", default-features = false }
opentelemetry-http = { version = "0.31.0", default-features = false }
opentelemetry-otlp = { version = "0.31.0", default-features = false, features = [
"grpc-tonic",
"internal-logs",
"logs",
"metrics",
"trace",
] }
opentelemetry_sdk = { version = "0.31.0", default-features = false }
ordered-float = "5"
paste = "1"
pdfium-render = { version = "0.8.37", default-features = false, features = [
"pdfium_7543",
"thread_safe",
] }
pgvector = { version = "0.4", features = ["postgres", "sqlx"] }
png = "0.18"
postcard = { version = "1", features = ["use-std"] }
pollster = "0.4"
progenitor-client = "0.15.1"
proptest = { version = "1.11", default-features = false, features = ["std"] }
prost = "0.14"
prost-build = "0.14"
protox = "0.10"
quote = "1"
rand = "0.9.0"
ratatui = "0.29"
# uses vendored to fix lambda builds failing.
rdkafka = { version = "0.37", default-features = false, features = [
"cmake-build",
"libz-static",
"ssl-vendored",
"tokio",
] }
readonly = "0.2"
recursion = "0.5.4"
redis = "1.0.3"
regex = "1.11.1"
reqwest = { version = "0.13", default-features = false, features = [
"form",
"hickory-dns",
"json",
"rustls",
] }
rmcp = "3.9.0"
skrifa = { version = "0.48", default-features = false, features = ["std"] }
sse-stream = "0.2"
rootcause = { version = "0.12", features = ["compat-anyhow1"] }
rustls = { version = "0.23.46", default-features = false, features = ["aws_lc_rs"] }
# Mirrors the ACP SDK's own declaration: `coding_agent_worker` ports its
# process-group kill and makes the same call.
rustix = { version = "1", default-features = false, features = ["process", "std"] }
rootcause-tracing = "0.12.1"
schemars = { version = "1.0.4", features = ["chrono04", "uuid1"] }
semver = { version = "1", features = ["serde"] }
ruzstd = { version = "0.9.1", default-features = false, features = ["std"] }
serde = { version = "1.0.214", features = ["derive"] }
serde-wasm-bindgen = "0.6"
serde_dynamo = { version = "4", features = ["aws-sdk-dynamodb+1"] }
serde_path_to_error = "0.1.20"
serde_json = { version = "1.0.132" }
serde_repr = "0.1"
serde_with = { version = "3.12.0", features = ["base64"] }
serde_yaml = "0.9"
shell-words = "1.1.1"
specta = { version = "=2.0.0-rc.25", features = ["derive"] }
specta-serde = "=0.0.12"
specta-typescript = "=0.0.12"
sha2 = "0.10.8"
sqlx = { version = "0.8.6", features = [
"chrono",
"postgres",
"runtime-tokio-rustls",
"uuid",
] }
sqlx-core = { version = "0.8.6" }
sse-core = { version = "0.2.3", default-features = false, features = ["std"] }
strsim = "0.11"
strum = { version = "0.27.1", features = ["derive"] }
symphonia = { version = "0.6.1", default-features = false, features = [
"isomp4",
"mkv",
"ogg",
"wav",
] }
tar = "0.4.46"
tempfile = "3"
thiserror = "2.0.0"
time = "0.3.37"
tiny-skia = { version = "0.11.4", default-features = false, features = ["simd", "std"] }
tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] }
tokio-retry = { version = "0.3.2", default-features = false }
tokio-rustls = { version = "0.26", default-features = false, features = ["aws_lc_rs"] }
tokio-stream = { version = "0.1.17" }
tokio-tungstenite = { version = "0.28", default-features = false, features = [
"connect",
"rustls-tls-webpki-roots",
] }
# Signal's compression fork is based on tungstenite 0.27. Keep its Tokio
# adapter separate from the upstream sockets used elsewhere in the workspace.
tokio-tungstenite-signal = { package = "tokio-tungstenite", version = "0.27", default-features = false, features = ["handshake"] }
tungstenite-signal = { package = "tungstenite", version = "0.27", default-features = false, features = ["handshake", "deflate"] }
tokio-util = "0.7.13"
tower = { version = "0.5.1", features = ["util"] }
tower-service = "0.3"
tower-http = { version = "0.6.1", features = [
"compression-gzip",
"cors",
"trace",
] }
toml = "0.8"
toml_edit = "0.22"
tracing = "0.1.44"
tracing-opentelemetry = "0.32.1"
tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json"] }
tracing-tree = "0.4.0"
tui-input = { version = "0.14.0", default-features = false }
# Pin the official upstream revision used by the browser cache. Cache writes use
# deferred transactions so browser WASM does not initialize Turso's temp database.
turso_core = { git = "https://github.com/tursodatabase/turso", rev = "79163249538197d01dec5ea7f65519454ed792e2", default-features = false }
tungstenite = { version = "0.28", features = ["url"] }
urlencoding = "2.1.3"
utoipa = { version = "5.4.0", features = [
"axum_extras",
"chrono",
"repr",
"uuid",
] }
# debug-embed: debug builds embed Swagger UI instead of compiling in the
# absolute build-directory path they would read it from at runtime, which made
# the crate and every service above it differ per checkout.
utoipa-swagger-ui = { version = "9", features = ["axum", "vendored", "debug-embed"] }
uuid = { version = "1.15.1", features = ["fast-rng", "serde", "v4", "v5", "v7"] }
webpki-roots = "1.0.10"
wiremock = "0.6.5"
zeroize = "1.8.2"
zune-core = "0.5"
zune-jpeg = { version = "0.5", default-features = false, features = ["std"] }
# worker-build (see services/sync-service/wrangler.toml) refuses to build against
# anything older than 0.2.123, so keep this floor above that.
wasm-bindgen = "0.2.123"
wasm-bindgen-futures = "0.4"
wasm-bindgen-test = "0.3"
web-sys = "0.3"
web-time = "1.1.0"
webbrowser = { version = "=1.2.2", features = ["hardened"] }
windows-sys = "0.61"
worker = "0.8.1"
x25519-dalek = { version = "2.0.1", features = ["static_secrets"] }
# this is pinned to match axum 0.7.9 dependency requirements
async-stripe = { version = "0.41", default-features = false, features = [
"billing",
"checkout",
"runtime-tokio-hyper",
] }
axum-macros = "0.5"
bytes = "1.11.1"
doppleganger = "0.5"
doppler-config = "0.1.2"
js-sys = "0.3"
scraper = "0.18"
serde_urlencoded = "0.7.1"
strum_macros = "0.27.1"
unicode-segmentation = "1.9.0"
url = "2.5.0"
zip = { version = "9.0.5", default-features = false, features = [
"aes-crypto",
"bzip2",
"deflate",
"deflate64",
"lzma",
"time",
"xz",
"zstd",
] }
ammonia = "4.1.8"
html-escape = "0.2"
subtle = "2.6.1"
[patch.crates-io]
# Only replaces tungstenite 0.27 (GraphQL subscriptions); 0.28/0.29 stay upstream.
tungstenite = { git = "https://github.com/signalapp/tungstenite-rs", rev = "a1837ccfe96b6895a57352d7f0112e4557516c27" }
# Writes a checkout-independent embed folder; see vendor/utoipa-swagger-ui/README-MACRO.md.
utoipa-swagger-ui = { path = "vendor/utoipa-swagger-ui" }
# cache-turso's storage tests load thousands of rows into the embedded SQL engine
# to assert VM step budgets. Unoptimized, the engine made them the slowest tests
# in the Rust suite (34 s for the crate); at opt-level 2 the crate's tests take
# 2.6 s. The assertions count VM steps, which optimization does not change.
[profile.dev.package.turso_core]
opt-level = 2
[profile.dev.package.turso_parser]
opt-level = 2
[profile.dev.package.turso_ext]
opt-level = 2
# Retain Rust DWARF for local cache profiling while keeping release-level LLVM
# optimization. wasm-pack's custom profile metadata prevents the final
# wasm-opt pass from discarding or rewriting these locations.
[profile.cache-wasm-profiling]
inherits = "release"
debug = 2
strip = "none"
# The Cloudflare sync worker is size-sensitive. Package manifests cannot own
# profiles once they are workspace members, so keep its former release profile
# here without changing release optimization for the backend services.
[profile.sync-service-release]
inherits = "release"
lto = true
opt-level = "s"
# The fig engine's browser build (apps/web `build-fig-engine-wasm`): one
# codegen unit and full LTO, so its rasterizing loops inline across crates.
[profile.fig-engine-wasm]
inherits = "release"
lto = "fat"
codegen-units = 1
[profile.psd-engine-wasm]
inherits = "release"
lto = "fat"
codegen-units = 1
[profile.ai-engine-wasm]
inherits = "release"
lto = "fat"
codegen-units = 1