@yemi33/minions 0.1.927 → 0.1.929

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,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.927 (2026-04-13)
3
+ ## 0.1.929 (2026-04-14)
4
4
 
5
5
  ### Features
6
6
  - doc-chat abort kills LLM process + queued messages auto-process
@@ -20,6 +20,8 @@
20
20
  - add red dot notification on CC tab when response completes (#934) (#946)
21
21
 
22
22
  ### Fixes
23
+ - steering kill on no-session re-queues dispatch instead of erroring (#1015)
24
+ - inject cached ADO token into spawned agents (#998) (#1012)
23
25
  - qaAbort race + skip kill on completed doc-chat
24
26
  - doc-chat Stop button actually works — release server guard on disconnect
25
27
  - CC streaming auto-retries fresh session when resume fails
@@ -38,8 +40,6 @@
38
40
  - CC queued messages sent to wrong tab after tab switch
39
41
  - pass sysPromptPath instead of steerPromptPath as system prompt in steering resume (#962)
40
42
  - PRD item display dispatched/in-progress status conflation (closes #950) (#955)
41
- - remove KB watchdog — checkpoint never written, restore never worked
42
- - make KB sweep endpoint async with status polling (#933)
43
43
 
44
44
  ### Other
45
45
  - test(preflight): add unit tests for findClaudeBinary, runPreflight, printPreflight, checkOrExit (#953)
package/engine.js CHANGED
@@ -855,6 +855,13 @@ async function spawnAgent(dispatchItem, config) {
855
855
  // Spawn the claude process
856
856
  const childEnv = shared.cleanChildEnv();
857
857
 
858
+ // Inject cached ADO token so agents skip re-authentication (#998)
859
+ // getAdoToken() returns cached token (30-min TTL) or null — never blocks on browser auth
860
+ try {
861
+ const adoToken = await getAdoToken();
862
+ if (adoToken) childEnv.MINIONS_ADO_TOKEN = adoToken;
863
+ } catch { /* non-fatal — agent can still authenticate on its own */ }
864
+
858
865
  // Spawn via wrapper script — node directly (no bash intermediary)
859
866
  // spawn-agent.js handles CLAUDECODE env cleanup and claude binary resolution
860
867
  const spawnScript = path.join(ENGINE_DIR, 'spawn-agent.js');
@@ -1023,6 +1030,11 @@ async function spawnAgent(dispatchItem, config) {
1023
1030
 
1024
1031
  const spawnScript = path.join(ENGINE_DIR, 'spawn-agent.js');
1025
1032
  const childEnv = shared.cleanChildEnv();
1033
+ // Inject cached ADO token for steering session too (#998)
1034
+ try {
1035
+ const adoToken = await getAdoToken();
1036
+ if (adoToken) childEnv.MINIONS_ADO_TOKEN = adoToken;
1037
+ } catch { /* non-fatal */ }
1026
1038
  let resumeProc;
1027
1039
  try {
1028
1040
  resumeProc = runFile(process.execPath, [spawnScript, steerPromptPath, sysPromptPath, ...resumeArgs], {
@@ -1098,6 +1110,34 @@ async function spawnAgent(dispatchItem, config) {
1098
1110
  return;
1099
1111
  }
1100
1112
 
1113
+ // Check if this was a no-session steering kill (#1014) — re-queue for retry instead of erroring.
1114
+ // timeout.js sets _steeringNoSession when it kills an agent that hasn't established a sessionId.
1115
+ // The steering message is already saved to inbox, so re-queuing lets the engine retry and the
1116
+ // agent picks up the message on the next dispatch.
1117
+ if (procInfo?._steeringNoSession) {
1118
+ log('info', `Steering no-session: re-queue ${agentId} (${id}) — dispatch moved back to pending`);
1119
+ activeProcesses.delete(id);
1120
+ realActivityMap.delete(id);
1121
+ // Move dispatch item from active back to pending so engine retries
1122
+ mutateDispatch((dp) => {
1123
+ const idx = dp.active.findIndex(d => d.id === id);
1124
+ if (idx >= 0) {
1125
+ const item = dp.active.splice(idx, 1)[0];
1126
+ delete item.started_at;
1127
+ delete item.workerState;
1128
+ delete item.workerStateAt;
1129
+ delete item.workerStateDetail;
1130
+ dp.pending.push(item);
1131
+ }
1132
+ return dp;
1133
+ });
1134
+ // Cleanup temp files
1135
+ try { fs.unlinkSync(sysPromptPath); } catch { /* cleanup */ }
1136
+ try { fs.unlinkSync(promptPath); } catch { /* cleanup */ }
1137
+ try { fs.unlinkSync(promptPath.replace(/prompt-/, 'pid-').replace(/\.md$/, '.pid')); } catch { /* cleanup */ }
1138
+ return;
1139
+ }
1140
+
1101
1141
  activeProcesses.delete(id);
1102
1142
  realActivityMap.delete(id); // Clean up real activity tracking
1103
1143
 
@@ -1405,7 +1445,7 @@ function reconcileItemsWithPrs(items, allPrs, { onlyIds } = {}) {
1405
1445
  // ─── Inbox Consolidation (extracted to engine/consolidation.js) ──────────────
1406
1446
 
1407
1447
  const { consolidateInbox } = require('./engine/consolidation');
1408
- const { pollPrStatus, pollPrHumanComments, reconcilePrs, checkLiveReviewStatus: adoCheckLiveReview, needsAdoPollRetry } = require('./engine/ado');
1448
+ const { pollPrStatus, pollPrHumanComments, reconcilePrs, checkLiveReviewStatus: adoCheckLiveReview, needsAdoPollRetry, getAdoToken } = require('./engine/ado');
1409
1449
  const { pollPrStatus: ghPollPrStatus, pollPrHumanComments: ghPollPrHumanComments, reconcilePrs: ghReconcilePrs, checkLiveReviewStatus: ghCheckLiveReview } = require('./engine/github');
1410
1450
 
1411
1451
  // ─── State Snapshot ─────────────────────────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.927",
3
+ "version": "0.1.929",
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"