@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.
@@ -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="pr-pager-btn" style="font-size:var(--text-sm);padding:2px 8px;color:var(--green);border-color:var(--green)" onclick="_addWatchStepRow()">+ Add step</button>' +
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="pr-pager-btn" style="font-size:var(--text-sm);padding:2px 8px;color:var(--green);border-color:var(--green)" onclick="_addRequireRow()">+ Add requirement</button>' +
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="pr-pager-btn" style="font-size:var(--text-xs);padding:2px 8px;color:var(--green);border-color:var(--green)" onclick="openQuickNoteModal()">+ Note</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);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>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);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>
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="pr-pager-btn" style="font-size:var(--text-xs);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: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>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateMeetingModal()">+ New Meeting</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreatePipelineModal()">+ New Pipeline</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreatePlanModal()">+ New Plan</button>
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>
@@ -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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openAddPrModal()">+ Link PR</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateScheduleModal()">+ New</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateWatchModal()">+ New</button>
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="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateWorkItemModal()">+ New</button>
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>
@@ -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;
@@ -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.2132",
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
 
@@ -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.