use std::io::Write;
use chaotic_semantic_memory::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
println!("ð§ Chaotic Semantic Memory - Proof of Concept\n");
let framework = ChaoticSemanticFramework::builder()
.with_reservoir_size(50000)
.with_local_db("csm_memory.db")
.build()
.await?;
println!("â
Framework initialized");
let concept_vec = HVec10240::random();
framework
.inject_concept("rust-programming", concept_vec)
.await?;
println!("â
Concept injected: rust-programming");
framework
.inject_concept("python-programming", HVec10240::random())
.await?;
framework
.inject_concept("javascript-programming", HVec10240::random())
.await?;
framework
.inject_concept("memory-systems", HVec10240::random())
.await?;
println!("â
Additional concepts injected");
let results = framework.probe(concept_vec, 3).await?;
println!("â
Query completed:");
for (id, score) in &results {
println!(" - {}: {:.4}", id, score);
}
framework
.associate("rust-programming", "memory-systems", 0.9)
.await?;
framework
.associate("python-programming", "rust-programming", 0.7)
.await?;
println!("â
Associations created");
let associations = framework.get_associations("rust-programming").await?;
println!("â
Associations for 'rust-programming':");
for (id, strength) in associations {
println!(" - {}: {:.2}", id, strength);
}
framework.persist().await?;
println!("â
Persisted to database");
let stats = framework.stats().await?;
println!("\nð Framework Statistics:");
println!(" - Concepts: {}", stats.concept_count);
if let Some(size) = stats.db_size_bytes {
println!(" - Database size: {} bytes", size);
} else {
println!(" - Database size: N/A (persistence disabled)");
}
println!("\n⥠Running benchmark...");
let start = std::time::Instant::now();
for i in 0..1000 {
framework.probe(HVec10240::random(), 5).await?;
if i % 100 == 0 {
print!(".");
std::io::stdout().flush()?;
}
}
let elapsed = start.elapsed();
println!(" Done!");
println!(
"â
1000 queries in {:?} ({:.2}Ξs avg)",
elapsed,
elapsed.as_micros() as f64 / 1000.0
);
println!("\nð All systems operational!");
Ok(())
}