sensorium-mcp 2.17.27 → 3.0.0

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 (224) hide show
  1. package/Install-Sensorium.ps1 +327 -0
  2. package/README.md +14 -0
  3. package/dist/config.d.ts +16 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +39 -2
  6. package/dist/config.js.map +1 -1
  7. package/dist/daily-session.d.ts +2 -1
  8. package/dist/daily-session.d.ts.map +1 -1
  9. package/dist/daily-session.js +23 -26
  10. package/dist/daily-session.js.map +1 -1
  11. package/dist/dashboard/routes/settings.d.ts +4 -0
  12. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  13. package/dist/dashboard/routes/settings.js +57 -1
  14. package/dist/dashboard/routes/settings.js.map +1 -1
  15. package/dist/dashboard/routes/threads.d.ts +1 -0
  16. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  17. package/dist/dashboard/routes/threads.js +23 -27
  18. package/dist/dashboard/routes/threads.js.map +1 -1
  19. package/dist/dashboard/routes.d.ts.map +1 -1
  20. package/dist/dashboard/routes.js +7 -2
  21. package/dist/dashboard/routes.js.map +1 -1
  22. package/dist/dashboard/spa.html +11 -11
  23. package/dist/data/interfaces.d.ts +36 -0
  24. package/dist/data/interfaces.d.ts.map +1 -0
  25. package/dist/data/interfaces.js +2 -0
  26. package/dist/data/interfaces.js.map +1 -0
  27. package/dist/data/memory/bootstrap.d.ts +36 -16
  28. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  29. package/dist/data/memory/bootstrap.js +71 -217
  30. package/dist/data/memory/bootstrap.js.map +1 -1
  31. package/dist/data/memory/consolidation.d.ts +35 -34
  32. package/dist/data/memory/consolidation.d.ts.map +1 -1
  33. package/dist/data/memory/consolidation.js +43 -555
  34. package/dist/data/memory/consolidation.js.map +1 -1
  35. package/dist/data/memory/index.d.ts +0 -1
  36. package/dist/data/memory/index.d.ts.map +1 -1
  37. package/dist/data/memory/index.js +0 -1
  38. package/dist/data/memory/index.js.map +1 -1
  39. package/dist/data/memory/migration-runner.d.ts +5 -0
  40. package/dist/data/memory/migration-runner.d.ts.map +1 -0
  41. package/dist/data/memory/migration-runner.js +403 -0
  42. package/dist/data/memory/migration-runner.js.map +1 -0
  43. package/dist/data/memory/reflection.js +1 -1
  44. package/dist/data/memory/schema-ddl.d.ts +4 -0
  45. package/dist/data/memory/schema-ddl.d.ts.map +1 -0
  46. package/dist/data/memory/schema-ddl.js +194 -0
  47. package/dist/data/memory/schema-ddl.js.map +1 -0
  48. package/dist/data/memory/schema-guard.d.ts +3 -0
  49. package/dist/data/memory/schema-guard.d.ts.map +1 -0
  50. package/dist/data/memory/schema-guard.js +184 -0
  51. package/dist/data/memory/schema-guard.js.map +1 -0
  52. package/dist/data/memory/schema.d.ts +2 -5
  53. package/dist/data/memory/schema.d.ts.map +1 -1
  54. package/dist/data/memory/schema.js +6 -834
  55. package/dist/data/memory/schema.js.map +1 -1
  56. package/dist/data/memory/semantic.d.ts +0 -1
  57. package/dist/data/memory/semantic.d.ts.map +1 -1
  58. package/dist/data/memory/semantic.js +2 -8
  59. package/dist/data/memory/semantic.js.map +1 -1
  60. package/dist/data/memory/synthesis.js +2 -2
  61. package/dist/data/memory/synthesis.js.map +1 -1
  62. package/dist/data/memory/thread-registry.d.ts +18 -4
  63. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  64. package/dist/data/memory/thread-registry.js +25 -0
  65. package/dist/data/memory/thread-registry.js.map +1 -1
  66. package/dist/data/sent-message.repository.d.ts +12 -0
  67. package/dist/data/sent-message.repository.d.ts.map +1 -0
  68. package/dist/data/sent-message.repository.js +31 -0
  69. package/dist/data/sent-message.repository.js.map +1 -0
  70. package/dist/http-server.d.ts.map +1 -1
  71. package/dist/http-server.js +23 -2
  72. package/dist/http-server.js.map +1 -1
  73. package/dist/index.js +27 -48
  74. package/dist/index.js.map +1 -1
  75. package/dist/logger.d.ts +7 -2
  76. package/dist/logger.d.ts.map +1 -1
  77. package/dist/logger.js +89 -12
  78. package/dist/logger.js.map +1 -1
  79. package/dist/scheduler.d.ts +8 -0
  80. package/dist/scheduler.d.ts.map +1 -1
  81. package/dist/scheduler.js +15 -0
  82. package/dist/scheduler.js.map +1 -1
  83. package/dist/server/factory.d.ts +2 -1
  84. package/dist/server/factory.d.ts.map +1 -1
  85. package/dist/server/factory.js +11 -4
  86. package/dist/server/factory.js.map +1 -1
  87. package/dist/services/agent-spawn.service.d.ts +39 -0
  88. package/dist/services/agent-spawn.service.d.ts.map +1 -0
  89. package/dist/services/agent-spawn.service.js +348 -0
  90. package/dist/services/agent-spawn.service.js.map +1 -0
  91. package/dist/services/background-runner.d.ts +26 -0
  92. package/dist/services/background-runner.d.ts.map +1 -0
  93. package/dist/services/background-runner.js +71 -0
  94. package/dist/services/background-runner.js.map +1 -0
  95. package/dist/services/consolidation.service.d.ts +16 -0
  96. package/dist/services/consolidation.service.d.ts.map +1 -0
  97. package/dist/services/consolidation.service.js +508 -0
  98. package/dist/services/consolidation.service.js.map +1 -0
  99. package/dist/services/dispatcher/broker.d.ts +2 -0
  100. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  101. package/dist/services/dispatcher/broker.js +5 -10
  102. package/dist/services/dispatcher/broker.js.map +1 -1
  103. package/dist/services/dispatcher/index.d.ts +1 -1
  104. package/dist/services/dispatcher/index.d.ts.map +1 -1
  105. package/dist/services/dispatcher/index.js +1 -1
  106. package/dist/services/dispatcher/index.js.map +1 -1
  107. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  108. package/dist/services/dispatcher/lock.js +7 -11
  109. package/dist/services/dispatcher/lock.js.map +1 -1
  110. package/dist/services/maintenance-signal.d.ts +18 -0
  111. package/dist/services/maintenance-signal.d.ts.map +1 -0
  112. package/dist/services/maintenance-signal.js +48 -0
  113. package/dist/services/maintenance-signal.js.map +1 -0
  114. package/dist/services/memory-briefing.service.d.ts +4 -0
  115. package/dist/services/memory-briefing.service.d.ts.map +1 -0
  116. package/dist/services/memory-briefing.service.js +143 -0
  117. package/dist/services/memory-briefing.service.js.map +1 -0
  118. package/dist/services/process.service.d.ts +31 -0
  119. package/dist/services/process.service.d.ts.map +1 -0
  120. package/dist/services/process.service.js +100 -0
  121. package/dist/services/process.service.js.map +1 -0
  122. package/dist/services/thread-health.service.d.ts +18 -0
  123. package/dist/services/thread-health.service.d.ts.map +1 -0
  124. package/dist/services/thread-health.service.js +118 -0
  125. package/dist/services/thread-health.service.js.map +1 -0
  126. package/dist/services/thread-lifecycle.service.d.ts +52 -0
  127. package/dist/services/thread-lifecycle.service.d.ts.map +1 -0
  128. package/dist/services/thread-lifecycle.service.js +174 -0
  129. package/dist/services/thread-lifecycle.service.js.map +1 -0
  130. package/dist/services/topic.service.d.ts +25 -0
  131. package/dist/services/topic.service.d.ts.map +1 -0
  132. package/dist/services/topic.service.js +65 -0
  133. package/dist/services/topic.service.js.map +1 -0
  134. package/dist/services/worker-cleanup.service.d.ts +8 -0
  135. package/dist/services/worker-cleanup.service.d.ts.map +1 -0
  136. package/dist/services/worker-cleanup.service.js +82 -0
  137. package/dist/services/worker-cleanup.service.js.map +1 -0
  138. package/dist/sessions.d.ts +14 -0
  139. package/dist/sessions.d.ts.map +1 -1
  140. package/dist/sessions.js +55 -0
  141. package/dist/sessions.js.map +1 -1
  142. package/dist/telegram.d.ts +13 -6
  143. package/dist/telegram.d.ts.map +1 -1
  144. package/dist/telegram.js +43 -14
  145. package/dist/telegram.js.map +1 -1
  146. package/dist/tools/defs/memory-defs.d.ts.map +1 -1
  147. package/dist/tools/defs/memory-defs.js +0 -19
  148. package/dist/tools/defs/memory-defs.js.map +1 -1
  149. package/dist/tools/delegate-tool.d.ts +4 -0
  150. package/dist/tools/delegate-tool.d.ts.map +1 -1
  151. package/dist/tools/delegate-tool.js +48 -109
  152. package/dist/tools/delegate-tool.js.map +1 -1
  153. package/dist/tools/memory-tools.d.ts.map +1 -1
  154. package/dist/tools/memory-tools.js +1 -16
  155. package/dist/tools/memory-tools.js.map +1 -1
  156. package/dist/tools/shared-agent-utils.d.ts +9 -1
  157. package/dist/tools/shared-agent-utils.d.ts.map +1 -1
  158. package/dist/tools/shared-agent-utils.js +24 -42
  159. package/dist/tools/shared-agent-utils.js.map +1 -1
  160. package/dist/tools/start-session-tool.d.ts +2 -0
  161. package/dist/tools/start-session-tool.d.ts.map +1 -1
  162. package/dist/tools/start-session-tool.js +66 -106
  163. package/dist/tools/start-session-tool.js.map +1 -1
  164. package/dist/tools/thread-lifecycle.d.ts +5 -127
  165. package/dist/tools/thread-lifecycle.d.ts.map +1 -1
  166. package/dist/tools/thread-lifecycle.js +5 -1163
  167. package/dist/tools/thread-lifecycle.js.map +1 -1
  168. package/dist/tools/utility-tools.js +5 -2
  169. package/dist/tools/utility-tools.js.map +1 -1
  170. package/dist/tools/wait/drive-handler.d.ts +0 -1
  171. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  172. package/dist/tools/wait/drive-handler.js +5 -22
  173. package/dist/tools/wait/drive-handler.js.map +1 -1
  174. package/dist/tools/wait/message-delivery.js +1 -1
  175. package/dist/tools/wait/message-delivery.js.map +1 -1
  176. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  177. package/dist/tools/wait/message-processing.js +9 -8
  178. package/dist/tools/wait/message-processing.js.map +1 -1
  179. package/dist/tools/wait/poll-loop.d.ts +2 -0
  180. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  181. package/dist/tools/wait/poll-loop.js +27 -29
  182. package/dist/tools/wait/poll-loop.js.map +1 -1
  183. package/dist/tools/wait/task-handler.d.ts +0 -3
  184. package/dist/tools/wait/task-handler.d.ts.map +1 -1
  185. package/dist/tools/wait/task-handler.js +3 -2
  186. package/dist/tools/wait/task-handler.js.map +1 -1
  187. package/dist/types.d.ts +0 -1
  188. package/dist/types.d.ts.map +1 -1
  189. package/package.json +4 -8
  190. package/supervisor/config.go +182 -69
  191. package/supervisor/config_test.go +78 -0
  192. package/supervisor/go.mod +12 -0
  193. package/supervisor/go.sum +20 -0
  194. package/supervisor/health.go +60 -11
  195. package/supervisor/health_test.go +29 -0
  196. package/supervisor/keeper.go +15 -10
  197. package/supervisor/log.go +109 -28
  198. package/supervisor/log_test.go +86 -6
  199. package/supervisor/main.go +150 -19
  200. package/supervisor/main_test.go +130 -0
  201. package/supervisor/process.go +47 -4
  202. package/supervisor/process_test.go +14 -0
  203. package/supervisor/secrets.go +95 -0
  204. package/supervisor/secrets_securevault_test.go +98 -0
  205. package/supervisor/secrets_test.go +119 -0
  206. package/supervisor/self_update.go +282 -0
  207. package/supervisor/self_update_test.go +177 -0
  208. package/supervisor/service_restart_stub.go +9 -0
  209. package/supervisor/service_restart_windows.go +63 -0
  210. package/supervisor/service_stub.go +15 -0
  211. package/supervisor/service_windows.go +216 -0
  212. package/supervisor/update_state.go +264 -0
  213. package/supervisor/update_state_test.go +306 -0
  214. package/supervisor/updater.go +311 -10
  215. package/supervisor/updater_test.go +64 -0
  216. package/dist/data/memory/quality-scoring.d.ts +0 -32
  217. package/dist/data/memory/quality-scoring.d.ts.map +0 -1
  218. package/dist/data/memory/quality-scoring.js +0 -182
  219. package/dist/data/memory/quality-scoring.js.map +0 -1
  220. package/scripts/install-supervisor.ps1 +0 -67
  221. package/scripts/install-supervisor.sh +0 -43
  222. package/scripts/start-supervisor.ps1 +0 -46
  223. package/scripts/start-supervisor.sh +0 -20
  224. package/templates/coding-task.default.md +0 -12
@@ -5,40 +5,30 @@
5
5
  * bootstraps memory, auto-schedules DMN reflection, and returns the
6
6
  * session greeting with reminders.
7
7
  */
8
- import { getMemorySourceThreadId, setThreadAgentType } from "../config.js";
8
+ import { getEffectiveAutonomousMode, getMemorySourceThreadId, setThreadAgentType } from "../config.js";
9
+ import { parsePositiveInt, parseAgentType } from "./shared-agent-utils.js";
9
10
  import { convertMarkdown } from "../markdown.js";
10
- import { assembleBootstrap, runConsolidationAllThreads } from "../memory.js";
11
- import { addSchedule, generateTaskId, listSchedules, purgeSchedules } from "../scheduler.js";
12
- import { lookupSession, persistSession, purgeOtherSessions, registerMcpSession, removeSession, lookupTopicRegistry, registerTopic, } from "../sessions.js";
11
+ import { assembleBootstrap } from "../services/memory-briefing.service.js";
12
+ import { runConsolidationAllThreads } from "../services/consolidation.service.js";
13
+ import { addSchedule, generateTaskId, listSchedules } from "../scheduler.js";
14
+ import { purgeOtherSessions, registerMcpSession, } from "../sessions.js";
13
15
  import { log } from "../logger.js";
14
16
  import { errorMessage, errorResult } from "../utils.js";
15
17
  import { readThreadMessages } from "../dispatcher.js";
16
- import { getThread, registerThread, updateThread } from "../data/memory/thread-registry.js";
18
+ import { getThread, getThreadByName } from "../data/memory/thread-registry.js";
19
+ import { createManagedTopic, probeOrRemapTopic } from "../services/topic.service.js";
17
20
  /** Consolidation fires at session start when unconsolidated episodes exceed this. */
18
21
  const STARTUP_CONSOLIDATION_THRESHOLD = 20;
19
22
  // ---------------------------------------------------------------------------
20
23
  // Handler
21
24
  // ---------------------------------------------------------------------------
22
25
  export async function handleStartSession(args, ctx) {
23
- const { session, telegram, telegramChatId: TELEGRAM_CHAT_ID, config, getMemoryDb } = ctx;
24
- const typedArgs = args;
25
- const rawThreadId = typedArgs.threadId;
26
- const parseThreadId = (value) => {
27
- const parsed = typeof value === "number" ? value
28
- : typeof value === "string" ? Number(value)
29
- : Number.NaN;
30
- return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
31
- };
32
- const explicitThreadId = parseThreadId(rawThreadId);
33
- const customName = typeof typedArgs.name === "string" && typedArgs.name.trim()
34
- ? typedArgs.name.trim()
35
- : undefined;
36
- const rawAgentType = typeof typedArgs.agentType === "string" ? typedArgs.agentType.trim() : "";
37
- const agentType = rawAgentType === "copilot" || rawAgentType === "copilot_claude" || rawAgentType === "copilot_codex"
38
- || rawAgentType === "claude" || rawAgentType === "cursor"
39
- || rawAgentType === "codex" || rawAgentType === "openai_codex"
40
- ? rawAgentType
26
+ const { session, telegram, telegramChatId: TELEGRAM_CHAT_ID, config, getMemoryDb, threadLifecycle } = ctx;
27
+ const explicitThreadId = parsePositiveInt(args.threadId);
28
+ const customName = typeof args.name === "string" && args.name.trim()
29
+ ? args.name.trim()
41
30
  : undefined;
31
+ const agentType = parseAgentType(args.agentType);
42
32
  // ── Re-entry guard ────────────────────────────────────────────────────
43
33
  // If the requested thread is already the active session AND the full
44
34
  // bootstrap already ran in THIS process lifetime, return early without
@@ -52,7 +42,7 @@ export async function handleStartSession(args, ctx) {
52
42
  log.info(`[start_session] Thread ${explicitThreadId} is already the active session — skipping reinitialization.`);
53
43
  // Include reminders + wait directive so the agent doesn't stall after
54
44
  // a duplicate start_session call (e.g. post-update context replay).
55
- const reminders = ctx.getReminders(explicitThreadId, session.sessionStartedAt, config.AUTONOMOUS_MODE);
45
+ const reminders = ctx.getReminders(explicitThreadId, session.sessionStartedAt, getEffectiveAutonomousMode(explicitThreadId));
56
46
  const endDirective = `\n\n**⚠️ ACTION REQUIRED: Call the \`remote_copilot_wait_for_instructions\` tool NOW with threadId=${explicitThreadId}. Do NOT stop or end your turn.**`;
57
47
  return {
58
48
  content: [
@@ -87,36 +77,24 @@ export async function handleStartSession(args, ctx) {
87
77
  let startupNotificationSent = false;
88
78
  if (explicitThreadId !== undefined) {
89
79
  session.currentThreadId = explicitThreadId;
90
- // If a name was also supplied, keep the mapping up to date.
91
- if (customName)
92
- persistSession(TELEGRAM_CHAT_ID, customName, explicitThreadId);
93
80
  resolvedPreexisting = true;
94
81
  }
95
82
  else if (customName !== undefined) {
96
- const stored = lookupSession(TELEGRAM_CHAT_ID, customName);
97
- if (stored !== undefined) {
98
- session.currentThreadId = stored;
83
+ const existingThread = getThreadByName(getMemoryDb(), customName);
84
+ if (existingThread) {
85
+ session.currentThreadId = existingThread.threadId;
99
86
  resolvedPreexisting = true;
100
87
  }
101
- else {
102
- // Fallback: check the operator-managed topic registry
103
- const registryId = lookupTopicRegistry(TELEGRAM_CHAT_ID, customName);
104
- if (registryId !== undefined) {
105
- session.currentThreadId = registryId;
106
- // Promote to session store for future fast lookups
107
- persistSession(TELEGRAM_CHAT_ID, customName, registryId);
108
- resolvedPreexisting = true;
109
- }
110
- }
111
88
  }
112
- // Lightweight reconnect: if the thread is pre-existing AND was recently
113
- // active (within 5 minutes), this is likely a context reset within the same
114
- // process skip the heavy bootstrap (no stale message drain, no Telegram
115
- // notification, no 38K+ memory briefing). A genuinely dead thread that
116
- // hasn't been active in > 5 minutes gets the full briefing.
89
+ // Lightweight reconnect: if the thread is pre-existing, was recently active
90
+ // (within 5 minutes), AND we've already completed a full bootstrap in this
91
+ // process (sessionFullyInitialized), this is a context reset skip the
92
+ // heavy bootstrap. The sessionFullyInitialized guard ensures a server
93
+ // restart always delivers the full briefing even when lastActiveAt is fresh
94
+ // from the previous process's heartbeat.
117
95
  const RECONNECT_WINDOW_MS = 5 * 60 * 1000;
118
96
  let isReconnect = false;
119
- if (resolvedPreexisting && session.currentThreadId !== undefined) {
97
+ if (resolvedPreexisting && session.currentThreadId !== undefined && session.sessionFullyInitialized) {
120
98
  try {
121
99
  const threadEntry = getThread(getMemoryDb(), session.currentThreadId);
122
100
  if (threadEntry?.lastActiveAt) {
@@ -135,7 +113,20 @@ export async function handleStartSession(args, ctx) {
135
113
  // are detected and remapped promptly.
136
114
  if (!startupNotificationSent) {
137
115
  try {
138
- await telegram.sendMessage(TELEGRAM_CHAT_ID, "\u{1F504} Session resumed. Continuing in this thread.", undefined, session.currentThreadId);
116
+ await probeOrRemapTopic({
117
+ telegram,
118
+ chatId: TELEGRAM_CHAT_ID,
119
+ logicalThreadId: session.currentThreadId,
120
+ topicName: customName ??
121
+ `Copilot — ${new Date().toLocaleString("en-GB", {
122
+ day: "2-digit", month: "short", year: "numeric",
123
+ hour: "2-digit", minute: "2-digit", hour12: false,
124
+ })}`,
125
+ db: getMemoryDb(),
126
+ threadLifecycle,
127
+ aliases: customName ? [customName] : [],
128
+ probeText: "\u{1F504} Session resumed. Continuing in this thread.",
129
+ });
139
130
  startupNotificationSent = true;
140
131
  }
141
132
  catch (err) {
@@ -143,36 +134,7 @@ export async function handleStartSession(args, ctx) {
143
134
  log.warn(`[start_session] Probe failed for thread ${session.currentThreadId} in chat ${TELEGRAM_CHAT_ID}: ${errMsg}`);
144
135
  const isThreadGone = /thread not found|topic.*(closed|deleted|not found)/i.test(errMsg);
145
136
  if (isThreadGone) {
146
- log.info(`[start_session] Cached thread ${session.currentThreadId} is gone (${errMsg}). Creating replacement topic.`);
147
- const topicName = customName ??
148
- `Copilot \u2014 ${new Date().toLocaleString("en-GB", {
149
- day: "2-digit", month: "short", year: "numeric",
150
- hour: "2-digit", minute: "2-digit", hour12: false,
151
- })}`;
152
- try {
153
- const newTopic = await telegram.createForumTopic(TELEGRAM_CHAT_ID, topicName);
154
- const newTopicId = newTopic.message_thread_id;
155
- log.info(`[start_session] Remapped thread ${session.currentThreadId} \u2192 Telegram topic ${newTopicId}`);
156
- try {
157
- updateThread(getMemoryDb(), session.currentThreadId, { telegramTopicId: newTopicId });
158
- }
159
- catch (e) {
160
- log.warn(`[start_session] Failed to persist topic remap: ${e instanceof Error ? e.message : String(e)}`);
161
- }
162
- if (customName)
163
- persistSession(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
164
- registerTopic(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
165
- startupNotificationSent = true;
166
- }
167
- catch (createErr) {
168
- log.warn(`[start_session] Remap failed, falling back to new session: ${errorMessage(createErr)}`);
169
- if (session.currentThreadId !== undefined)
170
- purgeSchedules(session.currentThreadId);
171
- if (customName)
172
- removeSession(TELEGRAM_CHAT_ID, customName);
173
- resolvedPreexisting = false;
174
- session.currentThreadId = undefined;
175
- }
137
+ log.info(`[start_session] Cached thread ${session.currentThreadId} is gone (${errMsg}); operator must call start_session without a threadId to create a replacement.`);
176
138
  }
177
139
  // Other errors (network, etc.) are non-fatal — proceed anyway.
178
140
  }
@@ -201,18 +163,16 @@ export async function handleStartSession(args, ctx) {
201
163
  hour: "2-digit", minute: "2-digit", hour12: false,
202
164
  })}`;
203
165
  try {
204
- const topic = await telegram.createForumTopic(TELEGRAM_CHAT_ID, topicName);
205
- session.currentThreadId = topic.message_thread_id;
206
- // Persist so the same name resumes this thread next time.
207
- persistSession(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
208
- registerTopic(TELEGRAM_CHAT_ID, topicName, session.currentThreadId);
166
+ session.currentThreadId = await createManagedTopic(telegram, TELEGRAM_CHAT_ID, topicName);
209
167
  // Register in thread_registry so the dashboard can see it
210
168
  try {
211
- registerThread(getMemoryDb(), {
169
+ threadLifecycle.registerThread(getMemoryDb(), {
212
170
  threadId: session.currentThreadId,
213
171
  name: topicName,
214
172
  type: 'root',
215
173
  client: agentType ?? 'claude',
174
+ chatId: TELEGRAM_CHAT_ID,
175
+ telegramTopicId: session.currentThreadId,
216
176
  });
217
177
  }
218
178
  catch { /* best-effort — DB may not be ready */ }
@@ -309,20 +269,23 @@ export async function handleStartSession(args, ctx) {
309
269
  // first-person introspection prompt sourced from memory.
310
270
  // Only create on active thread — purge stale DMN tasks from other threads
311
271
  // to avoid every thread accumulating reflection tasks.
312
- if (config.AUTONOMOUS_MODE && session.currentThreadId !== undefined) {
313
- const existingTasks = listSchedules(session.currentThreadId);
314
- const hasDmn = existingTasks.some(t => t.label === "dmn-reflection");
315
- if (!hasDmn) {
316
- addSchedule({
317
- id: generateTaskId(),
318
- threadId: session.currentThreadId,
319
- prompt: "__DMN__", // Sentinel — handler generates dynamic content
320
- label: "dmn-reflection",
321
- afterIdleMinutes: 240, // 4 hours
322
- oneShot: false,
323
- createdAt: new Date().toISOString(),
324
- });
325
- log.info(`[start_session] Auto-scheduled DMN reflection task for thread ${session.currentThreadId}.`);
272
+ if (session.currentThreadId !== undefined) {
273
+ const effectiveAutonomousMode = getEffectiveAutonomousMode(session.currentThreadId);
274
+ if (effectiveAutonomousMode) {
275
+ const existingTasks = listSchedules(session.currentThreadId);
276
+ const hasDmn = existingTasks.some(t => t.label === "dmn-reflection");
277
+ if (!hasDmn) {
278
+ addSchedule({
279
+ id: generateTaskId(),
280
+ threadId: session.currentThreadId,
281
+ prompt: "__DMN__", // Sentinel — handler generates dynamic content
282
+ label: "dmn-reflection",
283
+ afterIdleMinutes: 240, // 4 hours
284
+ oneShot: false,
285
+ createdAt: new Date().toISOString(),
286
+ });
287
+ log.info(`[start_session] Auto-scheduled DMN reflection task for thread ${session.currentThreadId}.`);
288
+ }
326
289
  }
327
290
  }
328
291
  const resumeNote = resolvedPreexisting
@@ -337,26 +300,23 @@ export async function handleStartSession(args, ctx) {
337
300
  const db = getMemoryDb();
338
301
  const existingThread = getThread(db, threadId);
339
302
  if (!existingThread) {
340
- registerThread(db, {
303
+ threadLifecycle.registerThread(db, {
341
304
  threadId,
342
305
  name: customName ?? `Thread ${threadId}`,
343
306
  type: 'root',
344
307
  client: agentType,
308
+ chatId: TELEGRAM_CHAT_ID,
345
309
  });
346
310
  }
347
- else if (!existingThread.keepAlive) {
348
- // Only update client for non-keepAlive threads; keepAlive threads
349
- // have their client set by the keeper and shouldn't be overwritten.
350
- updateThread(db, threadId, { client: agentType, status: 'active' });
351
- }
352
311
  else {
353
- // keepAlive thread: just ensure status is active
354
- updateThread(db, threadId, { status: 'active' });
312
+ threadLifecycle.activateThread(db, threadId, existingThread.keepAlive
313
+ ? {}
314
+ : { client: agentType });
355
315
  }
356
316
  }
357
317
  catch { /* best-effort */ }
358
318
  }
359
- const reminders = ctx.getReminders(threadId, session.sessionStartedAt, config.AUTONOMOUS_MODE);
319
+ const reminders = ctx.getReminders(threadId, session.sessionStartedAt, getEffectiveAutonomousMode(threadId));
360
320
  // Mark session as fully initialized — subsequent start_session calls with
361
321
  // the same threadId will hit the re-entry guard instead of re-bootstrapping.
362
322
  session.sessionFullyInitialized = true;
@@ -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,128 +1,6 @@
1
- /**
2
- * Thread lifecycle management: process spawning, PID tracking, and cleanup.
3
- *
4
- * Extracted from delegate-tool.ts to separate process-lifecycle concerns
5
- * from MCP tool-handler logic.
6
- */
7
- interface SpawnedThread {
8
- pid: number;
9
- threadId: number;
10
- name: string;
11
- startedAt: number;
12
- createdAt: number;
13
- logFile: string;
14
- memorySourceThreadId?: number;
15
- memoryTargetThreadId?: number;
16
- threadType?: 'worker' | 'branch';
17
- }
18
- /**
19
- * Check if a process with the given PID is still running.
20
- * Uses process.kill(pid, 0) which is non-blocking (microseconds).
21
- * On Windows, PID reuse is a theoretical risk but far less harmful than
22
- * the 1-5 second event-loop blocking that tasklist causes. The batch
23
- * getAlivePids() function still uses tasklist for startup restore where
24
- * accuracy matters more than latency.
25
- */
26
- export declare function isProcessAlive(pid: number): boolean;
27
- /**
28
- * Find a spawned thread entry by threadId whose process is still alive.
29
- * Searches from the end of the array to find the most recently spawned entry.
30
- */
31
- export declare function findAliveThread(threadId: number): SpawnedThread | undefined;
32
- /**
33
- * Check if any tracked process is running for this threadId.
34
- */
35
- export declare function isThreadRunning(threadId: number): boolean;
36
- export declare const PENDING_TASKS_DIR: string;
37
- export declare function ensureDirs(): void;
38
- export declare function resolveMcpConfigPath(): string | null;
39
- /**
40
- * Resolve the absolute path to the `claude` CLI executable.
41
- * Returns null if not found. Uses where/which instead of execSync (L3).
42
- */
43
- export declare function resolveClaudePath(): string | null;
44
- /**
45
- * Resolve the absolute path to the `copilot` CLI executable.
46
- * Checks COPILOT_CLI_CMD env var first, then PATH. Returns null if not found.
47
- */
48
- export declare function resolveCopilotPath(): string | null;
49
- /**
50
- * Resolve the absolute path to the `codex` CLI executable.
51
- * Checks CODEX_CLI_CMD env var first, then PATH. Returns null if not found.
52
- */
53
- export declare function resolveCodexPath(): string | null;
54
- export declare function spawnAgentProcess(claudePath: string, mcpConfigPath: string, name: string, threadId: number, workingDirectory?: string, memorySourceThreadId?: number, memoryTargetThreadId?: number, threadType?: 'worker' | 'branch'): {
55
- pid: number;
56
- logFile: string;
57
- } | {
58
- error: string;
59
- };
60
- /**
61
- * Spawn a GitHub Copilot agent process for the given thread.
62
- * Writes Copilot home files (MCP config + system prompt) before spawning.
63
- * Requires MCP_HTTP_PORT env var to be set.
64
- */
65
- export declare function spawnCopilotProcess(copilotPath: string, name: string, threadId: number, workingDirectory?: string, memorySourceThreadId?: number, agentType?: string, threadType?: 'worker' | 'branch'): {
66
- pid: number;
67
- logFile: string;
68
- } | {
69
- error: string;
70
- };
71
- /**
72
- * Spawn an OpenAI Codex CLI agent process for the given thread.
73
- * Writes Codex home files (TOML config + AGENTS.md) before spawning.
74
- * Uses `codex exec` for non-interactive execution.
75
- * Requires MCP_HTTP_PORT env var to be set.
76
- */
77
- export declare function spawnCodexProcess(codexPath: string, name: string, threadId: number, workingDirectory?: string, memorySourceThreadId?: number, threadType?: 'worker' | 'branch'): {
78
- pid: number;
79
- logFile: string;
80
- } | {
81
- error: string;
82
- };
83
- interface PidFileEntry {
84
- threadId: number;
85
- pid: number;
86
- filePath: string;
87
- /** Thread name from PID metadata (may be absent in legacy PID files). */
88
- name?: string;
89
- }
90
- /**
91
- * Read all PID files from the pids directory.
92
- * Supports both legacy (plain PID number) and new (JSON metadata) formats.
93
- */
94
- export declare function readPidFiles(): PidFileEntry[];
95
- /**
96
- * Remove PID files for processes that are no longer running.
97
- * Called on server startup / before spawning new threads.
98
- * Uses a single batch check instead of N sequential calls to avoid
99
- * WMI/tasklist hangs multiplying across all tracked PIDs.
100
- */
101
- export declare function cleanupStalePidFiles(): void;
102
- /**
103
- * Kill any orphan agent processes from PID files and spawn fresh processes
104
- * for all keepAlive threads in the registry. Called once on server startup.
105
- */
106
- export declare function spawnKeepAliveThreads(): {
107
- spawned: number;
108
- errors: string[];
109
- };
110
- /**
111
- * Clean up expired worker threads.
112
- * Workers are temporary threads (have memorySourceThreadId but no memoryTargetThreadId).
113
- * After TTL expires: synthesize outcomes, kill process, delete PID, delete Telegram topic.
114
- */
115
- export declare function cleanupExpiredWorkers(db: ReturnType<typeof import("../memory.js").initMemoryDb>, telegram: {
116
- deleteForumTopic(chatId: string, threadId: number): Promise<void>;
117
- }, chatId: string, ttlMs?: number): Promise<{
118
- cleaned: number;
119
- errors: string[];
120
- }>;
121
- /**
122
- * Get comprehensive health status of all known threads.
123
- * Merges data from topic registry, dashboard sessions, spawned processes,
124
- * and PID files on disk. Returns a formatted markdown table.
125
- */
126
- export declare function getThreadsHealth(): string;
127
- export {};
1
+ export * from "../services/process.service.js";
2
+ export * from "../services/agent-spawn.service.js";
3
+ export * from "../services/thread-health.service.js";
4
+ export * from "../services/topic.service.js";
5
+ export * from "../services/worker-cleanup.service.js";
128
6
  //# sourceMappingURL=thread-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/thread-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AAWD;;;;;;;GAOG;AAEH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CA0C3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAOD,eAAO,MAAM,iBAAiB,QAAkC,CAAC;AAKjE,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAwCD,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAgBpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CASjD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAWlD;AAeD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAkBhD;AA+LD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAqFtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA0EtD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAyHtD;AAMD,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CA2B7C;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAY3C;AAkBD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyF7E;AAID;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,UAAU,CAAC,cAAc,cAAc,EAAE,YAAY,CAAC,EAC1D,QAAQ,EAAE;IAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EAC/E,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAA8B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyChD;AAkND;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmEzC"}
1
+ {"version":3,"file":"thread-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/thread-lifecycle.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC"}