helixmind 0.6.5 → 0.7.0
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/cli/agent/loop.d.ts.map +1 -1
- package/dist/cli/agent/loop.js +18 -11
- package/dist/cli/agent/loop.js.map +1 -1
- package/dist/cli/agent/permissions.d.ts +16 -0
- package/dist/cli/agent/permissions.d.ts.map +1 -1
- package/dist/cli/agent/permissions.js +74 -5
- package/dist/cli/agent/permissions.js.map +1 -1
- package/dist/cli/agent/sandbox.d.ts.map +1 -1
- package/dist/cli/agent/sandbox.js +3 -0
- package/dist/cli/agent/sandbox.js.map +1 -1
- package/dist/cli/brain/archive.d.ts.map +1 -1
- package/dist/cli/brain/archive.js +48 -18
- package/dist/cli/brain/archive.js.map +1 -1
- package/dist/cli/brain/control-protocol.d.ts +17 -0
- package/dist/cli/brain/control-protocol.d.ts.map +1 -1
- package/dist/cli/brain/control-protocol.js +79 -0
- package/dist/cli/brain/control-protocol.js.map +1 -1
- package/dist/cli/brain/path-guard.d.ts +2 -0
- package/dist/cli/brain/path-guard.d.ts.map +1 -0
- package/dist/cli/brain/path-guard.js +94 -0
- package/dist/cli/brain/path-guard.js.map +1 -0
- package/dist/cli/brain/relay-client.d.ts +2 -0
- package/dist/cli/brain/relay-client.d.ts.map +1 -1
- package/dist/cli/brain/relay-client.js +58 -8
- package/dist/cli/brain/relay-client.js.map +1 -1
- package/dist/cli/brain/server.d.ts.map +1 -1
- package/dist/cli/brain/server.js +235 -23
- package/dist/cli/brain/server.js.map +1 -1
- package/dist/cli/brain/stdout-capture.d.ts +11 -0
- package/dist/cli/brain/stdout-capture.d.ts.map +1 -1
- package/dist/cli/brain/stdout-capture.js +42 -1
- package/dist/cli/brain/stdout-capture.js.map +1 -1
- package/dist/cli/brain/web-chat-handler.d.ts.map +1 -1
- package/dist/cli/brain/web-chat-handler.js +7 -0
- package/dist/cli/brain/web-chat-handler.js.map +1 -1
- package/dist/cli/checkpoints/revert.d.ts +5 -0
- package/dist/cli/checkpoints/revert.d.ts.map +1 -1
- package/dist/cli/checkpoints/revert.js +100 -11
- package/dist/cli/checkpoints/revert.js.map +1 -1
- package/dist/cli/checkpoints/store.d.ts +3 -0
- package/dist/cli/checkpoints/store.d.ts.map +1 -1
- package/dist/cli/checkpoints/store.js.map +1 -1
- package/dist/cli/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +138 -73
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/core/input.d.ts +0 -1
- package/dist/cli/core/input.d.ts.map +1 -1
- package/dist/cli/core/input.js +9 -17
- package/dist/cli/core/input.js.map +1 -1
- package/dist/cli/jarvis/autonomy.d.ts +13 -1
- package/dist/cli/jarvis/autonomy.d.ts.map +1 -1
- package/dist/cli/jarvis/autonomy.js +33 -1
- package/dist/cli/jarvis/autonomy.js.map +1 -1
- package/dist/cli/jarvis/core-ethics.d.ts +15 -0
- package/dist/cli/jarvis/core-ethics.d.ts.map +1 -1
- package/dist/cli/jarvis/core-ethics.js +110 -9
- package/dist/cli/jarvis/core-ethics.js.map +1 -1
- package/dist/cli/jarvis/daemon.d.ts.map +1 -1
- package/dist/cli/jarvis/daemon.js +8 -0
- package/dist/cli/jarvis/daemon.js.map +1 -1
- package/dist/cli/jarvis/instance-lock.d.ts.map +1 -1
- package/dist/cli/jarvis/instance-lock.js +132 -27
- package/dist/cli/jarvis/instance-lock.js.map +1 -1
- package/dist/cli/jarvis/learning.d.ts +6 -0
- package/dist/cli/jarvis/learning.d.ts.map +1 -1
- package/dist/cli/jarvis/learning.js +17 -3
- package/dist/cli/jarvis/learning.js.map +1 -1
- package/dist/cli/jarvis/notifications.d.ts.map +1 -1
- package/dist/cli/jarvis/notifications.js +75 -10
- package/dist/cli/jarvis/notifications.js.map +1 -1
- package/dist/cli/jarvis/onboarding.d.ts.map +1 -1
- package/dist/cli/jarvis/onboarding.js +32 -2
- package/dist/cli/jarvis/onboarding.js.map +1 -1
- package/dist/cli/jarvis/queue.d.ts +5 -0
- package/dist/cli/jarvis/queue.d.ts.map +1 -1
- package/dist/cli/jarvis/queue.js +23 -6
- package/dist/cli/jarvis/queue.js.map +1 -1
- package/dist/cli/jarvis/scheduler.d.ts +8 -0
- package/dist/cli/jarvis/scheduler.d.ts.map +1 -1
- package/dist/cli/jarvis/scheduler.js +32 -4
- package/dist/cli/jarvis/scheduler.js.map +1 -1
- package/dist/cli/jarvis/sentiment.d.ts +11 -0
- package/dist/cli/jarvis/sentiment.d.ts.map +1 -1
- package/dist/cli/jarvis/sentiment.js +40 -6
- package/dist/cli/jarvis/sentiment.js.map +1 -1
- package/dist/cli/jarvis/skills.d.ts +35 -0
- package/dist/cli/jarvis/skills.d.ts.map +1 -1
- package/dist/cli/jarvis/skills.js +144 -0
- package/dist/cli/jarvis/skills.js.map +1 -1
- package/dist/cli/jarvis/triggers.d.ts.map +1 -1
- package/dist/cli/jarvis/triggers.js +65 -9
- package/dist/cli/jarvis/triggers.js.map +1 -1
- package/dist/cli/jarvis/types.d.ts +10 -0
- package/dist/cli/jarvis/types.d.ts.map +1 -1
- package/dist/cli/jarvis/world-model.d.ts +4 -0
- package/dist/cli/jarvis/world-model.d.ts.map +1 -1
- package/dist/cli/jarvis/world-model.js +23 -1
- package/dist/cli/jarvis/world-model.js.map +1 -1
- package/dist/cli/providers/anthropic.d.ts +5 -1
- package/dist/cli/providers/anthropic.d.ts.map +1 -1
- package/dist/cli/providers/anthropic.js +133 -36
- package/dist/cli/providers/anthropic.js.map +1 -1
- package/dist/cli/providers/model-limits.d.ts +8 -0
- package/dist/cli/providers/model-limits.d.ts.map +1 -1
- package/dist/cli/providers/model-limits.js +41 -0
- package/dist/cli/providers/model-limits.js.map +1 -1
- package/dist/cli/providers/ollama.d.ts +2 -0
- package/dist/cli/providers/ollama.d.ts.map +1 -1
- package/dist/cli/providers/ollama.js +8 -0
- package/dist/cli/providers/ollama.js.map +1 -1
- package/dist/cli/providers/openai.d.ts +5 -1
- package/dist/cli/providers/openai.d.ts.map +1 -1
- package/dist/cli/providers/openai.js +66 -19
- package/dist/cli/providers/openai.js.map +1 -1
- package/dist/cli/providers/rate-limiter.d.ts +58 -20
- package/dist/cli/providers/rate-limiter.d.ts.map +1 -1
- package/dist/cli/providers/rate-limiter.js +212 -96
- package/dist/cli/providers/rate-limiter.js.map +1 -1
- package/dist/cli/providers/registry.d.ts.map +1 -1
- package/dist/cli/providers/registry.js +20 -12
- package/dist/cli/providers/registry.js.map +1 -1
- package/dist/cli/providers/types.d.ts +16 -5
- package/dist/cli/providers/types.d.ts.map +1 -1
- package/dist/spiral/cloud/content-extractor.d.ts.map +1 -1
- package/dist/spiral/cloud/content-extractor.js +6 -4
- package/dist/spiral/cloud/content-extractor.js.map +1 -1
- package/dist/spiral/cloud/search-provider.d.ts.map +1 -1
- package/dist/spiral/cloud/search-provider.js +7 -2
- package/dist/spiral/cloud/search-provider.js.map +1 -1
- package/dist/spiral/cloud/web-enricher.d.ts.map +1 -1
- package/dist/spiral/cloud/web-enricher.js +10 -2
- package/dist/spiral/cloud/web-enricher.js.map +1 -1
- package/dist/spiral/compression.d.ts +5 -2
- package/dist/spiral/compression.d.ts.map +1 -1
- package/dist/spiral/compression.js +23 -6
- package/dist/spiral/compression.js.map +1 -1
- package/dist/spiral/engine.d.ts +7 -1
- package/dist/spiral/engine.d.ts.map +1 -1
- package/dist/spiral/engine.js +83 -35
- package/dist/spiral/engine.js.map +1 -1
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +41 -0
- package/dist/storage/database.js.map +1 -1
- package/dist/storage/nodes.d.ts +6 -0
- package/dist/storage/nodes.d.ts.map +1 -1
- package/dist/storage/nodes.js +9 -0
- package/dist/storage/nodes.js.map +1 -1
- package/dist/storage/vectors.d.ts +1 -0
- package/dist/storage/vectors.d.ts.map +1 -1
- package/dist/storage/vectors.js +39 -7
- package/dist/storage/vectors.js.map +1 -1
- package/package.json +3 -3
package/dist/cli/brain/server.js
CHANGED
|
@@ -1,15 +1,82 @@
|
|
|
1
1
|
import { createServer } from 'node:http';
|
|
2
|
-
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import { spawn } from 'node:child_process';
|
|
2
|
+
import { randomUUID, timingSafeEqual } from 'node:crypto';
|
|
3
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
4
|
+
import * as os from 'node:os';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import * as fs from 'node:fs';
|
|
4
7
|
import { WebSocketServer, WebSocket } from 'ws';
|
|
5
8
|
import { generateBrainHTML } from './template.js';
|
|
6
|
-
import { CONTROL_REQUEST_TYPES, } from './control-protocol.js';
|
|
9
|
+
import { CONTROL_REQUEST_TYPES, validateControlMessageShape, } from './control-protocol.js';
|
|
7
10
|
import { VERSION } from '../version.js';
|
|
11
|
+
import { isValidProjectPath } from './path-guard.js';
|
|
8
12
|
const OLLAMA_BASE = 'http://localhost:11434';
|
|
9
13
|
const OLLAMA_PROXY_TIMEOUT_MS = 5000;
|
|
10
14
|
const BRAIN_PORT_START = 9420;
|
|
11
15
|
const BRAIN_PORT_END = 9440;
|
|
12
16
|
const AUTH_TIMEOUT_MS = 5000;
|
|
17
|
+
// FIX: BRAIN-F10 — cap how many times /api/token serves the full token per
|
|
18
|
+
// process lifetime. Legitimate callers need it at most 2–3 times (web dashboard
|
|
19
|
+
// discovery + brain HTML). After that, all callers must embed the token already.
|
|
20
|
+
const MAX_TOKEN_SERVES = 3;
|
|
21
|
+
// FIX: BRAIN-F12 — resolve the absolute path to the `ollama` binary at startup
|
|
22
|
+
// (via `where`/`which`) and only spawn that exact path. Prevents PATH hijack
|
|
23
|
+
// where a malicious `ollama` earlier in PATH would get executed instead.
|
|
24
|
+
let resolvedOllamaPath = null;
|
|
25
|
+
function resolveOllamaBinary() {
|
|
26
|
+
if (resolvedOllamaPath !== null)
|
|
27
|
+
return resolvedOllamaPath;
|
|
28
|
+
const isWindows = process.platform === 'win32';
|
|
29
|
+
const cmd = isWindows ? 'where' : 'which';
|
|
30
|
+
try {
|
|
31
|
+
const r = spawnSync(cmd, ['ollama'], { encoding: 'utf8', timeout: 3000, windowsHide: true });
|
|
32
|
+
if (r.status === 0 && r.stdout) {
|
|
33
|
+
const line = r.stdout.split(/\r?\n/).find((l) => l.trim().length > 0);
|
|
34
|
+
if (line && path.isAbsolute(line.trim())) {
|
|
35
|
+
resolvedOllamaPath = line.trim();
|
|
36
|
+
return resolvedOllamaPath;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
console.error('[brain] ollama binary not found on PATH — /start_ollama disabled');
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
console.error('[brain] failed to resolve ollama binary:', err instanceof Error ? err.message : String(err));
|
|
43
|
+
}
|
|
44
|
+
resolvedOllamaPath = '';
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* FIX: BRAIN-F3 — Validate Host header on local HTTP requests. The Host header
|
|
49
|
+
* must reference a loopback address; otherwise the request may be a
|
|
50
|
+
* DNS-rebinding attack against the CLI server.
|
|
51
|
+
*/
|
|
52
|
+
function isLoopbackHost(hostHeader) {
|
|
53
|
+
if (!hostHeader)
|
|
54
|
+
return false;
|
|
55
|
+
// Strip port
|
|
56
|
+
const hostnameOnly = hostHeader.replace(/:\d+$/, '').toLowerCase().replace(/^\[|\]$/g, '');
|
|
57
|
+
return (hostnameOnly === '127.0.0.1' ||
|
|
58
|
+
hostnameOnly === 'localhost' ||
|
|
59
|
+
hostnameOnly === '::1' ||
|
|
60
|
+
hostnameOnly === '0.0.0.0');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* FIX: BRAIN-F8 — Timing-safe token comparison. Prevents a network/timing
|
|
64
|
+
* attacker from inferring the token byte by byte through response-time
|
|
65
|
+
* differences in `a !== b`.
|
|
66
|
+
*/
|
|
67
|
+
function timingSafeTokenEq(a, b) {
|
|
68
|
+
if (typeof a !== 'string' || typeof b !== 'string')
|
|
69
|
+
return false;
|
|
70
|
+
if (a.length !== b.length)
|
|
71
|
+
return false;
|
|
72
|
+
try {
|
|
73
|
+
return timingSafeEqual(Buffer.from(a), Buffer.from(b));
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error('[brain] timingSafeEqual failed:', err instanceof Error ? err.message : String(err));
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
13
80
|
/** Proxy a request to the Ollama API and return the response */
|
|
14
81
|
async function ollamaProxy(path, res, corsOrigin, method = 'GET', body) {
|
|
15
82
|
try {
|
|
@@ -117,6 +184,30 @@ export function startBrainServer(initialData) {
|
|
|
117
184
|
let controlHandlers = null;
|
|
118
185
|
// Mutable port reference — updated after listen() resolves the actual port
|
|
119
186
|
let resolvedPort = BRAIN_PORT_START;
|
|
187
|
+
// FIX: BRAIN-F10 — count how many times /api/token has served the full token
|
|
188
|
+
// this process lifetime. Over the cap, respond 410 Gone.
|
|
189
|
+
let tokenServeCount = 0;
|
|
190
|
+
// FIX: BRAIN-F12 — eagerly resolve the ollama binary path at server start so
|
|
191
|
+
// later /start_ollama requests use the absolute path (or get denied).
|
|
192
|
+
resolveOllamaBinary();
|
|
193
|
+
// FIX: BRAIN-F10 — persist the session token to a user-only file so that
|
|
194
|
+
// legitimate local helpers (e.g. browser discovery) can pick it up without
|
|
195
|
+
// going through the HTTP endpoint. File mode 0o600: owner read/write only.
|
|
196
|
+
try {
|
|
197
|
+
const dir = path.join(os.homedir(), '.helixmind');
|
|
198
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
199
|
+
// Placeholder name; real port substituted after listen() resolves
|
|
200
|
+
const initialFile = path.join(dir, `session-pending-${process.pid}.token`);
|
|
201
|
+
fs.writeFileSync(initialFile, connectionToken, { mode: 0o600 });
|
|
202
|
+
// Clean up pending file on process exit — best-effort
|
|
203
|
+
process.on('exit', () => { try {
|
|
204
|
+
fs.unlinkSync(initialFile);
|
|
205
|
+
}
|
|
206
|
+
catch { /* non-fatal */ } });
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
console.error('[brain] failed to persist session token:', err instanceof Error ? err.message : String(err));
|
|
210
|
+
}
|
|
120
211
|
const httpServer = createServer(async (req, res) => {
|
|
121
212
|
const url = req.url || '/';
|
|
122
213
|
// CORS headers — restrict to localhost origins only (prevents cross-site abuse)
|
|
@@ -159,21 +250,50 @@ export function startBrainServer(initialData) {
|
|
|
159
250
|
res.end(JSON.stringify(meta));
|
|
160
251
|
}
|
|
161
252
|
else if (url === '/api/token') {
|
|
162
|
-
//
|
|
163
|
-
//
|
|
253
|
+
// FIX: BRAIN-F3 — reject requests whose Host header doesn't resolve to
|
|
254
|
+
// loopback. A browser that's been tricked into resolving the CLI's
|
|
255
|
+
// 127.0.0.1 via DNS rebinding will still carry the attacker's Host.
|
|
256
|
+
if (!isLoopbackHost(req.headers.host)) {
|
|
257
|
+
console.warn('[brain] /api/token rejected: non-loopback Host header', req.headers.host);
|
|
258
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
259
|
+
res.end(JSON.stringify({ error: 'Forbidden' }));
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
// FIX: BRAIN-F10 — rate-limit how many times we hand out the full token
|
|
263
|
+
// from this endpoint. Legitimate flows need it at most ~3 times.
|
|
264
|
+
if (tokenServeCount >= MAX_TOKEN_SERVES) {
|
|
265
|
+
console.warn(`[brain] /api/token refused — cap of ${MAX_TOKEN_SERVES} reached`);
|
|
266
|
+
res.writeHead(410, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
267
|
+
res.end(JSON.stringify({ error: 'Token endpoint disabled — cap reached' }));
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
tokenServeCount++;
|
|
271
|
+
console.warn(`[brain] Token served to caller (${tokenServeCount}/${MAX_TOKEN_SERVES})`);
|
|
164
272
|
res.writeHead(200, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
165
273
|
res.end(JSON.stringify({ token: connectionToken }));
|
|
166
274
|
}
|
|
167
275
|
else if (url === '/api/token-hint') {
|
|
276
|
+
if (!isLoopbackHost(req.headers.host)) {
|
|
277
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
278
|
+
res.end(JSON.stringify({ error: 'Forbidden' }));
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
168
281
|
const hint = connectionToken.slice(-4);
|
|
169
282
|
res.writeHead(200, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
170
283
|
res.end(JSON.stringify({ hint }));
|
|
171
284
|
}
|
|
172
285
|
else if (url?.startsWith('/api/data')) {
|
|
173
286
|
// SECURITY: require connection token to prevent cross-site brain data theft
|
|
287
|
+
// FIX: BRAIN-F3 — defense-in-depth Host check.
|
|
288
|
+
if (!isLoopbackHost(req.headers.host)) {
|
|
289
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
290
|
+
res.end(JSON.stringify({ error: 'Forbidden' }));
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
174
293
|
const dataUrl = new URL(url, `http://127.0.0.1:${resolvedPort}`);
|
|
175
|
-
const tok = dataUrl.searchParams.get('token');
|
|
176
|
-
|
|
294
|
+
const tok = dataUrl.searchParams.get('token') ?? '';
|
|
295
|
+
// FIX: BRAIN-F8 — timing-safe comparison (length-prechecked inside).
|
|
296
|
+
if (!timingSafeTokenEq(tok, connectionToken)) {
|
|
177
297
|
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
178
298
|
res.end(JSON.stringify({ error: 'Unauthorized' }));
|
|
179
299
|
return;
|
|
@@ -239,8 +359,43 @@ export function startBrainServer(initialData) {
|
|
|
239
359
|
}
|
|
240
360
|
});
|
|
241
361
|
httpServer.listen(port, '127.0.0.1', () => {
|
|
242
|
-
// Create WebSocket server AFTER HTTP server is successfully listening
|
|
243
|
-
|
|
362
|
+
// Create WebSocket server AFTER HTTP server is successfully listening.
|
|
363
|
+
// FIX: BRAIN-F3 — reject WS upgrades whose Origin header isn't loopback
|
|
364
|
+
// or explicitly safe. CLI / relay connections have no Origin and are
|
|
365
|
+
// allowed; browsers running on localhost are allowed; anything else is
|
|
366
|
+
// rejected at the handshake before any app code runs.
|
|
367
|
+
const wss = new WebSocketServer({
|
|
368
|
+
server: httpServer,
|
|
369
|
+
maxPayload: 1 * 1024 * 1024,
|
|
370
|
+
verifyClient: ({ origin, req }, cb) => {
|
|
371
|
+
// Host header check (defense-in-depth, even for WS)
|
|
372
|
+
const hostHeader = req.headers.host;
|
|
373
|
+
if (!isLoopbackHost(hostHeader)) {
|
|
374
|
+
console.warn('[brain] WS upgrade rejected — non-loopback Host:', hostHeader);
|
|
375
|
+
return cb(false, 403, 'Forbidden');
|
|
376
|
+
}
|
|
377
|
+
// No Origin: allowed (CLI, relay, native clients)
|
|
378
|
+
if (!origin)
|
|
379
|
+
return cb(true);
|
|
380
|
+
// `null` origin string (file:// or sandboxed iframe) — allowed
|
|
381
|
+
if (origin === 'null')
|
|
382
|
+
return cb(true);
|
|
383
|
+
try {
|
|
384
|
+
const u = new URL(origin);
|
|
385
|
+
const ok = u.hostname === 'localhost' ||
|
|
386
|
+
u.hostname === '127.0.0.1' ||
|
|
387
|
+
u.hostname === '[::1]' ||
|
|
388
|
+
u.hostname === '::1';
|
|
389
|
+
if (!ok)
|
|
390
|
+
console.warn('[brain] WS upgrade rejected — Origin:', origin);
|
|
391
|
+
return cb(ok, ok ? undefined : 403, ok ? undefined : 'Forbidden');
|
|
392
|
+
}
|
|
393
|
+
catch (err) {
|
|
394
|
+
console.error('[brain] WS upgrade verifyClient error:', err instanceof Error ? err.message : String(err));
|
|
395
|
+
return cb(false, 400, 'Bad Request');
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
});
|
|
244
399
|
// Brain visualization clients (legacy — no auth required)
|
|
245
400
|
const brainClients = new Set();
|
|
246
401
|
// Authenticated control clients (CLI ↔ Web protocol)
|
|
@@ -462,11 +617,16 @@ export function startBrainServer(initialData) {
|
|
|
462
617
|
break;
|
|
463
618
|
}
|
|
464
619
|
case 'register_project': {
|
|
465
|
-
//
|
|
466
|
-
if (
|
|
620
|
+
// FIX: BRAIN-F7 — strict path guard (traversal, UNC, system-dir).
|
|
621
|
+
if (!isValidProjectPath(msg.path)) {
|
|
622
|
+
console.warn('[brain] Rejecting register_project with invalid path');
|
|
467
623
|
sendTo(ws, { type: 'error', message: 'Invalid project path', requestId, timestamp: Date.now() });
|
|
468
624
|
break;
|
|
469
625
|
}
|
|
626
|
+
if (msg.name !== undefined && (typeof msg.name !== 'string' || msg.name.length > 200)) {
|
|
627
|
+
sendTo(ws, { type: 'error', message: 'Invalid project name', requestId, timestamp: Date.now() });
|
|
628
|
+
break;
|
|
629
|
+
}
|
|
470
630
|
const project = controlHandlers.registerProject(msg.path, msg.name);
|
|
471
631
|
sendTo(ws, { type: 'project_registered', project, requestId, timestamp: Date.now() });
|
|
472
632
|
break;
|
|
@@ -482,6 +642,17 @@ export function startBrainServer(initialData) {
|
|
|
482
642
|
break;
|
|
483
643
|
}
|
|
484
644
|
case 'switch_model': {
|
|
645
|
+
// FIX: BRAIN-F5 — switching model rewrites config and can redirect
|
|
646
|
+
// all future traffic (and API-key usage) to a different provider.
|
|
647
|
+
// Refuse from remote by default. Local clients hit this same WS
|
|
648
|
+
// path today but with the origin check in place, relay-forwarded
|
|
649
|
+
// calls (see relay-client.ts) are where the hard refusal lives.
|
|
650
|
+
// Keeping local behavior permissive; the relay path is the attacker
|
|
651
|
+
// surface.
|
|
652
|
+
if (typeof msg.provider !== 'string' || typeof msg.model !== 'string') {
|
|
653
|
+
sendTo(ws, { type: 'error', message: 'Invalid switch_model request', requestId, timestamp: Date.now() });
|
|
654
|
+
break;
|
|
655
|
+
}
|
|
485
656
|
const success = controlHandlers.switchModel(msg.provider, msg.model);
|
|
486
657
|
sendTo(ws, { type: 'model_switched', success, requestId, timestamp: Date.now() });
|
|
487
658
|
break;
|
|
@@ -498,8 +669,22 @@ export function startBrainServer(initialData) {
|
|
|
498
669
|
break;
|
|
499
670
|
}
|
|
500
671
|
case 'revert_to_checkpoint': {
|
|
501
|
-
|
|
502
|
-
|
|
672
|
+
// FIX: BRAIN-F5 — 'code' or 'both' mode writes files on disk, which
|
|
673
|
+
// is destructive. Local-WS origin is trusted (user is on the same
|
|
674
|
+
// box), but we still validate shape. The remote-relay entry point
|
|
675
|
+
// has a stricter refusal for these modes when remote approval is
|
|
676
|
+
// disabled (default).
|
|
677
|
+
if (typeof msg.checkpointId !== 'number' || !Number.isFinite(msg.checkpointId)) {
|
|
678
|
+
sendTo(ws, { type: 'error', message: 'Invalid checkpointId', requestId, timestamp: Date.now() });
|
|
679
|
+
break;
|
|
680
|
+
}
|
|
681
|
+
const mode = msg.mode || 'both';
|
|
682
|
+
if (mode !== 'chat' && mode !== 'code' && mode !== 'both') {
|
|
683
|
+
sendTo(ws, { type: 'error', message: 'Invalid revert mode', requestId, timestamp: Date.now() });
|
|
684
|
+
break;
|
|
685
|
+
}
|
|
686
|
+
const result = controlHandlers.revertToCheckpoint(msg.checkpointId, mode);
|
|
687
|
+
sendTo(ws, { type: 'checkpoint_reverted', checkpointId: msg.checkpointId, mode, ...result, requestId, timestamp: Date.now() });
|
|
503
688
|
break;
|
|
504
689
|
}
|
|
505
690
|
// --- Brain Management ---
|
|
@@ -535,15 +720,20 @@ export function startBrainServer(initialData) {
|
|
|
535
720
|
break;
|
|
536
721
|
}
|
|
537
722
|
case 'create_brain': {
|
|
538
|
-
//
|
|
539
|
-
if (msg.projectPath
|
|
723
|
+
// FIX: BRAIN-F7 — strict path guard (traversal, UNC, system-dir).
|
|
724
|
+
if (msg.projectPath !== undefined && !isValidProjectPath(msg.projectPath)) {
|
|
725
|
+
console.warn('[brain] Rejecting create_brain with invalid projectPath');
|
|
540
726
|
sendTo(ws, { type: 'error', message: 'Invalid project path', requestId, timestamp: Date.now() });
|
|
541
727
|
break;
|
|
542
728
|
}
|
|
543
|
-
if (typeof msg.name !== 'string' || msg.name.length > 200) {
|
|
729
|
+
if (typeof msg.name !== 'string' || msg.name.length === 0 || msg.name.length > 200) {
|
|
544
730
|
sendTo(ws, { type: 'error', message: 'Invalid brain name', requestId, timestamp: Date.now() });
|
|
545
731
|
break;
|
|
546
732
|
}
|
|
733
|
+
if (msg.brainType !== 'global' && msg.brainType !== 'local') {
|
|
734
|
+
sendTo(ws, { type: 'error', message: 'Invalid brainType', requestId, timestamp: Date.now() });
|
|
735
|
+
break;
|
|
736
|
+
}
|
|
547
737
|
const brain = controlHandlers.createBrain(msg.name, msg.brainType, msg.projectPath);
|
|
548
738
|
if (brain) {
|
|
549
739
|
sendTo(ws, { type: 'brain_created', brain, requestId, timestamp: Date.now() });
|
|
@@ -685,7 +875,8 @@ export function startBrainServer(initialData) {
|
|
|
685
875
|
}
|
|
686
876
|
if (authenticated)
|
|
687
877
|
return; // Already authenticated (timeout or previous auth)
|
|
688
|
-
|
|
878
|
+
// FIX: BRAIN-F8 — constant-time token comparison on WS auth.
|
|
879
|
+
if (typeof msg.token === 'string' && timingSafeTokenEq(msg.token, connectionToken)) {
|
|
689
880
|
authenticated = true;
|
|
690
881
|
controlClients.add(ws);
|
|
691
882
|
// Also add to brain clients so they get brain events too
|
|
@@ -713,6 +904,15 @@ export function startBrainServer(initialData) {
|
|
|
713
904
|
}
|
|
714
905
|
// Control messages (only from authenticated clients)
|
|
715
906
|
if (authenticated && isControlRequest(msg.type)) {
|
|
907
|
+
// FIX: BRAIN-F9 — runtime shape validation for dangerous types
|
|
908
|
+
// before dispatching. An invalid shape is a protocol violation
|
|
909
|
+
// and gets rejected with an error message (no handler runs).
|
|
910
|
+
const shapeResult = validateControlMessageShape(msg);
|
|
911
|
+
if (!shapeResult.ok) {
|
|
912
|
+
console.warn('[brain] Rejecting malformed control message:', msg.type, shapeResult.error);
|
|
913
|
+
sendTo(ws, { type: 'error', message: `Invalid message: ${shapeResult.error}`, requestId: msg.requestId, timestamp: Date.now() });
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
716
916
|
handleControlMessage(ws, msg).catch((err) => {
|
|
717
917
|
if (process.env.DEBUG) {
|
|
718
918
|
console.error('[brain] Control message handler error:', err instanceof Error ? err.message : String(err));
|
|
@@ -743,13 +943,25 @@ export function startBrainServer(initialData) {
|
|
|
743
943
|
sendTo(ws, { type: 'ollama_starting', timestamp: Date.now(), throttled: true });
|
|
744
944
|
}
|
|
745
945
|
else {
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
946
|
+
// FIX: BRAIN-F12 — resolve ollama to an absolute path at
|
|
947
|
+
// startup and spawn only that path. If not found, refuse
|
|
948
|
+
// rather than allowing a PATH-hijacked binary to run.
|
|
949
|
+
const bin = resolveOllamaBinary();
|
|
950
|
+
if (!bin) {
|
|
951
|
+
sendTo(ws, { type: 'error', message: 'Ollama binary not available', timestamp: Date.now() });
|
|
952
|
+
}
|
|
953
|
+
else {
|
|
954
|
+
lastOllamaSpawn = now;
|
|
955
|
+
try {
|
|
956
|
+
const child = spawn(bin, ['serve'], { detached: true, stdio: 'ignore', windowsHide: true });
|
|
957
|
+
child.unref();
|
|
958
|
+
sendTo(ws, { type: 'ollama_starting', timestamp: Date.now() });
|
|
959
|
+
}
|
|
960
|
+
catch (err) {
|
|
961
|
+
console.error('[brain] Failed to spawn ollama:', err instanceof Error ? err.message : String(err));
|
|
962
|
+
sendTo(ws, { type: 'error', message: 'Failed to start Ollama', timestamp: Date.now() });
|
|
963
|
+
}
|
|
751
964
|
}
|
|
752
|
-
catch { /* ignore spawn errors */ }
|
|
753
965
|
}
|
|
754
966
|
}
|
|
755
967
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/brain/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/brain/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,17 @@
|
|
|
5
5
|
* and feeds them into the session's capture() method for web streaming.
|
|
6
6
|
*/
|
|
7
7
|
import type { Session } from '../sessions/session.js';
|
|
8
|
+
/**
|
|
9
|
+
* FIX: BRAIN-F4 — redact high-entropy credentials from any line that will be
|
|
10
|
+
* forwarded to the web/relay. Patterns cover the providers the CLI supports
|
|
11
|
+
* plus generic PEM/AWS/Bearer tokens. This mirrors the redaction logic used
|
|
12
|
+
* by the spiral store so captured output doesn't leak secrets the spiral
|
|
13
|
+
* already treats as sensitive.
|
|
14
|
+
*
|
|
15
|
+
* Defense-in-depth: we do NOT redact the local terminal copy (self.origWrite
|
|
16
|
+
* still receives the untouched chunk) — only what enters session.capture().
|
|
17
|
+
*/
|
|
18
|
+
export declare function redactSecrets(s: string): string;
|
|
8
19
|
export declare class StdoutCapture {
|
|
9
20
|
private session;
|
|
10
21
|
private origWrite;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdout-capture.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/stdout-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,OAAO;IAIpC,gCAAgC;IAChC,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"stdout-capture.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/stdout-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB/C;AAED,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,OAAO;IAIpC,gCAAgC;IAChC,KAAK,IAAI,IAAI;IA8Bb,0DAA0D;IAC1D,IAAI,IAAI,IAAI;CAKb"}
|
|
@@ -1,4 +1,41 @@
|
|
|
1
1
|
const STATUSBAR_RE = /L\d+:\d+\s+L\d+:\d+|safe permissions|shift\+tab to cycle|esc to interrupt|FREE_PLUS|FREE_BASE|\d+\/\d+\.?\d*k tk|\d+ ckpts/;
|
|
2
|
+
/**
|
|
3
|
+
* FIX: BRAIN-F4 — redact high-entropy credentials from any line that will be
|
|
4
|
+
* forwarded to the web/relay. Patterns cover the providers the CLI supports
|
|
5
|
+
* plus generic PEM/AWS/Bearer tokens. This mirrors the redaction logic used
|
|
6
|
+
* by the spiral store so captured output doesn't leak secrets the spiral
|
|
7
|
+
* already treats as sensitive.
|
|
8
|
+
*
|
|
9
|
+
* Defense-in-depth: we do NOT redact the local terminal copy (self.origWrite
|
|
10
|
+
* still receives the untouched chunk) — only what enters session.capture().
|
|
11
|
+
*/
|
|
12
|
+
export function redactSecrets(s) {
|
|
13
|
+
try {
|
|
14
|
+
return s
|
|
15
|
+
// Anthropic API keys (must come before generic sk- rule)
|
|
16
|
+
.replace(/\bsk-ant-[A-Za-z0-9_\-]{20,}/g, '[REDACTED_KEY]')
|
|
17
|
+
// OpenAI / generic "sk-" keys
|
|
18
|
+
.replace(/\bsk-[A-Za-z0-9_\-]{20,}/g, '[REDACTED_KEY]')
|
|
19
|
+
// GitHub personal access tokens
|
|
20
|
+
.replace(/\bghp_[A-Za-z0-9]{36,}/g, '[REDACTED_TOKEN]')
|
|
21
|
+
// GitHub fine-grained tokens
|
|
22
|
+
.replace(/\bgithub_pat_[A-Za-z0-9_]{20,}/g, '[REDACTED_TOKEN]')
|
|
23
|
+
// Bearer tokens in Authorization headers / env dumps
|
|
24
|
+
.replace(/\bBearer\s+[A-Za-z0-9_\-\.]{20,}/gi, 'Bearer [REDACTED]')
|
|
25
|
+
// AWS access keys
|
|
26
|
+
.replace(/\bAKIA[0-9A-Z]{16}\b/g, '[REDACTED_AWS]')
|
|
27
|
+
// PEM-encoded private keys (multi-line, already flattened to one line here)
|
|
28
|
+
.replace(/-----BEGIN[^-]*PRIVATE KEY-----[\s\S]*?-----END[^-]*PRIVATE KEY-----/g, '[REDACTED_PRIVATE_KEY]')
|
|
29
|
+
// Slack tokens
|
|
30
|
+
.replace(/\bxox[baprs]-[A-Za-z0-9-]{10,}/g, '[REDACTED_SLACK]');
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
// If the regex engine throws for some pathological input, fail closed:
|
|
34
|
+
// redact the whole line rather than passing it through unmodified.
|
|
35
|
+
console.error('[stdout-capture] redactSecrets error:', err instanceof Error ? err.message : String(err));
|
|
36
|
+
return '[REDACTED]';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
2
39
|
export class StdoutCapture {
|
|
3
40
|
session;
|
|
4
41
|
origWrite;
|
|
@@ -28,7 +65,11 @@ export class StdoutCapture {
|
|
|
28
65
|
const isReadlineInput = stripped.startsWith('│') || stripped.startsWith('|') ||
|
|
29
66
|
stripped.includes('❯') || stripped === '›' || stripped === '>';
|
|
30
67
|
if (stripped.length > 0 && !STATUSBAR_RE.test(stripped) && !isReadlineInput) {
|
|
31
|
-
|
|
68
|
+
// FIX: BRAIN-F4 — scrub credentials before the line is pushed to
|
|
69
|
+
// any web/relay client. The original chunk (with credentials) is
|
|
70
|
+
// still written to the local TTY by self.origWrite() below.
|
|
71
|
+
const redacted = redactSecrets(line);
|
|
72
|
+
self.session.capture(redacted);
|
|
32
73
|
}
|
|
33
74
|
}
|
|
34
75
|
return self.origWrite(chunk, encoding, callback);
|