sensorium-mcp 3.0.79 → 3.0.84
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/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +131 -1
- package/dist/config.js.map +1 -1
- package/dist/dashboard/routes/threads.d.ts +6 -0
- package/dist/dashboard/routes/threads.d.ts.map +1 -1
- package/dist/dashboard/routes/threads.js +164 -9
- package/dist/dashboard/routes/threads.js.map +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +13 -1
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/spa.html +10 -10
- package/dist/data/memory/semantic.d.ts +6 -0
- package/dist/data/memory/semantic.d.ts.map +1 -1
- package/dist/data/memory/semantic.js +19 -0
- package/dist/data/memory/semantic.js.map +1 -1
- package/dist/http-server.js +1 -1
- package/dist/http-server.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -1
- package/dist/logger.js.map +1 -1
- package/dist/services/claude-spawn.service.d.ts.map +1 -1
- package/dist/services/claude-spawn.service.js +4 -1
- package/dist/services/claude-spawn.service.js.map +1 -1
- package/dist/services/codex-spawn.service.js +2 -2
- package/dist/services/codex-spawn.service.js.map +1 -1
- package/dist/services/copilot-spawn.service.js +1 -1
- package/dist/services/copilot-spawn.service.js.map +1 -1
- package/dist/services/mcp-config.service.d.ts +14 -2
- package/dist/services/mcp-config.service.d.ts.map +1 -1
- package/dist/services/mcp-config.service.js +65 -5
- package/dist/services/mcp-config.service.js.map +1 -1
- package/dist/services/process.service.js +1 -1
- package/dist/services/process.service.js.map +1 -1
- package/dist/services/worker-cleanup.service.js +3 -3
- package/dist/services/worker-cleanup.service.js.map +1 -1
- package/dist/tools/delegate-tool.js +1 -1
- package/dist/tools/delegate-tool.js.map +1 -1
- package/package.json +1 -1
- package/templates/playwright.default.md +18 -6
- package/templates/sensorium-repair.default.md +17 -5
package/dist/config.d.ts
CHANGED
|
@@ -57,6 +57,26 @@ export declare function setMcpServers(servers: Record<string, McpServerConfig>):
|
|
|
57
57
|
export declare function addMcpServer(name: string, config: McpServerConfig): void;
|
|
58
58
|
/** Remove an MCP server by name. Returns true if it existed. */
|
|
59
59
|
export declare function removeMcpServer(name: string): boolean;
|
|
60
|
+
/** MCP server names a per-thread entry may never use. */
|
|
61
|
+
export declare const RESERVED_MCP_NAMES: readonly string[];
|
|
62
|
+
/** A per-thread MCP server entry — HTTP transport only (no stdio, by design). */
|
|
63
|
+
export type ThreadMcpServer = {
|
|
64
|
+
type: "http";
|
|
65
|
+
url: string;
|
|
66
|
+
headers?: Record<string, string>;
|
|
67
|
+
};
|
|
68
|
+
/** Returns a thread's custom MCP servers (http-only, reserved names excluded). */
|
|
69
|
+
export declare function getThreadMcpServers(threadId: number): Record<string, ThreadMcpServer>;
|
|
70
|
+
/**
|
|
71
|
+
* Replace a thread's custom MCP servers. Pass null/empty to clear.
|
|
72
|
+
* Validates http-only transport and rejects reserved names; throws on violation
|
|
73
|
+
* so the dashboard can surface a 400.
|
|
74
|
+
*/
|
|
75
|
+
export declare function setThreadMcpServers(threadId: number, servers: Record<string, ThreadMcpServer> | null): void;
|
|
76
|
+
/** Remove a thread's custom MCP servers entirely (called on hard-delete). */
|
|
77
|
+
export declare function deleteThreadMcpServers(threadId: number): void;
|
|
78
|
+
/** All per-thread MCP servers (for dashboard enrichment), reserved/invalid excluded. */
|
|
79
|
+
export declare function getAllThreadMcpServers(): Record<string, Record<string, ThreadMcpServer>>;
|
|
60
80
|
/** Number of recent episodes injected into the bootstrap as "Recent Conversation". */
|
|
61
81
|
export declare function getBootstrapMessageCount(): number;
|
|
62
82
|
export declare function setBootstrapMessageCount(count: number): void;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAoCxD,eAAO,MAAM,aAAa,QAAsD,CAAC;AAKjF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC;AAExE,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,EAAE,SAAoB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAI9C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAE3D;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* and exports validated values used throughout the codebase.
|
|
4
4
|
*/
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
|
-
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { chmodSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { log } from "./logger.js";
|
|
@@ -52,6 +52,12 @@ const SETTINGS_TMP_PATH = SETTINGS_PATH + ".tmp";
|
|
|
52
52
|
function atomicWriteSettings(settings) {
|
|
53
53
|
writeFileSync(SETTINGS_TMP_PATH, JSON.stringify(settings, null, 2), "utf-8");
|
|
54
54
|
renameSync(SETTINGS_TMP_PATH, SETTINGS_PATH);
|
|
55
|
+
// settings.json holds MCP auth headers/tokens — restrict to owner (no-op on
|
|
56
|
+
// Windows NTFS, effective on POSIX where the server may also run).
|
|
57
|
+
try {
|
|
58
|
+
chmodSync(SETTINGS_PATH, 0o600);
|
|
59
|
+
}
|
|
60
|
+
catch { /* best-effort */ }
|
|
55
61
|
}
|
|
56
62
|
/** Read and parse the settings file, returning an empty object on any failure. */
|
|
57
63
|
function readSettings() {
|
|
@@ -210,6 +216,130 @@ export function removeMcpServer(name) {
|
|
|
210
216
|
});
|
|
211
217
|
return existed;
|
|
212
218
|
}
|
|
219
|
+
// ─── Per-thread custom MCP servers (universal, agent-agnostic) ──────────────
|
|
220
|
+
//
|
|
221
|
+
// The operator can attach arbitrary MCP servers to a single thread via the
|
|
222
|
+
// dashboard. Stored in settings.json keyed by threadId (same pattern as
|
|
223
|
+
// threadConversationModes / threadKeepAlive — no DB schema change), then merged
|
|
224
|
+
// on top of the global mcpServers map at spawn. Sensorium knows nothing about
|
|
225
|
+
// what any server does (RAG, search, whatever) — it's just an { type: "http",
|
|
226
|
+
// url, headers } entry, e.g. an Authorization: Bearer <token> that selects a
|
|
227
|
+
// corpus on some external host.
|
|
228
|
+
//
|
|
229
|
+
// HARD INVARIANTS (security):
|
|
230
|
+
// • HTTP-ONLY. A per-thread `stdio` entry would spawn an operator-supplied
|
|
231
|
+
// binary at agent-spawn time = arbitrary code execution, so stdio is
|
|
232
|
+
// rejected on write and never parsed back out.
|
|
233
|
+
// • RESERVED names can't be overridden — `sensorium-mcp` is the agent's own
|
|
234
|
+
// control channel (clobbering it severs the orchestrator link).
|
|
235
|
+
/** MCP server names a per-thread entry may never use. */
|
|
236
|
+
export const RESERVED_MCP_NAMES = ["sensorium-mcp", "rag"];
|
|
237
|
+
/**
|
|
238
|
+
* Header names must be plain HTTP tokens. This is a hard security boundary, not
|
|
239
|
+
* cosmetics: Codex renders headers as dotted TOML `-c mcp_servers.X.http_headers.<key>`
|
|
240
|
+
* overrides, so a key containing `.`, `"`, `=`, `[` or whitespace could break out
|
|
241
|
+
* of the header path and inject arbitrary config (e.g. re-point sensorium-mcp or
|
|
242
|
+
* add an stdio server), defeating the reserved-name and http-only invariants.
|
|
243
|
+
*/
|
|
244
|
+
const SAFE_HEADER_NAME = /^[A-Za-z0-9-]+$/;
|
|
245
|
+
/** Parse one raw entry into a validated http-only ThreadMcpServer, or null if invalid. */
|
|
246
|
+
function parseThreadMcpServer(raw) {
|
|
247
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
248
|
+
return null;
|
|
249
|
+
const o = raw;
|
|
250
|
+
if (o.type !== "http" || typeof o.url !== "string" || o.url.length === 0)
|
|
251
|
+
return null;
|
|
252
|
+
const entry = { type: "http", url: o.url };
|
|
253
|
+
if (o.headers && typeof o.headers === "object" && !Array.isArray(o.headers)) {
|
|
254
|
+
const headers = {};
|
|
255
|
+
for (const [k, v] of Object.entries(o.headers)) {
|
|
256
|
+
if (typeof v === "string" && SAFE_HEADER_NAME.test(k))
|
|
257
|
+
headers[k] = v;
|
|
258
|
+
}
|
|
259
|
+
if (Object.keys(headers).length > 0)
|
|
260
|
+
entry.headers = headers;
|
|
261
|
+
}
|
|
262
|
+
return entry;
|
|
263
|
+
}
|
|
264
|
+
/** Parse a per-thread server map, dropping reserved names and non-http/invalid entries. */
|
|
265
|
+
function parseThreadMcpServers(raw) {
|
|
266
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
267
|
+
return {};
|
|
268
|
+
const result = {};
|
|
269
|
+
for (const [name, val] of Object.entries(raw)) {
|
|
270
|
+
if (!name || RESERVED_MCP_NAMES.includes(name))
|
|
271
|
+
continue;
|
|
272
|
+
const parsed = parseThreadMcpServer(val);
|
|
273
|
+
if (parsed)
|
|
274
|
+
result[name] = parsed;
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
/** Returns a thread's custom MCP servers (http-only, reserved names excluded). */
|
|
279
|
+
export function getThreadMcpServers(threadId) {
|
|
280
|
+
const map = readSettings().threadMcpServers;
|
|
281
|
+
return parseThreadMcpServers(map?.[String(threadId)]);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Replace a thread's custom MCP servers. Pass null/empty to clear.
|
|
285
|
+
* Validates http-only transport and rejects reserved names; throws on violation
|
|
286
|
+
* so the dashboard can surface a 400.
|
|
287
|
+
*/
|
|
288
|
+
export function setThreadMcpServers(threadId, servers) {
|
|
289
|
+
const clean = {};
|
|
290
|
+
if (servers) {
|
|
291
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
292
|
+
if (!name)
|
|
293
|
+
throw new Error("MCP server name is required");
|
|
294
|
+
if (RESERVED_MCP_NAMES.includes(name))
|
|
295
|
+
throw new Error(`MCP server name "${name}" is reserved`);
|
|
296
|
+
if (!cfg || cfg.type !== "http")
|
|
297
|
+
throw new Error(`MCP server "${name}" must be http (stdio is not allowed per-thread)`);
|
|
298
|
+
if (!cfg.url)
|
|
299
|
+
throw new Error(`MCP server "${name}" requires a url`);
|
|
300
|
+
const entry = { type: "http", url: cfg.url };
|
|
301
|
+
if (cfg.headers && Object.keys(cfg.headers).length > 0) {
|
|
302
|
+
for (const k of Object.keys(cfg.headers)) {
|
|
303
|
+
if (!SAFE_HEADER_NAME.test(k))
|
|
304
|
+
throw new Error(`MCP server "${name}" header name "${k}" is invalid (letters, digits, hyphen only)`);
|
|
305
|
+
}
|
|
306
|
+
entry.headers = cfg.headers;
|
|
307
|
+
}
|
|
308
|
+
clean[name] = entry;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
updateSettings(s => {
|
|
312
|
+
const map = (s.threadMcpServers ?? {});
|
|
313
|
+
if (Object.keys(clean).length > 0)
|
|
314
|
+
map[String(threadId)] = clean;
|
|
315
|
+
else
|
|
316
|
+
delete map[String(threadId)];
|
|
317
|
+
s.threadMcpServers = map;
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/** Remove a thread's custom MCP servers entirely (called on hard-delete). */
|
|
321
|
+
export function deleteThreadMcpServers(threadId) {
|
|
322
|
+
updateSettings(s => {
|
|
323
|
+
const map = (s.threadMcpServers ?? {});
|
|
324
|
+
if (String(threadId) in map) {
|
|
325
|
+
delete map[String(threadId)];
|
|
326
|
+
s.threadMcpServers = map;
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
/** All per-thread MCP servers (for dashboard enrichment), reserved/invalid excluded. */
|
|
331
|
+
export function getAllThreadMcpServers() {
|
|
332
|
+
const map = readSettings().threadMcpServers;
|
|
333
|
+
if (!map || typeof map !== "object")
|
|
334
|
+
return {};
|
|
335
|
+
const result = {};
|
|
336
|
+
for (const [tid, val] of Object.entries(map)) {
|
|
337
|
+
const parsed = parseThreadMcpServers(val);
|
|
338
|
+
if (Object.keys(parsed).length > 0)
|
|
339
|
+
result[tid] = parsed;
|
|
340
|
+
}
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
213
343
|
// ─── Bootstrap message count setting ────────────────────────────────────────
|
|
214
344
|
/** Default number of episodes for the bootstrap "Recent Conversation" section. */
|
|
215
345
|
const DEFAULT_BOOTSTRAP_MESSAGE_COUNT = 50;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,12 @@ export declare function handleGetThreadLogs(args: RouteArgs, threadId: number):
|
|
|
42
42
|
export declare function handleGetThreadChildren(args: RouteArgs, rootThreadId: number): boolean;
|
|
43
43
|
/** PATCH /api/threads/:threadId — update a thread */
|
|
44
44
|
export declare function handleUpdateThread(args: RouteArgs, threadId: number): boolean;
|
|
45
|
+
/** GET /api/threads/:threadId/pinned-notes — list a thread's pinned notes */
|
|
46
|
+
export declare function handleGetPinnedNotes(args: RouteArgs, threadId: number): boolean;
|
|
47
|
+
/** POST /api/threads/:threadId/pinned-notes — pin a long-term context note to a thread */
|
|
48
|
+
export declare function handleCreatePinnedNote(args: RouteArgs, threadId: number): boolean;
|
|
49
|
+
/** DELETE /api/threads/:threadId/pinned-notes/:noteId — remove a pinned note */
|
|
50
|
+
export declare function handleDeletePinnedNote(args: RouteArgs, threadId: number, noteId: string): boolean;
|
|
45
51
|
/** DELETE /api/threads/:threadId — archive or delete a thread */
|
|
46
52
|
export declare function handleDeleteThread(args: RouteArgs, threadId: number): boolean;
|
|
47
53
|
/** POST /api/threads/:threadId/start — spawn a thread process from the dashboard */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/threads.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/threads.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwCH,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAsJxF,eAAO,MAAM,gBAAgB,EAAE,YAI9B,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,YAGlC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,YAGvC,CAAC;AAIF,eAAO,MAAM,wBAAwB,EAAE,YAItC,CAAC;AAIF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAchF;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA2ChF;AAID,eAAO,MAAM,kBAAkB,EAAE,YAmEhC,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAuC9B,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAiDhC,CAAC;AAcF,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ1E;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,qGAAqG;AACrG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAInF;AAqBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB9E;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAItF;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAyD7E;AAID,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK/E;AAED,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAmCjF;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQjG;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAyC7E;AAYD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA8B5E;AAID,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA6B9E"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Covers: listing, creating, updating, archiving, and deleting threads.
|
|
4
4
|
*/
|
|
5
5
|
import { registerThread, getThread, getRootThreads, getKeepAliveThreads, getActiveThreads, getArchivedThreads, getDashboardThreads, getThreadsByRoot, updateThread, archiveThread, unarchiveThread, deleteThread, getExplicitTelegramTopicId, resolveTelegramTopicId, } from "../../data/memory/thread-registry.js";
|
|
6
|
-
import {
|
|
6
|
+
import { getPinnedNotes, saveSemanticNote, deletePinnedNote } from "../../memory.js";
|
|
7
|
+
import { config, getAgentType, setKeepAliveEnabled, setKeepAliveThreadId, setKeepAliveClient, setKeepAliveMaxRetries, setKeepAliveCooldownMs, setThreadKeepAlive, removeThreadKeepAlive, isValidKeeperClient, setThreadMcpServers, deleteThreadMcpServers, getAllThreadMcpServers, } from "../../config.js";
|
|
7
8
|
import { readBody, safeParseJSON } from "./types.js";
|
|
8
9
|
import { errorMessage } from "../../utils.js";
|
|
9
10
|
import { log } from "../../logger.js";
|
|
@@ -18,6 +19,7 @@ import { TelegramClient } from "../../telegram.js";
|
|
|
18
19
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
19
20
|
const VALID_STATUSES = ["active", "archived", "expired", "exited"];
|
|
20
21
|
const VALID_CLIENTS = ["claude", "copilot", "codex", "openai_codex"];
|
|
22
|
+
const VALID_NOTE_TYPES = ["fact", "preference", "pattern", "entity", "relationship"];
|
|
21
23
|
/** Extract valid update fields from a request body. Returns an error string on validation failure. */
|
|
22
24
|
function buildThreadUpdates(body) {
|
|
23
25
|
const updates = {};
|
|
@@ -97,25 +99,87 @@ function enrichThreadNames(db, threads) {
|
|
|
97
99
|
return threads; // topic_registry might not exist
|
|
98
100
|
}
|
|
99
101
|
}
|
|
102
|
+
/** Mask header values so the dashboard shows which headers exist without leaking secrets. */
|
|
103
|
+
function maskServers(servers) {
|
|
104
|
+
const out = {};
|
|
105
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
106
|
+
const masked = { type: "http", url: cfg.url };
|
|
107
|
+
if (cfg.headers && Object.keys(cfg.headers).length > 0) {
|
|
108
|
+
masked.headers = {};
|
|
109
|
+
for (const k of Object.keys(cfg.headers))
|
|
110
|
+
masked.headers[k] = "••••";
|
|
111
|
+
}
|
|
112
|
+
out[name] = masked;
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
/** Attach each thread's custom MCP servers (settings.json, not the DB), header values masked. */
|
|
117
|
+
function withThreadMcpServers(threads) {
|
|
118
|
+
const all = getAllThreadMcpServers();
|
|
119
|
+
return threads.map(t => {
|
|
120
|
+
const s = all[String(t.threadId)];
|
|
121
|
+
return { ...t, mcpServers: s ? maskServers(s) : null };
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const MASK_SENTINEL = "••••";
|
|
125
|
+
/**
|
|
126
|
+
* Coerce a PATCH `mcpServers` body into a validated server map (or null to clear).
|
|
127
|
+
* Shape-checks http-only transport and rejects the header mask sentinel so a
|
|
128
|
+
* round-tripped masked value can never be persisted. Returns an error string on
|
|
129
|
+
* malformed input; deeper rules (reserved names) are enforced by setThreadMcpServers.
|
|
130
|
+
*/
|
|
131
|
+
function parseThreadMcpServersBody(raw) {
|
|
132
|
+
if (raw === null || raw === undefined)
|
|
133
|
+
return null;
|
|
134
|
+
if (typeof raw !== "object" || Array.isArray(raw))
|
|
135
|
+
return "mcpServers must be an object or null";
|
|
136
|
+
const out = {};
|
|
137
|
+
for (const [name, val] of Object.entries(raw)) {
|
|
138
|
+
if (!val || typeof val !== "object" || Array.isArray(val))
|
|
139
|
+
return `mcpServers["${name}"] must be an object`;
|
|
140
|
+
const o = val;
|
|
141
|
+
if (o.type !== "http")
|
|
142
|
+
return `mcpServers["${name}"] must have type "http"`;
|
|
143
|
+
if (typeof o.url !== "string" || !o.url.trim())
|
|
144
|
+
return `mcpServers["${name}"] requires a url`;
|
|
145
|
+
const entry = { type: "http", url: o.url.trim() };
|
|
146
|
+
if (o.headers !== undefined && o.headers !== null) {
|
|
147
|
+
if (typeof o.headers !== "object" || Array.isArray(o.headers))
|
|
148
|
+
return `mcpServers["${name}"].headers must be an object`;
|
|
149
|
+
const headers = {};
|
|
150
|
+
for (const [k, v] of Object.entries(o.headers)) {
|
|
151
|
+
if (typeof v !== "string")
|
|
152
|
+
return `mcpServers["${name}"].headers["${k}"] must be a string`;
|
|
153
|
+
if (v.includes(MASK_SENTINEL))
|
|
154
|
+
return `mcpServers["${name}"].headers["${k}"] still masked — re-enter the value`;
|
|
155
|
+
headers[k] = v;
|
|
156
|
+
}
|
|
157
|
+
if (Object.keys(headers).length > 0)
|
|
158
|
+
entry.headers = headers;
|
|
159
|
+
}
|
|
160
|
+
out[name] = entry;
|
|
161
|
+
}
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
100
164
|
// ─── GET /api/threads — list all active threads grouped ─────────────────────
|
|
101
165
|
export const handleGetThreads = ({ json, db }) => {
|
|
102
|
-
const threads = enrichThreadNames(db, getDashboardThreads(db));
|
|
166
|
+
const threads = withThreadMcpServers(enrichThreadNames(db, getDashboardThreads(db)));
|
|
103
167
|
json({ threads });
|
|
104
168
|
return true;
|
|
105
169
|
};
|
|
106
170
|
// ─── GET /api/threads/roots — list root threads only ────────────────────────
|
|
107
171
|
export const handleGetRootThreads = ({ json, db }) => {
|
|
108
|
-
json({ threads: enrichThreadNames(db, getRootThreads(db)) });
|
|
172
|
+
json({ threads: withThreadMcpServers(enrichThreadNames(db, getRootThreads(db))) });
|
|
109
173
|
return true;
|
|
110
174
|
};
|
|
111
175
|
// ─── GET /api/threads/keepalive — list all threads with keepAlive=true (excl. workers) ─
|
|
112
176
|
export const handleGetKeepAliveThreads = ({ json, db }) => {
|
|
113
|
-
json({ threads: enrichThreadNames(db, getKeepAliveThreads(db)) });
|
|
177
|
+
json({ threads: withThreadMcpServers(enrichThreadNames(db, getKeepAliveThreads(db))) });
|
|
114
178
|
return true;
|
|
115
179
|
};
|
|
116
180
|
// ─── GET /api/threads/archived — list archived threads ──────────────────────
|
|
117
181
|
export const handleGetArchivedThreads = ({ json, db }) => {
|
|
118
|
-
const threads = enrichThreadNames(db, getArchivedThreads(db));
|
|
182
|
+
const threads = withThreadMcpServers(enrichThreadNames(db, getArchivedThreads(db)));
|
|
119
183
|
json({ threads });
|
|
120
184
|
return true;
|
|
121
185
|
};
|
|
@@ -449,7 +513,7 @@ export function handleGetThreadLogs(args, threadId) {
|
|
|
449
513
|
}
|
|
450
514
|
/** GET /api/threads/:threadId/children — get children of a root */
|
|
451
515
|
export function handleGetThreadChildren(args, rootThreadId) {
|
|
452
|
-
const children = getThreadsByRoot(args.db, rootThreadId);
|
|
516
|
+
const children = withThreadMcpServers(getThreadsByRoot(args.db, rootThreadId));
|
|
453
517
|
args.json({ threads: children });
|
|
454
518
|
return true;
|
|
455
519
|
}
|
|
@@ -474,12 +538,36 @@ export function handleUpdateThread(args, threadId) {
|
|
|
474
538
|
json({ error: updates }, 400);
|
|
475
539
|
return;
|
|
476
540
|
}
|
|
477
|
-
|
|
478
|
-
|
|
541
|
+
// Custom MCP servers live in settings.json (no DB schema change), so
|
|
542
|
+
// they can be the sole field of an otherwise-empty DB update. Sent as
|
|
543
|
+
// a full replacement map, or null to clear. setThreadMcpServers throws
|
|
544
|
+
// on reserved names / non-http transport → surface as 400.
|
|
545
|
+
let mcpChanged = false;
|
|
546
|
+
if ("mcpServers" in body) {
|
|
547
|
+
const parsed = parseThreadMcpServersBody(body.mcpServers);
|
|
548
|
+
if (typeof parsed === "string") {
|
|
549
|
+
json({ error: parsed }, 400);
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
try {
|
|
553
|
+
setThreadMcpServers(threadId, parsed);
|
|
554
|
+
}
|
|
555
|
+
catch (err) {
|
|
556
|
+
json({ error: errorMessage(err) }, 400);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
mcpChanged = true;
|
|
560
|
+
}
|
|
561
|
+
const hasDbUpdates = Object.keys(updates).length > 0;
|
|
562
|
+
if (hasDbUpdates && !updateThread(db, threadId, updates)) {
|
|
563
|
+
json({ error: "No changes applied" }, 400);
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
if (!hasDbUpdates && !mcpChanged) {
|
|
479
567
|
json({ error: "No changes applied" }, 400);
|
|
480
568
|
return;
|
|
481
569
|
}
|
|
482
|
-
json(getThread(db, threadId));
|
|
570
|
+
json(withThreadMcpServers([getThread(db, threadId)])[0]);
|
|
483
571
|
// Sync keepAlive to settings.json for watcher backward compatibility
|
|
484
572
|
if ("keepAlive" in updates || "client" in updates || "maxRetries" in updates || "cooldownMs" in updates) {
|
|
485
573
|
syncKeepAliveToSettings(db);
|
|
@@ -491,6 +579,70 @@ export function handleUpdateThread(args, threadId) {
|
|
|
491
579
|
})();
|
|
492
580
|
return true;
|
|
493
581
|
}
|
|
582
|
+
// ─── Pinned notes (per-thread long-term context injected at spawn) ──────────
|
|
583
|
+
/** GET /api/threads/:threadId/pinned-notes — list a thread's pinned notes */
|
|
584
|
+
export function handleGetPinnedNotes(args, threadId) {
|
|
585
|
+
const { json, db } = args;
|
|
586
|
+
if (!getThread(db, threadId)) {
|
|
587
|
+
json({ error: `Thread ${threadId} not found` }, 404);
|
|
588
|
+
return true;
|
|
589
|
+
}
|
|
590
|
+
json({ notes: getPinnedNotes(db, threadId) });
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
593
|
+
/** POST /api/threads/:threadId/pinned-notes — pin a long-term context note to a thread */
|
|
594
|
+
export function handleCreatePinnedNote(args, threadId) {
|
|
595
|
+
const { req, json, db } = args;
|
|
596
|
+
void (async () => {
|
|
597
|
+
try {
|
|
598
|
+
if (!getThread(db, threadId)) {
|
|
599
|
+
json({ error: `Thread ${threadId} not found` }, 404);
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
const raw = await readBody(req);
|
|
603
|
+
const body = safeParseJSON(raw);
|
|
604
|
+
if (!body || typeof body !== "object") {
|
|
605
|
+
json({ error: "Invalid request body" }, 400);
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
const content = typeof body.content === "string" ? body.content.trim() : "";
|
|
609
|
+
if (!content) {
|
|
610
|
+
json({ error: "content is required" }, 400);
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
const type = typeof body.type === "string" && VALID_NOTE_TYPES.includes(body.type)
|
|
614
|
+
? body.type
|
|
615
|
+
: "fact";
|
|
616
|
+
const keywords = Array.isArray(body.keywords)
|
|
617
|
+
? body.keywords.filter((k) => typeof k === "string")
|
|
618
|
+
: [];
|
|
619
|
+
const noteId = saveSemanticNote(db, {
|
|
620
|
+
type,
|
|
621
|
+
content,
|
|
622
|
+
keywords,
|
|
623
|
+
threadId,
|
|
624
|
+
pinned: true,
|
|
625
|
+
confidence: 1,
|
|
626
|
+
priority: 2,
|
|
627
|
+
});
|
|
628
|
+
json({ ok: true, noteId }, 201);
|
|
629
|
+
}
|
|
630
|
+
catch (err) {
|
|
631
|
+
json({ error: errorMessage(err) }, 500);
|
|
632
|
+
}
|
|
633
|
+
})();
|
|
634
|
+
return true;
|
|
635
|
+
}
|
|
636
|
+
/** DELETE /api/threads/:threadId/pinned-notes/:noteId — remove a pinned note */
|
|
637
|
+
export function handleDeletePinnedNote(args, threadId, noteId) {
|
|
638
|
+
const { json, db } = args;
|
|
639
|
+
if (!deletePinnedNote(db, threadId, noteId)) {
|
|
640
|
+
json({ error: `Pinned note ${noteId} not found for thread ${threadId}` }, 404);
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
643
|
+
json({ ok: true, action: "deleted", noteId });
|
|
644
|
+
return true;
|
|
645
|
+
}
|
|
494
646
|
/** DELETE /api/threads/:threadId — archive or delete a thread */
|
|
495
647
|
export function handleDeleteThread(args, threadId) {
|
|
496
648
|
const { db, json, url } = args;
|
|
@@ -507,6 +659,9 @@ export function handleDeleteThread(args, threadId) {
|
|
|
507
659
|
: resolveTelegramTopicId(db, threadId);
|
|
508
660
|
if (hard) {
|
|
509
661
|
deleteThread(db, threadId);
|
|
662
|
+
// Purge the thread's custom MCP servers so a reused threadId can't
|
|
663
|
+
// inherit a stale binding.
|
|
664
|
+
deleteThreadMcpServers(threadId);
|
|
510
665
|
json({ ok: true, action: "deleted", threadId });
|
|
511
666
|
}
|
|
512
667
|
else {
|