@yemi33/minions 0.1.1790 → 0.1.1792
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 +10 -0
- package/dashboard/js/render-prd.js +16 -7
- package/engine/copilot-models.json +1 -1
- package/engine.js +6 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -84,6 +84,14 @@ function _renderPrLink(pr, opts) {
|
|
|
84
84
|
return '<a href="' + escHtml(pr.url || '#') + '" target="_blank" rel="noopener" onclick="event.stopPropagation()" style="font-size:' + size + ';color:' + statusColor + ';text-decoration:underline;cursor:pointer;margin-left:4px" title="' + escHtml((pr.title || '') + ' (' + (pr.status || 'active') + ')') + '">' + statusIcon + ' ' + escHtml(pr.id) + '</a>';
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
function _renderPrdWorkItemIdBadge(workItemId, prdItemId, size, padding) {
|
|
88
|
+
const id = workItemId === undefined || workItemId === null ? '' : String(workItemId).trim();
|
|
89
|
+
const itemId = prdItemId === undefined || prdItemId === null ? '' : String(prdItemId).trim();
|
|
90
|
+
const fontSize = size || '9px';
|
|
91
|
+
const badgePadding = padding || '1px 5px';
|
|
92
|
+
return (!id || id === itemId) ? '' : '<span style="font-size:' + fontSize + ';color:var(--muted);background:var(--surface);padding:' + badgePadding + ';border-radius:3px;border:1px solid var(--border)" title="Work item: ' + escHtml(id) + '">' + escHtml(id) + '</span>';
|
|
93
|
+
}
|
|
94
|
+
|
|
87
95
|
function renderPrdProgress(prog) {
|
|
88
96
|
const el = document.getElementById('prd-progress-content');
|
|
89
97
|
const countEl = document.getElementById('prd-progress-count');
|
|
@@ -153,7 +161,7 @@ function renderPrdProgress(prog) {
|
|
|
153
161
|
return '<span style="font-size:9px;font-weight:700;padding:2px 6px;border-radius:3px;letter-spacing:0.5px;white-space:nowrap;' + style + '">' + label + '</span>';
|
|
154
162
|
};
|
|
155
163
|
|
|
156
|
-
// Build work item lookup
|
|
164
|
+
// Build work item lookup by actual work item ID.
|
|
157
165
|
const wiById = {};
|
|
158
166
|
for (const w of (window._lastWorkItems || [])) {
|
|
159
167
|
if (w.id) wiById[w.id] = w;
|
|
@@ -180,10 +188,10 @@ function renderPrdProgress(prog) {
|
|
|
180
188
|
const iid = escHtml(i.id || '');
|
|
181
189
|
|
|
182
190
|
// Linked work item info
|
|
183
|
-
const
|
|
191
|
+
const workItemId = i.workItemId || i._workItemId || i.work_item_id || i.id;
|
|
192
|
+
const wi = wiById[workItemId] || wiById[i.id];
|
|
184
193
|
const wiAgent = wi?.dispatched_to ? (agentData.find(a => a.id === wi.dispatched_to) || {}) : null;
|
|
185
|
-
const wiLabel = wi ?
|
|
186
|
-
escHtml(wi.id) + '</span>' : '';
|
|
194
|
+
const wiLabel = _renderPrdWorkItemIdBadge(wi ? wi.id : workItemId, i.id);
|
|
187
195
|
const agentLabel = wiAgent ? '<span style="font-size:9px;color:var(--muted)" title="' + escHtml(wiAgent.name || wi.dispatched_to) + '">' +
|
|
188
196
|
(wiAgent.emoji || '') + ' ' + escHtml(wiAgent.name || wi.dispatched_to) + '</span>' : '';
|
|
189
197
|
|
|
@@ -401,13 +409,14 @@ function renderPrdProgress(prog) {
|
|
|
401
409
|
const borderColor = statusColor(i.status, i.id);
|
|
402
410
|
const src = escHtml(i.source || '');
|
|
403
411
|
const iid = escHtml(i.id || '');
|
|
404
|
-
const
|
|
412
|
+
const workItemId = i.workItemId || i._workItemId || i.work_item_id || i.id;
|
|
413
|
+
const wiForCard = wi[workItemId] || wi[i.id];
|
|
414
|
+
const agentId = wiForCard?.dispatched_to || '';
|
|
405
415
|
const agentInfo = agentId ? (agentData.find(a => a.id === agentId) || {}) : null;
|
|
406
416
|
const agentDisplay = agentInfo ? (agentInfo.emoji || '') + ' ' + escHtml(agentInfo.name || agentId) : (agentId ? escHtml(agentId) : '');
|
|
407
417
|
const deps = (i.depends_on || []).join(', ');
|
|
408
418
|
const wipAnim = i.status === 'in-progress' ? 'animation:prdWipPulse 2s infinite;' : '';
|
|
409
|
-
const
|
|
410
|
-
const wiIdBadge = wiForCard ? '<span style="font-size:8px;color:var(--muted);background:var(--surface);padding:1px 4px;border-radius:3px;border:1px solid var(--border)" title="Work item: ' + escHtml(wiForCard.id) + '">' + escHtml(wiForCard.id) + '</span>' : '';
|
|
419
|
+
const wiIdBadge = _renderPrdWorkItemIdBadge(wiForCard ? wiForCard.id : workItemId, i.id, '8px', '1px 4px');
|
|
411
420
|
const isDoneCard = i.status === 'done' || (wiForCard && wiForCard.status === 'done');
|
|
412
421
|
const reopenBtnGraph = isDoneCard
|
|
413
422
|
? '<span onclick="event.stopPropagation();prdItemReopen(\'' + src + '\',\'' + iid + '\')" style="font-size:8px;color:var(--blue);cursor:pointer;padding:1px 4px;background:rgba(56,139,253,0.1);border:1px solid rgba(56,139,253,0.3);border-radius:3px" title="Re-open: set to updated so engine re-dispatches on existing branch">re-open</span>'
|
package/engine.js
CHANGED
|
@@ -102,6 +102,11 @@ const mutatePullRequests = shared.mutatePullRequests;
|
|
|
102
102
|
const withFileLock = shared.withFileLock;
|
|
103
103
|
|
|
104
104
|
const CHECKPOINT_CAP_FAIL_REASON = 'Exceeded 3 checkpoint-resumes; manual intervention required';
|
|
105
|
+
const READ_ONLY_ROOT_TASK_TYPES = new Set(['meeting', 'ask', 'explore', 'plan-to-prd', 'plan']);
|
|
106
|
+
|
|
107
|
+
function isPipelineBranchName(branchName) {
|
|
108
|
+
return typeof branchName === 'string' && branchName.startsWith('pipeline/');
|
|
109
|
+
}
|
|
105
110
|
|
|
106
111
|
// ─── Dispatch Management (extracted to engine/dispatch.js) ───────────────────
|
|
107
112
|
|
|
@@ -631,7 +636,7 @@ async function spawnAgent(dispatchItem, config) {
|
|
|
631
636
|
// (orphan/timeout retry before first push) would otherwise emit a
|
|
632
637
|
// "couldn't find remote ref" warn pair on every reuse.
|
|
633
638
|
await syncReusedWorktree(rootDir, existingWt, branchName, _gitOpts);
|
|
634
|
-
} else if (
|
|
639
|
+
} else if (READ_ONLY_ROOT_TASK_TYPES.has(type) && !isPipelineBranchName(branchName)) {
|
|
635
640
|
// Read-only tasks — no worktree needed, run in rootDir
|
|
636
641
|
log('info', `${type}: read-only task, no worktree needed — running in rootDir`);
|
|
637
642
|
branchName = null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1792",
|
|
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"
|