use maple_runtime::{
config::RuntimeConfig, CouplingParams, CouplingPersistence, CouplingScope, MapleRuntime,
ResonatorSpec, SymmetryType,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
println!("🍁 MAPLE Runtime - Resonator Coupling Example\n");
println!("📦 Bootstrapping runtime...");
let config = RuntimeConfig::default();
let runtime = MapleRuntime::bootstrap(config).await?;
println!("\n🎯 Registering Resonators...");
let spec_a = ResonatorSpec::default();
let resonator_a = runtime.register_resonator(spec_a).await?;
println!("✅ Resonator A: {}", resonator_a.id);
let spec_b = ResonatorSpec::default();
let resonator_b = runtime.register_resonator(spec_b).await?;
println!("✅ Resonator B: {}", resonator_b.id);
println!("\n🔗 Establishing coupling A -> B...");
let coupling_params = CouplingParams {
source: resonator_a.id,
target: resonator_b.id,
initial_strength: 0.2, initial_attention_cost: 100,
persistence: CouplingPersistence::Session,
scope: CouplingScope::Full,
symmetry: SymmetryType::Symmetric,
};
let coupling = resonator_a
.couple_with(resonator_b.id, coupling_params)
.await?;
println!("✅ Coupling established: {}", coupling.id);
if let Some(state) = coupling.get_coupling() {
println!("\n📊 Coupling State:");
println!(" • Strength: {:.2}", state.strength);
println!(" • Attention Allocated: {}", state.attention_allocated);
println!(" • Meaning Convergence: {:.2}", state.meaning_convergence);
println!(" • Interaction Count: {}", state.interaction_count);
println!(" • Persistence: {:?}", state.persistence);
println!(" • Scope: {:?}", state.scope);
}
println!("\n⬆️ Strengthening coupling gradually...");
coupling.strengthen(0.1).await?;
println!("✅ Coupling strengthened by 0.1");
coupling.strengthen(0.1).await?;
println!("✅ Coupling strengthened by 0.1");
if let Some(state) = coupling.get_coupling() {
println!(" • New Strength: {:.2}", state.strength);
}
println!("\n⬇️ Weakening coupling...");
coupling.weaken(0.2).await?;
println!("✅ Coupling weakened by 20%");
if let Some(state) = coupling.get_coupling() {
println!(" • New Strength: {:.2}", state.strength);
}
if let Some(budget) = resonator_a.attention_status().await {
println!("\n⚡ Resonator A Attention After Coupling:");
println!(" • Total Capacity: {}", budget.total_capacity);
println!(" • Currently Used: {}", budget.used());
println!(" • Available: {}", budget.available());
println!(" • Utilization: {:.1}%", budget.utilization() * 100.0);
}
println!("\n🔓 Decoupling safely...");
let result = coupling.decouple().await?;
println!("✅ Decoupling result: {:?}", result);
if let Some(budget) = resonator_a.attention_status().await {
println!("\n⚡ Resonator A Attention After Decoupling:");
println!(" • Available: {}", budget.available());
println!(" • Utilization: {:.1}%", budget.utilization() * 100.0);
}
runtime.shutdown().await?;
println!("\n🎉 Example completed successfully!");
Ok(())
}