Skip to main content

ai_agents_observability/
lib.rs

1pub mod aggregator;
2pub mod config;
3pub mod context;
4pub mod cost;
5pub mod event;
6pub mod export;
7pub mod hooks;
8pub mod manager;
9pub mod redaction;
10pub mod report;
11pub mod span;
12pub mod wrappers;
13
14pub use aggregator::{AggregatedMetrics, CostStats, LatencyStats, MetricsAggregator, TokenStats};
15pub use config::{
16    AggregationConfig, AggregationDimension, BufferConfig, CostConfig, ExportConfig, ExportFormat,
17    LanguageConfig, LatencyConfig, ModelPricing, ObservabilityConfig, PrivacyConfig,
18    RawEventsFormat, TokenConfig, UnknownPricePolicy,
19};
20pub use context::{
21    SpanContext, current_observation_context, with_observation_context, with_observation_purpose,
22    with_updated_observation_context,
23};
24pub use cost::CostEstimator;
25pub use event::{
26    CostEstimate, CostSource, EventStatus, EventType, ObservationError, ObservationEvent,
27    ObservationPurpose, ObservationTokenUsage, TokenUsageSource,
28};
29pub use export::ExportResult;
30pub use hooks::ObservabilityHooks;
31pub use manager::{ObservabilityManager, new_session_id, resolve_language_from_context};
32pub use redaction::{Redactor, stable_hash, truncate_chars};
33pub use report::{CostBreakdown, ObservabilityReport, ReportSummary, TokenBreakdown};
34pub use span::SpanGuard;
35pub use wrappers::{ObservedLLMProvider, ObservedTool};
36
37/// Crate-local result type for observability operations.
38pub type Result<T> = std::result::Result<T, ObservabilityError>;
39
40/// Errors returned by observability config, export, and serialization helpers.
41#[derive(Debug, thiserror::Error)]
42pub enum ObservabilityError {
43    #[error("observability config error: {0}")]
44    Config(String),
45    #[error("observability IO error: {0}")]
46    Io(std::io::Error),
47    #[error("observability serialization error: {0}")]
48    Serialization(serde_json::Error),
49}
50
51impl From<serde_json::Error> for ObservabilityError {
52    fn from(error: serde_json::Error) -> Self {
53        Self::Serialization(error)
54    }
55}
56
57impl From<ObservabilityError> for ai_agents_core::AgentError {
58    fn from(error: ObservabilityError) -> Self {
59        ai_agents_core::AgentError::Other(error.to_string())
60    }
61}