Files
poimen-memory/crates/mem-cli/Cargo.toml
T
rock 985f65d1f4 feat: implement core architecture modules
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.
2026-08-30 20:40:43 -07:00

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"