@yemi33/minions 0.1.612 → 0.1.613

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.612 (2026-04-08)
3
+ ## 0.1.613 (2026-04-08)
4
4
 
5
5
  ### Features
6
6
  - clickable pinned notes and skills with full content + doc-chat
7
7
 
8
8
  ### Fixes
9
+ - dedup worktree removal attempts, add Windows rd fallback
9
10
  - accurate LLM call timing and agent metrics on engine page
10
11
  - worktree count now checks for .git file instead of any directory
11
12
 
package/engine/cleanup.js CHANGED
@@ -105,6 +105,7 @@ function runCleanup(config, verbose = false) {
105
105
  }
106
106
 
107
107
  // 3. Clean git worktrees for merged/abandoned PRs
108
+ const _attemptedWorktreePaths = new Set(); // dedup across projects sharing a worktreeRoot
108
109
  for (const project of projects) {
109
110
  const root = project.localPath ? path.resolve(project.localPath) : null;
110
111
  if (!root || !fs.existsSync(root)) continue;
@@ -261,6 +262,8 @@ function runCleanup(config, verbose = false) {
261
262
  }
262
263
  }
263
264
 
265
+ if (_attemptedWorktreePaths.has(entry.wtPath)) continue;
266
+ _attemptedWorktreePaths.add(entry.wtPath);
264
267
  if (shared.removeWorktree(entry.wtPath, root, worktreeRoot)) {
265
268
  cleaned.worktrees++;
266
269
  if (verbose) console.log(` Removed worktree: ${entry.wtPath}`);
package/engine/shared.js CHANGED
@@ -824,11 +824,18 @@ function removeWorktree(wtPath, gitRoot, worktreeRoot) {
824
824
  } catch (gitErr) {
825
825
  try {
826
826
  fs.rmSync(resolved, { recursive: true, force: true });
827
- // Also prune the stale worktree entry from git metadata
828
827
  try { exec('git worktree prune', { cwd: gitRoot, stdio: 'pipe', timeout: 10000, windowsHide: true }); } catch {}
829
828
  return true;
830
829
  } catch (rmErr) {
831
- log('warn', `removeWorktree: both git and rm failed for ${wtPath}: ${rmErr.message}`);
830
+ // Windows EPERM: a process may hold file handles try rd /s /q as fallback
831
+ if (process.platform === 'win32' && rmErr.code === 'EPERM') {
832
+ try {
833
+ exec(`rd /s /q "${resolved}"`, { stdio: 'pipe', timeout: 15000, windowsHide: true });
834
+ try { exec('git worktree prune', { cwd: gitRoot, stdio: 'pipe', timeout: 10000, windowsHide: true }); } catch {}
835
+ return true;
836
+ } catch {}
837
+ }
838
+ log('warn', `removeWorktree: failed for ${wtPath}: ${rmErr.message}`);
832
839
  return false;
833
840
  }
834
841
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.612",
3
+ "version": "0.1.613",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"