@yemi33/minions 0.1.683 → 0.1.684
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 +5 -0
- package/dashboard/js/render-work-items.js +14 -12
- package/engine/queries.js +11 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -458,8 +458,17 @@ function openWorkItemDetail(id) {
|
|
|
458
458
|
if (arts.sourcePlan) artPills += '<span onclick="planView(\'' + escHtml(arts.sourcePlan) + '\')" style="' + pillStyle + '">📋 Source Plan</span> ';
|
|
459
459
|
if (arts.notes && arts.notes.length > 0) arts.notes.forEach(function(n) {
|
|
460
460
|
var noteFile = (n && typeof n === 'object') ? (n.file || n) : String(n || '');
|
|
461
|
-
|
|
462
|
-
|
|
461
|
+
// KB entries prefixed with 'kb:category/file'
|
|
462
|
+
if (noteFile.startsWith('kb:')) {
|
|
463
|
+
var kbParts = noteFile.slice(3).split('/');
|
|
464
|
+
var kbCat = kbParts[0];
|
|
465
|
+
var kbFile = kbParts.slice(1).join('/');
|
|
466
|
+
var kbLabel = kbFile.replace(/\.md$/, '').slice(0, 30);
|
|
467
|
+
artPills += '<span onclick="kbOpenItem(\'' + escHtml(kbCat) + '\',\'' + escHtml(kbFile) + '\')" style="' + pillStyle + '">📚 ' + escHtml(kbLabel) + '</span> ';
|
|
468
|
+
} else {
|
|
469
|
+
var noteLabel = noteFile.replace(/\.md$/, '').slice(0, 30);
|
|
470
|
+
artPills += '<span onclick="openInboxNote(\'' + escHtml(noteFile) + '\')" style="' + pillStyle + '">📝 ' + escHtml(noteLabel) + '</span> ';
|
|
471
|
+
}
|
|
463
472
|
});
|
|
464
473
|
if (arts.skills && arts.skills.length > 0) arts.skills.forEach(function(s) { artPills += '<span onclick="openSkill(\'' + escHtml(s) + '\',\'minions\',\'\')" style="' + pillStyle + '">⚙ ' + escHtml(s) + '</span> '; });
|
|
465
474
|
if (artPills) html += field('Artifacts', '<div style="display:flex;flex-wrap:wrap;gap:4px">' + artPills + '</div>');
|
|
@@ -503,17 +512,10 @@ function viewAgentOutput(logPath) {
|
|
|
503
512
|
}
|
|
504
513
|
|
|
505
514
|
function openInboxNote(filename) {
|
|
506
|
-
var
|
|
507
|
-
var baseName = isArchive ? filename.replace('archive/', '') : filename;
|
|
508
|
-
// Try inbox first
|
|
509
|
-
var idx = (inboxData || []).findIndex(function(item) { return item.name === baseName; });
|
|
515
|
+
var idx = (inboxData || []).findIndex(function(item) { return item.name === filename; });
|
|
510
516
|
if (idx >= 0) { openModal(idx); return; }
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
document.getElementById('modal-body').innerHTML = '<p style="color:var(--muted)">This note was consolidated into the Knowledge Base.' +
|
|
514
|
-
(isArchive ? ' <span style="font-size:10px">(archived: ' + escHtml(baseName) + ')</span>' : '') +
|
|
515
|
-
'</p><div style="margin-top:8px"><button class="pr-pager-btn" onclick="closeModal();switchPage(\'inbox\')">Go to Notes & KB</button></div>';
|
|
516
|
-
document.getElementById('modal').classList.add('open');
|
|
517
|
+
closeModal();
|
|
518
|
+
switchPage('inbox');
|
|
517
519
|
}
|
|
518
520
|
|
|
519
521
|
window.MinionsWork = { wiRow, renderWorkItems, editWorkItem, submitWorkItemEdit, deleteWorkItem, archiveWorkItem, toggleWorkItemArchive, retryWorkItem, wiPrev, wiNext, feedbackWorkItem, submitFeedback, openCreateWorkItemModal, openWorkItemDetail, openAllWorkItems, viewAgentOutput, openInboxNote };
|
package/engine/queries.js
CHANGED
|
@@ -592,10 +592,12 @@ function getKnowledgeBaseEntries() {
|
|
|
592
592
|
const title = titleMatch ? titleMatch[1].trim() : f.replace(/\.md$/, '');
|
|
593
593
|
const agentMatch = f.match(/^\d{4}-\d{2}-\d{2}-(\w+)-/);
|
|
594
594
|
const dateMatch = f.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
595
|
+
const sourceMatch = content.match(/^source:\s*(.+)/m);
|
|
595
596
|
entries.push({
|
|
596
597
|
cat, file: f, title,
|
|
597
598
|
agent: agentMatch ? agentMatch[1] : '',
|
|
598
599
|
date: dateMatch ? dateMatch[1] : '',
|
|
600
|
+
source: sourceMatch ? sourceMatch[1].trim() : '',
|
|
599
601
|
preview: content.slice(0, 200),
|
|
600
602
|
size: content.length,
|
|
601
603
|
});
|
|
@@ -719,7 +721,8 @@ function getWorkItems(config) {
|
|
|
719
721
|
}
|
|
720
722
|
const _agentDirCache = {};
|
|
721
723
|
const _inboxFiles = safeReadDir(INBOX_DIR);
|
|
722
|
-
|
|
724
|
+
// Use cached KB entries (includes source frontmatter field)
|
|
725
|
+
const _kbEntries = getKnowledgeBaseEntries();
|
|
723
726
|
for (const item of allItems) {
|
|
724
727
|
const arts = {};
|
|
725
728
|
const agentId = item.dispatched_to || item.agent;
|
|
@@ -733,11 +736,14 @@ function getWorkItems(config) {
|
|
|
733
736
|
const matchLog = _agentDirCache[agentId].find(f => f.includes(dispatchId));
|
|
734
737
|
if (matchLog) arts.outputLog = agentId + '/' + matchLog;
|
|
735
738
|
}
|
|
736
|
-
//
|
|
739
|
+
// Notes: check inbox first, then KB (consolidated destination) via source field
|
|
737
740
|
const itemId = item.id || '___';
|
|
738
|
-
const
|
|
739
|
-
const
|
|
740
|
-
const allNotes = [
|
|
741
|
+
const matchInbox = _inboxFiles.filter(f => f.includes(agentId) && f.includes(itemId));
|
|
742
|
+
const matchKb = _kbEntries.filter(kb => kb.source && kb.source.includes(agentId) && kb.source.includes(itemId));
|
|
743
|
+
const allNotes = [
|
|
744
|
+
...matchInbox,
|
|
745
|
+
...matchKb.map(kb => 'kb:' + kb.cat + '/' + kb.file),
|
|
746
|
+
];
|
|
741
747
|
if (allNotes.length > 0) arts.notes = allNotes;
|
|
742
748
|
}
|
|
743
749
|
if (item.branch || item.featureBranch) arts.branch = item.branch || item.featureBranch;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.684",
|
|
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"
|