@yemi33/minions 0.1.88 → 0.1.90

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.90 (2026-04-01)
4
+
5
+ ### Dashboard
6
+ - dashboard/js/command-center.js
7
+
8
+ ## 0.1.89 (2026-04-01)
9
+
10
+ ### Dashboard
11
+ - dashboard.js
12
+ - dashboard/js/command-center.js
13
+ - dashboard/js/render-meetings.js
14
+
3
15
  ## 0.1.88 (2026-04-01)
4
16
 
5
17
  ### Dashboard
@@ -347,7 +347,7 @@ async function ccExecuteAction(action) {
347
347
  status.innerHTML = '&#10003; Plan edited: <strong>' + escHtml(action.file) + '</strong>';
348
348
  status.style.color = 'var(--green)';
349
349
  } else {
350
- status.innerHTML = data.answer ? escHtml(data.answer) : '&#10007; Could not edit plan';
350
+ status.innerHTML = data.answer ? renderMd(data.answer) : '&#10007; Could not edit plan';
351
351
  status.style.color = data.answer ? 'var(--muted)' : 'var(--red)';
352
352
  }
353
353
  break;
@@ -379,7 +379,7 @@ async function ccExecuteAction(action) {
379
379
  status.innerHTML = '&#10003; Edited: <strong>' + escHtml(action.file) + '</strong>';
380
380
  status.style.color = 'var(--green)';
381
381
  } else {
382
- status.innerHTML = data.answer ? escHtml(data.answer) : '&#10007; Could not edit file';
382
+ status.innerHTML = data.answer ? renderMd(data.answer) : '&#10007; Could not edit file';
383
383
  status.style.color = data.answer ? 'var(--muted)' : 'var(--red)';
384
384
  }
385
385
  break;
@@ -414,11 +414,11 @@ async function ccExecuteAction(action) {
414
414
  case 'create-meeting': {
415
415
  const res = await fetch('/api/meetings', {
416
416
  method: 'POST', headers: { 'Content-Type': 'application/json' },
417
- body: JSON.stringify({ topic: action.topic, agents: action.agents, rounds: action.rounds, project: action.project })
417
+ body: JSON.stringify({ title: action.title, agenda: action.agenda, participants: action.agents, rounds: action.rounds, project: action.project })
418
418
  });
419
419
  if (!res.ok) { const d = await res.json().catch(() => ({})); throw new Error(d.error || 'Meeting create failed'); }
420
420
  const d = await res.json();
421
- status.innerHTML = '&#10003; Meeting started: <strong>' + escHtml(action.topic) + '</strong>' + (d.id ? ' (' + escHtml(d.id) + ')' : '');
421
+ status.innerHTML = '&#10003; Meeting started: <strong>' + escHtml(action.title) + '</strong>' + (d.id ? ' (' + escHtml(d.id) + ')' : '');
422
422
  status.style.color = 'var(--green)';
423
423
  wakeEngine();
424
424
  break;
@@ -83,9 +83,9 @@ function openMeetingDetail(id) {
83
83
  '<span style="font-size:10px;color:var(--muted)">' + escHtml(m.createdAt?.slice(0, 16).replace('T', ' ') || '') + '</span>' +
84
84
  '</div>';
85
85
 
86
- // Agenda
87
- html += '<div style="background:var(--surface2);padding:8px 12px;border-radius:6px;font-size:12px">' +
88
- '<strong>Agenda:</strong> ' + escHtml(m.agenda) + '</div>';
86
+ // Agenda — render markdown-like formatting
87
+ html += '<div style="background:var(--surface2);padding:8px 12px;border-radius:6px;font-size:12px;white-space:pre-wrap;line-height:1.6">' +
88
+ '<strong>Agenda:</strong>\n' + renderMd(m.agenda || '') + '</div>';
89
89
 
90
90
  // Per-agent panels
91
91
  for (const agent of (m.participants || [])) {
@@ -96,14 +96,14 @@ function openMeetingDetail(id) {
96
96
  if (m.findings?.[agent]) {
97
97
  html += '<div style="padding:8px 12px;font-size:11px;border-bottom:1px solid var(--border)">' +
98
98
  '<div style="color:var(--muted);font-size:10px;margin-bottom:4px">Round 1 — Findings</div>' +
99
- '<div style="white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto">' + escHtml(m.findings[agent].content || '') + '</div></div>';
99
+ '<div style="word-break:break-word;max-height:300px;overflow-y:auto">' + renderMd(m.findings[agent].content || '') + '</div></div>';
100
100
  }
101
101
 
102
102
  // Debate
103
103
  if (m.debate?.[agent]) {
104
104
  html += '<div style="padding:8px 12px;font-size:11px;border-bottom:1px solid var(--border)">' +
105
105
  '<div style="color:var(--muted);font-size:10px;margin-bottom:4px">Round 2 — Debate</div>' +
106
- '<div style="white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto">' + escHtml(m.debate[agent].content || '') + '</div></div>';
106
+ '<div style="word-break:break-word;max-height:300px;overflow-y:auto">' + renderMd(m.debate[agent].content || '') + '</div></div>';
107
107
  }
108
108
 
109
109
  // Status
@@ -118,7 +118,7 @@ function openMeetingDetail(id) {
118
118
  if (m.conclusion) {
119
119
  html += '<div style="background:rgba(63,185,80,0.08);border:1px solid var(--green);border-radius:6px;padding:10px 14px">' +
120
120
  '<div style="color:var(--green);font-weight:600;font-size:12px;margin-bottom:6px">Conclusion (by ' + escHtml(m.conclusion.agent || '?') + ')</div>' +
121
- '<div style="font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:400px;overflow-y:auto">' + escHtml(m.conclusion.content || '') + '</div></div>';
121
+ '<div style="font-size:12px;word-break:break-word;max-height:400px;overflow-y:auto">' + renderMd(m.conclusion.content || '') + '</div></div>';
122
122
  }
123
123
 
124
124
  // Human notes
package/dashboard.js CHANGED
@@ -373,7 +373,7 @@ Available action types:
373
373
  - **file-edit**: Edit any minions file via LLM. Fields: file (path relative to minions dir), instruction (what to change).
374
374
  - **schedule**: Create or update a scheduled task. Fields: id (unique slug), title, cron (3-field: minute hour dayOfWeek), workType (implement/test/explore/ask/review/fix), project (optional), agent (optional), description (optional), priority (optional), enabled (default true). Example cron: "0 9 2" = every Tuesday at 9am.
375
375
  - **delete-schedule**: Delete a scheduled task. Fields: id.
376
- - **create-meeting**: Start a team meeting. Fields: topic, agents (array of agent IDs), rounds (optional, default 3), project (optional).
376
+ - **create-meeting**: Start a team meeting. Fields: title (short meeting name), agenda (detailed text — what agents should investigate/debate, numbered items work best), agents (array of agent IDs), rounds (optional, default 3), project (optional).
377
377
 
378
378
  ## Rules
379
379
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.88",
3
+ "version": "0.1.90",
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"