⎇ d6b8f18b43c9bd9bf7268e48b61392a2d62bb229
crates/ente-brain/src/lib.rs
Historia
Quién tocó qué
crudo
Pausa: 11 crates del fractal Ente #0 con cerebro completo
1//! ente-brain: motor de reglas determinista + observador estadístico.
2//!
3//! Tres capas:
4//! 1. `rules` — tipos de regla (Triplet: Subject + Event + Action)
5//! 2. `engine` — RuleEngine con HashMap<EventKindDiscriminant, Vec<Arc<Rule>>>
6//! para dispatch O(1)
7//! 3. `dispatch` — ejecutor async de Actions (vía tokio)
8//! 4. `observer` — sliding window + marginales + co-ocurrencias
9//! + Shannon entropy + información mutua
10//! 5. `crystallize` — detección de patrones estadísticamente significativos
11//! y generación de snippets KCL
12//! 6. `introspect` — Unix socket bincode API para tools externos
13//!
14//! Diseño de inmutabilidad:
15//! - Rules son `Arc<Rule>` — clonar es zero-copy (refcount bump).
16//! - El motor expone sólo lecturas; mutaciones pasan por `insert/remove`.
17//! - Observer mantiene contadores incrementales — sin recomputación.
18
19pub mod audit;
20pub mod crystallize;
21pub mod dispatch;
22pub mod engine;
23pub mod introspect;
24pub mod kcl_loader;
25pub mod metrics;
26pub mod observer;
27pub mod rules;
28
29pub use crystallize::{detect_crystals, Crystal, CrystallizationParams};
30pub use dispatch::{dispatch_actions, ActionSink, NullSink};
31pub use engine::{EventKindDiscriminant, RuleEngine, SubjectInfo};
32pub use introspect::{IntrospectRequest, IntrospectResponse, IntrospectServer, BrainState};
33pub use kcl_loader::{kcl_available, load_card_file, load_rules_file};
34pub use metrics::serve_metrics;
35pub use observer::{Observer, TimedEvent};
36pub use rules::{Action, EventKind, EventPattern, LogLevel, Rule, Scope};