ruvnet-brain 3.9.131-dev → 3.9.133-dev

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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # 🧠 RuvNet Brain
6
6
 
7
- ### 🧠 RuvNet Brain — [![RuvNet Brain version 3.9.131-dev — updated 2026-07-24 16:09 EDT](https://img.shields.io/badge/version_3.9.131--dev-updated_2026--07--24_16:09_EDT-1E90FF?style=for-the-badge&labelColor=0757BA)](https://github.com/stuinfla/ruvnet-brain/blob/main/plugin/.claude-plugin/plugin.json)
7
+ ### 🧠 RuvNet Brain — [![RuvNet Brain version 3.9.133-dev — updated 2026-07-24 16:09 EDT](https://img.shields.io/badge/version_3.9.133--dev-updated_2026--07--24_16:09_EDT-1E90FF?style=for-the-badge&labelColor=0757BA)](https://github.com/stuinfla/ruvnet-brain/blob/main/plugin/.claude-plugin/plugin.json)
8
8
 
9
9
  **A portable, source-grounded brain over Reuven Cohen's (rUv's) RuvNet stack — delivered as a Claude Code plugin that makes Claude _use_ the stack instead of fighting it.**
10
10
 
package/bin/install.mjs CHANGED
@@ -687,7 +687,7 @@ function wirePlugin() {
687
687
  // THAT absolute server path is registered. Registering the npx dir would rot when the temp dir vanished.
688
688
  const CODEX_BLOCK_START = '# --- ruvnet-brain (managed block, installer-rewritten) ---';
689
689
  const CODEX_BLOCK_END = '# --- end ruvnet-brain ---';
690
- const codexHomeDir = () => path.join(os.homedir(), '.codex');
690
+ const codexHomeDir = () => process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
691
691
  const codexConfigPath = () => path.join(codexHomeDir(), 'config.toml');
692
692
  const codexServerDir = () => path.join(os.homedir(), '.claude', 'ruvnet-brain', 'mcp');
693
693
  const codexHookWrapperPath = (codexDir = codexHomeDir()) =>
@@ -734,8 +734,9 @@ export function codexStatus({ configPath = codexConfigPath(), codexDir = codexHo
734
734
  if (!host) return { host: false, wired: false, serverPath: null, serverExists: false };
735
735
  let text = '';
736
736
  try { text = fs.readFileSync(configPath, 'utf8'); } catch { /* no config yet */ }
737
- const m = /^[ \t]*\[mcp_servers\.(?:ruvnet-brain|"ruvnet-brain"|'ruvnet-brain')\][^[]*?args\s*=\s*\[\s*"([^"]+)"/m.exec(text);
738
- const serverPath = m ? m[1] : null;
737
+ const m = /^[ \t]*\[mcp_servers\.(?:ruvnet-brain|"ruvnet-brain"|'ruvnet-brain')\][^[]*?args\s*=\s*\[\s*("(?:\\.|[^"\\])*")/m.exec(text);
738
+ let serverPath = null;
739
+ try { serverPath = m ? JSON.parse(m[1]) : null; } catch { /* malformed entry — treat as absent */ }
739
740
  let serverExists = false;
740
741
  try { serverExists = serverPath ? fs.existsSync(serverPath) : false; } catch { /* unreadable */ }
741
742
  return { host: true, wired: Boolean(serverPath) && serverExists, serverPath, serverExists };
@@ -1084,7 +1085,7 @@ function gatherInstallState(cacheDir) {
1084
1085
  try {
1085
1086
  repos = fs
1086
1087
  .readdirSync(cacheDir)
1087
- .filter((f) => f.endsWith('.rvf') && !f.endsWith('.big.rvf')).length;
1088
+ .filter((f) => f.endsWith('.rvf')).length;
1088
1089
  } catch {
1089
1090
  /* ignore */
1090
1091
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ruvnet-brain",
3
- "version": "3.9.131-dev",
3
+ "version": "3.9.133-dev",
4
4
  "description": "One-command installer for RuvNet Brain — a portable, source-grounded brain over rUv's RuvNet building blocks, delivered as a Claude Code plugin so Claude uses the stack instead of fighting it.",
5
5
  "type": "module",
6
6
  "bin": {