@yemi33/minions 0.1.2295 → 0.1.2297

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.
@@ -16,15 +16,15 @@
16
16
  </div>
17
17
  </section>
18
18
  <section>
19
- <h2>Minions Members <span style="font-size:var(--text-sm);color:var(--border);font-weight:400;text-transform:none;letter-spacing:0">click for details</span></h2>
19
+ <h2>Minions Members <span class="qa-section-subtitle">click for details</span></h2>
20
20
  <div class="agents" id="agents-grid">Loading...</div>
21
21
  </section>
22
22
  <section>
23
- <h2>Pinned Context <button class="btn-add" style="margin-left:8px" onclick="openPinNoteModal()">+ Pin</button> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">injected into all agent prompts</span></h2>
23
+ <h2>Pinned Context <button class="btn-add" style="margin-left:8px" onclick="openPinNoteModal()">+ Pin</button> <span class="qa-section-subtitle">injected into all agent prompts</span></h2>
24
24
  <div id="pinned-content"><p class="empty">No pinned notes.</p></div>
25
25
  </section>
26
26
  <section>
27
- <h2>Dispatch Queue <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">agents being assigned and completing tasks</span></h2>
27
+ <h2>Dispatch Queue <span class="qa-section-subtitle">agents being assigned and completing tasks</span></h2>
28
28
  <div class="dispatch-stats" id="dispatch-stats"></div>
29
29
  <div id="dispatch-active"></div>
30
30
  <div id="dispatch-pending"></div>
package/engine.js CHANGED
@@ -6198,6 +6198,17 @@ function materializePlansAsWorkItems(config) {
6198
6198
 
6199
6199
  let totalCreated = 0;
6200
6200
  for (const [projName, { project, items: projItems }] of itemsByProject) {
6201
+ // Re-read PRD status from disk to guard against mid-tick status changes (P-f1a3b5c7).
6202
+ // A pause/reject/awaiting-approval signal may arrive between the outer-loop initial
6203
+ // read and this point (e.g. operator pauses via dashboard while the tick is running).
6204
+ // Re-reading here prevents phantom WI creation on a paused, rejected, or unapproved plan.
6205
+ const freshPrd = safeJsonNoRestore(path.join(PRD_DIR, file));
6206
+ const freshStatus = (freshPrd || {}).status || ((freshPrd || {}).requires_approval ? 'awaiting-approval' : null);
6207
+ if (freshStatus === PLAN_STATUS.PAUSED || freshStatus === PLAN_STATUS.REJECTED || freshStatus === 'awaiting-approval') {
6208
+ log('warn', `PRD ${file}: status changed to '${freshStatus}' mid-tick — skipping WI batch for ${projName} (P-f1a3b5c7)`);
6209
+ break;
6210
+ }
6211
+
6201
6212
  const wiPath = project ? projectWorkItemsPath(project) : path.join(MINIONS_DIR, 'work-items.json');
6202
6213
  let created = 0;
6203
6214
  const newlyCreatedIds = new Set(); // tracks IDs created in this pass for reconciliation scoping
@@ -9738,16 +9749,6 @@ async function tickInner() {
9738
9749
  } else if (!autoFixPaused) {
9739
9750
  _resetAutoFixPausedLogState();
9740
9751
  }
9741
- const adoPollEnabled = !pollingPaused && (config.engine?.adoPollEnabled ?? ENGINE_DEFAULTS.adoPollEnabled);
9742
- const ghPollEnabled = !pollingPaused && (config.engine?.ghPollEnabled ?? ENGINE_DEFAULTS.ghPollEnabled);
9743
- // P-c4d8e1a3 — granular per-poller flags. Each of the 6 PR-poll axes
9744
- // (ADO/GH × status/comments/reconcile) plus processPendingRebases gets
9745
- // its own resolution via shared.resolvePollFlag(...). Explicit granular
9746
- // values win; the legacy `adoPollEnabled` / `ghPollEnabled` macros
9747
- // silence their whole bundle as a fallback (including reconcile — a
9748
- // documented breaking change). Defaults: all true. pollingPaused (master
9749
- // killswitch) still composes with status + comments gates; reconcile and
9750
- // the rebase processor are recovery-sweep paths and are NOT gated by it.
9751
9752
  const adoStatusPollEnabled = !pollingPaused && resolvePollFlag(config.engine, 'adoPrStatusPollEnabled', 'adoPollEnabled');
9752
9753
  const ghStatusPollEnabled = !pollingPaused && resolvePollFlag(config.engine, 'ghPrStatusPollEnabled', 'ghPollEnabled');
9753
9754
  const adoCommentsPollEnabled = !pollingPaused && resolvePollFlag(config.engine, 'adoPrCommentsPollEnabled', 'adoPollEnabled');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.2295",
3
+ "version": "0.1.2297",
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"