agent-locker 0.1.0-alpha.1

A sandbox for running coding agents with restricted filesystem access.
use std::fs;
use std::path::{Path, PathBuf};

pub fn detect_real_git_dir(dir: &Path) -> Option<PathBuf> {
    let git_path = dir.join(".git");
    let metadata = fs::metadata(&git_path).ok()?;
    if !metadata.is_file() {
        return None;
    }

    let first_line = fs::read_to_string(&git_path)
        .ok()?
        .lines()
        .next()?
        .trim()
        .to_string();
    let worktree_path = first_line.strip_prefix("gitdir: ")?;

    let resolved = if Path::new(worktree_path).is_absolute() {
        PathBuf::from(worktree_path)
    } else {
        git_path.parent()?.join(worktree_path)
    };

    let worktrees = resolved.to_string_lossy();
    let prefix = worktrees.split("/worktrees/").next()?;
    Some(PathBuf::from(prefix))
}