# codemem-engine
Domain logic engine for the Codemem memory system.
## Overview
`CodememEngine` is the central struct that holds all backends (storage, embeddings, graph) and orchestrates all domain operations. It handles code indexing, memory persistence, recall, enrichment, consolidation, and session management.
## Modules
| `index/` | ast-grep code indexing for 14 languages, YAML-driven rules, manifest parsing, reference resolution |
| `hooks/` | Lifecycle hook handlers for tool types (Read/Glob/Grep/Edit/Write/Bash/WebFetch/WebSearch/Agent/ListDir), trigger-based auto-insights |
| `watch/` | Real-time file watcher with <50ms debounce and .gitignore support |
| `enrichment/` | 14 enrichment analyses (git history, security, performance, complexity, etc.) |
| `consolidation/` | 5 neuroscience-inspired cycles: decay, creative, cluster, forget, summarize |
| `persistence/` | Index persistence pipeline with batched graph/embedding inserts and compaction |
| `analysis.rs` | Decision chains, session checkpoints, impact analysis |
| `search.rs` | Semantic, text, and hybrid code search |
| `recall.rs` | Unified recall with temporal edge filtering and hybrid scoring |
| `memory_ops.rs` | Memory CRUD with transaction wrapping and session_id auto-population |
| `bm25.rs` | Okapi BM25 scoring with code-aware tokenizer and serialization |
| `scoring.rs` | 8-component hybrid scoring helpers |
| `patterns.rs` | Cross-session pattern detection |
| `compress.rs` | Optional LLM observation compression |
| `metrics.rs` | Operational metrics (latency percentiles, call counters) |
## Supported Languages
Rust, TypeScript/JavaScript/JSX/TSX, Python, Go, C/C++, Java, Ruby, C#, Kotlin, Swift, PHP, Scala, HCL/Terraform
## Data Flow
```
Source Files → Index (ast-grep) → Persist (nodes, edges, embeddings) → Compact
↓
Hooks (tool observations) → Extract → Embed → Store ←── Enrich (14 analyses)
↓
Recall (hybrid scoring) → Results
```