sensorium-mcp 2.16.165 → 2.16.166

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.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/data/memory/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAQ3C,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AAkiB9C,wBAAgB,YAAY,IAAI,QAAQ,CAqCvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAWzD"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/data/memory/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAQ3C,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AAglB9C,wBAAgB,YAAY,IAAI,QAAQ,CAqCvC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAWzD"}
@@ -199,7 +199,12 @@ const MIGRATIONS = {
199
199
  log.info("[migration-12] Created thread_registry table");
200
200
  },
201
201
  13: (db) => {
202
- db.exec(`ALTER TABLE thread_registry ADD COLUMN session_reset_at TEXT`);
202
+ // session_reset_at may already exist if the DB was created with the latest SCHEMA_SQL
203
+ const cols = db.prepare("PRAGMA table_info(thread_registry)").all();
204
+ const hasCol = cols.some(c => c.name === "session_reset_at");
205
+ if (!hasCol) {
206
+ db.exec("ALTER TABLE thread_registry ADD COLUMN session_reset_at TEXT");
207
+ }
203
208
  log.info("[migration-13] Added session_reset_at column to thread_registry");
204
209
  },
205
210
  };
@@ -266,7 +271,7 @@ function ensureSchemaIntegrity(db) {
266
271
  log.info("[memory] Self-heal: adding missing is_guardrail column");
267
272
  db.exec("ALTER TABLE semantic_notes ADD COLUMN is_guardrail INTEGER NOT NULL DEFAULT 0");
268
273
  db.exec("CREATE INDEX IF NOT EXISTS idx_sem_guardrail ON semantic_notes(is_guardrail) WHERE is_guardrail = 1 AND valid_to IS NULL");
269
- stampVersion(7); // migration 7 added is_guardrail
274
+ stampVersion(8); // migration 8 added is_guardrail
270
275
  }
271
276
  if (!semanticNoteCols.includes("pinned")) {
272
277
  log.info("[memory] Self-heal: adding missing pinned column");
@@ -278,13 +283,13 @@ function ensureSchemaIntegrity(db) {
278
283
  log.info("[memory] Self-heal: adding missing thread_id column to semantic_notes");
279
284
  db.exec("ALTER TABLE semantic_notes ADD COLUMN thread_id INTEGER");
280
285
  db.exec("CREATE INDEX IF NOT EXISTS idx_sem_thread ON semantic_notes(thread_id) WHERE valid_to IS NULL");
281
- stampVersion(3); // migration 3 added thread_id
286
+ stampVersion(4); // migration 4 added thread_id
282
287
  }
283
288
  if (!semanticNoteCols.includes("priority")) {
284
289
  log.info("[memory] Self-heal: adding missing priority column to semantic_notes");
285
290
  db.exec("ALTER TABLE semantic_notes ADD COLUMN priority INTEGER NOT NULL DEFAULT 0");
286
291
  db.exec("CREATE INDEX IF NOT EXISTS idx_sem_priority ON semantic_notes(priority DESC) WHERE valid_to IS NULL");
287
- stampVersion(6); // migration 6 added priority
292
+ stampVersion(3); // migration 3 added priority
288
293
  }
289
294
  // Also check episodes table for thread_id
290
295
  const episodeCols = db
@@ -320,6 +325,46 @@ function ensureSchemaIntegrity(db) {
320
325
  `);
321
326
  stampVersion(11);
322
327
  }
328
+ const hasThreadRegistry = db
329
+ .prepare("SELECT COUNT(*) as cnt FROM sqlite_master WHERE type='table' AND name='thread_registry'")
330
+ .get();
331
+ if (hasThreadRegistry.cnt === 0) {
332
+ log.info("[memory] Self-heal: creating missing thread_registry table");
333
+ db.exec(`
334
+ CREATE TABLE IF NOT EXISTS thread_registry (
335
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
336
+ thread_id INTEGER NOT NULL UNIQUE,
337
+ name TEXT NOT NULL,
338
+ type TEXT NOT NULL CHECK(type IN ('root','daily','branch','worker')),
339
+ root_thread_id INTEGER,
340
+ badge TEXT NOT NULL DEFAULT 'root',
341
+ client TEXT DEFAULT 'claude',
342
+ max_retries INTEGER DEFAULT 5,
343
+ cooldown_ms INTEGER DEFAULT 300000,
344
+ keep_alive INTEGER DEFAULT 0,
345
+ created_at TEXT NOT NULL,
346
+ last_active_at TEXT,
347
+ session_reset_at TEXT,
348
+ status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active','archived','expired'))
349
+ );
350
+ CREATE INDEX IF NOT EXISTS idx_thread_reg_type ON thread_registry(type);
351
+ CREATE INDEX IF NOT EXISTS idx_thread_reg_root ON thread_registry(root_thread_id);
352
+ CREATE INDEX IF NOT EXISTS idx_thread_reg_status ON thread_registry(status);
353
+ `);
354
+ stampVersion(12);
355
+ stampVersion(13);
356
+ }
357
+ else {
358
+ const threadRegistryCols = db
359
+ .prepare("PRAGMA table_info(thread_registry)")
360
+ .all()
361
+ .map((r) => r.name);
362
+ if (!threadRegistryCols.includes("session_reset_at")) {
363
+ log.info("[memory] Self-heal: adding missing session_reset_at column to thread_registry");
364
+ db.exec("ALTER TABLE thread_registry ADD COLUMN session_reset_at TEXT");
365
+ stampVersion(13);
366
+ }
367
+ }
323
368
  }
324
369
  const SCHEMA_SQL = `
325
370
  CREATE TABLE IF NOT EXISTS episodes (
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/data/memory/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/data/memory/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC3C;AA2BD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,mBAAmB,CAqBrB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAKpF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAKvG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAK1F;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAKpE;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC,CAAC,GAC/I,OAAO,CAoBT;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIhE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAO7F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKzE;AAID,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,IAAI,CAUtF"}
1
+ {"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC3C;AA2BD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,mBAAmB,CAyBrB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAKpF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAKvG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAK1F;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAKpE;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC,CAAC,GAC/I,OAAO,CAoBT;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIhE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAO7F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKzE;AAID,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,IAAI,CAUtF"}
@@ -27,10 +27,14 @@ function rowToEntry(row) {
27
27
  // ─── CRUD ────────────────────────────────────────────────────────────────────
28
28
  export function registerThread(db, entry) {
29
29
  const now = nowISO();
30
- db.prepare(`INSERT INTO thread_registry
30
+ db.prepare(`INSERT OR IGNORE INTO thread_registry
31
31
  (thread_id, name, type, root_thread_id, badge, client, max_retries, cooldown_ms, keep_alive, created_at, last_active_at, status)
32
32
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active')`).run(entry.threadId, entry.name, entry.type, entry.rootThreadId ?? null, entry.badge ?? 'root', entry.client ?? 'claude', entry.maxRetries ?? 5, entry.cooldownMs ?? 300000, entry.keepAlive ? 1 : 0, now, now);
33
- return getThread(db, entry.threadId);
33
+ const result = getThread(db, entry.threadId);
34
+ if (!result) {
35
+ throw new Error(`registerThread: failed to retrieve thread after insert (threadId=${entry.threadId})`);
36
+ }
37
+ return result;
34
38
  }
35
39
  export function getThread(db, threadId) {
36
40
  const row = db.prepare(`SELECT * FROM thread_registry WHERE thread_id = ?`).get(threadId);
@@ -1 +1 @@
1
- {"version":3,"file":"thread-registry.js","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-registry.js","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -32,6 +32,8 @@ else {
32
32
  const { setTopicRegistryDb, lookupTopicRegistry } = await import("./sessions.js");
33
33
  const { initVideoTempCleanup } = await import("./integrations/openai/video.js");
34
34
  const { cleanupStalePidFiles } = await import("./tools/thread-lifecycle.js");
35
+ const { log } = await import("./logger.js");
36
+ const { rotateAllDailySessions } = await import("./daily-session.js");
35
37
  // ---------------------------------------------------------------------------
36
38
  // Shared singletons
37
39
  // ---------------------------------------------------------------------------
@@ -79,6 +81,33 @@ else {
79
81
  memoryDb = null;
80
82
  }
81
83
  }
84
+ // ---------------------------------------------------------------------------
85
+ // Daily session rotation timer (runs in the MCP server process which has
86
+ // all env vars — OpenAI, Telegram, etc.)
87
+ // ---------------------------------------------------------------------------
88
+ const DAILY_ROTATION_HOUR = 4;
89
+ function startDailyRotationTimer() {
90
+ setInterval(async () => {
91
+ const now = new Date();
92
+ if (now.getHours() !== DAILY_ROTATION_HOUR || now.getMinutes() >= 5)
93
+ return;
94
+ try {
95
+ log.info("Starting daily session rotation...");
96
+ const results = await rotateAllDailySessions();
97
+ for (const r of results) {
98
+ if (r.error) {
99
+ log.error(`Daily rotation failed for root ${r.rootThreadId}: ${r.error}`);
100
+ }
101
+ else {
102
+ log.info(`Daily rotation complete for root ${r.rootThreadId}`);
103
+ }
104
+ }
105
+ }
106
+ catch (err) {
107
+ log.error(`Daily rotation error: ${err instanceof Error ? err.message : String(err)}`);
108
+ }
109
+ }, 5 * 60_000);
110
+ }
82
111
  const httpPort = process.env.MCP_HTTP_PORT ? parseInt(process.env.MCP_HTTP_PORT, 10) : undefined;
83
112
  if (httpPort) {
84
113
  startHttpServer(createMcpServer, getMemoryDb, closeMemoryDb);
@@ -86,6 +115,8 @@ else {
86
115
  else {
87
116
  await startStdioServer(createMcpServer, closeMemoryDb);
88
117
  }
118
+ // Start daily rotation timer after server is listening
119
+ startDailyRotationTimer();
89
120
  }
90
121
  export {};
91
122
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watcher-service.d.ts","sourceRoot":"","sources":["../src/watcher-service.ts"],"names":[],"mappings":"AA+0BA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD"}
1
+ {"version":3,"file":"watcher-service.d.ts","sourceRoot":"","sources":["../src/watcher-service.ts"],"names":[],"mappings":"AAksBA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD"}
@@ -9,7 +9,6 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
9
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
10
10
  import { CallToolRequestSchema, isInitializeRequest, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
11
11
  import { startClaudeKeeper } from "./claude-keeper.js";
12
- import { rotateAllDailySessions } from "./daily-session.js";
13
12
  process.on("uncaughtException", (err) => {
14
13
  console.error(`[fatal] Uncaught exception: ${err.stack ?? err}`);
15
14
  process.exit(1);
@@ -326,150 +325,30 @@ function parsePidFile(filePath) {
326
325
  }
327
326
  }
328
327
  /**
329
- * Read active ghost thread info from PID files before killing the MCP server.
330
- * Only returns threads whose processes are currently alive AND were started
331
- * recently (within 24h). Stale PID files from old sessions are cleaned up.
328
+ * Clean up PID files for dead processes.
332
329
  */
333
330
  function readGhostThreads() {
334
331
  const pidsDir = join(CONFIG.dataDir, "pids");
335
- // Read session store for name lookups (reverse map: threadId → name)
336
- const sessionStorePath = join(homedir(), ".remote-copilot-mcp-sessions.json");
337
- const threadNames = new Map();
338
- try {
339
- const sessions = JSON.parse(readFileSync(sessionStorePath, "utf-8"));
340
- for (const chatTopics of Object.values(sessions)) {
341
- for (const [name, tid] of Object.entries(chatTopics)) {
342
- threadNames.set(tid, name);
343
- }
344
- }
345
- }
346
- catch { /* no sessions file */ }
347
- // Collect threads from keep-alive config as the authoritative set of
348
- // threads that SHOULD be respawned. Ghost threads spawned ad-hoc by
349
- // agents will NOT be respawned — only keeper-managed threads survive.
350
- const keepAliveThreadIds = new Set();
351
- try {
352
- const allSettings = readAllKeeperSettings();
353
- for (const s of allSettings) {
354
- if (s.enabled && s.threadId > 0)
355
- keepAliveThreadIds.add(s.threadId);
356
- }
357
- }
358
- catch { /* best effort */ }
359
- const threads = [];
360
- const STALE_CUTOFF_MS = 24 * 60 * 60 * 1000; // 24 hours
361
332
  try {
362
333
  for (const file of readdirSync(pidsDir)) {
363
334
  if (!file.endsWith(".pid"))
364
335
  continue;
365
- const threadId = Number(file.replace(".pid", ""));
366
- if (!Number.isFinite(threadId))
367
- continue;
368
336
  const fullPath = join(pidsDir, file);
369
337
  const parsed = parsePidFile(fullPath);
370
- // Clean up PID files for dead processes
371
338
  if (!parsed || !alive(parsed.pid)) {
372
339
  try {
373
340
  unlinkSync(fullPath);
374
341
  }
375
342
  catch { /* ignore */ }
376
- continue;
377
- }
378
- // Only respawn threads that are in the keep-alive config
379
- if (!keepAliveThreadIds.has(threadId)) {
380
- log("INFO", `Skipping ghost thread ${threadId} — not in keep-alive config`);
381
- continue;
382
343
  }
383
- threads.push({
384
- threadId,
385
- name: parsed.name ?? threadNames.get(threadId) ?? `thread-${threadId}`,
386
- });
387
344
  }
388
345
  }
389
346
  catch { /* pids dir may not exist */ }
390
- return threads;
391
347
  }
392
- /**
393
- * Re-spawn ghost threads after a server update.
394
- * Each thread gets a fresh Claude CLI pointed at the updated MCP server,
395
- * with sensorium-watcher included in the config for future update resilience.
396
- */
397
- async function respawnGhostThreads(threads) {
398
- if (threads.length === 0)
399
- return;
400
- // Resolve base MCP config (same candidates as thread-lifecycle.ts)
401
- const candidates = [
402
- process.env.CLAUDE_MCP_CONFIG,
403
- join(homedir(), ".claude", "settings.json"),
404
- join(homedir(), ".claude", "mcp_config.json"),
405
- join(homedir(), ".claude", ".mcp.json"),
406
- ].filter(Boolean);
407
- const baseConfigPath = candidates.find((p) => existsSync(p));
408
- if (!baseConfigPath) {
409
- log("WARN", "Cannot re-spawn ghost threads: no MCP config found");
410
- return;
411
- }
412
- // Generate a merged config that includes sensorium-watcher
413
- const mergedConfigPath = join(CONFIG.dataDir, "ghost-respawn-mcp-config.json");
414
- try {
415
- const raw = readFileSync(baseConfigPath, "utf-8");
416
- const config = JSON.parse(raw);
417
- const servers = (config.mcpServers ?? {});
418
- if (!servers["sensorium-watcher"]) {
419
- servers["sensorium-watcher"] = {
420
- type: "http",
421
- url: `http://127.0.0.1:${CONFIG.httpPort}/mcp`,
422
- };
423
- config.mcpServers = servers;
424
- }
425
- writeFileSync(mergedConfigPath, JSON.stringify(config, null, 2), "utf-8");
426
- }
427
- catch (err) {
428
- log("WARN", `Failed to generate merged MCP config for re-spawn: ${err}`);
429
- return;
430
- }
431
- const claudeCmd = CONFIG.claudeCmd;
432
- const useShell = process.platform === "win32";
433
- const logsDir = join(CONFIG.dataDir, "logs");
434
- const pidsDir = join(CONFIG.dataDir, "pids");
435
- mkdirSync(logsDir, { recursive: true });
436
- mkdirSync(pidsDir, { recursive: true });
437
- for (const thread of threads) {
438
- // Skip threads managed by a keeper — the keeper handles its own restart
439
- if (keepers.has(thread.threadId))
440
- continue;
441
- log("INFO", `Re-spawning ghost thread ${thread.threadId} ("${thread.name}")`);
442
- const dateStr = new Date().toISOString().slice(0, 10);
443
- const safeName = thread.name.replaceAll(/[^a-zA-Z0-9_-]/g, "_");
444
- const logFile = join(logsDir, `${safeName}_${thread.threadId}_${dateStr}.json`);
445
- const prompt = `Start remote session with sensorium. Thread name = '${thread.name}'`;
446
- try {
447
- const logFd = openSync(logFile, "a");
448
- const child = spawn(claudeCmd, [
449
- "--verbose",
450
- "--dangerously-skip-permissions",
451
- "--mcp-config", mergedConfigPath,
452
- "-p", prompt,
453
- "--output-format", "stream-json",
454
- "--include-partial-messages",
455
- ], {
456
- detached: true,
457
- stdio: ["ignore", logFd, logFd],
458
- shell: useShell,
459
- windowsHide: true,
460
- });
461
- closeSync(logFd);
462
- if (child.pid) {
463
- const pidFile = join(pidsDir, `${thread.threadId}.pid`);
464
- writeFileSync(pidFile, JSON.stringify({ pid: child.pid, name: thread.name, startedAt: Date.now() }), "utf-8");
465
- child.unref();
466
- log("INFO", `Re-spawned ghost thread ${thread.threadId} (PID ${child.pid})`);
467
- }
468
- }
469
- catch (err) {
470
- log("ERROR", `Failed to re-spawn ghost thread ${thread.threadId}: ${err}`);
471
- }
472
- }
348
+ /** @deprecated Keeper system handles restarts — retained as no-op. */
349
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
350
+ async function respawnGhostThreads(_threads) {
351
+ // No-op: keepers handle their own restart via scheduleRestart() and applyKeeperSettings().
473
352
  }
474
353
  async function getRemoteVersion() {
475
354
  try {
@@ -526,14 +405,8 @@ async function checkAndUpdate() {
526
405
  writeMaintenanceFlag(remote);
527
406
  log("INFO", `Grace period ${CONFIG.gracePeriodSeconds}s...`);
528
407
  await sleep(CONFIG.gracePeriodSeconds * 1000);
529
- // Save active ghost thread info BEFORE killing the server.
530
- // taskkill /F /T kills the entire process tree including ghost threads,
531
- // so we need to re-spawn them after the update.
532
- const ghostThreads = readGhostThreads();
533
- if (ghostThreads.length > 0) {
534
- const desc = ghostThreads.map(t => String(t.threadId) + '("' + t.name + '")').join(", ");
535
- log("INFO", `Saved ${ghostThreads.length} ghost thread(s) for re-spawn after update: ${desc}`);
536
- }
408
+ // Clean up stale PID files before killing the server
409
+ readGhostThreads();
537
410
  await stopMcpServer();
538
411
  clearNpxCache();
539
412
  setLocalVersion(remote);
@@ -542,12 +415,9 @@ async function checkAndUpdate() {
542
415
  await waitForServerReady();
543
416
  await killStale();
544
417
  removeMaintenanceFlag();
545
- // Re-spawn ghost threads that were killed during the update
546
- if (ghostThreads.length > 0) {
547
- log("INFO", "Re-spawning ghost threads...");
548
- await respawnGhostThreads(ghostThreads);
549
- }
550
- await notifyOperator(`\u2705 Watcher: update to v${remote} complete. Server ready.` + (ghostThreads.length > 0 ? ` Re-spawned ${ghostThreads.length} ghost thread(s).` : ""));
418
+ // Keepers detect their agents died and restart them naturally
419
+ // via scheduleRestart() and the applyKeeperSettings() poller.
420
+ await notifyOperator(`\u2705 Watcher: update to v${remote} complete. Server ready.`);
551
421
  log("INFO", `Update to v${remote} complete.`);
552
422
  }
553
423
  finally {
@@ -557,7 +427,7 @@ async function checkAndUpdate() {
557
427
  // Claude CLI keeper -----------------------------------------------------------
558
428
  const SETTINGS_JSON_PATH = join(CONFIG.dataDir, "settings.json");
559
429
  const KEEPER_SETTINGS_POLL_MS = 2 * 60_000;
560
- function readAllKeeperSettings() {
430
+ function readKeeperSettingsFromFile() {
561
431
  const raw = safeRead(SETTINGS_JSON_PATH);
562
432
  const s = raw
563
433
  ? (() => { try {
@@ -617,6 +487,40 @@ function readAllKeeperSettings() {
617
487
  }
618
488
  return results;
619
489
  }
490
+ /**
491
+ * Read keeper settings from the MCP server's thread_registry via HTTP API.
492
+ * Falls back to settings.json if the server is not ready (e.g. during startup).
493
+ */
494
+ async function readAllKeeperSettings() {
495
+ // Try HTTP-based registry first
496
+ const port = CONFIG.mcpHttpPort || 3847;
497
+ try {
498
+ const res = await fetch(`http://127.0.0.1:${port}/api/threads/roots`, {
499
+ headers: CONFIG.mcpHttpSecret ? { 'Authorization': `Bearer ${CONFIG.mcpHttpSecret}` } : {},
500
+ signal: AbortSignal.timeout(5_000),
501
+ });
502
+ if (res.ok) {
503
+ const body = (await res.json());
504
+ const roots = body.threads ?? [];
505
+ return roots
506
+ .filter((r) => r.keepAlive)
507
+ .filter((r) => typeof r.threadId === 'number' && Number.isFinite(r.threadId) && r.threadId > 0 && r.threadId === Math.floor(r.threadId))
508
+ .map((r) => ({
509
+ enabled: true,
510
+ threadId: r.threadId,
511
+ maxRetries: (typeof r.maxRetries === 'number' ? r.maxRetries : null) ?? 5,
512
+ cooldownMs: (typeof r.cooldownMs === 'number' ? r.cooldownMs : null) ?? 300_000,
513
+ client: r.client === 'copilot' ? 'copilot' : 'claude',
514
+ sessionName: (typeof r.name === 'string' ? r.name : null) ?? `thread-${r.threadId}`,
515
+ }));
516
+ }
517
+ }
518
+ catch {
519
+ // Server not ready — fall back to settings.json
520
+ }
521
+ // Fallback: read from settings.json (legacy, for startup before server is ready)
522
+ return readKeeperSettingsFromFile();
523
+ }
620
524
  function keeperSettingsChanged(a, b) {
621
525
  return a.maxRetries !== b.maxRetries || a.cooldownMs !== b.cooldownMs || a.client !== b.client;
622
526
  }
@@ -628,7 +532,7 @@ async function applyKeeperSettings() {
628
532
  try {
629
533
  if (CONFIG.mcpHttpPort <= 0)
630
534
  return;
631
- const allSettings = readAllKeeperSettings();
535
+ const allSettings = await readAllKeeperSettings();
632
536
  const desiredThreadIds = new Set(allSettings.map(s => s.threadId));
633
537
  // Stop keepers for threads that are no longer configured
634
538
  for (const [tid, entry] of keepers) {
@@ -680,42 +584,6 @@ function startKeeperPoller() {
680
584
  void applyKeeperSettings().catch((err) => log("ERROR", `Keeper settings poll failed: ${err}`));
681
585
  }, KEEPER_SETTINGS_POLL_MS);
682
586
  }
683
- const DAILY_ROTATION_HOUR = 4; // 4 AM local time
684
- function startDailyRotationTimer() {
685
- // Check every 5 minutes if it's time for daily rotation
686
- setInterval(async () => {
687
- const now = new Date();
688
- // Only trigger at the rotation hour (first 5-minute window)
689
- if (now.getHours() !== DAILY_ROTATION_HOUR || now.getMinutes() >= 5)
690
- return;
691
- try {
692
- log("INFO", "Starting daily session rotation...");
693
- const results = await rotateAllDailySessions();
694
- for (const result of results) {
695
- if (result.error) {
696
- log("WARN", `Daily rotation failed for root ${result.rootThreadId}: ${result.error}`);
697
- continue;
698
- }
699
- log("INFO", `Daily rotation complete for root ${result.rootThreadId}: consolidated=${result.consolidated}`);
700
- // Restart the keeper for this root thread to get fresh LLM context
701
- const entry = keepers.get(result.rootThreadId);
702
- if (entry) {
703
- log("INFO", `Restarting keeper for root ${result.rootThreadId} after daily rotation`);
704
- await entry.handle.stop();
705
- keepers.delete(result.rootThreadId);
706
- // applyKeeperSettings will restart it on the next poll cycle (within 2 min)
707
- }
708
- }
709
- if (results.length > 0) {
710
- // Force immediate keeper re-apply to restart stopped keepers
711
- await applyKeeperSettings();
712
- }
713
- }
714
- catch (err) {
715
- log("ERROR", `Daily rotation error: ${err instanceof Error ? err.message : String(err)}`);
716
- }
717
- }, 5 * 60_000); // Check every 5 minutes
718
- }
719
587
  // Main loop -------------------------------------------------------------------
720
588
  async function runLoop() {
721
589
  log("INFO", `Watcher starting in ${CONFIG.mode} mode.`);
@@ -734,7 +602,6 @@ async function runLoop() {
734
602
  startMcpServer();
735
603
  void applyKeeperSettings().catch((err) => log("ERROR", `Keeper failed to start: ${err}`));
736
604
  startKeeperPoller();
737
- startDailyRotationTimer();
738
605
  if (CONFIG.mode === "production") {
739
606
  while (true) {
740
607
  const ms = msUntilHour(CONFIG.pollAtHour);