@yemi33/minions 0.1.1855 → 0.1.1857
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
|
@@ -14,13 +14,15 @@ function cmdUpdateProjectList(projects) {
|
|
|
14
14
|
function showToast(id, msg, ok, durationMs) {
|
|
15
15
|
const el = document.getElementById(id);
|
|
16
16
|
if (!el) { console.warn('[showToast] no element with id', id, '— message:', msg); return; }
|
|
17
|
-
el.
|
|
17
|
+
el.classList.add('cmd-toast');
|
|
18
|
+
el.classList.remove('success', 'error');
|
|
19
|
+
el.classList.add(ok ? 'success' : 'error');
|
|
18
20
|
if (msg.includes('<a ') || msg.includes('<strong>')) {
|
|
19
21
|
el.innerHTML = msg;
|
|
20
22
|
} else {
|
|
21
23
|
el.textContent = msg;
|
|
22
24
|
}
|
|
23
|
-
setTimeout(() => { el.
|
|
25
|
+
setTimeout(() => { el.classList.remove('success', 'error'); }, durationMs || (msg.includes('<a ') ? 15000 : 4000));
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
function detectWorkItemType(text) {
|
|
@@ -152,12 +152,12 @@ async function kbSweep() {
|
|
|
152
152
|
});
|
|
153
153
|
const data = await res.json();
|
|
154
154
|
if (!data.ok) {
|
|
155
|
-
showToast('
|
|
155
|
+
showToast('kb-sweep-toast', 'Sweep failed: ' + (data.error || 'unknown'), false);
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
-
showToast('
|
|
158
|
+
showToast('kb-sweep-toast', data.alreadyRunning ? 'KB sweep already running' : 'KB sweep queued', true);
|
|
159
159
|
} catch (e) {
|
|
160
|
-
showToast('
|
|
160
|
+
showToast('kb-sweep-toast', 'Sweep error: ' + e.message, false);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -192,14 +192,14 @@ async function submitKbEntry(e) {
|
|
|
192
192
|
const content = document.getElementById('kb-new-content').value;
|
|
193
193
|
if (!title || !content) { if (btn) { btn.disabled = false; btn.textContent = 'Save'; } alert('Title and content are required'); return; }
|
|
194
194
|
try {
|
|
195
|
-
showToast('
|
|
195
|
+
showToast('kb-sweep-toast', 'KB entry created', true);
|
|
196
196
|
const res = await fetch('/api/knowledge', {
|
|
197
197
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
198
198
|
body: JSON.stringify({ category, title, content })
|
|
199
199
|
});
|
|
200
200
|
if (res.ok) { closeModal(); refreshKnowledgeBase(); }
|
|
201
|
-
else { if (btn) { btn.disabled = false; btn.textContent = 'Save'; } const d = await res.json().catch(() => ({})); showToast('
|
|
202
|
-
} catch (err) { if (btn) { btn.disabled = false; btn.textContent = 'Save'; } showToast('
|
|
201
|
+
else { if (btn) { btn.disabled = false; btn.textContent = 'Save'; } const d = await res.json().catch(() => ({})); showToast('kb-sweep-toast', 'KB create failed: ' + (d.error || 'unknown'), false); }
|
|
202
|
+
} catch (err) { if (btn) { btn.disabled = false; btn.textContent = 'Save'; } showToast('kb-sweep-toast', 'Error: ' + err.message, false); }
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
async function kbOpenItem(category, file) {
|
|
@@ -191,6 +191,7 @@ function _renderMeetingDetail(m) {
|
|
|
191
191
|
'<button class="pr-pager-btn" style="font-size:9px;padding:2px 8px" onclick="_archiveMeeting(\'' + escHtml(m.id) + '\')">Archive</button>' +
|
|
192
192
|
'<button class="pr-pager-btn" style="font-size:9px;padding:2px 8px;color:var(--red);border-color:var(--red)" onclick="_deleteMeeting(\'' + escHtml(m.id) + '\')">Delete</button>' +
|
|
193
193
|
'</div>' +
|
|
194
|
+
'<div id="meeting-plan-toast" class="cmd-toast cmd-toast-inline" style="margin-top:6px"></div>' +
|
|
194
195
|
'<div style="font-size:9px;color:var(--muted);margin-top:4px">Use the Q&A below to discuss action items' + (linkedPlan ? '' : ', then create a plan to execute them') + '.</div>';
|
|
195
196
|
} else {
|
|
196
197
|
html += '<div style="display:flex;gap:8px;border-top:1px solid var(--border);padding-top:8px">' +
|
|
@@ -422,7 +423,7 @@ async function _createPlanFromMeeting(id, btn) {
|
|
|
422
423
|
try {
|
|
423
424
|
const res = await fetch('/api/meetings/' + encodeURIComponent(id));
|
|
424
425
|
const data = await res.json();
|
|
425
|
-
if (!data.meeting) { showToast('
|
|
426
|
+
if (!data.meeting) { showToast('meeting-plan-toast', 'Meeting not found', false); return; }
|
|
426
427
|
const m = data.meeting;
|
|
427
428
|
|
|
428
429
|
const existing = _findLinkedPlan(m);
|
|
@@ -457,14 +458,14 @@ async function _createPlanFromMeeting(id, btn) {
|
|
|
457
458
|
});
|
|
458
459
|
const planData = await planRes.json();
|
|
459
460
|
if (!planRes.ok || !planData.ok) {
|
|
460
|
-
showToast('
|
|
461
|
+
showToast('meeting-plan-toast', 'Failed to queue plan task: ' + (planData.error || 'unknown'), false);
|
|
461
462
|
return;
|
|
462
463
|
}
|
|
463
|
-
showToast('
|
|
464
|
+
showToast('meeting-plan-toast', 'Plan task queued' + (planData.id ? ' (' + planData.id + ')' : ''), true);
|
|
464
465
|
if (typeof wakeEngine === 'function') wakeEngine();
|
|
465
466
|
if (typeof refresh === 'function') refresh();
|
|
466
467
|
} catch (e) {
|
|
467
|
-
showToast('
|
|
468
|
+
showToast('meeting-plan-toast', 'Error: ' + e.message, false);
|
|
468
469
|
}
|
|
469
470
|
}
|
|
470
471
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
</section>
|
|
9
9
|
<section>
|
|
10
10
|
<h2>Knowledge Base <span class="count" id="kb-count">0</span> <button class="pr-pager-btn" style="font-size:9px;padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateKbModal()">+ New</button><button id="kb-sweep-btn" onclick="kbSweep()" style="font-size:9px;padding:2px 8px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);border-radius:4px;cursor:pointer;margin-left:8px;vertical-align:middle">sweep</button><span id="kb-swept-time" style="font-size:10px;color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0;margin-left:8px"></span></h2>
|
|
11
|
+
<div id="kb-sweep-toast" class="cmd-toast cmd-toast-inline" style="margin:6px 0"></div>
|
|
11
12
|
<div class="kb-tabs" id="kb-tabs"></div>
|
|
12
13
|
<div class="kb-list" id="kb-list"><p class="empty">No knowledge entries yet. Notes are classified here after consolidation.</p></div>
|
|
13
14
|
</section>
|
package/dashboard/styles.css
CHANGED
|
@@ -512,6 +512,9 @@
|
|
|
512
512
|
}
|
|
513
513
|
.cmd-toast.success { display: block; background: rgba(63,185,80,0.15); color: var(--green); border: 1px solid var(--green); }
|
|
514
514
|
.cmd-toast.error { display: block; background: rgba(248,81,73,0.15); color: var(--red); border: 1px solid var(--red); }
|
|
515
|
+
/* Inline variant — overrides the floating top-right default for callers that want feedback in the local UI. */
|
|
516
|
+
.cmd-toast.cmd-toast-inline { position: static; box-shadow: none; max-width: 100%; }
|
|
517
|
+
.cmd-toast.cmd-toast-inline.success, .cmd-toast.cmd-toast-inline.error { display: block; }
|
|
515
518
|
@keyframes fadeIn { from{opacity:0;transform:translateY(-4px)} to{opacity:1;transform:translateY(0)} }
|
|
516
519
|
|
|
517
520
|
/* Engine Status */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1857",
|
|
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"
|