sensorium-mcp 3.0.103 → 3.1.0-refactor.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/README.md +25 -0
  2. package/dist/config/agent-settings.d.ts +69 -0
  3. package/dist/config/agent-settings.d.ts.map +1 -0
  4. package/dist/config/agent-settings.js +225 -0
  5. package/dist/config/agent-settings.js.map +1 -0
  6. package/dist/config/agent-templates.d.ts +39 -0
  7. package/dist/config/agent-templates.d.ts.map +1 -0
  8. package/dist/config/agent-templates.js +105 -0
  9. package/dist/config/agent-templates.js.map +1 -0
  10. package/dist/config/index.d.ts +16 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +58 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/keep-alive-settings.d.ts +29 -0
  15. package/dist/config/keep-alive-settings.d.ts.map +1 -0
  16. package/dist/config/keep-alive-settings.js +100 -0
  17. package/dist/config/keep-alive-settings.js.map +1 -0
  18. package/dist/config/mcp-settings.d.ts +59 -0
  19. package/dist/config/mcp-settings.d.ts.map +1 -0
  20. package/dist/config/mcp-settings.js +196 -0
  21. package/dist/config/mcp-settings.js.map +1 -0
  22. package/dist/config/misc-settings.d.ts +46 -0
  23. package/dist/config/misc-settings.d.ts.map +1 -0
  24. package/dist/config/misc-settings.js +146 -0
  25. package/dist/config/misc-settings.js.map +1 -0
  26. package/dist/config/settings-store.d.ts +10 -0
  27. package/dist/config/settings-store.d.ts.map +1 -0
  28. package/dist/config/settings-store.js +65 -0
  29. package/dist/config/settings-store.js.map +1 -0
  30. package/dist/dashboard/log-parser.d.ts.map +1 -1
  31. package/dist/dashboard/log-parser.js +12 -2
  32. package/dist/dashboard/log-parser.js.map +1 -1
  33. package/dist/dashboard/presets.d.ts +1 -1
  34. package/dist/dashboard/presets.d.ts.map +1 -1
  35. package/dist/dashboard/presets.js +1 -1
  36. package/dist/dashboard/presets.js.map +1 -1
  37. package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
  38. package/dist/dashboard/routes/agent-templates.js +13 -8
  39. package/dist/dashboard/routes/agent-templates.js.map +1 -1
  40. package/dist/dashboard/routes/claude.d.ts.map +1 -1
  41. package/dist/dashboard/routes/claude.js +6 -3
  42. package/dist/dashboard/routes/claude.js.map +1 -1
  43. package/dist/dashboard/routes/copilot.d.ts.map +1 -1
  44. package/dist/dashboard/routes/copilot.js +16 -7
  45. package/dist/dashboard/routes/copilot.js.map +1 -1
  46. package/dist/dashboard/routes/data.d.ts.map +1 -1
  47. package/dist/dashboard/routes/data.js +43 -15
  48. package/dist/dashboard/routes/data.js.map +1 -1
  49. package/dist/dashboard/routes/env-vars.d.ts.map +1 -1
  50. package/dist/dashboard/routes/env-vars.js.map +1 -1
  51. package/dist/dashboard/routes/mcp-servers.d.ts.map +1 -1
  52. package/dist/dashboard/routes/mcp-servers.js +11 -5
  53. package/dist/dashboard/routes/mcp-servers.js.map +1 -1
  54. package/dist/dashboard/routes/prompts.d.ts.map +1 -1
  55. package/dist/dashboard/routes/prompts.js +2 -2
  56. package/dist/dashboard/routes/prompts.js.map +1 -1
  57. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  58. package/dist/dashboard/routes/settings.js +5 -3
  59. package/dist/dashboard/routes/settings.js.map +1 -1
  60. package/dist/dashboard/routes/skills.d.ts.map +1 -1
  61. package/dist/dashboard/routes/skills.js +4 -4
  62. package/dist/dashboard/routes/skills.js.map +1 -1
  63. package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
  64. package/dist/dashboard/routes/snapshots.js +18 -11
  65. package/dist/dashboard/routes/snapshots.js.map +1 -1
  66. package/dist/dashboard/routes/templates.d.ts.map +1 -1
  67. package/dist/dashboard/routes/templates.js +6 -3
  68. package/dist/dashboard/routes/templates.js.map +1 -1
  69. package/dist/dashboard/routes/threads-create.d.ts +22 -0
  70. package/dist/dashboard/routes/threads-create.d.ts.map +1 -0
  71. package/dist/dashboard/routes/threads-create.js +225 -0
  72. package/dist/dashboard/routes/threads-create.js.map +1 -0
  73. package/dist/dashboard/routes/threads-helpers.d.ts +28 -0
  74. package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -0
  75. package/dist/dashboard/routes/threads-helpers.js +138 -0
  76. package/dist/dashboard/routes/threads-helpers.js.map +1 -0
  77. package/dist/dashboard/routes/threads-read.d.ts +26 -0
  78. package/dist/dashboard/routes/threads-read.d.ts.map +1 -0
  79. package/dist/dashboard/routes/threads-read.js +118 -0
  80. package/dist/dashboard/routes/threads-read.js.map +1 -0
  81. package/dist/dashboard/routes/threads.d.ts +5 -44
  82. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  83. package/dist/dashboard/routes/threads.js +40 -496
  84. package/dist/dashboard/routes/threads.js.map +1 -1
  85. package/dist/dashboard/routes/types.d.ts.map +1 -1
  86. package/dist/dashboard/routes/types.js.map +1 -1
  87. package/dist/dashboard/routes.d.ts.map +1 -1
  88. package/dist/dashboard/routes.js +9 -5
  89. package/dist/dashboard/routes.js.map +1 -1
  90. package/dist/data/daily-marker.d.ts.map +1 -1
  91. package/dist/data/daily-marker.js +1 -1
  92. package/dist/data/daily-marker.js.map +1 -1
  93. package/dist/data/file-storage.d.ts.map +1 -1
  94. package/dist/data/file-storage.js +40 -16
  95. package/dist/data/file-storage.js.map +1 -1
  96. package/dist/data/interfaces.d.ts +23 -2
  97. package/dist/data/interfaces.d.ts.map +1 -1
  98. package/dist/data/memory/bootstrap.d.ts +1 -1
  99. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  100. package/dist/data/memory/bootstrap.js +32 -13
  101. package/dist/data/memory/bootstrap.js.map +1 -1
  102. package/dist/data/memory/consolidation.d.ts.map +1 -1
  103. package/dist/data/memory/consolidation.js +17 -8
  104. package/dist/data/memory/consolidation.js.map +1 -1
  105. package/dist/data/memory/db-types.d.ts +4 -0
  106. package/dist/data/memory/db-types.d.ts.map +1 -0
  107. package/dist/data/memory/db-types.js +2 -0
  108. package/dist/data/memory/db-types.js.map +1 -0
  109. package/dist/data/memory/episodes.d.ts.map +1 -1
  110. package/dist/data/memory/episodes.js +3 -5
  111. package/dist/data/memory/episodes.js.map +1 -1
  112. package/dist/data/memory/index.d.ts +28 -14
  113. package/dist/data/memory/index.d.ts.map +1 -1
  114. package/dist/data/memory/index.js +28 -14
  115. package/dist/data/memory/index.js.map +1 -1
  116. package/dist/data/memory/migration-runner.d.ts +1 -1
  117. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  118. package/dist/data/memory/migration-runner.js +23 -15
  119. package/dist/data/memory/migration-runner.js.map +1 -1
  120. package/dist/data/memory/narrative-lint.d.ts +12 -0
  121. package/dist/data/memory/narrative-lint.d.ts.map +1 -0
  122. package/dist/data/memory/narrative-lint.js +117 -0
  123. package/dist/data/memory/narrative-lint.js.map +1 -0
  124. package/dist/data/memory/narrative-resolutions.d.ts +26 -0
  125. package/dist/data/memory/narrative-resolutions.d.ts.map +1 -0
  126. package/dist/data/memory/narrative-resolutions.js +81 -0
  127. package/dist/data/memory/narrative-resolutions.js.map +1 -0
  128. package/dist/data/memory/narrative-sources.d.ts +19 -0
  129. package/dist/data/memory/narrative-sources.d.ts.map +1 -0
  130. package/dist/data/memory/narrative-sources.js +150 -0
  131. package/dist/data/memory/narrative-sources.js.map +1 -0
  132. package/dist/data/memory/narrative-store.d.ts +11 -0
  133. package/dist/data/memory/narrative-store.d.ts.map +1 -0
  134. package/dist/data/memory/narrative-store.js +80 -0
  135. package/dist/data/memory/narrative-store.js.map +1 -0
  136. package/dist/data/memory/narrative-types.d.ts +15 -0
  137. package/dist/data/memory/narrative-types.d.ts.map +1 -0
  138. package/dist/data/memory/narrative-types.js +3 -0
  139. package/dist/data/memory/narrative-types.js.map +1 -0
  140. package/dist/data/memory/narrative.d.ts +5 -2
  141. package/dist/data/memory/narrative.d.ts.map +1 -1
  142. package/dist/data/memory/narrative.js +31 -521
  143. package/dist/data/memory/narrative.js.map +1 -1
  144. package/dist/data/memory/note-archival.d.ts +17 -0
  145. package/dist/data/memory/note-archival.d.ts.map +1 -0
  146. package/dist/data/memory/note-archival.js +48 -0
  147. package/dist/data/memory/note-archival.js.map +1 -0
  148. package/dist/data/memory/note-embeddings.d.ts +27 -0
  149. package/dist/data/memory/note-embeddings.d.ts.map +1 -0
  150. package/dist/data/memory/note-embeddings.js +98 -0
  151. package/dist/data/memory/note-embeddings.js.map +1 -0
  152. package/dist/data/memory/reflection-dedup.d.ts +17 -0
  153. package/dist/data/memory/reflection-dedup.d.ts.map +1 -0
  154. package/dist/data/memory/reflection-dedup.js +55 -0
  155. package/dist/data/memory/reflection-dedup.js.map +1 -0
  156. package/dist/data/memory/reflection-gates.d.ts +40 -0
  157. package/dist/data/memory/reflection-gates.d.ts.map +1 -0
  158. package/dist/data/memory/reflection-gates.js +220 -0
  159. package/dist/data/memory/reflection-gates.js.map +1 -0
  160. package/dist/data/memory/reflection-sources.d.ts +13 -0
  161. package/dist/data/memory/reflection-sources.d.ts.map +1 -0
  162. package/dist/data/memory/reflection-sources.js +115 -0
  163. package/dist/data/memory/reflection-sources.js.map +1 -0
  164. package/dist/data/memory/reflection.d.ts +5 -35
  165. package/dist/data/memory/reflection.d.ts.map +1 -1
  166. package/dist/data/memory/reflection.js +25 -329
  167. package/dist/data/memory/reflection.js.map +1 -1
  168. package/dist/data/memory/schema-ddl.d.ts +1 -1
  169. package/dist/data/memory/schema-ddl.d.ts.map +1 -1
  170. package/dist/data/memory/schema-ddl.js +5 -3
  171. package/dist/data/memory/schema-ddl.js.map +1 -1
  172. package/dist/data/memory/schema-guard.d.ts +1 -1
  173. package/dist/data/memory/schema-guard.d.ts.map +1 -1
  174. package/dist/data/memory/schema-guard.js +5 -4
  175. package/dist/data/memory/schema-guard.js.map +1 -1
  176. package/dist/data/memory/schema.d.ts +2 -2
  177. package/dist/data/memory/schema.d.ts.map +1 -1
  178. package/dist/data/memory/schema.js +4 -2
  179. package/dist/data/memory/schema.js.map +1 -1
  180. package/dist/data/memory/{semantic.d.ts → semantic-notes.d.ts} +6 -72
  181. package/dist/data/memory/semantic-notes.d.ts.map +1 -0
  182. package/dist/data/memory/semantic-notes.js +249 -0
  183. package/dist/data/memory/semantic-notes.js.map +1 -0
  184. package/dist/data/memory/semantic-search.d.ts +29 -0
  185. package/dist/data/memory/semantic-search.d.ts.map +1 -0
  186. package/dist/data/memory/semantic-search.js +156 -0
  187. package/dist/data/memory/semantic-search.js.map +1 -0
  188. package/dist/data/memory/synthesis.d.ts.map +1 -1
  189. package/dist/data/memory/synthesis.js +15 -7
  190. package/dist/data/memory/synthesis.js.map +1 -1
  191. package/dist/data/memory/thread-registry.d.ts +2 -2
  192. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  193. package/dist/data/memory/thread-registry.js +74 -36
  194. package/dist/data/memory/thread-registry.js.map +1 -1
  195. package/dist/data/memory/topic-index.d.ts +20 -0
  196. package/dist/data/memory/topic-index.d.ts.map +1 -0
  197. package/dist/data/memory/topic-index.js +91 -0
  198. package/dist/data/memory/topic-index.js.map +1 -0
  199. package/dist/data/memory/topic-shift.js +1 -1
  200. package/dist/data/memory/topic-shift.js.map +1 -1
  201. package/dist/data/memory/utils.d.ts +0 -5
  202. package/dist/data/memory/utils.d.ts.map +1 -1
  203. package/dist/data/memory/utils.js +0 -94
  204. package/dist/data/memory/utils.js.map +1 -1
  205. package/dist/data/sent-message.repository.js +2 -2
  206. package/dist/data/sent-message.repository.js.map +1 -1
  207. package/dist/data/templates.js +2 -2
  208. package/dist/data/templates.js.map +1 -1
  209. package/dist/index.js +21 -19
  210. package/dist/index.js.map +1 -1
  211. package/dist/integrations/openai/chat.d.ts.map +1 -1
  212. package/dist/integrations/openai/chat.js +5 -5
  213. package/dist/integrations/openai/chat.js.map +1 -1
  214. package/dist/integrations/openai/speech.d.ts +1 -1
  215. package/dist/integrations/openai/speech.d.ts.map +1 -1
  216. package/dist/integrations/openai/speech.js +1 -3
  217. package/dist/integrations/openai/speech.js.map +1 -1
  218. package/dist/integrations/openai/video.d.ts.map +1 -1
  219. package/dist/integrations/openai/video.js +21 -10
  220. package/dist/integrations/openai/video.js.map +1 -1
  221. package/dist/integrations/openai/vision.d.ts.map +1 -1
  222. package/dist/integrations/openai/vision.js.map +1 -1
  223. package/dist/integrations/openai/voice-emotion.d.ts.map +1 -1
  224. package/dist/integrations/openai/voice-emotion.js +2 -2
  225. package/dist/integrations/openai/voice-emotion.js.map +1 -1
  226. package/dist/lib/logger.d.ts.map +1 -0
  227. package/dist/{logger.js → lib/logger.js} +77 -50
  228. package/dist/lib/logger.js.map +1 -0
  229. package/dist/lib/markdown.d.ts.map +1 -0
  230. package/dist/{markdown.js → lib/markdown.js} +13 -5
  231. package/dist/lib/markdown.js.map +1 -0
  232. package/dist/{types.d.ts → lib/types.d.ts} +0 -1
  233. package/dist/lib/types.d.ts.map +1 -0
  234. package/dist/lib/types.js.map +1 -0
  235. package/dist/lib/utils.d.ts.map +1 -0
  236. package/dist/{utils.js → lib/utils.js} +29 -9
  237. package/dist/lib/utils.js.map +1 -0
  238. package/dist/llm/json.d.ts +14 -0
  239. package/dist/llm/json.d.ts.map +1 -0
  240. package/dist/llm/json.js +112 -0
  241. package/dist/llm/json.js.map +1 -0
  242. package/dist/llm/prompts/narrative.d.ts +7 -0
  243. package/dist/llm/prompts/narrative.d.ts.map +1 -0
  244. package/dist/llm/prompts/narrative.js +124 -0
  245. package/dist/llm/prompts/narrative.js.map +1 -0
  246. package/dist/llm/prompts/reflection.d.ts +6 -0
  247. package/dist/llm/prompts/reflection.d.ts.map +1 -0
  248. package/dist/llm/prompts/reflection.js +77 -0
  249. package/dist/llm/prompts/reflection.js.map +1 -0
  250. package/dist/server/factory.d.ts +2 -2
  251. package/dist/server/factory.d.ts.map +1 -1
  252. package/dist/server/factory.js +152 -73
  253. package/dist/server/factory.js.map +1 -1
  254. package/dist/{http-server.d.ts → server/http-server.d.ts} +2 -2
  255. package/dist/server/http-server.d.ts.map +1 -0
  256. package/dist/{http-server.js → server/http-server.js} +38 -17
  257. package/dist/server/http-server.js.map +1 -0
  258. package/dist/{stdio-server.d.ts → server/stdio-server.d.ts} +1 -1
  259. package/dist/server/stdio-server.d.ts.map +1 -0
  260. package/dist/{stdio-server.js → server/stdio-server.js} +25 -11
  261. package/dist/server/stdio-server.js.map +1 -0
  262. package/dist/services/agent-spawn.service.d.ts +1 -1
  263. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  264. package/dist/services/agent-spawn.service.js +17 -7
  265. package/dist/services/agent-spawn.service.js.map +1 -1
  266. package/dist/services/background-runner.d.ts +2 -2
  267. package/dist/services/background-runner.d.ts.map +1 -1
  268. package/dist/services/background-runner.js +8 -3
  269. package/dist/services/background-runner.js.map +1 -1
  270. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  271. package/dist/services/claude-spawn.service.js +61 -52
  272. package/dist/services/claude-spawn.service.js.map +1 -1
  273. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  274. package/dist/services/codex-spawn.service.js +52 -40
  275. package/dist/services/codex-spawn.service.js.map +1 -1
  276. package/dist/services/consolidation-prompts.d.ts +26 -0
  277. package/dist/services/consolidation-prompts.d.ts.map +1 -0
  278. package/dist/services/consolidation-prompts.js +144 -0
  279. package/dist/services/consolidation-prompts.js.map +1 -0
  280. package/dist/services/consolidation.service.d.ts +1 -5
  281. package/dist/services/consolidation.service.d.ts.map +1 -1
  282. package/dist/services/consolidation.service.js +53 -322
  283. package/dist/services/consolidation.service.js.map +1 -1
  284. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  285. package/dist/services/copilot-spawn.service.js +47 -57
  286. package/dist/services/copilot-spawn.service.js.map +1 -1
  287. package/dist/{daily-session.d.ts → services/daily-session.d.ts} +1 -1
  288. package/dist/services/daily-session.d.ts.map +1 -0
  289. package/dist/{daily-session.js → services/daily-session.js} +15 -14
  290. package/dist/services/daily-session.js.map +1 -0
  291. package/dist/services/dispatcher/broker.d.ts +0 -6
  292. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  293. package/dist/services/dispatcher/broker.js +46 -38
  294. package/dist/services/dispatcher/broker.js.map +1 -1
  295. package/dist/services/dispatcher/index.d.ts +1 -1
  296. package/dist/services/dispatcher/index.d.ts.map +1 -1
  297. package/dist/services/dispatcher/index.js +1 -1
  298. package/dist/services/dispatcher/index.js.map +1 -1
  299. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  300. package/dist/services/dispatcher/lock.js +24 -9
  301. package/dist/services/dispatcher/lock.js.map +1 -1
  302. package/dist/services/dispatcher/poller.d.ts +1 -1
  303. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  304. package/dist/services/dispatcher/poller.js +74 -49
  305. package/dist/services/dispatcher/poller.js.map +1 -1
  306. package/dist/services/drive.d.ts.map +1 -0
  307. package/dist/{drive.js → services/drive.js} +1 -1
  308. package/dist/services/drive.js.map +1 -0
  309. package/dist/services/intent.d.ts.map +1 -0
  310. package/dist/{intent.js → services/intent.js} +78 -23
  311. package/dist/services/intent.js.map +1 -0
  312. package/dist/services/keep-alive-sync.service.d.ts +11 -0
  313. package/dist/services/keep-alive-sync.service.d.ts.map +1 -0
  314. package/dist/services/keep-alive-sync.service.js +47 -0
  315. package/dist/services/keep-alive-sync.service.js.map +1 -0
  316. package/dist/services/keeper.service.d.ts +1 -1
  317. package/dist/services/keeper.service.d.ts.map +1 -1
  318. package/dist/services/keeper.service.js +31 -18
  319. package/dist/services/keeper.service.js.map +1 -1
  320. package/dist/services/maintenance-signal.js +1 -1
  321. package/dist/services/maintenance-signal.js.map +1 -1
  322. package/dist/services/mcp-config.service.d.ts.map +1 -1
  323. package/dist/services/mcp-config.service.js +19 -6
  324. package/dist/services/mcp-config.service.js.map +1 -1
  325. package/dist/services/memory-briefing.service.d.ts.map +1 -1
  326. package/dist/services/memory-briefing.service.js +13 -7
  327. package/dist/services/memory-briefing.service.js.map +1 -1
  328. package/dist/services/memory-pruning.service.d.ts +12 -0
  329. package/dist/services/memory-pruning.service.d.ts.map +1 -0
  330. package/dist/services/memory-pruning.service.js +177 -0
  331. package/dist/services/memory-pruning.service.js.map +1 -0
  332. package/dist/services/process.service.d.ts +7 -2
  333. package/dist/services/process.service.d.ts.map +1 -1
  334. package/dist/services/process.service.js +233 -103
  335. package/dist/services/process.service.js.map +1 -1
  336. package/dist/services/reconnect-snapshot.service.d.ts.map +1 -1
  337. package/dist/services/reconnect-snapshot.service.js +3 -3
  338. package/dist/services/reconnect-snapshot.service.js.map +1 -1
  339. package/dist/{scheduler.d.ts → services/scheduler.d.ts} +1 -23
  340. package/dist/services/scheduler.d.ts.map +1 -0
  341. package/dist/{scheduler.js → services/scheduler.js} +6 -8
  342. package/dist/services/scheduler.js.map +1 -0
  343. package/dist/services/self-update.service.d.ts +15 -5
  344. package/dist/services/self-update.service.d.ts.map +1 -1
  345. package/dist/services/self-update.service.js +85 -41
  346. package/dist/services/self-update.service.js.map +1 -1
  347. package/dist/services/spawn-common.d.ts +40 -16
  348. package/dist/services/spawn-common.d.ts.map +1 -1
  349. package/dist/services/spawn-common.js +163 -36
  350. package/dist/services/spawn-common.js.map +1 -1
  351. package/dist/{telegram.d.ts → services/telegram.d.ts} +3 -3
  352. package/dist/services/telegram.d.ts.map +1 -0
  353. package/dist/{telegram.js → services/telegram.js} +16 -8
  354. package/dist/services/telegram.js.map +1 -0
  355. package/dist/services/thread-config.service.d.ts +25 -0
  356. package/dist/services/thread-config.service.d.ts.map +1 -0
  357. package/dist/services/thread-config.service.js +73 -0
  358. package/dist/services/thread-config.service.js.map +1 -0
  359. package/dist/services/thread-health.service.d.ts.map +1 -1
  360. package/dist/services/thread-health.service.js +23 -9
  361. package/dist/services/thread-health.service.js.map +1 -1
  362. package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
  363. package/dist/services/thread-lifecycle.service.js +21 -7
  364. package/dist/services/thread-lifecycle.service.js.map +1 -1
  365. package/dist/services/topic.service.d.ts.map +1 -1
  366. package/dist/services/topic.service.js +17 -6
  367. package/dist/services/topic.service.js.map +1 -1
  368. package/dist/services/worker-cleanup.service.d.ts +3 -2
  369. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  370. package/dist/services/worker-cleanup.service.js +31 -19
  371. package/dist/services/worker-cleanup.service.js.map +1 -1
  372. package/dist/sessions/dashboard-registry.d.ts +38 -0
  373. package/dist/sessions/dashboard-registry.d.ts.map +1 -0
  374. package/dist/sessions/dashboard-registry.js +84 -0
  375. package/dist/sessions/dashboard-registry.js.map +1 -0
  376. package/dist/{sessions.d.ts → sessions/mcp-registry.d.ts} +3 -60
  377. package/dist/sessions/mcp-registry.d.ts.map +1 -0
  378. package/dist/{sessions.js → sessions/mcp-registry.js} +5 -214
  379. package/dist/sessions/mcp-registry.js.map +1 -0
  380. package/dist/sessions/session-store.d.ts +17 -0
  381. package/dist/sessions/session-store.d.ts.map +1 -0
  382. package/dist/sessions/session-store.js +69 -0
  383. package/dist/sessions/session-store.js.map +1 -0
  384. package/dist/sessions/topic-registry.d.ts +14 -0
  385. package/dist/sessions/topic-registry.d.ts.map +1 -0
  386. package/dist/sessions/topic-registry.js +67 -0
  387. package/dist/sessions/topic-registry.js.map +1 -0
  388. package/dist/tools/definitions.d.ts +1 -9
  389. package/dist/tools/definitions.d.ts.map +1 -1
  390. package/dist/tools/definitions.js.map +1 -1
  391. package/dist/tools/defs/memory-defs.d.ts +1 -1
  392. package/dist/tools/defs/memory-defs.d.ts.map +1 -1
  393. package/dist/tools/defs/memory-defs.js +1 -1
  394. package/dist/tools/defs/memory-defs.js.map +1 -1
  395. package/dist/tools/defs/session-defs.d.ts +1 -1
  396. package/dist/tools/defs/session-defs.d.ts.map +1 -1
  397. package/dist/tools/defs/session-defs.js +3 -14
  398. package/dist/tools/defs/session-defs.js.map +1 -1
  399. package/dist/tools/defs/skill-defs.d.ts +1 -1
  400. package/dist/tools/defs/skill-defs.d.ts.map +1 -1
  401. package/dist/tools/defs/types.d.ts +11 -0
  402. package/dist/tools/defs/types.d.ts.map +1 -0
  403. package/dist/{chat-ui/src → tools/defs}/types.js.map +1 -1
  404. package/dist/tools/defs/utility-defs.d.ts +1 -1
  405. package/dist/tools/defs/utility-defs.d.ts.map +1 -1
  406. package/dist/tools/defs/utility-defs.js.map +1 -1
  407. package/dist/tools/defs/wait-defs.d.ts +1 -1
  408. package/dist/tools/defs/wait-defs.d.ts.map +1 -1
  409. package/dist/tools/delegate-tool.d.ts +2 -2
  410. package/dist/tools/delegate-tool.d.ts.map +1 -1
  411. package/dist/tools/delegate-tool.js +57 -37
  412. package/dist/tools/delegate-tool.js.map +1 -1
  413. package/dist/tools/memory-tools.d.ts +2 -2
  414. package/dist/tools/memory-tools.d.ts.map +1 -1
  415. package/dist/tools/memory-tools.js +108 -37
  416. package/dist/tools/memory-tools.js.map +1 -1
  417. package/dist/{response-builders.d.ts → tools/response-builders.d.ts} +2 -2
  418. package/dist/tools/response-builders.d.ts.map +1 -0
  419. package/dist/{response-builders.js → tools/response-builders.js} +151 -30
  420. package/dist/tools/response-builders.js.map +1 -0
  421. package/dist/tools/session-tools.d.ts +5 -14
  422. package/dist/tools/session-tools.d.ts.map +1 -1
  423. package/dist/tools/session-tools.js +17 -12
  424. package/dist/tools/session-tools.js.map +1 -1
  425. package/dist/tools/shared-agent-utils.d.ts +1 -1
  426. package/dist/tools/shared-agent-utils.d.ts.map +1 -1
  427. package/dist/tools/shared-agent-utils.js +2 -4
  428. package/dist/tools/shared-agent-utils.js.map +1 -1
  429. package/dist/tools/skill-tools.d.ts +1 -1
  430. package/dist/tools/skill-tools.d.ts.map +1 -1
  431. package/dist/tools/skill-tools.js +12 -7
  432. package/dist/tools/skill-tools.js.map +1 -1
  433. package/dist/tools/start-session-tool.d.ts +3 -3
  434. package/dist/tools/start-session-tool.d.ts.map +1 -1
  435. package/dist/tools/start-session-tool.js +35 -25
  436. package/dist/tools/start-session-tool.js.map +1 -1
  437. package/dist/tools/utility-tools.d.ts +3 -3
  438. package/dist/tools/utility-tools.d.ts.map +1 -1
  439. package/dist/tools/utility-tools.js +46 -28
  440. package/dist/tools/utility-tools.js.map +1 -1
  441. package/dist/tools/wait/auto-forward.d.ts +1 -1
  442. package/dist/tools/wait/auto-forward.d.ts.map +1 -1
  443. package/dist/tools/wait/auto-forward.js +6 -4
  444. package/dist/tools/wait/auto-forward.js.map +1 -1
  445. package/dist/tools/wait/context.d.ts +45 -0
  446. package/dist/tools/wait/context.d.ts.map +1 -0
  447. package/dist/tools/wait/context.js +5 -0
  448. package/dist/tools/wait/context.js.map +1 -0
  449. package/dist/tools/wait/drive-handler.d.ts +2 -2
  450. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  451. package/dist/tools/wait/drive-handler.js +24 -12
  452. package/dist/tools/wait/drive-handler.js.map +1 -1
  453. package/dist/tools/wait/index.d.ts +2 -1
  454. package/dist/tools/wait/index.d.ts.map +1 -1
  455. package/dist/tools/wait/index.js.map +1 -1
  456. package/dist/tools/wait/media-processor.d.ts +4 -4
  457. package/dist/tools/wait/media-processor.d.ts.map +1 -1
  458. package/dist/tools/wait/media-processor.js +17 -8
  459. package/dist/tools/wait/media-processor.js.map +1 -1
  460. package/dist/tools/wait/message-delivery.d.ts +5 -5
  461. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  462. package/dist/tools/wait/message-delivery.js +78 -37
  463. package/dist/tools/wait/message-delivery.js.map +1 -1
  464. package/dist/tools/wait/message-processing.d.ts +2 -2
  465. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  466. package/dist/tools/wait/message-processing.js +95 -37
  467. package/dist/tools/wait/message-processing.js.map +1 -1
  468. package/dist/tools/wait/poll-loop.d.ts +2 -41
  469. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  470. package/dist/tools/wait/poll-loop.js +75 -23
  471. package/dist/tools/wait/poll-loop.js.map +1 -1
  472. package/dist/tools/wait/reaction-handler.d.ts +3 -3
  473. package/dist/tools/wait/reaction-handler.d.ts.map +1 -1
  474. package/dist/tools/wait/reaction-handler.js +6 -6
  475. package/dist/tools/wait/reaction-handler.js.map +1 -1
  476. package/dist/tools/wait/task-handler.d.ts +1 -1
  477. package/dist/tools/wait/task-handler.d.ts.map +1 -1
  478. package/dist/tools/wait/task-handler.js +5 -4
  479. package/dist/tools/wait/task-handler.js.map +1 -1
  480. package/package.json +11 -2
  481. package/templates/code-review.default.md +1 -1
  482. package/templates/fire-and-forget.default.md +1 -1
  483. package/templates/handoff.default.md +1 -1
  484. package/templates/sensorium-repair.default.md +1 -1
  485. package/templates/sleep.default.md +1 -1
  486. package/dist/chat-ui/src/main.d.ts +0 -2
  487. package/dist/chat-ui/src/main.d.ts.map +0 -1
  488. package/dist/chat-ui/src/main.js +0 -4
  489. package/dist/chat-ui/src/main.js.map +0 -1
  490. package/dist/chat-ui/src/markdown.d.ts +0 -2
  491. package/dist/chat-ui/src/markdown.d.ts.map +0 -1
  492. package/dist/chat-ui/src/markdown.js +0 -39
  493. package/dist/chat-ui/src/markdown.js.map +0 -1
  494. package/dist/chat-ui/src/mock-data.d.ts +0 -4
  495. package/dist/chat-ui/src/mock-data.d.ts.map +0 -1
  496. package/dist/chat-ui/src/mock-data.js +0 -230
  497. package/dist/chat-ui/src/mock-data.js.map +0 -1
  498. package/dist/chat-ui/src/types.d.ts +0 -47
  499. package/dist/chat-ui/src/types.d.ts.map +0 -1
  500. package/dist/chat-ui/vite.config.d.ts +0 -3
  501. package/dist/chat-ui/vite.config.d.ts.map +0 -1
  502. package/dist/chat-ui/vite.config.js +0 -14
  503. package/dist/chat-ui/vite.config.js.map +0 -1
  504. package/dist/config.d.ts +0 -228
  505. package/dist/config.d.ts.map +0 -1
  506. package/dist/config.js +0 -841
  507. package/dist/config.js.map +0 -1
  508. package/dist/daily-session.d.ts.map +0 -1
  509. package/dist/daily-session.js.map +0 -1
  510. package/dist/dashboard.d.ts +0 -10
  511. package/dist/dashboard.d.ts.map +0 -1
  512. package/dist/dashboard.js +0 -10
  513. package/dist/dashboard.js.map +0 -1
  514. package/dist/data/memory/semantic.d.ts.map +0 -1
  515. package/dist/data/memory/semantic.js +0 -588
  516. package/dist/data/memory/semantic.js.map +0 -1
  517. package/dist/dispatcher.d.ts +0 -9
  518. package/dist/dispatcher.d.ts.map +0 -1
  519. package/dist/dispatcher.js +0 -9
  520. package/dist/dispatcher.js.map +0 -1
  521. package/dist/drive.d.ts.map +0 -1
  522. package/dist/drive.js.map +0 -1
  523. package/dist/http-server.d.ts.map +0 -1
  524. package/dist/http-server.js.map +0 -1
  525. package/dist/intent.d.ts.map +0 -1
  526. package/dist/intent.js.map +0 -1
  527. package/dist/logger.d.ts.map +0 -1
  528. package/dist/logger.js.map +0 -1
  529. package/dist/markdown.d.ts.map +0 -1
  530. package/dist/markdown.js.map +0 -1
  531. package/dist/memory.d.ts +0 -9
  532. package/dist/memory.d.ts.map +0 -1
  533. package/dist/memory.js +0 -9
  534. package/dist/memory.js.map +0 -1
  535. package/dist/openai.d.ts +0 -13
  536. package/dist/openai.d.ts.map +0 -1
  537. package/dist/openai.js +0 -17
  538. package/dist/openai.js.map +0 -1
  539. package/dist/response-builders.d.ts.map +0 -1
  540. package/dist/response-builders.js.map +0 -1
  541. package/dist/scheduler.d.ts.map +0 -1
  542. package/dist/scheduler.js.map +0 -1
  543. package/dist/sessions.d.ts.map +0 -1
  544. package/dist/sessions.js.map +0 -1
  545. package/dist/stdio-server.d.ts.map +0 -1
  546. package/dist/stdio-server.js.map +0 -1
  547. package/dist/telegram.d.ts.map +0 -1
  548. package/dist/telegram.js.map +0 -1
  549. package/dist/tool-definitions.d.ts +0 -2
  550. package/dist/tool-definitions.d.ts.map +0 -1
  551. package/dist/tool-definitions.js +0 -2
  552. package/dist/tool-definitions.js.map +0 -1
  553. package/dist/types.d.ts.map +0 -1
  554. package/dist/types.js.map +0 -1
  555. package/dist/utils.d.ts.map +0 -1
  556. package/dist/utils.js.map +0 -1
  557. /package/dist/{logger.d.ts → lib/logger.d.ts} +0 -0
  558. /package/dist/{markdown.d.ts → lib/markdown.d.ts} +0 -0
  559. /package/dist/{types.js → lib/types.js} +0 -0
  560. /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
  561. /package/dist/{drive.d.ts → services/drive.d.ts} +0 -0
  562. /package/dist/{intent.d.ts → services/intent.d.ts} +0 -0
  563. /package/dist/{chat-ui/src → tools/defs}/types.js +0 -0
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,69 @@
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
+ export declare function getCopilotByokConfig(): CopilotByokConfig;
40
+ /**
41
+ * Merge a partial patch into the stored BYOK config and persist. The merged
42
+ * result is re-validated through normalizeByokConfig so the settings file can
43
+ * never hold an invalid providerType or non-string field, even though the input
44
+ * originates from the dashboard.
45
+ */
46
+ export declare function setCopilotByokConfig(patch: Partial<CopilotByokConfig>): CopilotByokConfig;
47
+ /**
48
+ * Assemble the environment variables that configure the Copilot CLI's model and
49
+ * (optionally) a custom BYOK provider. Values here are meant to override any
50
+ * inherited process.env at spawn time.
51
+ */
52
+ export declare function getCopilotSpawnEnv(): Record<string, string>;
53
+ export declare function getClaudeCustomEnvVars(): Record<string, string>;
54
+ export declare function setClaudeCustomEnvVars(vars: Record<string, string>): void;
55
+ export declare function getCopilotCustomEnvVars(): Record<string, string>;
56
+ export declare function setCopilotCustomEnvVars(vars: Record<string, string>): void;
57
+ /** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
58
+ export declare function getClaudeCliPath(): string | undefined;
59
+ export declare function setClaudeCliPath(path: string): void;
60
+ /** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
61
+ export declare function getClaudeOauthToken(): string | undefined;
62
+ export declare function setClaudeOauthToken(token: string): void;
63
+ /** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
64
+ export declare function getClaudeGitBashPath(): string | undefined;
65
+ export declare function setClaudeGitBashPath(path: string): void;
66
+ /** Maximum number of concurrent spawned threads. */
67
+ export declare function getMaxConcurrentThreads(): number;
68
+ export declare function setMaxConcurrentThreads(count: number): void;
69
+ //# 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":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CAAC;AAElF,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,EAAE,SAAoB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAE3D;AAED,wBAAgB,YAAY,IAAI,SAAS,CAGxC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAIlD;AAWD,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5D;AAMD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAE/E;AAED,oFAAoF;AACpF,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAInD;AAgBD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAMzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY3D;AAqBD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAIzE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI1E;AAiBD,6FAA6F;AAC7F,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,IAAI,MAAM,CAIhD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM3D"}
@@ -0,0 +1,225 @@
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_BYOK = {
59
+ enabled: false,
60
+ providerType: "openai",
61
+ baseUrl: "",
62
+ apiKey: "",
63
+ modelId: "",
64
+ wireModel: "",
65
+ };
66
+ export function isValidCopilotProviderType(v) {
67
+ return v === "openai" || v === "azure" || v === "anthropic";
68
+ }
69
+ /** Model passed to the Copilot CLI via --model / COPILOT_MODEL (native or BYOK). */
70
+ export function getCopilotModel() {
71
+ const v = readSettings().copilotModel;
72
+ return typeof v === "string" && v.length > 0 ? v : DEFAULT_COPILOT_MODEL;
73
+ }
74
+ export function setCopilotModel(model) {
75
+ updateSettings((s) => {
76
+ s.copilotModel = model;
77
+ });
78
+ }
79
+ /** Coerce an untrusted value into a fully-valid CopilotByokConfig, filling defaults. */
80
+ function normalizeByokConfig(raw) {
81
+ if (!raw || typeof raw !== "object")
82
+ return { ...DEFAULT_COPILOT_BYOK };
83
+ const e = raw;
84
+ return {
85
+ enabled: typeof e.enabled === "boolean" ? e.enabled : false,
86
+ providerType: isValidCopilotProviderType(e.providerType) ? e.providerType : "openai",
87
+ baseUrl: typeof e.baseUrl === "string" ? e.baseUrl : "",
88
+ apiKey: typeof e.apiKey === "string" ? e.apiKey : "",
89
+ modelId: typeof e.modelId === "string" ? e.modelId : "",
90
+ wireModel: typeof e.wireModel === "string" ? e.wireModel : "",
91
+ };
92
+ }
93
+ export function getCopilotByokConfig() {
94
+ return normalizeByokConfig(readSettings().copilotByok);
95
+ }
96
+ /**
97
+ * Merge a partial patch into the stored BYOK config and persist. The merged
98
+ * result is re-validated through normalizeByokConfig so the settings file can
99
+ * never hold an invalid providerType or non-string field, even though the input
100
+ * originates from the dashboard.
101
+ */
102
+ export function setCopilotByokConfig(patch) {
103
+ const next = normalizeByokConfig({ ...getCopilotByokConfig(), ...patch });
104
+ updateSettings((s) => {
105
+ s.copilotByok = next;
106
+ });
107
+ return next;
108
+ }
109
+ /**
110
+ * Assemble the environment variables that configure the Copilot CLI's model and
111
+ * (optionally) a custom BYOK provider. Values here are meant to override any
112
+ * inherited process.env at spawn time.
113
+ */
114
+ export function getCopilotSpawnEnv() {
115
+ const model = getCopilotModel();
116
+ const env = { COPILOT_MODEL: model };
117
+ const byok = getCopilotByokConfig();
118
+ if (byok.enabled && byok.baseUrl && byok.apiKey) {
119
+ env.COPILOT_PROVIDER_BASE_URL = byok.baseUrl;
120
+ env.COPILOT_PROVIDER_TYPE = byok.providerType;
121
+ env.COPILOT_PROVIDER_API_KEY = byok.apiKey;
122
+ env.COPILOT_PROVIDER_MODEL_ID = byok.modelId || model;
123
+ env.COPILOT_PROVIDER_WIRE_MODEL = byok.wireModel || model;
124
+ }
125
+ return env;
126
+ }
127
+ // ─── Custom spawn env vars (per agent) ──────────────────────────────────────
128
+ //
129
+ // Operator-supplied env vars merged into the respective agent's spawn env. They
130
+ // are stored per agent so a var set for Claude is never injected into Copilot
131
+ // (and vice-versa). Locked built-ins always win over these, and the spawn path
132
+ // strips any ENV_DENYLIST key so a custom var can't smuggle a secret/cross-agent
133
+ // value past the denylist.
134
+ /** Coerce untrusted input into a clean string→string map (trimmed non-empty keys). */
135
+ function normalizeCustomEnvVars(raw) {
136
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
137
+ return {};
138
+ const out = {};
139
+ for (const [k, v] of Object.entries(raw)) {
140
+ const key = typeof k === "string" ? k.trim() : "";
141
+ if (key && typeof v === "string")
142
+ out[key] = v;
143
+ }
144
+ return out;
145
+ }
146
+ export function getClaudeCustomEnvVars() {
147
+ return normalizeCustomEnvVars(readSettings().claudeCustomEnvVars);
148
+ }
149
+ export function setClaudeCustomEnvVars(vars) {
150
+ updateSettings((s) => {
151
+ s.claudeCustomEnvVars = normalizeCustomEnvVars(vars);
152
+ });
153
+ }
154
+ export function getCopilotCustomEnvVars() {
155
+ return normalizeCustomEnvVars(readSettings().copilotCustomEnvVars);
156
+ }
157
+ export function setCopilotCustomEnvVars(vars) {
158
+ updateSettings((s) => {
159
+ s.copilotCustomEnvVars = normalizeCustomEnvVars(vars);
160
+ });
161
+ }
162
+ // ─── Claude spawn settings ──────────────────────────────────────────────────
163
+ //
164
+ // Overrides for values previously only discoverable from the environment or via
165
+ // auto-detection. Precedence is always env var → dashboard setting → autodetect,
166
+ // so setting an env var keeps the exact prior behavior and an unset setting is a
167
+ // no-op. Returns undefined when neither env nor setting supplies a value, letting
168
+ // the caller fall back to its existing auto-detection logic.
169
+ const DEFAULT_MAX_CONCURRENT_THREADS = 20;
170
+ function readStringSetting(key) {
171
+ const v = readSettings()[key];
172
+ return typeof v === "string" && v.length > 0 ? v : undefined;
173
+ }
174
+ /** Explicit path to the Claude CLI binary (settings only — env is read at the call site). */
175
+ export function getClaudeCliPath() {
176
+ return readStringSetting("claudeCliPath");
177
+ }
178
+ export function setClaudeCliPath(path) {
179
+ updateSettings((s) => {
180
+ if (path)
181
+ s.claudeCliPath = path;
182
+ else
183
+ delete s.claudeCliPath;
184
+ });
185
+ }
186
+ /** Long-lived Claude setup token used in place of the broken OAuth refresh flow. */
187
+ export function getClaudeOauthToken() {
188
+ return readStringSetting("claudeOauthToken");
189
+ }
190
+ export function setClaudeOauthToken(token) {
191
+ updateSettings((s) => {
192
+ if (token)
193
+ s.claudeOauthToken = token;
194
+ else
195
+ delete s.claudeOauthToken;
196
+ });
197
+ }
198
+ /** Path to git-bash (Windows) passed to Claude via CLAUDE_CODE_GIT_BASH_PATH. */
199
+ export function getClaudeGitBashPath() {
200
+ return readStringSetting("claudeGitBashPath");
201
+ }
202
+ export function setClaudeGitBashPath(path) {
203
+ updateSettings((s) => {
204
+ if (path)
205
+ s.claudeGitBashPath = path;
206
+ else
207
+ delete s.claudeGitBashPath;
208
+ });
209
+ }
210
+ /** Maximum number of concurrent spawned threads. */
211
+ export function getMaxConcurrentThreads() {
212
+ const v = readSettings().maxConcurrentThreads;
213
+ if (typeof v === "number" && Number.isFinite(v) && v >= 1)
214
+ return Math.round(v);
215
+ return DEFAULT_MAX_CONCURRENT_THREADS;
216
+ }
217
+ export function setMaxConcurrentThreads(count) {
218
+ const clamped = Math.max(1, Math.round(count));
219
+ if (!Number.isFinite(clamped))
220
+ return;
221
+ updateSettings((s) => {
222
+ s.maxConcurrentThreads = clamped;
223
+ });
224
+ }
225
+ //# sourceMappingURL=agent-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-settings.js","sourceRoot":"","sources":["../../src/config/agent-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMnE,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAc,QAAQ,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,SAAS;IACT,QAAQ;IACR,OAAO;IACP,cAAc;IACd,OAAO;CACR,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,SAAS,CAAC;IACnC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAC/C,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,gFAAgF;AAChF,mEAAmE;AACnE,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAE7C,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,UAAU,CAAC;IACpC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,kBAAkB,CAAC;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,kBAAkB,CAAC;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAE/E,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAqBhD,MAAM,oBAAoB,GAAsB;IAC9C,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,QAAQ;IACtB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,CAAU;IACnD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,WAAW,CAAC;AAC9D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,YAAY,CAAC;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACxE,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QAC3D,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;QACpF,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvD,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpD,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvD,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAiC;IACpE,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,GAAG,oBAAoB,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC1E,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,GAAG,GAA2B,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7C,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,GAAG,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;QACtD,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,iFAAiF;AACjF,2BAA2B;AAE3B,sFAAsF;AACtF,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACrE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,sBAAsB,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAA4B;IACjE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,sBAAsB,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAA4B;IAClE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,6DAA6D;AAE7D,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB;IAC9B,OAAO,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,IAAI,IAAI;YAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;;YAC5B,OAAO,CAAC,CAAC,aAAa,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,mBAAmB;IACjC,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,IAAI,KAAK;YAAE,CAAC,CAAC,gBAAgB,GAAG,KAAK,CAAC;;YACjC,OAAO,CAAC,CAAC,gBAAgB,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,IAAI,IAAI;YAAE,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;;YAChC,OAAO,CAAC,CAAC,iBAAiB,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,oBAAoB,CAAC;IAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChF,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IACtC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,CAAC,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -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"}
@@ -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,16 @@
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 declare const AUTONOMOUS_MODE: boolean;
14
+ export declare const TEMPLATES_DIR: string;
15
+ export declare const config: AppConfig;
16
+ //# 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;AAWnC,eAAO,MAAM,eAAe,SAAyC,CAAC;AA8BtE,eAAO,MAAM,aAAa,QAAsD,CAAC;AAKjF,eAAO,MAAM,MAAM,EAAE,SAUpB,CAAC"}
@@ -0,0 +1,58 @@
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
+ const esmRequire = createRequire(import.meta.url);
19
+ const { version: PKG_VERSION } = esmRequire("../../package.json");
20
+ // ─── Environment variables ──────────────────────────────────────────────────
21
+ const TELEGRAM_TOKEN = process.env.TELEGRAM_TOKEN ?? "";
22
+ const TELEGRAM_CHAT_ID = process.env.TELEGRAM_CHAT_ID ?? "";
23
+ const OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? "";
24
+ const VOICE_ANALYSIS_URL = process.env.VOICE_ANALYSIS_URL ?? "";
25
+ export const AUTONOMOUS_MODE = process.env.AUTONOMOUS_MODE === "true";
26
+ const rawDmnActivationHours = parseFloat(process.env.DMN_ACTIVATION_HOURS ?? "");
27
+ const DMN_ACTIVATION_HOURS = Math.max(0.5, Number.isFinite(rawDmnActivationHours) ? rawDmnActivationHours : 4);
28
+ // ─── Validation ─────────────────────────────────────────────────────────────
29
+ if (!TELEGRAM_TOKEN || !TELEGRAM_CHAT_ID) {
30
+ log.error("TELEGRAM_TOKEN and TELEGRAM_CHAT_ID environment variables are required.");
31
+ process.exit(1);
32
+ }
33
+ if (!OPENAI_API_KEY) {
34
+ log.warn("OPENAI_API_KEY not set — voice messages will not be transcribed.");
35
+ }
36
+ if (VOICE_ANALYSIS_URL) {
37
+ log.info(`Voice analysis service configured: ${VOICE_ANALYSIS_URL}`);
38
+ }
39
+ if (process.env.TRANSCRIPTION_BASE_URL) {
40
+ const model = process.env.TRANSCRIPTION_MODEL || "whisper-1";
41
+ log.info(`Transcription provider configured: ${process.env.TRANSCRIPTION_BASE_URL} (model: ${model})`);
42
+ }
43
+ // ─── Templates directory ────────────────────────────────────────────────────
44
+ export const TEMPLATES_DIR = join(homedir(), ".remote-copilot-mcp", "templates");
45
+ mkdirSync(TEMPLATES_DIR, { recursive: true });
46
+ // ─── Exported config object ─────────────────────────────────────────────────
47
+ export const config = {
48
+ TELEGRAM_TOKEN,
49
+ TELEGRAM_CHAT_ID,
50
+ OPENAI_API_KEY,
51
+ VOICE_ANALYSIS_URL,
52
+ get WAIT_TIMEOUT_MINUTES() {
53
+ return getWaitTimeoutMinutes();
54
+ },
55
+ DMN_ACTIVATION_HOURS,
56
+ PKG_VERSION,
57
+ };
58
+ //# 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;AAEnC,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"}