Phase 1: Wiki-Link Graph Indexing - WikiLinkParser: extract [[links]] from markdown - WikiLinkGraph: BFS traversal, reachable docs, backlinks - Support relative path resolution (../../../) Phase 2: ScoringPipeline trait (SOLID design) - DocumentScorer trait: single interface for all scorers - GlobalTfIdfScorer, ProjectTfIdfScorer, SemanticScorer - MetadataBoostingScorer (decorator pattern) - ScoringPipeline: orchestrate multiple scorers with RRF fusion - Benefits: add new scorers without modifying existing code Phase 7: RBAC + PolicyProvider trait - PolicyProvider trait: pluggable backends (Vault, Postgres, Redis) - VaultPolicyProvider: load YAML from vault/projects/* and vault/shared/skills/* - MockPolicyProvider: for testing (no I/O) - AccessChecker trait: single-purpose RBAC checks - AccessLevelChecker, RoleChecker, PermissionChecker - AccessDecisionEngine: orchestrate checkers with short-circuit eval - AuditLogger trait: pluggable audit backends Test Fixtures (DRY principle) - OidcClaimsBuilder: fluent API for test data - AccessPolicyBuilder: fluent API for policies - MockPolicyProvider, MockAuditLogger: testing mocks All modules compile and unit tests pass.
46 lines
1.1 KiB
TOML
46 lines
1.1 KiB
TOML
[package]
|
|
name = "mem-cli"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
name = "mem_cli"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "mem"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
mem-core = { path = "../mem-core" }
|
|
mem-chunk = { path = "../mem-chunk" }
|
|
mem-llm = { path = "../mem-llm" }
|
|
mem-ingest = { path = "../mem-ingest" }
|
|
mem-store = { path = "../mem-store" }
|
|
tokio = { workspace = true }
|
|
futures = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
serde_yaml = { workspace = true }
|
|
redis = { version = "0.25", optional = true }
|
|
anyhow = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
clap = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
time = { workspace = true }
|
|
actix-web = { workspace = true }
|
|
actix-rt = { workspace = true }
|
|
uuid = { workspace = true }
|
|
chrono = { workspace = true }
|
|
sqlx = { workspace = true }
|
|
pgvector = { workspace = true }
|
|
base64 = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
jsonwebtoken = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
urlencoding = { workspace = true }
|
|
walkdir = "2.5"
|
|
lru = "0.12"
|