- Added module-level documentation for memory tools (`remember`, `recall`, `forget`) to clarify their purpose. - Improved documentation in `recall.rs` and `remember.rs` to describe the functionality and flow of memory entry operations. - Updated `mod.rs` to include descriptions for the tool trait and execution context. - Enhanced `plan.rs` with detailed comments on plan-mode signaling tools. - Documented text search tools in `search.rs` to explain their functionality. - Improved sequential-thinking tool documentation in `seqthink.rs`. - Added safety filter documentation in `shell_filter` for credential and git operations. - Enhanced utility tools documentation, including `cd`, `dir_cache_update`, and `todowrite`. - Improved rendering documentation in view modules (`chat`, `markdown`, `status`, `workflow`) to clarify rendering flows and purposes.
52 lines
1.9 KiB
Rust
52 lines
1.9 KiB
Rust
//! Filesystem layout for zesdex's persistent and scratch data directories.
|
|
|
|
use std::path::PathBuf;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// Resolved paths for all data directories zesdex reads from and writes to.
|
|
///
|
|
/// Why: centralizing path computation here means every consumer agrees on
|
|
/// where memory, scratch, session images, and downloads live.
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct Store {
|
|
pub base_dir: PathBuf,
|
|
pub scratch_root: PathBuf,
|
|
pub memory_dir: PathBuf,
|
|
pub session_images_dir: PathBuf,
|
|
pub download_dir: PathBuf,
|
|
}
|
|
|
|
impl Store {
|
|
/// Compute the standard set of zesdex data directory paths.
|
|
///
|
|
/// Flow: OS data dir (or `.local/share` fallback) + "zesdex" → base dir;
|
|
/// scratch root comes from the OS temp dir instead, since it's disposable.
|
|
///
|
|
/// Why: paths are computed, not created — call `ensure_dirs` before use.
|
|
pub fn new() -> Self {
|
|
let base = dirs::data_dir()
|
|
.unwrap_or_else(|| PathBuf::from(".local/share"))
|
|
.join("zesdex");
|
|
let scratch = std::env::temp_dir().join("zesdex-scratch");
|
|
Store {
|
|
memory_dir: base.join("memory"),
|
|
scratch_root: scratch,
|
|
session_images_dir: base.join("session-images"),
|
|
download_dir: base.join("downloads"),
|
|
base_dir: base,
|
|
}
|
|
}
|
|
|
|
/// Create all store directories (base, memory, scratch, session images, downloads) if missing.
|
|
///
|
|
/// Return: `Err` on the first directory that fails to create.
|
|
pub fn ensure_dirs(&self) -> std::io::Result<()> {
|
|
std::fs::create_dir_all(&self.base_dir)?;
|
|
std::fs::create_dir_all(&self.memory_dir)?;
|
|
std::fs::create_dir_all(&self.scratch_root)?;
|
|
std::fs::create_dir_all(&self.session_images_dir)?;
|
|
std::fs::create_dir_all(&self.download_dir)?;
|
|
Ok(())
|
|
}
|
|
}
|