@yemi33/minions 0.1.1608 → 0.1.1609

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,8 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.1608 (2026-04-28)
3
+ ## 0.1.1609 (2026-04-28)
4
4
 
5
5
  ### Features
6
+ - auto-detect available CLI runtimes and pin engine.defaultCli
6
7
  - match runtime tags to actual logos (pixel-crab Claude, mascot Copilot)
7
8
  - replace runtime text tag with inline SVG logos
8
9
 
package/minions.js CHANGED
@@ -125,6 +125,30 @@ function autoDiscover(targetDir) {
125
125
 
126
126
  // ─── Shared Helpers (used by both addProject and scanAndAdd) ─────────────────
127
127
 
128
+ /**
129
+ * Probe each registered runtime adapter and return the names whose
130
+ * resolveBinary() returns a non-null result. Used by initMinions to set
131
+ * engine.defaultCli automatically. Adapter `resolveBinary()` returns `null`
132
+ * when the CLI binary isn't on PATH and otherwise returns `{ bin, ... }`.
133
+ * Errors (unregistered runtime, exec failures) are swallowed — the helper
134
+ * is best-effort and a missing CLI just means we don't pin defaultCli.
135
+ */
136
+ function _detectAvailableRuntimes() {
137
+ const found = [];
138
+ let registry;
139
+ try { registry = require('./engine/runtimes'); }
140
+ catch { return found; }
141
+ for (const name of registry.listRuntimes()) {
142
+ try {
143
+ const adapter = registry.resolveRuntime(name);
144
+ if (typeof adapter.resolveBinary !== 'function') continue;
145
+ const result = adapter.resolveBinary({ env: process.env });
146
+ if (result && result.bin) found.push(name);
147
+ } catch { /* probe failed → treat as unavailable */ }
148
+ }
149
+ return found;
150
+ }
151
+
128
152
  function buildPrUrlBase({ repoHost, org, project, repoName }) {
129
153
  if (repoHost === 'github') {
130
154
  return org && repoName ? `https://github.com/${org}/${repoName}/pull/` : '';
@@ -450,6 +474,22 @@ async function initMinions({ skipScan = false, scanRoot, scanDepth } = {}) {
450
474
  if (!config.agents || Object.keys(config.agents).length === 0) {
451
475
  config.agents = { ...DEFAULT_AGENTS };
452
476
  }
477
+
478
+ // Auto-detect available runtime CLIs and pin engine.defaultCli to whichever
479
+ // is installed. Only set if the user hasn't already configured one — never
480
+ // overwrite an explicit choice on `init --force` upgrades.
481
+ if (!config.engine.defaultCli) {
482
+ const detected = _detectAvailableRuntimes();
483
+ if (detected.length === 1) {
484
+ config.engine.defaultCli = detected[0];
485
+ console.log(`\n ✓ Detected ${detected[0]} CLI — set as fleet default runtime`);
486
+ } else if (detected.length > 1) {
487
+ // Both available — prefer claude (the historical default and broader skill coverage)
488
+ config.engine.defaultCli = detected.includes('claude') ? 'claude' : detected[0];
489
+ console.log(`\n ✓ Detected ${detected.join(' + ')} — fleet default set to ${config.engine.defaultCli}`);
490
+ }
491
+ // If nothing detected, leave defaultCli unset (engine falls back to 'claude')
492
+ }
453
493
  saveConfig(config);
454
494
  console.log(`\n Minions initialized at ${MINIONS_HOME}`);
455
495
  console.log(` Config, agents, and engine defaults created.\n`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1608",
3
+ "version": "0.1.1609",
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"