phi_telemetry/lib.rs
1//! phi-telemetry — Observability layer for phi-agent.
2//!
3//! Collects structured per-turn and per-session metrics via hooks registered
4//! on the agent runtime. Metrics are persisted as `session_metrics.json`
5//! alongside existing session data.
6//!
7//! ## Architecture
8//!
9//! ```text
10//! agent-base (TurnContext + on_turn_end hook)
11//! ↑
12//! phi-telemetry (collector + storage) ← this crate
13//! ↑
14//! phi-agent / phi-bard (consumers)
15//! ```
16//!
17//! The observer runs in an independent tokio task, communicating with the
18//! agent runtime through an mpsc channel. A panic in the observer task never
19//! affects the agent.
20//!
21//! ## Quick start
22//!
23//! ```ignore
24//! use phi_telemetry::{init_telemetry, save_metrics};
25//!
26//! let handle = init_telemetry(&runtime, session_id, node_id, model);
27//! // ... agent runs, metrics accumulate automatically ...
28//! handle.shutdown();
29//! let session = handle.session.blocking_read();
30//! save_metrics(&session, &session_dir)?;
31//! ```
32
33pub mod collector;
34pub mod storage;
35pub mod types;
36
37pub use collector::{ObserverHandle, init_telemetry};
38pub use storage::{list_all_metrics, load_metrics, save_metrics, try_load_metrics};
39pub use types::{SessionMetrics, SessionOutcome, SessionSummary, TurnMetrics, TurnOutcome};