use maple_runtime::{config::RuntimeConfig, MapleRuntime, ResonatorSpec};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
println!("🍁 MAPLE Runtime - Basic Resonator Example\n");
println!("📦 Bootstrapping MAPLE Runtime...");
let config = RuntimeConfig::default();
let runtime = MapleRuntime::bootstrap(config).await?;
println!("✅ Runtime bootstrapped successfully\n");
println!("🎯 Registering Resonator...");
let spec = ResonatorSpec::default();
let resonator = runtime.register_resonator(spec).await?;
println!("✅ Resonator registered: {}\n", resonator.id);
println!("📡 Signaling presence...");
tokio::time::sleep(tokio::time::Duration::from_millis(1100)).await;
let presence = maple_runtime::PresenceState::new();
resonator.signal_presence(presence).await?;
println!("✅ Presence signaled\n");
if let Some(state) = resonator.get_presence() {
println!("📊 Current Presence State:");
println!(" • Discoverability: {:.2}", state.discoverability);
println!(" • Responsiveness: {:.2}", state.responsiveness);
println!(" • Stability: {:.2}", state.stability);
println!(" • Coupling Readiness: {:.2}", state.coupling_readiness);
println!(" • Silent Mode: {}\n", state.silent_mode);
}
if let Some(budget) = resonator.attention_status().await {
println!("⚡ Attention Budget:");
println!(" • Total Capacity: {}", budget.total_capacity);
println!(" • Currently Used: {}", budget.used());
println!(" • Available: {}", budget.available());
println!(" • Utilization: {:.1}%\n", budget.utilization() * 100.0);
}
println!("🛑 Shutting down runtime...");
runtime.shutdown().await?;
println!("✅ Shutdown complete\n");
println!("🎉 Example completed successfully!");
Ok(())
}