ai-agents-observability 1.0.0-rc.15

Observability and tracing for AI Agents framework
Documentation
pub mod aggregator;
pub mod config;
pub mod context;
pub mod cost;
pub mod event;
pub mod export;
pub mod hooks;
pub mod manager;
pub mod redaction;
pub mod report;
pub mod span;
pub mod wrappers;

pub use aggregator::{AggregatedMetrics, CostStats, LatencyStats, MetricsAggregator, TokenStats};
pub use config::{
    AggregationConfig, AggregationDimension, BufferConfig, CostConfig, ExportConfig, ExportFormat,
    LanguageConfig, LatencyConfig, ModelPricing, ObservabilityConfig, PrivacyConfig,
    RawEventsFormat, TokenConfig, UnknownPricePolicy,
};
pub use context::{
    SpanContext, current_observation_context, with_observation_context, with_observation_purpose,
    with_updated_observation_context,
};
pub use cost::CostEstimator;
pub use event::{
    CostEstimate, CostSource, EventStatus, EventType, ObservationError, ObservationEvent,
    ObservationPurpose, ObservationTokenUsage, TokenUsageSource,
};
pub use export::ExportResult;
pub use hooks::ObservabilityHooks;
pub use manager::{ObservabilityManager, new_session_id, resolve_language_from_context};
pub use redaction::{Redactor, stable_hash, truncate_chars};
pub use report::{CostBreakdown, ObservabilityReport, ReportSummary, TokenBreakdown};
pub use span::SpanGuard;
pub use wrappers::{ObservedLLMProvider, ObservedTool};

/// Crate-local result type for observability operations.
pub type Result<T> = std::result::Result<T, ObservabilityError>;

/// Errors returned by observability config, export, and serialization helpers.
#[derive(Debug, thiserror::Error)]
pub enum ObservabilityError {
    #[error("observability config error: {0}")]
    Config(String),
    #[error("observability IO error: {0}")]
    Io(std::io::Error),
    #[error("observability serialization error: {0}")]
    Serialization(serde_json::Error),
}

impl From<serde_json::Error> for ObservabilityError {
    fn from(error: serde_json::Error) -> Self {
        Self::Serialization(error)
    }
}

impl From<ObservabilityError> for ai_agents_core::AgentError {
    fn from(error: ObservabilityError) -> Self {
        ai_agents_core::AgentError::Other(error.to_string())
    }
}