[workspace]
exclude = [
"fuzz",
"tests/fixtures",
".ci",
"crates/determinism",
]
[package]
name = "eidetic-engine"
version = "0.15.2"
edition = "2024"
license = "MIT"
description = "Durable, local-first, explainable memory for coding agents."
repository = "https://github.com/Dicklesworthstone/eidetic_engine_cli"
homepage = "https://github.com/Dicklesworthstone/eidetic_engine_cli"
documentation = "https://docs.rs/eidetic-engine"
readme = "README.md"
keywords = ["memory", "agents", "cli", "local-first", "search"]
categories = ["command-line-utilities", "database", "development-tools"]
default-run = "ee"
autotests = false
publish = true
include = [
"/src/**",
"/docs/schemas/**",
"/tests/fixtures/swarm_scale/workloads.json",
"/Cargo.toml",
"/Cargo.lock",
"/README.md",
"/LICENSE",
"/CHANGELOG.md",
"!tests/artifacts/*",
"!.beads.snapshot_*",
"!.beads.snapshot_*/*",
"!FINAL_AUDIT_REPORT",
"!FINAL_AUDIT_REPORT.*",
"!.audit_log",
"!.audit_log/*",
"!*.audit_log",
"!.*-report.json",
"!perf-target/*",
"!perf.data",
"!*.profraw",
"!*.json,bak",
"!tmp/*",
"!temp/*",
"!.tmp/*",
"!.temp/*",
]
[lib]
name = "ee"
path = "src/lib.rs"
[[bin]]
name = "ee"
path = "src/main.rs"
[features]
default = ["fts5", "json", "embed-fast", "lexical-bm25", "graph"]
fts5 = ["frankensearch/fts5"]
json = []
embed-fast = ["frankensearch/model2vec", "frankensearch/download"]
lexical-bm25 = ["frankensearch/lexical-tantivy"]
graph = []
differential-networkx = []
mcp = []
serve = []
science-analytics = []
[dependencies]
asupersync = { version = "=0.5.0", default-features = false, features = ["tracing-integration"] }
arc-swap = { version = "=1.9.2" }
base64 = { version = "0.23.1", default-features = false, features = ["std"] }
blake3 = { version = "1.5" }
crossbeam-queue = { version = "0.3.14" }
determinism = { package = "ee-determinism", version = "0.1.0" }
franken-agent-detection = { version = "=0.2.3", default-features = false }
chrono = { version = "0.4.45", default-features = false, features = ["clock", "std"] }
clap = { version = "4.6.1", features = ["derive"] }
clap_complete = { version = "4.6.1" }
fnx-algorithms = { version = "0.3.0" }
fnx-classes = { version = "0.3.0" }
fnx-runtime = { version = "0.3.0", default-features = false, features = ["asupersync-integration"] }
frankensearch = { version = "0.6.0", default-features = false, features = ["hash", "storage", "model2vec", "download", "rerank", "native"] }
fsqlite = { version = "0.4.1", default-features = false, features = ["json"] }
fs4 = { version = "1.1.0", default-features = false, features = ["sync"] }
ed25519-dalek = { version = "=3.0.0", default-features = false, features = ["fast", "zeroize"] }
getrandom = { version = "0.4.2" }
zeroize = { version = "=1.9.0", default-features = false, features = ["alloc"] }
regex-lite = { version = "0.1" }
libc = { version = "0.2" }
ring = { version = "0.17" }
roaring = { version = "0.11.4" }
rustix = { version = "1.1.4", features = ["fs", "net", "process"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0.149", features = ["arbitrary_precision", "preserve_order"] }
serde_yaml = { version = "0.9.34" }
sha2 = { version = "0.11.0" }
signal-hook = { version = "0.4" }
sqlmodel-core = { version = "0.5.0" }
sqlmodel-frankensqlite = { version = "0.5.0" }
tempfile = { version = "3.27.0" }
tiktoken-rs = { version = "0.12.0", default-features = false }
toon = { package = "tru", version = "=0.2.4", default-features = false }
toml_edit = { version = "0.25.15", default-features = false, features = ["parse", "display"] }
tracing = { version = "0.1.44" }
tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] }
unicode-normalization = { version = "0.1" }
uuid = { version = "1.26.1", features = ["v7"] }
zstd = { version = "0.14.0" }
tar = { version = "0.4", default-features = false }
[target.'cfg(windows)'.dependencies]
windows-permissions = { version = "0.2.4" }
[dev-dependencies]
asupersync = { version = "=0.5.0", default-features = false, features = ["tracing-integration", "test-internals"] }
criterion = { version = "0.8.2", features = ["html_reports"] }
insta = { version = "1.48.0", features = ["json"] }
proptest = { version = "1.9.0", default-features = false, features = ["std"] }
pulldown-cmark = { version = "0.13.4", default-features = false, features = ["html"] }
static_assertions = { version = "1.1.0" }
[[bench]]
name = "remember"
harness = false
[[bench]]
name = "search"
harness = false
[[bench]]
name = "why"
harness = false
[[bench]]
name = "why_toon_token_count"
harness = false
[[bench]]
name = "outcome"
harness = false
[[bench]]
name = "context"
harness = false
[[bench]]
name = "tiered_recall"
harness = false
[[bench]]
name = "recall"
harness = false
[[bench]]
name = "primer"
harness = false
[[bench]]
name = "context_stream_bench"
path = "benches/context_stream.rs"
harness = false
[[bench]]
name = "context_with_ppr"
harness = false
[[bench]]
name = "pack_size"
harness = false
[[bench]]
name = "status"
harness = false
[[bench]]
name = "workspace_init"
harness = false
[[bench]]
name = "team_confed"
harness = false
[[bench]]
name = "audit_query"
harness = false
[[bench]]
name = "index_rebuild"
harness = false
[[bench]]
name = "concurrent_writes"
harness = false
[[bench]]
name = "import_cass"
harness = false
[[bench]]
name = "link"
harness = false
[[bench]]
name = "graph_pagerank"
harness = false
[[bench]]
name = "graph_minhash_rank"
harness = false
[[bench]]
name = "graph_ppr"
harness = false
[[bench]]
name = "graph_louvain"
harness = false
[[bench]]
name = "graph_ktruss"
harness = false
[[bench]]
name = "graph_gomory_hu"
harness = false
[[bench]]
name = "roaring_vs_json_cache_key"
harness = false
[[bench]]
name = "graph_hits"
harness = false
[[bench]]
name = "graph_refresh_cooperative"
harness = false
[[bench]]
name = "graph_full_stack"
harness = false
[[bench]]
name = "graph_scale_policy"
harness = false
[[bench]]
name = "agent_profile"
harness = false
[[bench]]
name = "consolidator"
harness = false
[[bench]]
name = "curate_candidates"
harness = false
[[bench]]
name = "ulid_tiebreak"
harness = false
[[bench]]
name = "adaptive_budget"
harness = false
[[bench]]
name = "cass_prefetch"
harness = false
[[bench]]
name = "daemon_protocol"
harness = false
[[bench]]
name = "daemon_dispatch"
harness = false
[[bench]]
name = "daemon_round_trip"
harness = false
[[test]]
name = "integration_a_d"
path = "tests/suites/integration_a_d.rs"
[[test]]
name = "integration_e_f"
path = "tests/suites/integration_e_f.rs"
[[test]]
name = "integration_g_m"
path = "tests/suites/integration_g_m.rs"
[[test]]
name = "integration_n_r"
path = "tests/suites/integration_n_r.rs"
[[test]]
name = "integration_s_z"
path = "tests/suites/integration_s_z.rs"
[[test]]
name = "agent_profile_e2e"
path = "tests/agent_profile_e2e.rs"
[[test]]
name = "cache_hotset_contract"
path = "tests/cache_hotset_contract.rs"
[[test]]
name = "conformance"
path = "tests/conformance.rs"
[[test]]
name = "context_stream"
path = "tests/context_stream.rs"
[[test]]
name = "contracts"
path = "tests/contracts.rs"
[[test]]
name = "cross_platform_determinism"
path = "tests/cross_platform_determinism.rs"
[[test]]
name = "e2e_backup_restore_roundtrip"
path = "tests/e2e_backup_restore_roundtrip.rs"
[[test]]
name = "e2e_core_workflow"
path = "tests/e2e_core_workflow.rs"
[[test]]
name = "e2e_daemon_recovery"
path = "tests/e2e_daemon_recovery.rs"
[[test]]
name = "e2e_graceful_degradation"
path = "tests/e2e_graceful_degradation.rs"
[[test]]
name = "e2e_multi_agent_writers"
path = "tests/e2e_multi_agent_writers.rs"
[[test]]
name = "e2e_serve_localhost"
path = "tests/e2e_serve_localhost.rs"
[[test]]
name = "e2e_windows_smoke"
path = "tests/e2e_windows_smoke.rs"
[[test]]
name = "error_envelope_golden"
path = "tests/error_envelope_golden.rs"
[[test]]
name = "error_recovery_conformance_e2e"
path = "tests/error_recovery_conformance_e2e.rs"
[[test]]
name = "failure_triage"
path = "tests/failure_triage.rs"
[[test]]
name = "harness_hook_install_audit"
path = "tests/harness_hook_install_audit.rs"
[[test]]
name = "json_contract_snapshots"
path = "tests/json_contract_snapshots.rs"
[[test]]
name = "mcp_parity"
path = "tests/mcp_parity.rs"
[[test]]
name = "mesh_responder_broker_loopback"
path = "tests/mesh_responder_broker_loopback.rs"
[[test]]
name = "mesh_transport_session_loopback"
path = "tests/mesh_transport_session_loopback.rs"
[[test]]
name = "model_bundled_embedding_cli_e2e"
path = "tests/model_bundled_embedding_cli_e2e.rs"
[[test]]
name = "networkx_differential"
path = "tests/networkx_differential.rs"
[[test]]
name = "ownership_snapshot"
path = "tests/ownership_snapshot.rs"
[[test]]
name = "pack_quality_contracts"
path = "tests/pack_quality_contracts.rs"
[[test]]
name = "perf_compare_golden"
path = "tests/perf_compare_golden.rs"
[[test]]
name = "proof_verify_core"
path = "tests/proof_verify_core.rs"
[[test]]
name = "renderer_parity_matrix"
path = "tests/renderer_parity_matrix.rs"
[[test]]
name = "search_conformal_e2e"
path = "tests/search_conformal_e2e.rs"
[[test]]
name = "support_bundle_perf_compare"
path = "tests/support_bundle_perf_compare.rs"
[[test]]
name = "test_tracing_support_smoke"
path = "tests/test_tracing_support_smoke.rs"
[[test]]
name = "cass_contracts"
path = "tests/conformance/cass_contracts.rs"
[[test]]
name = "query_v1_matrix"
path = "tests/conformance/query_v1_matrix.rs"
[[test]]
name = "witness_retention_e2e"
path = "tests/contracts/witness_retention_e2e.rs"
[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
needless_range_loop = "allow"
dbg_macro = "warn"
todo = "warn"
unwrap_used = "warn"
expect_used = "warn"
approx_constant = "allow"
bool_assert_comparison = "allow"
cmp_owned = "allow"
collapsible_if = "allow"
collapsible_match = "allow"
collapsible_str_replace = "allow"
derivable_impls = "allow"
doc_lazy_continuation = "allow"
double_must_use = "allow"
explicit_auto_deref = "allow"
field_reassign_with_default = "allow"
if_same_then_else = "allow"
io_other_error = "allow"
iter_cloned_collect = "allow"
large_enum_variant = "allow"
let_and_return = "allow"
manual_contains = "allow"
manual_div_ceil = "allow"
manual_ok_err = "allow"
manual_saturating_arithmetic = "allow"
map_clone = "allow"
needless_as_bytes = "allow"
needless_borrow = "allow"
needless_borrows_for_generic_args = "allow"
needless_lifetimes = "allow"
needless_option_as_deref = "allow"
needless_return = "allow"
obfuscated_if_else = "allow"
ptr_arg = "allow"
question_mark = "allow"
redundant_guards = "allow"
result_large_err = "allow"
single_match = "allow"
too_many_arguments = "allow"
type_complexity = "allow"
unnecessary_lazy_evaluations = "allow"
unnecessary_map_or = "allow"
unusual_byte_groupings = "allow"
useless_conversion = "allow"
vec_init_then_push = "allow"
while_let_loop = "allow"