@yemi33/minions 0.1.1830 → 0.1.1832

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,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1832 (2026-05-10)
4
+
5
+ ### Fixes
6
+ - warm CC runtime binary cache on startup to avoid cold-start missing-runtime errors
7
+
3
8
  ## 0.1.1830 (2026-05-09)
4
9
 
5
10
  ### Features
@@ -114,8 +114,8 @@ async function openSettings() {
114
114
  settingsToggle('Auto-fix Human Comments', 'set-autoFixHumanComments', e.autoFixHumanComments !== false, 'Shared dispatch gate: fix agent for actionable human PR comments; also requires that PR provider polling is enabled') +
115
115
  '</div>' +
116
116
  '<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px">' +
117
- settingsField('PR Status Poll Frequency', 'set-prPollStatusEvery', e.prPollStatusEvery ?? e.adoPollStatusEvery ?? 12, 'ticks', 'Poll PR build/review/merge status every N ticks for both ADO and GitHub (~12 min at default tick rate)') +
118
- settingsField('PR Comments Poll Frequency', 'set-prPollCommentsEvery', e.prPollCommentsEvery ?? e.adoPollCommentsEvery ?? 12, 'ticks', 'Poll PR human comments every N ticks for both ADO and GitHub (~12 min at default tick rate)') +
117
+ settingsField('PR Status Poll Frequency', 'set-prPollStatusEvery', e.prPollStatusEvery ?? 12, 'ticks', 'Poll PR build/review/merge status every N ticks for both ADO and GitHub (~12 min at default tick rate)') +
118
+ settingsField('PR Comments Poll Frequency', 'set-prPollCommentsEvery', e.prPollCommentsEvery ?? 12, 'ticks', 'Poll PR human comments every N ticks for both ADO and GitHub (~12 min at default tick rate)') +
119
119
  '</div>' +
120
120
  '</div>' +
121
121
 
package/dashboard.js CHANGED
@@ -7980,8 +7980,6 @@ What would you like to discuss or change? When you're happy, say "approve" and I
7980
7980
  const config = queries.getConfig();
7981
7981
  const routing = safeRead(path.join(MINIONS_DIR, 'routing.md')) || '';
7982
7982
  const engine = { ...shared.ENGINE_DEFAULTS, ...(config.engine || {}) };
7983
- if (engine.prPollStatusEvery === undefined && engine.adoPollStatusEvery !== undefined) engine.prPollStatusEvery = engine.adoPollStatusEvery;
7984
- if (engine.prPollCommentsEvery === undefined && engine.adoPollCommentsEvery !== undefined) engine.prPollCommentsEvery = engine.adoPollCommentsEvery;
7985
7983
  return jsonReply(res, 200, {
7986
7984
  engine,
7987
7985
  claude: settingsClaudeConfig(config),
@@ -8033,8 +8031,6 @@ What would you like to discuss or change? When you're happy, say "approve" and I
8033
8031
  if (body.engine) {
8034
8032
  const e = body.engine;
8035
8033
  const D = shared.ENGINE_DEFAULTS;
8036
- if (e.prPollStatusEvery === undefined && e.adoPollStatusEvery !== undefined) e.prPollStatusEvery = e.adoPollStatusEvery;
8037
- if (e.prPollCommentsEvery === undefined && e.adoPollCommentsEvery !== undefined) e.prPollCommentsEvery = e.adoPollCommentsEvery;
8038
8034
  // Numeric fields: { key: [min, max?] }
8039
8035
  const numericFields = {
8040
8036
  tickInterval: [10000], maxConcurrent: [1, 50], inboxConsolidateThreshold: [1],
@@ -8057,8 +8053,6 @@ What would you like to discuss or change? When you're happy, say "approve" and I
8057
8053
  _setEngineConfig(key, val);
8058
8054
  }
8059
8055
  }
8060
- _deleteEngineConfig('adoPollStatusEvery');
8061
- _deleteEngineConfig('adoPollCommentsEvery');
8062
8056
  // String fields
8063
8057
  if (e.worktreeRoot !== undefined) _setEngineConfig('worktreeRoot', String(e.worktreeRoot || D.worktreeRoot));
8064
8058
 
@@ -9394,6 +9388,18 @@ if (require.main === module) {
9394
9388
  }
9395
9389
  }
9396
9390
 
9391
+ // Warm the CC runtime binary cache off the request path so the first CC /
9392
+ // doc-chat call after a fresh dashboard start doesn't pay the `where claude`
9393
+ // / `npm root -g` probe cost (and doesn't surface a transient missing-runtime
9394
+ // error if those probes are slow on a cold Windows AV/filesystem).
9395
+ setImmediate(() => {
9396
+ try {
9397
+ const ccRuntimeName = shared.resolveCcCli(CONFIG.engine);
9398
+ const runtime = resolveRuntime(ccRuntimeName);
9399
+ if (runtime) llm._resolveBin(runtime);
9400
+ } catch { /* warm-up is best-effort */ }
9401
+ });
9402
+
9397
9403
  // ─── Engine Watchdog ─────────────────────────────────────────────────────
9398
9404
  // Every 30s, check if engine PID is alive. If dead but control.json says
9399
9405
  // running, auto-restart it. Prevents silent engine death.
@@ -1,36 +1,4 @@
1
1
  [
2
- {
3
- "id": "evaluate-work-type",
4
- "summary": "evaluate work type removed — eval loop uses review exclusively",
5
- "deprecated": "2026-04-02",
6
- "reason": "Consolidated into review + evalLoop config. No separate evaluate dispatch.",
7
- "locations": ["routing.md: evaluate row removed", "CLAUDE.md: evaluate references removed"],
8
- "cleanup": "Already cleaned — routing.md and CLAUDE.md updated 2026-04-02"
9
- },
10
- {
11
- "id": "autoReview-flag",
12
- "summary": "autoReview ENGINE_DEFAULT consolidated into evalLoop",
13
- "deprecated": "2026-04-15",
14
- "reason": "Redundant with evalLoop; evalLoop is the single gate for the review+fix cycle",
15
- "locations": ["engine/shared.js ENGINE_DEFAULTS.autoReview", "engine.js discoverFromPrs autoReview variable"],
16
- "cleanup": "Removed from ENGINE_DEFAULTS, removed autoReview variable from engine.js, replaced with reviewEnabled = evalLoopEnabled && pollEnabled"
17
- },
18
- {
19
- "id": "ado-poll-frequency-keys",
20
- "summary": "adoPollStatusEvery and adoPollCommentsEvery renamed to prPollStatusEvery and prPollCommentsEvery",
21
- "deprecated": "2026-04-16",
22
- "reason": "These cadence settings gate both ADO and GitHub PR polling, so the ADO-prefixed names are misleading.",
23
- "locations": ["engine.js read-side fallback from config.engine.adoPollStatusEvery/adoPollCommentsEvery", "dashboard.js handleSettingsRead/handleSettingsUpdate alias fallback for old keys"],
24
- "cleanup": "Remove the adoPoll* alias fallback reads after existing configs have been migrated to prPollStatusEvery/prPollCommentsEvery."
25
- },
26
- {
27
- "id": "config-claude-permission-mode",
28
- "summary": "config.claude.permissionMode ignored; runtime adapters own permission bypass flags",
29
- "deprecated": "2026-05-04",
30
- "reason": "Claude and Copilot require different non-interactive bypass flags, so a shared Claude config field was misleading and no longer controls spawns.",
31
- "locations": ["dashboard.js settings update strips config.claude.permissionMode", "dashboard/js/settings.js no longer renders a Permission Mode selector"],
32
- "cleanup": "After old configs have been rewritten through settings, remove the deprecated-field preflight warning entry for permissionMode."
33
- },
34
2
  {
35
3
  "id": "project-local-minions-state",
36
4
  "summary": "Project-local .minions directories are migrated to central projects/<name>/ state and removed",
package/engine/ado.js CHANGED
@@ -511,8 +511,9 @@ async function fetchAdoBuildErrorLog(orgBase, project, failedStatus, token, pr,
511
511
  try {
512
512
  // Use pre-resolved buildId if available (from builds API query), else parse from targetUrl
513
513
  let buildId = failedStatus?._buildId || null;
514
+ let targetUrl = '';
514
515
  if (!buildId) {
515
- const targetUrl = failedStatus?.targetUrl || '';
516
+ targetUrl = failedStatus?.targetUrl || '';
516
517
  const buildIdMatch = targetUrl.match(/buildId=(\d+)/);
517
518
  if (buildIdMatch) buildId = buildIdMatch[1];
518
519
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "runtime": "copilot",
3
3
  "models": null,
4
- "cachedAt": "2026-05-09T23:55:19.839Z"
4
+ "cachedAt": "2026-05-10T00:14:32.692Z"
5
5
  }
package/engine/shared.js CHANGED
@@ -1143,7 +1143,7 @@ const ENGINE_DEFAULTS = {
1143
1143
  // Backward-compat: keep `engine.claude.*` field family deprecation tracker. Listed here so preflight
1144
1144
  // knows which subkeys to flag as deprecated. Do not consume `claude.*` in new code — use the runtime
1145
1145
  // adapter system (engine/runtimes/) and the resolveAgent*/resolveCc* helpers instead.
1146
- _deprecatedConfigClaudeFields: ['binary', 'outputFormat', 'allowedTools', 'permissionMode', 'maxTurns', 'effort', 'budgetCap'],
1146
+ _deprecatedConfigClaudeFields: ['binary', 'outputFormat', 'allowedTools', 'maxTurns', 'effort', 'budgetCap'],
1147
1147
  // Teams integration — config.teams shape: { enabled, appId, appPassword, certPath, privateKeyPath, tenantId, notifyEvents, ccMirror, inboxPollInterval }
1148
1148
  // Auth modes: (1) appId + appPassword (client secret), or (2) appId + certPath + privateKeyPath + tenantId (certificate)
1149
1149
  teams: {
package/engine.js CHANGED
@@ -4427,11 +4427,11 @@ async function tickInner() {
4427
4427
  const ghPollEnabled = config.engine?.ghPollEnabled ?? ENGINE_DEFAULTS.ghPollEnabled;
4428
4428
  const prPollStatusEvery = Math.max(
4429
4429
  1,
4430
- Number(config.engine?.prPollStatusEvery ?? config.engine?.adoPollStatusEvery) || ENGINE_DEFAULTS.prPollStatusEvery
4430
+ Number(config.engine?.prPollStatusEvery) || ENGINE_DEFAULTS.prPollStatusEvery
4431
4431
  );
4432
4432
  const prPollCommentsEvery = Math.max(
4433
4433
  1,
4434
- Number(config.engine?.prPollCommentsEvery ?? config.engine?.adoPollCommentsEvery) || ENGINE_DEFAULTS.prPollCommentsEvery
4434
+ Number(config.engine?.prPollCommentsEvery) || ENGINE_DEFAULTS.prPollCommentsEvery
4435
4435
  );
4436
4436
 
4437
4437
  // 2.6. Poll PR status: build, review, merge (every prPollStatusEvery tick-equivalents, default ~12 minutes)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1830",
3
+ "version": "0.1.1832",
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"