tawasuyu
⎇ badf4257ecd5a4ef06f6f477279834893a24f87b crates/ente-brain/src/lib.rs Rust · 38 siq'ikuna · 1.7 KB Ñawpa willay Pi imata llamkarqan ch'uya

audit-verify, autopromote, histogramas y hot-reload caps badf4257e · Sergio ·

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 autopromote;
21pub mod crystallize;
22pub mod dispatch;
23pub mod engine;
24pub mod introspect;
25pub mod kcl_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 kcl_loader::{kcl_available, 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};