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
@@ -0,0 +1,105 @@
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 { randomUUID } from "node:crypto";
11
+ import { readSettings, updateSettings } from "./settings-store.js";
12
+ import { isValidAgentType, VALID_AGENT_TYPES } from "./agent-settings.js";
13
+ import { parseThreadMcpServers, sanitizeThreadMcpServers, } from "./mcp-settings.js";
14
+ /** Parse+validate one stored template, or null if malformed. */
15
+ function parseAgentTemplate(raw) {
16
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
17
+ return null;
18
+ const o = raw;
19
+ if (typeof o.id !== "string" || !o.id)
20
+ return null;
21
+ if (typeof o.name !== "string" || !o.name)
22
+ return null;
23
+ if (!isValidAgentType(o.client))
24
+ return null;
25
+ if (typeof o.workingDirectory !== "string" || !o.workingDirectory)
26
+ return null;
27
+ const tpl = {
28
+ id: o.id,
29
+ name: o.name,
30
+ client: o.client,
31
+ workingDirectory: o.workingDirectory,
32
+ };
33
+ if (typeof o.systemPrompt === "string" && o.systemPrompt.length > 0)
34
+ tpl.systemPrompt = o.systemPrompt;
35
+ const mcp = parseThreadMcpServers(o.mcpServers);
36
+ if (Object.keys(mcp).length > 0)
37
+ tpl.mcpServers = mcp;
38
+ return tpl;
39
+ }
40
+ /** All stored agent templates (malformed entries dropped). */
41
+ export function getAgentTemplates() {
42
+ const raw = readSettings().agentTemplates;
43
+ if (!Array.isArray(raw))
44
+ return [];
45
+ const result = [];
46
+ for (const item of raw) {
47
+ const parsed = parseAgentTemplate(item);
48
+ if (parsed)
49
+ result.push(parsed);
50
+ }
51
+ return result;
52
+ }
53
+ /** Single template by id, or null. */
54
+ export function getAgentTemplate(id) {
55
+ return getAgentTemplates().find((t) => t.id === id) ?? null;
56
+ }
57
+ /**
58
+ * Upsert a template. A blank id creates a new one (server-assigned id); an
59
+ * existing id replaces in place. Validates required fields and the MCP map;
60
+ * throws on violation so the dashboard can surface a 400.
61
+ */
62
+ export function saveAgentTemplate(input) {
63
+ const name = input.name?.trim();
64
+ if (!name)
65
+ throw new Error("name is required");
66
+ if (!isValidAgentType(input.client))
67
+ throw new Error(`client must be one of: ${VALID_AGENT_TYPES.join(", ")}`);
68
+ const workingDirectory = input.workingDirectory?.trim();
69
+ if (!workingDirectory)
70
+ throw new Error("workingDirectory is required");
71
+ const mcpServers = sanitizeThreadMcpServers(input.mcpServers ?? undefined);
72
+ const tpl = {
73
+ id: input.id?.trim() ? input.id.trim() : `tpl_${randomUUID().replace(/-/g, "").slice(0, 12)}`,
74
+ name,
75
+ client: input.client,
76
+ workingDirectory,
77
+ };
78
+ const systemPrompt = typeof input.systemPrompt === "string" ? input.systemPrompt.trim() : "";
79
+ if (systemPrompt)
80
+ tpl.systemPrompt = systemPrompt;
81
+ if (Object.keys(mcpServers).length > 0)
82
+ tpl.mcpServers = mcpServers;
83
+ updateSettings((s) => {
84
+ const list = getAgentTemplates();
85
+ const idx = list.findIndex((t) => t.id === tpl.id);
86
+ if (idx >= 0)
87
+ list[idx] = tpl;
88
+ else
89
+ list.push(tpl);
90
+ s.agentTemplates = list;
91
+ });
92
+ return tpl;
93
+ }
94
+ /** Remove a template by id. Returns true if one was removed. */
95
+ export function deleteAgentTemplate(id) {
96
+ const before = getAgentTemplates();
97
+ const after = before.filter((t) => t.id !== id);
98
+ if (after.length === before.length)
99
+ return false;
100
+ updateSettings((s) => {
101
+ s.agentTemplates = after;
102
+ });
103
+ return true;
104
+ }
105
+ //# sourceMappingURL=agent-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-templates.js","sourceRoot":"","sources":["../../src/config/agent-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Ephemeral, per-thread "detail grant" — an operator-side opt-in that lets the
3
+ * agent's next long report_progress bubble bypass the hard length cap.
4
+ *
5
+ * This is the ONE trustworthy verbosity signal: it is set by an operator
6
+ * `/detail` command that the SERVER sees (poller.ts), never by a flag the agent
7
+ * sets on itself. A bare `detailed:true` is now ignored — the length check only
8
+ * relaxes while a grant is live. Semantics: "next long message OR N minutes,
9
+ * whichever comes first" — consumed when the first over-cap message passes, else
10
+ * it expires.
11
+ *
12
+ * Deliberately in-memory only: a ~30-minute grant surviving a server restart has
13
+ * no value, so it is never persisted to settings.json.
14
+ */
15
+ /** Length of a granted window, in minutes. Configurable via DETAIL_GRANT_MINUTES. */
16
+ export declare const DETAIL_GRANT_MINUTES: number;
17
+ /**
18
+ * Open a detail window for a thread: valid until the next long message or
19
+ * DETAIL_GRANT_MINUTES from now, whichever comes first. Overwrites any existing
20
+ * grant (a fresh `/detail` restarts the clock).
21
+ */
22
+ export declare function grantDetailWindow(threadId: number, nowMs?: number): void;
23
+ /** Drop a thread's grant immediately (operator `/detail off`). Idempotent. */
24
+ export declare function revokeDetailGrant(threadId: number): void;
25
+ /**
26
+ * Non-consuming peek: is there a live (unexpired) grant for this thread? Lazily
27
+ * evicts an expired entry so the Map never accumulates stale grants.
28
+ *
29
+ * `nowMs` defaults to `Date.now()`; it is injectable purely so the window's
30
+ * expiry is testable without stubbing the clock.
31
+ */
32
+ export declare function isDetailGrantActive(threadId: number, nowMs?: number): boolean;
33
+ /**
34
+ * Consume the grant: if active, delete it and return true (one long message is
35
+ * allowed through). If inactive or expired, return false and leave nothing
36
+ * behind. One-shot — a second long message needs a fresh `/detail`.
37
+ */
38
+ export declare function consumeDetailGrant(threadId: number, nowMs?: number): boolean;
39
+ //# sourceMappingURL=detail-grant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-grant.d.ts","sourceRoot":"","sources":["../../src/config/detail-grant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,QACkE,CAAC;AAUpG;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,IAAI,CAEpF;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,OAAO,CAQzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,OAAO,CAIxF"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Ephemeral, per-thread "detail grant" — an operator-side opt-in that lets the
3
+ * agent's next long report_progress bubble bypass the hard length cap.
4
+ *
5
+ * This is the ONE trustworthy verbosity signal: it is set by an operator
6
+ * `/detail` command that the SERVER sees (poller.ts), never by a flag the agent
7
+ * sets on itself. A bare `detailed:true` is now ignored — the length check only
8
+ * relaxes while a grant is live. Semantics: "next long message OR N minutes,
9
+ * whichever comes first" — consumed when the first over-cap message passes, else
10
+ * it expires.
11
+ *
12
+ * Deliberately in-memory only: a ~30-minute grant surviving a server restart has
13
+ * no value, so it is never persisted to settings.json.
14
+ */
15
+ const DEFAULT_GRANT_MINUTES = 30;
16
+ const rawGrantMinutes = parseFloat(process.env.DETAIL_GRANT_MINUTES ?? "");
17
+ /** Length of a granted window, in minutes. Configurable via DETAIL_GRANT_MINUTES. */
18
+ export const DETAIL_GRANT_MINUTES = Number.isFinite(rawGrantMinutes) && rawGrantMinutes > 0 ? rawGrantMinutes : DEFAULT_GRANT_MINUTES;
19
+ /** threadId → active grant. Absent key = no grant. */
20
+ const grants = new Map();
21
+ /**
22
+ * Open a detail window for a thread: valid until the next long message or
23
+ * DETAIL_GRANT_MINUTES from now, whichever comes first. Overwrites any existing
24
+ * grant (a fresh `/detail` restarts the clock).
25
+ */
26
+ export function grantDetailWindow(threadId, nowMs = Date.now()) {
27
+ grants.set(threadId, { expiresAt: nowMs + DETAIL_GRANT_MINUTES * 60_000 });
28
+ }
29
+ /** Drop a thread's grant immediately (operator `/detail off`). Idempotent. */
30
+ export function revokeDetailGrant(threadId) {
31
+ grants.delete(threadId);
32
+ }
33
+ /**
34
+ * Non-consuming peek: is there a live (unexpired) grant for this thread? Lazily
35
+ * evicts an expired entry so the Map never accumulates stale grants.
36
+ *
37
+ * `nowMs` defaults to `Date.now()`; it is injectable purely so the window's
38
+ * expiry is testable without stubbing the clock.
39
+ */
40
+ export function isDetailGrantActive(threadId, nowMs = Date.now()) {
41
+ const grant = grants.get(threadId);
42
+ if (!grant)
43
+ return false;
44
+ if (grant.expiresAt <= nowMs) {
45
+ grants.delete(threadId);
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ /**
51
+ * Consume the grant: if active, delete it and return true (one long message is
52
+ * allowed through). If inactive or expired, return false and leave nothing
53
+ * behind. One-shot — a second long message needs a fresh `/detail`.
54
+ */
55
+ export function consumeDetailGrant(threadId, nowMs = Date.now()) {
56
+ if (!isDetailGrantActive(threadId, nowMs))
57
+ return false;
58
+ grants.delete(threadId);
59
+ return true;
60
+ }
61
+ //# sourceMappingURL=detail-grant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-grant.js","sourceRoot":"","sources":["../../src/config/detail-grant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AAC3E,qFAAqF;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAOpG,sDAAsD;AACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IAC5E,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,oBAAoB,GAAG,MAAM,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IAC7E,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Centralized configuration — reads environment variables at startup and
3
+ * exports validated values used throughout the codebase. Settings-file-backed
4
+ * options live in domain modules under src/config/ and are re-exported here so
5
+ * import sites are unchanged (settings-store itself stays internal).
6
+ */
7
+ import type { AppConfig } from "../lib/types.js";
8
+ export * from "./agent-settings.js";
9
+ export * from "./mcp-settings.js";
10
+ export * from "./agent-templates.js";
11
+ export * from "./keep-alive-settings.js";
12
+ export * from "./misc-settings.js";
13
+ export * from "./detail-grant.js";
14
+ export declare const AUTONOMOUS_MODE: boolean;
15
+ export declare const TEMPLATES_DIR: string;
16
+ export declare const config: AppConfig;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAWlC,eAAO,MAAM,eAAe,SAAyC,CAAC;AA8BtE,eAAO,MAAM,aAAa,QAAsD,CAAC;AAKjF,eAAO,MAAM,MAAM,EAAE,SAUpB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Centralized configuration — reads environment variables at startup and
3
+ * exports validated values used throughout the codebase. Settings-file-backed
4
+ * options live in domain modules under src/config/ and are re-exported here so
5
+ * import sites are unchanged (settings-store itself stays internal).
6
+ */
7
+ import { createRequire } from "node:module";
8
+ import { mkdirSync } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { join } from "node:path";
11
+ import { log } from "../lib/logger.js";
12
+ import { getWaitTimeoutMinutes } from "./misc-settings.js";
13
+ export * from "./agent-settings.js";
14
+ export * from "./mcp-settings.js";
15
+ export * from "./agent-templates.js";
16
+ export * from "./keep-alive-settings.js";
17
+ export * from "./misc-settings.js";
18
+ export * from "./detail-grant.js";
19
+ const esmRequire = createRequire(import.meta.url);
20
+ const { version: PKG_VERSION } = esmRequire("../../package.json");
21
+ // ─── Environment variables ──────────────────────────────────────────────────
22
+ const TELEGRAM_TOKEN = process.env.TELEGRAM_TOKEN ?? "";
23
+ const TELEGRAM_CHAT_ID = process.env.TELEGRAM_CHAT_ID ?? "";
24
+ const OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? "";
25
+ const VOICE_ANALYSIS_URL = process.env.VOICE_ANALYSIS_URL ?? "";
26
+ export const AUTONOMOUS_MODE = process.env.AUTONOMOUS_MODE === "true";
27
+ const rawDmnActivationHours = parseFloat(process.env.DMN_ACTIVATION_HOURS ?? "");
28
+ const DMN_ACTIVATION_HOURS = Math.max(0.5, Number.isFinite(rawDmnActivationHours) ? rawDmnActivationHours : 4);
29
+ // ─── Validation ─────────────────────────────────────────────────────────────
30
+ if (!TELEGRAM_TOKEN || !TELEGRAM_CHAT_ID) {
31
+ log.error("TELEGRAM_TOKEN and TELEGRAM_CHAT_ID environment variables are required.");
32
+ process.exit(1);
33
+ }
34
+ if (!OPENAI_API_KEY) {
35
+ log.warn("OPENAI_API_KEY not set — voice messages will not be transcribed.");
36
+ }
37
+ if (VOICE_ANALYSIS_URL) {
38
+ log.info(`Voice analysis service configured: ${VOICE_ANALYSIS_URL}`);
39
+ }
40
+ if (process.env.TRANSCRIPTION_BASE_URL) {
41
+ const model = process.env.TRANSCRIPTION_MODEL || "whisper-1";
42
+ log.info(`Transcription provider configured: ${process.env.TRANSCRIPTION_BASE_URL} (model: ${model})`);
43
+ }
44
+ // ─── Templates directory ────────────────────────────────────────────────────
45
+ export const TEMPLATES_DIR = join(homedir(), ".remote-copilot-mcp", "templates");
46
+ mkdirSync(TEMPLATES_DIR, { recursive: true });
47
+ // ─── Exported config object ─────────────────────────────────────────────────
48
+ export const config = {
49
+ TELEGRAM_TOKEN,
50
+ TELEGRAM_CHAT_ID,
51
+ OPENAI_API_KEY,
52
+ VOICE_ANALYSIS_URL,
53
+ get WAIT_TIMEOUT_MINUTES() {
54
+ return getWaitTimeoutMinutes();
55
+ },
56
+ DMN_ACTIVATION_HOURS,
57
+ PKG_VERSION,
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAwB,CAAC;AAEzF,+EAA+E;AAE/E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AACxD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;AAEtE,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACjF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CACnC,GAAG,EACH,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;AAEF,+EAA+E;AAE/E,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,cAAc,EAAE,CAAC;IACpB,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;AAC/E,CAAC;AACD,IAAI,kBAAkB,EAAE,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,sCAAsC,kBAAkB,EAAE,CAAC,CAAC;AACvE,CAAC;AACD,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WAAW,CAAC;IAC7D,GAAG,CAAC,IAAI,CACN,sCAAsC,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,KAAK,GAAG,CAC7F,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACjF,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,IAAI,oBAAoB;QACtB,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;IACD,oBAAoB;IACpB,WAAW;CACZ,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Keep-alive settings — global keeper toggle/target/retry policy, keeper
3
+ * client type, and per-thread keep-alive overrides.
4
+ */
5
+ export declare function getKeepAliveEnabled(): boolean;
6
+ export declare function setKeepAliveEnabled(enabled: boolean): void;
7
+ export declare function getKeepAliveThreadId(): number;
8
+ export declare function setKeepAliveThreadId(threadId: number): void;
9
+ export declare function getKeepAliveMaxRetries(): number;
10
+ export declare function setKeepAliveMaxRetries(retries: number): void;
11
+ export declare function getKeepAliveCooldownMs(): number;
12
+ export declare function setKeepAliveCooldownMs(ms: number): void;
13
+ export type KeeperClient = "claude" | "copilot";
14
+ export declare function isValidKeeperClient(v: unknown): v is KeeperClient;
15
+ export declare function getKeepAliveClient(): KeeperClient;
16
+ export declare function setKeepAliveClient(client: KeeperClient): void;
17
+ export interface ThreadKeepAliveSettings {
18
+ enabled: boolean;
19
+ client?: string;
20
+ maxRetries?: number;
21
+ cooldownMs?: number;
22
+ }
23
+ /** Sets keep-alive settings for a specific thread. */
24
+ export declare function setThreadKeepAlive(threadId: number, settings: ThreadKeepAliveSettings): void;
25
+ /** Removes per-thread keep-alive settings. */
26
+ export declare function removeThreadKeepAlive(threadId: number): void;
27
+ /** Returns all per-thread keep-alive overrides. */
28
+ export declare function getAllThreadKeepAlive(): Record<string, ThreadKeepAliveSettings>;
29
+ //# sourceMappingURL=keep-alive-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-alive-settings.d.ts","sourceRoot":"","sources":["../../src/config/keep-alive-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI1D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIvD;AAID,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAEjE;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAGjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAI7D;AAID,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAM5F;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED,mDAAmD;AACnD,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAiB/E"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Keep-alive settings — global keeper toggle/target/retry policy, keeper
3
+ * client type, and per-thread keep-alive overrides.
4
+ */
5
+ import { readSettings, updateSettings } from "./settings-store.js";
6
+ // ─── Keep-alive settings ─────────────────────────────────────────────────────
7
+ const DEFAULT_KEEP_ALIVE_MAX_RETRIES = 5;
8
+ const DEFAULT_KEEP_ALIVE_COOLDOWN_MS = 300_000;
9
+ export function getKeepAliveEnabled() {
10
+ const v = readSettings().keepAliveEnabled;
11
+ if (typeof v === "boolean")
12
+ return v;
13
+ return false; // default: disabled
14
+ }
15
+ export function setKeepAliveEnabled(enabled) {
16
+ updateSettings((s) => {
17
+ s.keepAliveEnabled = enabled;
18
+ });
19
+ }
20
+ export function getKeepAliveThreadId() {
21
+ const v = readSettings().keepAliveThreadId;
22
+ if (typeof v === "number" && Number.isFinite(v) && v > 0)
23
+ return v;
24
+ return 0;
25
+ }
26
+ export function setKeepAliveThreadId(threadId) {
27
+ updateSettings((s) => {
28
+ s.keepAliveThreadId = threadId;
29
+ });
30
+ }
31
+ export function getKeepAliveMaxRetries() {
32
+ const v = readSettings().keepAliveMaxRetries;
33
+ if (typeof v === "number" && Number.isFinite(v) && v > 0)
34
+ return v;
35
+ return DEFAULT_KEEP_ALIVE_MAX_RETRIES;
36
+ }
37
+ export function setKeepAliveMaxRetries(retries) {
38
+ updateSettings((s) => {
39
+ s.keepAliveMaxRetries = retries;
40
+ });
41
+ }
42
+ export function getKeepAliveCooldownMs() {
43
+ const v = readSettings().keepAliveCooldownMs;
44
+ if (typeof v === "number" && Number.isFinite(v) && v > 0)
45
+ return v;
46
+ return DEFAULT_KEEP_ALIVE_COOLDOWN_MS;
47
+ }
48
+ export function setKeepAliveCooldownMs(ms) {
49
+ updateSettings((s) => {
50
+ s.keepAliveCooldownMs = ms;
51
+ });
52
+ }
53
+ export function isValidKeeperClient(v) {
54
+ return v === "claude" || v === "copilot";
55
+ }
56
+ export function getKeepAliveClient() {
57
+ const v = readSettings().keepAliveClient;
58
+ return isValidKeeperClient(v) ? v : "claude";
59
+ }
60
+ export function setKeepAliveClient(client) {
61
+ updateSettings((s) => {
62
+ s.keepAliveClient = client;
63
+ });
64
+ }
65
+ /** Sets keep-alive settings for a specific thread. */
66
+ export function setThreadKeepAlive(threadId, settings) {
67
+ updateSettings((s) => {
68
+ const map = (s.threadKeepAlive ?? {});
69
+ map[String(threadId)] = settings;
70
+ s.threadKeepAlive = map;
71
+ });
72
+ }
73
+ /** Removes per-thread keep-alive settings. */
74
+ export function removeThreadKeepAlive(threadId) {
75
+ updateSettings((s) => {
76
+ const map = (s.threadKeepAlive ?? {});
77
+ delete map[String(threadId)];
78
+ s.threadKeepAlive = map;
79
+ });
80
+ }
81
+ /** Returns all per-thread keep-alive overrides. */
82
+ export function getAllThreadKeepAlive() {
83
+ const map = readSettings().threadKeepAlive;
84
+ if (!map || typeof map !== "object")
85
+ return {};
86
+ const result = {};
87
+ for (const [k, v] of Object.entries(map)) {
88
+ if (v && typeof v === "object") {
89
+ const e = v;
90
+ result[k] = {
91
+ enabled: typeof e.enabled === "boolean" ? e.enabled : false,
92
+ client: isValidKeeperClient(e.client) ? e.client : undefined,
93
+ cooldownMs: typeof e.cooldownMs === "number" && e.cooldownMs >= 1000 ? e.cooldownMs : undefined,
94
+ maxRetries: typeof e.maxRetries === "number" && e.maxRetries > 0 ? e.maxRetries : undefined,
95
+ };
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ //# sourceMappingURL=keep-alive-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-alive-settings.js","sourceRoot":"","sources":["../../src/config/keep-alive-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * MCP server settings — the global user-configured server map plus the
3
+ * security-hardened per-thread server entries (http-only, reserved-name and
4
+ * header-name invariants) and dashboard masking helpers.
5
+ */
6
+ export type McpServerConfig = {
7
+ type: "stdio";
8
+ command: string;
9
+ args?: string[];
10
+ env?: Record<string, string>;
11
+ } | {
12
+ type: "http";
13
+ url: string;
14
+ headers?: Record<string, string>;
15
+ env?: Record<string, string>;
16
+ };
17
+ /** Returns all user-configured MCP servers (excludes auto-injected sensorium). */
18
+ export declare function getMcpServers(): Record<string, McpServerConfig>;
19
+ /** Overwrites the entire MCP servers map. */
20
+ export declare function setMcpServers(servers: Record<string, McpServerConfig>): void;
21
+ /** Add or update a single MCP server by name. */
22
+ export declare function addMcpServer(name: string, config: McpServerConfig): void;
23
+ /** Remove an MCP server by name. Returns true if it existed. */
24
+ export declare function removeMcpServer(name: string): boolean;
25
+ /** MCP server names a per-thread entry may never use. */
26
+ export declare const RESERVED_MCP_NAMES: readonly string[];
27
+ /** A per-thread MCP server entry — HTTP transport only (no stdio, by design). */
28
+ export type ThreadMcpServer = {
29
+ type: "http";
30
+ url: string;
31
+ headers?: Record<string, string>;
32
+ };
33
+ /** Parse a per-thread server map, dropping reserved names and non-http/invalid entries. */
34
+ export declare function parseThreadMcpServers(raw: unknown): Record<string, ThreadMcpServer>;
35
+ /** Returns a thread's custom MCP servers (http-only, reserved names excluded). */
36
+ export declare function getThreadMcpServers(threadId: number): Record<string, ThreadMcpServer>;
37
+ /**
38
+ * Validate a caller-supplied server map against the per-thread invariants
39
+ * (http-only, non-reserved name, safe header names). Throws on any violation so
40
+ * the dashboard can surface a 400. Shared by per-thread MCP writes and agent
41
+ * templates (which carry the same kind of map).
42
+ */
43
+ export declare function sanitizeThreadMcpServers(servers: Record<string, ThreadMcpServer> | null | undefined): Record<string, ThreadMcpServer>;
44
+ /** Header value the dashboard shows in place of a stored secret; must never be persisted back. */
45
+ export declare const MASK_SENTINEL = "\u2022\u2022\u2022\u2022";
46
+ type MaskedThreadMcpServer = {
47
+ type: "http";
48
+ url: string;
49
+ headers?: Record<string, string>;
50
+ };
51
+ /** Mask header values so the dashboard shows which headers exist without leaking the secret. */
52
+ export declare function maskThreadMcpServers(servers: Record<string, ThreadMcpServer>): Record<string, MaskedThreadMcpServer>;
53
+ export declare function setThreadMcpServers(threadId: number, servers: Record<string, ThreadMcpServer> | null): void;
54
+ /** Remove a thread's custom MCP servers entirely (called on hard-delete). */
55
+ export declare function deleteThreadMcpServers(threadId: number): void;
56
+ /** All per-thread MCP servers (for dashboard enrichment), reserved/invalid excluded. */
57
+ export declare function getAllThreadMcpServers(): Record<string, Record<string, ThreadMcpServer>>;
58
+ export {};
59
+ //# sourceMappingURL=mcp-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-settings.d.ts","sourceRoot":"","sources":["../../src/config/mcp-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAQlG,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAE/D;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAI5E;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAUxE;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWrD;AAmBD,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA6B,CAAC;AAE9E,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AA2B9F,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CASnF;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAGrF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,GAC1D,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA4BjC;AAED,kGAAkG;AAClG,eAAO,MAAM,aAAa,6BAAS,CAAC;AAEpC,KAAK,qBAAqB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7F,gGAAgG;AAChG,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAWvC;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,GAC9C,IAAI,CAQN;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CASxF"}