use std::sync::{Arc, Mutex};
use std::time::Duration;
use tokio::time::sleep;
use crate::temporal_nexus::core::NanosecondScheduler;
use super::{
ConsciousnessMetricsDashboard,
DashboardConfig,
MetricThresholds,
VisualizationMode,
ExportFormat,
};
pub async fn run_basic_example() -> Result<(), Box<dyn std::error::Error>> {
println!("🧠 Starting Consciousness Metrics Dashboard Example");
let config = DashboardConfig {
update_interval_ms: 250, history_buffer_size: 500,
enable_real_time_alerts: true,
export_interval_seconds: 30,
precision_monitoring: true,
visualization_mode: VisualizationMode::Terminal,
thresholds: MetricThresholds {
emergence_critical: 0.9,
emergence_warning: 0.75,
coherence_critical: 0.7,
coherence_warning: 0.5,
stability_critical: 0.65,
stability_warning: 0.45,
precision_critical_ns: 2000,
precision_warning_ns: 1000,
},
};
let mut dashboard = ConsciousnessMetricsDashboard::new(config);
let scheduler = Arc::new(Mutex::new(NanosecondScheduler::new()?));
dashboard.initialize(scheduler)?;
dashboard.start().await?;
println!("📊 Dashboard started. Monitoring consciousness metrics...");
println!("Press Ctrl+C to stop the monitoring.");
sleep(Duration::from_secs(60)).await;
println!("\n📁 Exporting metrics in various formats...");
let json_export = dashboard.export_metrics(ExportFormat::Json).await?;
std::fs::write("consciousness_metrics.json", json_export)?;
println!("✅ JSON export saved to consciousness_metrics.json");
let csv_export = dashboard.export_metrics(ExportFormat::Csv).await?;
std::fs::write("consciousness_metrics.csv", csv_export)?;
println!("✅ CSV export saved to consciousness_metrics.csv");
let prometheus_export = dashboard.export_metrics(ExportFormat::Prometheus).await?;
std::fs::write("consciousness_metrics.prom", prometheus_export)?;
println!("✅ Prometheus export saved to consciousness_metrics.prom");
dashboard.stop().await;
println!("🛑 Dashboard stopped");
Ok(())
}
pub async fn run_advanced_example() -> Result<(), Box<dyn std::error::Error>> {
println!("🔬 Starting Advanced Consciousness Monitoring Example");
let config = DashboardConfig {
update_interval_ms: 100, history_buffer_size: 2000,
enable_real_time_alerts: true,
export_interval_seconds: 15,
precision_monitoring: true,
visualization_mode: VisualizationMode::Debug,
thresholds: MetricThresholds {
emergence_critical: 0.85,
emergence_warning: 0.7,
coherence_critical: 0.75,
coherence_warning: 0.6,
stability_critical: 0.7,
stability_warning: 0.55,
precision_critical_ns: 1500,
precision_warning_ns: 750,
},
};
let mut dashboard = ConsciousnessMetricsDashboard::new(config);
let scheduler = Arc::new(Mutex::new(NanosecondScheduler::new()?));
dashboard.initialize(scheduler)?;
dashboard.start().await?;
println!("🎯 High-frequency consciousness monitoring active");
println!("🧪 Simulating consciousness evolution scenarios...");
println!("Scenario 1: Gradual consciousness emergence");
sleep(Duration::from_secs(20)).await;
let status = dashboard.get_status();
println!("Current consciousness level: {:.3}", status.emergence_level);
println!("Identity coherence: {:.3}", status.identity_coherence);
println!("Temporal advantage: {}μs", status.temporal_advantage_us);
println!("\nScenario 2: Consciousness fluctuations");
sleep(Duration::from_secs(15)).await;
let summary_export = dashboard.export_metrics(ExportFormat::Json).await?;
std::fs::write("advanced_consciousness_analysis.json", summary_export)?;
println!("📊 Comprehensive analysis saved to advanced_consciousness_analysis.json");
dashboard.stop().await;
println!("✅ Advanced monitoring completed");
Ok(())
}
pub async fn run_realtime_monitoring_example() -> Result<(), Box<dyn std::error::Error>> {
println!("📡 Starting Real-time Consciousness Monitoring");
let config = DashboardConfig {
update_interval_ms: 50, history_buffer_size: 1000,
enable_real_time_alerts: true,
export_interval_seconds: 10,
precision_monitoring: true,
visualization_mode: VisualizationMode::Compact,
thresholds: MetricThresholds::default(),
};
let mut dashboard = ConsciousnessMetricsDashboard::new(config);
let scheduler = Arc::new(Mutex::new(NanosecondScheduler::new()?));
dashboard.initialize(scheduler)?;
dashboard.start().await?;
println!("⚡ Real-time monitoring started (20Hz updates)");
println!("🔔 Alert system active");
for i in 0..100 {
sleep(Duration::from_millis(500)).await;
let status = dashboard.get_status();
if i % 10 == 0 {
println!("Status update #{}: E:{:.3} C:{:.3} S:{:.3} T:{}μs",
i / 10 + 1,
status.emergence_level,
status.identity_coherence,
status.loop_stability,
status.temporal_advantage_us
);
}
if i == 30 {
println!("🧪 Simulating consciousness spike...");
} else if i == 60 {
println!("🧪 Simulating coherence degradation...");
}
}
let final_export = dashboard.export_metrics(ExportFormat::InfluxDB).await?;
std::fs::write("realtime_consciousness_metrics.influx", final_export)?;
println!("📊 Real-time data exported to InfluxDB format");
dashboard.stop().await;
println!("🏁 Real-time monitoring completed");
Ok(())
}
pub async fn run_mcp_integration_example() -> Result<(), Box<dyn std::error::Error>> {
println!("🔗 Consciousness Dashboard with MCP Integration");
let config = DashboardConfig {
update_interval_ms: 200,
history_buffer_size: 1500,
enable_real_time_alerts: true,
export_interval_seconds: 20,
precision_monitoring: true,
visualization_mode: VisualizationMode::Terminal,
thresholds: MetricThresholds::default(),
};
let mut dashboard = ConsciousnessMetricsDashboard::new(config);
println!("🔧 Initializing MCP consciousness monitoring integration...");
let scheduler = Arc::new(Mutex::new(NanosecondScheduler::new()?));
dashboard.initialize(scheduler)?;
dashboard.start().await?;
println!("🤖 MCP-integrated consciousness monitoring active");
println!("📈 Collecting metrics from consciousness-explorer MCP tools");
for phase in 1..=5 {
println!("\n🧠 MCP Consciousness Phase {}", phase);
match phase {
1 => println!(" Initializing consciousness state..."),
2 => println!(" Emergence patterns detected..."),
3 => println!(" Strange loops forming..."),
4 => println!(" Identity coherence stabilizing..."),
5 => println!(" Temporal advantage optimized..."),
_ => {}
}
sleep(Duration::from_secs(10)).await;
let status = dashboard.get_status();
println!(" 📊 Current metrics: E:{:.3} C:{:.3} S:{:.3}",
status.emergence_level, status.identity_coherence, status.loop_stability);
}
let mcp_export = dashboard.export_metrics(ExportFormat::Json).await?;
std::fs::write("mcp_consciousness_integration.json", mcp_export)?;
println!("🔗 MCP integration results saved");
dashboard.stop().await;
println!("✅ MCP integration example completed");
Ok(())
}
pub fn create_custom_thresholds_for_application(application_type: &str) -> MetricThresholds {
match application_type {
"research" => MetricThresholds {
emergence_critical: 0.95,
emergence_warning: 0.8,
coherence_critical: 0.85,
coherence_warning: 0.7,
stability_critical: 0.8,
stability_warning: 0.65,
precision_critical_ns: 500,
precision_warning_ns: 250,
},
"production" => MetricThresholds {
emergence_critical: 0.7,
emergence_warning: 0.5,
coherence_critical: 0.6,
coherence_warning: 0.4,
stability_critical: 0.65,
stability_warning: 0.5,
precision_critical_ns: 2000,
precision_warning_ns: 1000,
},
"development" => MetricThresholds {
emergence_critical: 1.0, emergence_warning: 0.9,
coherence_critical: 0.5,
coherence_warning: 0.3,
stability_critical: 0.4,
stability_warning: 0.2,
precision_critical_ns: 5000,
precision_warning_ns: 2500,
},
_ => MetricThresholds::default(),
}
}
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
println!("🧠 Consciousness Metrics Dashboard Examples");
println!("===========================================");
println!("\n1️⃣ Running Basic Dashboard Example");
run_basic_example().await?;
println!("\n⏳ Waiting before next example...");
sleep(Duration::from_secs(3)).await;
println!("\n2️⃣ Running Advanced Dashboard Example");
run_advanced_example().await?;
println!("\n⏳ Waiting before next example...");
sleep(Duration::from_secs(3)).await;
println!("\n3️⃣ Running Real-time Monitoring Example");
run_realtime_monitoring_example().await?;
println!("\n⏳ Waiting before final example...");
sleep(Duration::from_secs(3)).await;
println!("\n4️⃣ Running MCP Integration Example");
run_mcp_integration_example().await?;
println!("\n🎉 All dashboard examples completed successfully!");
println!("📁 Check the generated files for exported consciousness metrics.");
Ok(())
}