crewly 1.6.0 → 1.6.2

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 (448) hide show
  1. package/config/roles/orchestrator/fragments/role-boundary.md +4 -1
  2. package/config/roles/orchestrator/prompt.md +53 -0
  3. package/config/roles/orchestrator/soul.md +47 -10
  4. package/config/skills/_common/lib.sh +28 -0
  5. package/config/skills/agent/core/cancel-followup/execute.sh +0 -19
  6. package/config/skills/agent/core/get-my-active-work/SKILL.md +101 -0
  7. package/config/skills/agent/core/get-my-active-work/execute.sh +122 -0
  8. package/config/skills/agent/core/list-my-followups/execute.sh +0 -19
  9. package/config/skills/agent/core/record-learning/SKILL.md +29 -0
  10. package/config/skills/agent/core/reply-channel/SKILL.md +41 -0
  11. package/config/skills/agent/core/reply-channel/execute.sh +165 -0
  12. package/config/skills/agent/core/reply-channel/execute.test.sh +148 -0
  13. package/config/skills/agent/core/schedule-followup/execute.sh +0 -19
  14. package/config/skills/agent/core/watch-for-event/execute.sh +0 -19
  15. package/config/skills/agent/remote-browser/execute.sh +296 -14
  16. package/config/skills/agent/remote-browser/execute.test.sh +482 -0
  17. package/config/skills/orchestrator/credential-manager/execute.test.sh +88 -0
  18. package/config/skills/orchestrator/send-message/SKILL.md +30 -7
  19. package/config/skills/orchestrator/team-health-scan/SKILL.md +98 -0
  20. package/config/skills/orchestrator/team-health-scan/execute.sh +44 -0
  21. package/config/skills/registry.json +62 -1
  22. package/config/sops/developer/git-workflow.md +38 -3
  23. package/dist/backend/backend/src/config/oauth.config.d.ts +33 -0
  24. package/dist/backend/backend/src/config/oauth.config.d.ts.map +1 -0
  25. package/dist/backend/backend/src/config/oauth.config.js +45 -0
  26. package/dist/backend/backend/src/config/oauth.config.js.map +1 -0
  27. package/dist/backend/backend/src/constants.d.ts +69 -1
  28. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  29. package/dist/backend/backend/src/constants.js +69 -2
  30. package/dist/backend/backend/src/constants.js.map +1 -1
  31. package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts +53 -0
  32. package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -0
  33. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +92 -0
  34. package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -0
  35. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +18 -1
  37. package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +68 -0
  39. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/browser/browser.controller.js +233 -5
  41. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  42. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/browser/browser.routes.js +10 -1
  44. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  45. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  46. package/dist/backend/backend/src/controllers/chat/chat.controller.js +8 -3
  47. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  48. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +132 -0
  49. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -0
  50. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +401 -0
  51. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -0
  52. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +29 -0
  53. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -0
  54. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +39 -0
  55. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -0
  56. package/dist/backend/backend/src/controllers/chat-v2/index.d.ts +8 -0
  57. package/dist/backend/backend/src/controllers/chat-v2/index.d.ts.map +1 -0
  58. package/dist/backend/backend/src/controllers/chat-v2/index.js +8 -0
  59. package/dist/backend/backend/src/controllers/chat-v2/index.js.map +1 -0
  60. package/dist/backend/backend/src/controllers/credentials/credentials.controller.d.ts +0 -26
  61. package/dist/backend/backend/src/controllers/credentials/credentials.controller.d.ts.map +1 -1
  62. package/dist/backend/backend/src/controllers/credentials/credentials.controller.js +47 -184
  63. package/dist/backend/backend/src/controllers/credentials/credentials.controller.js.map +1 -1
  64. package/dist/backend/backend/src/controllers/credentials/credentials.routes.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/credentials/credentials.routes.js +2 -1
  66. package/dist/backend/backend/src/controllers/credentials/credentials.routes.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.d.ts +40 -0
  68. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.d.ts.map +1 -0
  69. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.js +162 -0
  70. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.js.map +1 -0
  71. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +13 -13
  72. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
  73. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +74 -234
  74. package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
  75. package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
  76. package/dist/backend/backend/src/controllers/request/request.controller.js +4 -6
  77. package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
  78. package/dist/backend/backend/src/controllers/skill/skill.controller.d.ts.map +1 -1
  79. package/dist/backend/backend/src/controllers/skill/skill.controller.js +1 -0
  80. package/dist/backend/backend/src/controllers/skill/skill.controller.js.map +1 -1
  81. package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts +43 -0
  82. package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
  83. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +200 -72
  84. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  86. package/dist/backend/backend/src/controllers/team/team.controller.js +46 -0
  87. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  88. package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts +59 -0
  89. package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts.map +1 -0
  90. package/dist/backend/backend/src/controllers/team-health/team-health.controller.js +127 -0
  91. package/dist/backend/backend/src/controllers/team-health/team-health.controller.js.map +1 -0
  92. package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts +13 -0
  93. package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts.map +1 -0
  94. package/dist/backend/backend/src/controllers/team-health/team-health.routes.js +20 -0
  95. package/dist/backend/backend/src/controllers/team-health/team-health.routes.js.map +1 -0
  96. package/dist/backend/backend/src/index.d.ts +9 -0
  97. package/dist/backend/backend/src/index.d.ts.map +1 -1
  98. package/dist/backend/backend/src/index.js +256 -4
  99. package/dist/backend/backend/src/index.js.map +1 -1
  100. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  101. package/dist/backend/backend/src/routes/api.routes.js +43 -6
  102. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  103. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +498 -0
  104. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
  105. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +759 -0
  106. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
  107. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +25 -0
  108. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/agent/agent-registration.service.js +193 -57
  110. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  111. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +9 -2
  112. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  113. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +35 -2
  114. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  115. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +8 -2
  116. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +1 -0
  118. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  119. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/agent/tmux-command.service.js +2 -1
  121. package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
  122. package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
  123. package/dist/backend/backend/src/services/agent/tmux.service.js +2 -1
  124. package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
  125. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +148 -3
  126. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +241 -2
  128. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  129. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -0
  131. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  132. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
  133. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +30 -2
  134. package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
  135. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  136. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +17 -0
  137. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  138. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  139. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  140. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  141. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  142. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +161 -0
  143. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  144. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +382 -2
  145. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  146. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +105 -0
  147. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  148. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +232 -13
  149. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  150. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +178 -0
  151. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
  152. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +254 -0
  153. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
  154. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
  155. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
  156. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
  157. package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
  158. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts +25 -0
  159. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts.map +1 -0
  160. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js +23 -0
  161. package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js.map +1 -0
  162. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +254 -0
  163. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
  164. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +467 -0
  165. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
  166. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
  167. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
  168. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
  169. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
  170. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts +43 -0
  171. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts.map +1 -0
  172. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js +54 -0
  173. package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js.map +1 -0
  174. package/dist/backend/backend/src/services/chat-v2/config.d.ts +100 -0
  175. package/dist/backend/backend/src/services/chat-v2/config.d.ts.map +1 -0
  176. package/dist/backend/backend/src/services/chat-v2/config.js +174 -0
  177. package/dist/backend/backend/src/services/chat-v2/config.js.map +1 -0
  178. package/dist/backend/backend/src/services/chat-v2/index.d.ts +11 -0
  179. package/dist/backend/backend/src/services/chat-v2/index.d.ts.map +1 -0
  180. package/dist/backend/backend/src/services/chat-v2/index.js +12 -0
  181. package/dist/backend/backend/src/services/chat-v2/index.js.map +1 -0
  182. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +114 -0
  183. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
  184. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +194 -0
  185. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
  186. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +100 -0
  187. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
  188. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +351 -0
  189. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
  190. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +132 -0
  191. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
  192. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +281 -0
  193. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
  194. package/dist/backend/backend/src/services/chat-v2/types.d.ts +295 -0
  195. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -0
  196. package/dist/backend/backend/src/services/chat-v2/types.js +61 -0
  197. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -0
  198. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +113 -0
  199. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +1 -0
  200. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +179 -0
  201. package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +1 -0
  202. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +131 -0
  203. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +1 -0
  204. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +227 -0
  205. package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +1 -0
  206. package/dist/backend/backend/src/services/core/config.service.js +3 -3
  207. package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
  208. package/dist/backend/backend/src/services/core/storage.service.d.ts +7 -0
  209. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  210. package/dist/backend/backend/src/services/core/storage.service.js +15 -0
  211. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  212. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts +4 -16
  213. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
  214. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +7 -28
  215. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
  216. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +69 -1
  217. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  218. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +118 -0
  219. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  220. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +275 -0
  221. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -0
  222. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +736 -0
  223. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -0
  224. package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  225. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -2
  226. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  227. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
  228. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  229. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +123 -29
  230. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  231. package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
  232. package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
  233. package/dist/backend/backend/src/services/knowledge/learnings-index.service.js +304 -0
  234. package/dist/backend/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
  235. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +24 -4
  237. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/mcp-server.d.ts +46 -2
  239. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  240. package/dist/backend/backend/src/services/mcp-server.js +216 -211
  241. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  242. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts +254 -0
  243. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -0
  244. package/dist/backend/backend/src/services/mcp-tool-definitions.js +285 -0
  245. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -0
  246. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts +174 -0
  247. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts.map +1 -0
  248. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js +375 -0
  249. package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js.map +1 -0
  250. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
  251. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
  252. package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
  253. package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
  254. package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
  255. package/dist/backend/backend/src/services/memory/vector-store.service.js +19 -4
  256. package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
  257. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts +16 -5
  258. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js +32 -5
  260. package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js.map +1 -1
  261. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +157 -0
  262. package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -0
  263. package/dist/backend/backend/src/services/onboarding/onboarding.service.js +229 -0
  264. package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -0
  265. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +141 -0
  266. package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -0
  267. package/dist/backend/backend/src/services/onboarding/onboarding.types.js +18 -0
  268. package/dist/backend/backend/src/services/onboarding/onboarding.types.js.map +1 -0
  269. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -1
  270. package/dist/backend/backend/src/services/pr-review/pr-review.service.js +1 -1
  271. package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -1
  272. package/dist/backend/backend/src/services/project/task.service.d.ts.map +1 -1
  273. package/dist/backend/backend/src/services/project/task.service.js +5 -0
  274. package/dist/backend/backend/src/services/project/task.service.js.map +1 -1
  275. package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts +41 -0
  276. package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  277. package/dist/backend/backend/src/services/skill/skill-executor.service.js +136 -7
  278. package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
  279. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  280. package/dist/backend/backend/src/services/skill/skill.service.js +1 -0
  281. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  282. package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
  283. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +17 -1
  284. package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
  285. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +39 -1
  286. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  287. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +158 -26
  288. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  289. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +248 -6
  290. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  291. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +531 -51
  292. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  293. package/dist/backend/backend/src/services/team-health/index.d.ts +16 -0
  294. package/dist/backend/backend/src/services/team-health/index.d.ts.map +1 -0
  295. package/dist/backend/backend/src/services/team-health/index.js +16 -0
  296. package/dist/backend/backend/src/services/team-health/index.js.map +1 -0
  297. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts +52 -0
  298. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts.map +1 -0
  299. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js +161 -0
  300. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js.map +1 -0
  301. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts +53 -0
  302. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts.map +1 -0
  303. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js +88 -0
  304. package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js.map +1 -0
  305. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts +44 -0
  306. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts.map +1 -0
  307. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js +83 -0
  308. package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js.map +1 -0
  309. package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts +92 -0
  310. package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts.map +1 -0
  311. package/dist/backend/backend/src/services/team-health/team-health-alert-router.js +328 -0
  312. package/dist/backend/backend/src/services/team-health/team-health-alert-router.js.map +1 -0
  313. package/dist/backend/backend/src/services/team-health/team-health-config.d.ts +41 -0
  314. package/dist/backend/backend/src/services/team-health/team-health-config.d.ts.map +1 -0
  315. package/dist/backend/backend/src/services/team-health/team-health-config.js +213 -0
  316. package/dist/backend/backend/src/services/team-health/team-health-config.js.map +1 -0
  317. package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts +46 -0
  318. package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts.map +1 -0
  319. package/dist/backend/backend/src/services/team-health/team-health-detector.js +347 -0
  320. package/dist/backend/backend/src/services/team-health/team-health-detector.js.map +1 -0
  321. package/dist/backend/backend/src/services/team-health/team-health-types.d.ts +154 -0
  322. package/dist/backend/backend/src/services/team-health/team-health-types.d.ts.map +1 -0
  323. package/dist/backend/backend/src/services/team-health/team-health-types.js +94 -0
  324. package/dist/backend/backend/src/services/team-health/team-health-types.js.map +1 -0
  325. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts +111 -0
  326. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts.map +1 -0
  327. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js +226 -0
  328. package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js.map +1 -0
  329. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +148 -0
  330. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -0
  331. package/dist/backend/backend/src/services/v3/mission-reminder.service.js +545 -0
  332. package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -0
  333. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +499 -0
  334. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
  335. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +1105 -0
  336. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
  337. package/dist/backend/backend/src/services/v3/request.service.d.ts +22 -0
  338. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  339. package/dist/backend/backend/src/services/v3/request.service.js +71 -0
  340. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  341. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +1 -0
  342. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  343. package/dist/backend/backend/src/services/v3/v3-data.service.js +22 -6
  344. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  345. package/dist/backend/backend/src/types/event-bus.types.d.ts +19 -1
  346. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  347. package/dist/backend/backend/src/types/event-bus.types.js +43 -0
  348. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  349. package/dist/backend/backend/src/types/index.d.ts +22 -1
  350. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  351. package/dist/backend/backend/src/types/index.js.map +1 -1
  352. package/dist/backend/backend/src/types/review-reason.types.d.ts +63 -0
  353. package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -0
  354. package/dist/backend/backend/src/types/review-reason.types.js +50 -0
  355. package/dist/backend/backend/src/types/review-reason.types.js.map +1 -0
  356. package/dist/backend/backend/src/types/skill.types.d.ts +9 -0
  357. package/dist/backend/backend/src/types/skill.types.d.ts.map +1 -1
  358. package/dist/backend/backend/src/types/skill.types.js.map +1 -1
  359. package/dist/backend/backend/src/types/slack.types.d.ts +4 -1
  360. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  361. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  362. package/dist/backend/backend/src/types/v2/mission.types.d.ts +18 -0
  363. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  364. package/dist/backend/backend/src/types/v2/mission.types.js +1 -0
  365. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  366. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  367. package/dist/backend/backend/src/types/v2/work-item.types.js +25 -1
  368. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  369. package/dist/backend/backend/src/utils/google-userinfo.utils.d.ts +41 -0
  370. package/dist/backend/backend/src/utils/google-userinfo.utils.d.ts.map +1 -0
  371. package/dist/backend/backend/src/utils/google-userinfo.utils.js +44 -0
  372. package/dist/backend/backend/src/utils/google-userinfo.utils.js.map +1 -0
  373. package/dist/backend/backend/src/utils/team.utils.d.ts +38 -0
  374. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -0
  375. package/dist/backend/backend/src/utils/team.utils.js +45 -0
  376. package/dist/backend/backend/src/utils/team.utils.js.map +1 -0
  377. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +195 -0
  378. package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -0
  379. package/dist/backend/backend/src/websocket/chat-v2.gateway.js +401 -0
  380. package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -0
  381. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +37 -2
  382. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  383. package/dist/backend/backend/src/websocket/terminal.gateway.js +106 -5
  384. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  385. package/dist/cli/backend/src/config/oauth.config.d.ts +33 -0
  386. package/dist/cli/backend/src/config/oauth.config.d.ts.map +1 -0
  387. package/dist/cli/backend/src/config/oauth.config.js +45 -0
  388. package/dist/cli/backend/src/config/oauth.config.js.map +1 -0
  389. package/dist/cli/backend/src/constants.d.ts +69 -1
  390. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  391. package/dist/cli/backend/src/constants.js +69 -2
  392. package/dist/cli/backend/src/constants.js.map +1 -1
  393. package/dist/cli/backend/src/services/core/config.service.js +3 -3
  394. package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
  395. package/dist/cli/backend/src/services/core/storage.service.d.ts +7 -0
  396. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  397. package/dist/cli/backend/src/services/core/storage.service.js +15 -0
  398. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  399. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts +4 -16
  400. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
  401. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +7 -28
  402. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
  403. package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
  404. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -2
  405. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
  406. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
  407. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  408. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +123 -29
  409. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  410. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  411. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +24 -4
  412. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  413. package/dist/cli/backend/src/services/mcp-server.d.ts +46 -2
  414. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/mcp-server.js +216 -211
  416. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  417. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts +254 -0
  418. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -0
  419. package/dist/cli/backend/src/services/mcp-tool-definitions.js +285 -0
  420. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -0
  421. package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts +18 -0
  422. package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
  423. package/dist/cli/backend/src/services/skill/skill-executor.service.js +7 -9
  424. package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
  425. package/dist/cli/backend/src/types/index.d.ts +22 -1
  426. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  427. package/dist/cli/backend/src/types/index.js.map +1 -1
  428. package/dist/cli/backend/src/types/skill.types.d.ts +9 -0
  429. package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -1
  430. package/dist/cli/backend/src/types/skill.types.js.map +1 -1
  431. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  432. package/dist/cli/backend/src/types/v2/work-item.types.js +25 -1
  433. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  434. package/dist/cli/backend/src/utils/google-userinfo.utils.d.ts +41 -0
  435. package/dist/cli/backend/src/utils/google-userinfo.utils.d.ts.map +1 -0
  436. package/dist/cli/backend/src/utils/google-userinfo.utils.js +44 -0
  437. package/dist/cli/backend/src/utils/google-userinfo.utils.js.map +1 -0
  438. package/frontend/dist/assets/{index-9e6d97d1.js → index-7a4e7df5.js} +328 -326
  439. package/frontend/dist/assets/index-b7e59b2b.css +33 -0
  440. package/frontend/dist/index.html +2 -2
  441. package/package.json +2 -1
  442. package/config/skills/orchestrator/recall/SKILL.md +0 -47
  443. package/config/skills/orchestrator/recall/execute.sh +0 -13
  444. package/config/skills/orchestrator/record-learning/SKILL.md +0 -47
  445. package/config/skills/orchestrator/record-learning/execute.sh +0 -13
  446. package/config/skills/orchestrator/remember/SKILL.md +0 -55
  447. package/config/skills/orchestrator/remember/execute.sh +0 -15
  448. package/frontend/dist/assets/index-6aaa0630.css +0 -33
@@ -0,0 +1,498 @@
1
+ /**
2
+ * Active Work Briefing Service
3
+ *
4
+ * Generates an authoritative-state briefing for an agent at session startup
5
+ * (and on-demand mid-session via the `core/get-my-active-work` skill).
6
+ *
7
+ * Today the agent recovery prompt is memory-only — `SessionMemoryService`
8
+ * dumps the last session summary, agent/project knowledge, daily logs, and
9
+ * recent learning files. That is supplementary; it does NOT capture
10
+ * authoritative runtime state. Symptom: an agent restarts amnesiac about
11
+ * Requests it owes a reply on, queued WorkItems that survived the restart,
12
+ * and in-flight delegations.
13
+ *
14
+ * This service mirrors `SessionMemoryService` (`generate*` + `format*`
15
+ * methods, singleton, soft-fail wrapping at the call site) and produces a
16
+ * per-agent slice of the live Request + WorkItem state. The briefing is
17
+ * prepended ABOVE the memory briefing in the agent's startup prompt so the
18
+ * first thing the agent reads is "what am I on the hook for RIGHT NOW".
19
+ *
20
+ * Sources:
21
+ * - {@link RequestService.listAll} — all Requests on disk
22
+ * - {@link TaskPoolService.getAllItems} — all WorkItems in the pool
23
+ *
24
+ * Design doc: `/tmp/agent-state-recovery-design.md` (architect output)
25
+ * GitHub issue: stevehuang0115/crewly#395
26
+ *
27
+ * @module services/agent/active-work-briefing.service
28
+ */
29
+ import type { Request, RequestStatus } from '../../types/v2/request.types.js';
30
+ import type { WorkItem, WorkItemStatus } from '../../types/v2/work-item.types.js';
31
+ /**
32
+ * Narrow projection of `RequestService` used by the briefing — only
33
+ * `listAll` is needed. Defining the contract here lets the test inject a
34
+ * fake without dragging in the full RequestService surface.
35
+ */
36
+ interface RequestProvider {
37
+ listAll(): Promise<Request[]>;
38
+ }
39
+ /**
40
+ * Narrow projection of `TaskPoolService` used by the briefing — only
41
+ * `getAllItems` is needed.
42
+ */
43
+ interface TaskPoolProvider {
44
+ getAllItems(): Promise<WorkItem[]>;
45
+ }
46
+ /**
47
+ * Per-section item cap shape used both for {@link DEFAULT_CAPS} and for
48
+ * {@link GenerateOptions.caps} overrides. Kept as a plain `number` so the
49
+ * orchestrator multiplier path can return the multiplied value without
50
+ * confusing TypeScript with literal types.
51
+ */
52
+ export interface BriefingCaps {
53
+ openRequests: number;
54
+ activeWorkItems: number;
55
+ pendingReviews: number;
56
+ outboundDelegations: number;
57
+ recentlyAutoResolved: number;
58
+ }
59
+ /** Priority value used for sorting briefing rows. */
60
+ export type BriefingPriority = 'high' | 'normal' | 'low';
61
+ /**
62
+ * One Request row in the briefing.
63
+ */
64
+ export interface OpenRequestRow {
65
+ id: string;
66
+ title: string;
67
+ status: RequestStatus;
68
+ priority: BriefingPriority;
69
+ ageHours: number;
70
+ source?: string;
71
+ }
72
+ /**
73
+ * One WorkItem row in the briefing.
74
+ */
75
+ export interface ActiveWorkItemRow {
76
+ id: string;
77
+ title: string;
78
+ status: WorkItemStatus;
79
+ ageHours: number;
80
+ priority: BriefingPriority;
81
+ requestId?: string;
82
+ description?: string;
83
+ }
84
+ /**
85
+ * Pending review row — a WorkItem in `done_by_worker` awaiting this agent's
86
+ * verification.
87
+ */
88
+ export interface PendingReviewRow {
89
+ id: string;
90
+ title: string;
91
+ ageHours: number;
92
+ claimedBy?: string;
93
+ }
94
+ /**
95
+ * Outbound delegation row — a WorkItem this agent delegated, still in-flight.
96
+ */
97
+ export interface OutboundDelegationRow {
98
+ id: string;
99
+ title: string;
100
+ status: WorkItemStatus;
101
+ ageHours: number;
102
+ target?: string;
103
+ }
104
+ /**
105
+ * Recently auto-resolved row — closed by an SLA / system action within the
106
+ * configured window. Surfaces "this just closed while you were down".
107
+ */
108
+ export interface RecentlyResolvedRow {
109
+ id: string;
110
+ title: string;
111
+ resolvedAt: string;
112
+ resolvedReason?: string;
113
+ }
114
+ /**
115
+ * Per-section truncation marker. When a section exceeds its cap, the
116
+ * service emits the top N rows + a marker telling the agent how many were
117
+ * dropped and how to fetch the rest.
118
+ */
119
+ export interface SectionTruncation {
120
+ /** Total candidate items before the cap was applied. */
121
+ totalCandidates: number;
122
+ /** Per-section cap that was applied. */
123
+ cap: number;
124
+ /** True if any rows were dropped. */
125
+ truncated: boolean;
126
+ }
127
+ /**
128
+ * Briefing payload. Pure state, no formatting.
129
+ */
130
+ export interface ActiveWorkBriefing {
131
+ openRequests: OpenRequestRow[];
132
+ activeWorkItems: ActiveWorkItemRow[];
133
+ pendingReviews: PendingReviewRow[];
134
+ outboundDelegations: OutboundDelegationRow[];
135
+ recentlyAutoResolved: RecentlyResolvedRow[];
136
+ /** Per-section truncation metadata. */
137
+ truncation: {
138
+ openRequests: SectionTruncation;
139
+ activeWorkItems: SectionTruncation;
140
+ pendingReviews: SectionTruncation;
141
+ outboundDelegations: SectionTruncation;
142
+ recentlyAutoResolved: SectionTruncation;
143
+ };
144
+ /** Aggregate truncation flag (any section truncated). */
145
+ truncated: boolean;
146
+ /** Snapshot timestamp. */
147
+ generatedAt: string;
148
+ /**
149
+ * Raw counts before per-section caps. Useful for the agent to know
150
+ * the system-wide load.
151
+ */
152
+ totalCounts: {
153
+ requests: number;
154
+ workItems: number;
155
+ };
156
+ }
157
+ /**
158
+ * Optional generation overrides — used by tests and by the skill endpoint
159
+ * for fine-grained control.
160
+ */
161
+ export interface GenerateOptions {
162
+ /** Override the per-section caps. Useful for tests. */
163
+ caps?: Partial<BriefingCaps>;
164
+ /** Override the recently-resolved window in milliseconds. */
165
+ recentlyResolvedWindowMs?: number;
166
+ /** Override "now" for deterministic tests. */
167
+ nowMs?: number;
168
+ }
169
+ /**
170
+ * Memory hints map — caller passes keys like `wi:<id>` or `req:<id>`
171
+ * mapped to a short note string. The formatter cross-references this map
172
+ * when emitting each row and appends `(memory: <note>)` to the row line.
173
+ *
174
+ * Keys are namespaced so `req:` and `wi:` cannot collide.
175
+ */
176
+ export type MemoryHints = ReadonlyMap<string, string>;
177
+ /**
178
+ * Singleton service producing per-agent active-work briefings.
179
+ *
180
+ * Mirrors the `SessionMemoryService.generate* + format*` shape so the
181
+ * `agent-registration.service.ts` glue can call them in parallel and
182
+ * concatenate the markdown.
183
+ *
184
+ * Stateless beyond singleton bookkeeping — every call hits the live
185
+ * `RequestService` + `TaskPoolService` instances.
186
+ */
187
+ export declare class ActiveWorkBriefingService {
188
+ private readonly requestServiceFactory;
189
+ private readonly taskPoolFactory;
190
+ private static instance;
191
+ private readonly logger;
192
+ /**
193
+ * Private constructor — use {@link getInstance}. The `requestServiceFactory`
194
+ * and `taskPoolFactory` are dependency seams for tests; production code
195
+ * lets {@link getInstance} provide the live singletons.
196
+ */
197
+ private constructor();
198
+ /**
199
+ * Returns the singleton instance.
200
+ *
201
+ * The `RequestService` and `TaskPoolService` modules are loaded LAZILY here
202
+ * (CommonJS `require` rather than top-of-file `import`) so that consumers
203
+ * of this module do not pay the import cost — and more importantly, do not
204
+ * transitively load `chokidar` via `v3-data.service.ts` — until they
205
+ * actually call `getInstance()`. This keeps the agent-registration test
206
+ * suite mockable without forcing every caller to mock the v3 pipeline.
207
+ */
208
+ static getInstance(): ActiveWorkBriefingService;
209
+ /**
210
+ * Resets the singleton — for tests only.
211
+ */
212
+ static resetInstance(): void;
213
+ /**
214
+ * Test-only escape hatch to swap the underlying service factories.
215
+ * Production code never calls this; the public surface is the singleton.
216
+ *
217
+ * @param requestServiceFactory - Returns a `listAll` provider
218
+ * @param taskPoolFactory - Returns a `getAllItems` provider
219
+ */
220
+ static createForTest(requestServiceFactory: () => RequestProvider, taskPoolFactory: () => TaskPoolProvider): ActiveWorkBriefingService;
221
+ /**
222
+ * Compute the effective per-section caps for the requested role. Orchestrator
223
+ * gets caps × 3 for system-wide visibility; everyone else uses the defaults
224
+ * (with optional overrides from {@link GenerateOptions.caps}).
225
+ *
226
+ * @param role - Agent role (orchestrator gets the multiplier)
227
+ * @param overrides - Optional explicit caps that win over both defaults and
228
+ * the role multiplier.
229
+ * @returns Effective caps for each section
230
+ */
231
+ private resolveCaps;
232
+ /**
233
+ * Convert a 'low' | 'normal' | 'high' priority to a sort key.
234
+ * Higher number = higher priority (sorted DESC).
235
+ *
236
+ * @param p - Priority value
237
+ * @returns Numeric sort key
238
+ */
239
+ private priorityRank;
240
+ /**
241
+ * Compute age in hours since `createdAt`. Negative or NaN inputs are
242
+ * coerced to 0 — defensive against malformed timestamps.
243
+ *
244
+ * @param createdAt - ISO8601 timestamp
245
+ * @param nowMs - Current time in milliseconds
246
+ * @returns Age in hours (>= 0)
247
+ */
248
+ private ageHours;
249
+ /**
250
+ * Read a string-typed field from a `metadata` blob, or null if missing /
251
+ * not a string. WorkItem.metadata is typed as `Record<string, unknown>` so
252
+ * every read needs this guard.
253
+ *
254
+ * @param metadata - WorkItem.metadata or undefined
255
+ * @param key - Field name to read
256
+ * @returns Trimmed string value or null
257
+ */
258
+ private readMetadataString;
259
+ /**
260
+ * Apply the per-section cap. Returns the slice + a {@link SectionTruncation}
261
+ * object that the formatter renders as a "... and X more" marker.
262
+ *
263
+ * @param items - Sorted candidate rows
264
+ * @param cap - Per-section cap
265
+ * @returns Truncation metadata + the kept rows
266
+ */
267
+ private applyCap;
268
+ /**
269
+ * Project Requests visible to this agent. Non-orchestrator agents only see
270
+ * Requests where they are the `ownerAgent`; the orchestrator sees all open
271
+ * Requests system-wide.
272
+ *
273
+ * @param requests - All Requests from {@link RequestService.listAll}
274
+ * @param sessionName - Agent session name
275
+ * @param role - Agent role
276
+ * @param nowMs - "Now" for age computation
277
+ * @returns Sorted candidate rows (priority DESC, then age DESC — older first)
278
+ */
279
+ private projectRequests;
280
+ /**
281
+ * Project active WorkItems for this agent: items the agent is on the hook
282
+ * to execute (target=me) OR items the agent has actively claimed
283
+ * (claimedBy=me, surfaced via `metadata.claimedBy`). Items targeted at this
284
+ * agent but already claimed by *another* agent are excluded — they are
285
+ * not actionable for the current session.
286
+ *
287
+ * Orchestrator override: include ALL active work items.
288
+ *
289
+ * @param items - All WorkItems from {@link TaskPoolService.getAllItems}
290
+ * @param sessionName - Agent session name
291
+ * @param role - Agent role
292
+ * @param nowMs - "Now" for age computation
293
+ * @returns Sorted candidate rows
294
+ */
295
+ private projectActiveWorkItems;
296
+ /**
297
+ * Pending review rows — WorkItems in `done_by_worker` where this agent
298
+ * is the verifier. Verifier signal = `metadata.verifier === sessionName`
299
+ * (TL/orchestrator pattern). For the orchestrator role we surface ALL
300
+ * `done_by_worker` items system-wide.
301
+ *
302
+ * @param items - All WorkItems from the pool
303
+ * @param sessionName - Agent session name
304
+ * @param role - Agent role
305
+ * @param nowMs - "Now" for age computation
306
+ * @returns Sorted candidate rows (oldest first — review backlog)
307
+ */
308
+ private projectPendingReviews;
309
+ /**
310
+ * Outbound delegations — WorkItems this agent delegated and that haven't
311
+ * resolved yet. Identified by `metadata.delegatedBy === sessionName`.
312
+ * Forward-compatible: if upstream code does not yet populate
313
+ * `metadata.delegatedBy`, this section is empty.
314
+ *
315
+ * @param items - All WorkItems from the pool
316
+ * @param sessionName - Agent session name
317
+ * @param nowMs - "Now" for age computation
318
+ * @returns Sorted candidate rows
319
+ */
320
+ private projectOutboundDelegations;
321
+ /**
322
+ * Recently auto-resolved WorkItems within the configured window
323
+ * (default 30 minutes). Surfaced so the agent knows what closed
324
+ * automatically while it was down. Identified by
325
+ * `metadata.slaResolvedAt` falling inside the window.
326
+ *
327
+ * @param items - All WorkItems from the pool
328
+ * @param sessionName - Agent session name (filters to items relevant to this agent)
329
+ * @param role - Agent role
330
+ * @param nowMs - "Now" for age computation
331
+ * @param windowMs - Window size in milliseconds
332
+ * @returns Sorted candidate rows (most recent first)
333
+ */
334
+ private projectRecentlyResolved;
335
+ /**
336
+ * Read a priority hint from WorkItem.metadata. Falls back to `'normal'`.
337
+ *
338
+ * @param metadata - WorkItem metadata blob
339
+ * @returns Briefing priority
340
+ */
341
+ private readPriorityFromMetadata;
342
+ /**
343
+ * Truncate a row title to {@link MAX_TITLE_CHARS}.
344
+ *
345
+ * @param title - Raw title
346
+ * @returns Truncated title (with ellipsis suffix if cut)
347
+ */
348
+ private truncateTitle;
349
+ /**
350
+ * Truncate a row description to {@link MAX_DESCRIPTION_CHARS}. Replaces
351
+ * newlines with spaces so a description never wraps the briefing layout.
352
+ *
353
+ * @param desc - Raw description
354
+ * @returns Truncated description
355
+ */
356
+ private truncateDescription;
357
+ /**
358
+ * Generates an active-work briefing for the given agent.
359
+ *
360
+ * Pulls from {@link RequestService} + {@link TaskPoolService}, filters
361
+ * to the agent's slice (orchestrator gets system-wide), applies per-section
362
+ * caps, and returns the structured payload. The caller renders it via
363
+ * {@link formatBriefingAsMarkdown}.
364
+ *
365
+ * Soft-fail policy: any error from the underlying services bubbles up.
366
+ * The CALL SITE in `agent-registration.service.ts` wraps this in a try/catch
367
+ * with WARN-level logging — we deliberately do NOT swallow errors here so
368
+ * test scenarios can assert that the rejection occurs, and so the optional
369
+ * skill endpoint can return a structured 500 response.
370
+ *
371
+ * @param sessionName - Agent session name (e.g. `crewly-product-sam-dd2b46f7`)
372
+ * @param role - Agent role (`developer`, `orchestrator`, etc.)
373
+ * @param options - Optional caps + window overrides for testing
374
+ * @returns The structured briefing
375
+ *
376
+ * @throws Rethrows any error from {@link RequestService.listAll} or
377
+ * {@link TaskPoolService.getAllItems}.
378
+ *
379
+ * @example
380
+ * ```typescript
381
+ * const briefing = await ActiveWorkBriefingService.getInstance()
382
+ * .generateActiveWorkBriefing('dev-001', 'developer');
383
+ * const md = ActiveWorkBriefingService.getInstance()
384
+ * .formatBriefingAsMarkdown(briefing);
385
+ * ```
386
+ */
387
+ generateActiveWorkBriefing(sessionName: string, role: string, options?: GenerateOptions): Promise<ActiveWorkBriefing>;
388
+ /**
389
+ * Format a briefing as markdown suitable for prompt injection.
390
+ *
391
+ * Output structure:
392
+ *
393
+ * ```
394
+ * ## Your Active Work
395
+ *
396
+ * ### Open Requests
397
+ * - **request-abc** — Slack inbound — _open · 2h_ *(memory: marked done — verify)*
398
+ * ...
399
+ * ### Active WorkItems
400
+ * - **wi-123** — Implement feature X — _running · 1h_
401
+ * - desc here
402
+ * ...
403
+ * ```
404
+ *
405
+ * If a {@link MemoryHints} map is provided, contradicting memory notes are
406
+ * appended INLINE on each row, per design Q5/decision #2.
407
+ *
408
+ * Soft-formatting policy: empty briefing collapses to "(No active work —
409
+ * fresh start)". Sections with zero rows are omitted (no empty headings).
410
+ *
411
+ * @param briefing - Structured briefing payload
412
+ * @param memoryHints - Optional namespaced map of `req:<id>` / `wi:<id>` →
413
+ * short note string
414
+ * @returns Markdown string
415
+ */
416
+ formatBriefingAsMarkdown(briefing: ActiveWorkBriefing, memoryHints?: MemoryHints): string;
417
+ /**
418
+ * Render the five briefing sub-sections to markdown lines. Pulled out of
419
+ * {@link formatBriefingAsMarkdown} so the overflow-recover path can reuse
420
+ * the same renderer with `compact=true` (drops descriptions to bound
421
+ * the orchestrator briefing).
422
+ *
423
+ * @param briefing - Briefing payload
424
+ * @param memoryHints - Optional contradiction notes
425
+ * @param compact - If true, drop description lines under WorkItem rows
426
+ * @returns Array of markdown blocks (joined by blank lines by caller)
427
+ */
428
+ private renderSections;
429
+ /**
430
+ * Render the truncation marker line for a section. No-op when the section
431
+ * was not truncated.
432
+ *
433
+ * @param truncation - Section truncation metadata
434
+ * @returns Marker line (empty string if not truncated)
435
+ */
436
+ private renderTruncationMarker;
437
+ /**
438
+ * Append a memory-hint annotation to a row line, if a hint exists for the
439
+ * given key. Renders the annotation italicized so it visually subordinates
440
+ * to the actionable state row.
441
+ *
442
+ * @param line - Row line so far
443
+ * @param key - Hint lookup key (e.g. `req:abc-123`)
444
+ * @param hints - Memory hints map (optional)
445
+ * @returns The line with annotation appended, or unchanged
446
+ */
447
+ private appendMemoryHint;
448
+ /** Format hours into a compact "Nh" / "Nm" string for row metadata. */
449
+ private formatAge;
450
+ /**
451
+ * Render the Open Requests section.
452
+ *
453
+ * @param rows - Capped rows
454
+ * @param truncation - Section truncation metadata
455
+ * @param hints - Memory hints
456
+ * @returns Markdown block
457
+ */
458
+ private renderOpenRequests;
459
+ /**
460
+ * Render the Active WorkItems section.
461
+ *
462
+ * @param rows - Capped rows
463
+ * @param truncation - Section truncation metadata
464
+ * @param hints - Memory hints
465
+ * @param compact - If true, drop description lines (orchestrator overflow)
466
+ * @returns Markdown block
467
+ */
468
+ private renderActiveWorkItems;
469
+ /**
470
+ * Render the Pending Reviews section.
471
+ *
472
+ * @param rows - Capped rows
473
+ * @param truncation - Section truncation metadata
474
+ * @param hints - Memory hints
475
+ * @returns Markdown block
476
+ */
477
+ private renderPendingReviews;
478
+ /**
479
+ * Render the Outbound Delegations section.
480
+ *
481
+ * @param rows - Capped rows
482
+ * @param truncation - Section truncation metadata
483
+ * @param hints - Memory hints
484
+ * @returns Markdown block
485
+ */
486
+ private renderOutboundDelegations;
487
+ /**
488
+ * Render the Recently Auto-Resolved section.
489
+ *
490
+ * @param rows - Capped rows
491
+ * @param truncation - Section truncation metadata
492
+ * @param hints - Memory hints
493
+ * @returns Markdown block
494
+ */
495
+ private renderRecentlyResolved;
496
+ }
497
+ export {};
498
+ //# sourceMappingURL=active-work-briefing.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-work-briefing.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/active-work-briefing.service.ts"],"names":[],"mappings":"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"}