@yemi33/minions 0.1.642 → 0.1.643

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.643 (2026-04-09)
4
+
5
+ ### Features
6
+ - track notes, plans, and PRDs as work item artifacts
7
+
3
8
  ## 0.1.642 (2026-04-09)
4
9
 
5
10
  ### Features
@@ -372,9 +372,11 @@ async function _abortPipeline(id, btn) {
372
372
  try {
373
373
  var res = await fetch('/api/pipelines/abort', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: id }) });
374
374
  if (res.ok) {
375
- showToast('cmd-toast', 'Pipeline run aborted', true);
375
+ var d = await res.json().catch(function() { return {}; });
376
+ showToast('cmd-toast', 'Pipeline aborted — ' + (d.cancelledWorkItems || 0) + ' work items cancelled', true);
376
377
  if (btn) { btn.textContent = '\u2713 Aborted'; btn.style.color = 'var(--red)'; }
377
- setTimeout(function() { openPipelineDetail(id); }, 1500);
378
+ refresh();
379
+ openPipelineDetail(id);
378
380
  } else { var d = await res.json().catch(function() { return {}; }); alert('Abort failed: ' + (d.error || 'unknown')); if (btn) { btn.textContent = 'Abort'; btn.style.pointerEvents = ''; btn.style.opacity = ''; } }
379
381
  } catch (e) { alert('Error: ' + e.message); if (btn) { btn.textContent = 'Abort'; btn.style.pointerEvents = ''; btn.style.opacity = ''; } }
380
382
  }
@@ -451,6 +451,10 @@ function openWorkItemDetail(id) {
451
451
  var pillStyle = 'display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:10px;font-size:10px;cursor:pointer;background:var(--surface2);border:1px solid var(--border);color:var(--text)';
452
452
  if (arts.outputLog) artPills += '<span onclick="viewAgentOutput(\'' + escHtml(arts.outputLog) + '\')" style="' + pillStyle + '">📄 Output Log</span> ';
453
453
  if (arts.branch) artPills += '<span style="' + pillStyle + ';cursor:default">🌿 ' + escHtml(arts.branch) + '</span> ';
454
+ if (arts.plan) artPills += '<span onclick="planView(\'' + escHtml(arts.plan) + '\')" style="' + pillStyle + '">📋 Plan</span> ';
455
+ if (arts.prd) artPills += '<span onclick="planView(\'' + escHtml(arts.prd) + '\')" style="' + pillStyle + '">📄 PRD</span> ';
456
+ if (arts.sourcePlan) artPills += '<span onclick="planView(\'' + escHtml(arts.sourcePlan) + '\')" style="' + pillStyle + '">📋 Source Plan</span> ';
457
+ if (arts.notes && arts.notes.length > 0) arts.notes.forEach(function(n) { artPills += '<span onclick="closeModal();switchPage(\'inbox\')" style="' + pillStyle + '">📝 ' + escHtml(n.replace(/\.md$/, '').slice(0, 30)) + '</span> '; });
454
458
  if (arts.skills && arts.skills.length > 0) arts.skills.forEach(function(s) { artPills += '<span onclick="openSkill(\'' + escHtml(s) + '\',\'minions\',\'\')" style="' + pillStyle + '">⚙ ' + escHtml(s) + '</span> '; });
455
459
  if (artPills) html += field('Artifacts', '<div style="display:flex;flex-wrap:wrap;gap:4px">' + artPills + '</div>');
456
460
 
package/engine.js CHANGED
@@ -791,6 +791,12 @@ async function spawnAgent(dispatchItem, config) {
791
791
  try {
792
792
  const artWiPath = resolveWorkItemPath(dispatchItem.meta);
793
793
  if (artWiPath) {
794
+ // Collect inbox notes written by this agent today
795
+ const _artToday = shared.dateStamp();
796
+ const _artInboxDir = path.join(MINIONS_DIR, 'notes', 'inbox');
797
+ let _artNotes = [];
798
+ try { _artNotes = shared.safeReadDir(_artInboxDir).filter(f => f.includes(agentId) && f.includes(_artToday)); } catch {}
799
+
794
800
  mutateJsonFileLocked(artWiPath, data => {
795
801
  if (!Array.isArray(data)) return data;
796
802
  const wi = data.find(i => i.id === dispatchItem.meta.item.id);
@@ -800,6 +806,11 @@ async function spawnAgent(dispatchItem, config) {
800
806
  if (dispatchItem.meta.branch) arts.branch = dispatchItem.meta.branch;
801
807
  if (wi._pr) arts.pr = wi._pr;
802
808
  if (wi._prUrl) arts.prUrl = wi._prUrl;
809
+ if (_artNotes.length > 0) arts.notes = _artNotes;
810
+ // Track plan/PRD artifacts from dispatch metadata
811
+ if (dispatchItem.meta.item?.planFile) arts.plan = dispatchItem.meta.item.planFile;
812
+ if (dispatchItem.meta.item?._prdFilename) arts.prd = dispatchItem.meta.item._prdFilename;
813
+ if (dispatchItem.meta.item?.sourcePlan) arts.sourcePlan = dispatchItem.meta.item.sourcePlan;
803
814
  wi._artifacts = arts;
804
815
  return data;
805
816
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.642",
3
+ "version": "0.1.643",
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"