sensorium-mcp 2.17.21 → 2.17.23

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.
Files changed (115) hide show
  1. package/dist/claude-keeper.d.ts.map +1 -1
  2. package/dist/claude-keeper.js +14 -10
  3. package/dist/claude-keeper.js.map +1 -1
  4. package/dist/daily-session.d.ts.map +1 -1
  5. package/dist/daily-session.js +6 -5
  6. package/dist/daily-session.js.map +1 -1
  7. package/dist/dashboard/routes/data.d.ts.map +1 -1
  8. package/dist/dashboard/routes/data.js +3 -2
  9. package/dist/dashboard/routes/data.js.map +1 -1
  10. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  11. package/dist/dashboard/routes/settings.js +9 -8
  12. package/dist/dashboard/routes/settings.js.map +1 -1
  13. package/dist/dashboard/routes/skills.d.ts.map +1 -1
  14. package/dist/dashboard/routes/skills.js +3 -2
  15. package/dist/dashboard/routes/skills.js.map +1 -1
  16. package/dist/dashboard/routes/templates.d.ts.map +1 -1
  17. package/dist/dashboard/routes/templates.js +12 -6
  18. package/dist/dashboard/routes/templates.js.map +1 -1
  19. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  20. package/dist/dashboard/routes/threads.js +3 -2
  21. package/dist/dashboard/routes/threads.js.map +1 -1
  22. package/dist/dashboard/routes/types.d.ts +1 -1
  23. package/dist/dashboard/routes/types.d.ts.map +1 -1
  24. package/dist/dashboard/routes/types.js +12 -2
  25. package/dist/dashboard/routes/types.js.map +1 -1
  26. package/dist/dashboard/routes.d.ts.map +1 -1
  27. package/dist/dashboard/routes.js +3 -2
  28. package/dist/dashboard/routes.js.map +1 -1
  29. package/dist/data/memory/bootstrap.js +5 -5
  30. package/dist/data/memory/bootstrap.js.map +1 -1
  31. package/dist/data/memory/consolidation.d.ts.map +1 -1
  32. package/dist/data/memory/consolidation.js +7 -103
  33. package/dist/data/memory/consolidation.js.map +1 -1
  34. package/dist/data/memory/episodes.d.ts.map +1 -1
  35. package/dist/data/memory/episodes.js +2 -1
  36. package/dist/data/memory/episodes.js.map +1 -1
  37. package/dist/data/memory/narrative.d.ts.map +1 -1
  38. package/dist/data/memory/narrative.js +2 -1
  39. package/dist/data/memory/narrative.js.map +1 -1
  40. package/dist/data/memory/reflection.d.ts.map +1 -1
  41. package/dist/data/memory/reflection.js +19 -93
  42. package/dist/data/memory/reflection.js.map +1 -1
  43. package/dist/data/memory/schema.d.ts.map +1 -1
  44. package/dist/data/memory/schema.js +7 -6
  45. package/dist/data/memory/schema.js.map +1 -1
  46. package/dist/data/memory/synthesis.d.ts.map +1 -1
  47. package/dist/data/memory/synthesis.js +2 -1
  48. package/dist/data/memory/synthesis.js.map +1 -1
  49. package/dist/data/memory/utils.d.ts +5 -0
  50. package/dist/data/memory/utils.d.ts.map +1 -1
  51. package/dist/data/memory/utils.js +95 -1
  52. package/dist/data/memory/utils.js.map +1 -1
  53. package/dist/data/templates.d.ts.map +1 -1
  54. package/dist/data/templates.js +5 -1
  55. package/dist/data/templates.js.map +1 -1
  56. package/dist/http-server.d.ts.map +1 -1
  57. package/dist/http-server.js +4 -5
  58. package/dist/http-server.js.map +1 -1
  59. package/dist/index.js +2 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/integrations/openai/chat.d.ts +1 -0
  62. package/dist/integrations/openai/chat.d.ts.map +1 -1
  63. package/dist/integrations/openai/chat.js +41 -27
  64. package/dist/integrations/openai/chat.js.map +1 -1
  65. package/dist/integrations/openai/speech.d.ts.map +1 -1
  66. package/dist/integrations/openai/speech.js +32 -42
  67. package/dist/integrations/openai/speech.js.map +1 -1
  68. package/dist/integrations/openai/voice-emotion.d.ts.map +1 -1
  69. package/dist/integrations/openai/voice-emotion.js +2 -1
  70. package/dist/integrations/openai/voice-emotion.js.map +1 -1
  71. package/dist/scheduler.js +3 -3
  72. package/dist/scheduler.js.map +1 -1
  73. package/dist/server/factory.js +1 -1
  74. package/dist/server/factory.js.map +1 -1
  75. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  76. package/dist/services/dispatcher/broker.js +31 -15
  77. package/dist/services/dispatcher/broker.js.map +1 -1
  78. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  79. package/dist/services/dispatcher/lock.js +16 -5
  80. package/dist/services/dispatcher/lock.js.map +1 -1
  81. package/dist/services/dispatcher/poller.js +1 -1
  82. package/dist/services/dispatcher/poller.js.map +1 -1
  83. package/dist/sessions.js +2 -2
  84. package/dist/sessions.js.map +1 -1
  85. package/dist/telegram.d.ts.map +1 -1
  86. package/dist/telegram.js +3 -2
  87. package/dist/telegram.js.map +1 -1
  88. package/dist/tools/memory-tools.js +2 -2
  89. package/dist/tools/memory-tools.js.map +1 -1
  90. package/dist/tools/session-tools.js +3 -3
  91. package/dist/tools/session-tools.js.map +1 -1
  92. package/dist/tools/start-session-tool.d.ts.map +1 -1
  93. package/dist/tools/start-session-tool.js +22 -28
  94. package/dist/tools/start-session-tool.js.map +1 -1
  95. package/dist/tools/thread-lifecycle.d.ts.map +1 -1
  96. package/dist/tools/thread-lifecycle.js +90 -125
  97. package/dist/tools/thread-lifecycle.js.map +1 -1
  98. package/dist/tools/utility-tools.d.ts.map +1 -1
  99. package/dist/tools/utility-tools.js +17 -5
  100. package/dist/tools/utility-tools.js.map +1 -1
  101. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  102. package/dist/tools/wait/drive-handler.js +6 -5
  103. package/dist/tools/wait/drive-handler.js.map +1 -1
  104. package/dist/tools/wait/message-delivery.js +3 -3
  105. package/dist/tools/wait/message-delivery.js.map +1 -1
  106. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  107. package/dist/tools/wait/message-processing.js +2 -1
  108. package/dist/tools/wait/message-processing.js.map +1 -1
  109. package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
  110. package/dist/tools/wait/reaction-handler.js +2 -1
  111. package/dist/tools/wait/reaction-handler.js.map +1 -1
  112. package/dist/watcher-service.d.ts.map +1 -1
  113. package/dist/watcher-service.js +12 -13
  114. package/dist/watcher-service.js.map +1 -1
  115. package/package.json +1 -1
@@ -130,38 +130,20 @@ export async function handleStartSession(args, ctx) {
130
130
  log.info(`[start_session] Lightweight reconnect for thread ${session.currentThreadId} — skipping briefing.`);
131
131
  }
132
132
  if (resolvedPreexisting) {
133
- if (!isReconnect) {
134
- // Drain any stale messages from the thread file so they aren't
135
- // re-delivered in the next wait_for_instructions call.
136
- const stale = readThreadMessages(session.currentThreadId);
137
- if (stale.length > 0) {
138
- log.info(`[start_session] Drained ${stale.length} stale message(s) from thread ${session.currentThreadId}.`);
139
- // Notify the operator that stale messages were discarded.
140
- try {
141
- const notice = convertMarkdown(`\u26A0\uFE0F **${stale.length} message(s) from before the session resumed were discarded.** ` +
142
- `If you sent instructions while the agent was offline, please resend them.`);
143
- await telegram.sendMessage(TELEGRAM_CHAT_ID, notice, "MarkdownV2", session.currentThreadId);
144
- }
145
- catch { /* non-fatal */ }
146
- }
147
- // Resume mode: verify the thread is still alive by sending a message.
148
- // If the topic was deleted, drop the cached mapping and fall through to
149
- // create a new topic.
133
+ // Topic health check: verify the Telegram topic still exists.
134
+ // Runs on EVERY session start (including reconnects) so deleted topics
135
+ // are detected and remapped promptly.
136
+ if (!startupNotificationSent) {
150
137
  try {
151
- // Use plain text for probe — avoids MarkdownV2 parsing failures being mistaken for dead threads
152
138
  await telegram.sendMessage(TELEGRAM_CHAT_ID, "\u{1F504} Session resumed. Continuing in this thread.", undefined, session.currentThreadId);
153
139
  startupNotificationSent = true;
154
140
  }
155
141
  catch (err) {
156
142
  const errMsg = errorMessage(err);
157
143
  log.warn(`[start_session] Probe failed for thread ${session.currentThreadId} in chat ${TELEGRAM_CHAT_ID}: ${errMsg}`);
158
- // Telegram returns "Bad Request: message thread not found" or
159
- // "Bad Request: the topic was closed" for deleted/closed topics.
160
144
  const isThreadGone = /thread not found|topic.*(closed|deleted|not found)/i.test(errMsg);
161
145
  if (isThreadGone) {
162
146
  log.info(`[start_session] Cached thread ${session.currentThreadId} is gone (${errMsg}). Creating replacement topic.`);
163
- // Create a replacement topic and remap — keeps the logical threadId intact
164
- // so memory, schedules, and keep-alive config are preserved.
165
147
  const topicName = customName ??
166
148
  `Copilot \u2014 ${new Date().toLocaleString("en-GB", {
167
149
  day: "2-digit", month: "short", year: "numeric",
@@ -170,15 +152,13 @@ export async function handleStartSession(args, ctx) {
170
152
  try {
171
153
  const newTopic = await telegram.createForumTopic(TELEGRAM_CHAT_ID, topicName);
172
154
  const newTopicId = newTopic.message_thread_id;
173
- log.info(`[start_session] Remapped thread ${session.currentThreadId} Telegram topic ${newTopicId}`);
174
- // Persist the mapping so future Telegram API calls resolve correctly
155
+ log.info(`[start_session] Remapped thread ${session.currentThreadId} \u2192 Telegram topic ${newTopicId}`);
175
156
  try {
176
157
  updateThread(getMemoryDb(), session.currentThreadId, { telegramTopicId: newTopicId });
177
158
  }
178
159
  catch (e) {
179
160
  log.warn(`[start_session] Failed to persist topic remap: ${e instanceof Error ? e.message : String(e)}`);
180
161
  }
181
- // Update session store so name-based lookups still find this thread
182
162
  if (customName)
183
163
  persistSession(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
184
164
  registerTopic(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
@@ -186,7 +166,6 @@ export async function handleStartSession(args, ctx) {
186
166
  }
187
167
  catch (createErr) {
188
168
  log.warn(`[start_session] Remap failed, falling back to new session: ${errorMessage(createErr)}`);
189
- // Drop the stale mapping and purge any scheduled tasks.
190
169
  if (session.currentThreadId !== undefined)
191
170
  purgeSchedules(session.currentThreadId);
192
171
  if (customName)
@@ -197,6 +176,21 @@ export async function handleStartSession(args, ctx) {
197
176
  }
198
177
  // Other errors (network, etc.) are non-fatal — proceed anyway.
199
178
  }
179
+ }
180
+ if (!isReconnect) {
181
+ // Drain any stale messages from the thread file so they aren't
182
+ // re-delivered in the next wait_for_instructions call.
183
+ const stale = readThreadMessages(session.currentThreadId);
184
+ if (stale.length > 0) {
185
+ log.info(`[start_session] Drained ${stale.length} stale message(s) from thread ${session.currentThreadId}.`);
186
+ // Notify the operator that stale messages were discarded.
187
+ try {
188
+ const notice = convertMarkdown(`\u26A0\uFE0F **${stale.length} message(s) from before the session resumed were discarded.** ` +
189
+ `If you sent instructions while the agent was offline, please resend them.`);
190
+ await telegram.sendMessage(TELEGRAM_CHAT_ID, notice, "MarkdownV2", session.currentThreadId);
191
+ }
192
+ catch { /* non-fatal */ }
193
+ }
200
194
  } // end if (!isReconnect)
201
195
  }
202
196
  if (!resolvedPreexisting) {
@@ -289,13 +283,13 @@ export async function handleStartSession(args, ctx) {
289
283
  }
290
284
  })
291
285
  .catch((err) => {
292
- log.error(`[memory] Startup consolidation error: ${err instanceof Error ? err.message : String(err)}`);
286
+ log.error(`[memory] Startup consolidation error: ${errorMessage(err)}`);
293
287
  });
294
288
  }
295
289
  }
296
290
  }
297
291
  catch (err) {
298
- log.debug(`[memory] Startup consolidation check failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
292
+ log.debug(`[memory] Startup consolidation check failed (non-fatal): ${errorMessage(err)}`);
299
293
  }
300
294
  } // end if (!isReconnect) for consolidation
301
295
  // Purge stale MCP sessions for this thread (from before a server restart)
@@ -1 +1 @@
1
- {"version":3,"file":"start-session-tool.js","sourceRoot":"","sources":["../../src/tools/start-session-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start-session-tool.js","sourceRoot":"","sources":["../../src/tools/start-session-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/thread-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/thread-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,22 @@ import { synthesizeGhostMemory } from "../memory.js";
15
15
  import { archiveThread, getAllThreads, getThread, resolveTelegramTopicId, updateThread } from "../data/memory/thread-registry.js";
16
16
  import { initMemoryDb } from "../data/memory/schema.js";
17
17
  import { errorMessage } from "../utils.js";
18
+ /** Env vars that must NOT leak to spawned agent processes. */
19
+ const ENV_DENYLIST = new Set([
20
+ "TELEGRAM_TOKEN", "TELEGRAM_CHAT_ID", "MCP_HTTP_SECRET",
21
+ "DASHBOARD_TOKEN", "MCP_START_COMMAND", "WATCHER_START_COMMAND",
22
+ ]);
23
+ /** Build a sanitized copy of process.env with secrets removed. */
24
+ function sanitizeSpawnEnv(extra) {
25
+ const env = {};
26
+ for (const [k, v] of Object.entries(process.env)) {
27
+ if (!ENV_DENYLIST.has(k))
28
+ env[k] = v;
29
+ }
30
+ if (extra)
31
+ Object.assign(env, extra);
32
+ return env;
33
+ }
18
34
  import { COPILOT_HOME_DIR, DEFAULT_COPILOT_MODEL, writeCopilotHomeFiles, ensureCopilotWorkspace, } from "./shared-agent-utils.js";
19
35
  // ---------------------------------------------------------------------------
20
36
  // In-memory registry of spawned processes
@@ -22,18 +38,7 @@ import { COPILOT_HOME_DIR, DEFAULT_COPILOT_MODEL, writeCopilotHomeFiles, ensureC
22
38
  const spawnedThreads = [];
23
39
  /** True while spawnKeepAliveThreads is killing stale PIDs — blocks concurrent spawns. */
24
40
  let startupCleanupInProgress = false;
25
- function parseTasklistPids(output) {
26
- const alive = new Set();
27
- for (const line of output.split(/\r?\n/)) {
28
- const trimmed = line.trim();
29
- if (!trimmed || /^INFO:/i.test(trimmed))
30
- continue;
31
- const match = trimmed.match(/\s+(\d+)\s+/);
32
- if (match)
33
- alive.add(Number(match[1]));
34
- }
35
- return alive;
36
- }
41
+ const MAX_CONCURRENT_THREADS = 20;
37
42
  /**
38
43
  * Check if a process with the given PID is still running.
39
44
  * Uses process.kill(pid, 0) which is non-blocking (microseconds).
@@ -94,12 +99,6 @@ export function findAliveThread(threadId) {
94
99
  export function isThreadRunning(threadId) {
95
100
  return findAliveThread(threadId) !== undefined;
96
101
  }
97
- /**
98
- * Return a shallow copy of all in-memory spawned thread entries.
99
- */
100
- function getAllSpawnedThreads() {
101
- return [...spawnedThreads];
102
- }
103
102
  // ---------------------------------------------------------------------------
104
103
  // Directory constants & helpers
105
104
  // ---------------------------------------------------------------------------
@@ -361,6 +360,43 @@ async function handleProcessExit(code, threadId, pid, pidFilePath, entry, proces
361
360
  }
362
361
  log.info(`[start_thread] ${processLabel} process PID=${pid} for thread ${threadId} exited with code ${code}`);
363
362
  }
363
+ /**
364
+ * Common post-spawn bookkeeping shared by all agent spawn functions:
365
+ * PID validation, PID file write, in-memory registry, exit handler, unref.
366
+ */
367
+ function registerSpawnedProcess(opts) {
368
+ const { child, threadId, name, logFilePath, configPath, agentLabel } = opts;
369
+ const pid = child.pid;
370
+ if (pid === undefined) {
371
+ return { error: `${agentLabel} process spawned but PID is undefined — spawn may have failed.` };
372
+ }
373
+ const pidFilePath = join(PIDS_DIR, `${threadId}.pid`);
374
+ try {
375
+ writeFileSync(pidFilePath, JSON.stringify({ pid, name, configPath, startedAt: Date.now() }), "utf-8");
376
+ }
377
+ catch (err) {
378
+ log.debug(`[start_thread] Failed to write PID file: ${errorMessage(err)}`);
379
+ }
380
+ const entry = {
381
+ pid,
382
+ threadId,
383
+ name,
384
+ startedAt: Date.now(),
385
+ createdAt: Date.now(),
386
+ logFile: logFilePath,
387
+ ...(opts.memorySourceThreadId !== undefined ? { memorySourceThreadId: opts.memorySourceThreadId } : {}),
388
+ ...(opts.memoryTargetThreadId !== undefined ? { memoryTargetThreadId: opts.memoryTargetThreadId } : {}),
389
+ ...(opts.threadType ? { threadType: opts.threadType } : {}),
390
+ };
391
+ spawnedThreads.push(entry);
392
+ child.on("exit", (code) => {
393
+ handleProcessExit(code, threadId, pid, pidFilePath, entry, agentLabel)
394
+ .catch(err => log.warn(`[exit] cleanup failed: ${err}`));
395
+ });
396
+ child.unref();
397
+ log.info(`[start_thread] Spawned ${agentLabel} process PID=${pid} for thread ${threadId} ("${name}")`);
398
+ return { pid, logFile: logFilePath };
399
+ }
364
400
  // ---------------------------------------------------------------------------
365
401
  // Spawn agent process
366
402
  // ---------------------------------------------------------------------------
@@ -368,6 +404,9 @@ export function spawnAgentProcess(claudePath, mcpConfigPath, name, threadId, wor
368
404
  if (startupCleanupInProgress) {
369
405
  return { error: "Server startup cleanup in progress — try again in a few seconds" };
370
406
  }
407
+ if (spawnedThreads.length >= MAX_CONCURRENT_THREADS) {
408
+ return { error: `Concurrent thread limit reached (${MAX_CONCURRENT_THREADS}). Wait for existing threads to finish.` };
409
+ }
371
410
  if (workingDirectory && !existsSync(workingDirectory)) {
372
411
  const fallback = tmpdir();
373
412
  log.warn(`workingDirectory "${workingDirectory}" does not exist, falling back to "${fallback}"`);
@@ -396,13 +435,10 @@ export function spawnAgentProcess(claudePath, mcpConfigPath, name, threadId, wor
396
435
  // Use shell only when the resolved path is a Windows batch script (.cmd/.bat)
397
436
  const needsShell = process.platform === "win32" && /\.(cmd|bat)$/i.test(claudePath);
398
437
  // On Windows, ensure CLAUDE_CODE_GIT_BASH_PATH is set for the child process.
399
- const spawnEnv = { ...process.env };
400
- if (memorySourceThreadId !== undefined) {
401
- spawnEnv.MEMORY_SOURCE_THREAD_ID = String(memorySourceThreadId);
402
- }
403
- if (memoryTargetThreadId !== undefined) {
404
- spawnEnv.MEMORY_TARGET_THREAD_ID = String(memoryTargetThreadId);
405
- }
438
+ const spawnEnv = sanitizeSpawnEnv({
439
+ ...(memorySourceThreadId !== undefined ? { MEMORY_SOURCE_THREAD_ID: String(memorySourceThreadId) } : {}),
440
+ ...(memoryTargetThreadId !== undefined ? { MEMORY_TARGET_THREAD_ID: String(memoryTargetThreadId) } : {}),
441
+ });
406
442
  if (process.platform === "win32" && !spawnEnv.CLAUDE_CODE_GIT_BASH_PATH) {
407
443
  const gitBashCandidates = [
408
444
  join(homedir(), "AppData", "Local", "Programs", "Git", "bin", "bash.exe"),
@@ -434,38 +470,12 @@ export function spawnAgentProcess(claudePath, mcpConfigPath, name, threadId, wor
434
470
  }
435
471
  // Release the parent's copy of the log file descriptor
436
472
  closeSync(logFd);
437
- const pid = child.pid;
438
- if (pid === undefined) {
439
- return { error: "Claude process spawned but PID is undefined — spawn may have failed." };
440
- }
441
- // Write PID file with metadata for tracking and re-spawn after updates
442
- const pidFilePath = join(PIDS_DIR, `${threadId}.pid`);
443
- try {
444
- const pidMeta = { pid, name, configPath: effectiveConfigPath, startedAt: Date.now() };
445
- writeFileSync(pidFilePath, JSON.stringify(pidMeta), "utf-8");
446
- }
447
- catch (err) {
448
- log.debug(`[start_thread] Failed to write PID file: ${errorMessage(err)}`);
449
- }
450
- // Track spawned process
451
- const entry = {
452
- pid,
453
- threadId,
454
- name,
455
- startedAt: Date.now(),
456
- createdAt: Date.now(),
457
- logFile: logFilePath,
458
- ...(memorySourceThreadId !== undefined ? { memorySourceThreadId } : {}),
459
- ...(memoryTargetThreadId !== undefined ? { memoryTargetThreadId } : {}),
460
- ...(threadType ? { threadType } : {}),
461
- };
462
- spawnedThreads.push(entry);
463
- // Monitor process exit — clean up stale entries, PID file, update DB, and log health info
464
- child.on("exit", (code) => { handleProcessExit(code, threadId, pid, pidFilePath, entry, "Claude").catch(err => log.warn(`[exit] cleanup failed: ${err}`)); });
465
- // Unref so the parent process can exit without waiting for this child.
466
- child.unref();
467
- log.info(`[start_thread] Spawned Claude process PID=${pid} for thread ${threadId} ("${name}")`);
468
- return { pid, logFile: logFilePath };
473
+ return registerSpawnedProcess({
474
+ child, threadId, name, logFilePath,
475
+ configPath: effectiveConfigPath,
476
+ agentLabel: "Claude",
477
+ memorySourceThreadId, memoryTargetThreadId, threadType,
478
+ });
469
479
  }
470
480
  /**
471
481
  * Spawn a GitHub Copilot agent process for the given thread.
@@ -505,10 +515,10 @@ export function spawnCopilotProcess(copilotPath, name, threadId, workingDirector
505
515
  "--model", copilotModel,
506
516
  "--autopilot",
507
517
  ];
508
- const spawnEnv = { ...process.env, COPILOT_HOME: copilotHomeDir };
509
- if (memorySourceThreadId !== undefined) {
510
- spawnEnv.MEMORY_SOURCE_THREAD_ID = String(memorySourceThreadId);
511
- }
518
+ const spawnEnv = sanitizeSpawnEnv({
519
+ COPILOT_HOME: copilotHomeDir,
520
+ ...(memorySourceThreadId !== undefined ? { MEMORY_SOURCE_THREAD_ID: String(memorySourceThreadId) } : {}),
521
+ });
512
522
  // Use shell only when the resolved path is a Windows batch script (.cmd/.bat).
513
523
  // copilot.exe is a direct executable and does not need shell wrapping — shell
514
524
  // wrapping on Windows breaks stdio fd inheritance causing empty log files.
@@ -529,33 +539,12 @@ export function spawnCopilotProcess(copilotPath, name, threadId, workingDirector
529
539
  return { error: `Failed to spawn Copilot process: ${errorMessage(err)}` };
530
540
  }
531
541
  closeSync(logFd);
532
- const pid = child.pid;
533
- if (pid === undefined) {
534
- return { error: "Copilot process spawned but PID is undefined — spawn may have failed." };
535
- }
536
- const pidFilePath = join(PIDS_DIR, `${threadId}.pid`);
537
- try {
538
- const pidMeta = { pid, name, configPath: copilotHomeDir, startedAt: Date.now() };
539
- writeFileSync(pidFilePath, JSON.stringify(pidMeta), "utf-8");
540
- }
541
- catch (err) {
542
- log.debug(`[start_thread] Failed to write PID file: ${errorMessage(err)}`);
543
- }
544
- const entry = {
545
- pid,
546
- threadId,
547
- name,
548
- startedAt: Date.now(),
549
- createdAt: Date.now(),
550
- logFile: logFilePath,
551
- ...(memorySourceThreadId !== undefined ? { memorySourceThreadId } : {}),
552
- ...(threadType ? { threadType } : {}),
553
- };
554
- spawnedThreads.push(entry);
555
- child.on("exit", (code) => { handleProcessExit(code, threadId, pid, pidFilePath, entry, "Copilot").catch(err => log.warn(`[exit] cleanup failed: ${err}`)); });
556
- child.unref();
557
- log.info(`[start_thread] Spawned Copilot process PID=${pid} for thread ${threadId} ("${name}")`);
558
- return { pid, logFile: logFilePath };
542
+ return registerSpawnedProcess({
543
+ child, threadId, name, logFilePath,
544
+ configPath: copilotHomeDir,
545
+ agentLabel: "Copilot",
546
+ memorySourceThreadId, threadType,
547
+ });
559
548
  }
560
549
  /**
561
550
  * Spawn an OpenAI Codex CLI agent process for the given thread.
@@ -609,14 +598,11 @@ export function spawnCodexProcess(codexPath, name, threadId, workingDirectory, m
609
598
  if (workingDirectory) {
610
599
  cliArgs.splice(1, 0, "-C", workingDirectory);
611
600
  }
612
- const spawnEnv = { ...process.env };
613
- if (memorySourceThreadId !== undefined) {
614
- spawnEnv.MEMORY_SOURCE_THREAD_ID = String(memorySourceThreadId);
615
- }
616
- // Forward MCP secret so codex's bearer_token_env_var can reference it
617
- if (httpSecret) {
618
- spawnEnv.SENSORIUM_MCP_SECRET = httpSecret;
619
- }
601
+ const spawnEnv = sanitizeSpawnEnv({
602
+ ...(memorySourceThreadId !== undefined ? { MEMORY_SOURCE_THREAD_ID: String(memorySourceThreadId) } : {}),
603
+ // Forward MCP secret so codex's bearer_token_env_var can reference it
604
+ ...(httpSecret ? { SENSORIUM_MCP_SECRET: httpSecret } : {}),
605
+ });
620
606
  const logFd = openSync(logFilePath, "a");
621
607
  let child;
622
608
  try {
@@ -671,33 +657,12 @@ export function spawnCodexProcess(codexPath, name, threadId, workingDirectory, m
671
657
  child.stdin?.end();
672
658
  }
673
659
  catch { /* process may have already exited */ }
674
- const pid = child.pid;
675
- if (pid === undefined) {
676
- return { error: "Codex process spawned but PID is undefined — spawn may have failed." };
677
- }
678
- const pidFilePath = join(PIDS_DIR, `${threadId}.pid`);
679
- try {
680
- const pidMeta = { pid, name, configPath: CODEX_HOME_DIR, startedAt: Date.now() };
681
- writeFileSync(pidFilePath, JSON.stringify(pidMeta), "utf-8");
682
- }
683
- catch (err) {
684
- log.debug(`[start_thread] Failed to write PID file: ${errorMessage(err)}`);
685
- }
686
- const entry = {
687
- pid,
688
- threadId,
689
- name,
690
- startedAt: Date.now(),
691
- createdAt: Date.now(),
692
- logFile: logFilePath,
693
- ...(memorySourceThreadId !== undefined ? { memorySourceThreadId } : {}),
694
- ...(threadType ? { threadType } : {}),
695
- };
696
- spawnedThreads.push(entry);
697
- child.on("exit", (code) => { handleProcessExit(code, threadId, pid, pidFilePath, entry, "Codex").catch(err => log.warn(`[exit] cleanup failed: ${err}`)); });
698
- child.unref();
699
- log.info(`[start_thread] Spawned Codex process PID=${pid} for thread ${threadId} ("${name}")`);
700
- return { pid, logFile: logFilePath };
660
+ return registerSpawnedProcess({
661
+ child, threadId, name, logFilePath,
662
+ configPath: CODEX_HOME_DIR,
663
+ agentLabel: "Codex",
664
+ memorySourceThreadId, threadType,
665
+ });
701
666
  }
702
667
  /**
703
668
  * Read all PID files from the pids directory.
@@ -894,7 +859,7 @@ export async function cleanupExpiredWorkers(db, telegram, chatId, ttlMs = DEFAUL
894
859
  result.cleaned++;
895
860
  }
896
861
  catch (err) {
897
- result.errors.push(`Thread ${thread.threadId}: ${err instanceof Error ? err.message : String(err)}`);
862
+ result.errors.push(`Thread ${thread.threadId}: ${errorMessage(err)}`);
898
863
  }
899
864
  }
900
865
  // Also clean stale workers from thread_registry (survives server restarts)
@@ -988,7 +953,7 @@ function formatUptime(startedAt) {
988
953
  function collectThreadData() {
989
954
  const topicsByChat = getAllRegisteredTopics();
990
955
  const sessions = getDashboardSessions();
991
- const spawned = getAllSpawnedThreads();
956
+ const spawned = [...spawnedThreads];
992
957
  const pidFiles = readPidFiles();
993
958
  const now = Date.now();
994
959
  // 5th source: persistent thread_registry DB