crewly 1.2.3 → 1.2.6

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 (735) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/config/constants.ts +48 -3
  4. package/config/index.ts +4 -0
  5. package/config/roles/auditor/prompt.md +84 -0
  6. package/config/roles/orchestrator/prompt.md +92 -9
  7. package/config/roles/team-leader/prompt.md +169 -0
  8. package/config/roles/team-leader/role.json +13 -0
  9. package/config/roles/team-leader/tl-addon.md +142 -0
  10. package/config/runtime_scripts/runtime-config.json +7 -0
  11. package/config/skills/_common/lib.sh +37 -0
  12. package/config/skills/agent/computer-use/execute.sh +228 -0
  13. package/config/skills/agent/computer-use/instructions.md +103 -0
  14. package/config/skills/agent/computer-use/lib/accessibility.sh +292 -0
  15. package/config/skills/agent/computer-use/lib/applescript.sh +117 -0
  16. package/config/skills/agent/computer-use/lib/discover.sh +122 -0
  17. package/config/skills/agent/computer-use/lib/playwright.sh +153 -0
  18. package/config/skills/agent/computer-use/lib/screenshot.sh +61 -0
  19. package/config/skills/agent/computer-use/skill.json +29 -0
  20. package/config/skills/agent/core/accept-task/execute.sh +7 -1
  21. package/config/skills/agent/core/complete-task/execute.sh +38 -1
  22. package/config/skills/agent/core/report-status/execute.sh +51 -2
  23. package/config/skills/agent/desktop-app-control/execute.sh +561 -0
  24. package/config/skills/agent/desktop-app-control/instructions.md +102 -0
  25. package/config/skills/agent/desktop-app-control/skill.json +33 -0
  26. package/config/skills/orchestrator/broadcast-to-org/execute.sh +88 -0
  27. package/config/skills/orchestrator/broadcast-to-org/instructions.md +51 -0
  28. package/config/skills/orchestrator/broadcast-to-org/skill.json +20 -0
  29. package/config/skills/orchestrator/cancel-all-schedules/execute.sh +24 -0
  30. package/config/skills/orchestrator/cancel-all-schedules/instructions.md +23 -0
  31. package/config/skills/orchestrator/cancel-all-schedules/skill.json +17 -0
  32. package/config/skills/orchestrator/delegate-task/execute.sh +75 -10
  33. package/config/skills/orchestrator/delegate-task/instructions.md +11 -1
  34. package/config/skills/orchestrator/handle-agent-failure/execute.sh +45 -0
  35. package/config/skills/orchestrator/handle-agent-failure/instructions.md +29 -0
  36. package/config/skills/orchestrator/handle-agent-failure/skill.json +20 -0
  37. package/config/skills/orchestrator/list-schedules/execute.sh +19 -0
  38. package/config/skills/orchestrator/list-schedules/instructions.md +24 -0
  39. package/config/skills/orchestrator/list-schedules/skill.json +12 -0
  40. package/config/skills/orchestrator/restart-crewly/instructions.md +9 -2
  41. package/config/skills/team-leader/_common/lib.sh +4 -0
  42. package/config/skills/team-leader/aggregate-results/execute.sh +168 -0
  43. package/config/skills/team-leader/aggregate-results/instructions.md +89 -0
  44. package/config/skills/team-leader/aggregate-results/skill.json +20 -0
  45. package/config/skills/team-leader/decompose-goal/execute.sh +86 -0
  46. package/config/skills/team-leader/decompose-goal/instructions.md +84 -0
  47. package/config/skills/team-leader/decompose-goal/skill.json +20 -0
  48. package/config/skills/team-leader/delegate-task/execute.sh +142 -0
  49. package/config/skills/team-leader/delegate-task/instructions.md +55 -0
  50. package/config/skills/team-leader/delegate-task/skill.json +20 -0
  51. package/config/skills/team-leader/handle-failure/execute.sh +119 -0
  52. package/config/skills/team-leader/handle-failure/instructions.md +93 -0
  53. package/config/skills/team-leader/handle-failure/skill.json +20 -0
  54. package/config/skills/team-leader/schedule-check/execute.sh +65 -0
  55. package/config/skills/team-leader/schedule-check/execute.test.sh +247 -0
  56. package/config/skills/team-leader/schedule-check/instructions.md +49 -0
  57. package/config/skills/team-leader/schedule-check/skill.json +20 -0
  58. package/config/skills/team-leader/start-agent/execute.sh +39 -0
  59. package/config/skills/team-leader/start-agent/instructions.md +48 -0
  60. package/config/skills/team-leader/start-agent/skill.json +20 -0
  61. package/config/skills/team-leader/stop-agent/execute.sh +39 -0
  62. package/config/skills/team-leader/stop-agent/instructions.md +49 -0
  63. package/config/skills/team-leader/stop-agent/skill.json +20 -0
  64. package/config/skills/team-leader/verify-output/execute.sh +296 -0
  65. package/config/skills/team-leader/verify-output/instructions.md +122 -0
  66. package/config/skills/team-leader/verify-output/skill.json +20 -0
  67. package/config/templates/core-team/demo-script.md +41 -0
  68. package/config/templates/core-team/goals.md +20 -0
  69. package/config/templates/core-team/team.json +22 -0
  70. package/config/templates/dev-fullstack/template.json +115 -0
  71. package/config/templates/education-smb/README.md +27 -0
  72. package/config/templates/education-smb/goals.md +16 -0
  73. package/config/templates/education-smb/knowledge/docs/content-standards.md +24 -0
  74. package/config/templates/education-smb/knowledge/docs/education-industry-context.md +13 -0
  75. package/config/templates/education-smb/knowledge/index.json +24 -0
  76. package/config/templates/education-smb/learned-patterns.json +16 -0
  77. package/config/templates/education-smb/quality-gates.yaml +66 -0
  78. package/config/templates/education-smb/roles/analytics-specialist.md +6 -0
  79. package/config/templates/education-smb/roles/content-creator.md +6 -0
  80. package/config/templates/education-smb/roles/curriculum-designer.md +6 -0
  81. package/config/templates/education-smb/roles/engagement-manager.md +6 -0
  82. package/config/templates/education-smb/team.json +40 -0
  83. package/config/templates/education-smb/template.json +26 -0
  84. package/config/templates/education-smb/workflows/course-content-generation.yaml +44 -0
  85. package/config/templates/education-smb/workflows/reporting.yaml +31 -0
  86. package/config/templates/education-smb/workflows/student-communication.yaml +44 -0
  87. package/config/templates/education-smb/workflows.yaml +40 -0
  88. package/config/templates/insurance-smb/README.md +28 -0
  89. package/config/templates/insurance-smb/goals.md +21 -0
  90. package/config/templates/insurance-smb/knowledge/docs/compliance-checklist.md +28 -0
  91. package/config/templates/insurance-smb/knowledge/docs/insurance-industry-context.md +23 -0
  92. package/config/templates/insurance-smb/knowledge/index.json +24 -0
  93. package/config/templates/insurance-smb/learned-patterns.json +16 -0
  94. package/config/templates/insurance-smb/quality-gates.yaml +54 -0
  95. package/config/templates/insurance-smb/roles/claims-processor.md +6 -0
  96. package/config/templates/insurance-smb/roles/client-manager.md +6 -0
  97. package/config/templates/insurance-smb/roles/compliance-officer.md +6 -0
  98. package/config/templates/insurance-smb/roles/marketing-specialist.md +6 -0
  99. package/config/templates/insurance-smb/roles/policy-analyst.md +6 -0
  100. package/config/templates/insurance-smb/team.json +48 -0
  101. package/config/templates/insurance-smb/template.json +26 -0
  102. package/config/templates/insurance-smb/workflows/claims-processing.yaml +48 -0
  103. package/config/templates/insurance-smb/workflows.yaml +43 -0
  104. package/config/templates/research-analysis/template.json +88 -0
  105. package/config/templates/social-media-ops/template.json +85 -0
  106. package/config/templates/video-production/template.json +123 -0
  107. package/dist/backend/backend/src/constants.d.ts +344 -16
  108. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  109. package/dist/backend/backend/src/constants.js +334 -15
  110. package/dist/backend/backend/src/constants.js.map +1 -1
  111. package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts +37 -0
  112. package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts.map +1 -0
  113. package/dist/backend/backend/src/controllers/auditor/auditor.controller.js +64 -0
  114. package/dist/backend/backend/src/controllers/auditor/auditor.controller.js.map +1 -0
  115. package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts +15 -0
  116. package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts.map +1 -0
  117. package/dist/backend/backend/src/controllers/auditor/auditor.routes.js +23 -0
  118. package/dist/backend/backend/src/controllers/auditor/auditor.routes.js.map +1 -0
  119. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  120. package/dist/backend/backend/src/controllers/chat/chat.controller.js +69 -48
  121. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  122. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts +23 -0
  123. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts.map +1 -0
  124. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js +42 -0
  125. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js.map +1 -0
  126. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts +56 -0
  127. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts.map +1 -0
  128. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js +173 -0
  129. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js.map +1 -0
  130. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts +22 -0
  131. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts.map +1 -0
  132. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js +33 -0
  133. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js.map +1 -0
  134. package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts +7 -0
  135. package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts.map +1 -0
  136. package/dist/backend/backend/src/controllers/cloud/admin/index.js +7 -0
  137. package/dist/backend/backend/src/controllers/cloud/admin/index.js.map +1 -0
  138. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts +81 -0
  139. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts.map +1 -0
  140. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js +234 -0
  141. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js.map +1 -0
  142. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +25 -0
  143. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts.map +1 -0
  144. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +38 -0
  145. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -0
  146. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts +69 -0
  147. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts.map +1 -0
  148. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js +165 -0
  149. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js.map +1 -0
  150. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts +23 -0
  151. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts.map +1 -0
  152. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js +32 -0
  153. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js.map +1 -0
  154. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +52 -0
  155. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -0
  156. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +122 -0
  157. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -0
  158. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +21 -0
  159. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -0
  160. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +29 -0
  161. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -0
  162. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts +42 -0
  163. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts.map +1 -0
  164. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js +138 -0
  165. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js.map +1 -0
  166. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts +23 -0
  167. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts.map +1 -0
  168. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js +34 -0
  169. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js.map +1 -0
  170. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts +43 -0
  171. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts.map +1 -0
  172. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js +9 -0
  173. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js.map +1 -0
  174. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts +7 -0
  175. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts.map +1 -0
  176. package/dist/backend/backend/src/controllers/cloud/files/index.js +7 -0
  177. package/dist/backend/backend/src/controllers/cloud/files/index.js.map +1 -0
  178. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts +47 -0
  179. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts.map +1 -0
  180. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js +131 -0
  181. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js.map +1 -0
  182. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts +23 -0
  183. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts.map +1 -0
  184. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js +30 -0
  185. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js.map +1 -0
  186. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts +81 -0
  187. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts.map +1 -0
  188. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js +85 -0
  189. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js.map +1 -0
  190. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts +7 -0
  191. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts.map +1 -0
  192. package/dist/backend/backend/src/controllers/cloud/h5/index.js +7 -0
  193. package/dist/backend/backend/src/controllers/cloud/h5/index.js.map +1 -0
  194. package/dist/backend/backend/src/controllers/cloud/index.d.ts +9 -0
  195. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -0
  196. package/dist/backend/backend/src/controllers/cloud/index.js +9 -0
  197. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -0
  198. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts +7 -0
  199. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts.map +1 -0
  200. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js +7 -0
  201. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js.map +1 -0
  202. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts +45 -0
  203. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts.map +1 -0
  204. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js +155 -0
  205. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js.map +1 -0
  206. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts +25 -0
  207. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts.map +1 -0
  208. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js +32 -0
  209. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js.map +1 -0
  210. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +62 -0
  211. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -0
  212. package/dist/backend/backend/src/controllers/cloud/relay.controller.js +184 -0
  213. package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -0
  214. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +25 -0
  215. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -0
  216. package/dist/backend/backend/src/controllers/cloud/relay.routes.js +34 -0
  217. package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -0
  218. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts +49 -0
  219. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts.map +1 -0
  220. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js +152 -0
  221. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js.map +1 -0
  222. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts +24 -0
  223. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts.map +1 -0
  224. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js +34 -0
  225. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js.map +1 -0
  226. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts +90 -0
  227. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts.map +1 -0
  228. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js +48 -0
  229. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js.map +1 -0
  230. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +10 -0
  231. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -0
  232. package/dist/backend/backend/src/controllers/cloud/tasks/index.js +10 -0
  233. package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -0
  234. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +2 -0
  235. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  236. package/dist/backend/backend/src/controllers/marketplace/index.js +3 -0
  237. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  238. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +12 -12
  239. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  240. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -18
  241. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  242. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  243. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +3 -0
  244. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  245. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts +111 -0
  246. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts.map +1 -0
  247. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js +220 -0
  248. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js.map +1 -0
  249. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +37 -0
  250. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -0
  251. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +54 -0
  252. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -0
  253. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  254. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
  255. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  256. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  257. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +50 -6
  258. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  259. package/dist/backend/backend/src/controllers/payment/index.d.ts +7 -0
  260. package/dist/backend/backend/src/controllers/payment/index.d.ts.map +1 -0
  261. package/dist/backend/backend/src/controllers/payment/index.js +7 -0
  262. package/dist/backend/backend/src/controllers/payment/index.js.map +1 -0
  263. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +68 -0
  264. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -0
  265. package/dist/backend/backend/src/controllers/payment/payment.controller.js +136 -0
  266. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -0
  267. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +31 -0
  268. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -0
  269. package/dist/backend/backend/src/controllers/payment/payment.routes.js +52 -0
  270. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -0
  271. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +109 -0
  272. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -0
  273. package/dist/backend/backend/src/controllers/payment/payment.types.js +54 -0
  274. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -0
  275. package/dist/backend/backend/src/controllers/request-types.d.ts +34 -5
  276. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  277. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +14 -0
  278. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  279. package/dist/backend/backend/src/controllers/session/session.controller.js +48 -0
  280. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  281. package/dist/backend/backend/src/controllers/session/session.routes.d.ts.map +1 -1
  282. package/dist/backend/backend/src/controllers/session/session.routes.js +3 -1
  283. package/dist/backend/backend/src/controllers/session/session.routes.js.map +1 -1
  284. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts +19 -0
  285. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  286. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +55 -3
  287. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  288. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  289. package/dist/backend/backend/src/controllers/system/system.controller.js +13 -15
  290. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  291. package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
  292. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
  293. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  294. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +40 -4
  295. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  296. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  297. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  298. package/dist/backend/backend/src/controllers/team/team.controller.js +272 -18
  299. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  300. package/dist/backend/backend/src/controllers/template/index.d.ts +8 -0
  301. package/dist/backend/backend/src/controllers/template/index.d.ts.map +1 -0
  302. package/dist/backend/backend/src/controllers/template/index.js +8 -0
  303. package/dist/backend/backend/src/controllers/template/index.js.map +1 -0
  304. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +63 -0
  305. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -0
  306. package/dist/backend/backend/src/controllers/template/template.controller.js +112 -0
  307. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -0
  308. package/dist/backend/backend/src/controllers/template/template.routes.d.ts +24 -0
  309. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -0
  310. package/dist/backend/backend/src/controllers/template/template.routes.js +33 -0
  311. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -0
  312. package/dist/backend/backend/src/index.d.ts.map +1 -1
  313. package/dist/backend/backend/src/index.js +106 -13
  314. package/dist/backend/backend/src/index.js.map +1 -1
  315. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +3 -3
  316. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
  317. package/dist/backend/backend/src/models/Team.d.ts +5 -0
  318. package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
  319. package/dist/backend/backend/src/models/Team.js +24 -0
  320. package/dist/backend/backend/src/models/Team.js.map +1 -1
  321. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  322. package/dist/backend/backend/src/routes/api.routes.js +13 -0
  323. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  324. package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts +8 -0
  325. package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts.map +1 -0
  326. package/dist/backend/backend/src/routes/modules/log-rotation.routes.js +62 -0
  327. package/dist/backend/backend/src/routes/modules/log-rotation.routes.js.map +1 -0
  328. package/dist/backend/backend/src/routes/modules/scheduler.routes.d.ts.map +1 -1
  329. package/dist/backend/backend/src/routes/modules/scheduler.routes.js +2 -0
  330. package/dist/backend/backend/src/routes/modules/scheduler.routes.js.map +1 -1
  331. package/dist/backend/backend/src/scripts/run-log-rotation.d.ts +3 -0
  332. package/dist/backend/backend/src/scripts/run-log-rotation.d.ts.map +1 -0
  333. package/dist/backend/backend/src/scripts/run-log-rotation.js +31 -0
  334. package/dist/backend/backend/src/scripts/run-log-rotation.js.map +1 -0
  335. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +11 -6
  336. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/agent/agent-registration.service.js +296 -288
  338. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  339. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts +150 -0
  340. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
  341. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +307 -0
  342. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
  343. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -1
  344. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  345. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +11 -2
  346. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  347. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +105 -0
  348. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +199 -0
  350. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -0
  351. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +68 -0
  352. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +131 -0
  354. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +1 -0
  355. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +29 -0
  356. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -0
  357. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +229 -0
  358. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -0
  359. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +127 -0
  360. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -0
  361. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +242 -0
  362. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -0
  363. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +95 -0
  364. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
  365. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +130 -0
  366. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
  367. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +14 -0
  368. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -0
  369. package/dist/backend/backend/src/services/agent/crewly-agent/index.js +14 -0
  370. package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -0
  371. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +57 -0
  372. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -0
  373. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +93 -0
  374. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -0
  375. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +13 -0
  376. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +1 -0
  377. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +91 -0
  378. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +1 -0
  379. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +29 -0
  380. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -0
  381. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +519 -0
  382. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -0
  383. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +159 -0
  384. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
  385. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +63 -0
  386. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -0
  387. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +1 -0
  388. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  389. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +30 -43
  390. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  391. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  392. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  393. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +496 -0
  394. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  395. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts +70 -0
  396. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts.map +1 -0
  397. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js +131 -0
  398. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js.map +1 -0
  399. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +21 -1
  400. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  401. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +32 -1
  402. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  403. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +133 -4
  404. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  405. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +492 -183
  406. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  407. package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  408. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
  409. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  410. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +49 -2
  411. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  412. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +124 -2
  413. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  414. package/dist/backend/backend/src/services/chat/chat.service.d.ts +17 -3
  415. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  416. package/dist/backend/backend/src/services/chat/chat.service.js +63 -13
  417. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  418. package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts +18 -0
  419. package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts.map +1 -0
  420. package/dist/backend/backend/src/services/cloud/admin-seed.service.js +50 -0
  421. package/dist/backend/backend/src/services/cloud/admin-seed.service.js.map +1 -0
  422. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts +174 -0
  423. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts.map +1 -0
  424. package/dist/backend/backend/src/services/cloud/auth/auth.service.js +402 -0
  425. package/dist/backend/backend/src/services/cloud/auth/auth.service.js.map +1 -0
  426. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts +110 -0
  427. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts.map +1 -0
  428. package/dist/backend/backend/src/services/cloud/auth/auth.types.js +54 -0
  429. package/dist/backend/backend/src/services/cloud/auth/auth.types.js.map +1 -0
  430. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts +36 -0
  431. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts.map +1 -0
  432. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js +31 -0
  433. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js.map +1 -0
  434. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts +47 -0
  435. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts.map +1 -0
  436. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js +116 -0
  437. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js.map +1 -0
  438. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts +61 -0
  439. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts.map +1 -0
  440. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js +203 -0
  441. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js.map +1 -0
  442. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +46 -0
  443. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -0
  444. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +95 -0
  445. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -0
  446. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts +136 -0
  447. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts.map +1 -0
  448. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js +204 -0
  449. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js.map +1 -0
  450. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +179 -0
  451. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
  452. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +237 -0
  453. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -0
  454. package/dist/backend/backend/src/services/cloud/cloud-features.d.ts +19 -0
  455. package/dist/backend/backend/src/services/cloud/cloud-features.d.ts.map +1 -0
  456. package/dist/backend/backend/src/services/cloud/cloud-features.js +23 -0
  457. package/dist/backend/backend/src/services/cloud/cloud-features.js.map +1 -0
  458. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts +97 -0
  459. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts.map +1 -0
  460. package/dist/backend/backend/src/services/cloud/cloud-file.service.js +184 -0
  461. package/dist/backend/backend/src/services/cloud/cloud-file.service.js.map +1 -0
  462. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts +114 -0
  463. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts.map +1 -0
  464. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js +196 -0
  465. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js.map +1 -0
  466. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +118 -0
  467. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -0
  468. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +326 -0
  469. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -0
  470. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts +115 -0
  471. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts.map +1 -0
  472. package/dist/backend/backend/src/services/cloud/cloud-task.service.js +265 -0
  473. package/dist/backend/backend/src/services/cloud/cloud-task.service.js.map +1 -0
  474. package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts +45 -0
  475. package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts.map +1 -0
  476. package/dist/backend/backend/src/services/cloud/mongodb.service.js +76 -0
  477. package/dist/backend/backend/src/services/cloud/mongodb.service.js.map +1 -0
  478. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts +175 -0
  479. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -0
  480. package/dist/backend/backend/src/services/cloud/relay-client.service.js +392 -0
  481. package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -0
  482. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts +87 -0
  483. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts.map +1 -0
  484. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js +140 -0
  485. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js.map +1 -0
  486. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +181 -0
  487. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -0
  488. package/dist/backend/backend/src/services/cloud/relay-server.service.js +494 -0
  489. package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -0
  490. package/dist/backend/backend/src/services/cloud/relay.types.d.ts +170 -0
  491. package/dist/backend/backend/src/services/cloud/relay.types.d.ts.map +1 -0
  492. package/dist/backend/backend/src/services/cloud/relay.types.js +69 -0
  493. package/dist/backend/backend/src/services/cloud/relay.types.js.map +1 -0
  494. package/dist/backend/backend/src/services/continuation/continuation.service.d.ts.map +1 -1
  495. package/dist/backend/backend/src/services/continuation/continuation.service.js +5 -10
  496. package/dist/backend/backend/src/services/continuation/continuation.service.js.map +1 -1
  497. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts +9 -1
  498. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -1
  499. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js +18 -4
  500. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -1
  501. package/dist/backend/backend/src/services/core/env.config.d.ts +147 -0
  502. package/dist/backend/backend/src/services/core/env.config.d.ts.map +1 -0
  503. package/dist/backend/backend/src/services/core/env.config.js +226 -0
  504. package/dist/backend/backend/src/services/core/env.config.js.map +1 -0
  505. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  506. package/dist/backend/backend/src/services/core/storage.service.js +5 -0
  507. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  508. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +30 -2
  509. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  510. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +82 -12
  511. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  512. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts +160 -0
  513. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts.map +1 -0
  514. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js +261 -0
  515. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js.map +1 -0
  516. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts +161 -0
  517. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts.map +1 -0
  518. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js +276 -0
  519. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js.map +1 -0
  520. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  521. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  522. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  523. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  524. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +2 -2
  525. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts +149 -0
  526. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts.map +1 -0
  527. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js +500 -0
  528. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js.map +1 -0
  529. package/dist/backend/backend/src/services/mcp-server.js +1 -1
  530. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  531. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +90 -0
  532. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -0
  533. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +233 -0
  534. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -0
  535. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  536. package/dist/backend/backend/src/services/messaging/message-queue.service.js +1 -0
  537. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  538. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
  539. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  540. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  541. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +23 -5
  542. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  543. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  544. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +3 -3
  545. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  546. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  547. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -5
  548. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  549. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
  550. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +6 -0
  551. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
  552. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts +69 -0
  553. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts.map +1 -0
  554. package/dist/backend/backend/src/services/payment/magic-moment.service.js +158 -0
  555. package/dist/backend/backend/src/services/payment/magic-moment.service.js.map +1 -0
  556. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts +95 -0
  557. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts.map +1 -0
  558. package/dist/backend/backend/src/services/payment/magic-moment.types.js +91 -0
  559. package/dist/backend/backend/src/services/payment/magic-moment.types.js.map +1 -0
  560. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +83 -0
  561. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -0
  562. package/dist/backend/backend/src/services/payment/stripe.service.js +279 -0
  563. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -0
  564. package/dist/backend/backend/src/services/plugin/index.d.ts +9 -0
  565. package/dist/backend/backend/src/services/plugin/index.d.ts.map +1 -0
  566. package/dist/backend/backend/src/services/plugin/index.js +8 -0
  567. package/dist/backend/backend/src/services/plugin/index.js.map +1 -0
  568. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts +102 -0
  569. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts.map +1 -0
  570. package/dist/backend/backend/src/services/plugin/plugin.service.js +179 -0
  571. package/dist/backend/backend/src/services/plugin/plugin.service.js.map +1 -0
  572. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts +88 -0
  573. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts.map +1 -0
  574. package/dist/backend/backend/src/services/plugin/plugin.types.js +17 -0
  575. package/dist/backend/backend/src/services/plugin/plugin.types.js.map +1 -0
  576. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +17 -0
  577. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  578. package/dist/backend/backend/src/services/project/task-tracking.service.js +63 -0
  579. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  580. package/dist/backend/backend/src/services/session/index.d.ts +2 -0
  581. package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
  582. package/dist/backend/backend/src/services/session/index.js +2 -0
  583. package/dist/backend/backend/src/services/session/index.js.map +1 -1
  584. package/dist/backend/backend/src/services/session/log-rotation.service.d.ts +163 -0
  585. package/dist/backend/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
  586. package/dist/backend/backend/src/services/session/log-rotation.service.js +362 -0
  587. package/dist/backend/backend/src/services/session/log-rotation.service.js.map +1 -0
  588. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +14 -0
  589. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  590. package/dist/backend/backend/src/services/session/session-command-helper.js +54 -0
  591. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  592. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  593. package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
  594. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  595. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +11 -0
  596. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  597. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +98 -6
  598. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  599. package/dist/backend/backend/src/services/template/template.service.d.ts +118 -0
  600. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -0
  601. package/dist/backend/backend/src/services/template/template.service.js +299 -0
  602. package/dist/backend/backend/src/services/template/template.service.js.map +1 -0
  603. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +86 -0
  604. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  605. package/dist/backend/backend/src/services/workflow/scheduler.service.js +251 -2
  606. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  607. package/dist/backend/backend/src/types/chat.types.d.ts +39 -1
  608. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  609. package/dist/backend/backend/src/types/chat.types.js +65 -18
  610. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  611. package/dist/backend/backend/src/types/event-bus.types.d.ts +45 -2
  612. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  613. package/dist/backend/backend/src/types/event-bus.types.js +65 -0
  614. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  615. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts +101 -0
  616. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts.map +1 -0
  617. package/dist/backend/backend/src/types/hierarchy-message.types.js +15 -0
  618. package/dist/backend/backend/src/types/hierarchy-message.types.js.map +1 -0
  619. package/dist/backend/backend/src/types/index.d.ts +54 -4
  620. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  621. package/dist/backend/backend/src/types/index.js.map +1 -1
  622. package/dist/backend/backend/src/types/marketplace.types.d.ts +99 -0
  623. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  624. package/dist/backend/backend/src/types/messaging.types.d.ts +4 -0
  625. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  626. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  627. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  628. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  629. package/dist/backend/backend/src/types/settings.types.js +4 -0
  630. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  631. package/dist/backend/backend/src/types/task-tracking.types.d.ts +79 -1
  632. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  633. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  634. package/dist/backend/backend/src/types/team-template.types.d.ts +166 -0
  635. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -0
  636. package/dist/backend/backend/src/types/team-template.types.js +139 -0
  637. package/dist/backend/backend/src/types/team-template.types.js.map +1 -0
  638. package/dist/backend/backend/src/utils/async-handler.d.ts +20 -0
  639. package/dist/backend/backend/src/utils/async-handler.d.ts.map +1 -0
  640. package/dist/backend/backend/src/utils/async-handler.js +29 -0
  641. package/dist/backend/backend/src/utils/async-handler.js.map +1 -0
  642. package/dist/backend/backend/src/utils/defaultPrompts.d.ts +4 -4
  643. package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
  644. package/dist/backend/backend/src/utils/defaultPrompts.js +16 -0
  645. package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
  646. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  647. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  648. package/dist/backend/backend/src/utils/gemini-trusted-folders.js +94 -0
  649. package/dist/backend/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  650. package/dist/backend/backend/src/utils/message-serializer.d.ts +74 -0
  651. package/dist/backend/backend/src/utils/message-serializer.d.ts.map +1 -0
  652. package/dist/backend/backend/src/utils/message-serializer.js +380 -0
  653. package/dist/backend/backend/src/utils/message-serializer.js.map +1 -0
  654. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  655. package/dist/backend/backend/src/utils/terminal-string-ops.js +20 -11
  656. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
  657. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +4 -4
  658. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  659. package/dist/backend/backend/src/websocket/terminal.gateway.js +9 -6
  660. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  661. package/dist/backend/config/constants.d.ts +44 -3
  662. package/dist/backend/config/constants.d.ts.map +1 -1
  663. package/dist/backend/config/constants.js +45 -3
  664. package/dist/backend/config/constants.js.map +1 -1
  665. package/dist/backend/config/index.d.ts +2 -2
  666. package/dist/backend/config/index.d.ts.map +1 -1
  667. package/dist/backend/config/index.js +2 -2
  668. package/dist/backend/config/index.js.map +1 -1
  669. package/dist/cli/backend/src/constants.d.ts +344 -16
  670. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  671. package/dist/cli/backend/src/constants.js +334 -15
  672. package/dist/cli/backend/src/constants.js.map +1 -1
  673. package/dist/cli/backend/src/models/Team.d.ts +5 -0
  674. package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
  675. package/dist/cli/backend/src/models/Team.js +24 -0
  676. package/dist/cli/backend/src/models/Team.js.map +1 -1
  677. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  678. package/dist/cli/backend/src/services/core/storage.service.js +5 -0
  679. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  680. package/dist/cli/backend/src/services/mcp-server.js +1 -1
  681. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  682. package/dist/cli/backend/src/types/chat.types.d.ts +39 -1
  683. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  684. package/dist/cli/backend/src/types/chat.types.js +65 -18
  685. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  686. package/dist/cli/backend/src/types/index.d.ts +54 -4
  687. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  688. package/dist/cli/backend/src/types/index.js.map +1 -1
  689. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  690. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  691. package/dist/cli/backend/src/types/settings.types.js +4 -0
  692. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  693. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  694. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  695. package/dist/cli/backend/src/utils/gemini-trusted-folders.js +94 -0
  696. package/dist/cli/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  697. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  698. package/dist/cli/backend/src/utils/terminal-string-ops.js +20 -11
  699. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
  700. package/dist/cli/cli/src/commands/onboard.d.ts +2 -1
  701. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  702. package/dist/cli/cli/src/commands/onboard.js +21 -8
  703. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  704. package/dist/cli/cli/src/commands/start.d.ts +1 -0
  705. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  706. package/dist/cli/cli/src/commands/start.js +71 -23
  707. package/dist/cli/cli/src/commands/start.js.map +1 -1
  708. package/dist/cli/cli/src/constants.d.ts +1 -1
  709. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  710. package/dist/cli/cli/src/constants.js +1 -1
  711. package/dist/cli/cli/src/constants.js.map +1 -1
  712. package/dist/cli/cli/src/index.js +1 -0
  713. package/dist/cli/cli/src/index.js.map +1 -1
  714. package/dist/cli/cli/src/utils/project-scaffold.d.ts +109 -0
  715. package/dist/cli/cli/src/utils/project-scaffold.d.ts.map +1 -0
  716. package/dist/cli/cli/src/utils/project-scaffold.js +346 -0
  717. package/dist/cli/cli/src/utils/project-scaffold.js.map +1 -0
  718. package/dist/cli/cli/src/utils/templates.d.ts +7 -2
  719. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
  720. package/dist/cli/cli/src/utils/templates.js +76 -7
  721. package/dist/cli/cli/src/utils/templates.js.map +1 -1
  722. package/dist/cli/config/constants.d.ts +44 -3
  723. package/dist/cli/config/constants.d.ts.map +1 -1
  724. package/dist/cli/config/constants.js +45 -3
  725. package/dist/cli/config/constants.js.map +1 -1
  726. package/dist/cli/config/index.d.ts +2 -2
  727. package/dist/cli/config/index.d.ts.map +1 -1
  728. package/dist/cli/config/index.js +2 -2
  729. package/dist/cli/config/index.js.map +1 -1
  730. package/frontend/dist/assets/index-3558d1a2.js +4919 -0
  731. package/frontend/dist/assets/index-4c4dcc31.css +33 -0
  732. package/frontend/dist/index.html +2 -2
  733. package/package.json +14 -3
  734. package/frontend/dist/assets/index-a23214ae.js +0 -4919
  735. package/frontend/dist/assets/index-c407fe13.css +0 -33
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "tl-delegate-task",
3
+ "name": "Delegate Task (TL)",
4
+ "description": "Assign a task to a worker within the Team Leader's subordinate scope. Validates that the target worker's parentMemberId matches the TL's memberId before delegation. Includes auto-monitoring setup.",
5
+ "category": "management",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 30000
14
+ }
15
+ },
16
+ "assignableRoles": ["team-leader"],
17
+ "triggers": ["delegate task", "assign to worker", "send task to worker", "delegate to subordinate"],
18
+ "tags": ["task", "delegation", "management", "hierarchy"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,119 @@
1
+ #!/bin/bash
2
+ # Decide the next action when a worker task fails.
3
+ # Decision logic: retry (retries < 2) → reassign (skill mismatch) → escalate (resource/permission)
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 '{\"workerId\":\"worker-1\",\"workerSession\":\"worker-session\",\"teamId\":\"team-123\",\"failureInfo\":{\"error\":\"tests failed\",\"failedSteps\":[\"tests\"],\"retries\":0,\"failureType\":\"verification\"},\"requiredRole\":\"developer\"}'"
10
+
11
+ WORKER_ID=$(echo "$INPUT" | jq -r '.workerId // empty')
12
+ WORKER_SESSION=$(echo "$INPUT" | jq -r '.workerSession // empty')
13
+ TEAM_ID=$(echo "$INPUT" | jq -r '.teamId // empty')
14
+ REQUIRED_ROLE=$(echo "$INPUT" | jq -r '.requiredRole // empty')
15
+ TASK_DESCRIPTION=$(echo "$INPUT" | jq -r '.taskDescription // empty')
16
+
17
+ # Failure info
18
+ RETRIES=$(echo "$INPUT" | jq -r '.failureInfo.retries // 0')
19
+ FAILURE_TYPE=$(echo "$INPUT" | jq -r '.failureInfo.failureType // "unknown"')
20
+ ERROR_MSG=$(echo "$INPUT" | jq -r '.failureInfo.error // "Unknown error"')
21
+ FAILED_STEPS=$(echo "$INPUT" | jq -c '.failureInfo.failedSteps // []')
22
+
23
+ require_param "workerId" "$WORKER_ID"
24
+
25
+ # Decision logic
26
+ ACTION=""
27
+ NEXT_WORKER_ID=""
28
+ NEXT_WORKER_SESSION=""
29
+ INSTRUCTIONS=""
30
+
31
+ # Rule 1: If retries < 2 and failure is recoverable → retry
32
+ if [ "$RETRIES" -lt 2 ]; then
33
+ case "$FAILURE_TYPE" in
34
+ verification|format|test_failure)
35
+ ACTION="retry"
36
+ INSTRUCTIONS="Retry attempt $((RETRIES + 1))/2. Previous failure: ${ERROR_MSG}. Please fix the issues in the failed steps and try again."
37
+ ;;
38
+ pty_error|session_error)
39
+ ACTION="retry"
40
+ INSTRUCTIONS="Session error detected. Retrying after recovery. Previous error: ${ERROR_MSG}"
41
+ ;;
42
+ skill_mismatch)
43
+ # Skill mismatch goes directly to reassign
44
+ ACTION="reassign"
45
+ INSTRUCTIONS="Task requires skills that ${WORKER_ID} does not have."
46
+ ;;
47
+ resource_error|permission_error|budget_error)
48
+ # Resource/permission issues escalate immediately
49
+ ACTION="escalate"
50
+ INSTRUCTIONS="Resource or permission issue cannot be resolved at TL level: ${ERROR_MSG}"
51
+ ;;
52
+ *)
53
+ # Unknown failure types: retry if under limit
54
+ ACTION="retry"
55
+ INSTRUCTIONS="Retry attempt $((RETRIES + 1))/2. Error: ${ERROR_MSG}. Please investigate and try a different approach."
56
+ ;;
57
+ esac
58
+ else
59
+ # Rule 2: Retries exhausted → try reassign, then escalate
60
+ ACTION="reassign"
61
+ INSTRUCTIONS="Worker ${WORKER_ID} failed after ${RETRIES} retries. Reassigning to another worker."
62
+ fi
63
+
64
+ # If action is reassign, find an alternative worker
65
+ if [ "$ACTION" = "reassign" ] && [ -n "$TEAM_ID" ]; then
66
+ TEAM_DATA=$(api_call GET "/teams/${TEAM_ID}" 2>/dev/null || echo '{}')
67
+ TEAM_SUCCESS=$(echo "$TEAM_DATA" | jq -r '.success // false' 2>/dev/null || echo "false")
68
+
69
+ if [ "$TEAM_SUCCESS" = "true" ]; then
70
+ # Find another worker with matching role, excluding the failed worker
71
+ if [ -n "$REQUIRED_ROLE" ]; then
72
+ ALT_WORKER=$(echo "$TEAM_DATA" | jq -r --arg role "$REQUIRED_ROLE" --arg excludeId "$WORKER_ID" \
73
+ '[.data.members[] | select(.role == $role and .id != $excludeId and .agentStatus == "active")] | first | .id // empty' 2>/dev/null || true)
74
+ ALT_SESSION=$(echo "$TEAM_DATA" | jq -r --arg role "$REQUIRED_ROLE" --arg excludeId "$WORKER_ID" \
75
+ '[.data.members[] | select(.role == $role and .id != $excludeId and .agentStatus == "active")] | first | .sessionName // empty' 2>/dev/null || true)
76
+ else
77
+ # No specific role required, find any active non-leader worker
78
+ ALT_WORKER=$(echo "$TEAM_DATA" | jq -r --arg excludeId "$WORKER_ID" \
79
+ '[.data.members[] | select(.id != $excludeId and .role != "team-leader" and .agentStatus == "active")] | first | .id // empty' 2>/dev/null || true)
80
+ ALT_SESSION=$(echo "$TEAM_DATA" | jq -r --arg excludeId "$WORKER_ID" \
81
+ '[.data.members[] | select(.id != $excludeId and .role != "team-leader" and .agentStatus == "active")] | first | .sessionName // empty' 2>/dev/null || true)
82
+ fi
83
+
84
+ if [ -n "$ALT_WORKER" ]; then
85
+ NEXT_WORKER_ID="$ALT_WORKER"
86
+ NEXT_WORKER_SESSION="$ALT_SESSION"
87
+ INSTRUCTIONS="Reassigning from ${WORKER_ID} to ${ALT_WORKER}. Previous worker failed after ${RETRIES} retries: ${ERROR_MSG}"
88
+ else
89
+ # No alternative worker found → escalate
90
+ ACTION="escalate"
91
+ INSTRUCTIONS="No alternative worker available for reassignment. Original worker ${WORKER_ID} failed after ${RETRIES} retries: ${ERROR_MSG}. Escalating to Orchestrator."
92
+ fi
93
+ else
94
+ # Cannot fetch team data → escalate
95
+ ACTION="escalate"
96
+ INSTRUCTIONS="Cannot validate team members for reassignment. Escalating to Orchestrator. Error: ${ERROR_MSG}"
97
+ fi
98
+ fi
99
+
100
+ # Output decision
101
+ jq -n \
102
+ --arg action "$ACTION" \
103
+ --arg nextWorkerId "$NEXT_WORKER_ID" \
104
+ --arg nextWorkerSession "$NEXT_WORKER_SESSION" \
105
+ --arg instructions "$INSTRUCTIONS" \
106
+ --arg originalWorkerId "$WORKER_ID" \
107
+ --arg failureType "$FAILURE_TYPE" \
108
+ --arg retries "$RETRIES" \
109
+ '{
110
+ action: $action,
111
+ nextWorkerId: (if $nextWorkerId != "" then $nextWorkerId else null end),
112
+ nextWorkerSession: (if $nextWorkerSession != "" then $nextWorkerSession else null end),
113
+ instructions: $instructions,
114
+ context: {
115
+ originalWorkerId: $originalWorkerId,
116
+ failureType: $failureType,
117
+ retriesSoFar: ($retries | tonumber)
118
+ }
119
+ }'
@@ -0,0 +1,93 @@
1
+ # Handle Failure
2
+
3
+ Decides the next action when a worker task fails verification or execution. Implements a three-tier decision logic: retry, reassign, or escalate.
4
+
5
+ ## When to Use
6
+
7
+ - When `verify-output` returns `passed: false`
8
+ - When a worker reports a `blocked` status
9
+ - When a worker session crashes or becomes unresponsive
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ bash {{SKILLS_PATH}}/team-leader/handle-failure/execute.sh '{"workerId":"worker-1","workerSession":"worker-session","teamId":"team-123","failureInfo":{"error":"3 tests failed","failedSteps":["tests"],"retries":0,"failureType":"verification"},"requiredRole":"developer"}'
15
+ ```
16
+
17
+ ## Parameters
18
+
19
+ | Parameter | Required | Description |
20
+ |-----------|----------|-------------|
21
+ | `workerId` | Yes | ID of the failed worker |
22
+ | `workerSession` | No | Session name of the failed worker |
23
+ | `teamId` | No | Team ID (needed for reassignment lookup) |
24
+ | `requiredRole` | No | Role required for the task (helps find alternatives) |
25
+ | `taskDescription` | No | Brief task description for context |
26
+ | `failureInfo` | Yes | Failure details object (see below) |
27
+
28
+ ### failureInfo Object
29
+
30
+ | Field | Description |
31
+ |-------|-------------|
32
+ | `error` | Error message or description |
33
+ | `failedSteps` | Array of failed verification step names |
34
+ | `retries` | Number of retries already attempted |
35
+ | `failureType` | Category of failure (see below) |
36
+
37
+ ### Failure Types
38
+
39
+ | Type | Description | Default Action |
40
+ |------|-------------|----------------|
41
+ | `verification` | Verification checks failed | Retry (< 2 retries) |
42
+ | `format` | Output format issues | Retry |
43
+ | `test_failure` | Tests failed | Retry |
44
+ | `pty_error` | PTY session error | Retry |
45
+ | `session_error` | Session crashed | Retry |
46
+ | `skill_mismatch` | Worker lacks required skills | Reassign |
47
+ | `resource_error` | Resource unavailable | Escalate |
48
+ | `permission_error` | Permission denied | Escalate |
49
+ | `budget_error` | Token/API budget exceeded | Escalate |
50
+
51
+ ## Decision Logic
52
+
53
+ ```
54
+ 1. retries < 2 AND recoverable failure → RETRY
55
+ (verification, format, test_failure, pty_error, session_error, unknown)
56
+
57
+ 2. retries >= 2 OR skill_mismatch → REASSIGN
58
+ - Searches team for another active worker with matching role
59
+ - If no alternative found → ESCALATE
60
+
61
+ 3. resource/permission/budget error → ESCALATE immediately
62
+ (These cannot be resolved at the TL level)
63
+ ```
64
+
65
+ ## Output
66
+
67
+ ```json
68
+ {
69
+ "action": "retry",
70
+ "nextWorkerId": null,
71
+ "nextWorkerSession": null,
72
+ "instructions": "Retry attempt 1/2. Previous failure: 3 tests failed. Please fix the issues and try again.",
73
+ "context": {
74
+ "originalWorkerId": "worker-1",
75
+ "failureType": "verification",
76
+ "retriesSoFar": 0
77
+ }
78
+ }
79
+ ```
80
+
81
+ ## After Getting the Decision
82
+
83
+ | Action | Next Step |
84
+ |--------|-----------|
85
+ | `retry` | Send instructions to the original worker via `delegate-task` with incremented retry count |
86
+ | `reassign` | Use `delegate-task` to send the task to `nextWorkerId`/`nextWorkerSession` |
87
+ | `escalate` | Report to Orchestrator via `report-status` with the failure details |
88
+
89
+ ## Related Skills
90
+
91
+ - `verify-output` — Triggers handle-failure when verification fails
92
+ - `delegate-task` — Used for retry and reassign actions
93
+ - `aggregate-results` — Include failure handling in reports
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "tl-handle-failure",
3
+ "name": "Handle Failure",
4
+ "description": "Decide the next action when a worker task fails verification or execution: retry the same worker, reassign to another worker, or escalate to the Orchestrator.",
5
+ "category": "management",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 30000
14
+ }
15
+ },
16
+ "assignableRoles": ["team-leader"],
17
+ "triggers": ["handle failure", "task failed", "worker error", "decide next action"],
18
+ "tags": ["failure", "recovery", "retry", "escalation", "management"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,65 @@
1
+ #!/bin/bash
2
+ # Schedule a future check-in reminder (Team Leader version).
3
+ # Validates that the target is self or a subordinate worker.
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 '{\"minutes\":5,\"message\":\"Check worker progress\",\"teamId\":\"team-123\",\"tlMemberId\":\"tl-id\",\"sessionName\":\"my-session\"}'"
10
+
11
+ MINUTES=$(echo "$INPUT" | jq -r '.minutes // empty')
12
+ MESSAGE=$(echo "$INPUT" | jq -r '.message // empty')
13
+ TARGET=$(echo "$INPUT" | jq -r '.target // empty')
14
+ RECURRING=$(echo "$INPUT" | jq -r '.recurring // false')
15
+ MAX_OCCURRENCES=$(echo "$INPUT" | jq -r '.maxOccurrences // empty')
16
+ TEAM_ID=$(echo "$INPUT" | jq -r '.teamId // empty')
17
+ TL_MEMBER_ID=$(echo "$INPUT" | jq -r '.tlMemberId // empty')
18
+ # sessionName: explicit caller identity, used as fallback when CREWLY_SESSION_NAME is not set
19
+ SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
20
+ require_param "minutes" "$MINUTES"
21
+ require_param "message" "$MESSAGE"
22
+
23
+ # Resolve caller identity: env var > input param
24
+ CALLER_SESSION="${CREWLY_SESSION_NAME:-${SESSION_NAME}}"
25
+
26
+ # Default target to the caller's own session when not specified
27
+ TARGET_SESSION="${TARGET:-${CALLER_SESSION}}"
28
+ [ -z "$TARGET_SESSION" ] && error_exit "No target session specified and CREWLY_SESSION_NAME not set. Pass sessionName in input."
29
+
30
+ # Validate hierarchy: only when targeting a different session (not self)
31
+ if [ -n "$TARGET_SESSION" ] && [ "$TARGET_SESSION" != "$CALLER_SESSION" ]; then
32
+ if [ -n "$TEAM_ID" ] && [ -n "$TL_MEMBER_ID" ]; then
33
+ TEAM_DATA=$(api_call GET "/teams/${TEAM_ID}" 2>/dev/null || echo '{}')
34
+ TEAM_SUCCESS=$(echo "$TEAM_DATA" | jq -r '.success // false' 2>/dev/null || echo "false")
35
+
36
+ if [ "$TEAM_SUCCESS" = "true" ]; then
37
+ WORKER_PARENT=$(echo "$TEAM_DATA" | jq -r --arg session "$TARGET_SESSION" \
38
+ '.data.members[] | select(.sessionName == $session) | .parentMemberId // empty' 2>/dev/null || true)
39
+
40
+ if [ -z "$WORKER_PARENT" ]; then
41
+ error_exit "Hierarchy violation: target ${TARGET_SESSION} is not a member of team ${TEAM_ID}"
42
+ fi
43
+
44
+ if [ "$WORKER_PARENT" != "$TL_MEMBER_ID" ]; then
45
+ error_exit "Hierarchy violation: target ${TARGET_SESSION} (parentMemberId=${WORKER_PARENT}) is not a subordinate of TL ${TL_MEMBER_ID}"
46
+ fi
47
+ fi
48
+ else
49
+ error_exit "teamId and tlMemberId are required when scheduling checks for other sessions"
50
+ fi
51
+ fi
52
+
53
+ # Build API request body
54
+ if [ "$RECURRING" = "true" ]; then
55
+ BODY=$(jq -n --arg target "$TARGET_SESSION" --arg minutes "$MINUTES" --arg message "$MESSAGE" \
56
+ '{targetSession: $target, minutes: ($minutes | tonumber), intervalMinutes: ($minutes | tonumber), message: $message, isRecurring: true}')
57
+ if [ -n "$MAX_OCCURRENCES" ]; then
58
+ BODY=$(echo "$BODY" | jq --arg max "$MAX_OCCURRENCES" '. + {maxOccurrences: ($max | tonumber)}')
59
+ fi
60
+ else
61
+ BODY=$(jq -n --arg target "$TARGET_SESSION" --arg minutes "$MINUTES" --arg message "$MESSAGE" \
62
+ '{targetSession: $target, minutes: ($minutes | tonumber), message: $message}')
63
+ fi
64
+
65
+ api_call POST "/schedule" "$BODY"
@@ -0,0 +1,247 @@
1
+ #!/bin/bash
2
+ # Tests for TL schedule-check execute.sh
3
+ # Covers: self-scheduling, worker scheduling, hierarchy violation, missing params
4
+ set -euo pipefail
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ EXECUTE="$SCRIPT_DIR/execute.sh"
7
+ PASS=0
8
+ FAIL=0
9
+
10
+ assert_succeeds() {
11
+ local desc="$1"
12
+ shift
13
+ if OUTPUT=$("$@" 2>&1); then
14
+ echo " PASS: $desc"
15
+ PASS=$((PASS + 1))
16
+ else
17
+ echo " FAIL: $desc (expected success, got exit $? — output: $OUTPUT)"
18
+ FAIL=$((FAIL + 1))
19
+ fi
20
+ }
21
+
22
+ assert_fails() {
23
+ local desc="$1"
24
+ shift
25
+ if OUTPUT=$("$@" 2>&1); then
26
+ echo " FAIL: $desc (expected failure, got success — output: $OUTPUT)"
27
+ FAIL=$((FAIL + 1))
28
+ else
29
+ echo " PASS: $desc"
30
+ PASS=$((PASS + 1))
31
+ fi
32
+ }
33
+
34
+ assert_fails_with() {
35
+ local desc="$1" expected_msg="$2"
36
+ shift 2
37
+ local OUTPUT=""
38
+ if OUTPUT=$("$@" 2>&1); then
39
+ echo " FAIL: $desc (expected failure, got success)"
40
+ FAIL=$((FAIL + 1))
41
+ elif echo "$OUTPUT" | grep -q "$expected_msg"; then
42
+ echo " PASS: $desc"
43
+ PASS=$((PASS + 1))
44
+ else
45
+ echo " FAIL: $desc (expected '$expected_msg' in output, got: $OUTPUT)"
46
+ FAIL=$((FAIL + 1))
47
+ fi
48
+ }
49
+
50
+ # Create a mock wrapper that overrides api_call to avoid real HTTP calls.
51
+ # The mock returns team data with known members for hierarchy testing.
52
+ MOCK_DIR=$(mktemp -d)
53
+ MOCK_SCRIPT="$MOCK_DIR/run_schedule_check.sh"
54
+ cat > "$MOCK_SCRIPT" << 'MOCK_EOF'
55
+ #!/bin/bash
56
+ # Mock wrapper for schedule-check execute.sh
57
+ # Overrides api_call to return controlled responses
58
+ set -euo pipefail
59
+ SCRIPT_DIR_INNER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
60
+
61
+ # Load the real shared lib first to get require_param, error_exit, etc.
62
+ REAL_SKILL_DIR="$1"
63
+ shift
64
+ source "${REAL_SKILL_DIR}/../_common/lib.sh"
65
+
66
+ # Override api_call with mock
67
+ api_call() {
68
+ local method="$1" endpoint="$2" body="${3:-}"
69
+
70
+ if [ "$method" = "GET" ] && echo "$endpoint" | grep -q "^/teams/"; then
71
+ # Return mock team data with known hierarchy:
72
+ # TL: ella-tl (member-id: tl-001, sessionName: crewly-marketing-ella-abc123)
73
+ # Worker: mila-worker (member-id: worker-001, sessionName: crewly-marketing-mila-def456, parent: tl-001)
74
+ cat << 'TEAMJSON'
75
+ {"success":true,"data":{"id":"team-123","name":"Marketing","members":[{"id":"tl-001","sessionName":"crewly-marketing-ella-abc123","role":"team-leader","parentMemberId":""},{"id":"worker-001","sessionName":"crewly-marketing-mila-def456","role":"developer","parentMemberId":"tl-001"},{"id":"worker-002","sessionName":"crewly-marketing-luna-ghi789","role":"developer","parentMemberId":"other-tl"}]}}
76
+ TEAMJSON
77
+ return 0
78
+ fi
79
+
80
+ if [ "$method" = "POST" ] && [ "$endpoint" = "/schedule" ]; then
81
+ echo '{"success":true,"data":{"checkId":"mock-check-id-001"},"message":"Check-in scheduled successfully"}'
82
+ return 0
83
+ fi
84
+
85
+ echo '{"error":true,"status":404,"details":"Unknown endpoint"}' >&2
86
+ return 1
87
+ }
88
+
89
+ # Now source and execute the main script logic inline
90
+ # (We can't just call execute.sh because it sources lib.sh again which would
91
+ # override our mock. Instead, we replicate the sourcing chain.)
92
+ INPUT="${1:-}"
93
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{...}'"
94
+
95
+ MINUTES=$(echo "$INPUT" | jq -r '.minutes // empty')
96
+ MESSAGE=$(echo "$INPUT" | jq -r '.message // empty')
97
+ TARGET=$(echo "$INPUT" | jq -r '.target // empty')
98
+ RECURRING=$(echo "$INPUT" | jq -r '.recurring // false')
99
+ MAX_OCCURRENCES=$(echo "$INPUT" | jq -r '.maxOccurrences // empty')
100
+ TEAM_ID=$(echo "$INPUT" | jq -r '.teamId // empty')
101
+ TL_MEMBER_ID=$(echo "$INPUT" | jq -r '.tlMemberId // empty')
102
+ SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
103
+ require_param "minutes" "$MINUTES"
104
+ require_param "message" "$MESSAGE"
105
+
106
+ CALLER_SESSION="${CREWLY_SESSION_NAME:-${SESSION_NAME}}"
107
+ TARGET_SESSION="${TARGET:-${CALLER_SESSION}}"
108
+ [ -z "$TARGET_SESSION" ] && error_exit "No target session specified and CREWLY_SESSION_NAME not set. Pass sessionName in input."
109
+
110
+ if [ -n "$TARGET_SESSION" ] && [ "$TARGET_SESSION" != "$CALLER_SESSION" ]; then
111
+ if [ -n "$TEAM_ID" ] && [ -n "$TL_MEMBER_ID" ]; then
112
+ TEAM_DATA=$(api_call GET "/teams/${TEAM_ID}" 2>/dev/null || echo '{}')
113
+ TEAM_SUCCESS=$(echo "$TEAM_DATA" | jq -r '.success // false' 2>/dev/null || echo "false")
114
+
115
+ if [ "$TEAM_SUCCESS" = "true" ]; then
116
+ WORKER_PARENT=$(echo "$TEAM_DATA" | jq -r --arg session "$TARGET_SESSION" \
117
+ '.data.members[] | select(.sessionName == $session) | .parentMemberId // empty' 2>/dev/null || true)
118
+
119
+ if [ -z "$WORKER_PARENT" ]; then
120
+ error_exit "Hierarchy violation: target ${TARGET_SESSION} is not a member of team ${TEAM_ID}"
121
+ fi
122
+
123
+ if [ "$WORKER_PARENT" != "$TL_MEMBER_ID" ]; then
124
+ error_exit "Hierarchy violation: target ${TARGET_SESSION} (parentMemberId=${WORKER_PARENT}) is not a subordinate of TL ${TL_MEMBER_ID}"
125
+ fi
126
+ fi
127
+ else
128
+ error_exit "teamId and tlMemberId are required when scheduling checks for other sessions"
129
+ fi
130
+ fi
131
+
132
+ if [ "$RECURRING" = "true" ]; then
133
+ BODY=$(jq -n --arg target "$TARGET_SESSION" --arg minutes "$MINUTES" --arg message "$MESSAGE" \
134
+ '{targetSession: $target, minutes: ($minutes | tonumber), intervalMinutes: ($minutes | tonumber), message: $message, isRecurring: true}')
135
+ if [ -n "$MAX_OCCURRENCES" ]; then
136
+ BODY=$(echo "$BODY" | jq --arg max "$MAX_OCCURRENCES" '. + {maxOccurrences: ($max | tonumber)}')
137
+ fi
138
+ else
139
+ BODY=$(jq -n --arg target "$TARGET_SESSION" --arg minutes "$MINUTES" --arg message "$MESSAGE" \
140
+ '{targetSession: $target, minutes: ($minutes | tonumber), message: $message}')
141
+ fi
142
+
143
+ api_call POST "/schedule" "$BODY"
144
+ MOCK_EOF
145
+ chmod +x "$MOCK_SCRIPT"
146
+
147
+ SKILL_DIR="$SCRIPT_DIR"
148
+
149
+ echo "=== TL schedule-check tests ==="
150
+
151
+ # -----------------------------------------------------------------------
152
+ # Scenario 1: TL schedules self-check using sessionName param
153
+ # (CREWLY_SESSION_NAME not set — Gemini CLI scenario)
154
+ # -----------------------------------------------------------------------
155
+ echo "Scenario 1: TL self-check via sessionName param (no env var)"
156
+ assert_succeeds "self-check with sessionName, no CREWLY_SESSION_NAME" \
157
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
158
+ '{"minutes":15,"message":"Follow up on progress","sessionName":"crewly-marketing-ella-abc123"}'
159
+
160
+ # -----------------------------------------------------------------------
161
+ # Scenario 2: TL schedules self-check using CREWLY_SESSION_NAME env var
162
+ # -----------------------------------------------------------------------
163
+ echo "Scenario 2: TL self-check via CREWLY_SESSION_NAME env var"
164
+ assert_succeeds "self-check with CREWLY_SESSION_NAME set" \
165
+ env CREWLY_SESSION_NAME="crewly-marketing-ella-abc123" bash "$MOCK_SCRIPT" "$SKILL_DIR" \
166
+ '{"minutes":15,"message":"Follow up on progress"}'
167
+
168
+ # -----------------------------------------------------------------------
169
+ # Scenario 3: TL schedules self-check with explicit target = self session
170
+ # -----------------------------------------------------------------------
171
+ echo "Scenario 3: TL self-check with explicit target = own session"
172
+ assert_succeeds "self-check with explicit target matching sessionName" \
173
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
174
+ '{"minutes":15,"message":"Follow up","sessionName":"crewly-marketing-ella-abc123","target":"crewly-marketing-ella-abc123"}'
175
+
176
+ # -----------------------------------------------------------------------
177
+ # Scenario 4: TL schedules worker check — valid subordinate
178
+ # -----------------------------------------------------------------------
179
+ echo "Scenario 4: TL schedules check on valid subordinate"
180
+ assert_succeeds "worker check on subordinate mila" \
181
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
182
+ '{"minutes":10,"message":"Check mila progress","sessionName":"crewly-marketing-ella-abc123","target":"crewly-marketing-mila-def456","teamId":"team-123","tlMemberId":"tl-001"}'
183
+
184
+ # -----------------------------------------------------------------------
185
+ # Scenario 5: TL targets non-subordinate — hierarchy violation
186
+ # -----------------------------------------------------------------------
187
+ echo "Scenario 5: TL targets non-subordinate worker"
188
+ assert_fails_with "hierarchy violation on non-subordinate luna" "Hierarchy violation" \
189
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
190
+ '{"minutes":10,"message":"Check luna","sessionName":"crewly-marketing-ella-abc123","target":"crewly-marketing-luna-ghi789","teamId":"team-123","tlMemberId":"tl-001"}'
191
+
192
+ # -----------------------------------------------------------------------
193
+ # Scenario 6: TL targets unknown session — not a member
194
+ # -----------------------------------------------------------------------
195
+ echo "Scenario 6: TL targets unknown session"
196
+ assert_fails_with "hierarchy violation on unknown target" "Hierarchy violation" \
197
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
198
+ '{"minutes":10,"message":"Check unknown","sessionName":"crewly-marketing-ella-abc123","target":"crewly-unknown-agent","teamId":"team-123","tlMemberId":"tl-001"}'
199
+
200
+ # -----------------------------------------------------------------------
201
+ # Scenario 7: TL targets other session without teamId — error
202
+ # -----------------------------------------------------------------------
203
+ echo "Scenario 7: Missing teamId/tlMemberId for other-session target"
204
+ assert_fails_with "requires teamId and tlMemberId" "teamId and tlMemberId are required" \
205
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
206
+ '{"minutes":10,"message":"Check worker","sessionName":"crewly-marketing-ella-abc123","target":"crewly-marketing-mila-def456"}'
207
+
208
+ # -----------------------------------------------------------------------
209
+ # Scenario 8: No session identity at all — should fail
210
+ # -----------------------------------------------------------------------
211
+ echo "Scenario 8: No session identity (no env, no sessionName, no target)"
212
+ assert_fails_with "fails without any session identity" "No target session specified" \
213
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
214
+ '{"minutes":10,"message":"Check something"}'
215
+
216
+ # -----------------------------------------------------------------------
217
+ # Scenario 9: Missing required params
218
+ # -----------------------------------------------------------------------
219
+ echo "Scenario 9: Missing required params"
220
+ assert_fails "fails on missing minutes" \
221
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
222
+ '{"message":"Check","sessionName":"ella"}'
223
+
224
+ assert_fails "fails on missing message" \
225
+ env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
226
+ '{"minutes":10,"sessionName":"ella"}'
227
+
228
+ # -----------------------------------------------------------------------
229
+ # Scenario 10: Recurring check self-scheduling
230
+ # -----------------------------------------------------------------------
231
+ echo "Scenario 10: Recurring self-check"
232
+ OUTPUT=$(env -u CREWLY_SESSION_NAME bash "$MOCK_SCRIPT" "$SKILL_DIR" \
233
+ '{"minutes":15,"message":"Recurring follow up","sessionName":"crewly-marketing-ella-abc123","recurring":true}')
234
+ if echo "$OUTPUT" | jq -e '.success' > /dev/null 2>&1; then
235
+ echo " PASS: recurring self-check succeeds"
236
+ PASS=$((PASS + 1))
237
+ else
238
+ echo " FAIL: recurring self-check failed (output: $OUTPUT)"
239
+ FAIL=$((FAIL + 1))
240
+ fi
241
+
242
+ # Cleanup
243
+ rm -rf "$MOCK_DIR"
244
+
245
+ echo ""
246
+ echo "Results: $PASS passed, $FAIL failed"
247
+ [ "$FAIL" -eq 0 ] && exit 0 || exit 1
@@ -0,0 +1,49 @@
1
+ # Schedule Check (Team Leader)
2
+
3
+ Schedule a future check-in reminder. Unlike the orchestrator version, this skill enforces hierarchy — you can only schedule checks targeting yourself or your subordinate workers.
4
+
5
+ ## Usage
6
+
7
+ ### Self-reminder (default target)
8
+ ```bash
9
+ bash config/skills/team-leader/schedule-check/execute.sh '{"minutes":5,"message":"Check worker progress on feature X","sessionName":"my-session-name"}'
10
+ ```
11
+
12
+ ### Target a specific subordinate
13
+ ```bash
14
+ bash config/skills/team-leader/schedule-check/execute.sh '{"minutes":10,"message":"Status update needed","target":"worker-session-name","teamId":"team-123","tlMemberId":"tl-member-id"}'
15
+ ```
16
+
17
+ ### Recurring check
18
+ ```bash
19
+ bash config/skills/team-leader/schedule-check/execute.sh '{"minutes":10,"message":"Periodic progress check","recurring":true,"maxOccurrences":6}'
20
+ ```
21
+
22
+ ## Parameters
23
+
24
+ | Parameter | Required | Description |
25
+ |-----------|----------|-------------|
26
+ | `minutes` | Yes | Delay in minutes before the check fires |
27
+ | `message` | Yes | Reminder message text |
28
+ | `target` | No | Target session name (defaults to self). Must be self or a subordinate |
29
+ | `sessionName` | No | Caller's own session name. Used as fallback when `CREWLY_SESSION_NAME` env var is not set (e.g. Gemini CLI) |
30
+ | `recurring` | No | When `true`, the check repeats every `minutes` interval (default: `false`) |
31
+ | `maxOccurrences` | No | Max times a recurring check fires (default: unlimited). Only for `recurring: true` |
32
+ | `teamId` | Conditional | Required when targeting a subordinate (for hierarchy validation) |
33
+ | `tlMemberId` | Conditional | Required when targeting a subordinate (your member ID for hierarchy validation) |
34
+
35
+ ## Hierarchy Rules
36
+
37
+ - **Self target**: Always allowed — no `teamId`/`tlMemberId` needed. Pass `sessionName` if `CREWLY_SESSION_NAME` env var is not available
38
+ - **Subordinate target**: Requires `teamId` and `tlMemberId`. The script verifies the target's `parentMemberId` matches your `tlMemberId`
39
+ - **Non-subordinate target**: Rejected with hierarchy violation error
40
+
41
+ ## Output
42
+
43
+ JSON with the scheduled check ID and fire time.
44
+
45
+ ## Best Practices
46
+
47
+ - **Use `maxOccurrences`** for time-bounded tasks to prevent stale schedules
48
+ - **Include worker name and task context** in the message for quick triage when the check fires
49
+ - **Prefer self-targeted checks** — schedule reminders to yourself to review worker status rather than interrupting workers directly
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "tl-schedule-check",
3
+ "name": "Schedule Check (TL)",
4
+ "description": "Schedule a future check-in or reminder. TL can only target self or subordinate workers (hierarchy-validated).",
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": ["team-leader"],
17
+ "triggers": ["schedule check", "remind me", "check in later", "follow up"],
18
+ "tags": ["scheduling", "monitoring", "reminder", "hierarchy"],
19
+ "version": "1.0.0"
20
+ }