soma_codemode/artifacts/
path.rs1use 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}