Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
284 lines (255 loc) · 10.1 KB
/
Copy pathCargo.toml
File metadata and controls
284 lines (255 loc) · 10.1 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
[workspace]
members = [
"crates/tracedecay",
"crates/tracedecay-agent-hosts",
"crates/tracedecay-api",
"crates/tracedecay-contracts",
"crates/tracedecay-automation",
"crates/tracedecay-automation-runtime",
"crates/tracedecay-capture",
"crates/tracedecay-cli",
"crates/tracedecay-code-extraction",
"crates/tracedecay-code-index",
"crates/tracedecay-code-index-retention",
"crates/tracedecay-code-index-runtime",
"crates/tracedecay-configuration",
"crates/tracedecay-daemon-control",
"crates/tracedecay-daemon-identity",
"crates/tracedecay-daemon-protocol",
"crates/tracedecay-daemon-service",
"crates/tracedecay-dashboard-api",
"crates/tracedecay-domain",
"crates/tracedecay-framing",
"crates/tracedecay-global-db",
"crates/tracedecay-graph-db",
"crates/tracedecay-graph-query",
"crates/tracedecay-host-admission",
"crates/tracedecay-host-integration",
"crates/tracedecay-hooks",
"crates/tracedecay-lcm",
"crates/tracedecay-lsp",
"crates/tracedecay-maintenance",
"crates/tracedecay-mcp",
"crates/tracedecay-mcp-catalog",
"crates/tracedecay-policy",
"crates/tracedecay-privacy",
"crates/tracedecay-private-fs",
"crates/tracedecay-project",
"crates/tracedecay-query",
"crates/tracedecay-runtime-core",
"crates/tracedecay-sdk",
"crates/tracedecay-search-eval",
"crates/tracedecay-session-memory",
"crates/tracedecay-session-runtime",
"crates/tracedecay-sessions",
"crates/tracedecay-session-temporal-store",
"crates/tracedecay-source-edit",
"crates/tracedecay-temporal-query",
"crates/tracedecay-rusqlite-runtime",
"crates/tracedecay-store",
"crates/tracedecay-store-runtime",
"crates/tracedecay-tool-catalog",
"crates/tracedecay-tokenizer",
"crates/tracedecay-application",
]
exclude = [
".worktrees",
".codex-worktrees",
"patches/tokensave-medium-treesitters",
]
resolver = "3"
# Declared once here; every package inherits via
# `edition.workspace = true`. Cargo has no config-level edition default, so this
# inheritance table is the sanctioned single source of truth.
[workspace.package]
edition = "2024"
version = "1.0.0-beta.100"
[workspace.dependencies]
# grafeo 0.5.43 from our fork (ScriptedAlchemy/grafeo, main). The
# published crates carry a tiered-storage
# arena whose `HotVersionRef` addresses a single 1 MiB chunk, which caps an
# epoch near 32 Ki node records and then panics. The fork spans epochs across
# chunks, types the exhaustion and oversize errors, fixes compact, overlay,
# close, and WAL recovery correctness, and adds the direct compact build
# (`IncrementalCompactStoreBuilder` + `GrafeoDB::write_compact_container`)
# and in-place, page-verified sealed sections that sealed generation stores
# are built and reopened with. Its `memory_usage()` also counts the catalog,
# empty property-index shards and plan-cache tables, which the serving graph
# heap charge reads, and reports native read allocation demand before
# materializing rows. These APIs live in the fork so every build uses the
# same implementation. The fork resolves sibling crates by path: keep all
# five dependencies on main together and lock their exact commit in Cargo.lock
# to avoid type-incompatible instances from mixed sources.
grafeo-adapters = { git = "https://github.com/ScriptedAlchemy/grafeo.git", branch = "main", default-features = false, features = ["algos"] }
grafeo-common = { git = "https://github.com/ScriptedAlchemy/grafeo.git", branch = "main", default-features = false }
grafeo-core = { git = "https://github.com/ScriptedAlchemy/grafeo.git", branch = "main", default-features = false, features = ["lpg"] }
grafeo-engine = { git = "https://github.com/ScriptedAlchemy/grafeo.git", branch = "main", default-features = false, features = ["lpg", "gql", "algos", "wal", "grafeo-file"] }
grafeo-storage = { git = "https://github.com/ScriptedAlchemy/grafeo.git", branch = "main", default-features = false, features = ["wal"] }
# Pinned once: the MCP git handlers and the root's edit/lifecycle readers must
# resolve the same object database and status implementation, so a feature
# added for one is never missing for the other.
gix = { version = "=0.89.0", default-features = false, features = ["revision", "blob-diff", "parallel", "sha1", "sha256", "status"] }
schemars = "1.2.1"
async-channel = "2.5.0"
axum = "0.8"
base64 = "0.23"
cap-fs-ext = "4.0.2"
cap-std = "4.0.2"
clap = "4.6"
constant_time_eq = "0.6"
criterion = "0.8"
filetime = "0.2"
flate2 = "1"
miniz_oxide = "0.9.1"
futures-util = "0.3.33"
getrandom = "0.4"
glob = "0.3"
globset = "0.4"
hex = "0.4"
hmac = "0.13.0"
jsonc-parser = "0.34.0"
libc = "0.2"
notify = "8"
rayon = "1"
reqwest = { version = "0.13", default-features = false }
rmcp = { version = "3.5.1", default-features = false }
rusqlite = { version = "0.40.1", default-features = false }
rustls = { version = "0.23", default-features = false }
same-file = "1"
semver = "1"
serde = "1"
serde_json = "1"
sha2 = "0.11"
shell-words = "1.1"
socket2 = "0.6"
static_assertions = "1.1.0"
tempfile = "3"
thiserror = "2"
tokio = "1"
tokio-stream = "0.1"
tokio-util = { version = "0.7", default-features = false, features = ["rt"] }
toml = "1"
tower = "0.5"
tracing = "0.1"
tracing-subscriber = { version = "0.3", default-features = false }
tree-sitter = "0.27"
tree-sitter-rust = "0.24"
ureq = "3"
url = "2"
walkdir = "2"
windows-sys = "0.61"
xattr = "1"
zeroize = "1.9.0"
[profile.bench]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
incremental = false
# panic stays unwind. Production catch_unwind recovers poisoned work.
[profile.dist]
inherits = "release"
lto = "thin"
codegen-units = 1
strip = "symbols"
# Workspace crates retain line tables and incremental state; dependencies omit
# debuginfo to reduce compile, cache, and link costs. CI explicitly disables
# incremental compilation through CARGO_INCREMENTAL.
# `line-tables-only` (not `1`/limited) is deliberate: backtraces and panic
# locations keep file:line, while the spine rlibs and per-suite test binaries
# shrink several-fold, measured 764–966 MiB per root-lib cache entry at
# debug=1 against 45.7 MiB without debuginfo, which was blowing the shared
# build-cache budget and turning evictions into repeat 5-minute misses.
#
# Ordinary development and focused tests remain unoptimized. Full CI uses
# the assertion-enabled perf profile so production-scale fixtures exercise
# the same bounded readiness contracts as the optimized product.
[profile.dev]
debug = "line-tables-only"
incremental = true
opt-level = 0
# Focused root unit tests retain assertions with a bounded codegen working set.
[profile.bounded-test]
inherits = "test"
debug = 0
incremental = false
opt-level = 0
codegen-units = 1
[profile.dev.package."*"]
debug = 0
# CI and PR builds. Release builds (`--config=release`, `--config=dist`)
# ignore this profile.
[profile.perf]
inherits = "dev"
opt-level = 1
debug-assertions = true
overflow-checks = true
# The composition root and DTO glue spend their compile time in LLVM without
# making tests faster; unoptimized, the root's largest action compiles about
# 3x faster. Compiling every crate at opt-level 0 instead made daemon
# journeys miss their time budgets on CI, so only these stay unoptimized.
[profile.perf.package.tracedecay]
opt-level = 0
[profile.perf.package.tracedecay-daemon-protocol]
opt-level = 0
[profile.perf.package.tracedecay-contracts]
opt-level = 0
# A cold tokenizer loads its embedded vocabulary and compiles BPE regexes.
# At opt-level 0 that startup alone exceeds the proposal journey's budget.
[profile.perf.package.tiktoken-rs]
opt-level = 2
[profile.perf.package.regex]
opt-level = 2
# Code-index and graph-publication suites build production-scale generations.
[profile.perf.package.tracedecay-code-extraction]
opt-level = 2
[profile.perf.package.tracedecay-code-index]
opt-level = 2
[profile.perf.package.tracedecay-code-index-runtime]
opt-level = 2
[profile.perf.package.tracedecay-domain]
opt-level = 2
[profile.perf.package.tracedecay-graph-db]
opt-level = 2
[profile.perf.package.tracedecay-runtime-core]
opt-level = 2
[profile.perf.package.tracedecay-rusqlite-runtime]
opt-level = 2
[profile.perf.package.tracedecay-store]
opt-level = 2
[profile.perf.package.grafeo-adapters]
opt-level = 2
[profile.perf.package.grafeo-common]
opt-level = 2
[profile.perf.package.grafeo-core]
opt-level = 2
[profile.perf.package.grafeo-engine]
opt-level = 2
[profile.perf.package.grafeo-storage]
opt-level = 2
[profile.perf.package.serde_json]
opt-level = 2
# Canonical replay integrity hashes multi-megabyte sources inside the exact
# SQL transaction budget; unoptimized hashing exceeds that budget.
[profile.perf.package.sha2]
opt-level = 3
# The upstream Rust grammar rejects `#[cfg(...)]` attributes on
# struct-destructuring fields. Our fork carries tree-sitter/tree-sitter-rust#301
# on top of upstream master (branch `tracedecay/struct-pattern-attrs-v2`), and
# every `tree-sitter-rust` consumer in the graph resolves to it until upstream
# merges #301 and releases it.
[patch.crates-io]
tree-sitter-rust = { git = "https://github.com/ScriptedAlchemy/tree-sitter-rust", rev = "d737577441bf238d18be428ee6207779a55140aa" }
# Kotlin uses arborium-kotlin across all tiers; the medium bundle must not
# link tree-sitter-kotlin-sg's duplicate parse table.
tokensave-medium-treesitters = { path = "patches/tokensave-medium-treesitters" }
# tree-sitter-perl 1.1.2 lists `tree-sitter` ^0.26 as a normal dependency;
# upstream master moves it to dev-dependencies with grammar sources identical
# to 1.1.2. Unpublished, so pin that commit until a release ships it.
tree-sitter-perl = { git = "https://github.com/ganezdragon/tree-sitter-perl", rev = "5b97493ce70686e22ec8b9ea261437147e342b49" }
# tree-sitter-sequel 0.3.11 builds with `cc = "~1.2.1"`, which holds every
# cc 1.x in the graph at 1.2. The fork is the 0.3.11 tag plus upstream
# DerekStride/tree-sitter-sql#368 (cc = "1.2.1") and the generated parser
# copied byte for byte from the published crate. Drop it once a release
# ships #368 (DerekStride/tree-sitter-sql#384).
tree-sitter-sequel = { git = "https://github.com/ScriptedAlchemy/tree-sitter-sql", rev = "52fb886f900022d459df9f87cecb3d5033ce7268" }