@yemi33/minions 0.1.2454 → 0.1.2455
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/bin/install-internal-minions.js +136 -6
- package/bin/minions.js +27 -13
- package/dashboard/js/agent-identity.js +121 -0
- package/dashboard/js/modal.js +4 -0
- package/dashboard/js/refresh.js +38 -3
- package/dashboard/js/render-agents.js +14 -2
- package/dashboard/js/render-dispatch.js +2 -2
- package/dashboard/js/render-other.js +147 -13
- package/dashboard/js/render-prd.js +6 -5
- package/dashboard/js/render-prs.js +1 -1
- package/dashboard/js/render-work-items.js +436 -21
- package/dashboard/js/utils.js +40 -0
- package/dashboard/pages/tools.html +1 -0
- package/dashboard/pages/work.html +13 -0
- package/dashboard/styles.css +73 -0
- package/dashboard-build.js +2 -2
- package/dashboard.js +93 -7
- package/docs/README.md +1 -0
- package/docs/copilot-cli-schema.md +1 -0
- package/docs/engine-restart.md +4 -2
- package/docs/internal-install.md +44 -5
- package/docs/named-agents.md +48 -0
- package/docs/runtime-adapters.md +39 -0
- package/docs/temporary-agents.md +172 -0
- package/engine/ado/comment.js +261 -4
- package/engine/agents/llm.js +26 -0
- package/engine/agents/playbook.js +2 -1
- package/engine/core/queries.js +27 -2
- package/engine/core/shared.js +148 -1
- package/engine/operations/cli.js +102 -1
- package/engine/orchestration/lifecycle.js +7 -0
- package/engine/orchestration/routing.js +4 -1
- package/engine/providers/gh-comment.js +159 -0
- package/engine/recovery/stop-stack.js +16 -2
- package/engine/runtimes/claude.js +3 -0
- package/engine/runtimes/codex.js +4 -0
- package/engine/runtimes/copilot.js +23 -2
- package/engine.js +2 -2
- package/package.json +1 -1
- package/playbooks/fix.md +23 -2
- package/playbooks/shared-rules.md +24 -2
package/engine.js
CHANGED
|
@@ -11706,7 +11706,7 @@ function discoverFromWorkItems(config, project) {
|
|
|
11706
11706
|
newWork.push({
|
|
11707
11707
|
type: workType,
|
|
11708
11708
|
agent: agentId,
|
|
11709
|
-
agentName: config.agents[agentId]?.name || tempAgents.get(agentId)?.name || agentId,
|
|
11709
|
+
agentName: config.agents[agentId]?.name || tempAgents.get(agentId)?.name || shared.tempAgentCallSign(agentId) || agentId,
|
|
11710
11710
|
agentRole: config.agents[agentId]?.role || tempAgents.get(agentId)?.role || 'Agent',
|
|
11711
11711
|
task: `[${project?.name || 'project'}] ${item.title || item.description?.slice(0, 80) || item.id}`,
|
|
11712
11712
|
prompt,
|
|
@@ -12952,7 +12952,7 @@ function resolvePendingDispatchAgent(item, config) {
|
|
|
12952
12952
|
function assignPendingDispatchAgent(item, agentId, config) {
|
|
12953
12953
|
const agents = config.agents || {};
|
|
12954
12954
|
item.agent = agentId;
|
|
12955
|
-
item.agentName = agents[agentId]?.name || tempAgents.get(agentId)?.name || agentId;
|
|
12955
|
+
item.agentName = agents[agentId]?.name || tempAgents.get(agentId)?.name || shared.tempAgentCallSign(agentId) || agentId;
|
|
12956
12956
|
item.agentRole = agents[agentId]?.role || tempAgents.get(agentId)?.role || 'Agent';
|
|
12957
12957
|
delete item._agentBusySince;
|
|
12958
12958
|
delete item.skipReason;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2455",
|
|
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
|
@@ -232,8 +232,29 @@ Pick the disposition that matches the finding and post the matching reply, then
|
|
|
232
232
|
- **Won't fix / disagree** (comment is invalid, stale, already addressed, out of scope, or harmful) → Reply with the evidence-backed rationale explaining why no code change was made. Leave the thread **active** for the reviewer to decide; do NOT resolve unilaterally.
|
|
233
233
|
|
|
234
234
|
Host-specific mechanics:
|
|
235
|
-
- **
|
|
236
|
-
|
|
235
|
+
- **Preferred (both hosts): reply on the ORIGINATING thread and resolve it in one call** with
|
|
236
|
+
`minions pr comment <repo> --thread <threadId> --resolve --agent <id> --kind fix [--wi <finding-id>] --body-file <path>`
|
|
237
|
+
(ADO: add `--host ado --ado-org … --ado-project … --repo-id …` and, for Deferred, `--resolve-status closed`;
|
|
238
|
+
GitHub: `--thread` is the review-thread GraphQL node id). The `--thread` id is the **structured thread/finding
|
|
239
|
+
identity carried on the work item / your `reviewFindingResolution` evidence** — never resolve by matching title or
|
|
240
|
+
body text, and never resolve sibling threads or all threads in bulk. This path is idempotent: re-running after a
|
|
241
|
+
retry, restart, or a provider timeout re-checks the thread, skips a reply it already posted (matched by the hidden
|
|
242
|
+
minions marker), and re-attempts only the unfinished resolve.
|
|
243
|
+
- **Do NOT open a fresh active thread to summarize an addressed finding.** A new top-level/active thread for a fix
|
|
244
|
+
you already made just adds triage noise the author must re-close. Post the summary as a reply on the finding's own
|
|
245
|
+
thread via `--thread … --resolve` above.
|
|
246
|
+
- **GitHub**: `--thread … --resolve` replies to the review thread and resolves it via `resolveReviewThread` for the
|
|
247
|
+
four resolve-eligible dispositions. Leave Won't-fix threads unresolved. If no review-thread id exists (the finding
|
|
248
|
+
was a top-level conversation comment), a top-level `minions pr comment` reply is informational only — GitHub has no
|
|
249
|
+
resolved state for conversation comments, so do **not** claim it is "resolved."
|
|
250
|
+
- **ADO**: `--thread … --resolve` posts the reply on the originating thread and transitions it (`fixed` for
|
|
251
|
+
Fixed/Satisfied-elsewhere/Tracked-as-follow-up, `--resolve-status closed` for Deferred). Prefer it over raw `az`;
|
|
252
|
+
if you must fall back, use `az` first (ADO MCP only when `az` is insufficient), reply on the existing thread, and
|
|
253
|
+
set its status — do not create a new thread just for the fix summary. Leave `active` for Won't-fix rationale replies.
|
|
254
|
+
|
|
255
|
+
Never auto-resolve a finding the agent did NOT actually address. When the fix report says the finding was not
|
|
256
|
+
addressed, is ambiguous, needs human input, or lacks the required commit/`file:line` resolution evidence, reply with
|
|
257
|
+
the rationale and leave the thread **active**. Human feedback is not auto-resolved merely because a dispatch completed.
|
|
237
258
|
|
|
238
259
|
Hard rule: never resolve, close, or mark-fixed a thread without first posting a reply that explains the disposition. The chunk-5 / Caleb-Tseng / MaiLibraryViewModel thread (ADO 5215549 thread 65692221) is the canonical bad example — closed silently with no audit trail.
|
|
239
260
|
|
|
@@ -262,6 +262,18 @@ non-actionable thread is posted pre-resolved in a single call. Prefer
|
|
|
262
262
|
thread `status` field yourself: `closed` (4) for non-actionable notes (or `fixed`
|
|
263
263
|
(2) when the comment records something already handled), `active` (1) for
|
|
264
264
|
actionable findings. The verdict/summary comment itself stays `active`.
|
|
265
|
+
|
|
266
|
+
**Fix summaries reply on the originating thread — never a new active thread.**
|
|
267
|
+
When you are recording that an existing review finding was *addressed*, reply on
|
|
268
|
+
that finding's own thread and transition it, rather than opening a fresh thread:
|
|
269
|
+
`minions pr comment <pr> --host ado --ado-org … --ado-project … --repo-id … --thread <threadId> --resolve [--resolve-status closed] --agent <id> --kind fix [--wi <finding-id>] --body-file <path>`.
|
|
270
|
+
The `--thread` id is **structured thread/finding identity** from the work item or
|
|
271
|
+
your `reviewFindingResolution` evidence — resolve only that thread, keyed by id,
|
|
272
|
+
never by matching comment title/body text and never in bulk across sibling
|
|
273
|
+
threads. The reply+status transition is idempotent across retries/restarts: it
|
|
274
|
+
re-reads the thread, skips a reply already carrying your minions marker, and only
|
|
275
|
+
re-applies the status if the earlier PATCH failed — so a partial failure stays
|
|
276
|
+
visible and retryable instead of being silently marked resolved locally.
|
|
265
277
|
{{/ado_shared_rules}}
|
|
266
278
|
{{#github_shared_rules}}
|
|
267
279
|
**GitHub mechanism.** GitHub has no "resolved" state for PR *conversation*
|
|
@@ -273,9 +285,19 @@ single API call that creates a thread pre-resolved. So on GitHub:
|
|
|
273
285
|
`<details><summary>Non-blocking observations</summary>…</details>` block inside
|
|
274
286
|
the verdict comment so they are visible but de-emphasized and create no separate
|
|
275
287
|
unresolved threads. `--resolved` is rejected on the GitHub path for this reason.
|
|
288
|
+
- **To record that an existing review finding was addressed**, reply on that
|
|
289
|
+
finding's own review thread and resolve it in one idempotent call:
|
|
290
|
+
`minions pr comment <repo> --thread <reviewThreadNodeId> --resolve --agent <id> --kind fix [--wi <finding-id>] --body-file <path>`.
|
|
291
|
+
The `--thread` node id is **structured thread identity** from the work item or
|
|
292
|
+
your `reviewFindingResolution` evidence — resolve only that thread, never by
|
|
293
|
+
matching comment text and never in bulk. Do **not** open a fresh active thread
|
|
294
|
+
to summarize a fix you already made. If the finding was a *top-level*
|
|
295
|
+
conversation comment (no review-thread node id), a top-level `minions pr comment`
|
|
296
|
+
reply is informational only — never call it "resolved."
|
|
276
297
|
- If you DO post a non-actionable note as its own **inline review thread**, resolve
|
|
277
|
-
it immediately after posting
|
|
278
|
-
|
|
298
|
+
it immediately after posting (equivalent to `--thread … --resolve`, or the raw
|
|
299
|
+
GraphQL `resolveReviewThread` mutation below; issue comments cannot be resolved
|
|
300
|
+
this way, only review threads can):
|
|
279
301
|
```bash
|
|
280
302
|
# 1. find the thread node id for the comment you just posted
|
|
281
303
|
gh api graphql -f query='query($owner:String!,$repo:String!,$pr:Int!){
|