sensorium-mcp 2.16.74 → 2.16.76
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/dashboard/routes/data.d.ts +15 -0
- package/dist/dashboard/routes/data.d.ts.map +1 -0
- package/dist/dashboard/routes/data.js +155 -0
- package/dist/dashboard/routes/data.js.map +1 -0
- package/dist/dashboard/routes/settings.d.ts +13 -0
- package/dist/dashboard/routes/settings.d.ts.map +1 -0
- package/dist/dashboard/routes/settings.js +88 -0
- package/dist/dashboard/routes/settings.js.map +1 -0
- package/dist/dashboard/routes/templates.d.ts +14 -0
- package/dist/dashboard/routes/templates.d.ts.map +1 -0
- package/dist/dashboard/routes/templates.js +113 -0
- package/dist/dashboard/routes/templates.js.map +1 -0
- package/dist/dashboard/routes/types.d.ts +29 -0
- package/dist/dashboard/routes/types.d.ts.map +1 -0
- package/dist/dashboard/routes/types.js +21 -0
- package/dist/dashboard/routes/types.js.map +1 -0
- package/dist/dashboard/routes.d.ts +10 -20
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +54 -344
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/data/memory/consolidation.js +3 -1
- package/dist/data/memory/consolidation.js.map +1 -1
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +95 -114
- package/dist/http-server.js.map +1 -1
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +100 -105
- package/dist/server/factory.js.map +1 -1
- package/dist/tools/defs/memory-defs.d.ts +7 -0
- package/dist/tools/defs/memory-defs.d.ts.map +1 -0
- package/dist/tools/defs/memory-defs.js +166 -0
- package/dist/tools/defs/memory-defs.js.map +1 -0
- package/dist/tools/defs/session-defs.d.ts +7 -0
- package/dist/tools/defs/session-defs.d.ts.map +1 -0
- package/dist/tools/defs/session-defs.js +257 -0
- package/dist/tools/defs/session-defs.js.map +1 -0
- package/dist/tools/defs/utility-defs.d.ts +6 -0
- package/dist/tools/defs/utility-defs.d.ts.map +1 -0
- package/dist/tools/defs/utility-defs.js +35 -0
- package/dist/tools/defs/utility-defs.js.map +1 -0
- package/dist/tools/defs/wait-defs.d.ts +6 -0
- package/dist/tools/defs/wait-defs.d.ts.map +1 -0
- package/dist/tools/defs/wait-defs.js +24 -0
- package/dist/tools/defs/wait-defs.js.map +1 -0
- package/dist/tools/delegate-tool.d.ts +5 -11
- package/dist/tools/delegate-tool.d.ts.map +1 -1
- package/dist/tools/delegate-tool.js +7 -216
- package/dist/tools/delegate-tool.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +3 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +2 -4
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/session-tools.js +2 -1
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/thread-lifecycle.d.ts +51 -0
- package/dist/tools/thread-lifecycle.d.ts.map +1 -0
- package/dist/tools/thread-lifecycle.js +226 -0
- package/dist/tools/thread-lifecycle.js.map +1 -0
- package/dist/tools/wait/drive-handler.d.ts +2 -0
- package/dist/tools/wait/drive-handler.d.ts.map +1 -1
- package/dist/tools/wait/drive-handler.js +7 -7
- package/dist/tools/wait/drive-handler.js.map +1 -1
- package/dist/tools/wait/message-processing.d.ts +32 -0
- package/dist/tools/wait/message-processing.d.ts.map +1 -0
- package/dist/tools/wait/message-processing.js +205 -0
- package/dist/tools/wait/message-processing.js.map +1 -0
- package/dist/tools/wait/poll-loop.d.ts +2 -3
- package/dist/tools/wait/poll-loop.d.ts.map +1 -1
- package/dist/tools/wait/poll-loop.js +7 -162
- package/dist/tools/wait/poll-loop.js.map +1 -1
- package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
- package/dist/tools/wait/reaction-handler.js +64 -75
- package/dist/tools/wait/reaction-handler.js.map +1 -1
- package/package.json +1 -1
package/dist/http-server.js
CHANGED
|
@@ -23,13 +23,7 @@ import { registerDashboardSession, updateDashboardActivity, markDashboardSession
|
|
|
23
23
|
export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
24
24
|
const httpPort = parseInt(process.env.MCP_HTTP_PORT, 10);
|
|
25
25
|
const httpBind = process.env.MCP_HTTP_BIND ?? "127.0.0.1";
|
|
26
|
-
const
|
|
27
|
-
/** Tracks the last time each HTTP session received any request (epoch ms). */
|
|
28
|
-
const sessionLastActivity = new Map();
|
|
29
|
-
/** Tracks session lifecycle status for dashboard visibility. */
|
|
30
|
-
const sessionStatus = new Map();
|
|
31
|
-
/** Records the epoch ms when a session became disconnected (for GC). */
|
|
32
|
-
const sessionDisconnectedAt = new Map();
|
|
26
|
+
const sessions = new Map();
|
|
33
27
|
const MCP_HTTP_SECRET = process.env.MCP_HTTP_SECRET;
|
|
34
28
|
const MAX_BODY_SIZE = 10 * 1024 * 1024; // 10MB
|
|
35
29
|
const serverStartTime = Date.now();
|
|
@@ -119,12 +113,13 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
119
113
|
return;
|
|
120
114
|
}
|
|
121
115
|
// Existing session
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
116
|
+
const existing = sessionId ? sessions.get(sessionId) : undefined;
|
|
117
|
+
if (existing?.transport) {
|
|
118
|
+
existing.lastActivity = Date.now();
|
|
119
|
+
existing.status = "active";
|
|
120
|
+
delete existing.disconnectedAt;
|
|
126
121
|
updateDashboardActivity(sessionId);
|
|
127
|
-
await
|
|
122
|
+
await existing.transport.handleRequest(req, res, body);
|
|
128
123
|
return;
|
|
129
124
|
}
|
|
130
125
|
// New session OR session adoption after server restart.
|
|
@@ -138,9 +133,7 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
138
133
|
// tracking state from the previous incarnation.
|
|
139
134
|
if (sessionId) {
|
|
140
135
|
log.info(`[http] Session adoption: stale session ${sessionId.slice(0, 8)}… re-initializing`);
|
|
141
|
-
|
|
142
|
-
sessionStatus.delete(sessionId);
|
|
143
|
-
sessionDisconnectedAt.delete(sessionId);
|
|
136
|
+
sessions.delete(sessionId);
|
|
144
137
|
removeDashboardSession(sessionId);
|
|
145
138
|
}
|
|
146
139
|
let capturedSid;
|
|
@@ -148,19 +141,20 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
148
141
|
sessionIdGenerator: () => randomUUID(),
|
|
149
142
|
onsessioninitialized: (sid) => {
|
|
150
143
|
capturedSid = sid;
|
|
151
|
-
|
|
152
|
-
sessionLastActivity.set(sid, Date.now());
|
|
153
|
-
sessionStatus.set(sid, "active");
|
|
144
|
+
sessions.set(sid, { transport, server: null, lastActivity: Date.now(), status: "active" });
|
|
154
145
|
registerDashboardSession(sid, "http");
|
|
155
146
|
},
|
|
156
147
|
});
|
|
157
148
|
transport.onclose = () => {
|
|
158
149
|
const sid = transport.sessionId;
|
|
159
150
|
if (sid) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
151
|
+
const entry = sessions.get(sid);
|
|
152
|
+
if (entry) {
|
|
153
|
+
// Keep entry for dashboard visibility but clear transport
|
|
154
|
+
entry.transport = null;
|
|
155
|
+
entry.status = "disconnected";
|
|
156
|
+
entry.disconnectedAt = Date.now();
|
|
157
|
+
}
|
|
164
158
|
markDashboardSessionDisconnected(sid);
|
|
165
159
|
}
|
|
166
160
|
};
|
|
@@ -171,6 +165,12 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
171
165
|
}
|
|
172
166
|
catch (_) { /* best-effort */ } });
|
|
173
167
|
await sessionServer.connect(transport);
|
|
168
|
+
// Store server reference so it can be closed during shutdown
|
|
169
|
+
if (capturedSid) {
|
|
170
|
+
const entry = sessions.get(capturedSid);
|
|
171
|
+
if (entry)
|
|
172
|
+
entry.server = sessionServer;
|
|
173
|
+
}
|
|
174
174
|
await transport.handleRequest(req, res, body);
|
|
175
175
|
return;
|
|
176
176
|
}
|
|
@@ -196,34 +196,37 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
196
196
|
return;
|
|
197
197
|
}
|
|
198
198
|
if (req.method === "GET") {
|
|
199
|
-
|
|
199
|
+
const getEntry = sessionId ? sessions.get(sessionId) : undefined;
|
|
200
|
+
if (!getEntry?.transport) {
|
|
200
201
|
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
201
202
|
res.end("Invalid or missing session ID");
|
|
202
203
|
return;
|
|
203
204
|
}
|
|
204
|
-
|
|
205
|
+
getEntry.lastActivity = Date.now();
|
|
205
206
|
// Detect SSE stream close — mark session as disconnected
|
|
206
207
|
const sseSid = sessionId;
|
|
207
208
|
res.on("close", () => {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
const sseEntry = sessions.get(sseSid);
|
|
210
|
+
if (sseEntry) {
|
|
211
|
+
sseEntry.status = "disconnected";
|
|
212
|
+
if (sseEntry.disconnectedAt == null) {
|
|
213
|
+
sseEntry.disconnectedAt = Date.now();
|
|
212
214
|
}
|
|
213
215
|
markDashboardSessionDisconnected(sseSid);
|
|
214
216
|
}
|
|
215
217
|
});
|
|
216
|
-
await
|
|
218
|
+
await getEntry.transport.handleRequest(req, res);
|
|
217
219
|
return;
|
|
218
220
|
}
|
|
219
221
|
if (req.method === "DELETE") {
|
|
220
|
-
|
|
222
|
+
const delEntry = sessionId ? sessions.get(sessionId) : undefined;
|
|
223
|
+
if (!delEntry?.transport) {
|
|
221
224
|
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
222
225
|
res.end("Invalid or missing session ID");
|
|
223
226
|
return;
|
|
224
227
|
}
|
|
225
|
-
|
|
226
|
-
await
|
|
228
|
+
delEntry.lastActivity = Date.now();
|
|
229
|
+
await delEntry.transport.handleRequest(req, res);
|
|
227
230
|
return;
|
|
228
231
|
}
|
|
229
232
|
res.writeHead(405, { "Content-Type": "text/plain" });
|
|
@@ -240,96 +243,68 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
240
243
|
httpServer.listen(httpPort, httpBind, () => {
|
|
241
244
|
log.info(`Remote Copilot MCP server running on http://${httpBind}:${httpPort}/mcp`);
|
|
242
245
|
});
|
|
243
|
-
// ──
|
|
244
|
-
//
|
|
246
|
+
// ── Unified session sweep — runs every 60 s ────────────────────────────
|
|
247
|
+
// Combines the former TTL sweeper, Session GC, and Session reaper into a
|
|
248
|
+
// single pass so there is only one interval to manage.
|
|
245
249
|
const SESSION_IDLE_TTL_MS = config.WAIT_TIMEOUT_MINUTES * 60 * 1000;
|
|
246
|
-
const ttlSweeperInterval = setInterval(() => {
|
|
247
|
-
const now = Date.now();
|
|
248
|
-
for (const [sid, status] of sessionStatus) {
|
|
249
|
-
if (status === "active" && !transports.has(sid)) {
|
|
250
|
-
// Transport already gone but status wasn't updated — fix it
|
|
251
|
-
sessionStatus.set(sid, "disconnected");
|
|
252
|
-
if (!sessionDisconnectedAt.has(sid)) {
|
|
253
|
-
sessionDisconnectedAt.set(sid, now);
|
|
254
|
-
}
|
|
255
|
-
markDashboardSessionDisconnected(sid);
|
|
256
|
-
}
|
|
257
|
-
else if (status === "active") {
|
|
258
|
-
const lastActive = sessionLastActivity.get(sid) ?? 0;
|
|
259
|
-
if (now - lastActive > SESSION_IDLE_TTL_MS) {
|
|
260
|
-
log.info(`[session-ttl] Marking session ${sid.slice(0, 8)} as disconnected (idle ${Math.round((now - lastActive) / 60000)}m)`);
|
|
261
|
-
sessionStatus.set(sid, "disconnected");
|
|
262
|
-
sessionDisconnectedAt.set(sid, now);
|
|
263
|
-
markDashboardSessionDisconnected(sid);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}, 5 * 60 * 1000);
|
|
268
|
-
// ── Session GC — remove disconnected sessions after grace period ─────────
|
|
269
|
-
// Sessions with a recent lastWaitCallAt (within WAIT_LIVENESS_MS) are
|
|
270
|
-
// considered "truly alive" even if the transport shows disconnected.
|
|
271
|
-
// Grace period matches wait timeout so long-polling sessions aren't reaped.
|
|
272
250
|
const SESSION_GC_GRACE_MS = config.WAIT_TIMEOUT_MINUTES * 60 * 1000;
|
|
273
|
-
const
|
|
251
|
+
const STALE_SESSION_MS = 2 * config.WAIT_TIMEOUT_MINUTES * 60 * 1000;
|
|
252
|
+
function sweepSessions() {
|
|
274
253
|
const now = Date.now();
|
|
275
|
-
|
|
276
|
-
// Check global dashboard sessions for wait-liveness before GC
|
|
254
|
+
// Build wait-liveness set so GC doesn't reap sessions still polling
|
|
277
255
|
const liveByWait = new Set();
|
|
278
256
|
for (const ds of getDashboardSessions()) {
|
|
279
257
|
if (ds.lastWaitCallAt && now - ds.lastWaitCallAt < WAIT_LIVENESS_MS) {
|
|
280
258
|
liveByWait.add(ds.mcpSessionId);
|
|
281
259
|
}
|
|
282
260
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
sessionStatus.delete(sid);
|
|
291
|
-
sessionLastActivity.delete(sid);
|
|
292
|
-
sessionDisconnectedAt.delete(sid);
|
|
293
|
-
removeDashboardSession(sid);
|
|
294
|
-
removed++;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
if (removed > 0) {
|
|
299
|
-
log.info(`[session-gc] Removed ${removed} disconnected session(s)`);
|
|
300
|
-
}
|
|
301
|
-
}, 60 * 1000);
|
|
302
|
-
// ── Session reaper — close abandoned SSE sessions every 10 minutes ──────
|
|
303
|
-
const STALE_SESSION_MS = 2 * config.WAIT_TIMEOUT_MINUTES * 60 * 1000;
|
|
304
|
-
const sessionReaperInterval = setInterval(() => {
|
|
305
|
-
const now = Date.now();
|
|
306
|
-
for (const [sid, transport] of transports) {
|
|
307
|
-
const lastActive = sessionLastActivity.get(sid) ?? 0;
|
|
308
|
-
if (now - lastActive > STALE_SESSION_MS) {
|
|
309
|
-
log.info(`[session-reaper] Closing stale session ${sid} (idle ${Math.round((now - lastActive) / 60000)}m)`);
|
|
261
|
+
let marked = 0;
|
|
262
|
+
let removed = 0;
|
|
263
|
+
let reaped = 0;
|
|
264
|
+
for (const [sid, entry] of sessions) {
|
|
265
|
+
// 1. Close truly stale transports (was session-reaper)
|
|
266
|
+
if (entry.transport && now - entry.lastActivity > STALE_SESSION_MS) {
|
|
267
|
+
log.info(`[session-sweep] Closing stale session ${sid.slice(0, 8)}… (idle ${Math.round((now - entry.lastActivity) / 60000)}m)`);
|
|
310
268
|
try {
|
|
311
|
-
transport.close();
|
|
269
|
+
entry.transport.close();
|
|
312
270
|
}
|
|
313
271
|
catch (_) { /* best-effort */ }
|
|
314
|
-
|
|
315
|
-
sessionLastActivity.delete(sid);
|
|
316
|
-
sessionStatus.delete(sid);
|
|
272
|
+
sessions.delete(sid);
|
|
317
273
|
removeDashboardSession(sid);
|
|
274
|
+
reaped++;
|
|
275
|
+
continue;
|
|
318
276
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
277
|
+
// 2. Mark idle active sessions as disconnected (was TTL sweeper)
|
|
278
|
+
if (entry.status === "active" && !entry.transport) {
|
|
279
|
+
entry.status = "disconnected";
|
|
280
|
+
if (entry.disconnectedAt == null)
|
|
281
|
+
entry.disconnectedAt = now;
|
|
282
|
+
markDashboardSessionDisconnected(sid);
|
|
283
|
+
marked++;
|
|
284
|
+
}
|
|
285
|
+
else if (entry.status === "active" && now - entry.lastActivity > SESSION_IDLE_TTL_MS) {
|
|
286
|
+
log.info(`[session-sweep] Marking session ${sid.slice(0, 8)}… as disconnected (idle ${Math.round((now - entry.lastActivity) / 60000)}m)`);
|
|
287
|
+
entry.status = "disconnected";
|
|
288
|
+
entry.disconnectedAt = now;
|
|
289
|
+
markDashboardSessionDisconnected(sid);
|
|
290
|
+
marked++;
|
|
291
|
+
}
|
|
292
|
+
// 3. GC disconnected sessions past grace period (was session-gc)
|
|
293
|
+
if (entry.disconnectedAt != null &&
|
|
294
|
+
now - entry.disconnectedAt > SESSION_GC_GRACE_MS &&
|
|
295
|
+
!liveByWait.has(sid) &&
|
|
296
|
+
entry.status !== "active" &&
|
|
297
|
+
!entry.transport) {
|
|
298
|
+
sessions.delete(sid);
|
|
299
|
+
removeDashboardSession(sid);
|
|
300
|
+
removed++;
|
|
330
301
|
}
|
|
331
302
|
}
|
|
332
|
-
|
|
303
|
+
if (marked > 0 || removed > 0 || reaped > 0) {
|
|
304
|
+
log.info(`[session-sweep] marked=${marked} removed=${removed} reaped=${reaped}`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
const sessionSweepInterval = setInterval(sweepSessions, 60 * 1000);
|
|
333
308
|
// ── Graceful shutdown — abort in-flight TTS, drain, then exit ──────────
|
|
334
309
|
let shuttingDown = false;
|
|
335
310
|
const shutdown = async (reason) => {
|
|
@@ -337,9 +312,7 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
337
312
|
return;
|
|
338
313
|
shuttingDown = true;
|
|
339
314
|
log.info(`[shutdown] Graceful shutdown initiated (${reason}) — aborting in-flight TTS…`);
|
|
340
|
-
clearInterval(
|
|
341
|
-
clearInterval(sessionGcInterval);
|
|
342
|
-
clearInterval(sessionReaperInterval);
|
|
315
|
+
clearInterval(sessionSweepInterval);
|
|
343
316
|
clearInterval(maintenancePollInterval);
|
|
344
317
|
// 1. Abort any pending TTS / transcription requests so they fail fast.
|
|
345
318
|
abortPendingSpeech();
|
|
@@ -350,12 +323,20 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
350
323
|
await new Promise(r => setTimeout(r, 100));
|
|
351
324
|
}
|
|
352
325
|
// 3. Tear down transports and HTTP server.
|
|
353
|
-
for (const [sid,
|
|
354
|
-
|
|
355
|
-
|
|
326
|
+
for (const [sid, entry] of sessions) {
|
|
327
|
+
if (entry.transport) {
|
|
328
|
+
try {
|
|
329
|
+
entry.transport.close();
|
|
330
|
+
}
|
|
331
|
+
catch (_) { /* best-effort */ }
|
|
332
|
+
}
|
|
333
|
+
if (entry.server) {
|
|
334
|
+
try {
|
|
335
|
+
await entry.server.close();
|
|
336
|
+
}
|
|
337
|
+
catch (_) { /* best-effort */ }
|
|
356
338
|
}
|
|
357
|
-
|
|
358
|
-
transports.delete(sid);
|
|
339
|
+
sessions.delete(sid);
|
|
359
340
|
}
|
|
360
341
|
httpServer.close();
|
|
361
342
|
closeMemoryDb();
|
package/dist/http-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWrD,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWrD,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,aAAa,CAAC;AAMjE;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,QAAQ,GAC1B,iBAAiB,CAGnB"}
|
package/dist/server/factory.js
CHANGED
|
@@ -117,28 +117,49 @@ function createMcpServer(telegram, telegramChatId, getMemoryDb, getMcpSessionId,
|
|
|
117
117
|
getShortReminder: (threadId) => getShortReminder(threadId, sessionStartedAt),
|
|
118
118
|
getMemoryDb,
|
|
119
119
|
errorResult,
|
|
120
|
+
apiKey: config.OPENAI_API_KEY || undefined,
|
|
120
121
|
onConsolidation: () => { lastConsolidationAt = Date.now(); },
|
|
121
122
|
};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
123
|
+
// ── Context builder helpers (capture current mutable state per-call) ────
|
|
124
|
+
function buildUtilityCtx() {
|
|
125
|
+
return {
|
|
126
|
+
resolveThreadId,
|
|
127
|
+
getShortReminder: (threadId) => getShortReminder(threadId, sessionStartedAt),
|
|
128
|
+
errorResult,
|
|
129
|
+
telegram,
|
|
130
|
+
config,
|
|
131
|
+
sessionStartedAt,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function buildSessionToolCtx() {
|
|
135
|
+
return {
|
|
136
|
+
resolveThreadId,
|
|
137
|
+
getShortReminder: (threadId) => getShortReminder(threadId, sessionStartedAt),
|
|
138
|
+
errorResult,
|
|
139
|
+
telegram,
|
|
140
|
+
telegramChatId,
|
|
141
|
+
peekThreadMessages,
|
|
142
|
+
readThreadMessages,
|
|
143
|
+
appendToThread,
|
|
144
|
+
checkMaintenanceFlag,
|
|
145
|
+
checkDueTasks,
|
|
146
|
+
generateDmnReflection,
|
|
147
|
+
get lastOperatorMessageAt() { return lastOperatorMessageAt; },
|
|
148
|
+
set lastOperatorMessageAt(v) { lastOperatorMessageAt = v; },
|
|
149
|
+
get lastOperatorMessageText() { return lastOperatorMessageText; },
|
|
150
|
+
set lastOperatorMessageText(v) { lastOperatorMessageText = v; },
|
|
151
|
+
previewedUpdateIds,
|
|
152
|
+
addPreviewedId,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// ── Dispatch table ────────────────────────────────────────────────────
|
|
156
|
+
// Maps tool names to handler functions. Each receives typed args and the
|
|
157
|
+
// SDK `extra` object, returning a ToolResult (or Promise thereof).
|
|
158
|
+
const delegateCtx = { telegram, telegramChatId };
|
|
159
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
|
+
const toolHandlers = {
|
|
161
|
+
start_session: (typedArgs) => {
|
|
162
|
+
const ctx = {
|
|
142
163
|
session: {
|
|
143
164
|
get currentThreadId() { return currentThreadId; },
|
|
144
165
|
set currentThreadId(v) { currentThreadId = v; },
|
|
@@ -166,8 +187,7 @@ function createMcpServer(telegram, telegramChatId, getMemoryDb, getMcpSessionId,
|
|
|
166
187
|
getMcpSessionId,
|
|
167
188
|
closeTransport,
|
|
168
189
|
};
|
|
169
|
-
return handleStartSession(
|
|
170
|
-
// Update the dashboard registry with the resolved threadId
|
|
190
|
+
return handleStartSession(typedArgs, ctx).then(result => {
|
|
171
191
|
const sid = getMcpSessionId?.();
|
|
172
192
|
if (sid && currentThreadId !== undefined) {
|
|
173
193
|
updateDashboardThreadId(sid, currentThreadId);
|
|
@@ -175,10 +195,8 @@ function createMcpServer(telegram, telegramChatId, getMemoryDb, getMcpSessionId,
|
|
|
175
195
|
}
|
|
176
196
|
return result;
|
|
177
197
|
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (name === "remote_copilot_wait_for_instructions") {
|
|
181
|
-
// Update wait heartbeat for dashboard liveness tracking
|
|
198
|
+
},
|
|
199
|
+
remote_copilot_wait_for_instructions: (typedArgs, extra) => {
|
|
182
200
|
const waitSid = getMcpSessionId?.();
|
|
183
201
|
if (waitSid)
|
|
184
202
|
updateLastWaitCall(waitSid);
|
|
@@ -215,87 +233,64 @@ function createMcpServer(telegram, telegramChatId, getMemoryDb, getMcpSessionId,
|
|
|
215
233
|
config,
|
|
216
234
|
errorResult,
|
|
217
235
|
};
|
|
218
|
-
return handleWaitForInstructions(
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
// ──
|
|
236
|
+
return handleWaitForInstructions(typedArgs, waitCtx, extra);
|
|
237
|
+
},
|
|
238
|
+
report_progress: (typedArgs, extra) => {
|
|
239
|
+
const scopeErr = enforceThreadScope(typedArgs);
|
|
240
|
+
if (scopeErr)
|
|
241
|
+
return errorResult(scopeErr);
|
|
242
|
+
return handleSessionTool("report_progress", typedArgs, buildSessionToolCtx(), extra);
|
|
243
|
+
},
|
|
244
|
+
hibernate: (typedArgs, extra) => handleSessionTool("hibernate", typedArgs, buildSessionToolCtx(), extra),
|
|
245
|
+
send_file: (typedArgs) => {
|
|
246
|
+
const scopeErr = enforceThreadScope(typedArgs);
|
|
247
|
+
if (scopeErr)
|
|
248
|
+
return errorResult(scopeErr);
|
|
249
|
+
return handleUtilityTool("send_file", typedArgs, buildUtilityCtx());
|
|
250
|
+
},
|
|
251
|
+
send_voice: (typedArgs) => {
|
|
252
|
+
const scopeErr = enforceThreadScope(typedArgs);
|
|
253
|
+
if (scopeErr)
|
|
254
|
+
return errorResult(scopeErr);
|
|
255
|
+
return handleUtilityTool("send_voice", typedArgs, buildUtilityCtx());
|
|
256
|
+
},
|
|
257
|
+
send_sticker: (typedArgs) => {
|
|
258
|
+
const scopeErr = enforceThreadScope(typedArgs);
|
|
259
|
+
if (scopeErr)
|
|
260
|
+
return errorResult(scopeErr);
|
|
261
|
+
return handleUtilityTool("send_sticker", typedArgs, buildUtilityCtx());
|
|
262
|
+
},
|
|
263
|
+
schedule_wake_up: (typedArgs) => handleUtilityTool("schedule_wake_up", typedArgs, buildUtilityCtx()),
|
|
264
|
+
start_thread: (typedArgs) => handleStartThread(typedArgs, delegateCtx),
|
|
265
|
+
send_message_to_thread: (typedArgs) => handleSendMessageToThreadFile(typedArgs),
|
|
266
|
+
get_version: (typedArgs) => handleUtilityTool("get_version", typedArgs, buildUtilityCtx()),
|
|
267
|
+
};
|
|
268
|
+
const srv = new Server({ name: "sensorium-mcp", version: PKG_VERSION }, { capabilities: { tools: {} } });
|
|
269
|
+
// ── Tool definitions ──────────────────────────────────────────────────────
|
|
270
|
+
srv.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
271
|
+
tools: getToolDefinitions(),
|
|
272
|
+
}));
|
|
273
|
+
// ── Tool implementations ──────────────────────────────────────────────────
|
|
274
|
+
// ToolResult intentionally omits `[key: string]: unknown` for internal type
|
|
275
|
+
// safety; assert structural compatibility at the SDK boundary.
|
|
276
|
+
// @ts-expect-error — ToolResult is structurally compatible but lacks index signature
|
|
277
|
+
srv.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
278
|
+
const { name, arguments: args } = request.params;
|
|
279
|
+
// Verbose logging: tool call dispatch
|
|
280
|
+
const argsSummary = args ? JSON.stringify(args).slice(0, 200) : "{}";
|
|
281
|
+
log.verbose("dispatch", `Tool call: ${name} args=${argsSummary}`);
|
|
282
|
+
lastToolCallAt = Date.now();
|
|
283
|
+
// Track tool calls for activity monitoring
|
|
284
|
+
toolCallsSinceLastDelivery++;
|
|
285
|
+
// ── Dispatch ─────────────────────────────────────────────────────────
|
|
286
|
+
const typedArgs = (args ?? {});
|
|
287
|
+
const handler = toolHandlers[name];
|
|
288
|
+
if (handler)
|
|
289
|
+
return handler(typedArgs, extra);
|
|
290
|
+
// Prefix-based fallback for memory_* tools
|
|
268
291
|
if (name.startsWith("memory_")) {
|
|
269
|
-
return handleMemoryTool(name,
|
|
270
|
-
}
|
|
271
|
-
// ── start_thread ───────────────────────────────────────────────────────
|
|
272
|
-
if (name === "start_thread") {
|
|
273
|
-
const typedArgs = (args ?? {});
|
|
274
|
-
const delegateCtx = {
|
|
275
|
-
telegram,
|
|
276
|
-
telegramChatId,
|
|
277
|
-
};
|
|
278
|
-
return handleStartThread(typedArgs, delegateCtx);
|
|
279
|
-
}
|
|
280
|
-
// ── send_message_to_thread ─────────────────────────────────────────────
|
|
281
|
-
if (name === "send_message_to_thread") {
|
|
282
|
-
const typedArgs = (args ?? {});
|
|
283
|
-
return handleSendMessageToThreadFile(typedArgs);
|
|
284
|
-
}
|
|
285
|
-
// ── get_version ────────────────────────────────────────────────────────
|
|
286
|
-
if (name === "get_version") {
|
|
287
|
-
const typedArgs = (args ?? {});
|
|
288
|
-
const utilityCtx = {
|
|
289
|
-
resolveThreadId,
|
|
290
|
-
getShortReminder: (threadId) => getShortReminder(threadId, sessionStartedAt),
|
|
291
|
-
errorResult,
|
|
292
|
-
telegram,
|
|
293
|
-
config,
|
|
294
|
-
sessionStartedAt,
|
|
295
|
-
};
|
|
296
|
-
return handleUtilityTool(name, typedArgs, utilityCtx);
|
|
292
|
+
return handleMemoryTool(name, typedArgs, memoryToolCtx);
|
|
297
293
|
}
|
|
298
|
-
// Unknown tool
|
|
299
294
|
return errorResult(`Unknown tool: ${name}`);
|
|
300
295
|
});
|
|
301
296
|
return srv;
|