@yemi33/minions 0.1.2132 → 0.1.2134
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/dashboard/js/render-watches.js +2 -2
- package/dashboard/pages/home.html +2 -2
- package/dashboard/pages/inbox.html +2 -2
- package/dashboard/pages/meetings.html +1 -1
- package/dashboard/pages/pipelines.html +1 -1
- package/dashboard/pages/plans.html +1 -1
- package/dashboard/pages/prs.html +1 -1
- package/dashboard/pages/schedule.html +1 -1
- package/dashboard/pages/watches.html +1 -1
- package/dashboard/pages/work.html +1 -1
- package/dashboard/styles.css +28 -0
- package/engine/playbook.js +11 -0
- package/package.json +1 -1
- package/playbooks/fix.md +1 -1
- package/playbooks/review.md +4 -4
|
@@ -503,7 +503,7 @@ function _watchFormHtml() {
|
|
|
503
503
|
'<div style="border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:8px">' +
|
|
504
504
|
'<div style="color:var(--text);font-size:var(--text-md);display:flex;align-items:center;justify-content:space-between">' +
|
|
505
505
|
'<span>Follow-up Action(s) <span style="font-size:var(--text-sm);color:var(--muted)">(runs after the inbox notification when the watch fires; 1 step = single, 2+ = chain)</span></span>' +
|
|
506
|
-
'<button type="button" class="
|
|
506
|
+
'<button type="button" class="btn-add btn-add-lg" onclick="_addWatchStepRow()">+ Add step</button>' +
|
|
507
507
|
'</div>' +
|
|
508
508
|
'<div id="watch-edit-steps"></div>' +
|
|
509
509
|
'</div>' +
|
|
@@ -511,7 +511,7 @@ function _watchFormHtml() {
|
|
|
511
511
|
'<div style="border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:8px">' +
|
|
512
512
|
'<div style="color:var(--text);font-size:var(--text-md);display:flex;align-items:center;justify-content:space-between">' +
|
|
513
513
|
'<span>Requires <span style="font-size:var(--text-sm);color:var(--muted)">(cross-target AND-join — every requirement must also be true to fire)</span></span>' +
|
|
514
|
-
'<button type="button" class="
|
|
514
|
+
'<button type="button" class="btn-add btn-add-lg" onclick="_addRequireRow()">+ Add requirement</button>' +
|
|
515
515
|
'</div>' +
|
|
516
516
|
'<div id="watch-edit-requires"></div>' +
|
|
517
517
|
'</div>' +
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<span style="color:var(--blue);font-weight:600">Command Center</span>
|
|
13
13
|
<span id="cmd-powered-by">Ask anything, dispatch work, manage plans</span>
|
|
14
14
|
<button class="cmd-history-btn" onclick="cmdShowHistory()">Past Commands</button>
|
|
15
|
-
<button class="
|
|
15
|
+
<button class="btn-add btn-add-lg" onclick="openQuickNoteModal()">+ Note</button>
|
|
16
16
|
</div>
|
|
17
17
|
</section>
|
|
18
18
|
<section>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<div class="agents" id="agents-grid">Loading...</div>
|
|
21
21
|
</section>
|
|
22
22
|
<section>
|
|
23
|
-
<h2>Pinned Context <button class="
|
|
23
|
+
<h2>Pinned Context <button class="btn-add" style="margin-left:8px" onclick="openPinNoteModal()">+ Pin</button> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">injected into all agent prompts</span></h2>
|
|
24
24
|
<div id="pinned-content"><p class="empty">No pinned notes.</p></div>
|
|
25
25
|
</section>
|
|
26
26
|
<section>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<section>
|
|
2
|
-
<h2>Notes Inbox <span class="count" id="inbox-count">0</span> <button class="
|
|
2
|
+
<h2>Notes Inbox <span class="count" id="inbox-count">0</span> <button class="btn-add btn-add-lg" style="margin-left:8px" onclick="openQuickNoteModal()">+ Note</button> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">auto-consolidates at <span id="inbox-threshold">3</span> notes</span></h2>
|
|
3
3
|
<div class="inbox-list" id="inbox-list">Loading...</div>
|
|
4
4
|
</section>
|
|
5
5
|
<section>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<div id="notes-list">Loading...</div>
|
|
8
8
|
</section>
|
|
9
9
|
<section>
|
|
10
|
-
<h2>Knowledge Base <span class="count" id="kb-count">0</span> <button class="
|
|
10
|
+
<h2>Knowledge Base <span class="count" id="kb-count">0</span> <button class="btn-add" style="margin-left:8px" onclick="openCreateKbModal()">+ New</button><button id="kb-sweep-btn" onclick="kbSweep()" style="font-size:var(--text-xs);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:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0;margin-left:8px"></span></h2>
|
|
11
11
|
<div id="kb-sweep-toast" class="cmd-toast cmd-toast-inline" style="margin:6px 0"></div>
|
|
12
12
|
<div class="kb-tabs" id="kb-tabs"></div>
|
|
13
13
|
<div class="kb-list" id="kb-list"><p class="empty">No knowledge entries yet. Notes are classified here after consolidation.</p></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Team Meetings <span class="count" id="meetings-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreateMeetingModal()">+ New Meeting</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">multi-round agent discussions — investigate, debate, conclude</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="meetings-content"><p class="empty">No meetings yet. Start one to have agents investigate, debate, and conclude on a topic.</p></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Pipelines <span class="count" id="pipelines-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreatePipelineModal()">+ New Pipeline</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">multi-stage workflows with dependencies — chain meetings, plans, tasks, merges in any order, on a schedule or manual</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="pipelines-content"><p class="empty">No pipelines yet. Create one to chain stages like audit → meeting → plan → merge.</p></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Plans <span class="count" id="plans-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreatePlanModal()">+ New Plan</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">create via CC or + New Plan, then execute to generate a PRD</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="plans-list"><p class="empty">No plans yet. Create one via the command center or click + New Plan.</p></div>
|
package/dashboard/pages/prs.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section class="pr-panel" id="pr-section">
|
|
2
2
|
<h2>Pull Requests <span class="count" id="pr-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openAddPrModal()">+ Link PR</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">created by agents, tracked with review + build status</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="pr-toast" class="cmd-toast cmd-toast-inline" style="margin:6px 0"></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section id="scheduled-section">
|
|
2
2
|
<h2>Scheduled Tasks <span class="count" id="scheduled-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreateScheduleModal()">+ New</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">single recurring tasks on a cron — for multi-step workflows, use Pipelines</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="scheduled-content"><p class="empty">No scheduled tasks. Add one to automate recurring work.</p></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section id="watches-section">
|
|
2
2
|
<h2>Watches <span class="count" id="watches-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreateWatchModal()">+ New</button>
|
|
4
4
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">persistent watches that monitor PRs, work items, and branches for changes</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="watches-content"><p class="empty">No active watches. Create one to monitor PRs, work items, or branches.</p></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<section id="work-items-section" style="overflow:visible">
|
|
2
2
|
<h2>Work Items <span class="count" id="wi-count">0</span>
|
|
3
|
-
<button class="
|
|
3
|
+
<button class="btn-add" style="margin-left:8px" onclick="openCreateWorkItemModal()">+ New</button>
|
|
4
4
|
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:2px 8px;margin-left:4px" onclick="toggleWorkItemArchive()">See Archive</button>
|
|
5
5
|
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">tasks dispatched to agents — auto-created from PRDs or added manually</span>
|
|
6
6
|
</h2>
|
package/dashboard/styles.css
CHANGED
|
@@ -426,6 +426,34 @@
|
|
|
426
426
|
.btn-danger { color: var(--red); border-color: var(--red); }
|
|
427
427
|
.btn-warning { color: var(--yellow); border-color: var(--yellow); }
|
|
428
428
|
|
|
429
|
+
/* W-mq10dtaw000l7ad5 — "+ Add" / "+ New" button family. Single source of
|
|
430
|
+
truth for the green-bordered, green-text, "+" buttons used across the
|
|
431
|
+
dashboard: section-header creators (work, plans, prs, knowledge, inbox,
|
|
432
|
+
schedules, pipelines, watches, meetings, home pin/note) AND inline
|
|
433
|
+
form-row adders ("+ Add step", "+ Add requirement"). Change the green
|
|
434
|
+
hex / border / padding / hover once here and every "+ X" button updates.
|
|
435
|
+
Variant:
|
|
436
|
+
.btn-add — compact text-xs / 1px 6px (section-header default)
|
|
437
|
+
.btn-add-lg — text-sm / 2px 8px (form rows + larger header buttons)
|
|
438
|
+
Positional spacing (e.g. margin-left:8px after an h2 count) lives at
|
|
439
|
+
the callsite, not on the button itself. Do NOT re-create the green
|
|
440
|
+
inline style for a new "+ X" button — extend this primitive instead. */
|
|
441
|
+
.btn-add {
|
|
442
|
+
background: var(--surface2);
|
|
443
|
+
border: 1px solid var(--green);
|
|
444
|
+
color: var(--green);
|
|
445
|
+
font-size: var(--text-xs);
|
|
446
|
+
padding: 1px 6px;
|
|
447
|
+
border-radius: var(--radius-sm);
|
|
448
|
+
cursor: pointer;
|
|
449
|
+
transition: background var(--transition-base);
|
|
450
|
+
}
|
|
451
|
+
.btn-add:hover { background: rgba(63,185,80,0.1); }
|
|
452
|
+
.btn-add:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; }
|
|
453
|
+
.btn-add:disabled,
|
|
454
|
+
.btn-add.disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
|
|
455
|
+
.btn-add.btn-add-lg { font-size: var(--text-sm); padding: 2px 8px; }
|
|
456
|
+
|
|
429
457
|
/* Badge — unified badge/pill base */
|
|
430
458
|
.badge {
|
|
431
459
|
font-size: var(--text-sm); font-weight: 600;
|
package/engine/playbook.js
CHANGED
|
@@ -1032,10 +1032,21 @@ function formatPrContextSuffix(pr) {
|
|
|
1032
1032
|
// ─── Work Discovery Helpers ──────────────────────────────────────────────────
|
|
1033
1033
|
|
|
1034
1034
|
function buildBaseVars(agentId, config, project) {
|
|
1035
|
+
// W-mq15r0cx — surface the LLM model id alongside the agent name so PR
|
|
1036
|
+
// comment sign-offs can stamp `<agent> · <model>` and humans can tell
|
|
1037
|
+
// which agent + which model authored the comment. Falls through to
|
|
1038
|
+
// 'unknown' (defensive only) rather than crashing or omitting the
|
|
1039
|
+
// field when neither agent.model nor engine.defaultModel resolves —
|
|
1040
|
+
// omitting would leave a dangling `· ` in the rendered sign-off.
|
|
1041
|
+
const resolvedModel = shared.resolveAgentModel(
|
|
1042
|
+
config?.agents?.[agentId] || null,
|
|
1043
|
+
config?.engine || null
|
|
1044
|
+
);
|
|
1035
1045
|
return {
|
|
1036
1046
|
agent_id: agentId,
|
|
1037
1047
|
agent_name: config.agents[agentId]?.name || agentId,
|
|
1038
1048
|
agent_role: config.agents[agentId]?.role || 'Agent',
|
|
1049
|
+
agent_model: resolvedModel || 'unknown',
|
|
1039
1050
|
team_root: MINIONS_DIR,
|
|
1040
1051
|
repo_id: project?.repositoryId || '',
|
|
1041
1052
|
project_name: project?.name || 'Unknown Project',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2134",
|
|
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"
|
package/playbooks/fix.md
CHANGED
|
@@ -93,7 +93,7 @@ Do NOT remove the worktree — the engine handles cleanup automatically.
|
|
|
93
93
|
{{pr_comment_instructions}}
|
|
94
94
|
- pullRequestId: `{{pr_number}}`
|
|
95
95
|
- content: Explain what was fixed, reference each review finding, include build/test status
|
|
96
|
-
- Sign: `Fixed by Minions ({{agent_name}} — {{agent_role}})`
|
|
96
|
+
- Sign: `Fixed by Minions ({{agent_name}} — {{agent_role}} · {{agent_model}})`
|
|
97
97
|
|
|
98
98
|
## Resolve Review Comments
|
|
99
99
|
|
package/playbooks/review.md
CHANGED
|
@@ -77,7 +77,7 @@ Your review body **MUST** start with one of these verdict lines (exactly as show
|
|
|
77
77
|
- `VERDICT: REQUEST_CHANGES` — if there are issues that must be fixed
|
|
78
78
|
|
|
79
79
|
Follow the verdict line with your detailed review findings, then sign off:
|
|
80
|
-
- Sign: `Review by Minions ({{agent_name}} — {{agent_role}})`
|
|
80
|
+
- Sign: `Review by Minions ({{agent_name}} — {{agent_role}} · {{agent_model}})`
|
|
81
81
|
|
|
82
82
|
Use this structure after the verdict:
|
|
83
83
|
|
|
@@ -95,7 +95,7 @@ Minimum diff to ship: <one-line description of the smallest change that would fl
|
|
|
95
95
|
Non-blocking observations: None
|
|
96
96
|
- (default to `None`; if you list any, each must be tied to an existing diff line in the form `path:line — observation`)
|
|
97
97
|
|
|
98
|
-
Review by Minions ({{agent_name}} — {{agent_role}})
|
|
98
|
+
Review by Minions ({{agent_name}} — {{agent_role}} · {{agent_model}})
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
After running the command, confirm it succeeded (check the command output for errors). If it fails, retry once.
|
|
@@ -124,8 +124,8 @@ Key rules (full detail in the template):
|
|
|
124
124
|
|
|
125
125
|
Your task is complete when your review comment has been posted successfully with BOTH:
|
|
126
126
|
- `VERDICT: APPROVE` or `VERDICT: REQUEST_CHANGES` on the first line, AND
|
|
127
|
-
- the `Review by Minions ({{agent_name}} — {{agent_role}})` sign-off on the last line of the body
|
|
127
|
+
- the `Review by Minions ({{agent_name}} — {{agent_role}} · {{agent_model}})` sign-off on the last line of the body
|
|
128
128
|
|
|
129
|
-
and the completion report has `verdict: "approved"` or `verdict: "changes-requested"`. The sign-off is what lets the engine distinguish agent reviews from human PR comments on ADO; without it the engine will queue a redundant fix-dispatch loop (W-mpbhnaim000q9ed3, Ripley on PR 5056697).
|
|
129
|
+
and the completion report has `verdict: "approved"` or `verdict: "changes-requested"`. The sign-off is what lets the engine distinguish agent reviews from human PR comments on ADO; without it the engine will queue a redundant fix-dispatch loop (W-mpbhnaim000q9ed3, Ripley on PR 5056697). The `· {{agent_model}}` suffix is an addition inside the existing parens (W-mq15r0cx) so humans can tell which agent + which model authored the review — the legacy `Review by Minions (` prefix is preserved so the engine's `/\bMinions\s*\(/i` matcher still recognizes both new comments (with model id) and pre-W-mq15r0cx historical comments (without).
|
|
130
130
|
|
|
131
131
|
Do NOT stop before posting the review. Do NOT continue reading unrelated files after posting.
|