fix(orchestrator): add worktree path to agent writable dirs
This commit is contained in:
parent
ae9b4c1474
commit
ebf6197279
1 changed files with 27 additions and 7 deletions
|
|
@ -204,6 +204,12 @@ fn resolve_path_from_working_dir(working_dir: &Path, path: &str) -> Option<PathB
|
|||
}
|
||||
|
||||
fn codex_additional_writable_dirs(working_dir: &str) -> Vec<String> {
|
||||
let working_dir_path = Path::new(working_dir);
|
||||
let normalized_working_dir =
|
||||
std::fs::canonicalize(working_dir_path).unwrap_or_else(|_| working_dir_path.to_path_buf());
|
||||
|
||||
let mut dirs = vec![normalized_working_dir.to_string_lossy().to_string()];
|
||||
|
||||
let output = std::process::Command::new("git")
|
||||
.args(["rev-parse", "--git-dir", "--git-common-dir"])
|
||||
.current_dir(working_dir)
|
||||
|
|
@ -211,14 +217,8 @@ fn codex_additional_writable_dirs(working_dir: &str) -> Vec<String> {
|
|||
|
||||
let output = match output {
|
||||
Ok(value) if value.status.success() => value,
|
||||
_ => return Vec::new(),
|
||||
_ => return dirs,
|
||||
};
|
||||
|
||||
let working_dir_path = Path::new(working_dir);
|
||||
let normalized_working_dir =
|
||||
std::fs::canonicalize(working_dir_path).unwrap_or_else(|_| working_dir_path.to_path_buf());
|
||||
|
||||
let mut dirs = Vec::new();
|
||||
for line in String::from_utf8_lossy(&output.stdout).lines() {
|
||||
let Some(path) = resolve_path_from_working_dir(working_dir_path, line) else {
|
||||
continue;
|
||||
|
|
@ -1246,6 +1246,16 @@ mod tests {
|
|||
let agent = build_test_agent(crate::models::agent::AgentTool::Codex);
|
||||
let args = build_agent_cli_args(&agent, &worktree_path);
|
||||
let add_dirs = collect_add_dirs(&args);
|
||||
let normalized_worktree = std::fs::canonicalize(&worktree_path)
|
||||
.unwrap_or_else(|_| Path::new(&worktree_path).to_path_buf())
|
||||
.to_string_lossy()
|
||||
.to_string();
|
||||
assert!(
|
||||
add_dirs.contains(&normalized_worktree),
|
||||
"Expected --add-dir to contain worktree '{}', got {:?}",
|
||||
normalized_worktree,
|
||||
add_dirs
|
||||
);
|
||||
|
||||
let rev_parse = Command::new("git")
|
||||
.args(["rev-parse", "--git-dir", "--git-common-dir"])
|
||||
|
|
@ -1292,6 +1302,16 @@ mod tests {
|
|||
let agent = build_test_agent(crate::models::agent::AgentTool::ClaudeCode);
|
||||
let args = build_agent_cli_args(&agent, &worktree_path);
|
||||
let add_dirs = collect_add_dirs(&args);
|
||||
let normalized_worktree = std::fs::canonicalize(&worktree_path)
|
||||
.unwrap_or_else(|_| Path::new(&worktree_path).to_path_buf())
|
||||
.to_string_lossy()
|
||||
.to_string();
|
||||
assert!(
|
||||
add_dirs.contains(&normalized_worktree),
|
||||
"Expected --add-dir to contain worktree '{}', got {:?}",
|
||||
normalized_worktree,
|
||||
add_dirs
|
||||
);
|
||||
|
||||
let rev_parse = Command::new("git")
|
||||
.args(["rev-parse", "--git-dir", "--git-common-dir"])
|
||||
|
|
|
|||
Loading…
Reference in a new issue