crewly 1.6.1 → 1.6.3

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 (367) hide show
  1. package/config/roles/orchestrator/prompt.md +16 -0
  2. package/config/skills/agent/core/get-my-active-work/SKILL.md +101 -0
  3. package/config/skills/agent/core/get-my-active-work/execute.sh +122 -0
  4. package/config/skills/agent/core/record-learning/SKILL.md +29 -0
  5. package/config/skills/agent/core/reply-channel/SKILL.md +41 -0
  6. package/config/skills/agent/core/reply-channel/execute.sh +165 -0
  7. package/config/skills/agent/core/reply-channel/execute.test.sh +148 -0
  8. package/config/skills/agent/remote-browser/execute.sh +296 -14
  9. package/config/skills/agent/remote-browser/execute.test.sh +482 -0
  10. package/config/skills/orchestrator/send-message/SKILL.md +30 -7
  11. package/config/skills/orchestrator/team-health-scan/SKILL.md +98 -0
  12. package/config/skills/orchestrator/team-health-scan/execute.sh +44 -0
  13. package/config/skills/registry.json +62 -1
  14. package/config/slack-app-manifest.json +2 -1
  15. package/config/sops/developer/git-workflow.md +38 -3
  16. package/dist/backend/backend/src/constants.d.ts +69 -1
  17. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  18. package/dist/backend/backend/src/constants.js +69 -2
  19. package/dist/backend/backend/src/constants.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts +53 -0
  21. package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -0
  22. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +92 -0
  23. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -0
  24. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
  25. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +18 -1
  26. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
  27. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +68 -0
  28. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  29. package/dist/backend/backend/src/controllers/browser/browser.controller.js +233 -5
  30. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  31. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  32. package/dist/backend/backend/src/controllers/browser/browser.routes.js +10 -1
  33. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  34. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  35. package/dist/backend/backend/src/controllers/chat/chat.controller.js +8 -3
  36. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  37. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +132 -0
  38. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -0
  39. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +401 -0
  40. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -0
  41. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +29 -0
  42. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -0
  43. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +39 -0
  44. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -0
  45. package/dist/backend/backend/src/controllers/chat-v2/index.d.ts +8 -0
  46. package/dist/backend/backend/src/controllers/chat-v2/index.d.ts.map +1 -0
  47. package/dist/backend/backend/src/controllers/chat-v2/index.js +8 -0
  48. package/dist/backend/backend/src/controllers/chat-v2/index.js.map +1 -0
  49. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +13 -13
  50. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
  51. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +74 -234
  52. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
  53. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
  54. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +76 -15
  55. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
  56. package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
  57. package/dist/backend/backend/src/controllers/request/request.controller.js +4 -6
  58. package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
  59. package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts +43 -0
  60. package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
  61. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +200 -72
  62. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  63. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/team/team.controller.js +49 -0
  65. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts +59 -0
  67. package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts.map +1 -0
  68. package/dist/backend/backend/src/controllers/team-health/team-health.controller.js +127 -0
  69. package/dist/backend/backend/src/controllers/team-health/team-health.controller.js.map +1 -0
  70. package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts +13 -0
  71. package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts.map +1 -0
  72. package/dist/backend/backend/src/controllers/team-health/team-health.routes.js +20 -0
  73. package/dist/backend/backend/src/controllers/team-health/team-health.routes.js.map +1 -0
  74. package/dist/backend/backend/src/index.d.ts +9 -0
  75. package/dist/backend/backend/src/index.d.ts.map +1 -1
  76. package/dist/backend/backend/src/index.js +233 -0
  77. package/dist/backend/backend/src/index.js.map +1 -1
  78. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  79. package/dist/backend/backend/src/routes/api.routes.js +40 -6
  80. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  81. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +498 -0
  82. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
  83. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +759 -0
  84. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
  85. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +25 -0
  86. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/agent/agent-registration.service.js +221 -58
  88. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  89. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +9 -2
  90. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +35 -2
  92. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  93. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +8 -2
  94. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +1 -0
  96. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  97. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/agent/tmux-command.service.js +2 -1
  99. package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
  100. package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/agent/tmux.service.js +2 -1
  102. package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
  103. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +148 -3
  104. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +241 -2
  106. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  107. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -0
  109. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  110. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +26 -1
  112. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
  113. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  114. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  115. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  116. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  117. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +161 -0
  118. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +382 -2
  120. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  121. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +105 -0
  122. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  123. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +232 -13
  124. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  125. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +178 -0
  126. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
  127. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +254 -0
  128. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
  129. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
  130. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
  131. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
  132. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
  133. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts +25 -0
  134. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts.map +1 -0
  135. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js +23 -0
  136. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js.map +1 -0
  137. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +254 -0
  138. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
  139. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +467 -0
  140. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
  141. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
  142. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
  143. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
  144. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
  145. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts +43 -0
  146. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts.map +1 -0
  147. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js +54 -0
  148. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js.map +1 -0
  149. package/dist/backend/backend/src/services/chat-v2/config.d.ts +100 -0
  150. package/dist/backend/backend/src/services/chat-v2/config.d.ts.map +1 -0
  151. package/dist/backend/backend/src/services/chat-v2/config.js +174 -0
  152. package/dist/backend/backend/src/services/chat-v2/config.js.map +1 -0
  153. package/dist/backend/backend/src/services/chat-v2/index.d.ts +11 -0
  154. package/dist/backend/backend/src/services/chat-v2/index.d.ts.map +1 -0
  155. package/dist/backend/backend/src/services/chat-v2/index.js +12 -0
  156. package/dist/backend/backend/src/services/chat-v2/index.js.map +1 -0
  157. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +114 -0
  158. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
  159. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +194 -0
  160. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
  161. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +100 -0
  162. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
  163. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +351 -0
  164. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
  165. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +132 -0
  166. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
  167. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +281 -0
  168. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
  169. package/dist/backend/backend/src/services/chat-v2/types.d.ts +295 -0
  170. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -0
  171. package/dist/backend/backend/src/services/chat-v2/types.js +61 -0
  172. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -0
  173. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +113 -0
  174. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +1 -0
  175. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +179 -0
  176. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +1 -0
  177. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +131 -0
  178. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +1 -0
  179. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +227 -0
  180. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +1 -0
  181. package/dist/backend/backend/src/services/core/config.service.js +3 -3
  182. package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
  183. package/dist/backend/backend/src/services/core/storage.service.d.ts +22 -0
  184. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/core/storage.service.js +57 -0
  186. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  187. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +69 -1
  188. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +118 -0
  190. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  191. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +275 -0
  192. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -0
  193. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +736 -0
  194. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -0
  195. package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -2
  197. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  198. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
  199. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +123 -29
  201. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
  203. package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
  204. package/dist/backend/backend/src/services/knowledge/learnings-index.service.js +304 -0
  205. package/dist/backend/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
  206. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  207. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +24 -4
  208. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  209. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts +174 -0
  210. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts.map +1 -0
  211. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js +375 -0
  212. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js.map +1 -0
  213. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
  214. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
  215. package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
  216. package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
  217. package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
  218. package/dist/backend/backend/src/services/memory/vector-store.service.js +19 -4
  219. package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
  220. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts +16 -5
  221. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts.map +1 -1
  222. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js +32 -5
  223. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js.map +1 -1
  224. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +157 -0
  225. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -0
  226. package/dist/backend/backend/src/services/onboarding/onboarding.service.js +229 -0
  227. package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -0
  228. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +141 -0
  229. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -0
  230. package/dist/backend/backend/src/services/onboarding/onboarding.types.js +18 -0
  231. package/dist/backend/backend/src/services/onboarding/onboarding.types.js.map +1 -0
  232. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -1
  233. package/dist/backend/backend/src/services/pr-review/pr-review.service.js +1 -1
  234. package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -1
  235. package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +17 -1
  237. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +39 -1
  239. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  240. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +158 -26
  241. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  242. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +248 -6
  243. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  244. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +531 -51
  245. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  246. package/dist/backend/backend/src/services/team-health/index.d.ts +16 -0
  247. package/dist/backend/backend/src/services/team-health/index.d.ts.map +1 -0
  248. package/dist/backend/backend/src/services/team-health/index.js +16 -0
  249. package/dist/backend/backend/src/services/team-health/index.js.map +1 -0
  250. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts +52 -0
  251. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts.map +1 -0
  252. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js +161 -0
  253. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js.map +1 -0
  254. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts +53 -0
  255. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts.map +1 -0
  256. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js +88 -0
  257. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js.map +1 -0
  258. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts +44 -0
  259. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts.map +1 -0
  260. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js +83 -0
  261. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js.map +1 -0
  262. package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts +92 -0
  263. package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts.map +1 -0
  264. package/dist/backend/backend/src/services/team-health/team-health-alert-router.js +328 -0
  265. package/dist/backend/backend/src/services/team-health/team-health-alert-router.js.map +1 -0
  266. package/dist/backend/backend/src/services/team-health/team-health-config.d.ts +41 -0
  267. package/dist/backend/backend/src/services/team-health/team-health-config.d.ts.map +1 -0
  268. package/dist/backend/backend/src/services/team-health/team-health-config.js +213 -0
  269. package/dist/backend/backend/src/services/team-health/team-health-config.js.map +1 -0
  270. package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts +46 -0
  271. package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts.map +1 -0
  272. package/dist/backend/backend/src/services/team-health/team-health-detector.js +347 -0
  273. package/dist/backend/backend/src/services/team-health/team-health-detector.js.map +1 -0
  274. package/dist/backend/backend/src/services/team-health/team-health-types.d.ts +154 -0
  275. package/dist/backend/backend/src/services/team-health/team-health-types.d.ts.map +1 -0
  276. package/dist/backend/backend/src/services/team-health/team-health-types.js +94 -0
  277. package/dist/backend/backend/src/services/team-health/team-health-types.js.map +1 -0
  278. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts +111 -0
  279. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts.map +1 -0
  280. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js +226 -0
  281. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js.map +1 -0
  282. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +148 -0
  283. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -0
  284. package/dist/backend/backend/src/services/v3/mission-reminder.service.js +545 -0
  285. package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -0
  286. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +499 -0
  287. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
  288. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +1105 -0
  289. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
  290. package/dist/backend/backend/src/services/v3/request.service.d.ts +22 -0
  291. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/v3/request.service.js +71 -0
  293. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +1 -0
  295. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/v3/v3-data.service.js +22 -6
  297. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  298. package/dist/backend/backend/src/types/event-bus.types.d.ts +19 -1
  299. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  300. package/dist/backend/backend/src/types/event-bus.types.js +43 -0
  301. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  302. package/dist/backend/backend/src/types/index.d.ts +22 -1
  303. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  304. package/dist/backend/backend/src/types/index.js.map +1 -1
  305. package/dist/backend/backend/src/types/review-reason.types.d.ts +63 -0
  306. package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -0
  307. package/dist/backend/backend/src/types/review-reason.types.js +50 -0
  308. package/dist/backend/backend/src/types/review-reason.types.js.map +1 -0
  309. package/dist/backend/backend/src/types/slack.types.d.ts +4 -1
  310. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  311. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  312. package/dist/backend/backend/src/types/v2/mission.types.d.ts +18 -0
  313. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  314. package/dist/backend/backend/src/types/v2/mission.types.js +1 -0
  315. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  316. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  317. package/dist/backend/backend/src/types/v2/work-item.types.js +25 -1
  318. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  319. package/dist/backend/backend/src/utils/team.utils.d.ts +38 -0
  320. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -0
  321. package/dist/backend/backend/src/utils/team.utils.js +45 -0
  322. package/dist/backend/backend/src/utils/team.utils.js.map +1 -0
  323. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +195 -0
  324. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -0
  325. package/dist/backend/backend/src/websocket/chat-v2.gateway.js +401 -0
  326. package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -0
  327. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +37 -2
  328. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  329. package/dist/backend/backend/src/websocket/terminal.gateway.js +106 -5
  330. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  331. package/dist/cli/backend/src/constants.d.ts +69 -1
  332. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  333. package/dist/cli/backend/src/constants.js +69 -2
  334. package/dist/cli/backend/src/constants.js.map +1 -1
  335. package/dist/cli/backend/src/services/core/config.service.js +3 -3
  336. package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
  337. package/dist/cli/backend/src/services/core/storage.service.d.ts +22 -0
  338. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  339. package/dist/cli/backend/src/services/core/storage.service.js +57 -0
  340. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  341. package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  342. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -2
  343. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  344. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
  345. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  346. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +123 -29
  347. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  348. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  349. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +24 -4
  350. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  351. package/dist/cli/backend/src/types/index.d.ts +22 -1
  352. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  353. package/dist/cli/backend/src/types/index.js.map +1 -1
  354. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  355. package/dist/cli/backend/src/types/v2/work-item.types.js +25 -1
  356. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  357. package/frontend/dist/assets/{index-70356616.js → index-7a4e7df5.js} +328 -326
  358. package/frontend/dist/assets/index-b7e59b2b.css +33 -0
  359. package/frontend/dist/index.html +2 -2
  360. package/package.json +2 -1
  361. package/config/skills/orchestrator/recall/SKILL.md +0 -47
  362. package/config/skills/orchestrator/recall/execute.sh +0 -13
  363. package/config/skills/orchestrator/record-learning/SKILL.md +0 -47
  364. package/config/skills/orchestrator/record-learning/execute.sh +0 -13
  365. package/config/skills/orchestrator/remember/SKILL.md +0 -55
  366. package/config/skills/orchestrator/remember/execute.sh +0 -15
  367. package/frontend/dist/assets/index-6aaa0630.css +0 -33
@@ -82,9 +82,9 @@ export async function sendMessage(req, res, next) {
82
82
  priority: 'normal',
83
83
  tags: ['chat-ui'],
84
84
  });
85
- // Set active request for RequestTracker time-window correlation
86
- const { RequestTracker } = await import('../../services/v3/request-tracker.service.js');
87
- RequestTracker.getInstance().setActiveRequest(request.id);
85
+ // P2-2: RequestTracker.setActiveRequest write removed. The
86
+ // companion read in v3-data.service.ts no longer falls back to
87
+ // time-window correlation, so writing here would be dead code.
88
88
  logger.debug('V3 Request created from chat message', { messageId: result.message.id, requestId: request.id });
89
89
  }
90
90
  }
@@ -375,6 +375,11 @@ export async function agentResponse(req, res, next) {
375
375
  channelId: threads[0].channelId,
376
376
  threadTs: threads[0].threadTs,
377
377
  });
378
+ // If a pending reaction was stored when the message arrived
379
+ // (orchestrator-routed path sets a 👀 on the trigger message),
380
+ // flip it to ✅ now that the agent reply has been delivered.
381
+ // No-op when there's no pending entry for this thread.
382
+ await bridge.addCompletionReaction(threads[0].channelId, threads[0].threadTs);
378
383
  }
379
384
  }
380
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * HTTP controller for Phase 1 Chat endpoints.
3
+ *
4
+ * Thin layer: parses + validates requests, delegates to `ChatV2Service`,
5
+ * and maps `ChatError` to HTTP responses. All routes are owner-scoped via
6
+ * `requireAuth` middleware; the principal is lifted from `req.user`.
7
+ *
8
+ * Wiring hooks (all optional — omit for tests that only need REST):
9
+ * - `gateway.broadcast(channelId, frame)` — after successful persist,
10
+ * the controller fans a `message` frame out to WS subscribers so the
11
+ * sending client's WS re-broadcasts reconcile with its HTTP-201 echo.
12
+ * - `dispatcher.dispatchToAgent(channel, message)` — fires when a USER
13
+ * message lands, pushing the text into the bound agent's runtime. The
14
+ * agent replies via the `reply-channel` skill, which re-enters this
15
+ * same endpoint with an `X-Crewly-Agent-Session` header.
16
+ *
17
+ * @module controllers/chat-v2/chat-v2.controller
18
+ */
19
+ import type { Request, Response } from 'express';
20
+ import type { ChatV2Service } from '../../services/chat-v2/chat-v2.service.js';
21
+ import type { ChatV2DispatcherService } from '../../services/chat-v2/chat-v2.dispatcher.service.js';
22
+ import type { ChatV2Gateway } from '../../websocket/chat-v2.gateway.js';
23
+ import { ChatError, type ChatChannelDTO, type ChatMessageDTO, type ChatPrincipal } from '../../services/chat-v2/types.js';
24
+ /**
25
+ * Build the service-level principal from the authenticated request.
26
+ *
27
+ * Honors an optional `X-Crewly-Agent-Session` header — the `reply-channel`
28
+ * skill sets this so the service-layer `resolveSender` returns senderType
29
+ * `agent` instead of `user`. The header is only honored when the request
30
+ * has already passed `requireAuth` (i.e. a trusted bearer), because the
31
+ * service still verifies that `principal.agentSession` matches the
32
+ * channel's bound `agent_session` before marking a message as an agent
33
+ * reply.
34
+ *
35
+ * For Phase 1 the bearer used by the skill is the same OSS session token
36
+ * the owner uses — the agent runs locally on the user's machine. Signed
37
+ * per-agent tokens arrive in Phase 2.
38
+ */
39
+ export declare function principalFromRequest(req: Request): ChatPrincipal;
40
+ /** Serialize a `ChatError` into the canonical wire shape. */
41
+ export declare function sendChatError(res: Response, err: ChatError): void;
42
+ /** Fallback 500 responder for unknown failures. */
43
+ export declare function sendInternalError(res: Response, err: unknown): void;
44
+ /** Thin wrapper that catches ChatError → 4xx and anything else → 500. */
45
+ export declare function runHandler<T>(res: Response, run: () => T): T | undefined;
46
+ /**
47
+ * Build the canonical chat-v2 sourceConversationItemId so the
48
+ * `RequestSlaSubscriber` can dedupe + extract channel/message ids the
49
+ * same way it does for Slack (`slack-${channelId}-${ts}`).
50
+ *
51
+ * Shape: `chatv2-${channelId}__${messageId}`. The inter-field delimiter
52
+ * is the double underscore `__` rather than a single dash because
53
+ * `channel.store.ts:86` and `message.store.ts:165` mint ids via
54
+ * `randomUUID()` (4 dashes embedded in each id). A single-dash
55
+ * delimiter collides with the embedded UUID dashes and corrupts the
56
+ * round-trip — see Arch's review on PR #364 / INBOUND-2.f1.
57
+ * UUIDs are hex digits + dashes only and cannot contain `_`, so `__`
58
+ * is collision-free against any current or future hex-shaped id.
59
+ *
60
+ * @param channelId - Persisted chat-v2 channel id (UUIDv4 in production)
61
+ * @param messageId - Persisted chat-v2 message id (UUIDv4 in production)
62
+ * @returns The composite source id, e.g.
63
+ * `chatv2-8b3c9a4e-5a02-4d51-9e7a-6f8c4d2e8a1b__fa1e2c3d-4567-89ab-cdef-0123456789ab`
64
+ */
65
+ export declare function buildChatV2SourceId(channelId: string, messageId: string): string;
66
+ /**
67
+ * INBOUND-2: decide whether a chat-v2 channel routes user messages to the
68
+ * orchestrator. v1 scope = `type='dm'` channels whose `agentSession`
69
+ * field is the orchestrator session. `type='channel'` (team-scoped) is
70
+ * excluded — the SLA path expects the WI target to be the orchestrator
71
+ * and team-channels haven't yet defined an orc-tagged routing concept
72
+ * (see INBOUND-2 task spec, escalation note "no orc-tagged channels yet").
73
+ *
74
+ * Exported so tests can lock the scope without relying on private state.
75
+ *
76
+ * @param channel - The channel DTO returned by `service.getChannel`.
77
+ * @returns True iff the channel routes to the orchestrator.
78
+ */
79
+ export declare function isOrchestratorRoutedChatV2Channel(channel: ChatChannelDTO): boolean;
80
+ /**
81
+ * Fire-and-forget: if a USER-origin chat-v2 message lands in a channel
82
+ * routed to the orc, register a V3 Request so the
83
+ * `RequestSlaSubscriber` (INBOUND-1) can attach a respond_to_user
84
+ * WorkItem with the 5/10min SLA timers.
85
+ *
86
+ * Mirrors the Slack pattern at
87
+ * `slack-orchestrator-bridge.ts:367-395`. Errors are swallowed and
88
+ * logged at warn-level inside the lazy import — Request creation is
89
+ * non-critical to the chat ack.
90
+ *
91
+ * @param channel - The persisted channel (provides type + agentSession)
92
+ * @param message - The persisted user message (provides id + content)
93
+ */
94
+ export declare function emitChatV2RequestCreated(channel: ChatChannelDTO, message: ChatMessageDTO): void;
95
+ /**
96
+ * Fire-and-forget: when an AGENT-origin chat-v2 message lands in a
97
+ * channel that may have an outstanding `respond_to_user` WI tracked by
98
+ * the SLA subscriber, mark it resolved (transitions the WI to `done`,
99
+ * silences the breach + escalation timers).
100
+ *
101
+ * Safe to call for any agent-origin message — `markResolvedByChatV2` is
102
+ * a no-op when the channel isn't tracked.
103
+ *
104
+ * @param message - The persisted message (only agent-origin is acted on)
105
+ */
106
+ export declare function notifyChatV2AgentReply(message: ChatMessageDTO): void;
107
+ /** Express handlers returned by `createChatV2Controller`. */
108
+ export interface ChatV2ControllerHandlers {
109
+ listChannels: (req: Request, res: Response) => void;
110
+ createChannel: (req: Request, res: Response) => void;
111
+ getChannel: (req: Request, res: Response) => void;
112
+ archiveChannel: (req: Request, res: Response) => void;
113
+ listMessages: (req: Request, res: Response) => void;
114
+ sendMessage: (req: Request, res: Response) => void | Promise<void>;
115
+ }
116
+ /**
117
+ * Optional wiring for real-time fan-out + agent dispatch. Leave undefined
118
+ * in REST-only tests; supply both in the live server.
119
+ */
120
+ export interface ChatV2ControllerDeps {
121
+ gateway?: ChatV2Gateway;
122
+ dispatcher?: ChatV2DispatcherService;
123
+ }
124
+ /**
125
+ * Build Express-compatible handlers for the chat-v2 endpoints.
126
+ *
127
+ * @param service - A configured ChatV2Service
128
+ * @param deps - Optional gateway/dispatcher for realtime wiring
129
+ * @returns One handler per endpoint; wire into an Express Router
130
+ */
131
+ export declare function createChatV2Controller(service: ChatV2Service, deps?: ChatV2ControllerDeps): ChatV2ControllerHandlers;
132
+ //# sourceMappingURL=chat-v2.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-v2.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat-v2/chat-v2.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAIxE,OAAO,EAEL,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAMzC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAiBhE;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CASjE;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CASnE;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAWxE;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAIlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,GACtB,IAAI,CAyBN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAepE;AAMD,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClD,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,oBAAyB,GAC9B,wBAAwB,CA2M1B"}
@@ -0,0 +1,401 @@
1
+ /**
2
+ * HTTP controller for Phase 1 Chat endpoints.
3
+ *
4
+ * Thin layer: parses + validates requests, delegates to `ChatV2Service`,
5
+ * and maps `ChatError` to HTTP responses. All routes are owner-scoped via
6
+ * `requireAuth` middleware; the principal is lifted from `req.user`.
7
+ *
8
+ * Wiring hooks (all optional — omit for tests that only need REST):
9
+ * - `gateway.broadcast(channelId, frame)` — after successful persist,
10
+ * the controller fans a `message` frame out to WS subscribers so the
11
+ * sending client's WS re-broadcasts reconcile with its HTTP-201 echo.
12
+ * - `dispatcher.dispatchToAgent(channel, message)` — fires when a USER
13
+ * message lands, pushing the text into the bound agent's runtime. The
14
+ * agent replies via the `reply-channel` skill, which re-enters this
15
+ * same endpoint with an `X-Crewly-Agent-Session` header.
16
+ *
17
+ * @module controllers/chat-v2/chat-v2.controller
18
+ */
19
+ import { buildMessageEvent } from '../../websocket/chat-v2.gateway.js';
20
+ import { getChatV2RealtimeDeps } from '../../services/chat-v2/chat-v2.realtime-holder.js';
21
+ import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
22
+ import { CHAT_ERROR_CODES, ChatError, } from '../../services/chat-v2/types.js';
23
+ // ---------------------------------------------------------------------------
24
+ // Helpers
25
+ // ---------------------------------------------------------------------------
26
+ /**
27
+ * Build the service-level principal from the authenticated request.
28
+ *
29
+ * Honors an optional `X-Crewly-Agent-Session` header — the `reply-channel`
30
+ * skill sets this so the service-layer `resolveSender` returns senderType
31
+ * `agent` instead of `user`. The header is only honored when the request
32
+ * has already passed `requireAuth` (i.e. a trusted bearer), because the
33
+ * service still verifies that `principal.agentSession` matches the
34
+ * channel's bound `agent_session` before marking a message as an agent
35
+ * reply.
36
+ *
37
+ * For Phase 1 the bearer used by the skill is the same OSS session token
38
+ * the owner uses — the agent runs locally on the user's machine. Signed
39
+ * per-agent tokens arrive in Phase 2.
40
+ */
41
+ export function principalFromRequest(req) {
42
+ const user = req.user;
43
+ if (!user?.userId) {
44
+ throw new ChatError(CHAT_ERROR_CODES.FORBIDDEN, 401, 'Authentication required');
45
+ }
46
+ // `X-Agent-Session` is the header the shared skills `_common/lib.sh`
47
+ // already attaches to every API call (`CREWLY_SESSION_NAME`). Reusing it
48
+ // means the `reply-channel` skill works with no extra wiring — it just
49
+ // calls `api_call POST /chat/channels/:id/messages ...`.
50
+ const hdr = req.headers['x-agent-session'] ?? req.headers['x-crewly-agent-session'];
51
+ const agentSession = typeof hdr === 'string' && hdr.length > 0 ? hdr : undefined;
52
+ return {
53
+ userId: user.userId,
54
+ agentSession,
55
+ source: 'oss',
56
+ };
57
+ }
58
+ /** Serialize a `ChatError` into the canonical wire shape. */
59
+ export function sendChatError(res, err) {
60
+ res.status(err.httpStatus).json({
61
+ success: false,
62
+ error: {
63
+ code: err.code,
64
+ message: err.message,
65
+ details: err.details,
66
+ },
67
+ });
68
+ }
69
+ /** Fallback 500 responder for unknown failures. */
70
+ export function sendInternalError(res, err) {
71
+ const msg = err instanceof Error ? err.message : String(err);
72
+ res.status(500).json({
73
+ success: false,
74
+ error: {
75
+ code: CHAT_ERROR_CODES.INTERNAL,
76
+ message: `Internal error: ${msg}`,
77
+ },
78
+ });
79
+ }
80
+ /** Thin wrapper that catches ChatError → 4xx and anything else → 500. */
81
+ export function runHandler(res, run) {
82
+ try {
83
+ return run();
84
+ }
85
+ catch (err) {
86
+ if (err instanceof ChatError) {
87
+ sendChatError(res, err);
88
+ }
89
+ else {
90
+ sendInternalError(res, err);
91
+ }
92
+ return undefined;
93
+ }
94
+ }
95
+ // ---------------------------------------------------------------------------
96
+ // INBOUND-2 helpers — V3 Request + SLA hooks for chat-v2 ingress
97
+ // ---------------------------------------------------------------------------
98
+ /**
99
+ * Build the canonical chat-v2 sourceConversationItemId so the
100
+ * `RequestSlaSubscriber` can dedupe + extract channel/message ids the
101
+ * same way it does for Slack (`slack-${channelId}-${ts}`).
102
+ *
103
+ * Shape: `chatv2-${channelId}__${messageId}`. The inter-field delimiter
104
+ * is the double underscore `__` rather than a single dash because
105
+ * `channel.store.ts:86` and `message.store.ts:165` mint ids via
106
+ * `randomUUID()` (4 dashes embedded in each id). A single-dash
107
+ * delimiter collides with the embedded UUID dashes and corrupts the
108
+ * round-trip — see Arch's review on PR #364 / INBOUND-2.f1.
109
+ * UUIDs are hex digits + dashes only and cannot contain `_`, so `__`
110
+ * is collision-free against any current or future hex-shaped id.
111
+ *
112
+ * @param channelId - Persisted chat-v2 channel id (UUIDv4 in production)
113
+ * @param messageId - Persisted chat-v2 message id (UUIDv4 in production)
114
+ * @returns The composite source id, e.g.
115
+ * `chatv2-8b3c9a4e-5a02-4d51-9e7a-6f8c4d2e8a1b__fa1e2c3d-4567-89ab-cdef-0123456789ab`
116
+ */
117
+ export function buildChatV2SourceId(channelId, messageId) {
118
+ return `chatv2-${channelId}__${messageId}`;
119
+ }
120
+ /**
121
+ * INBOUND-2: decide whether a chat-v2 channel routes user messages to the
122
+ * orchestrator. v1 scope = `type='dm'` channels whose `agentSession`
123
+ * field is the orchestrator session. `type='channel'` (team-scoped) is
124
+ * excluded — the SLA path expects the WI target to be the orchestrator
125
+ * and team-channels haven't yet defined an orc-tagged routing concept
126
+ * (see INBOUND-2 task spec, escalation note "no orc-tagged channels yet").
127
+ *
128
+ * Exported so tests can lock the scope without relying on private state.
129
+ *
130
+ * @param channel - The channel DTO returned by `service.getChannel`.
131
+ * @returns True iff the channel routes to the orchestrator.
132
+ */
133
+ export function isOrchestratorRoutedChatV2Channel(channel) {
134
+ if (channel.type !== 'dm')
135
+ return false;
136
+ if (!channel.agentSession)
137
+ return false;
138
+ return channel.agentSession === ORCHESTRATOR_SESSION_NAME;
139
+ }
140
+ /**
141
+ * Fire-and-forget: if a USER-origin chat-v2 message lands in a channel
142
+ * routed to the orc, register a V3 Request so the
143
+ * `RequestSlaSubscriber` (INBOUND-1) can attach a respond_to_user
144
+ * WorkItem with the 5/10min SLA timers.
145
+ *
146
+ * Mirrors the Slack pattern at
147
+ * `slack-orchestrator-bridge.ts:367-395`. Errors are swallowed and
148
+ * logged at warn-level inside the lazy import — Request creation is
149
+ * non-critical to the chat ack.
150
+ *
151
+ * @param channel - The persisted channel (provides type + agentSession)
152
+ * @param message - The persisted user message (provides id + content)
153
+ */
154
+ export function emitChatV2RequestCreated(channel, message) {
155
+ if (message.senderType !== 'user')
156
+ return;
157
+ if (!isOrchestratorRoutedChatV2Channel(channel))
158
+ return;
159
+ setImmediate(async () => {
160
+ try {
161
+ const { RequestService } = await import('../../services/v3/request.service.js');
162
+ const svc = RequestService.getInstance();
163
+ const sourceId = buildChatV2SourceId(channel.id, message.id);
164
+ const existing = await svc.findBySourceConversationItemId(sourceId);
165
+ if (existing)
166
+ return;
167
+ const { generateRequestTitle } = await import('../../services/v3/v3-data.service.js');
168
+ const rawText = message.content || '';
169
+ await svc.create({
170
+ title: generateRequestTitle(rawText, 'other'),
171
+ description: rawText,
172
+ sourceConversationItemId: sourceId,
173
+ priority: 'normal',
174
+ tags: ['chat-v2'],
175
+ });
176
+ }
177
+ catch {
178
+ // Non-critical — Request creation failure must not break chat send.
179
+ }
180
+ });
181
+ }
182
+ /**
183
+ * Fire-and-forget: when an AGENT-origin chat-v2 message lands in a
184
+ * channel that may have an outstanding `respond_to_user` WI tracked by
185
+ * the SLA subscriber, mark it resolved (transitions the WI to `done`,
186
+ * silences the breach + escalation timers).
187
+ *
188
+ * Safe to call for any agent-origin message — `markResolvedByChatV2` is
189
+ * a no-op when the channel isn't tracked.
190
+ *
191
+ * @param message - The persisted message (only agent-origin is acted on)
192
+ */
193
+ export function notifyChatV2AgentReply(message) {
194
+ if (message.senderType !== 'agent')
195
+ return;
196
+ setImmediate(async () => {
197
+ try {
198
+ const { getRequestSlaSubscriber } = await import('../../services/v3/request-sla.subscriber.js');
199
+ const sub = getRequestSlaSubscriber();
200
+ if (!sub)
201
+ return;
202
+ await sub.markResolvedByChatV2(message.channelId);
203
+ }
204
+ catch {
205
+ // Non-critical — auto-resolve failure must not break chat send.
206
+ }
207
+ });
208
+ }
209
+ /**
210
+ * Build Express-compatible handlers for the chat-v2 endpoints.
211
+ *
212
+ * @param service - A configured ChatV2Service
213
+ * @param deps - Optional gateway/dispatcher for realtime wiring
214
+ * @returns One handler per endpoint; wire into an Express Router
215
+ */
216
+ export function createChatV2Controller(service, deps = {}) {
217
+ // Deps resolve in this order:
218
+ // 1. explicit argument (tests + the realtime-aware router)
219
+ // 2. process-wide realtime holder (populated by server start-up)
220
+ // Falling back to the holder means the router can be mounted before the
221
+ // gateway is live, and picks up realtime deps once they register.
222
+ const resolveDeps = () => {
223
+ if (deps.gateway || deps.dispatcher)
224
+ return deps;
225
+ const live = getChatV2RealtimeDeps();
226
+ return {
227
+ gateway: live.gateway ?? deps.gateway,
228
+ dispatcher: live.dispatcher ?? deps.dispatcher,
229
+ };
230
+ };
231
+ return {
232
+ listChannels: (req, res) => runHandler(res, () => {
233
+ const principal = principalFromRequest(req);
234
+ const includeArchived = req.query.includeArchived === 'true';
235
+ const limitRaw = req.query.limit;
236
+ const limit = typeof limitRaw === 'string' ? Number.parseInt(limitRaw, 10) : undefined;
237
+ // Phase C — channel-rail listing refinements.
238
+ // `type` and `teamId` query params let the rail fetch a focused
239
+ // slice (e.g. only DMs, or only channels in the active workspace)
240
+ // without shipping the full owner-scoped list. Both are optional
241
+ // and compose with AND. Service-layer rejects unknown `type`
242
+ // values with `validation_error`; we forward as-is so the caller
243
+ // gets a precise error message.
244
+ const typeRaw = req.query.type;
245
+ const type = typeof typeRaw === 'string' && typeRaw.length > 0 ? typeRaw : undefined;
246
+ const teamIdRaw = req.query.teamId;
247
+ const teamId = typeof teamIdRaw === 'string' && teamIdRaw.length > 0 ? teamIdRaw : undefined;
248
+ const channels = service.listChannels({
249
+ principal,
250
+ includeArchived,
251
+ limit: Number.isFinite(limit) ? limit : undefined,
252
+ type: type,
253
+ teamId,
254
+ });
255
+ res.json({ success: true, data: { channels, nextCursor: null } });
256
+ }),
257
+ createChannel: (req, res) => runHandler(res, () => {
258
+ const principal = principalFromRequest(req);
259
+ const body = req.body ?? {};
260
+ const channel = service.createChannel({
261
+ agentSession: body.agentSession,
262
+ name: body.name,
263
+ purpose: body.purpose,
264
+ principal,
265
+ // Phase A (SEALED §3.1) — Slack-like channel surfaces. Service
266
+ // layer validates the type↔teamId↔targetMemberId combinations.
267
+ type: body.type,
268
+ teamId: body.teamId,
269
+ projectId: body.projectId,
270
+ targetMemberId: body.targetMemberId,
271
+ });
272
+ res.status(201).json({ success: true, data: channel });
273
+ }),
274
+ getChannel: (req, res) => runHandler(res, () => {
275
+ const principal = principalFromRequest(req);
276
+ const channel = service.getChannel(req.params.id, principal);
277
+ res.json({ success: true, data: channel });
278
+ }),
279
+ archiveChannel: (req, res) => runHandler(res, () => {
280
+ const principal = principalFromRequest(req);
281
+ service.archiveChannel(req.params.id, principal);
282
+ res.status(204).end();
283
+ }),
284
+ listMessages: (req, res) => runHandler(res, () => {
285
+ const principal = principalFromRequest(req);
286
+ const cursor = typeof req.query.cursor === 'string' ? req.query.cursor : null;
287
+ const limitRaw = req.query.limit;
288
+ const limit = typeof limitRaw === 'string' ? Number.parseInt(limitRaw, 10) : undefined;
289
+ const directionRaw = req.query.direction;
290
+ const direction = directionRaw === 'forward' ? 'forward' : 'backward';
291
+ const result = service.listMessages({
292
+ channelId: req.params.id,
293
+ principal,
294
+ cursor,
295
+ limit: Number.isFinite(limit) ? limit : undefined,
296
+ direction,
297
+ });
298
+ res.json({ success: true, data: result });
299
+ }),
300
+ /**
301
+ * POST /channels/:id/messages
302
+ *
303
+ * Order of operations:
304
+ * 1. Persist via `ChatV2Service.sendMessage` (resolves senderType from
305
+ * `principal.agentSession` — set by the `X-Crewly-Agent-Session`
306
+ * header when the agent's `reply-channel` skill is the caller).
307
+ * 2. Send HTTP 201 with the DTO (the contract-locked ack — clients
308
+ * reconcile optimistic pending bubbles by `clientMessageId`).
309
+ * 3. Broadcast a WS `message` frame so peer subscribers of the same
310
+ * channel see the row. Idempotent on the client — reconciliation
311
+ * dedupes by `clientMessageId` first, then by `id`.
312
+ * 4. If the message is USER-origin, kick the dispatcher to push the
313
+ * text into the agent session. Agent-origin messages skip this
314
+ * step to avoid self-loopback.
315
+ *
316
+ * Steps 3 + 4 are fire-and-forget: they run after `res.status(201)` so
317
+ * a broken WS / missing agent never blocks the HTTP ack.
318
+ */
319
+ sendMessage: async (req, res) => {
320
+ // Persist + 201 — on error, runHandler serializes it and we bail
321
+ // without running any post-ack side-effects. On success, the
322
+ // closure populates `persisted` + `channelForDispatch`.
323
+ let persisted;
324
+ let channelForDispatch = null;
325
+ runHandler(res, () => {
326
+ const principal = principalFromRequest(req);
327
+ const body = req.body ?? {};
328
+ if (Array.isArray(body.attachments) && body.attachments.length > 0) {
329
+ throw new ChatError(CHAT_ERROR_CODES.VALIDATION, 400, 'attachments are not yet supported on this endpoint');
330
+ }
331
+ const message = service.sendMessage({
332
+ channelId: req.params.id,
333
+ principal,
334
+ content: body.content,
335
+ contentType: body.contentType,
336
+ clientMessageId: body.clientMessageId,
337
+ attachments: [],
338
+ // Phase A (SEALED §3.2) — mentions + threadId are forwarded to
339
+ // the service which validates and persists them.
340
+ mentions: body.mentions,
341
+ threadId: body.threadId,
342
+ });
343
+ res.status(201).json({ success: true, data: message });
344
+ persisted = message;
345
+ // Look up channel for gateway + dispatcher wiring. `getChannel`
346
+ // requires `principal.userId === channel.owner_user_id` — which
347
+ // matches both the normal user case and the agent-reply case
348
+ // (the agent's principal inherits the owner's userId in Phase 1).
349
+ try {
350
+ channelForDispatch = service.getChannel(message.channelId, {
351
+ userId: principal.userId,
352
+ source: principal.source,
353
+ });
354
+ }
355
+ catch {
356
+ channelForDispatch = null;
357
+ }
358
+ });
359
+ // If `persisted` is still undefined, runHandler already serialized an
360
+ // error response — skip the realtime fan-out.
361
+ if (!persisted)
362
+ return;
363
+ // -------- post-ack realtime side-effects --------
364
+ const { gateway, dispatcher } = resolveDeps();
365
+ try {
366
+ if (gateway && channelForDispatch) {
367
+ gateway.broadcast(persisted.channelId, buildMessageEvent(persisted.channelId, persisted));
368
+ }
369
+ }
370
+ catch {
371
+ // broadcast must never break the ack
372
+ }
373
+ try {
374
+ if (dispatcher && channelForDispatch && persisted.senderType === 'user') {
375
+ // Phase C BE.3 — single high-level entry point that branches
376
+ // on `channel.type` internally:
377
+ // `type='dm'` → 1:1 dispatch via dispatchToAgent (legacy)
378
+ // `type='channel'`→ resolve `mentions[]` → fan-out per target
379
+ // Fire-and-forget — already past the HTTP ack at this point.
380
+ void dispatcher.dispatchMessage(channelForDispatch, persisted);
381
+ }
382
+ }
383
+ catch {
384
+ // dispatcher must never break the ack
385
+ }
386
+ // INBOUND-2 — V3 Request + SLA-tracking hooks. Mirrors the Slack
387
+ // ingress pattern at slack-orchestrator-bridge.ts:367-395.
388
+ // Fire-and-forget; failures are isolated inside the helpers.
389
+ try {
390
+ if (channelForDispatch) {
391
+ emitChatV2RequestCreated(channelForDispatch, persisted);
392
+ }
393
+ notifyChatV2AgentReply(persisted);
394
+ }
395
+ catch {
396
+ // INBOUND-2 hooks must never break the ack
397
+ }
398
+ },
399
+ };
400
+ }
401
+ //# sourceMappingURL=chat-v2.controller.js.map