crewly 1.20.194 → 1.20.195

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 (320) hide show
  1. package/config/roles/auditor/prompt.md +2 -2
  2. package/config/roles/orchestrator/fragments/communication.md +1 -1
  3. package/config/roles/orchestrator/prompt.md +15 -505
  4. package/config/skills/agent/computer-use/SKILL.md +6 -0
  5. package/config/skills/agent/core/experiment-card/SKILL.md +10 -5
  6. package/config/skills/agent/core/experiment-card/execute.sh +5 -3
  7. package/config/skills/agent/core/experiment-card/execute.test.sh +6 -0
  8. package/config/skills/agent/desktop-app-control/execute.sh +5 -2
  9. package/config/skills/orchestrator/send-message/execute.sh +19 -2
  10. package/config/skills/orchestrator/send-message/execute.test.sh +80 -0
  11. package/config/skills/registry.json +6 -5
  12. package/config/skills/team-leader/signal-digest/SKILL.md +110 -0
  13. package/config/skills/team-leader/signal-digest/execute.sh +173 -0
  14. package/config/skills/team-leader/signal-digest/execute.test.sh +123 -0
  15. package/config/skills/team-leader/signal-digest/signal-digest.config.example.json +23 -0
  16. package/config/skills/team-leader/signal-digest/signal_digest.py +572 -0
  17. package/config/skills/team-leader/signal-digest/signal_digest.test.py +319 -0
  18. package/dist/backend/backend/src/constants.d.ts +133 -0
  19. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  20. package/dist/backend/backend/src/constants.js +135 -2
  21. package/dist/backend/backend/src/constants.js.map +1 -1
  22. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  23. package/dist/backend/backend/src/controllers/chat/chat.controller.js +6 -0
  24. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  25. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +3 -1
  27. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts +1 -0
  29. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +1 -0
  31. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  33. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +5 -2
  34. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  35. package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/request/request.controller.js +5 -1
  37. package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
  39. package/dist/backend/backend/src/controllers/settings/settings.controller.js +18 -2
  40. package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
  41. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts +26 -0
  42. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts.map +1 -0
  43. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +100 -0
  44. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -0
  45. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +47 -0
  46. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -0
  47. package/dist/backend/backend/src/controllers/trace/trace.controller.js +169 -0
  48. package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -0
  49. package/dist/backend/backend/src/index.d.ts.map +1 -1
  50. package/dist/backend/backend/src/index.js +29 -19
  51. package/dist/backend/backend/src/index.js.map +1 -1
  52. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  53. package/dist/backend/backend/src/routes/api.routes.js +11 -0
  54. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  55. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  56. package/dist/backend/backend/src/services/agent/agent-registration.service.js +6 -1
  57. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  58. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
  59. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  60. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
  61. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +22 -6
  63. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  64. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
  65. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  66. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +6 -0
  67. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/backup/backup-archive.service.js +7 -1
  69. package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
  70. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +1 -1
  71. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -1
  72. package/dist/backend/backend/src/services/chat/chat.service.d.ts +78 -2
  73. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  74. package/dist/backend/backend/src/services/chat/chat.service.js +210 -26
  75. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  76. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +4 -3
  77. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +7 -4
  79. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  80. package/dist/backend/backend/src/services/decisions/decision-store.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/decisions/decision-store.js +5 -1
  82. package/dist/backend/backend/src/services/decisions/decision-store.js.map +1 -1
  83. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +10 -1
  84. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/decisions/decision.wiring.js +20 -9
  86. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  87. package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts +1 -1
  88. package/dist/backend/backend/src/services/experiments/experiment-verdict.js +2 -2
  89. package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -1
  90. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +52 -3
  91. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/experiments/experiment.service.js +178 -24
  93. package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -1
  94. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +20 -5
  95. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/experiments/experiment.wiring.js +27 -7
  97. package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -1
  98. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +7 -0
  99. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +21 -1
  101. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js.map +1 -1
  102. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
  104. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  105. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
  106. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +4 -0
  108. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  109. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -1
  110. package/dist/backend/backend/src/services/orc/orc-status-router.service.js +10 -2
  111. package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -1
  112. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
  113. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +16 -0
  114. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
  115. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  116. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +2 -0
  117. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  118. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +15 -0
  120. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  121. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/session/session-handoff.service.js +8 -5
  123. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts +75 -0
  125. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts.map +1 -0
  126. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js +187 -0
  127. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js.map +1 -0
  128. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts +86 -0
  129. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts.map +1 -0
  130. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js +307 -0
  131. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js.map +1 -0
  132. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts +85 -0
  133. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts.map +1 -0
  134. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js +185 -0
  135. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js.map +1 -0
  136. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts +272 -0
  137. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts.map +1 -0
  138. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js +570 -0
  139. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js.map +1 -0
  140. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts +51 -0
  141. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts.map +1 -0
  142. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js +116 -0
  143. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js.map +1 -0
  144. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts +5 -1
  145. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  146. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +6 -2
  147. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  148. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +2 -1
  149. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +3 -2
  151. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  152. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +1 -1
  153. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
  154. package/dist/backend/backend/src/services/slack/slack.service.d.ts +25 -1
  155. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  156. package/dist/backend/backend/src/services/slack/slack.service.js +44 -7
  157. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  158. package/dist/backend/backend/src/services/system/auto-update.service.d.ts +2 -2
  159. package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
  160. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/task-pool/pool-storage.js +4 -0
  162. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  163. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  164. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +2 -0
  165. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  166. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +195 -0
  167. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
  168. package/dist/backend/backend/src/services/trace/trace-context.service.js +432 -0
  169. package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -0
  170. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +42 -0
  171. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -0
  172. package/dist/backend/backend/src/services/trace/trace-http.middleware.js +146 -0
  173. package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -0
  174. package/dist/backend/backend/src/services/trace/trace-markers.d.ts +93 -0
  175. package/dist/backend/backend/src/services/trace/trace-markers.d.ts.map +1 -0
  176. package/dist/backend/backend/src/services/trace/trace-markers.js +162 -0
  177. package/dist/backend/backend/src/services/trace/trace-markers.js.map +1 -0
  178. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +290 -0
  179. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
  180. package/dist/backend/backend/src/services/trace/trace-recorder.js +669 -0
  181. package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -0
  182. package/dist/backend/backend/src/services/trace/trace-store.d.ts +269 -0
  183. package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -0
  184. package/dist/backend/backend/src/services/trace/trace-store.js +602 -0
  185. package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -0
  186. package/dist/backend/backend/src/services/trace/trace.types.d.ts +118 -0
  187. package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -0
  188. package/dist/backend/backend/src/services/trace/trace.types.js +85 -0
  189. package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -0
  190. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +1 -1
  191. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  193. package/dist/backend/backend/src/services/v3/request.service.js +4 -0
  194. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  195. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +22 -2
  197. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  198. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +3 -0
  199. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +7 -0
  201. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  202. package/dist/backend/backend/src/types/experiment.types.d.ts +8 -6
  203. package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -1
  204. package/dist/backend/backend/src/types/experiment.types.js.map +1 -1
  205. package/dist/backend/backend/src/types/signal-digest.types.d.ts +185 -0
  206. package/dist/backend/backend/src/types/signal-digest.types.d.ts.map +1 -0
  207. package/dist/backend/backend/src/types/signal-digest.types.js +21 -0
  208. package/dist/backend/backend/src/types/signal-digest.types.js.map +1 -0
  209. package/dist/backend/backend/src/types/v2/request.types.d.ts +4 -0
  210. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  211. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  212. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +4 -0
  213. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  214. package/dist/backend/backend/src/types/v2/work-item.types.js +1 -0
  215. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  216. package/dist/backend/backend/src/utils/security.d.ts +2 -0
  217. package/dist/backend/backend/src/utils/security.d.ts.map +1 -1
  218. package/dist/backend/backend/src/utils/security.js +3 -1
  219. package/dist/backend/backend/src/utils/security.js.map +1 -1
  220. package/dist/backend/backend/src/websocket/chat.gateway.d.ts +9 -0
  221. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  222. package/dist/backend/backend/src/websocket/chat.gateway.js +26 -0
  223. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  224. package/dist/backend/build-info.json +2 -2
  225. package/dist/cli/backend/src/constants.d.ts +133 -0
  226. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  227. package/dist/cli/backend/src/constants.js +135 -2
  228. package/dist/cli/backend/src/constants.js.map +1 -1
  229. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  230. package/dist/cli/backend/src/services/agent/agent-registration.service.js +6 -1
  231. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  232. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
  233. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  234. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
  235. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  236. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +22 -6
  237. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  238. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
  239. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  240. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +6 -0
  241. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  242. package/dist/cli/backend/src/services/backup/backup-archive.service.js +7 -1
  243. package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
  244. package/dist/cli/backend/src/services/chat/chat.service.d.ts +185 -0
  245. package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -0
  246. package/dist/cli/backend/src/services/chat/chat.service.js +558 -0
  247. package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -0
  248. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +4 -3
  249. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  250. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +7 -4
  251. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  252. package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -1
  253. package/dist/cli/backend/src/services/decisions/decision-store.js +5 -1
  254. package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -1
  255. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  256. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
  257. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  258. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
  259. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  260. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +4 -0
  261. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  262. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  263. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +2 -0
  264. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  265. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  266. package/dist/cli/backend/src/services/session/session-handoff.service.js +8 -5
  267. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  268. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +2 -1
  269. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  270. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +3 -2
  271. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  272. package/dist/cli/backend/src/services/slack/slack.service.d.ts +25 -1
  273. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  274. package/dist/cli/backend/src/services/slack/slack.service.js +44 -7
  275. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  276. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  277. package/dist/cli/backend/src/services/task-pool/pool-storage.js +4 -0
  278. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  279. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  280. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +2 -0
  281. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  282. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +195 -0
  283. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
  284. package/dist/cli/backend/src/services/trace/trace-context.service.js +432 -0
  285. package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -0
  286. package/dist/cli/backend/src/services/trace/trace-markers.d.ts +93 -0
  287. package/dist/cli/backend/src/services/trace/trace-markers.d.ts.map +1 -0
  288. package/dist/cli/backend/src/services/trace/trace-markers.js +162 -0
  289. package/dist/cli/backend/src/services/trace/trace-markers.js.map +1 -0
  290. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +290 -0
  291. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
  292. package/dist/cli/backend/src/services/trace/trace-recorder.js +669 -0
  293. package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -0
  294. package/dist/cli/backend/src/services/trace/trace-store.d.ts +269 -0
  295. package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -0
  296. package/dist/cli/backend/src/services/trace/trace-store.js +602 -0
  297. package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -0
  298. package/dist/cli/backend/src/services/trace/trace.types.d.ts +118 -0
  299. package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -0
  300. package/dist/cli/backend/src/services/trace/trace.types.js +85 -0
  301. package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -0
  302. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  303. package/dist/cli/backend/src/services/v3/request.service.js +4 -0
  304. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  305. package/dist/cli/backend/src/types/v2/request.types.d.ts +4 -0
  306. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  307. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  308. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +4 -0
  309. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  310. package/dist/cli/backend/src/types/v2/work-item.types.js +1 -0
  311. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  312. package/dist/cli/backend/src/utils/security.d.ts +196 -0
  313. package/dist/cli/backend/src/utils/security.d.ts.map +1 -0
  314. package/dist/cli/backend/src/utils/security.js +538 -0
  315. package/dist/cli/backend/src/utils/security.js.map +1 -0
  316. package/dist/cli/backend/src/websocket/chat.gateway.d.ts +9 -0
  317. package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  318. package/dist/cli/backend/src/websocket/chat.gateway.js +26 -0
  319. package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -1
  320. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Run traces API (specs/2026-10-03-run-traces.md, issue #983).
3
+ *
4
+ * - `GET /api/traces?since=<ISO>&type=<rootKind>&limit=` — traces, most recently active first
5
+ * - `GET /api/traces/by-ref?workItemId=|ticketId=|requestId=|decisionId=|experimentId=` — the trace of an entity
6
+ * - `GET /api/traces/:id?offset=&limit=` — `{ root, events, total, offset, limit, truncated }`
7
+ * - `POST /api/traces` `{ kind: 'goal'|'experiment', summary, refs? }` — start a goal / experiment root
8
+ *
9
+ * @module controllers/trace/trace.controller
10
+ */
11
+ import { Router } from 'express';
12
+ import { TRACE_CONSTANTS } from '../../constants.js';
13
+ import { readAgentSessionHeader } from '../../utils/agent-caller.utils.js';
14
+ import { getTraceStore } from '../../services/trace/trace-store.js';
15
+ import { startGoalTrace } from '../../services/trace/trace-recorder.js';
16
+ import { isTraceId, isTraceRootKind } from '../../services/trace/trace.types.js';
17
+ /** Query parameter → index ref kind, in lookup order. */
18
+ const REF_PARAMS = [
19
+ ['workItemId', 'workItem'],
20
+ ['ticketId', 'ticket'],
21
+ ['requestId', 'request'],
22
+ ['decisionId', 'decision'],
23
+ ['experimentId', 'experiment'],
24
+ ];
25
+ /**
26
+ * A query value as a trimmed string.
27
+ *
28
+ * @param value - Raw query value
29
+ * @returns String, or undefined
30
+ */
31
+ function queryString(value) {
32
+ const v = Array.isArray(value) ? value[0] : value;
33
+ return typeof v === 'string' && v.trim().length > 0 ? v.trim() : undefined;
34
+ }
35
+ /**
36
+ * A query value as a non-negative integer.
37
+ *
38
+ * @param value - Raw query value
39
+ * @param fallback - Default
40
+ * @returns The integer
41
+ */
42
+ function queryInt(value, fallback) {
43
+ const s = queryString(value);
44
+ if (!s || !/^\d+$/.test(s))
45
+ return fallback;
46
+ return Number(s);
47
+ }
48
+ /**
49
+ * GET /api/traces
50
+ *
51
+ * @param req - Query: since (ISO), type (root kind), limit
52
+ * @param res - `{ success, data: { traces, writeFailures } }`
53
+ */
54
+ export function listTraces(req, res) {
55
+ const sinceRaw = queryString(req.query.since);
56
+ const since = sinceRaw ? new Date(sinceRaw) : undefined;
57
+ if (since && Number.isNaN(since.getTime())) {
58
+ res.status(400).json({ success: false, error: 'since must be an ISO date' });
59
+ return;
60
+ }
61
+ const type = queryString(req.query.type);
62
+ if (type && !isTraceRootKind(type)) {
63
+ res.status(400).json({ success: false, error: 'type must be one of request, goal, experiment, owner_message' });
64
+ return;
65
+ }
66
+ const store = getTraceStore();
67
+ const traces = store.list({
68
+ ...(since ? { since } : {}),
69
+ ...(type && isTraceRootKind(type) ? { rootKind: type } : {}),
70
+ limit: queryInt(req.query.limit, TRACE_CONSTANTS.DEFAULT_LIST_LIMIT),
71
+ });
72
+ // writeFailures: trace writes lost since the backend started (disk full, permissions).
73
+ res.json({ success: true, data: { traces, writeFailures: store.writeFailures } });
74
+ }
75
+ /**
76
+ * GET /api/traces/by-ref
77
+ *
78
+ * @param req - Query: one of workItemId, ticketId, requestId, decisionId, experimentId
79
+ * @param res - `{ success, data: { traceId, root } }`, 400 without a ref, 404 when unknown
80
+ */
81
+ export function traceByRef(req, res) {
82
+ const store = getTraceStore();
83
+ let asked = false;
84
+ for (const [param, kind] of REF_PARAMS) {
85
+ const id = queryString(req.query[param]);
86
+ if (!id)
87
+ continue;
88
+ asked = true;
89
+ const traceId = store.traceByRef(kind, id);
90
+ const entry = traceId ? store.getEntry(traceId) : null;
91
+ if (entry) {
92
+ res.json({ success: true, data: { traceId: entry.traceId, root: entry.root } });
93
+ return;
94
+ }
95
+ }
96
+ if (!asked) {
97
+ res.status(400).json({ success: false, error: 'Pass one of workItemId, ticketId, requestId, decisionId, experimentId' });
98
+ return;
99
+ }
100
+ res.status(404).json({ success: false, error: 'No trace for that reference (only work started after traces were enabled has one)' });
101
+ }
102
+ /**
103
+ * GET /api/traces/:id
104
+ *
105
+ * @param req - Params: id; query: offset, limit
106
+ * @param res - `{ success, data: { root, events, total, offset, limit, truncated } }`
107
+ */
108
+ export async function getTrace(req, res) {
109
+ const id = req.params.id;
110
+ if (!isTraceId(id)) {
111
+ res.status(400).json({ success: false, error: 'Not a trace id (tr-YYYYMMDD-xxxxxxxx)' });
112
+ return;
113
+ }
114
+ const page = await getTraceStore().read(id, queryInt(req.query.offset, 0), queryInt(req.query.limit, TRACE_CONSTANTS.DEFAULT_PAGE_SIZE));
115
+ if (!page) {
116
+ res.status(404).json({ success: false, error: `Trace ${id} not found` });
117
+ return;
118
+ }
119
+ res.json({ success: true, data: page });
120
+ }
121
+ /**
122
+ * POST /api/traces — start a goal or experiment trace. An agent caller's turn
123
+ * is bound to it.
124
+ *
125
+ * @param req - Body: kind ('goal' | 'experiment'), summary, refs?
126
+ * @param res - 201 `{ success, data: { traceId } }`
127
+ */
128
+ export function startTrace(req, res) {
129
+ const body = (req.body ?? {});
130
+ if (body.kind !== 'goal' && body.kind !== 'experiment') {
131
+ res.status(400).json({ success: false, error: "kind must be 'goal' or 'experiment'" });
132
+ return;
133
+ }
134
+ if (typeof body.summary !== 'string' || body.summary.trim().length === 0) {
135
+ res.status(400).json({ success: false, error: 'summary is required' });
136
+ return;
137
+ }
138
+ const refs = {};
139
+ if (body.refs && typeof body.refs === 'object') {
140
+ for (const key of ['requestId', 'ticketId', 'workItemId', 'messageId', 'decisionId', 'experimentId']) {
141
+ const v = body.refs[key];
142
+ if (typeof v === 'string' && v.length > 0)
143
+ refs[key] = v;
144
+ }
145
+ }
146
+ const session = readAgentSessionHeader(req);
147
+ const traceId = startGoalTrace({ kind: body.kind, summary: body.summary, refs, ...(session ? { session } : {}) });
148
+ if (!traceId) {
149
+ res.status(500).json({ success: false, error: 'The trace could not be started' });
150
+ return;
151
+ }
152
+ res.status(201).json({ success: true, data: { traceId } });
153
+ }
154
+ /**
155
+ * Router for `/api/traces`.
156
+ *
157
+ * @returns Express router
158
+ */
159
+ export function createTraceRouter() {
160
+ const router = Router();
161
+ router.get('/', listTraces);
162
+ router.get('/by-ref', traceByRef);
163
+ router.post('/', startTrace);
164
+ router.get('/:id', (req, res, next) => {
165
+ getTrace(req, res).catch(next);
166
+ });
167
+ return router;
168
+ }
169
+ //# sourceMappingURL=trace.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/trace/trace.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AA2CA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA8PjD,qBAAa,YAAY;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAqE;IACnF,gFAAgF;IAChF,OAAO,CAAC,iBAAiB,CAAC,CAAyD;IAEnF,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,4BAA4B,CAAgC;IACpE,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,sBAAsB,CAAiD;IAC/E,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,kGAAkG;IAClG,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,+BAA+B,CAAgD;IACvF,+FAA+F;IAC/F,OAAO,CAAC,oBAAoB,CAAqC;IACjE,8HAA8H;IAC9H,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,OAAO,CAAC,6BAA6B,CAA8C;IACnF,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,2BAA2B,CAA+B;IAClE,OAAO,CAAC,0BAA0B,CAA8B;IAChE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,kBAAkB,CAA0C;IAKpE,OAAO,CAAC,aAAa,CAAuE;IAC5F,OAAO,CAAC,gBAAgB,CAET;IAGf,OAAO,CAAC,cAAc,CAAS;IAC/B,oEAAoE;IACpE,OAAO,CAAC,qBAAqB,CAA6C;IAC1E,OAAO,CAAC,qBAAqB,CAA2G;IACxI,OAAO,CAAC,gBAAgB,CAAiG;IACzH,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAK;IACjC,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,wBAAwB,CAA+B;gBAEnD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAsE3C,OAAO,CAAC,kBAAkB;IA4sC1B,OAAO,CAAC,mBAAmB;IA4D3B,OAAO,CAAC,eAAe;IAqLvB,OAAO,CAAC,kBAAkB;IAwBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAu3D5B;;;OAGG;YACW,2BAA2B;IAuCzC;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,gCAAgC;IAsB9C;;;OAGG;YACW,8BAA8B;IAsB5C;;;;OAIG;YACW,8BAA8B;IA8M5C;;;;;;;;;;;;OAYG;YACW,6BAA6B;IAsB3C;;;;;OAKG;YACW,iCAAiC;IAoL/C;;;;OAIG;YACW,2BAA2B;YA0B3B,qBAAqB;IAsBnC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YA6BZ,eAAe;YAoFf,kBAAkB;IAgBhC,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAsE1B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA2DvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuClC;;;;;OAKG;YACW,0BAA0B;IAkExC;;;;OAIG;YACW,qBAAqB;IA6DnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;YACW,+BAA+B;IA0C7C;;;;;;OAMG;YACW,kBAAkB;IA0BhC,OAAO,CAAC,qBAAqB;IAoC7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoE1B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;OAcG;IACH,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAE1D;;;;;;;;OAQG;IACH;;OAEG;IACH;;;;;OAKG;YACW,sBAAsB;YA4CtB,kBAAkB;YAwGlB,yBAAyB;IAyFvC;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;YAyBd,wBAAwB;IAWtC,OAAO,CAAC,qBAAqB;IA8H7B,OAAO,CAAC,cAAc;IActB;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoWpG,SAAS,IAAI,aAAa;CAG1B;AAmCD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":"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"}
@@ -3014,14 +3014,15 @@ export class CrewlyServer {
3014
3014
  const slack = getSlackService();
3015
3015
  if (!slack.isConnected())
3016
3016
  return false;
3017
- await slack.sendNotification({
3017
+ // Only a delivered notice counts: sendNotification resolves
3018
+ // false when there was no channel to send it to.
3019
+ return slack.sendNotification({
3018
3020
  type: 'project_update',
3019
3021
  title,
3020
3022
  message,
3021
3023
  urgency: urgent ? 'high' : 'normal',
3022
3024
  timestamp: new Date().toISOString(),
3023
3025
  });
3024
- return true;
3025
3026
  });
3026
3027
  TicketAutopilotService.getInstance()?.stop();
3027
3028
  TicketAutopilotService.setInstance(autopilot);
@@ -3045,14 +3046,15 @@ export class CrewlyServer {
3045
3046
  const slack = getSlackService();
3046
3047
  if (!slack.isConnected())
3047
3048
  return false;
3048
- await slack.sendNotification({
3049
+ // Only a delivered notice counts: sendNotification resolves
3050
+ // false when there was no channel to send it to.
3051
+ return slack.sendNotification({
3049
3052
  type: 'project_update',
3050
3053
  title,
3051
3054
  message,
3052
3055
  urgency: urgent ? 'high' : 'normal',
3053
3056
  timestamp: new Date().toISOString(),
3054
3057
  });
3055
- return true;
3056
3058
  });
3057
3059
  ExperimentService.getInstance()?.stop();
3058
3060
  ExperimentService.setInstance(experiments);
@@ -4834,24 +4836,25 @@ export class CrewlyServer {
4834
4836
  const { createDecisionService, attachDecisionSlackListeners, attachSkipAllCommand } = await import('./services/decisions/decision.wiring.js');
4835
4837
  const { DecisionService } = await import('./services/decisions/decision.service.js');
4836
4838
  const RUNNING = new Set(['running', 'accepted', 'proposed']);
4839
+ const sendToAgent = async (session, text) => {
4840
+ let exists = false;
4841
+ try {
4842
+ exists = getSessionBackendSync()?.sessionExists(session) ?? false;
4843
+ }
4844
+ catch {
4845
+ exists = false;
4846
+ }
4847
+ if (!exists) {
4848
+ const { activateAgentBySession } = await import('./controllers/team/team.controller.js');
4849
+ await activateAgentBySession(this.apiController, session).catch(() => undefined);
4850
+ }
4851
+ const result = await this.apiController.agentRegistrationService.sendMessageToAgent(session, text);
4852
+ return result.success;
4853
+ };
4837
4854
  const decisions = createDecisionService({
4838
4855
  crewlyHome: this.config.crewlyHome,
4839
4856
  getTeams: () => this.storageService.getTeams(),
4840
- sendToAgent: async (session, text) => {
4841
- let exists = false;
4842
- try {
4843
- exists = getSessionBackendSync()?.sessionExists(session) ?? false;
4844
- }
4845
- catch {
4846
- exists = false;
4847
- }
4848
- if (!exists) {
4849
- const { activateAgentBySession } = await import('./controllers/team/team.controller.js');
4850
- await activateAgentBySession(this.apiController, session).catch(() => undefined);
4851
- }
4852
- const result = await this.apiController.agentRegistrationService.sendMessageToAgent(session, text);
4853
- return result.success;
4854
- },
4857
+ sendToAgent,
4855
4858
  sendToOrchestrator: async (text) => {
4856
4859
  this.messageQueueService.enqueue({ content: text, conversationId: 'system', source: 'system_event' });
4857
4860
  return true;
@@ -4880,6 +4883,13 @@ export class CrewlyServer {
4880
4883
  await attachSkipAllCommand(decisions).catch((err) => this.logger.warn('Skip-all command not wired (non-critical)', { error: err instanceof Error ? err.message : String(err) }));
4881
4884
  decisions.start();
4882
4885
  this.logger.info('Decision cards started');
4886
+ // Daily signal digest (#987, specs/2026-10-03-signal-digest.md): Do / Skip
4887
+ // per action on one card; Do opens an experiment ticket.
4888
+ const { createSignalDigestService, attachSignalDigestSlackListeners } = await import('./services/signal-digest/signal-digest.wiring.js');
4889
+ const { SignalDigestService } = await import('./services/signal-digest/signal-digest.service.js');
4890
+ const signalDigests = createSignalDigestService({ crewlyHome: this.config.crewlyHome, getTeams: () => this.storageService.getTeams(), sendToAgent });
4891
+ SignalDigestService.setInstance(signalDigests);
4892
+ attachSignalDigestSlackListeners(signalDigests);
4883
4893
  // Runtime Terms consent (specs/2026-10-01-runtime-terms-consent.md): the
4884
4894
  // owner agrees to a runtime's first-run Terms from a Slack card.
4885
4895
  const { startRuntimeTerms } = await import('./services/runtime-terms/runtime-terms.wiring.js');