volition_core/strategies/
mod.rs

1// volition-agent-core/src/strategies/mod.rs
2use crate::errors::AgentError;
3use crate::{AgentState, ApiResponse, DelegationResult, ToolResult, UserInteraction};
4
5pub mod complete_task;
6// Removed: mod conversation;
7pub mod plan_execute;
8
9// Removed: pub use conversation::ConversationStrategy;
10pub use crate::config::StrategyConfig;
11pub use plan_execute::PlanExecuteStrategy;
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub enum StrategyType {
15    CompleteTask,
16    PlanReviseExecute,
17    // Removed: Conversation,
18    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}