Skip to main content

soma_codemode/artifacts/
path.rs

1use std::path::{Path, PathBuf};
2
3use crate::path_safety::{reject_existing_symlink_ancestors, reject_path_traversal};
4use crate::ToolError;
5
6pub fn artifact_root(run_id: &str) -> PathBuf {
7    crate::soma_home().join("code-mode-artifacts").join(run_id)
8}
9
10pub fn safe_artifact_path(root: &Path, rel_path: &str) -> Result<PathBuf, ToolError> {
11    reject_path_traversal(rel_path)?;
12    let target = root.join(rel_path);
13    reject_existing_symlink_ancestors(root, &target)?;
14    Ok(target)
15}