sensorium-mcp 3.0.103 → 3.1.0-refactor.1

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 (563) hide show
  1. package/README.md +25 -0
  2. package/dist/config/agent-settings.d.ts +69 -0
  3. package/dist/config/agent-settings.d.ts.map +1 -0
  4. package/dist/config/agent-settings.js +225 -0
  5. package/dist/config/agent-settings.js.map +1 -0
  6. package/dist/config/agent-templates.d.ts +39 -0
  7. package/dist/config/agent-templates.d.ts.map +1 -0
  8. package/dist/config/agent-templates.js +105 -0
  9. package/dist/config/agent-templates.js.map +1 -0
  10. package/dist/config/index.d.ts +16 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +58 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/keep-alive-settings.d.ts +29 -0
  15. package/dist/config/keep-alive-settings.d.ts.map +1 -0
  16. package/dist/config/keep-alive-settings.js +100 -0
  17. package/dist/config/keep-alive-settings.js.map +1 -0
  18. package/dist/config/mcp-settings.d.ts +59 -0
  19. package/dist/config/mcp-settings.d.ts.map +1 -0
  20. package/dist/config/mcp-settings.js +196 -0
  21. package/dist/config/mcp-settings.js.map +1 -0
  22. package/dist/config/misc-settings.d.ts +46 -0
  23. package/dist/config/misc-settings.d.ts.map +1 -0
  24. package/dist/config/misc-settings.js +146 -0
  25. package/dist/config/misc-settings.js.map +1 -0
  26. package/dist/config/settings-store.d.ts +10 -0
  27. package/dist/config/settings-store.d.ts.map +1 -0
  28. package/dist/config/settings-store.js +65 -0
  29. package/dist/config/settings-store.js.map +1 -0
  30. package/dist/dashboard/log-parser.d.ts.map +1 -1
  31. package/dist/dashboard/log-parser.js +12 -2
  32. package/dist/dashboard/log-parser.js.map +1 -1
  33. package/dist/dashboard/presets.d.ts +1 -1
  34. package/dist/dashboard/presets.d.ts.map +1 -1
  35. package/dist/dashboard/presets.js +1 -1
  36. package/dist/dashboard/presets.js.map +1 -1
  37. package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
  38. package/dist/dashboard/routes/agent-templates.js +13 -8
  39. package/dist/dashboard/routes/agent-templates.js.map +1 -1
  40. package/dist/dashboard/routes/claude.d.ts.map +1 -1
  41. package/dist/dashboard/routes/claude.js +6 -3
  42. package/dist/dashboard/routes/claude.js.map +1 -1
  43. package/dist/dashboard/routes/copilot.d.ts.map +1 -1
  44. package/dist/dashboard/routes/copilot.js +16 -7
  45. package/dist/dashboard/routes/copilot.js.map +1 -1
  46. package/dist/dashboard/routes/data.d.ts.map +1 -1
  47. package/dist/dashboard/routes/data.js +43 -15
  48. package/dist/dashboard/routes/data.js.map +1 -1
  49. package/dist/dashboard/routes/env-vars.d.ts.map +1 -1
  50. package/dist/dashboard/routes/env-vars.js.map +1 -1
  51. package/dist/dashboard/routes/mcp-servers.d.ts.map +1 -1
  52. package/dist/dashboard/routes/mcp-servers.js +11 -5
  53. package/dist/dashboard/routes/mcp-servers.js.map +1 -1
  54. package/dist/dashboard/routes/prompts.d.ts.map +1 -1
  55. package/dist/dashboard/routes/prompts.js +2 -2
  56. package/dist/dashboard/routes/prompts.js.map +1 -1
  57. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  58. package/dist/dashboard/routes/settings.js +5 -3
  59. package/dist/dashboard/routes/settings.js.map +1 -1
  60. package/dist/dashboard/routes/skills.d.ts.map +1 -1
  61. package/dist/dashboard/routes/skills.js +4 -4
  62. package/dist/dashboard/routes/skills.js.map +1 -1
  63. package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
  64. package/dist/dashboard/routes/snapshots.js +18 -11
  65. package/dist/dashboard/routes/snapshots.js.map +1 -1
  66. package/dist/dashboard/routes/templates.d.ts.map +1 -1
  67. package/dist/dashboard/routes/templates.js +6 -3
  68. package/dist/dashboard/routes/templates.js.map +1 -1
  69. package/dist/dashboard/routes/threads-create.d.ts +22 -0
  70. package/dist/dashboard/routes/threads-create.d.ts.map +1 -0
  71. package/dist/dashboard/routes/threads-create.js +225 -0
  72. package/dist/dashboard/routes/threads-create.js.map +1 -0
  73. package/dist/dashboard/routes/threads-helpers.d.ts +28 -0
  74. package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -0
  75. package/dist/dashboard/routes/threads-helpers.js +138 -0
  76. package/dist/dashboard/routes/threads-helpers.js.map +1 -0
  77. package/dist/dashboard/routes/threads-read.d.ts +26 -0
  78. package/dist/dashboard/routes/threads-read.d.ts.map +1 -0
  79. package/dist/dashboard/routes/threads-read.js +118 -0
  80. package/dist/dashboard/routes/threads-read.js.map +1 -0
  81. package/dist/dashboard/routes/threads.d.ts +5 -44
  82. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  83. package/dist/dashboard/routes/threads.js +40 -496
  84. package/dist/dashboard/routes/threads.js.map +1 -1
  85. package/dist/dashboard/routes/types.d.ts.map +1 -1
  86. package/dist/dashboard/routes/types.js.map +1 -1
  87. package/dist/dashboard/routes.d.ts.map +1 -1
  88. package/dist/dashboard/routes.js +9 -5
  89. package/dist/dashboard/routes.js.map +1 -1
  90. package/dist/data/daily-marker.d.ts.map +1 -1
  91. package/dist/data/daily-marker.js +1 -1
  92. package/dist/data/daily-marker.js.map +1 -1
  93. package/dist/data/file-storage.d.ts.map +1 -1
  94. package/dist/data/file-storage.js +40 -16
  95. package/dist/data/file-storage.js.map +1 -1
  96. package/dist/data/interfaces.d.ts +23 -2
  97. package/dist/data/interfaces.d.ts.map +1 -1
  98. package/dist/data/memory/bootstrap.d.ts +1 -1
  99. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  100. package/dist/data/memory/bootstrap.js +32 -13
  101. package/dist/data/memory/bootstrap.js.map +1 -1
  102. package/dist/data/memory/consolidation.d.ts.map +1 -1
  103. package/dist/data/memory/consolidation.js +17 -8
  104. package/dist/data/memory/consolidation.js.map +1 -1
  105. package/dist/data/memory/db-types.d.ts +4 -0
  106. package/dist/data/memory/db-types.d.ts.map +1 -0
  107. package/dist/data/memory/db-types.js +2 -0
  108. package/dist/data/memory/db-types.js.map +1 -0
  109. package/dist/data/memory/episodes.d.ts.map +1 -1
  110. package/dist/data/memory/episodes.js +3 -5
  111. package/dist/data/memory/episodes.js.map +1 -1
  112. package/dist/data/memory/index.d.ts +28 -14
  113. package/dist/data/memory/index.d.ts.map +1 -1
  114. package/dist/data/memory/index.js +28 -14
  115. package/dist/data/memory/index.js.map +1 -1
  116. package/dist/data/memory/migration-runner.d.ts +1 -1
  117. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  118. package/dist/data/memory/migration-runner.js +23 -15
  119. package/dist/data/memory/migration-runner.js.map +1 -1
  120. package/dist/data/memory/narrative-lint.d.ts +12 -0
  121. package/dist/data/memory/narrative-lint.d.ts.map +1 -0
  122. package/dist/data/memory/narrative-lint.js +117 -0
  123. package/dist/data/memory/narrative-lint.js.map +1 -0
  124. package/dist/data/memory/narrative-resolutions.d.ts +26 -0
  125. package/dist/data/memory/narrative-resolutions.d.ts.map +1 -0
  126. package/dist/data/memory/narrative-resolutions.js +81 -0
  127. package/dist/data/memory/narrative-resolutions.js.map +1 -0
  128. package/dist/data/memory/narrative-sources.d.ts +19 -0
  129. package/dist/data/memory/narrative-sources.d.ts.map +1 -0
  130. package/dist/data/memory/narrative-sources.js +150 -0
  131. package/dist/data/memory/narrative-sources.js.map +1 -0
  132. package/dist/data/memory/narrative-store.d.ts +11 -0
  133. package/dist/data/memory/narrative-store.d.ts.map +1 -0
  134. package/dist/data/memory/narrative-store.js +80 -0
  135. package/dist/data/memory/narrative-store.js.map +1 -0
  136. package/dist/data/memory/narrative-types.d.ts +15 -0
  137. package/dist/data/memory/narrative-types.d.ts.map +1 -0
  138. package/dist/data/memory/narrative-types.js +3 -0
  139. package/dist/data/memory/narrative-types.js.map +1 -0
  140. package/dist/data/memory/narrative.d.ts +5 -2
  141. package/dist/data/memory/narrative.d.ts.map +1 -1
  142. package/dist/data/memory/narrative.js +31 -521
  143. package/dist/data/memory/narrative.js.map +1 -1
  144. package/dist/data/memory/note-archival.d.ts +17 -0
  145. package/dist/data/memory/note-archival.d.ts.map +1 -0
  146. package/dist/data/memory/note-archival.js +48 -0
  147. package/dist/data/memory/note-archival.js.map +1 -0
  148. package/dist/data/memory/note-embeddings.d.ts +27 -0
  149. package/dist/data/memory/note-embeddings.d.ts.map +1 -0
  150. package/dist/data/memory/note-embeddings.js +98 -0
  151. package/dist/data/memory/note-embeddings.js.map +1 -0
  152. package/dist/data/memory/reflection-dedup.d.ts +17 -0
  153. package/dist/data/memory/reflection-dedup.d.ts.map +1 -0
  154. package/dist/data/memory/reflection-dedup.js +55 -0
  155. package/dist/data/memory/reflection-dedup.js.map +1 -0
  156. package/dist/data/memory/reflection-gates.d.ts +40 -0
  157. package/dist/data/memory/reflection-gates.d.ts.map +1 -0
  158. package/dist/data/memory/reflection-gates.js +220 -0
  159. package/dist/data/memory/reflection-gates.js.map +1 -0
  160. package/dist/data/memory/reflection-sources.d.ts +13 -0
  161. package/dist/data/memory/reflection-sources.d.ts.map +1 -0
  162. package/dist/data/memory/reflection-sources.js +115 -0
  163. package/dist/data/memory/reflection-sources.js.map +1 -0
  164. package/dist/data/memory/reflection.d.ts +5 -35
  165. package/dist/data/memory/reflection.d.ts.map +1 -1
  166. package/dist/data/memory/reflection.js +25 -329
  167. package/dist/data/memory/reflection.js.map +1 -1
  168. package/dist/data/memory/schema-ddl.d.ts +1 -1
  169. package/dist/data/memory/schema-ddl.d.ts.map +1 -1
  170. package/dist/data/memory/schema-ddl.js +5 -3
  171. package/dist/data/memory/schema-ddl.js.map +1 -1
  172. package/dist/data/memory/schema-guard.d.ts +1 -1
  173. package/dist/data/memory/schema-guard.d.ts.map +1 -1
  174. package/dist/data/memory/schema-guard.js +5 -4
  175. package/dist/data/memory/schema-guard.js.map +1 -1
  176. package/dist/data/memory/schema.d.ts +2 -2
  177. package/dist/data/memory/schema.d.ts.map +1 -1
  178. package/dist/data/memory/schema.js +4 -2
  179. package/dist/data/memory/schema.js.map +1 -1
  180. package/dist/data/memory/{semantic.d.ts → semantic-notes.d.ts} +6 -72
  181. package/dist/data/memory/semantic-notes.d.ts.map +1 -0
  182. package/dist/data/memory/semantic-notes.js +249 -0
  183. package/dist/data/memory/semantic-notes.js.map +1 -0
  184. package/dist/data/memory/semantic-search.d.ts +29 -0
  185. package/dist/data/memory/semantic-search.d.ts.map +1 -0
  186. package/dist/data/memory/semantic-search.js +156 -0
  187. package/dist/data/memory/semantic-search.js.map +1 -0
  188. package/dist/data/memory/synthesis.d.ts.map +1 -1
  189. package/dist/data/memory/synthesis.js +15 -7
  190. package/dist/data/memory/synthesis.js.map +1 -1
  191. package/dist/data/memory/thread-registry.d.ts +2 -2
  192. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  193. package/dist/data/memory/thread-registry.js +74 -36
  194. package/dist/data/memory/thread-registry.js.map +1 -1
  195. package/dist/data/memory/topic-index.d.ts +20 -0
  196. package/dist/data/memory/topic-index.d.ts.map +1 -0
  197. package/dist/data/memory/topic-index.js +91 -0
  198. package/dist/data/memory/topic-index.js.map +1 -0
  199. package/dist/data/memory/topic-shift.js +1 -1
  200. package/dist/data/memory/topic-shift.js.map +1 -1
  201. package/dist/data/memory/utils.d.ts +0 -5
  202. package/dist/data/memory/utils.d.ts.map +1 -1
  203. package/dist/data/memory/utils.js +0 -94
  204. package/dist/data/memory/utils.js.map +1 -1
  205. package/dist/data/sent-message.repository.js +2 -2
  206. package/dist/data/sent-message.repository.js.map +1 -1
  207. package/dist/data/templates.js +2 -2
  208. package/dist/data/templates.js.map +1 -1
  209. package/dist/index.js +21 -19
  210. package/dist/index.js.map +1 -1
  211. package/dist/integrations/openai/chat.d.ts.map +1 -1
  212. package/dist/integrations/openai/chat.js +5 -5
  213. package/dist/integrations/openai/chat.js.map +1 -1
  214. package/dist/integrations/openai/speech.d.ts +1 -1
  215. package/dist/integrations/openai/speech.d.ts.map +1 -1
  216. package/dist/integrations/openai/speech.js +1 -3
  217. package/dist/integrations/openai/speech.js.map +1 -1
  218. package/dist/integrations/openai/video.d.ts.map +1 -1
  219. package/dist/integrations/openai/video.js +21 -10
  220. package/dist/integrations/openai/video.js.map +1 -1
  221. package/dist/integrations/openai/vision.d.ts.map +1 -1
  222. package/dist/integrations/openai/vision.js.map +1 -1
  223. package/dist/integrations/openai/voice-emotion.d.ts.map +1 -1
  224. package/dist/integrations/openai/voice-emotion.js +2 -2
  225. package/dist/integrations/openai/voice-emotion.js.map +1 -1
  226. package/dist/lib/logger.d.ts.map +1 -0
  227. package/dist/{logger.js → lib/logger.js} +77 -50
  228. package/dist/lib/logger.js.map +1 -0
  229. package/dist/lib/markdown.d.ts.map +1 -0
  230. package/dist/{markdown.js → lib/markdown.js} +13 -5
  231. package/dist/lib/markdown.js.map +1 -0
  232. package/dist/{types.d.ts → lib/types.d.ts} +0 -1
  233. package/dist/lib/types.d.ts.map +1 -0
  234. package/dist/lib/types.js.map +1 -0
  235. package/dist/lib/utils.d.ts.map +1 -0
  236. package/dist/{utils.js → lib/utils.js} +29 -9
  237. package/dist/lib/utils.js.map +1 -0
  238. package/dist/llm/json.d.ts +14 -0
  239. package/dist/llm/json.d.ts.map +1 -0
  240. package/dist/llm/json.js +112 -0
  241. package/dist/llm/json.js.map +1 -0
  242. package/dist/llm/prompts/narrative.d.ts +7 -0
  243. package/dist/llm/prompts/narrative.d.ts.map +1 -0
  244. package/dist/llm/prompts/narrative.js +124 -0
  245. package/dist/llm/prompts/narrative.js.map +1 -0
  246. package/dist/llm/prompts/reflection.d.ts +6 -0
  247. package/dist/llm/prompts/reflection.d.ts.map +1 -0
  248. package/dist/llm/prompts/reflection.js +77 -0
  249. package/dist/llm/prompts/reflection.js.map +1 -0
  250. package/dist/server/factory.d.ts +2 -2
  251. package/dist/server/factory.d.ts.map +1 -1
  252. package/dist/server/factory.js +152 -73
  253. package/dist/server/factory.js.map +1 -1
  254. package/dist/{http-server.d.ts → server/http-server.d.ts} +2 -2
  255. package/dist/server/http-server.d.ts.map +1 -0
  256. package/dist/{http-server.js → server/http-server.js} +38 -17
  257. package/dist/server/http-server.js.map +1 -0
  258. package/dist/{stdio-server.d.ts → server/stdio-server.d.ts} +1 -1
  259. package/dist/server/stdio-server.d.ts.map +1 -0
  260. package/dist/{stdio-server.js → server/stdio-server.js} +25 -11
  261. package/dist/server/stdio-server.js.map +1 -0
  262. package/dist/services/agent-spawn.service.d.ts +1 -1
  263. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  264. package/dist/services/agent-spawn.service.js +17 -7
  265. package/dist/services/agent-spawn.service.js.map +1 -1
  266. package/dist/services/background-runner.d.ts +2 -2
  267. package/dist/services/background-runner.d.ts.map +1 -1
  268. package/dist/services/background-runner.js +8 -3
  269. package/dist/services/background-runner.js.map +1 -1
  270. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  271. package/dist/services/claude-spawn.service.js +61 -52
  272. package/dist/services/claude-spawn.service.js.map +1 -1
  273. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  274. package/dist/services/codex-spawn.service.js +52 -40
  275. package/dist/services/codex-spawn.service.js.map +1 -1
  276. package/dist/services/consolidation-prompts.d.ts +26 -0
  277. package/dist/services/consolidation-prompts.d.ts.map +1 -0
  278. package/dist/services/consolidation-prompts.js +144 -0
  279. package/dist/services/consolidation-prompts.js.map +1 -0
  280. package/dist/services/consolidation.service.d.ts +1 -5
  281. package/dist/services/consolidation.service.d.ts.map +1 -1
  282. package/dist/services/consolidation.service.js +53 -322
  283. package/dist/services/consolidation.service.js.map +1 -1
  284. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  285. package/dist/services/copilot-spawn.service.js +47 -57
  286. package/dist/services/copilot-spawn.service.js.map +1 -1
  287. package/dist/{daily-session.d.ts → services/daily-session.d.ts} +1 -1
  288. package/dist/services/daily-session.d.ts.map +1 -0
  289. package/dist/{daily-session.js → services/daily-session.js} +15 -14
  290. package/dist/services/daily-session.js.map +1 -0
  291. package/dist/services/dispatcher/broker.d.ts +0 -6
  292. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  293. package/dist/services/dispatcher/broker.js +46 -38
  294. package/dist/services/dispatcher/broker.js.map +1 -1
  295. package/dist/services/dispatcher/index.d.ts +1 -1
  296. package/dist/services/dispatcher/index.d.ts.map +1 -1
  297. package/dist/services/dispatcher/index.js +1 -1
  298. package/dist/services/dispatcher/index.js.map +1 -1
  299. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  300. package/dist/services/dispatcher/lock.js +24 -9
  301. package/dist/services/dispatcher/lock.js.map +1 -1
  302. package/dist/services/dispatcher/poller.d.ts +1 -1
  303. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  304. package/dist/services/dispatcher/poller.js +74 -49
  305. package/dist/services/dispatcher/poller.js.map +1 -1
  306. package/dist/services/drive.d.ts.map +1 -0
  307. package/dist/{drive.js → services/drive.js} +1 -1
  308. package/dist/services/drive.js.map +1 -0
  309. package/dist/services/intent.d.ts.map +1 -0
  310. package/dist/{intent.js → services/intent.js} +78 -23
  311. package/dist/services/intent.js.map +1 -0
  312. package/dist/services/keep-alive-sync.service.d.ts +11 -0
  313. package/dist/services/keep-alive-sync.service.d.ts.map +1 -0
  314. package/dist/services/keep-alive-sync.service.js +47 -0
  315. package/dist/services/keep-alive-sync.service.js.map +1 -0
  316. package/dist/services/keeper.service.d.ts +1 -1
  317. package/dist/services/keeper.service.d.ts.map +1 -1
  318. package/dist/services/keeper.service.js +31 -18
  319. package/dist/services/keeper.service.js.map +1 -1
  320. package/dist/services/maintenance-signal.js +1 -1
  321. package/dist/services/maintenance-signal.js.map +1 -1
  322. package/dist/services/mcp-config.service.d.ts.map +1 -1
  323. package/dist/services/mcp-config.service.js +19 -6
  324. package/dist/services/mcp-config.service.js.map +1 -1
  325. package/dist/services/memory-briefing.service.d.ts.map +1 -1
  326. package/dist/services/memory-briefing.service.js +13 -7
  327. package/dist/services/memory-briefing.service.js.map +1 -1
  328. package/dist/services/memory-pruning.service.d.ts +12 -0
  329. package/dist/services/memory-pruning.service.d.ts.map +1 -0
  330. package/dist/services/memory-pruning.service.js +177 -0
  331. package/dist/services/memory-pruning.service.js.map +1 -0
  332. package/dist/services/process.service.d.ts +7 -2
  333. package/dist/services/process.service.d.ts.map +1 -1
  334. package/dist/services/process.service.js +233 -103
  335. package/dist/services/process.service.js.map +1 -1
  336. package/dist/services/reconnect-snapshot.service.d.ts.map +1 -1
  337. package/dist/services/reconnect-snapshot.service.js +3 -3
  338. package/dist/services/reconnect-snapshot.service.js.map +1 -1
  339. package/dist/{scheduler.d.ts → services/scheduler.d.ts} +1 -23
  340. package/dist/services/scheduler.d.ts.map +1 -0
  341. package/dist/{scheduler.js → services/scheduler.js} +6 -8
  342. package/dist/services/scheduler.js.map +1 -0
  343. package/dist/services/self-update.service.d.ts +15 -5
  344. package/dist/services/self-update.service.d.ts.map +1 -1
  345. package/dist/services/self-update.service.js +85 -41
  346. package/dist/services/self-update.service.js.map +1 -1
  347. package/dist/services/spawn-common.d.ts +40 -16
  348. package/dist/services/spawn-common.d.ts.map +1 -1
  349. package/dist/services/spawn-common.js +163 -36
  350. package/dist/services/spawn-common.js.map +1 -1
  351. package/dist/{telegram.d.ts → services/telegram.d.ts} +3 -3
  352. package/dist/services/telegram.d.ts.map +1 -0
  353. package/dist/{telegram.js → services/telegram.js} +16 -8
  354. package/dist/services/telegram.js.map +1 -0
  355. package/dist/services/thread-config.service.d.ts +25 -0
  356. package/dist/services/thread-config.service.d.ts.map +1 -0
  357. package/dist/services/thread-config.service.js +73 -0
  358. package/dist/services/thread-config.service.js.map +1 -0
  359. package/dist/services/thread-health.service.d.ts.map +1 -1
  360. package/dist/services/thread-health.service.js +23 -9
  361. package/dist/services/thread-health.service.js.map +1 -1
  362. package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
  363. package/dist/services/thread-lifecycle.service.js +21 -7
  364. package/dist/services/thread-lifecycle.service.js.map +1 -1
  365. package/dist/services/topic.service.d.ts.map +1 -1
  366. package/dist/services/topic.service.js +17 -6
  367. package/dist/services/topic.service.js.map +1 -1
  368. package/dist/services/worker-cleanup.service.d.ts +3 -2
  369. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  370. package/dist/services/worker-cleanup.service.js +31 -19
  371. package/dist/services/worker-cleanup.service.js.map +1 -1
  372. package/dist/sessions/dashboard-registry.d.ts +38 -0
  373. package/dist/sessions/dashboard-registry.d.ts.map +1 -0
  374. package/dist/sessions/dashboard-registry.js +84 -0
  375. package/dist/sessions/dashboard-registry.js.map +1 -0
  376. package/dist/{sessions.d.ts → sessions/mcp-registry.d.ts} +3 -60
  377. package/dist/sessions/mcp-registry.d.ts.map +1 -0
  378. package/dist/{sessions.js → sessions/mcp-registry.js} +5 -214
  379. package/dist/sessions/mcp-registry.js.map +1 -0
  380. package/dist/sessions/session-store.d.ts +17 -0
  381. package/dist/sessions/session-store.d.ts.map +1 -0
  382. package/dist/sessions/session-store.js +69 -0
  383. package/dist/sessions/session-store.js.map +1 -0
  384. package/dist/sessions/topic-registry.d.ts +14 -0
  385. package/dist/sessions/topic-registry.d.ts.map +1 -0
  386. package/dist/sessions/topic-registry.js +67 -0
  387. package/dist/sessions/topic-registry.js.map +1 -0
  388. package/dist/tools/definitions.d.ts +1 -9
  389. package/dist/tools/definitions.d.ts.map +1 -1
  390. package/dist/tools/definitions.js.map +1 -1
  391. package/dist/tools/defs/memory-defs.d.ts +1 -1
  392. package/dist/tools/defs/memory-defs.d.ts.map +1 -1
  393. package/dist/tools/defs/memory-defs.js +1 -1
  394. package/dist/tools/defs/memory-defs.js.map +1 -1
  395. package/dist/tools/defs/session-defs.d.ts +1 -1
  396. package/dist/tools/defs/session-defs.d.ts.map +1 -1
  397. package/dist/tools/defs/session-defs.js +3 -14
  398. package/dist/tools/defs/session-defs.js.map +1 -1
  399. package/dist/tools/defs/skill-defs.d.ts +1 -1
  400. package/dist/tools/defs/skill-defs.d.ts.map +1 -1
  401. package/dist/tools/defs/types.d.ts +11 -0
  402. package/dist/tools/defs/types.d.ts.map +1 -0
  403. package/dist/{chat-ui/src → tools/defs}/types.js.map +1 -1
  404. package/dist/tools/defs/utility-defs.d.ts +1 -1
  405. package/dist/tools/defs/utility-defs.d.ts.map +1 -1
  406. package/dist/tools/defs/utility-defs.js.map +1 -1
  407. package/dist/tools/defs/wait-defs.d.ts +1 -1
  408. package/dist/tools/defs/wait-defs.d.ts.map +1 -1
  409. package/dist/tools/delegate-tool.d.ts +2 -2
  410. package/dist/tools/delegate-tool.d.ts.map +1 -1
  411. package/dist/tools/delegate-tool.js +57 -37
  412. package/dist/tools/delegate-tool.js.map +1 -1
  413. package/dist/tools/memory-tools.d.ts +2 -2
  414. package/dist/tools/memory-tools.d.ts.map +1 -1
  415. package/dist/tools/memory-tools.js +108 -37
  416. package/dist/tools/memory-tools.js.map +1 -1
  417. package/dist/{response-builders.d.ts → tools/response-builders.d.ts} +2 -2
  418. package/dist/tools/response-builders.d.ts.map +1 -0
  419. package/dist/{response-builders.js → tools/response-builders.js} +151 -30
  420. package/dist/tools/response-builders.js.map +1 -0
  421. package/dist/tools/session-tools.d.ts +5 -14
  422. package/dist/tools/session-tools.d.ts.map +1 -1
  423. package/dist/tools/session-tools.js +17 -12
  424. package/dist/tools/session-tools.js.map +1 -1
  425. package/dist/tools/shared-agent-utils.d.ts +1 -1
  426. package/dist/tools/shared-agent-utils.d.ts.map +1 -1
  427. package/dist/tools/shared-agent-utils.js +2 -4
  428. package/dist/tools/shared-agent-utils.js.map +1 -1
  429. package/dist/tools/skill-tools.d.ts +1 -1
  430. package/dist/tools/skill-tools.d.ts.map +1 -1
  431. package/dist/tools/skill-tools.js +12 -7
  432. package/dist/tools/skill-tools.js.map +1 -1
  433. package/dist/tools/start-session-tool.d.ts +3 -3
  434. package/dist/tools/start-session-tool.d.ts.map +1 -1
  435. package/dist/tools/start-session-tool.js +35 -25
  436. package/dist/tools/start-session-tool.js.map +1 -1
  437. package/dist/tools/utility-tools.d.ts +3 -3
  438. package/dist/tools/utility-tools.d.ts.map +1 -1
  439. package/dist/tools/utility-tools.js +46 -28
  440. package/dist/tools/utility-tools.js.map +1 -1
  441. package/dist/tools/wait/auto-forward.d.ts +1 -1
  442. package/dist/tools/wait/auto-forward.d.ts.map +1 -1
  443. package/dist/tools/wait/auto-forward.js +6 -4
  444. package/dist/tools/wait/auto-forward.js.map +1 -1
  445. package/dist/tools/wait/context.d.ts +45 -0
  446. package/dist/tools/wait/context.d.ts.map +1 -0
  447. package/dist/tools/wait/context.js +5 -0
  448. package/dist/tools/wait/context.js.map +1 -0
  449. package/dist/tools/wait/drive-handler.d.ts +2 -2
  450. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  451. package/dist/tools/wait/drive-handler.js +24 -12
  452. package/dist/tools/wait/drive-handler.js.map +1 -1
  453. package/dist/tools/wait/index.d.ts +2 -1
  454. package/dist/tools/wait/index.d.ts.map +1 -1
  455. package/dist/tools/wait/index.js.map +1 -1
  456. package/dist/tools/wait/media-processor.d.ts +4 -4
  457. package/dist/tools/wait/media-processor.d.ts.map +1 -1
  458. package/dist/tools/wait/media-processor.js +17 -8
  459. package/dist/tools/wait/media-processor.js.map +1 -1
  460. package/dist/tools/wait/message-delivery.d.ts +5 -5
  461. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  462. package/dist/tools/wait/message-delivery.js +78 -37
  463. package/dist/tools/wait/message-delivery.js.map +1 -1
  464. package/dist/tools/wait/message-processing.d.ts +2 -2
  465. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  466. package/dist/tools/wait/message-processing.js +95 -37
  467. package/dist/tools/wait/message-processing.js.map +1 -1
  468. package/dist/tools/wait/poll-loop.d.ts +2 -41
  469. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  470. package/dist/tools/wait/poll-loop.js +75 -23
  471. package/dist/tools/wait/poll-loop.js.map +1 -1
  472. package/dist/tools/wait/reaction-handler.d.ts +3 -3
  473. package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
  474. package/dist/tools/wait/reaction-handler.js +6 -6
  475. package/dist/tools/wait/reaction-handler.js.map +1 -1
  476. package/dist/tools/wait/task-handler.d.ts +1 -1
  477. package/dist/tools/wait/task-handler.d.ts.map +1 -1
  478. package/dist/tools/wait/task-handler.js +5 -4
  479. package/dist/tools/wait/task-handler.js.map +1 -1
  480. package/package.json +11 -2
  481. package/templates/code-review.default.md +1 -1
  482. package/templates/fire-and-forget.default.md +1 -1
  483. package/templates/handoff.default.md +1 -1
  484. package/templates/sensorium-repair.default.md +1 -1
  485. package/templates/sleep.default.md +1 -1
  486. package/dist/chat-ui/src/main.d.ts +0 -2
  487. package/dist/chat-ui/src/main.d.ts.map +0 -1
  488. package/dist/chat-ui/src/main.js +0 -4
  489. package/dist/chat-ui/src/main.js.map +0 -1
  490. package/dist/chat-ui/src/markdown.d.ts +0 -2
  491. package/dist/chat-ui/src/markdown.d.ts.map +0 -1
  492. package/dist/chat-ui/src/markdown.js +0 -39
  493. package/dist/chat-ui/src/markdown.js.map +0 -1
  494. package/dist/chat-ui/src/mock-data.d.ts +0 -4
  495. package/dist/chat-ui/src/mock-data.d.ts.map +0 -1
  496. package/dist/chat-ui/src/mock-data.js +0 -230
  497. package/dist/chat-ui/src/mock-data.js.map +0 -1
  498. package/dist/chat-ui/src/types.d.ts +0 -47
  499. package/dist/chat-ui/src/types.d.ts.map +0 -1
  500. package/dist/chat-ui/vite.config.d.ts +0 -3
  501. package/dist/chat-ui/vite.config.d.ts.map +0 -1
  502. package/dist/chat-ui/vite.config.js +0 -14
  503. package/dist/chat-ui/vite.config.js.map +0 -1
  504. package/dist/config.d.ts +0 -228
  505. package/dist/config.d.ts.map +0 -1
  506. package/dist/config.js +0 -841
  507. package/dist/config.js.map +0 -1
  508. package/dist/daily-session.d.ts.map +0 -1
  509. package/dist/daily-session.js.map +0 -1
  510. package/dist/dashboard.d.ts +0 -10
  511. package/dist/dashboard.d.ts.map +0 -1
  512. package/dist/dashboard.js +0 -10
  513. package/dist/dashboard.js.map +0 -1
  514. package/dist/data/memory/semantic.d.ts.map +0 -1
  515. package/dist/data/memory/semantic.js +0 -588
  516. package/dist/data/memory/semantic.js.map +0 -1
  517. package/dist/dispatcher.d.ts +0 -9
  518. package/dist/dispatcher.d.ts.map +0 -1
  519. package/dist/dispatcher.js +0 -9
  520. package/dist/dispatcher.js.map +0 -1
  521. package/dist/drive.d.ts.map +0 -1
  522. package/dist/drive.js.map +0 -1
  523. package/dist/http-server.d.ts.map +0 -1
  524. package/dist/http-server.js.map +0 -1
  525. package/dist/intent.d.ts.map +0 -1
  526. package/dist/intent.js.map +0 -1
  527. package/dist/logger.d.ts.map +0 -1
  528. package/dist/logger.js.map +0 -1
  529. package/dist/markdown.d.ts.map +0 -1
  530. package/dist/markdown.js.map +0 -1
  531. package/dist/memory.d.ts +0 -9
  532. package/dist/memory.d.ts.map +0 -1
  533. package/dist/memory.js +0 -9
  534. package/dist/memory.js.map +0 -1
  535. package/dist/openai.d.ts +0 -13
  536. package/dist/openai.d.ts.map +0 -1
  537. package/dist/openai.js +0 -17
  538. package/dist/openai.js.map +0 -1
  539. package/dist/response-builders.d.ts.map +0 -1
  540. package/dist/response-builders.js.map +0 -1
  541. package/dist/scheduler.d.ts.map +0 -1
  542. package/dist/scheduler.js.map +0 -1
  543. package/dist/sessions.d.ts.map +0 -1
  544. package/dist/sessions.js.map +0 -1
  545. package/dist/stdio-server.d.ts.map +0 -1
  546. package/dist/stdio-server.js.map +0 -1
  547. package/dist/telegram.d.ts.map +0 -1
  548. package/dist/telegram.js.map +0 -1
  549. package/dist/tool-definitions.d.ts +0 -2
  550. package/dist/tool-definitions.d.ts.map +0 -1
  551. package/dist/tool-definitions.js +0 -2
  552. package/dist/tool-definitions.js.map +0 -1
  553. package/dist/types.d.ts.map +0 -1
  554. package/dist/types.js.map +0 -1
  555. package/dist/utils.d.ts.map +0 -1
  556. package/dist/utils.js.map +0 -1
  557. /package/dist/{logger.d.ts → lib/logger.d.ts} +0 -0
  558. /package/dist/{markdown.d.ts → lib/markdown.d.ts} +0 -0
  559. /package/dist/{types.js → lib/types.js} +0 -0
  560. /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
  561. /package/dist/{drive.d.ts → services/drive.d.ts} +0 -0
  562. /package/dist/{intent.d.ts → services/intent.d.ts} +0 -0
  563. /package/dist/{chat-ui/src → tools/defs}/types.js +0 -0
@@ -1,11 +1,11 @@
1
- import { execFile, execFileSync, spawn } from "node:child_process";
1
+ import { execFile, spawn } from "node:child_process";
2
2
  import { mkdirSync, readdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
- import { log } from "../logger.js";
6
- import { errorMessage } from "../utils.js";
5
+ import { log } from "../lib/logger.js";
6
+ import { errorMessage } from "../lib/utils.js";
7
7
  import { getAllThreads } from "../data/memory/thread-registry.js";
8
- import { getDashboardSessions } from "../sessions.js";
8
+ import { getDashboardSessions } from "../sessions/dashboard-registry.js";
9
9
  const BASE_DIR = join(homedir(), ".remote-copilot-mcp");
10
10
  const LOGS_DIR = join(BASE_DIR, "logs");
11
11
  const PIDS_DIR = join(BASE_DIR, "pids");
@@ -40,9 +40,13 @@ export const spawnedThreads = [];
40
40
  // consumed (both consume and process-exit run in THIS server process, so a Set
41
41
  // is sufficient — workers are never resumed across a server restart anyway).
42
42
  const consumedTaskThreads = new Set();
43
- export const markTaskConsumed = (threadId) => { consumedTaskThreads.add(threadId); };
43
+ export const markTaskConsumed = (threadId) => {
44
+ consumedTaskThreads.add(threadId);
45
+ };
44
46
  export const wasTaskConsumed = (threadId) => consumedTaskThreads.has(threadId);
45
- export const clearTaskConsumed = (threadId) => { consumedTaskThreads.delete(threadId); };
47
+ export const clearTaskConsumed = (threadId) => {
48
+ consumedTaskThreads.delete(threadId);
49
+ };
46
50
  /** Delete a worker's pending-task mailbox (and any in-flight .processing temp)
47
51
  * so a retired worker can never be re-fed a late append. */
48
52
  export function deletePendingTaskMailbox(threadId) {
@@ -50,10 +54,17 @@ export function deletePendingTaskMailbox(threadId) {
50
54
  try {
51
55
  unlinkSync(join(PENDING_TASKS_DIR, `${threadId}${suffix}`));
52
56
  }
53
- catch { /* already gone */ }
57
+ catch {
58
+ /* already gone */
59
+ }
54
60
  }
55
61
  }
56
- export function isProcessAlive(pid) {
62
+ /** @param spawnedAtMs when the caller knows the process's spawn time (pid-file
63
+ * startedAt), pass it: absence from a pid-table snapshot taken BEFORE the
64
+ * spawn proves nothing, so such a process is treated as alive until a fresher
65
+ * snapshot can actually testify. Without it, a freshly spawned child could be
66
+ * declared dead against a stale snapshot → duplicate spawn. */
67
+ export function isProcessAlive(pid, spawnedAtMs) {
57
68
  try {
58
69
  process.kill(pid, 0);
59
70
  }
@@ -77,39 +88,99 @@ export function isProcessAlive(pid) {
77
88
  // paths. (tasklist unavailable → isPidInWindowsTable conservatively returns
78
89
  // true, so we never declare a genuinely live process dead.)
79
90
  if (process.platform === "win32")
80
- return isPidInWindowsTable(pid);
91
+ return isPidInWindowsTable(pid, spawnedAtMs);
81
92
  return true;
82
93
  }
83
94
  const WIN_PID_SNAPSHOT_TTL_MS = 2000;
95
+ // A snapshot older than this is discarded rather than trusted: a very stale pid
96
+ // set would mark freshly-spawned processes dead (they're absent from it), and a
97
+ // stale start-time map is merely incomplete. Normal refreshes complete in well
98
+ // under a second, so this bound is only reached when refreshes keep failing —
99
+ // at which point the getters degrade to null (= "can't confirm" → alive).
100
+ const WIN_SNAPSHOT_MAX_STALE_MS = 15_000;
101
+ // Circuit breaker for the snapshot commands. When the OS throttles external
102
+ // process spawns (battery / Energy Saver / EDR), tasklist and powershell hang
103
+ // their full 5s timeout on EVERY call. The former synchronous snapshots then
104
+ // froze the event loop for 5s at a time, so newly-spawned agent children could
105
+ // not complete the MCP initialize/tools-list handshake and started TOOLLESS —
106
+ // then exited cleanly and were respawned forever (the 2026-07-17 respawn storm,
107
+ // see implementation_plans/2026-07-18_toolless-respawn-storm.md). Refreshes are
108
+ // now async (never on the event loop) and, after repeated failures, paused
109
+ // entirely for a cooldown instead of hammering a throttled OS every sweep.
110
+ const SNAPSHOT_BREAKER_THRESHOLD = 3;
111
+ const SNAPSHOT_BREAKER_COOLDOWN_MS = 60_000;
112
+ function makeSnapshotBreaker(label) {
113
+ let consecutiveFailures = 0;
114
+ let openUntil = 0;
115
+ return {
116
+ isOpen: () => Date.now() < openUntil,
117
+ recordSuccess: () => {
118
+ consecutiveFailures = 0;
119
+ },
120
+ recordFailure: (err) => {
121
+ consecutiveFailures++;
122
+ if (consecutiveFailures >= SNAPSHOT_BREAKER_THRESHOLD) {
123
+ openUntil = Date.now() + SNAPSHOT_BREAKER_COOLDOWN_MS;
124
+ // Reset on open so re-opening after the cooldown requires THRESHOLD
125
+ // fresh failures — one lingering failure must not instantly re-trip.
126
+ consecutiveFailures = 0;
127
+ log.warn(`[process] ${label} snapshot failed ${SNAPSHOT_BREAKER_THRESHOLD}x consecutively (${errorMessage(err)}) — pausing refreshes for ${SNAPSHOT_BREAKER_COOLDOWN_MS / 1000}s`);
128
+ }
129
+ else {
130
+ log.debug(`[process] ${label} snapshot failed: ${errorMessage(err)}`);
131
+ }
132
+ },
133
+ };
134
+ }
84
135
  /** Authoritative Windows liveness check via the process table, which — unlike
85
136
  * OpenProcess/process.kill(0) — does NOT list a terminated process whose PID is
86
- * still held by a lingering handle. A single `tasklist` snapshot of ALL pids is
87
- * taken at most once per TTL window and reused for every pid, so a sweep over
88
- * many threads costs one spawn, not N, and never blocks the loop repeatedly. */
137
+ * still held by a lingering handle. One `tasklist` snapshot of ALL pids serves
138
+ * every pid in a sweep, and it is refreshed asynchronously in the background:
139
+ * the getter reads the cached snapshot and NEVER blocks the event loop (a 5s
140
+ * synchronous hang here is what starved MCP handshakes and caused the toolless
141
+ * respawn storm). Callers treat null as "can't confirm dead" → alive. */
89
142
  let winPidSnapshot = null;
90
- function getWindowsPidSet() {
91
- const now = Date.now();
92
- if (winPidSnapshot && now - winPidSnapshot.ts < WIN_PID_SNAPSHOT_TTL_MS)
93
- return winPidSnapshot.pids;
94
- try {
95
- // /NH = no header, /FO CSV = quoted columns; PID is column 2: "image","PID",...
96
- const out = execFileSync("tasklist", ["/NH", "/FO", "CSV"], { encoding: "utf-8", windowsHide: true, timeout: 5000 });
143
+ let winPidRefreshInFlight = false;
144
+ const pidSnapshotBreaker = makeSnapshotBreaker("tasklist");
145
+ function refreshWindowsPidSet() {
146
+ if (winPidRefreshInFlight || pidSnapshotBreaker.isOpen())
147
+ return;
148
+ winPidRefreshInFlight = true;
149
+ // The snapshot's ts is the REFRESH START: the process table is read at (or
150
+ // after) this instant, so any pid spawned later can legitimately be absent.
151
+ const refreshStartedAt = Date.now();
152
+ // /NH = no header, /FO CSV = quoted columns; PID is column 2: "image","PID",...
153
+ execFile("tasklist", ["/NH", "/FO", "CSV"], { encoding: "utf-8", windowsHide: true, timeout: 5000 }, (err, out) => {
154
+ winPidRefreshInFlight = false;
155
+ if (err) {
156
+ pidSnapshotBreaker.recordFailure(err);
157
+ return;
158
+ }
159
+ pidSnapshotBreaker.recordSuccess();
97
160
  const pids = new Set();
98
161
  for (const m of out.matchAll(/^"[^"]*","(\d+)"/gm))
99
162
  pids.add(Number(m[1]));
100
- winPidSnapshot = { pids, ts: now };
101
- return pids;
102
- }
103
- catch (err) {
104
- log.debug(`[process] tasklist snapshot failed: ${errorMessage(err)} — assuming pids alive`);
105
- return null; // conservative: caller treats null as "can't confirm dead" → alive
106
- }
163
+ winPidSnapshot = { pids, ts: refreshStartedAt };
164
+ });
107
165
  }
108
- function isPidInWindowsTable(pid) {
166
+ function getWindowsPidSet() {
167
+ const now = Date.now();
168
+ if (!winPidSnapshot || now - winPidSnapshot.ts >= WIN_PID_SNAPSHOT_TTL_MS)
169
+ refreshWindowsPidSet();
170
+ if (winPidSnapshot && now - winPidSnapshot.ts < WIN_SNAPSHOT_MAX_STALE_MS)
171
+ return winPidSnapshot.pids;
172
+ return null; // no usable snapshot — conservative: never declare a real process dead
173
+ }
174
+ function isPidInWindowsTable(pid, spawnedAtMs) {
109
175
  const pids = getWindowsPidSet();
110
176
  if (pids === null)
111
177
  return true; // tasklist unavailable — never declare a real process dead
112
- return pids.has(pid);
178
+ if (pids.has(pid))
179
+ return true;
180
+ // Absent from the table — but if the process was spawned AFTER the snapshot
181
+ // was taken, the absence proves nothing (the table simply predates it).
182
+ // Treat as alive; the refresh already triggered above will testify shortly.
183
+ return spawnedAtMs !== undefined && spawnedAtMs >= winPidSnapshot.ts;
113
184
  }
114
185
  // Tolerance between the pid-file's recorded startedAt (Date.now() at spawn) and
115
186
  // the OS process creation time. Wide enough to absorb spawn latency and a wall-
@@ -117,29 +188,45 @@ function isPidInWindowsTable(pid) {
117
188
  // to-hours gap a recycled PID produces — so PID reuse is still caught.
118
189
  const PID_IDENTITY_TOLERANCE_MS = 60_000;
119
190
  const WIN_START_SNAPSHOT_TTL_MS = 2000;
120
- /** One powershell snapshot of every pid's creation time (Unix ms), taken at most
121
- * once per TTL window and reused for all pids in a keeper sweep — mirroring the
122
- * tasklist snapshot so a sweep over N threads costs one spawn, not N. StartTime
123
- * is unreadable for some protected processes; those are simply omitted (callers
124
- * treat a missing entry as "can't tell" → keep prior behavior). */
191
+ /** One powershell snapshot of every pid's creation time (Unix ms), reused for
192
+ * all pids in a keeper sweep and refreshed asynchronously in the background —
193
+ * same non-blocking pattern as the tasklist snapshot above. Staleness is safe
194
+ * here: a pid's start time never changes, so an old map is merely missing new
195
+ * pids, and a missing entry already means "can't tell" → trust PID. StartTime
196
+ * is unreadable for some protected processes; those are simply omitted. */
125
197
  let winStartSnapshot = null;
126
- function getWindowsStartTimeMap() {
127
- const now = Date.now();
128
- if (winStartSnapshot && now - winStartSnapshot.ts < WIN_START_SNAPSHOT_TTL_MS)
129
- return winStartSnapshot.starts;
130
- try {
131
- const out = execFileSync("powershell", ["-NoProfile", "-Command", "Get-Process | ForEach-Object { try { \"$($_.Id) $($_.StartTime.ToUniversalTime().Ticks)\" } catch {} }"], { encoding: "utf-8", windowsHide: true, timeout: 5000 });
198
+ let winStartRefreshInFlight = false;
199
+ const startSnapshotBreaker = makeSnapshotBreaker("start-time");
200
+ function refreshWindowsStartTimeMap() {
201
+ if (winStartRefreshInFlight || startSnapshotBreaker.isOpen())
202
+ return;
203
+ winStartRefreshInFlight = true;
204
+ const refreshStartedAt = Date.now();
205
+ execFile("powershell", [
206
+ "-NoProfile",
207
+ "-Command",
208
+ 'Get-Process | ForEach-Object { try { "$($_.Id) $($_.StartTime.ToUniversalTime().Ticks)" } catch {} }',
209
+ ], { encoding: "utf-8", windowsHide: true, timeout: 5000 }, (err, out) => {
210
+ winStartRefreshInFlight = false;
211
+ if (err) {
212
+ startSnapshotBreaker.recordFailure(err);
213
+ return;
214
+ }
215
+ startSnapshotBreaker.recordSuccess();
132
216
  const starts = new Map();
133
217
  for (const m of out.matchAll(/^(\d+) (\d+)$/gm)) {
134
218
  starts.set(Number(m[1]), Math.round(Number(m[2]) / 10000 - 62135596800000)); // .NET ticks (100ns from year 1) → Unix ms
135
219
  }
136
- winStartSnapshot = { starts, ts: now };
137
- return starts;
138
- }
139
- catch (err) {
140
- log.debug(`[process] start-time snapshot failed: ${errorMessage(err)} — skipping identity check`);
141
- return null; // conservative: caller treats null as "can't confirm" → trust PID
142
- }
220
+ winStartSnapshot = { starts, ts: refreshStartedAt };
221
+ });
222
+ }
223
+ function getWindowsStartTimeMap() {
224
+ const now = Date.now();
225
+ if (!winStartSnapshot || now - winStartSnapshot.ts >= WIN_START_SNAPSHOT_TTL_MS)
226
+ refreshWindowsStartTimeMap();
227
+ if (winStartSnapshot && now - winStartSnapshot.ts < WIN_SNAPSHOT_MAX_STALE_MS)
228
+ return winStartSnapshot.starts;
229
+ return null; // no usable snapshot — conservative: caller trusts the PID
143
230
  }
144
231
  /** Windows process creation time as Unix ms, or undefined if unavailable.
145
232
  * Lets us tell OUR process apart from an unrelated one the OS assigned the
@@ -156,47 +243,60 @@ function processStartMs(pid) {
156
243
  function isSameProcess(pid, startedAt) {
157
244
  if (startedAt === undefined)
158
245
  return true; // nothing recorded to compare — trust PID
246
+ // Our process was spawned AFTER the current start-time map was taken: any
247
+ // entry the map holds for this pid describes a PREVIOUS owner of the (since
248
+ // recycled) pid, not our child — comparing against it would wrongly reject
249
+ // our own fresh process. Trust the PID until a fresher map exists.
250
+ if (process.platform === "win32" &&
251
+ winStartSnapshot !== null &&
252
+ startedAt >= winStartSnapshot.ts) {
253
+ return true;
254
+ }
159
255
  const actual = processStartMs(pid);
160
256
  if (actual === undefined)
161
257
  return true; // can't read start time — keep prior behavior
162
258
  return Math.abs(actual - startedAt) < PID_IDENTITY_TOLERANCE_MS;
163
259
  }
164
260
  /** Descendants of rootPid (including root), ordered leaves-first (post-order),
165
- * from one process-table snapshot. Fallback for when `taskkill /T` fails to
166
- * tear the whole tree down: a single wedged descendant can make taskkill abort
167
- * the tree, so killing each PID individually lets the still-killable relatives
168
- * (often including the root) go down anyway. */
169
- function getWindowsProcessTreeLeafFirst(rootPid) {
170
- let out;
171
- try {
172
- out = execFileSync("powershell", ["-NoProfile", "-Command", "Get-CimInstance Win32_Process | ForEach-Object { \"$($_.ProcessId) $($_.ParentProcessId)\" }"], { encoding: "utf-8", windowsHide: true, timeout: 5000 });
173
- }
174
- catch (err) {
175
- log.debug(`[process] process-tree snapshot failed: ${errorMessage(err)} — falling back to root only`);
176
- return [rootPid];
177
- }
178
- const children = new Map();
179
- for (const m of out.matchAll(/^(\d+) (\d+)$/gm)) {
180
- const pid = Number(m[1]);
181
- const ppid = Number(m[2]);
182
- const list = children.get(ppid);
183
- if (list)
184
- list.push(pid);
185
- else
186
- children.set(ppid, [pid]);
187
- }
188
- const ordered = [];
189
- const seen = new Set();
190
- const visit = (pid) => {
191
- if (seen.has(pid))
192
- return; // guard against cycles / PID-reuse loops
193
- seen.add(pid);
194
- for (const child of children.get(pid) ?? [])
195
- visit(child);
196
- ordered.push(pid); // post-order → leaves first, root last
197
- };
198
- visit(rootPid);
199
- return ordered;
261
+ * from one process-table snapshot, delivered via callback (async so the kill
262
+ * escalation path never blocks the event loop either). Fallback for when
263
+ * `taskkill /T` fails to tear the whole tree down: a single wedged descendant
264
+ * can make taskkill abort the tree, so killing each PID individually lets the
265
+ * still-killable relatives (often including the root) go down anyway. */
266
+ function getWindowsProcessTreeLeafFirst(rootPid, done) {
267
+ execFile("powershell", [
268
+ "-NoProfile",
269
+ "-Command",
270
+ 'Get-CimInstance Win32_Process | ForEach-Object { "$($_.ProcessId) $($_.ParentProcessId)" }',
271
+ ], { encoding: "utf-8", windowsHide: true, timeout: 5000 }, (err, out) => {
272
+ if (err) {
273
+ log.debug(`[process] process-tree snapshot failed: ${errorMessage(err)} — falling back to root only`);
274
+ done([rootPid]);
275
+ return;
276
+ }
277
+ const children = new Map();
278
+ for (const m of out.matchAll(/^(\d+) (\d+)$/gm)) {
279
+ const pid = Number(m[1]);
280
+ const ppid = Number(m[2]);
281
+ const list = children.get(ppid);
282
+ if (list)
283
+ list.push(pid);
284
+ else
285
+ children.set(ppid, [pid]);
286
+ }
287
+ const ordered = [];
288
+ const seen = new Set();
289
+ const visit = (pid) => {
290
+ if (seen.has(pid))
291
+ return; // guard against cycles / PID-reuse loops
292
+ seen.add(pid);
293
+ for (const child of children.get(pid) ?? [])
294
+ visit(child);
295
+ ordered.push(pid); // post-order → leaves first, root last
296
+ };
297
+ visit(rootPid);
298
+ done(ordered);
299
+ });
200
300
  }
201
301
  /** Force-kill each PID in order, one at a time, tolerating any that refuse (a
202
302
  * wedged leaf must not block the ones after it). Async so a sweep over a deep
@@ -275,15 +375,25 @@ export function findAliveThread(threadId) {
275
375
  const thread = spawnedThreads[i];
276
376
  if (thread.threadId !== threadId)
277
377
  continue;
278
- if (isProcessAlive(thread.pid) && isSameProcess(thread.pid, thread.startedAt))
378
+ if (isProcessAlive(thread.pid, thread.startedAt) && isSameProcess(thread.pid, thread.startedAt))
279
379
  return thread;
280
380
  log.warn(`[findAliveThread] Thread ${threadId} PID ${thread.pid} stale in spawnedThreads - removing`);
281
381
  spawnedThreads.splice(i, 1);
282
382
  }
283
- const pidEntry = readPidFiles().find((entry) => entry.threadId === threadId && isProcessAlive(entry.pid) && isSameProcess(entry.pid, entry.startedAt));
383
+ const pidEntry = readPidFiles().find((entry) => entry.threadId === threadId &&
384
+ isProcessAlive(entry.pid, entry.startedAt) &&
385
+ isSameProcess(entry.pid, entry.startedAt));
284
386
  if (!pidEntry)
285
387
  return undefined;
286
- const restored = { pid: pidEntry.pid, threadId, name: pidEntry.name ?? `Thread ${threadId}`, startedAt: pidEntry.startedAt ?? Date.now(), createdAt: pidEntry.startedAt ?? Date.now(), logFile: "", ...(pidEntry.threadType ? { threadType: pidEntry.threadType } : {}) };
388
+ const restored = {
389
+ pid: pidEntry.pid,
390
+ threadId,
391
+ name: pidEntry.name ?? `Thread ${threadId}`,
392
+ startedAt: pidEntry.startedAt ?? Date.now(),
393
+ createdAt: pidEntry.startedAt ?? Date.now(),
394
+ logFile: "",
395
+ ...(pidEntry.threadType ? { threadType: pidEntry.threadType } : {}),
396
+ };
287
397
  spawnedThreads.push(restored);
288
398
  log.info(`[findAliveThread] Restored thread ${threadId} PID=${pidEntry.pid} from PID file`);
289
399
  return restored;
@@ -292,13 +402,13 @@ export const isThreadRunning = (threadId) => findAliveThread(threadId) !== undef
292
402
  export function getActiveThreadIds() {
293
403
  // Workers are disposable and not eligible for reconnect — exclude them.
294
404
  const spawned = spawnedThreads
295
- .filter(t => t.threadType !== "worker" && isProcessAlive(t.pid))
296
- .map(t => t.threadId);
405
+ .filter((t) => t.threadType !== "worker" && isProcessAlive(t.pid, t.startedAt))
406
+ .map((t) => t.threadId);
297
407
  // Also include threads from active MCP sessions (root threads that aren't
298
408
  // in spawnedThreads because they connected externally, not spawned by us).
299
409
  const sessionThreadIds = getDashboardSessions()
300
- .filter(s => s.status === "active" && s.threadId != null)
301
- .map(s => s.threadId);
410
+ .filter((s) => s.status === "active" && s.threadId != null)
411
+ .map((s) => s.threadId);
302
412
  return [...new Set([...spawned, ...sessionThreadIds])];
303
413
  }
304
414
  export function ensureDirs() {
@@ -330,7 +440,9 @@ export function pruneOldThreadLogs() {
330
440
  removed++;
331
441
  }
332
442
  }
333
- catch { /* file vanished or locked — skip */ }
443
+ catch {
444
+ /* file vanished or locked — skip */
445
+ }
334
446
  }
335
447
  if (removed > 0)
336
448
  log.info(`[process] Pruned ${removed} thread transcript(s) older than ${days}d`);
@@ -348,11 +460,13 @@ export function findAliveThreadViaPidFile(threadId) {
348
460
  const entry = readPidFiles().find((e) => e.threadId === threadId);
349
461
  if (!entry)
350
462
  return undefined;
351
- if (!isProcessAlive(entry.pid) || !isSameProcess(entry.pid, entry.startedAt)) {
463
+ if (!isProcessAlive(entry.pid, entry.startedAt) || !isSameProcess(entry.pid, entry.startedAt)) {
352
464
  try {
353
465
  unlinkSync(entry.filePath);
354
466
  }
355
- catch { }
467
+ catch {
468
+ /* stale PID file locked or already gone */
469
+ }
356
470
  return undefined;
357
471
  }
358
472
  return entry.pid;
@@ -378,20 +492,22 @@ export function reconcileState(db, threadLifecycle) {
378
492
  // If the process is still alive it's an orphan that must be reaped — never
379
493
  // just drop the PID file, or the live process becomes untrackable.
380
494
  // killProcessTree removes the PID file itself once the process is confirmed dead.
381
- if (isProcessAlive(pidEntry.pid)) {
495
+ if (isProcessAlive(pidEntry.pid, pidEntry.startedAt)) {
382
496
  log.warn(`[reconcileState] Live process for thread ${pidEntry.threadId} (PID=${pidEntry.pid}) has no active DB record — killing orphan`);
383
- void killProcessTree(pidEntry.pid, pidEntry.threadId, "reconcile-orphan");
497
+ void killProcessTree(pidEntry.pid, pidEntry.threadId, "reconcile-orphan", pidEntry.startedAt);
384
498
  }
385
499
  else {
386
500
  log.warn(`[reconcileState] PID file for thread ${pidEntry.threadId} has no DB record — removing`);
387
501
  try {
388
502
  unlinkSync(pidEntry.filePath);
389
503
  }
390
- catch { }
504
+ catch {
505
+ /* stale PID file locked or already gone */
506
+ }
391
507
  }
392
508
  continue;
393
509
  }
394
- if (isProcessAlive(pidEntry.pid)) {
510
+ if (isProcessAlive(pidEntry.pid, pidEntry.startedAt)) {
395
511
  // Alive: populate spawnedThreads[] if not already present
396
512
  if (!spawnedThreads.some((t) => t.threadId === pidEntry.threadId)) {
397
513
  spawnedThreads.push({
@@ -411,7 +527,9 @@ export function reconcileState(db, threadLifecycle) {
411
527
  try {
412
528
  unlinkSync(pidEntry.filePath);
413
529
  }
414
- catch { }
530
+ catch {
531
+ /* stale PID file locked or already gone */
532
+ }
415
533
  log.info(`[reconcileState] Cleaned stale PID file for thread ${pidEntry.threadId} (PID=${pidEntry.pid} dead)`);
416
534
  if (["active", "exiting", "spawning", "stuck"].includes(dbThread.status)) {
417
535
  try {
@@ -439,7 +557,7 @@ export function reconcileState(db, threadLifecycle) {
439
557
  // keeper wrongly flags it UNKILLABLE. Give taskkill headroom to finish; the
440
558
  // caller still verifies liveness afterwards, so a fast kill returns immediately.
441
559
  const TASKKILL_TIMEOUT_MS = 60_000;
442
- export function killProcessTree(pid, threadId, caller) {
560
+ export function killProcessTree(pid, threadId, caller, spawnedAtMs) {
443
561
  return new Promise((resolve) => {
444
562
  // Self-protection: NEVER tree-kill our own process or the authoritative
445
563
  // server PID. The leading hypothesis for the traceless server death is a
@@ -464,10 +582,19 @@ export function killProcessTree(pid, threadId, caller) {
464
582
  try {
465
583
  unlinkSync(pidFile);
466
584
  }
467
- catch { }
585
+ catch {
586
+ /* PID file already gone (exit handler may have raced us) */
587
+ }
468
588
  };
469
589
  const verifyDead = (attempt) => {
470
- if (!isProcessAlive(pid)) {
590
+ // spawnedAtMs matters here for orphan-kill callers reaping FRESH pids: a
591
+ // failed kill must not let a pre-spawn snapshot falsely confirm death and
592
+ // unlink a live process's pid file. A genuinely dead child is usually
593
+ // caught by the kill(0) ESRCH probe or a post-spawn snapshot refresh; if
594
+ // neither lands within the 3 attempts (refresh in flight / breaker open),
595
+ // we resolve as "still alive" and KEEP the pid file — conservative, and a
596
+ // later sweep finishes the cleanup against a fresher snapshot.
597
+ if (!isProcessAlive(pid, spawnedAtMs)) {
471
598
  log.info(`[process] Killed process tree for thread ${threadId} PID=${pid}`);
472
599
  cleanupPidFile();
473
600
  resolve();
@@ -501,16 +628,19 @@ export function killProcessTree(pid, threadId, caller) {
501
628
  // blocks the parent's termination — the exact case where the root sat
502
629
  // alive for hours. Kill each descendant leaves-first so a wedged child is
503
630
  // reaped before its parent, freeing the root to die.
504
- const tree = getWindowsProcessTreeLeafFirst(pid);
505
- killPidsSequentiallyWin(tree, () => {
506
- setTimeout(() => verifyDead(attempt + 1), 1000);
631
+ getWindowsProcessTreeLeafFirst(pid, (tree) => {
632
+ killPidsSequentiallyWin(tree, () => {
633
+ setTimeout(() => verifyDead(attempt + 1), 1000);
634
+ });
507
635
  });
508
636
  }
509
637
  else {
510
638
  try {
511
639
  process.kill(pid, "SIGKILL");
512
640
  }
513
- catch { }
641
+ catch {
642
+ /* process already gone (ESRCH) — verifyDead confirms */
643
+ }
514
644
  setTimeout(() => verifyDead(attempt + 1), 1000);
515
645
  }
516
646
  };
@@ -1 +1 @@
1
- {"version":3,"file":"process.service.js","sourceRoot":"","sources":["../../src/services/process.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.service.js","sourceRoot":"","sources":["../../src/services/process.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect-snapshot.service.d.ts","sourceRoot":"","sources":["../../src/services/reconnect-snapshot.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAchE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAyC9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAS7C"}
1
+ {"version":3,"file":"reconnect-snapshot.service.d.ts","sourceRoot":"","sources":["../../src/services/reconnect-snapshot.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAchE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA6C9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAS7C"}
@@ -6,10 +6,10 @@
6
6
  * The snapshot is valid for 10 minutes. After that it is either deleted
7
7
  * by the auto-cleanup timer or ignored (too old) by isReconnectCandidate.
8
8
  */
9
- import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
9
+ import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
10
10
  import { homedir } from "node:os";
11
11
  import { join } from "node:path";
12
- import { log } from "../logger.js";
12
+ import { log } from "../lib/logger.js";
13
13
  const DATA_DIR = join(homedir(), ".remote-copilot-mcp");
14
14
  const SNAPSHOT_PATH = join(DATA_DIR, "active-sessions.json");
15
15
  const SNAPSHOT_MAX_AGE_MS = 15 * 60 * 1000; // 15 minutes
@@ -64,7 +64,7 @@ export function isReconnectCandidate(threadId) {
64
64
  return false;
65
65
  }
66
66
  // Consume: remove this threadId so it can't match again
67
- snapshot.threadIds = snapshot.threadIds.filter(id => id !== threadId);
67
+ snapshot.threadIds = snapshot.threadIds.filter((id) => id !== threadId);
68
68
  try {
69
69
  if (snapshot.threadIds.length === 0) {
70
70
  unlinkSync(SNAPSHOT_PATH);
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect-snapshot.service.js","sourceRoot":"","sources":["../../src/services/reconnect-snapshot.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconnect-snapshot.service.js","sourceRoot":"","sources":["../../src/services/reconnect-snapshot.service.ts"],"names":[],"mappings":"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"}