agcodex_core/tools/
integration_example.rs1use crate::tools::plan::PlanTool;
7
8pub async fn example_usage() -> Result<(), Box<dyn std::error::Error>> {
10 println!("šÆ AGCodex Double-Planning Strategy Tool Example");
11 println!("=================================================");
12
13 let plan_tool = PlanTool::new();
15
16 println!("\nš Example 1: Adding a Dark Mode Toggle");
18 println!("-----------------------------------------");
19
20 let goal = "Add dark mode toggle to the application settings with persistent user preferences";
21
22 let plan_result = plan_tool.plan(goal)?;
24 println!("ā
Plan Created with {} tasks", plan_result.tasks.len());
25
26 let meta_task = crate::tools::plan::MetaTask {
28 name: "Dark Mode Toggle".to_string(),
29 description: goal.to_string(),
30 };
31
32 println!("ā
Meta Task Created:");
33 println!(" Name: {}", meta_task.name);
34 println!(" Description: {}", meta_task.description);
35
36 let sub_tasks = &plan_result.tasks;
38
39 println!("\nš§ Sub-Tasks Generated ({}):", sub_tasks.len());
40 for (i, task) in sub_tasks.iter().enumerate() {
41 println!(" {}. {} [ID: {}]", i + 1, task.description, task.id);
42 println!(
43 " Dependencies: {} | Parallelizable: {}",
44 task.depends_on.len(),
45 task.can_parallelize
46 );
47 }
48
49 let task_groups = &plan_result.parallel_groups;
51
52 println!(
53 "\nā” Task Groups for Parallel Execution ({}):",
54 task_groups.len()
55 );
56 for (i, group) in task_groups.iter().enumerate() {
57 println!(" Group {}: {} tasks", i + 1, group.len());
58 for task_id in group {
59 if let Some(task) = sub_tasks.iter().find(|t| &t.id == task_id) {
60 println!(" - {}", task.description);
61 }
62 }
63 }
64
65 println!("\nš Plan Summary:");
67 println!(" Total Tasks: {}", plan_result.tasks.len());
68 println!(" Complexity: {:?}", plan_result.estimated_complexity);
69 println!(" Parallel Groups: {}", plan_result.parallel_groups.len());
70
71 println!("\nš Planning completed successfully!");
72
73 println!("\n\nš Example 2: Complex Refactoring Task");
75 println!("--------------------------------------");
76
77 let refactor_goal = "Refactor the authentication system to use async/await patterns and add comprehensive error handling";
78
79 let refactor_result = plan_tool.plan(refactor_goal)?;
80 println!("ā
Refactoring Plan:");
81 println!(" Complexity: {:?}", refactor_result.estimated_complexity);
82 println!(" Tasks: {}", refactor_result.tasks.len());
83 println!(
84 " Parallel Groups: {}",
85 refactor_result.parallel_groups.len()
86 );
87
88 println!("\nš§ Refactoring Sub-Tasks:");
90 for (i, task) in refactor_result.tasks.iter().enumerate() {
91 println!(" {}. {}", i + 1, task.description);
92 }
93
94 println!("\n⨠All examples completed successfully!");
95
96 Ok(())
97}
98
99#[allow(dead_code)]
101fn create_example_context() -> crate::tools::plan::PlanContext {
102 crate::tools::plan::PlanContext {
103 goal: "Example context".to_string(),
104 constraints: vec!["No breaking changes".to_string()],
105 }
106}
107
108pub async fn demonstrate_analysis_capabilities() -> Result<(), Box<dyn std::error::Error>> {
110 println!("\nš AGCodex Analysis Capabilities");
111 println!("=================================");
112
113 let plan_tool = PlanTool::new();
114
115 let test_goals = vec![
117 "Fix memory leak in user session management",
118 "Optimize database query performance",
119 "Add comprehensive test suite",
120 "Implement rate limiting for API endpoints",
121 "Refactor legacy code to modern patterns",
122 ];
123
124 for goal in test_goals {
125 println!("\nšÆ Planning: {}", goal);
126
127 let result = plan_tool.plan(goal)?;
128 println!(" Tasks: {}", result.tasks.len());
129 println!(" Complexity: {:?}", result.estimated_complexity);
130 println!(" Parallel Groups: {}", result.parallel_groups.len());
131
132 if !result.tasks.is_empty() {
133 println!(" First Task: {}", result.tasks[0].description);
134 }
135 }
136
137 println!("\nā
Analysis demonstration completed!");
138 Ok(())
139}