crewly 1.6.5 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/config/constants.ts +2 -0
  2. package/config/roles/auditor/prompt.md +24 -0
  3. package/config/roles/developer/prompt.md +2 -1
  4. package/config/roles/orchestrator/prompt.md +118 -2
  5. package/config/roles/team-leader/prompt.md +6 -0
  6. package/config/skills/agent/core/create-request/SKILL.md +1 -1
  7. package/config/skills/agent/core/create-request/execute.sh +29 -2
  8. package/config/skills/agent/core/create-request/execute.test.sh +168 -0
  9. package/config/skills/agent/core/report-status/SKILL.md +8 -1
  10. package/config/skills/agent/core/report-status/execute.sh +23 -1
  11. package/config/skills/orchestrator/heartbeat/execute.sh +48 -6
  12. package/config/sops/common/mid-flight-milestone-surface.md +128 -0
  13. package/config/sops/common/owner-facing-communication.md +46 -2
  14. package/config/sops/developer/git-workflow.md +33 -0
  15. package/dist/backend/backend/src/constants.d.ts +13 -0
  16. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  17. package/dist/backend/backend/src/constants.js +12 -0
  18. package/dist/backend/backend/src/constants.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/browser/browser.controller.js +2 -2
  20. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/chat/chat.controller.js +6 -0
  23. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +73 -0
  25. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +128 -0
  27. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +3 -0
  29. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +8 -0
  31. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  33. package/dist/backend/backend/src/controllers/session/session.controller.js +50 -8
  34. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  35. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/slack/slack.controller.js +215 -94
  37. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  39. package/dist/backend/backend/src/controllers/team/team.controller.js +27 -0
  40. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  41. package/dist/backend/backend/src/index.d.ts +1 -0
  42. package/dist/backend/backend/src/index.d.ts.map +1 -1
  43. package/dist/backend/backend/src/index.js +201 -37
  44. package/dist/backend/backend/src/index.js.map +1 -1
  45. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  46. package/dist/backend/backend/src/routes/api.routes.js +11 -1
  47. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  48. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +45 -3
  49. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/agent/agent-registration.service.js +219 -7
  51. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +61 -1
  53. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +117 -9
  55. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
  56. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +44 -0
  57. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +179 -10
  59. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +6 -6
  61. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +3 -3
  63. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -1
  64. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +7 -1
  65. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  67. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +33 -0
  68. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/agent/idle-detection.service.js +108 -4
  70. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  71. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +4 -4
  72. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  73. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +1 -1
  74. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +40 -2
  76. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/chat/chat.service.d.ts +48 -331
  78. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/chat/chat.service.js +261 -712
  80. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +82 -1
  82. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +120 -2
  84. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +114 -0
  86. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -0
  87. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +182 -0
  88. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -0
  89. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts +188 -0
  90. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -0
  91. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +434 -0
  92. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -0
  93. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +401 -5
  94. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +619 -3
  96. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  97. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +93 -0
  98. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  99. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +138 -0
  100. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  101. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +46 -0
  102. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +75 -0
  104. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  105. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +10 -2
  106. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +178 -10
  108. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  109. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +37 -0
  110. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +71 -0
  112. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  113. package/dist/backend/backend/src/services/chat-v2/types.d.ts +33 -1
  114. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/chat-v2/types.js +1 -1
  116. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  117. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +22 -0
  118. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +71 -1
  120. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  121. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +102 -1
  122. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  123. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +61 -0
  124. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  125. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +21 -3
  126. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +47 -13
  128. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -1
  129. package/dist/backend/backend/src/services/core/system-health.util.d.ts +25 -4
  130. package/dist/backend/backend/src/services/core/system-health.util.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/core/system-health.util.js +30 -5
  132. package/dist/backend/backend/src/services/core/system-health.util.js.map +1 -1
  133. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +22 -11
  135. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  136. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  137. package/dist/backend/backend/src/services/mcp-server.js +5 -0
  138. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  139. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts +4 -0
  140. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/mcp-tool-definitions.js +12 -1
  142. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
  143. package/dist/backend/backend/src/services/memory/capability-inference.d.ts +73 -0
  144. package/dist/backend/backend/src/services/memory/capability-inference.d.ts.map +1 -0
  145. package/dist/backend/backend/src/services/memory/capability-inference.js +115 -0
  146. package/dist/backend/backend/src/services/memory/capability-inference.js.map +1 -0
  147. package/dist/backend/backend/src/services/memory/memory.service.d.ts +22 -1
  148. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/memory/memory.service.js +81 -3
  150. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  151. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +25 -1
  152. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/memory/project-memory.service.js +43 -0
  154. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/memory/task-history-seeder.d.ts +47 -0
  156. package/dist/backend/backend/src/services/memory/task-history-seeder.d.ts.map +1 -0
  157. package/dist/backend/backend/src/services/memory/task-history-seeder.js +89 -0
  158. package/dist/backend/backend/src/services/memory/task-history-seeder.js.map +1 -0
  159. package/dist/backend/backend/src/services/memory/task-history.subscriber.d.ts +76 -0
  160. package/dist/backend/backend/src/services/memory/task-history.subscriber.d.ts.map +1 -0
  161. package/dist/backend/backend/src/services/memory/task-history.subscriber.js +199 -0
  162. package/dist/backend/backend/src/services/memory/task-history.subscriber.js.map +1 -0
  163. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +2 -4
  164. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -1
  165. package/dist/backend/backend/src/services/messaging/message-replay.service.js +22 -12
  166. package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -1
  167. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  168. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +25 -5
  169. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  170. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +13 -3
  172. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
  173. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts +99 -0
  174. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts.map +1 -0
  175. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js +225 -0
  176. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js.map +1 -0
  177. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +39 -18
  178. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  179. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +60 -32
  180. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  181. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +134 -0
  182. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  183. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +416 -13
  184. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  185. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +73 -7
  187. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/session/session-handoff.service.js +30 -4
  190. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  191. package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/skill/skill-executor.service.js +13 -1
  193. package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  195. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +9 -6
  196. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  197. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +21 -2
  198. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  199. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +120 -46
  200. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  201. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  202. package/dist/backend/backend/src/services/slack/slack.service.js +49 -0
  203. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  204. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
  205. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  206. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +160 -8
  207. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  208. package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
  209. package/dist/backend/backend/src/services/v3/cascade-request-status.js +55 -2
  210. package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
  211. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  212. package/dist/backend/backend/src/services/v3/mission-executor.service.js +9 -1
  213. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  214. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  215. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +28 -3
  216. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  217. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  218. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +5 -2
  219. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  220. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
  221. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +57 -15
  222. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
  223. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +39 -0
  224. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  225. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +81 -0
  226. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  227. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +17 -1
  228. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  229. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +22 -3
  230. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  231. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +1 -1
  232. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  233. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +26 -10
  234. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  235. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -5
  237. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts +44 -0
  239. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts.map +1 -0
  240. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js +57 -0
  241. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js.map +1 -0
  242. package/dist/backend/backend/src/types/credential.types.d.ts +17 -1
  243. package/dist/backend/backend/src/types/credential.types.d.ts.map +1 -1
  244. package/dist/backend/backend/src/types/credential.types.js +15 -5
  245. package/dist/backend/backend/src/types/credential.types.js.map +1 -1
  246. package/dist/backend/backend/src/types/cron-task.types.d.ts +17 -0
  247. package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
  248. package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
  249. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  250. package/dist/backend/backend/src/types/event-bus.types.js +12 -0
  251. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  252. package/dist/backend/backend/src/types/intent-task.types.d.ts +10 -13
  253. package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
  254. package/dist/backend/backend/src/types/intent-task.types.js +4 -1
  255. package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
  256. package/dist/backend/backend/src/types/memory.types.d.ts +94 -1
  257. package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
  258. package/dist/backend/backend/src/types/memory.types.js.map +1 -1
  259. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +23 -0
  260. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  261. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  262. package/dist/backend/backend/src/utils/team.utils.d.ts +3 -1
  263. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
  264. package/dist/backend/backend/src/utils/team.utils.js +26 -5
  265. package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
  266. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +23 -0
  267. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -1
  268. package/dist/backend/backend/src/websocket/chat-v2.gateway.js +56 -7
  269. package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -1
  270. package/dist/backend/backend/src/websocket/chat.gateway.d.ts +19 -4
  271. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  272. package/dist/backend/backend/src/websocket/chat.gateway.js +78 -63
  273. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  274. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  275. package/dist/backend/backend/src/websocket/terminal.gateway.js +10 -2
  276. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  277. package/dist/backend/config/constants.d.ts +2 -0
  278. package/dist/backend/config/constants.d.ts.map +1 -1
  279. package/dist/backend/config/constants.js +2 -0
  280. package/dist/backend/config/constants.js.map +1 -1
  281. package/dist/backend/config/index.d.ts +1 -0
  282. package/dist/backend/config/index.d.ts.map +1 -1
  283. package/dist/cli/backend/src/constants.d.ts +13 -0
  284. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  285. package/dist/cli/backend/src/constants.js +12 -0
  286. package/dist/cli/backend/src/constants.js.map +1 -1
  287. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  288. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +22 -11
  289. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  290. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  291. package/dist/cli/backend/src/services/mcp-server.js +5 -0
  292. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  293. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts +4 -0
  294. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  295. package/dist/cli/backend/src/services/mcp-tool-definitions.js +12 -1
  296. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
  297. package/dist/cli/backend/src/services/memory/memory.service.d.ts +22 -1
  298. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  299. package/dist/cli/backend/src/services/memory/memory.service.js +81 -3
  300. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  301. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +25 -1
  302. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  303. package/dist/cli/backend/src/services/memory/project-memory.service.js +43 -0
  304. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  305. package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  306. package/dist/cli/backend/src/services/skill/skill-executor.service.js +13 -1
  307. package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
  308. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
  309. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  310. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +160 -8
  311. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  312. package/dist/cli/backend/src/types/credential.types.d.ts +17 -1
  313. package/dist/cli/backend/src/types/credential.types.d.ts.map +1 -1
  314. package/dist/cli/backend/src/types/credential.types.js +15 -5
  315. package/dist/cli/backend/src/types/credential.types.js.map +1 -1
  316. package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
  317. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  318. package/dist/cli/backend/src/types/event-bus.types.js +12 -0
  319. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  320. package/dist/cli/backend/src/types/memory.types.d.ts +94 -1
  321. package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
  322. package/dist/cli/backend/src/types/memory.types.js.map +1 -1
  323. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +23 -0
  324. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  325. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  326. package/dist/cli/cli/src/commands/start.js +73 -12
  327. package/dist/cli/cli/src/commands/start.js.map +1 -1
  328. package/dist/cli/config/constants.d.ts +2 -0
  329. package/dist/cli/config/constants.d.ts.map +1 -1
  330. package/dist/cli/config/constants.js +2 -0
  331. package/dist/cli/config/constants.js.map +1 -1
  332. package/dist/cli/config/index.d.ts +1 -0
  333. package/dist/cli/config/index.d.ts.map +1 -1
  334. package/frontend/dist/assets/index-b279da34.js +4926 -0
  335. package/frontend/dist/assets/{index-b7e59b2b.css → index-c07e04c0.css} +2 -2
  336. package/frontend/dist/index.html +2 -2
  337. package/package.json +1 -1
  338. package/frontend/dist/assets/index-698305f3.js +0 -5228
@@ -10,8 +10,9 @@
10
10
  * @module services/chat-v2/chat-v2.service
11
11
  */
12
12
  import type { ChatV2Config } from './config.js';
13
+ import { EventEmitter } from 'events';
13
14
  import { type ChatDatabase } from './sqlite/chat-db.js';
14
- import { type ChatAttachmentDTO, type ChatChannelDTO, type ChatChannelType, type ChatContentType, type ChatMessageDTO, type ChatMessageListResult, type ChatPrincipal } from './types.js';
15
+ import { type ChatAttachmentDTO, type ChatChannelDTO, type ChatChannelType, type ChatContentType, type ChatHuddleMember, type ChatMessageDTO, type ChatMessageListResult, type ChatPrincipal, type ChatSenderType } from './types.js';
15
16
  /** Constructor options for `ChatV2Service`. */
16
17
  export interface ChatV2ServiceOptions {
17
18
  config: ChatV2Config;
@@ -73,6 +74,22 @@ export interface CreateChannelArgs {
73
74
  /** Phase A — optional when `type='dm'`. */
74
75
  targetMemberId?: string;
75
76
  }
77
+ /** Arguments for `createHuddle` (Phase B-2). */
78
+ export interface CreateHuddleArgs {
79
+ /** Display name shown in the channel list (e.g. "Q4 planning"). */
80
+ name: string;
81
+ /** Optional one-liner — purpose of the huddle. */
82
+ purpose?: string;
83
+ /**
84
+ * Agent session names (matches `DirectoryAgent.agentSession`) for
85
+ * every member of the huddle. Must contain at least one entry; the
86
+ * service rejects empty arrays so the dispatcher never has zero
87
+ * recipients to fan out to. Order is not significant — the store
88
+ * dedupes on insert.
89
+ */
90
+ memberSessions: string[];
91
+ principal: ChatPrincipal;
92
+ }
76
93
  /** Arguments for `listChannels`. */
77
94
  export interface ListChannelsArgs {
78
95
  principal: ChatPrincipal;
@@ -103,9 +120,27 @@ export interface SendMessageArgs {
103
120
  /** Attachment hooks — the store is added in a later step, so pre-resolved DTOs are accepted. */
104
121
  attachments?: ChatAttachmentDTO[];
105
122
  /**
106
- * Phase A (SEALED §3.2) — array of mention IDs (member or team)
107
- * referenced inline in `content`. Persisted as JSON; emitted on the
108
- * outbound message DTO. Empty / omitted → no mentions.
123
+ * Phase A (SEALED §3.2) — array of mention IDs referenced inline in
124
+ * `content`. Persisted as JSON; emitted on the outbound message DTO.
125
+ * Empty / omitted → no mentions.
126
+ *
127
+ * **Wire-shape varies by channel type — callers must pass the right
128
+ * one for the channel they're posting to:**
129
+ *
130
+ * - `type='channel'`: each entry is a **member id** or **team id**.
131
+ * The dispatcher routes these through `ChatV2MentionResolver` to
132
+ * look up the matching session name(s).
133
+ *
134
+ * - `type='huddle'`: each entry is an **agent session name** (the
135
+ * same shape that goes into `chat_channel_members.member_session`).
136
+ * The dispatcher does NOT run them through the resolver — they're
137
+ * matched directly against the huddle roster to set per-recipient
138
+ * `responseMode` (`'required'` for mentioned members, `'optional'`
139
+ * otherwise).
140
+ *
141
+ * - `type='dm'`: mentions are advisory only — DMs have a single
142
+ * recipient already, and the dispatcher doesn't re-route based on
143
+ * mentions.
109
144
  */
110
145
  mentions?: string[];
111
146
  /**
@@ -116,6 +151,52 @@ export interface SendMessageArgs {
116
151
  */
117
152
  threadId?: string;
118
153
  }
154
+ /**
155
+ * Allowed values for `RecordTurnInput.metadata.source` — the audit-trail
156
+ * discriminator that identifies which subsystem produced the message.
157
+ *
158
+ * Per spec `2026-05-14-unified-chat-message-store.md`, every {@link
159
+ * ChatV2Service.recordTurn} caller MUST set `metadata.source` to one of
160
+ * these values. The set is intentionally closed so future audits can
161
+ * `GROUP BY metadata->>'$.source'` without surprise values.
162
+ */
163
+ export declare const RECORD_TURN_SOURCES: readonly ["web", "slack", "pty-runtime", "in-process-runtime", "reply-tool", "system"];
164
+ /** Union type of the values in {@link RECORD_TURN_SOURCES}. */
165
+ export type RecordTurnSource = (typeof RECORD_TURN_SOURCES)[number];
166
+ /** Server-internal write input for {@link ChatV2Service.recordTurn}. */
167
+ export interface RecordTurnInput {
168
+ channelId: string;
169
+ /** Server resolved — runtime/controller already knows who's sending. */
170
+ senderType: ChatSenderType;
171
+ /** User id, agent session name, or `'system'`. */
172
+ senderId: string;
173
+ content: string;
174
+ contentType?: ChatContentType;
175
+ /** Stable idempotency key — dedup keyed on `(channel_id, clientMessageId)`. */
176
+ clientMessageId?: string;
177
+ /** Optional thread-root reference; validated to live in the same channel. */
178
+ threadId?: string;
179
+ /** Optional inline mention ids (member or team). */
180
+ mentions?: string[];
181
+ /** Required audit metadata. Caller MUST set `source`. */
182
+ metadata: {
183
+ source: RecordTurnSource;
184
+ /** Which agent runtime emitted the message, when applicable. */
185
+ runtime?: 'claude-code' | 'gemini-cli' | 'crewly-agent';
186
+ /** Slack correlation fields for cross-store reconciliation. */
187
+ slackChannelId?: string;
188
+ slackThreadTs?: string;
189
+ /** Free-form additional context — not parsed by the store. */
190
+ [key: string]: unknown;
191
+ };
192
+ }
193
+ /** Result of {@link ChatV2Service.recordTurn}. */
194
+ export interface RecordTurnResult {
195
+ /** The persisted (or pre-existing, when deduped) message DTO. */
196
+ message: ChatMessageDTO;
197
+ /** True when `clientMessageId` matched an existing row. */
198
+ deduped: boolean;
199
+ }
119
200
  /** Arguments for `listMessages`. */
120
201
  export interface ListMessagesArgs {
121
202
  channelId: string;
@@ -133,7 +214,7 @@ export interface ListMessagesArgs {
133
214
  * - Maps rows → DTOs.
134
215
  * - Fans out to WebSocket / adapters in later phases.
135
216
  */
136
- export declare class ChatV2Service {
217
+ export declare class ChatV2Service extends EventEmitter {
137
218
  /** Phase A spec §3.2: max mention count per message. */
138
219
  static readonly MAX_MENTIONS_PER_MESSAGE = 50;
139
220
  /** Phase A spec §3.2: max JSON-encoded byte size of the mentions array. */
@@ -161,6 +242,47 @@ export declare class ChatV2Service {
161
242
  * @returns Total message count across all channels (0 on a fresh install)
162
243
  */
163
244
  countAllMessages(): number;
245
+ /**
246
+ * Phase 6.0 of unified-chat-message-store spec — replacement for the
247
+ * legacy `ChatService.updateMessageMetadata`. Merges a partial
248
+ * metadata object into the stored row's `metadata` JSON column using
249
+ * SQLite's `json_patch` (atomic, server-side).
250
+ *
251
+ * No principal check — this is a server-internal mutation path used
252
+ * by reconciliation jobs (Slack delivery status updates) and never
253
+ * exposed directly to user HTTP traffic. Phase 6c will retire the
254
+ * legacy method that called this; until then it is the only callable
255
+ * write-through for the existing reconciliation code.
256
+ *
257
+ * @param messageId - Message id to update
258
+ * @param patch - Shallow metadata patch to merge
259
+ * @returns The updated message DTO, or null if no such message exists
260
+ */
261
+ updateMessageMetadata(messageId: string, patch: Record<string, unknown>): ChatMessageDTO | null;
262
+ /**
263
+ * Phase 6.0 — replacement for the legacy
264
+ * `ChatService.getMessagesWithPendingSlackDelivery`. Returns the
265
+ * messages still marked `slackDeliveryStatus='pending'` within the
266
+ * caller-supplied lookback window, used by NotifyReconciliationService
267
+ * to retry stuck Slack deliveries.
268
+ *
269
+ * @param maxAgeMs - Lookback window in milliseconds
270
+ * @returns Pending-delivery messages, newest first, capped at MAX_LIMIT
271
+ */
272
+ findMessagesWithPendingSlackDelivery(maxAgeMs: number): ChatMessageDTO[];
273
+ /**
274
+ * Phase 6.0 — replacement for the legacy `ChatService.getStatistics`.
275
+ * Aggregate counts used by the boot-time telemetry and the
276
+ * admin/audit dashboards.
277
+ *
278
+ * @returns Active/archived channel counts plus total message count
279
+ */
280
+ getStatistics(): {
281
+ totalChannels: number;
282
+ activeChannels: number;
283
+ archivedChannels: number;
284
+ totalMessages: number;
285
+ };
164
286
  /**
165
287
  * Create a channel bound 1:1 to an agent session. Server always assigns
166
288
  * `owner_user_id = principal.userId` — the body's owner fields are ignored.
@@ -177,6 +299,176 @@ export declare class ChatV2Service {
177
299
  * `agent_already_bound` (409)
178
300
  */
179
301
  createChannel(args: CreateChannelArgs): ChatChannelDTO;
302
+ /**
303
+ * Phase B-2 (2026-05-17) — create a huddle (ad-hoc multi-agent group
304
+ * channel). Creates a `type='huddle'` channel row with no team
305
+ * binding, then inserts one row per member into
306
+ * `chat_channel_members`. The dispatcher uses that roster to fan out
307
+ * subsequent user messages to every member; agents whose session is
308
+ * in the outgoing message's `mentions[]` get a "must respond"
309
+ * prompt, others get an "optional" one.
310
+ *
311
+ * @param args - name, optional purpose, member roster, owning principal
312
+ * @returns The created huddle channel as a DTO, with `members` populated
313
+ * @throws {ChatError} `validation_error` (400) when name is empty/too long,
314
+ * purpose too long, or memberSessions is empty / has too many entries.
315
+ */
316
+ createHuddle(args: CreateHuddleArgs): ChatChannelDTO;
317
+ /**
318
+ * Phase B-2 — list the members of a huddle channel. Returns an empty
319
+ * array (not an error) for non-huddle channels so consumers can call
320
+ * this unconditionally during channel rendering.
321
+ *
322
+ * @param channelId - The channel to enumerate
323
+ * @param principal - The caller; used to verify ownership
324
+ * @returns Array of `{ sessionName, joinedAt }` rows
325
+ * @throws {ChatError} `not_found` (404) when the channel doesn't exist or
326
+ * isn't owned by `principal`.
327
+ */
328
+ listHuddleMembers(channelId: string, principal: ChatPrincipal): ChatHuddleMember[];
329
+ /**
330
+ * Phase B-2 — dispatcher-facing roster lookup. Returns the session
331
+ * names of every member in a huddle, in `joined_at ASC` order.
332
+ * Unlike {@link listHuddleMembers} this is NOT principal-scoped:
333
+ * the dispatcher runs server-side and already holds the channel
334
+ * (it just persisted a message into it). Returns an empty array for
335
+ * non-huddle channels or unknown ids so the dispatcher's
336
+ * `members.length === 0` skip path stays clean.
337
+ *
338
+ * @param channelId - The huddle channel id
339
+ * @returns Array of agent session names
340
+ */
341
+ queryHuddleMembersForDispatch(channelId: string): string[];
342
+ /** Internal: read members straight from the DB (no ownership check). */
343
+ private queryHuddleMembers;
344
+ /**
345
+ * Idempotent DM channel lookup-or-create for the /agents page.
346
+ *
347
+ * Returns the most-recent active DM channel owned by `principal.userId`
348
+ * and bound to `agentSession`; creates a new one when none exists. The
349
+ * caller is the human owner (auth principal), unlike
350
+ * {@link ensureChannelForLegacyConversation} which runs as `'system'`
351
+ * for server-internal bridge paths.
352
+ *
353
+ * Used by `POST /api/chat/channels/dm/ensure` so the /agents page can
354
+ * map "user clicked an agent in the directory" → "send/receive messages
355
+ * on this channel" without leaking duplicate DMs every time the page
356
+ * is reloaded.
357
+ *
358
+ * @param args - Lookup-or-create args
359
+ * @returns The channel DTO plus a `created` flag (true when a new row
360
+ * was inserted; false when an existing row was reused).
361
+ * @throws {ChatError} `validation_error` (400) on empty `agentSession`
362
+ * or oversize `name` / `purpose`.
363
+ */
364
+ ensureDmChannel(args: {
365
+ agentSession: string;
366
+ name?: string;
367
+ purpose?: string;
368
+ principal: ChatPrincipal;
369
+ }): {
370
+ channel: ChatChannelDTO;
371
+ created: boolean;
372
+ };
373
+ /**
374
+ * Server-internal idempotent helper used by migration / bridge code to
375
+ * map a legacy conversationId (e.g. `slack-D0AC7-1234`, `web-conv-abc`)
376
+ * onto a chat-v2 channel row with the conversationId as the primary key.
377
+ *
378
+ * Unlike {@link createChannel}, this method:
379
+ * - Returns the existing channel when one already lives at the given
380
+ * id — idempotent for runtimes that call it before every recordTurn.
381
+ * - Accepts a synthetic owner (`'system'`) for paths where no human
382
+ * principal is on the call stack (PTY finish hooks, Slack inbound
383
+ * bridge, in-process runtime auto-route).
384
+ * - Sets `type='dm'` so the channel matches the conversation-per-thread
385
+ * legacy model the user approved (spec Option B).
386
+ *
387
+ * The `agent_already_bound` failure mode that existed in chat-v2 Phase A
388
+ * does not apply — the `uq_channel_agent_dm_active` index was dropped
389
+ * per the unified-chat-message-store spec exactly so this helper can
390
+ * lazy-create N concurrent DM channels for a single agent.
391
+ *
392
+ * @param args - Legacy bridge args
393
+ * @returns The existing or freshly created channel DTO
394
+ * @throws {ChatError} `validation_error` on missing id / agentSession
395
+ *
396
+ * @example
397
+ * ```typescript
398
+ * // Called from `routeInProcessResponseToChat` before `recordTurn`:
399
+ * const channel = chatV2.ensureChannelForLegacyConversation({
400
+ * conversationId: 'slack-D0AC7-1700000000.000111',
401
+ * agentSession: 'crewly-orc',
402
+ * });
403
+ * chatV2.recordTurn({ channelId: channel.id, ... });
404
+ * ```
405
+ */
406
+ ensureChannelForLegacyConversation(args: {
407
+ conversationId: string;
408
+ agentSession: string;
409
+ /** Display name; defaults to the conversationId. */
410
+ name?: string;
411
+ /** Owner id; defaults to `'system'` for server-internal callers. */
412
+ ownerUserId?: string;
413
+ }): ChatChannelDTO;
414
+ /**
415
+ * Phase 5 of unified-chat-message-store spec — idempotent import of one
416
+ * legacy conversation file (`~/.crewly/chat/<conversationId>.json`)
417
+ * into the chat-v2 SQLite store. Each legacy message becomes one
418
+ * `chat_messages` row keyed by a deterministic `clientMessageId` so
419
+ * re-running the import is safe — the underlying `MessageStore`
420
+ * dedups on `(channel_id, clientMessageId)`.
421
+ *
422
+ * Designed as a service method (not a free function) so the CLI
423
+ * migration script can call it per file and so callers can unit-test
424
+ * the mapping in isolation.
425
+ *
426
+ * The mapping:
427
+ * - `conversation.id` → `chat_channels.id` (via
428
+ * {@link ensureChannelForLegacyConversation}). `agentSession`
429
+ * defaults to `'crewly-orc'` because every legacy conversation was
430
+ * a DM between the user and the orchestrator.
431
+ * - `messages[].from.type === 'user'` → `senderType: 'user'`
432
+ * - `messages[].from.type === 'orchestrator'` (or 'agent') →
433
+ * `senderType: 'agent'`, `senderId: 'crewly-orc'`
434
+ * - Anything else → `senderType: 'system'`, `senderId: 'system'`
435
+ * - `messages[].id` → `clientMessageId = 'legacy-' + msg.id` for
436
+ * stable idempotency across re-runs.
437
+ * - `messages[].metadata.source` (legacy slack/web) → carried
438
+ * through; `recordTurn`'s required outer `metadata.source` is set
439
+ * to `'system'` to identify the migration as the writer.
440
+ *
441
+ * @param input - Parsed legacy JSON (the entire file body)
442
+ * @returns Per-message outcome (imported vs deduped) + the channel id
443
+ *
444
+ * @example
445
+ * ```typescript
446
+ * const json = JSON.parse(await readFile(filePath, 'utf-8'));
447
+ * const result = chatV2.importLegacyConversation(json);
448
+ * console.log(`Imported ${result.imported} new, ${result.deduped} dedup`);
449
+ * ```
450
+ */
451
+ importLegacyConversation(input: {
452
+ conversation: {
453
+ id: string;
454
+ };
455
+ messages: Array<{
456
+ id: string;
457
+ from: {
458
+ type: string;
459
+ name?: string;
460
+ };
461
+ content: string;
462
+ contentType?: string;
463
+ timestamp?: string;
464
+ metadata?: Record<string, unknown>;
465
+ }>;
466
+ }): {
467
+ channelId: string;
468
+ imported: number;
469
+ deduped: number;
470
+ skipped: number;
471
+ };
180
472
  /**
181
473
  * List channels owned by the caller.
182
474
  *
@@ -211,6 +503,64 @@ export declare class ChatV2Service {
211
503
  * @throws {ChatError} `channel_not_found` (404)
212
504
  */
213
505
  archiveChannel(channelId: string, principal: ChatPrincipal): boolean;
506
+ /**
507
+ * Phase 6.0b — clear the `archived_at` flag on a channel. Inverse of
508
+ * {@link archiveChannel}; required to retire the legacy
509
+ * `unarchiveConversation` route.
510
+ *
511
+ * @param channelId - The channel to unarchive
512
+ * @param principal - Auth principal (must own the channel)
513
+ * @returns True if newly unarchived, false if already active
514
+ * @throws {ChatError} `channel_not_found` (404)
515
+ */
516
+ unarchiveChannel(channelId: string, principal: ChatPrincipal): boolean;
517
+ /**
518
+ * Phase 6.0b — rename a channel. Replaces the legacy
519
+ * `updateConversationTitle` route. Server validates the same name
520
+ * constraints as `createChannel`.
521
+ *
522
+ * @param channelId - The channel to rename
523
+ * @param name - New name (trimmed, ≤ maxChannelNameChars)
524
+ * @param principal - Auth principal (must own the channel)
525
+ * @returns The renamed channel DTO
526
+ * @throws {ChatError} `validation_error` (400) on empty / oversize name,
527
+ * `channel_not_found` (404)
528
+ */
529
+ renameChannel(channelId: string, name: string, principal: ChatPrincipal): ChatChannelDTO;
530
+ /**
531
+ * Phase 6.0b — hard-delete a channel and all its messages. Distinct
532
+ * from {@link archiveChannel} (soft delete). Replaces the legacy
533
+ * `deleteConversation` route. Uses SQLite FK cascade so the row
534
+ * deletion atomically removes child messages.
535
+ *
536
+ * @param channelId - The channel to delete
537
+ * @param principal - Auth principal (must own the channel)
538
+ * @returns True if removed, false if the channel didn't exist
539
+ * @throws {ChatError} `channel_not_found` (404)
540
+ */
541
+ deleteChannel(channelId: string, principal: ChatPrincipal): boolean;
542
+ /**
543
+ * Phase 6.0b — delete all messages in a channel while keeping the
544
+ * channel row. Replaces the legacy `clearConversation` route. Useful
545
+ * when the user wants a "fresh start" without losing the channel
546
+ * itself (and its bookkeeping like `agent_session` binding).
547
+ *
548
+ * @param channelId - The channel to clear
549
+ * @param principal - Auth principal (must own the channel)
550
+ * @returns Number of messages deleted
551
+ * @throws {ChatError} `channel_not_found` (404)
552
+ */
553
+ clearChannel(channelId: string, principal: ChatPrincipal): number;
554
+ /**
555
+ * Phase 6.0b — count messages in a single channel. Replaces the
556
+ * legacy `getMessageCount` filtered to one conversation.
557
+ *
558
+ * @param channelId - The channel to count
559
+ * @param principal - Auth principal (must own the channel)
560
+ * @returns Message count (0 for empty channels)
561
+ * @throws {ChatError} `channel_not_found` (404)
562
+ */
563
+ countChannelMessages(channelId: string, principal: ChatPrincipal): number;
214
564
  /**
215
565
  * Persist a message sent by the caller. The server decides `sender_type`
216
566
  * and `sender_id` from the auth principal; client fields are ignored.
@@ -220,6 +570,52 @@ export declare class ChatV2Service {
220
570
  * @throws {ChatError} on validation, authorization, or size limit
221
571
  */
222
572
  sendMessage(args: SendMessageArgs): ChatMessageDTO;
573
+ /**
574
+ * Canonical server-internal write entry for chat messages.
575
+ *
576
+ * Unlike {@link sendMessage}, which derives `sender_type` / `sender_id`
577
+ * from an authenticated request principal, `recordTurn` is the path
578
+ * used by runtimes, controllers, and bridges that have already
579
+ * resolved exactly who the sender is — e.g.:
580
+ *
581
+ * - In-process agent runtime finishing a turn
582
+ * - PTY runtime emitting a complete reply
583
+ * - Slack inbound bridge persisting a user DM
584
+ * - `/slack/send` controller persisting the agent's outbound reply
585
+ *
586
+ * Per spec `2026-05-14-unified-chat-message-store.md`, every chat
587
+ * write in the system funnels through this method. No caller should
588
+ * write to {@link MessageStore} directly; no caller should reach
589
+ * into legacy {@link ChatService} (Phase 6 retires it).
590
+ *
591
+ * Idempotent via `clientMessageId` — the underlying store dedups by
592
+ * `(channel_id, clientMessageId)` and returns the existing row with
593
+ * `deduped=true` instead of inserting a duplicate.
594
+ *
595
+ * @param input - Turn payload (channel, sender, content, metadata)
596
+ * @returns The persisted message DTO + dedupe flag
597
+ * @throws {ChatError} `channel_not_found` (404) if the channel is missing
598
+ * @throws {ChatError} `validation_error` (400) on empty content or invalid contentType
599
+ * @throws {ChatError} `payload_too_large` (413) if content exceeds maxMessageBytes
600
+ *
601
+ * @example
602
+ * ```typescript
603
+ * const { message, deduped } = chatV2.recordTurn({
604
+ * channelId: 'slack-D0AC7-1234',
605
+ * senderType: 'agent',
606
+ * senderId: 'crewly-orc',
607
+ * content: 'Hello!',
608
+ * clientMessageId: 'agent-finish-2026-05-14T22:30:00Z',
609
+ * metadata: {
610
+ * source: 'in-process-runtime',
611
+ * runtime: 'crewly-agent',
612
+ * slackChannelId: 'D0AC7',
613
+ * slackThreadTs: '1234',
614
+ * },
615
+ * });
616
+ * ```
617
+ */
618
+ recordTurn(input: RecordTurnInput): RecordTurnResult;
223
619
  /**
224
620
  * Phase A — validate the mentions array passed to sendMessage.
225
621
  * Returns the cleaned array (or undefined when input is empty/missing).
@@ -1 +1 @@
1
- {"version":3,"file":"chat-v2.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/chat-v2.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-v2.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/chat-v2.service.ts"],"names":[],"mappings":"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"}