sentinel_common/
lib.rs

1//! Common utilities and shared components for Sentinel proxy
2//!
3//! This crate provides shared functionality used across all Sentinel components,
4//! including observability (metrics, logging, tracing), error types, and common utilities.
5//!
6//! # Module Organization
7//!
8//! - [`ids`]: Type-safe identifier newtypes (CorrelationId, RequestId, etc.)
9//! - [`types`]: Common type definitions (ByteSize, Priority, etc.)
10//! - [`errors`]: Error types and result aliases
11//! - [`limits`]: Resource limits and rate limiting
12//! - [`observability`]: Metrics, logging, and tracing (runtime only)
13//! - [`circuit_breaker`]: Circuit breaker state machine (runtime only)
14//! - [`registry`]: Generic type-safe registry abstraction (runtime only)
15
16pub mod budget;
17#[cfg(feature = "runtime")]
18pub mod circuit_breaker;
19pub mod errors;
20pub mod ids;
21pub mod inference;
22pub mod limits;
23#[cfg(feature = "runtime")]
24pub mod observability;
25#[cfg(feature = "runtime")]
26pub mod registry;
27#[cfg(feature = "runtime")]
28pub mod scoped_metrics;
29#[cfg(feature = "runtime")]
30pub mod scoped_registry;
31pub mod types;
32
33// Re-export commonly used items at the crate root (runtime only)
34#[cfg(feature = "runtime")]
35pub use observability::{
36    init_tracing, AuditLogEntry, ComponentHealth, ComponentHealthTracker, HealthStatus,
37    RequestMetrics,
38};
39
40// Backwards compatibility alias (deprecated, use ComponentHealthTracker)
41#[cfg(feature = "runtime")]
42#[deprecated(since = "0.2.0", note = "Use ComponentHealthTracker instead")]
43pub type HealthChecker = ComponentHealthTracker;
44
45// Re-export error types
46pub use errors::{SentinelError, SentinelResult};
47
48// Re-export limit types
49pub use limits::{Limits, RateLimiter};
50
51// Re-export identifier types
52pub use ids::{AgentId, CorrelationId, QualifiedId, RequestId, RouteId, Scope, UpstreamId};
53
54// Re-export common types
55pub use types::{CircuitBreakerConfig, TraceIdFormat};
56
57// Re-export inference types
58pub use inference::{
59    ColdModelAction, InferenceProbeConfig, InferenceReadinessConfig, ModelStatusConfig,
60    QueueDepthConfig, WarmthDetectionConfig,
61};
62
63// Re-export circuit breaker (runtime only)
64#[cfg(feature = "runtime")]
65pub use circuit_breaker::CircuitBreaker;
66
67// Re-export registries (runtime only)
68#[cfg(feature = "runtime")]
69pub use registry::Registry;
70#[cfg(feature = "runtime")]
71pub use scoped_registry::ScopedRegistry;
72
73// Re-export scoped metrics (runtime only)
74#[cfg(feature = "runtime")]
75pub use scoped_metrics::{ScopedMetrics, ScopeLabels};
76
77// Re-export budget types
78pub use budget::{
79    BudgetAlert, BudgetCheckResult, BudgetPeriod, CostAttributionConfig, CostResult,
80    ModelPricing, TenantBudgetStatus, TokenBudgetConfig,
81};