crewly 1.3.31 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (665) hide show
  1. package/config/constants.ts +18 -3
  2. package/config/hooks/install-hooks.sh +88 -0
  3. package/config/hooks/pre-commit +104 -0
  4. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +17 -24
  5. package/config/roles/auditor/role.json +13 -0
  6. package/config/roles/orchestrator/prompt.md +25 -0
  7. package/config/roles/product-manager/prompt.md +18 -1
  8. package/config/roles/researcher/prompt.md +110 -0
  9. package/config/roles/team-leader/prompt.md +31 -8
  10. package/config/roles/team-leader/tl-addon.md +40 -9
  11. package/config/roles/ux-designer/prompt.md +111 -0
  12. package/config/skills/_common/lib.sh +33 -0
  13. package/config/skills/agent/browse-stealth/{instructions.md → SKILL.md} +40 -0
  14. package/config/skills/agent/chrome-attach/SKILL.md +84 -0
  15. package/config/skills/agent/chrome-attach/execute.sh +279 -0
  16. package/config/skills/agent/competitor-content-tracker/{instructions.md → SKILL.md} +34 -0
  17. package/config/skills/agent/computer-use/{instructions.md → SKILL.md} +43 -0
  18. package/config/skills/agent/content-calendar/{instructions.md → SKILL.md} +32 -0
  19. package/config/skills/agent/content-repurposer/{instructions.md → SKILL.md} +38 -0
  20. package/config/skills/agent/content-writer/{instructions.md → SKILL.md} +38 -0
  21. package/config/skills/agent/core/accept-task/{instructions.md → SKILL.md} +37 -0
  22. package/config/skills/agent/core/block-task/{instructions.md → SKILL.md} +37 -0
  23. package/config/skills/agent/core/check-quality-gates/{instructions.md → SKILL.md} +40 -0
  24. package/config/skills/agent/core/complete-task/{instructions.md → SKILL.md} +37 -0
  25. package/config/skills/agent/core/complete-task/execute.sh +15 -0
  26. package/config/skills/agent/core/generate-pdf/{instructions.md → SKILL.md} +42 -0
  27. package/config/skills/agent/core/get-my-context/{instructions.md → SKILL.md} +38 -0
  28. package/config/skills/agent/core/get-sops/{instructions.md → SKILL.md} +38 -0
  29. package/config/skills/agent/core/get-team-norms/execute.sh +106 -0
  30. package/config/skills/agent/core/get-team-status/SKILL.md +55 -0
  31. package/config/skills/agent/core/handoff-task/execute.sh +150 -0
  32. package/config/skills/agent/core/heartbeat/{instructions.md → SKILL.md} +27 -0
  33. package/config/skills/agent/core/marketplace-search/{instructions.md → SKILL.md} +41 -0
  34. package/config/skills/agent/core/query-knowledge/{instructions.md → SKILL.md} +40 -0
  35. package/config/skills/agent/core/read-task/SKILL.md +56 -0
  36. package/config/skills/agent/core/recall/{instructions.md → SKILL.md} +38 -0
  37. package/config/skills/agent/core/record-learning/{instructions.md → SKILL.md} +38 -0
  38. package/config/skills/agent/core/register-self/SKILL.md +54 -0
  39. package/config/skills/agent/core/remember/{instructions.md → SKILL.md} +37 -0
  40. package/config/skills/agent/core/remember/execute.sh +6 -0
  41. package/config/skills/agent/core/reply-chat/{instructions.md → SKILL.md} +37 -0
  42. package/config/skills/agent/core/report-progress/{instructions.md → SKILL.md} +38 -0
  43. package/config/skills/agent/core/report-status/{instructions.md → SKILL.md} +39 -0
  44. package/config/skills/agent/core/send-chat-response/{instructions.md → SKILL.md} +37 -0
  45. package/config/skills/agent/core/send-message/SKILL.md +58 -0
  46. package/config/skills/agent/core/update-team-norm/execute.sh +115 -0
  47. package/config/skills/agent/desktop-app-control/{instructions.md → SKILL.md} +42 -0
  48. package/config/skills/agent/trend-monitor/{instructions.md → SKILL.md} +34 -0
  49. package/config/skills/agent/vnc-browser/{instructions.md → SKILL.md} +38 -0
  50. package/config/skills/auditor/score-task/SKILL.md +28 -0
  51. package/config/skills/auditor/score-task/execute.sh +21 -0
  52. package/config/skills/examples/enterprise-skill-example.json +22 -0
  53. package/config/skills/examples/premium-skill-example.json +22 -0
  54. package/config/skills/orchestrator/assign-task/SKILL.md +41 -0
  55. package/config/skills/orchestrator/assign-team-to-project/{instructions.md → SKILL.md} +25 -0
  56. package/config/skills/orchestrator/broadcast/{instructions.md → SKILL.md} +24 -0
  57. package/config/skills/orchestrator/broadcast-to-org/{instructions.md → SKILL.md} +25 -0
  58. package/config/skills/orchestrator/cancel-all-schedules/{instructions.md → SKILL.md} +5 -0
  59. package/config/skills/orchestrator/cancel-schedule/SKILL.md +43 -0
  60. package/config/skills/orchestrator/complete-task/SKILL.md +41 -0
  61. package/config/skills/orchestrator/create-project/{instructions.md → SKILL.md} +24 -0
  62. package/config/skills/orchestrator/create-team/{instructions.md → SKILL.md} +24 -0
  63. package/config/skills/orchestrator/delegate-task/{instructions.md → SKILL.md} +27 -0
  64. package/config/skills/orchestrator/delegate-task/execute.sh +31 -2
  65. package/config/skills/orchestrator/get-agent-logs/{instructions.md → SKILL.md} +25 -0
  66. package/config/skills/orchestrator/get-agent-status/{instructions.md → SKILL.md} +24 -0
  67. package/config/skills/orchestrator/get-project-overview/SKILL.md +41 -0
  68. package/config/skills/orchestrator/get-tasks/SKILL.md +41 -0
  69. package/config/skills/orchestrator/get-team-status/SKILL.md +43 -0
  70. package/config/skills/orchestrator/handle-agent-failure/{instructions.md → SKILL.md} +27 -0
  71. package/config/skills/orchestrator/heartbeat/{instructions.md → SKILL.md} +24 -0
  72. package/config/skills/orchestrator/list-schedules/{instructions.md → SKILL.md} +5 -0
  73. package/config/skills/orchestrator/list-subscriptions/SKILL.md +41 -0
  74. package/config/skills/orchestrator/query-knowledge/{instructions.md → SKILL.md} +28 -0
  75. package/config/skills/orchestrator/read-session-logs/{instructions.md → SKILL.md} +26 -0
  76. package/config/skills/orchestrator/read-system-logs/{instructions.md → SKILL.md} +25 -0
  77. package/config/skills/orchestrator/recall/{instructions.md → SKILL.md} +24 -0
  78. package/config/skills/orchestrator/record-failure/{instructions.md → SKILL.md} +27 -0
  79. package/config/skills/orchestrator/record-learning/{instructions.md → SKILL.md} +24 -0
  80. package/config/skills/orchestrator/record-success/{instructions.md → SKILL.md} +26 -0
  81. package/config/skills/orchestrator/register-self/{instructions.md → SKILL.md} +24 -0
  82. package/config/skills/orchestrator/remember/{instructions.md → SKILL.md} +24 -0
  83. package/config/skills/orchestrator/reply-chat/{instructions.md → SKILL.md} +25 -0
  84. package/config/skills/orchestrator/reply-chat/execute.sh +0 -13
  85. package/config/skills/orchestrator/reply-gchat/{instructions.md → SKILL.md} +25 -0
  86. package/config/skills/orchestrator/reply-gchat/execute.sh +0 -18
  87. package/config/skills/orchestrator/reply-slack/{instructions.md → SKILL.md} +24 -0
  88. package/config/skills/orchestrator/reply-slack/execute.sh +18 -31
  89. package/config/skills/orchestrator/report-bug/{instructions.md → SKILL.md} +26 -0
  90. package/config/skills/orchestrator/restart-crewly/{instructions.md → SKILL.md} +26 -0
  91. package/config/skills/orchestrator/resume-session/{instructions.md → SKILL.md} +24 -0
  92. package/config/skills/orchestrator/schedule-check/{instructions.md → SKILL.md} +24 -0
  93. package/config/skills/orchestrator/send-key/{instructions.md → SKILL.md} +26 -0
  94. package/config/skills/orchestrator/send-message/{instructions.md → SKILL.md} +24 -0
  95. package/config/skills/orchestrator/send-pdf-to-slack/{instructions.md → SKILL.md} +27 -0
  96. package/config/skills/orchestrator/set-goal/{instructions.md → SKILL.md} +26 -0
  97. package/config/skills/orchestrator/start-agent/{instructions.md → SKILL.md} +24 -0
  98. package/config/skills/orchestrator/start-team/{instructions.md → SKILL.md} +24 -0
  99. package/config/skills/orchestrator/stop-agent/{instructions.md → SKILL.md} +24 -0
  100. package/config/skills/orchestrator/stop-team/SKILL.md +43 -0
  101. package/config/skills/orchestrator/subscribe-event/{instructions.md → SKILL.md} +24 -0
  102. package/config/skills/orchestrator/terminate-agent/{instructions.md → SKILL.md} +24 -0
  103. package/config/skills/orchestrator/unsubscribe-event/SKILL.md +42 -0
  104. package/config/skills/orchestrator/update-focus/{instructions.md → SKILL.md} +26 -0
  105. package/config/skills/orchestrator/update-team/{instructions.md → SKILL.md} +24 -0
  106. package/config/skills/team-leader/aggregate-results/{instructions.md → SKILL.md} +26 -0
  107. package/config/skills/team-leader/decompose-goal/{instructions.md → SKILL.md} +26 -0
  108. package/config/skills/team-leader/delegate-task/{instructions.md → SKILL.md} +26 -0
  109. package/config/skills/team-leader/delegate-task/execute.sh +14 -6
  110. package/config/skills/team-leader/delegate-task/execute.test.sh +401 -0
  111. package/config/skills/team-leader/handle-failure/{instructions.md → SKILL.md} +27 -0
  112. package/config/skills/team-leader/schedule-check/{instructions.md → SKILL.md} +26 -0
  113. package/config/skills/team-leader/start-agent/{instructions.md → SKILL.md} +26 -0
  114. package/config/skills/team-leader/stop-agent/{instructions.md → SKILL.md} +26 -0
  115. package/config/skills/team-leader/verify-output/{instructions.md → SKILL.md} +27 -0
  116. package/config/templates/agent-agents-md.md +35 -0
  117. package/config/templates/agent-gemini-md.md +35 -0
  118. package/config/templates/code-review-team/team-config.json +7 -0
  119. package/config/templates/content-generation-team/norms/brand-guidelines.md +64 -0
  120. package/config/templates/content-generation-team/norms/content-review.md +66 -0
  121. package/config/templates/content-generation-team/norms/publish-checklist.md +58 -0
  122. package/config/templates/content-generation-team/team-config.json +8 -0
  123. package/config/templates/dev-fullstack/norms/code-commit-sop.md +40 -0
  124. package/config/templates/dev-fullstack/norms/quality-gates.md +35 -0
  125. package/config/templates/dev-fullstack/template.json +17 -1
  126. package/config/templates/education-smb/template.json +10 -1
  127. package/config/templates/insurance-smb/template.json +10 -1
  128. package/config/templates/research-analysis/norms/research-methodology.md +36 -0
  129. package/config/templates/research-analysis/norms/source-citation.md +33 -0
  130. package/config/templates/research-analysis/template.json +17 -1
  131. package/config/templates/security-audit-team.json +67 -0
  132. package/config/templates/social-media-ops/norms/engagement-rules.md +35 -0
  133. package/config/templates/social-media-ops/norms/posting-schedule.md +43 -0
  134. package/config/templates/social-media-ops/template.json +17 -1
  135. package/config/templates/video-production/template.json +10 -1
  136. package/dist/backend/backend/src/constants.d.ts +80 -11
  137. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  138. package/dist/backend/backend/src/constants.js +85 -11
  139. package/dist/backend/backend/src/constants.js.map +1 -1
  140. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +99 -0
  141. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -0
  142. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +183 -0
  143. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -0
  144. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts +15 -0
  145. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -0
  146. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +27 -0
  147. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -0
  148. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts +70 -0
  149. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -0
  150. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +368 -0
  151. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -0
  152. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +24 -0
  153. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  154. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +195 -3
  155. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  156. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +9 -4
  157. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
  158. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +19 -5
  159. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
  160. package/dist/backend/backend/src/controllers/cloud/index.d.ts +1 -0
  161. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -1
  162. package/dist/backend/backend/src/controllers/cloud/index.js +1 -0
  163. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -1
  164. package/dist/backend/backend/src/controllers/index.d.ts.map +1 -1
  165. package/dist/backend/backend/src/controllers/index.js +2 -0
  166. package/dist/backend/backend/src/controllers/index.js.map +1 -1
  167. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -1
  168. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  169. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +3 -3
  170. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +9 -9
  171. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -1
  172. package/dist/backend/backend/src/controllers/memory/memory.controller.js +6 -6
  173. package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
  174. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts +0 -7
  175. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  176. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +2 -135
  177. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  178. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +14 -0
  179. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  180. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +96 -1
  181. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  182. package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -1
  183. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +8 -1
  184. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -1
  185. package/dist/backend/backend/src/controllers/payment/payment.controller.js +2 -2
  186. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -1
  187. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +3 -3
  188. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -1
  189. package/dist/backend/backend/src/controllers/payment/payment.routes.js +4 -14
  190. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -1
  191. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +15 -94
  192. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -1
  193. package/dist/backend/backend/src/controllers/payment/payment.types.js +11 -35
  194. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -1
  195. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts +49 -0
  196. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts.map +1 -0
  197. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js +138 -0
  198. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js.map +1 -0
  199. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts +20 -0
  200. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts.map +1 -0
  201. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js +30 -0
  202. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js.map +1 -0
  203. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts +12 -0
  204. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts.map +1 -1
  205. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js +107 -0
  206. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js.map +1 -1
  207. package/dist/backend/backend/src/controllers/request-types.d.ts +20 -1
  208. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  209. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  210. package/dist/backend/backend/src/controllers/slack/slack.controller.js +11 -5
  211. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  212. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +46 -0
  213. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  214. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +598 -326
  215. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  216. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +12 -0
  217. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  218. package/dist/backend/backend/src/controllers/team/team.controller.js +105 -36
  219. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  220. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  221. package/dist/backend/backend/src/controllers/team/team.routes.js +2 -1
  222. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  223. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +11 -0
  224. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -1
  225. package/dist/backend/backend/src/controllers/template/template.controller.js +59 -0
  226. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -1
  227. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -1
  228. package/dist/backend/backend/src/controllers/template/template.routes.js +2 -1
  229. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -1
  230. package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts +39 -0
  231. package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts.map +1 -0
  232. package/dist/backend/backend/src/controllers/workspace/workspace.controller.js +120 -0
  233. package/dist/backend/backend/src/controllers/workspace/workspace.controller.js.map +1 -0
  234. package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts +18 -0
  235. package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts.map +1 -0
  236. package/dist/backend/backend/src/controllers/workspace/workspace.routes.js +27 -0
  237. package/dist/backend/backend/src/controllers/workspace/workspace.routes.js.map +1 -0
  238. package/dist/backend/backend/src/index.d.ts.map +1 -1
  239. package/dist/backend/backend/src/index.js +108 -15
  240. package/dist/backend/backend/src/index.js.map +1 -1
  241. package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts +20 -0
  242. package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts.map +1 -0
  243. package/dist/backend/backend/src/middleware/require-auth.middleware.js +21 -0
  244. package/dist/backend/backend/src/middleware/require-auth.middleware.js.map +1 -0
  245. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  246. package/dist/backend/backend/src/routes/api.routes.js +18 -5
  247. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  248. package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts +2 -1
  249. package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts.map +1 -1
  250. package/dist/backend/backend/src/routes/modules/quality-gate.routes.js +4 -2
  251. package/dist/backend/backend/src/routes/modules/quality-gate.routes.js.map +1 -1
  252. package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
  253. package/dist/backend/backend/src/routes/modules/task-management.routes.js +8 -0
  254. package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
  255. package/dist/backend/backend/src/routes/modules/terminal.routes.d.ts.map +1 -1
  256. package/dist/backend/backend/src/routes/modules/terminal.routes.js +4 -0
  257. package/dist/backend/backend/src/routes/modules/terminal.routes.js.map +1 -1
  258. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts +149 -0
  259. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts.map +1 -0
  260. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js +200 -0
  261. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js.map +1 -0
  262. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts +13 -0
  263. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
  264. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +65 -6
  265. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
  266. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +36 -0
  267. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  268. package/dist/backend/backend/src/services/agent/agent-registration.service.js +174 -52
  269. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  270. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts +66 -20
  271. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  272. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +261 -60
  273. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  274. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +19 -0
  275. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +80 -0
  277. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  278. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +11 -0
  279. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  280. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +49 -1
  281. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  282. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +74 -3
  283. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
  284. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +248 -18
  285. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
  286. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts +161 -0
  287. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts.map +1 -0
  288. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js +237 -0
  289. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js.map +1 -0
  290. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +74 -0
  291. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +1 -0
  292. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +140 -0
  293. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +1 -0
  294. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
  295. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +50 -2
  296. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
  297. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +16 -1
  298. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
  299. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +45 -5
  300. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
  301. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +3 -1
  302. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -1
  303. package/dist/backend/backend/src/services/agent/crewly-agent/index.js +3 -1
  304. package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -1
  305. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +135 -0
  306. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +1 -0
  307. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +185 -0
  308. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +1 -0
  309. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +10 -2
  310. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  311. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +22 -2
  312. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  313. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +143 -0
  314. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -0
  315. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +264 -0
  316. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -0
  317. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +2 -2
  318. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +55 -1
  319. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
  320. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +660 -45
  321. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
  322. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +75 -3
  323. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  324. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +49 -2
  325. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  326. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  327. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +17 -2
  328. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  329. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +37 -0
  330. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  331. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +170 -3
  332. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  333. package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts +108 -0
  334. package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts.map +1 -0
  335. package/dist/backend/backend/src/services/browser/chrome-discovery.service.js +251 -0
  336. package/dist/backend/backend/src/services/browser/chrome-discovery.service.js.map +1 -0
  337. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +12 -0
  338. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  339. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +19 -0
  340. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  341. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +191 -0
  342. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -0
  343. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +415 -0
  344. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -0
  345. package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts +89 -0
  346. package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts.map +1 -0
  347. package/dist/backend/backend/src/services/cloud/device-identity.service.js +148 -0
  348. package/dist/backend/backend/src/services/cloud/device-identity.service.js.map +1 -0
  349. package/dist/backend/backend/src/services/core/tracing.service.d.ts +127 -0
  350. package/dist/backend/backend/src/services/core/tracing.service.d.ts.map +1 -0
  351. package/dist/backend/backend/src/services/core/tracing.service.js +238 -0
  352. package/dist/backend/backend/src/services/core/tracing.service.js.map +1 -0
  353. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  354. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +11 -3
  355. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  356. package/dist/backend/backend/src/services/index.d.ts +1 -0
  357. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  358. package/dist/backend/backend/src/services/index.js +1 -0
  359. package/dist/backend/backend/src/services/index.js.map +1 -1
  360. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
  361. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
  362. package/dist/backend/backend/src/services/knowledge/embedding-provider.js +164 -0
  363. package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +1 -0
  364. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +39 -13
  365. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  366. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +114 -17
  367. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  368. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts +170 -23
  369. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  370. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +565 -73
  371. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  372. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  373. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +8 -11
  374. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  375. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  376. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +1 -0
  377. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  378. package/dist/backend/backend/src/services/memory/context-flush.service.d.ts +73 -0
  379. package/dist/backend/backend/src/services/memory/context-flush.service.d.ts.map +1 -0
  380. package/dist/backend/backend/src/services/memory/context-flush.service.js +131 -0
  381. package/dist/backend/backend/src/services/memory/context-flush.service.js.map +1 -0
  382. package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts +23 -2
  383. package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts.map +1 -1
  384. package/dist/backend/backend/src/services/memory/learning-accumulation.service.js +78 -16
  385. package/dist/backend/backend/src/services/memory/learning-accumulation.service.js.map +1 -1
  386. package/dist/backend/backend/src/services/memory/memory.service.d.ts +38 -0
  387. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  388. package/dist/backend/backend/src/services/memory/memory.service.js +121 -2
  389. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  390. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +29 -207
  391. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -1
  392. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +97 -683
  393. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -1
  394. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  395. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +13 -12
  396. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  397. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +2 -0
  398. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  399. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +6 -23
  400. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  401. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +48 -184
  402. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  403. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  404. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +51 -5
  405. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  406. package/dist/backend/backend/src/services/orchestrator/index.d.ts +1 -1
  407. package/dist/backend/backend/src/services/orchestrator/index.d.ts.map +1 -1
  408. package/dist/backend/backend/src/services/orchestrator/index.js +1 -1
  409. package/dist/backend/backend/src/services/orchestrator/index.js.map +1 -1
  410. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts +65 -0
  411. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  412. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +165 -2
  413. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  414. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +8 -0
  415. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  416. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +23 -0
  417. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  418. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +95 -43
  419. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -1
  420. package/dist/backend/backend/src/services/payment/stripe.service.js +229 -190
  421. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -1
  422. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts +181 -0
  423. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -0
  424. package/dist/backend/backend/src/services/pr-review/pr-review.service.js +336 -0
  425. package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -0
  426. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +23 -0
  427. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  428. package/dist/backend/backend/src/services/project/task-tracking.service.js +88 -0
  429. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  430. package/dist/backend/backend/src/services/session/index.d.ts +2 -0
  431. package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
  432. package/dist/backend/backend/src/services/session/index.js +2 -0
  433. package/dist/backend/backend/src/services/session/index.js.map +1 -1
  434. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +260 -0
  435. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
  436. package/dist/backend/backend/src/services/session/session-handoff.service.js +565 -0
  437. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -0
  438. package/dist/backend/backend/src/services/skill/index.d.ts +1 -0
  439. package/dist/backend/backend/src/services/skill/index.d.ts.map +1 -1
  440. package/dist/backend/backend/src/services/skill/index.js +1 -0
  441. package/dist/backend/backend/src/services/skill/index.js.map +1 -1
  442. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +25 -6
  443. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  444. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +78 -20
  445. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  446. package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts +116 -0
  447. package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts.map +1 -0
  448. package/dist/backend/backend/src/services/skill/skill-tier.service.js +155 -0
  449. package/dist/backend/backend/src/services/skill/skill-tier.service.js.map +1 -0
  450. package/dist/backend/backend/src/services/skill/skill.service.d.ts +35 -7
  451. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  452. package/dist/backend/backend/src/services/skill/skill.service.js +128 -35
  453. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  454. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +50 -47
  455. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  456. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +267 -202
  457. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  458. package/dist/backend/backend/src/services/slack/slack.service.d.ts +28 -2
  459. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  460. package/dist/backend/backend/src/services/slack/slack.service.js +69 -3
  461. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  462. package/dist/backend/backend/src/services/template/template.service.d.ts +19 -1
  463. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  464. package/dist/backend/backend/src/services/template/template.service.js +110 -3
  465. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  466. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +11 -0
  467. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  468. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +57 -3
  469. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  470. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  471. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +6 -0
  472. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  473. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +52 -0
  474. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  475. package/dist/backend/backend/src/services/workflow/scheduler.service.js +319 -6
  476. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  477. package/dist/backend/backend/src/types/chat.types.d.ts +2 -2
  478. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  479. package/dist/backend/backend/src/types/chat.types.js +18 -22
  480. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  481. package/dist/backend/backend/src/types/index.d.ts +37 -0
  482. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  483. package/dist/backend/backend/src/types/index.js.map +1 -1
  484. package/dist/backend/backend/src/types/marketplace.types.d.ts +1 -1
  485. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  486. package/dist/backend/backend/src/types/scheduler.types.d.ts +4 -0
  487. package/dist/backend/backend/src/types/scheduler.types.d.ts.map +1 -1
  488. package/dist/backend/backend/src/types/scheduler.types.js.map +1 -1
  489. package/dist/backend/backend/src/types/skill.types.d.ts +4 -0
  490. package/dist/backend/backend/src/types/skill.types.d.ts.map +1 -1
  491. package/dist/backend/backend/src/types/skill.types.js.map +1 -1
  492. package/dist/backend/backend/src/types/task-tracking.types.d.ts +6 -0
  493. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  494. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  495. package/dist/backend/backend/src/types/team-template.types.d.ts +2 -0
  496. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  497. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  498. package/dist/backend/backend/src/utils/skill-md-parser.d.ts +38 -0
  499. package/dist/backend/backend/src/utils/skill-md-parser.d.ts.map +1 -0
  500. package/dist/backend/backend/src/utils/skill-md-parser.js +47 -0
  501. package/dist/backend/backend/src/utils/skill-md-parser.js.map +1 -0
  502. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +0 -154
  503. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  504. package/dist/backend/backend/src/websocket/terminal.gateway.js +0 -515
  505. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  506. package/dist/backend/config/constants.d.ts +18 -3
  507. package/dist/backend/config/constants.d.ts.map +1 -1
  508. package/dist/backend/config/constants.js +18 -3
  509. package/dist/backend/config/constants.js.map +1 -1
  510. package/dist/cli/backend/src/constants.d.ts +80 -11
  511. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  512. package/dist/cli/backend/src/constants.js +85 -11
  513. package/dist/cli/backend/src/constants.js.map +1 -1
  514. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
  515. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
  516. package/dist/cli/backend/src/services/knowledge/embedding-provider.js +164 -0
  517. package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +1 -0
  518. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +39 -13
  519. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  520. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +114 -17
  521. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  522. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts +170 -23
  523. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  524. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +565 -73
  525. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  526. package/dist/cli/backend/src/services/memory/memory.service.d.ts +38 -0
  527. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  528. package/dist/cli/backend/src/services/memory/memory.service.js +121 -2
  529. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  530. package/dist/cli/backend/src/types/chat.types.d.ts +2 -2
  531. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  532. package/dist/cli/backend/src/types/chat.types.js +18 -22
  533. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  534. package/dist/cli/backend/src/types/index.d.ts +37 -0
  535. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  536. package/dist/cli/backend/src/types/index.js.map +1 -1
  537. package/dist/cli/backend/src/types/scheduler.types.d.ts +4 -0
  538. package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -1
  539. package/dist/cli/backend/src/types/scheduler.types.js.map +1 -1
  540. package/dist/cli/backend/src/types/skill.types.d.ts +4 -0
  541. package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -1
  542. package/dist/cli/backend/src/types/skill.types.js.map +1 -1
  543. package/dist/cli/cli/src/commands/onboard.d.ts +19 -2
  544. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  545. package/dist/cli/cli/src/commands/onboard.js +58 -15
  546. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  547. package/dist/cli/cli/src/commands/pair.d.ts +46 -0
  548. package/dist/cli/cli/src/commands/pair.d.ts.map +1 -0
  549. package/dist/cli/cli/src/commands/pair.js +258 -0
  550. package/dist/cli/cli/src/commands/pair.js.map +1 -0
  551. package/dist/cli/cli/src/commands/service.d.ts +86 -0
  552. package/dist/cli/cli/src/commands/service.d.ts.map +1 -0
  553. package/dist/cli/cli/src/commands/service.js +687 -0
  554. package/dist/cli/cli/src/commands/service.js.map +1 -0
  555. package/dist/cli/cli/src/index.js +17 -0
  556. package/dist/cli/cli/src/index.js.map +1 -1
  557. package/dist/cli/config/constants.d.ts +18 -3
  558. package/dist/cli/config/constants.d.ts.map +1 -1
  559. package/dist/cli/config/constants.js +18 -3
  560. package/dist/cli/config/constants.js.map +1 -1
  561. package/frontend/dist/assets/index-1d23cce8.js +4919 -0
  562. package/frontend/dist/assets/index-60a9e4ea.css +33 -0
  563. package/frontend/dist/index.html +2 -2
  564. package/package.json +22 -10
  565. package/config/skills/agent/browse-stealth/skill.json +0 -20
  566. package/config/skills/agent/competitor-content-tracker/skill.json +0 -22
  567. package/config/skills/agent/computer-use/skill.json +0 -29
  568. package/config/skills/agent/content-calendar/skill.json +0 -22
  569. package/config/skills/agent/content-repurposer/skill.json +0 -22
  570. package/config/skills/agent/content-writer/skill.json +0 -22
  571. package/config/skills/agent/core/accept-task/skill.json +0 -20
  572. package/config/skills/agent/core/block-task/skill.json +0 -20
  573. package/config/skills/agent/core/check-quality-gates/skill.json +0 -20
  574. package/config/skills/agent/core/complete-task/skill.json +0 -20
  575. package/config/skills/agent/core/generate-pdf/skill.json +0 -20
  576. package/config/skills/agent/core/get-my-context/skill.json +0 -20
  577. package/config/skills/agent/core/get-sops/skill.json +0 -20
  578. package/config/skills/agent/core/get-team-status/instructions.md +0 -17
  579. package/config/skills/agent/core/get-team-status/skill.json +0 -20
  580. package/config/skills/agent/core/heartbeat/skill.json +0 -20
  581. package/config/skills/agent/core/marketplace-search/skill.json +0 -20
  582. package/config/skills/agent/core/query-knowledge/skill.json +0 -20
  583. package/config/skills/agent/core/read-task/instructions.md +0 -19
  584. package/config/skills/agent/core/read-task/skill.json +0 -20
  585. package/config/skills/agent/core/recall/skill.json +0 -20
  586. package/config/skills/agent/core/record-learning/skill.json +0 -20
  587. package/config/skills/agent/core/register-self/instructions.md +0 -18
  588. package/config/skills/agent/core/register-self/skill.json +0 -20
  589. package/config/skills/agent/core/remember/skill.json +0 -20
  590. package/config/skills/agent/core/reply-chat/skill.json +0 -20
  591. package/config/skills/agent/core/report-progress/skill.json +0 -20
  592. package/config/skills/agent/core/report-status/skill.json +0 -20
  593. package/config/skills/agent/core/send-chat-response/skill.json +0 -20
  594. package/config/skills/agent/core/send-message/instructions.md +0 -20
  595. package/config/skills/agent/core/send-message/skill.json +0 -20
  596. package/config/skills/agent/desktop-app-control/skill.json +0 -33
  597. package/config/skills/agent/trend-monitor/skill.json +0 -22
  598. package/config/skills/agent/vnc-browser/skill.json +0 -20
  599. package/config/skills/orchestrator/assign-task/instructions.md +0 -17
  600. package/config/skills/orchestrator/assign-task/skill.json +0 -20
  601. package/config/skills/orchestrator/assign-team-to-project/skill.json +0 -20
  602. package/config/skills/orchestrator/broadcast/skill.json +0 -20
  603. package/config/skills/orchestrator/broadcast-to-org/skill.json +0 -20
  604. package/config/skills/orchestrator/cancel-all-schedules/skill.json +0 -17
  605. package/config/skills/orchestrator/cancel-schedule/instructions.md +0 -19
  606. package/config/skills/orchestrator/cancel-schedule/skill.json +0 -20
  607. package/config/skills/orchestrator/complete-task/instructions.md +0 -17
  608. package/config/skills/orchestrator/complete-task/skill.json +0 -20
  609. package/config/skills/orchestrator/create-project/skill.json +0 -20
  610. package/config/skills/orchestrator/create-team/skill.json +0 -20
  611. package/config/skills/orchestrator/delegate-task/skill.json +0 -20
  612. package/config/skills/orchestrator/get-agent-logs/skill.json +0 -20
  613. package/config/skills/orchestrator/get-agent-status/skill.json +0 -20
  614. package/config/skills/orchestrator/get-project-overview/instructions.md +0 -17
  615. package/config/skills/orchestrator/get-project-overview/skill.json +0 -20
  616. package/config/skills/orchestrator/get-tasks/instructions.md +0 -17
  617. package/config/skills/orchestrator/get-tasks/skill.json +0 -20
  618. package/config/skills/orchestrator/get-team-status/instructions.md +0 -17
  619. package/config/skills/orchestrator/get-team-status/skill.json +0 -20
  620. package/config/skills/orchestrator/handle-agent-failure/skill.json +0 -20
  621. package/config/skills/orchestrator/heartbeat/skill.json +0 -20
  622. package/config/skills/orchestrator/list-schedules/skill.json +0 -12
  623. package/config/skills/orchestrator/list-subscriptions/instructions.md +0 -17
  624. package/config/skills/orchestrator/list-subscriptions/skill.json +0 -20
  625. package/config/skills/orchestrator/query-knowledge/skill.json +0 -20
  626. package/config/skills/orchestrator/read-session-logs/skill.json +0 -20
  627. package/config/skills/orchestrator/read-system-logs/skill.json +0 -20
  628. package/config/skills/orchestrator/recall/skill.json +0 -20
  629. package/config/skills/orchestrator/record-failure/skill.json +0 -20
  630. package/config/skills/orchestrator/record-learning/skill.json +0 -20
  631. package/config/skills/orchestrator/record-success/skill.json +0 -20
  632. package/config/skills/orchestrator/register-self/skill.json +0 -20
  633. package/config/skills/orchestrator/remember/skill.json +0 -20
  634. package/config/skills/orchestrator/reply-chat/skill.json +0 -20
  635. package/config/skills/orchestrator/reply-gchat/skill.json +0 -20
  636. package/config/skills/orchestrator/reply-slack/skill.json +0 -20
  637. package/config/skills/orchestrator/report-bug/skill.json +0 -20
  638. package/config/skills/orchestrator/restart-crewly/skill.json +0 -20
  639. package/config/skills/orchestrator/resume-session/skill.json +0 -20
  640. package/config/skills/orchestrator/schedule-check/skill.json +0 -20
  641. package/config/skills/orchestrator/send-key/skill.json +0 -20
  642. package/config/skills/orchestrator/send-message/skill.json +0 -20
  643. package/config/skills/orchestrator/send-pdf-to-slack/skill.json +0 -20
  644. package/config/skills/orchestrator/set-goal/skill.json +0 -20
  645. package/config/skills/orchestrator/start-agent/skill.json +0 -20
  646. package/config/skills/orchestrator/start-team/skill.json +0 -20
  647. package/config/skills/orchestrator/stop-agent/skill.json +0 -20
  648. package/config/skills/orchestrator/stop-team/instructions.md +0 -19
  649. package/config/skills/orchestrator/stop-team/skill.json +0 -20
  650. package/config/skills/orchestrator/subscribe-event/skill.json +0 -20
  651. package/config/skills/orchestrator/terminate-agent/skill.json +0 -20
  652. package/config/skills/orchestrator/unsubscribe-event/instructions.md +0 -19
  653. package/config/skills/orchestrator/unsubscribe-event/skill.json +0 -20
  654. package/config/skills/orchestrator/update-focus/skill.json +0 -20
  655. package/config/skills/orchestrator/update-team/skill.json +0 -20
  656. package/config/skills/team-leader/aggregate-results/skill.json +0 -20
  657. package/config/skills/team-leader/decompose-goal/skill.json +0 -20
  658. package/config/skills/team-leader/delegate-task/skill.json +0 -20
  659. package/config/skills/team-leader/handle-failure/skill.json +0 -20
  660. package/config/skills/team-leader/schedule-check/skill.json +0 -20
  661. package/config/skills/team-leader/start-agent/skill.json +0 -20
  662. package/config/skills/team-leader/stop-agent/skill.json +0 -20
  663. package/config/skills/team-leader/verify-output/skill.json +0 -20
  664. package/frontend/dist/assets/index-0e5673b0.css +0 -33
  665. package/frontend/dist/assets/index-e6d7db4a.js +0 -5213
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Rate Limiter for Crewly Agent API Calls
3
+ *
4
+ * Provides token-bucket rate limiting, message coalescing, and 429 retry
5
+ * logic to prevent Gemini API quota exhaustion when multiple agents are
6
+ * actively generating messages.
7
+ *
8
+ * @module services/agent/crewly-agent/rate-limiter
9
+ */
10
+ /**
11
+ * Configuration for the rate limiter.
12
+ */
13
+ export interface RateLimiterConfig {
14
+ /** Maximum requests allowed per window */
15
+ maxRequestsPerWindow: number;
16
+ /** Time window in milliseconds */
17
+ windowMs: number;
18
+ /** Maximum retry attempts for 429 errors */
19
+ maxRetries: number;
20
+ /** Initial backoff delay in milliseconds for 429 retries */
21
+ initialBackoffMs: number;
22
+ /** Backoff multiplier for exponential retry */
23
+ backoffMultiplier: number;
24
+ /** Maximum backoff delay in milliseconds */
25
+ maxBackoffMs: number;
26
+ /** Coalescing window — how long to wait for additional messages before processing (ms) */
27
+ coalesceWindowMs: number;
28
+ }
29
+ /**
30
+ * Default rate limiter configuration.
31
+ */
32
+ export declare const RATE_LIMITER_DEFAULTS: RateLimiterConfig;
33
+ /**
34
+ * Token-bucket rate limiter with message coalescing and 429 retry.
35
+ *
36
+ * Features:
37
+ * - **Rate limiting**: Enforces max requests per time window using a sliding window.
38
+ * - **Message coalescing**: Groups messages arriving within a short window into one.
39
+ * - **429 retry**: Wraps API calls with exponential backoff on quota errors.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const limiter = new RateLimiter<AgentRunResult>();
44
+ * const result = await limiter.enqueue('Check status', undefined, async (msg) => {
45
+ * return agentRunner.run(msg);
46
+ * });
47
+ * ```
48
+ */
49
+ export declare class RateLimiter<T> {
50
+ private config;
51
+ private requestTimestamps;
52
+ private queue;
53
+ private processing;
54
+ private coalesceTimer;
55
+ /**
56
+ * Create a new RateLimiter instance.
57
+ *
58
+ * @param config - Optional partial config overrides
59
+ */
60
+ constructor(config?: Partial<RateLimiterConfig>);
61
+ /**
62
+ * Enqueue a message for rate-limited processing.
63
+ *
64
+ * If multiple messages arrive within the coalescing window, they are
65
+ * merged into a single request to reduce API call count.
66
+ *
67
+ * @param message - Message to process
68
+ * @param metadata - Optional metadata
69
+ * @param handler - Async function that performs the actual API call
70
+ * @returns Result from the handler
71
+ */
72
+ enqueue(message: string, metadata: Record<string, string> | undefined, handler: (message: string, metadata?: Record<string, string>) => Promise<T>): Promise<T>;
73
+ /**
74
+ * Get the current number of messages in the queue.
75
+ *
76
+ * @returns Queue length
77
+ */
78
+ getQueueLength(): number;
79
+ /**
80
+ * Check if the rate limiter is currently processing.
81
+ *
82
+ * @returns True if processing
83
+ */
84
+ isProcessing(): boolean;
85
+ /**
86
+ * Get the number of requests made in the current window.
87
+ *
88
+ * @returns Request count in current window
89
+ */
90
+ getRequestCountInWindow(): number;
91
+ /**
92
+ * Get the current configuration.
93
+ *
94
+ * @returns Rate limiter configuration
95
+ */
96
+ getConfig(): RateLimiterConfig;
97
+ /**
98
+ * Reset internal state (for testing).
99
+ */
100
+ reset(): void;
101
+ /**
102
+ * Process the queue: coalesce messages, enforce rate limit, execute with retry.
103
+ *
104
+ * @param handler - The actual API call handler
105
+ */
106
+ private processQueue;
107
+ /**
108
+ * Wait until we have capacity in the rate limit window.
109
+ */
110
+ private waitForCapacity;
111
+ /**
112
+ * Remove timestamps older than the current window.
113
+ */
114
+ private pruneOldTimestamps;
115
+ /**
116
+ * Coalesce multiple queued messages into a single message.
117
+ *
118
+ * If there's only one message, it passes through unchanged.
119
+ * Multiple messages are joined with a separator and a header.
120
+ *
121
+ * @param batch - Array of queued messages to coalesce
122
+ * @returns Single coalesced message and metadata from the most recent item
123
+ */
124
+ private coalesceMessages;
125
+ /**
126
+ * Execute the handler with exponential backoff retry on 429/quota errors.
127
+ *
128
+ * @param message - Message to send
129
+ * @param metadata - Optional metadata
130
+ * @param handler - The API call handler
131
+ * @returns Handler result
132
+ * @throws Error after max retries exhausted
133
+ */
134
+ private executeWithRetry;
135
+ /**
136
+ * Check if an error is retryable (429 or quota-related).
137
+ *
138
+ * @param error - The error to check
139
+ * @returns True if the error should be retried
140
+ */
141
+ private isRetryableError;
142
+ }
143
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAQnC,CAAC;AAkBF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA8C;IAEnE;;;;OAIG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAI/C;;;;;;;;;;OAUG;IACH,OAAO,CACL,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1E,OAAO,CAAC,CAAC,CAAC;IA0Bb;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;OAIG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;OAIG;IACH,uBAAuB,IAAI,MAAM;IAKjC;;;;OAIG;IACH,SAAS,IAAI,iBAAiB;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAUb;;;;OAIG;YACW,YAAY;IAiD1B;;OAEG;YACW,eAAe;IAgB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;;;OAQG;YACW,gBAAgB;IAqC9B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;CAUzB"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Rate Limiter for Crewly Agent API Calls
3
+ *
4
+ * Provides token-bucket rate limiting, message coalescing, and 429 retry
5
+ * logic to prevent Gemini API quota exhaustion when multiple agents are
6
+ * actively generating messages.
7
+ *
8
+ * @module services/agent/crewly-agent/rate-limiter
9
+ */
10
+ /**
11
+ * Default rate limiter configuration.
12
+ */
13
+ export const RATE_LIMITER_DEFAULTS = {
14
+ maxRequestsPerWindow: 10,
15
+ windowMs: 60_000,
16
+ maxRetries: 3,
17
+ initialBackoffMs: 5_000,
18
+ backoffMultiplier: 2,
19
+ maxBackoffMs: 60_000,
20
+ coalesceWindowMs: 2_000,
21
+ };
22
+ /**
23
+ * Token-bucket rate limiter with message coalescing and 429 retry.
24
+ *
25
+ * Features:
26
+ * - **Rate limiting**: Enforces max requests per time window using a sliding window.
27
+ * - **Message coalescing**: Groups messages arriving within a short window into one.
28
+ * - **429 retry**: Wraps API calls with exponential backoff on quota errors.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const limiter = new RateLimiter<AgentRunResult>();
33
+ * const result = await limiter.enqueue('Check status', undefined, async (msg) => {
34
+ * return agentRunner.run(msg);
35
+ * });
36
+ * ```
37
+ */
38
+ export class RateLimiter {
39
+ config;
40
+ requestTimestamps = [];
41
+ queue = [];
42
+ processing = false;
43
+ coalesceTimer = null;
44
+ /**
45
+ * Create a new RateLimiter instance.
46
+ *
47
+ * @param config - Optional partial config overrides
48
+ */
49
+ constructor(config) {
50
+ this.config = { ...RATE_LIMITER_DEFAULTS, ...config };
51
+ }
52
+ /**
53
+ * Enqueue a message for rate-limited processing.
54
+ *
55
+ * If multiple messages arrive within the coalescing window, they are
56
+ * merged into a single request to reduce API call count.
57
+ *
58
+ * @param message - Message to process
59
+ * @param metadata - Optional metadata
60
+ * @param handler - Async function that performs the actual API call
61
+ * @returns Result from the handler
62
+ */
63
+ enqueue(message, metadata, handler) {
64
+ return new Promise((resolve, reject) => {
65
+ this.queue.push({
66
+ message,
67
+ metadata,
68
+ resolve,
69
+ reject,
70
+ enqueuedAt: Date.now(),
71
+ });
72
+ // Reset coalesce timer — wait for more messages before processing
73
+ if (this.coalesceTimer) {
74
+ clearTimeout(this.coalesceTimer);
75
+ }
76
+ this.coalesceTimer = setTimeout(() => {
77
+ this.coalesceTimer = null;
78
+ if (!this.processing) {
79
+ this.processQueue(handler).catch(() => {
80
+ // Errors are already routed to individual promise reject callbacks
81
+ });
82
+ }
83
+ }, this.config.coalesceWindowMs);
84
+ });
85
+ }
86
+ /**
87
+ * Get the current number of messages in the queue.
88
+ *
89
+ * @returns Queue length
90
+ */
91
+ getQueueLength() {
92
+ return this.queue.length;
93
+ }
94
+ /**
95
+ * Check if the rate limiter is currently processing.
96
+ *
97
+ * @returns True if processing
98
+ */
99
+ isProcessing() {
100
+ return this.processing;
101
+ }
102
+ /**
103
+ * Get the number of requests made in the current window.
104
+ *
105
+ * @returns Request count in current window
106
+ */
107
+ getRequestCountInWindow() {
108
+ this.pruneOldTimestamps();
109
+ return this.requestTimestamps.length;
110
+ }
111
+ /**
112
+ * Get the current configuration.
113
+ *
114
+ * @returns Rate limiter configuration
115
+ */
116
+ getConfig() {
117
+ return { ...this.config };
118
+ }
119
+ /**
120
+ * Reset internal state (for testing).
121
+ */
122
+ reset() {
123
+ this.requestTimestamps = [];
124
+ this.queue = [];
125
+ this.processing = false;
126
+ if (this.coalesceTimer) {
127
+ clearTimeout(this.coalesceTimer);
128
+ this.coalesceTimer = null;
129
+ }
130
+ }
131
+ /**
132
+ * Process the queue: coalesce messages, enforce rate limit, execute with retry.
133
+ *
134
+ * @param handler - The actual API call handler
135
+ */
136
+ async processQueue(handler) {
137
+ this.processing = true;
138
+ try {
139
+ while (this.queue.length > 0) {
140
+ // Wait for rate limit window if needed
141
+ await this.waitForCapacity();
142
+ // Coalesce all pending messages into one
143
+ const batch = this.queue.splice(0, this.queue.length);
144
+ const coalesced = this.coalesceMessages(batch);
145
+ // Record this request timestamp
146
+ this.requestTimestamps.push(Date.now());
147
+ // Execute with 429 retry
148
+ try {
149
+ const result = await this.executeWithRetry(coalesced.message, coalesced.metadata, handler);
150
+ // Resolve all promises in the batch with the same result
151
+ for (const item of batch) {
152
+ item.resolve(result);
153
+ }
154
+ }
155
+ catch (error) {
156
+ // Reject all promises in the batch
157
+ const err = error instanceof Error ? error : new Error(String(error));
158
+ for (const item of batch) {
159
+ item.reject(err);
160
+ }
161
+ }
162
+ }
163
+ }
164
+ finally {
165
+ this.processing = false;
166
+ // Check if more messages arrived while processing
167
+ if (this.queue.length > 0) {
168
+ this.processQueue(handler).catch(() => {
169
+ // Errors are already routed to individual promise reject callbacks
170
+ });
171
+ }
172
+ }
173
+ }
174
+ /**
175
+ * Wait until we have capacity in the rate limit window.
176
+ */
177
+ async waitForCapacity() {
178
+ this.pruneOldTimestamps();
179
+ while (this.requestTimestamps.length >= this.config.maxRequestsPerWindow) {
180
+ // Calculate how long to wait until the oldest request falls out of the window
181
+ const oldestTimestamp = this.requestTimestamps[0];
182
+ const waitMs = (oldestTimestamp + this.config.windowMs) - Date.now() + 100; // +100ms buffer
183
+ if (waitMs > 0) {
184
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
185
+ }
186
+ this.pruneOldTimestamps();
187
+ }
188
+ }
189
+ /**
190
+ * Remove timestamps older than the current window.
191
+ */
192
+ pruneOldTimestamps() {
193
+ const cutoff = Date.now() - this.config.windowMs;
194
+ this.requestTimestamps = this.requestTimestamps.filter((ts) => ts > cutoff);
195
+ }
196
+ /**
197
+ * Coalesce multiple queued messages into a single message.
198
+ *
199
+ * If there's only one message, it passes through unchanged.
200
+ * Multiple messages are joined with a separator and a header.
201
+ *
202
+ * @param batch - Array of queued messages to coalesce
203
+ * @returns Single coalesced message and metadata from the most recent item
204
+ */
205
+ coalesceMessages(batch) {
206
+ if (batch.length === 1) {
207
+ return { message: batch[0].message, metadata: batch[0].metadata };
208
+ }
209
+ // Use metadata from the most recent message
210
+ const latestMetadata = batch[batch.length - 1].metadata;
211
+ // Coalesce messages with a numbered separator
212
+ const parts = batch.map((item, index) => {
213
+ return `[Message ${index + 1}/${batch.length}]\n${item.message}`;
214
+ });
215
+ const coalesced = `${batch.length} messages received while rate-limited. Process them together:\n\n${parts.join('\n\n---\n\n')}`;
216
+ return { message: coalesced, metadata: latestMetadata };
217
+ }
218
+ /**
219
+ * Execute the handler with exponential backoff retry on 429/quota errors.
220
+ *
221
+ * @param message - Message to send
222
+ * @param metadata - Optional metadata
223
+ * @param handler - The API call handler
224
+ * @returns Handler result
225
+ * @throws Error after max retries exhausted
226
+ */
227
+ async executeWithRetry(message, metadata, handler) {
228
+ let lastError = null;
229
+ for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
230
+ try {
231
+ return await handler(message, metadata);
232
+ }
233
+ catch (error) {
234
+ lastError = error instanceof Error ? error : new Error(String(error));
235
+ // Only retry on 429 / quota errors
236
+ if (!this.isRetryableError(lastError)) {
237
+ throw lastError;
238
+ }
239
+ if (attempt >= this.config.maxRetries) {
240
+ break;
241
+ }
242
+ // Exponential backoff
243
+ const backoffMs = Math.min(this.config.initialBackoffMs * Math.pow(this.config.backoffMultiplier, attempt), this.config.maxBackoffMs);
244
+ await new Promise((resolve) => setTimeout(resolve, backoffMs));
245
+ }
246
+ }
247
+ throw new Error(`Rate limit retries exhausted (${this.config.maxRetries} attempts). Last error: ${lastError?.message}`);
248
+ }
249
+ /**
250
+ * Check if an error is retryable (429 or quota-related).
251
+ *
252
+ * @param error - The error to check
253
+ * @returns True if the error should be retried
254
+ */
255
+ isRetryableError(error) {
256
+ const message = error.message.toLowerCase();
257
+ return (message.includes('429') ||
258
+ message.includes('quota') ||
259
+ message.includes('rate limit') ||
260
+ message.includes('resource_exhausted') ||
261
+ message.includes('too many requests'));
262
+ }
263
+ }
264
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ if (!API_KEY) {
22
22
  async function main() {
23
23
  console.log('=== Crewly Agent Runtime Smoke Test ===\n');
24
24
  console.log('Provider: google');
25
- console.log('Model: gemini-2.5-flash');
25
+ console.log('Model: gemini-2.0-flash');
26
26
  console.log('API Key: ...%s', API_KEY.slice(-6));
27
27
  console.log();
28
28
  // Create a minimal mock SessionCommandHelper (not used by in-process runtime)
@@ -37,7 +37,7 @@ async function main() {
37
37
  // Step 1: Initialize with Gemini
38
38
  console.log('[1/4] Initializing runtime...');
39
39
  await runtime.initializeInProcess('smoke-test-session', {
40
- model: { provider: 'google', modelId: 'gemini-2.5-flash' },
40
+ model: { provider: 'google', modelId: 'gemini-2.0-flash' },
41
41
  maxSteps: 5,
42
42
  systemPrompt: `You are a test agent. When asked to check team status, you MUST call the get_team_status tool. After getting the result, summarize it briefly. Always use tools when available.`,
43
43
  });
@@ -9,6 +9,57 @@
9
9
  */
10
10
  import type { CrewlyApiClient } from './api-client.js';
11
11
  import type { ToolDefinition, ToolCallbacks, ToolSensitivity } from './types.js';
12
+ /**
13
+ * Bash commands that require explicit approval before execution.
14
+ * These are dangerous but not catastrophic — they modify remote state,
15
+ * delete files, or interact with container/network infrastructure.
16
+ *
17
+ * Matched against the raw command string (case-insensitive, word-boundary).
18
+ */
19
+ export declare const APPROVAL_REQUIRED_BASH_PATTERNS: Array<{
20
+ pattern: RegExp;
21
+ label: string;
22
+ }>;
23
+ /**
24
+ * Validate a shell command against the blocklist.
25
+ *
26
+ * @param command - Raw shell command string
27
+ * @returns Error message if blocked, or null if allowed
28
+ */
29
+ export declare function validateBashCommand(command: string): string | null;
30
+ /**
31
+ * Check if a bash command matches any approval-required pattern.
32
+ *
33
+ * @param command - Raw shell command string
34
+ * @returns Matching label if approval is required, or null if safe to proceed
35
+ */
36
+ export declare function checkBashApprovalRequired(command: string): string | null;
37
+ /**
38
+ * Strip [NOTIFY]...[/NOTIFY] markers from text.
39
+ *
40
+ * The crewly-agent model sometimes wraps tool arguments in NOTIFY markers
41
+ * intended for the terminal gateway routing layer. When this leaks into
42
+ * reply_slack or other outward-facing tools, the raw markers appear in
43
+ * the Slack message. This function extracts the body content (after the
44
+ * --- separator if present) or the full block content.
45
+ *
46
+ * @param text - Text that may contain NOTIFY markers
47
+ * @returns Clean text with markers stripped and body content extracted
48
+ */
49
+ export declare function stripNotifyMarkers(text: string): string;
50
+ /**
51
+ * Convert GitHub-flavored Markdown to Slack mrkdwn format (#181).
52
+ *
53
+ * Transformations applied (in order):
54
+ * 1. Escape &, <, > to HTML entities (Slack requirement)
55
+ * 2. Convert fenced code blocks (```lang\n...\n```) to Slack code blocks
56
+ * 3. Convert **bold** to *bold* (Slack uses single asterisks)
57
+ * 4. Convert [text](url) links to <url|text> (Slack link format)
58
+ *
59
+ * @param text - Markdown-formatted text
60
+ * @returns Text formatted for Slack mrkdwn
61
+ */
62
+ export declare function convertMarkdownToSlackMrkdwn(text: string): string;
12
63
  /**
13
64
  * Sensitivity classification for each tool.
14
65
  * Used by the audit trail to classify tool invocations.
@@ -27,7 +78,10 @@ export declare const TOOL_SENSITIVITY: Record<string, ToolSensitivity>;
27
78
  * @param callbacks - Optional callbacks for compaction and audit logging
28
79
  * @returns Object of named tools ready to pass to generateText
29
80
  */
30
- export declare function createTools(client: CrewlyApiClient, sessionName: string, projectPath?: string, callbacks?: ToolCallbacks): Record<string, ToolDefinition>;
81
+ export declare function createTools(client: CrewlyApiClient, sessionName: string, projectPath?: string, callbacks?: ToolCallbacks, conversationId?: string, slackContext?: {
82
+ channelId: string;
83
+ threadTs?: string;
84
+ }, mcpTools?: Record<string, ToolDefinition>): Record<string, ToolDefinition>;
31
85
  /**
32
86
  * Get the list of tool names available in the registry.
33
87
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAmC,MAAM,YAAY,CAAC;AAmBlH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA8B5D,CAAC;AA0HF;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA+lBzJ;AA2BD;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAUvC"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAoD,MAAM,YAAY,CAAC;AA0BnI;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASrF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAuED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAavD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBjE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAwC5D,CAAC;AAkIF;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAikCtR;AA2BD;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAWvC"}