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,123 @@
1
+ #!/bin/bash
2
+ # Tests for signal-digest — run with: bash execute.test.sh
3
+ # Python HTTP stub as the backend; asserts the requests the skill sends and
4
+ # the JSON it prints. Google is never called (no GSC / GA4 in the configs).
5
+ set -u
6
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ EXEC="$HERE/execute.sh"
8
+ PASS=0; FAIL=0
9
+ check() {
10
+ local name="$1"; local got="$2"; local want="$3"
11
+ if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
12
+ }
13
+
14
+ PORT=18841
15
+ TMP="$(mktemp -d)"
16
+ STUB_LOG="$TMP/requests.jsonl"; : > "$STUB_LOG"; export STUB_LOG; export STUB_PORT="$PORT"
17
+ python3 -u <<'PY' >/dev/null 2>&1 &
18
+ from http.server import BaseHTTPRequestHandler, HTTPServer
19
+ import json, os
20
+ LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
21
+ class H(BaseHTTPRequestHandler):
22
+ def _reply(self, method, data=None):
23
+ with open(LOG, 'a') as f:
24
+ f.write(json.dumps({'method': method, 'path': self.path, 'body': data, 'account': self.headers.get('X-Google-Account')}) + '\n')
25
+ path = self.path.split('?')[0]
26
+ status, out = 200, {}
27
+ if path == '/api/signal-digests/history':
28
+ out = {'site': 'visa.careerengine.us', 'entries': [{'key': 'errors:broken:/gone', 'status': 'skip', 'at': '2026-10-01T00:00:00Z', 'digestId': 'SD-1'}]}
29
+ elif path == '/api/experiments':
30
+ out = [{'id': 'EXP-1', 'status': 'running', 'metric': {'query': 'opt extension'}, 'updatedAt': '2026-10-01T00:00:00Z'}]
31
+ elif path == '/api/signal-digests/sources':
32
+ out = {'site': data['site'], 'sources': [], 'started': [k for k, v in data['sources'].items() if v.startswith('error')], 'stopped': [], 'notified': True}
33
+ elif path == '/api/google/gmail/search':
34
+ out = {'query': 'to:visa', 'count': 1, 'messages': [{'id': 'm1', 'from': 'a@b.c', 'subject': 'H1B fee?', 'date': 'd', 'snippet': 'how much'}]}
35
+ elif path == '/api/signal-digests' and method == 'POST':
36
+ if any(i.get('key') == 'tried' for i in (data or {}).get('items', [])):
37
+ status = 409
38
+ body = {'success': False, 'error': 'These actions were already decided: "tried"'}
39
+ self.send_response(status); self.send_header('Content-Type', 'application/json'); self.end_headers()
40
+ self.wfile.write(json.dumps(body).encode()); return
41
+ out = {'id': 'SD-7', 'site': data['site'], 'items': data['items'], 'card': {'slackChannelId': 'C1', 'messageTs': '1.0'}}
42
+ status = 201
43
+ self.send_response(status); self.send_header('Content-Type', 'application/json'); self.end_headers()
44
+ self.wfile.write(json.dumps({'success': True, 'data': out}).encode())
45
+ def _body(self):
46
+ n = int(self.headers.get('content-length', '0')); body = self.rfile.read(n).decode() if n else ''
47
+ return json.loads(body or '{}')
48
+ def do_GET(self): self._reply('GET')
49
+ def do_POST(self): self._reply('POST', self._body())
50
+ def log_message(self, *a, **k): pass
51
+ HTTPServer(('127.0.0.1', PORT), H).serve_forever()
52
+ PY
53
+ STUB_PID=$!
54
+ disown "$STUB_PID" 2>/dev/null || true
55
+ trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -rf "$TMP"' EXIT
56
+ for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
57
+
58
+ CFG="$TMP/ce.signal.json"
59
+ cat > "$CFG" <<'EOF'
60
+ {"siteUrl":"https://visa.careerengine.us","signalDigest":{"project":"CE site","inbox":{"query":"to:visa@careerengine.us newer_than:1d","account":"site@careerengine.us","max":5},"errors":{"checkSitemap":false}}}
61
+ EOF
62
+ BARE="$TMP/bare.json"
63
+ echo '{"siteUrl":"https://example.com","signalDigest":{"errors":{"checkSitemap":false}}}' > "$BARE"
64
+
65
+ run() { CREWLY_SESSION_NAME=tl-owen CREWLY_API_URL="http://127.0.0.1:${PORT}" HOME="$TMP" bash "$EXEC" "$@" 2>/dev/null; }
66
+ run_err() { CREWLY_SESSION_NAME=tl-owen CREWLY_API_URL="http://127.0.0.1:${PORT}" HOME="$TMP" bash "$EXEC" "$@" 2>&1 >/dev/null; }
67
+ # Skills fire a background POST /api/heartbeat on start: ignore it everywhere.
68
+ calls() { jq -c 'select(.path != "/api/heartbeat")' "$STUB_LOG"; }
69
+ last() { calls | tail -n 1 | jq -c "$1"; }
70
+ req() { calls | jq -c "select(.path | startswith(\"$1\")) | $2" | tail -n 1; }
71
+
72
+ # --- collect: history + inbox fetched, passed to the Python side
73
+ OUT=$(run collect --config "$CFG")
74
+ check "collect: exit 0 with the inbox as a source" "$(printf '%s' "$OUT" | jq -c '.sources')" '{"ga4":"not configured","gsc":"not configured","inbox":"ok","errors":"not configured"}'
75
+ check "collect: site and project from config" "$(printf '%s' "$OUT" | jq -c '[.site,.project]')" '["visa.careerengine.us","CE site"]'
76
+ check "collect: inbox messages" "$(printf '%s' "$OUT" | jq -c '.inbox.messages')" '[{"from":"a@b.c","subject":"H1B fee?","date":"d","snippet":"how much"}]'
77
+ check "collect: history asked for this site" "$(req /api/signal-digests/history '.path')" '"/api/signal-digests/history?site=visa.careerengine.us"'
78
+ check "collect: experiment cards asked for" "$(req /api/experiments '.path')" '"/api/experiments"'
79
+ check "collect: gmail query, max and account" "$(req /api/google/gmail/search '[.path,.account]')" '["/api/google/gmail/search?q=to%3Avisa%40careerengine.us%20newer_than%3A1d&max=5","site@careerengine.us"]'
80
+ check "collect: source status reported for the site" "$(req /api/signal-digests/sources '.body')" '{"site":"visa.careerengine.us","sources":{"ga4":"not configured","gsc":"not configured","inbox":"ok","errors":"not configured"}}'
81
+ check "collect: source report in the output" "$(printf '%s' "$OUT" | jq -c '.sourceReport')" '{"sent":true,"started":[],"stopped":[],"ownerTold":true}'
82
+
83
+ : > "$STUB_LOG"
84
+ run collect --config "$BARE" >/dev/null; CODE=$?
85
+ check "collect: nothing examinable exits 1" "$CODE" "1"
86
+ check "collect: still reports the source status" "$(req /api/signal-digests/sources '.body.site')" '"example.com"'
87
+ check "collect: no inbox query, no gmail call" "$(req /api/google '.path')" ''
88
+
89
+ # --- propose
90
+ cat > "$TMP/actions.json" <<'EOF'
91
+ [{"key":"gsc:low-ctr:a","source":"gsc","signal":"s1","proposal":"p1","expectedEffect":"e1","effort":"S","metric":"m1","score":99,"experiment":{"source":"gsc","measure":"ctr","query":"a"}},
92
+ {"key":"errors:broken:/x","source":"errors","signal":"s2","proposal":"p2","expectedEffect":"e2","effort":"S"},
93
+ {"key":"ga4:drop","source":"ga4","signal":"s3","proposal":"p3","expectedEffect":"e3","effort":"M"}]
94
+ EOF
95
+ OUT=$(run propose --config "$CFG" --actions "$TMP/actions.json")
96
+ check "propose: output" "$OUT" '{"success":true,"digestId":"SD-7","site":"visa.careerengine.us","actions":3,"card":"posted"}'
97
+ check "propose: body (site, project, no score, experiment kept)" "$(last '.body | [.site, .project, (.items|length), .items[0]]')" '["visa.careerengine.us","CE site",3,{"key":"gsc:low-ctr:a","source":"gsc","signal":"s1","proposal":"p1","expectedEffect":"e1","effort":"S","metric":"m1","experiment":{"source":"gsc","measure":"ctr","query":"a"}}]'
98
+ check "propose: absolute config path" "$(last '.body.config')" "\"$CFG\""
99
+ check "propose: no metric key when absent" "$(last '.body.items[1] | has("metric")')" 'false'
100
+ run propose --config "$BARE" --actions '{"items":[{"key":"k1","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k2","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k3","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]}' >/dev/null
101
+ check "propose: inline {items}, no project, site from siteUrl" "$(last '.body | [.site, has("project"), (.items|length)]')" '["example.com",false,3]'
102
+ OUT=$(run propose --config "$CFG" --actions '[{"key":"tried","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]' || true)
103
+ check "propose: a 409 is passed on" "$(printf '%s' "$OUT" | jq -r '.success')" "false"
104
+ check "propose: bad actions" "$(run_err propose --config "$CFG" --actions '{"nope":1}' | jq -r .error | cut -c1-25)" "--actions must be a JSON "
105
+
106
+ # --- schedule: prints the create-cron object (it never creates the cron itself)
107
+ mkdir -p "$TMP/.crewly/teams/team-ce"
108
+ echo '{"members":[{"sessionName":"tl-owen"}]}' > "$TMP/.crewly/teams/team-ce/config.json"
109
+ : > "$STUB_LOG"
110
+ OUT=$(run schedule --config "$CFG" --cron "30 7 * * 1-5")
111
+ check "schedule: cron object" "$(printf '%s' "$OUT" | jq -c '.createCron | [.cronExpression,.timezone,.targetAgent,.targetTeamId]')" '["30 7 * * 1-5","America/New_York","tl-owen","team-ce"]'
112
+ check "schedule: task names the site and both steps" "$(printf '%s' "$OUT" | jq -r '.createCron.taskDescription | test("visa.careerengine.us") and test("collect --config /") and test("propose --config")')" "true"
113
+ check "schedule: no API call" "$(calls | wc -l | tr -d ' ')" "0"
114
+ check "schedule: no daily team-channel post about failing sources" "$(printf '%s' "$OUT" | jq -r '.createCron.taskDescription | test("team channel")')" "false"
115
+
116
+ # --- argument errors
117
+ check "config required" "$(run_err collect | jq -r .error)" "Missing required parameter: config (--config)"
118
+ check "unknown command" "$(run_err frobnicate --config "$CFG" | jq -r .error)" "Unknown command: frobnicate (collect | propose | schedule)"
119
+ OUT=$(run '{"command":"propose","config":"'"$CFG"'","actions":[{"key":"k1","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k2","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k3","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]}')
120
+ check "json input: actions as an array" "$(printf '%s' "$OUT" | jq -r .digestId)" "SD-7"
121
+
122
+ echo "signal-digest: $PASS passed, $FAIL failed"
123
+ [ "$FAIL" -eq 0 ]
@@ -0,0 +1,23 @@
1
+ {
2
+ "siteUrl": "https://visa.careerengine.us",
3
+ "gscProperty": "sc-domain:visa.careerengine.us",
4
+ "ga4PropertyId": "123456789",
5
+ "ga4HostName": "visa.careerengine.us",
6
+ "credentialsPath": "SEO_OPS_GOOGLE_CREDENTIALS",
7
+ "sitemapUrl": "https://visa.careerengine.us/sitemap.xml",
8
+ "exclusions": {
9
+ "queries": ["^site:", "careerengine"],
10
+ "pages": ["/admin"]
11
+ },
12
+ "urlNormalize": { "stripScheme": true, "localePrefixes": ["en", "zh"] },
13
+ "signalDigest": {
14
+ "site": "visa.careerengine.us",
15
+ "project": "CE site",
16
+ "days": 7,
17
+ "ga4": { "conversionEvents": ["generate_lead", "form_submit"] },
18
+ "inbox": { "query": "to:visa@careerengine.us newer_than:1d", "max": 20 },
19
+ "errors": { "checkSitemap": true, "maxUrls": 60, "url": "https://visa.careerengine.us/api/client-errors?days=1" },
20
+ "experimentLog": "~/.crewly/wiki/ce-site/experiment-log.md",
21
+ "thresholds": { "ga4DropPct": 20, "ga4MinPrevSessions": 50, "ga4MinPrevKeyEvents": 5 }
22
+ }
23
+ }