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.
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +34 -2
- package/dist/embeddings.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -325
- package/dist/index.js.map +1 -1
- package/dist/providers/qdrant.d.ts.map +1 -1
- package/dist/providers/qdrant.js +8 -0
- package/dist/providers/qdrant.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -2
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +8 -1
- package/dist/store.js.map +1 -1
- package/dist/treesitter.d.ts.map +1 -1
- package/dist/treesitter.js +4 -3
- package/dist/treesitter.js.map +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +7 -2
- package/dist/watcher.js.map +1 -1
- package/dist/web/assets/index-Dh0GlmPP.css +1 -0
- package/dist/web/assets/index-IH5W4yGw.js +236 -0
- package/dist/web/index.html +2 -2
- package/dist/web/src/api/client.d.ts +180 -0
- package/dist/web/src/api/client.d.ts.map +1 -0
- package/dist/web/src/api/client.js +65 -0
- package/dist/web/src/api/client.js.map +1 -0
- package/dist/web/src/lib/colors.d.ts +21 -0
- package/dist/web/src/lib/colors.d.ts.map +1 -0
- package/dist/web/src/lib/colors.js +70 -0
- package/dist/web/src/lib/colors.js.map +1 -0
- package/dist/web/src/lib/graph-adapter.d.ts +35 -0
- package/dist/web/src/lib/graph-adapter.d.ts.map +1 -0
- package/dist/web/src/lib/graph-adapter.js +308 -0
- package/dist/web/src/lib/graph-adapter.js.map +1 -0
- package/dist/web/src/store/app.d.ts +7 -0
- package/dist/web/src/store/app.d.ts.map +1 -0
- package/dist/web/src/store/app.js +6 -0
- package/dist/web/src/store/app.js.map +1 -0
- package/dist/web/vite.config.d.ts +3 -0
- package/dist/web/vite.config.d.ts.map +1 -0
- package/dist/web/vite.config.js +18 -0
- package/dist/web/vite.config.js.map +1 -0
- package/docker-compose.yml +1 -1
- package/package.json +2 -2
- package/src/embeddings.ts +40 -2
- package/src/treesitter.ts +81 -80
- package/src/web/package-lock.json +208 -87
- package/src/web/package.json +3 -6
- package/src/web/src/components/EntityDetailPanel.tsx +94 -0
- package/src/web/src/components/ReactFlowGraph.tsx +112 -0
- package/src/web/src/components/nodes/DocumentNode.tsx +31 -0
- package/src/web/src/components/nodes/EntityNode.tsx +43 -0
- package/src/web/src/components/nodes/FileNode.tsx +33 -0
- package/src/web/src/components/nodes/SymbolNode.tsx +37 -0
- package/src/web/src/lib/colors.ts +23 -0
- package/src/web/src/lib/graph-adapter.ts +244 -178
- package/src/web/src/main.tsx +1 -0
- package/src/web/src/views/CodeGraph.tsx +17 -4
- package/src/web/src/views/ConnectionsView.tsx +18 -5
- package/src/web/src/views/GraphExplorer.tsx +103 -21
- package/src/web/src/views/SymbolGraph.tsx +17 -4
- package/src/web/tsconfig.tsbuildinfo +1 -1
- package/dist/web/assets/index-DdE7D1Vb.css +0 -1
- package/dist/web/assets/index-znFKRn2I.js +0 -525
- package/src/web/src/components/GraphCanvas.tsx +0 -102
package/dist/embeddings.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/embeddings.js
CHANGED
|
@@ -117,13 +117,13 @@ class OllamaEmbeddingProvider {
|
|
|
117
117
|
dimensions: this.dimensions,
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
|
-
async
|
|
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:
|
|
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
|
}
|
package/dist/embeddings.js.map
CHANGED
|
@@ -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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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
1345
|
-
cliError('
|
|
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(
|
|
1490
|
-
cliError('
|
|
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(
|
|
1639
|
-
cliError('
|
|
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(
|
|
2170
|
-
cliError('
|
|
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 === '
|
|
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':
|