mojentic/llm/tools/ephemeral_task_manager/
mod.rs

1mod append_task;
2mod clear_tasks;
3mod complete_task;
4mod insert_task_after;
5mod list_tasks;
6mod prepend_task;
7mod start_task;
8mod task;
9mod task_list;
10
11pub use append_task::AppendTaskTool;
12pub use clear_tasks::ClearTasksTool;
13pub use complete_task::CompleteTaskTool;
14pub use insert_task_after::InsertTaskAfterTool;
15pub use list_tasks::ListTasksTool;
16pub use prepend_task::PrependTaskTool;
17pub use start_task::StartTaskTool;
18pub use task::{Task, TaskStatus};
19pub use task_list::TaskList;
20
21use crate::llm::tools::LlmTool;
22use std::sync::{Arc, Mutex};
23
24/// Creates all task manager tools with a shared task list
25///
26/// Returns a vector of boxed tools ready to be used with the broker
27///
28/// # Examples
29///
30/// ```ignore
31/// use mojentic::llm::tools::ephemeral_task_manager::{TaskList, all_tools};
32/// use std::sync::{Arc, Mutex};
33///
34/// let task_list = Arc::new(Mutex::new(TaskList::new()));
35/// let tools = all_tools(task_list);
36/// ```
37pub fn all_tools(task_list: Arc<Mutex<TaskList>>) -> Vec<Box<dyn LlmTool>> {
38    vec![
39        Box::new(AppendTaskTool::new(Arc::clone(&task_list))),
40        Box::new(PrependTaskTool::new(Arc::clone(&task_list))),
41        Box::new(InsertTaskAfterTool::new(Arc::clone(&task_list))),
42        Box::new(StartTaskTool::new(Arc::clone(&task_list))),
43        Box::new(CompleteTaskTool::new(Arc::clone(&task_list))),
44        Box::new(ListTasksTool::new(Arc::clone(&task_list))),
45        Box::new(ClearTasksTool::new(Arc::clone(&task_list))),
46    ]
47}