volition_core/strategies/
mod.rs1use crate::errors::AgentError;
3use crate::{AgentState, ApiResponse, DelegationResult, ToolResult, UserInteraction};
4
5pub mod complete_task;
6pub mod plan_execute;
8
9pub use crate::config::StrategyConfig;
11pub use plan_execute::PlanExecuteStrategy;
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub enum StrategyType {
15 CompleteTask,
16 PlanReviseExecute,
17 PlanExecute,
19}
20
21#[derive(Debug, Clone)]
22pub struct DelegationInput {
23 pub task_description: String,
24}
25
26#[derive(Debug, Clone)]
27pub struct DelegationOutput {
28 pub result: String,
29}
30
31#[derive(Debug)]
32pub enum NextStep {
33 CallApi(AgentState),
34 CallTools(AgentState),
35 DelegateTask(DelegationInput),
36 Completed(String),
37}
38
39pub trait Strategy<UI: UserInteraction + 'static>: Send + Sync {
40 fn name(&self) -> &'static str;
41
42 fn initialize_interaction(
43 &mut self,
44 agent_state: &mut AgentState,
45 ) -> Result<NextStep, AgentError>;
46
47 fn process_api_response(
48 &mut self,
49 agent_state: &mut AgentState,
50 response: ApiResponse,
51 ) -> Result<NextStep, AgentError>;
52
53 fn process_tool_results(
54 &mut self,
55 agent_state: &mut AgentState,
56 results: Vec<ToolResult>,
57 ) -> Result<NextStep, AgentError>;
58
59 fn process_delegation_result(
60 &mut self,
61 agent_state: &mut AgentState,
62 result: DelegationResult,
63 ) -> Result<NextStep, AgentError>;
64}