@yemi33/minions 0.1.399 → 0.1.400

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,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.399 (2026-04-06)
3
+ ## 0.1.400 (2026-04-06)
4
+
5
+ ### Features
6
+ - pipeline stages detect and link inbox notes as artifacts
4
7
 
5
8
  ### Fixes
6
9
  - auto-detect main branch when configured mainBranch doesn't exist
@@ -41,6 +41,11 @@ function _renderArtifactLinks(artifacts) {
41
41
  links.push('<span style="' + linkStyle + ';cursor:default;color:var(--muted);background:color-mix(in srgb, var(--muted) 8%, transparent);border-color:color-mix(in srgb, var(--muted) 15%, transparent)" title="Sub-stage ' + escHtml(id) + '">⚓ ' + escHtml(id) + '</span>');
42
42
  });
43
43
 
44
+ // Notes → navigate to inbox page
45
+ (artifacts.notes || []).forEach(function(name) {
46
+ links.push('<span style="' + linkStyle + '" onclick="event.stopPropagation();closeModal();switchPage(\'inbox\')" title="Note: ' + escHtml(name) + '">📝 ' + escHtml(name.replace(/\.md$/, '').replace(/^\d{4}-\d{2}-\d{2}-/, '').slice(0, 30)) + '</span>');
47
+ });
48
+
44
49
  if (links.length === 0) return '';
45
50
  return '<div style="margin-top:6px;display:flex;flex-wrap:wrap;gap:4px">' + links.join('') + '</div>';
46
51
  }
@@ -552,12 +552,34 @@ async function discoverPipelineWork(config) {
552
552
  }).join('\n\n');
553
553
  }
554
554
 
555
+ // Scan for inbox/archive notes created by this stage's agents
556
+ try {
557
+ const notesDirs = [
558
+ path.join(__dirname, '..', 'notes', 'inbox'),
559
+ path.join(__dirname, '..', 'notes', 'archive'),
560
+ ];
561
+ const stageWiIds = stageState.artifacts?.workItems || [];
562
+ const notes = [];
563
+ for (const dir of notesDirs) {
564
+ for (const f of safeReadDir(dir).filter(n => n.endsWith('.md'))) {
565
+ if (stageWiIds.some(id => f.includes(id)) || f.includes(stage.id) || f.includes(pipeline.id)) {
566
+ notes.push(f);
567
+ }
568
+ }
569
+ }
570
+ if (notes.length > 0) {
571
+ stageState.artifacts = stageState.artifacts || {};
572
+ stageState.artifacts.notes = notes;
573
+ }
574
+ } catch { /* optional */ }
575
+
555
576
  updateRunStage(pipeline.id, activeRun.runId, stage.id, {
556
- status: PIPELINE_STATUS.COMPLETED, completedAt: ts(), output
577
+ status: PIPELINE_STATUS.COMPLETED, completedAt: ts(), output,
578
+ artifacts: stageState.artifacts,
557
579
  });
558
580
  stageState.status = PIPELINE_STATUS.COMPLETED;
559
581
  stageState.output = output;
560
- log('info', `Pipeline ${pipeline.id}: stage ${stage.id} completed`);
582
+ log('info', `Pipeline ${pipeline.id}: stage ${stage.id} completed${stageState.artifacts?.notes?.length ? ` (${stageState.artifacts.notes.length} notes)` : ''}`);
561
583
  } else {
562
584
  anyRunning = true;
563
585
  allComplete = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.399",
3
+ "version": "0.1.400",
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"