This repository was archived by the owner on May 13, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
199 lines (177 loc) · 7.91 KB
/
Copy pathCargo.toml
File metadata and controls
199 lines (177 loc) · 7.91 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
[package]
name = "fold_db_node"
version = "0.4.0"
edition = "2021"
publish = false
build = "build.rs"
[features]
default = []
ts-bindings = ["fold_db/ts-bindings", "dep:ts-rs"]
os-keychain = ["dep:keyring"]
test-utils = ["fold_db/test-utils"]
transform-wasm = ["fold_db/transform-wasm"]
face-detection = ["fold_db/face-detection"]
[dependencies]
# Core database library
fold_db = { git = "https://github.com/EdgeVector/fold_db.git", rev = "ef571a16b8b6d790222c35a12a9c43532c88f023", features = ["cli"] }
# Schema service registry brain. Phase 2 T2: all former
# `fold_db::schema_service::*` types come from here now. Git dep pinned
# by explicit rev; bumps are automated by the cross-repo bump-cascade
# bot (see CLAUDE.md > Schema service > Dep pinning).
schema_service_core = { git = "https://github.com/EdgeVector/schema_service.git", rev = "9699e751d93e16d069d2bacc4f2f086fd832030a" }
# Typed /v1/* HTTP client for the schema service. Phase 3 T2: replaces the
# in-tree `src/fold_node/schema_client.rs`. Bumps in lockstep with
# `schema_service_core` via the cascade bot.
schema_service_client = { git = "https://github.com/EdgeVector/schema_service.git", rev = "9699e751d93e16d069d2bacc4f2f086fd832030a" }
# Shared telemetry substrate. Lives in fold_db's workspace (`crates/observability`)
# but pinned independently here because the fold_db `rev` above is pre-workspace
# and lockstep-bumped with schema_service. observability has no `fold_db`
# dep itself, so a divergent rev avoids the dual-`fold_db` trap CLAUDE.md
# warns about. See `docs/observability/ingress-middleware-notes.md`.
#
# Bumped to 3ea472f3 (fold_db PR #669) which hoists the WEB-layer
# composition into upstream `observability::init_node_with_web`. The local
# `observability_setup` module is now a thin re-export — when you need
# additional layers, modify upstream.
observability = { git = "https://github.com/EdgeVector/fold_db.git", rev = "ef571a16b8b6d790222c35a12a9c43532c88f023" }
# HTTP Server
actix-web = "4.3"
actix-cors = "0.6"
actix-multipart = "0.6"
tracing-actix-web = "0.7"
# CLI
clap = { version = "4.4", features = ["derive", "string"] }
clap_complete = "4.4"
comfy-table = "7.1"
dialoguer = "0.11"
console = "0.15"
# File processing
file_to_markdown = { git = "https://github.com/EdgeVector/file_to_markdown.git", branch = "main" }
csv = "1.3"
mime_guess = "2.0"
kamadak-exif = "0.5"
rust-embed = "8.0"
dirs = "5"
# Sled (used directly by schema_service)
sled = "0.34"
# Shared deps (also in fold_db, but needed directly)
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
ts-rs = { version = "10.1.0", optional = true, features = ["uuid-impl", "chrono-impl"] }
tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "sync", "time", "fs", "signal", "io-util"] }
tracing = "0.1"
# Versions match observability's Cargo.toml so cargo unifies them in the
# dep graph (otherwise we'd link two copies of opentelemetry types and
# `set_parent` calls wouldn't typecheck).
tracing-opentelemetry = "0.28"
opentelemetry = "0.27"
# observability::propagation::extract_parent_context takes &http::HeaderMap
# (1.x). actix-http re-exports the same `http` crate's HeaderName / Value
# types but its own HeaderMap is a different container, so we have to
# rebuild an http::HeaderMap on ingress.
http = "1"
tempfile = "3.8"
uuid = { version = "1.0", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
reqwest = { version = "0.11", features = ["json", "multipart", "blocking"] }
futures = "0.3"
futures-util = "0.3"
sha2 = "0.10"
base64 = "0.21.0"
x25519-dalek = { version = "2", features = ["static_secrets"] }
urlencoding = "2"
hkdf = "0.12"
hmac = "0.12"
aes-gcm = "0.10"
regex = "1"
rand = "0.8"
tokio-stream = { version = "0.1", features = ["sync"] }
once_cell = "1"
async-trait = "0.1"
# Tracing subscriber types used directly by `src/server/middleware/otel.rs`
# (custom egress middleware) and `src/discovery/publisher.rs`. The
# observability subscriber itself is composed upstream via
# `observability::init_node_with_web`; do not re-add layer composition here.
tracing-subscriber = { version = "0.3", features = ["env-filter", "registry"] }
# `log` + `tracing-log` are needed by `src/log_filter.rs` to install a
# sled-aware `log::Log` bridge before the upstream subscriber boots —
# Sled emits via `log::*`, and tracing-log normalizes its target to "log",
# so EnvFilter alone can't suppress sled DEBUG. Both crates are already
# transitive deps; declared here so the direct use is explicit.
log = "0.4"
tracing-log = "0.2"
opentelemetry_sdk = "0.27"
# Approximate nearest neighbor index for the face fingerprint cache.
# Pure-Rust HNSW implementation, suitable for in-memory 512-dim
# cosine similarity search. See src/fingerprints/face_ann_cache.rs.
instant-distance = "0.6"
thiserror = "1.0"
keyring = { version = "3", optional = true }
# Concurrent hash map for AiMetricsStore (per-role atomic counters).
dashmap = "6"
# Lightweight mutex for last_called_at timestamp on RoleMetrics.
parking_lot = "0.12"
libc = "0.2"
ed25519-dalek = { version = "2.0", features = ["rand_core"] }
# OpenAPI generation
utoipa = { version = "4", features = ["actix_extras"] }
hex = "0.4.3"
bip39 = "2"
geohash = "0.13"
[dev-dependencies]
tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "full"] }
reqwest = { version = "0.11", features = ["json", "blocking"] }
assert_cmd = "2"
predicates = "3"
actix-web = "4.3"
wat = "1"
# In-process test fixture for spinning up a real schema service.
# Bumps with the other schema_service_* deps via the cascade bot.
# Never pulled into non-dev builds.
schema_service_server_http = { git = "https://github.com/EdgeVector/schema_service.git", rev = "9699e751d93e16d069d2bacc4f2f086fd832030a" }
# Dev-only: assemble a tracing subscriber + OpenTelemetry layer in the
# otel middleware test so set_parent has somewhere to land.
opentelemetry_sdk = "0.27"
tracing-subscriber = "0.3"
# test-utils exposes MockEmbeddingModel for test fixtures that call
# SchemaServiceState::new() directly. Re-declared here only to opt in
# to the feature for test builds — Cargo unifies with the [dependencies]
# entry, same git source.
schema_service_core = { git = "https://github.com/EdgeVector/schema_service.git", rev = "9699e751d93e16d069d2bacc4f2f086fd832030a", features = ["test-utils"] }
# Mock HTTP server for the Phase 2 D1 headline trace-propagation test
# (tests/observability_e2e_trace_propagation.rs). Stands in for the
# real schema service so the test can capture the egress traceparent
# header without spawning a second observable in the same process.
wiremock = "0.6"
# Phase 4 / T10: Sentry ERROR-layer end-to-end test. The `test` feature
# enables `sentry::test::with_captured_events` so the test can capture
# events into an in-memory transport without touching the network.
# Version matches observability's Cargo.toml (sentry 0.47) so Cargo
# unifies them. See `tests/observability_sentry_error_e2e.rs`.
sentry = { version = "0.47", default-features = false, features = ["backtrace", "contexts", "release-health", "transport", "test"] }
# Validates serialized response bodies against the OpenAPI/JSON Schema in
# tests/openapi_roundtrip_test.rs — catches `serde` ↔ `utoipa` divergence
# (e.g. `#[serde(rename)]` / `#[serde(flatten)]` / custom serializers
# that the drift-check on openapi.ts can't detect because openapi.ts is
# regenerated from the spec, not from actual JSON).
jsonschema = { version = "0.30", default-features = false }
[lib]
name = "fold_db_node"
path = "src/lib.rs"
[[bin]]
name = "folddb_server"
path = "src/bin/folddb_server.rs"
[[bin]]
name = "openapi_dump"
path = "src/bin/openapi_dump.rs"
[[bin]]
name = "folddb"
path = "src/bin/folddb/main.rs"
[[bin]]
name = "folddb_mcp"
path = "src/bin/folddb_mcp/main.rs"
[package.metadata.cargo-machete]
# kamadak-exif exposes itself under the lib name `exif` (used in
# src/ingestion/file_handling/json_processor.rs); cargo-machete matches by
# package name and misses the rename.
ignored = ["kamadak-exif"]