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,88 @@
1
+ #!/bin/bash
2
+ # Broadcast a message to all Team Leaders within an organization (parent team's child teams).
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"parentTeamId\":\"org-team-id\",\"message\":\"Please submit status reports\"}'"
9
+
10
+ PARENT_TEAM_ID=$(echo "$INPUT" | jq -r '.parentTeamId // empty')
11
+ MESSAGE=$(echo "$INPUT" | jq -r '.message // empty')
12
+ require_param "parentTeamId" "$PARENT_TEAM_ID"
13
+ require_param "message" "$MESSAGE"
14
+
15
+ # Fetch all teams
16
+ ALL_TEAMS=$(api_call GET "/teams" 2>/dev/null) || error_exit "Failed to fetch teams"
17
+
18
+ # Verify parent team exists
19
+ PARENT_EXISTS=$(echo "$ALL_TEAMS" | jq -r --arg pid "$PARENT_TEAM_ID" \
20
+ '[.data // . | if type == "array" then .[] else empty end | select(.id == $pid)] | length' 2>/dev/null || echo "0")
21
+
22
+ if [ "$PARENT_EXISTS" = "0" ]; then
23
+ error_exit "Parent team '${PARENT_TEAM_ID}' not found"
24
+ fi
25
+
26
+ # Find child teams whose parentTeamId matches
27
+ CHILD_TEAMS=$(echo "$ALL_TEAMS" | jq -c --arg pid "$PARENT_TEAM_ID" \
28
+ '[.data // . | if type == "array" then .[] else empty end | select(.parentTeamId == $pid)]' 2>/dev/null || echo "[]")
29
+
30
+ CHILD_COUNT=$(echo "$CHILD_TEAMS" | jq 'length')
31
+
32
+ if [ "$CHILD_COUNT" = "0" ]; then
33
+ echo "{\"sent\":0,\"failed\":0,\"skipped\":0,\"message\":\"No child teams found under parent ${PARENT_TEAM_ID}\"}"
34
+ exit 0
35
+ fi
36
+
37
+ SENT=0
38
+ FAILED=0
39
+ SKIPPED=0
40
+ DETAILS="[]"
41
+
42
+ # Iterate through child teams and find their leaders
43
+ for i in $(seq 0 $((CHILD_COUNT - 1))); do
44
+ TEAM=$(echo "$CHILD_TEAMS" | jq -c ".[$i]")
45
+ TEAM_NAME=$(echo "$TEAM" | jq -r '.name // "unknown"')
46
+
47
+ # Find leader sessions: use leaderIds first, fallback to hierarchyLevel==1
48
+ LEADER_SESSIONS=$(echo "$TEAM" | jq -r '
49
+ if (.leaderIds // []) | length > 0 then
50
+ .members[] | select(.id as $id | any(.leaderIds[]; . == $id)) | .sessionName // empty
51
+ else
52
+ .members[] | select(.hierarchyLevel == 1) | .sessionName // empty
53
+ end
54
+ ' 2>/dev/null || true)
55
+
56
+ # Fallback: look for team-leader role
57
+ if [ -z "$LEADER_SESSIONS" ]; then
58
+ LEADER_SESSIONS=$(echo "$TEAM" | jq -r '.members[] | select(.role == "team-leader") | .sessionName // empty' 2>/dev/null || true)
59
+ fi
60
+
61
+ if [ -z "$LEADER_SESSIONS" ]; then
62
+ SKIPPED=$((SKIPPED + 1))
63
+ DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" '. + [{"team": $team, "status": "skipped", "reason": "no leader found"}]')
64
+ continue
65
+ fi
66
+
67
+ for SESSION in $LEADER_SESSIONS; do
68
+ [ -z "$SESSION" ] && continue
69
+ BODY=$(jq -n --arg message "$MESSAGE" '{message: $message}')
70
+ if api_call POST "/terminal/${SESSION}/deliver" "$BODY" >/dev/null 2>&1; then
71
+ SENT=$((SENT + 1))
72
+ DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" --arg session "$SESSION" \
73
+ '. + [{"team": $team, "session": $session, "status": "sent"}]')
74
+ else
75
+ FAILED=$((FAILED + 1))
76
+ DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" --arg session "$SESSION" \
77
+ '. + [{"team": $team, "session": $session, "status": "failed"}]')
78
+ fi
79
+ done
80
+ done
81
+
82
+ jq -n \
83
+ --argjson sent "$SENT" \
84
+ --argjson failed "$FAILED" \
85
+ --argjson skipped "$SKIPPED" \
86
+ --argjson childTeams "$CHILD_COUNT" \
87
+ --argjson details "$DETAILS" \
88
+ '{sent: $sent, failed: $failed, skipped: $skipped, childTeams: $childTeams, details: $details, message: "Broadcast to organization complete"}'
@@ -0,0 +1,51 @@
1
+ # Broadcast to Organization
2
+
3
+ Send a message to all Team Leaders within a specific organization. Given a parent team ID, this skill finds all child teams, identifies their leaders, and delivers the message to each leader's session.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ bash config/skills/orchestrator/broadcast-to-org/execute.sh '{"parentTeamId":"org-team-id","message":"Please submit your weekly status reports by EOD"}'
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ | Parameter | Required | Description |
14
+ |-----------|----------|-------------|
15
+ | `parentTeamId` | Yes | The ID of the parent/organization team |
16
+ | `message` | Yes | The message to send to all TLs in the organization |
17
+
18
+ ## How It Works
19
+
20
+ 1. Fetches all teams from the API
21
+ 2. Filters child teams whose `parentTeamId` matches the given ID
22
+ 3. For each child team, finds leaders using (in priority order):
23
+ - `leaderIds` array on the team
24
+ - Members with `hierarchyLevel == 1`
25
+ - Members with `role == "team-leader"` (fallback)
26
+ 4. Delivers the message to each leader's session via `/terminal/{session}/deliver`
27
+
28
+ ## Output
29
+
30
+ JSON with delivery summary:
31
+
32
+ ```json
33
+ {
34
+ "sent": 3,
35
+ "failed": 0,
36
+ "skipped": 1,
37
+ "childTeams": 4,
38
+ "details": [
39
+ {"team": "Frontend", "session": "crewly-frontend-tl", "status": "sent"},
40
+ {"team": "Backend", "session": "crewly-backend-tl", "status": "sent"},
41
+ {"team": "QA", "status": "skipped", "reason": "no leader found"}
42
+ ],
43
+ "message": "Broadcast to organization complete"
44
+ }
45
+ ```
46
+
47
+ ## Best Practices
48
+
49
+ - Use this for organization-wide announcements like deadlines, priority changes, or standup reminders
50
+ - For individual team communication, use `send-message` or `delegate-task` instead
51
+ - Check the `skipped` count — teams without leaders won't receive the message
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "orc-broadcast-to-org",
3
+ "name": "Broadcast to Organization",
4
+ "description": "Send a message to all Team Leaders within a specific organization (parent team and its child teams).",
5
+ "category": "communication",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 60000
14
+ }
15
+ },
16
+ "assignableRoles": ["orchestrator"],
17
+ "triggers": ["broadcast to org", "message org leaders", "notify organization"],
18
+ "tags": ["communication", "broadcast", "organization", "hierarchy"],
19
+ "version": "1.0.0"
20
+ }
@@ -17,6 +17,14 @@ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
17
17
  require_param "to" "$TO"
18
18
  require_param "task" "$TASK"
19
19
 
20
+ # Structured message parameters (for hierarchical teams)
21
+ TITLE=$(echo "$INPUT" | jq -r '.title // empty')
22
+ PARENT_TASK_ID=$(echo "$INPUT" | jq -r '.parentTaskId // empty')
23
+ EXPECTED_ARTIFACTS=$(echo "$INPUT" | jq -c '.expectedArtifacts // empty')
24
+ CONTEXT_FILES=$(echo "$INPUT" | jq -c '.contextFiles // empty')
25
+ DEADLINE_HINT=$(echo "$INPUT" | jq -r '.deadlineHint // empty')
26
+ USE_STRUCTURED=$(echo "$INPUT" | jq -r '.structured // "false"')
27
+
20
28
  # Monitor parameters — enabled by default to ensure proactive progress notifications.
21
29
  # Use explicit null-check so that `false` / `0` are respected as opt-out values,
22
30
  # while omitted fields default to enabled (idleEvent=true, fallbackCheckMinutes=5).
@@ -43,18 +51,65 @@ if [ -n "$CONTEXT" ]; then
43
51
  CONTEXT="$(CREWLY_ROOT="$CREWLY_ROOT" resolve_skill_paths "$CONTEXT")"
44
52
  fi
45
53
 
46
- # Build a structured task message
47
- TASK_MESSAGE="[TASK] Priority: ${PRIORITY}\n\n${TASK}"
48
- [ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
49
- TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\"}'"
54
+ # Build the task message
55
+ # If structured=true and title is provided, use the [TASK ASSIGNMENT] format
56
+ # Otherwise, use the legacy free-text format for backwards compatibility
57
+ DELEGATOR="${CREWLY_SESSION_NAME:-crewly-orc}"
58
+
59
+ if [ "$USE_STRUCTURED" = "true" ] && [ -n "$TITLE" ]; then
60
+ # Structured TaskAssignment format for hierarchical teams
61
+ TASK_MESSAGE="---\n[TASK ASSIGNMENT]\nTask ID: ${TASK_ID:-pending}\nTitle: ${TITLE}\nPriority: ${PRIORITY}\nDelegated by: ${DELEGATOR}\nParent Task: ${PARENT_TASK_ID:-none}\n---\n\n## Instructions\n${TASK}"
62
+
63
+ # Add expected artifacts if provided
64
+ if [ -n "$EXPECTED_ARTIFACTS" ] && [ "$EXPECTED_ARTIFACTS" != "" ]; then
65
+ ARTIFACT_LIST=$(echo "$EXPECTED_ARTIFACTS" | jq -r '.[]? // empty' 2>/dev/null | while read -r a; do echo "- ${a}"; done)
66
+ if [ -n "$ARTIFACT_LIST" ]; then
67
+ TASK_MESSAGE="${TASK_MESSAGE}\n\n## Expected Deliverables\n${ARTIFACT_LIST}"
68
+ fi
69
+ fi
50
70
 
51
- # waitTimeout matches EVENT_DELIVERY_CONSTANTS.AGENT_READY_TIMEOUT (120000ms)
52
- BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 120000}')
71
+ # Add context files if provided
72
+ if [ -n "$CONTEXT_FILES" ] && [ "$CONTEXT_FILES" != "" ]; then
73
+ FILE_LIST=$(echo "$CONTEXT_FILES" | jq -r '.[]? // empty' 2>/dev/null | while read -r f; do echo "- ${f}"; done)
74
+ if [ -n "$FILE_LIST" ]; then
75
+ TASK_MESSAGE="${TASK_MESSAGE}\n\n## Context\nRead these files first:\n${FILE_LIST}"
76
+ fi
77
+ fi
53
78
 
54
- api_call POST "/terminal/${TO}/deliver" "$BODY"
79
+ [ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nAdditional context: ${CONTEXT}"
80
+ [ -n "$DEADLINE_HINT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\n**Deadline hint**: ${DEADLINE_HINT}"
81
+ TASK_MESSAGE="${TASK_MESSAGE}\n\n---\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
82
+ TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\"}'"
83
+ else
84
+ # Legacy free-text format (backwards compatible)
85
+ TASK_MESSAGE="New task from orchestrator (priority: ${PRIORITY}):\n\n${TASK}"
86
+ [ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
87
+ TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
88
+ TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\"}'"
89
+ fi
55
90
 
56
- # Track the task file path from create response for monitoring linkage
91
+ # Deliver the task message with fallback strategy:
92
+ # 1. Try reliable delivery with waitForReady (15s timeout)
93
+ # 2. If agent not ready, fall back to force mode (direct PTY write)
94
+ # 3. If both fail, output error to stdout (so orchestrator can see it) and exit 1
95
+ BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 15000}')
96
+
97
+ DELIVER_OK=true
98
+ api_call POST "/terminal/${TO}/deliver" "$BODY" || DELIVER_OK=false
99
+
100
+ if [ "$DELIVER_OK" = "false" ]; then
101
+ # Agent not ready or session not found — retry with force mode (direct PTY write)
102
+ FORCE_BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, force: true}')
103
+ api_call POST "/terminal/${TO}/deliver" "$FORCE_BODY" || {
104
+ # Both delivery attempts failed — output error to stdout for orchestrator visibility
105
+ echo '{"error":"Failed to deliver task to '"$TO"'. Session may not exist or agent is not running."}'
106
+ exit 1
107
+ }
108
+ fi
109
+
110
+ # Track the task file path and task ID from create response for monitoring linkage
57
111
  TASK_FILE_PATH=""
112
+ TASK_ID=""
58
113
 
59
114
  # Create task file in project's .crewly/tasks/ directory
60
115
  if [ -n "$PROJECT_PATH" ]; then
@@ -67,6 +122,15 @@ if [ -n "$PROJECT_PATH" ]; then
67
122
  '{projectPath: $projectPath, task: $task, priority: $priority, sessionName: $sessionName, milestone: $milestone}')
68
123
  CREATE_RESULT=$(api_call POST "/task-management/create" "$CREATE_BODY" 2>/dev/null || true)
69
124
  TASK_FILE_PATH=$(echo "$CREATE_RESULT" | jq -r '.taskPath // empty' 2>/dev/null || true)
125
+ TASK_ID=$(echo "$CREATE_RESULT" | jq -r '.taskId // empty' 2>/dev/null || true)
126
+
127
+ # Deliver a follow-up message with complete-task instructions now that taskPath is known (#137).
128
+ # This ensures agents call complete-task with the exact path, not just report-status.
129
+ if [ -n "$TASK_FILE_PATH" ]; then
130
+ COMPLETE_INSTR="After finishing and calling report-status, also run: bash ${CREWLY_ROOT}/config/skills/agent/core/complete-task/execute.sh '{\"absoluteTaskPath\":\"${TASK_FILE_PATH}\",\"sessionName\":\"${TO}\",\"summary\":\"<brief summary>\"}'"
131
+ FOLLOWUP_BODY=$(jq -n --arg message "$COMPLETE_INSTR" '{message: $message, force: true}')
132
+ api_call POST "/terminal/${TO}/deliver" "$FOLLOWUP_BODY" 2>/dev/null || true
133
+ fi
70
134
  fi
71
135
 
72
136
  # --- Auto-monitoring setup ---
@@ -95,9 +159,10 @@ if [ "$MONITOR_FALLBACK_MINUTES" != "0" ] && [ -n "$MONITOR_FALLBACK_MINUTES" ];
95
159
  SCHED_BODY=$(jq -n \
96
160
  --arg target "$SCHEDULE_TARGET" \
97
161
  --arg minutes "$MONITOR_FALLBACK_MINUTES" \
98
- --arg message "[CHECK] Review progress of ${TO} — task: ${TASK:0:100}" \
99
- '{targetSession: $target, minutes: ($minutes | tonumber), intervalMinutes: ($minutes | tonumber), message: $message, isRecurring: true}')
100
- SCHED_RESULT=$(api_call POST "/schedule" "$SCHED_BODY" 2>/dev/null || true)
162
+ --arg message "Progress check: review ${TO} status — task: ${TASK:0:100}" \
163
+ --arg taskId "$TASK_ID" \
164
+ '{targetSession: $target, minutes: ($minutes | tonumber), intervalMinutes: ($minutes | tonumber), message: $message, isRecurring: true} + (if $taskId != "" then {taskId: $taskId} else {} end)' 2>/dev/null) || true
165
+ [ -n "$SCHED_BODY" ] && SCHED_RESULT=$(api_call POST "/schedule" "$SCHED_BODY" 2>/dev/null || true)
101
166
  SCHED_ID=$(echo "$SCHED_RESULT" | jq -r '.checkId // .data.checkId // empty' 2>/dev/null || true)
102
167
  if [ -n "$SCHED_ID" ]; then
103
168
  COLLECTED_SCHEDULE_IDS=$(echo "$COLLECTED_SCHEDULE_IDS" | jq --arg id "$SCHED_ID" '. + [$id]')
@@ -70,15 +70,25 @@ When the agent completes the task (via `report-status` with `status: done` or `c
70
70
 
71
71
  No manual cleanup needed.
72
72
 
73
+ ## Delivery Strategy
74
+
75
+ The script uses a two-stage delivery strategy:
76
+
77
+ 1. **Reliable delivery** (15s timeout) — Waits for the agent to be at a prompt, then delivers with verification. This is the preferred path.
78
+ 2. **Force fallback** — If the agent is busy or not ready within 15 seconds, the message is written directly to the PTY session without waiting. The task is still delivered, but may appear mid-output.
79
+
80
+ This ensures tasks are always delivered even when agents are busy processing previous work.
81
+
73
82
  ## Error Handling
74
83
 
75
84
  | Error | Cause | Solution |
76
85
  |-------|-------|----------|
77
86
  | `Missing required parameter: to` | `to` not provided | Include target session name |
78
87
  | `Missing required parameter: task` | `task` not provided | Include task description |
88
+ | `Failed to deliver task to X` | Session doesn't exist or agent crashed | Check agent status, restart if needed |
79
89
  | `curl failed with exit code N` | Backend not running | Start the Crewly backend |
80
90
 
81
- Monitoring setup failures are non-fatal — if subscribe-event or schedule-check fails, the task is still delegated successfully.
91
+ Error messages are output to **stdout** (JSON format) so the orchestrator can read them. Monitoring setup failures are non-fatal — if subscribe-event or schedule-check fails, the task is still delegated successfully.
82
92
 
83
93
  ## Related Skills
84
94
 
@@ -0,0 +1,45 @@
1
+ #!/bin/bash
2
+ # Notify the orchestrator about an agent failure so it can take recovery actions (#129)
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"agentSession\":\"agent-dev-1\",\"reason\":\"runtime_exited\",\"hadActiveTasks\":true}'"
9
+
10
+ AGENT_SESSION=$(echo "$INPUT" | jq -r '.agentSession // empty')
11
+ REASON=$(echo "$INPUT" | jq -r '.reason // "unknown"')
12
+ HAD_ACTIVE_TASKS=$(echo "$INPUT" | jq -r '.hadActiveTasks // false')
13
+ TASK_SUMMARY=$(echo "$INPUT" | jq -r '.taskSummary // empty')
14
+ RESTART_ATTEMPTED=$(echo "$INPUT" | jq -r '.restartAttempted // false')
15
+ RESTART_SUCCEEDED=$(echo "$INPUT" | jq -r '.restartSucceeded // false')
16
+ require_param "agentSession" "$AGENT_SESSION"
17
+
18
+ # Build a structured notification message for the orchestrator
19
+ MESSAGE="Agent failure notification: ${AGENT_SESSION} became inactive.\nReason: ${REASON}"
20
+
21
+ if [ "$HAD_ACTIVE_TASKS" = "true" ]; then
22
+ MESSAGE="${MESSAGE}\nThe agent had active tasks in progress."
23
+ [ -n "$TASK_SUMMARY" ] && MESSAGE="${MESSAGE}\nTask: ${TASK_SUMMARY}"
24
+ fi
25
+
26
+ if [ "$RESTART_ATTEMPTED" = "true" ]; then
27
+ if [ "$RESTART_SUCCEEDED" = "true" ]; then
28
+ MESSAGE="${MESSAGE}\nAutomatic restart succeeded — agent is recovering."
29
+ else
30
+ MESSAGE="${MESSAGE}\nAutomatic restart FAILED — manual intervention needed."
31
+ MESSAGE="${MESSAGE}\n\nPlease take one of the following actions:"
32
+ MESSAGE="${MESSAGE}\n1. Restart the agent and re-delegate the task"
33
+ MESSAGE="${MESSAGE}\n2. Reassign the task to another available agent"
34
+ MESSAGE="${MESSAGE}\n3. Inform the user about the failure"
35
+ fi
36
+ else
37
+ MESSAGE="${MESSAGE}\nNo automatic restart was attempted."
38
+ MESSAGE="${MESSAGE}\n\nPlease decide whether to restart the agent or reassign its tasks."
39
+ fi
40
+
41
+ # Send the notification to the orchestrator via the chat API
42
+ BODY=$(jq -n --arg content "$MESSAGE" --arg senderName "system" \
43
+ '{content: $content, senderName: $senderName, senderType: "system"}')
44
+
45
+ api_call POST "/chat/agent-response" "$BODY"
@@ -0,0 +1,29 @@
1
+ # Handle Agent Failure
2
+
3
+ Sends a failure notification to the orchestrator when an agent becomes inactive unexpectedly (runtime exit, API failure, crash). The orchestrator can then decide to restart the agent, reassign the task, or inform the user.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ bash config/skills/orchestrator/handle-agent-failure/execute.sh '{"agentSession":"agent-dev-1","reason":"runtime_exited","hadActiveTasks":true,"taskSummary":"Implementing login form","restartAttempted":true,"restartSucceeded":false}'
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ | Parameter | Required | Description |
14
+ |-----------|----------|-------------|
15
+ | `agentSession` | Yes | The failed agent's PTY session name |
16
+ | `reason` | Yes | Failure reason: `runtime_exited`, `api_failure`, `connectivity_stuck`, `update_interrupted` |
17
+ | `hadActiveTasks` | No | Whether the agent had in-progress tasks (default: false) |
18
+ | `taskSummary` | No | Brief description of what the agent was working on |
19
+ | `restartAttempted` | No | Whether an automatic restart was attempted |
20
+ | `restartSucceeded` | No | Whether the automatic restart succeeded |
21
+
22
+ ## Behavior
23
+
24
+ The script sends a structured failure notification to the orchestrator via the chat API. The orchestrator receives the message and can:
25
+
26
+ 1. **Restart the agent** if the failure was transient
27
+ 2. **Reassign the task** to another available agent
28
+ 3. **Notify the user** about the failure and ask for guidance
29
+ 4. **Record the failure** for future prevention
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "orc-handle-agent-failure",
3
+ "name": "Handle Agent Failure",
4
+ "description": "Notify the orchestrator when an agent fails or becomes inactive unexpectedly, so recovery actions can be taken.",
5
+ "category": "monitoring",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["orchestrator"],
17
+ "triggers": ["agent failed", "agent crashed", "agent inactive", "handle failure", "recovery"],
18
+ "tags": ["monitoring", "failure", "recovery", "agent-lifecycle"],
19
+ "version": "1.0.0"
20
+ }
@@ -16,8 +16,15 @@ None required.
16
16
 
17
17
  JSON confirming the restart was initiated and how many sessions were saved.
18
18
 
19
+ ## How It Works
20
+
21
+ 1. The backend saves all PTY session state to disk
22
+ 2. The backend exits with a special restart exit code (120)
23
+ 3. The CLI parent process detects this code and automatically respawns the backend
24
+ 4. The new backend instance restores saved sessions and resumes normal operation
25
+
19
26
  ## Notes
20
27
 
21
- - The server process exits with code 0 after saving state
22
- - The external process manager (nodemon, systemd, ECS) handles restarting
28
+ - The restart is fully automatic when launched via `crewly start` — no external process manager needed
29
+ - In development mode (`npm run dev`), the tsx file watcher handles restarts
23
30
  - Agents will auto-resume their previous sessions on restart if the "Auto-Resume on Restart" setting is enabled
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env bash
2
+ # Team Leader Skills Common Library - delegates to shared library
3
+ SHARED_LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/_common"
4
+ source "${SHARED_LIB_DIR}/lib.sh"
@@ -0,0 +1,168 @@
1
+ #!/bin/bash
2
+ # Aggregate results from worker sub-tasks into a structured markdown report.
3
+ # Fetches task data from the task-management API and compiles a report.
4
+ set -euo pipefail
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ source "${SCRIPT_DIR}/../_common/lib.sh"
7
+
8
+ INPUT="${1:-}"
9
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"teamId\":\"team-123\",\"objective\":\"Build auth module\",\"reportType\":\"final\",\"taskPaths\":[\"/path/to/task1.md\",\"/path/to/task2.md\"],\"projectPath\":\"/path/to/project\"}'"
10
+
11
+ TEAM_ID=$(echo "$INPUT" | jq -r '.teamId // empty')
12
+ OBJECTIVE=$(echo "$INPUT" | jq -r '.objective // "Objective not specified"')
13
+ REPORT_TYPE=$(echo "$INPUT" | jq -r '.reportType // "final"')
14
+ TASK_PATHS=$(echo "$INPUT" | jq -c '.taskPaths // []')
15
+ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
16
+ INCLUDE_VERIFICATION=$(echo "$INPUT" | jq -r '.includeVerification // "true"')
17
+
18
+ # Collect task data
19
+ TASK_RESULTS="[]"
20
+ SUCCESS_COUNT=0
21
+ FAILURE_COUNT=0
22
+ BLOCKED_COUNT=0
23
+ PENDING_COUNT=0
24
+
25
+ TASK_COUNT=$(echo "$TASK_PATHS" | jq 'length')
26
+
27
+ # If task paths provided, read each task
28
+ if [ "$TASK_COUNT" -gt 0 ]; then
29
+ for i in $(seq 0 $((TASK_COUNT - 1))); do
30
+ TASK_PATH=$(echo "$TASK_PATHS" | jq -r ".[$i]")
31
+ READ_BODY=$(jq -n --arg taskPath "$TASK_PATH" '{taskPath: $taskPath}')
32
+ TASK_DATA=$(api_call POST "/task-management/read-task" "$READ_BODY" 2>/dev/null || echo '{}')
33
+
34
+ TASK_STATUS=$(echo "$TASK_DATA" | jq -r '.data.metadata.status // "unknown"' 2>/dev/null || echo "unknown")
35
+ TASK_TITLE=$(echo "$TASK_DATA" | jq -r '.data.metadata.title // .data.metadata.task // "Untitled"' 2>/dev/null || echo "Untitled")
36
+ TASK_ASSIGNEE=$(echo "$TASK_DATA" | jq -r '.data.metadata.assignedTo // "unassigned"' 2>/dev/null || echo "unassigned")
37
+ TASK_SUMMARY=$(echo "$TASK_DATA" | jq -r '.data.metadata.summary // ""' 2>/dev/null || true)
38
+
39
+ case "$TASK_STATUS" in
40
+ done|completed) SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) ;;
41
+ blocked) BLOCKED_COUNT=$((BLOCKED_COUNT + 1)) ;;
42
+ failed) FAILURE_COUNT=$((FAILURE_COUNT + 1)) ;;
43
+ *) PENDING_COUNT=$((PENDING_COUNT + 1)) ;;
44
+ esac
45
+
46
+ TASK_RESULTS=$(echo "$TASK_RESULTS" | jq \
47
+ --arg title "$TASK_TITLE" \
48
+ --arg status "$TASK_STATUS" \
49
+ --arg assignee "$TASK_ASSIGNEE" \
50
+ --arg summary "$TASK_SUMMARY" \
51
+ --arg path "$TASK_PATH" \
52
+ '. + [{title: $title, status: $status, assignee: $assignee, summary: $summary, path: $path}]')
53
+ done
54
+ fi
55
+
56
+ # If no task paths but teamId provided, get team progress
57
+ if [ "$TASK_COUNT" = "0" ] && [ -n "$PROJECT_PATH" ]; then
58
+ PROGRESS_DATA=$(api_call GET "/task-management/team-progress?projectPath=${PROJECT_PATH}" 2>/dev/null || echo '{}')
59
+ # Extract counts from team progress if available
60
+ SUCCESS_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.done // 0' 2>/dev/null || echo "0")
61
+ FAILURE_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.failed // 0' 2>/dev/null || echo "0")
62
+ BLOCKED_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.blocked // 0' 2>/dev/null || echo "0")
63
+ PENDING_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.open // 0' 2>/dev/null || echo "0")
64
+ fi
65
+
66
+ TOTAL=$((SUCCESS_COUNT + FAILURE_COUNT + BLOCKED_COUNT + PENDING_COUNT))
67
+
68
+ # Generate the report
69
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
70
+ REPORT_TITLE=""
71
+ case "$REPORT_TYPE" in
72
+ milestone) REPORT_TITLE="Milestone Report" ;;
73
+ daily) REPORT_TITLE="Daily Progress Report" ;;
74
+ final) REPORT_TITLE="Final Completion Report" ;;
75
+ *) REPORT_TITLE="Progress Report" ;;
76
+ esac
77
+
78
+ # Build markdown report
79
+ REPORT="[TL_REPORT]
80
+
81
+ # ${REPORT_TITLE}
82
+
83
+ **Objective**: ${OBJECTIVE}
84
+ **Report Type**: ${REPORT_TYPE}
85
+ **Generated**: ${TIMESTAMP}
86
+ **Team**: ${TEAM_ID:-N/A}
87
+
88
+ ## Summary
89
+
90
+ | Metric | Count |
91
+ |--------|-------|
92
+ | Total Tasks | ${TOTAL} |
93
+ | Completed | ${SUCCESS_COUNT} |
94
+ | Failed | ${FAILURE_COUNT} |
95
+ | Blocked | ${BLOCKED_COUNT} |
96
+ | Pending | ${PENDING_COUNT} |
97
+
98
+ **Completion Rate**: $([ "$TOTAL" -gt 0 ] && echo "$((SUCCESS_COUNT * 100 / TOTAL))%" || echo "N/A")
99
+ "
100
+
101
+ # Add individual task details if available
102
+ RESULT_COUNT=$(echo "$TASK_RESULTS" | jq 'length')
103
+ if [ "$RESULT_COUNT" -gt 0 ]; then
104
+ REPORT="${REPORT}
105
+ ## Task Details
106
+ "
107
+ for i in $(seq 0 $((RESULT_COUNT - 1))); do
108
+ T_TITLE=$(echo "$TASK_RESULTS" | jq -r ".[$i].title")
109
+ T_STATUS=$(echo "$TASK_RESULTS" | jq -r ".[$i].status")
110
+ T_ASSIGNEE=$(echo "$TASK_RESULTS" | jq -r ".[$i].assignee")
111
+ T_SUMMARY=$(echo "$TASK_RESULTS" | jq -r ".[$i].summary")
112
+
113
+ # Status emoji
114
+ case "$T_STATUS" in
115
+ done|completed) STATUS_MARK="DONE" ;;
116
+ blocked) STATUS_MARK="BLOCKED" ;;
117
+ failed) STATUS_MARK="FAILED" ;;
118
+ *) STATUS_MARK="PENDING" ;;
119
+ esac
120
+
121
+ REPORT="${REPORT}
122
+ ### [${STATUS_MARK}] ${T_TITLE}
123
+ - **Assignee**: ${T_ASSIGNEE}
124
+ - **Status**: ${T_STATUS}
125
+ $([ -n "$T_SUMMARY" ] && echo "- **Summary**: ${T_SUMMARY}" || true)
126
+ "
127
+ done
128
+ fi
129
+
130
+ # Add action items for non-complete items
131
+ if [ "$FAILURE_COUNT" -gt 0 ] || [ "$BLOCKED_COUNT" -gt 0 ]; then
132
+ REPORT="${REPORT}
133
+ ## Action Items
134
+
135
+ $([ "$FAILURE_COUNT" -gt 0 ] && echo "- ${FAILURE_COUNT} task(s) failed — review via handle-failure skill" || true)
136
+ $([ "$BLOCKED_COUNT" -gt 0 ] && echo "- ${BLOCKED_COUNT} task(s) blocked — escalate to Orchestrator if unresolvable" || true)
137
+ "
138
+ fi
139
+
140
+ # Write report to temp file for reliable output
141
+ REPORT_FILE="/tmp/tl-report-${TEAM_ID:-unknown}-$(date +%s).md"
142
+ echo "$REPORT" > "$REPORT_FILE"
143
+
144
+ # Output JSON result
145
+ jq -n \
146
+ --arg reportType "$REPORT_TYPE" \
147
+ --arg objective "$OBJECTIVE" \
148
+ --arg reportFile "$REPORT_FILE" \
149
+ --arg timestamp "$TIMESTAMP" \
150
+ --arg total "$TOTAL" \
151
+ --arg success "$SUCCESS_COUNT" \
152
+ --arg failed "$FAILURE_COUNT" \
153
+ --arg blocked "$BLOCKED_COUNT" \
154
+ --arg pending "$PENDING_COUNT" \
155
+ '{
156
+ success: true,
157
+ reportType: $reportType,
158
+ objective: $objective,
159
+ reportFile: $reportFile,
160
+ timestamp: $timestamp,
161
+ stats: {
162
+ total: ($total | tonumber),
163
+ completed: ($success | tonumber),
164
+ failed: ($failed | tonumber),
165
+ blocked: ($blocked | tonumber),
166
+ pending: ($pending | tonumber)
167
+ }
168
+ }'