@yemi33/minions 0.1.230 → 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,10 @@
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
+
3
8
  ## 0.1.230 (2026-04-03)
4
9
 
5
10
  ### 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.230",
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"