sensorium-mcp 3.1.2 → 3.1.3-board.10

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 (625) hide show
  1. package/Install-Sensorium.ps1 +257 -43
  2. package/README.md +2 -0
  3. package/dist/board/api/api.js +84 -0
  4. package/dist/board/api/api.test.ts +23 -0
  5. package/dist/board/api/client.js +113 -0
  6. package/dist/board/components/BottomNav.js +32 -0
  7. package/dist/board/components/Card.js +78 -0
  8. package/dist/board/components/Combobox.js +79 -0
  9. package/dist/board/components/CommentComposer.js +29 -0
  10. package/dist/board/components/CommentList.js +42 -0
  11. package/dist/board/components/DirTreePicker.js +128 -0
  12. package/dist/board/components/Dropdown.js +67 -0
  13. package/dist/board/components/Lane.js +47 -0
  14. package/dist/board/components/PriorityChip.js +20 -0
  15. package/dist/board/components/ProfileSummary.js +89 -0
  16. package/dist/board/components/StateBanner.js +24 -0
  17. package/dist/board/components/StatusChip.js +26 -0
  18. package/dist/board/components/rateLimit.js +32 -0
  19. package/dist/board/components/rateLimit.test.ts +16 -0
  20. package/dist/board/components/time.js +14 -0
  21. package/dist/board/config.js +56 -0
  22. package/dist/board/index.html +18 -0
  23. package/dist/board/main.js +37 -0
  24. package/dist/board/mock/api.mock.js +491 -0
  25. package/dist/board/mock/api.mock.test.ts +460 -0
  26. package/dist/board/mock/fixtures.js +512 -0
  27. package/dist/board/schema/policy.js +261 -0
  28. package/dist/board/state/recur.js +24 -0
  29. package/dist/board/state/recur.test.ts +24 -0
  30. package/dist/board/state/useBoard.js +161 -0
  31. package/dist/board/state/useBuilder.js +357 -0
  32. package/dist/board/state/useBuilder.test.ts +468 -0
  33. package/dist/board/state/useCard.js +193 -0
  34. package/dist/board/state/useCard.test.ts +435 -0
  35. package/dist/board/state/useDirBrowser.js +23 -0
  36. package/dist/board/styles/board.css +2885 -0
  37. package/dist/board/styles/tokens.css +72 -0
  38. package/dist/board/vendor/vue.esm-browser.js +9 -0
  39. package/dist/board/views/App.js +61 -0
  40. package/dist/board/views/BoardView.js +153 -0
  41. package/dist/board/views/BuilderView.js +582 -0
  42. package/dist/board/views/CardView.js +382 -0
  43. package/dist/board/views/SettingsView.js +152 -0
  44. package/dist/config/agent-settings.d.ts +11 -0
  45. package/dist/config/agent-settings.d.ts.map +1 -1
  46. package/dist/config/agent-settings.js +79 -0
  47. package/dist/config/agent-settings.js.map +1 -1
  48. package/dist/config/detail-grant.d.ts +7 -16
  49. package/dist/config/detail-grant.d.ts.map +1 -1
  50. package/dist/config/detail-grant.js +12 -35
  51. package/dist/config/detail-grant.js.map +1 -1
  52. package/dist/config/index.d.ts +2 -0
  53. package/dist/config/index.d.ts.map +1 -1
  54. package/dist/config/index.js +17 -0
  55. package/dist/config/index.js.map +1 -1
  56. package/dist/config/mcp-settings.d.ts +7 -1
  57. package/dist/config/mcp-settings.d.ts.map +1 -1
  58. package/dist/config/mcp-settings.js +9 -0
  59. package/dist/config/mcp-settings.js.map +1 -1
  60. package/dist/config/misc-settings.d.ts +22 -1
  61. package/dist/config/misc-settings.d.ts.map +1 -1
  62. package/dist/config/misc-settings.js +93 -3
  63. package/dist/config/misc-settings.js.map +1 -1
  64. package/dist/config/operator-grant.d.ts +9 -0
  65. package/dist/config/operator-grant.d.ts.map +1 -0
  66. package/dist/config/operator-grant.js +24 -0
  67. package/dist/config/operator-grant.js.map +1 -0
  68. package/dist/config/voice-grant.d.ts +10 -0
  69. package/dist/config/voice-grant.d.ts.map +1 -0
  70. package/dist/config/voice-grant.js +18 -0
  71. package/dist/config/voice-grant.js.map +1 -0
  72. package/dist/dashboard/board-static.d.ts +22 -0
  73. package/dist/dashboard/board-static.d.ts.map +1 -0
  74. package/dist/dashboard/board-static.js +130 -0
  75. package/dist/dashboard/board-static.js.map +1 -0
  76. package/dist/dashboard/presets.d.ts +1 -1
  77. package/dist/dashboard/presets.d.ts.map +1 -1
  78. package/dist/dashboard/presets.js +1 -1
  79. package/dist/dashboard/presets.js.map +1 -1
  80. package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
  81. package/dist/dashboard/routes/agent-templates.js +6 -9
  82. package/dist/dashboard/routes/agent-templates.js.map +1 -1
  83. package/dist/dashboard/routes/board-body.d.ts +8 -0
  84. package/dist/dashboard/routes/board-body.d.ts.map +1 -0
  85. package/dist/dashboard/routes/board-body.js +20 -0
  86. package/dist/dashboard/routes/board-body.js.map +1 -0
  87. package/dist/dashboard/routes/board-dir-listing.d.ts +70 -0
  88. package/dist/dashboard/routes/board-dir-listing.d.ts.map +1 -0
  89. package/dist/dashboard/routes/board-dir-listing.js +192 -0
  90. package/dist/dashboard/routes/board-dir-listing.js.map +1 -0
  91. package/dist/dashboard/routes/board-lane-groups.d.ts +6 -0
  92. package/dist/dashboard/routes/board-lane-groups.d.ts.map +1 -0
  93. package/dist/dashboard/routes/board-lane-groups.js +52 -0
  94. package/dist/dashboard/routes/board-lane-groups.js.map +1 -0
  95. package/dist/dashboard/routes/board-policy.d.ts +224 -0
  96. package/dist/dashboard/routes/board-policy.d.ts.map +1 -0
  97. package/dist/dashboard/routes/board-policy.js +214 -0
  98. package/dist/dashboard/routes/board-policy.js.map +1 -0
  99. package/dist/dashboard/routes/board-profile-parse.d.ts +32 -0
  100. package/dist/dashboard/routes/board-profile-parse.d.ts.map +1 -0
  101. package/dist/dashboard/routes/board-profile-parse.js +338 -0
  102. package/dist/dashboard/routes/board-profile-parse.js.map +1 -0
  103. package/dist/dashboard/routes/board.d.ts +90 -0
  104. package/dist/dashboard/routes/board.d.ts.map +1 -0
  105. package/dist/dashboard/routes/board.js +721 -0
  106. package/dist/dashboard/routes/board.js.map +1 -0
  107. package/dist/dashboard/routes/codex.d.ts +14 -0
  108. package/dist/dashboard/routes/codex.d.ts.map +1 -0
  109. package/dist/dashboard/routes/codex.js +92 -0
  110. package/dist/dashboard/routes/codex.js.map +1 -0
  111. package/dist/dashboard/routes/prompts.d.ts +2 -2
  112. package/dist/dashboard/routes/prompts.d.ts.map +1 -1
  113. package/dist/dashboard/routes/prompts.js +2 -2
  114. package/dist/dashboard/routes/prompts.js.map +1 -1
  115. package/dist/dashboard/routes/settings.d.ts +2 -0
  116. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  117. package/dist/dashboard/routes/settings.js +24 -1
  118. package/dist/dashboard/routes/settings.js.map +1 -1
  119. package/dist/dashboard/routes/skills.d.ts +7 -1
  120. package/dist/dashboard/routes/skills.d.ts.map +1 -1
  121. package/dist/dashboard/routes/skills.js +6 -6
  122. package/dist/dashboard/routes/skills.js.map +1 -1
  123. package/dist/dashboard/routes/snapshots.d.ts +2 -1
  124. package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
  125. package/dist/dashboard/routes/snapshots.js +24 -18
  126. package/dist/dashboard/routes/snapshots.js.map +1 -1
  127. package/dist/dashboard/routes/templates.js +5 -5
  128. package/dist/dashboard/routes/templates.js.map +1 -1
  129. package/dist/dashboard/routes/threads-create.d.ts +17 -0
  130. package/dist/dashboard/routes/threads-create.d.ts.map +1 -1
  131. package/dist/dashboard/routes/threads-create.js +32 -10
  132. package/dist/dashboard/routes/threads-create.js.map +1 -1
  133. package/dist/dashboard/routes/threads-helpers.d.ts +11 -2
  134. package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -1
  135. package/dist/dashboard/routes/threads-helpers.js +20 -3
  136. package/dist/dashboard/routes/threads-helpers.js.map +1 -1
  137. package/dist/dashboard/routes/threads-read.d.ts +16 -4
  138. package/dist/dashboard/routes/threads-read.d.ts.map +1 -1
  139. package/dist/dashboard/routes/threads-read.js +61 -55
  140. package/dist/dashboard/routes/threads-read.js.map +1 -1
  141. package/dist/dashboard/routes/threads.d.ts +2 -2
  142. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  143. package/dist/dashboard/routes/threads.js +143 -29
  144. package/dist/dashboard/routes/threads.js.map +1 -1
  145. package/dist/dashboard/routes/types.d.ts +6 -0
  146. package/dist/dashboard/routes/types.d.ts.map +1 -1
  147. package/dist/dashboard/routes/types.js.map +1 -1
  148. package/dist/dashboard/routes.d.ts +2 -2
  149. package/dist/dashboard/routes.d.ts.map +1 -1
  150. package/dist/dashboard/routes.js +85 -7
  151. package/dist/dashboard/routes.js.map +1 -1
  152. package/dist/dashboard/spa.html +15 -12
  153. package/dist/data/board/board-schema.d.ts +29 -0
  154. package/dist/data/board/board-schema.d.ts.map +1 -0
  155. package/dist/data/board/board-schema.js +202 -0
  156. package/dist/data/board/board-schema.js.map +1 -0
  157. package/dist/data/board/board-types.d.ts +175 -0
  158. package/dist/data/board/board-types.d.ts.map +1 -0
  159. package/dist/data/board/board-types.js +9 -0
  160. package/dist/data/board/board-types.js.map +1 -0
  161. package/dist/data/board/card.repository.d.ts +137 -0
  162. package/dist/data/board/card.repository.d.ts.map +1 -0
  163. package/dist/data/board/card.repository.js +470 -0
  164. package/dist/data/board/card.repository.js.map +1 -0
  165. package/dist/data/board/comment.repository.d.ts +14 -0
  166. package/dist/data/board/comment.repository.d.ts.map +1 -0
  167. package/dist/data/board/comment.repository.js +42 -0
  168. package/dist/data/board/comment.repository.js.map +1 -0
  169. package/dist/data/board/lane-group.repository.d.ts +19 -0
  170. package/dist/data/board/lane-group.repository.d.ts.map +1 -0
  171. package/dist/data/board/lane-group.repository.js +66 -0
  172. package/dist/data/board/lane-group.repository.js.map +1 -0
  173. package/dist/data/board/profile-defaults.d.ts +17 -0
  174. package/dist/data/board/profile-defaults.d.ts.map +1 -0
  175. package/dist/data/board/profile-defaults.js +107 -0
  176. package/dist/data/board/profile-defaults.js.map +1 -0
  177. package/dist/data/interfaces.d.ts +1 -0
  178. package/dist/data/interfaces.d.ts.map +1 -1
  179. package/dist/data/memory/bootstrap.d.ts +1 -8
  180. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  181. package/dist/data/memory/bootstrap.js +27 -37
  182. package/dist/data/memory/bootstrap.js.map +1 -1
  183. package/dist/data/memory/consolidation.d.ts +9 -31
  184. package/dist/data/memory/consolidation.d.ts.map +1 -1
  185. package/dist/data/memory/consolidation.js +22 -32
  186. package/dist/data/memory/consolidation.js.map +1 -1
  187. package/dist/data/memory/db-maintenance.d.ts +54 -0
  188. package/dist/data/memory/db-maintenance.d.ts.map +1 -0
  189. package/dist/data/memory/db-maintenance.js +81 -0
  190. package/dist/data/memory/db-maintenance.js.map +1 -0
  191. package/dist/data/memory/episodes.d.ts +2 -1
  192. package/dist/data/memory/episodes.d.ts.map +1 -1
  193. package/dist/data/memory/episodes.js +5 -1
  194. package/dist/data/memory/episodes.js.map +1 -1
  195. package/dist/data/memory/index.d.ts +0 -4
  196. package/dist/data/memory/index.d.ts.map +1 -1
  197. package/dist/data/memory/index.js +0 -4
  198. package/dist/data/memory/index.js.map +1 -1
  199. package/dist/data/memory/key-knowledge.d.ts +51 -0
  200. package/dist/data/memory/key-knowledge.d.ts.map +1 -0
  201. package/dist/data/memory/key-knowledge.js +128 -0
  202. package/dist/data/memory/key-knowledge.js.map +1 -0
  203. package/dist/data/memory/migration-runner.d.ts +1 -1
  204. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  205. package/dist/data/memory/migration-runner.js +407 -1
  206. package/dist/data/memory/migration-runner.js.map +1 -1
  207. package/dist/data/memory/narrative-lint.d.ts +2 -2
  208. package/dist/data/memory/narrative-lint.d.ts.map +1 -1
  209. package/dist/data/memory/narrative-lint.js +23 -13
  210. package/dist/data/memory/narrative-lint.js.map +1 -1
  211. package/dist/data/memory/narrative-resolutions.d.ts +9 -2
  212. package/dist/data/memory/narrative-resolutions.d.ts.map +1 -1
  213. package/dist/data/memory/narrative-resolutions.js +9 -8
  214. package/dist/data/memory/narrative-resolutions.js.map +1 -1
  215. package/dist/data/memory/narrative-sources.d.ts +1 -1
  216. package/dist/data/memory/narrative-sources.d.ts.map +1 -1
  217. package/dist/data/memory/narrative-sources.js +8 -3
  218. package/dist/data/memory/narrative-sources.js.map +1 -1
  219. package/dist/data/memory/narrative-store.d.ts +24 -0
  220. package/dist/data/memory/narrative-store.d.ts.map +1 -1
  221. package/dist/data/memory/narrative-store.js +73 -35
  222. package/dist/data/memory/narrative-store.js.map +1 -1
  223. package/dist/data/memory/narrative.d.ts.map +1 -1
  224. package/dist/data/memory/narrative.js +47 -29
  225. package/dist/data/memory/narrative.js.map +1 -1
  226. package/dist/data/memory/note-archival.d.ts +1 -1
  227. package/dist/data/memory/note-archival.d.ts.map +1 -1
  228. package/dist/data/memory/note-archival.js +7 -3
  229. package/dist/data/memory/note-archival.js.map +1 -1
  230. package/dist/data/memory/note-embeddings.d.ts +7 -0
  231. package/dist/data/memory/note-embeddings.d.ts.map +1 -1
  232. package/dist/data/memory/note-embeddings.js +6 -2
  233. package/dist/data/memory/note-embeddings.js.map +1 -1
  234. package/dist/data/memory/passive-notice.repository.d.ts +70 -0
  235. package/dist/data/memory/passive-notice.repository.d.ts.map +1 -0
  236. package/dist/data/memory/passive-notice.repository.js +85 -0
  237. package/dist/data/memory/passive-notice.repository.js.map +1 -0
  238. package/dist/data/memory/schema-ddl.d.ts +120 -1
  239. package/dist/data/memory/schema-ddl.d.ts.map +1 -1
  240. package/dist/data/memory/schema-ddl.js +171 -4
  241. package/dist/data/memory/schema-ddl.js.map +1 -1
  242. package/dist/data/memory/schema-guard.d.ts.map +1 -1
  243. package/dist/data/memory/schema-guard.js +5 -41
  244. package/dist/data/memory/schema-guard.js.map +1 -1
  245. package/dist/data/memory/schema.d.ts.map +1 -1
  246. package/dist/data/memory/schema.js +10 -34
  247. package/dist/data/memory/schema.js.map +1 -1
  248. package/dist/data/memory/semantic-notes.d.ts +13 -8
  249. package/dist/data/memory/semantic-notes.d.ts.map +1 -1
  250. package/dist/data/memory/semantic-notes.js +12 -17
  251. package/dist/data/memory/semantic-notes.js.map +1 -1
  252. package/dist/data/memory/thread-registry.d.ts +330 -15
  253. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  254. package/dist/data/memory/thread-registry.js +523 -67
  255. package/dist/data/memory/thread-registry.js.map +1 -1
  256. package/dist/data/memory/utils.d.ts +6 -0
  257. package/dist/data/memory/utils.d.ts.map +1 -1
  258. package/dist/data/memory/utils.js +13 -0
  259. package/dist/data/memory/utils.js.map +1 -1
  260. package/dist/data/memory/worker-lifecycle.repository.d.ts +308 -0
  261. package/dist/data/memory/worker-lifecycle.repository.d.ts.map +1 -0
  262. package/dist/data/memory/worker-lifecycle.repository.js +428 -0
  263. package/dist/data/memory/worker-lifecycle.repository.js.map +1 -0
  264. package/dist/data/optional.d.ts +16 -0
  265. package/dist/data/optional.d.ts.map +1 -0
  266. package/dist/data/optional.js +47 -0
  267. package/dist/data/optional.js.map +1 -0
  268. package/dist/index.js +156 -24
  269. package/dist/index.js.map +1 -1
  270. package/dist/integrations/openai/speech.d.ts.map +1 -1
  271. package/dist/integrations/openai/speech.js +52 -19
  272. package/dist/integrations/openai/speech.js.map +1 -1
  273. package/dist/integrations/openai/video.d.ts +1 -1
  274. package/dist/integrations/openai/video.d.ts.map +1 -1
  275. package/dist/integrations/openai/video.js +13 -8
  276. package/dist/integrations/openai/video.js.map +1 -1
  277. package/dist/integrations/telegram/types.d.ts +11 -0
  278. package/dist/integrations/telegram/types.d.ts.map +1 -1
  279. package/dist/lib/http-retry.d.ts +91 -0
  280. package/dist/lib/http-retry.d.ts.map +1 -0
  281. package/dist/lib/http-retry.js +177 -0
  282. package/dist/lib/http-retry.js.map +1 -0
  283. package/dist/lib/mcp-http-port.d.ts +12 -0
  284. package/dist/lib/mcp-http-port.d.ts.map +1 -0
  285. package/dist/lib/mcp-http-port.js +19 -0
  286. package/dist/lib/mcp-http-port.js.map +1 -0
  287. package/dist/lib/paths.d.ts +29 -4
  288. package/dist/lib/paths.d.ts.map +1 -1
  289. package/dist/lib/paths.js +31 -4
  290. package/dist/lib/paths.js.map +1 -1
  291. package/dist/lib/types.d.ts +2 -0
  292. package/dist/lib/types.d.ts.map +1 -1
  293. package/dist/lib/usage-metering/pricing.js +1 -1
  294. package/dist/lib/usage-metering/pricing.js.map +1 -1
  295. package/dist/lib/usage-metering/sink.d.ts +4 -0
  296. package/dist/lib/usage-metering/sink.d.ts.map +1 -1
  297. package/dist/lib/usage-metering/sink.js +6 -4
  298. package/dist/lib/usage-metering/sink.js.map +1 -1
  299. package/dist/lib/utils.d.ts +31 -0
  300. package/dist/lib/utils.d.ts.map +1 -1
  301. package/dist/lib/utils.js +49 -0
  302. package/dist/lib/utils.js.map +1 -1
  303. package/dist/llm/prompts/narrative.d.ts.map +1 -1
  304. package/dist/llm/prompts/narrative.js +27 -86
  305. package/dist/llm/prompts/narrative.js.map +1 -1
  306. package/dist/log-parsing/log-events.d.ts +38 -0
  307. package/dist/log-parsing/log-events.d.ts.map +1 -0
  308. package/dist/log-parsing/log-events.js +2 -0
  309. package/dist/log-parsing/log-events.js.map +1 -0
  310. package/dist/log-parsing/parser-registry.d.ts +4 -0
  311. package/dist/log-parsing/parser-registry.d.ts.map +1 -0
  312. package/dist/log-parsing/parser-registry.js +18 -0
  313. package/dist/log-parsing/parser-registry.js.map +1 -0
  314. package/dist/log-parsing/parsers/claude.d.ts +6 -0
  315. package/dist/log-parsing/parsers/claude.d.ts.map +1 -0
  316. package/dist/log-parsing/parsers/claude.js +100 -0
  317. package/dist/log-parsing/parsers/claude.js.map +1 -0
  318. package/dist/log-parsing/parsers/codex.d.ts +6 -0
  319. package/dist/log-parsing/parsers/codex.d.ts.map +1 -0
  320. package/dist/log-parsing/parsers/codex.js +116 -0
  321. package/dist/log-parsing/parsers/codex.js.map +1 -0
  322. package/dist/log-parsing/parsers/copilot.d.ts +6 -0
  323. package/dist/log-parsing/parsers/copilot.d.ts.map +1 -0
  324. package/dist/log-parsing/parsers/copilot.js +65 -0
  325. package/dist/log-parsing/parsers/copilot.js.map +1 -0
  326. package/dist/log-parsing/parsers/json-lines.d.ts +9 -0
  327. package/dist/log-parsing/parsers/json-lines.d.ts.map +1 -0
  328. package/dist/log-parsing/parsers/json-lines.js +25 -0
  329. package/dist/log-parsing/parsers/json-lines.js.map +1 -0
  330. package/dist/log-parsing/render.d.ts +33 -0
  331. package/dist/log-parsing/render.d.ts.map +1 -0
  332. package/dist/log-parsing/render.js +113 -0
  333. package/dist/log-parsing/render.js.map +1 -0
  334. package/dist/log-parsing/text.d.ts +8 -0
  335. package/dist/log-parsing/text.d.ts.map +1 -0
  336. package/dist/log-parsing/text.js +20 -0
  337. package/dist/log-parsing/text.js.map +1 -0
  338. package/dist/server/http-server.d.ts +8 -1
  339. package/dist/server/http-server.d.ts.map +1 -1
  340. package/dist/server/http-server.js +41 -19
  341. package/dist/server/http-server.js.map +1 -1
  342. package/dist/server/port-holder.d.ts +94 -0
  343. package/dist/server/port-holder.d.ts.map +1 -0
  344. package/dist/server/port-holder.js +122 -0
  345. package/dist/server/port-holder.js.map +1 -0
  346. package/dist/services/agent-spawn.service.d.ts +50 -5
  347. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  348. package/dist/services/agent-spawn.service.js +59 -66
  349. package/dist/services/agent-spawn.service.js.map +1 -1
  350. package/dist/services/background-runner.d.ts +0 -1
  351. package/dist/services/background-runner.d.ts.map +1 -1
  352. package/dist/services/background-runner.js +0 -58
  353. package/dist/services/background-runner.js.map +1 -1
  354. package/dist/services/board/board-signals.d.ts +45 -0
  355. package/dist/services/board/board-signals.d.ts.map +1 -0
  356. package/dist/services/board/board-signals.js +170 -0
  357. package/dist/services/board/board-signals.js.map +1 -0
  358. package/dist/services/board/card-briefing.d.ts +24 -0
  359. package/dist/services/board/card-briefing.d.ts.map +1 -0
  360. package/dist/services/board/card-briefing.js +132 -0
  361. package/dist/services/board/card-briefing.js.map +1 -0
  362. package/dist/services/board/card-diagnostics.d.ts +25 -0
  363. package/dist/services/board/card-diagnostics.d.ts.map +1 -0
  364. package/dist/services/board/card-diagnostics.js +50 -0
  365. package/dist/services/board/card-diagnostics.js.map +1 -0
  366. package/dist/services/board/live-root-thread.d.ts +8 -0
  367. package/dist/services/board/live-root-thread.d.ts.map +1 -0
  368. package/dist/services/board/live-root-thread.js +2 -0
  369. package/dist/services/board/live-root-thread.js.map +1 -0
  370. package/dist/services/board/orchestrator.service.d.ts +119 -0
  371. package/dist/services/board/orchestrator.service.d.ts.map +1 -0
  372. package/dist/services/board/orchestrator.service.js +387 -0
  373. package/dist/services/board/orchestrator.service.js.map +1 -0
  374. package/dist/services/board/release-worker.d.ts +43 -0
  375. package/dist/services/board/release-worker.d.ts.map +1 -0
  376. package/dist/services/board/release-worker.js +96 -0
  377. package/dist/services/board/release-worker.js.map +1 -0
  378. package/dist/services/board/report-capture.d.ts +94 -0
  379. package/dist/services/board/report-capture.d.ts.map +1 -0
  380. package/dist/services/board/report-capture.js +398 -0
  381. package/dist/services/board/report-capture.js.map +1 -0
  382. package/dist/services/board/worker-spawn.d.ts +89 -0
  383. package/dist/services/board/worker-spawn.d.ts.map +1 -0
  384. package/dist/services/board/worker-spawn.js +177 -0
  385. package/dist/services/board/worker-spawn.js.map +1 -0
  386. package/dist/services/board/worktree.d.ts +45 -0
  387. package/dist/services/board/worktree.d.ts.map +1 -0
  388. package/dist/services/board/worktree.js +183 -0
  389. package/dist/services/board/worktree.js.map +1 -0
  390. package/dist/services/broker-client.d.ts +84 -2
  391. package/dist/services/broker-client.d.ts.map +1 -1
  392. package/dist/services/broker-client.js +72 -6
  393. package/dist/services/broker-client.js.map +1 -1
  394. package/dist/services/claude-spawn.service.d.ts +5 -0
  395. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  396. package/dist/services/claude-spawn.service.js +37 -21
  397. package/dist/services/claude-spawn.service.js.map +1 -1
  398. package/dist/services/codex-spawn.service.d.ts +8 -3
  399. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  400. package/dist/services/codex-spawn.service.js +84 -67
  401. package/dist/services/codex-spawn.service.js.map +1 -1
  402. package/dist/services/consolidation.service.d.ts.map +1 -1
  403. package/dist/services/consolidation.service.js +5 -49
  404. package/dist/services/consolidation.service.js.map +1 -1
  405. package/dist/services/copilot-spawn.service.d.ts +1 -1
  406. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  407. package/dist/services/copilot-spawn.service.js +10 -5
  408. package/dist/services/copilot-spawn.service.js.map +1 -1
  409. package/dist/services/daily-session.d.ts +24 -11
  410. package/dist/services/daily-session.d.ts.map +1 -1
  411. package/dist/services/daily-session.js +113 -33
  412. package/dist/services/daily-session.js.map +1 -1
  413. package/dist/services/death-alert.service.d.ts +55 -0
  414. package/dist/services/death-alert.service.d.ts.map +1 -0
  415. package/dist/services/death-alert.service.js +64 -0
  416. package/dist/services/death-alert.service.js.map +1 -0
  417. package/dist/services/dispatcher/broker.d.ts +66 -0
  418. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  419. package/dist/services/dispatcher/broker.js +60 -52
  420. package/dist/services/dispatcher/broker.js.map +1 -1
  421. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  422. package/dist/services/dispatcher/poller.js +31 -24
  423. package/dist/services/dispatcher/poller.js.map +1 -1
  424. package/dist/services/http-retry.d.ts +1 -90
  425. package/dist/services/http-retry.d.ts.map +1 -1
  426. package/dist/services/http-retry.js +1 -176
  427. package/dist/services/http-retry.js.map +1 -1
  428. package/dist/services/intent.d.ts +15 -1
  429. package/dist/services/intent.d.ts.map +1 -1
  430. package/dist/services/intent.js +39 -27
  431. package/dist/services/intent.js.map +1 -1
  432. package/dist/services/keeper.service.d.ts +76 -3
  433. package/dist/services/keeper.service.d.ts.map +1 -1
  434. package/dist/services/keeper.service.js +112 -35
  435. package/dist/services/keeper.service.js.map +1 -1
  436. package/dist/services/mcp-config.service.d.ts.map +1 -1
  437. package/dist/services/mcp-config.service.js +14 -1
  438. package/dist/services/mcp-config.service.js.map +1 -1
  439. package/dist/services/memory-briefing.service.d.ts +1 -1
  440. package/dist/services/memory-briefing.service.d.ts.map +1 -1
  441. package/dist/services/memory-briefing.service.js +28 -73
  442. package/dist/services/memory-briefing.service.js.map +1 -1
  443. package/dist/services/passive-notice.service.d.ts +56 -0
  444. package/dist/services/passive-notice.service.d.ts.map +1 -0
  445. package/dist/services/passive-notice.service.js +92 -0
  446. package/dist/services/passive-notice.service.js.map +1 -0
  447. package/dist/services/predefined-prompts.d.ts +11 -0
  448. package/dist/services/predefined-prompts.d.ts.map +1 -0
  449. package/dist/services/predefined-prompts.js +25 -0
  450. package/dist/services/predefined-prompts.js.map +1 -0
  451. package/dist/services/process.service.d.ts +111 -27
  452. package/dist/services/process.service.d.ts.map +1 -1
  453. package/dist/services/process.service.js +245 -173
  454. package/dist/services/process.service.js.map +1 -1
  455. package/dist/services/spawn-common.d.ts +281 -5
  456. package/dist/services/spawn-common.d.ts.map +1 -1
  457. package/dist/services/spawn-common.js +884 -188
  458. package/dist/services/spawn-common.js.map +1 -1
  459. package/dist/services/spawn-exit-watcher.d.ts +45 -35
  460. package/dist/services/spawn-exit-watcher.d.ts.map +1 -1
  461. package/dist/services/spawn-exit-watcher.js +120 -100
  462. package/dist/services/spawn-exit-watcher.js.map +1 -1
  463. package/dist/services/telegram.d.ts +31 -8
  464. package/dist/services/telegram.d.ts.map +1 -1
  465. package/dist/services/telegram.js +58 -26
  466. package/dist/services/telegram.js.map +1 -1
  467. package/dist/services/thread-health.service.d.ts +8 -0
  468. package/dist/services/thread-health.service.d.ts.map +1 -1
  469. package/dist/services/thread-health.service.js +14 -10
  470. package/dist/services/thread-health.service.js.map +1 -1
  471. package/dist/services/thread-lifecycle.service.d.ts +17 -1
  472. package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
  473. package/dist/services/thread-lifecycle.service.js +47 -6
  474. package/dist/services/thread-lifecycle.service.js.map +1 -1
  475. package/dist/services/thread-log-reader.d.ts +81 -0
  476. package/dist/services/thread-log-reader.d.ts.map +1 -0
  477. package/dist/services/thread-log-reader.js +141 -0
  478. package/dist/services/thread-log-reader.js.map +1 -0
  479. package/dist/services/thread-purge.service.d.ts +200 -0
  480. package/dist/services/thread-purge.service.d.ts.map +1 -0
  481. package/dist/services/thread-purge.service.js +644 -0
  482. package/dist/services/thread-purge.service.js.map +1 -0
  483. package/dist/services/topic.service.d.ts +44 -2
  484. package/dist/services/topic.service.d.ts.map +1 -1
  485. package/dist/services/topic.service.js +74 -13
  486. package/dist/services/topic.service.js.map +1 -1
  487. package/dist/services/usage/usage-inbox-notifier.d.ts +50 -0
  488. package/dist/services/usage/usage-inbox-notifier.d.ts.map +1 -0
  489. package/dist/services/usage/usage-inbox-notifier.js +118 -0
  490. package/dist/services/usage/usage-inbox-notifier.js.map +1 -0
  491. package/dist/services/usage/usage-poller.service.d.ts +41 -0
  492. package/dist/services/usage/usage-poller.service.d.ts.map +1 -0
  493. package/dist/services/usage/usage-poller.service.js +67 -0
  494. package/dist/services/usage/usage-poller.service.js.map +1 -0
  495. package/dist/services/usage/usage-snapshot-provider.d.ts +40 -0
  496. package/dist/services/usage/usage-snapshot-provider.d.ts.map +1 -0
  497. package/dist/services/usage/usage-snapshot-provider.js +89 -0
  498. package/dist/services/usage/usage-snapshot-provider.js.map +1 -0
  499. package/dist/services/usage/usage-types.d.ts +28 -0
  500. package/dist/services/usage/usage-types.d.ts.map +1 -0
  501. package/dist/services/usage/usage-types.js +14 -0
  502. package/dist/services/usage/usage-types.js.map +1 -0
  503. package/dist/services/worker-birth.d.ts +154 -0
  504. package/dist/services/worker-birth.d.ts.map +1 -0
  505. package/dist/services/worker-birth.js +274 -0
  506. package/dist/services/worker-birth.js.map +1 -0
  507. package/dist/services/worker-cleanup.service.d.ts +242 -19
  508. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  509. package/dist/services/worker-cleanup.service.js +893 -355
  510. package/dist/services/worker-cleanup.service.js.map +1 -1
  511. package/dist/services/worker-lifecycle-executor.d.ts +42 -0
  512. package/dist/services/worker-lifecycle-executor.d.ts.map +1 -0
  513. package/dist/services/worker-lifecycle-executor.js +63 -0
  514. package/dist/services/worker-lifecycle-executor.js.map +1 -0
  515. package/dist/services/worker-single-use.d.ts +92 -0
  516. package/dist/services/worker-single-use.d.ts.map +1 -0
  517. package/dist/services/worker-single-use.js +155 -0
  518. package/dist/services/worker-single-use.js.map +1 -0
  519. package/dist/sessions/mcp-registry.d.ts +33 -2
  520. package/dist/sessions/mcp-registry.d.ts.map +1 -1
  521. package/dist/sessions/mcp-registry.js +153 -30
  522. package/dist/sessions/mcp-registry.js.map +1 -1
  523. package/dist/test-bootstrap.d.ts +19 -12
  524. package/dist/test-bootstrap.d.ts.map +1 -1
  525. package/dist/test-bootstrap.js +69 -21
  526. package/dist/test-bootstrap.js.map +1 -1
  527. package/dist/test-tripwire.test-support.d.ts +75 -0
  528. package/dist/test-tripwire.test-support.d.ts.map +1 -0
  529. package/dist/test-tripwire.test-support.js +353 -0
  530. package/dist/test-tripwire.test-support.js.map +1 -0
  531. package/dist/tools/defs/memory-defs.d.ts.map +1 -1
  532. package/dist/tools/defs/memory-defs.js +12 -4
  533. package/dist/tools/defs/memory-defs.js.map +1 -1
  534. package/dist/tools/defs/session-defs.d.ts.map +1 -1
  535. package/dist/tools/defs/session-defs.js +26 -10
  536. package/dist/tools/defs/session-defs.js.map +1 -1
  537. package/dist/tools/defs/utility-defs.js +1 -1
  538. package/dist/tools/defs/utility-defs.js.map +1 -1
  539. package/dist/tools/delegate-tool.d.ts +81 -1
  540. package/dist/tools/delegate-tool.d.ts.map +1 -1
  541. package/dist/tools/delegate-tool.js +840 -219
  542. package/dist/tools/delegate-tool.js.map +1 -1
  543. package/dist/tools/memory-tools.d.ts.map +1 -1
  544. package/dist/tools/memory-tools.js +66 -9
  545. package/dist/tools/memory-tools.js.map +1 -1
  546. package/dist/tools/response-builders.d.ts.map +1 -1
  547. package/dist/tools/response-builders.js +12 -8
  548. package/dist/tools/response-builders.js.map +1 -1
  549. package/dist/tools/session-tools.d.ts.map +1 -1
  550. package/dist/tools/session-tools.js +3 -32
  551. package/dist/tools/session-tools.js.map +1 -1
  552. package/dist/tools/skill-tools.js +1 -1
  553. package/dist/tools/skill-tools.js.map +1 -1
  554. package/dist/tools/start-session-tool.d.ts.map +1 -1
  555. package/dist/tools/start-session-tool.js +66 -20
  556. package/dist/tools/start-session-tool.js.map +1 -1
  557. package/dist/tools/utility-tools.d.ts.map +1 -1
  558. package/dist/tools/utility-tools.js +38 -3
  559. package/dist/tools/utility-tools.js.map +1 -1
  560. package/dist/tools/wait/auto-forward.d.ts.map +1 -1
  561. package/dist/tools/wait/auto-forward.js +8 -3
  562. package/dist/tools/wait/auto-forward.js.map +1 -1
  563. package/dist/tools/wait/consolidation-strategy.d.ts +42 -0
  564. package/dist/tools/wait/consolidation-strategy.d.ts.map +1 -0
  565. package/dist/tools/wait/consolidation-strategy.js +50 -0
  566. package/dist/tools/wait/consolidation-strategy.js.map +1 -0
  567. package/dist/tools/wait/drive-handler.d.ts +5 -7
  568. package/dist/tools/wait/drive-handler.d.ts.map +1 -1
  569. package/dist/tools/wait/drive-handler.js +45 -59
  570. package/dist/tools/wait/drive-handler.js.map +1 -1
  571. package/dist/tools/wait/media-processor.d.ts.map +1 -1
  572. package/dist/tools/wait/media-processor.js +8 -4
  573. package/dist/tools/wait/media-processor.js.map +1 -1
  574. package/dist/tools/wait/message-delivery.d.ts +9 -6
  575. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  576. package/dist/tools/wait/message-delivery.js +77 -58
  577. package/dist/tools/wait/message-delivery.js.map +1 -1
  578. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  579. package/dist/tools/wait/message-processing.js +2 -1
  580. package/dist/tools/wait/message-processing.js.map +1 -1
  581. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  582. package/dist/tools/wait/poll-loop.js +339 -239
  583. package/dist/tools/wait/poll-loop.js.map +1 -1
  584. package/package.json +4 -3
  585. package/templates/azure-devops-securevault.default.md +20 -6
  586. package/templates/board-quality-checklist.default.md +121 -0
  587. package/templates/buildless-vue-preview.default.md +47 -0
  588. package/templates/expert-code-review.default.md +12 -0
  589. package/templates/handoff.default.md +41 -18
  590. package/templates/increment-pr-pipeline.default.md +79 -0
  591. package/templates/swarm.default.md +1 -0
  592. package/templates/worker-autonomous.default.md +1 -0
  593. package/templates/worker-delegate.default.md +1 -0
  594. package/dist/dashboard/log-parser.d.ts +0 -65
  595. package/dist/dashboard/log-parser.d.ts.map +0 -1
  596. package/dist/dashboard/log-parser.js +0 -219
  597. package/dist/dashboard/log-parser.js.map +0 -1
  598. package/dist/data/memory/reflection-dedup.d.ts +0 -17
  599. package/dist/data/memory/reflection-dedup.d.ts.map +0 -1
  600. package/dist/data/memory/reflection-dedup.js +0 -55
  601. package/dist/data/memory/reflection-dedup.js.map +0 -1
  602. package/dist/data/memory/reflection-gates.d.ts +0 -40
  603. package/dist/data/memory/reflection-gates.d.ts.map +0 -1
  604. package/dist/data/memory/reflection-gates.js +0 -220
  605. package/dist/data/memory/reflection-gates.js.map +0 -1
  606. package/dist/data/memory/reflection-sources.d.ts +0 -13
  607. package/dist/data/memory/reflection-sources.d.ts.map +0 -1
  608. package/dist/data/memory/reflection-sources.js +0 -115
  609. package/dist/data/memory/reflection-sources.js.map +0 -1
  610. package/dist/data/memory/reflection.d.ts +0 -43
  611. package/dist/data/memory/reflection.d.ts.map +0 -1
  612. package/dist/data/memory/reflection.js +0 -329
  613. package/dist/data/memory/reflection.js.map +0 -1
  614. package/dist/llm/prompts/reflection.d.ts +0 -6
  615. package/dist/llm/prompts/reflection.d.ts.map +0 -1
  616. package/dist/llm/prompts/reflection.js +0 -77
  617. package/dist/llm/prompts/reflection.js.map +0 -1
  618. package/dist/services/memory-pruning.service.d.ts +0 -12
  619. package/dist/services/memory-pruning.service.d.ts.map +0 -1
  620. package/dist/services/memory-pruning.service.js +0 -179
  621. package/dist/services/memory-pruning.service.js.map +0 -1
  622. package/templates/daily-review.default.md +0 -26
  623. package/templates/fire-and-forget.default.md +0 -76
  624. package/templates/offload.default.md +0 -33
  625. package/templates/sensorium-repair.default.md +0 -114
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Card-worker spawn path (design §3.1). The ordered bracket a worker is born
3
+ * through — mint identity → topic for that id → pre-queue payload → claim →
4
+ * registerThread → launch window → spawn → commit — lives in `worker-birth.ts` and
5
+ * is shared with `start_thread`'s `mode=worker` arm; what remains here is what is
6
+ * genuinely board-specific: the worktree isolation around it and the card bind
7
+ * passed as the claim. Giving a started — or possibly started — worker up is NOT
8
+ * board-specific and no longer lives here: the bracket owns that rung, and the
9
+ * board only hands it the kill, liveness and worktree wiring it already had.
10
+ *
11
+ * `bindWorker` is the claim for the reason the shared bracket runs claims where it
12
+ * does: dispatch ownership must be DURABLE before registerThread makes the worker
13
+ * observable, so no orchestrator — not even a second one overlapping a self-update —
14
+ * can ever see a badged worker that no card owns. That ordering is what lets the
15
+ * orphan sweep identify an orphan by ownership alone, with no age heuristic.
16
+ */
17
+ import { getAgentType } from "../../config/index.js";
18
+ import { log } from "../../lib/logger.js";
19
+ import { errorMessage } from "../../lib/utils.js";
20
+ import { BOARD_WORKER_BADGE, getThread } from "../../data/memory/thread-registry.js";
21
+ import { getProfile } from "../../data/board/profile-defaults.js";
22
+ import { Optional } from "../../data/optional.js";
23
+ import { dispatchSpawn } from "../agent-spawn.service.js";
24
+ import { deletePendingTaskMailboxAsync } from "../process.service.js";
25
+ import { birthWorker } from "../worker-birth.js";
26
+ import { renderCardBriefing } from "./card-briefing.js";
27
+ import { createCardWorktree, removeWorktreeIfLinked, worktreeEnabled } from "./worktree.js";
28
+ /**
29
+ * How a failed birth reads on a card. The shared bracket names the STEP that
30
+ * refused; the wording stays here, because this is the only place that knows the
31
+ * refused step was a card dispatch. `spawn` carries the launcher's own message
32
+ * through unprefixed — it already names what failed to start.
33
+ */
34
+ const DISPATCH_FAILURE_PREFIX = {
35
+ mint: "Worker id allocation failed",
36
+ topic: "Topic creation failed",
37
+ payload: "Failed to pre-queue card payload",
38
+ claim: "Failed to bind card worker",
39
+ register: "Failed to register card worker",
40
+ window: "Failed to open the card worker launch window",
41
+ spawn: "",
42
+ commit: "Failed to commit the card worker launch",
43
+ };
44
+ function dispatchFailureMessage(stage, detail) {
45
+ const prefix = DISPATCH_FAILURE_PREFIX[stage];
46
+ return prefix ? `${prefix}: ${detail}` : detail;
47
+ }
48
+ /** Select an existing source without changing thread state. */
49
+ export function resolveMemorySource(profile, deps) {
50
+ const memory = profile.memory;
51
+ if (!memory || memory.mode === "Ephemeral")
52
+ return Optional.empty();
53
+ if (memory.mode === "Existing thread") {
54
+ const threadId = memory.threadId;
55
+ if (typeof threadId === "number" && deps.getThread(threadId))
56
+ return Optional.of(threadId);
57
+ deps.warn(`[board] correlation=${deps.correlationId} card ${deps.cardId}: memory thread ${String(threadId)} was not found — using ephemeral memory.`);
58
+ }
59
+ return Optional.empty();
60
+ }
61
+ /** Windows drive-letter or POSIX absolute path → usable as a working directory. */
62
+ const looksLikeLocalPath = (s) => /^([A-Za-z]:[\\/]|\/)/.test(s);
63
+ /** Resolve the persisted named profile at dispatch time, never from card type. */
64
+ export function resolveCardForDispatch(db, card) {
65
+ const namedProfile = getProfile(db, card.profileId);
66
+ const memory = card.profile.memory;
67
+ return {
68
+ ...card,
69
+ profileId: namedProfile.id,
70
+ profile: memory?.mode === "Existing thread"
71
+ ? { ...namedProfile.profile, memory }
72
+ : namedProfile.profile,
73
+ };
74
+ }
75
+ /** The provider a resolved card's worker runs on — every rate-limit read must agree with spawn. */
76
+ export function dispatchAgentType(resolvedCard) {
77
+ return resolvedCard.profile.agentType ?? getAgentType();
78
+ }
79
+ /** Spawn from the profile snapshot resolved by the dispatch guard. */
80
+ export async function spawnCardWorker(deps, resolvedCard, comments) {
81
+ const { db, telegram, chatId, threadLifecycle } = deps;
82
+ const spawn = deps.dispatchSpawn ?? dispatchSpawn;
83
+ const agentType = dispatchAgentType(resolvedCard);
84
+ const shortTitle = resolvedCard.title.length > 40 ? resolvedCard.title.slice(0, 37) + "…" : resolvedCard.title;
85
+ const name = `Card #${resolvedCard.cardId} ${shortTitle}`;
86
+ // 1. Working directory: explicit local repo path on the card wins, else the
87
+ // process working directory.
88
+ const baseDirectory = resolvedCard.profile.repository && looksLikeLocalPath(resolvedCard.profile.repository)
89
+ ? resolvedCard.profile.repository
90
+ : process.cwd();
91
+ // 1b. Spawn isolation: unless the operator opted out, run the worker in a
92
+ // dedicated git worktree rooted at the repo so its branch/changes never
93
+ // touch the main checkout until merged. If isolation cannot be created,
94
+ // do not dispatch: falling back would let the worker mutate the main checkout.
95
+ let workingDirectory = baseDirectory;
96
+ let createdWorktree = Optional.empty();
97
+ if (worktreeEnabled(resolvedCard.profile)) {
98
+ try {
99
+ const worktreePath = Optional.fromNullable(await (deps.createCardWorktree ?? createCardWorktree)(baseDirectory, resolvedCard.cardId, resolvedCard.title));
100
+ if (worktreePath.has()) {
101
+ workingDirectory = worktreePath.get();
102
+ createdWorktree = Optional.of(workingDirectory);
103
+ }
104
+ else {
105
+ return {
106
+ error: `Worktree isolation required but ${baseDirectory} is not a git work tree`,
107
+ };
108
+ }
109
+ }
110
+ catch (err) {
111
+ return { error: `Worktree creation failed: ${errorMessage(err)}` };
112
+ }
113
+ }
114
+ const cleanupWorktreeAfterFailure = async () => {
115
+ if (createdWorktree.has()) {
116
+ try {
117
+ const removal = await (deps.removeWorktreeIfLinked ?? removeWorktreeIfLinked)(createdWorktree);
118
+ if (removal === "remove-failed") {
119
+ await telegram.sendMessage(chatId, `Card worker dispatch failed: worktree ${createdWorktree.get()} could not be removed — clean up manually.`);
120
+ }
121
+ }
122
+ catch (err) {
123
+ log.warn(`[board] correlation=${resolvedCard.correlationId} failed-dispatch worktree cleanup: ${errorMessage(err)}`);
124
+ }
125
+ }
126
+ };
127
+ // 2. The shared birth bracket. The board supplies the card bind as the claim, the
128
+ // briefing as the required payload, the card as the launch-window owner, the
129
+ // worktree removal as the pre-spawn cleanup, and the decommission wiring the
130
+ // give-up rung needs — the same wiring releaseWorkerForCard uses, because a
131
+ // launch given up IS a release and is torn down by the operator Stop's own path.
132
+ const birth = await birthWorker({
133
+ db,
134
+ telegram,
135
+ chatId,
136
+ threadLifecycle,
137
+ name,
138
+ topicName: `[Board] ${name}`,
139
+ aliases: [name],
140
+ agentType,
141
+ workingDirectory,
142
+ badge: BOARD_WORKER_BADGE,
143
+ // A card worker is stateless: its registry root is itself, and the memory it
144
+ // bootstraps from is whatever the profile selected — not the same thing.
145
+ registryRoot: (workerThreadId) => Optional.of(workerThreadId),
146
+ memorySourceThreadId: resolveMemorySource(resolvedCard.profile, {
147
+ getThread: (threadId) => getThread(db, threadId),
148
+ warn: (message) => log.warn(message),
149
+ correlationId: resolvedCard.correlationId,
150
+ cardId: resolvedCard.cardId,
151
+ }),
152
+ notifyThreadId: Optional.fromNullable(deps.notifyThreadId),
153
+ payload: Optional.of({
154
+ render: (workerThreadId) => renderCardBriefing(resolvedCard, comments, workerThreadId),
155
+ required: true,
156
+ }),
157
+ claim: Optional.of((workerThreadId) => deps.bindWorker(workerThreadId)),
158
+ launchCardId: Optional.of(resolvedCard.cardId),
159
+ modelOverride: Optional.fromNullable(resolvedCard.profile.model).map((model) => model.trim()),
160
+ spawn,
161
+ deleteMailbox: deps.deletePendingTaskMailboxAsync ?? deletePendingTaskMailboxAsync,
162
+ cleanup: cleanupWorktreeAfterFailure,
163
+ ...(deps.decommission ? { decommission: deps.decommission } : {}),
164
+ ...(deps.killWorker ? { killWorker: deps.killWorker } : {}),
165
+ ...(deps.removeWorktreeIfLinked ? { removeWorktree: deps.removeWorktreeIfLinked } : {}),
166
+ logPrefix: `[board] correlation=${resolvedCard.correlationId}`,
167
+ });
168
+ if ("claimLost" in birth)
169
+ return { bindLost: true };
170
+ if ("launchLost" in birth)
171
+ return { launchLost: true };
172
+ if ("failed" in birth)
173
+ return { error: dispatchFailureMessage(birth.failed, birth.detail) };
174
+ log.info(`[board] correlation=${resolvedCard.correlationId} card ${resolvedCard.cardId} dispatched → worker thread ${birth.workerThreadId} (PID ${birth.pid}, agent ${agentType})`);
175
+ return { workerThreadId: birth.workerThreadId };
176
+ }
177
+ //# sourceMappingURL=worker-spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-spawn.js","sourceRoot":"","sources":["../../../src/services/board/worker-spawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Board card-worker git-worktree isolation (DD 1.1 §11.3 item 8).
3
+ *
4
+ * When a card's execution profile leaves `worktree` unset or true, the
5
+ * card-worker runs inside a dedicated git worktree instead of the raw repository
6
+ * directory, so its branch and working changes never touch the operator's main
7
+ * checkout until merged. The worktree is auto-named `<cardId>-<slug(title)>`,
8
+ * rooted at the profile repository, and torn down with the worker
9
+ * (worker-cleanup.service.ts). This is a spawn-time isolation flag, not a
10
+ * prompt directive — the baseline briefing stays vendor-neutral.
11
+ */
12
+ import { Optional } from "../../data/optional.js";
13
+ import type { ExecutionProfile } from "../../data/board/board-types.js";
14
+ /** The worktree flag is default-ON per the mockup toggle: only an explicit
15
+ * `false` opts out of isolation. */
16
+ export declare function worktreeEnabled(profile: ExecutionProfile): boolean;
17
+ /** Lowercase; every run of non-alphanumeric characters collapses to a single
18
+ * dash; leading/trailing dashes are trimmed; capped at MAX_SLUG_LEN (re-trimming
19
+ * a dash left at the cut boundary). */
20
+ export declare function slugify(title: string): string;
21
+ /** Immutable card identity used as the worktree directory name. */
22
+ export declare function buildWorktreeName(cardId: number): string;
23
+ /** Inverse of buildWorktreeName: the card a worktree directory belongs to. */
24
+ export declare function worktreeCardId(dir: string): Optional<number>;
25
+ /** Deterministic location of a card's isolated board worktree. */
26
+ export declare function buildCardWorktreePath(cardId: number): string;
27
+ /** True only when `dir` is a board-owned worktree path (under the board
28
+ * worktree root). The teardown gate: an operator's own, manually-created
29
+ * worktree used as a worker cwd must NEVER be force-removed. */
30
+ export declare function isBoardOwnedWorktreePath(dir: string): boolean;
31
+ export type WorktreeRemovalResult = "removed" | "preserved-dirty" | "absent" | "remove-failed";
32
+ /**
33
+ * Create (or reset) the card's isolated git worktree rooted at `repo` and return
34
+ * its path, or null when `repo` is not a git working tree. The branch is force-created at HEAD (`-B`) so a
35
+ * re-dispatch of the same card gets a clean isolated branch instead of colliding
36
+ * with a stale one left by a prior run.
37
+ */
38
+ export declare function createCardWorktree(repo: string, cardId: number, title: string): Promise<string | null>;
39
+ /**
40
+ * Remove the git worktree a decommissioned worker ran in, given its working
41
+ * directory. A no-op unless `dir` is a *linked* worktree — never the main
42
+ * checkout — so it is safe to call for every worker on the shared teardown path.
43
+ */
44
+ export declare function removeWorktreeIfLinked(dir: Optional<string>): Promise<WorktreeRemovalResult>;
45
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/services/board/worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAsBxE;qCACqC;AACrC,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAElE;AAED;;wCAEwC;AACxC,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAG5D;AAOD,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;iEAEiE;AACjE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI7D;AAoBD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,iBAAiB,GAAG,QAAQ,GAAG,eAAe,CAAC;AA0B/F;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAuBD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAYhC"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Board card-worker git-worktree isolation (DD 1.1 §11.3 item 8).
3
+ *
4
+ * When a card's execution profile leaves `worktree` unset or true, the
5
+ * card-worker runs inside a dedicated git worktree instead of the raw repository
6
+ * directory, so its branch and working changes never touch the operator's main
7
+ * checkout until merged. The worktree is auto-named `<cardId>-<slug(title)>`,
8
+ * rooted at the profile repository, and torn down with the worker
9
+ * (worker-cleanup.service.ts). This is a spawn-time isolation flag, not a
10
+ * prompt directive — the baseline briefing stays vendor-neutral.
11
+ */
12
+ import { execFile } from "node:child_process";
13
+ import { existsSync } from "node:fs";
14
+ import { promisify } from "node:util";
15
+ import { basename, dirname, join, resolve, sep } from "node:path";
16
+ import { dataPath } from "../../lib/paths.js";
17
+ import { log } from "../../lib/logger.js";
18
+ import { errorMessage } from "../../lib/utils.js";
19
+ import { Optional } from "../../data/optional.js";
20
+ const GIT_TIMEOUT_MS = 30_000;
21
+ /** Promisified execFile so git I/O runs off the event loop — a synchronous
22
+ * execFileSync would block Node's single thread for the whole command (up to
23
+ * GIT_TIMEOUT_MS), stalling the MCP server's polling/delivery on every dispatch
24
+ * and teardown. */
25
+ const execFileAsync = promisify(execFile);
26
+ /** Cap the slug so a very long title can't push the worktree path past Windows'
27
+ * MAX_PATH (260) and silently disable isolation. */
28
+ const MAX_SLUG_LEN = 60;
29
+ /** Worktrees live under the data dir, not inside the operator's repo, so the
30
+ * main checkout is never polluted with nested worktree directories. Resolved
31
+ * per call, not at module load, so a `SENSORIUM_BASE_DIR` set by the host
32
+ * process is honoured however late this module is imported. */
33
+ function worktreesDir() {
34
+ return dataPath("board-worktrees");
35
+ }
36
+ /** The worktree flag is default-ON per the mockup toggle: only an explicit
37
+ * `false` opts out of isolation. */
38
+ export function worktreeEnabled(profile) {
39
+ return profile.worktree !== false;
40
+ }
41
+ /** Lowercase; every run of non-alphanumeric characters collapses to a single
42
+ * dash; leading/trailing dashes are trimmed; capped at MAX_SLUG_LEN (re-trimming
43
+ * a dash left at the cut boundary). */
44
+ export function slugify(title) {
45
+ return title
46
+ .toLowerCase()
47
+ .replace(/[^a-z0-9]+/g, "-")
48
+ .replace(/^-|-$/g, "")
49
+ .slice(0, MAX_SLUG_LEN)
50
+ .replace(/-$/, "");
51
+ }
52
+ /** Immutable card identity used as the worktree directory name. */
53
+ export function buildWorktreeName(cardId) {
54
+ return `card-${cardId}`;
55
+ }
56
+ /** Inverse of buildWorktreeName: the card a worktree directory belongs to. */
57
+ export function worktreeCardId(dir) {
58
+ const match = /^card-(\d+)$/.exec(basename(dir));
59
+ return match ? Optional.of(Number(match[1])) : Optional.empty();
60
+ }
61
+ function buildCardBranchName(cardId, title) {
62
+ const slug = slugify(title);
63
+ return slug ? `${cardId}-${slug}` : String(cardId);
64
+ }
65
+ /** Deterministic location of a card's isolated board worktree. */
66
+ export function buildCardWorktreePath(cardId) {
67
+ return join(worktreesDir(), buildWorktreeName(cardId));
68
+ }
69
+ /** True only when `dir` is a board-owned worktree path (under the board
70
+ * worktree root). The teardown gate: an operator's own, manually-created
71
+ * worktree used as a worker cwd must NEVER be force-removed. */
72
+ export function isBoardOwnedWorktreePath(dir) {
73
+ const root = resolve(worktreesDir());
74
+ const target = resolve(dir);
75
+ return target === root || target.startsWith(root + sep);
76
+ }
77
+ async function runGit(cwd, args) {
78
+ const { stdout } = await execFileAsync("git", ["-C", cwd, ...args], {
79
+ encoding: "utf-8",
80
+ timeout: GIT_TIMEOUT_MS,
81
+ windowsHide: true,
82
+ });
83
+ return stdout;
84
+ }
85
+ /** True when `dir` is inside a git working tree (a worktree can be rooted at it). */
86
+ async function isGitWorkTree(dir) {
87
+ try {
88
+ return (await runGit(dir, ["rev-parse", "--is-inside-work-tree"])).trim() === "true";
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ /** Remove a registered clean worktree. A dirty worktree is deliberately retained
95
+ * so teardown can never discard a worker's uncommitted changes. */
96
+ async function removeWorktreeAt(repo, path) {
97
+ if (!existsSync(path))
98
+ return "absent";
99
+ try {
100
+ const status = await runGit(path, ["status", "--porcelain"]);
101
+ if (status.trim())
102
+ return "preserved-dirty";
103
+ }
104
+ catch (err) {
105
+ // Failing closed protects data in a malformed or partially removed worktree.
106
+ log.warn(`[board] worktree status ${path} could not be inspected; preserving it: ${errorMessage(err)}`);
107
+ return "preserved-dirty";
108
+ }
109
+ try {
110
+ await runGit(repo, ["worktree", "remove", path]);
111
+ return "removed";
112
+ }
113
+ catch (err) {
114
+ if (!existsSync(path))
115
+ return "absent";
116
+ log.warn(`[board] worktree remove ${path} (repo ${repo}) failed: ${errorMessage(err)}`);
117
+ return "remove-failed";
118
+ }
119
+ }
120
+ /**
121
+ * Create (or reset) the card's isolated git worktree rooted at `repo` and return
122
+ * its path, or null when `repo` is not a git working tree. The branch is force-created at HEAD (`-B`) so a
123
+ * re-dispatch of the same card gets a clean isolated branch instead of colliding
124
+ * with a stale one left by a prior run.
125
+ */
126
+ export async function createCardWorktree(repo, cardId, title) {
127
+ if (!(await isGitWorkTree(repo)))
128
+ return null;
129
+ const name = buildCardBranchName(cardId, title);
130
+ const path = buildCardWorktreePath(cardId);
131
+ // A stale worktree at this path (prior run whose teardown was skipped) would
132
+ // make `worktree add` fail — clear it first, unless it contains worker changes.
133
+ if ((await removeWorktreeAt(repo, path)) === "preserved-dirty") {
134
+ throw new Error(`previous run left uncommitted changes in the worktree at ${path}; resolve them before re-dispatch`);
135
+ }
136
+ await runGit(repo, ["worktree", "add", "--force", "-B", name, path]);
137
+ return path;
138
+ }
139
+ /** The main checkout a linked worktree belongs to, or null when `dir` is the
140
+ * main checkout itself (git-dir === git-common-dir) or not a git dir at all. */
141
+ async function linkedWorktreeMainRepo(dir) {
142
+ try {
143
+ const out = await runGit(dir, [
144
+ "rev-parse",
145
+ "--path-format=absolute",
146
+ "--git-dir",
147
+ "--git-common-dir",
148
+ ]);
149
+ const [gitDir, commonDir] = out
150
+ .trim()
151
+ .split(/\r?\n/)
152
+ .map((s) => s.trim());
153
+ if (!gitDir || !commonDir || gitDir === commonDir)
154
+ return null;
155
+ return dirname(commonDir);
156
+ }
157
+ catch {
158
+ return null;
159
+ }
160
+ }
161
+ /**
162
+ * Remove the git worktree a decommissioned worker ran in, given its working
163
+ * directory. A no-op unless `dir` is a *linked* worktree — never the main
164
+ * checkout — so it is safe to call for every worker on the shared teardown path.
165
+ */
166
+ export async function removeWorktreeIfLinked(dir) {
167
+ if (!dir.has())
168
+ return "absent";
169
+ const path = dir.get();
170
+ if (!existsSync(path))
171
+ return "absent";
172
+ // Only ever touch board-owned worktrees. Teardown runs for EVERY worker, and a
173
+ // worker whose cwd is an operator's own manually-created worktree (outside
174
+ // the board worktree root) must never be force-removed — that would destroy
175
+ // their data.
176
+ if (!isBoardOwnedWorktreePath(path))
177
+ return "absent";
178
+ const mainRepo = await linkedWorktreeMainRepo(path);
179
+ if (!mainRepo)
180
+ return "absent";
181
+ return removeWorktreeAt(mainRepo, path);
182
+ }
183
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/services/board/worktree.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,11 @@
10
10
  * Degradation contract (the audited-safe direction, same as the old breakers):
11
11
  * every function returns `null` when the broker cannot answer (unreachable,
12
12
  * auth-rejected, timeout) and the caller MUST treat null as "cannot confirm
13
- * → assume alive / kill not performed". Communication is strictly one-way
14
- * MCP → supervisor.
13
+ * → assume alive / kill not performed". Communication through this client is
14
+ * strictly one-way MCP → broker; the supervisor as a whole is not only called
15
+ * by MCP, because its watchdog and Telegram front-end roles separately call MCP.
15
16
  */
17
+ import { Optional } from "../data/optional.js";
16
18
  /**
17
19
  * How a failed broker call failed — the distinction the spawn contract pivots on:
18
20
  * "no-connection" the TCP connection was never established (refused, host
@@ -25,6 +27,15 @@
25
27
  * could create a duplicate and is forbidden.
26
28
  */
27
29
  export type BrokerFetchFailure = "no-connection" | "uncertain";
30
+ /**
31
+ * The supervisor's HTTP port, from SUPERVISOR_HTTP_PORT — the ONLY source. The
32
+ * supervisor exports it to the MCP it launches whenever its endpoint is enabled
33
+ * (ProcessManager.cs), so an unset or invalid value means no broker is
34
+ * configured for this process. There is deliberately no default port: a
35
+ * default made a process started outside the supervisor (a test, a shell)
36
+ * reach whichever live supervisor happened to own it.
37
+ */
38
+ export declare function supervisorHttpPort(): Optional<number>;
28
39
  export interface BrokerAliveResult {
29
40
  alive: boolean;
30
41
  pidFound: boolean;
@@ -216,7 +227,78 @@ export declare function brokerGetKeeperState(threadId: number): Promise<BrokerKe
216
227
  * write degrades to today's in-memory behavior, already logged at WARN by the
217
228
  * unreachable path). */
218
229
  export declare function brokerSaveKeeperState(state: BrokerKeeperState): Promise<void>;
230
+ /**
231
+ * One provider's latest usage reading, mirroring the supervisor's `UsageSnapshot`
232
+ * record. The camelCase field names ARE the frozen `/usage` JSON contract
233
+ * (spec §A.6) — do not reshape. `agentType` is a plain string (not the AgentType
234
+ * union) to keep the OCP seam open for future providers.
235
+ */
236
+ export interface BrokerUsageSnapshot {
237
+ agentType: string;
238
+ ok: boolean;
239
+ utilization5h: number | null;
240
+ reset5hAt: string | null;
241
+ utilization7d: number | null;
242
+ reset7dAt: string | null;
243
+ overageUtilization: number | null;
244
+ representativeClaim: string | null;
245
+ probedAt: string;
246
+ error: string | null;
247
+ }
248
+ /** One proactive usage window from the additive rate-limit contract. */
249
+ export interface BrokerUsageWindow {
250
+ kind: string;
251
+ used_percent: number | null;
252
+ threshold_percent: number | null;
253
+ window_minutes: number | null;
254
+ resets_at: number | null;
255
+ }
256
+ export interface BrokerRateLimitUsage {
257
+ supported: boolean;
258
+ active: boolean | null;
259
+ scope: string | null;
260
+ resets_at: number | null;
261
+ raw_reason: string | null;
262
+ }
263
+ export interface BrokerCredits {
264
+ has_credits: boolean;
265
+ unlimited: boolean;
266
+ balance: string | null;
267
+ }
268
+ /** Provider-specific limit state supplied by the supervisor. */
269
+ export interface BrokerProviderUsage {
270
+ provider: string;
271
+ captured_at: string;
272
+ source: string;
273
+ rate_limited: BrokerRateLimitUsage | null;
274
+ windows: BrokerUsageWindow[] | null;
275
+ plan: string | null;
276
+ credits: BrokerCredits | null;
277
+ }
278
+ /** Additive universal usage contract emitted alongside legacy `sources`. */
279
+ export interface BrokerUsageContract {
280
+ contract_version: number;
281
+ providers: BrokerProviderUsage[];
282
+ }
283
+ /** Full `/usage` response, retaining legacy snapshots for existing consumers. */
284
+ export interface BrokerUsageResponse {
285
+ sources: BrokerUsageSnapshot[];
286
+ contract: Optional<BrokerUsageContract>;
287
+ }
288
+ /**
289
+ * Pull the latest per-agentType usage snapshots from the supervisor (one-way IPC:
290
+ * MCP → supervisor only). Mirrors `brokerGetKeeperState` — base URL, bearer,
291
+ * timeout, and unreachable-cooldown all come from `brokerFetch`.
292
+ *
293
+ * Returns `null` on ANY failure (unreachable, non-OK status, or unparseable body):
294
+ * null means "cannot confirm", NEVER "usage is zero". Callers must treat null as
295
+ * "leave the last known state untouched" and never fabricate a zeroed snapshot.
296
+ * An inert monitor answers `{ "sources": [] }` (200) → an empty array, which is a
297
+ * confirmed "no sources", distinct from null.
298
+ */
299
+ export declare function brokerGetUsage(): Promise<BrokerUsageResponse | null>;
219
300
  /** Test hook: reset the unreachable-cooldown state. */
220
301
  export declare function resetBrokerClientState(): void;
221
302
  export declare function brokerSpawnTimeoutForTest(ms: number | null): void;
303
+ export declare function brokerTransportForTest(transport: Optional<typeof fetch>): void;
222
304
  //# sourceMappingURL=broker-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/services/broker-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/services/broker-client.ts"],"names":[],"mappings":"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"}