use synapse::{Config, SynapseRouter};
use anyhow::Result;
use tracing::{info, warn};
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
info!("🤖 Starting AI Assistant Network Example");
let assistants = vec![
("alice", "ai_model"),
("bob", "ai_model"),
("charlie", "ai_model"),
("diana", "tool"),
];
let mut routers = Vec::new();
for (name, entity_type) in &assistants {
info!("🚀 Initializing assistant: {}", name);
let config = Config::default_for_entity(name.to_string(), entity_type.to_string());
match SynapseRouter::new(config, name.to_string()).await {
Ok(router) => {
info!("✅ Assistant {} initialized successfully", name);
routers.push((name, router));
}
Err(e) => {
warn!("❌ Failed to initialize assistant {}: {}", name, e);
}
}
}
info!("🌐 AI Assistant Network established with {} assistants", routers.len());
for (name, _router) in &routers {
info!("📡 Assistant {} is ready for communication", name);
}
info!("🎉 AI Assistant Network example completed successfully!");
Ok(())
}