-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathCargo.toml
More file actions
141 lines (122 loc) · 4.18 KB
/
Cargo.toml
File metadata and controls
141 lines (122 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[workspace]
members = [
"crates/sprout-relay",
"crates/sprout-core",
"crates/sprout-db",
"crates/sprout-pubsub",
"crates/sprout-auth",
"crates/sprout-search",
"crates/sprout-audit",
"crates/sprout-mcp",
"crates/sprout-acp",
"crates/sprout-agent",
"crates/sprig",
"crates/sprout-proxy",
"crates/sprout-test-client",
"crates/sprout-admin",
"crates/sprout-workflow",
"crates/sprout-media",
"crates/sprout-cli",
"crates/sprout-pairing-cli",
"crates/sprout-sdk",
"crates/sprout-persona",
"crates/git-credential-nostr",
"crates/git-sign-nostr",
"crates/sprout-pair-relay",
"crates/sprout-dev-mcp",
"examples/countdown-bot",
]
exclude = ["desktop/src-tauri"]
resolver = "2"
[workspace.package]
version = "0.1.0"
edition = "2021"
rust-version = "1.88.0"
license = "Apache-2.0"
repository = "https://github.com/block/sprout"
[workspace.dependencies]
# Runtime
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "time", "sync", "io-util", "signal", "process"] }
tokio-util = { version = "0.7", features = ["rt", "codec"] }
# HTTP + WebSocket
axum = { version = "0.8", features = ["ws", "macros"] }
tower = { version = "0.5", features = ["timeout", "util"] }
tower-http = { version = "0.6", features = ["trace", "cors", "compression-gzip", "limit", "fs"] }
# Database
sqlx = { version = "0.9", features = [
"runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json"
] }
# Redis
redis = { version = "1.0", features = ["tokio-comp", "connection-manager"] }
deadpool-redis = { version = "0.23", features = ["rt_tokio_1"] }
# Nostr
nostr = { version = "0.44", features = ["nip44", "nip98"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"
evalexpr = "11"
cron = "0.16"
# Observability
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
metrics = "0.24"
metrics-exporter-prometheus = "0.18"
# Error handling
thiserror = "2"
anyhow = "1"
# Utilities
uuid = { version = "1", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
# HTTP client (webhook delivery, Typesense indexing)
reqwest = { version = "0.13", features = ["json", "rustls"], default-features = false }
# Cryptography
sha2 = "0.11"
hex = "0.4"
hmac = "0.13"
# Randomness
rand = "0.10"
subtle = "2.6"
zeroize = "1.8"
# Concurrent data structures
dashmap = "6"
moka = { version = "0.12", features = ["sync"] }
# Async stream utilities
futures-util = "0.3"
# WebSocket client (test client)
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
url = "2"
# MCP SDK
rmcp = { version = "1.1.0", features = ["server", "transport-io", "macros"] }
schemars = { version = "1", default-features = false }
# Internal crates
sprout-core = { path = "crates/sprout-core" }
sprout-db = { path = "crates/sprout-db" }
sprout-auth = { path = "crates/sprout-auth" }
sprout-pubsub = { path = "crates/sprout-pubsub" }
sprout-search = { path = "crates/sprout-search" }
sprout-audit = { path = "crates/sprout-audit" }
sprout-mcp = { path = "crates/sprout-mcp" }
sprout-proxy = { path = "crates/sprout-proxy" }
sprout-workflow = { path = "crates/sprout-workflow" }
sprout-media = { path = "crates/sprout-media" }
sprout-sdk = { path = "crates/sprout-sdk" }
# CI profile — release-grade codegen for the relay so e2e tests hit a
# realistic binary, not an unoptimised debug build. Inherits `release`
# defaults (opt-level 3, no debug-assertions) but keeps incremental
# compilation enabled and avoids LTO so the build stays fast.
[profile.ci]
inherits = "release"
lto = false
# Sprig profile — optimized for deploy-anywhere Sprig release artifacts.
# Sprig is distributed over the network and installed on fresh hosts, so binary
# size matters more than compile speed here. Keep this separate from the normal
# `release` profile so desktop/dev release builds do not inherit the slower
# size-focused settings unless they opt in explicitly.
[profile.sprig]
inherits = "release"
opt-level = "z"
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true