@yemi33/minions 0.1.229 → 0.1.231

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,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.231 (2026-04-03)
4
+
5
+ ### Fixes
6
+ - log CC failures to engine log for debugging
7
+
8
+ ## 0.1.230 (2026-04-03)
9
+
10
+ ### Fixes
11
+ - remove all 'evaluate' work type — eval loop uses 'review' exclusively
12
+
3
13
  ## 0.1.229 (2026-04-03)
4
14
 
5
15
  ### Fixes
package/dashboard.js CHANGED
@@ -1672,45 +1672,6 @@ If nothing to do: { "duplicates": [], "reclassify": [], "remove": [] }`;
1672
1672
  return jsonReply(res, 200, plans);
1673
1673
  }
1674
1674
 
1675
- async function handlePlansArchiveMove(req, res) {
1676
- try {
1677
- const body = await readBody(req);
1678
- if (!body.file) return jsonReply(res, 400, { error: 'file required' });
1679
- const file = body.file;
1680
- if (file.includes('..') || file.includes('\0') || file.includes('/') || file.includes('\\')) return jsonReply(res, 400, { error: 'invalid' });
1681
-
1682
- const isJson = file.endsWith('.json');
1683
- const sourceDir = isJson ? PRD_DIR : PLANS_DIR;
1684
- const archiveDir = path.join(sourceDir, 'archive');
1685
- const sourcePath = path.join(sourceDir, file);
1686
-
1687
- if (!fs.existsSync(sourcePath)) return jsonReply(res, 404, { error: 'File not found' });
1688
- if (!fs.existsSync(archiveDir)) fs.mkdirSync(archiveDir, { recursive: true });
1689
-
1690
- fs.renameSync(sourcePath, path.join(archiveDir, file));
1691
-
1692
- // If archiving a PRD .json, also archive its source .md plan
1693
- let archivedSource = null;
1694
- if (isJson) {
1695
- try {
1696
- const prd = safeJson(path.join(archiveDir, file));
1697
- if (prd?.source_plan) {
1698
- const mdPath = path.join(PLANS_DIR, prd.source_plan);
1699
- if (fs.existsSync(mdPath)) {
1700
- const planArchive = path.join(PLANS_DIR, 'archive');
1701
- if (!fs.existsSync(planArchive)) fs.mkdirSync(planArchive, { recursive: true });
1702
- fs.renameSync(mdPath, path.join(planArchive, prd.source_plan));
1703
- archivedSource = prd.source_plan;
1704
- }
1705
- }
1706
- } catch { /* optional — source plan may not exist */ }
1707
- }
1708
-
1709
- invalidateStatusCache();
1710
- return jsonReply(res, 200, { ok: true, archivedSource });
1711
- } catch (e) { return jsonReply(res, 400, { error: e.message }); }
1712
- }
1713
-
1714
1675
  async function handlePlansUnarchive(req, res) {
1715
1676
  try {
1716
1677
  const body = await readBody(req);
@@ -2988,8 +2949,9 @@ What would you like to discuss or change? When you're happy, say "approve" and I
2988
2949
 
2989
2950
  if (result.code !== 0 || !result.text) {
2990
2951
  const debugInfo = result.code !== 0 ? `(exit code ${result.code})` : '(empty response)';
2991
- const stderrTail = (result.stderr || '').trim().split('\n').filter(Boolean).slice(-3).join(' | ');
2952
+ const stderrTail = (result.stderr || '').trim().split('\n').filter(Boolean).slice(-5).join(' | ');
2992
2953
  console.error(`[CC] LLM failed after retries ${debugInfo}: ${stderrTail}`);
2954
+ try { shared.log('warn', `CC failed ${debugInfo}: ${stderrTail.slice(0, 300)}`); } catch {}
2993
2955
  const hasSession = !!ccSession.sessionId;
2994
2956
  const retryHint = hasSession
2995
2957
  ? 'Your session is still active — just send your message again to retry.'
@@ -3354,8 +3316,6 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3354
3316
  { method: 'POST', path: '/api/plans/unarchive', desc: 'Restore a plan/PRD from archive', params: 'file', handler: handlePlansUnarchive },
3355
3317
  { method: 'POST', path: '/api/plans/revise', desc: 'Request revision with feedback, dispatches agent to revise', params: 'file, feedback, requestedBy?', handler: handlePlansRevise },
3356
3318
  { method: 'POST', path: '/api/plans/discuss', desc: 'Generate a plan discussion session script for Claude CLI', params: 'file', handler: handlePlansDiscuss },
3357
- { method: 'POST', path: '/api/plans/archive', desc: 'Archive a plan/PRD (move to archive folder)', params: 'file', handler: handlePlansArchiveMove },
3358
- { method: 'POST', path: '/api/plans/unarchive', desc: 'Unarchive a plan/PRD (restore from archive folder)', params: 'file', handler: handlePlansUnarchive },
3359
3319
  { method: 'GET', path: /^\/api\/plans\/archive\/([^?]+)$/, desc: 'Read an archived plan file', handler: handlePlansArchiveRead },
3360
3320
  { method: 'GET', path: /^\/api\/plans\/([^?]+)$/, desc: 'Read a full plan (JSON from prd/ or markdown from plans/)', handler: handlePlansRead },
3361
3321
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.229",
3
+ "version": "0.1.231",
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"
@@ -1,149 +0,0 @@
1
- # Playbook: Evaluate
2
-
3
- You are {{agent_name}}, the {{agent_role}} on the {{project_name}} project.
4
- TEAM ROOT: {{team_root}}
5
-
6
- ## Your Task
7
-
8
- Evaluate the implementation quality of a completed work item against its acceptance criteria and code quality standards.
9
-
10
- ## Work Item Under Evaluation
11
-
12
- - **ID:** {{item_id}}
13
- - **Title:** {{item_title}}
14
- - **Description:** {{item_description}}
15
- - **Branch:** `{{branch_name}}`
16
- - **Project:** {{project_name}} (`{{project_path}}`)
17
-
18
- {{#acceptance_criteria}}
19
- ## Acceptance Criteria
20
-
21
- {{acceptance_criteria}}
22
- {{/acceptance_criteria}}
23
-
24
- {{#references}}
25
- ## References
26
-
27
- {{references}}
28
- {{/references}}
29
-
30
- ## Evaluation Rubric
31
-
32
- Score each category on a 1-5 scale. A category **passes** at 3 or above.
33
-
34
- ### 1. Correctness (weight: 30%)
35
-
36
- Does the implementation do what the task description and acceptance criteria require?
37
-
38
- - **5 — Excellent:** All acceptance criteria met, edge cases handled, no functional gaps
39
- - **4 — Good:** All core criteria met, minor edge cases not handled
40
- - **3 — Adequate:** Most criteria met, one minor gap that doesn't block usage
41
- - **2 — Deficient:** One or more acceptance criteria not met
42
- - **1 — Failing:** Core functionality missing or broken
43
-
44
- **Pass threshold:** 3
45
-
46
- ### 2. Completeness (weight: 25%)
47
-
48
- Is the implementation finished end-to-end? No TODO stubs, no half-wired features, no missing integration points.
49
-
50
- - **5 — Excellent:** Fully integrated, no loose ends, documentation updated if applicable
51
- - **4 — Good:** Feature complete, minor polish items remain (comments, naming)
52
- - **3 — Adequate:** Core feature works, one non-critical integration point incomplete
53
- - **2 — Deficient:** Significant pieces missing or stubbed out
54
- - **1 — Failing:** Skeleton or partial implementation only
55
-
56
- **Pass threshold:** 3
57
-
58
- ### 3. Code Quality (weight: 25%)
59
-
60
- Does the code follow existing project patterns, naming conventions, and architectural decisions?
61
-
62
- - **5 — Excellent:** Clean, idiomatic, follows all project conventions, well-structured
63
- - **4 — Good:** Follows conventions, minor style inconsistencies
64
- - **3 — Adequate:** Generally follows patterns, one area deviates without justification
65
- - **2 — Deficient:** Multiple convention violations, poor structure
66
- - **1 — Failing:** Ignores project patterns, introduces anti-patterns
67
-
68
- **Pass threshold:** 3
69
-
70
- ### 4. Test Coverage (weight: 20%)
71
-
72
- Are there tests for the new functionality? Do existing tests still pass?
73
-
74
- - **5 — Excellent:** Comprehensive tests for happy path and edge cases, all passing
75
- - **4 — Good:** Tests cover core functionality, existing tests pass
76
- - **3 — Adequate:** At least one test for the main feature, no regressions
77
- - **2 — Deficient:** No new tests, but existing tests pass
78
- - **1 — Failing:** No tests, or existing tests broken
79
-
80
- **Pass threshold:** 3
81
-
82
- ## Evaluation Steps
83
-
84
- 1. **Fetch and review the diff:**
85
- ```bash
86
- git fetch origin
87
- git diff {{main_branch}}...origin/{{branch_name}}
88
- ```
89
-
90
- 2. **Check acceptance criteria** one by one — mark each as MET or NOT MET with evidence
91
-
92
- 3. **Review code quality** — check for pattern adherence, naming, structure
93
-
94
- 4. **Verify tests:**
95
- ```bash
96
- cd {{project_path}}
97
- npm test
98
- ```
99
-
100
- 5. **Calculate scores** using the rubric above
101
-
102
- 6. **Determine verdict:**
103
- - **PASS** — all four categories score 3 or above
104
- - **FAIL** — any category scores below 3
105
-
106
- ## Output Format
107
-
108
- Structure your evaluation result as follows:
109
-
110
- ```
111
- ## Evaluation Result
112
-
113
- **Item:** {{item_id}} — {{item_title}}
114
- **Verdict:** PASS | FAIL
115
- **Weighted Score:** X.X / 5.0
116
-
117
- ### Scores
118
-
119
- | Category | Score | Pass | Notes |
120
- |----------|-------|------|-------|
121
- | Correctness | X/5 | YES/NO | ... |
122
- | Completeness | X/5 | YES/NO | ... |
123
- | Code Quality | X/5 | YES/NO | ... |
124
- | Test Coverage | X/5 | YES/NO | ... |
125
-
126
- ### Acceptance Criteria Checklist
127
-
128
- - [x] Criterion 1 — evidence
129
- - [ ] Criterion 2 — what's missing
130
-
131
- ### Issues Found
132
-
133
- 1. **[severity]** Description (file:line)
134
-
135
- ### Recommendations
136
-
137
- - What to fix before merging (if FAIL)
138
- - Suggestions for improvement (if PASS)
139
- ```
140
-
141
- ## Rules
142
-
143
- - Base your evaluation on **evidence from the diff and test output** — not assumptions
144
- - If acceptance criteria are missing, evaluate against the task description
145
- - A FAIL verdict should include actionable feedback — what specifically needs to change
146
- - Do NOT modify any code — this is a read-only evaluation
147
- - NEVER checkout branches in the main working tree — use `git diff` and `git show` only
148
-
149
- **Note:** Do NOT write to `agents/*/status.json` — the engine manages your status automatically.