sensorium-mcp 3.0.103 → 3.1.0-refactor.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 (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
@@ -8,29 +8,7 @@
8
8
  * Schedule state is persisted to disk per-thread so tasks survive restarts.
9
9
  * The wait_for_instructions polling loop checks for due tasks on each timeout.
10
10
  */
11
- import type { IScheduleRepository } from "./data/interfaces.js";
12
- export interface ScheduledTask {
13
- /** Unique task ID (auto-generated). */
14
- id: string;
15
- /** Thread ID this task is scoped to. */
16
- threadId: number;
17
- /** The prompt to inject when the task fires. */
18
- prompt: string;
19
- /** Human-readable label for the task. */
20
- label: string;
21
- /** When set, task fires after this many minutes of operator silence. */
22
- afterIdleMinutes?: number;
23
- /** When set, ISO 8601 timestamp for one-shot scheduled execution. */
24
- runAt?: string;
25
- /** When set, cron expression for recurring execution (minute hour day month weekday). */
26
- cron?: string;
27
- /** Timestamp of last execution (ISO string), for cron dedup. */
28
- lastFiredAt?: string;
29
- /** If true, the task is a one-shot and should be removed after firing. */
30
- oneShot: boolean;
31
- /** Creation timestamp (ISO string). */
32
- createdAt: string;
33
- }
11
+ import type { IScheduleRepository, ScheduledTask } from "../data/interfaces.js";
34
12
  export declare class ScheduleRepository implements IScheduleRepository {
35
13
  loadSchedule(threadId: number): ScheduledTask[];
36
14
  saveSchedule(threadId: number, tasks: ScheduledTask[]): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/services/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKhF,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAI/C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI;IAI5D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAItC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;CAGjD;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AA+B3D,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAIrD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAgDD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,qBAAqB,EAAE,MAAM,EAC7B,cAAc,EAAE,OAAO,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAgHhD"}
@@ -8,11 +8,11 @@
8
8
  * Schedule state is persisted to disk per-thread so tasks survive restarts.
9
9
  * The wait_for_instructions polling loop checks for due tasks on each timeout.
10
10
  */
11
- import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
11
+ import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
12
12
  import { randomUUID } from "node:crypto";
13
13
  import { homedir } from "node:os";
14
14
  import { join } from "node:path";
15
- import { log } from "./logger.js";
15
+ import { log } from "../lib/logger.js";
16
16
  const SCHEDULES_DIR = join(homedir(), ".remote-copilot-mcp", "schedules");
17
17
  export class ScheduleRepository {
18
18
  loadSchedule(threadId) {
@@ -63,7 +63,7 @@ export function addSchedule(task) {
63
63
  }
64
64
  export function removeSchedule(threadId, taskId) {
65
65
  const tasks = loadSchedules(threadId);
66
- const idx = tasks.findIndex(t => t.id === taskId);
66
+ const idx = tasks.findIndex((t) => t.id === taskId);
67
67
  if (idx === -1)
68
68
  return false;
69
69
  tasks.splice(idx, 1);
@@ -102,8 +102,8 @@ export function generateTaskId() {
102
102
  function matchesCronField(field, value) {
103
103
  if (field === "*")
104
104
  return true;
105
- const parts = field.split(",").map(s => s.trim());
106
- return parts.some(p => Number(p) === value);
105
+ const parts = field.split(",").map((s) => s.trim());
106
+ return parts.some((p) => Number(p) === value);
107
107
  }
108
108
  function matchesCron(cronExpr, date) {
109
109
  const fields = cronExpr.trim().split(/\s+/);
@@ -201,9 +201,7 @@ export function checkDueTasks(threadId, lastOperatorMessageAt, hasNewMessages) {
201
201
  // the dedup logic prevents re-firing on the next poll.
202
202
  const lastMatch = getLastCronMatch(task.cron, now);
203
203
  if (lastMatch) {
204
- const lastFiredTime = task.lastFiredAt
205
- ? new Date(task.lastFiredAt).getTime()
206
- : 0;
204
+ const lastFiredTime = task.lastFiredAt ? new Date(task.lastFiredAt).getTime() : 0;
207
205
  if (lastFiredTime < lastMatch.getTime()) {
208
206
  if (hasNewMessages) {
209
207
  // Operator is active — skip catch-up
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/services/scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Self-update service — polls npm registry for new versions of sensorium-mcp
3
- * and performs a graceful self-spawn update when a newer version is found.
2
+ * Self-update service — polls the npm registry for the version published on
3
+ * the update channel and performs a graceful self-spawn update on ANY version
4
+ * mismatch (newer OR older — the latter is the channel-switch rollback path).
4
5
  *
5
6
  * Entry point: startSelfUpdatePoller({ pkgVersion, httpPort })
6
7
  * Call once after the HTTP server is listening (HTTP mode only).
@@ -10,16 +11,25 @@
10
11
  * SELF_UPDATE_POLL_INTERVAL_MS Registry check interval (default: 60000)
11
12
  * SELF_UPDATE_MIN_UPTIME_MS Min uptime before first update (default: 600000)
12
13
  * SELF_UPDATE_GRACE_MS Grace period for agents to observe flag (default: 30000)
13
- * MCP_START_COMMAND Replacement spawn command (default: npx -y sensorium-mcp@latest --prefer-online)
14
+ * MCP_START_COMMAND Replacement spawn command (default: npx -y sensorium-mcp@<target> --prefer-online)
15
+ *
16
+ * Update channel:
17
+ * Derived from MCP_START_COMMAND — the npm spec tag in "sensorium-mcp@<tag>"
18
+ * (e.g. @latest or @refactor). The supervisor propagates this env var from
19
+ * install.config.json (MCPStartCommand) via Install-Sensorium.ps1, so the
20
+ * channel the poller follows always matches the command the replacement
21
+ * process is spawned with. Switch channels by editing install.config.json
22
+ * and re-running Install-Sensorium.ps1. No env var / no tag = "latest".
14
23
  */
15
24
  /**
16
- * Fetch the latest published version of sensorium-mcp from the npm registry.
25
+ * Fetch the published version of sensorium-mcp for the current update channel
26
+ * (npm dist-tag) from the registry.
17
27
  * Returns null on any error so the caller can silently skip this poll cycle.
18
28
  */
19
29
  export declare function getRemoteVersion(): Promise<string | null>;
20
30
  /**
21
31
  * Run one check cycle: compare remote version to current and trigger update
22
- * if a newer version is available.
32
+ * on any mismatch (an older remote means the channel moved back — downgrade).
23
33
  */
24
34
  export declare function checkForUpdate(): Promise<void>;
25
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.service.d.ts","sourceRoot":"","sources":["../../src/services/self-update.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyHH;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoB/D;AAmID;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BpD;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAkBxI"}
1
+ {"version":3,"file":"self-update.service.d.ts","sourceRoot":"","sources":["../../src/services/self-update.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAyJH;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB/D;AAyJD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCpD;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC5C,GAAG,IAAI,CAoBP"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Self-update service — polls npm registry for new versions of sensorium-mcp
3
- * and performs a graceful self-spawn update when a newer version is found.
2
+ * Self-update service — polls the npm registry for the version published on
3
+ * the update channel and performs a graceful self-spawn update on ANY version
4
+ * mismatch (newer OR older — the latter is the channel-switch rollback path).
4
5
  *
5
6
  * Entry point: startSelfUpdatePoller({ pkgVersion, httpPort })
6
7
  * Call once after the HTTP server is listening (HTTP mode only).
@@ -10,31 +11,43 @@
10
11
  * SELF_UPDATE_POLL_INTERVAL_MS Registry check interval (default: 60000)
11
12
  * SELF_UPDATE_MIN_UPTIME_MS Min uptime before first update (default: 600000)
12
13
  * SELF_UPDATE_GRACE_MS Grace period for agents to observe flag (default: 30000)
13
- * MCP_START_COMMAND Replacement spawn command (default: npx -y sensorium-mcp@latest --prefer-online)
14
+ * MCP_START_COMMAND Replacement spawn command (default: npx -y sensorium-mcp@<target> --prefer-online)
15
+ *
16
+ * Update channel:
17
+ * Derived from MCP_START_COMMAND — the npm spec tag in "sensorium-mcp@<tag>"
18
+ * (e.g. @latest or @refactor). The supervisor propagates this env var from
19
+ * install.config.json (MCPStartCommand) via Install-Sensorium.ps1, so the
20
+ * channel the poller follows always matches the command the replacement
21
+ * process is spawned with. Switch channels by editing install.config.json
22
+ * and re-running Install-Sensorium.ps1. No env var / no tag = "latest".
14
23
  */
15
24
  import { spawn } from "node:child_process";
16
25
  import { closeSync, mkdirSync, openSync, unlinkSync, writeFileSync } from "node:fs";
17
26
  import { homedir } from "node:os";
18
27
  import { join } from "node:path";
19
- import { log } from "../logger.js";
28
+ import { log } from "../lib/logger.js";
20
29
  import { emitMaintenanceSignal, hasObservedMaintenance } from "./maintenance-signal.js";
21
30
  import { writeReconnectSnapshot } from "./reconnect-snapshot.service.js";
22
31
  import { getActiveThreadIds } from "./process.service.js";
23
- import { getLiveWaitingThreadIds } from "../sessions.js";
32
+ import { getLiveWaitingThreadIds } from "../sessions/dashboard-registry.js";
24
33
  // ---------------------------------------------------------------------------
25
34
  // Module-level state
26
35
  // ---------------------------------------------------------------------------
27
36
  const DATA_DIR = join(homedir(), ".remote-copilot-mcp");
28
37
  const FLAG_PATH = join(DATA_DIR, "maintenance.flag");
29
- let updateInProgress = false;
30
- let currentVersion = "";
31
- let configuredHttpPort = 0;
32
- let beforeSpawnHook = null;
38
+ /** Poller state: the config trio is set once by startSelfUpdatePoller;
39
+ * updateInProgress is the re-entrancy guard for check/update cycles. */
40
+ const state = {
41
+ updateInProgress: false,
42
+ currentVersion: "",
43
+ httpPort: 0,
44
+ beforeSpawnHook: null,
45
+ };
33
46
  // ---------------------------------------------------------------------------
34
47
  // Helpers
35
48
  // ---------------------------------------------------------------------------
36
49
  function sleep(ms) {
37
- return new Promise(resolve => setTimeout(resolve, ms));
50
+ return new Promise((resolve) => setTimeout(resolve, ms));
38
51
  }
39
52
  // Hard cap on the quiesce wait. The update ALWAYS proceeds once this elapses,
40
53
  // even if some agent never acknowledged — quiesce can only add bounded latency,
@@ -59,7 +72,7 @@ const QUIESCE_POLL_MS = 1_000;
59
72
  async function quiesceAgents() {
60
73
  const deadline = Date.now() + QUIESCE_MAX_MS;
61
74
  while (Date.now() < deadline) {
62
- const pending = getLiveWaitingThreadIds().filter(id => !hasObservedMaintenance(id));
75
+ const pending = getLiveWaitingThreadIds().filter((id) => !hasObservedMaintenance(id));
63
76
  if (pending.length === 0) {
64
77
  log.info("[self-update] Quiesce complete — all live agents observed maintenance.");
65
78
  return;
@@ -107,7 +120,7 @@ async function waitForHealthy(port, targetVersion, timeoutMs = 180_000) {
107
120
  try {
108
121
  const resp = await fetch(url, { signal: AbortSignal.timeout(3_000) });
109
122
  if (resp.ok) {
110
- const data = await resp.json();
123
+ const data = (await resp.json());
111
124
  if (data.version === targetVersion)
112
125
  return true;
113
126
  // Old server still responding — keep waiting for new one
@@ -122,18 +135,40 @@ async function waitForHealthy(port, targetVersion, timeoutMs = 180_000) {
122
135
  // ---------------------------------------------------------------------------
123
136
  // Core logic
124
137
  // ---------------------------------------------------------------------------
138
+ /** Release channel = the npm dist-tag the poller follows, parsed from the
139
+ * "sensorium-mcp@<tag>" spec in MCP_START_COMMAND (the same command the
140
+ * supervisor spawns this process with, propagated from install.config.json).
141
+ * Because an update fires on ANY version mismatch — not only a newer one —
142
+ * pointing the command back at @latest from a prerelease channel
143
+ * automatically DOWNGRADES to the stable build on the next cycle.
144
+ * A bare version in the spec (e.g. @3.0.32) acts as a version pin.
145
+ * No env var or no @tag in it = "latest". */
146
+ function getUpdateChannel() {
147
+ const cmd = process.env.MCP_START_COMMAND ?? "";
148
+ const m = /(?<![\w.-])sensorium-mcp@([A-Za-z0-9._-]+)/.exec(cmd);
149
+ if (m)
150
+ return m[1];
151
+ if (cmd.includes("sensorium-mcp@")) {
152
+ // e.g. a semver range spec like @^3.0.0 — poller can't follow it, so the
153
+ // channel falls back to "latest" while the spawn command keeps the range.
154
+ log.warn(`[self-update] Cannot parse channel from MCP_START_COMMAND "${cmd}" — following "latest"`);
155
+ }
156
+ return "latest";
157
+ }
125
158
  /**
126
- * Fetch the latest published version of sensorium-mcp from the npm registry.
159
+ * Fetch the published version of sensorium-mcp for the current update channel
160
+ * (npm dist-tag) from the registry.
127
161
  * Returns null on any error so the caller can silently skip this poll cycle.
128
162
  */
129
163
  export async function getRemoteVersion() {
164
+ const channel = getUpdateChannel();
130
165
  try {
131
- const response = await fetch("https://registry.npmjs.org/sensorium-mcp/latest", { signal: AbortSignal.timeout(15_000) });
166
+ const response = await fetch(`https://registry.npmjs.org/sensorium-mcp/${encodeURIComponent(channel)}`, { signal: AbortSignal.timeout(15_000) });
132
167
  if (!response.ok) {
133
- log.warn(`[self-update] Registry responded ${response.status} — skipping`);
168
+ log.warn(`[self-update] Registry responded ${response.status} for channel "${channel}" — skipping`);
134
169
  return null;
135
170
  }
136
- const data = await response.json();
171
+ const data = (await response.json());
137
172
  if (typeof data.version !== "string") {
138
173
  log.warn("[self-update] Registry response missing .version — skipping");
139
174
  return null;
@@ -157,11 +192,11 @@ export async function getRemoteVersion() {
157
192
  * 8b. Unhealthy → kill child, remove flag, abort (MCP continues on current version)
158
193
  */
159
194
  async function performUpdate(targetVersion) {
160
- updateInProgress = true;
195
+ state.updateInProgress = true;
161
196
  try {
162
- log.info(`[self-update] Updating v${currentVersion} -> v${targetVersion}`);
197
+ log.info(`[self-update] Updating v${state.currentVersion} -> v${targetVersion}`);
163
198
  // Best-effort Telegram notification (non-blocking)
164
- void notifyTelegram(`sensorium-mcp: Updating v${currentVersion} -> v${targetVersion}...`);
199
+ void notifyTelegram(`sensorium-mcp: Updating v${state.currentVersion} -> v${targetVersion}...`);
165
200
  // Write maintenance flag
166
201
  try {
167
202
  mkdirSync(DATA_DIR, { recursive: true });
@@ -196,9 +231,10 @@ async function performUpdate(targetVersion) {
196
231
  log.warn(`[self-update] Reconnect snapshot failed (non-fatal): ${err}`);
197
232
  }
198
233
  // Close existing HTTP server to free the port for the replacement process
199
- if (beforeSpawnHook) {
234
+ const beforeSpawn = state.beforeSpawnHook;
235
+ if (beforeSpawn) {
200
236
  log.info("[self-update] Closing HTTP server to free port...");
201
- await beforeSpawnHook();
237
+ await beforeSpawn();
202
238
  }
203
239
  // Spawn the replacement process (detached so it survives our exit)
204
240
  // Pin exact version to bypass stale npx cache (EPERM prevents cache clear on Windows)
@@ -219,8 +255,8 @@ async function performUpdate(targetVersion) {
219
255
  if (child.pid == null) {
220
256
  throw new Error("Spawned child process has no PID — cannot proceed");
221
257
  }
222
- log.info(`[self-update] Replacement PID=${child.pid}, polling health on port ${configuredHttpPort}…`);
223
- const healthy = await waitForHealthy(configuredHttpPort, targetVersion);
258
+ log.info(`[self-update] Replacement PID=${child.pid}, polling health on port ${state.httpPort}…`);
259
+ const healthy = await waitForHealthy(state.httpPort, targetVersion);
224
260
  if (healthy) {
225
261
  // The new server writes its own server.pid on startup (index.ts) with the
226
262
  // real node PID. Do NOT overwrite here — child.pid is the transient shell
@@ -229,7 +265,9 @@ async function performUpdate(targetVersion) {
229
265
  try {
230
266
  unlinkSync(FLAG_PATH);
231
267
  }
232
- catch { /* best-effort */ }
268
+ catch {
269
+ /* best-effort */
270
+ }
233
271
  log.info(`[self-update] Update to v${targetVersion} complete. Exiting.`);
234
272
  process.exit(0);
235
273
  }
@@ -240,16 +278,18 @@ async function performUpdate(targetVersion) {
240
278
  try {
241
279
  child.kill();
242
280
  }
243
- catch { /* may already be dead */ }
281
+ catch {
282
+ /* may already be dead */
283
+ }
244
284
  if (process.platform === "win32") {
245
285
  try {
246
286
  const { execSync } = await import("node:child_process");
247
287
  // Find and kill whatever is bound to our HTTP port
248
- execSync(`for /f "tokens=5" %a in ('netstat -ano ^| findstr :${configuredHttpPort} ^| findstr LISTENING') do taskkill /F /PID %a`, { shell: "cmd.exe", stdio: "ignore", timeout: 10_000 });
249
- log.info(`[self-update] Killed orphan process on port ${configuredHttpPort}`);
288
+ execSync(`for /f "tokens=5" %a in ('netstat -ano ^| findstr :${state.httpPort} ^| findstr LISTENING') do taskkill /F /PID %a`, { shell: "cmd.exe", stdio: "ignore", timeout: 10_000 });
289
+ log.info(`[self-update] Killed orphan process on port ${state.httpPort}`);
250
290
  }
251
291
  catch {
252
- log.warn(`[self-update] Could not kill orphan on port ${configuredHttpPort} — manual cleanup may be needed`);
292
+ log.warn(`[self-update] Could not kill orphan on port ${state.httpPort} — manual cleanup may be needed`);
253
293
  }
254
294
  }
255
295
  // Leave maintenance.flag intact so supervisor doesn't immediately race
@@ -263,20 +303,22 @@ async function performUpdate(targetVersion) {
263
303
  try {
264
304
  unlinkSync(FLAG_PATH);
265
305
  }
266
- catch { /* best-effort */ }
306
+ catch {
307
+ /* best-effort */
308
+ }
267
309
  }
268
310
  finally {
269
- updateInProgress = false;
311
+ state.updateInProgress = false;
270
312
  }
271
313
  }
272
314
  /**
273
315
  * Run one check cycle: compare remote version to current and trigger update
274
- * if a newer version is available.
316
+ * on any mismatch (an older remote means the channel moved back — downgrade).
275
317
  */
276
318
  export async function checkForUpdate() {
277
- if (updateInProgress)
319
+ if (state.updateInProgress)
278
320
  return;
279
- updateInProgress = true;
321
+ state.updateInProgress = true;
280
322
  try {
281
323
  const rawMin = parseInt(process.env.SELF_UPDATE_MIN_UPTIME_MS ?? "", 10);
282
324
  const minUptimeMs = Number.isFinite(rawMin) && rawMin > 0 ? rawMin : 600_000;
@@ -287,17 +329,17 @@ export async function checkForUpdate() {
287
329
  const remoteVersion = await getRemoteVersion();
288
330
  if (remoteVersion === null)
289
331
  return;
290
- if (remoteVersion === currentVersion) {
332
+ if (remoteVersion === state.currentVersion) {
291
333
  // Routine "up to date" result — not logged. It fired every check (~once a
292
334
  // minute) and was pure noise; the meaningful events (update found/applied/
293
335
  // failed) are logged on their own branches.
294
336
  return;
295
337
  }
296
- log.info(`[self-update] New version detected: v${remoteVersion} (current: v${currentVersion})`);
338
+ log.info(`[self-update] Channel version changed: v${remoteVersion} (current: v${state.currentVersion}) — updating`);
297
339
  await performUpdate(remoteVersion);
298
340
  }
299
341
  finally {
300
- updateInProgress = false;
342
+ state.updateInProgress = false;
301
343
  }
302
344
  }
303
345
  // ---------------------------------------------------------------------------
@@ -315,13 +357,15 @@ export function startSelfUpdatePoller(config) {
315
357
  log.info("[self-update] Disabled via SELF_UPDATE_ENABLED=false — skipping.");
316
358
  return;
317
359
  }
318
- currentVersion = config.pkgVersion;
319
- configuredHttpPort = config.httpPort;
360
+ state.currentVersion = config.pkgVersion;
361
+ state.httpPort = config.httpPort;
320
362
  if (config.onBeforeSpawn)
321
- beforeSpawnHook = config.onBeforeSpawn;
363
+ state.beforeSpawnHook = config.onBeforeSpawn;
322
364
  const rawInterval = parseInt(process.env.SELF_UPDATE_POLL_INTERVAL_MS ?? "", 10);
323
365
  const interval = Number.isFinite(rawInterval) && rawInterval > 0 ? rawInterval : 60_000;
324
- log.info(`[self-update] Poller started (current: v${currentVersion}, interval: ${interval}ms)`);
325
- setInterval(() => { void checkForUpdate(); }, interval);
366
+ log.info(`[self-update] Poller started (current: v${state.currentVersion}, interval: ${interval}ms)`);
367
+ setInterval(() => {
368
+ void checkForUpdate();
369
+ }, interval);
326
370
  }
327
371
  //# sourceMappingURL=self-update.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.service.js","sourceRoot":"","sources":["../../src/services/self-update.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-update.service.js","sourceRoot":"","sources":["../../src/services/self-update.service.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * agent module stay focused on its own CLI invocation without duplicating the
9
9
  * lifecycle plumbing.
10
10
  */
11
- import { type ChildProcess } from "node:child_process";
11
+ import { type ChildProcess, type SpawnOptions } from "node:child_process";
12
12
  import { type ThreadLifecycleService } from "./thread-lifecycle.service.js";
13
13
  import type { SensoriumTransport } from "./mcp-config.service.js";
14
14
  /** Result shape shared by every spawn function. */
@@ -31,21 +31,33 @@ export declare const stripDenylistedEnvVars: (vars: Record<string, string>) => R
31
31
  export declare const resolveCliPath: (name: string, prefer?: RegExp) => string | null;
32
32
  /** On Windows: prefer .exe, fall back to .cmd, refuse extensionless shims (e.g. Volta). */
33
33
  export declare function resolveWindowsCliPath(name: string): string | null;
34
- /** Parse MCP transport from env. Returns null if port is not set or invalid. */
35
- export declare function parseSensoriumTransport(): SensoriumTransport | null;
36
34
  export declare const normalizeWorkingDirectory: (workingDirectory?: string) => string | undefined;
37
35
  export declare const isStartupCleanupInProgress: () => boolean;
38
36
  export declare const setStartupCleanupInProgress: (v: boolean) => void;
39
37
  /**
40
- * Global concurrent-spawn guard shared by every agent module. Returns an error
41
- * result when the dashboard's max-concurrent-threads limit is already reached,
42
- * or null when there's room. Kept here so the limit applies uniformly to
43
- * Claude, Copilot and Codex spawns rather than Claude alone.
38
+ * Shared spawn preflight: refuse when the dashboard's max-concurrent-threads
39
+ * limit is already reached, then require the MCP HTTP transport. Kept here so
40
+ * both checks and their error wording apply uniformly to Claude, Copilot and
41
+ * Codex spawns rather than drifting per agent.
44
42
  */
45
- export declare function concurrencyLimitError(): {
43
+ export declare function checkSpawnPreconditions(agentLabel: string): {
44
+ transport: SensoriumTransport;
45
+ } | {
46
46
  error: string;
47
- } | null;
48
- export interface RegisterSpawnOpts {
47
+ };
48
+ /** Per-thread log file: sanitized name + threadId + date under THREAD_LOGS_DIR. */
49
+ export declare function buildThreadLogPath(name: string, threadId: number, ext: "json" | "jsonl"): string;
50
+ /** Session-bootstrap prompt shared by the Claude and Copilot CLIs (Codex
51
+ * delivers its own autonomous-loop prompt over stdin instead). */
52
+ export declare const buildSessionPrompt: (name: string, threadId: number) => string;
53
+ /**
54
+ * Spawn options shared by every agent child: detached from this (ephemeral)
55
+ * server process, stdout/stderr on the child-owned log fd, and .cmd/.bat
56
+ * launched through a shell on Windows. `stdin` defaults to "ignore"; Codex
57
+ * passes "pipe" because it delivers its prompt over stdin.
58
+ */
59
+ export declare function detachedChildOptions(cliPath: string, outFd: number, env: NodeJS.ProcessEnv, cwd: string | undefined, stdin?: "ignore" | "pipe"): SpawnOptions;
60
+ interface RegisterSpawnOpts {
49
61
  child: ChildProcess;
50
62
  threadId: number;
51
63
  name: string;
@@ -55,10 +67,22 @@ export interface RegisterSpawnOpts {
55
67
  memorySourceThreadId?: number;
56
68
  threadType?: "worker" | "branch";
57
69
  }
58
- export declare function registerSpawnedProcess(opts: RegisterSpawnOpts, threadLifecycle: ThreadLifecycleService): {
59
- pid: number;
60
- logFile: string;
61
- } | {
62
- error: string;
63
- };
70
+ /**
71
+ * Shared tail of every agent spawn: open the log fd, run the agent-specific
72
+ * spawn callback, register the child for lifecycle bookkeeping, and translate
73
+ * any exception into an error result.
74
+ *
75
+ * stdout/stderr go to a file descriptor the CHILD owns, not a pipe drained by
76
+ * this (ephemeral) server process. A pipe's only reader is this node process;
77
+ * when it dies on a self-update/restart the orphaned, detached child keeps
78
+ * writing, the ~64KB OS pipe buffer fills, and the next write() blocks the
79
+ * child's event loop forever — killing MCP polling, the API stream and any
80
+ * reconnect (the exact zombie we saw on thread 20869). A file fd is duplicated
81
+ * into the child at spawn and drained by the OS, so it survives our restarts.
82
+ * (64KB blocking is a PIPE phenomenon, not a file.)
83
+ */
84
+ export declare function launchAgentChild(opts: Omit<RegisterSpawnOpts, "child"> & {
85
+ spawnChild: (outFd: number) => ChildProcess;
86
+ }, threadLifecycle: ThreadLifecycleService): SpawnResult;
87
+ export {};
64
88
  //# sourceMappingURL=spawn-common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-common.d.ts","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAalE,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA6BlE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgB/E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAG,MAAM,CAAC,UAKpF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,IASvE,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWjE;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,IAAI,kBAAkB,GAAG,IAAI,CAInE;AAED,eAAO,MAAM,yBAAyB,GAAI,mBAAmB,MAAM,KAAG,MAAM,GAAG,SAK9E,CAAC;AAOF,eAAO,MAAM,0BAA0B,QAAO,OAAmC,CAAC;AAClF,eAAO,MAAM,2BAA2B,GAAI,GAAG,OAAO,KAAG,IAAyC,CAAC;AAEnG;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIhE;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AA2GD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,sBAAsB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAa7J"}
1
+ {"version":3,"file":"spawn-common.d.ts","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8BrF,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA6BlE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwB/E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAG,MAAM,CAAC,UAKpF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,IAsBvE,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBjE;AASD,eAAO,MAAM,yBAAyB,GAAI,mBAAmB,MAAM,KAAG,MAAM,GAAG,SAK9E,CAAC;AAOF,eAAO,MAAM,0BAA0B,QAAO,OAAmC,CAAC;AAClF,eAAO,MAAM,2BAA2B,GAAI,GAAG,OAAO,KAAG,IAExD,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAYvD;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAMhG;AAED;kEACkE;AAClE,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MACkD,CAAC;AAEvH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,KAAK,GAAE,QAAQ,GAAG,MAAiB,GAClC,YAAY,CASd;AAID,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AA8ND;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG;IAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAA;CAAE,EACxF,eAAe,EAAE,sBAAsB,GACtC,WAAW,CAmBb"}