@yemi33/minions 0.1.712 → 0.1.714

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 CHANGED
@@ -1,8 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.712 (2026-04-09)
3
+ ## 0.1.714 (2026-04-09)
4
+
5
+ ### Other
6
+ - docs: update README with session features
7
+
8
+ ## 0.1.713 (2026-04-09)
4
9
 
5
10
  ### Fixes
11
+ - trigger-verify handles already-completed PRDs and existing verify WIs
6
12
  - move re-execute action card out of doc-chat thread
7
13
  - modal derivePlanStatus was called with wrong args, plans not cached
8
14
 
package/README.md CHANGED
@@ -243,12 +243,14 @@ The web dashboard at `http://localhost:7331` provides:
243
243
  - **Meetings** — create multi-agent meetings, view live progress per round, advance/end/archive. Paginated (10/page). Create plan from meeting conclusion.
244
244
  - **Pipelines** — multi-stage pipeline builder. Create, trigger, continue past wait stages, view run history with artifact links. Paginated (10/page).
245
245
  - **Pull Requests** — paginated PR tracker (25/page) sorted by date, with review/build/merge status. Link external PRs manually.
246
- - **Notes & KB** — inbox (paginated, 15/page), team notes (editable), knowledge base by category (paginated, 30/page) with inline Q&A. Pinned notes for critical context.
246
+ - **Notes & KB** — inbox (paginated, 15/page), team notes (editable), knowledge base by category (paginated, 30/page) with inline Q&A. Pin-to-top for quick reference (UI-only, localStorage). Pinned tab in KB. Protected from sweep dedup.
247
247
  - **Schedules** — create/edit/delete scheduled tasks with visual cron builder and natural language parsing. Paginated (15/page).
248
248
  - **Skills & MCP** — agent-created reusable workflows (minions-wide + project-specific), click to view full content. MCP server listing.
249
- - **Engine** — dispatch queue (completed paginated, 20/page), engine log (paginated, 50/page), LLM call performance (avg runtime by call type), agent metrics (with avg runtime), token usage.
250
- - **Settings** — engine config, eval loop, agent management, routing editor.
251
- - **Document modals** — inline Q&A on any document modal. Auto-polls for live updates with scroll preservation.
249
+ - **Engine** — dispatch queue (completed paginated, 20/page), engine log (paginated, 50/page), LLM call performance (avg runtime by call type), agent metrics (with avg runtime), token usage, worktree count.
250
+ - **Settings** — engine config, CC model/effort level, per-type max-turns, eval loop, agent management, routing editor.
251
+ - **Document modals** — inline Q&A on any document modal. Auto-polls for live updates with scroll preservation. Back button for navigation between linked modals. Pin button for inbox/KB docs.
252
+ - **Work item artifacts** — output logs, inbox notes (or KB entries after consolidation), branch, source plan, PR links shown as clickable pills in work item detail modal.
253
+ - **Pipeline visualization** — horizontal node chain showing stages with type icons, status colors (pulse animation on running), arrows, condition forks, wait durations, loop indicators, and stop conditions. Compact mode on cards, full mode in detail modal.
252
254
 
253
255
  ## Project Config
254
256
 
@@ -451,7 +453,11 @@ Routing rules in `routing.md`. Charters in `agents/{name}/charter.md`. Both are
451
453
  | `meeting-debate.md` | Meeting round 2: debate approaches |
452
454
  | `meeting-conclude.md` | Meeting round 3: synthesize conclusion |
453
455
 
454
- All playbooks use `{{template_variables}}` filled from project config. The `work-item.md` playbook uses `{{scope_section}}` to inject project-specific or multi-project context. Playbooks are fully customizable edit them to match your workflow.
456
+ All playbooks use `{{template_variables}}` filled from project config. Conditional blocks `{{#key}}...{{/key}}` are included only when the variable is truthy. Common rules from `playbooks/shared-rules.md` are auto-injected into every playbook.
457
+
458
+ Every playbook has an explicit "When to Stop" section telling agents exactly what constitutes completion. Code-pushing playbooks enforce **build → test → repo checks → push** ordering. Per-type max-turns prevent runaway tool loops (explore=30, ask=20, implement=75, verify=100).
459
+
460
+ Playbooks are fully customizable — edit them to match your workflow. System prompts for CC and plan advisor live in `prompts/` with `{{variable}}` substitution.
455
461
 
456
462
  ## Health Monitoring
457
463
 
@@ -541,6 +547,13 @@ Engine behavior is controlled via `config.json`. Key settings:
541
547
  | `evalMaxIterations` | 3 | Max review → fix cycles before escalating to human |
542
548
  | `evalMaxCost` | null | USD ceiling per work item across all eval iterations (null = no limit) |
543
549
  | `meetingRoundTimeout` | 600000 (10min) | Timeout per meeting round before auto-advance |
550
+ | `ccModel` | `sonnet` | Model for Command Center and doc-chat (sonnet/haiku/opus) |
551
+ | `ccEffort` | null | Effort level for CC/doc-chat (null/low/medium/high) |
552
+ | `agentEffort` | null | Override effort level for all agent dispatches |
553
+ | `maxTurnsByType` | `{}` | Per-type max-turns override (e.g., `{"explore": 40, "fix": 100}`) |
554
+ | `maxBuildFixAttempts` | 3 | Max auto-fix dispatches per PR before escalating |
555
+
556
+ Per-type max-turns defaults (when `maxTurnsByType` not set): explore=30, ask=20, review=30, plan=30, decompose=15, plan-to-prd=20, implement=75, fix=75, test=50, verify=100. Configurable from the Settings page.
544
557
 
545
558
  ### Scheduled Tasks
546
559
 
@@ -666,23 +679,29 @@ To move to a new machine: `npm install -g @yemi33/minions && minions init --forc
666
679
  routing.md <- Dispatch rules table (generated, editable)
667
680
  notes.md <- Team rules + consolidated learnings (generated)
668
681
  work-items.json <- Central work queue (generated)
682
+ prompts/
683
+ cc-system.md <- Command Center system prompt (editable, {{minions_dir}} substitution)
684
+ plan-advisor-system.md <- Plan review advisor prompt (editable, {{plan_path}} substitution)
669
685
  playbooks/
670
- work-item.md <- Shared work item template
671
- implement.md <- Build a PRD item
672
- review.md <- Review a PR
673
- fix.md <- Fix review feedback
674
- explore.md <- Codebase exploration
675
- test.md <- Run tests
686
+ shared-rules.md <- Common rules injected into ALL playbooks automatically
687
+ work-item.md <- Generic fallback template
688
+ implement.md <- Build a PRD item (build → test → push → PR)
689
+ implement-shared.md <- Implement on a shared branch (no individual PR)
690
+ review.md <- Review a PR (comment + vote)
691
+ fix.md <- Fix review feedback (build → test → push)
692
+ explore.md <- Codebase exploration (write findings to inbox)
693
+ ask.md <- Answer a question (write answer to inbox)
694
+ test.md <- Run tests (write findings to inbox)
676
695
  build-and-test.md <- Build project and run test suite
677
- plan-to-prd.md <- Convert plan to PRD gap items
696
+ plan-to-prd.md <- Convert plan to structured PRD JSON
678
697
  plan.md <- Generate a plan from user request
679
- implement-shared.md <- Implement on a shared branch
680
- ask.md <- Answer a question about the codebase
681
- verify.md <- Plan verification: build, test, start webapp, testing guide
698
+ verify.md <- Plan verification: merge, build, test, testing guide, E2E PR
682
699
  decompose.md <- Break large work items into 2-5 sub-tasks
683
700
  meeting-investigate.md <- Meeting round 1: research
684
701
  meeting-debate.md <- Meeting round 2: debate
685
702
  meeting-conclude.md <- Meeting round 3: conclude
703
+ templates/
704
+ verify-guide.md <- Verification report template (lazy-loaded by verify agent)
686
705
  skills/ <- Agent-created reusable workflows (generated)
687
706
  agents/
688
707
  {name}/
package/dashboard.js CHANGED
@@ -969,21 +969,51 @@ const server = http.createServer(async (req, res) => {
969
969
  safeWrite(activePath, plan);
970
970
  }
971
971
 
972
- // Trigger completion check
973
- const lifecycle = require('./engine/lifecycle');
974
972
  const config = queries.getConfig();
975
- lifecycle.checkPlanCompletion({ item: { sourcePlan: body.file, id: 'manual' } }, config);
976
-
977
- // Check if verify was created
978
973
  const project = PROJECTS.find(p => {
979
974
  const plan = safeJson(activePath) || safeJson(prdPath);
980
975
  return plan && p.name?.toLowerCase() === (plan.project || '').toLowerCase();
981
976
  }) || PROJECTS[0] || null;
977
+
978
+ // Check for existing verify WI — reset to pending if already done (re-verify)
979
+ if (project) {
980
+ const wiPath = shared.projectWorkItemsPath(project);
981
+ let existingVerify = null;
982
+ mutateWorkItems(wiPath, items => {
983
+ const v = items.find(w => w.sourcePlan === body.file && w.itemType === 'verify');
984
+ if (v && (v.status === 'done' || v.status === 'failed')) {
985
+ v.status = 'pending';
986
+ delete v.completedAt;
987
+ delete v.dispatched_to;
988
+ delete v.dispatched_at;
989
+ v._retryCount = 0;
990
+ existingVerify = v;
991
+ } else if (v) {
992
+ existingVerify = v;
993
+ }
994
+ });
995
+ if (existingVerify) {
996
+ invalidateStatusCache();
997
+ return jsonReply(res, 200, { ok: true, verifyId: existingVerify.id });
998
+ }
999
+ }
1000
+
1001
+ // No existing verify — clear completion flag and trigger fresh creation
1002
+ const planData = safeJson(activePath);
1003
+ if (planData?._completionNotified) {
1004
+ planData._completionNotified = false;
1005
+ safeWrite(activePath, planData);
1006
+ }
1007
+
1008
+ const lifecycle = require('./engine/lifecycle');
1009
+ lifecycle.checkPlanCompletion({ item: { sourcePlan: body.file, id: 'manual' } }, config);
1010
+
982
1011
  if (project) {
983
1012
  const wiPath = shared.projectWorkItemsPath(project);
984
1013
  const items = safeJsonArr(wiPath);
985
1014
  const verify = items.find(w => w.sourcePlan === body.file && w.itemType === 'verify');
986
1015
  if (verify) {
1016
+ invalidateStatusCache();
987
1017
  return jsonReply(res, 200, { ok: true, verifyId: verify.id });
988
1018
  }
989
1019
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.712",
3
+ "version": "0.1.714",
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"