@yemi33/minions 0.1.578 → 0.1.580

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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.580 (2026-04-08)
4
+
5
+ ### Fixes
6
+ - cleanup prompt files on worktree failure, add TTL to binary cache
7
+ - CC response renderer HTML-escape before innerHTML injection (closes #506) (#525)
8
+
3
9
  ## 0.1.578 (2026-04-08)
4
10
 
5
11
  ### Other
package/dashboard.html CHANGED
@@ -4732,10 +4732,11 @@ async function _ccDoSend(message, skipUserMsg) {
4732
4732
  ccUpdateSessionIndicator();
4733
4733
  }
4734
4734
 
4735
- // Render markdown-ish response
4735
+ // Render markdown-ish response (HTML-escape first to prevent XSS + broken rendering)
4736
4736
  const ccElapsed = Math.round((Date.now() - ccStartTime) / 1000);
4737
- const rendered = (data.text || '').replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
4738
- .replace(/`([^`]+)`/g, '<code style="background:var(--surface);padding:1px 4px;border-radius:3px;font-size:11px">$1</code>')
4737
+ const safe = escHtml(data.text || '');
4738
+ const rendered = safe.replace(/\*\*([^*\n]+)\*\*/g, '<strong>$1</strong>')
4739
+ .replace(/`([^`\n]+)`/g, '<code style="background:var(--surface);padding:1px 4px;border-radius:3px;font-size:11px">$1</code>')
4739
4740
  .replace(/\n/g, '<br>');
4740
4741
  ccAddMessage('assistant', rendered + '<div style="font-size:9px;color:var(--muted);margin-top:4px;text-align:right">' + ccElapsed + 's</div>');
4741
4742
 
package/engine/llm.js CHANGED
@@ -46,11 +46,15 @@ function trackEngineUsage(category, usage) {
46
46
  // ── Claude Binary Resolution (cached by spawn-agent.js) ─────────────────────
47
47
 
48
48
  let _claudeBinCache = null;
49
+ let _claudeBinCacheTs = 0;
50
+ const _CLAUDE_BIN_TTL = 300000; // 5 min — re-validate binary exists periodically
49
51
  function _resolveClaudeBin() {
50
- if (_claudeBinCache) return _claudeBinCache;
52
+ if (_claudeBinCache && Date.now() - _claudeBinCacheTs < _CLAUDE_BIN_TTL) return _claudeBinCache;
53
+ _claudeBinCache = null;
51
54
  const caps = shared.safeJson(path.join(ENGINE_DIR, 'claude-caps.json'));
52
55
  if (caps?.claudeBin && require('fs').existsSync(caps.claudeBin)) {
53
56
  _claudeBinCache = { bin: caps.claudeBin, native: !!caps.claudeIsNative };
57
+ _claudeBinCacheTs = Date.now();
54
58
  return _claudeBinCache;
55
59
  }
56
60
  return null;
package/engine.js CHANGED
@@ -415,6 +415,7 @@ async function spawnAgent(dispatchItem, config) {
415
415
  log('warn', `Proceeding with recovered worktree after add failure for ${branchName}`);
416
416
  } else {
417
417
  log('error', `Failed to create worktree for ${branchName}: ${err.message}${err.stderr ? '\n' + err.stderr.toString().slice(0, 500) : ''}`);
418
+ _cleanupPromptFiles();
418
419
  completeDispatch(id, DISPATCH_RESULT.ERROR, 'Worktree creation failed: ' + (err.message || '').slice(0, 200));
419
420
  return null;
420
421
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.578",
3
+ "version": "0.1.580",
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"