fix: Use absolute paths and git add -u in post-completion commit resume
Prevents two bugs in the resumeForCommit flow: 1. Agent navigated to main repo instead of worktree due to relative paths in commit prompt — now uses absolute paths from getDirtyWorktreePaths 2. git add -A staged unrelated files (screenshots, other agents' work) — now uses git add -u to only stage tracked modified files
This commit is contained in:
@@ -138,10 +138,10 @@ When Agent A asks Agent B a question via `cw ask` and Agent B is idle, the conve
|
||||
|
||||
After an agent completes (status → `idle`), `tryAutoCleanup` checks if its project worktrees have uncommitted changes:
|
||||
|
||||
1. `CleanupManager.getDirtyWorktreePaths()` runs `git status --porcelain` in each project subdirectory (not the parent `agent-workdirs/<alias>/` dir)
|
||||
1. `CleanupManager.getDirtyWorktreePaths()` runs `git status --porcelain` in each project subdirectory (not the parent `agent-workdirs/<alias>/` dir), returns `{ name, absPath }[]`
|
||||
2. If all clean → worktrees and logs removed immediately
|
||||
3. If dirty → `resumeForCommit()` resumes the agent's session with a prompt listing the specific dirty subdirectories (e.g. `- \`my-project/\``)
|
||||
4. The agent `cd`s into each listed directory and commits
|
||||
3. If dirty → `resumeForCommit()` resumes the agent's session with a prompt listing **absolute paths** to dirty subdirectories, using `git add -u` (tracked files only) to avoid staging unrelated files
|
||||
4. The agent `cd`s into each listed absolute path and commits tracked changes only
|
||||
5. On next completion, cleanup runs again. `MAX_COMMIT_RETRIES` (1) limits retries — after that the workdir is left in place with a warning
|
||||
|
||||
The retry counter is cleaned up on: successful removal, max retries exceeded, or unexpected error. It is **not** cleaned up when a commit retry is successfully launched (so the counter persists across the retry cycle).
|
||||
|
||||
Reference in New Issue
Block a user