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
@@ -1,113 +0,0 @@
1
- /**
2
- * Cloud Event Inbound Bridge — autonomy_v1.f1
3
- *
4
- * Receives `'event'` MessageType inbound from the Cloud Relay (via the
5
- * existing CloudSyncService poll → `'message'` event-emitter hop) and
6
- * re-publishes the carried AgentEvent onto the local EventBusService with
7
- * `source = 'remote'` and `originDeviceId` stamped from the wire envelope.
8
- *
9
- * Compose-at-boundary discipline (per Arch verdict 2026-04-28 N1):
10
- * - CloudSyncService stays a transport — it polls Cloud, dedupes by
11
- * `processedMessageIds`, emits an in-process `'message'` event.
12
- * - This service is the AgentEvent translator. It owns the bridge between
13
- * the cloud message vocabulary (`MessageType` + `EventMessagePayload`)
14
- * and the local event-bus vocabulary (`AgentEvent`). It does NOT touch
15
- * the poll loop or the cloud transport.
16
- *
17
- * Mirrors the BRIDGE-1 ↔ EventBus separation pattern: CloudSync EMITS,
18
- * downstream LISTENS. Same shape as PR #347 (BrandOnboarding ⊥
19
- * OnboardingService) and PR #348 (StatusBadge ⊥ RequestStatusPill) where
20
- * two parallel modules share a single narrow artifact.
21
- *
22
- * Idempotency:
23
- * The local LRU at CloudSyncService blocks at-least-once cloud-message-id
24
- * re-delivery upstream. The recent-publish suppression in EventBusService
25
- * (post-M2 fix: `${type}:${sessionName}:${event.id}`) catches any
26
- * duplicate that slips through to the publish boundary. The TriggerEngine
27
- * per-trigger dedup `${triggerId}:${event.id}` (Slice 3) is the third
28
- * layer at the trigger fire boundary.
29
- *
30
- * Unknown peer event types (Arch Q4):
31
- * The closed `EVENT_TYPES` enum stays closed. Bridge accepts any string
32
- * at the wire boundary via `RemoteEventType = string` and casts to
33
- * `EventType` at the local re-publish boundary so the rest of the
34
- * pipeline sees a stable type. A debug log names any unrecognised type
35
- * so ops can audit drift.
36
- *
37
- * @module services/cloud/cloud-event-bridge.service
38
- */
39
- import { type ComponentLogger } from '../core/logger.service.js';
40
- import type { EventBusService } from '../event-bus/event-bus.service.js';
41
- import { type IncomingMessage } from './cloud-sync.types.js';
42
- /**
43
- * Minimum shape this bridge needs from the upstream cloud transport.
44
- * Defined locally rather than importing the full {@link CloudSyncService}
45
- * type so the bridge is unit-testable with a tiny mock and isn't coupled
46
- * to the whole transport surface.
47
- */
48
- export interface CloudMessageEmitter {
49
- on(eventName: 'message', listener: (msg: IncomingMessage) => void): this;
50
- off(eventName: 'message', listener: (msg: IncomingMessage) => void): this;
51
- }
52
- /**
53
- * Constructor dependencies for the inbound bridge.
54
- */
55
- export interface CloudEventInboundBridgeDeps {
56
- /** Cloud transport that emits 'message' events (CloudSyncService in prod). */
57
- cloudSync: CloudMessageEmitter;
58
- /** Local event bus the bridge publishes onto. */
59
- eventBus: EventBusService;
60
- /** Optional logger override (test isolation). */
61
- logger?: ComponentLogger;
62
- }
63
- /**
64
- * Bridges inbound cross-machine events from Cloud Relay → local EventBus.
65
- *
66
- * @example
67
- * ```typescript
68
- * const bridge = new CloudEventInboundBridge({
69
- * cloudSync: CloudSyncService.getInstance(),
70
- * eventBus: EventBusService.getInstance(),
71
- * });
72
- * bridge.start();
73
- * // ... later
74
- * bridge.stop();
75
- * ```
76
- */
77
- export declare class CloudEventInboundBridge {
78
- private readonly logger;
79
- private readonly cloudSync;
80
- private readonly eventBus;
81
- /**
82
- * Bound listener kept so {@link stop} can detach it cleanly. Without
83
- * this, repeated start/stop cycles (dev reloads, tests) would leak
84
- * additional listeners.
85
- */
86
- private listener;
87
- /** Whether the bridge is currently subscribed. */
88
- private running;
89
- /**
90
- * Construct the bridge. Subscription does NOT start until
91
- * {@link start} is called explicitly so callers control lifecycle.
92
- */
93
- constructor(deps: CloudEventInboundBridgeDeps);
94
- /**
95
- * Subscribe to the cloud transport's `'message'` event. Idempotent — a
96
- * second `start()` call is a no-op.
97
- */
98
- start(): void;
99
- /**
100
- * Detach the cloud transport listener. Safe to call when not running.
101
- */
102
- stop(): void;
103
- /**
104
- * Process a single inbound cloud message. Filters on `type === 'event'`,
105
- * validates the payload shape, then re-publishes the carried AgentEvent
106
- * onto the local EventBus with `source = 'remote'` + `originDeviceId`.
107
- *
108
- * Public for unit tests only; production code should drive the bridge
109
- * via the cloud transport's `'message'` event.
110
- */
111
- handle(msg: IncomingMessage): void;
112
- }
113
- //# sourceMappingURL=cloud-event-bridge.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud-event-bridge.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-event-bridge.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAOzE,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,8EAA8E;IAC9E,SAAS,EAAE,mBAAmB,CAAC;IAC/B,iDAAiD;IACjD,QAAQ,EAAE,eAAe,CAAC;IAC1B,iDAAiD;IACjD,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,uBAAuB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAiD;IAEjE,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;gBACS,IAAI,EAAE,2BAA2B;IAQ7C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAoBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;;;;;OAOG;IACI,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;CAwDzC"}
@@ -1,179 +0,0 @@
1
- /**
2
- * Cloud Event Inbound Bridge — autonomy_v1.f1
3
- *
4
- * Receives `'event'` MessageType inbound from the Cloud Relay (via the
5
- * existing CloudSyncService poll → `'message'` event-emitter hop) and
6
- * re-publishes the carried AgentEvent onto the local EventBusService with
7
- * `source = 'remote'` and `originDeviceId` stamped from the wire envelope.
8
- *
9
- * Compose-at-boundary discipline (per Arch verdict 2026-04-28 N1):
10
- * - CloudSyncService stays a transport — it polls Cloud, dedupes by
11
- * `processedMessageIds`, emits an in-process `'message'` event.
12
- * - This service is the AgentEvent translator. It owns the bridge between
13
- * the cloud message vocabulary (`MessageType` + `EventMessagePayload`)
14
- * and the local event-bus vocabulary (`AgentEvent`). It does NOT touch
15
- * the poll loop or the cloud transport.
16
- *
17
- * Mirrors the BRIDGE-1 ↔ EventBus separation pattern: CloudSync EMITS,
18
- * downstream LISTENS. Same shape as PR #347 (BrandOnboarding ⊥
19
- * OnboardingService) and PR #348 (StatusBadge ⊥ RequestStatusPill) where
20
- * two parallel modules share a single narrow artifact.
21
- *
22
- * Idempotency:
23
- * The local LRU at CloudSyncService blocks at-least-once cloud-message-id
24
- * re-delivery upstream. The recent-publish suppression in EventBusService
25
- * (post-M2 fix: `${type}:${sessionName}:${event.id}`) catches any
26
- * duplicate that slips through to the publish boundary. The TriggerEngine
27
- * per-trigger dedup `${triggerId}:${event.id}` (Slice 3) is the third
28
- * layer at the trigger fire boundary.
29
- *
30
- * Unknown peer event types (Arch Q4):
31
- * The closed `EVENT_TYPES` enum stays closed. Bridge accepts any string
32
- * at the wire boundary via `RemoteEventType = string` and casts to
33
- * `EventType` at the local re-publish boundary so the rest of the
34
- * pipeline sees a stable type. A debug log names any unrecognised type
35
- * so ops can audit drift.
36
- *
37
- * @module services/cloud/cloud-event-bridge.service
38
- */
39
- import { LoggerService } from '../core/logger.service.js';
40
- import { formatError } from '../../utils/format-error.js';
41
- import { EVENT_TYPES } from '../../types/event-bus.types.js';
42
- import { isEventMessagePayload, } from './cloud-sync.types.js';
43
- /**
44
- * Bridges inbound cross-machine events from Cloud Relay → local EventBus.
45
- *
46
- * @example
47
- * ```typescript
48
- * const bridge = new CloudEventInboundBridge({
49
- * cloudSync: CloudSyncService.getInstance(),
50
- * eventBus: EventBusService.getInstance(),
51
- * });
52
- * bridge.start();
53
- * // ... later
54
- * bridge.stop();
55
- * ```
56
- */
57
- export class CloudEventInboundBridge {
58
- logger;
59
- cloudSync;
60
- eventBus;
61
- /**
62
- * Bound listener kept so {@link stop} can detach it cleanly. Without
63
- * this, repeated start/stop cycles (dev reloads, tests) would leak
64
- * additional listeners.
65
- */
66
- listener = null;
67
- /** Whether the bridge is currently subscribed. */
68
- running = false;
69
- /**
70
- * Construct the bridge. Subscription does NOT start until
71
- * {@link start} is called explicitly so callers control lifecycle.
72
- */
73
- constructor(deps) {
74
- this.cloudSync = deps.cloudSync;
75
- this.eventBus = deps.eventBus;
76
- this.logger =
77
- deps.logger ??
78
- LoggerService.getInstance().createComponentLogger('CloudEventInboundBridge');
79
- }
80
- /**
81
- * Subscribe to the cloud transport's `'message'` event. Idempotent — a
82
- * second `start()` call is a no-op.
83
- */
84
- start() {
85
- if (this.running)
86
- return;
87
- this.listener = (msg) => {
88
- try {
89
- this.handle(msg);
90
- }
91
- catch (err) {
92
- // Defensive — handle() already swallows known failure modes,
93
- // but a thrown error here MUST NOT poison other 'message'
94
- // listeners on the cloud transport.
95
- this.logger.error('CloudEventInboundBridge handler threw', {
96
- error: formatError(err),
97
- messageId: msg?.id,
98
- });
99
- }
100
- };
101
- this.cloudSync.on('message', this.listener);
102
- this.running = true;
103
- this.logger.info('CloudEventInboundBridge started — listening for `event` MessageType');
104
- }
105
- /**
106
- * Detach the cloud transport listener. Safe to call when not running.
107
- */
108
- stop() {
109
- if (this.listener) {
110
- this.cloudSync.off('message', this.listener);
111
- this.listener = null;
112
- }
113
- this.running = false;
114
- }
115
- /**
116
- * Process a single inbound cloud message. Filters on `type === 'event'`,
117
- * validates the payload shape, then re-publishes the carried AgentEvent
118
- * onto the local EventBus with `source = 'remote'` + `originDeviceId`.
119
- *
120
- * Public for unit tests only; production code should drive the bridge
121
- * via the cloud transport's `'message'` event.
122
- */
123
- handle(msg) {
124
- // Wrong type — leave it for the consumer that actually owns it
125
- // (CrossMachineMessageRouter, browser command handler, etc).
126
- if (msg.type !== 'event') {
127
- return;
128
- }
129
- if (!isEventMessagePayload(msg.payload)) {
130
- this.logger.warn('Dropping malformed cross-machine event payload', {
131
- messageId: msg.id,
132
- from: msg.from,
133
- });
134
- return;
135
- }
136
- const { event: wireEvent, originDeviceId, originDeviceName } = msg.payload;
137
- const remoteType = wireEvent.type;
138
- // Per Arch Q4: log when a peer ships a type we don't know locally.
139
- // We still re-publish — closed-enum sync would create a deployment-
140
- // ordering constraint we explicitly rejected.
141
- if (!isKnownEventType(remoteType)) {
142
- this.logger.debug('Cross-machine event with unknown-to-local event type — accepting via RemoteEventType boundary', {
143
- messageId: msg.id,
144
- eventId: wireEvent.id,
145
- unknownType: remoteType,
146
- originDeviceId,
147
- });
148
- }
149
- // Build the AgentEvent. Wire payload may carry extra fields the
150
- // origin device knew about (e.g. workItemId, missionId, requestId)
151
- // — pass them through unchanged. Our bridge only stamps the two
152
- // origin-tag fields.
153
- const agentEvent = {
154
- ...wireEvent,
155
- // Cast at the boundary per Arch Q4. Closed `EVENT_TYPES` enum
156
- // stays closed; downstream consumers see a stable EventType.
157
- type: remoteType,
158
- source: 'remote',
159
- originDeviceId,
160
- };
161
- this.logger.info('Re-publishing cross-machine event onto local EventBus', {
162
- messageId: msg.id,
163
- eventId: agentEvent.id,
164
- eventType: agentEvent.type,
165
- originDeviceId,
166
- originDeviceName,
167
- });
168
- this.eventBus.publish(agentEvent);
169
- }
170
- }
171
- /**
172
- * Internal helper — true when the wire event-type matches the closed
173
- * `EVENT_TYPES` enum. Used only for the debug-log breadcrumb; does NOT
174
- * gate re-publish (per Arch Q4).
175
- */
176
- function isKnownEventType(value) {
177
- return EVENT_TYPES.includes(value);
178
- }
179
- //# sourceMappingURL=cloud-event-bridge.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud-event-bridge.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-event-bridge.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAO1D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACN,qBAAqB,GAErB,MAAM,uBAAuB,CAAC;AAyB/B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,uBAAuB;IAClB,MAAM,CAAkB;IACxB,SAAS,CAAsB;IAC/B,QAAQ,CAAkB;IAE3C;;;;OAIG;IACK,QAAQ,GAA4C,IAAI,CAAC;IAEjE,kDAAkD;IAC1C,OAAO,GAAG,KAAK,CAAC;IAExB;;;OAGG;IACH,YAAY,IAAiC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM;YACV,IAAI,CAAC,MAAM;gBACX,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,KAAK;QACJ,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAoB,EAAE,EAAE;YACxC,IAAI,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,6DAA6D;gBAC7D,0DAA0D;gBAC1D,oCAAoC;gBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;oBAC1D,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;oBACvB,SAAS,EAAE,GAAG,EAAE,EAAE;iBAClB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,IAAI;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,GAAoB;QACjC,+DAA+D;QAC/D,6DAA6D;QAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;gBAClE,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,IAAI,EAAE,GAAG,CAAC,IAAI;aACd,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3E,MAAM,UAAU,GAAoB,SAAS,CAAC,IAAI,CAAC;QAEnD,mEAAmE;QACnE,oEAAoE;QACpE,8CAA8C;QAC9C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,+FAA+F,EAC/F;gBACC,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,WAAW,EAAE,UAAU;gBACvB,cAAc;aACd,CACD,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,mEAAmE;QACnE,gEAAgE;QAChE,qBAAqB;QACrB,MAAM,UAAU,GAAe;YAC9B,GAAI,SAAmC;YACvC,8DAA8D;YAC9D,6DAA6D;YAC7D,IAAI,EAAE,UAAuB;YAC7B,MAAM,EAAE,QAAQ;YAChB,cAAc;SACd,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uDAAuD,EAAE;YACzE,SAAS,EAAE,GAAG,CAAC,EAAE;YACjB,OAAO,EAAE,UAAU,CAAC,EAAE;YACtB,SAAS,EAAE,UAAU,CAAC,IAAI;YAC1B,cAAc;YACd,gBAAgB;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;CACD;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACtC,OAAQ,WAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,131 +0,0 @@
1
- /**
2
- * Cloud Event Outbound Forwarder — autonomy_v1.f1
3
- *
4
- * Closes the bidirectional cross-machine event loop. Subscribes to the
5
- * local EventBusService for events whose type is on an OPT-IN allow-list
6
- * (read from `crewly.json` at project root, key `crossMachineEvents`) and
7
- * forwards each via `cloudSync.sendMessage(broadcast, 'event', payload)`
8
- * so paired devices receive them at their inbound bridge.
9
- *
10
- * Forwarder discipline (per Arch verdict 2026-04-28):
11
- * - **Q1 LOCKED — OPT-IN allow-list.** v1 forwards ONLY events whose
12
- * type is explicitly listed in `crewly.json` `crossMachineEvents`.
13
- * Reasons: privacy (avoid leaking internal events to peers), payload
14
- * bloat, per-paired-device DoS-source containment. Empty allow-list
15
- * → forwarder is a no-op.
16
- * - **Q5 LOCKED — Loop-prevention fence.** The forwarder MUST short-
17
- * circuit on `event.source === 'remote'`. Otherwise the inbound
18
- * bridge re-publishes a remote event onto the local EventBus, the
19
- * forwarder picks it up, ships it back to cloud, cloud fans it out
20
- * again, etc. The fence is locked at the test surface via a
21
- * dedicated `it()` (PR #354 N1 fence-at-test-surface pattern).
22
- * - **Fail-safe on config.** Malformed `crewly.json`, missing file, or
23
- * non-array `crossMachineEvents` → forwarder defaults to no-op (NOT
24
- * "forward everything"). Surfaces an error log so ops can spot the
25
- * misconfiguration without leaking events accidentally.
26
- *
27
- * Compose-at-boundary discipline (Arch N1, mirrors the inbound bridge):
28
- * - CloudSyncService stays a transport — the forwarder calls
29
- * `sendMessage` and that's the only coupling point.
30
- * - This forwarder is a NEW file at the same boundary level as
31
- * `cloud-event-bridge.service.ts`. Inbound and outbound bridges are
32
- * symmetric.
33
- *
34
- * @module services/cloud/cloud-event-forwarder.service
35
- */
36
- import { type ComponentLogger } from '../core/logger.service.js';
37
- import type { EventBusService } from '../event-bus/event-bus.service.js';
38
- import type { AgentEvent } from '../../types/event-bus.types.js';
39
- import type { EventMessagePayload } from './cloud-sync.types.js';
40
- /**
41
- * Minimum cloud transport surface needed for outbound. Defined locally
42
- * (mirrors `CloudMessageEmitter` in the inbound bridge) so the test mock
43
- * is tiny and the forwarder is not coupled to the entire CloudSyncService.
44
- */
45
- export interface CloudEventSender {
46
- /**
47
- * Broadcast an `'event'` MessageType to all paired devices in the same
48
- * tenant. Cloud Relay handles the fan-out (web/ ticket).
49
- *
50
- * For v1 we use a sentinel deviceId `'*broadcast'` per the cloud
51
- * contract spec §(c). Future v2 may add per-event subscription
52
- * routing, in which case the call site here changes; the contract
53
- * field shape is forward-compatible.
54
- */
55
- sendMessage(toDeviceId: string, type: 'event', payload: EventMessagePayload): Promise<void>;
56
- }
57
- /**
58
- * Constructor dependencies for the outbound forwarder.
59
- */
60
- export interface CloudEventForwarderDeps {
61
- /** Cloud transport for `sendMessage` (CloudSyncService in prod). */
62
- cloudSync: CloudEventSender;
63
- /** Local event bus the forwarder subscribes to. */
64
- eventBus: EventBusService;
65
- /** Origin device identity stamped onto every outbound payload. */
66
- originDeviceId: string;
67
- /** Optional human-readable origin device name (for log lines on the peer). */
68
- originDeviceName?: string;
69
- /** Project root used to resolve `crewly.json`. */
70
- projectPath: string;
71
- /**
72
- * Optional override for the allow-list. When provided, the forwarder
73
- * uses this instead of reading `crewly.json`. Test injection only.
74
- */
75
- allowListOverride?: ReadonlyArray<string>;
76
- /** Optional logger override (test isolation). */
77
- logger?: ComponentLogger;
78
- }
79
- /**
80
- * Forwards local AgentEvents to paired devices via Cloud Relay when their
81
- * type is on the configured allow-list.
82
- */
83
- export declare class CloudEventForwarder {
84
- private readonly logger;
85
- private readonly cloudSync;
86
- private readonly eventBus;
87
- private readonly originDeviceId;
88
- private readonly originDeviceName?;
89
- private readonly projectPath;
90
- private readonly allowListOverride?;
91
- /** Resolved allow-list of event types. Empty = forwarder is a no-op. */
92
- private allowList;
93
- /** Detach functions returned by EventBusService.onInProcess(). */
94
- private unsubscribers;
95
- /** Whether the forwarder is currently subscribed. */
96
- private running;
97
- constructor(deps: CloudEventForwarderDeps);
98
- /**
99
- * Load the allow-list and subscribe to the event bus. Idempotent.
100
- *
101
- * The forwarder uses {@link EventBusService.onInProcess} per
102
- * registered allow-list type so it receives FULL `AgentEvent` payloads
103
- * (including the `source` field needed for the loop-prevention fence).
104
- * The widened `'event_published'` emit payload would also work but is
105
- * stripped of optional fields the wire payload needs (e.g. workItemId,
106
- * missionId).
107
- */
108
- start(): Promise<void>;
109
- /**
110
- * Detach all event-bus listeners. Safe to call when not running.
111
- */
112
- stop(): void;
113
- /**
114
- * Process a single local event — forward to cloud if eligible.
115
- *
116
- * Public for unit tests only; production drives this via the
117
- * EventBusService.onInProcess subscription installed in {@link start}.
118
- */
119
- handle(event: AgentEvent): Promise<void>;
120
- /**
121
- * Resolve the allow-list. Order:
122
- * 1. `allowListOverride` (test injection).
123
- * 2. `<projectPath>/crewly.json` `crossMachineEvents` array.
124
- * 3. Empty (no-op forwarder) — fail-safe default.
125
- *
126
- * Malformed JSON or non-array `crossMachineEvents` → empty + error log.
127
- * NEVER defaults to "forward everything" — privacy + DoS containment.
128
- */
129
- private resolveAllowList;
130
- }
131
- //# sourceMappingURL=cloud-event-forwarder.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud-event-forwarder.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-event-forwarder.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mCAAmC,CAAC;AAC/F,OAAO,KAAK,EACX,UAAU,EAEV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;;;OAQG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,oEAAoE;IACpE,SAAS,EAAE,gBAAgB,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,EAAE,eAAe,CAAC;IAC1B,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,iDAAiD;IACjD,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAKD;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAwB;IAE3D,wEAAwE;IACxE,OAAO,CAAC,SAAS,CAAkC;IAEnD,kEAAkE;IAClE,OAAO,CAAC,aAAa,CAA8B;IAEnD,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,uBAAuB;IAYzC;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;;;;OAKG;IACU,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDrD;;;;;;;;OAQG;YACW,gBAAgB;CAuC9B"}
@@ -1,227 +0,0 @@
1
- /**
2
- * Cloud Event Outbound Forwarder — autonomy_v1.f1
3
- *
4
- * Closes the bidirectional cross-machine event loop. Subscribes to the
5
- * local EventBusService for events whose type is on an OPT-IN allow-list
6
- * (read from `crewly.json` at project root, key `crossMachineEvents`) and
7
- * forwards each via `cloudSync.sendMessage(broadcast, 'event', payload)`
8
- * so paired devices receive them at their inbound bridge.
9
- *
10
- * Forwarder discipline (per Arch verdict 2026-04-28):
11
- * - **Q1 LOCKED — OPT-IN allow-list.** v1 forwards ONLY events whose
12
- * type is explicitly listed in `crewly.json` `crossMachineEvents`.
13
- * Reasons: privacy (avoid leaking internal events to peers), payload
14
- * bloat, per-paired-device DoS-source containment. Empty allow-list
15
- * → forwarder is a no-op.
16
- * - **Q5 LOCKED — Loop-prevention fence.** The forwarder MUST short-
17
- * circuit on `event.source === 'remote'`. Otherwise the inbound
18
- * bridge re-publishes a remote event onto the local EventBus, the
19
- * forwarder picks it up, ships it back to cloud, cloud fans it out
20
- * again, etc. The fence is locked at the test surface via a
21
- * dedicated `it()` (PR #354 N1 fence-at-test-surface pattern).
22
- * - **Fail-safe on config.** Malformed `crewly.json`, missing file, or
23
- * non-array `crossMachineEvents` → forwarder defaults to no-op (NOT
24
- * "forward everything"). Surfaces an error log so ops can spot the
25
- * misconfiguration without leaking events accidentally.
26
- *
27
- * Compose-at-boundary discipline (Arch N1, mirrors the inbound bridge):
28
- * - CloudSyncService stays a transport — the forwarder calls
29
- * `sendMessage` and that's the only coupling point.
30
- * - This forwarder is a NEW file at the same boundary level as
31
- * `cloud-event-bridge.service.ts`. Inbound and outbound bridges are
32
- * symmetric.
33
- *
34
- * @module services/cloud/cloud-event-forwarder.service
35
- */
36
- import * as fs from 'fs/promises';
37
- import * as path from 'path';
38
- import { LoggerService } from '../core/logger.service.js';
39
- import { formatError } from '../../utils/format-error.js';
40
- /** Sentinel for "fan out to every paired device in the tenant". */
41
- const BROADCAST_TARGET = '*broadcast';
42
- /**
43
- * Forwards local AgentEvents to paired devices via Cloud Relay when their
44
- * type is on the configured allow-list.
45
- */
46
- export class CloudEventForwarder {
47
- logger;
48
- cloudSync;
49
- eventBus;
50
- originDeviceId;
51
- originDeviceName;
52
- projectPath;
53
- allowListOverride;
54
- /** Resolved allow-list of event types. Empty = forwarder is a no-op. */
55
- allowList = new Set();
56
- /** Detach functions returned by EventBusService.onInProcess(). */
57
- unsubscribers = [];
58
- /** Whether the forwarder is currently subscribed. */
59
- running = false;
60
- constructor(deps) {
61
- this.cloudSync = deps.cloudSync;
62
- this.eventBus = deps.eventBus;
63
- this.originDeviceId = deps.originDeviceId;
64
- this.originDeviceName = deps.originDeviceName;
65
- this.projectPath = deps.projectPath;
66
- this.allowListOverride = deps.allowListOverride;
67
- this.logger =
68
- deps.logger ??
69
- LoggerService.getInstance().createComponentLogger('CloudEventForwarder');
70
- }
71
- /**
72
- * Load the allow-list and subscribe to the event bus. Idempotent.
73
- *
74
- * The forwarder uses {@link EventBusService.onInProcess} per
75
- * registered allow-list type so it receives FULL `AgentEvent` payloads
76
- * (including the `source` field needed for the loop-prevention fence).
77
- * The widened `'event_published'` emit payload would also work but is
78
- * stripped of optional fields the wire payload needs (e.g. workItemId,
79
- * missionId).
80
- */
81
- async start() {
82
- if (this.running)
83
- return;
84
- this.allowList = await this.resolveAllowList();
85
- if (this.allowList.size === 0) {
86
- this.logger.info('CloudEventForwarder allow-list is empty — forwarder will be a no-op until configured', { projectPath: this.projectPath });
87
- this.running = true;
88
- return;
89
- }
90
- for (const eventType of this.allowList) {
91
- const unsub = this.eventBus.onInProcess([eventType], (event) => this.handle(event));
92
- this.unsubscribers.push(unsub);
93
- }
94
- this.running = true;
95
- this.logger.info('CloudEventForwarder started', {
96
- allowList: Array.from(this.allowList),
97
- originDeviceId: this.originDeviceId,
98
- });
99
- }
100
- /**
101
- * Detach all event-bus listeners. Safe to call when not running.
102
- */
103
- stop() {
104
- for (const unsub of this.unsubscribers) {
105
- try {
106
- unsub();
107
- }
108
- catch (err) {
109
- this.logger.warn('CloudEventForwarder unsubscribe threw', { error: formatError(err) });
110
- }
111
- }
112
- this.unsubscribers = [];
113
- this.running = false;
114
- }
115
- /**
116
- * Process a single local event — forward to cloud if eligible.
117
- *
118
- * Public for unit tests only; production drives this via the
119
- * EventBusService.onInProcess subscription installed in {@link start}.
120
- */
121
- async handle(event) {
122
- // Q5 LOCKED — loop-prevention fence. NEVER forward an event that
123
- // itself arrived from cloud. Without this, the inbound bridge ↔
124
- // forwarder pair would form an infinite ping-pong loop.
125
- if (event.source === 'remote') {
126
- return;
127
- }
128
- // Allow-list gate (Q1 LOCKED).
129
- if (!this.allowList.has(event.type)) {
130
- return;
131
- }
132
- const payload = {
133
- event: {
134
- id: event.id,
135
- type: event.type,
136
- sessionName: event.sessionName,
137
- timestamp: event.timestamp,
138
- // Pass through the rest of the AgentEvent so the inbound
139
- // bridge on the peer device sees the full picture (workItemId,
140
- // missionId, requestId, etc.). `source` and `originDeviceId`
141
- // are NOT included — the receiving bridge stamps those from
142
- // the message envelope so the contract stays symmetric.
143
- ...stripCrossMachineFields(event),
144
- },
145
- originDeviceId: this.originDeviceId,
146
- originDeviceName: this.originDeviceName,
147
- };
148
- try {
149
- await this.cloudSync.sendMessage(BROADCAST_TARGET, 'event', payload);
150
- this.logger.debug('CloudEventForwarder broadcast', {
151
- eventId: event.id,
152
- eventType: event.type,
153
- });
154
- }
155
- catch (err) {
156
- // Failure is non-fatal — local processing already happened. We
157
- // log + drop. A future enhancement could buffer + retry, but v1
158
- // trusts the cloud queue's TTL semantics (see decomp §(c)
159
- // errors table).
160
- this.logger.warn('CloudEventForwarder broadcast failed', {
161
- eventId: event.id,
162
- eventType: event.type,
163
- error: formatError(err),
164
- });
165
- }
166
- }
167
- /**
168
- * Resolve the allow-list. Order:
169
- * 1. `allowListOverride` (test injection).
170
- * 2. `<projectPath>/crewly.json` `crossMachineEvents` array.
171
- * 3. Empty (no-op forwarder) — fail-safe default.
172
- *
173
- * Malformed JSON or non-array `crossMachineEvents` → empty + error log.
174
- * NEVER defaults to "forward everything" — privacy + DoS containment.
175
- */
176
- async resolveAllowList() {
177
- if (this.allowListOverride) {
178
- return new Set(this.allowListOverride);
179
- }
180
- const configPath = path.join(this.projectPath, 'crewly.json');
181
- try {
182
- const raw = await fs.readFile(configPath, 'utf-8');
183
- const parsed = JSON.parse(raw);
184
- const value = parsed.crossMachineEvents;
185
- if (value === undefined || value === null)
186
- return new Set();
187
- if (!Array.isArray(value)) {
188
- this.logger.error('crewly.json `crossMachineEvents` must be an array — falling back to empty allow-list (no events will forward)', { configPath, actualType: typeof value });
189
- return new Set();
190
- }
191
- const cleaned = value.filter((v) => typeof v === 'string' && v.length > 0);
192
- if (cleaned.length !== value.length) {
193
- this.logger.warn('crewly.json `crossMachineEvents` contains non-string entries — dropped', { configPath, kept: cleaned, droppedCount: value.length - cleaned.length });
194
- }
195
- return new Set(cleaned);
196
- }
197
- catch (err) {
198
- const code = err.code;
199
- if (code === 'ENOENT') {
200
- // File simply doesn't exist — silent default to empty.
201
- return new Set();
202
- }
203
- this.logger.error('Failed to read crewly.json — falling back to empty allow-list (no events will forward)', { configPath, error: formatError(err) });
204
- return new Set();
205
- }
206
- }
207
- }
208
- /**
209
- * Strip the cross-machine origin fields off an event before serialising
210
- * onto the wire. The receiving bridge stamps `source` + `originDeviceId`
211
- * from the message envelope — including them in the payload would let
212
- * the wire mutate them mid-flight.
213
- */
214
- function stripCrossMachineFields(event) {
215
- // Shallow copy + drop the two fields. `id`, `type`, `sessionName`,
216
- // `timestamp` are added back explicitly by the caller (above) so we
217
- // don't double-spread them.
218
- const out = { ...event };
219
- delete out.source;
220
- delete out.originDeviceId;
221
- delete out.id;
222
- delete out.type;
223
- delete out.sessionName;
224
- delete out.timestamp;
225
- return out;
226
- }
227
- //# sourceMappingURL=cloud-event-forwarder.service.js.map