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
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Skill Catalog Service
3
3
  *
4
- * Scans skill directories (orchestrator and agent), reads skill.json and
5
- * instructions.md from each, and generates formatted catalog Markdown files
6
- * at ~/.crewly/skills/.
4
+ * Scans skill directories (orchestrator and agent), reads SKILL.md
5
+ * (YAML frontmatter + markdown body) from each, and generates formatted
6
+ * catalog Markdown files at ~/.crewly/skills/.
7
7
  *
8
8
  * Generates two catalogs:
9
9
  * - SKILLS_CATALOG.md for orchestrator skills
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * Each catalog provides a human-readable and LLM-readable reference of all
13
13
  * available skills grouped by category, including usage examples and parameter
14
- * documentation extracted from each skill's instructions.md.
14
+ * documentation extracted from each skill's SKILL.md body.
15
15
  *
16
16
  * @module services/skill/skill-catalog.service
17
17
  */
@@ -163,14 +163,33 @@ export declare class SkillCatalogService {
163
163
  */
164
164
  private scanSkillDirectoriesAt;
165
165
  /**
166
- * Load a single skill from a directory by reading its skill.json
167
- * and instructions.md files.
166
+ * Load a single skill from a directory by reading its SKILL.md file
167
+ * (YAML frontmatter + markdown body). Falls back to legacy skill.json
168
+ * + instructions.md format for backward compatibility.
168
169
  *
169
170
  * @param parentDir - Absolute path to the parent skills directory
170
171
  * @param dirName - Name of the skill subdirectory
171
172
  * @returns A LoadedSkill object, or null if loading fails
172
173
  */
173
174
  private loadSkillFromDirectory;
175
+ /**
176
+ * Load a skill from SKILL.md format (YAML frontmatter + markdown body).
177
+ *
178
+ * @param skillDir - Absolute path to the skill directory
179
+ * @param skillMdPath - Path to the SKILL.md file
180
+ * @param dirName - Name of the skill subdirectory
181
+ * @returns A LoadedSkill object, or null if loading fails
182
+ */
183
+ private loadSkillFromSkillMd;
184
+ /**
185
+ * Load a skill from legacy skill.json + instructions.md format.
186
+ *
187
+ * @param skillDir - Absolute path to the skill directory
188
+ * @param skillJsonPath - Path to the skill.json file
189
+ * @param dirName - Name of the skill subdirectory
190
+ * @returns A LoadedSkill object, or null if loading fails
191
+ */
192
+ private loadSkillFromLegacyJson;
174
193
  /**
175
194
  * Group loaded skills by their category field.
176
195
  *
@@ -1 +1 @@
1
- {"version":3,"file":"skill-catalog.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-catalog.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA+FH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;OAKG;gBACS,WAAW,CAAC,EAAE,MAAM;IAMhC;;;;;;;;OAQG;WACW,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAOpE;;;;OAIG;WACW,aAAa,IAAI,IAAI;IAInC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAkEhE;;;;;;;;;;;;;;;;OAgBG;IACU,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAiFrE;;;;OAIG;IACI,cAAc,IAAI,MAAM;IAI/B;;;;OAIG;IACI,mBAAmB,IAAI,MAAM;IAQpC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;;;;OAMG;YACW,oBAAoB;IAIlC;;;;;;;;;;;;;;;OAeG;YACW,sBAAsB;IA0DpC;;;;;;;OAOG;YACW,sBAAsB;IAmDpC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;CAiCjC"}
1
+ {"version":3,"file":"skill-catalog.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-catalog.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgGH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;OAKG;gBACS,WAAW,CAAC,EAAE,MAAM;IAMhC;;;;;;;;OAQG;WACW,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAOpE;;;;OAIG;WACW,aAAa,IAAI,IAAI;IAInC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAkEhE;;;;;;;;;;;;;;;;OAgBG;IACU,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAiFrE;;;;OAIG;IACI,cAAc,IAAI,MAAM;IAI/B;;;;OAIG;IACI,mBAAmB,IAAI,MAAM;IAQpC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;;;;OAMG;YACW,oBAAoB;IAIlC;;;;;;;;;;;;;;;OAeG;YACW,sBAAsB;IA2DpC;;;;;;;;OAQG;YACW,sBAAsB;IAqBpC;;;;;;;OAOG;YACW,oBAAoB;IA0ClC;;;;;;;OAOG;YACW,uBAAuB;IAsCrC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;CAiCjC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Skill Catalog Service
3
3
  *
4
- * Scans skill directories (orchestrator and agent), reads skill.json and
5
- * instructions.md from each, and generates formatted catalog Markdown files
6
- * at ~/.crewly/skills/.
4
+ * Scans skill directories (orchestrator and agent), reads SKILL.md
5
+ * (YAML frontmatter + markdown body) from each, and generates formatted
6
+ * catalog Markdown files at ~/.crewly/skills/.
7
7
  *
8
8
  * Generates two catalogs:
9
9
  * - SKILLS_CATALOG.md for orchestrator skills
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * Each catalog provides a human-readable and LLM-readable reference of all
13
13
  * available skills grouped by category, including usage examples and parameter
14
- * documentation extracted from each skill's instructions.md.
14
+ * documentation extracted from each skill's SKILL.md body.
15
15
  *
16
16
  * @module services/skill/skill-catalog.service
17
17
  */
@@ -21,6 +21,7 @@ import { existsSync, mkdirSync } from 'fs';
21
21
  import * as os from 'os';
22
22
  import { LoggerService } from '../core/logger.service.js';
23
23
  import { CREWLY_CONSTANTS } from '../../constants.js';
24
+ import { parseSkillMd } from '../../utils/skill-md-parser.js';
24
25
  // =============================================================================
25
26
  // Constants
26
27
  // =============================================================================
@@ -37,9 +38,9 @@ const AGENT_SKILLS_RELATIVE_PATH = 'config/skills/agent';
37
38
  /** Directory names to skip when scanning for skills */
38
39
  const SKIP_DIRECTORIES = ['_common'];
39
40
  /** Skill definition file name expected in each skill directory */
40
- const SKILL_DEFINITION_FILE = 'skill.json';
41
- /** Instructions file name expected in each skill directory */
42
- const INSTRUCTIONS_FILE = 'instructions.md';
41
+ const SKILL_DEFINITION_FILE = 'SKILL.md';
42
+ /** Legacy skill definition file name (for backward compatibility) */
43
+ const LEGACY_SKILL_DEFINITION_FILE = 'skill.json';
43
44
  /** Markdown heading pattern for detecting section boundaries */
44
45
  const HEADING_PATTERN = /^#{1,2}\s/;
45
46
  // =============================================================================
@@ -340,8 +341,9 @@ export class SkillCatalogService {
340
341
  continue;
341
342
  }
342
343
  const skillDir = path.join(skillsRootDir, entry.name);
343
- const skillJsonPath = path.join(skillDir, SKILL_DEFINITION_FILE);
344
- if (existsSync(skillJsonPath)) {
344
+ const skillMdPath = path.join(skillDir, SKILL_DEFINITION_FILE);
345
+ const legacyJsonPath = path.join(skillDir, LEGACY_SKILL_DEFINITION_FILE);
346
+ if (existsSync(skillMdPath) || existsSync(legacyJsonPath)) {
345
347
  // Direct skill directory
346
348
  const skill = await this.loadSkillFromDirectory(skillsRootDir, entry.name);
347
349
  if (skill) {
@@ -369,8 +371,9 @@ export class SkillCatalogService {
369
371
  return skills;
370
372
  }
371
373
  /**
372
- * Load a single skill from a directory by reading its skill.json
373
- * and instructions.md files.
374
+ * Load a single skill from a directory by reading its SKILL.md file
375
+ * (YAML frontmatter + markdown body). Falls back to legacy skill.json
376
+ * + instructions.md format for backward compatibility.
374
377
  *
375
378
  * @param parentDir - Absolute path to the parent skills directory
376
379
  * @param dirName - Name of the skill subdirectory
@@ -378,20 +381,75 @@ export class SkillCatalogService {
378
381
  */
379
382
  async loadSkillFromDirectory(parentDir, dirName) {
380
383
  const skillDir = path.join(parentDir, dirName);
381
- const skillJsonPath = path.join(skillDir, SKILL_DEFINITION_FILE);
382
- const instructionsPath = path.join(skillDir, INSTRUCTIONS_FILE);
383
- // skill.json is required
384
- if (!existsSync(skillJsonPath)) {
385
- this.logger.debug('No skill.json found, skipping directory', {
384
+ const skillMdPath = path.join(skillDir, SKILL_DEFINITION_FILE);
385
+ const legacyJsonPath = path.join(skillDir, LEGACY_SKILL_DEFINITION_FILE);
386
+ // Try SKILL.md first, then fall back to legacy skill.json
387
+ if (existsSync(skillMdPath)) {
388
+ return this.loadSkillFromSkillMd(skillDir, skillMdPath, dirName);
389
+ }
390
+ else if (existsSync(legacyJsonPath)) {
391
+ return this.loadSkillFromLegacyJson(skillDir, legacyJsonPath, dirName);
392
+ }
393
+ this.logger.debug('No SKILL.md or skill.json found, skipping directory', {
394
+ dirName,
395
+ });
396
+ return null;
397
+ }
398
+ /**
399
+ * Load a skill from SKILL.md format (YAML frontmatter + markdown body).
400
+ *
401
+ * @param skillDir - Absolute path to the skill directory
402
+ * @param skillMdPath - Path to the SKILL.md file
403
+ * @param dirName - Name of the skill subdirectory
404
+ * @returns A LoadedSkill object, or null if loading fails
405
+ */
406
+ async loadSkillFromSkillMd(skillDir, skillMdPath, dirName) {
407
+ try {
408
+ const content = await fs.readFile(skillMdPath, 'utf-8');
409
+ const { frontmatter, body } = parseSkillMd(content);
410
+ const definition = {
411
+ id: frontmatter.id || `skill-${dirName}`,
412
+ name: frontmatter.name,
413
+ description: frontmatter.description,
414
+ category: frontmatter.category,
415
+ execution: frontmatter.execution,
416
+ tags: frontmatter.tags,
417
+ version: frontmatter.version,
418
+ };
419
+ if (!definition.name || !definition.description || !definition.category) {
420
+ this.logger.warn('SKILL.md missing required fields', {
421
+ dirName,
422
+ path: skillMdPath,
423
+ });
424
+ return null;
425
+ }
426
+ return {
427
+ definition,
428
+ instructions: body,
429
+ dirName,
430
+ };
431
+ }
432
+ catch (error) {
433
+ const errorMessage = error instanceof Error ? error.message : String(error);
434
+ this.logger.warn('Failed to load skill from SKILL.md', {
386
435
  dirName,
436
+ error: errorMessage,
387
437
  });
388
438
  return null;
389
439
  }
440
+ }
441
+ /**
442
+ * Load a skill from legacy skill.json + instructions.md format.
443
+ *
444
+ * @param skillDir - Absolute path to the skill directory
445
+ * @param skillJsonPath - Path to the skill.json file
446
+ * @param dirName - Name of the skill subdirectory
447
+ * @returns A LoadedSkill object, or null if loading fails
448
+ */
449
+ async loadSkillFromLegacyJson(skillDir, skillJsonPath, dirName) {
390
450
  try {
391
- // Read and parse skill.json
392
451
  const skillJsonContent = await fs.readFile(skillJsonPath, 'utf-8');
393
452
  const definition = JSON.parse(skillJsonContent);
394
- // Validate required fields
395
453
  if (!definition.id || !definition.name || !definition.description || !definition.category) {
396
454
  this.logger.warn('Skill definition missing required fields', {
397
455
  dirName,
@@ -399,8 +457,8 @@ export class SkillCatalogService {
399
457
  });
400
458
  return null;
401
459
  }
402
- // Read instructions.md (optional - use empty string if missing)
403
460
  let instructions = '';
461
+ const instructionsPath = path.join(skillDir, 'instructions.md');
404
462
  if (existsSync(instructionsPath)) {
405
463
  instructions = await fs.readFile(instructionsPath, 'utf-8');
406
464
  }
@@ -412,7 +470,7 @@ export class SkillCatalogService {
412
470
  }
413
471
  catch (error) {
414
472
  const errorMessage = error instanceof Error ? error.message : String(error);
415
- this.logger.warn('Failed to load skill from directory', {
473
+ this.logger.warn('Failed to load skill from skill.json', {
416
474
  dirName,
417
475
  error: errorMessage,
418
476
  });
@@ -1 +1 @@
1
- {"version":3,"file":"skill-catalog.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-catalog.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-catalog.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-catalog.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Skill Tier Service
3
+ *
4
+ * Handles paid skill tier checking and graceful degradation.
5
+ * Resolves which skills an agent can access based on their cloud tier,
6
+ * substituting premium skills with free fallbacks when the user's tier
7
+ * is insufficient.
8
+ *
9
+ * Tier hierarchy: free < pro < enterprise
10
+ *
11
+ * @module services/skill/skill-tier.service
12
+ */
13
+ import { CloudTier } from '../../constants.js';
14
+ /**
15
+ * Metadata about a skill's tier requirements and fallback.
16
+ * Mirrors the optional fields added to skill.json.
17
+ */
18
+ export interface SkillTierInfo {
19
+ /** Skill identifier */
20
+ id: string;
21
+ /** Minimum tier required to use this skill. Defaults to 'free' if omitted. */
22
+ requiredTier?: CloudTier;
23
+ /** Skill ID to use as a free-tier fallback when tier is insufficient */
24
+ fallbackSkill?: string;
25
+ }
26
+ /**
27
+ * A skill that was successfully resolved (either direct access or via fallback).
28
+ */
29
+ export interface ResolvedSkill {
30
+ /** The skill ID that should actually be used */
31
+ id: string;
32
+ /** How this skill was resolved */
33
+ source: 'direct' | 'degraded';
34
+ }
35
+ /**
36
+ * A skill that could not be used at the user's current tier.
37
+ */
38
+ export interface DegradedSkill {
39
+ /** The original premium skill ID */
40
+ original: string;
41
+ /** The fallback skill ID, or null if no fallback exists */
42
+ fallback: string | null;
43
+ /** The tier required for the original skill */
44
+ requiredTier: CloudTier;
45
+ }
46
+ /**
47
+ * Result of resolving a set of skills against a user's tier.
48
+ */
49
+ export interface ResolvedSkillSet {
50
+ /** Skills the agent can use (direct + degraded-with-fallback) */
51
+ skills: ResolvedSkill[];
52
+ /** Skills that were downgraded or removed due to insufficient tier */
53
+ degraded: DegradedSkill[];
54
+ }
55
+ /**
56
+ * Service for checking skill tier requirements and performing graceful degradation.
57
+ *
58
+ * When an agent's assigned skills include premium skills that exceed the user's
59
+ * cloud tier, this service substitutes them with free-tier fallbacks (if available)
60
+ * or removes them entirely, producing a degradation notice for the agent prompt.
61
+ */
62
+ export declare class SkillTierService {
63
+ private static instance;
64
+ private readonly logger;
65
+ private constructor();
66
+ /**
67
+ * Get the singleton instance of SkillTierService.
68
+ *
69
+ * @returns The SkillTierService singleton
70
+ */
71
+ static getInstance(): SkillTierService;
72
+ /**
73
+ * Reset the singleton instance (for testing).
74
+ */
75
+ static resetInstance(): void;
76
+ /**
77
+ * Check whether a user's tier is sufficient for a required tier.
78
+ *
79
+ * @param userTier - The user's current cloud tier
80
+ * @param requiredTier - The minimum tier required
81
+ * @returns true if userTier >= requiredTier in the hierarchy
82
+ */
83
+ isTierSufficient(userTier: CloudTier, requiredTier: CloudTier): boolean;
84
+ /**
85
+ * Resolve a set of assigned skills against the user's tier.
86
+ *
87
+ * For each skill:
88
+ * - If no requiredTier or requiredTier <= userTier → included as 'direct'
89
+ * - If requiredTier > userTier and fallbackSkill exists → replaced with fallback as 'degraded'
90
+ * - If requiredTier > userTier and no fallback → excluded and listed in degraded
91
+ *
92
+ * @param assignedSkills - Array of skill tier info objects
93
+ * @param userTier - The user's current cloud tier
94
+ * @returns Resolved skill set with accessible skills and degradation info
95
+ */
96
+ resolveSkills(assignedSkills: SkillTierInfo[], userTier: CloudTier): ResolvedSkillSet;
97
+ /**
98
+ * Build a human-readable degradation notice for injection into agent prompts.
99
+ *
100
+ * @param degraded - Array of degraded skills from resolveSkills()
101
+ * @param userTier - The user's current tier (for display)
102
+ * @returns Markdown-formatted notice string, or empty string if no degradations
103
+ */
104
+ buildDegradationNotice(degraded: DegradedSkill[], userTier: CloudTier): string;
105
+ }
106
+ /**
107
+ * Get the singleton SkillTierService instance.
108
+ *
109
+ * @returns The SkillTierService singleton
110
+ */
111
+ export declare function getSkillTierService(): SkillTierService;
112
+ /**
113
+ * Reset the SkillTierService singleton (for testing).
114
+ */
115
+ export declare function resetSkillTierService(): void;
116
+ //# sourceMappingURL=skill-tier.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-tier.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-tier.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAC;AAahE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,8EAA8E;IAC9E,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IAEX,kCAAkC;IAClC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,+CAA+C;IAC/C,YAAY,EAAE,SAAS,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,iEAAiE;IACjE,MAAM,EAAE,aAAa,EAAE,CAAC;IAExB,sEAAsE;IACtE,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,OAAO;IAMvE;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,gBAAgB;IAsCrF;;;;;;OAMG;IACH,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CAyB9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Skill Tier Service
3
+ *
4
+ * Handles paid skill tier checking and graceful degradation.
5
+ * Resolves which skills an agent can access based on their cloud tier,
6
+ * substituting premium skills with free fallbacks when the user's tier
7
+ * is insufficient.
8
+ *
9
+ * Tier hierarchy: free < pro < enterprise
10
+ *
11
+ * @module services/skill/skill-tier.service
12
+ */
13
+ import { CLOUD_CONSTANTS } from '../../constants.js';
14
+ import { LoggerService } from '../core/logger.service.js';
15
+ /**
16
+ * Numeric weight for each tier, used for comparison.
17
+ * Higher number = higher tier.
18
+ */
19
+ const TIER_HIERARCHY = {
20
+ [CLOUD_CONSTANTS.TIERS.FREE]: 0,
21
+ [CLOUD_CONSTANTS.TIERS.PRO]: 1,
22
+ [CLOUD_CONSTANTS.TIERS.ENTERPRISE]: 2,
23
+ };
24
+ /**
25
+ * Service for checking skill tier requirements and performing graceful degradation.
26
+ *
27
+ * When an agent's assigned skills include premium skills that exceed the user's
28
+ * cloud tier, this service substitutes them with free-tier fallbacks (if available)
29
+ * or removes them entirely, producing a degradation notice for the agent prompt.
30
+ */
31
+ export class SkillTierService {
32
+ static instance = null;
33
+ logger;
34
+ constructor() {
35
+ this.logger = LoggerService.getInstance().createComponentLogger('SkillTierService');
36
+ }
37
+ /**
38
+ * Get the singleton instance of SkillTierService.
39
+ *
40
+ * @returns The SkillTierService singleton
41
+ */
42
+ static getInstance() {
43
+ if (!SkillTierService.instance) {
44
+ SkillTierService.instance = new SkillTierService();
45
+ }
46
+ return SkillTierService.instance;
47
+ }
48
+ /**
49
+ * Reset the singleton instance (for testing).
50
+ */
51
+ static resetInstance() {
52
+ SkillTierService.instance = null;
53
+ }
54
+ /**
55
+ * Check whether a user's tier is sufficient for a required tier.
56
+ *
57
+ * @param userTier - The user's current cloud tier
58
+ * @param requiredTier - The minimum tier required
59
+ * @returns true if userTier >= requiredTier in the hierarchy
60
+ */
61
+ isTierSufficient(userTier, requiredTier) {
62
+ const userLevel = TIER_HIERARCHY[userTier] ?? 0;
63
+ const requiredLevel = TIER_HIERARCHY[requiredTier] ?? 0;
64
+ return userLevel >= requiredLevel;
65
+ }
66
+ /**
67
+ * Resolve a set of assigned skills against the user's tier.
68
+ *
69
+ * For each skill:
70
+ * - If no requiredTier or requiredTier <= userTier → included as 'direct'
71
+ * - If requiredTier > userTier and fallbackSkill exists → replaced with fallback as 'degraded'
72
+ * - If requiredTier > userTier and no fallback → excluded and listed in degraded
73
+ *
74
+ * @param assignedSkills - Array of skill tier info objects
75
+ * @param userTier - The user's current cloud tier
76
+ * @returns Resolved skill set with accessible skills and degradation info
77
+ */
78
+ resolveSkills(assignedSkills, userTier) {
79
+ const skills = [];
80
+ const degraded = [];
81
+ for (const skill of assignedSkills) {
82
+ const requiredTier = skill.requiredTier || CLOUD_CONSTANTS.TIERS.FREE;
83
+ if (this.isTierSufficient(userTier, requiredTier)) {
84
+ skills.push({ id: skill.id, source: 'direct' });
85
+ }
86
+ else {
87
+ const degradedEntry = {
88
+ original: skill.id,
89
+ fallback: skill.fallbackSkill || null,
90
+ requiredTier: requiredTier,
91
+ };
92
+ degraded.push(degradedEntry);
93
+ if (skill.fallbackSkill) {
94
+ skills.push({ id: skill.fallbackSkill, source: 'degraded' });
95
+ }
96
+ }
97
+ }
98
+ if (degraded.length > 0) {
99
+ this.logger.info('Skills degraded due to insufficient tier', {
100
+ userTier,
101
+ degradedCount: degraded.length,
102
+ degraded: degraded.map(d => ({
103
+ original: d.original,
104
+ fallback: d.fallback,
105
+ requiredTier: d.requiredTier,
106
+ })),
107
+ });
108
+ }
109
+ return { skills, degraded };
110
+ }
111
+ /**
112
+ * Build a human-readable degradation notice for injection into agent prompts.
113
+ *
114
+ * @param degraded - Array of degraded skills from resolveSkills()
115
+ * @param userTier - The user's current tier (for display)
116
+ * @returns Markdown-formatted notice string, or empty string if no degradations
117
+ */
118
+ buildDegradationNotice(degraded, userTier) {
119
+ if (degraded.length === 0) {
120
+ return '';
121
+ }
122
+ const lines = [
123
+ '## Premium Skills Notice',
124
+ '',
125
+ `Your team template includes the following premium skills but current account is **${userTier}** tier:`,
126
+ '',
127
+ ];
128
+ for (const d of degraded) {
129
+ if (d.fallback) {
130
+ lines.push(`- **${d.original}** → downgraded to \`${d.fallback}\` (requires ${d.requiredTier})`);
131
+ }
132
+ else {
133
+ lines.push(`- **${d.original}** → not available (requires ${d.requiredTier})`);
134
+ }
135
+ }
136
+ lines.push('');
137
+ lines.push('Upgrade at https://crewlyai.com/pricing');
138
+ return lines.join('\n');
139
+ }
140
+ }
141
+ /**
142
+ * Get the singleton SkillTierService instance.
143
+ *
144
+ * @returns The SkillTierService singleton
145
+ */
146
+ export function getSkillTierService() {
147
+ return SkillTierService.getInstance();
148
+ }
149
+ /**
150
+ * Reset the SkillTierService singleton (for testing).
151
+ */
152
+ export function resetSkillTierService() {
153
+ SkillTierService.resetInstance();
154
+ }
155
+ //# sourceMappingURL=skill-tier.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-tier.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/skill/skill-tier.service.ts"],"names":[],"mappings":"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"}
@@ -151,11 +151,18 @@ export declare class SkillService {
151
151
  * Load all skills from both builtin and user directories
152
152
  */
153
153
  private loadAllSkills;
154
+ /**
155
+ * Check if a directory is a skill directory (has SKILL.md or legacy skill.json).
156
+ *
157
+ * @param dir - Directory path to check
158
+ * @returns True if the directory contains a skill definition
159
+ */
160
+ private isSkillDirectory;
154
161
  /**
155
162
  * Load skills from a directory
156
163
  *
157
- * Handles both flat structure (skill.json in immediate subdirs)
158
- * and nested category structure (category/skill/skill.json).
164
+ * Handles both flat structure (SKILL.md in immediate subdirs)
165
+ * and nested category structure (category/skill/SKILL.md).
159
166
  *
160
167
  * @param dir - Directory path
161
168
  * @param isBuiltin - Whether these are built-in skills
@@ -171,26 +178,47 @@ export declare class SkillService {
171
178
  */
172
179
  private loadNestedSkills;
173
180
  /**
174
- * Load a single skill from a skill.json path
181
+ * Load a single skill from a directory. Tries SKILL.md first,
182
+ * then falls back to legacy skill.json format.
183
+ *
184
+ * @param skillDir - Directory containing the skill
185
+ * @param isBuiltin - Whether this is a built-in skill
186
+ * @returns Loaded skill or null if loading fails
187
+ */
188
+ private loadSkillFromDir;
189
+ /**
190
+ * Load a skill from SKILL.md format (YAML frontmatter + markdown body).
191
+ *
192
+ * @param skillDir - Directory containing the skill
193
+ * @param skillMdPath - Path to SKILL.md file
194
+ * @param isBuiltin - Whether this is a built-in skill
195
+ * @returns Loaded skill or null if loading fails
196
+ */
197
+ private loadSkillFromSkillMd;
198
+ /**
199
+ * Load a single skill from a legacy skill.json file.
175
200
  *
176
201
  * @param skillDir - Directory containing the skill
177
202
  * @param skillJsonPath - Path to skill.json file
178
203
  * @param isBuiltin - Whether this is a built-in skill
179
204
  * @returns Loaded skill or null if loading fails
180
205
  */
181
- private loadSkillFromPath;
206
+ private loadSkillFromLegacyJson;
182
207
  /**
183
- * Load prompt content for a skill
208
+ * Load prompt content for a skill.
209
+ *
210
+ * For SKILL.md format, extracts the markdown body (after frontmatter).
211
+ * For legacy format, reads the separate instructions.md file.
184
212
  *
185
213
  * @param skill - Skill to load prompt for
186
214
  * @returns Prompt content string
187
215
  */
188
216
  private loadPromptContent;
189
217
  /**
190
- * Save a skill to disk
218
+ * Save a skill to disk in SKILL.md format (YAML frontmatter + markdown body).
191
219
  *
192
220
  * @param skill - Skill to save
193
- * @param promptContent - Optional prompt content to save
221
+ * @param promptContent - Optional prompt content (markdown body)
194
222
  */
195
223
  private saveSkill;
196
224
  }