ruvector 0.2.11 → 0.2.12

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/bin/cli.js CHANGED
@@ -3551,15 +3551,29 @@ hooksCmd.command('init')
3551
3551
  }
3552
3552
 
3553
3553
  // MCP server configuration (unless --minimal or --no-mcp)
3554
+ // Note: We only use enabledMcpjsonServers (not mcpServers) to avoid
3555
+ // Claude Code regenerating .mcp.json and stripping user-added fields
3556
+ // like autoStart. See: https://github.com/ruvnet/RuVector/issues/250
3554
3557
  if (!opts.minimal && opts.mcp !== false) {
3555
- settings.mcpServers = settings.mcpServers || {};
3556
- // Only add if not already configured
3557
- if (!settings.mcpServers['claude-flow'] && !settings.enabledMcpjsonServers?.includes('claude-flow')) {
3558
- settings.enabledMcpjsonServers = settings.enabledMcpjsonServers || [];
3559
- if (!settings.enabledMcpjsonServers.includes('claude-flow')) {
3560
- settings.enabledMcpjsonServers.push('claude-flow');
3558
+ // Only reference servers via enabledMcpjsonServers — never write mcpServers: {}
3559
+ // which can trigger Claude Code to regenerate .mcp.json
3560
+ const mcpJsonPath = path.join(process.cwd(), '.mcp.json');
3561
+ let mcpJson = {};
3562
+ if (fs.existsSync(mcpJsonPath)) {
3563
+ try { mcpJson = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8')); } catch {}
3564
+ }
3565
+ // Only add to enabledMcpjsonServers if the server is defined in .mcp.json
3566
+ if (mcpJson.mcpServers?.['claude-flow'] || mcpJson.mcpServers?.['ruvector']) {
3567
+ const serverName = mcpJson.mcpServers['ruvector'] ? 'ruvector' : 'claude-flow';
3568
+ if (!settings.enabledMcpjsonServers?.includes(serverName)) {
3569
+ settings.enabledMcpjsonServers = settings.enabledMcpjsonServers || [];
3570
+ settings.enabledMcpjsonServers.push(serverName);
3561
3571
  }
3562
3572
  }
3573
+ // Remove stale mcpServers: {} that could trigger .mcp.json regeneration
3574
+ if (settings.mcpServers && Object.keys(settings.mcpServers).length === 0) {
3575
+ delete settings.mcpServers;
3576
+ }
3563
3577
  console.log(chalk.blue(' ✓ MCP servers configured'));
3564
3578
  }
3565
3579
 
@@ -5769,6 +5783,16 @@ hooksCmd.command('doctor')
5769
5783
  };
5770
5784
  Object.values(settings.hooks || {}).forEach(checkCommands);
5771
5785
 
5786
+ // Remove empty mcpServers that can cause .mcp.json overwrites (#250)
5787
+ if (settings.mcpServers && Object.keys(settings.mcpServers).length === 0) {
5788
+ if (opts.fix) {
5789
+ delete settings.mcpServers;
5790
+ fixes.push('Removed empty mcpServers to prevent .mcp.json overwrites');
5791
+ } else {
5792
+ issues.push({ severity: 'warning', message: 'Empty mcpServers in settings.json can cause .mcp.json overwrites', fix: 'Will remove empty mcpServers' });
5793
+ }
5794
+ }
5795
+
5772
5796
  // Save fixes
5773
5797
  if (opts.fix && fixes.length > 0) {
5774
5798
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
package/bin/mcp-server.js CHANGED
@@ -428,7 +428,7 @@ class Intelligence {
428
428
  const server = new Server(
429
429
  {
430
430
  name: 'ruvector',
431
- version: '0.2.11',
431
+ version: '0.2.12',
432
432
  },
433
433
  {
434
434
  capabilities: {
@@ -4132,7 +4132,7 @@ async function main() {
4132
4132
  transport: 'sse',
4133
4133
  sessions: sessions.size,
4134
4134
  tools: 91,
4135
- version: '0.2.11'
4135
+ version: '0.2.12'
4136
4136
  }));
4137
4137
 
4138
4138
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ruvector",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "High-performance vector database for Node.js with automatic native/WASM fallback",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",