pub struct GoalAnalysis {
pub main_goal: String,
pub success_criteria: Vec<String>,
pub sub_goals: Vec<String>,
}Expand description
Response structure from LLM when analyzing a task into a goal.
This structure is used to deserialize the JSON response from the LLM
when it analyzes a task using GoalAnalyzer::create_analysis_prompt.
§Examples
use ceylon_next::goal::{GoalAnalysis, Goal};
use serde_json::json;
let json = json!({
"main_goal": "Build a web server",
"success_criteria": ["Server responds to HTTP requests", "Handles errors gracefully"],
"sub_goals": ["Set up HTTP listener", "Implement request routing", "Add error handling"]
});
let analysis: GoalAnalysis = serde_json::from_value(json).unwrap();
let goal = analysis.to_goal();Fields§
§main_goal: StringThe main goal description
success_criteria: Vec<String>List of success criteria
sub_goals: Vec<String>List of sub-goals in execution order
Implementations§
Source§impl GoalAnalysis
impl GoalAnalysis
Sourcepub fn to_goal(&self) -> Goal
pub fn to_goal(&self) -> Goal
Converts this analysis into a Goal structure.
Sub-goals are assigned priorities based on their order in the list.
§Returns
A new Goal with status set to NotStarted
Examples found in repository?
examples/05_with_goals.rs (line 227)
197fn example_4_goal_analysis() {
198 println!("\n=== Example 4: Goal Analysis from Task Description ===\n");
199
200 // Simulate LLM analyzing a task and breaking it down into a goal
201 let task_description = "Help me learn Python programming";
202
203 println!("📝 Original task: \"{}\"", task_description);
204 println!("\n🔍 LLM analyzing task...\n");
205
206 // This is what the LLM would return
207 let analysis = GoalAnalysis {
208 main_goal: "Help user learn Python programming from basics to practical skills".to_string(),
209 success_criteria: vec![
210 "User's current skill level identified".to_string(),
211 "Learning path created based on skill level".to_string(),
212 "Resources (tutorials, books) provided".to_string(),
213 "Practice exercises suggested".to_string(),
214 "Study schedule created".to_string(),
215 ],
216 sub_goals: vec![
217 "Ask about current programming experience".to_string(),
218 "Identify learning goals (web dev, data science, etc)".to_string(),
219 "Create structured learning path".to_string(),
220 "Recommend learning resources".to_string(),
221 "Suggest practice projects".to_string(),
222 "Create study timeline".to_string(),
223 ],
224 };
225
226 // Convert analysis to a Goal
227 let goal = analysis.to_goal();
228
229 println!("✅ Goal created from analysis:\n");
230 println!("{}", goal.get_summary());
231
232 println!("\n✅ Example 4 completed!\n");
233}Trait Implementations§
Source§impl Debug for GoalAnalysis
impl Debug for GoalAnalysis
Source§impl<'de> Deserialize<'de> for GoalAnalysis
impl<'de> Deserialize<'de> for GoalAnalysis
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for GoalAnalysis
impl RefUnwindSafe for GoalAnalysis
impl Send for GoalAnalysis
impl Sync for GoalAnalysis
impl Unpin for GoalAnalysis
impl UnwindSafe for GoalAnalysis
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more