crewly 1.3.31 → 1.4.1

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 (673) 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 +202 -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/orchestrator/orchestrator.controller.d.ts +16 -0
  186. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
  187. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +124 -13
  188. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
  189. package/dist/backend/backend/src/controllers/payment/payment.controller.js +2 -2
  190. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -1
  191. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +3 -3
  192. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -1
  193. package/dist/backend/backend/src/controllers/payment/payment.routes.js +4 -14
  194. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -1
  195. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +15 -94
  196. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -1
  197. package/dist/backend/backend/src/controllers/payment/payment.types.js +11 -35
  198. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -1
  199. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts +49 -0
  200. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts.map +1 -0
  201. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js +138 -0
  202. package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js.map +1 -0
  203. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts +20 -0
  204. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts.map +1 -0
  205. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js +30 -0
  206. package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js.map +1 -0
  207. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts +12 -0
  208. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts.map +1 -1
  209. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js +107 -0
  210. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js.map +1 -1
  211. package/dist/backend/backend/src/controllers/request-types.d.ts +20 -1
  212. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  213. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  214. package/dist/backend/backend/src/controllers/slack/slack.controller.js +11 -5
  215. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  216. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +46 -0
  217. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  218. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +598 -326
  219. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  220. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +12 -0
  221. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  222. package/dist/backend/backend/src/controllers/team/team.controller.js +105 -36
  223. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  224. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  225. package/dist/backend/backend/src/controllers/team/team.routes.js +2 -1
  226. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  227. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +11 -0
  228. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -1
  229. package/dist/backend/backend/src/controllers/template/template.controller.js +59 -0
  230. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -1
  231. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -1
  232. package/dist/backend/backend/src/controllers/template/template.routes.js +2 -1
  233. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -1
  234. package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts +39 -0
  235. package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts.map +1 -0
  236. package/dist/backend/backend/src/controllers/workspace/workspace.controller.js +120 -0
  237. package/dist/backend/backend/src/controllers/workspace/workspace.controller.js.map +1 -0
  238. package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts +18 -0
  239. package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts.map +1 -0
  240. package/dist/backend/backend/src/controllers/workspace/workspace.routes.js +27 -0
  241. package/dist/backend/backend/src/controllers/workspace/workspace.routes.js.map +1 -0
  242. package/dist/backend/backend/src/index.d.ts.map +1 -1
  243. package/dist/backend/backend/src/index.js +108 -15
  244. package/dist/backend/backend/src/index.js.map +1 -1
  245. package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts +20 -0
  246. package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts.map +1 -0
  247. package/dist/backend/backend/src/middleware/require-auth.middleware.js +21 -0
  248. package/dist/backend/backend/src/middleware/require-auth.middleware.js.map +1 -0
  249. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  250. package/dist/backend/backend/src/routes/api.routes.js +18 -5
  251. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  252. package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts +2 -1
  253. package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts.map +1 -1
  254. package/dist/backend/backend/src/routes/modules/quality-gate.routes.js +4 -2
  255. package/dist/backend/backend/src/routes/modules/quality-gate.routes.js.map +1 -1
  256. package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
  257. package/dist/backend/backend/src/routes/modules/task-management.routes.js +8 -0
  258. package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
  259. package/dist/backend/backend/src/routes/modules/terminal.routes.d.ts.map +1 -1
  260. package/dist/backend/backend/src/routes/modules/terminal.routes.js +4 -0
  261. package/dist/backend/backend/src/routes/modules/terminal.routes.js.map +1 -1
  262. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts +149 -0
  263. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts.map +1 -0
  264. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js +200 -0
  265. package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js.map +1 -0
  266. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts +13 -0
  267. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
  268. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +65 -6
  269. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
  270. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +36 -0
  271. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  272. package/dist/backend/backend/src/services/agent/agent-registration.service.js +174 -52
  273. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  274. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts +66 -20
  275. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +261 -60
  277. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  278. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +19 -0
  279. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  280. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +80 -0
  281. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  282. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +11 -0
  283. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  284. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +49 -1
  285. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  286. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +74 -3
  287. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +248 -18
  289. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
  290. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts +161 -0
  291. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts.map +1 -0
  292. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js +237 -0
  293. package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js.map +1 -0
  294. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +74 -0
  295. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +1 -0
  296. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +140 -0
  297. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +1 -0
  298. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
  299. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +50 -2
  300. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
  301. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +16 -1
  302. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
  303. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +45 -5
  304. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
  305. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +3 -1
  306. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -1
  307. package/dist/backend/backend/src/services/agent/crewly-agent/index.js +3 -1
  308. package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -1
  309. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +135 -0
  310. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +1 -0
  311. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +185 -0
  312. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +1 -0
  313. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +10 -2
  314. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  315. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +22 -2
  316. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  317. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +143 -0
  318. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -0
  319. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +264 -0
  320. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -0
  321. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +2 -2
  322. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +55 -1
  323. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
  324. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +660 -45
  325. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
  326. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +75 -3
  327. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  328. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +49 -2
  329. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  330. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  331. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +17 -2
  332. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  333. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +37 -0
  334. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  335. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +170 -3
  336. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  337. package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts +108 -0
  338. package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts.map +1 -0
  339. package/dist/backend/backend/src/services/browser/chrome-discovery.service.js +251 -0
  340. package/dist/backend/backend/src/services/browser/chrome-discovery.service.js.map +1 -0
  341. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +1 -1
  342. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -1
  343. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +12 -0
  344. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  345. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +19 -0
  346. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  347. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +191 -0
  348. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +415 -0
  350. package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -0
  351. package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts +89 -0
  352. package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/cloud/device-identity.service.js +148 -0
  354. package/dist/backend/backend/src/services/cloud/device-identity.service.js.map +1 -0
  355. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -1
  356. package/dist/backend/backend/src/services/cloud/relay-client.service.js +5 -3
  357. package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -1
  358. package/dist/backend/backend/src/services/core/tracing.service.d.ts +127 -0
  359. package/dist/backend/backend/src/services/core/tracing.service.d.ts.map +1 -0
  360. package/dist/backend/backend/src/services/core/tracing.service.js +238 -0
  361. package/dist/backend/backend/src/services/core/tracing.service.js.map +1 -0
  362. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  363. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +11 -3
  364. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  365. package/dist/backend/backend/src/services/index.d.ts +1 -0
  366. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  367. package/dist/backend/backend/src/services/index.js +1 -0
  368. package/dist/backend/backend/src/services/index.js.map +1 -1
  369. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
  370. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
  371. package/dist/backend/backend/src/services/knowledge/embedding-provider.js +164 -0
  372. package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +1 -0
  373. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +39 -13
  374. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  375. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +114 -17
  376. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  377. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts +170 -23
  378. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  379. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +565 -73
  380. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  381. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  382. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +8 -11
  383. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  384. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  385. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +1 -0
  386. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  387. package/dist/backend/backend/src/services/memory/context-flush.service.d.ts +73 -0
  388. package/dist/backend/backend/src/services/memory/context-flush.service.d.ts.map +1 -0
  389. package/dist/backend/backend/src/services/memory/context-flush.service.js +131 -0
  390. package/dist/backend/backend/src/services/memory/context-flush.service.js.map +1 -0
  391. package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts +23 -2
  392. package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts.map +1 -1
  393. package/dist/backend/backend/src/services/memory/learning-accumulation.service.js +78 -16
  394. package/dist/backend/backend/src/services/memory/learning-accumulation.service.js.map +1 -1
  395. package/dist/backend/backend/src/services/memory/memory.service.d.ts +38 -0
  396. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  397. package/dist/backend/backend/src/services/memory/memory.service.js +121 -2
  398. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  399. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +29 -207
  400. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -1
  401. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +97 -683
  402. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -1
  403. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  404. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +13 -12
  405. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  406. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +2 -0
  407. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  408. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +6 -23
  409. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  410. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +48 -184
  411. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  412. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  413. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +51 -5
  414. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  415. package/dist/backend/backend/src/services/orchestrator/index.d.ts +1 -1
  416. package/dist/backend/backend/src/services/orchestrator/index.d.ts.map +1 -1
  417. package/dist/backend/backend/src/services/orchestrator/index.js +1 -1
  418. package/dist/backend/backend/src/services/orchestrator/index.js.map +1 -1
  419. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts +65 -0
  420. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  421. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +165 -2
  422. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  423. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +8 -0
  424. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  425. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +23 -0
  426. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  427. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +95 -43
  428. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -1
  429. package/dist/backend/backend/src/services/payment/stripe.service.js +229 -190
  430. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -1
  431. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts +181 -0
  432. package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -0
  433. package/dist/backend/backend/src/services/pr-review/pr-review.service.js +336 -0
  434. package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -0
  435. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +23 -0
  436. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  437. package/dist/backend/backend/src/services/project/task-tracking.service.js +88 -0
  438. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  439. package/dist/backend/backend/src/services/session/index.d.ts +2 -0
  440. package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
  441. package/dist/backend/backend/src/services/session/index.js +2 -0
  442. package/dist/backend/backend/src/services/session/index.js.map +1 -1
  443. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +294 -0
  444. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
  445. package/dist/backend/backend/src/services/session/session-handoff.service.js +674 -0
  446. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -0
  447. package/dist/backend/backend/src/services/skill/index.d.ts +1 -0
  448. package/dist/backend/backend/src/services/skill/index.d.ts.map +1 -1
  449. package/dist/backend/backend/src/services/skill/index.js +1 -0
  450. package/dist/backend/backend/src/services/skill/index.js.map +1 -1
  451. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +25 -6
  452. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  453. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +78 -20
  454. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  455. package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts +116 -0
  456. package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts.map +1 -0
  457. package/dist/backend/backend/src/services/skill/skill-tier.service.js +155 -0
  458. package/dist/backend/backend/src/services/skill/skill-tier.service.js.map +1 -0
  459. package/dist/backend/backend/src/services/skill/skill.service.d.ts +35 -7
  460. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  461. package/dist/backend/backend/src/services/skill/skill.service.js +128 -35
  462. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  463. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +50 -47
  464. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  465. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +267 -202
  466. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  467. package/dist/backend/backend/src/services/slack/slack.service.d.ts +28 -2
  468. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  469. package/dist/backend/backend/src/services/slack/slack.service.js +69 -3
  470. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  471. package/dist/backend/backend/src/services/template/template.service.d.ts +19 -1
  472. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  473. package/dist/backend/backend/src/services/template/template.service.js +110 -3
  474. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  475. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +11 -0
  476. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  477. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +57 -3
  478. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  479. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  480. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +6 -0
  481. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  482. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +52 -0
  483. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  484. package/dist/backend/backend/src/services/workflow/scheduler.service.js +319 -6
  485. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  486. package/dist/backend/backend/src/types/chat.types.d.ts +2 -2
  487. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  488. package/dist/backend/backend/src/types/chat.types.js +18 -22
  489. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  490. package/dist/backend/backend/src/types/index.d.ts +37 -0
  491. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  492. package/dist/backend/backend/src/types/index.js.map +1 -1
  493. package/dist/backend/backend/src/types/marketplace.types.d.ts +1 -1
  494. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  495. package/dist/backend/backend/src/types/scheduler.types.d.ts +4 -0
  496. package/dist/backend/backend/src/types/scheduler.types.d.ts.map +1 -1
  497. package/dist/backend/backend/src/types/scheduler.types.js.map +1 -1
  498. package/dist/backend/backend/src/types/skill.types.d.ts +4 -0
  499. package/dist/backend/backend/src/types/skill.types.d.ts.map +1 -1
  500. package/dist/backend/backend/src/types/skill.types.js.map +1 -1
  501. package/dist/backend/backend/src/types/task-tracking.types.d.ts +6 -0
  502. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  503. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  504. package/dist/backend/backend/src/types/team-template.types.d.ts +2 -0
  505. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  506. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  507. package/dist/backend/backend/src/utils/skill-md-parser.d.ts +38 -0
  508. package/dist/backend/backend/src/utils/skill-md-parser.d.ts.map +1 -0
  509. package/dist/backend/backend/src/utils/skill-md-parser.js +47 -0
  510. package/dist/backend/backend/src/utils/skill-md-parser.js.map +1 -0
  511. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +0 -154
  512. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  513. package/dist/backend/backend/src/websocket/terminal.gateway.js +0 -515
  514. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  515. package/dist/backend/config/constants.d.ts +18 -3
  516. package/dist/backend/config/constants.d.ts.map +1 -1
  517. package/dist/backend/config/constants.js +18 -3
  518. package/dist/backend/config/constants.js.map +1 -1
  519. package/dist/cli/backend/src/constants.d.ts +80 -11
  520. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  521. package/dist/cli/backend/src/constants.js +85 -11
  522. package/dist/cli/backend/src/constants.js.map +1 -1
  523. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
  524. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
  525. package/dist/cli/backend/src/services/knowledge/embedding-provider.js +164 -0
  526. package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +1 -0
  527. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +39 -13
  528. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  529. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +114 -17
  530. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  531. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts +170 -23
  532. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
  533. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +565 -73
  534. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
  535. package/dist/cli/backend/src/services/memory/memory.service.d.ts +38 -0
  536. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  537. package/dist/cli/backend/src/services/memory/memory.service.js +121 -2
  538. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  539. package/dist/cli/backend/src/types/chat.types.d.ts +2 -2
  540. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  541. package/dist/cli/backend/src/types/chat.types.js +18 -22
  542. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  543. package/dist/cli/backend/src/types/index.d.ts +37 -0
  544. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  545. package/dist/cli/backend/src/types/index.js.map +1 -1
  546. package/dist/cli/backend/src/types/scheduler.types.d.ts +4 -0
  547. package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -1
  548. package/dist/cli/backend/src/types/scheduler.types.js.map +1 -1
  549. package/dist/cli/backend/src/types/skill.types.d.ts +4 -0
  550. package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -1
  551. package/dist/cli/backend/src/types/skill.types.js.map +1 -1
  552. package/dist/cli/cli/src/commands/onboard.d.ts +19 -2
  553. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  554. package/dist/cli/cli/src/commands/onboard.js +58 -15
  555. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  556. package/dist/cli/cli/src/commands/pair.d.ts +46 -0
  557. package/dist/cli/cli/src/commands/pair.d.ts.map +1 -0
  558. package/dist/cli/cli/src/commands/pair.js +258 -0
  559. package/dist/cli/cli/src/commands/pair.js.map +1 -0
  560. package/dist/cli/cli/src/commands/service.d.ts +86 -0
  561. package/dist/cli/cli/src/commands/service.d.ts.map +1 -0
  562. package/dist/cli/cli/src/commands/service.js +687 -0
  563. package/dist/cli/cli/src/commands/service.js.map +1 -0
  564. package/dist/cli/cli/src/index.js +17 -0
  565. package/dist/cli/cli/src/index.js.map +1 -1
  566. package/dist/cli/config/constants.d.ts +18 -3
  567. package/dist/cli/config/constants.d.ts.map +1 -1
  568. package/dist/cli/config/constants.js +18 -3
  569. package/dist/cli/config/constants.js.map +1 -1
  570. package/frontend/dist/assets/index-60a9e4ea.css +33 -0
  571. package/frontend/dist/assets/{index-e6d7db4a.js → index-e8162966.js} +353 -353
  572. package/frontend/dist/index.html +2 -2
  573. package/package.json +22 -10
  574. package/config/skills/agent/browse-stealth/skill.json +0 -20
  575. package/config/skills/agent/competitor-content-tracker/skill.json +0 -22
  576. package/config/skills/agent/computer-use/skill.json +0 -29
  577. package/config/skills/agent/content-calendar/skill.json +0 -22
  578. package/config/skills/agent/content-repurposer/skill.json +0 -22
  579. package/config/skills/agent/content-writer/skill.json +0 -22
  580. package/config/skills/agent/core/accept-task/skill.json +0 -20
  581. package/config/skills/agent/core/block-task/skill.json +0 -20
  582. package/config/skills/agent/core/check-quality-gates/skill.json +0 -20
  583. package/config/skills/agent/core/complete-task/skill.json +0 -20
  584. package/config/skills/agent/core/generate-pdf/skill.json +0 -20
  585. package/config/skills/agent/core/get-my-context/skill.json +0 -20
  586. package/config/skills/agent/core/get-sops/skill.json +0 -20
  587. package/config/skills/agent/core/get-team-status/instructions.md +0 -17
  588. package/config/skills/agent/core/get-team-status/skill.json +0 -20
  589. package/config/skills/agent/core/heartbeat/skill.json +0 -20
  590. package/config/skills/agent/core/marketplace-search/skill.json +0 -20
  591. package/config/skills/agent/core/query-knowledge/skill.json +0 -20
  592. package/config/skills/agent/core/read-task/instructions.md +0 -19
  593. package/config/skills/agent/core/read-task/skill.json +0 -20
  594. package/config/skills/agent/core/recall/skill.json +0 -20
  595. package/config/skills/agent/core/record-learning/skill.json +0 -20
  596. package/config/skills/agent/core/register-self/instructions.md +0 -18
  597. package/config/skills/agent/core/register-self/skill.json +0 -20
  598. package/config/skills/agent/core/remember/skill.json +0 -20
  599. package/config/skills/agent/core/reply-chat/skill.json +0 -20
  600. package/config/skills/agent/core/report-progress/skill.json +0 -20
  601. package/config/skills/agent/core/report-status/skill.json +0 -20
  602. package/config/skills/agent/core/send-chat-response/skill.json +0 -20
  603. package/config/skills/agent/core/send-message/instructions.md +0 -20
  604. package/config/skills/agent/core/send-message/skill.json +0 -20
  605. package/config/skills/agent/desktop-app-control/skill.json +0 -33
  606. package/config/skills/agent/trend-monitor/skill.json +0 -22
  607. package/config/skills/agent/vnc-browser/skill.json +0 -20
  608. package/config/skills/orchestrator/assign-task/instructions.md +0 -17
  609. package/config/skills/orchestrator/assign-task/skill.json +0 -20
  610. package/config/skills/orchestrator/assign-team-to-project/skill.json +0 -20
  611. package/config/skills/orchestrator/broadcast/skill.json +0 -20
  612. package/config/skills/orchestrator/broadcast-to-org/skill.json +0 -20
  613. package/config/skills/orchestrator/cancel-all-schedules/skill.json +0 -17
  614. package/config/skills/orchestrator/cancel-schedule/instructions.md +0 -19
  615. package/config/skills/orchestrator/cancel-schedule/skill.json +0 -20
  616. package/config/skills/orchestrator/complete-task/instructions.md +0 -17
  617. package/config/skills/orchestrator/complete-task/skill.json +0 -20
  618. package/config/skills/orchestrator/create-project/skill.json +0 -20
  619. package/config/skills/orchestrator/create-team/skill.json +0 -20
  620. package/config/skills/orchestrator/delegate-task/skill.json +0 -20
  621. package/config/skills/orchestrator/get-agent-logs/skill.json +0 -20
  622. package/config/skills/orchestrator/get-agent-status/skill.json +0 -20
  623. package/config/skills/orchestrator/get-project-overview/instructions.md +0 -17
  624. package/config/skills/orchestrator/get-project-overview/skill.json +0 -20
  625. package/config/skills/orchestrator/get-tasks/instructions.md +0 -17
  626. package/config/skills/orchestrator/get-tasks/skill.json +0 -20
  627. package/config/skills/orchestrator/get-team-status/instructions.md +0 -17
  628. package/config/skills/orchestrator/get-team-status/skill.json +0 -20
  629. package/config/skills/orchestrator/handle-agent-failure/skill.json +0 -20
  630. package/config/skills/orchestrator/heartbeat/skill.json +0 -20
  631. package/config/skills/orchestrator/list-schedules/skill.json +0 -12
  632. package/config/skills/orchestrator/list-subscriptions/instructions.md +0 -17
  633. package/config/skills/orchestrator/list-subscriptions/skill.json +0 -20
  634. package/config/skills/orchestrator/query-knowledge/skill.json +0 -20
  635. package/config/skills/orchestrator/read-session-logs/skill.json +0 -20
  636. package/config/skills/orchestrator/read-system-logs/skill.json +0 -20
  637. package/config/skills/orchestrator/recall/skill.json +0 -20
  638. package/config/skills/orchestrator/record-failure/skill.json +0 -20
  639. package/config/skills/orchestrator/record-learning/skill.json +0 -20
  640. package/config/skills/orchestrator/record-success/skill.json +0 -20
  641. package/config/skills/orchestrator/register-self/skill.json +0 -20
  642. package/config/skills/orchestrator/remember/skill.json +0 -20
  643. package/config/skills/orchestrator/reply-chat/skill.json +0 -20
  644. package/config/skills/orchestrator/reply-gchat/skill.json +0 -20
  645. package/config/skills/orchestrator/reply-slack/skill.json +0 -20
  646. package/config/skills/orchestrator/report-bug/skill.json +0 -20
  647. package/config/skills/orchestrator/restart-crewly/skill.json +0 -20
  648. package/config/skills/orchestrator/resume-session/skill.json +0 -20
  649. package/config/skills/orchestrator/schedule-check/skill.json +0 -20
  650. package/config/skills/orchestrator/send-key/skill.json +0 -20
  651. package/config/skills/orchestrator/send-message/skill.json +0 -20
  652. package/config/skills/orchestrator/send-pdf-to-slack/skill.json +0 -20
  653. package/config/skills/orchestrator/set-goal/skill.json +0 -20
  654. package/config/skills/orchestrator/start-agent/skill.json +0 -20
  655. package/config/skills/orchestrator/start-team/skill.json +0 -20
  656. package/config/skills/orchestrator/stop-agent/skill.json +0 -20
  657. package/config/skills/orchestrator/stop-team/instructions.md +0 -19
  658. package/config/skills/orchestrator/stop-team/skill.json +0 -20
  659. package/config/skills/orchestrator/subscribe-event/skill.json +0 -20
  660. package/config/skills/orchestrator/terminate-agent/skill.json +0 -20
  661. package/config/skills/orchestrator/unsubscribe-event/instructions.md +0 -19
  662. package/config/skills/orchestrator/unsubscribe-event/skill.json +0 -20
  663. package/config/skills/orchestrator/update-focus/skill.json +0 -20
  664. package/config/skills/orchestrator/update-team/skill.json +0 -20
  665. package/config/skills/team-leader/aggregate-results/skill.json +0 -20
  666. package/config/skills/team-leader/decompose-goal/skill.json +0 -20
  667. package/config/skills/team-leader/delegate-task/skill.json +0 -20
  668. package/config/skills/team-leader/handle-failure/skill.json +0 -20
  669. package/config/skills/team-leader/schedule-check/skill.json +0 -20
  670. package/config/skills/team-leader/start-agent/skill.json +0 -20
  671. package/config/skills/team-leader/stop-agent/skill.json +0 -20
  672. package/config/skills/team-leader/verify-output/skill.json +0 -20
  673. package/frontend/dist/assets/index-0e5673b0.css +0 -33
@@ -0,0 +1,687 @@
1
+ /**
2
+ * Crewly service management command.
3
+ *
4
+ * Installs, uninstalls, and checks the status of Crewly as a platform-native
5
+ * background service:
6
+ *
7
+ * **macOS** — Login Item `.command` file (runs inside Terminal.app)
8
+ * Why not a LaunchAgent plist? macOS TCC grants permissions based on the
9
+ * "responsible process." LaunchAgent children do NOT inherit Full Disk
10
+ * Access, so they cannot access ~/Desktop/ or other protected directories.
11
+ * A `.command` file runs inside Terminal.app whose TCC permissions propagate
12
+ * to child processes. It also sources the user's shell profile, picking up
13
+ * NVM/Homebrew paths that LaunchAgents miss.
14
+ *
15
+ * **Linux** — systemd user service (`systemctl --user`)
16
+ * No TCC equivalent on Linux, so a standard systemd unit file works.
17
+ * The service sources the user's shell profile for NVM/PATH consistency.
18
+ */
19
+ import { exec } from 'child_process';
20
+ import { promisify } from 'util';
21
+ import * as fs from 'fs';
22
+ import * as path from 'path';
23
+ import * as os from 'os';
24
+ import chalk from 'chalk';
25
+ import { CREWLY_CONSTANTS } from '../../../config/index.js';
26
+ const execAsync = promisify(exec);
27
+ // ---------------------------------------------------------------------------
28
+ // Shared constants
29
+ // ---------------------------------------------------------------------------
30
+ /** Directory where service files are stored (~/.crewly) */
31
+ const SERVICE_DIR = path.join(os.homedir(), CREWLY_CONSTANTS.PATHS.CREWLY_HOME);
32
+ /** Path to the service log directory */
33
+ const LOG_DIR = path.join(SERVICE_DIR, 'logs');
34
+ /** Path to the PID file used to prevent duplicate instances */
35
+ const PID_FILE = path.join(SERVICE_DIR, 'crewly.pid');
36
+ // ---------------------------------------------------------------------------
37
+ // macOS constants
38
+ // ---------------------------------------------------------------------------
39
+ /** Label used for the macOS Login Item */
40
+ const LOGIN_ITEM_NAME = 'Crewly Backend';
41
+ /** Path to the generated .command file (macOS) */
42
+ const COMMAND_FILE_PATH = path.join(SERVICE_DIR, 'crewly-start.command');
43
+ /** Legacy LaunchAgent plist label */
44
+ const LEGACY_PLIST_LABEL = 'com.crewly.backend';
45
+ /** Legacy LaunchAgent plist path */
46
+ const LEGACY_PLIST_PATH = path.join(os.homedir(), 'Library', 'LaunchAgents', `${LEGACY_PLIST_LABEL}.plist`);
47
+ // ---------------------------------------------------------------------------
48
+ // Linux constants
49
+ // ---------------------------------------------------------------------------
50
+ /** systemd user unit directory */
51
+ const SYSTEMD_USER_DIR = path.join(os.homedir(), '.config', 'systemd', 'user');
52
+ /** systemd service unit name */
53
+ const SYSTEMD_UNIT_NAME = 'crewly.service';
54
+ /** Full path to the systemd unit file */
55
+ const SYSTEMD_UNIT_PATH = path.join(SYSTEMD_USER_DIR, SYSTEMD_UNIT_NAME);
56
+ /** Path to the wrapper script used by the systemd service */
57
+ const SYSTEMD_WRAPPER_PATH = path.join(SERVICE_DIR, 'crewly-start.sh');
58
+ // ---------------------------------------------------------------------------
59
+ // Shared shell snippet: native module arch check
60
+ // ---------------------------------------------------------------------------
61
+ /**
62
+ * Shell snippet embedded in wrapper scripts that detects architecture
63
+ * mismatches between the running node binary and native modules (e.g.
64
+ * node-pty). If a mismatch is found, runs `npm rebuild` automatically
65
+ * before starting the backend — preventing the ERR_DLOPEN_FAILED crash
66
+ * that occurs when node-pty was compiled for x86_64 but node is arm64
67
+ * (or vice versa).
68
+ */
69
+ const NATIVE_MODULE_CHECK = `# Auto-rebuild native modules if node arch doesn't match compiled binaries
70
+ PTY_NODE="node_modules/node-pty/build/Release/pty.node"
71
+ if [ -f "$PTY_NODE" ]; then
72
+ NODE_ARCH=$(node -p "process.arch")
73
+ PTY_ARCH=$(file "$PTY_NODE" | grep -o 'arm64\\|x86_64' | head -1)
74
+ # Normalize: node uses "x64", file uses "x86_64"
75
+ if [ "$NODE_ARCH" = "x64" ]; then NODE_ARCH="x86_64"; fi
76
+ if [ "$NODE_ARCH" = "arm64" ] && [ "$PTY_ARCH" = "x86_64" ]; then
77
+ echo "$(date): Architecture mismatch (node=arm64, pty.node=x86_64). Rebuilding..." | tee -a "$LOG_DIR/service.log" 2>/dev/null
78
+ npm rebuild node-pty 2>&1 | tee -a "$LOG_DIR/service.log" 2>/dev/null
79
+ elif [ "$NODE_ARCH" = "x86_64" ] && [ "$PTY_ARCH" = "arm64" ]; then
80
+ echo "$(date): Architecture mismatch (node=x86_64, pty.node=arm64). Rebuilding..." | tee -a "$LOG_DIR/service.log" 2>/dev/null
81
+ npm rebuild node-pty 2>&1 | tee -a "$LOG_DIR/service.log" 2>/dev/null
82
+ fi
83
+ fi`;
84
+ // ---------------------------------------------------------------------------
85
+ // Entry point
86
+ // ---------------------------------------------------------------------------
87
+ /**
88
+ * Entry point for the `crewly service` subcommand.
89
+ *
90
+ * Dispatches to install / uninstall / status based on the positional argument.
91
+ * Platform detection routes to macOS or Linux implementations.
92
+ *
93
+ * @param action - One of "install", "uninstall", or "status"
94
+ * @param options - Command options (e.g. --force)
95
+ */
96
+ export async function serviceCommand(action, options) {
97
+ switch (action) {
98
+ case 'install':
99
+ await installService(options);
100
+ break;
101
+ case 'uninstall':
102
+ await uninstallService();
103
+ break;
104
+ case 'status':
105
+ await serviceStatus();
106
+ break;
107
+ default:
108
+ console.log(chalk.red(`Unknown action: ${action}`));
109
+ console.log(chalk.gray('Usage: crewly service <install|uninstall|status>'));
110
+ process.exit(1);
111
+ }
112
+ }
113
+ // ===========================================================================
114
+ // Install
115
+ // ===========================================================================
116
+ /**
117
+ * Installs Crewly as a platform-native background service.
118
+ *
119
+ * On macOS: creates a .command Login Item.
120
+ * On Linux: creates a systemd user service.
121
+ *
122
+ * @param options - Install options (--force to overwrite existing)
123
+ */
124
+ async function installService(options) {
125
+ assertSupportedPlatform();
126
+ console.log(chalk.blue('Installing Crewly as a background service...'));
127
+ const projectRoot = findProjectRoot();
128
+ if (!projectRoot) {
129
+ console.log(chalk.red('Could not find Crewly project root. Run this from within the Crewly directory.'));
130
+ process.exit(1);
131
+ }
132
+ fs.mkdirSync(LOG_DIR, { recursive: true });
133
+ if (process.platform === 'darwin') {
134
+ await installDarwin(projectRoot, options);
135
+ }
136
+ else {
137
+ await installLinux(projectRoot, options);
138
+ }
139
+ }
140
+ // ===========================================================================
141
+ // Uninstall
142
+ // ===========================================================================
143
+ /**
144
+ * Removes the Crewly background service for the current platform.
145
+ */
146
+ async function uninstallService() {
147
+ assertSupportedPlatform();
148
+ console.log(chalk.blue('Uninstalling Crewly service...'));
149
+ if (process.platform === 'darwin') {
150
+ await uninstallDarwin();
151
+ }
152
+ else {
153
+ await uninstallLinux();
154
+ }
155
+ // Kill running process (shared)
156
+ await killServiceProcess();
157
+ console.log(chalk.green('Crewly service uninstalled.'));
158
+ }
159
+ // ===========================================================================
160
+ // Status
161
+ // ===========================================================================
162
+ /**
163
+ * Shows the current state of the Crewly background service.
164
+ */
165
+ async function serviceStatus() {
166
+ assertSupportedPlatform();
167
+ console.log(chalk.blue('Crewly Service Status'));
168
+ console.log(chalk.gray('='.repeat(40)));
169
+ if (process.platform === 'darwin') {
170
+ await statusDarwin();
171
+ }
172
+ else {
173
+ await statusLinux();
174
+ }
175
+ }
176
+ // ===========================================================================
177
+ // macOS implementation
178
+ // ===========================================================================
179
+ /**
180
+ * macOS install: creates .command file and registers as Login Item.
181
+ *
182
+ * @param projectRoot - Absolute path to the Crewly project directory
183
+ * @param options - Install options
184
+ */
185
+ async function installDarwin(projectRoot, options) {
186
+ await migrateLegacyLaunchAgent();
187
+ if (fs.existsSync(COMMAND_FILE_PATH) && !options.force) {
188
+ console.log(chalk.yellow('Service is already installed.'));
189
+ console.log(chalk.gray('Use --force to overwrite, or run "crewly service status".'));
190
+ return;
191
+ }
192
+ const commandFileContent = generateCommandFile(projectRoot);
193
+ fs.writeFileSync(COMMAND_FILE_PATH, commandFileContent, { mode: 0o755 });
194
+ console.log(chalk.green(` Created ${COMMAND_FILE_PATH}`));
195
+ await registerLoginItem();
196
+ console.log('');
197
+ console.log(chalk.green('Crewly service installed successfully!'));
198
+ console.log('');
199
+ console.log(chalk.gray('How it works:'));
200
+ console.log(chalk.gray(' - On login, Terminal.app opens the .command file automatically'));
201
+ console.log(chalk.gray(' - Terminal.app has Full Disk Access, so child processes can access ~/Desktop/'));
202
+ console.log(chalk.gray(' - Your shell profile is sourced, so NVM/Homebrew paths are available'));
203
+ console.log('');
204
+ console.log(chalk.cyan('To start now: open ' + COMMAND_FILE_PATH));
205
+ }
206
+ /**
207
+ * macOS uninstall: removes Login Item and .command file.
208
+ */
209
+ async function uninstallDarwin() {
210
+ await removeLoginItem();
211
+ if (fs.existsSync(COMMAND_FILE_PATH)) {
212
+ fs.unlinkSync(COMMAND_FILE_PATH);
213
+ console.log(chalk.green(` Removed ${COMMAND_FILE_PATH}`));
214
+ }
215
+ await migrateLegacyLaunchAgent();
216
+ }
217
+ /**
218
+ * macOS status: checks .command file, Login Item, running process, legacy plist.
219
+ */
220
+ async function statusDarwin() {
221
+ const commandExists = fs.existsSync(COMMAND_FILE_PATH);
222
+ console.log(commandExists
223
+ ? chalk.green(' .command file: Installed')
224
+ : chalk.red(' .command file: Not found'));
225
+ const isRegistered = await isLoginItemRegistered();
226
+ console.log(isRegistered
227
+ ? chalk.green(' Login Item: Registered')
228
+ : chalk.red(' Login Item: Not registered'));
229
+ const pid = getRunningPid();
230
+ if (pid) {
231
+ console.log(chalk.green(` Process: Running (PID ${pid})`));
232
+ }
233
+ else {
234
+ console.log(chalk.yellow(' Process: Not running'));
235
+ }
236
+ const hasLegacy = fs.existsSync(LEGACY_PLIST_PATH);
237
+ if (hasLegacy) {
238
+ console.log(chalk.yellow(' Legacy LaunchAgent plist found — run "crewly service install" to migrate'));
239
+ }
240
+ console.log('');
241
+ if (commandExists && isRegistered && pid) {
242
+ console.log(chalk.green('Service is fully operational.'));
243
+ }
244
+ else if (commandExists && isRegistered) {
245
+ console.log(chalk.yellow('Service is installed but not running.'));
246
+ console.log(chalk.gray(` Start with: open ${COMMAND_FILE_PATH}`));
247
+ }
248
+ else {
249
+ console.log(chalk.red('Service is not installed.'));
250
+ console.log(chalk.gray(' Install with: crewly service install'));
251
+ }
252
+ }
253
+ // ===========================================================================
254
+ // Linux implementation
255
+ // ===========================================================================
256
+ /**
257
+ * Linux install: creates wrapper script and systemd user service unit.
258
+ *
259
+ * @param projectRoot - Absolute path to the Crewly project directory
260
+ * @param options - Install options
261
+ */
262
+ async function installLinux(projectRoot, options) {
263
+ if (fs.existsSync(SYSTEMD_UNIT_PATH) && !options.force) {
264
+ console.log(chalk.yellow('Service is already installed.'));
265
+ console.log(chalk.gray('Use --force to overwrite, or run "crewly service status".'));
266
+ return;
267
+ }
268
+ // 1. Write the wrapper script (sources shell profile for NVM/PATH)
269
+ const wrapperContent = generateLinuxWrapper(projectRoot);
270
+ fs.writeFileSync(SYSTEMD_WRAPPER_PATH, wrapperContent, { mode: 0o755 });
271
+ console.log(chalk.green(` Created ${SYSTEMD_WRAPPER_PATH}`));
272
+ // 2. Write the systemd unit file
273
+ fs.mkdirSync(SYSTEMD_USER_DIR, { recursive: true });
274
+ const unitContent = generateSystemdUnit(projectRoot);
275
+ fs.writeFileSync(SYSTEMD_UNIT_PATH, unitContent);
276
+ console.log(chalk.green(` Created ${SYSTEMD_UNIT_PATH}`));
277
+ // 3. Reload systemd and enable the service
278
+ try {
279
+ await execAsync('systemctl --user daemon-reload');
280
+ await execAsync(`systemctl --user enable ${SYSTEMD_UNIT_NAME}`);
281
+ console.log(chalk.green(' Enabled systemd user service'));
282
+ }
283
+ catch (error) {
284
+ console.log(chalk.yellow(' Could not enable service via systemctl.'));
285
+ console.log(chalk.gray(' Run manually: systemctl --user daemon-reload && systemctl --user enable crewly'));
286
+ }
287
+ console.log('');
288
+ console.log(chalk.green('Crewly service installed successfully!'));
289
+ console.log('');
290
+ console.log(chalk.gray('How it works:'));
291
+ console.log(chalk.gray(' - systemd manages the Crewly process as a user service'));
292
+ console.log(chalk.gray(' - Auto-restarts on crash (5s delay)'));
293
+ console.log(chalk.gray(' - Shell profile sourced for NVM/PATH'));
294
+ console.log('');
295
+ console.log(chalk.cyan(`To start now: systemctl --user start ${SYSTEMD_UNIT_NAME}`));
296
+ }
297
+ /**
298
+ * Linux uninstall: stops and disables the systemd service, removes files.
299
+ */
300
+ async function uninstallLinux() {
301
+ // Stop and disable the service
302
+ try {
303
+ await execAsync(`systemctl --user stop ${SYSTEMD_UNIT_NAME} 2>/dev/null`);
304
+ await execAsync(`systemctl --user disable ${SYSTEMD_UNIT_NAME} 2>/dev/null`);
305
+ console.log(chalk.green(' Stopped and disabled systemd service'));
306
+ }
307
+ catch {
308
+ console.log(chalk.gray(' systemd service was not running'));
309
+ }
310
+ // Remove unit file
311
+ if (fs.existsSync(SYSTEMD_UNIT_PATH)) {
312
+ fs.unlinkSync(SYSTEMD_UNIT_PATH);
313
+ console.log(chalk.green(` Removed ${SYSTEMD_UNIT_PATH}`));
314
+ }
315
+ // Remove wrapper script
316
+ if (fs.existsSync(SYSTEMD_WRAPPER_PATH)) {
317
+ fs.unlinkSync(SYSTEMD_WRAPPER_PATH);
318
+ console.log(chalk.green(` Removed ${SYSTEMD_WRAPPER_PATH}`));
319
+ }
320
+ // Reload systemd
321
+ try {
322
+ await execAsync('systemctl --user daemon-reload');
323
+ }
324
+ catch {
325
+ // Non-critical
326
+ }
327
+ }
328
+ /**
329
+ * Linux status: checks systemd unit, service state, and running process.
330
+ */
331
+ async function statusLinux() {
332
+ // Check unit file
333
+ const unitExists = fs.existsSync(SYSTEMD_UNIT_PATH);
334
+ console.log(unitExists
335
+ ? chalk.green(' Unit file: Installed')
336
+ : chalk.red(' Unit file: Not found'));
337
+ // Check systemd service state
338
+ const serviceState = await getSystemdState();
339
+ if (serviceState === 'active') {
340
+ console.log(chalk.green(' systemd: Active (running)'));
341
+ }
342
+ else if (serviceState === 'enabled') {
343
+ console.log(chalk.yellow(' systemd: Enabled (not running)'));
344
+ }
345
+ else if (serviceState === 'inactive') {
346
+ console.log(chalk.yellow(' systemd: Inactive'));
347
+ }
348
+ else {
349
+ console.log(chalk.red(' systemd: Not registered'));
350
+ }
351
+ // Check PID
352
+ const pid = getRunningPid();
353
+ if (pid) {
354
+ console.log(chalk.green(` Process: Running (PID ${pid})`));
355
+ }
356
+ else {
357
+ console.log(chalk.yellow(' Process: Not running'));
358
+ }
359
+ console.log('');
360
+ if (unitExists && serviceState === 'active' && pid) {
361
+ console.log(chalk.green('Service is fully operational.'));
362
+ }
363
+ else if (unitExists && serviceState) {
364
+ console.log(chalk.yellow('Service is installed but not running.'));
365
+ console.log(chalk.gray(` Start with: systemctl --user start ${SYSTEMD_UNIT_NAME}`));
366
+ }
367
+ else {
368
+ console.log(chalk.red('Service is not installed.'));
369
+ console.log(chalk.gray(' Install with: crewly service install'));
370
+ }
371
+ }
372
+ // ===========================================================================
373
+ // Linux helpers
374
+ // ===========================================================================
375
+ /**
376
+ * Generates the systemd unit file content.
377
+ *
378
+ * Uses a wrapper script as ExecStart so the user's shell profile is sourced,
379
+ * ensuring NVM and other PATH additions are available.
380
+ *
381
+ * @param projectRoot - Absolute path to the Crewly project directory
382
+ * @returns The systemd unit file content
383
+ */
384
+ export function generateSystemdUnit(projectRoot) {
385
+ return `[Unit]
386
+ Description=Crewly Backend Service
387
+ After=network.target
388
+
389
+ [Service]
390
+ Type=simple
391
+ ExecStart=${SYSTEMD_WRAPPER_PATH}
392
+ WorkingDirectory=${projectRoot}
393
+ Restart=on-failure
394
+ RestartSec=5
395
+ Environment=NODE_ENV=development
396
+
397
+ StandardOutput=append:${LOG_DIR}/service.log
398
+ StandardError=append:${LOG_DIR}/service.log
399
+
400
+ [Install]
401
+ WantedBy=default.target
402
+ `;
403
+ }
404
+ /**
405
+ * Generates the Linux wrapper script that sources the shell profile
406
+ * before starting node, ensuring NVM/PATH are available.
407
+ *
408
+ * @param projectRoot - Absolute path to the Crewly project directory
409
+ * @returns The shell script content
410
+ */
411
+ export function generateLinuxWrapper(projectRoot) {
412
+ return `#!/bin/bash
413
+ # Crewly Backend Service wrapper for systemd
414
+ # Sources shell profile for NVM/PATH, then starts the backend.
415
+
416
+ # Source shell profile for NVM, PATH, etc.
417
+ if [ -f "$HOME/.bashrc" ]; then
418
+ source "$HOME/.bashrc" 2>/dev/null || true
419
+ elif [ -f "$HOME/.profile" ]; then
420
+ source "$HOME/.profile" 2>/dev/null || true
421
+ fi
422
+
423
+ export NODE_ENV="development"
424
+
425
+ CREWLY_DIR="${projectRoot}"
426
+ PIDFILE="$HOME/${CREWLY_CONSTANTS.PATHS.CREWLY_HOME}/crewly.pid"
427
+
428
+ cd "$CREWLY_DIR" || { echo "Cannot cd to $CREWLY_DIR"; exit 1; }
429
+
430
+ ${NATIVE_MODULE_CHECK}
431
+
432
+ echo "$(date): Starting Crewly backend (node $(node --version))..."
433
+
434
+ # Write PID file for status checks
435
+ echo $$ > "$PIDFILE"
436
+
437
+ exec node dist/cli/cli/src/index.js start
438
+ `;
439
+ }
440
+ /**
441
+ * Queries systemd for the current state of the crewly service.
442
+ *
443
+ * @returns "active", "enabled", "inactive", or null if not registered
444
+ */
445
+ export async function getSystemdState() {
446
+ try {
447
+ const { stdout } = await execAsync(`systemctl --user is-active ${SYSTEMD_UNIT_NAME} 2>/dev/null`);
448
+ const state = stdout.trim();
449
+ if (state === 'active')
450
+ return 'active';
451
+ return 'inactive';
452
+ }
453
+ catch {
454
+ // is-active returns non-zero for inactive/unknown
455
+ }
456
+ try {
457
+ const { stdout } = await execAsync(`systemctl --user is-enabled ${SYSTEMD_UNIT_NAME} 2>/dev/null`);
458
+ if (stdout.trim() === 'enabled')
459
+ return 'enabled';
460
+ }
461
+ catch {
462
+ // is-enabled returns non-zero if not found
463
+ }
464
+ return null;
465
+ }
466
+ // ===========================================================================
467
+ // macOS helpers
468
+ // ===========================================================================
469
+ /**
470
+ * Generates the content of the .command wrapper script (macOS).
471
+ *
472
+ * The script sources the user's shell profile (for NVM/PATH), prevents
473
+ * duplicate instances via a PID file, and auto-restarts on crash.
474
+ *
475
+ * @param projectRoot - Absolute path to the Crewly project directory
476
+ * @returns The shell script content
477
+ */
478
+ export function generateCommandFile(projectRoot) {
479
+ return `#!/bin/bash
480
+ # Crewly Backend Service — runs inside Terminal.app for FDA inheritance
481
+ # Registered as a macOS Login Item for auto-start on boot.
482
+ #
483
+ # Terminal.app's TCC permissions propagate to child processes,
484
+ # allowing access to ~/Desktop/ and other protected directories.
485
+
486
+ set -euo pipefail
487
+
488
+ # Source shell profile to pick up NVM, PATH, etc.
489
+ if [ -f "$HOME/.zshrc" ]; then
490
+ source "$HOME/.zshrc" 2>/dev/null || true
491
+ elif [ -f "$HOME/.bashrc" ]; then
492
+ source "$HOME/.bashrc" 2>/dev/null || true
493
+ fi
494
+
495
+ export NODE_ENV="development"
496
+
497
+ CREWLY_DIR="${projectRoot}"
498
+ LOG_DIR="$HOME/${CREWLY_CONSTANTS.PATHS.CREWLY_HOME}/logs"
499
+ PIDFILE="$HOME/${CREWLY_CONSTANTS.PATHS.CREWLY_HOME}/crewly.pid"
500
+
501
+ mkdir -p "$LOG_DIR"
502
+
503
+ # Prevent duplicate instances
504
+ if [ -f "$PIDFILE" ]; then
505
+ OLD_PID=$(cat "$PIDFILE")
506
+ if kill -0 "$OLD_PID" 2>/dev/null; then
507
+ echo "Crewly already running (PID $OLD_PID). Exiting."
508
+ exit 0
509
+ fi
510
+ fi
511
+
512
+ cd "$CREWLY_DIR" || { echo "Cannot cd to $CREWLY_DIR"; exit 1; }
513
+
514
+ echo "$(date): Starting Crewly backend (node $(node --version))..." | tee -a "$LOG_DIR/service.log"
515
+
516
+ # Run in foreground so Terminal keeps the tab open; restart on crash
517
+ while true; do
518
+ ${NATIVE_MODULE_CHECK}
519
+
520
+ node dist/cli/cli/src/index.js start >> "$LOG_DIR/service.log" 2>&1 &
521
+ NODE_PID=$!
522
+ echo "$NODE_PID" > "$PIDFILE"
523
+ wait "$NODE_PID" || true
524
+ EXIT_CODE=$?
525
+ echo "$(date): Crewly exited with code $EXIT_CODE, restarting in 5s..." | tee -a "$LOG_DIR/service.log"
526
+ sleep 5
527
+ done
528
+ `;
529
+ }
530
+ /**
531
+ * Registers the .command file as a macOS Login Item via osascript.
532
+ *
533
+ * @throws Error if osascript fails
534
+ */
535
+ async function registerLoginItem() {
536
+ try {
537
+ await execAsync(`osascript -e 'tell application "System Events" to make login item at end with properties {path:"${COMMAND_FILE_PATH}", hidden:false, name:"${LOGIN_ITEM_NAME}"}'`);
538
+ console.log(chalk.green(' Registered as Login Item'));
539
+ }
540
+ catch (error) {
541
+ console.log(chalk.yellow(' Could not register Login Item automatically.'));
542
+ console.log(chalk.gray(' Add manually: System Settings → General → Login Items → add ' +
543
+ COMMAND_FILE_PATH));
544
+ }
545
+ }
546
+ /**
547
+ * Removes the Crewly Login Item via osascript.
548
+ */
549
+ async function removeLoginItem() {
550
+ try {
551
+ await execAsync(`osascript -e 'tell application "System Events" to delete login item "${LOGIN_ITEM_NAME}"'`);
552
+ console.log(chalk.green(' Removed Login Item'));
553
+ }
554
+ catch {
555
+ console.log(chalk.gray(' Login Item was not registered (nothing to remove)'));
556
+ }
557
+ }
558
+ /**
559
+ * Checks whether the Crewly Login Item is currently registered.
560
+ *
561
+ * @returns true if registered
562
+ */
563
+ export async function isLoginItemRegistered() {
564
+ try {
565
+ const { stdout } = await execAsync(`osascript -e 'tell application "System Events" to get the name of every login item'`);
566
+ return stdout.includes(LOGIN_ITEM_NAME);
567
+ }
568
+ catch {
569
+ return false;
570
+ }
571
+ }
572
+ /**
573
+ * Detects and removes a legacy LaunchAgent plist (com.crewly.backend).
574
+ *
575
+ * Unloads the service via launchctl before removing the file.
576
+ */
577
+ async function migrateLegacyLaunchAgent() {
578
+ if (!fs.existsSync(LEGACY_PLIST_PATH)) {
579
+ return;
580
+ }
581
+ console.log(chalk.yellow(' Found legacy LaunchAgent plist, migrating...'));
582
+ try {
583
+ await execAsync(`launchctl bootout gui/$(id -u)/${LEGACY_PLIST_LABEL} 2>/dev/null`);
584
+ console.log(chalk.green(' Unloaded legacy LaunchAgent'));
585
+ }
586
+ catch {
587
+ // Already unloaded
588
+ }
589
+ try {
590
+ fs.unlinkSync(LEGACY_PLIST_PATH);
591
+ console.log(chalk.green(` Removed ${LEGACY_PLIST_PATH}`));
592
+ }
593
+ catch {
594
+ console.log(chalk.yellow(` Could not remove ${LEGACY_PLIST_PATH} — please delete manually`));
595
+ }
596
+ const legacyScript = path.join(SERVICE_DIR, 'crewly-service.sh');
597
+ if (fs.existsSync(legacyScript)) {
598
+ try {
599
+ fs.unlinkSync(legacyScript);
600
+ console.log(chalk.green(' Removed legacy crewly-service.sh'));
601
+ }
602
+ catch {
603
+ // Non-critical
604
+ }
605
+ }
606
+ }
607
+ // ===========================================================================
608
+ // Shared helpers
609
+ // ===========================================================================
610
+ /**
611
+ * Asserts the current platform is macOS or Linux. Exits with an error
612
+ * message on unsupported platforms (e.g. Windows).
613
+ */
614
+ function assertSupportedPlatform() {
615
+ if (process.platform !== 'darwin' && process.platform !== 'linux') {
616
+ console.log(chalk.red(`Service management is not supported on ${process.platform}. Supported: macOS, Linux.`));
617
+ process.exit(1);
618
+ }
619
+ }
620
+ /**
621
+ * Finds the Crewly project root by walking up from cwd looking for
622
+ * a package.json with `"name": "crewly"`.
623
+ *
624
+ * @returns Absolute path to the project root, or null if not found
625
+ */
626
+ export function findProjectRoot() {
627
+ let current = process.cwd();
628
+ while (true) {
629
+ const pkgPath = path.join(current, 'package.json');
630
+ if (fs.existsSync(pkgPath)) {
631
+ try {
632
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
633
+ if (pkg.name === 'crewly') {
634
+ return current;
635
+ }
636
+ }
637
+ catch {
638
+ // Malformed package.json — keep searching
639
+ }
640
+ }
641
+ const parent = path.dirname(current);
642
+ if (parent === current) {
643
+ return null;
644
+ }
645
+ current = parent;
646
+ }
647
+ }
648
+ /**
649
+ * Reads the PID file and verifies the process is still alive.
650
+ *
651
+ * @returns The PID if the process is running, or null
652
+ */
653
+ export function getRunningPid() {
654
+ if (!fs.existsSync(PID_FILE)) {
655
+ return null;
656
+ }
657
+ try {
658
+ const pid = parseInt(fs.readFileSync(PID_FILE, 'utf-8').trim(), 10);
659
+ if (isNaN(pid)) {
660
+ return null;
661
+ }
662
+ process.kill(pid, 0);
663
+ return pid;
664
+ }
665
+ catch {
666
+ return null;
667
+ }
668
+ }
669
+ /**
670
+ * Kills the running service process identified by the PID file.
671
+ */
672
+ async function killServiceProcess() {
673
+ const pid = getRunningPid();
674
+ if (pid) {
675
+ try {
676
+ process.kill(pid, 'SIGTERM');
677
+ console.log(chalk.green(` Stopped running process (PID ${pid})`));
678
+ }
679
+ catch {
680
+ console.log(chalk.gray(' Process was already stopped'));
681
+ }
682
+ }
683
+ if (fs.existsSync(PID_FILE)) {
684
+ fs.unlinkSync(PID_FILE);
685
+ }
686
+ }
687
+ //# sourceMappingURL=service.js.map