use xynthe::prelude::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
println!("=== Xynthe Execution Engine Example ===\n");
println!("1. Initializing Execution Engine components...");
let thought_stream = Arc::new(ThoughtStream::new("main"));
let capability_registry = Arc::new(CapabilityRegistry::new());
let context_fabric = Arc::new(ContextFabric::new());
println!(" ✓ Thought stream created");
println!(" ✓ Capability registry initialized");
println!(" ✓ Context fabric ready\n");
println!("2. Creating execution intent...");
let intent = ExecutionIntent::new(
"Process weather data for San Francisco",
StructuredContent::json(serde_json::json!({
"location": "San Francisco, CA",
"data_type": "weather_forecast",
"timeframe": "next_7_days"
})),
)
.with_priority(75);
println!(" Intent: {}", intent.description);
println!(" Priority: {}", intent.priority);
println!(" ✓ Intent created with ID: {}\n", intent.id);
println!("3. Constructing execution engine...");
let engine = ExecutionEngine::new(
thought_stream.clone(),
capability_registry.clone(),
context_fabric.clone(),
);
let initial_state = engine.state().await;
println!(" Initial state: {}", initial_state.as_str());
println!(" ✓ Execution engine ready\n");
println!("4. Executing intent through G-TEL loop...");
match engine.execute(intent).await {
Ok(result) => {
println!(" ✓ Execution completed successfully!");
println!(" Steps executed: {}", result.steps_executed);
println!(" Trace ID: {}", result.trace_id);
println!(" Result: {:?}\n", result.data.as_text());
}
Err(e) => {
println!(" ✗ Execution failed: {}\n", e);
}
}
println!("5. Inspecting execution metrics...");
let final_state = engine.state().await;
println!(" Final state: {}", final_state.as_str());
let stats = engine.stats().await;
println!(" Total steps: {}", stats.total_steps);
println!(" Completed steps: {}", stats.completed_steps);
println!(" Failed steps: {}", stats.failed_steps);
println!(" Total duration: {} ms\n", stats.total_duration_ms);
println!("6. Retrieving execution trace...");
let trace_recorder = engine.trace_recorder();
let trace = trace_recorder.current_trace().await;
println!(" Trace events: {}", trace.events.len());
println!(" Agent ID: {}", trace.agent_id);
println!(" Successful execution: {}\n", trace.is_successful());
println!("7. Querying trace archive...");
let archive = trace_recorder.archive().await;
println!(" Traces in archive: {}\n", archive.len());
println!("=== Execution Engine Example Completed ===\n");
println!("G-TEL phases demonstrated:");
println!(" ✓ Perceive: Intent ingestion");
println!(" ✓ Reason: Goal decomposition");
println!(" ✓ Assign: Layer routing");
println!(" ✓ Act: Execution (simulated)");
println!(" ✓ Reflect: Outcome evaluation");
println!(" ✓ Trace: Immutable recording");
Ok(())
}