@yemi33/minions 0.1.658 → 0.1.660

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,12 +1,16 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.658 (2026-04-09)
3
+ ## 0.1.660 (2026-04-09)
4
4
 
5
5
  ### Fixes
6
+ - retry button broken for project-level work items, add _source field
6
7
  - use PowerShell instead of wmic for process kill on Windows 11
7
8
  - bust require cache for package.json in engine start
8
9
  - PRD discovery loop, github.js duplicate const, transcript null guards
9
10
 
11
+ ### Other
12
+ - perf: run checkSteering every 3s instead of every 60s tick
13
+
10
14
  ## 0.1.655 (2026-04-09)
11
15
 
12
16
  ### Fixes
package/dashboard.js CHANGED
@@ -997,17 +997,27 @@ const server = http.createServer(async (req, res) => {
997
997
  const { id, source } = body;
998
998
  if (!id) return jsonReply(res, 400, { error: 'id required' });
999
999
 
1000
- // Find the right file
1000
+ // Find the right file — check source first, then search all project files
1001
1001
  let wiPath;
1002
- if (!source || source === 'central') {
1003
- wiPath = path.join(MINIONS_DIR, 'work-items.json');
1004
- } else {
1002
+ if (source && source !== 'central') {
1005
1003
  const proj = PROJECTS.find(p => p.name === source);
1006
- if (proj) {
1007
- wiPath = shared.projectWorkItemsPath(proj);
1004
+ if (proj) wiPath = shared.projectWorkItemsPath(proj);
1005
+ }
1006
+ if (!wiPath) {
1007
+ // Search central first, then all projects
1008
+ const centralPath = path.join(MINIONS_DIR, 'work-items.json');
1009
+ const centralItems = shared.safeJson(centralPath) || [];
1010
+ if (centralItems.some(i => i.id === id)) {
1011
+ wiPath = centralPath;
1012
+ } else {
1013
+ for (const proj of PROJECTS) {
1014
+ const projPath = shared.projectWorkItemsPath(proj);
1015
+ const projItems = shared.safeJson(projPath) || [];
1016
+ if (projItems.some(i => i.id === id)) { wiPath = projPath; break; }
1017
+ }
1008
1018
  }
1009
1019
  }
1010
- if (!wiPath) return jsonReply(res, 404, { error: 'source not found' });
1020
+ if (!wiPath) return jsonReply(res, 404, { error: 'work item not found in any source' });
1011
1021
 
1012
1022
  let found = false;
1013
1023
  mutateJsonFileLocked(wiPath, (items) => {
@@ -3922,7 +3932,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3922
3932
  const agentDir = path.join(MINIONS_DIR, 'agents', agentId);
3923
3933
  if (!fs.existsSync(agentDir)) return jsonReply(res, 404, { error: 'Agent not found' });
3924
3934
 
3925
- // Write steering file — engine picks it up on next tick
3935
+ // Write steering file
3926
3936
  safeWrite(steerPath, message);
3927
3937
 
3928
3938
  // Also append to live-output.log so it shows in the chat view
package/engine/cli.js CHANGED
@@ -359,15 +359,18 @@ const commands = {
359
359
  // Start tick loop
360
360
  const tickTimer = setInterval(() => e.tick(), interval);
361
361
 
362
- // Fast poll for immediate wakeup signals (checks control.json every 2s)
363
- const wakeupTimer = setInterval(() => {
362
+ // Fast poll: check steering every 3s (lightweight — just fs.stat per agent)
363
+ // and wakeup signals every 3s (control.json read)
364
+ const { checkSteering } = require('./timeout');
365
+ const fastPollTimer = setInterval(() => {
366
+ try { checkSteering(getConfig()); } catch {}
364
367
  const ctrl = getControl();
365
368
  if (ctrl._wakeupAt && Date.now() - ctrl._wakeupAt < 5000) {
366
369
  delete ctrl._wakeupAt;
367
370
  safeWrite(CONTROL_PATH, ctrl);
368
371
  e.tick();
369
372
  }
370
- }, 2000);
373
+ }, 3000);
371
374
 
372
375
  console.log(`Tick interval: ${interval / 1000}s | Max concurrent: ${config.engine?.maxConcurrent || 5}`);
373
376
  console.log('Press Ctrl+C to stop');
package/engine.js CHANGED
@@ -1400,6 +1400,7 @@ function materializePlansAsWorkItems(config) {
1400
1400
  branchStrategy: plan.branch_strategy || 'parallel',
1401
1401
  featureBranch: plan.feature_branch || null,
1402
1402
  project: item.project || plan.project || null,
1403
+ _source: projName,
1403
1404
  };
1404
1405
  existingItems.push(newItem);
1405
1406
  newlyCreatedIds.add(id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.658",
3
+ "version": "0.1.660",
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"