crewly 1.12.1 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/config/skills/_common/complete-body-shape.test.sh +113 -0
  2. package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
  3. package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
  4. package/config/skills/agent/core/accept-task/execute.sh +30 -5
  5. package/config/skills/agent/core/block-task/execute.sh +59 -6
  6. package/config/skills/agent/core/complete-task/SKILL.md +37 -5
  7. package/config/skills/agent/core/complete-task/execute.sh +40 -9
  8. package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
  9. package/config/skills/agent/core/create-task/SKILL.md +33 -0
  10. package/config/skills/agent/core/create-task/execute.sh +82 -23
  11. package/config/skills/agent/core/delegate-task/execute.sh +46 -0
  12. package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
  13. package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
  14. package/config/skills/agent/core/handoff-task/execute.sh +8 -1
  15. package/config/skills/agent/core/report-status/SKILL.md +26 -0
  16. package/config/skills/agent/core/report-status/execute.sh +40 -5
  17. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  18. package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
  19. package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
  20. package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
  21. package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
  22. package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
  23. package/config/skills/team-leader/delegate-task/execute.sh +132 -43
  24. package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
  25. package/config/vitest-exclude.constants.ts +56 -0
  26. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  27. package/dist/backend/backend/src/controllers/chat/chat.controller.js +29 -7
  28. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  29. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +1 -1
  31. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  33. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -3
  34. package/dist/backend/backend/src/controllers/monitoring/terminal.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 +18 -15
  37. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
  39. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +19 -10
  41. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  42. package/dist/backend/backend/src/index.d.ts.map +1 -1
  43. package/dist/backend/backend/src/index.js +20 -0
  44. package/dist/backend/backend/src/index.js.map +1 -1
  45. package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
  46. package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
  47. package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
  48. package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -0
  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 +33 -1
  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/crewly-agent-external-runtime.service.d.ts +78 -2
  53. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +248 -44
  55. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  56. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +51 -3
  57. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +31 -1
  59. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  60. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +5 -0
  61. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +7 -0
  63. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  64. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
  65. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +40 -0
  67. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  68. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +26 -0
  70. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
  71. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -1
  72. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +19 -3
  73. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
  74. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
  75. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  76. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
  77. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  78. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
  79. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
  81. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  82. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +13 -1
  83. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  84. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +84 -5
  85. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  86. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +14 -0
  87. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
  89. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  90. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  91. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +268 -36
  93. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  94. package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
  95. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  96. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +39 -2
  98. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  99. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +3 -0
  100. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +21 -10
  102. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  103. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  104. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  105. package/dist/backend/backend/src/types/v2/index.js +1 -1
  106. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  107. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +181 -1
  108. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  109. package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
  110. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  111. package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
  112. package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
  113. package/dist/backend/backend/src/utils/build-provenance.js +211 -0
  114. package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
  115. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  116. package/dist/backend/backend/src/websocket/chat.gateway.js +7 -1
  117. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  118. package/dist/backend/build-info.json +4 -0
  119. package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
  120. package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
  121. package/dist/backend/config/vitest-exclude.constants.js +55 -0
  122. package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
  123. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
  124. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
  125. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
  126. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
  127. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
  128. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
  129. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
  130. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
  131. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
  132. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
  133. package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
  134. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
  135. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
  136. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
  137. package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
  138. package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
  139. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
  140. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
  141. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
  142. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
  143. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
  144. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
  145. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
  146. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
  147. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
  148. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
  149. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
  150. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
  151. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
  152. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
  153. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
  154. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
  155. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
  156. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
  157. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
  158. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
  159. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
  160. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
  161. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
  162. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
  163. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
  164. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
  165. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
  166. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
  167. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
  168. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
  169. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
  170. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
  171. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
  172. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
  173. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
  174. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
  175. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
  176. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
  177. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
  178. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
  179. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  180. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  181. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
  182. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  183. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
  184. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
  185. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
  186. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
  187. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
  188. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
  189. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
  190. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
  191. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
  192. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
  193. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
  194. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
  195. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
  196. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
  197. package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
  198. package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
  199. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
  200. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
  201. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
  202. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
  203. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
  204. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
  205. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
  206. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
  207. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
  208. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  209. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
  210. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  211. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
  212. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
  213. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
  214. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
  215. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
  216. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
  217. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
  218. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
  219. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
  220. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
  221. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
  222. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
  223. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
  224. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
  225. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
  226. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
  227. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  228. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  229. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  230. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  231. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
  232. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
  233. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
  234. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
  235. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  236. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  237. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  238. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  239. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  240. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  241. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
  242. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  243. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
  244. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
  245. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
  246. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
  247. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  248. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  249. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  250. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  251. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
  252. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
  253. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
  254. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
  255. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  256. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  257. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  258. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  259. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
  260. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  261. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
  262. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  263. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  264. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  265. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
  266. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  267. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
  268. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
  269. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
  270. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
  271. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
  272. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
  273. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
  274. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
  275. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
  276. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
  277. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
  278. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
  279. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
  280. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  281. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
  282. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  283. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  284. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  285. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  286. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  287. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
  288. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  289. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
  290. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  291. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
  292. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
  293. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
  294. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
  295. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  296. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  297. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  298. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  299. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
  300. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  301. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
  302. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  303. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
  304. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
  305. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
  306. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
  307. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  308. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  309. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  310. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  311. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +737 -0
  312. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
  313. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1213 -0
  314. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
  315. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
  316. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
  317. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
  318. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
  319. package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
  320. package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
  321. package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
  322. package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
  323. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
  324. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  325. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
  326. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  327. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
  328. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
  329. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
  330. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
  331. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
  332. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
  333. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
  334. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
  335. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +208 -0
  336. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
  337. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +405 -0
  338. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
  339. package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
  340. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
  341. package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
  342. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
  343. package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts +5 -0
  344. package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  345. package/dist/cli/backend/src/services/cloud/cloud-client.service.js +7 -0
  346. package/dist/cli/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  347. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
  348. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
  349. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
  350. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
  351. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
  352. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
  353. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
  354. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
  355. package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
  356. package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
  357. package/dist/cli/backend/src/services/mcp-client.js +302 -0
  358. package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
  359. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
  360. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
  361. package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
  362. package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
  363. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
  364. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
  365. package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
  366. package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
  367. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
  368. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
  369. package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
  370. package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
  371. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
  372. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
  373. package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
  374. package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
  375. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
  376. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
  377. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
  378. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
  379. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
  380. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
  381. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
  382. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
  383. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
  384. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
  385. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
  386. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
  387. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
  388. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
  389. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
  390. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
  391. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
  392. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
  393. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
  394. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
  395. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
  396. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
  397. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
  398. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
  399. package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
  400. package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
  401. package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
  402. package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
  403. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
  404. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
  405. package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
  406. package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
  407. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
  408. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
  409. package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
  410. package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
  411. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
  412. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
  413. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
  414. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
  415. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
  416. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
  417. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
  418. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
  419. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
  420. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
  421. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
  422. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
  423. package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
  424. package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
  425. package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
  426. package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
  427. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
  428. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
  429. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
  430. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
  431. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
  432. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
  433. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
  434. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
  435. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
  436. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
  437. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
  438. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
  439. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
  440. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
  441. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
  442. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
  443. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
  444. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
  445. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
  446. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
  447. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
  448. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
  449. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
  450. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
  451. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
  452. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
  453. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
  454. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
  455. package/dist/cli/backend/src/services/session/index.d.ts +47 -0
  456. package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
  457. package/dist/cli/backend/src/services/session/index.js +50 -0
  458. package/dist/cli/backend/src/services/session/index.js.map +1 -0
  459. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
  460. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
  461. package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
  462. package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
  463. package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
  464. package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
  465. package/dist/cli/backend/src/services/session/pty/index.js +11 -0
  466. package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
  467. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
  468. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
  469. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
  470. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
  471. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
  472. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
  473. package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
  474. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
  475. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
  476. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
  477. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
  478. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
  479. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
  480. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
  481. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
  482. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
  483. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
  484. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
  485. package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
  486. package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
  487. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
  488. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
  489. package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
  490. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
  491. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
  492. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
  493. package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
  494. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
  495. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
  496. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
  497. package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
  498. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
  499. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
  500. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
  501. package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
  502. package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
  503. package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
  504. package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
  505. package/dist/cli/backend/src/services/settings/role.service.js +728 -0
  506. package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
  507. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
  508. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
  509. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
  510. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
  511. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
  512. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
  513. package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
  514. package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
  515. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
  516. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
  517. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1928 -0
  518. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
  519. package/dist/cli/backend/src/services/slack/slack.service.d.ts +315 -0
  520. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
  521. package/dist/cli/backend/src/services/slack/slack.service.js +1094 -0
  522. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
  523. package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
  524. package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
  525. package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
  526. package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
  527. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  528. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  529. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +268 -36
  530. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  531. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
  532. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
  533. package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
  534. package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
  535. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
  536. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
  537. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
  538. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
  539. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
  540. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
  541. package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
  542. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
  543. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
  544. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
  545. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
  546. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
  547. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
  548. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
  549. package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
  550. package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
  551. package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
  552. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
  553. package/dist/cli/backend/src/services/v3/request.service.js +534 -0
  554. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
  555. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
  556. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
  557. package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
  558. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
  559. package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
  560. package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
  561. package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
  562. package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
  563. package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
  564. package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
  565. package/dist/cli/backend/src/types/intent-task.types.js +403 -0
  566. package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
  567. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
  568. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
  569. package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
  570. package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
  571. package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
  572. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
  573. package/dist/cli/backend/src/types/v2/index.js +22 -0
  574. package/dist/cli/backend/src/types/v2/index.js.map +1 -0
  575. package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
  576. package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
  577. package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
  578. package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
  579. package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
  580. package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
  581. package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
  582. package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
  583. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
  584. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
  585. package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
  586. package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
  587. package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
  588. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
  589. package/dist/cli/backend/src/types/v2/request.types.js +179 -0
  590. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
  591. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
  592. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  593. package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
  594. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  595. package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
  596. package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
  597. package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
  598. package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
  599. package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
  600. package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
  601. package/dist/cli/backend/src/utils/async.utils.js +80 -0
  602. package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
  603. package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
  604. package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
  605. package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
  606. package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
  607. package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
  608. package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
  609. package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
  610. package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
  611. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
  612. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
  613. package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
  614. package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
  615. package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
  616. package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
  617. package/dist/cli/config/vitest-exclude.constants.js +55 -0
  618. package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
  619. package/package.json +2 -2
  620. package/packages/crewly-agent/src/cli.ts +16 -6
  621. package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +311 -33
  622. package/packages/crewly-agent/src/runtime/agent-runner.service.ts +221 -12
  623. package/packages/crewly-agent/src/runtime/tool-registry.test.ts +19 -0
  624. package/packages/crewly-agent/src/runtime/tool-registry.ts +4 -1
  625. package/packages/crewly-agent/src/runtime/types.ts +65 -5
@@ -0,0 +1,737 @@
1
+ /**
2
+ * ChatV2Service — orchestrator for the Agent-First Chat MVP.
3
+ *
4
+ * Wires ChannelStore + MessageStore, enforces the authorization rules
5
+ * laid out in the tech spec §7.2, and maps DB rows to wire-format DTOs.
6
+ *
7
+ * WebSocket push, offline queuing, and attachment durability land in
8
+ * later passes of Phase 1 — see §18 rollout plan.
9
+ *
10
+ * @module services/chat-v2/chat-v2.service
11
+ */
12
+ import type { ChatV2Config } from './config.js';
13
+ import { EventEmitter } from 'events';
14
+ import { type ChatDatabase } from './sqlite/chat-db.js';
15
+ import { type ChatAttachmentDTO, type ChatChannelDTO, type ChatChannelType, type ChatContentType, type ChatHuddleMember, type ChatMessageDTO, type ChatMessageListResult, type ChatPrincipal, type ChatSenderType } from './types.js';
16
+ /** Constructor options for `ChatV2Service`. */
17
+ export interface ChatV2ServiceOptions {
18
+ config: ChatV2Config;
19
+ /** Optional pre-opened DB (tests pass an in-memory handle). */
20
+ db?: ChatDatabase;
21
+ /** Presence lookup — wired to `AgentRegistrationService` in wiring; tests pass a stub. */
22
+ getPresence?: (agentSession: string) => {
23
+ status: ChatChannelDTO['agentPresence']['status'];
24
+ lastSeenAt: number | null;
25
+ };
26
+ /**
27
+ * F2b (#333) — outer-ring tenant defense. Called when creating a
28
+ * `type='channel'` channel; if the principal cannot bind a channel
29
+ * to `teamId`, return false → `createChannel` throws
30
+ * `forbidden_team` (HTTP 403). Sync only, since `createChannel` runs
31
+ * inside the synchronous `runHandler` wrapper (an async refactor is
32
+ * a Phase E concern, not a F2b requirement).
33
+ *
34
+ * In OSS production, wire to a check that confirms `teamId` exists
35
+ * in `StorageService.getTeams()` — single-user OSS treats existence
36
+ * as membership. Cloud Portal Phase E swaps in a real user-tenant
37
+ * binding check.
38
+ *
39
+ * When omitted (legacy tests, REST-only fixtures) `createChannel`
40
+ * preserves pre-F2b behavior: only validates teamId is non-empty.
41
+ * The composition root in `backend/src/index.ts` MUST inject this
42
+ * to close the leak in production.
43
+ */
44
+ validateTeamMembership?: (principal: ChatPrincipal, teamId: string) => boolean;
45
+ /** Clock override for tests. */
46
+ now?: () => number;
47
+ }
48
+ /** Minimal interface the service needs from a presence provider. */
49
+ export interface ChatPresenceProvider {
50
+ getPresence(agentSession: string): {
51
+ status: ChatChannelDTO['agentPresence']['status'];
52
+ lastSeenAt: number | null;
53
+ };
54
+ }
55
+ /** Arguments for `createChannel`. */
56
+ export interface CreateChannelArgs {
57
+ /**
58
+ * Wire-level session binding. Required when `type='dm'` (default);
59
+ * for `type='channel'`, callers may omit it (server stores '').
60
+ */
61
+ agentSession?: string;
62
+ name: string;
63
+ purpose?: string;
64
+ principal: ChatPrincipal;
65
+ /**
66
+ * Phase A (SEALED §3.1) — channel kind. Defaults to `'dm'` to preserve
67
+ * the Phase 1 contract for callers that omit this field.
68
+ */
69
+ type?: ChatChannelType;
70
+ /** Phase A — required when `type='channel'`. */
71
+ teamId?: string;
72
+ /** Phase A — optional even when `type='channel'`. */
73
+ projectId?: string;
74
+ /** Phase A — optional when `type='dm'`. */
75
+ targetMemberId?: string;
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
+ }
93
+ /** Arguments for `listChannels`. */
94
+ export interface ListChannelsArgs {
95
+ principal: ChatPrincipal;
96
+ includeArchived?: boolean;
97
+ limit?: number;
98
+ /**
99
+ * Phase C — filter to a single channel type. The controller validates
100
+ * the wire value against {@link CHAT_CHANNEL_TYPES} before reaching
101
+ * this layer; an unknown value is rejected as `validation_error`.
102
+ */
103
+ type?: ChatChannelType;
104
+ /**
105
+ * Phase C — filter to channels with this `team_id`. Empty string is
106
+ * treated the same as `undefined` (no filter) so callers don't have
107
+ * to pre-normalize blank query strings. The store-level filter still
108
+ * uses an exact-match against the column, so DMs (which have null
109
+ * team_id) drop out of the result.
110
+ */
111
+ teamId?: string;
112
+ /**
113
+ * Include "bridged" channels (Slack inbound, owned by `'system'`) in the
114
+ * result. Defaults to true. Only applies to the unfiltered list (no
115
+ * `type`/`teamId` filter) — bridged threads are surfaced alongside the
116
+ * user's own DMs/channels in the consolidated chat list.
117
+ */
118
+ includeBridged?: boolean;
119
+ }
120
+ /** Arguments for `sendMessage`. */
121
+ export interface SendMessageArgs {
122
+ channelId: string;
123
+ principal: ChatPrincipal;
124
+ content: string;
125
+ contentType?: ChatContentType;
126
+ clientMessageId?: string;
127
+ /** Attachment hooks — the store is added in a later step, so pre-resolved DTOs are accepted. */
128
+ attachments?: ChatAttachmentDTO[];
129
+ /**
130
+ * Phase A (SEALED §3.2) — array of mention IDs referenced inline in
131
+ * `content`. Persisted as JSON; emitted on the outbound message DTO.
132
+ * Empty / omitted → no mentions.
133
+ *
134
+ * **Wire-shape varies by channel type — callers must pass the right
135
+ * one for the channel they're posting to:**
136
+ *
137
+ * - `type='channel'`: each entry is a **member id** or **team id**.
138
+ * The dispatcher routes these through `ChatV2MentionResolver` to
139
+ * look up the matching session name(s).
140
+ *
141
+ * - `type='huddle'`: each entry is an **agent session name** (the
142
+ * same shape that goes into `chat_channel_members.member_session`).
143
+ * The dispatcher does NOT run them through the resolver — they're
144
+ * matched directly against the huddle roster to set per-recipient
145
+ * `responseMode` (`'required'` for mentioned members, `'optional'`
146
+ * otherwise).
147
+ *
148
+ * - `type='dm'`: mentions are advisory only — DMs have a single
149
+ * recipient already, and the dispatcher doesn't re-route based on
150
+ * mentions.
151
+ */
152
+ mentions?: string[];
153
+ /**
154
+ * Phase A (SEALED §3.2) — Slack-style thread reply root. When set,
155
+ * the new message is a reply within the thread rooted at this id;
156
+ * the service validates that the thread root lives in the same
157
+ * channel before persisting.
158
+ */
159
+ threadId?: string;
160
+ }
161
+ /**
162
+ * Allowed values for `RecordTurnInput.metadata.source` — the audit-trail
163
+ * discriminator that identifies which subsystem produced the message.
164
+ *
165
+ * Per spec `2026-05-14-unified-chat-message-store.md`, every {@link
166
+ * ChatV2Service.recordTurn} caller MUST set `metadata.source` to one of
167
+ * these values. The set is intentionally closed so future audits can
168
+ * `GROUP BY metadata->>'$.source'` without surprise values.
169
+ */
170
+ export declare const RECORD_TURN_SOURCES: readonly ["web", "slack", "pty-runtime", "in-process-runtime", "reply-tool", "system"];
171
+ /** Union type of the values in {@link RECORD_TURN_SOURCES}. */
172
+ export type RecordTurnSource = (typeof RECORD_TURN_SOURCES)[number];
173
+ /** Server-internal write input for {@link ChatV2Service.recordTurn}. */
174
+ export interface RecordTurnInput {
175
+ channelId: string;
176
+ /** Server resolved — runtime/controller already knows who's sending. */
177
+ senderType: ChatSenderType;
178
+ /** User id, agent session name, or `'system'`. */
179
+ senderId: string;
180
+ content: string;
181
+ contentType?: ChatContentType;
182
+ /** Stable idempotency key — dedup keyed on `(channel_id, clientMessageId)`. */
183
+ clientMessageId?: string;
184
+ /** Optional thread-root reference; validated to live in the same channel. */
185
+ threadId?: string;
186
+ /** Optional inline mention ids (member or team). */
187
+ mentions?: string[];
188
+ /** Required audit metadata. Caller MUST set `source`. */
189
+ metadata: {
190
+ source: RecordTurnSource;
191
+ /** Which agent runtime emitted the message, when applicable. */
192
+ runtime?: 'claude-code' | 'gemini-cli' | 'crewly-agent';
193
+ /** Slack correlation fields for cross-store reconciliation. */
194
+ slackChannelId?: string;
195
+ slackThreadTs?: string;
196
+ /** Free-form additional context — not parsed by the store. */
197
+ [key: string]: unknown;
198
+ };
199
+ }
200
+ /** Result of {@link ChatV2Service.recordTurn}. */
201
+ export interface RecordTurnResult {
202
+ /** The persisted (or pre-existing, when deduped) message DTO. */
203
+ message: ChatMessageDTO;
204
+ /** True when `clientMessageId` matched an existing row. */
205
+ deduped: boolean;
206
+ }
207
+ /** Arguments for `listMessages`. */
208
+ export interface ListMessagesArgs {
209
+ channelId: string;
210
+ principal: ChatPrincipal;
211
+ cursor?: string | null;
212
+ limit?: number;
213
+ direction?: 'backward' | 'forward';
214
+ }
215
+ /**
216
+ * Orchestrator for chat domain operations.
217
+ *
218
+ * Responsibilities:
219
+ * - Owns the DB handle + stores.
220
+ * - Enforces authorization per §7.2.
221
+ * - Maps rows → DTOs.
222
+ * - Fans out to WebSocket / adapters in later phases.
223
+ */
224
+ export declare class ChatV2Service extends EventEmitter {
225
+ /** Phase A spec §3.2: max mention count per message. */
226
+ static readonly MAX_MENTIONS_PER_MESSAGE = 50;
227
+ /** Phase A spec §3.2: max JSON-encoded byte size of the mentions array. */
228
+ static readonly MAX_MENTIONS_JSON_BYTES = 1024;
229
+ readonly config: ChatV2Config;
230
+ private readonly db;
231
+ private readonly channels;
232
+ private readonly messages;
233
+ private presence;
234
+ private readonly validateTeamMembership;
235
+ private readonly now;
236
+ constructor(options: ChatV2ServiceOptions);
237
+ /**
238
+ * Wire (or replace) the synchronous presence provider used by the channel
239
+ * DTO mapper — i.e. what drives the DM presence dots in the conversation
240
+ * list. Settable POST-construction because the singleton is first-constructed
241
+ * by whichever caller wins the race (slack bridge, ws gateway, replay, …),
242
+ * usually with no presence wired; the composition root then calls this once
243
+ * so the dots reflect real agent liveness regardless of construction order.
244
+ *
245
+ * @param getPresence - Sync presence lookup (e.g. `createOssSyncPresence()`)
246
+ */
247
+ setPresenceProvider(getPresence: ChatV2ServiceOptions['getPresence']): void;
248
+ /** Release the DB handle. Safe to call during graceful shutdown / in tests. */
249
+ close(): void;
250
+ /**
251
+ * Count every persisted chat message across every channel.
252
+ *
253
+ * Onboarding v3 (B1) — surfaced for the cold-start detector. Defers to
254
+ * `MessageStore.countAll()`. Intentionally bypasses the principal /
255
+ * authorization layer because the caller is the orchestrator bootstrap,
256
+ * which runs without an HTTP-request principal context. The detector
257
+ * only needs an unsigned "is the store empty" answer; no row contents
258
+ * are exposed.
259
+ *
260
+ * @returns Total message count across all channels (0 on a fresh install)
261
+ */
262
+ countAllMessages(): number;
263
+ /**
264
+ * Phase 6.0 of unified-chat-message-store spec — replacement for the
265
+ * legacy `ChatService.updateMessageMetadata`. Merges a partial
266
+ * metadata object into the stored row's `metadata` JSON column using
267
+ * SQLite's `json_patch` (atomic, server-side).
268
+ *
269
+ * No principal check — this is a server-internal mutation path used
270
+ * by reconciliation jobs (Slack delivery status updates) and never
271
+ * exposed directly to user HTTP traffic. Phase 6c will retire the
272
+ * legacy method that called this; until then it is the only callable
273
+ * write-through for the existing reconciliation code.
274
+ *
275
+ * @param messageId - Message id to update
276
+ * @param patch - Shallow metadata patch to merge
277
+ * @returns The updated message DTO, or null if no such message exists
278
+ */
279
+ updateMessageMetadata(messageId: string, patch: Record<string, unknown>): ChatMessageDTO | null;
280
+ /**
281
+ * Phase 6.0 — replacement for the legacy
282
+ * `ChatService.getMessagesWithPendingSlackDelivery`. Returns the
283
+ * messages still marked `slackDeliveryStatus='pending'` within the
284
+ * caller-supplied lookback window, used by NotifyReconciliationService
285
+ * to retry stuck Slack deliveries.
286
+ *
287
+ * @param maxAgeMs - Lookback window in milliseconds
288
+ * @returns Pending-delivery messages, newest first, capped at MAX_LIMIT
289
+ */
290
+ findMessagesWithPendingSlackDelivery(maxAgeMs: number): ChatMessageDTO[];
291
+ /**
292
+ * Phase 6.0 — replacement for the legacy `ChatService.getStatistics`.
293
+ * Aggregate counts used by the boot-time telemetry and the
294
+ * admin/audit dashboards.
295
+ *
296
+ * @returns Active/archived channel counts plus total message count
297
+ */
298
+ getStatistics(): {
299
+ totalChannels: number;
300
+ activeChannels: number;
301
+ archivedChannels: number;
302
+ totalMessages: number;
303
+ };
304
+ /**
305
+ * Create a channel bound 1:1 to an agent session. Server always assigns
306
+ * `owner_user_id = principal.userId` — the body's owner fields are ignored.
307
+ *
308
+ * F2b (#333): when `type='channel'` and a `validateTeamMembership` provider
309
+ * is wired into the service, the principal must be authorized for the
310
+ * requested `teamId`. Failures throw `forbidden_team` (403) — distinct
311
+ * from generic `forbidden` so the FE can surface a tenant-specific
312
+ * message.
313
+ *
314
+ * @param args - Channel creation args
315
+ * @returns The created channel as a DTO
316
+ * @throws {ChatError} `validation_error` (400) / `forbidden_team` (403) /
317
+ * `agent_already_bound` (409)
318
+ */
319
+ createChannel(args: CreateChannelArgs): ChatChannelDTO;
320
+ /**
321
+ * Phase B-2 (2026-05-17) — create a huddle (ad-hoc multi-agent group
322
+ * channel). Creates a `type='huddle'` channel row with no team
323
+ * binding, then inserts one row per member into
324
+ * `chat_channel_members`. The dispatcher uses that roster to fan out
325
+ * subsequent user messages to every member; agents whose session is
326
+ * in the outgoing message's `mentions[]` get a "must respond"
327
+ * prompt, others get an "optional" one.
328
+ *
329
+ * @param args - name, optional purpose, member roster, owning principal
330
+ * @returns The created huddle channel as a DTO, with `members` populated
331
+ * @throws {ChatError} `validation_error` (400) when name is empty/too long,
332
+ * purpose too long, or memberSessions is empty / has too many entries.
333
+ */
334
+ createHuddle(args: CreateHuddleArgs): ChatChannelDTO;
335
+ /**
336
+ * Phase B-2 — list the members of a huddle channel. Returns an empty
337
+ * array (not an error) for non-huddle channels so consumers can call
338
+ * this unconditionally during channel rendering.
339
+ *
340
+ * @param channelId - The channel to enumerate
341
+ * @param principal - The caller; used to verify ownership
342
+ * @returns Array of `{ sessionName, joinedAt }` rows
343
+ * @throws {ChatError} `not_found` (404) when the channel doesn't exist or
344
+ * isn't owned by `principal`.
345
+ */
346
+ listHuddleMembers(channelId: string, principal: ChatPrincipal): ChatHuddleMember[];
347
+ /**
348
+ * Phase B-2 — dispatcher-facing roster lookup. Returns the session
349
+ * names of every member in a huddle, in `joined_at ASC` order.
350
+ * Unlike {@link listHuddleMembers} this is NOT principal-scoped:
351
+ * the dispatcher runs server-side and already holds the channel
352
+ * (it just persisted a message into it). Returns an empty array for
353
+ * non-huddle channels or unknown ids so the dispatcher's
354
+ * `members.length === 0` skip path stays clean.
355
+ *
356
+ * @param channelId - The huddle channel id
357
+ * @returns Array of agent session names
358
+ */
359
+ queryHuddleMembersForDispatch(channelId: string): string[];
360
+ /** Internal: read members straight from the DB (no ownership check). */
361
+ private queryHuddleMembers;
362
+ /**
363
+ * Idempotent DM channel lookup-or-create for the /agents page.
364
+ *
365
+ * Returns the most-recent active DM channel owned by `principal.userId`
366
+ * and bound to `agentSession`; creates a new one when none exists. The
367
+ * caller is the human owner (auth principal), unlike
368
+ * {@link ensureChannelForLegacyConversation} which runs as `'system'`
369
+ * for server-internal bridge paths.
370
+ *
371
+ * Used by `POST /api/chat/channels/dm/ensure` so the /agents page can
372
+ * map "user clicked an agent in the directory" → "send/receive messages
373
+ * on this channel" without leaking duplicate DMs every time the page
374
+ * is reloaded.
375
+ *
376
+ * @param args - Lookup-or-create args
377
+ * @returns The channel DTO plus a `created` flag (true when a new row
378
+ * was inserted; false when an existing row was reused).
379
+ * @throws {ChatError} `validation_error` (400) on empty `agentSession`
380
+ * or oversize `name` / `purpose`.
381
+ */
382
+ ensureDmChannel(args: {
383
+ agentSession: string;
384
+ name?: string;
385
+ purpose?: string;
386
+ principal: ChatPrincipal;
387
+ }): {
388
+ channel: ChatChannelDTO;
389
+ created: boolean;
390
+ };
391
+ /**
392
+ * Find-or-create the canonical `type='channel'` channel for a team.
393
+ *
394
+ * Backs the consolidated team-chat surface: opening a team's workspace
395
+ * deep-link must always land on a real channel, but nothing else
396
+ * auto-creates one. This is idempotent — if the team already has any
397
+ * active channel it is returned untouched; otherwise a single default
398
+ * channel (e.g. `#general`) is created. The same tenant/validation rules
399
+ * as the public {@link createChannel} apply (the caller must pass team
400
+ * membership when a `validateTeamMembership` check is wired).
401
+ *
402
+ * @param args - Ensure args
403
+ * @param args.teamId - The team to ensure a channel for (required)
404
+ * @param args.name - Display name for a freshly created channel; defaults to `#general`
405
+ * @param args.purpose - Optional channel purpose
406
+ * @param args.principal - The authenticated caller
407
+ * @returns The existing or freshly created channel, with `created` flag
408
+ * @throws {ChatError} `validation_error` (400) when `teamId` is blank
409
+ * @throws {ChatError} `forbidden_team` (403) when the caller fails the membership check
410
+ */
411
+ ensureTeamChannel(args: {
412
+ teamId: string;
413
+ name?: string;
414
+ purpose?: string;
415
+ principal: ChatPrincipal;
416
+ }): {
417
+ channel: ChatChannelDTO;
418
+ created: boolean;
419
+ };
420
+ /**
421
+ * Server-internal idempotent helper used by migration / bridge code to
422
+ * map a legacy conversationId (e.g. `slack-D0AC7-1234`, `web-conv-abc`)
423
+ * onto a chat-v2 channel row with the conversationId as the primary key.
424
+ *
425
+ * Unlike {@link createChannel}, this method:
426
+ * - Returns the existing channel when one already lives at the given
427
+ * id — idempotent for runtimes that call it before every recordTurn.
428
+ * - Accepts a synthetic owner (`'system'`) for paths where no human
429
+ * principal is on the call stack (PTY finish hooks, Slack inbound
430
+ * bridge, in-process runtime auto-route).
431
+ * - Sets `type='dm'` so the channel matches the conversation-per-thread
432
+ * legacy model the user approved (spec Option B).
433
+ *
434
+ * The `agent_already_bound` failure mode that existed in chat-v2 Phase A
435
+ * does not apply — the `uq_channel_agent_dm_active` index was dropped
436
+ * per the unified-chat-message-store spec exactly so this helper can
437
+ * lazy-create N concurrent DM channels for a single agent.
438
+ *
439
+ * @param args - Legacy bridge args
440
+ * @returns The existing or freshly created channel DTO
441
+ * @throws {ChatError} `validation_error` on missing id / agentSession
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * // Called from `routeInProcessResponseToChat` before `recordTurn`:
446
+ * const channel = chatV2.ensureChannelForLegacyConversation({
447
+ * conversationId: 'slack-D0AC7-1700000000.000111',
448
+ * agentSession: 'crewly-orc',
449
+ * });
450
+ * chatV2.recordTurn({ channelId: channel.id, ... });
451
+ * ```
452
+ */
453
+ ensureChannelForLegacyConversation(args: {
454
+ conversationId: string;
455
+ agentSession: string;
456
+ /** Display name; defaults to the conversationId. */
457
+ name?: string;
458
+ /** Owner id; defaults to `'system'` for server-internal callers. */
459
+ ownerUserId?: string;
460
+ }): ChatChannelDTO;
461
+ /**
462
+ * Phase 5 of unified-chat-message-store spec — idempotent import of one
463
+ * legacy conversation file (`~/.crewly/chat/<conversationId>.json`)
464
+ * into the chat-v2 SQLite store. Each legacy message becomes one
465
+ * `chat_messages` row keyed by a deterministic `clientMessageId` so
466
+ * re-running the import is safe — the underlying `MessageStore`
467
+ * dedups on `(channel_id, clientMessageId)`.
468
+ *
469
+ * Designed as a service method (not a free function) so the CLI
470
+ * migration script can call it per file and so callers can unit-test
471
+ * the mapping in isolation.
472
+ *
473
+ * The mapping:
474
+ * - `conversation.id` → `chat_channels.id` (via
475
+ * {@link ensureChannelForLegacyConversation}). `agentSession`
476
+ * defaults to `'crewly-orc'` because every legacy conversation was
477
+ * a DM between the user and the orchestrator.
478
+ * - `messages[].from.type === 'user'` → `senderType: 'user'`
479
+ * - `messages[].from.type === 'orchestrator'` (or 'agent') →
480
+ * `senderType: 'agent'`, `senderId: 'crewly-orc'`
481
+ * - Anything else → `senderType: 'system'`, `senderId: 'system'`
482
+ * - `messages[].id` → `clientMessageId = 'legacy-' + msg.id` for
483
+ * stable idempotency across re-runs.
484
+ * - `messages[].metadata.source` (legacy slack/web) → carried
485
+ * through; `recordTurn`'s required outer `metadata.source` is set
486
+ * to `'system'` to identify the migration as the writer.
487
+ *
488
+ * @param input - Parsed legacy JSON (the entire file body)
489
+ * @returns Per-message outcome (imported vs deduped) + the channel id
490
+ *
491
+ * @example
492
+ * ```typescript
493
+ * const json = JSON.parse(await readFile(filePath, 'utf-8'));
494
+ * const result = chatV2.importLegacyConversation(json);
495
+ * console.log(`Imported ${result.imported} new, ${result.deduped} dedup`);
496
+ * ```
497
+ */
498
+ importLegacyConversation(input: {
499
+ conversation: {
500
+ id: string;
501
+ };
502
+ messages: Array<{
503
+ id: string;
504
+ from: {
505
+ type: string;
506
+ name?: string;
507
+ };
508
+ content: string;
509
+ contentType?: string;
510
+ timestamp?: string;
511
+ metadata?: Record<string, unknown>;
512
+ }>;
513
+ }): {
514
+ channelId: string;
515
+ imported: number;
516
+ deduped: number;
517
+ skipped: number;
518
+ };
519
+ /**
520
+ * List channels owned by the caller.
521
+ *
522
+ * Phase C: extended with optional `type` + `teamId` filters so the
523
+ * channel-rail can request a focused slice (e.g. "channels in this
524
+ * workspace only") without paging the full owner-scoped list. An
525
+ * unknown `type` value is rejected as `validation_error`. Blank
526
+ * `teamId` is normalized to "no filter" so callers don't need to
527
+ * sanitize empty query strings.
528
+ *
529
+ * @param args - List args (principal + optional filters)
530
+ * @returns DTO-mapped channels
531
+ * @throws {ChatError} `validation_error` (400) when `type` is set
532
+ * to a value outside {@link CHAT_CHANNEL_TYPES}.
533
+ */
534
+ listChannels(args: ListChannelsArgs): ChatChannelDTO[];
535
+ /**
536
+ * Look up a single channel the caller owns.
537
+ *
538
+ * @param channelId - Channel id
539
+ * @param principal - Auth principal
540
+ * @returns DTO shape
541
+ * @throws {ChatError} `channel_not_found` (404) if the caller doesn't own it
542
+ */
543
+ getChannel(channelId: string, principal: ChatPrincipal): ChatChannelDTO;
544
+ /**
545
+ * Archive a channel. Returns true if a row was modified.
546
+ *
547
+ * @param channelId - Channel id
548
+ * @param principal - Auth principal
549
+ * @returns True if newly archived, false if already archived
550
+ * @throws {ChatError} `channel_not_found` (404)
551
+ */
552
+ archiveChannel(channelId: string, principal: ChatPrincipal): boolean;
553
+ /**
554
+ * Phase 6.0b — clear the `archived_at` flag on a channel. Inverse of
555
+ * {@link archiveChannel}; required to retire the legacy
556
+ * `unarchiveConversation` route.
557
+ *
558
+ * @param channelId - The channel to unarchive
559
+ * @param principal - Auth principal (must own the channel)
560
+ * @returns True if newly unarchived, false if already active
561
+ * @throws {ChatError} `channel_not_found` (404)
562
+ */
563
+ unarchiveChannel(channelId: string, principal: ChatPrincipal): boolean;
564
+ /**
565
+ * Phase 6.0b — rename a channel. Replaces the legacy
566
+ * `updateConversationTitle` route. Server validates the same name
567
+ * constraints as `createChannel`.
568
+ *
569
+ * @param channelId - The channel to rename
570
+ * @param name - New name (trimmed, ≤ maxChannelNameChars)
571
+ * @param principal - Auth principal (must own the channel)
572
+ * @returns The renamed channel DTO
573
+ * @throws {ChatError} `validation_error` (400) on empty / oversize name,
574
+ * `channel_not_found` (404)
575
+ */
576
+ renameChannel(channelId: string, name: string, principal: ChatPrincipal): ChatChannelDTO;
577
+ /**
578
+ * Phase 6.0b — hard-delete a channel and all its messages. Distinct
579
+ * from {@link archiveChannel} (soft delete). Replaces the legacy
580
+ * `deleteConversation` route. Uses SQLite FK cascade so the row
581
+ * deletion atomically removes child messages.
582
+ *
583
+ * @param channelId - The channel to delete
584
+ * @param principal - Auth principal (must own the channel)
585
+ * @returns True if removed, false if the channel didn't exist
586
+ * @throws {ChatError} `channel_not_found` (404)
587
+ */
588
+ deleteChannel(channelId: string, principal: ChatPrincipal): boolean;
589
+ /**
590
+ * Phase 6.0b — delete all messages in a channel while keeping the
591
+ * channel row. Replaces the legacy `clearConversation` route. Useful
592
+ * when the user wants a "fresh start" without losing the channel
593
+ * itself (and its bookkeeping like `agent_session` binding).
594
+ *
595
+ * @param channelId - The channel to clear
596
+ * @param principal - Auth principal (must own the channel)
597
+ * @returns Number of messages deleted
598
+ * @throws {ChatError} `channel_not_found` (404)
599
+ */
600
+ clearChannel(channelId: string, principal: ChatPrincipal): number;
601
+ /**
602
+ * Phase 6.0b — count messages in a single channel. Replaces the
603
+ * legacy `getMessageCount` filtered to one conversation.
604
+ *
605
+ * @param channelId - The channel to count
606
+ * @param principal - Auth principal (must own the channel)
607
+ * @returns Message count (0 for empty channels)
608
+ * @throws {ChatError} `channel_not_found` (404)
609
+ */
610
+ countChannelMessages(channelId: string, principal: ChatPrincipal): number;
611
+ /**
612
+ * Returns the text of recent OWNER-authored messages (`sender_type='user'`)
613
+ * across ALL channels, newest first, created at or after `sinceMs`.
614
+ *
615
+ * Purpose: the Commitment Approval Guard (2026-06-02 autonomy incident) needs
616
+ * an UNFAKEABLE signal of owner approval — the orchestrator can fabricate a
617
+ * WorkItem title claiming "owner approved", but it cannot fabricate the
618
+ * owner's actual chat history. This is a deliberate cross-channel read (no
619
+ * per-channel authorization) used only server-side by the guard; it returns
620
+ * message TEXT only, never agent/system messages.
621
+ *
622
+ * @param sinceMs - Unix epoch ms; only messages created at/after this are returned.
623
+ * @param limit - Max messages to return (default 100, capped at 500).
624
+ * @returns Owner message contents, newest first.
625
+ */
626
+ getRecentOwnerMessageContents(sinceMs: number, limit?: number): string[];
627
+ /**
628
+ * Persist a message sent by the caller. The server decides `sender_type`
629
+ * and `sender_id` from the auth principal; client fields are ignored.
630
+ *
631
+ * @param args - Send args
632
+ * @returns The persisted message as a DTO (fresh or deduped)
633
+ * @throws {ChatError} on validation, authorization, or size limit
634
+ */
635
+ sendMessage(args: SendMessageArgs): ChatMessageDTO;
636
+ /**
637
+ * Canonical server-internal write entry for chat messages.
638
+ *
639
+ * Unlike {@link sendMessage}, which derives `sender_type` / `sender_id`
640
+ * from an authenticated request principal, `recordTurn` is the path
641
+ * used by runtimes, controllers, and bridges that have already
642
+ * resolved exactly who the sender is — e.g.:
643
+ *
644
+ * - In-process agent runtime finishing a turn
645
+ * - PTY runtime emitting a complete reply
646
+ * - Slack inbound bridge persisting a user DM
647
+ * - `/slack/send` controller persisting the agent's outbound reply
648
+ *
649
+ * Per spec `2026-05-14-unified-chat-message-store.md`, every chat
650
+ * write in the system funnels through this method. No caller should
651
+ * write to {@link MessageStore} directly; no caller should reach
652
+ * into legacy {@link ChatService} (Phase 6 retires it).
653
+ *
654
+ * Idempotent via `clientMessageId` — the underlying store dedups by
655
+ * `(channel_id, clientMessageId)` and returns the existing row with
656
+ * `deduped=true` instead of inserting a duplicate.
657
+ *
658
+ * @param input - Turn payload (channel, sender, content, metadata)
659
+ * @returns The persisted message DTO + dedupe flag
660
+ * @throws {ChatError} `channel_not_found` (404) if the channel is missing
661
+ * @throws {ChatError} `validation_error` (400) on empty content or invalid contentType
662
+ * @throws {ChatError} `payload_too_large` (413) if content exceeds maxMessageBytes
663
+ *
664
+ * @example
665
+ * ```typescript
666
+ * const { message, deduped } = chatV2.recordTurn({
667
+ * channelId: 'slack-D0AC7-1234',
668
+ * senderType: 'agent',
669
+ * senderId: 'crewly-orc',
670
+ * content: 'Hello!',
671
+ * clientMessageId: 'agent-finish-2026-05-14T22:30:00Z',
672
+ * metadata: {
673
+ * source: 'in-process-runtime',
674
+ * runtime: 'crewly-agent',
675
+ * slackChannelId: 'D0AC7',
676
+ * slackThreadTs: '1234',
677
+ * },
678
+ * });
679
+ * ```
680
+ */
681
+ recordTurn(input: RecordTurnInput): RecordTurnResult;
682
+ /**
683
+ * Phase A — validate the mentions array passed to sendMessage.
684
+ * Returns the cleaned array (or undefined when input is empty/missing).
685
+ *
686
+ * @param raw - The raw `mentions` field from the request body
687
+ * @returns Validated mention IDs (caller passes to messageStore)
688
+ * @throws {ChatError} `validation_error` (400) on type / size / count violation
689
+ */
690
+ private validateMentions;
691
+ /**
692
+ * Phase A — validate the threadId passed to sendMessage.
693
+ *
694
+ * Returns the original threadId if it's a valid reference to a message
695
+ * in the same channel, or undefined when input is empty/missing.
696
+ * Refuses dangling references and cross-channel thread roots.
697
+ *
698
+ * @param raw - The raw `threadId` field from the request body
699
+ * @param channelId - The channel this message will be inserted into
700
+ * @returns Validated thread root id (caller passes to messageStore)
701
+ * @throws {ChatError} `validation_error` (400) when invalid
702
+ */
703
+ private validateThreadId;
704
+ /**
705
+ * Page messages for a channel the caller may read.
706
+ *
707
+ * @param args - List args
708
+ * @returns A pagination envelope
709
+ * @throws {ChatError} on auth or invalid cursor
710
+ */
711
+ listMessages(args: ListMessagesArgs): ChatMessageListResult;
712
+ /** Fetch the channel and enforce caller = owner. */
713
+ private requireOwnedChannel;
714
+ /**
715
+ * Fetch the channel and allow if the caller is the owner OR the bound agent
716
+ * OR the channel is a shared bridged Slack conversation.
717
+ *
718
+ * Slack-bridged channels (`slack-…`, persisted under the synthetic `'system'`
719
+ * owner by the inbound bridge) belong to no single Crewly user — exactly like
720
+ * {@link ChannelStore.listBridged} surfaces them in the consolidated list
721
+ * regardless of owner, this lets the web user READ them (e.g. the team-chat
722
+ * surface merges them inline into the Orchestrator timeline). Writes are still
723
+ * gated downstream by {@link resolveSender}, which throws `forbidden` unless
724
+ * the caller is the owner or bound agent — so this read allowance does not let
725
+ * a user post into a bridged channel.
726
+ *
727
+ * Used for read + send; agents must always be acting from their own session.
728
+ */
729
+ private requireReadableChannel;
730
+ /** Decide sender_type + sender_id for a message based on principal + channel. */
731
+ private resolveSender;
732
+ /** Map a channel row + live presence into the wire DTO. */
733
+ private toChannelDTO;
734
+ /** Map a message row to the wire DTO. Attachments passed in by the caller. */
735
+ private toMessageDTO;
736
+ }
737
+ //# sourceMappingURL=chat-v2.service.d.ts.map