nano-brain 2026.7.3 → 2026.7.6

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.
Files changed (67) hide show
  1. package/dist/embeddings.d.ts.map +1 -1
  2. package/dist/embeddings.js +34 -2
  3. package/dist/embeddings.js.map +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +35 -325
  6. package/dist/index.js.map +1 -1
  7. package/dist/providers/qdrant.d.ts.map +1 -1
  8. package/dist/providers/qdrant.js +8 -0
  9. package/dist/providers/qdrant.js.map +1 -1
  10. package/dist/server.d.ts.map +1 -1
  11. package/dist/server.js +18 -2
  12. package/dist/server.js.map +1 -1
  13. package/dist/store.d.ts.map +1 -1
  14. package/dist/store.js +8 -1
  15. package/dist/store.js.map +1 -1
  16. package/dist/treesitter.d.ts.map +1 -1
  17. package/dist/treesitter.js +4 -3
  18. package/dist/treesitter.js.map +1 -1
  19. package/dist/watcher.d.ts.map +1 -1
  20. package/dist/watcher.js +7 -2
  21. package/dist/watcher.js.map +1 -1
  22. package/dist/web/assets/index-Dh0GlmPP.css +1 -0
  23. package/dist/web/assets/index-IH5W4yGw.js +236 -0
  24. package/dist/web/index.html +2 -2
  25. package/dist/web/src/api/client.d.ts +180 -0
  26. package/dist/web/src/api/client.d.ts.map +1 -0
  27. package/dist/web/src/api/client.js +65 -0
  28. package/dist/web/src/api/client.js.map +1 -0
  29. package/dist/web/src/lib/colors.d.ts +21 -0
  30. package/dist/web/src/lib/colors.d.ts.map +1 -0
  31. package/dist/web/src/lib/colors.js +70 -0
  32. package/dist/web/src/lib/colors.js.map +1 -0
  33. package/dist/web/src/lib/graph-adapter.d.ts +35 -0
  34. package/dist/web/src/lib/graph-adapter.d.ts.map +1 -0
  35. package/dist/web/src/lib/graph-adapter.js +308 -0
  36. package/dist/web/src/lib/graph-adapter.js.map +1 -0
  37. package/dist/web/src/store/app.d.ts +7 -0
  38. package/dist/web/src/store/app.d.ts.map +1 -0
  39. package/dist/web/src/store/app.js +6 -0
  40. package/dist/web/src/store/app.js.map +1 -0
  41. package/dist/web/vite.config.d.ts +3 -0
  42. package/dist/web/vite.config.d.ts.map +1 -0
  43. package/dist/web/vite.config.js +18 -0
  44. package/dist/web/vite.config.js.map +1 -0
  45. package/docker-compose.yml +1 -1
  46. package/package.json +2 -2
  47. package/src/embeddings.ts +40 -2
  48. package/src/treesitter.ts +81 -80
  49. package/src/web/package-lock.json +208 -87
  50. package/src/web/package.json +3 -6
  51. package/src/web/src/components/EntityDetailPanel.tsx +94 -0
  52. package/src/web/src/components/ReactFlowGraph.tsx +112 -0
  53. package/src/web/src/components/nodes/DocumentNode.tsx +31 -0
  54. package/src/web/src/components/nodes/EntityNode.tsx +43 -0
  55. package/src/web/src/components/nodes/FileNode.tsx +33 -0
  56. package/src/web/src/components/nodes/SymbolNode.tsx +37 -0
  57. package/src/web/src/lib/colors.ts +23 -0
  58. package/src/web/src/lib/graph-adapter.ts +244 -178
  59. package/src/web/src/main.tsx +1 -0
  60. package/src/web/src/views/CodeGraph.tsx +17 -4
  61. package/src/web/src/views/ConnectionsView.tsx +18 -5
  62. package/src/web/src/views/GraphExplorer.tsx +103 -21
  63. package/src/web/src/views/SymbolGraph.tsx +17 -4
  64. package/src/web/tsconfig.tsbuildinfo +1 -1
  65. package/dist/web/assets/index-DdE7D1Vb.css +0 -1
  66. package/dist/web/assets/index-znFKRn2I.js +0 -525
  67. package/src/web/src/components/GraphCanvas.tsx +0 -102
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxD,aAAa,IAAI,MAAM,CAAC;IACxB,QAAQ,IAAI,MAAM,CAAC;IACnB,WAAW,IAAI,MAAM,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AAGD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWvH;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBjE;AAiUD,wBAAsB,uBAAuB,CAC3C,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmDnC;AAED,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxD,aAAa,IAAI,MAAM,CAAC;IACxB,QAAQ,IAAI,MAAM,CAAC;IACnB,WAAW,IAAI,MAAM,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AAGD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWvH;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBjE;AAuWD,wBAAsB,uBAAuB,CAC3C,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmDnC;AAED,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -117,13 +117,13 @@ class OllamaEmbeddingProvider {
117
117
  dimensions: this.dimensions,
118
118
  };
119
119
  }
120
- async embedBatch(texts) {
120
+ async _sendBatch(inputs) {
121
121
  const response = await fetch(`${this.url}/api/embed`, {
122
122
  method: 'POST',
123
123
  headers: { 'Content-Type': 'application/json' },
124
124
  body: JSON.stringify({
125
125
  model: this.model,
126
- input: texts.map(t => this.truncate(t)),
126
+ input: inputs.map(t => this.truncate(t)),
127
127
  }),
128
128
  signal: AbortSignal.timeout(180000),
129
129
  });
@@ -140,6 +140,38 @@ class OllamaEmbeddingProvider {
140
140
  dimensions: emb.length,
141
141
  }));
142
142
  }
143
+ async embedBatch(texts) {
144
+ const MAX_CHARS_PER_BATCH = 100_000; // ~25K tokens safety margin
145
+ const MAX_ITEMS_PER_BATCH = 50; // Also limit item count
146
+ const results = [];
147
+ // Split into sub-batches by cumulative character count
148
+ let currentBatch = [];
149
+ let currentChars = 0;
150
+ let batchCount = 0;
151
+ for (const text of texts) {
152
+ if (currentBatch.length > 0 &&
153
+ (currentChars + text.length > MAX_CHARS_PER_BATCH ||
154
+ currentBatch.length >= MAX_ITEMS_PER_BATCH)) {
155
+ batchCount++;
156
+ const embeddings = await this._sendBatch(currentBatch);
157
+ results.push(...embeddings);
158
+ currentBatch = [];
159
+ currentChars = 0;
160
+ }
161
+ currentBatch.push(text);
162
+ currentChars += text.length;
163
+ }
164
+ // Send remaining
165
+ if (currentBatch.length > 0) {
166
+ batchCount++;
167
+ const embeddings = await this._sendBatch(currentBatch);
168
+ results.push(...embeddings);
169
+ }
170
+ if (batchCount > 1) {
171
+ log('embed', `Ollama sub-batching: ${texts.length} items into ${batchCount} batches`);
172
+ }
173
+ return results;
174
+ }
143
175
  getDimensions() {
144
176
  return this.dimensions;
145
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAuB,MAAM,YAAY,CAAC;AA0I7F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CA4BhE;AAGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAM3E;AACD,wBAAgB,QAAQ,IAAI,IAAI,CA4J/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAQlC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAmBrG;AAo0FD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,KAAK,EAAE,KAAK,GACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoDvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAuB,MAAM,YAAY,CAAC;AA8G7F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CA4BhE;AAGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAM3E;AACD,wBAAgB,QAAQ,IAAI,IAAI,CAoJ/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAQlC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAmBrG;AAukFD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,KAAK,EAAE,KAAK,GACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoDvD"}
package/dist/index.js CHANGED
@@ -10,7 +10,6 @@ import { findCycles } from './graph.js';
10
10
  import { handleBench } from './bench.js';
11
11
  import { resolveHostUrl } from './host.js';
12
12
  import { SymbolGraph } from './symbol-graph.js';
13
- import { installService, uninstallService } from './service-installer.js';
14
13
  import { isTreeSitterAvailable } from './treesitter.js';
15
14
  import { QdrantVecStore } from './providers/qdrant.js';
16
15
  import { createVectorStore } from './vector-store.js';
@@ -23,14 +22,15 @@ import * as fs from 'fs';
23
22
  import * as path from 'path';
24
23
  import * as os from 'os';
25
24
  import * as crypto from 'crypto';
26
- import { execSync, spawn } from 'child_process';
27
- import { log, initLogger, cliOutput, cliError } from './logger.js';
25
+ import { execSync } from 'child_process';
26
+ import { log, initLogger, cliOutput, cliError, setStdioMode } from './logger.js';
28
27
  const DEFAULT_HTTP_PORT = 3100;
29
- async function detectRunningServer(port = DEFAULT_HTTP_PORT) {
28
+ async function detectRunningServer(port = getHttpPort()) {
29
+ const host = getHttpHost();
30
30
  try {
31
31
  const controller = new AbortController();
32
32
  const timeout = setTimeout(() => controller.abort(), 1000);
33
- const resp = await fetch(`http://localhost:${port}/health`, { signal: controller.signal });
33
+ const resp = await fetch(`http://${host}:${port}/health`, { signal: controller.signal });
34
34
  clearTimeout(timeout);
35
35
  return resp.ok;
36
36
  }
@@ -38,46 +38,14 @@ async function detectRunningServer(port = DEFAULT_HTTP_PORT) {
38
38
  return false;
39
39
  }
40
40
  }
41
- const UNSAFE_SERVE_STOP_PATTERNS = [
42
- /docker/i,
43
- /docker-proxy/i,
44
- /com\.docker/i,
45
- /vpnkit/i,
46
- /containerd/i,
47
- ];
48
- function getProcessCommand(pid) {
49
- if (!Number.isInteger(pid) || pid <= 0)
50
- return '';
51
- try {
52
- return execSync(`ps -p ${pid} -o command=`, { encoding: 'utf-8' }).trim();
53
- }
54
- catch {
55
- return '';
56
- }
57
- }
58
- function isUnsafeServeStopTarget(command) {
59
- if (!command)
60
- return true;
61
- return UNSAFE_SERVE_STOP_PATTERNS.some((pattern) => pattern.test(command));
62
- }
63
- function isLikelyNanoBrainServerCommand(command) {
64
- if (!command)
65
- return false;
66
- const normalized = command.toLowerCase();
67
- const hasNanoBrainMarker = normalized.includes('nano-brain') ||
68
- normalized.includes('/bin/cli.js') ||
69
- normalized.includes('/src/index.ts');
70
- const hasServerModeMarker = normalized.includes(' mcp') ||
71
- normalized.includes(' serve') ||
72
- normalized.includes('--daemon');
73
- return hasNanoBrainMarker && hasServerModeMarker;
74
- }
75
41
  async function proxyGet(port, path) {
76
- const resp = await fetch(`http://localhost:${port}${path}`);
42
+ const host = getHttpHost();
43
+ const resp = await fetch(`http://${host}:${port}${path}`);
77
44
  return resp.json();
78
45
  }
79
46
  async function proxyPost(port, path, body) {
80
- const resp = await fetch(`http://localhost:${port}${path}`, {
47
+ const host = getHttpHost();
48
+ const resp = await fetch(`http://${host}:${port}${path}`, {
81
49
  method: 'POST',
82
50
  headers: { 'Content-Type': 'application/json' },
83
51
  body: JSON.stringify(body),
@@ -93,9 +61,16 @@ function isRunningInContainer() {
93
61
  }
94
62
  }
95
63
  function getHttpHost() {
64
+ if (process.env.NANO_BRAIN_HOST)
65
+ return process.env.NANO_BRAIN_HOST;
96
66
  return isRunningInContainer() ? 'host.docker.internal' : 'localhost';
97
67
  }
98
- async function detectRunningServerContainer(port = DEFAULT_HTTP_PORT) {
68
+ function getHttpPort() {
69
+ if (process.env.NANO_BRAIN_PORT)
70
+ return parseInt(process.env.NANO_BRAIN_PORT, 10);
71
+ return DEFAULT_HTTP_PORT;
72
+ }
73
+ async function detectRunningServerContainer(port = getHttpPort()) {
99
74
  const host = getHttpHost();
100
75
  try {
101
76
  const controller = new AbortController();
@@ -202,14 +177,6 @@ nano-brain - Memory system with hybrid search
202
177
  --host=<addr> Bind address (default: 127.0.0.1)
203
178
  --daemon Run as background daemon
204
179
  stop Stop running daemon
205
- serve Start SSE server as background daemon (shortcut)
206
- --port=<n> HTTP port (default: 3100)
207
- --foreground Run in foreground instead of detaching
208
- stop [--force] Stop running server (safe PID checks)
209
- status Show server status
210
- install Install as system service (launchd on macOS, systemd on Linux)
211
- --force Overwrite existing service file
212
- uninstall Remove system service
213
180
  status Show index health, embedding server status, and stats
214
181
  --all Show status for all workspaces
215
182
  collection Manage collections
@@ -396,6 +363,10 @@ async function handleMcp(globalOpts, commandArgs) {
396
363
  return;
397
364
  }
398
365
  }
366
+ if (!useHttp) {
367
+ // In stdio transport mode, stdout/stderr must be reserved for MCP JSON-RPC frames.
368
+ setStdioMode(true);
369
+ }
399
370
  log('cli', 'mcp server start transport=' + (useHttp ? `http:${host}:${port}` : 'stdio'));
400
371
  await startServer({
401
372
  dbPath: globalOpts.dbPath,
@@ -406,270 +377,6 @@ async function handleMcp(globalOpts, commandArgs) {
406
377
  root,
407
378
  });
408
379
  }
409
- async function handleServe(globalOpts, commandArgs) {
410
- const SERVE_PID_FILE = path.join(NANO_BRAIN_HOME, 'serve.pid');
411
- const SERVE_LOG_FILE = path.join(NANO_BRAIN_HOME, 'logs', 'server.log');
412
- let port = 3100;
413
- let foreground = false;
414
- let subcommand;
415
- let root;
416
- let force = false;
417
- for (const arg of commandArgs) {
418
- if (arg.startsWith('--port=')) {
419
- port = parseInt(arg.substring(7), 10);
420
- }
421
- else if (arg.startsWith('--root=')) {
422
- root = arg.substring(7);
423
- }
424
- else if (arg === '--foreground' || arg === '-f') {
425
- foreground = true;
426
- }
427
- else if (arg === '--force') {
428
- force = true;
429
- }
430
- else if (arg === 'stop' || arg === 'status' || arg === 'install' || arg === 'uninstall') {
431
- subcommand = arg;
432
- }
433
- }
434
- // serve stop
435
- if (subcommand === 'stop') {
436
- let stopped = false;
437
- const skippedUnsafe = [];
438
- const tryStopPid = (pid, source) => {
439
- if (!Number.isInteger(pid) || pid <= 0)
440
- return false;
441
- const command = getProcessCommand(pid);
442
- if (!force && (isUnsafeServeStopTarget(command) || !isLikelyNanoBrainServerCommand(command))) {
443
- skippedUnsafe.push({ pid, command, source });
444
- return false;
445
- }
446
- try {
447
- process.kill(pid, 'SIGTERM');
448
- cliOutput(`Stopped nano-brain server (${source}, PID: ${pid})`);
449
- return true;
450
- }
451
- catch {
452
- return false;
453
- }
454
- };
455
- // Try stopping via PID file
456
- try {
457
- if (fs.existsSync(SERVE_PID_FILE)) {
458
- const pidText = fs.readFileSync(SERVE_PID_FILE, 'utf-8').trim();
459
- const pid = parseInt(pidText, 10);
460
- if (tryStopPid(pid, 'PID file')) {
461
- stopped = true;
462
- fs.unlinkSync(SERVE_PID_FILE);
463
- }
464
- else if (fs.existsSync(SERVE_PID_FILE)) {
465
- // Remove stale/invalid PID file and continue with safe fallback
466
- fs.unlinkSync(SERVE_PID_FILE);
467
- }
468
- }
469
- }
470
- catch {
471
- // Process might already be dead
472
- if (fs.existsSync(SERVE_PID_FILE))
473
- fs.unlinkSync(SERVE_PID_FILE);
474
- }
475
- // Secondary stop: try to find process by port if PID file failed or was missing
476
- if (!stopped) {
477
- try {
478
- const isPortActive = await detectRunningServer(port);
479
- if (isPortActive) {
480
- const platform = process.platform;
481
- if (platform === 'darwin' || platform === 'linux') {
482
- try {
483
- const cmd = platform === 'darwin'
484
- ? `lsof -ti tcp:${port}`
485
- : `lsof -ti tcp:${port} 2>/dev/null || fuser ${port}/tcp 2>/dev/null`;
486
- const raw = execSync(cmd, { encoding: 'utf-8' }).trim();
487
- const candidatePids = Array.from(new Set((raw.match(/\d+/g) || [])
488
- .map((value) => parseInt(value, 10))
489
- .filter((value) => Number.isInteger(value) && value > 0 && value !== port)));
490
- const stoppedPids = [];
491
- for (const pid of candidatePids) {
492
- if (tryStopPid(pid, `port ${port}`)) {
493
- stoppedPids.push(pid);
494
- }
495
- }
496
- if (stoppedPids.length > 0) {
497
- cliOutput(`Stopped nano-brain server on port ${port} (PIDs: ${stoppedPids.join(', ')})`);
498
- stopped = true;
499
- }
500
- }
501
- catch {
502
- // Ignore command failures
503
- }
504
- }
505
- }
506
- }
507
- catch {
508
- // Ignore health check failures
509
- }
510
- }
511
- if (!stopped) {
512
- if (force) {
513
- cliOutput('No running server found');
514
- }
515
- else if (skippedUnsafe.length > 0) {
516
- cliOutput('No safe nano-brain server PID found to stop.');
517
- for (const item of skippedUnsafe) {
518
- const details = item.command ? ` (${item.command})` : '';
519
- cliOutput(` skipped ${item.source} PID ${item.pid}${details}`);
520
- }
521
- cliOutput('Use `npx nano-brain serve stop --force` only if you verified the target PID manually.');
522
- }
523
- else {
524
- cliOutput('No running server found');
525
- }
526
- }
527
- return;
528
- }
529
- // serve status
530
- if (subcommand === 'status') {
531
- let pidAlive = false;
532
- let pid = null;
533
- try {
534
- pid = parseInt(fs.readFileSync(SERVE_PID_FILE, 'utf-8').trim(), 10);
535
- process.kill(pid, 0);
536
- pidAlive = true;
537
- }
538
- catch { }
539
- const portActive = await detectRunningServer(port);
540
- if (pidAlive && pid) {
541
- cliOutput(`nano-brain server is running (PID: ${pid}, port: ${port})`);
542
- }
543
- else if (portActive) {
544
- cliOutput(`nano-brain server is responding on port ${port} but PID file is stale. Run: npx nano-brain serve stop --force`);
545
- }
546
- else {
547
- cliOutput('nano-brain server is not running');
548
- }
549
- return;
550
- }
551
- // serve install
552
- if (subcommand === 'install') {
553
- const result = installService({ force, port });
554
- if (result.success) {
555
- cliOutput(`✅ ${result.message}`);
556
- cliOutput(` The server will start automatically on login.`);
557
- cliOutput(` Port: ${port}`);
558
- }
559
- else {
560
- cliError(`❌ ${result.message}`);
561
- process.exit(1);
562
- }
563
- return;
564
- }
565
- // serve uninstall
566
- if (subcommand === 'uninstall') {
567
- const result = uninstallService();
568
- if (result.success) {
569
- cliOutput(`✅ ${result.message}`);
570
- }
571
- else {
572
- cliError(`❌ ${result.message}`);
573
- process.exit(1);
574
- }
575
- return;
576
- }
577
- // serve (start)
578
- if (foreground) {
579
- return handleMcp(globalOpts, ['--http', `--port=${port}`, '--host=0.0.0.0', '--daemon', ...(root ? [`--root=${root}`] : [])]);
580
- }
581
- // --force: stop existing server before starting
582
- if (force) {
583
- try {
584
- if (fs.existsSync(SERVE_PID_FILE)) {
585
- const existingPid = parseInt(fs.readFileSync(SERVE_PID_FILE, 'utf-8').trim(), 10);
586
- try {
587
- process.kill(existingPid, 'SIGTERM');
588
- }
589
- catch { }
590
- cliOutput(`Stopped existing server (PID: ${existingPid})`);
591
- fs.unlinkSync(SERVE_PID_FILE);
592
- await new Promise(r => setTimeout(r, 1000));
593
- }
594
- }
595
- catch { }
596
- const portBusy = await detectRunningServer(port);
597
- if (portBusy) {
598
- const platform = process.platform;
599
- if (platform === 'darwin' || platform === 'linux') {
600
- try {
601
- const cmd = platform === 'darwin' ? `lsof -ti tcp:${port}` : `lsof -ti tcp:${port} 2>/dev/null || fuser ${port}/tcp 2>/dev/null`;
602
- const raw = execSync(cmd, { encoding: 'utf-8' }).trim();
603
- for (const pidStr of raw.split(/\s+/)) {
604
- const pid = parseInt(pidStr, 10);
605
- if (pid > 0) {
606
- try {
607
- process.kill(pid, 'SIGKILL');
608
- }
609
- catch { }
610
- }
611
- }
612
- await new Promise(r => setTimeout(r, 500));
613
- }
614
- catch { }
615
- }
616
- }
617
- }
618
- // Check if already running via PID file
619
- let pidAlive = false;
620
- try {
621
- if (fs.existsSync(SERVE_PID_FILE)) {
622
- const existingPid = parseInt(fs.readFileSync(SERVE_PID_FILE, 'utf-8').trim(), 10);
623
- process.kill(existingPid, 0);
624
- pidAlive = true;
625
- cliOutput(`Server already running (PID: ${existingPid}). Stop first or use: npx nano-brain serve start --force`);
626
- return;
627
- }
628
- }
629
- catch {
630
- try {
631
- fs.unlinkSync(SERVE_PID_FILE);
632
- }
633
- catch { }
634
- }
635
- // Secondary check: verify if port is already in use by another instance
636
- const isPortActive = await detectRunningServer(port);
637
- if (isPortActive) {
638
- cliOutput(`Port ${port} is in use by an orphaned process. Run: npx nano-brain serve start --force`);
639
- return;
640
- }
641
- // Spawn detached child
642
- const logsDir = path.join(NANO_BRAIN_HOME, 'logs');
643
- fs.mkdirSync(logsDir, { recursive: true });
644
- const cliPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), '../bin/cli.js');
645
- const args = [cliPath, 'mcp', '--http', `--port=${port}`, '--host=0.0.0.0', '--daemon'];
646
- if (root) {
647
- args.push(`--root=${root}`);
648
- }
649
- if (globalOpts.configPath !== DEFAULT_CONFIG) {
650
- args.push(`--config=${globalOpts.configPath}`);
651
- }
652
- const logFd = fs.openSync(SERVE_LOG_FILE, 'a');
653
- const child = spawn(process.argv[0], args, {
654
- detached: true,
655
- stdio: ['ignore', logFd, logFd],
656
- });
657
- if (child.pid) {
658
- fs.writeFileSync(SERVE_PID_FILE, String(child.pid));
659
- child.unref();
660
- cliOutput(`nano-brain server started on http://0.0.0.0:${port} (PID: ${child.pid})`);
661
- cliOutput(` SSE endpoint: http://localhost:${port}/sse`);
662
- cliOutput(` Health check: http://localhost:${port}/health`);
663
- cliOutput(` Logs: ${SERVE_LOG_FILE}`);
664
- cliOutput(` Stop: npx nano-brain serve stop`);
665
- }
666
- else {
667
- cliError('Failed to start server');
668
- process.exit(1);
669
- }
670
- fs.closeSync(logFd);
671
- process.exit(0);
672
- }
673
380
  async function handleCollection(globalOpts, commandArgs) {
674
381
  const subcommand = commandArgs[0];
675
382
  if (!subcommand) {
@@ -1341,8 +1048,8 @@ async function handleEmbed(globalOpts, commandArgs) {
1341
1048
  if (isRunningInContainer()) {
1342
1049
  const serverRunning = await detectRunningServerContainer(DEFAULT_HTTP_PORT);
1343
1050
  if (!serverRunning) {
1344
- cliError('Error: Daemon not running. Start it on the host:');
1345
- cliError(' npx nano-brain serve install && launchctl load ~/Library/LaunchAgents/com.nano-brain.server.plist');
1051
+ cliError(`Error: nano-brain server not reachable at ${getHttpHost()}:${getHttpPort()}. Ensure the Docker container is running:`);
1052
+ cliError(' docker start nano-brain');
1346
1053
  process.exit(1);
1347
1054
  }
1348
1055
  try {
@@ -1486,8 +1193,8 @@ async function handleSearch(globalOpts, commandArgs, mode) {
1486
1193
  ? await detectRunningServerContainer(DEFAULT_HTTP_PORT)
1487
1194
  : await detectRunningServer(DEFAULT_HTTP_PORT);
1488
1195
  if (inContainer && !serverRunning) {
1489
- cliError('Error: Daemon not running. Start it on the host:');
1490
- cliError(' npx nano-brain serve install && launchctl load ~/Library/LaunchAgents/com.nano-brain.server.plist');
1196
+ cliError(`Error: nano-brain server not reachable at ${getHttpHost()}:${getHttpPort()}. Ensure the Docker container is running:`);
1197
+ cliError(' docker start nano-brain');
1491
1198
  process.exit(1);
1492
1199
  }
1493
1200
  if (serverRunning) {
@@ -1635,8 +1342,8 @@ async function handleWrite(globalOpts, commandArgs) {
1635
1342
  if (isRunningInContainer()) {
1636
1343
  const serverRunning = await detectRunningServerContainer(DEFAULT_HTTP_PORT);
1637
1344
  if (!serverRunning) {
1638
- cliError('Error: Daemon not running. Start it on the host:');
1639
- cliError(' npx nano-brain serve install && launchctl load ~/Library/LaunchAgents/com.nano-brain.server.plist');
1345
+ cliError(`Error: nano-brain server not reachable at ${getHttpHost()}:${getHttpPort()}. Ensure the Docker container is running:`);
1346
+ cliError(' docker start nano-brain');
1640
1347
  process.exit(1);
1641
1348
  }
1642
1349
  try {
@@ -2166,8 +1873,8 @@ async function handleReindex(globalOpts, commandArgs) {
2166
1873
  if (isRunningInContainer()) {
2167
1874
  const serverRunning = await detectRunningServerContainer(DEFAULT_HTTP_PORT);
2168
1875
  if (!serverRunning) {
2169
- cliError('Error: Daemon not running. Start it on the host:');
2170
- cliError(' npx nano-brain serve install && launchctl load ~/Library/LaunchAgents/com.nano-brain.server.plist');
1876
+ cliError(`Error: nano-brain server not reachable at ${getHttpHost()}:${getHttpPort()}. Ensure the Docker container is running:`);
1877
+ cliError(' docker start nano-brain');
2171
1878
  process.exit(1);
2172
1879
  }
2173
1880
  try {
@@ -3773,19 +3480,22 @@ async function main() {
3773
3480
  initLogger(cliConfig ?? undefined);
3774
3481
  const command = globalOpts.remaining[0] || 'mcp';
3775
3482
  const commandArgs = globalOpts.remaining.slice(1);
3483
+ // Enable stdio-safe logging as early as possible for MCP stdio mode.
3484
+ // This prevents top-level CLI logs from polluting MCP JSON-RPC transport.
3485
+ if (command === 'mcp' && !commandArgs.includes('--http')) {
3486
+ setStdioMode(true);
3487
+ }
3776
3488
  log('cli', 'command=' + command);
3777
3489
  // Resolve per-workspace DB path.
3778
3490
  // Daemon mode (serve or mcp --daemon) skips early resolution — startServer() resolves
3779
3491
  // using the correct workspace root from config.yml instead of process.cwd()
3780
- const isDaemonMode = command === 'serve' || (command === 'mcp' && commandArgs.includes('--daemon'));
3492
+ const isDaemonMode = command === 'mcp' && commandArgs.includes('--daemon');
3781
3493
  if (command !== 'init' && command !== 'docker' && !isDaemonMode) {
3782
3494
  globalOpts.dbPath = resolveDbPath(globalOpts.dbPath, process.cwd());
3783
3495
  }
3784
3496
  switch (command) {
3785
3497
  case 'mcp':
3786
3498
  return handleMcp(globalOpts, commandArgs);
3787
- case 'serve':
3788
- return handleServe(globalOpts, commandArgs);
3789
3499
  case 'init':
3790
3500
  return handleInit(globalOpts, commandArgs);
3791
3501
  case 'collection':