sensorium-mcp 2.16.93 → 2.16.95
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/skills.d.ts +8 -0
- package/dist/dashboard/routes/skills.d.ts.map +1 -0
- package/dist/dashboard/routes/skills.js +47 -0
- package/dist/dashboard/routes/skills.js.map +1 -0
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +11 -0
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/intent.d.ts +14 -0
- package/dist/intent.d.ts.map +1 -1
- package/dist/intent.js +110 -0
- package/dist/intent.js.map +1 -1
- package/dist/tools/wait/message-delivery.d.ts.map +1 -1
- package/dist/tools/wait/message-delivery.js +12 -2
- package/dist/tools/wait/message-delivery.js.map +1 -1
- package/dist/watcher-service.d.ts.map +1 -1
- package/dist/watcher-service.js +220 -83
- package/dist/watcher-service.js.map +1 -1
- package/package.json +1 -1
- package/templates/multi-thread-delegation.default.md +100 -0
- package/dist/watcher-server.d.ts +0 -12
- package/dist/watcher-server.d.ts.map +0 -1
- package/dist/watcher-server.js +0 -202
- package/dist/watcher-server.js.map +0 -1
package/dist/watcher-service.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Watcher Service — Node.js replacement for update-watcher.ps1. Run: npx sensorium-mcp --watcher */
|
|
2
|
-
import { spawn } from "node:child_process";
|
|
3
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync, unlinkSync } from "node:fs";
|
|
2
|
+
import { execSync, spawn } from "node:child_process";
|
|
3
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, unlinkSync } from "node:fs";
|
|
4
4
|
import { createServer } from "node:http";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { join } from "node:path";
|
|
@@ -22,13 +22,16 @@ const CONFIG = {
|
|
|
22
22
|
const P = {
|
|
23
23
|
flag: join(CONFIG.dataDir, "maintenance.flag"), ver: join(CONFIG.dataDir, "current-version.txt"),
|
|
24
24
|
activity: join(CONFIG.dataDir, "last-activity.txt"), pid: join(CONFIG.dataDir, "server.pid"),
|
|
25
|
+
lock: join(CONFIG.dataDir, "watcher.lock"),
|
|
25
26
|
};
|
|
26
27
|
let startTime = Date.now();
|
|
27
28
|
let managedChild = null;
|
|
28
29
|
let httpSrv = null;
|
|
30
|
+
let updateInProgress = false;
|
|
29
31
|
// Helpers ---------------------------------------------------------------------
|
|
30
32
|
function log(level, msg) {
|
|
31
|
-
|
|
33
|
+
const text = msg instanceof Error ? `${msg.message}\n${msg.stack}` : String(msg);
|
|
34
|
+
console.log(`[${new Date().toISOString().replace("T", " ").slice(0, 19)}] [${level}] ${text}`);
|
|
32
35
|
}
|
|
33
36
|
function sleep(ms) { return new Promise((r) => setTimeout(r, ms)); }
|
|
34
37
|
function ensureDir() { if (!existsSync(CONFIG.dataDir))
|
|
@@ -49,19 +52,63 @@ function safeRead(p) {
|
|
|
49
52
|
return null;
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
|
-
function alive(pid) {
|
|
53
|
-
process.
|
|
54
|
-
|
|
55
|
+
function alive(pid) {
|
|
56
|
+
if (process.platform === "win32") {
|
|
57
|
+
try {
|
|
58
|
+
const out = execSync(`tasklist /FI "PID eq ${pid}" /NH`, { encoding: "utf-8", timeout: 5000 });
|
|
59
|
+
return out.includes(String(pid));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
process.kill(pid, 0);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function killPid(pid) {
|
|
74
|
+
if (process.platform === "win32") {
|
|
75
|
+
try {
|
|
76
|
+
execSync(`taskkill /PID ${pid} /T`, { timeout: 5000 });
|
|
77
|
+
}
|
|
78
|
+
catch { /**/ }
|
|
79
|
+
await sleep(2000);
|
|
80
|
+
if (alive(pid)) {
|
|
81
|
+
try {
|
|
82
|
+
execSync(`taskkill /PID ${pid} /T /F`, { timeout: 5000 });
|
|
83
|
+
}
|
|
84
|
+
catch { /**/ }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
try {
|
|
89
|
+
process.kill(pid, "SIGTERM");
|
|
90
|
+
}
|
|
91
|
+
catch { /**/ }
|
|
92
|
+
await sleep(2000);
|
|
93
|
+
if (alive(pid)) {
|
|
94
|
+
try {
|
|
95
|
+
process.kill(pid, "SIGKILL");
|
|
96
|
+
}
|
|
97
|
+
catch { /**/ }
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function atomicWrite(path, data) {
|
|
102
|
+
const tmp = path + ".tmp";
|
|
103
|
+
writeFileSync(tmp, data, "utf-8");
|
|
104
|
+
renameSync(tmp, path);
|
|
55
105
|
}
|
|
56
|
-
catch {
|
|
57
|
-
return false;
|
|
58
|
-
} }
|
|
59
106
|
// Version & flag management ---------------------------------------------------
|
|
60
107
|
function getLocalVersion() { return safeRead(P.ver); }
|
|
61
|
-
function setLocalVersion(v) { ensureDir();
|
|
108
|
+
function setLocalVersion(v) { ensureDir(); atomicWrite(P.ver, v); }
|
|
62
109
|
function writeMaintenanceFlag(v) {
|
|
63
110
|
ensureDir();
|
|
64
|
-
|
|
111
|
+
atomicWrite(P.flag, JSON.stringify({ version: v, timestamp: new Date().toISOString() }));
|
|
65
112
|
log("INFO", `Maintenance flag written for v${v}`);
|
|
66
113
|
}
|
|
67
114
|
function removeMaintenanceFlag() {
|
|
@@ -90,28 +137,28 @@ function readPid() {
|
|
|
90
137
|
const n = parseInt(raw, 10);
|
|
91
138
|
return Number.isNaN(n) ? null : n;
|
|
92
139
|
}
|
|
93
|
-
function writePid(pid) { ensureDir();
|
|
140
|
+
function writePid(pid) { ensureDir(); atomicWrite(P.pid, String(pid)); }
|
|
94
141
|
function rmPid() { try {
|
|
95
142
|
if (existsSync(P.pid))
|
|
96
143
|
unlinkSync(P.pid);
|
|
97
144
|
}
|
|
98
145
|
catch { /**/ } }
|
|
99
146
|
function startMcpServer() {
|
|
100
|
-
const
|
|
147
|
+
const parts = CONFIG.mcpStartCommand.split(/\s+/);
|
|
148
|
+
const cmd = parts[0];
|
|
149
|
+
const args = parts.slice(1);
|
|
101
150
|
log("INFO", `Starting MCP server: ${CONFIG.mcpStartCommand}`);
|
|
102
151
|
try {
|
|
103
|
-
const child = spawn(cmd, args, { detached: true, stdio: "ignore",
|
|
104
|
-
child.unref();
|
|
152
|
+
const child = spawn(cmd, args, { detached: true, stdio: "ignore", windowsHide: true });
|
|
105
153
|
if (child.pid) {
|
|
106
154
|
writePid(child.pid);
|
|
107
|
-
|
|
155
|
+
managedChild = child;
|
|
156
|
+
child.unref();
|
|
157
|
+
log("INFO", `MCP server started (PID ${child.pid})`);
|
|
108
158
|
}
|
|
109
|
-
managedChild = child;
|
|
110
|
-
return child;
|
|
111
159
|
}
|
|
112
160
|
catch (err) {
|
|
113
161
|
log("ERROR", `Failed to start MCP server: ${err}`);
|
|
114
|
-
return null;
|
|
115
162
|
}
|
|
116
163
|
}
|
|
117
164
|
async function stopMcpServer() {
|
|
@@ -134,13 +181,7 @@ async function stopMcpServer() {
|
|
|
134
181
|
}
|
|
135
182
|
if (waited >= CONFIG.maxIdleWaitSeconds)
|
|
136
183
|
log("WARN", "Max idle wait exceeded — force-killing.");
|
|
137
|
-
|
|
138
|
-
process.kill(pid, "SIGTERM");
|
|
139
|
-
await sleep(2000);
|
|
140
|
-
if (alive(pid))
|
|
141
|
-
process.kill(pid, "SIGKILL");
|
|
142
|
-
}
|
|
143
|
-
catch { /**/ }
|
|
184
|
+
await killPid(pid);
|
|
144
185
|
rmPid();
|
|
145
186
|
managedChild = null;
|
|
146
187
|
log("INFO", `PID ${pid} stopped.`);
|
|
@@ -154,16 +195,18 @@ function clearNpxCache() {
|
|
|
154
195
|
return;
|
|
155
196
|
log("INFO", "Clearing sensorium-mcp from npx cache...");
|
|
156
197
|
try {
|
|
157
|
-
for (const e of readdirSync(base))
|
|
158
|
-
|
|
159
|
-
|
|
198
|
+
for (const e of readdirSync(base)) {
|
|
199
|
+
const pkgDir = join(base, e, "node_modules", "sensorium-mcp");
|
|
200
|
+
if (existsSync(pkgDir))
|
|
201
|
+
rmSync(pkgDir, { recursive: true, force: true });
|
|
202
|
+
}
|
|
160
203
|
}
|
|
161
204
|
catch (err) {
|
|
162
205
|
log("WARN", `Cache clear error: ${err}`);
|
|
163
206
|
}
|
|
164
207
|
}
|
|
165
208
|
// Stale process cleanup -------------------------------------------------------
|
|
166
|
-
function killStale() {
|
|
209
|
+
async function killStale() {
|
|
167
210
|
const pid = readPid();
|
|
168
211
|
if (!pid)
|
|
169
212
|
return;
|
|
@@ -176,19 +219,21 @@ function killStale() {
|
|
|
176
219
|
return;
|
|
177
220
|
if (statSync(P.pid).mtimeMs < statSync(P.ver).mtimeMs - 60_000) {
|
|
178
221
|
log("WARN", `Killing stale PID ${pid}`);
|
|
179
|
-
|
|
180
|
-
process.kill(pid, "SIGKILL");
|
|
181
|
-
}
|
|
182
|
-
catch { /**/ }
|
|
222
|
+
await killPid(pid);
|
|
183
223
|
rmPid();
|
|
184
224
|
}
|
|
185
225
|
}
|
|
186
226
|
catch { /**/ }
|
|
187
227
|
}
|
|
188
228
|
// Registry check --------------------------------------------------------------
|
|
229
|
+
const REGISTRY_URL = "https://registry.npmjs.org/sensorium-mcp/latest";
|
|
189
230
|
async function getRemoteVersion() {
|
|
190
231
|
try {
|
|
191
|
-
const r = await fetch(
|
|
232
|
+
const r = await fetch(REGISTRY_URL, { signal: AbortSignal.timeout(15_000) });
|
|
233
|
+
if (!r.ok) {
|
|
234
|
+
log("WARN", `Registry returned HTTP ${r.status}`);
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
192
237
|
return (await r.json()).version ?? null;
|
|
193
238
|
}
|
|
194
239
|
catch (err) {
|
|
@@ -198,48 +243,67 @@ async function getRemoteVersion() {
|
|
|
198
243
|
}
|
|
199
244
|
// Update orchestration --------------------------------------------------------
|
|
200
245
|
async function checkAndUpdate() {
|
|
201
|
-
if (
|
|
202
|
-
|
|
203
|
-
if (!pid || !alive(pid)) {
|
|
204
|
-
log("WARN", "Server not running — restarting...");
|
|
205
|
-
startMcpServer();
|
|
206
|
-
startTime = Date.now();
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
const remote = await getRemoteVersion();
|
|
210
|
-
if (!remote)
|
|
211
|
-
return;
|
|
212
|
-
const local = getLocalVersion();
|
|
213
|
-
if (!local) {
|
|
214
|
-
setLocalVersion(remote);
|
|
246
|
+
if (updateInProgress) {
|
|
247
|
+
log("INFO", "Update already in progress, skipping");
|
|
215
248
|
return;
|
|
216
249
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
250
|
+
updateInProgress = true;
|
|
251
|
+
try {
|
|
252
|
+
if (uptimeS() > 120) {
|
|
253
|
+
const pid = readPid();
|
|
254
|
+
if (!pid || !alive(pid)) {
|
|
255
|
+
log("WARN", "Server not running — restarting...");
|
|
256
|
+
startMcpServer();
|
|
257
|
+
startTime = Date.now();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const remote = await getRemoteVersion();
|
|
261
|
+
if (!remote)
|
|
262
|
+
return;
|
|
263
|
+
const local = getLocalVersion();
|
|
264
|
+
if (!local) {
|
|
265
|
+
setLocalVersion(remote);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (remote === local) {
|
|
269
|
+
log("INFO", `Up to date: v${local}`);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (uptimeS() < CONFIG.minUptimeSeconds) {
|
|
273
|
+
log("INFO", "Deferring update — too early.");
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
log("INFO", `Update: v${local} → v${remote}`);
|
|
277
|
+
writeMaintenanceFlag(remote);
|
|
278
|
+
log("INFO", `Grace period ${CONFIG.gracePeriodSeconds}s...`);
|
|
279
|
+
await sleep(CONFIG.gracePeriodSeconds * 1000);
|
|
280
|
+
await stopMcpServer();
|
|
281
|
+
clearNpxCache();
|
|
282
|
+
setLocalVersion(remote);
|
|
283
|
+
startMcpServer();
|
|
284
|
+
startTime = Date.now();
|
|
285
|
+
await sleep(10_000);
|
|
286
|
+
await killStale();
|
|
287
|
+
removeMaintenanceFlag();
|
|
288
|
+
log("INFO", `Update to v${remote} complete.`);
|
|
220
289
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return;
|
|
290
|
+
finally {
|
|
291
|
+
updateInProgress = false;
|
|
224
292
|
}
|
|
225
|
-
log("INFO", `Update: v${local} → v${remote}`);
|
|
226
|
-
writeMaintenanceFlag(remote);
|
|
227
|
-
log("INFO", `Grace period ${CONFIG.gracePeriodSeconds}s...`);
|
|
228
|
-
await sleep(CONFIG.gracePeriodSeconds * 1000);
|
|
229
|
-
await stopMcpServer();
|
|
230
|
-
clearNpxCache();
|
|
231
|
-
setLocalVersion(remote);
|
|
232
|
-
startMcpServer();
|
|
233
|
-
startTime = Date.now();
|
|
234
|
-
await sleep(10_000);
|
|
235
|
-
killStale();
|
|
236
|
-
removeMaintenanceFlag();
|
|
237
|
-
log("INFO", `Update to v${remote} complete.`);
|
|
238
293
|
}
|
|
239
294
|
// Main loop -------------------------------------------------------------------
|
|
240
295
|
async function runLoop() {
|
|
241
296
|
log("INFO", `Watcher starting in ${CONFIG.mode} mode.`);
|
|
242
297
|
ensureDir();
|
|
298
|
+
// Clear stale maintenance flag left by a previous crash
|
|
299
|
+
if (flagExists()) {
|
|
300
|
+
const stalePid = readPid();
|
|
301
|
+
const local = getLocalVersion();
|
|
302
|
+
if (local && stalePid && alive(stalePid)) {
|
|
303
|
+
log("WARN", "Stale maintenance.flag found — server already running at current version. Removing.");
|
|
304
|
+
removeMaintenanceFlag();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
243
307
|
const pid = readPid();
|
|
244
308
|
if (!pid || !alive(pid))
|
|
245
309
|
startMcpServer();
|
|
@@ -260,7 +324,7 @@ async function runLoop() {
|
|
|
260
324
|
else {
|
|
261
325
|
while (true) {
|
|
262
326
|
try {
|
|
263
|
-
killStale();
|
|
327
|
+
await killStale();
|
|
264
328
|
await checkAndUpdate();
|
|
265
329
|
}
|
|
266
330
|
catch (err) {
|
|
@@ -271,7 +335,7 @@ async function runLoop() {
|
|
|
271
335
|
}
|
|
272
336
|
}
|
|
273
337
|
}
|
|
274
|
-
// MCP server (await_server_ready) — in-process HTTP
|
|
338
|
+
// MCP server (await_server_ready) — in-process HTTP ---------------------------
|
|
275
339
|
function createWatcherMcp() {
|
|
276
340
|
const srv = new Server({ name: "sensorium-watcher", version: "1.0.0" }, { capabilities: { tools: {} } });
|
|
277
341
|
srv.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [{
|
|
@@ -296,9 +360,18 @@ function createWatcherMcp() {
|
|
|
296
360
|
return srv;
|
|
297
361
|
}
|
|
298
362
|
function parseBody(req) {
|
|
363
|
+
const MAX_BODY = 1_048_576; // 1 MB
|
|
299
364
|
return new Promise((resolve, reject) => {
|
|
300
365
|
const chunks = [];
|
|
301
|
-
|
|
366
|
+
let size = 0;
|
|
367
|
+
req.on("data", (c) => {
|
|
368
|
+
size += c.length;
|
|
369
|
+
if (size > MAX_BODY) {
|
|
370
|
+
req.destroy(new Error("Request body exceeds 1 MB limit"));
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
chunks.push(c);
|
|
374
|
+
});
|
|
302
375
|
req.on("end", () => { try {
|
|
303
376
|
resolve(JSON.parse(Buffer.concat(chunks).toString()));
|
|
304
377
|
}
|
|
@@ -310,6 +383,16 @@ function parseBody(req) {
|
|
|
310
383
|
}
|
|
311
384
|
function startHttpMcp(port) {
|
|
312
385
|
const transports = new Map();
|
|
386
|
+
const sessionCreated = new Map();
|
|
387
|
+
setInterval(() => {
|
|
388
|
+
for (const [sid, ts] of sessionCreated) {
|
|
389
|
+
if (Date.now() - ts > 600_000) {
|
|
390
|
+
transports.get(sid)?.close?.();
|
|
391
|
+
transports.delete(sid);
|
|
392
|
+
sessionCreated.delete(sid);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}, 60_000);
|
|
313
396
|
httpSrv = createServer(async (req, res) => {
|
|
314
397
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
315
398
|
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
|
|
@@ -337,10 +420,12 @@ function startHttpMcp(port) {
|
|
|
337
420
|
if (isInitializeRequest(body)) {
|
|
338
421
|
const t = new StreamableHTTPServerTransport({
|
|
339
422
|
sessionIdGenerator: () => randomUUID(),
|
|
340
|
-
onsessioninitialized: (s) => { transports.set(s, t); },
|
|
423
|
+
onsessioninitialized: (s) => { transports.set(s, t); sessionCreated.set(s, Date.now()); },
|
|
341
424
|
});
|
|
342
|
-
t.onclose = () => { const s = t.sessionId; if (s)
|
|
343
|
-
transports.delete(s);
|
|
425
|
+
t.onclose = () => { const s = t.sessionId; if (s) {
|
|
426
|
+
transports.delete(s);
|
|
427
|
+
sessionCreated.delete(s);
|
|
428
|
+
} };
|
|
344
429
|
await (createWatcherMcp()).connect(t);
|
|
345
430
|
await t.handleRequest(req, res, body);
|
|
346
431
|
return;
|
|
@@ -363,7 +448,8 @@ function startHttpMcp(port) {
|
|
|
363
448
|
res.writeHead(405);
|
|
364
449
|
res.end("Method Not Allowed");
|
|
365
450
|
}
|
|
366
|
-
catch {
|
|
451
|
+
catch (err) {
|
|
452
|
+
log("ERROR", `HTTP handler error: ${err}`);
|
|
367
453
|
if (!res.headersSent) {
|
|
368
454
|
res.writeHead(500);
|
|
369
455
|
res.end(JSON.stringify({ jsonrpc: "2.0", error: { code: -32603, message: "Internal error" }, id: null }));
|
|
@@ -372,20 +458,71 @@ function startHttpMcp(port) {
|
|
|
372
458
|
});
|
|
373
459
|
httpSrv.listen(port, "127.0.0.1", () => log("INFO", `Watcher MCP on http://127.0.0.1:${port}/mcp`));
|
|
374
460
|
}
|
|
461
|
+
// Lockfile — prevent two watcher instances --------------------------------------
|
|
462
|
+
let lockFd = null;
|
|
463
|
+
function acquireLock() {
|
|
464
|
+
try {
|
|
465
|
+
ensureDir();
|
|
466
|
+
lockFd = openSync(P.lock, "wx");
|
|
467
|
+
writeFileSync(lockFd, String(process.pid));
|
|
468
|
+
return true;
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
// Check if the existing lock holder is still alive
|
|
472
|
+
const raw = safeRead(P.lock);
|
|
473
|
+
if (raw) {
|
|
474
|
+
const pid = parseInt(raw, 10);
|
|
475
|
+
if (!Number.isNaN(pid) && alive(pid)) {
|
|
476
|
+
log("ERROR", `Another watcher is already running (PID ${pid}). Exiting.`);
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
// Stale lock — reclaim
|
|
481
|
+
try {
|
|
482
|
+
unlinkSync(P.lock);
|
|
483
|
+
}
|
|
484
|
+
catch { /**/ }
|
|
485
|
+
try {
|
|
486
|
+
lockFd = openSync(P.lock, "wx");
|
|
487
|
+
writeFileSync(lockFd, String(process.pid));
|
|
488
|
+
log("WARN", "Reclaimed stale watcher lockfile.");
|
|
489
|
+
return true;
|
|
490
|
+
}
|
|
491
|
+
catch {
|
|
492
|
+
log("ERROR", "Failed to acquire watcher lockfile.");
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
function releaseLock() {
|
|
498
|
+
if (lockFd !== null) {
|
|
499
|
+
try {
|
|
500
|
+
closeSync(lockFd);
|
|
501
|
+
}
|
|
502
|
+
catch { /**/ }
|
|
503
|
+
lockFd = null;
|
|
504
|
+
}
|
|
505
|
+
try {
|
|
506
|
+
if (existsSync(P.lock))
|
|
507
|
+
unlinkSync(P.lock);
|
|
508
|
+
}
|
|
509
|
+
catch { /**/ }
|
|
510
|
+
}
|
|
375
511
|
// Signal handling & entry point -----------------------------------------------
|
|
376
512
|
export async function startWatcherService() {
|
|
377
|
-
|
|
513
|
+
if (!acquireLock()) {
|
|
514
|
+
process.exit(1);
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
const shutdown = async () => {
|
|
378
518
|
log("INFO", "Shutting down watcher...");
|
|
379
|
-
|
|
380
|
-
try {
|
|
381
|
-
process.kill(managedChild.pid, "SIGTERM");
|
|
382
|
-
}
|
|
383
|
-
catch { /**/ }
|
|
519
|
+
await stopMcpServer();
|
|
384
520
|
httpSrv?.close();
|
|
521
|
+
releaseLock();
|
|
385
522
|
process.exit(0);
|
|
386
523
|
};
|
|
387
|
-
process.on("SIGINT", shutdown);
|
|
388
|
-
process.on("SIGTERM", shutdown);
|
|
524
|
+
process.on("SIGINT", () => void shutdown());
|
|
525
|
+
process.on("SIGTERM", () => void shutdown());
|
|
389
526
|
startHttpMcp(CONFIG.httpPort);
|
|
390
527
|
await runLoop();
|
|
391
528
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher-service.js","sourceRoot":"","sources":["../src/watcher-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher-service.js","sourceRoot":"","sources":["../src/watcher-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Multi-Thread Delegation
|
|
3
|
+
triggers:
|
|
4
|
+
- delegate to thread
|
|
5
|
+
- use multi-thread
|
|
6
|
+
- thread delegation
|
|
7
|
+
- spawn thread
|
|
8
|
+
replaces_orchestrator: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Multi-Thread Agent Orchestration
|
|
12
|
+
|
|
13
|
+
### Overview
|
|
14
|
+
This skill describes how to use sensorium-mcp's inter-thread messaging for orchestrating work across multiple persistent threads. Each thread represents a specialist worker with its own memory context.
|
|
15
|
+
|
|
16
|
+
### Thread Topology
|
|
17
|
+
- **Manager Thread** (main): Design decisions, operator interaction, constraints, routing
|
|
18
|
+
- **Worker Threads** (persistent): Specialized domains — dashboard, code-review, testing, refactoring, etc.
|
|
19
|
+
|
|
20
|
+
### Core Pattern: Delegate and Wait
|
|
21
|
+
|
|
22
|
+
When you have work that should be delegated to a worker thread:
|
|
23
|
+
|
|
24
|
+
1. **Create or identify the worker thread**
|
|
25
|
+
```
|
|
26
|
+
start_thread(name: "Dashboard Worker")
|
|
27
|
+
→ returns { threadId: 4961 }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. **Send a detailed task with clear acceptance criteria**
|
|
31
|
+
```
|
|
32
|
+
send_message_to_thread(
|
|
33
|
+
threadId: 4961,
|
|
34
|
+
message: "Task: Rewrite the dashboard settings page using React.
|
|
35
|
+
Acceptance criteria:
|
|
36
|
+
- Settings load from /api/settings
|
|
37
|
+
- Form validates input
|
|
38
|
+
- Save button persists changes
|
|
39
|
+
When complete, send results back to thread 1327."
|
|
40
|
+
)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
3. **Wait for results — do NOT duplicate the work**
|
|
44
|
+
```
|
|
45
|
+
remote_copilot_wait_for_instructions(threadId: 1327)
|
|
46
|
+
```
|
|
47
|
+
The worker will execute the task and send results back via send_message_to_thread.
|
|
48
|
+
|
|
49
|
+
4. **Process results when they arrive**
|
|
50
|
+
Results arrive as an operator message in wait_for_instructions. Review, approve, or request changes.
|
|
51
|
+
|
|
52
|
+
### Pattern 2: Fire and Forget
|
|
53
|
+
|
|
54
|
+
For tasks that don't need a response back — the worker executes autonomously and the manager moves on.
|
|
55
|
+
|
|
56
|
+
1. **Create or identify the worker thread**
|
|
57
|
+
```
|
|
58
|
+
start_thread(name: "Background Cleanup")
|
|
59
|
+
→ returns { threadId: 5200 }
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
2. **Send the task — no report-back needed**
|
|
63
|
+
```
|
|
64
|
+
send_message_to_thread(
|
|
65
|
+
threadId: 5200,
|
|
66
|
+
message: "Task: Clean up stale log files older than 30 days in ~/.remote-copilot-mcp/logs/.
|
|
67
|
+
This is a one-shot task. Report progress to the operator via report_progress or send_voice.
|
|
68
|
+
Do NOT message the sender back."
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
3. **Continue working immediately**
|
|
73
|
+
Don't call wait_for_instructions for this task. Continue with your own work.
|
|
74
|
+
|
|
75
|
+
#### When to use Fire and Forget:
|
|
76
|
+
- Background cleanup tasks
|
|
77
|
+
- Scheduled improvements that don't affect current work
|
|
78
|
+
- Logging, monitoring, metrics tasks
|
|
79
|
+
- Any task where the result doesn't gate your next step
|
|
80
|
+
|
|
81
|
+
#### When NOT to use Fire and Forget:
|
|
82
|
+
- Code reviews (you need the findings to act on)
|
|
83
|
+
- Any task where the output determines your next action
|
|
84
|
+
- Tasks that modify files you're also editing (conflict risk)
|
|
85
|
+
|
|
86
|
+
### Rules
|
|
87
|
+
|
|
88
|
+
- **NEVER** duplicate work with a subagent after delegating to a thread. Trust the delegation.
|
|
89
|
+
- **ALWAYS** include clear acceptance criteria in the task message.
|
|
90
|
+
- **ALWAYS** specify which thread to report back to.
|
|
91
|
+
- Worker threads build domain-specific memory over time — reuse the same thread for the same domain.
|
|
92
|
+
- The manager thread stays clean for high-level decisions and operator interaction.
|
|
93
|
+
|
|
94
|
+
### Anti-Patterns
|
|
95
|
+
|
|
96
|
+
- ❌ Creating a worker thread AND running a subagent for the same task
|
|
97
|
+
- ❌ Sending a task then immediately doing the work yourself
|
|
98
|
+
- ❌ Creating a new thread for every task instead of reusing domain threads
|
|
99
|
+
- ❌ Sending tasks without acceptance criteria or report-back instructions
|
|
100
|
+
- ❌ Reading worker results and re-doing the work instead of applying them
|
package/dist/watcher-server.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Watcher MCP server — lightweight standby server that agents call
|
|
3
|
-
* during sensorium updates instead of sleeping 600 seconds.
|
|
4
|
-
*
|
|
5
|
-
* Run via: npx sensorium-mcp --watcher (stdio)
|
|
6
|
-
* npx sensorium-mcp --watcher --watcher-port 3848 (HTTP)
|
|
7
|
-
*
|
|
8
|
-
* Registers a single tool `await_server_ready` that polls for the
|
|
9
|
-
* removal of ~/.remote-copilot-mcp/maintenance.flag.
|
|
10
|
-
*/
|
|
11
|
-
export declare function startWatcherServer(): Promise<void>;
|
|
12
|
-
//# sourceMappingURL=watcher-server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watcher-server.d.ts","sourceRoot":"","sources":["../src/watcher-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoMH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUxD"}
|