@yemi33/minions 0.1.322 → 0.1.323

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,6 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.322 (2026-04-03)
3
+ ## 0.1.323 (2026-04-03)
4
+
5
+ ### Fixes
6
+ - scan skips NugetCache, OneDrive, .vs, packages + validates .git/HEAD
4
7
 
5
8
  ### Other
6
9
  - refactor: final magic string replacements in engine, lifecycle, cleanup
package/dashboard.js CHANGED
@@ -2897,7 +2897,9 @@ What would you like to discuss or change? When you're happy, say "approve" and I
2897
2897
 
2898
2898
  // Find git repos recursively (same logic as minions.js findGitRepos)
2899
2899
  const skipDirs = new Set(['node_modules', '.git', '.hg', 'AppData', '$Recycle.Bin', 'Windows',
2900
- 'Program Files', 'Program Files (x86)', '.cache', '.npm', '.yarn', '.nuget', 'worktrees', '.minions', '.squad']);
2900
+ 'Program Files', 'Program Files (x86)', '.cache', '.npm', '.yarn', '.nuget', 'NugetCache',
2901
+ 'worktrees', '.minions', '.squad', '.vs', '.vscode', 'obj', 'bin', 'packages',
2902
+ 'OneDrive', 'OneDrive - Microsoft', '.copilot', 'marketplace-cache']);
2901
2903
  const repos = [];
2902
2904
  function walk(dir, depth) {
2903
2905
  if (depth > maxDepth) return;
@@ -2905,7 +2907,11 @@ What would you like to discuss or change? When you're happy, say "approve" and I
2905
2907
  try { entries = fs.readdirSync(dir, { withFileTypes: true }); } catch { return; }
2906
2908
  for (const e of entries) {
2907
2909
  if (!e.isDirectory()) continue;
2908
- if (e.name === '.git') { repos.push(dir); return; }
2910
+ if (e.name === '.git') {
2911
+ // Validate it's a real repo — must have HEAD file
2912
+ try { if (fs.existsSync(path.join(dir, '.git', 'HEAD'))) repos.push(dir); } catch {}
2913
+ return;
2914
+ }
2909
2915
  if (e.name.startsWith('.') || skipDirs.has(e.name)) continue;
2910
2916
  walk(path.join(dir, e.name), depth + 1);
2911
2917
  }
package/minions.js CHANGED
@@ -257,7 +257,9 @@ function findGitRepos(rootDir, maxDepth = 3) {
257
257
  // Skip common non-project dirs
258
258
  const base = path.basename(dir);
259
259
  if (['node_modules', '.git', '.hg', 'AppData', '$Recycle.Bin', 'Windows', 'Program Files',
260
- 'Program Files (x86)', '.cache', '.npm', '.yarn', '.nuget', 'worktrees', '.minions'].includes(base)) return;
260
+ 'Program Files (x86)', '.cache', '.npm', '.yarn', '.nuget', 'NugetCache',
261
+ 'worktrees', '.minions', '.squad', '.vs', '.vscode', 'obj', 'bin', 'packages',
262
+ 'OneDrive', 'OneDrive - Microsoft', '.copilot', 'marketplace-cache'].includes(base)) return;
261
263
  // Skip minions home directory itself
262
264
  if (path.resolve(dir) === path.resolve(MINIONS_HOME)) return;
263
265
 
@@ -271,6 +273,8 @@ function findGitRepos(rootDir, maxDepth = 3) {
271
273
  if (content.trimStart().startsWith('gitdir:')) return; // worktree, skip
272
274
  } catch {}
273
275
  }
276
+ // Validate it's a real repo — must have HEAD file
277
+ if (stat.isDirectory() && !fs.existsSync(path.join(gitDir, 'HEAD'))) return;
274
278
  repos.push(dir);
275
279
  return; // Don't recurse into git repos (they may have nested submodules)
276
280
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.322",
3
+ "version": "0.1.323",
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"