skilllite_executor/
lib.rs1pub mod error;
2pub mod memory;
3pub mod plan;
4pub mod rpc;
5pub mod session;
6pub mod transcript;
7
8use crate::error::ExecutorError;
9
10pub fn skilllite_data_root() -> std::path::PathBuf {
12 skilllite_core::paths::data_root()
13}
14
15pub fn chat_root() -> std::path::PathBuf {
17 skilllite_core::paths::chat_root()
18}
19
20pub fn workspace_root(workspace_path: Option<&str>) -> Result<std::path::PathBuf, ExecutorError> {
22 if let Some(p) = workspace_path {
23 let path = std::path::PathBuf::from(p);
24 if path.is_absolute() {
25 return Ok(path);
26 }
27 return Ok(std::env::current_dir()?.join(p));
28 }
29 Ok(skilllite_data_root())
30}
31
32pub fn chat_root_for_rpc(
36 workspace_path: Option<&str>,
37) -> Result<std::path::PathBuf, ExecutorError> {
38 if let Some(p) = workspace_path {
39 let path = std::path::PathBuf::from(p);
40 let data_root = if path.is_absolute() {
41 path
42 } else {
43 std::env::current_dir()?.join(p)
44 };
45 let is_chat_root = data_root.ends_with(std::path::Path::new("chat"));
47 return Ok(if is_chat_root {
48 data_root
49 } else {
50 data_root.join("chat")
51 });
52 }
53 Ok(chat_root())
54}