crewly 1.2.1 → 1.2.4

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 (642) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/config/constants.ts +44 -1
  4. package/config/index.ts +4 -0
  5. package/config/roles/architect/prompt.md +7 -5
  6. package/config/roles/backend-developer/prompt.md +8 -4
  7. package/config/roles/content-strategist/prompt.md +12 -4
  8. package/config/roles/designer/prompt.md +8 -4
  9. package/config/roles/developer/prompt.md +7 -4
  10. package/config/roles/frontend-developer/prompt.md +8 -4
  11. package/config/roles/fullstack-dev/prompt.md +8 -4
  12. package/config/roles/generalist/prompt.md +7 -4
  13. package/config/roles/ops/prompt.md +7 -4
  14. package/config/roles/orchestrator/prompt.md +52 -3
  15. package/config/roles/product-manager/prompt.md +8 -4
  16. package/config/roles/qa/prompt.md +8 -4
  17. package/config/roles/qa-engineer/prompt.md +8 -4
  18. package/config/roles/sales/prompt.md +8 -4
  19. package/config/roles/support/prompt.md +8 -4
  20. package/config/roles/team-leader/prompt.md +169 -0
  21. package/config/roles/team-leader/role.json +13 -0
  22. package/config/roles/team-leader/tl-addon.md +142 -0
  23. package/config/roles/tpm/prompt.md +8 -4
  24. package/config/runtime_scripts/runtime-config.json +7 -0
  25. package/config/skills/_common/lib.sh +37 -0
  26. package/config/skills/agent/computer-use/execute.sh +228 -0
  27. package/config/skills/agent/computer-use/instructions.md +103 -0
  28. package/config/skills/agent/computer-use/lib/accessibility.sh +292 -0
  29. package/config/skills/agent/computer-use/lib/applescript.sh +117 -0
  30. package/config/skills/agent/computer-use/lib/discover.sh +122 -0
  31. package/config/skills/agent/computer-use/lib/playwright.sh +153 -0
  32. package/config/skills/agent/computer-use/lib/screenshot.sh +61 -0
  33. package/config/skills/agent/computer-use/skill.json +29 -0
  34. package/config/skills/agent/core/accept-task/execute.sh +7 -1
  35. package/config/skills/agent/core/complete-task/execute.sh +38 -1
  36. package/config/skills/agent/core/report-status/execute.sh +51 -2
  37. package/config/skills/agent/desktop-app-control/execute.sh +561 -0
  38. package/config/skills/agent/desktop-app-control/instructions.md +102 -0
  39. package/config/skills/agent/desktop-app-control/skill.json +33 -0
  40. package/config/skills/orchestrator/broadcast-to-org/execute.sh +88 -0
  41. package/config/skills/orchestrator/broadcast-to-org/instructions.md +51 -0
  42. package/config/skills/orchestrator/broadcast-to-org/skill.json +20 -0
  43. package/config/skills/orchestrator/delegate-task/execute.sh +76 -11
  44. package/config/skills/orchestrator/delegate-task/instructions.md +11 -1
  45. package/config/skills/orchestrator/handle-agent-failure/execute.sh +45 -0
  46. package/config/skills/orchestrator/handle-agent-failure/instructions.md +29 -0
  47. package/config/skills/orchestrator/handle-agent-failure/skill.json +20 -0
  48. package/config/skills/orchestrator/restart-crewly/instructions.md +9 -2
  49. package/config/skills/team-leader/_common/lib.sh +4 -0
  50. package/config/skills/team-leader/aggregate-results/execute.sh +168 -0
  51. package/config/skills/team-leader/aggregate-results/instructions.md +89 -0
  52. package/config/skills/team-leader/aggregate-results/skill.json +20 -0
  53. package/config/skills/team-leader/decompose-goal/execute.sh +86 -0
  54. package/config/skills/team-leader/decompose-goal/instructions.md +84 -0
  55. package/config/skills/team-leader/decompose-goal/skill.json +20 -0
  56. package/config/skills/team-leader/delegate-task/execute.sh +142 -0
  57. package/config/skills/team-leader/delegate-task/instructions.md +55 -0
  58. package/config/skills/team-leader/delegate-task/skill.json +20 -0
  59. package/config/skills/team-leader/handle-failure/execute.sh +119 -0
  60. package/config/skills/team-leader/handle-failure/instructions.md +93 -0
  61. package/config/skills/team-leader/handle-failure/skill.json +20 -0
  62. package/config/skills/team-leader/schedule-check/execute.sh +65 -0
  63. package/config/skills/team-leader/schedule-check/execute.test.sh +247 -0
  64. package/config/skills/team-leader/schedule-check/instructions.md +49 -0
  65. package/config/skills/team-leader/schedule-check/skill.json +20 -0
  66. package/config/skills/team-leader/start-agent/execute.sh +39 -0
  67. package/config/skills/team-leader/start-agent/instructions.md +48 -0
  68. package/config/skills/team-leader/start-agent/skill.json +20 -0
  69. package/config/skills/team-leader/stop-agent/execute.sh +39 -0
  70. package/config/skills/team-leader/stop-agent/instructions.md +49 -0
  71. package/config/skills/team-leader/stop-agent/skill.json +20 -0
  72. package/config/skills/team-leader/verify-output/execute.sh +296 -0
  73. package/config/skills/team-leader/verify-output/instructions.md +122 -0
  74. package/config/skills/team-leader/verify-output/skill.json +20 -0
  75. package/config/templates/agent-claude-md.md +10 -5
  76. package/config/templates/core-team/demo-script.md +41 -0
  77. package/config/templates/core-team/goals.md +20 -0
  78. package/config/templates/core-team/team.json +22 -0
  79. package/config/templates/dev-fullstack/template.json +115 -0
  80. package/config/templates/education-smb/README.md +27 -0
  81. package/config/templates/education-smb/goals.md +16 -0
  82. package/config/templates/education-smb/knowledge/docs/content-standards.md +24 -0
  83. package/config/templates/education-smb/knowledge/docs/education-industry-context.md +13 -0
  84. package/config/templates/education-smb/knowledge/index.json +24 -0
  85. package/config/templates/education-smb/learned-patterns.json +16 -0
  86. package/config/templates/education-smb/quality-gates.yaml +66 -0
  87. package/config/templates/education-smb/roles/analytics-specialist.md +6 -0
  88. package/config/templates/education-smb/roles/content-creator.md +6 -0
  89. package/config/templates/education-smb/roles/curriculum-designer.md +6 -0
  90. package/config/templates/education-smb/roles/engagement-manager.md +6 -0
  91. package/config/templates/education-smb/team.json +40 -0
  92. package/config/templates/education-smb/template.json +26 -0
  93. package/config/templates/education-smb/workflows/course-content-generation.yaml +44 -0
  94. package/config/templates/education-smb/workflows/reporting.yaml +31 -0
  95. package/config/templates/education-smb/workflows/student-communication.yaml +44 -0
  96. package/config/templates/education-smb/workflows.yaml +40 -0
  97. package/config/templates/insurance-smb/README.md +28 -0
  98. package/config/templates/insurance-smb/goals.md +21 -0
  99. package/config/templates/insurance-smb/knowledge/docs/compliance-checklist.md +28 -0
  100. package/config/templates/insurance-smb/knowledge/docs/insurance-industry-context.md +23 -0
  101. package/config/templates/insurance-smb/knowledge/index.json +24 -0
  102. package/config/templates/insurance-smb/learned-patterns.json +16 -0
  103. package/config/templates/insurance-smb/quality-gates.yaml +54 -0
  104. package/config/templates/insurance-smb/roles/claims-processor.md +6 -0
  105. package/config/templates/insurance-smb/roles/client-manager.md +6 -0
  106. package/config/templates/insurance-smb/roles/compliance-officer.md +6 -0
  107. package/config/templates/insurance-smb/roles/marketing-specialist.md +6 -0
  108. package/config/templates/insurance-smb/roles/policy-analyst.md +6 -0
  109. package/config/templates/insurance-smb/team.json +48 -0
  110. package/config/templates/insurance-smb/template.json +26 -0
  111. package/config/templates/insurance-smb/workflows/claims-processing.yaml +48 -0
  112. package/config/templates/insurance-smb/workflows.yaml +43 -0
  113. package/config/templates/research-analysis/template.json +88 -0
  114. package/config/templates/social-media-ops/template.json +85 -0
  115. package/config/templates/video-production/template.json +123 -0
  116. package/dist/backend/backend/src/constants.d.ts +310 -84
  117. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  118. package/dist/backend/backend/src/constants.js +303 -89
  119. package/dist/backend/backend/src/constants.js.map +1 -1
  120. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  121. package/dist/backend/backend/src/controllers/chat/chat.controller.js +86 -26
  122. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  123. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts +81 -0
  124. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts.map +1 -0
  125. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js +234 -0
  126. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js.map +1 -0
  127. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +25 -0
  128. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts.map +1 -0
  129. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +38 -0
  130. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -0
  131. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts +69 -0
  132. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts.map +1 -0
  133. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js +165 -0
  134. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js.map +1 -0
  135. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts +23 -0
  136. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts.map +1 -0
  137. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js +32 -0
  138. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js.map +1 -0
  139. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +52 -0
  140. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -0
  141. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +122 -0
  142. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -0
  143. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +21 -0
  144. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -0
  145. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +32 -0
  146. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -0
  147. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts +42 -0
  148. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts.map +1 -0
  149. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js +138 -0
  150. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js.map +1 -0
  151. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts +23 -0
  152. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts.map +1 -0
  153. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js +34 -0
  154. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js.map +1 -0
  155. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts +43 -0
  156. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts.map +1 -0
  157. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js +9 -0
  158. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js.map +1 -0
  159. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts +7 -0
  160. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts.map +1 -0
  161. package/dist/backend/backend/src/controllers/cloud/files/index.js +7 -0
  162. package/dist/backend/backend/src/controllers/cloud/files/index.js.map +1 -0
  163. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts +47 -0
  164. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts.map +1 -0
  165. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js +131 -0
  166. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js.map +1 -0
  167. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts +23 -0
  168. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts.map +1 -0
  169. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js +30 -0
  170. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js.map +1 -0
  171. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts +81 -0
  172. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts.map +1 -0
  173. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js +85 -0
  174. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js.map +1 -0
  175. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts +7 -0
  176. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts.map +1 -0
  177. package/dist/backend/backend/src/controllers/cloud/h5/index.js +7 -0
  178. package/dist/backend/backend/src/controllers/cloud/h5/index.js.map +1 -0
  179. package/dist/backend/backend/src/controllers/cloud/index.d.ts +14 -0
  180. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -0
  181. package/dist/backend/backend/src/controllers/cloud/index.js +14 -0
  182. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -0
  183. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts +7 -0
  184. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts.map +1 -0
  185. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js +7 -0
  186. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js.map +1 -0
  187. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts +45 -0
  188. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts.map +1 -0
  189. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js +155 -0
  190. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js.map +1 -0
  191. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts +25 -0
  192. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts.map +1 -0
  193. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js +32 -0
  194. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js.map +1 -0
  195. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +101 -0
  196. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -0
  197. package/dist/backend/backend/src/controllers/cloud/relay.controller.js +343 -0
  198. package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -0
  199. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +29 -0
  200. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -0
  201. package/dist/backend/backend/src/controllers/cloud/relay.routes.js +44 -0
  202. package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -0
  203. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts +49 -0
  204. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts.map +1 -0
  205. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js +152 -0
  206. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js.map +1 -0
  207. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts +24 -0
  208. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts.map +1 -0
  209. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js +34 -0
  210. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js.map +1 -0
  211. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts +90 -0
  212. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts.map +1 -0
  213. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js +48 -0
  214. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js.map +1 -0
  215. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +7 -0
  216. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -0
  217. package/dist/backend/backend/src/controllers/cloud/tasks/index.js +7 -0
  218. package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -0
  219. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +2 -0
  220. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  221. package/dist/backend/backend/src/controllers/marketplace/index.js +3 -0
  222. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  223. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +12 -12
  224. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  225. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -18
  226. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  227. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  228. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +3 -0
  229. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  230. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts +111 -0
  231. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts.map +1 -0
  232. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js +220 -0
  233. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js.map +1 -0
  234. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +33 -0
  235. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -0
  236. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +50 -0
  237. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -0
  238. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  239. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
  240. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  241. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  242. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -2
  243. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  244. package/dist/backend/backend/src/controllers/payment/index.d.ts +7 -0
  245. package/dist/backend/backend/src/controllers/payment/index.d.ts.map +1 -0
  246. package/dist/backend/backend/src/controllers/payment/index.js +7 -0
  247. package/dist/backend/backend/src/controllers/payment/index.js.map +1 -0
  248. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +57 -0
  249. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -0
  250. package/dist/backend/backend/src/controllers/payment/payment.controller.js +136 -0
  251. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -0
  252. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +27 -0
  253. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -0
  254. package/dist/backend/backend/src/controllers/payment/payment.routes.js +38 -0
  255. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -0
  256. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +109 -0
  257. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -0
  258. package/dist/backend/backend/src/controllers/payment/payment.types.js +54 -0
  259. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -0
  260. package/dist/backend/backend/src/controllers/request-types.d.ts +34 -5
  261. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  262. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +14 -0
  263. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  264. package/dist/backend/backend/src/controllers/session/session.controller.js +48 -0
  265. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  266. package/dist/backend/backend/src/controllers/session/session.routes.d.ts.map +1 -1
  267. package/dist/backend/backend/src/controllers/session/session.routes.js +3 -1
  268. package/dist/backend/backend/src/controllers/session/session.routes.js.map +1 -1
  269. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  270. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +4 -3
  271. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  272. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  273. package/dist/backend/backend/src/controllers/system/system.controller.js +13 -15
  274. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  275. package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
  276. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
  277. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  278. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +40 -4
  279. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  280. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  281. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  282. package/dist/backend/backend/src/controllers/team/team.controller.js +259 -13
  283. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  284. package/dist/backend/backend/src/controllers/template/index.d.ts +8 -0
  285. package/dist/backend/backend/src/controllers/template/index.d.ts.map +1 -0
  286. package/dist/backend/backend/src/controllers/template/index.js +8 -0
  287. package/dist/backend/backend/src/controllers/template/index.js.map +1 -0
  288. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +63 -0
  289. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -0
  290. package/dist/backend/backend/src/controllers/template/template.controller.js +112 -0
  291. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -0
  292. package/dist/backend/backend/src/controllers/template/template.routes.d.ts +24 -0
  293. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -0
  294. package/dist/backend/backend/src/controllers/template/template.routes.js +33 -0
  295. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -0
  296. package/dist/backend/backend/src/index.d.ts.map +1 -1
  297. package/dist/backend/backend/src/index.js +105 -13
  298. package/dist/backend/backend/src/index.js.map +1 -1
  299. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +3 -3
  300. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
  301. package/dist/backend/backend/src/models/Team.d.ts +5 -0
  302. package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
  303. package/dist/backend/backend/src/models/Team.js +24 -0
  304. package/dist/backend/backend/src/models/Team.js.map +1 -1
  305. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  306. package/dist/backend/backend/src/routes/api.routes.js +21 -0
  307. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  308. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +3 -19
  309. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  310. package/dist/backend/backend/src/services/agent/agent-registration.service.js +274 -398
  311. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  312. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -1
  313. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +11 -2
  315. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  316. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +2 -1
  317. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +38 -51
  319. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  321. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  322. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +496 -0
  323. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  324. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts +70 -0
  325. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts.map +1 -0
  326. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js +131 -0
  327. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js.map +1 -0
  328. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +21 -1
  329. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  330. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +32 -1
  331. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  332. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +77 -3
  333. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  334. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +281 -30
  335. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  336. package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
  338. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  339. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +49 -2
  340. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  341. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +124 -2
  342. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  343. package/dist/backend/backend/src/services/chat/chat.service.d.ts +10 -2
  344. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  345. package/dist/backend/backend/src/services/chat/chat.service.js +49 -8
  346. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  347. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts +174 -0
  348. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/cloud/auth/auth.service.js +402 -0
  350. package/dist/backend/backend/src/services/cloud/auth/auth.service.js.map +1 -0
  351. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts +110 -0
  352. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/cloud/auth/auth.types.js +54 -0
  354. package/dist/backend/backend/src/services/cloud/auth/auth.types.js.map +1 -0
  355. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts +36 -0
  356. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts.map +1 -0
  357. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js +31 -0
  358. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js.map +1 -0
  359. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts +47 -0
  360. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts.map +1 -0
  361. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js +116 -0
  362. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js.map +1 -0
  363. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts +61 -0
  364. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts.map +1 -0
  365. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js +203 -0
  366. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js.map +1 -0
  367. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +46 -0
  368. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -0
  369. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +95 -0
  370. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -0
  371. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts +136 -0
  372. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts.map +1 -0
  373. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js +204 -0
  374. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js.map +1 -0
  375. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +179 -0
  376. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
  377. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +237 -0
  378. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -0
  379. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts +97 -0
  380. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts.map +1 -0
  381. package/dist/backend/backend/src/services/cloud/cloud-file.service.js +184 -0
  382. package/dist/backend/backend/src/services/cloud/cloud-file.service.js.map +1 -0
  383. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts +114 -0
  384. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts.map +1 -0
  385. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js +196 -0
  386. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js.map +1 -0
  387. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +118 -0
  388. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -0
  389. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +322 -0
  390. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -0
  391. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts +115 -0
  392. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts.map +1 -0
  393. package/dist/backend/backend/src/services/cloud/cloud-task.service.js +265 -0
  394. package/dist/backend/backend/src/services/cloud/cloud-task.service.js.map +1 -0
  395. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts +175 -0
  396. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -0
  397. package/dist/backend/backend/src/services/cloud/relay-client.service.js +392 -0
  398. package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -0
  399. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts +87 -0
  400. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts.map +1 -0
  401. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js +140 -0
  402. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js.map +1 -0
  403. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +183 -0
  404. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -0
  405. package/dist/backend/backend/src/services/cloud/relay-server.service.js +523 -0
  406. package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -0
  407. package/dist/backend/backend/src/services/cloud/relay.types.d.ts +170 -0
  408. package/dist/backend/backend/src/services/cloud/relay.types.d.ts.map +1 -0
  409. package/dist/backend/backend/src/services/cloud/relay.types.js +69 -0
  410. package/dist/backend/backend/src/services/cloud/relay.types.js.map +1 -0
  411. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts +9 -1
  412. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -1
  413. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js +18 -4
  414. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -1
  415. package/dist/backend/backend/src/services/core/env.config.d.ts +147 -0
  416. package/dist/backend/backend/src/services/core/env.config.d.ts.map +1 -0
  417. package/dist/backend/backend/src/services/core/env.config.js +226 -0
  418. package/dist/backend/backend/src/services/core/env.config.js.map +1 -0
  419. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  420. package/dist/backend/backend/src/services/core/storage.service.js +5 -0
  421. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  422. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +20 -7
  423. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  424. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +35 -31
  425. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  426. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts +160 -0
  427. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts.map +1 -0
  428. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js +261 -0
  429. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js.map +1 -0
  430. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts +161 -0
  431. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts.map +1 -0
  432. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js +276 -0
  433. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js.map +1 -0
  434. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  435. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  436. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  437. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  438. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +2 -2
  439. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts +149 -0
  440. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts.map +1 -0
  441. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js +500 -0
  442. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js.map +1 -0
  443. package/dist/backend/backend/src/services/mcp-server.js +1 -1
  444. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  445. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +90 -0
  446. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -0
  447. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +233 -0
  448. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -0
  449. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
  450. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  451. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +1 -1
  452. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  453. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +28 -4
  454. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  455. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +113 -60
  456. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  457. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  458. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -8
  459. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  460. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts +69 -0
  461. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts.map +1 -0
  462. package/dist/backend/backend/src/services/payment/magic-moment.service.js +158 -0
  463. package/dist/backend/backend/src/services/payment/magic-moment.service.js.map +1 -0
  464. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts +95 -0
  465. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts.map +1 -0
  466. package/dist/backend/backend/src/services/payment/magic-moment.types.js +91 -0
  467. package/dist/backend/backend/src/services/payment/magic-moment.types.js.map +1 -0
  468. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +122 -0
  469. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -0
  470. package/dist/backend/backend/src/services/payment/stripe.service.js +403 -0
  471. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -0
  472. package/dist/backend/backend/src/services/plugin/index.d.ts +9 -0
  473. package/dist/backend/backend/src/services/plugin/index.d.ts.map +1 -0
  474. package/dist/backend/backend/src/services/plugin/index.js +8 -0
  475. package/dist/backend/backend/src/services/plugin/index.js.map +1 -0
  476. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts +102 -0
  477. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts.map +1 -0
  478. package/dist/backend/backend/src/services/plugin/plugin.service.js +179 -0
  479. package/dist/backend/backend/src/services/plugin/plugin.service.js.map +1 -0
  480. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts +88 -0
  481. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts.map +1 -0
  482. package/dist/backend/backend/src/services/plugin/plugin.types.js +17 -0
  483. package/dist/backend/backend/src/services/plugin/plugin.types.js.map +1 -0
  484. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +17 -0
  485. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  486. package/dist/backend/backend/src/services/project/task-tracking.service.js +63 -0
  487. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  488. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +1 -1
  489. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  490. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +14 -0
  491. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  492. package/dist/backend/backend/src/services/session/session-command-helper.js +70 -4
  493. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  494. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  495. package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
  496. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  497. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  498. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +15 -5
  499. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  500. package/dist/backend/backend/src/services/template/template.service.d.ts +153 -0
  501. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -0
  502. package/dist/backend/backend/src/services/template/template.service.js +372 -0
  503. package/dist/backend/backend/src/services/template/template.service.js.map +1 -0
  504. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +51 -0
  505. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  506. package/dist/backend/backend/src/services/workflow/scheduler.service.js +118 -2
  507. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  508. package/dist/backend/backend/src/types/chat.types.d.ts +39 -1
  509. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  510. package/dist/backend/backend/src/types/chat.types.js +45 -2
  511. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  512. package/dist/backend/backend/src/types/event-bus.types.d.ts +14 -2
  513. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  514. package/dist/backend/backend/src/types/event-bus.types.js +15 -0
  515. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  516. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts +101 -0
  517. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts.map +1 -0
  518. package/dist/backend/backend/src/types/hierarchy-message.types.js +15 -0
  519. package/dist/backend/backend/src/types/hierarchy-message.types.js.map +1 -0
  520. package/dist/backend/backend/src/types/index.d.ts +54 -4
  521. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  522. package/dist/backend/backend/src/types/index.js.map +1 -1
  523. package/dist/backend/backend/src/types/marketplace.types.d.ts +99 -0
  524. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  525. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  526. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  527. package/dist/backend/backend/src/types/settings.types.js +4 -0
  528. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  529. package/dist/backend/backend/src/types/task-tracking.types.d.ts +79 -1
  530. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  531. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  532. package/dist/backend/backend/src/types/team-template.types.d.ts +166 -0
  533. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -0
  534. package/dist/backend/backend/src/types/team-template.types.js +139 -0
  535. package/dist/backend/backend/src/types/team-template.types.js.map +1 -0
  536. package/dist/backend/backend/src/utils/async-handler.d.ts +20 -0
  537. package/dist/backend/backend/src/utils/async-handler.d.ts.map +1 -0
  538. package/dist/backend/backend/src/utils/async-handler.js +29 -0
  539. package/dist/backend/backend/src/utils/async-handler.js.map +1 -0
  540. package/dist/backend/backend/src/utils/defaultPrompts.d.ts +4 -4
  541. package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
  542. package/dist/backend/backend/src/utils/defaultPrompts.js +16 -0
  543. package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
  544. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  545. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  546. package/dist/backend/backend/src/utils/gemini-trusted-folders.js +94 -0
  547. package/dist/backend/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  548. package/dist/backend/backend/src/utils/message-serializer.d.ts +74 -0
  549. package/dist/backend/backend/src/utils/message-serializer.d.ts.map +1 -0
  550. package/dist/backend/backend/src/utils/message-serializer.js +380 -0
  551. package/dist/backend/backend/src/utils/message-serializer.js.map +1 -0
  552. package/dist/backend/backend/src/utils/terminal-output.utils.d.ts +2 -1
  553. package/dist/backend/backend/src/utils/terminal-output.utils.d.ts.map +1 -1
  554. package/dist/backend/backend/src/utils/terminal-output.utils.js +2 -28
  555. package/dist/backend/backend/src/utils/terminal-output.utils.js.map +1 -1
  556. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts +183 -0
  557. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -0
  558. package/dist/backend/backend/src/utils/terminal-string-ops.js +726 -0
  559. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -0
  560. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  561. package/dist/backend/backend/src/websocket/terminal.gateway.js +22 -27
  562. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  563. package/dist/backend/config/constants.d.ts +40 -1
  564. package/dist/backend/config/constants.d.ts.map +1 -1
  565. package/dist/backend/config/constants.js +41 -1
  566. package/dist/backend/config/constants.js.map +1 -1
  567. package/dist/backend/config/index.d.ts +2 -2
  568. package/dist/backend/config/index.d.ts.map +1 -1
  569. package/dist/backend/config/index.js +2 -2
  570. package/dist/backend/config/index.js.map +1 -1
  571. package/dist/cli/backend/src/constants.d.ts +310 -84
  572. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  573. package/dist/cli/backend/src/constants.js +303 -89
  574. package/dist/cli/backend/src/constants.js.map +1 -1
  575. package/dist/cli/backend/src/models/Team.d.ts +5 -0
  576. package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
  577. package/dist/cli/backend/src/models/Team.js +24 -0
  578. package/dist/cli/backend/src/models/Team.js.map +1 -1
  579. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  580. package/dist/cli/backend/src/services/core/storage.service.js +5 -0
  581. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  582. package/dist/cli/backend/src/services/mcp-server.js +1 -1
  583. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  584. package/dist/cli/backend/src/types/chat.types.d.ts +39 -1
  585. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  586. package/dist/cli/backend/src/types/chat.types.js +45 -2
  587. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  588. package/dist/cli/backend/src/types/index.d.ts +54 -4
  589. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  590. package/dist/cli/backend/src/types/index.js.map +1 -1
  591. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  592. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  593. package/dist/cli/backend/src/types/settings.types.js +4 -0
  594. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  595. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  596. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  597. package/dist/cli/backend/src/utils/gemini-trusted-folders.js +94 -0
  598. package/dist/cli/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  599. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts +2 -1
  600. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts.map +1 -1
  601. package/dist/cli/backend/src/utils/terminal-output.utils.js +2 -28
  602. package/dist/cli/backend/src/utils/terminal-output.utils.js.map +1 -1
  603. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts +183 -0
  604. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -0
  605. package/dist/cli/backend/src/utils/terminal-string-ops.js +726 -0
  606. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -0
  607. package/dist/cli/cli/src/commands/onboard.d.ts +2 -1
  608. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  609. package/dist/cli/cli/src/commands/onboard.js +21 -8
  610. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  611. package/dist/cli/cli/src/commands/start.d.ts +1 -0
  612. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  613. package/dist/cli/cli/src/commands/start.js +71 -23
  614. package/dist/cli/cli/src/commands/start.js.map +1 -1
  615. package/dist/cli/cli/src/constants.d.ts +1 -1
  616. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  617. package/dist/cli/cli/src/constants.js +1 -1
  618. package/dist/cli/cli/src/constants.js.map +1 -1
  619. package/dist/cli/cli/src/index.js +1 -0
  620. package/dist/cli/cli/src/index.js.map +1 -1
  621. package/dist/cli/cli/src/utils/project-scaffold.d.ts +109 -0
  622. package/dist/cli/cli/src/utils/project-scaffold.d.ts.map +1 -0
  623. package/dist/cli/cli/src/utils/project-scaffold.js +346 -0
  624. package/dist/cli/cli/src/utils/project-scaffold.js.map +1 -0
  625. package/dist/cli/cli/src/utils/templates.d.ts +7 -2
  626. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
  627. package/dist/cli/cli/src/utils/templates.js +76 -7
  628. package/dist/cli/cli/src/utils/templates.js.map +1 -1
  629. package/dist/cli/config/constants.d.ts +40 -1
  630. package/dist/cli/config/constants.d.ts.map +1 -1
  631. package/dist/cli/config/constants.js +41 -1
  632. package/dist/cli/config/constants.js.map +1 -1
  633. package/dist/cli/config/index.d.ts +2 -2
  634. package/dist/cli/config/index.d.ts.map +1 -1
  635. package/dist/cli/config/index.js +2 -2
  636. package/dist/cli/config/index.js.map +1 -1
  637. package/frontend/dist/assets/index-510ab719.css +33 -0
  638. package/frontend/dist/assets/index-935cd846.js +4961 -0
  639. package/frontend/dist/index.html +2 -2
  640. package/package.json +9 -4
  641. package/frontend/dist/assets/index-a23214ae.js +0 -4919
  642. package/frontend/dist/assets/index-c407fe13.css +0 -33
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Project Scaffolding Utilities
3
+ *
4
+ * Detects project type, generates project-specific team.json and goals.md,
5
+ * and provides preset team templates for common verticals (Dev Team,
6
+ * Content Agency, Support Team).
7
+ *
8
+ * Used by `crewly init` to create a fully configured .crewly/ directory
9
+ * tailored to the user's project.
10
+ *
11
+ * @module cli/utils/project-scaffold
12
+ */
13
+ /** Detected project type */
14
+ export type ProjectType = 'node' | 'python' | 'generic';
15
+ /** Result of project type detection */
16
+ export interface ProjectDetection {
17
+ /** The detected project type */
18
+ type: ProjectType;
19
+ /** Human-readable label for the project type */
20
+ label: string;
21
+ /** Name of the project (from package.json, setup.py, or directory name) */
22
+ projectName: string;
23
+ /** Signals that helped identify the project type */
24
+ signals: string[];
25
+ }
26
+ /** A preset team configuration for a specific vertical */
27
+ export interface PresetTeam {
28
+ /** Unique preset identifier */
29
+ id: string;
30
+ /** Human-readable name shown during selection */
31
+ name: string;
32
+ /** Short description of the team's purpose */
33
+ description: string;
34
+ /** Agent definitions */
35
+ members: PresetMember[];
36
+ /** Suggested goals for this team type */
37
+ suggestedGoals: string[];
38
+ }
39
+ /** A member within a preset team */
40
+ export interface PresetMember {
41
+ /** Display name */
42
+ name: string;
43
+ /** Role identifier matching config/roles/ */
44
+ role: string;
45
+ /** System prompt */
46
+ systemPrompt: string;
47
+ }
48
+ /**
49
+ * Detects the project type by examining files in the given directory.
50
+ *
51
+ * Checks for common project markers:
52
+ * - Node.js: package.json, tsconfig.json, node_modules/
53
+ * - Python: requirements.txt, setup.py, pyproject.toml, Pipfile
54
+ * - Generic: everything else
55
+ *
56
+ * @param projectDir - The directory to inspect (defaults to cwd)
57
+ * @returns Detection result with type, label, project name, and signals
58
+ */
59
+ export declare function detectProjectType(projectDir?: string): ProjectDetection;
60
+ /** All available preset teams */
61
+ export declare const PRESET_TEAMS: PresetTeam[];
62
+ /**
63
+ * Gets a preset team by ID.
64
+ *
65
+ * @param id - The preset identifier (e.g. "dev-team")
66
+ * @returns The matching preset, or undefined if not found
67
+ */
68
+ export declare function getPresetTeam(id: string): PresetTeam | undefined;
69
+ /**
70
+ * Generates a goals.md file content based on the project name, type, and selected team.
71
+ *
72
+ * @param projectName - The project's name
73
+ * @param projectType - The detected project type
74
+ * @param preset - The selected preset team (optional)
75
+ * @returns The goals.md content as a string
76
+ */
77
+ export declare function generateGoalsContent(projectName: string, projectType: ProjectType, preset?: PresetTeam): string;
78
+ /**
79
+ * Generates a team.json object for the .crewly/ directory from a preset team.
80
+ *
81
+ * Creates full member objects with UUIDs, session names, and status fields.
82
+ *
83
+ * @param preset - The preset team to generate from
84
+ * @param projectName - The project name for session name generation
85
+ * @returns The team config object ready to be serialized to JSON
86
+ */
87
+ export declare function generateTeamConfig(preset: PresetTeam, projectName: string): Record<string, unknown>;
88
+ /**
89
+ * Writes the enhanced project scaffold to the .crewly/ directory.
90
+ *
91
+ * Creates:
92
+ * - .crewly/team.json — project-specific team configuration
93
+ * - .crewly/goals.md — project goals and milestones
94
+ * - .crewly/docs/, memory/, tasks/ directories
95
+ * - .crewly/config.env — environment configuration stub
96
+ *
97
+ * Skips files that already exist to avoid overwriting user changes.
98
+ *
99
+ * @param projectDir - The project root directory
100
+ * @param preset - The selected preset team
101
+ * @param detection - The project detection result
102
+ * @returns Object indicating which files were created
103
+ */
104
+ export declare function writeProjectScaffold(projectDir: string, preset: PresetTeam, detection: ProjectDetection): {
105
+ teamJsonCreated: boolean;
106
+ goalsCreated: boolean;
107
+ dirsCreated: boolean;
108
+ };
109
+ //# sourceMappingURL=project-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-scaffold.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/project-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,yCAAyC;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,MAAsB,GAAG,gBAAgB,CA6EtF;AA2FD,iCAAiC;AACjC,eAAO,MAAM,YAAY,EAAE,UAAU,EAIpC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAID;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAqCR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,gBAAgB,GAC1B;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAoC3E"}
@@ -0,0 +1,346 @@
1
+ /**
2
+ * Project Scaffolding Utilities
3
+ *
4
+ * Detects project type, generates project-specific team.json and goals.md,
5
+ * and provides preset team templates for common verticals (Dev Team,
6
+ * Content Agency, Support Team).
7
+ *
8
+ * Used by `crewly init` to create a fully configured .crewly/ directory
9
+ * tailored to the user's project.
10
+ *
11
+ * @module cli/utils/project-scaffold
12
+ */
13
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
14
+ import { join, basename } from 'path';
15
+ import { randomUUID } from 'crypto';
16
+ // ========================= Project Detection =========================
17
+ /**
18
+ * Detects the project type by examining files in the given directory.
19
+ *
20
+ * Checks for common project markers:
21
+ * - Node.js: package.json, tsconfig.json, node_modules/
22
+ * - Python: requirements.txt, setup.py, pyproject.toml, Pipfile
23
+ * - Generic: everything else
24
+ *
25
+ * @param projectDir - The directory to inspect (defaults to cwd)
26
+ * @returns Detection result with type, label, project name, and signals
27
+ */
28
+ export function detectProjectType(projectDir = process.cwd()) {
29
+ const signals = [];
30
+ let projectName = basename(projectDir);
31
+ // Check Node.js signals
32
+ const hasPackageJson = existsSync(join(projectDir, 'package.json'));
33
+ const hasTsconfig = existsSync(join(projectDir, 'tsconfig.json'));
34
+ const hasNodeModules = existsSync(join(projectDir, 'node_modules'));
35
+ const hasYarnLock = existsSync(join(projectDir, 'yarn.lock'));
36
+ const hasPnpmLock = existsSync(join(projectDir, 'pnpm-lock.yaml'));
37
+ const hasPackageLock = existsSync(join(projectDir, 'package-lock.json'));
38
+ if (hasPackageJson)
39
+ signals.push('package.json');
40
+ if (hasTsconfig)
41
+ signals.push('tsconfig.json');
42
+ if (hasNodeModules)
43
+ signals.push('node_modules/');
44
+ if (hasYarnLock)
45
+ signals.push('yarn.lock');
46
+ if (hasPnpmLock)
47
+ signals.push('pnpm-lock.yaml');
48
+ if (hasPackageLock)
49
+ signals.push('package-lock.json');
50
+ // Check Python signals
51
+ const hasRequirements = existsSync(join(projectDir, 'requirements.txt'));
52
+ const hasSetupPy = existsSync(join(projectDir, 'setup.py'));
53
+ const hasPyproject = existsSync(join(projectDir, 'pyproject.toml'));
54
+ const hasPipfile = existsSync(join(projectDir, 'Pipfile'));
55
+ const hasSetupCfg = existsSync(join(projectDir, 'setup.cfg'));
56
+ if (hasRequirements)
57
+ signals.push('requirements.txt');
58
+ if (hasSetupPy)
59
+ signals.push('setup.py');
60
+ if (hasPyproject)
61
+ signals.push('pyproject.toml');
62
+ if (hasPipfile)
63
+ signals.push('Pipfile');
64
+ if (hasSetupCfg)
65
+ signals.push('setup.cfg');
66
+ // Try to extract project name from config files
67
+ if (hasPackageJson) {
68
+ try {
69
+ const pkg = JSON.parse(readFileSync(join(projectDir, 'package.json'), 'utf-8'));
70
+ if (pkg.name && typeof pkg.name === 'string') {
71
+ projectName = pkg.name;
72
+ }
73
+ }
74
+ catch {
75
+ // Fall through to directory name
76
+ }
77
+ }
78
+ else if (hasSetupPy) {
79
+ try {
80
+ const content = readFileSync(join(projectDir, 'setup.py'), 'utf-8');
81
+ const match = content.match(/name\s*=\s*['"]([^'"]+)['"]/);
82
+ if (match) {
83
+ projectName = match[1];
84
+ }
85
+ }
86
+ catch {
87
+ // Fall through to directory name
88
+ }
89
+ }
90
+ else if (hasPyproject) {
91
+ try {
92
+ const content = readFileSync(join(projectDir, 'pyproject.toml'), 'utf-8');
93
+ const match = content.match(/name\s*=\s*"([^"]+)"/);
94
+ if (match) {
95
+ projectName = match[1];
96
+ }
97
+ }
98
+ catch {
99
+ // Fall through to directory name
100
+ }
101
+ }
102
+ // Determine type based on signal count
103
+ const nodeSignals = [hasPackageJson, hasTsconfig, hasNodeModules, hasYarnLock, hasPnpmLock, hasPackageLock].filter(Boolean).length;
104
+ const pythonSignals = [hasRequirements, hasSetupPy, hasPyproject, hasPipfile, hasSetupCfg].filter(Boolean).length;
105
+ if (nodeSignals > pythonSignals && nodeSignals > 0) {
106
+ return { type: 'node', label: 'Node.js / TypeScript', projectName, signals };
107
+ }
108
+ if (pythonSignals > 0) {
109
+ return { type: 'python', label: 'Python', projectName, signals };
110
+ }
111
+ return { type: 'generic', label: 'General', projectName, signals };
112
+ }
113
+ // ========================= Preset Teams =========================
114
+ /** Dev Team preset — optimized for software development projects */
115
+ const DEV_TEAM_PRESET = {
116
+ id: 'dev-team',
117
+ name: 'Dev Team',
118
+ description: 'Developer + Code Reviewer + QA for building and shipping software. Ideal for Node.js, Python, or any codebase.',
119
+ members: [
120
+ {
121
+ name: 'Developer',
122
+ role: 'developer',
123
+ systemPrompt: 'You are the lead developer. Implement features, fix bugs, and write clean, tested code. Follow project conventions and maintain high code quality. Coordinate with the reviewer for code reviews and QA for testing.',
124
+ },
125
+ {
126
+ name: 'Code Reviewer',
127
+ role: 'developer',
128
+ systemPrompt: 'You are the code reviewer. Review all code changes for correctness, performance, security, and adherence to project standards. Provide constructive feedback and approve changes when they meet quality bar. Help maintain consistent architecture.',
129
+ },
130
+ {
131
+ name: 'QA Engineer',
132
+ role: 'qa',
133
+ systemPrompt: 'You are the QA engineer. Write and run tests, identify edge cases, and verify features work as expected. Report bugs with clear reproduction steps. Maintain test coverage and help improve the testing strategy.',
134
+ },
135
+ ],
136
+ suggestedGoals: [
137
+ 'Ship features with high code quality and test coverage',
138
+ 'Maintain clean architecture and follow project conventions',
139
+ 'Catch and fix bugs before they reach production',
140
+ ],
141
+ };
142
+ /** Content Agency preset — optimized for content creation and marketing */
143
+ const CONTENT_AGENCY_PRESET = {
144
+ id: 'content-agency',
145
+ name: 'Content Agency',
146
+ description: 'Content Strategist + Writer + Editor for producing blog posts, social media content, and marketing materials.',
147
+ members: [
148
+ {
149
+ name: 'Content Strategist',
150
+ role: 'content-strategist',
151
+ systemPrompt: 'You are the content strategist. Research topics, identify keywords, and create content briefs. Define the content calendar and quality standards. Review all output before publication.',
152
+ },
153
+ {
154
+ name: 'Writer',
155
+ role: 'generalist',
156
+ systemPrompt: 'You are the writer. Take content briefs and produce full-length blog posts, social media copy, and marketing materials. Focus on engaging, accurate, on-brand content that follows the brief guidelines.',
157
+ },
158
+ {
159
+ name: 'Editor',
160
+ role: 'qa',
161
+ systemPrompt: 'You are the editor. Review all content for accuracy, tone consistency, SEO compliance, and brand voice. Approve content for publication or return with specific revision notes.',
162
+ },
163
+ ],
164
+ suggestedGoals: [
165
+ 'Produce consistent, high-quality content on schedule',
166
+ 'Build audience engagement and grow traffic',
167
+ 'Maintain brand voice across all channels',
168
+ ],
169
+ };
170
+ /** Support Team preset — optimized for customer support and documentation */
171
+ const SUPPORT_TEAM_PRESET = {
172
+ id: 'support-team',
173
+ name: 'Support Team',
174
+ description: 'Support Lead + Technical Writer + Triage Agent for handling customer inquiries, writing docs, and managing issues.',
175
+ members: [
176
+ {
177
+ name: 'Support Lead',
178
+ role: 'support',
179
+ systemPrompt: 'You are the support lead. Manage incoming support requests, prioritize issues, and coordinate the team response. Escalate technical issues to the appropriate team. Track resolution times and customer satisfaction.',
180
+ },
181
+ {
182
+ name: 'Technical Writer',
183
+ role: 'generalist',
184
+ systemPrompt: 'You are the technical writer. Create and maintain documentation, FAQs, troubleshooting guides, and knowledge base articles. Turn common support questions into self-service resources to reduce ticket volume.',
185
+ },
186
+ {
187
+ name: 'Triage Agent',
188
+ role: 'generalist',
189
+ systemPrompt: 'You are the triage agent. Categorize and prioritize incoming issues. Gather reproduction steps and relevant context. Route issues to the right team member. Handle simple requests directly when possible.',
190
+ },
191
+ ],
192
+ suggestedGoals: [
193
+ 'Respond to all inquiries within 24 hours',
194
+ 'Build comprehensive documentation and FAQs',
195
+ 'Reduce repeat questions through better self-service resources',
196
+ ],
197
+ };
198
+ /** All available preset teams */
199
+ export const PRESET_TEAMS = [
200
+ DEV_TEAM_PRESET,
201
+ CONTENT_AGENCY_PRESET,
202
+ SUPPORT_TEAM_PRESET,
203
+ ];
204
+ /**
205
+ * Gets a preset team by ID.
206
+ *
207
+ * @param id - The preset identifier (e.g. "dev-team")
208
+ * @returns The matching preset, or undefined if not found
209
+ */
210
+ export function getPresetTeam(id) {
211
+ return PRESET_TEAMS.find(p => p.id === id);
212
+ }
213
+ // ========================= Scaffolding =========================
214
+ /**
215
+ * Generates a goals.md file content based on the project name, type, and selected team.
216
+ *
217
+ * @param projectName - The project's name
218
+ * @param projectType - The detected project type
219
+ * @param preset - The selected preset team (optional)
220
+ * @returns The goals.md content as a string
221
+ */
222
+ export function generateGoalsContent(projectName, projectType, preset) {
223
+ const lines = [
224
+ `# ${projectName} - Project Goals`,
225
+ '',
226
+ `> Generated by \`crewly init\` on ${new Date().toISOString().split('T')[0]}`,
227
+ `> Project type: ${projectType}`,
228
+ '',
229
+ ];
230
+ if (preset) {
231
+ lines.push(`## Team: ${preset.name}`);
232
+ lines.push('');
233
+ lines.push('### Goals');
234
+ lines.push('');
235
+ for (const goal of preset.suggestedGoals) {
236
+ lines.push(`- [ ] ${goal}`);
237
+ }
238
+ lines.push('');
239
+ }
240
+ lines.push('## Milestones');
241
+ lines.push('');
242
+ lines.push('### Phase 1: Setup');
243
+ lines.push('- [ ] Configure team and project settings');
244
+ lines.push('- [ ] Define initial task backlog');
245
+ lines.push('- [ ] Establish working conventions');
246
+ lines.push('');
247
+ lines.push('### Phase 2: Execution');
248
+ lines.push('- [ ] Complete first deliverable');
249
+ lines.push('- [ ] Review and iterate');
250
+ lines.push('');
251
+ lines.push('## Notes');
252
+ lines.push('');
253
+ lines.push('Add project-specific notes, decisions, and context here.');
254
+ lines.push('');
255
+ return lines.join('\n');
256
+ }
257
+ /**
258
+ * Generates a team.json object for the .crewly/ directory from a preset team.
259
+ *
260
+ * Creates full member objects with UUIDs, session names, and status fields.
261
+ *
262
+ * @param preset - The preset team to generate from
263
+ * @param projectName - The project name for session name generation
264
+ * @returns The team config object ready to be serialized to JSON
265
+ */
266
+ export function generateTeamConfig(preset, projectName) {
267
+ const now = new Date().toISOString();
268
+ const safeProjectName = projectName.replace(/[^a-z0-9]+/gi, '-').toLowerCase();
269
+ const members = preset.members.map((m) => {
270
+ const memberId = randomUUID().split('-')[0];
271
+ const safeName = m.name.toLowerCase().replace(/[^a-z0-9]+/g, '-');
272
+ const sessionName = `${safeProjectName}-${safeName}-${memberId}`;
273
+ return {
274
+ id: randomUUID(),
275
+ name: m.name,
276
+ role: m.role,
277
+ sessionName,
278
+ systemPrompt: m.systemPrompt,
279
+ runtimeType: 'claude-code',
280
+ agentStatus: 'inactive',
281
+ workingStatus: 'idle',
282
+ skillOverrides: [],
283
+ excludedRoleSkills: [],
284
+ createdAt: now,
285
+ updatedAt: now,
286
+ };
287
+ });
288
+ return {
289
+ id: `${safeProjectName}-${preset.id}`,
290
+ name: `${projectName} ${preset.name}`,
291
+ description: preset.description,
292
+ members,
293
+ projectIds: [],
294
+ createdAt: now,
295
+ updatedAt: now,
296
+ };
297
+ }
298
+ /**
299
+ * Writes the enhanced project scaffold to the .crewly/ directory.
300
+ *
301
+ * Creates:
302
+ * - .crewly/team.json — project-specific team configuration
303
+ * - .crewly/goals.md — project goals and milestones
304
+ * - .crewly/docs/, memory/, tasks/ directories
305
+ * - .crewly/config.env — environment configuration stub
306
+ *
307
+ * Skips files that already exist to avoid overwriting user changes.
308
+ *
309
+ * @param projectDir - The project root directory
310
+ * @param preset - The selected preset team
311
+ * @param detection - The project detection result
312
+ * @returns Object indicating which files were created
313
+ */
314
+ export function writeProjectScaffold(projectDir, preset, detection) {
315
+ const crewlyDir = join(projectDir, '.crewly');
316
+ let teamJsonCreated = false;
317
+ let goalsCreated = false;
318
+ let dirsCreated = false;
319
+ // Create directory structure
320
+ const subdirs = ['docs', 'memory', 'tasks', 'teams'];
321
+ for (const subdir of subdirs) {
322
+ mkdirSync(join(crewlyDir, subdir), { recursive: true });
323
+ }
324
+ dirsCreated = true;
325
+ // Write config.env if not present
326
+ const configEnvPath = join(crewlyDir, 'config.env');
327
+ if (!existsSync(configEnvPath)) {
328
+ writeFileSync(configEnvPath, '# Crewly configuration\n# Add API keys and settings here\n');
329
+ }
330
+ // Write team.json if not present
331
+ const teamJsonPath = join(crewlyDir, 'team.json');
332
+ if (!existsSync(teamJsonPath)) {
333
+ const teamConfig = generateTeamConfig(preset, detection.projectName);
334
+ writeFileSync(teamJsonPath, JSON.stringify(teamConfig, null, 2) + '\n');
335
+ teamJsonCreated = true;
336
+ }
337
+ // Write goals.md if not present
338
+ const goalsPath = join(crewlyDir, 'goals.md');
339
+ if (!existsSync(goalsPath)) {
340
+ const goalsContent = generateGoalsContent(detection.projectName, detection.type, preset);
341
+ writeFileSync(goalsPath, goalsContent);
342
+ goalsCreated = true;
343
+ }
344
+ return { teamJsonCreated, goalsCreated, dirsCreated };
345
+ }
346
+ //# sourceMappingURL=project-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-scaffold.js","sourceRoot":"","sources":["../../../../../cli/src/utils/project-scaffold.ts"],"names":[],"mappings":"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"}
@@ -43,9 +43,14 @@ export declare function getTemplatesDir(): string;
43
43
  /**
44
44
  * Lists all available team templates.
45
45
  *
46
- * Reads JSON files from config/templates/ and returns them sorted by name.
46
+ * Reads templates from config/templates/ in both formats:
47
+ * - New format: subdirectory/template.json with roles[] and verificationPipeline
48
+ * - Legacy format: flat JSON files with members[] at root level
47
49
  *
48
- * @returns Array of team templates
50
+ * New-format templates are converted to the CLI TeamTemplate interface
51
+ * by mapping roles to members.
52
+ *
53
+ * @returns Array of team templates sorted by name
49
54
  *
50
55
  * @example
51
56
  * ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAcxC;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAyB9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEhE"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAcxC;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAsD9C;AA+CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEhE"}
@@ -7,7 +7,7 @@
7
7
  * @module cli/utils/templates
8
8
  */
9
9
  import path from 'path';
10
- import { readFileSync, readdirSync, existsSync } from 'fs';
10
+ import { readFileSync, readdirSync, existsSync, statSync } from 'fs';
11
11
  // ========================= Internals =========================
12
12
  /**
13
13
  * Resolves the absolute path to the config/templates/ directory.
@@ -38,9 +38,14 @@ export function getTemplatesDir() {
38
38
  /**
39
39
  * Lists all available team templates.
40
40
  *
41
- * Reads JSON files from config/templates/ and returns them sorted by name.
41
+ * Reads templates from config/templates/ in both formats:
42
+ * - New format: subdirectory/template.json with roles[] and verificationPipeline
43
+ * - Legacy format: flat JSON files with members[] at root level
42
44
  *
43
- * @returns Array of team templates
45
+ * New-format templates are converted to the CLI TeamTemplate interface
46
+ * by mapping roles to members.
47
+ *
48
+ * @returns Array of team templates sorted by name
44
49
  *
45
50
  * @example
46
51
  * ```typescript
@@ -50,20 +55,49 @@ export function getTemplatesDir() {
50
55
  */
51
56
  export function listTemplates() {
52
57
  const templatesDir = getTemplatesDir();
53
- let files;
58
+ let entries;
54
59
  try {
55
- files = readdirSync(templatesDir).filter(f => f.endsWith('.json'));
60
+ entries = readdirSync(templatesDir);
56
61
  }
57
62
  catch {
58
63
  return [];
59
64
  }
60
65
  const templates = [];
61
- for (const file of files) {
66
+ const seenIds = new Set();
67
+ // First pass: load new-format templates from subdirectories
68
+ for (const entry of entries) {
69
+ const fullPath = path.join(templatesDir, entry);
70
+ try {
71
+ const stat = statSync(fullPath);
72
+ if (stat.isDirectory()) {
73
+ const templateJsonPath = path.join(fullPath, 'template.json');
74
+ if (existsSync(templateJsonPath)) {
75
+ const content = readFileSync(templateJsonPath, 'utf-8');
76
+ const parsed = JSON.parse(content);
77
+ // New format: has roles[] array and verificationPipeline
78
+ if (parsed.id && parsed.name && Array.isArray(parsed.roles) && parsed.roles.length > 0) {
79
+ const converted = convertNewFormatTemplate(parsed);
80
+ if (converted) {
81
+ templates.push(converted);
82
+ seenIds.add(converted.id);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch {
89
+ // Skip invalid directories
90
+ }
91
+ }
92
+ // Second pass: load legacy flat JSON templates (skip if ID already seen)
93
+ const jsonFiles = entries.filter(f => f.endsWith('.json') && !f.startsWith('.'));
94
+ for (const file of jsonFiles) {
62
95
  try {
63
96
  const content = readFileSync(path.join(templatesDir, file), 'utf-8');
64
97
  const parsed = JSON.parse(content);
65
- if (parsed.id && parsed.name && Array.isArray(parsed.members)) {
98
+ if (parsed.id && parsed.name && Array.isArray(parsed.members) && !seenIds.has(parsed.id)) {
66
99
  templates.push(parsed);
100
+ seenIds.add(parsed.id);
67
101
  }
68
102
  }
69
103
  catch {
@@ -72,6 +106,41 @@ export function listTemplates() {
72
106
  }
73
107
  return templates.sort((a, b) => a.name.localeCompare(b.name));
74
108
  }
109
+ /**
110
+ * Converts a new-format template (with roles[]) to CLI TeamTemplate (with members[]).
111
+ *
112
+ * Maps each role to one or more TemplateMember entries based on the role's count.
113
+ *
114
+ * @param data - Raw parsed template.json data
115
+ * @returns Converted TeamTemplate, or null if conversion fails
116
+ */
117
+ function convertNewFormatTemplate(data) {
118
+ try {
119
+ const roles = data.roles;
120
+ const members = [];
121
+ for (const role of roles) {
122
+ for (let i = 0; i < (role.count || 1); i++) {
123
+ const suffix = role.count > 1 ? ` ${i + 1}` : '';
124
+ members.push({
125
+ name: `${role.defaultName}${suffix}`,
126
+ role: role.role,
127
+ systemPrompt: role.promptAdditions ?? `You are a ${role.label}.`,
128
+ skillOverrides: role.defaultSkills,
129
+ excludedRoleSkills: role.excludedSkills,
130
+ });
131
+ }
132
+ }
133
+ return {
134
+ id: data.id,
135
+ name: data.name,
136
+ description: data.description ?? '',
137
+ members,
138
+ };
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ }
75
144
  /**
76
145
  * Gets a specific team template by ID.
77
146
  *
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../../cli/src/utils/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AA8B3D,gEAAgE;AAEhE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,8DAA8D;IAC9D,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,wDAAwD;IACxD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,iEAAiE;AAEjE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;YACnD,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../../cli/src/utils/templates.ts"],"names":[],"mappings":"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"}