crewly 1.6.4 → 1.7.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 (939) hide show
  1. package/config/roles/architect/prompt.md +68 -2
  2. package/config/roles/auditor/prompt.md +92 -0
  3. package/config/roles/backend-developer/prompt.md +68 -2
  4. package/config/roles/content-strategist/prompt.md +73 -5
  5. package/config/roles/designer/prompt.md +69 -4
  6. package/config/roles/developer/prompt.md +233 -5
  7. package/config/roles/frontend-developer/prompt.md +68 -2
  8. package/config/roles/fullstack-dev/prompt.md +68 -2
  9. package/config/roles/generalist/prompt.md +68 -2
  10. package/config/roles/ops/prompt.md +69 -3
  11. package/config/roles/orchestrator/fragments/communication.md +27 -0
  12. package/config/roles/orchestrator/fragments/role-boundary.md +1 -1
  13. package/config/roles/orchestrator/prompt.md +285 -70
  14. package/config/roles/product-manager/prompt.md +140 -7
  15. package/config/roles/qa/prompt.md +70 -5
  16. package/config/roles/qa-engineer/prompt.md +70 -5
  17. package/config/roles/researcher/prompt.md +68 -2
  18. package/config/roles/sales/prompt.md +70 -5
  19. package/config/roles/support/prompt.md +69 -4
  20. package/config/roles/team-leader/prompt.md +93 -6
  21. package/config/roles/team-leader/role-boundaries.md +26 -0
  22. package/config/roles/team-leader/tl-addon.md +153 -1
  23. package/config/roles/tpm/prompt.md +68 -2
  24. package/config/roles/ux-designer/prompt.md +70 -5
  25. package/config/skills/_common/complete-body-shape.test.sh +249 -0
  26. package/config/skills/agent/core/accept-task/execute.sh +18 -15
  27. package/config/skills/agent/core/block-task/execute.sh +27 -9
  28. package/config/skills/agent/core/cancel-followup/SKILL.md +18 -0
  29. package/config/skills/agent/core/complete-task/execute.sh +45 -7
  30. package/config/skills/agent/core/create-request/SKILL.md +1 -1
  31. package/config/skills/agent/core/create-request/execute.sh +29 -2
  32. package/config/skills/agent/core/create-request/execute.test.sh +168 -0
  33. package/config/skills/agent/core/create-task/execute.sh +40 -12
  34. package/config/skills/agent/core/get-my-active-work/SKILL.md +3 -1
  35. package/config/skills/agent/core/get-my-tasks/execute.sh +7 -5
  36. package/config/skills/agent/core/handoff-task/execute.sh +34 -48
  37. package/config/skills/agent/core/list-my-followups/SKILL.md +18 -0
  38. package/config/skills/agent/core/read-task/execute.sh +21 -8
  39. package/config/skills/agent/core/recall/SKILL.md +7 -0
  40. package/config/skills/agent/core/remember/SKILL.md +17 -1
  41. package/config/skills/agent/core/remember/execute.sh +5 -1
  42. package/config/skills/agent/core/reply-channel/SKILL.md +19 -0
  43. package/config/skills/agent/core/report-progress/execute.sh +39 -16
  44. package/config/skills/agent/core/report-status/SKILL.md +8 -1
  45. package/config/skills/agent/core/report-status/execute.sh +59 -13
  46. package/config/skills/agent/core/save-working-state/execute.sh +17 -6
  47. package/config/skills/agent/core/schedule-followup/SKILL.md +19 -0
  48. package/config/skills/agent/core/send-message/SKILL.md +6 -0
  49. package/config/skills/agent/core/supersede-memory/SKILL.md +76 -0
  50. package/config/skills/agent/core/supersede-memory/execute.sh +108 -0
  51. package/config/skills/agent/core/watch-for-event/SKILL.md +19 -0
  52. package/config/skills/agent/onboarding/materialize-team/SKILL.md +94 -0
  53. package/config/skills/agent/onboarding/materialize-team/execute.sh +98 -0
  54. package/config/skills/agent/onboarding/recommend-team/SKILL.md +90 -0
  55. package/config/skills/agent/onboarding/recommend-team/execute.sh +96 -0
  56. package/config/skills/agent/xhs-article-to-image/SKILL.md +20 -0
  57. package/config/skills/auditor/score-task/SKILL.md +15 -0
  58. package/config/skills/orchestrator/assign-task/execute.sh +28 -4
  59. package/config/skills/orchestrator/cancel-all-schedules/SKILL.md +15 -1
  60. package/config/skills/orchestrator/complete-task/execute.sh +45 -4
  61. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -0
  62. package/config/skills/orchestrator/delegate-task/execute.sh +41 -2
  63. package/config/skills/orchestrator/get-tasks/execute.sh +22 -18
  64. package/config/skills/orchestrator/heartbeat/execute.sh +48 -6
  65. package/config/skills/orchestrator/list-schedules/SKILL.md +15 -1
  66. package/config/skills/orchestrator/update-team-member/SKILL.md +20 -0
  67. package/config/skills/team-leader/decompose-goal/execute.sh +51 -20
  68. package/config/skills/team-leader/delegate-task/execute.sh +67 -26
  69. package/config/skills/team-leader/delegate-task/execute.test.sh +117 -0
  70. package/config/skills/team-leader/verify-output/execute.sh +19 -20
  71. package/config/slack-app-manifest.json +2 -1
  72. package/config/sops/common/dev-process-tiers.md +181 -0
  73. package/config/sops/common/mid-flight-milestone-surface.md +128 -0
  74. package/config/sops/common/owner-facing-communication.md +175 -0
  75. package/config/sops/developer/git-workflow.md +33 -0
  76. package/config/souls/orchestrator.md +8 -0
  77. package/config/souls/team-leader.md +77 -0
  78. package/dist/backend/backend/src/constants.d.ts +12 -0
  79. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  80. package/dist/backend/backend/src/constants.js +12 -0
  81. package/dist/backend/backend/src/constants.js.map +1 -1
  82. package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -1
  83. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +4 -1
  84. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts +8 -1
  86. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +30 -26
  88. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -9
  90. package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
  91. package/dist/backend/backend/src/controllers/api.controller.js +4 -32
  92. package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
  93. package/dist/backend/backend/src/controllers/browser/browser.controller.js +2 -2
  94. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  95. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  96. package/dist/backend/backend/src/controllers/chat/chat.controller.js +11 -2
  97. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  98. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +73 -0
  99. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  100. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +133 -2
  101. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  102. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +3 -0
  103. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  104. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +8 -0
  105. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  106. package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts +45 -0
  107. package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts.map +1 -0
  108. package/dist/backend/backend/src/controllers/checklist/checklist.controller.js +122 -0
  109. package/dist/backend/backend/src/controllers/checklist/checklist.controller.js.map +1 -0
  110. package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts +24 -0
  111. package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts.map +1 -1
  112. package/dist/backend/backend/src/controllers/memory/memory.controller.js +69 -1
  113. package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
  114. package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts +1 -0
  115. package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts.map +1 -1
  116. package/dist/backend/backend/src/controllers/memory/memory.routes.js +3 -1
  117. package/dist/backend/backend/src/controllers/memory/memory.routes.js.map +1 -1
  118. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  119. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +80 -5
  120. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  121. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +1 -0
  122. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
  123. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +30 -0
  124. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
  125. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts +41 -0
  126. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts.map +1 -0
  127. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js +213 -0
  128. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js.map +1 -0
  129. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts +21 -0
  130. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts.map +1 -0
  131. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js +27 -0
  132. package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js.map +1 -0
  133. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  134. package/dist/backend/backend/src/controllers/session/session.controller.js +50 -8
  135. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  136. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  137. package/dist/backend/backend/src/controllers/slack/slack.controller.js +236 -18
  138. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  139. package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts +13 -3
  140. package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts.map +1 -1
  141. package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js +29 -24
  142. package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js.map +1 -1
  143. package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
  144. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +61 -13
  145. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  146. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +159 -7
  147. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  148. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +421 -37
  149. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  150. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
  151. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +15 -1
  152. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
  153. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  154. package/dist/backend/backend/src/controllers/team/team.controller.js +221 -10
  155. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  156. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts +22 -0
  157. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts.map +1 -1
  158. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js +92 -0
  159. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js.map +1 -1
  160. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.d.ts.map +1 -1
  161. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js +6 -2
  162. package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js.map +1 -1
  163. package/dist/backend/backend/src/controllers/types.d.ts +1 -2
  164. package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
  165. package/dist/backend/backend/src/index.d.ts +5 -1
  166. package/dist/backend/backend/src/index.d.ts.map +1 -1
  167. package/dist/backend/backend/src/index.js +476 -100
  168. package/dist/backend/backend/src/index.js.map +1 -1
  169. package/dist/backend/backend/src/models/Project.d.ts +2 -0
  170. package/dist/backend/backend/src/models/Project.d.ts.map +1 -1
  171. package/dist/backend/backend/src/models/Project.js +10 -1
  172. package/dist/backend/backend/src/models/Project.js.map +1 -1
  173. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  174. package/dist/backend/backend/src/routes/api.routes.js +15 -2
  175. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  176. package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts +15 -0
  177. package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
  178. package/dist/backend/backend/src/routes/modules/task-management.routes.js +23 -43
  179. package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
  180. package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts +87 -0
  181. package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts.map +1 -0
  182. package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js +116 -0
  183. package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js.map +1 -0
  184. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +46 -6
  185. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +56 -13
  187. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +51 -0
  189. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  190. package/dist/backend/backend/src/services/agent/agent-registration.service.js +246 -9
  191. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  192. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +31 -5
  193. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +69 -29
  195. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  196. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +61 -1
  197. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
  198. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +230 -84
  199. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
  200. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
  201. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +5 -3
  202. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
  203. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +35 -0
  204. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +127 -3
  206. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
  207. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +79 -0
  208. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +1 -0
  209. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +145 -0
  210. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +1 -0
  211. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +64 -9
  212. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  213. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +125 -15
  214. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  215. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
  216. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +101 -33
  217. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
  218. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +76 -1
  219. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  220. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +73 -1
  221. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  222. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +33 -0
  223. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  224. package/dist/backend/backend/src/services/agent/idle-detection.service.js +108 -4
  225. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  226. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +5 -5
  227. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  228. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +22 -8
  229. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  230. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +10 -0
  231. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  232. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +160 -4
  233. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  234. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +37 -0
  235. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +77 -3
  237. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  238. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
  239. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
  240. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
  241. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
  242. package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
  243. package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
  244. package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
  245. package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
  246. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +4 -0
  247. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  248. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +4 -0
  249. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  250. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
  251. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
  252. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
  253. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
  254. package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
  255. package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
  256. package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
  257. package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
  258. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +45 -0
  260. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  261. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
  262. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  263. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  264. package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
  265. package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
  266. package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
  267. package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
  268. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
  269. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +28 -0
  270. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
  271. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +38 -6
  272. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -1
  273. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +73 -10
  274. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -1
  275. package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
  276. package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
  277. package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
  278. package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
  279. package/dist/backend/backend/src/services/autonomous/index.d.ts +7 -3
  280. package/dist/backend/backend/src/services/autonomous/index.d.ts.map +1 -1
  281. package/dist/backend/backend/src/services/autonomous/index.js +7 -3
  282. package/dist/backend/backend/src/services/autonomous/index.js.map +1 -1
  283. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  284. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +16 -22
  285. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  286. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +1 -1
  287. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +40 -2
  289. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  290. package/dist/backend/backend/src/services/chat/chat.service.d.ts +48 -331
  291. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/chat/chat.service.js +261 -712
  293. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +82 -1
  295. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +120 -2
  297. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  298. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +114 -0
  299. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -0
  300. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +182 -0
  301. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -0
  302. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts +188 -0
  303. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -0
  304. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +434 -0
  305. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -0
  306. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +414 -5
  307. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  308. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +634 -3
  309. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  310. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +93 -0
  311. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  312. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +138 -0
  313. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  314. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +46 -0
  315. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  316. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +75 -0
  317. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  318. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +21 -2
  319. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  320. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +229 -29
  321. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  322. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +55 -0
  323. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  324. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +94 -0
  325. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  326. package/dist/backend/backend/src/services/chat-v2/types.d.ts +33 -1
  327. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  328. package/dist/backend/backend/src/services/chat-v2/types.js +1 -1
  329. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  330. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +22 -0
  331. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  332. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +71 -1
  333. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  334. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +102 -1
  335. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  336. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +61 -0
  337. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  338. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +21 -3
  339. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -1
  340. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +47 -13
  341. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -1
  342. package/dist/backend/backend/src/services/core/config.service.d.ts.map +1 -1
  343. package/dist/backend/backend/src/services/core/config.service.js +8 -1
  344. package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
  345. package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts +51 -0
  346. package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
  347. package/dist/backend/backend/src/services/core/crewly-home.utils.js +59 -0
  348. package/dist/backend/backend/src/services/core/crewly-home.utils.js.map +1 -0
  349. package/dist/backend/backend/src/services/core/state-invariant.types.d.ts +53 -0
  350. package/dist/backend/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
  351. package/dist/backend/backend/src/services/core/state-invariant.types.js +61 -0
  352. package/dist/backend/backend/src/services/core/state-invariant.types.js.map +1 -0
  353. package/dist/backend/backend/src/services/core/storage.service.d.ts +20 -0
  354. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  355. package/dist/backend/backend/src/services/core/storage.service.js +96 -8
  356. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  357. package/dist/backend/backend/src/services/core/system-health.util.d.ts +25 -4
  358. package/dist/backend/backend/src/services/core/system-health.util.d.ts.map +1 -1
  359. package/dist/backend/backend/src/services/core/system-health.util.js +30 -5
  360. package/dist/backend/backend/src/services/core/system-health.util.js.map +1 -1
  361. package/dist/backend/backend/src/services/core/teams-backup.service.d.ts +94 -4
  362. package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
  363. package/dist/backend/backend/src/services/core/teams-backup.service.js +172 -10
  364. package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -1
  365. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  366. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +22 -11
  367. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  368. package/dist/backend/backend/src/services/index.d.ts +0 -2
  369. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  370. package/dist/backend/backend/src/services/index.js +0 -2
  371. package/dist/backend/backend/src/services/index.js.map +1 -1
  372. package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts +78 -0
  373. package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts.map +1 -0
  374. package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js +209 -0
  375. package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js.map +1 -0
  376. package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts +331 -0
  377. package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
  378. package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js +413 -0
  379. package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
  380. package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts.map +1 -1
  381. package/dist/backend/backend/src/services/intent-task/intent-task.service.js +13 -4
  382. package/dist/backend/backend/src/services/intent-task/intent-task.service.js.map +1 -1
  383. package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  384. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -13
  385. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  386. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
  387. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
  388. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
  389. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js.map +1 -0
  390. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  391. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +11 -15
  392. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  393. package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts +20 -0
  394. package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
  395. package/dist/backend/backend/src/services/memory/agent-memory.service.js +27 -2
  396. package/dist/backend/backend/src/services/memory/agent-memory.service.js.map +1 -1
  397. package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts +104 -0
  398. package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts.map +1 -0
  399. package/dist/backend/backend/src/services/memory/memory-supersession.service.js +127 -0
  400. package/dist/backend/backend/src/services/memory/memory-supersession.service.js.map +1 -0
  401. package/dist/backend/backend/src/services/memory/memory.service.d.ts +48 -17
  402. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  403. package/dist/backend/backend/src/services/memory/memory.service.js +97 -35
  404. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  405. package/dist/backend/backend/src/services/memory/mission-context.service.d.ts +168 -0
  406. package/dist/backend/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
  407. package/dist/backend/backend/src/services/memory/mission-context.service.js +365 -0
  408. package/dist/backend/backend/src/services/memory/mission-context.service.js.map +1 -0
  409. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
  410. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
  411. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
  412. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -0
  413. package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
  414. package/dist/backend/backend/src/services/memory/vector-store.service.js +7 -11
  415. package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
  416. package/dist/backend/backend/src/services/memory/working-memory.service.d.ts +232 -0
  417. package/dist/backend/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
  418. package/dist/backend/backend/src/services/memory/working-memory.service.js +417 -0
  419. package/dist/backend/backend/src/services/memory/working-memory.service.js.map +1 -0
  420. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +2 -4
  421. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -1
  422. package/dist/backend/backend/src/services/messaging/message-replay.service.js +22 -12
  423. package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -1
  424. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  425. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +48 -7
  426. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  427. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +2 -2
  428. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  429. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
  430. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +13 -3
  431. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
  432. package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts +27 -7
  433. package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts.map +1 -1
  434. package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js +66 -27
  435. package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js.map +1 -1
  436. package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.d.ts.map +1 -1
  437. package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js +2 -2
  438. package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js.map +1 -1
  439. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts +99 -0
  440. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts.map +1 -0
  441. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js +225 -0
  442. package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js.map +1 -0
  443. package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
  444. package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
  445. package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js +284 -0
  446. package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
  447. package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
  448. package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
  449. package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
  450. package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
  451. package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
  452. package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
  453. package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js +48 -0
  454. package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
  455. package/dist/backend/backend/src/services/observability/observability-db.d.ts +84 -0
  456. package/dist/backend/backend/src/services/observability/observability-db.d.ts.map +1 -0
  457. package/dist/backend/backend/src/services/observability/observability-db.js +165 -0
  458. package/dist/backend/backend/src/services/observability/observability-db.js.map +1 -0
  459. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +22 -0
  460. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -1
  461. package/dist/backend/backend/src/services/onboarding/onboarding.service.js +36 -0
  462. package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -1
  463. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +21 -2
  464. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -1
  465. package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -1
  466. package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js +12 -3
  467. package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -1
  468. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts +108 -0
  469. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -0
  470. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +165 -0
  471. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -0
  472. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +114 -0
  473. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -0
  474. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +299 -0
  475. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -0
  476. package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts +128 -0
  477. package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts.map +1 -0
  478. package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js +195 -0
  479. package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js.map +1 -0
  480. package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts +66 -0
  481. package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts.map +1 -0
  482. package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js +145 -0
  483. package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js.map +1 -0
  484. package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts +59 -0
  485. package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts.map +1 -0
  486. package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js +68 -0
  487. package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js.map +1 -0
  488. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts +67 -0
  489. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -0
  490. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +290 -0
  491. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -0
  492. package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts +23 -1
  493. package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -1
  494. package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js +64 -1
  495. package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js.map +1 -1
  496. package/dist/backend/backend/src/services/project/active-projects.service.d.ts.map +1 -1
  497. package/dist/backend/backend/src/services/project/active-projects.service.js +2 -2
  498. package/dist/backend/backend/src/services/project/active-projects.service.js.map +1 -1
  499. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  500. package/dist/backend/backend/src/services/project/task-tracking.service.js +2 -2
  501. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  502. package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
  503. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +2 -2
  504. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
  505. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +73 -6
  506. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  507. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +200 -25
  508. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  509. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +149 -2
  510. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  511. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +569 -24
  512. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  513. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  514. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +73 -7
  515. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  516. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +31 -18
  517. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  518. package/dist/backend/backend/src/services/session/session-handoff.service.js +103 -84
  519. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  520. package/dist/backend/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
  521. package/dist/backend/backend/src/services/session/session-state-persistence.js +15 -4
  522. package/dist/backend/backend/src/services/session/session-state-persistence.js.map +1 -1
  523. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  524. package/dist/backend/backend/src/services/settings/settings.service.js +25 -0
  525. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  526. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +14 -3
  527. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  528. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +28 -3
  529. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  530. package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  531. package/dist/backend/backend/src/services/skill/skill-executor.service.js +13 -1
  532. package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
  533. package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
  534. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +13 -18
  535. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
  536. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  537. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +9 -6
  538. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  539. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +66 -2
  540. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  541. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +318 -61
  542. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  543. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  544. package/dist/backend/backend/src/services/slack/slack.service.js +70 -0
  545. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  546. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -1
  547. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  548. package/dist/backend/backend/src/services/task-pool/pool-storage.js +31 -8
  549. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  550. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +216 -2
  551. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  552. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +562 -14
  553. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  554. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +14 -1
  555. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  556. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +128 -17
  557. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  558. package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts +95 -0
  559. package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -0
  560. package/dist/backend/backend/src/services/v3/cascade-request-status.js +200 -0
  561. package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -0
  562. package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
  563. package/dist/backend/backend/src/services/v3/escalation-router.service.js +42 -0
  564. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  565. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  566. package/dist/backend/backend/src/services/v3/mission-executor.service.js +25 -5
  567. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  568. package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts +87 -0
  569. package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts.map +1 -0
  570. package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js +152 -0
  571. package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js.map +1 -0
  572. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +253 -0
  573. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -0
  574. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +501 -0
  575. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -0
  576. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +55 -0
  577. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  578. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +262 -22
  579. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  580. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts +204 -0
  581. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -0
  582. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +617 -0
  583. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -0
  584. package/dist/backend/backend/src/services/v3/request.service.d.ts +107 -0
  585. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  586. package/dist/backend/backend/src/services/v3/request.service.js +155 -2
  587. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  588. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +108 -1
  589. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  590. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +238 -4
  591. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  592. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +50 -26
  593. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  594. package/dist/backend/backend/src/services/v3/v3-data.service.js +126 -161
  595. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  596. package/dist/backend/backend/src/services/v3/work-item-projection.d.ts +40 -0
  597. package/dist/backend/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
  598. package/dist/backend/backend/src/services/v3/work-item-projection.js +115 -0
  599. package/dist/backend/backend/src/services/v3/work-item-projection.js.map +1 -0
  600. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +137 -0
  601. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -0
  602. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +287 -0
  603. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -0
  604. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +1 -1
  605. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  606. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +26 -10
  607. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  608. package/dist/backend/backend/src/services/whatsapp/whatsapp.service.d.ts.map +1 -1
  609. package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js +11 -2
  610. package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js.map +1 -1
  611. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  612. package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -5
  613. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  614. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  615. package/dist/backend/backend/src/services/workflow/scheduler.service.js +68 -14
  616. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  617. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts +44 -0
  618. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts.map +1 -0
  619. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js +57 -0
  620. package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js.map +1 -0
  621. package/dist/backend/backend/src/types/credential.types.d.ts +17 -1
  622. package/dist/backend/backend/src/types/credential.types.d.ts.map +1 -1
  623. package/dist/backend/backend/src/types/credential.types.js +15 -5
  624. package/dist/backend/backend/src/types/credential.types.js.map +1 -1
  625. package/dist/backend/backend/src/types/cron-task.types.d.ts +17 -0
  626. package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
  627. package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
  628. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  629. package/dist/backend/backend/src/types/event-bus.types.js +24 -0
  630. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  631. package/dist/backend/backend/src/types/index.d.ts +11 -1
  632. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  633. package/dist/backend/backend/src/types/index.js +0 -2
  634. package/dist/backend/backend/src/types/index.js.map +1 -1
  635. package/dist/backend/backend/src/types/intent-task.types.d.ts +27 -11
  636. package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
  637. package/dist/backend/backend/src/types/intent-task.types.js +204 -40
  638. package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
  639. package/dist/backend/backend/src/types/memory.types.d.ts +53 -0
  640. package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
  641. package/dist/backend/backend/src/types/memory.types.js.map +1 -1
  642. package/dist/backend/backend/src/types/orchestrator-state.types.d.ts +49 -0
  643. package/dist/backend/backend/src/types/orchestrator-state.types.d.ts.map +1 -1
  644. package/dist/backend/backend/src/types/orchestrator-state.types.js +27 -0
  645. package/dist/backend/backend/src/types/orchestrator-state.types.js.map +1 -1
  646. package/dist/backend/backend/src/types/settings.types.d.ts +38 -2
  647. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  648. package/dist/backend/backend/src/types/settings.types.js +16 -2
  649. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  650. package/dist/backend/backend/src/types/v2/request.types.d.ts +5 -1
  651. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  652. package/dist/backend/backend/src/types/v2/request.types.js +2 -2
  653. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  654. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +63 -1
  655. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  656. package/dist/backend/backend/src/types/v2/work-item.types.js +20 -0
  657. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  658. package/dist/backend/backend/src/utils/esm-require.utils.d.ts +111 -0
  659. package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +1 -0
  660. package/dist/backend/backend/src/utils/esm-require.utils.js +124 -0
  661. package/dist/backend/backend/src/utils/esm-require.utils.js.map +1 -0
  662. package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
  663. package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
  664. package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js +212 -0
  665. package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
  666. package/dist/backend/backend/src/utils/native-binding.utils.d.ts +128 -0
  667. package/dist/backend/backend/src/utils/native-binding.utils.d.ts.map +1 -0
  668. package/dist/backend/backend/src/utils/native-binding.utils.js +206 -0
  669. package/dist/backend/backend/src/utils/native-binding.utils.js.map +1 -0
  670. package/dist/backend/backend/src/utils/node-require.utils.d.ts +104 -0
  671. package/dist/backend/backend/src/utils/node-require.utils.d.ts.map +1 -0
  672. package/dist/backend/backend/src/utils/node-require.utils.js +111 -0
  673. package/dist/backend/backend/src/utils/node-require.utils.js.map +1 -0
  674. package/dist/backend/backend/src/utils/team.utils.d.ts +3 -1
  675. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
  676. package/dist/backend/backend/src/utils/team.utils.js +26 -5
  677. package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
  678. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +23 -0
  679. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -1
  680. package/dist/backend/backend/src/websocket/chat-v2.gateway.js +56 -7
  681. package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -1
  682. package/dist/backend/backend/src/websocket/chat.gateway.d.ts +19 -4
  683. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  684. package/dist/backend/backend/src/websocket/chat.gateway.js +78 -63
  685. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  686. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  687. package/dist/backend/backend/src/websocket/terminal.gateway.js +10 -2
  688. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  689. package/dist/cli/backend/src/constants.d.ts +12 -0
  690. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  691. package/dist/cli/backend/src/constants.js +12 -0
  692. package/dist/cli/backend/src/constants.js.map +1 -1
  693. package/dist/cli/backend/src/models/Project.d.ts +2 -0
  694. package/dist/cli/backend/src/models/Project.d.ts.map +1 -1
  695. package/dist/cli/backend/src/models/Project.js +10 -1
  696. package/dist/cli/backend/src/models/Project.js.map +1 -1
  697. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
  698. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  699. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  700. package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -1
  701. package/dist/cli/backend/src/services/core/config.service.js +8 -1
  702. package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
  703. package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts +51 -0
  704. package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
  705. package/dist/cli/backend/src/services/core/crewly-home.utils.js +59 -0
  706. package/dist/cli/backend/src/services/core/crewly-home.utils.js.map +1 -0
  707. package/dist/cli/backend/src/services/core/state-invariant.types.d.ts +53 -0
  708. package/dist/cli/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
  709. package/dist/cli/backend/src/services/core/state-invariant.types.js +61 -0
  710. package/dist/cli/backend/src/services/core/state-invariant.types.js.map +1 -0
  711. package/dist/cli/backend/src/services/core/storage.service.d.ts +20 -0
  712. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  713. package/dist/cli/backend/src/services/core/storage.service.js +96 -8
  714. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  715. package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +94 -4
  716. package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
  717. package/dist/cli/backend/src/services/core/teams-backup.service.js +172 -10
  718. package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
  719. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts +245 -0
  720. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -0
  721. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +650 -0
  722. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -0
  723. package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  724. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -13
  725. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  726. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
  727. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
  728. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
  729. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js.map +1 -0
  730. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  731. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +11 -15
  732. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  733. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +20 -0
  734. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
  735. package/dist/cli/backend/src/services/memory/agent-memory.service.js +27 -2
  736. package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -1
  737. package/dist/cli/backend/src/services/memory/memory.service.d.ts +48 -17
  738. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  739. package/dist/cli/backend/src/services/memory/memory.service.js +97 -35
  740. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  741. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
  742. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
  743. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
  744. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -0
  745. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +236 -0
  746. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -0
  747. package/dist/cli/backend/src/services/messaging/message-queue.service.js +581 -0
  748. package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -0
  749. package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  750. package/dist/cli/backend/src/services/project/task-tracking.service.js +2 -2
  751. package/dist/cli/backend/src/services/project/task-tracking.service.js.map +1 -1
  752. package/dist/cli/backend/src/services/settings/settings.service.d.ts.map +1 -1
  753. package/dist/cli/backend/src/services/settings/settings.service.js +25 -0
  754. package/dist/cli/backend/src/services/settings/settings.service.js.map +1 -1
  755. package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  756. package/dist/cli/backend/src/services/skill/skill-executor.service.js +13 -1
  757. package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
  758. package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts +147 -0
  759. package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts.map +1 -0
  760. package/dist/cli/backend/src/services/slack/slack-thread-store.service.js +258 -0
  761. package/dist/cli/backend/src/services/slack/slack-thread-store.service.js.map +1 -0
  762. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -1
  763. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  764. package/dist/cli/backend/src/services/task-pool/pool-storage.js +31 -8
  765. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  766. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +490 -9
  767. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  768. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +1197 -121
  769. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  770. package/dist/cli/backend/src/services/v3/work-item-projection.d.ts +40 -0
  771. package/dist/cli/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
  772. package/dist/cli/backend/src/services/v3/work-item-projection.js +115 -0
  773. package/dist/cli/backend/src/services/v3/work-item-projection.js.map +1 -0
  774. package/dist/cli/backend/src/types/credential.types.d.ts +17 -1
  775. package/dist/cli/backend/src/types/credential.types.d.ts.map +1 -1
  776. package/dist/cli/backend/src/types/credential.types.js +15 -5
  777. package/dist/cli/backend/src/types/credential.types.js.map +1 -1
  778. package/dist/cli/backend/src/types/event-bus.types.d.ts +173 -0
  779. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -0
  780. package/dist/cli/backend/src/types/event-bus.types.js +230 -0
  781. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -0
  782. package/dist/cli/backend/src/types/index.d.ts +11 -1
  783. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  784. package/dist/cli/backend/src/types/index.js +0 -2
  785. package/dist/cli/backend/src/types/index.js.map +1 -1
  786. package/dist/cli/backend/src/types/memory.types.d.ts +53 -0
  787. package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
  788. package/dist/cli/backend/src/types/memory.types.js.map +1 -1
  789. package/dist/cli/backend/src/types/messaging.types.d.ts +223 -0
  790. package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -0
  791. package/dist/cli/backend/src/types/messaging.types.js +231 -0
  792. package/dist/cli/backend/src/types/messaging.types.js.map +1 -0
  793. package/dist/cli/backend/src/types/settings.types.d.ts +38 -2
  794. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  795. package/dist/cli/backend/src/types/settings.types.js +16 -2
  796. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  797. package/dist/cli/backend/src/types/slack.types.d.ts +356 -0
  798. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -0
  799. package/dist/cli/backend/src/types/slack.types.js +66 -0
  800. package/dist/cli/backend/src/types/slack.types.js.map +1 -0
  801. package/dist/cli/backend/src/types/v2/claim.types.d.ts +2 -5
  802. package/dist/cli/backend/src/types/v2/claim.types.d.ts.map +1 -1
  803. package/dist/cli/backend/src/types/v2/claim.types.js +2 -5
  804. package/dist/cli/backend/src/types/v2/claim.types.js.map +1 -1
  805. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +63 -1
  806. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  807. package/dist/cli/backend/src/types/v2/work-item.types.js +20 -0
  808. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  809. package/dist/cli/backend/src/utils/format-error.d.ts +8 -0
  810. package/dist/cli/backend/src/utils/format-error.d.ts.map +1 -0
  811. package/dist/cli/backend/src/utils/format-error.js +10 -0
  812. package/dist/cli/backend/src/utils/format-error.js.map +1 -0
  813. package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
  814. package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
  815. package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js +212 -0
  816. package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
  817. package/dist/cli/backend/src/utils/node-require.utils.d.ts +104 -0
  818. package/dist/cli/backend/src/utils/node-require.utils.d.ts.map +1 -0
  819. package/dist/cli/backend/src/utils/node-require.utils.js +111 -0
  820. package/dist/cli/backend/src/utils/node-require.utils.js.map +1 -0
  821. package/dist/cli/cli/src/commands/start.js +73 -12
  822. package/dist/cli/cli/src/commands/start.js.map +1 -1
  823. package/frontend/dist/assets/index-b279da34.js +4926 -0
  824. package/frontend/dist/assets/{index-b7e59b2b.css → index-c07e04c0.css} +2 -2
  825. package/frontend/dist/index.html +2 -2
  826. package/package.json +6 -2
  827. package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts +0 -63
  828. package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts.map +0 -1
  829. package/dist/backend/backend/src/controllers/eval/eval.controller.js +0 -228
  830. package/dist/backend/backend/src/controllers/eval/eval.controller.js.map +0 -1
  831. package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts +0 -23
  832. package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts.map +0 -1
  833. package/dist/backend/backend/src/controllers/eval/eval.routes.js +0 -37
  834. package/dist/backend/backend/src/controllers/eval/eval.routes.js.map +0 -1
  835. package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts +0 -8
  836. package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts.map +0 -1
  837. package/dist/backend/backend/src/controllers/knowledge-v3/index.js +0 -8
  838. package/dist/backend/backend/src/controllers/knowledge-v3/index.js.map +0 -1
  839. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts +0 -63
  840. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts.map +0 -1
  841. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js +0 -179
  842. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js.map +0 -1
  843. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts +0 -22
  844. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts.map +0 -1
  845. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js +0 -34
  846. package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js.map +0 -1
  847. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts +0 -130
  848. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts.map +0 -1
  849. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js +0 -406
  850. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js.map +0 -1
  851. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts +0 -68
  852. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts.map +0 -1
  853. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js +0 -206
  854. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js.map +0 -1
  855. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts +0 -32
  856. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts.map +0 -1
  857. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js +0 -46
  858. package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js.map +0 -1
  859. package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts +0 -87
  860. package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts.map +0 -1
  861. package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js +0 -299
  862. package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js.map +0 -1
  863. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts +0 -59
  864. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts.map +0 -1
  865. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js +0 -218
  866. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js.map +0 -1
  867. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts +0 -203
  868. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts.map +0 -1
  869. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js +0 -467
  870. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js.map +0 -1
  871. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts +0 -313
  872. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts.map +0 -1
  873. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js +0 -45
  874. package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js.map +0 -1
  875. package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts +0 -21
  876. package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts.map +0 -1
  877. package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js +0 -21
  878. package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js.map +0 -1
  879. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts +0 -15
  880. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts.map +0 -1
  881. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js +0 -349
  882. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js.map +0 -1
  883. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts +0 -97
  884. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts.map +0 -1
  885. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js +0 -414
  886. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js.map +0 -1
  887. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts +0 -42
  888. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts.map +0 -1
  889. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js +0 -403
  890. package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js.map +0 -1
  891. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts +0 -41
  892. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts.map +0 -1
  893. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js +0 -58
  894. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js.map +0 -1
  895. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts +0 -15
  896. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts.map +0 -1
  897. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js +0 -396
  898. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js.map +0 -1
  899. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts +0 -14
  900. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts.map +0 -1
  901. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js +0 -564
  902. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js.map +0 -1
  903. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts +0 -13
  904. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts.map +0 -1
  905. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js +0 -634
  906. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js.map +0 -1
  907. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts +0 -21
  908. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts.map +0 -1
  909. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js +0 -1036
  910. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js.map +0 -1
  911. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts +0 -100
  912. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts.map +0 -1
  913. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js +0 -187
  914. package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js.map +0 -1
  915. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +0 -79
  916. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +0 -1
  917. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +0 -118
  918. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +0 -1
  919. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +0 -113
  920. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +0 -1
  921. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +0 -179
  922. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +0 -1
  923. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +0 -131
  924. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +0 -1
  925. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +0 -227
  926. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +0 -1
  927. package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
  928. package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
  929. package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
  930. package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
  931. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +0 -97
  932. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +0 -1
  933. package/dist/backend/backend/src/services/memory/learning-format.validator.js +0 -209
  934. package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +0 -1
  935. package/frontend/dist/assets/index-7a4e7df5.js +0 -5228
  936. /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts +0 -0
  937. /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -0
  938. /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js +0 -0
  939. /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js.map +0 -0
@@ -2,12 +2,19 @@
2
2
  * Teams Backup Service
3
3
  *
4
4
  * Provides automatic backup and restore functionality for teams data.
5
- * Writes a backup file on every save/delete, and can detect mismatches
6
- * when teams data is lost but a backup exists.
5
+ *
6
+ * Two layers of durability:
7
+ * 1. **Live single-file backup** (`teams-backup.json`) — preserved for
8
+ * backward compat with the existing status / restore endpoints.
9
+ * 2. **Rotating ring buffer** (N=30 snapshots in `teams-backup-history/`) —
10
+ * introduced by Persistence P0 (A2). Even if a corrupting save propagates
11
+ * to the live backup, the previous N-1 slots remain intact.
7
12
  *
8
13
  * @module services/core/teams-backup.service
9
14
  */
10
15
  import type { Team } from '../../types/index.js';
16
+ /** Number of rotating snapshot slots to retain. */
17
+ export declare const MAX_HISTORY_SLOTS = 30;
11
18
  /**
12
19
  * Shape of the backup file
13
20
  */
@@ -31,19 +38,50 @@ export interface TeamsBackupStatus {
31
38
  backupTimestamp: string | null;
32
39
  }
33
40
  /**
34
- * TeamsBackupService manages a single backup file that reflects
35
- * the most recent known-good state of teams data.
41
+ * Single entry in the rotating-snapshot history.
42
+ */
43
+ export interface TeamsBackupHistoryEntry {
44
+ /** Slot index (0..MAX_HISTORY_SLOTS-1) */
45
+ slot: number;
46
+ /** ISO timestamp the snapshot was written */
47
+ timestamp: string;
48
+ /** Number of teams captured in the snapshot */
49
+ teamCount: number;
50
+ /** Whether this slot is the most recently written one */
51
+ isHead: boolean;
52
+ }
53
+ /**
54
+ * On-disk index that tracks the ring buffer.
55
+ */
56
+ export interface TeamsBackupHistoryIndex {
57
+ /** Slot index of the most recently written snapshot. -1 = empty. */
58
+ head: number;
59
+ /** Total snapshots written ever (monotonic; not the current count). */
60
+ written: number;
61
+ /** Per-slot metadata. Slots without data are omitted. */
62
+ slots: Record<number, {
63
+ timestamp: string;
64
+ teamCount: number;
65
+ }>;
66
+ }
67
+ /**
68
+ * TeamsBackupService manages the live single-file backup AND a rotating
69
+ * ring buffer of historical snapshots.
36
70
  *
37
71
  * @example
38
72
  * ```typescript
39
73
  * const backupService = TeamsBackupService.getInstance();
40
74
  * await backupService.updateBackup(teams);
41
75
  * const status = await backupService.getBackupStatus(currentTeams);
76
+ * const history = await backupService.getBackupHistory();
77
+ * const snapshot = await backupService.restoreFromSlot(2);
42
78
  * ```
43
79
  */
44
80
  export declare class TeamsBackupService {
45
81
  private static instance;
46
82
  private backupPath;
83
+ private historyDir;
84
+ private historyIndexPath;
47
85
  private logger;
48
86
  /**
49
87
  * Create a new TeamsBackupService.
@@ -66,6 +104,10 @@ export declare class TeamsBackupService {
66
104
  * Write or update the backup file with the current teams data.
67
105
  * Called after every successful saveTeam() or deleteTeam().
68
106
  *
107
+ * Writes both the live single-file backup AND a new rotating-snapshot
108
+ * slot. If history rotation fails, the live backup still proceeds —
109
+ * we never want a history-write bug to block the primary durability path.
110
+ *
69
111
  * @param teams - Current full list of teams
70
112
  */
71
113
  updateBackup(teams: Team[]): Promise<void>;
@@ -88,5 +130,53 @@ export declare class TeamsBackupService {
88
130
  * @returns Absolute path to the backup file
89
131
  */
90
132
  getBackupPath(): string;
133
+ /**
134
+ * Get the history directory path (for testing).
135
+ *
136
+ * @returns Absolute path to the rotating-snapshot directory
137
+ */
138
+ getHistoryDir(): string;
139
+ /**
140
+ * List all populated rotating-snapshot slots, newest first.
141
+ *
142
+ * @returns Array of slot metadata. Empty array if history is empty.
143
+ */
144
+ getBackupHistory(): Promise<TeamsBackupHistoryEntry[]>;
145
+ /**
146
+ * Read a single rotating-snapshot slot.
147
+ *
148
+ * @param slot - Slot index 0..MAX_HISTORY_SLOTS-1
149
+ * @returns Parsed snapshot or null if slot is empty / corrupted
150
+ */
151
+ readSlot(slot: number): Promise<TeamsBackup | null>;
152
+ /**
153
+ * Restore from a specific rotating-snapshot slot. The caller is
154
+ * responsible for re-saving each team via StorageService — this method
155
+ * just returns the snapshot contents.
156
+ *
157
+ * @param slot - Slot index 0..MAX_HISTORY_SLOTS-1
158
+ * @returns Snapshot to restore, or null if slot is empty
159
+ */
160
+ restoreFromSlot(slot: number): Promise<TeamsBackup | null>;
161
+ /**
162
+ * Read the rotating-snapshot index from disk.
163
+ *
164
+ * @returns Parsed index or null if it does not exist / is corrupted
165
+ */
166
+ private readHistoryIndex;
167
+ /**
168
+ * Write a new rotating snapshot, advancing the head pointer.
169
+ *
170
+ * Order matters: snapshot file written FIRST, then index. If the process
171
+ * dies between the two writes, we end up with an unreferenced slot file
172
+ * (harmless) rather than an index pointing at a half-written slot.
173
+ *
174
+ * @param teams - Teams to snapshot into the new slot
175
+ */
176
+ private writeRotatingSnapshot;
177
+ /**
178
+ * @returns A fresh empty history index (head=-1, no slots).
179
+ */
180
+ private emptyIndex;
91
181
  }
92
182
  //# sourceMappingURL=teams-backup.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"teams-backup.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/core/teams-backup.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAOjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAE1D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;;OAIG;gBACS,UAAU,CAAC,EAAE,MAAM;IAM/B;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAO3D;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAehD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI/C;;;;;OAKG;IACG,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoBvE;;;;OAIG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"teams-backup.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/core/teams-backup.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAcjD,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAYD;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAE1D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;;OAIG;gBACS,UAAU,CAAC,EAAE,MAAM;IAQ/B;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAO3D;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;OASG;IACG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyChD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI/C;;;;;OAKG;IACG,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoBvE;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAsB5D;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAQzD;;;;;;;OAOG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAQhE;;;;OAIG;YACW,gBAAgB;IAI9B;;;;;;;;OAQG;YACW,qBAAqB;IA4BnC;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -2,31 +2,56 @@
2
2
  * Teams Backup Service
3
3
  *
4
4
  * Provides automatic backup and restore functionality for teams data.
5
- * Writes a backup file on every save/delete, and can detect mismatches
6
- * when teams data is lost but a backup exists.
5
+ *
6
+ * Two layers of durability:
7
+ * 1. **Live single-file backup** (`teams-backup.json`) — preserved for
8
+ * backward compat with the existing status / restore endpoints.
9
+ * 2. **Rotating ring buffer** (N=30 snapshots in `teams-backup-history/`) —
10
+ * introduced by Persistence P0 (A2). Even if a corrupting save propagates
11
+ * to the live backup, the previous N-1 slots remain intact.
7
12
  *
8
13
  * @module services/core/teams-backup.service
9
14
  */
10
15
  import * as path from 'path';
11
16
  import * as os from 'os';
12
17
  import { LoggerService } from './logger.service.js';
13
- import { atomicWriteJson, safeReadJson } from '../../utils/file-io.utils.js';
14
- /** File name for the teams backup */
18
+ import { atomicWriteJson, safeReadJson, ensureDir } from '../../utils/file-io.utils.js';
19
+ import { atomicWriteJsonWithGuard, IntegrityViolationError, } from '../../utils/integrity-guarded-write.utils.js';
20
+ /** File name for the live (most-recent) teams backup */
15
21
  const BACKUP_FILENAME = 'teams-backup.json';
22
+ /** Subdirectory under crewlyHome that stores rotating snapshots */
23
+ const HISTORY_SUBDIR = 'teams-backup-history';
24
+ /** File name of the ring-buffer index */
25
+ const HISTORY_INDEX_FILENAME = 'index.json';
26
+ /** Number of rotating snapshot slots to retain. */
27
+ export const MAX_HISTORY_SLOTS = 30;
28
+ /**
29
+ * Format a slot index as a zero-padded 3-digit string for filenames.
30
+ *
31
+ * @param slot - Slot index 0..MAX_HISTORY_SLOTS-1
32
+ * @returns Zero-padded slot string, e.g. '007'
33
+ */
34
+ function pad3(slot) {
35
+ return slot.toString().padStart(3, '0');
36
+ }
16
37
  /**
17
- * TeamsBackupService manages a single backup file that reflects
18
- * the most recent known-good state of teams data.
38
+ * TeamsBackupService manages the live single-file backup AND a rotating
39
+ * ring buffer of historical snapshots.
19
40
  *
20
41
  * @example
21
42
  * ```typescript
22
43
  * const backupService = TeamsBackupService.getInstance();
23
44
  * await backupService.updateBackup(teams);
24
45
  * const status = await backupService.getBackupStatus(currentTeams);
46
+ * const history = await backupService.getBackupHistory();
47
+ * const snapshot = await backupService.restoreFromSlot(2);
25
48
  * ```
26
49
  */
27
50
  export class TeamsBackupService {
28
51
  static instance = null;
29
52
  backupPath;
53
+ historyDir;
54
+ historyIndexPath;
30
55
  logger;
31
56
  /**
32
57
  * Create a new TeamsBackupService.
@@ -37,6 +62,8 @@ export class TeamsBackupService {
37
62
  this.logger = LoggerService.getInstance().createComponentLogger('TeamsBackupService');
38
63
  const home = crewlyHome || path.join(os.homedir(), '.crewly');
39
64
  this.backupPath = path.join(home, BACKUP_FILENAME);
65
+ this.historyDir = path.join(home, HISTORY_SUBDIR);
66
+ this.historyIndexPath = path.join(this.historyDir, HISTORY_INDEX_FILENAME);
40
67
  }
41
68
  /**
42
69
  * Get singleton instance.
@@ -60,21 +87,49 @@ export class TeamsBackupService {
60
87
  * Write or update the backup file with the current teams data.
61
88
  * Called after every successful saveTeam() or deleteTeam().
62
89
  *
90
+ * Writes both the live single-file backup AND a new rotating-snapshot
91
+ * slot. If history rotation fails, the live backup still proceeds —
92
+ * we never want a history-write bug to block the primary durability path.
93
+ *
63
94
  * @param teams - Current full list of teams
64
95
  */
65
96
  async updateBackup(teams) {
97
+ // 1. Rotating snapshot (best-effort; never throws to caller)
98
+ try {
99
+ await this.writeRotatingSnapshot(teams);
100
+ }
101
+ catch (error) {
102
+ this.logger.warn('Failed to write rotating snapshot', {
103
+ error: error instanceof Error ? error.message : String(error),
104
+ });
105
+ }
106
+ // 2. Live single-file backup (integrity-guarded — refuses to wipe out
107
+ // a previously healthy backup with an empty teams list).
66
108
  try {
67
109
  const backup = {
68
110
  timestamp: new Date().toISOString(),
69
111
  teams,
70
112
  };
71
- await atomicWriteJson(this.backupPath, backup);
113
+ await atomicWriteJsonWithGuard(this.backupPath, backup, {
114
+ // backup file is shaped {timestamp, teams[]} — count by teams.length
115
+ countOf: (b) => (b && Array.isArray(b.teams) ? b.teams.length : 0),
116
+ });
72
117
  this.logger.debug('Teams backup updated', { teamCount: teams.length });
73
118
  }
74
119
  catch (error) {
75
- this.logger.warn('Failed to update teams backup', {
76
- error: error instanceof Error ? error.message : String(error),
77
- });
120
+ if (error instanceof IntegrityViolationError) {
121
+ this.logger.error('Teams backup integrity guard rejected write keeping prior healthy backup', {
122
+ path: error.path,
123
+ prevCount: error.prevCount,
124
+ nextCount: error.nextCount,
125
+ reason: error.reason,
126
+ });
127
+ }
128
+ else {
129
+ this.logger.warn('Failed to update teams backup', {
130
+ error: error instanceof Error ? error.message : String(error),
131
+ });
132
+ }
78
133
  }
79
134
  }
80
135
  /**
@@ -116,5 +171,112 @@ export class TeamsBackupService {
116
171
  getBackupPath() {
117
172
  return this.backupPath;
118
173
  }
174
+ /**
175
+ * Get the history directory path (for testing).
176
+ *
177
+ * @returns Absolute path to the rotating-snapshot directory
178
+ */
179
+ getHistoryDir() {
180
+ return this.historyDir;
181
+ }
182
+ /**
183
+ * List all populated rotating-snapshot slots, newest first.
184
+ *
185
+ * @returns Array of slot metadata. Empty array if history is empty.
186
+ */
187
+ async getBackupHistory() {
188
+ const index = await this.readHistoryIndex();
189
+ if (!index || index.written === 0) {
190
+ return [];
191
+ }
192
+ const entries = Object.entries(index.slots).map(([slotStr, meta]) => ({
193
+ slot: Number(slotStr),
194
+ timestamp: meta.timestamp,
195
+ teamCount: meta.teamCount,
196
+ isHead: Number(slotStr) === index.head,
197
+ }));
198
+ // Newest-first: head slot first, then by timestamp descending.
199
+ entries.sort((a, b) => {
200
+ if (a.isHead)
201
+ return -1;
202
+ if (b.isHead)
203
+ return 1;
204
+ return b.timestamp.localeCompare(a.timestamp);
205
+ });
206
+ return entries;
207
+ }
208
+ /**
209
+ * Read a single rotating-snapshot slot.
210
+ *
211
+ * @param slot - Slot index 0..MAX_HISTORY_SLOTS-1
212
+ * @returns Parsed snapshot or null if slot is empty / corrupted
213
+ */
214
+ async readSlot(slot) {
215
+ if (!Number.isInteger(slot) || slot < 0 || slot >= MAX_HISTORY_SLOTS) {
216
+ return null;
217
+ }
218
+ const slotPath = path.join(this.historyDir, `teams-backup-${pad3(slot)}.json`);
219
+ return safeReadJson(slotPath, null, this.logger);
220
+ }
221
+ /**
222
+ * Restore from a specific rotating-snapshot slot. The caller is
223
+ * responsible for re-saving each team via StorageService — this method
224
+ * just returns the snapshot contents.
225
+ *
226
+ * @param slot - Slot index 0..MAX_HISTORY_SLOTS-1
227
+ * @returns Snapshot to restore, or null if slot is empty
228
+ */
229
+ async restoreFromSlot(slot) {
230
+ return this.readSlot(slot);
231
+ }
232
+ // ──────────────────────────────────────────────────────────────────
233
+ // Internal: rotating snapshot machinery
234
+ // ──────────────────────────────────────────────────────────────────
235
+ /**
236
+ * Read the rotating-snapshot index from disk.
237
+ *
238
+ * @returns Parsed index or null if it does not exist / is corrupted
239
+ */
240
+ async readHistoryIndex() {
241
+ return safeReadJson(this.historyIndexPath, null, this.logger);
242
+ }
243
+ /**
244
+ * Write a new rotating snapshot, advancing the head pointer.
245
+ *
246
+ * Order matters: snapshot file written FIRST, then index. If the process
247
+ * dies between the two writes, we end up with an unreferenced slot file
248
+ * (harmless) rather than an index pointing at a half-written slot.
249
+ *
250
+ * @param teams - Teams to snapshot into the new slot
251
+ */
252
+ async writeRotatingSnapshot(teams) {
253
+ await ensureDir(this.historyDir);
254
+ const prevIndex = (await this.readHistoryIndex()) ?? this.emptyIndex();
255
+ const nextSlot = prevIndex.written === 0 ? 0 : (prevIndex.head + 1) % MAX_HISTORY_SLOTS;
256
+ const timestamp = new Date().toISOString();
257
+ const slotPath = path.join(this.historyDir, `teams-backup-${pad3(nextSlot)}.json`);
258
+ const snapshot = { timestamp, teams };
259
+ await atomicWriteJson(slotPath, snapshot);
260
+ const nextIndex = {
261
+ head: nextSlot,
262
+ written: prevIndex.written + 1,
263
+ slots: {
264
+ ...prevIndex.slots,
265
+ [nextSlot]: { timestamp, teamCount: teams.length },
266
+ },
267
+ };
268
+ await atomicWriteJson(this.historyIndexPath, nextIndex);
269
+ this.logger.debug('Rotating snapshot written', {
270
+ slot: nextSlot,
271
+ teamCount: teams.length,
272
+ writtenTotal: nextIndex.written,
273
+ });
274
+ }
275
+ /**
276
+ * @returns A fresh empty history index (head=-1, no slots).
277
+ */
278
+ emptyIndex() {
279
+ return { head: -1, written: 0, slots: {} };
280
+ }
119
281
  }
120
282
  //# sourceMappingURL=teams-backup.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"teams-backup.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/teams-backup.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teams-backup.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/teams-backup.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Event Bus Service
3
+ *
4
+ * Central pub/sub service for agent lifecycle events. Agents publish events
5
+ * (idle, busy, active, inactive) and subscribers receive notifications when
6
+ * matching events occur. Notifications are delivered via the MessageQueueService
7
+ * to the orchestrator terminal.
8
+ *
9
+ * @module services/event-bus/event-bus
10
+ */
11
+ import { EventEmitter } from 'events';
12
+ import type { MessageQueueService } from '../messaging/message-queue.service.js';
13
+ import type { SlackThreadStoreService } from '../slack/slack-thread-store.service.js';
14
+ import type { AgentEvent, EventSubscription, CreateSubscriptionInput, EventType } from '../../types/event-bus.types.js';
15
+ /**
16
+ * In-process event handler signature used by {@link EventBusService.onInProcess}.
17
+ *
18
+ * Handlers may be sync or async. Async handlers run concurrently with the
19
+ * publisher's synchronous control flow — `publish()` does NOT await pending
20
+ * promises, but rejected promises are caught and logged, never propagated.
21
+ */
22
+ export type InProcessEventHandler = (event: AgentEvent) => void | Promise<void>;
23
+ /**
24
+ * Detach function returned by {@link EventBusService.onInProcess}. Invoke to
25
+ * unregister the handler from the bus. Idempotent — calling more than once is
26
+ * a no-op.
27
+ */
28
+ export type InProcessUnsubscribe = () => void;
29
+ /**
30
+ * EventBusService manages event subscriptions and publishes agent lifecycle
31
+ * events. When an event matches a subscription, a notification message is
32
+ * enqueued into the MessageQueueService for delivery to the subscriber.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const eventBus = new EventBusService();
37
+ * eventBus.setMessageQueueService(queueService);
38
+ *
39
+ * eventBus.subscribe({
40
+ * eventType: 'agent:idle',
41
+ * filter: { sessionName: 'agent-joe' },
42
+ * subscriberSession: 'crewly-orc',
43
+ * oneShot: true,
44
+ * });
45
+ *
46
+ * eventBus.publish(agentIdleEvent);
47
+ * ```
48
+ */
49
+ export declare class EventBusService extends EventEmitter {
50
+ private logger;
51
+ private subscriptions;
52
+ private messageQueueService;
53
+ private slackThreadStore;
54
+ private cleanupInterval;
55
+ private deliveryCount;
56
+ /**
57
+ * Buffered notifications pending delivery after debounce window.
58
+ * Key: `${subscriberSession}:${event.sessionName}` for per-agent dedup.
59
+ * When the same agent fires multiple events within the debounce window,
60
+ * only the latest event is kept (deduplication by overwrite).
61
+ */
62
+ private pendingNotifications;
63
+ /** Debounce timer for batching event notifications */
64
+ private batchTimer;
65
+ /** Hard-deadline timer that forces a flush even if debounce keeps resetting */
66
+ private maxWaitTimer;
67
+ /**
68
+ * Dedup guard for publish(): ignores duplicate events for the same
69
+ * (type, sessionName) within EVENT_DEBOUNCE_WINDOW_MS (5s).
70
+ * Key: `${eventType}:${sessionName}`, value: timestamp (ms).
71
+ */
72
+ private recentPublishMap;
73
+ /**
74
+ * In-process subscribers keyed by event type. Used by internal services
75
+ * (EventToWorkItemBridge, LEARN-1's auto-record-learning subscriber) that
76
+ * need to react to events synchronously without going through the
77
+ * agent-session subscription queue.
78
+ *
79
+ * The agent-session subscriptions ({@link subscriptions}) and these
80
+ * in-process handlers are intentionally separate — the former routes
81
+ * through MessageQueueService and is rate-limited / debounced, the
82
+ * latter fires immediately and is meant for trusted internal callers.
83
+ */
84
+ private inProcessHandlers;
85
+ constructor();
86
+ /**
87
+ * Set the MessageQueueService instance for delivering notifications.
88
+ *
89
+ * @param service - The MessageQueueService instance
90
+ */
91
+ setMessageQueueService(service: MessageQueueService): void;
92
+ /**
93
+ * Set the SlackThreadStoreService for enriching notifications with thread paths.
94
+ *
95
+ * @param store - The SlackThreadStoreService instance
96
+ */
97
+ setSlackThreadStore(store: SlackThreadStoreService): void;
98
+ /**
99
+ * Create a new event subscription.
100
+ *
101
+ * @param input - Subscription configuration
102
+ * @returns The created EventSubscription
103
+ * @throws Error if input is invalid or limits are exceeded
104
+ */
105
+ subscribe(input: CreateSubscriptionInput): EventSubscription;
106
+ /**
107
+ * Remove a subscription by ID.
108
+ *
109
+ * @param subscriptionId - ID of the subscription to remove
110
+ * @returns True if the subscription was found and removed
111
+ */
112
+ unsubscribe(subscriptionId: string): boolean;
113
+ /**
114
+ * Publish an event to all matching subscriptions.
115
+ * For each match, formats a notification message and enqueues it
116
+ * into the MessageQueueService for delivery to the subscriber.
117
+ *
118
+ * @param event - The agent lifecycle event to publish
119
+ */
120
+ publish(event: AgentEvent): void;
121
+ /**
122
+ * Register an in-process handler for one or more event types.
123
+ *
124
+ * Used by trusted internal services (EventToWorkItemBridge, LEARN-1's
125
+ * auto-record-learning subscriber) that need synchronous reactivity to
126
+ * the event stream without going through the agent-session subscription
127
+ * queue. These handlers fire from `publish()` immediately after the
128
+ * `event_published` EventEmitter signal, before the debounced
129
+ * notification flush, so callers can rely on the same publish ordering
130
+ * semantics as `EventEmitter.on('event_published', …)` listeners.
131
+ *
132
+ * Handler errors are isolated:
133
+ * - synchronous throws are caught and logged
134
+ * - rejected promises returned by async handlers are caught and logged
135
+ * - neither propagates to other in-process handlers nor to the
136
+ * publisher's `publish()` call site
137
+ *
138
+ * Returned `unsubscribe` is idempotent.
139
+ *
140
+ * @param eventTypes - One event type or an array of event types to listen for
141
+ * @param handler - Sync or async handler invoked once per matching event
142
+ * @returns A function that detaches the handler when called
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * const unsubscribe = eventBus.onInProcess(
147
+ * ['task:done_by_worker', 'task:rejected'],
148
+ * async (event) => {
149
+ * await bridge.handleTaskEvent(event);
150
+ * },
151
+ * );
152
+ * // Later: unsubscribe();
153
+ * ```
154
+ */
155
+ onInProcess(eventTypes: EventType | EventType[], handler: InProcessEventHandler): InProcessUnsubscribe;
156
+ /**
157
+ * Invoke every in-process handler registered for an event's type.
158
+ * Sync throws and async rejections are caught + logged; never propagated.
159
+ *
160
+ * @param event - The event being published
161
+ */
162
+ private dispatchInProcess;
163
+ /**
164
+ * List subscriptions, optionally filtered by subscriber session.
165
+ *
166
+ * @param subscriberSession - Optional session name to filter by
167
+ * @returns Array of matching subscriptions
168
+ */
169
+ listSubscriptions(subscriberSession?: string): EventSubscription[];
170
+ /**
171
+ * Get a specific subscription by ID.
172
+ *
173
+ * @param subscriptionId - ID of the subscription
174
+ * @returns The subscription or undefined
175
+ */
176
+ getSubscription(subscriptionId: string): EventSubscription | undefined;
177
+ /**
178
+ * Get event bus statistics.
179
+ *
180
+ * @returns Stats object with subscription and delivery counts
181
+ */
182
+ getStats(): {
183
+ subscriptionCount: number;
184
+ deliveryCount: number;
185
+ };
186
+ /**
187
+ * Stop the cleanup timer and clear all subscriptions.
188
+ */
189
+ cleanup(): void;
190
+ /**
191
+ * Buffer a notification for debounced delivery with per-agent deduplication.
192
+ * Critical events (task:completed, task:failed, agent:inactive, etc.) bypass
193
+ * the debounce buffer and are delivered immediately to avoid notification delay.
194
+ *
195
+ * @param sub - The subscription whose subscriber should receive the message
196
+ * @param message - The formatted notification message
197
+ * @param event - The original agent event
198
+ */
199
+ private bufferNotification;
200
+ /**
201
+ * Deliver a notification immediately without debouncing.
202
+ * Used for critical events that must reach the subscriber ASAP.
203
+ *
204
+ * @param subscriberSession - The session to deliver to
205
+ * @param message - The formatted notification message
206
+ */
207
+ private deliverImmediately;
208
+ /**
209
+ * Flush all buffered notifications as a single combined message.
210
+ * Groups by subscriber session and delivers one enqueue per subscriber.
211
+ */
212
+ private flushNotifications;
213
+ /**
214
+ * Check if an event matches a subscription's type and filter criteria.
215
+ *
216
+ * @param event - The event to check
217
+ * @param sub - The subscription to match against
218
+ * @returns True if the event matches the subscription
219
+ */
220
+ private matchesSubscription;
221
+ /**
222
+ * Format a notification message for an event and subscription.
223
+ *
224
+ * @param event - The event that triggered the notification
225
+ * @param sub - The subscription that matched
226
+ * @returns Formatted notification message string
227
+ */
228
+ private formatNotification;
229
+ /**
230
+ * Get the number of subscriptions for a given subscriber session.
231
+ *
232
+ * @param subscriberSession - Session name to count
233
+ * @returns Number of subscriptions
234
+ */
235
+ private getSubscriptionCountForSession;
236
+ /**
237
+ * Start the periodic cleanup timer to remove expired subscriptions.
238
+ */
239
+ private startCleanup;
240
+ /**
241
+ * Remove all expired subscriptions.
242
+ */
243
+ private cleanupExpired;
244
+ }
245
+ //# sourceMappingURL=event-bus.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/event-bus/event-bus.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,SAAS,EACV,MAAM,gCAAgC,CAAC;AAGxC;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAc9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB,CAAgD;IAE5E,sDAAsD;IACtD,OAAO,CAAC,UAAU,CAA8C;IAEhE,+EAA+E;IAC/E,OAAO,CAAC,YAAY,CAA8C;IAElE;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB,CAAyD;;IAQlF;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1D;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAIzD;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,uBAAuB,GAAG,iBAAiB;IAoD5D;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAQ5C;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAiGhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CACT,UAAU,EAAE,SAAS,GAAG,SAAS,EAAE,EACnC,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB;IAiCvB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;;OAKG;IACH,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAQlE;;;;;OAKG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAItE;;;;OAIG;IACH,QAAQ,IAAI;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAOhE;;OAEG;IACH,OAAO,IAAI,IAAI;IAyBf;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IAUtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,cAAc;CAuBvB"}