sensorium-mcp 3.0.103 → 3.1.0-board.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 (664) hide show
  1. package/Install-Sensorium.ps1 +113 -20
  2. package/README.md +25 -0
  3. package/dist/config/agent-settings.d.ts +82 -0
  4. package/dist/config/agent-settings.d.ts.map +1 -0
  5. package/dist/config/agent-settings.js +261 -0
  6. package/dist/config/agent-settings.js.map +1 -0
  7. package/dist/config/agent-templates.d.ts +39 -0
  8. package/dist/config/agent-templates.d.ts.map +1 -0
  9. package/dist/config/agent-templates.js +105 -0
  10. package/dist/config/agent-templates.js.map +1 -0
  11. package/dist/config/detail-grant.d.ts +39 -0
  12. package/dist/config/detail-grant.d.ts.map +1 -0
  13. package/dist/config/detail-grant.js +61 -0
  14. package/dist/config/detail-grant.js.map +1 -0
  15. package/dist/config/index.d.ts +17 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +59 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/config/keep-alive-settings.d.ts +29 -0
  20. package/dist/config/keep-alive-settings.d.ts.map +1 -0
  21. package/dist/config/keep-alive-settings.js +100 -0
  22. package/dist/config/keep-alive-settings.js.map +1 -0
  23. package/dist/config/mcp-settings.d.ts +59 -0
  24. package/dist/config/mcp-settings.d.ts.map +1 -0
  25. package/dist/config/mcp-settings.js +196 -0
  26. package/dist/config/mcp-settings.js.map +1 -0
  27. package/dist/config/misc-settings.d.ts +48 -0
  28. package/dist/config/misc-settings.d.ts.map +1 -0
  29. package/dist/config/misc-settings.js +168 -0
  30. package/dist/config/misc-settings.js.map +1 -0
  31. package/dist/config/settings-store.d.ts +49 -0
  32. package/dist/config/settings-store.d.ts.map +1 -0
  33. package/dist/config/settings-store.js +203 -0
  34. package/dist/config/settings-store.js.map +1 -0
  35. package/dist/dashboard/log-parser.d.ts +3 -0
  36. package/dist/dashboard/log-parser.d.ts.map +1 -1
  37. package/dist/dashboard/log-parser.js +49 -5
  38. package/dist/dashboard/log-parser.js.map +1 -1
  39. package/dist/dashboard/presets.d.ts +1 -1
  40. package/dist/dashboard/presets.d.ts.map +1 -1
  41. package/dist/dashboard/presets.js +1 -1
  42. package/dist/dashboard/presets.js.map +1 -1
  43. package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
  44. package/dist/dashboard/routes/agent-templates.js +13 -8
  45. package/dist/dashboard/routes/agent-templates.js.map +1 -1
  46. package/dist/dashboard/routes/board.d.ts +67 -0
  47. package/dist/dashboard/routes/board.d.ts.map +1 -0
  48. package/dist/dashboard/routes/board.js +612 -0
  49. package/dist/dashboard/routes/board.js.map +1 -0
  50. package/dist/dashboard/routes/claude.d.ts.map +1 -1
  51. package/dist/dashboard/routes/claude.js +14 -3
  52. package/dist/dashboard/routes/claude.js.map +1 -1
  53. package/dist/dashboard/routes/copilot.d.ts.map +1 -1
  54. package/dist/dashboard/routes/copilot.js +32 -7
  55. package/dist/dashboard/routes/copilot.js.map +1 -1
  56. package/dist/dashboard/routes/data.d.ts.map +1 -1
  57. package/dist/dashboard/routes/data.js +43 -15
  58. package/dist/dashboard/routes/data.js.map +1 -1
  59. package/dist/dashboard/routes/env-vars.d.ts.map +1 -1
  60. package/dist/dashboard/routes/env-vars.js.map +1 -1
  61. package/dist/dashboard/routes/mcp-servers.d.ts.map +1 -1
  62. package/dist/dashboard/routes/mcp-servers.js +11 -5
  63. package/dist/dashboard/routes/mcp-servers.js.map +1 -1
  64. package/dist/dashboard/routes/prompts.d.ts.map +1 -1
  65. package/dist/dashboard/routes/prompts.js +2 -2
  66. package/dist/dashboard/routes/prompts.js.map +1 -1
  67. package/dist/dashboard/routes/settings.d.ts +2 -0
  68. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  69. package/dist/dashboard/routes/settings.js +29 -3
  70. package/dist/dashboard/routes/settings.js.map +1 -1
  71. package/dist/dashboard/routes/skills.d.ts.map +1 -1
  72. package/dist/dashboard/routes/skills.js +4 -4
  73. package/dist/dashboard/routes/skills.js.map +1 -1
  74. package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
  75. package/dist/dashboard/routes/snapshots.js +18 -11
  76. package/dist/dashboard/routes/snapshots.js.map +1 -1
  77. package/dist/dashboard/routes/templates.d.ts.map +1 -1
  78. package/dist/dashboard/routes/templates.js +6 -3
  79. package/dist/dashboard/routes/templates.js.map +1 -1
  80. package/dist/dashboard/routes/threads-create.d.ts +22 -0
  81. package/dist/dashboard/routes/threads-create.d.ts.map +1 -0
  82. package/dist/dashboard/routes/threads-create.js +225 -0
  83. package/dist/dashboard/routes/threads-create.js.map +1 -0
  84. package/dist/dashboard/routes/threads-helpers.d.ts +28 -0
  85. package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -0
  86. package/dist/dashboard/routes/threads-helpers.js +138 -0
  87. package/dist/dashboard/routes/threads-helpers.js.map +1 -0
  88. package/dist/dashboard/routes/threads-read.d.ts +26 -0
  89. package/dist/dashboard/routes/threads-read.d.ts.map +1 -0
  90. package/dist/dashboard/routes/threads-read.js +125 -0
  91. package/dist/dashboard/routes/threads-read.js.map +1 -0
  92. package/dist/dashboard/routes/threads.d.ts +5 -44
  93. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  94. package/dist/dashboard/routes/threads.js +44 -500
  95. package/dist/dashboard/routes/threads.js.map +1 -1
  96. package/dist/dashboard/routes/types.d.ts +6 -0
  97. package/dist/dashboard/routes/types.d.ts.map +1 -1
  98. package/dist/dashboard/routes/types.js.map +1 -1
  99. package/dist/dashboard/routes.d.ts.map +1 -1
  100. package/dist/dashboard/routes.js +55 -10
  101. package/dist/dashboard/routes.js.map +1 -1
  102. package/dist/dashboard/spa.html +12 -12
  103. package/dist/data/board/board-schema.d.ts +22 -0
  104. package/dist/data/board/board-schema.d.ts.map +1 -0
  105. package/dist/data/board/board-schema.js +103 -0
  106. package/dist/data/board/board-schema.js.map +1 -0
  107. package/dist/data/board/board-types.d.ts +117 -0
  108. package/dist/data/board/board-types.d.ts.map +1 -0
  109. package/dist/data/board/board-types.js +9 -0
  110. package/dist/data/board/board-types.js.map +1 -0
  111. package/dist/data/board/card.repository.d.ts +64 -0
  112. package/dist/data/board/card.repository.d.ts.map +1 -0
  113. package/dist/data/board/card.repository.js +272 -0
  114. package/dist/data/board/card.repository.js.map +1 -0
  115. package/dist/data/board/comment.repository.d.ts +12 -0
  116. package/dist/data/board/comment.repository.d.ts.map +1 -0
  117. package/dist/data/board/comment.repository.js +31 -0
  118. package/dist/data/board/comment.repository.js.map +1 -0
  119. package/dist/data/board/lane.repository.d.ts +18 -0
  120. package/dist/data/board/lane.repository.d.ts.map +1 -0
  121. package/dist/data/board/lane.repository.js +44 -0
  122. package/dist/data/board/lane.repository.js.map +1 -0
  123. package/dist/data/board/profile-defaults.d.ts +19 -0
  124. package/dist/data/board/profile-defaults.d.ts.map +1 -0
  125. package/dist/data/board/profile-defaults.js +118 -0
  126. package/dist/data/board/profile-defaults.js.map +1 -0
  127. package/dist/data/daily-marker.d.ts.map +1 -1
  128. package/dist/data/daily-marker.js +1 -1
  129. package/dist/data/daily-marker.js.map +1 -1
  130. package/dist/data/file-storage.d.ts.map +1 -1
  131. package/dist/data/file-storage.js +40 -16
  132. package/dist/data/file-storage.js.map +1 -1
  133. package/dist/data/interfaces.d.ts +23 -2
  134. package/dist/data/interfaces.d.ts.map +1 -1
  135. package/dist/data/memory/bootstrap.d.ts +8 -1
  136. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  137. package/dist/data/memory/bootstrap.js +76 -28
  138. package/dist/data/memory/bootstrap.js.map +1 -1
  139. package/dist/data/memory/consolidation.d.ts +9 -4
  140. package/dist/data/memory/consolidation.d.ts.map +1 -1
  141. package/dist/data/memory/consolidation.js +38 -17
  142. package/dist/data/memory/consolidation.js.map +1 -1
  143. package/dist/data/memory/db-types.d.ts +4 -0
  144. package/dist/data/memory/db-types.d.ts.map +1 -0
  145. package/dist/data/memory/db-types.js +2 -0
  146. package/dist/data/memory/db-types.js.map +1 -0
  147. package/dist/data/memory/episodes.d.ts.map +1 -1
  148. package/dist/data/memory/episodes.js +3 -5
  149. package/dist/data/memory/episodes.js.map +1 -1
  150. package/dist/data/memory/index.d.ts +27 -14
  151. package/dist/data/memory/index.d.ts.map +1 -1
  152. package/dist/data/memory/index.js +27 -14
  153. package/dist/data/memory/index.js.map +1 -1
  154. package/dist/data/memory/migration-runner.d.ts +25 -2
  155. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  156. package/dist/data/memory/migration-runner.js +110 -16
  157. package/dist/data/memory/migration-runner.js.map +1 -1
  158. package/dist/data/memory/narrative-lint.d.ts +12 -0
  159. package/dist/data/memory/narrative-lint.d.ts.map +1 -0
  160. package/dist/data/memory/narrative-lint.js +117 -0
  161. package/dist/data/memory/narrative-lint.js.map +1 -0
  162. package/dist/data/memory/narrative-resolutions.d.ts +26 -0
  163. package/dist/data/memory/narrative-resolutions.d.ts.map +1 -0
  164. package/dist/data/memory/narrative-resolutions.js +81 -0
  165. package/dist/data/memory/narrative-resolutions.js.map +1 -0
  166. package/dist/data/memory/narrative-sources.d.ts +19 -0
  167. package/dist/data/memory/narrative-sources.d.ts.map +1 -0
  168. package/dist/data/memory/narrative-sources.js +150 -0
  169. package/dist/data/memory/narrative-sources.js.map +1 -0
  170. package/dist/data/memory/narrative-store.d.ts +11 -0
  171. package/dist/data/memory/narrative-store.d.ts.map +1 -0
  172. package/dist/data/memory/narrative-store.js +80 -0
  173. package/dist/data/memory/narrative-store.js.map +1 -0
  174. package/dist/data/memory/narrative-types.d.ts +15 -0
  175. package/dist/data/memory/narrative-types.d.ts.map +1 -0
  176. package/dist/data/memory/narrative-types.js +3 -0
  177. package/dist/data/memory/narrative-types.js.map +1 -0
  178. package/dist/data/memory/narrative.d.ts +5 -2
  179. package/dist/data/memory/narrative.d.ts.map +1 -1
  180. package/dist/data/memory/narrative.js +35 -521
  181. package/dist/data/memory/narrative.js.map +1 -1
  182. package/dist/data/memory/note-archival.d.ts +42 -0
  183. package/dist/data/memory/note-archival.d.ts.map +1 -0
  184. package/dist/data/memory/note-archival.js +77 -0
  185. package/dist/data/memory/note-archival.js.map +1 -0
  186. package/dist/data/memory/note-embeddings.d.ts +27 -0
  187. package/dist/data/memory/note-embeddings.d.ts.map +1 -0
  188. package/dist/data/memory/note-embeddings.js +98 -0
  189. package/dist/data/memory/note-embeddings.js.map +1 -0
  190. package/dist/data/memory/reflection-dedup.d.ts +17 -0
  191. package/dist/data/memory/reflection-dedup.d.ts.map +1 -0
  192. package/dist/data/memory/reflection-dedup.js +55 -0
  193. package/dist/data/memory/reflection-dedup.js.map +1 -0
  194. package/dist/data/memory/reflection-gates.d.ts +40 -0
  195. package/dist/data/memory/reflection-gates.d.ts.map +1 -0
  196. package/dist/data/memory/reflection-gates.js +220 -0
  197. package/dist/data/memory/reflection-gates.js.map +1 -0
  198. package/dist/data/memory/reflection-sources.d.ts +13 -0
  199. package/dist/data/memory/reflection-sources.d.ts.map +1 -0
  200. package/dist/data/memory/reflection-sources.js +115 -0
  201. package/dist/data/memory/reflection-sources.js.map +1 -0
  202. package/dist/data/memory/reflection.d.ts +5 -35
  203. package/dist/data/memory/reflection.d.ts.map +1 -1
  204. package/dist/data/memory/reflection.js +32 -332
  205. package/dist/data/memory/reflection.js.map +1 -1
  206. package/dist/data/memory/schema-ddl.d.ts +2 -2
  207. package/dist/data/memory/schema-ddl.d.ts.map +1 -1
  208. package/dist/data/memory/schema-ddl.js +13 -11
  209. package/dist/data/memory/schema-ddl.js.map +1 -1
  210. package/dist/data/memory/schema-guard.d.ts +1 -1
  211. package/dist/data/memory/schema-guard.d.ts.map +1 -1
  212. package/dist/data/memory/schema-guard.js +5 -4
  213. package/dist/data/memory/schema-guard.js.map +1 -1
  214. package/dist/data/memory/schema.d.ts +2 -2
  215. package/dist/data/memory/schema.d.ts.map +1 -1
  216. package/dist/data/memory/schema.js +8 -2
  217. package/dist/data/memory/schema.js.map +1 -1
  218. package/dist/data/memory/semantic-notes.d.ts +120 -0
  219. package/dist/data/memory/semantic-notes.d.ts.map +1 -0
  220. package/dist/data/memory/semantic-notes.js +330 -0
  221. package/dist/data/memory/semantic-notes.js.map +1 -0
  222. package/dist/data/memory/semantic-search.d.ts +29 -0
  223. package/dist/data/memory/semantic-search.d.ts.map +1 -0
  224. package/dist/data/memory/semantic-search.js +158 -0
  225. package/dist/data/memory/semantic-search.js.map +1 -0
  226. package/dist/data/memory/synthesis.d.ts.map +1 -1
  227. package/dist/data/memory/synthesis.js +15 -7
  228. package/dist/data/memory/synthesis.js.map +1 -1
  229. package/dist/data/memory/thread-registry.d.ts +2 -2
  230. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  231. package/dist/data/memory/thread-registry.js +91 -37
  232. package/dist/data/memory/thread-registry.js.map +1 -1
  233. package/dist/data/memory/topic-shift.js +3 -3
  234. package/dist/data/memory/topic-shift.js.map +1 -1
  235. package/dist/data/memory/utils.d.ts +0 -5
  236. package/dist/data/memory/utils.d.ts.map +1 -1
  237. package/dist/data/memory/utils.js +0 -94
  238. package/dist/data/memory/utils.js.map +1 -1
  239. package/dist/data/sent-message.repository.js +2 -2
  240. package/dist/data/sent-message.repository.js.map +1 -1
  241. package/dist/data/templates.js +2 -2
  242. package/dist/data/templates.js.map +1 -1
  243. package/dist/index.js +135 -38
  244. package/dist/index.js.map +1 -1
  245. package/dist/integrations/openai/chat.d.ts +7 -1
  246. package/dist/integrations/openai/chat.d.ts.map +1 -1
  247. package/dist/integrations/openai/chat.js +24 -7
  248. package/dist/integrations/openai/chat.js.map +1 -1
  249. package/dist/integrations/openai/speech.d.ts +5 -2
  250. package/dist/integrations/openai/speech.d.ts.map +1 -1
  251. package/dist/integrations/openai/speech.js +7 -4
  252. package/dist/integrations/openai/speech.js.map +1 -1
  253. package/dist/integrations/openai/video.d.ts.map +1 -1
  254. package/dist/integrations/openai/video.js +21 -10
  255. package/dist/integrations/openai/video.js.map +1 -1
  256. package/dist/integrations/openai/vision.d.ts.map +1 -1
  257. package/dist/integrations/openai/vision.js.map +1 -1
  258. package/dist/integrations/openai/voice-emotion.d.ts.map +1 -1
  259. package/dist/integrations/openai/voice-emotion.js +2 -2
  260. package/dist/integrations/openai/voice-emotion.js.map +1 -1
  261. package/dist/integrations/telegram/types.d.ts +9 -0
  262. package/dist/integrations/telegram/types.d.ts.map +1 -1
  263. package/dist/lib/logger.d.ts.map +1 -0
  264. package/dist/{logger.js → lib/logger.js} +98 -52
  265. package/dist/lib/logger.js.map +1 -0
  266. package/dist/lib/markdown.d.ts +13 -0
  267. package/dist/lib/markdown.d.ts.map +1 -0
  268. package/dist/{markdown.js → lib/markdown.js} +58 -5
  269. package/dist/lib/markdown.js.map +1 -0
  270. package/dist/{types.d.ts → lib/types.d.ts} +0 -1
  271. package/dist/lib/types.d.ts.map +1 -0
  272. package/dist/lib/types.js.map +1 -0
  273. package/dist/lib/usage-metering/index.d.ts +13 -0
  274. package/dist/lib/usage-metering/index.d.ts.map +1 -0
  275. package/dist/lib/usage-metering/index.js +10 -0
  276. package/dist/lib/usage-metering/index.js.map +1 -0
  277. package/dist/lib/usage-metering/meter.d.ts +34 -0
  278. package/dist/lib/usage-metering/meter.d.ts.map +1 -0
  279. package/dist/lib/usage-metering/meter.js +28 -0
  280. package/dist/lib/usage-metering/meter.js.map +1 -0
  281. package/dist/lib/usage-metering/pricing.d.ts +39 -0
  282. package/dist/lib/usage-metering/pricing.d.ts.map +1 -0
  283. package/dist/lib/usage-metering/pricing.js +49 -0
  284. package/dist/lib/usage-metering/pricing.js.map +1 -0
  285. package/dist/lib/usage-metering/sink.d.ts +24 -0
  286. package/dist/lib/usage-metering/sink.d.ts.map +1 -0
  287. package/dist/lib/usage-metering/sink.js +56 -0
  288. package/dist/lib/usage-metering/sink.js.map +1 -0
  289. package/dist/lib/utils.d.ts.map +1 -0
  290. package/dist/{utils.js → lib/utils.js} +29 -9
  291. package/dist/lib/utils.js.map +1 -0
  292. package/dist/llm/json.d.ts +14 -0
  293. package/dist/llm/json.d.ts.map +1 -0
  294. package/dist/llm/json.js +112 -0
  295. package/dist/llm/json.js.map +1 -0
  296. package/dist/llm/prompts/narrative.d.ts +7 -0
  297. package/dist/llm/prompts/narrative.d.ts.map +1 -0
  298. package/dist/llm/prompts/narrative.js +124 -0
  299. package/dist/llm/prompts/narrative.js.map +1 -0
  300. package/dist/llm/prompts/reflection.d.ts +6 -0
  301. package/dist/llm/prompts/reflection.d.ts.map +1 -0
  302. package/dist/llm/prompts/reflection.js +77 -0
  303. package/dist/llm/prompts/reflection.js.map +1 -0
  304. package/dist/server/factory.d.ts +2 -2
  305. package/dist/server/factory.d.ts.map +1 -1
  306. package/dist/server/factory.js +176 -84
  307. package/dist/server/factory.js.map +1 -1
  308. package/dist/{http-server.d.ts → server/http-server.d.ts} +6 -3
  309. package/dist/server/http-server.d.ts.map +1 -0
  310. package/dist/{http-server.js → server/http-server.js} +92 -24
  311. package/dist/server/http-server.js.map +1 -0
  312. package/dist/{stdio-server.d.ts → server/stdio-server.d.ts} +1 -1
  313. package/dist/server/stdio-server.d.ts.map +1 -0
  314. package/dist/{stdio-server.js → server/stdio-server.js} +25 -11
  315. package/dist/server/stdio-server.js.map +1 -0
  316. package/dist/services/agent-spawn.service.d.ts +4 -4
  317. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  318. package/dist/services/agent-spawn.service.js +30 -14
  319. package/dist/services/agent-spawn.service.js.map +1 -1
  320. package/dist/services/background-runner.d.ts +2 -2
  321. package/dist/services/background-runner.d.ts.map +1 -1
  322. package/dist/services/background-runner.js +13 -4
  323. package/dist/services/background-runner.js.map +1 -1
  324. package/dist/services/board/board-signals.d.ts +25 -0
  325. package/dist/services/board/board-signals.d.ts.map +1 -0
  326. package/dist/services/board/board-signals.js +83 -0
  327. package/dist/services/board/board-signals.js.map +1 -0
  328. package/dist/services/board/card-briefing.d.ts +17 -0
  329. package/dist/services/board/card-briefing.d.ts.map +1 -0
  330. package/dist/services/board/card-briefing.js +84 -0
  331. package/dist/services/board/card-briefing.js.map +1 -0
  332. package/dist/services/board/orchestrator.service.d.ts +55 -0
  333. package/dist/services/board/orchestrator.service.d.ts.map +1 -0
  334. package/dist/services/board/orchestrator.service.js +193 -0
  335. package/dist/services/board/orchestrator.service.js.map +1 -0
  336. package/dist/services/board/release-worker.d.ts +32 -0
  337. package/dist/services/board/release-worker.d.ts.map +1 -0
  338. package/dist/services/board/release-worker.js +49 -0
  339. package/dist/services/board/release-worker.js.map +1 -0
  340. package/dist/services/board/report-capture.d.ts +48 -0
  341. package/dist/services/board/report-capture.d.ts.map +1 -0
  342. package/dist/services/board/report-capture.js +172 -0
  343. package/dist/services/board/report-capture.js.map +1 -0
  344. package/dist/services/board/worker-spawn.d.ts +30 -0
  345. package/dist/services/board/worker-spawn.d.ts.map +1 -0
  346. package/dist/services/board/worker-spawn.js +90 -0
  347. package/dist/services/board/worker-spawn.js.map +1 -0
  348. package/dist/services/broker-client.d.ts +181 -0
  349. package/dist/services/broker-client.d.ts.map +1 -0
  350. package/dist/services/broker-client.js +323 -0
  351. package/dist/services/broker-client.js.map +1 -0
  352. package/dist/services/claude-spawn.service.d.ts +1 -1
  353. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  354. package/dist/services/claude-spawn.service.js +138 -55
  355. package/dist/services/claude-spawn.service.js.map +1 -1
  356. package/dist/services/codex-spawn.service.d.ts +1 -1
  357. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  358. package/dist/services/codex-spawn.service.js +54 -47
  359. package/dist/services/codex-spawn.service.js.map +1 -1
  360. package/dist/services/consolidation-prompts.d.ts +26 -0
  361. package/dist/services/consolidation-prompts.d.ts.map +1 -0
  362. package/dist/services/consolidation-prompts.js +144 -0
  363. package/dist/services/consolidation-prompts.js.map +1 -0
  364. package/dist/services/consolidation.service.d.ts +1 -5
  365. package/dist/services/consolidation.service.d.ts.map +1 -1
  366. package/dist/services/consolidation.service.js +99 -352
  367. package/dist/services/consolidation.service.js.map +1 -1
  368. package/dist/services/copilot-spawn.service.d.ts +1 -1
  369. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  370. package/dist/services/copilot-spawn.service.js +105 -59
  371. package/dist/services/copilot-spawn.service.js.map +1 -1
  372. package/dist/{daily-session.d.ts → services/daily-session.d.ts} +1 -1
  373. package/dist/services/daily-session.d.ts.map +1 -0
  374. package/dist/{daily-session.js → services/daily-session.js} +15 -14
  375. package/dist/services/daily-session.js.map +1 -0
  376. package/dist/services/dispatcher/broker.d.ts +10 -9
  377. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  378. package/dist/services/dispatcher/broker.js +67 -47
  379. package/dist/services/dispatcher/broker.js.map +1 -1
  380. package/dist/services/dispatcher/index.d.ts +1 -1
  381. package/dist/services/dispatcher/index.d.ts.map +1 -1
  382. package/dist/services/dispatcher/index.js +1 -1
  383. package/dist/services/dispatcher/index.js.map +1 -1
  384. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  385. package/dist/services/dispatcher/lock.js +24 -9
  386. package/dist/services/dispatcher/lock.js.map +1 -1
  387. package/dist/services/dispatcher/poller.d.ts +1 -1
  388. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  389. package/dist/services/dispatcher/poller.js +112 -53
  390. package/dist/services/dispatcher/poller.js.map +1 -1
  391. package/dist/services/drive.d.ts.map +1 -0
  392. package/dist/{drive.js → services/drive.js} +1 -1
  393. package/dist/services/drive.js.map +1 -0
  394. package/dist/services/flight-recorder.service.d.ts +37 -0
  395. package/dist/services/flight-recorder.service.d.ts.map +1 -0
  396. package/dist/services/flight-recorder.service.js +211 -0
  397. package/dist/services/flight-recorder.service.js.map +1 -0
  398. package/dist/services/intent.d.ts.map +1 -0
  399. package/dist/{intent.js → services/intent.js} +78 -23
  400. package/dist/services/intent.js.map +1 -0
  401. package/dist/services/keep-alive-sync.service.d.ts +11 -0
  402. package/dist/services/keep-alive-sync.service.d.ts.map +1 -0
  403. package/dist/services/keep-alive-sync.service.js +47 -0
  404. package/dist/services/keep-alive-sync.service.js.map +1 -0
  405. package/dist/services/keeper.service.d.ts +10 -1
  406. package/dist/services/keeper.service.d.ts.map +1 -1
  407. package/dist/services/keeper.service.js +303 -43
  408. package/dist/services/keeper.service.js.map +1 -1
  409. package/dist/services/maintenance-signal.js +1 -1
  410. package/dist/services/maintenance-signal.js.map +1 -1
  411. package/dist/services/mcp-config.service.d.ts.map +1 -1
  412. package/dist/services/mcp-config.service.js +19 -6
  413. package/dist/services/mcp-config.service.js.map +1 -1
  414. package/dist/services/memory-briefing.service.d.ts.map +1 -1
  415. package/dist/services/memory-briefing.service.js +13 -7
  416. package/dist/services/memory-briefing.service.js.map +1 -1
  417. package/dist/services/memory-pruning.service.d.ts +12 -0
  418. package/dist/services/memory-pruning.service.d.ts.map +1 -0
  419. package/dist/services/memory-pruning.service.js +179 -0
  420. package/dist/services/memory-pruning.service.js.map +1 -0
  421. package/dist/services/passive-notice.service.d.ts +39 -0
  422. package/dist/services/passive-notice.service.d.ts.map +1 -0
  423. package/dist/services/passive-notice.service.js +274 -0
  424. package/dist/services/passive-notice.service.js.map +1 -0
  425. package/dist/services/process.service.d.ts +43 -9
  426. package/dist/services/process.service.d.ts.map +1 -1
  427. package/dist/services/process.service.js +184 -309
  428. package/dist/services/process.service.js.map +1 -1
  429. package/dist/services/reconnect-snapshot.service.d.ts.map +1 -1
  430. package/dist/services/reconnect-snapshot.service.js +3 -3
  431. package/dist/services/reconnect-snapshot.service.js.map +1 -1
  432. package/dist/{scheduler.d.ts → services/scheduler.d.ts} +2 -23
  433. package/dist/services/scheduler.d.ts.map +1 -0
  434. package/dist/{scheduler.js → services/scheduler.js} +72 -19
  435. package/dist/services/scheduler.js.map +1 -0
  436. package/dist/services/self-update.service.d.ts +26 -5
  437. package/dist/services/self-update.service.d.ts.map +1 -1
  438. package/dist/services/self-update.service.js +208 -95
  439. package/dist/services/self-update.service.js.map +1 -1
  440. package/dist/services/spawn-common.d.ts +67 -17
  441. package/dist/services/spawn-common.d.ts.map +1 -1
  442. package/dist/services/spawn-common.js +401 -50
  443. package/dist/services/spawn-common.js.map +1 -1
  444. package/dist/services/spawn-exit-watcher.d.ts +32 -0
  445. package/dist/services/spawn-exit-watcher.d.ts.map +1 -0
  446. package/dist/services/spawn-exit-watcher.js +102 -0
  447. package/dist/services/spawn-exit-watcher.js.map +1 -0
  448. package/dist/{telegram.d.ts → services/telegram.d.ts} +3 -3
  449. package/dist/services/telegram.d.ts.map +1 -0
  450. package/dist/{telegram.js → services/telegram.js} +16 -8
  451. package/dist/services/telegram.js.map +1 -0
  452. package/dist/services/thread-config.service.d.ts +25 -0
  453. package/dist/services/thread-config.service.d.ts.map +1 -0
  454. package/dist/services/thread-config.service.js +73 -0
  455. package/dist/services/thread-config.service.js.map +1 -0
  456. package/dist/services/thread-health.service.d.ts +19 -1
  457. package/dist/services/thread-health.service.d.ts.map +1 -1
  458. package/dist/services/thread-health.service.js +101 -17
  459. package/dist/services/thread-health.service.js.map +1 -1
  460. package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
  461. package/dist/services/thread-lifecycle.service.js +26 -7
  462. package/dist/services/thread-lifecycle.service.js.map +1 -1
  463. package/dist/services/topic.service.d.ts.map +1 -1
  464. package/dist/services/topic.service.js +17 -6
  465. package/dist/services/topic.service.js.map +1 -1
  466. package/dist/services/worker-cleanup.service.d.ts +21 -3
  467. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  468. package/dist/services/worker-cleanup.service.js +348 -90
  469. package/dist/services/worker-cleanup.service.js.map +1 -1
  470. package/dist/sessions/dashboard-registry.d.ts +38 -0
  471. package/dist/sessions/dashboard-registry.d.ts.map +1 -0
  472. package/dist/sessions/dashboard-registry.js +84 -0
  473. package/dist/sessions/dashboard-registry.js.map +1 -0
  474. package/dist/{sessions.d.ts → sessions/mcp-registry.d.ts} +9 -60
  475. package/dist/sessions/mcp-registry.d.ts.map +1 -0
  476. package/dist/{sessions.js → sessions/mcp-registry.js} +13 -214
  477. package/dist/sessions/mcp-registry.js.map +1 -0
  478. package/dist/sessions/session-store.d.ts +17 -0
  479. package/dist/sessions/session-store.d.ts.map +1 -0
  480. package/dist/sessions/session-store.js +69 -0
  481. package/dist/sessions/session-store.js.map +1 -0
  482. package/dist/sessions/topic-registry.d.ts +14 -0
  483. package/dist/sessions/topic-registry.d.ts.map +1 -0
  484. package/dist/sessions/topic-registry.js +67 -0
  485. package/dist/sessions/topic-registry.js.map +1 -0
  486. package/dist/tools/definitions.d.ts +1 -9
  487. package/dist/tools/definitions.d.ts.map +1 -1
  488. package/dist/tools/definitions.js.map +1 -1
  489. package/dist/tools/defs/memory-defs.d.ts +1 -1
  490. package/dist/tools/defs/memory-defs.d.ts.map +1 -1
  491. package/dist/tools/defs/memory-defs.js +1 -1
  492. package/dist/tools/defs/memory-defs.js.map +1 -1
  493. package/dist/tools/defs/session-defs.d.ts +1 -1
  494. package/dist/tools/defs/session-defs.d.ts.map +1 -1
  495. package/dist/tools/defs/session-defs.js +24 -17
  496. package/dist/tools/defs/session-defs.js.map +1 -1
  497. package/dist/tools/defs/skill-defs.d.ts +1 -1
  498. package/dist/tools/defs/skill-defs.d.ts.map +1 -1
  499. package/dist/tools/defs/types.d.ts +11 -0
  500. package/dist/tools/defs/types.d.ts.map +1 -0
  501. package/dist/{chat-ui/src → tools/defs}/types.js.map +1 -1
  502. package/dist/tools/defs/utility-defs.d.ts +1 -1
  503. package/dist/tools/defs/utility-defs.d.ts.map +1 -1
  504. package/dist/tools/defs/utility-defs.js +4 -3
  505. package/dist/tools/defs/utility-defs.js.map +1 -1
  506. package/dist/tools/defs/wait-defs.d.ts +1 -1
  507. package/dist/tools/defs/wait-defs.d.ts.map +1 -1
  508. package/dist/tools/delegate-tool.d.ts +3 -3
  509. package/dist/tools/delegate-tool.d.ts.map +1 -1
  510. package/dist/tools/delegate-tool.js +177 -45
  511. package/dist/tools/delegate-tool.js.map +1 -1
  512. package/dist/tools/memory-tools.d.ts +3 -3
  513. package/dist/tools/memory-tools.d.ts.map +1 -1
  514. package/dist/tools/memory-tools.js +111 -40
  515. package/dist/tools/memory-tools.js.map +1 -1
  516. package/dist/{response-builders.d.ts → tools/response-builders.d.ts} +2 -2
  517. package/dist/tools/response-builders.d.ts.map +1 -0
  518. package/dist/{response-builders.js → tools/response-builders.js} +151 -30
  519. package/dist/tools/response-builders.js.map +1 -0
  520. package/dist/tools/session-tools.d.ts +5 -14
  521. package/dist/tools/session-tools.d.ts.map +1 -1
  522. package/dist/tools/session-tools.js +51 -32
  523. package/dist/tools/session-tools.js.map +1 -1
  524. package/dist/tools/shared-agent-utils.d.ts +1 -1
  525. package/dist/tools/shared-agent-utils.d.ts.map +1 -1
  526. package/dist/tools/shared-agent-utils.js +2 -4
  527. package/dist/tools/shared-agent-utils.js.map +1 -1
  528. package/dist/tools/skill-tools.d.ts +1 -1
  529. package/dist/tools/skill-tools.d.ts.map +1 -1
  530. package/dist/tools/skill-tools.js +12 -7
  531. package/dist/tools/skill-tools.js.map +1 -1
  532. package/dist/tools/start-session-tool.d.ts +3 -3
  533. package/dist/tools/start-session-tool.d.ts.map +1 -1
  534. package/dist/tools/start-session-tool.js +35 -25
  535. package/dist/tools/start-session-tool.js.map +1 -1
  536. package/dist/tools/utility-tools.d.ts +3 -3
  537. package/dist/tools/utility-tools.d.ts.map +1 -1
  538. package/dist/tools/utility-tools.js +47 -29
  539. package/dist/tools/utility-tools.js.map +1 -1
  540. package/dist/tools/wait/auto-forward.d.ts +1 -1
  541. package/dist/tools/wait/auto-forward.d.ts.map +1 -1
  542. package/dist/tools/wait/auto-forward.js +6 -4
  543. package/dist/tools/wait/auto-forward.js.map +1 -1
  544. package/dist/tools/wait/context.d.ts +58 -0
  545. package/dist/tools/wait/context.d.ts.map +1 -0
  546. package/dist/tools/wait/context.js +5 -0
  547. package/dist/tools/wait/context.js.map +1 -0
  548. package/dist/tools/wait/drive-handler.d.ts +2 -2
  549. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  550. package/dist/tools/wait/drive-handler.js +25 -13
  551. package/dist/tools/wait/drive-handler.js.map +1 -1
  552. package/dist/tools/wait/index.d.ts +2 -1
  553. package/dist/tools/wait/index.d.ts.map +1 -1
  554. package/dist/tools/wait/index.js.map +1 -1
  555. package/dist/tools/wait/media-processor.d.ts +4 -4
  556. package/dist/tools/wait/media-processor.d.ts.map +1 -1
  557. package/dist/tools/wait/media-processor.js +18 -9
  558. package/dist/tools/wait/media-processor.js.map +1 -1
  559. package/dist/tools/wait/message-delivery.d.ts +15 -5
  560. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  561. package/dist/tools/wait/message-delivery.js +139 -38
  562. package/dist/tools/wait/message-delivery.js.map +1 -1
  563. package/dist/tools/wait/message-processing.d.ts +2 -2
  564. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  565. package/dist/tools/wait/message-processing.js +95 -37
  566. package/dist/tools/wait/message-processing.js.map +1 -1
  567. package/dist/tools/wait/poll-loop.d.ts +2 -41
  568. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  569. package/dist/tools/wait/poll-loop.js +101 -24
  570. package/dist/tools/wait/poll-loop.js.map +1 -1
  571. package/dist/tools/wait/reaction-handler.d.ts +3 -3
  572. package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
  573. package/dist/tools/wait/reaction-handler.js +6 -6
  574. package/dist/tools/wait/reaction-handler.js.map +1 -1
  575. package/dist/tools/wait/task-handler.d.ts +1 -1
  576. package/dist/tools/wait/task-handler.d.ts.map +1 -1
  577. package/dist/tools/wait/task-handler.js +5 -4
  578. package/dist/tools/wait/task-handler.js.map +1 -1
  579. package/package.json +12 -2
  580. package/templates/code-review.default.md +1 -1
  581. package/templates/fire-and-forget.default.md +1 -1
  582. package/templates/handoff.default.md +1 -1
  583. package/templates/sensorium-repair.default.md +1 -1
  584. package/templates/sleep.default.md +1 -1
  585. package/templates/swarm.default.md +4 -1
  586. package/dist/chat-ui/src/main.d.ts +0 -2
  587. package/dist/chat-ui/src/main.d.ts.map +0 -1
  588. package/dist/chat-ui/src/main.js +0 -4
  589. package/dist/chat-ui/src/main.js.map +0 -1
  590. package/dist/chat-ui/src/markdown.d.ts +0 -2
  591. package/dist/chat-ui/src/markdown.d.ts.map +0 -1
  592. package/dist/chat-ui/src/markdown.js +0 -39
  593. package/dist/chat-ui/src/markdown.js.map +0 -1
  594. package/dist/chat-ui/src/mock-data.d.ts +0 -4
  595. package/dist/chat-ui/src/mock-data.d.ts.map +0 -1
  596. package/dist/chat-ui/src/mock-data.js +0 -230
  597. package/dist/chat-ui/src/mock-data.js.map +0 -1
  598. package/dist/chat-ui/src/types.d.ts +0 -47
  599. package/dist/chat-ui/src/types.d.ts.map +0 -1
  600. package/dist/chat-ui/vite.config.d.ts +0 -3
  601. package/dist/chat-ui/vite.config.d.ts.map +0 -1
  602. package/dist/chat-ui/vite.config.js +0 -14
  603. package/dist/chat-ui/vite.config.js.map +0 -1
  604. package/dist/config.d.ts +0 -228
  605. package/dist/config.d.ts.map +0 -1
  606. package/dist/config.js +0 -841
  607. package/dist/config.js.map +0 -1
  608. package/dist/daily-session.d.ts.map +0 -1
  609. package/dist/daily-session.js.map +0 -1
  610. package/dist/dashboard.d.ts +0 -10
  611. package/dist/dashboard.d.ts.map +0 -1
  612. package/dist/dashboard.js +0 -10
  613. package/dist/dashboard.js.map +0 -1
  614. package/dist/data/memory/semantic.d.ts +0 -158
  615. package/dist/data/memory/semantic.d.ts.map +0 -1
  616. package/dist/data/memory/semantic.js +0 -588
  617. package/dist/data/memory/semantic.js.map +0 -1
  618. package/dist/dispatcher.d.ts +0 -9
  619. package/dist/dispatcher.d.ts.map +0 -1
  620. package/dist/dispatcher.js +0 -9
  621. package/dist/dispatcher.js.map +0 -1
  622. package/dist/drive.d.ts.map +0 -1
  623. package/dist/drive.js.map +0 -1
  624. package/dist/http-server.d.ts.map +0 -1
  625. package/dist/http-server.js.map +0 -1
  626. package/dist/intent.d.ts.map +0 -1
  627. package/dist/intent.js.map +0 -1
  628. package/dist/logger.d.ts.map +0 -1
  629. package/dist/logger.js.map +0 -1
  630. package/dist/markdown.d.ts +0 -26
  631. package/dist/markdown.d.ts.map +0 -1
  632. package/dist/markdown.js.map +0 -1
  633. package/dist/memory.d.ts +0 -9
  634. package/dist/memory.d.ts.map +0 -1
  635. package/dist/memory.js +0 -9
  636. package/dist/memory.js.map +0 -1
  637. package/dist/openai.d.ts +0 -13
  638. package/dist/openai.d.ts.map +0 -1
  639. package/dist/openai.js +0 -17
  640. package/dist/openai.js.map +0 -1
  641. package/dist/response-builders.d.ts.map +0 -1
  642. package/dist/response-builders.js.map +0 -1
  643. package/dist/scheduler.d.ts.map +0 -1
  644. package/dist/scheduler.js.map +0 -1
  645. package/dist/sessions.d.ts.map +0 -1
  646. package/dist/sessions.js.map +0 -1
  647. package/dist/stdio-server.d.ts.map +0 -1
  648. package/dist/stdio-server.js.map +0 -1
  649. package/dist/telegram.d.ts.map +0 -1
  650. package/dist/telegram.js.map +0 -1
  651. package/dist/tool-definitions.d.ts +0 -2
  652. package/dist/tool-definitions.d.ts.map +0 -1
  653. package/dist/tool-definitions.js +0 -2
  654. package/dist/tool-definitions.js.map +0 -1
  655. package/dist/types.d.ts.map +0 -1
  656. package/dist/types.js.map +0 -1
  657. package/dist/utils.d.ts.map +0 -1
  658. package/dist/utils.js.map +0 -1
  659. /package/dist/{logger.d.ts → lib/logger.d.ts} +0 -0
  660. /package/dist/{types.js → lib/types.js} +0 -0
  661. /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
  662. /package/dist/{drive.d.ts → services/drive.d.ts} +0 -0
  663. /package/dist/{intent.d.ts → services/intent.d.ts} +0 -0
  664. /package/dist/{chat-ui/src → tools/defs}/types.js +0 -0
@@ -3,9 +3,14 @@
3
3
  .SYNOPSIS
4
4
  Install or update sensorium-supervisor from GitHub Releases.
5
5
  .DESCRIPTION
6
- Downloads the latest sensorium-supervisor release binary from GitHub Releases
7
- (tag: supervisor-latest, repo: andriyshevchenko/sensorium-mcp) and places
8
- it in ~/.remote-copilot-mcp/bin/ as sensorium-supervisor.exe.
6
+ Downloads the sensorium-supervisor release binary from GitHub Releases
7
+ (repo: andriyshevchenko/sensorium-mcp) and places it in
8
+ ~/.remote-copilot-mcp/bin/ as sensorium-supervisor.exe.
9
+
10
+ The release channel follows the SAME switch as the MCP server: the tag in
11
+ MCPStartCommand ("npx -y sensorium-mcp@<tag>"). @latest -> supervisor-latest
12
+ (stable, built from main); @refactor -> supervisor-refactor (built from the
13
+ refactor branch). One edit to install.config.json flips both node + supervisor.
9
14
 
10
15
  All configuration is read from ~/.remote-copilot-mcp/install.config.json.
11
16
  Edit that file to change settings. Defaults are written on first run.
@@ -13,13 +18,20 @@
13
18
  .\Install-Sensorium.ps1
14
19
  #>
15
20
 
21
+ param(
22
+ # Internal: used when the script re-invokes itself via `securevault run` so the
23
+ # release fetch + download happens inside a child process with the profile's
24
+ # token injected as an env var. Not intended for direct use.
25
+ [switch]$SyncReleaseOnly
26
+ )
27
+
16
28
  $ErrorActionPreference = "Stop"
17
29
 
18
30
  # ── Constants ────────────────────────────────────────────────────────────────
19
31
  $GithubRepo = "andriyshevchenko/sensorium-mcp"
20
- $ReleaseTag = "supervisor-latest"
21
32
  $AssetName = "sensorium-supervisor-windows-amd64.exe"
22
33
  $InstalledBinaryName = "sensorium-supervisor.exe"
34
+ # $ReleaseTag is resolved from the MCPStartCommand channel after config load.
23
35
 
24
36
  $DataDir = Join-Path $env:USERPROFILE ".remote-copilot-mcp"
25
37
  $BinDir = Join-Path $DataDir "bin"
@@ -67,6 +79,15 @@ $SecureVaultProfile = $Config["SecureVaultProfile"]
67
79
  $UpdateMode = $Config["UpdateMode"]
68
80
  $EffectiveMCPStartCommand = $Config["MCPStartCommand"]
69
81
 
82
+ # Resolve the supervisor release channel from the same tag the node server
83
+ # follows: the "@<tag>" in MCPStartCommand. Only @refactor uses the branch
84
+ # build; everything else (incl. @latest, a bare version pin, or no tag) stays
85
+ # on the stable supervisor-latest release. This keeps the stable rollback path
86
+ # intact — pointing the config back at @latest restores the main supervisor.
87
+ $mcpTag = if ($EffectiveMCPStartCommand -match 'sensorium-mcp@([A-Za-z0-9._-]+)') { $Matches[1] } else { "latest" }
88
+ $ReleaseTag = if ($mcpTag -eq "refactor") { "supervisor-refactor" } else { "supervisor-latest" }
89
+ Write-Host "Supervisor channel: $ReleaseTag (from MCP tag '$mcpTag')" -ForegroundColor Cyan
90
+
70
91
  # Validate config values
71
92
  if ($UpdateMode -notin @("production", "development")) {
72
93
  Write-Host "[WARN] Invalid UpdateMode '$UpdateMode' in config — falling back to 'production'" -ForegroundColor Yellow
@@ -87,15 +108,43 @@ function Stop-SupervisorProcess {
87
108
  }
88
109
  }
89
110
 
111
+ function Get-GithubAuthHeaders {
112
+ param([string]$Accept = "application/vnd.github+json")
113
+
114
+ $headers = @{
115
+ "User-Agent" = "Install-Sensorium.ps1"
116
+ "Accept" = $Accept
117
+ }
118
+
119
+ # Dedicated env var so it never collides with `gh` CLI's own GH_TOKEN/GITHUB_TOKEN,
120
+ # which may be logged into a different (e.g. corporate) account.
121
+ $token = $env:SENSORIUM_GH_TOKEN
122
+ if ([string]::IsNullOrWhiteSpace($token)) {
123
+ $token = $env:GH_TOKEN
124
+ }
125
+ if ([string]::IsNullOrWhiteSpace($token)) {
126
+ $token = $env:GITHUB_TOKEN
127
+ }
128
+
129
+ if (-not [string]::IsNullOrWhiteSpace($token)) {
130
+ $headers["Authorization"] = "Bearer $token"
131
+ }
132
+
133
+ return $headers
134
+ }
135
+
90
136
  function Get-ReleaseAssetInfo {
91
137
  $apiUrl = "https://api.github.com/repos/$GithubRepo/releases/tags/$ReleaseTag"
92
138
  Write-Host "Fetching release info from GitHub..."
93
139
 
94
- $headers = @{ "User-Agent" = "Install-Sensorium.ps1" }
140
+ $headers = Get-GithubAuthHeaders
95
141
  try {
96
142
  $release = Invoke-RestMethod -Uri $apiUrl -Headers $headers -ErrorAction Stop
97
143
  }
98
144
  catch {
145
+ if ($_.Exception.Response -and [int]$_.Exception.Response.StatusCode -in @(401, 403, 404)) {
146
+ throw "Failed to fetch GitHub release info ($($_.Exception.Response.StatusCode)). If the repo is private, set `$env:SENSORIUM_GH_TOKEN to a personal access token with read access to '$GithubRepo'. Original error: $_"
147
+ }
99
148
  throw "Failed to fetch GitHub release info: $_"
100
149
  }
101
150
 
@@ -111,7 +160,6 @@ function Get-ReleaseAssetInfo {
111
160
  AssetName = $asset.name
112
161
  AssetSize = [int64]$asset.size
113
162
  AssetUpdatedAt = $asset.updated_at
114
- DownloadUrl = $asset.browser_download_url
115
163
  }
116
164
  }
117
165
 
@@ -174,15 +222,22 @@ function Get-BinaryAsset {
174
222
  [pscustomobject]$AssetInfo
175
223
  )
176
224
 
177
- $downloadUrl = $AssetInfo.DownloadUrl
178
- Write-Host "Downloading $($AssetInfo.AssetName) from $downloadUrl ..."
225
+ # For private repos, `browser_download_url` only works unauthenticated when the repo is
226
+ # public. Use the authenticated assets API endpoint (with an octet-stream Accept header)
227
+ # so a personal access token in $env:SENSORIUM_GH_TOKEN can pull private-repo releases.
228
+ $downloadUrl = "https://api.github.com/repos/$GithubRepo/releases/assets/$($AssetInfo.AssetId)"
229
+ $headers = Get-GithubAuthHeaders -Accept "application/octet-stream"
230
+ Write-Host "Downloading $($AssetInfo.AssetName) ..."
179
231
 
180
232
  $tmpFile = "$Destination.tmp"
181
233
  try {
182
- Invoke-WebRequest -Uri $downloadUrl -OutFile $tmpFile -UseBasicParsing -ErrorAction Stop
234
+ Invoke-WebRequest -Uri $downloadUrl -Headers $headers -OutFile $tmpFile -UseBasicParsing -ErrorAction Stop
183
235
  }
184
236
  catch {
185
237
  if (Test-Path $tmpFile) { Remove-Item $tmpFile -Force }
238
+ if ($_.Exception.Response -and [int]$_.Exception.Response.StatusCode -in @(401, 403, 404)) {
239
+ throw "Download failed ($($_.Exception.Response.StatusCode)). If the repo is private, set `$env:SENSORIUM_GH_TOKEN to a personal access token with read access to '$GithubRepo'. Original error: $_"
240
+ }
186
241
  throw "Download failed: $_"
187
242
  }
188
243
 
@@ -260,7 +315,7 @@ function Start-Supervisor {
260
315
  if ($useSecureVault) {
261
316
  Write-Host "Starting sensorium-supervisor via SecureVault (profile: $SecureVaultProfile)..."
262
317
  try {
263
- securevault run "`"$Binary`"" --profile $SecureVaultProfile --detached
318
+ securevault run "`"$Binary`"" --profile $SecureVaultProfile --detach
264
319
  }
265
320
  catch {
266
321
  Write-Host "[ERROR] SecureVault launch failed: $($_.Exception.Message)" -ForegroundColor Red
@@ -281,7 +336,16 @@ function Start-Supervisor {
281
336
  Write-Host "Starting sensorium-supervisor (secrets from .env)..."
282
337
  Start-Process -FilePath $Binary -WindowStyle Hidden
283
338
  }
284
- Start-Sleep -Seconds 2
339
+
340
+ # Poll briefly instead of a single fixed sleep — the detached launch chain
341
+ # (securevault's node process -> shell -> the actual .exe) can take longer
342
+ # than a couple seconds to actually spawn the binary, especially on a cold
343
+ # start. Avoids a spurious "process not found" right after a real launch.
344
+ $deadline = (Get-Date).AddSeconds(10)
345
+ while ((Get-Date) -lt $deadline) {
346
+ if (Get-Process -Name "sensorium-supervisor" -ErrorAction SilentlyContinue) { break }
347
+ Start-Sleep -Milliseconds 500
348
+ }
285
349
  }
286
350
 
287
351
  function Show-Status {
@@ -300,6 +364,43 @@ function Show-Status {
300
364
  }
301
365
  }
302
366
 
367
+ function Invoke-DirectReleaseSync {
368
+ $assetInfo = Get-ReleaseAssetInfo
369
+ $binaryUpToDate = Test-BinaryUpToDate -Destination $Binary -MetadataPath $BinaryMetadata -AssetInfo $assetInfo
370
+
371
+ if ($binaryUpToDate) {
372
+ Write-Host "Installed binary already matches release asset '$($assetInfo.AssetName)' - skipping download." -ForegroundColor Green
373
+ }
374
+ else {
375
+ Get-BinaryAsset -Destination $Binary -MetadataPath $BinaryMetadata -AssetInfo $assetInfo
376
+ }
377
+ }
378
+
379
+ function Sync-ReleaseBinary {
380
+ $useSecureVault = (-not [string]::IsNullOrWhiteSpace($SecureVaultProfile)) -and (Test-SecureVaultAvailable)
381
+
382
+ if (-not $useSecureVault) {
383
+ Invoke-DirectReleaseSync
384
+ return
385
+ }
386
+
387
+ # Re-invoke this same script through SecureVault so the profile's GitHub token
388
+ # (mapped to env var SENSORIUM_GH_TOKEN) is injected only inside this child
389
+ # process — the outer script/session never sees it.
390
+ Write-Host "Fetching release via SecureVault (profile: $SecureVaultProfile)..."
391
+ securevault run pwsh -NoProfile -File "`"$PSCommandPath`"" -SyncReleaseOnly --profile $SecureVaultProfile
392
+ if ($LASTEXITCODE -ne 0) {
393
+ throw "SecureVault-driven release sync failed (exit $LASTEXITCODE). Ensure profile '$SecureVaultProfile' maps a GitHub PAT to env var SENSORIUM_GH_TOKEN."
394
+ }
395
+ }
396
+
397
+ if ($SyncReleaseOnly) {
398
+ # Running as the SecureVault-spawned child: the profile's token is already in the
399
+ # environment. Do the fetch/download directly (no re-entrant SecureVault call).
400
+ Invoke-DirectReleaseSync
401
+ return
402
+ }
403
+
303
404
  # ── Main ─────────────────────────────────────────────────────────────────────
304
405
  $alreadyExists = Test-Path $Binary
305
406
 
@@ -325,15 +426,7 @@ if ($alreadyExists) {
325
426
  New-Item -ItemType Directory -Path $BinDir -Force | Out-Null
326
427
 
327
428
  # Step 3 — fetch release metadata and download only when needed
328
- $assetInfo = Get-ReleaseAssetInfo
329
- $binaryUpToDate = Test-BinaryUpToDate -Destination $Binary -MetadataPath $BinaryMetadata -AssetInfo $assetInfo
330
-
331
- if ($binaryUpToDate) {
332
- Write-Host "Installed binary already matches release asset '$($assetInfo.AssetName)' - skipping download." -ForegroundColor Green
333
- }
334
- else {
335
- Get-BinaryAsset -Destination $Binary -MetadataPath $BinaryMetadata -AssetInfo $assetInfo
336
- }
429
+ Sync-ReleaseBinary
337
430
 
338
431
  # Step 4 — install launcher and start
339
432
  Install-StartupLauncher
package/README.md CHANGED
@@ -210,6 +210,31 @@ When disabled, episodes are still stored locally but not sent to OpenAI.
210
210
 
211
211
  ## Architecture
212
212
 
213
+ ### Source layout
214
+
215
+ `src/` is organized as a layered tree. Imports flow strictly downward (a module
216
+ may import only from its own layer or lower), enforced by an ESLint import
217
+ fence. `src/index.ts` is the only module outside the fence — the entry point
218
+ that wires everything together via dynamic imports.
219
+
220
+ ```
221
+ bottom → top
222
+ lib → config → integrations → data, llm → sessions → services → tools, dashboard → server
223
+ ```
224
+
225
+ | Layer | Contents |
226
+ |---|---|
227
+ | `lib/` | logger, shared types, utils, markdown conversion |
228
+ | `config/` | env parsing, settings store, paths |
229
+ | `integrations/` | external clients: Telegram Bot API, OpenAI |
230
+ | `data/`, `llm/` | SQLite memory (episodes → semantic notes → narratives); LLM prompts + JSON parsing |
231
+ | `sessions/` | name→thread mapping, MCP session registry |
232
+ | `services/` | orchestration: keeper, process/spawn, dispatcher, scheduler, consolidation, self-update |
233
+ | `tools/`, `dashboard/` | MCP tool handlers, dashboard API + SPA |
234
+ | `server/` | HTTP/SSE and stdio transports, server factory |
235
+
236
+ ### Data directory
237
+
213
238
  ```
214
239
  ~/.remote-copilot-mcp/
215
240
  memory.db <- SQLite: episodes, semantic notes, voice signatures, thread registry
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Agent client settings — agent type selection, default models, Copilot
3
+ * BYOK provider config, per-agent custom spawn env vars, and Claude spawn
4
+ * overrides (CLI path, OAuth token, git-bash path, concurrency cap).
5
+ */
6
+ export type AgentType = "copilot" | "claude" | "codex" | "openai_codex" | "fable";
7
+ /** The single source of truth for the default agent type when none is configured. */
8
+ export declare const DEFAULT_AGENT_TYPE: AgentType;
9
+ export declare const VALID_AGENT_TYPES: readonly string[];
10
+ export declare function isValidAgentType(v: unknown): v is AgentType;
11
+ export declare function getAgentType(): AgentType;
12
+ export declare function setAgentType(type: AgentType): void;
13
+ export declare function getFableModel(): string;
14
+ export declare function getDefaultThreadModel(): string;
15
+ export declare function getDefaultWorkerModel(): string;
16
+ export declare function updateDefaultThreadModel(model: string): void;
17
+ export declare function updateDefaultWorkerModel(model: string): void;
18
+ export type CopilotProviderType = "openai" | "azure" | "anthropic";
19
+ /**
20
+ * "Bring Your Own Key" provider config for the Copilot CLI. When enabled and a
21
+ * baseUrl + apiKey are present, the Copilot child is spawned pointing at a
22
+ * custom OpenAI-compatible endpoint (OpenRouter, DeepSeek, Kimi, …) instead of
23
+ * GitHub-hosted models. GitHub authentication is not used in this mode.
24
+ */
25
+ export interface CopilotByokConfig {
26
+ enabled: boolean;
27
+ providerType: CopilotProviderType;
28
+ baseUrl: string;
29
+ apiKey: string;
30
+ /** Optional COPILOT_PROVIDER_MODEL_ID — well-known base model for tool-calling config. */
31
+ modelId: string;
32
+ /** Optional COPILOT_PROVIDER_WIRE_MODEL — actual model id sent on the wire. */
33
+ wireModel: string;
34
+ }
35
+ export declare function isValidCopilotProviderType(v: unknown): v is CopilotProviderType;
36
+ /** Model passed to the Copilot CLI via --model / COPILOT_MODEL (native or BYOK). */
37
+ export declare function getCopilotModel(): string;
38
+ export declare function setCopilotModel(model: string): void;
39
+ /** Reasoning effort written to the Copilot CLI's settings.json (low/medium/high). */
40
+ export declare function getCopilotEffortLevel(): string;
41
+ export declare function setCopilotEffortLevel(level: string): void;
42
+ /** Context window tier written to the Copilot CLI's settings.json (normal/long_context). */
43
+ export declare function getCopilotContextTier(): string;
44
+ export declare function setCopilotContextTier(tier: string): void;
45
+ export declare function getCopilotByokConfig(): CopilotByokConfig;
46
+ /**
47
+ * Merge a partial patch into the stored BYOK config and persist. The merged
48
+ * result is re-validated through normalizeByokConfig so the settings file can
49
+ * never hold an invalid providerType or non-string field, even though the input
50
+ * originates from the dashboard.
51
+ */
52
+ export declare function setCopilotByokConfig(patch: Partial<CopilotByokConfig>): CopilotByokConfig;
53
+ /**
54
+ * Assemble the environment variables that configure the Copilot CLI's model and
55
+ * (optionally) a custom BYOK provider. Values here are meant to override any
56
+ * inherited process.env at spawn time.
57
+ */
58
+ export declare function getCopilotSpawnEnv(): Record<string, string>;
59
+ export declare function getClaudeCustomEnvVars(): Record<string, string>;
60
+ export declare function setClaudeCustomEnvVars(vars: Record<string, string>): void;
61
+ export declare function getCopilotCustomEnvVars(): Record<string, string>;
62
+ export declare function setCopilotCustomEnvVars(vars: Record<string, string>): void;
63
+ /** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
64
+ export declare function getClaudeCliPath(): string | undefined;
65
+ export declare function setClaudeCliPath(path: string): void;
66
+ /** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
67
+ export declare function getClaudeOauthToken(): string | undefined;
68
+ export declare function setClaudeOauthToken(token: string): void;
69
+ /** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
70
+ export declare function getClaudeGitBashPath(): string | undefined;
71
+ export declare function setClaudeGitBashPath(path: string): void;
72
+ /** Maximum number of concurrent spawned threads. */
73
+ export declare function getMaxConcurrentThreads(): number;
74
+ export declare function setMaxConcurrentThreads(count: number): void;
75
+ /**
76
+ * Whether Claude Code's native auto-memory (MEMORY.md read/write) runs in spawned
77
+ * threads. Off by default — it conflicts with Sensorium's own memory system. Toggleable
78
+ * from the dashboard's Claude tab; applied to each thread's settings.json at spawn.
79
+ */
80
+ export declare function getClaudeAutoMemoryEnabled(): boolean;
81
+ export declare function setClaudeAutoMemoryEnabled(enabled: boolean): void;
82
+ //# sourceMappingURL=agent-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-settings.d.ts","sourceRoot":"","sources":["../../src/config/agent-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Agent client settings — agent type selection, default models, Copilot
3
+ * BYOK provider config, per-agent custom spawn env vars, and Claude spawn
4
+ * overrides (CLI path, OAuth token, git-bash path, concurrency cap).
5
+ */
6
+ import { readSettings, updateSettings } from "./settings-store.js";
7
+ /** The single source of truth for the default agent type when none is configured. */
8
+ export const DEFAULT_AGENT_TYPE = "claude";
9
+ export const VALID_AGENT_TYPES = [
10
+ "copilot",
11
+ "claude",
12
+ "codex",
13
+ "openai_codex",
14
+ "fable",
15
+ ];
16
+ export function isValidAgentType(v) {
17
+ return typeof v === "string" && VALID_AGENT_TYPES.includes(v);
18
+ }
19
+ export function getAgentType() {
20
+ const t = readSettings().agentType;
21
+ return isValidAgentType(t) ? t : DEFAULT_AGENT_TYPE;
22
+ }
23
+ export function setAgentType(type) {
24
+ updateSettings((s) => {
25
+ s.agentType = type;
26
+ });
27
+ }
28
+ // ─── Default model settings ──────────────────────────────────────────────────
29
+ const DEFAULT_THREAD_MODEL = "claude-opus-4-6";
30
+ const DEFAULT_WORKER_MODEL = "claude-sonnet-4-6";
31
+ // Model for the experimental "fable" agent type — a Claude-CLI thread pinned to
32
+ // a distinct (premium) model. Overridable via settings.fableModel.
33
+ const DEFAULT_FABLE_MODEL = "claude-fable-5";
34
+ export function getFableModel() {
35
+ const v = readSettings().fableModel;
36
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_FABLE_MODEL;
37
+ }
38
+ export function getDefaultThreadModel() {
39
+ const v = readSettings().defaultThreadModel;
40
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_THREAD_MODEL;
41
+ }
42
+ export function getDefaultWorkerModel() {
43
+ const v = readSettings().defaultWorkerModel;
44
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_WORKER_MODEL;
45
+ }
46
+ export function updateDefaultThreadModel(model) {
47
+ updateSettings((s) => {
48
+ s.defaultThreadModel = model;
49
+ });
50
+ }
51
+ export function updateDefaultWorkerModel(model) {
52
+ updateSettings((s) => {
53
+ s.defaultWorkerModel = model;
54
+ });
55
+ }
56
+ // ─── Copilot provider (BYOK / OpenRouter) settings ──────────────────────────
57
+ const DEFAULT_COPILOT_MODEL = "claude-opus-4-6";
58
+ const DEFAULT_COPILOT_EFFORT_LEVEL = "high";
59
+ const DEFAULT_COPILOT_CONTEXT_TIER = "long_context";
60
+ const DEFAULT_COPILOT_BYOK = {
61
+ enabled: false,
62
+ providerType: "openai",
63
+ baseUrl: "",
64
+ apiKey: "",
65
+ modelId: "",
66
+ wireModel: "",
67
+ };
68
+ export function isValidCopilotProviderType(v) {
69
+ return v === "openai" || v === "azure" || v === "anthropic";
70
+ }
71
+ /** Model passed to the Copilot CLI via --model / COPILOT_MODEL (native or BYOK). */
72
+ export function getCopilotModel() {
73
+ const v = readSettings().copilotModel;
74
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_COPILOT_MODEL;
75
+ }
76
+ export function setCopilotModel(model) {
77
+ updateSettings((s) => {
78
+ s.copilotModel = model;
79
+ });
80
+ }
81
+ /** Reasoning effort written to the Copilot CLI's settings.json (low/medium/high). */
82
+ export function getCopilotEffortLevel() {
83
+ const v = readSettings().copilotEffortLevel;
84
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_COPILOT_EFFORT_LEVEL;
85
+ }
86
+ export function setCopilotEffortLevel(level) {
87
+ updateSettings((s) => {
88
+ s.copilotEffortLevel = level;
89
+ });
90
+ }
91
+ /** Context window tier written to the Copilot CLI's settings.json (normal/long_context). */
92
+ export function getCopilotContextTier() {
93
+ const v = readSettings().copilotContextTier;
94
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_COPILOT_CONTEXT_TIER;
95
+ }
96
+ export function setCopilotContextTier(tier) {
97
+ updateSettings((s) => {
98
+ s.copilotContextTier = tier;
99
+ });
100
+ }
101
+ /** Coerce an untrusted value into a fully-valid CopilotByokConfig, filling defaults. */
102
+ function normalizeByokConfig(raw) {
103
+ if (!raw || typeof raw !== "object")
104
+ return { ...DEFAULT_COPILOT_BYOK };
105
+ const e = raw;
106
+ return {
107
+ enabled: typeof e.enabled === "boolean" ? e.enabled : false,
108
+ providerType: isValidCopilotProviderType(e.providerType) ? e.providerType : "openai",
109
+ baseUrl: typeof e.baseUrl === "string" ? e.baseUrl : "",
110
+ apiKey: typeof e.apiKey === "string" ? e.apiKey : "",
111
+ modelId: typeof e.modelId === "string" ? e.modelId : "",
112
+ wireModel: typeof e.wireModel === "string" ? e.wireModel : "",
113
+ };
114
+ }
115
+ export function getCopilotByokConfig() {
116
+ return normalizeByokConfig(readSettings().copilotByok);
117
+ }
118
+ /**
119
+ * Merge a partial patch into the stored BYOK config and persist. The merged
120
+ * result is re-validated through normalizeByokConfig so the settings file can
121
+ * never hold an invalid providerType or non-string field, even though the input
122
+ * originates from the dashboard.
123
+ */
124
+ export function setCopilotByokConfig(patch) {
125
+ const next = normalizeByokConfig({ ...getCopilotByokConfig(), ...patch });
126
+ updateSettings((s) => {
127
+ s.copilotByok = next;
128
+ });
129
+ return next;
130
+ }
131
+ /**
132
+ * Assemble the environment variables that configure the Copilot CLI's model and
133
+ * (optionally) a custom BYOK provider. Values here are meant to override any
134
+ * inherited process.env at spawn time.
135
+ */
136
+ export function getCopilotSpawnEnv() {
137
+ const model = getCopilotModel();
138
+ const env = { COPILOT_MODEL: model };
139
+ const byok = getCopilotByokConfig();
140
+ if (byok.enabled && byok.baseUrl && byok.apiKey) {
141
+ env.COPILOT_PROVIDER_BASE_URL = byok.baseUrl;
142
+ env.COPILOT_PROVIDER_TYPE = byok.providerType;
143
+ env.COPILOT_PROVIDER_API_KEY = byok.apiKey;
144
+ env.COPILOT_PROVIDER_MODEL_ID = byok.modelId || model;
145
+ env.COPILOT_PROVIDER_WIRE_MODEL = byok.wireModel || model;
146
+ }
147
+ return env;
148
+ }
149
+ // ─── Custom spawn env vars (per agent) ──────────────────────────────────────
150
+ //
151
+ // Operator-supplied env vars merged into the respective agent's spawn env. They
152
+ // are stored per agent so a var set for Claude is never injected into Copilot
153
+ // (and vice-versa). Locked built-ins always win over these, and the spawn path
154
+ // strips any ENV_DENYLIST key so a custom var can't smuggle a secret/cross-agent
155
+ // value past the denylist.
156
+ /** Coerce untrusted input into a clean string→string map (trimmed non-empty keys). */
157
+ function normalizeCustomEnvVars(raw) {
158
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
159
+ return {};
160
+ const out = {};
161
+ for (const [k, v] of Object.entries(raw)) {
162
+ const key = typeof k === "string" ? k.trim() : "";
163
+ if (key && typeof v === "string")
164
+ out[key] = v;
165
+ }
166
+ return out;
167
+ }
168
+ export function getClaudeCustomEnvVars() {
169
+ return normalizeCustomEnvVars(readSettings().claudeCustomEnvVars);
170
+ }
171
+ export function setClaudeCustomEnvVars(vars) {
172
+ updateSettings((s) => {
173
+ s.claudeCustomEnvVars = normalizeCustomEnvVars(vars);
174
+ });
175
+ }
176
+ export function getCopilotCustomEnvVars() {
177
+ return normalizeCustomEnvVars(readSettings().copilotCustomEnvVars);
178
+ }
179
+ export function setCopilotCustomEnvVars(vars) {
180
+ updateSettings((s) => {
181
+ s.copilotCustomEnvVars = normalizeCustomEnvVars(vars);
182
+ });
183
+ }
184
+ // ─── Claude spawn settings ──────────────────────────────────────────────────
185
+ //
186
+ // Overrides for values previously only discoverable from the environment or via
187
+ // auto-detection. Precedence is always env var → dashboard setting → autodetect,
188
+ // so setting an env var keeps the exact prior behavior and an unset setting is a
189
+ // no-op. Returns undefined when neither env nor setting supplies a value, letting
190
+ // the caller fall back to its existing auto-detection logic.
191
+ const DEFAULT_MAX_CONCURRENT_THREADS = 20;
192
+ function readStringSetting(key) {
193
+ const v = readSettings()[key];
194
+ return typeof v === "string" && v.length > 0 ? v : undefined;
195
+ }
196
+ /** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
197
+ export function getClaudeCliPath() {
198
+ return readStringSetting("claudeCliPath");
199
+ }
200
+ export function setClaudeCliPath(path) {
201
+ updateSettings((s) => {
202
+ if (path)
203
+ s.claudeCliPath = path;
204
+ else
205
+ delete s.claudeCliPath;
206
+ });
207
+ }
208
+ /** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
209
+ export function getClaudeOauthToken() {
210
+ return readStringSetting("claudeOauthToken");
211
+ }
212
+ export function setClaudeOauthToken(token) {
213
+ updateSettings((s) => {
214
+ if (token)
215
+ s.claudeOauthToken = token;
216
+ else
217
+ delete s.claudeOauthToken;
218
+ });
219
+ }
220
+ /** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
221
+ export function getClaudeGitBashPath() {
222
+ return readStringSetting("claudeGitBashPath");
223
+ }
224
+ export function setClaudeGitBashPath(path) {
225
+ updateSettings((s) => {
226
+ if (path)
227
+ s.claudeGitBashPath = path;
228
+ else
229
+ delete s.claudeGitBashPath;
230
+ });
231
+ }
232
+ /** Maximum number of concurrent spawned threads. */
233
+ export function getMaxConcurrentThreads() {
234
+ const v = readSettings().maxConcurrentThreads;
235
+ if (typeof v === "number" && Number.isFinite(v) && v >= 1)
236
+ return Math.round(v);
237
+ return DEFAULT_MAX_CONCURRENT_THREADS;
238
+ }
239
+ export function setMaxConcurrentThreads(count) {
240
+ const clamped = Math.max(1, Math.round(count));
241
+ if (!Number.isFinite(clamped))
242
+ return;
243
+ updateSettings((s) => {
244
+ s.maxConcurrentThreads = clamped;
245
+ });
246
+ }
247
+ /**
248
+ * Whether Claude Code's native auto-memory (MEMORY.md read/write) runs in spawned
249
+ * threads. Off by default — it conflicts with Sensorium's own memory system. Toggleable
250
+ * from the dashboard's Claude tab; applied to each thread's settings.json at spawn.
251
+ */
252
+ export function getClaudeAutoMemoryEnabled() {
253
+ const v = readSettings().claudeAutoMemoryEnabled;
254
+ return typeof v === "boolean" ? v : false;
255
+ }
256
+ export function setClaudeAutoMemoryEnabled(enabled) {
257
+ updateSettings((s) => {
258
+ s.claudeAutoMemoryEnabled = enabled;
259
+ });
260
+ }
261
+ //# sourceMappingURL=agent-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-settings.js","sourceRoot":"","sources":["../../src/config/agent-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Custom agent templates (reusable spawn presets).
3
+ *
4
+ * A template captures everything needed to stamp out a fresh root thread:
5
+ * client, working directory, an optional identity/system prompt, and optional
6
+ * per-thread MCP servers. Stored as an array in settings.json (no DB schema
7
+ * change). The dashboard "Agents" tab manages them; a Start action spawns a
8
+ * normal root thread from a template. Templates never touch running threads.
9
+ */
10
+ import { type AgentType } from "./agent-settings.js";
11
+ import { type ThreadMcpServer } from "./mcp-settings.js";
12
+ export interface AgentTemplate {
13
+ id: string;
14
+ name: string;
15
+ client: AgentType;
16
+ workingDirectory: string;
17
+ systemPrompt?: string;
18
+ mcpServers?: Record<string, ThreadMcpServer>;
19
+ }
20
+ /** All stored agent templates (malformed entries dropped). */
21
+ export declare function getAgentTemplates(): AgentTemplate[];
22
+ /** Single template by id, or null. */
23
+ export declare function getAgentTemplate(id: string): AgentTemplate | null;
24
+ /**
25
+ * Upsert a template. A blank id creates a new one (server-assigned id); an
26
+ * existing id replaces in place. Validates required fields and the MCP map;
27
+ * throws on violation so the dashboard can surface a 400.
28
+ */
29
+ export declare function saveAgentTemplate(input: {
30
+ id?: string;
31
+ name: string;
32
+ client: string;
33
+ workingDirectory: string;
34
+ systemPrompt?: string | null;
35
+ mcpServers?: Record<string, ThreadMcpServer> | null;
36
+ }): AgentTemplate;
37
+ /** Remove a template by id. Returns true if one was removed. */
38
+ export declare function deleteAgentTemplate(id: string): boolean;
39
+ //# sourceMappingURL=agent-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-templates.d.ts","sourceRoot":"","sources":["../../src/config/agent-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,SAAS,EAAuC,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAuBD,8DAA8D;AAC9D,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;CACrD,GAAG,aAAa,CA2BhB;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQvD"}