1pub mod ab_testing;
7pub mod advanced_analytics;
8pub mod advanced_orchestration;
9pub mod alerts;
10pub mod analytics;
11pub mod api;
12pub mod auto_remediation;
13pub mod chaos_mesh;
14pub mod collaboration;
15pub mod config;
16pub mod dashboard;
17pub mod distributed_coordinator;
18pub mod failure_designer;
19pub mod fault;
20pub mod gitops;
21pub mod incident_replay;
22pub mod integrations;
23pub mod latency;
24pub mod latency_metrics;
25pub mod metrics;
26pub mod middleware;
27pub mod ml_anomaly_detector;
28pub mod ml_assertion_generator;
29pub mod ml_parameter_optimizer;
30pub mod multi_armed_bandit;
31pub mod multi_cluster;
32pub mod multi_tenancy;
33pub mod observability_api;
34pub mod plugins;
35pub mod predictive_remediation;
36pub mod protocols;
37pub mod rate_limit;
38pub mod recommendations;
39pub mod reinforcement_learning;
40pub mod resilience;
41pub mod resilience_api;
42pub mod scenario_orchestrator;
43pub mod scenario_recorder;
44pub mod scenario_replay;
45pub mod scenario_scheduler;
46pub mod scenarios;
47pub mod template_marketplace;
48pub mod trace_collector;
49pub mod traffic_shaping;
50pub mod version_control;
51
52pub use ab_testing::{
53 ABTest, ABTestConfig, ABTestStats, ABTestStatus, ABTestingEngine, MetricComparison, MetricType,
54 SingleMetricComparison, SuccessCriteria, TestConclusion, TestVariant, VariantMetrics,
55 VariantResults,
56};
57pub use advanced_analytics::{
58 AdvancedAnalyticsEngine, Anomaly, AnomalyType as AnalyticsAnomalyType, CorrelationAnalysis,
59 DataPoint, HealthFactor, HealthScore, PredictiveInsight, TrendAnalysis, TrendDirection,
60};
61pub use advanced_orchestration::{
62 AdvancedOrchestratedScenario, AdvancedScenarioStep, Assertion, Condition, ConditionalStep,
63 ExecutionContext, ExecutionReport, Hook, HookAction, HookType, OrchestrationLibrary,
64 RetryConfig, StepResult,
65};
66pub use alerts::{
67 Alert, AlertHandler, AlertManager, AlertRule, AlertRuleType, AlertSeverity, AlertType,
68};
69pub use analytics::{ChaosAnalytics, ChaosImpact, MetricsBucket, TimeBucket};
70pub use api::{create_chaos_api_router, ProfileManager};
71pub use auto_remediation::{
72 ApprovalRequest, EffectivenessMetrics, RemediationAction, RemediationConfig, RemediationEngine,
73 RemediationResult, RemediationStats, RemediationStatus, RiskAssessment as AutoRiskAssessment,
74 RiskLevel, RollbackData, SafetyCheck, SystemMetrics,
75};
76pub use chaos_mesh::{
77 ChaosMeshClient, ChaosMeshExperiment, ExperimentSpec, ExperimentStatus, ExperimentType,
78 NetworkChaosAction, NetworkDelay, NetworkLoss, PodChaosAction, PodSelector, StressConfig,
79};
80pub use collaboration::{
81 ChangeType, CollaborationChange, CollaborationManager, CollaborationMessage,
82 CollaborationSession, CollaborationUser, CursorPosition,
83};
84pub use config::{
85 BulkheadConfig, ChaosConfig, CircuitBreakerConfig, CorruptionType, ErrorPattern,
86 FaultInjectionConfig, LatencyConfig, NetworkProfile, RateLimitConfig, TrafficShapingConfig,
87};
88pub use dashboard::{DashboardManager, DashboardQuery, DashboardStats, DashboardUpdate};
89pub use distributed_coordinator::{
90 CoordinationMode, DistributedCoordinator, DistributedTask, ExecutionMetrics, LeaderState, Node,
91 NodeExecutionState, NodeStatus, TaskStatus,
92};
93pub use failure_designer::{
94 ConditionOperator, ConditionType, FailureCondition, FailureDesignRule, FailureDesigner,
95 FailureTarget, FailureType,
96};
97pub use fault::{FaultInjector, FaultType};
98pub use gitops::{GitOpsAuth, GitOpsConfig, GitOpsManager, SyncState, SyncStatus};
99pub use incident_replay::{
100 IncidentEvent, IncidentEventType, IncidentFormatAdapter, IncidentReplayGenerator,
101 IncidentTimeline,
102};
103pub use integrations::{
104 GrafanaConfig, GrafanaIntegration, IntegrationConfig, IntegrationManager, JiraConfig,
105 JiraIntegration, Notification, NotificationResults, NotificationSeverity, PagerDutyConfig,
106 PagerDutyIntegration, SlackConfig, SlackNotifier, TeamsConfig, TeamsNotifier,
107};
108pub use latency::LatencyInjector;
109pub use latency_metrics::{LatencyMetricsTracker, LatencySample, LatencyStats};
110pub use metrics::{registry as metrics_registry, ChaosMetrics, CHAOS_METRICS};
111pub use middleware::{chaos_middleware, ChaosMiddleware};
112pub use ml_anomaly_detector::{
113 Anomaly as MLAnomaly, AnomalyDetector, AnomalyDetectorConfig, AnomalySeverity,
114 AnomalyType as MLAnomalyType, MetricBaseline, TimeSeriesPoint,
115};
116pub use ml_assertion_generator::{
117 AssertionGenerator, AssertionGeneratorConfig, AssertionOperator, AssertionType,
118 ExecutionDataPoint, GeneratedAssertion, MetricStats,
119};
120pub use ml_parameter_optimizer::{
121 ExpectedImpact, OptimizationObjective, OptimizationRecommendation, OptimizerConfig,
122 OrchestrationRun, ParameterBounds, ParameterOptimizer, RunMetrics,
123};
124pub use multi_armed_bandit::{
125 Arm, ArmReport, BanditReport, BanditStrategy, MultiArmedBandit, ThompsonSampling,
126 TrafficAllocator, UCB1,
127};
128pub use multi_cluster::{
129 ClusterTarget, ExecutionStatus, MultiClusterOrchestration, MultiClusterOrchestrator,
130 MultiClusterStatus, SyncMode,
131};
132pub use multi_tenancy::{
133 MultiTenancyError, ResourceQuota, ResourceUsage, Tenant, TenantManager, TenantPermissions,
134 TenantPlan,
135};
136pub use observability_api::{create_observability_router, ObservabilityState};
137pub use plugins::{
138 ChaosPlugin, CustomFaultPlugin, MetricsPlugin, PluginCapability, PluginConfig, PluginContext,
139 PluginError, PluginHook, PluginMetadata, PluginRegistry, PluginResult,
140};
141pub use predictive_remediation::{
142 AnomalyDetector as PredictiveAnomalyDetector, DataPoint as PredictiveDataPoint,
143 FailurePrediction, MetricTrend, MetricType as PredictiveMetricType,
144 PredictiveRemediationEngine, TimeSeries, TrendAnalyzer,
145 TrendDirection as PredictiveTrendDirection, TrendReport,
146};
147pub use protocols::{graphql::GraphQLChaos, grpc::GrpcChaos, websocket::WebSocketChaos};
148pub use rate_limit::RateLimiter;
149pub use recommendations::{
150 Confidence, EngineConfig, Recommendation, RecommendationCategory, RecommendationEngine,
151 RecommendationSeverity,
152};
153pub use reinforcement_learning::{
154 AdaptiveRiskAssessor, QLearningConfig, RLAgent, RemediationAction as RLRemediationAction,
155 RiskAssessment, SystemState,
156};
157pub use resilience::{
158 Bulkhead, BulkheadError, BulkheadGuard, BulkheadManager, BulkheadMetrics, BulkheadStats,
159 CircuitBreaker, CircuitBreakerManager, CircuitBreakerMetrics, CircuitState, CircuitStats,
160 DynamicThresholdAdjuster, FallbackHandler, HealthCheckIntegration, JsonFallbackHandler,
161 RetryConfig as ResilienceRetryConfig, RetryPolicy,
162};
163pub use resilience_api::{
164 create_resilience_router, BulkheadStateResponse, CircuitBreakerStateResponse,
165 ResilienceApiState,
166};
167pub use scenario_orchestrator::{OrchestratedScenario, ScenarioOrchestrator, ScenarioStep};
168pub use scenario_recorder::{ChaosEvent, ChaosEventType, RecordedScenario, ScenarioRecorder};
169pub use scenario_replay::{ReplayOptions, ReplaySpeed, ScenarioReplayEngine};
170pub use scenario_scheduler::{ScenarioScheduler, ScheduleType, ScheduledScenario};
171pub use scenarios::{ChaosScenario, PredefinedScenarios, ScenarioEngine};
172pub use template_marketplace::{
173 CompatibilityInfo, OrchestrationTemplate, TemplateCategory, TemplateMarketplace,
174 TemplateReview, TemplateSearchFilters, TemplateSortBy, TemplateStats,
175};
176pub use traffic_shaping::TrafficShaper;
177pub use version_control::{
178 Branch, Commit, Diff, DiffChange, DiffChangeType, DiffStats, VersionControlRepository,
179};
180
181use thiserror::Error;
182
183#[derive(Error, Debug)]
185pub enum ChaosError {
186 #[error("Rate limit exceeded")]
187 RateLimitExceeded,
188
189 #[error("Connection throttled")]
190 ConnectionThrottled,
191
192 #[error("Injected fault: {0}")]
193 InjectedFault(String),
194
195 #[error("Timeout after {0}ms")]
196 Timeout(u64),
197
198 #[error("Configuration error: {0}")]
199 Config(String),
200
201 #[error("Scenario error: {0}")]
202 Scenario(String),
203
204 #[error("Circuit breaker open")]
205 CircuitBreakerOpen,
206
207 #[error("Bulkhead rejected: {0}")]
208 BulkheadRejected(String),
209}
210
211pub type Result<T> = std::result::Result<T, ChaosError>;