⎇ 94ea0eaa539cf93d58167ea1687b5a242b196573
crates/runtime/arje-brain/src/lib.rs
Historia
Quién tocó qué
crudo
refactor(loader): A3 — unificar loader, eliminar duplicación
1//! arje-brain — capa de integración del brain.
2//!
3//! El brain se divide en tres sub-crates con un DAG de dependencias limpio:
4//! - `arje-brain-rules` — motor determinista (rules + engine + dispatch)
5//! - `arje-brain-cognitive` — estadística (observer + crystallize)
6//! - `arje-brain-audit` — accountability (audit chain → CAS)
7//!
8//! Este crate es la capa que los wirea: `introspect` (socket API),
9//! `autopromote` (loop de promoción de cristales), `metrics` (HTTP) y
10//! `loader` (carga de cards/rules). Re-exporta la API de los tres
11//! sub-crates para compatibilidad de los consumidores históricos.
12
13pub mod introspect;
14pub mod autopromote;
15pub mod metrics;
16
17// --- Re-export de los módulos de las 3 sub-crates ---
18pub use arje_brain_rules::{dispatch, engine, rules};
19pub use arje_brain_cognitive::{crystallize, observer};
20pub use arje_brain_audit::audit;
21
22// --- Re-exports planos (API histórica que consumen arje-zero, chasqui) ---
23pub use rules::{Action, EventKind, EventPattern, LogLevel, Rule, Scope, TimedEvent};
24pub use engine::{EventKindDiscriminant, RuleEngine, SubjectInfo};
25pub use dispatch::{dispatch_actions, ActionSink, NullSink};
26pub use crystallize::{detect_crystals, Crystal, CrystallizationParams};
27pub use observer::Observer;
28pub use audit::AuditLog;
29
30pub use autopromote::{spawn_autopromote_loop, AutopromoteParams};
31pub use introspect::{BrainState, IntrospectRequest, IntrospectResponse, IntrospectServer};
32pub use metrics::serve_metrics;
33
34// --- Loader: card-loading vive en brahman-cards, rule-loading en
35// arje-brain-rules. Re-exportados aquí por compat de consumidores. ---
36pub use arje_brain_rules::{extract_rules_from_json, load_rules_file};
37pub use brahman_cards::{extract_card_from_json, load_card_file};