GoalAnalysis

Struct GoalAnalysis 

Source
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: String

The 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

Source

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

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for GoalAnalysis

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for GoalAnalysis

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,