⎇ 53dbdf0f1deea10d6fc567ea2b43e1e75d6d60cd
crates/core/ente-brain/src/lib.rs
Historia
Quién tocó qué
crudo
chore: monorepo inicial con arje + minga + yahweh absorbidos
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 materialización en `Rule` ejecutables
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 autopromote;
21pub mod crystallize;
22pub mod dispatch;
23pub mod engine;
24pub mod introspect;
25pub mod loader;
26pub mod metrics;
27pub mod observer;
28pub mod rules;
29
30pub use autopromote::{spawn_autopromote_loop, AutopromoteParams};
31pub use crystallize::{detect_crystals, Crystal, CrystallizationParams};
32pub use dispatch::{dispatch_actions, ActionSink, NullSink};
33pub use engine::{EventKindDiscriminant, RuleEngine, SubjectInfo};
34pub use introspect::{IntrospectRequest, IntrospectResponse, IntrospectServer, BrainState};
35pub use loader::{load_card_file, load_rules_file};
36pub use metrics::serve_metrics;
37pub use observer::{Observer, TimedEvent};
38pub use rules::{Action, EventKind, EventPattern, LogLevel, Rule, Scope};