crewly 1.2.4 → 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 (286) hide show
  1. package/LICENSE +1 -1
  2. package/config/constants.ts +4 -2
  3. package/config/roles/auditor/prompt.md +84 -0
  4. package/config/roles/orchestrator/prompt.md +62 -7
  5. package/config/runtime_scripts/runtime-config.json +5 -5
  6. package/config/skills/orchestrator/cancel-all-schedules/execute.sh +24 -0
  7. package/config/skills/orchestrator/cancel-all-schedules/instructions.md +23 -0
  8. package/config/skills/orchestrator/cancel-all-schedules/skill.json +17 -0
  9. package/config/skills/orchestrator/list-schedules/execute.sh +19 -0
  10. package/config/skills/orchestrator/list-schedules/instructions.md +24 -0
  11. package/config/skills/orchestrator/list-schedules/skill.json +12 -0
  12. package/dist/backend/backend/src/constants.d.ts +53 -13
  13. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  14. package/dist/backend/backend/src/constants.js +54 -16
  15. package/dist/backend/backend/src/constants.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts +37 -0
  17. package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts.map +1 -0
  18. package/dist/backend/backend/src/controllers/auditor/auditor.controller.js +64 -0
  19. package/dist/backend/backend/src/controllers/auditor/auditor.controller.js.map +1 -0
  20. package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts +15 -0
  21. package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts.map +1 -0
  22. package/dist/backend/backend/src/controllers/auditor/auditor.routes.js +23 -0
  23. package/dist/backend/backend/src/controllers/auditor/auditor.routes.js.map +1 -0
  24. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts +23 -0
  25. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts.map +1 -0
  26. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js +42 -0
  27. package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js.map +1 -0
  28. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts +56 -0
  29. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts.map +1 -0
  30. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js +173 -0
  31. package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js.map +1 -0
  32. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts +22 -0
  33. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts.map +1 -0
  34. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js +33 -0
  35. package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js.map +1 -0
  36. package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts +7 -0
  37. package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts.map +1 -0
  38. package/dist/backend/backend/src/controllers/cloud/admin/index.js +7 -0
  39. package/dist/backend/backend/src/controllers/cloud/admin/index.js.map +1 -0
  40. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +1 -1
  41. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +5 -5
  42. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -1
  43. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
  44. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +0 -3
  45. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
  46. package/dist/backend/backend/src/controllers/cloud/index.d.ts +0 -5
  47. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -1
  48. package/dist/backend/backend/src/controllers/cloud/index.js +0 -5
  49. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -1
  50. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +6 -45
  51. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -1
  52. package/dist/backend/backend/src/controllers/cloud/relay.controller.js +6 -165
  53. package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -1
  54. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +5 -9
  55. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -1
  56. package/dist/backend/backend/src/controllers/cloud/relay.routes.js +11 -21
  57. package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -1
  58. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +5 -2
  59. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -1
  60. package/dist/backend/backend/src/controllers/cloud/tasks/index.js +5 -2
  61. package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -1
  62. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +6 -2
  63. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +12 -8
  65. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  67. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +32 -4
  68. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  69. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +16 -5
  70. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -1
  71. package/dist/backend/backend/src/controllers/payment/payment.controller.js +6 -6
  72. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -1
  73. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +6 -2
  74. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -1
  75. package/dist/backend/backend/src/controllers/payment/payment.routes.js +22 -8
  76. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -1
  77. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +1 -1
  78. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -1
  79. package/dist/backend/backend/src/controllers/payment/payment.types.js +1 -1
  80. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -1
  81. package/dist/backend/backend/src/controllers/request-types.d.ts +2 -2
  82. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  83. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts +19 -0
  84. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  85. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +51 -0
  86. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  87. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  88. package/dist/backend/backend/src/controllers/team/team.controller.js +13 -5
  89. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  90. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -1
  91. package/dist/backend/backend/src/controllers/template/template.controller.js +2 -2
  92. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -1
  93. package/dist/backend/backend/src/index.d.ts.map +1 -1
  94. package/dist/backend/backend/src/index.js +31 -30
  95. package/dist/backend/backend/src/index.js.map +1 -1
  96. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  97. package/dist/backend/backend/src/routes/api.routes.js +4 -12
  98. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  99. package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts +8 -0
  100. package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts.map +1 -0
  101. package/dist/backend/backend/src/routes/modules/log-rotation.routes.js +62 -0
  102. package/dist/backend/backend/src/routes/modules/log-rotation.routes.js.map +1 -0
  103. package/dist/backend/backend/src/routes/modules/scheduler.routes.d.ts.map +1 -1
  104. package/dist/backend/backend/src/routes/modules/scheduler.routes.js +2 -0
  105. package/dist/backend/backend/src/routes/modules/scheduler.routes.js.map +1 -1
  106. package/dist/backend/backend/src/scripts/run-log-rotation.d.ts +3 -0
  107. package/dist/backend/backend/src/scripts/run-log-rotation.d.ts.map +1 -0
  108. package/dist/backend/backend/src/scripts/run-log-rotation.js +31 -0
  109. package/dist/backend/backend/src/scripts/run-log-rotation.js.map +1 -0
  110. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +10 -0
  111. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/agent/agent-registration.service.js +85 -1
  113. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  114. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts +150 -0
  115. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
  116. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +307 -0
  117. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
  118. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +105 -0
  119. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -0
  120. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +199 -0
  121. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -0
  122. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +68 -0
  123. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +1 -0
  124. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +131 -0
  125. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +1 -0
  126. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +29 -0
  127. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -0
  128. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +229 -0
  129. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -0
  130. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +127 -0
  131. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -0
  132. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +242 -0
  133. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -0
  134. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +95 -0
  135. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
  136. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +130 -0
  137. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
  138. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +14 -0
  139. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -0
  140. package/dist/backend/backend/src/services/agent/crewly-agent/index.js +14 -0
  141. package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -0
  142. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +57 -0
  143. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -0
  144. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +93 -0
  145. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -0
  146. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +13 -0
  147. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +1 -0
  148. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +91 -0
  149. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +1 -0
  150. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +29 -0
  151. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -0
  152. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +519 -0
  153. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -0
  154. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +159 -0
  155. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
  156. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +63 -0
  157. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -0
  158. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +56 -1
  159. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  160. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +273 -215
  161. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  162. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +8 -8
  163. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  164. package/dist/backend/backend/src/services/chat/chat.service.d.ts +7 -1
  165. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/chat/chat.service.js +14 -5
  167. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts +18 -0
  169. package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts.map +1 -0
  170. package/dist/backend/backend/src/services/cloud/admin-seed.service.js +50 -0
  171. package/dist/backend/backend/src/services/cloud/admin-seed.service.js.map +1 -0
  172. package/dist/backend/backend/src/services/cloud/cloud-features.d.ts +19 -0
  173. package/dist/backend/backend/src/services/cloud/cloud-features.d.ts.map +1 -0
  174. package/dist/backend/backend/src/services/cloud/cloud-features.js +23 -0
  175. package/dist/backend/backend/src/services/cloud/cloud-features.js.map +1 -0
  176. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +3 -3
  177. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +10 -6
  179. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -1
  180. package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts +45 -0
  181. package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts.map +1 -0
  182. package/dist/backend/backend/src/services/cloud/mongodb.service.js +76 -0
  183. package/dist/backend/backend/src/services/cloud/mongodb.service.js.map +1 -0
  184. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +0 -2
  185. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/cloud/relay-server.service.js +7 -36
  187. package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/continuation/continuation.service.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/continuation/continuation.service.js +5 -10
  190. package/dist/backend/backend/src/services/continuation/continuation.service.js.map +1 -1
  191. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +10 -2
  192. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  193. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +47 -12
  194. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  195. package/dist/backend/backend/src/services/mcp-server.js +1 -1
  196. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  197. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  198. package/dist/backend/backend/src/services/messaging/message-queue.service.js +1 -0
  199. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  200. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  201. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +22 -4
  202. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  203. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
  204. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +6 -0
  205. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
  206. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +4 -43
  207. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -1
  208. package/dist/backend/backend/src/services/payment/stripe.service.js +56 -180
  209. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -1
  210. package/dist/backend/backend/src/services/session/index.d.ts +2 -0
  211. package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
  212. package/dist/backend/backend/src/services/session/index.js +2 -0
  213. package/dist/backend/backend/src/services/session/index.js.map +1 -1
  214. package/dist/backend/backend/src/services/session/log-rotation.service.d.ts +163 -0
  215. package/dist/backend/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
  216. package/dist/backend/backend/src/services/session/log-rotation.service.js +362 -0
  217. package/dist/backend/backend/src/services/session/log-rotation.service.js.map +1 -0
  218. package/dist/backend/backend/src/services/settings/settings.service.js +1 -1
  219. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  220. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +11 -0
  221. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  222. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +83 -1
  223. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  224. package/dist/backend/backend/src/services/template/template.service.d.ts +9 -44
  225. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  226. package/dist/backend/backend/src/services/template/template.service.js +7 -80
  227. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  228. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +35 -0
  229. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  230. package/dist/backend/backend/src/services/workflow/scheduler.service.js +133 -0
  231. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  232. package/dist/backend/backend/src/types/chat.types.d.ts +1 -1
  233. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  234. package/dist/backend/backend/src/types/chat.types.js +21 -17
  235. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  236. package/dist/backend/backend/src/types/event-bus.types.d.ts +31 -0
  237. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  238. package/dist/backend/backend/src/types/event-bus.types.js +50 -0
  239. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  240. package/dist/backend/backend/src/types/index.d.ts +1 -1
  241. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  242. package/dist/backend/backend/src/types/messaging.types.d.ts +4 -0
  243. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  244. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  245. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  246. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  247. package/dist/backend/backend/src/types/settings.types.js +4 -4
  248. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  249. package/dist/backend/backend/src/types/team-template.types.d.ts +2 -2
  250. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  251. package/dist/backend/backend/src/types/team-template.types.js +1 -1
  252. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  253. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +4 -4
  254. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  255. package/dist/backend/backend/src/websocket/terminal.gateway.js +9 -6
  256. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  257. package/dist/backend/config/constants.d.ts +4 -2
  258. package/dist/backend/config/constants.d.ts.map +1 -1
  259. package/dist/backend/config/constants.js +4 -2
  260. package/dist/backend/config/constants.js.map +1 -1
  261. package/dist/cli/backend/src/constants.d.ts +53 -13
  262. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  263. package/dist/cli/backend/src/constants.js +54 -16
  264. package/dist/cli/backend/src/constants.js.map +1 -1
  265. package/dist/cli/backend/src/services/mcp-server.js +1 -1
  266. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  267. package/dist/cli/backend/src/types/chat.types.d.ts +1 -1
  268. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  269. package/dist/cli/backend/src/types/chat.types.js +21 -17
  270. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  271. package/dist/cli/backend/src/types/index.d.ts +1 -1
  272. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  273. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  274. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  275. package/dist/cli/backend/src/types/settings.types.js +4 -4
  276. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  277. package/dist/cli/config/constants.d.ts +4 -2
  278. package/dist/cli/config/constants.d.ts.map +1 -1
  279. package/dist/cli/config/constants.js +4 -2
  280. package/dist/cli/config/constants.js.map +1 -1
  281. package/frontend/dist/assets/index-3558d1a2.js +4919 -0
  282. package/frontend/dist/assets/index-4c4dcc31.css +33 -0
  283. package/frontend/dist/index.html +2 -2
  284. package/package.json +15 -9
  285. package/frontend/dist/assets/index-510ab719.css +0 -33
  286. package/frontend/dist/assets/index-935cd846.js +0 -4961
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Crewly Agent Runner Service
3
+ *
4
+ * Core reasoning loop for the Crewly Agent runtime. Wraps Vercel AI SDK's
5
+ * generateText with conversation history management, context compaction,
6
+ * and structured result tracking.
7
+ *
8
+ * @module services/agent/crewly-agent/agent-runner.service
9
+ */
10
+ import { generateText, stepCountIs } from 'ai';
11
+ import { ModelManager } from './model-manager.js';
12
+ import { CrewlyApiClient } from './api-client.js';
13
+ import { createTools } from './tool-registry.js';
14
+ export class AgentRunnerService {
15
+ config;
16
+ modelManager;
17
+ apiClient;
18
+ model = null;
19
+ state;
20
+ processing = false;
21
+ messageQueue = [];
22
+ /** @internal Override for testing — replaces the AI SDK generateText call */
23
+ _generateTextFn = null;
24
+ /**
25
+ * Create a new AgentRunnerService.
26
+ *
27
+ * @param config - Agent configuration
28
+ * @param modelManager - Optional model manager instance (for testing)
29
+ * @param apiClient - Optional API client instance (for testing)
30
+ */
31
+ constructor(config, modelManager, apiClient) {
32
+ this.config = config;
33
+ this.modelManager = modelManager || new ModelManager();
34
+ this.apiClient = apiClient || new CrewlyApiClient(config.apiBaseUrl, config.sessionName);
35
+ this.state = {
36
+ messages: [],
37
+ systemPrompt: config.systemPrompt,
38
+ totalTokens: { input: 0, output: 0 },
39
+ createdAt: new Date(),
40
+ lastActivityAt: new Date(),
41
+ };
42
+ }
43
+ /**
44
+ * Initialize the agent runner by loading the model.
45
+ * Must be called before run().
46
+ *
47
+ * @throws Error if the model cannot be loaded
48
+ */
49
+ async initialize() {
50
+ this.model = await this.modelManager.getModel(this.config.model);
51
+ }
52
+ /**
53
+ * Run the agent with a new user message.
54
+ *
55
+ * Messages are queued and processed serially to prevent concurrent
56
+ * generateText calls which would corrupt conversation state.
57
+ *
58
+ * @param message - User/system message to process
59
+ * @returns Result of the agent run including text, tool calls, and usage
60
+ */
61
+ async run(message) {
62
+ return new Promise((resolve, reject) => {
63
+ this.messageQueue.push({ message, resolve, reject });
64
+ if (!this.processing) {
65
+ this.processQueue();
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * Get current conversation state (for inspection/debugging).
71
+ *
72
+ * @returns Current conversation state
73
+ */
74
+ getState() {
75
+ return { ...this.state };
76
+ }
77
+ /**
78
+ * Get the number of messages in the conversation history.
79
+ *
80
+ * @returns Message count
81
+ */
82
+ getHistoryLength() {
83
+ return this.state.messages.length;
84
+ }
85
+ /**
86
+ * Check if the agent runner has been initialized.
87
+ *
88
+ * @returns True if initialize() has been called successfully
89
+ */
90
+ isInitialized() {
91
+ return this.model !== null;
92
+ }
93
+ /**
94
+ * Process queued messages serially.
95
+ */
96
+ async processQueue() {
97
+ this.processing = true;
98
+ while (this.messageQueue.length > 0) {
99
+ const item = this.messageQueue.shift();
100
+ try {
101
+ const result = await this.executeRun(item.message);
102
+ item.resolve(result);
103
+ }
104
+ catch (error) {
105
+ item.reject(error instanceof Error ? error : new Error(String(error)));
106
+ }
107
+ }
108
+ this.processing = false;
109
+ }
110
+ /**
111
+ * Execute a single generateText run with the current conversation context.
112
+ *
113
+ * @param message - New message to add to the conversation
114
+ * @returns Agent run result
115
+ */
116
+ async executeRun(message) {
117
+ if (!this.model) {
118
+ throw new Error('AgentRunner not initialized. Call initialize() first.');
119
+ }
120
+ // Check if compaction is needed before adding new message
121
+ if (this.state.messages.length >= this.config.maxHistoryMessages) {
122
+ await this.compactHistory();
123
+ }
124
+ // Add user message to history
125
+ this.state.messages.push({ role: 'user', content: message });
126
+ this.state.lastActivityAt = new Date();
127
+ // Build tools
128
+ const tools = createTools(this.apiClient, this.config.sessionName);
129
+ // Execute generateText with agentic loop
130
+ const generateFn = this._generateTextFn || generateText;
131
+ const result = await generateFn({
132
+ model: this.model,
133
+ system: this.state.systemPrompt,
134
+ messages: this.state.messages,
135
+ tools,
136
+ stopWhen: stepCountIs(this.config.maxSteps),
137
+ temperature: this.config.model.temperature,
138
+ maxOutputTokens: this.config.model.maxTokens,
139
+ });
140
+ // Track tool calls across all steps
141
+ const toolCalls = [];
142
+ for (const step of result.steps) {
143
+ if (step.toolCalls) {
144
+ for (const tc of step.toolCalls) {
145
+ toolCalls.push({
146
+ toolName: tc.toolName,
147
+ args: tc.input ?? {},
148
+ result: step.toolResults?.find((tr) => tr.toolCallId === tc.toolCallId)?.output,
149
+ });
150
+ }
151
+ }
152
+ }
153
+ // Add assistant response to history
154
+ if (result.text) {
155
+ this.state.messages.push({ role: 'assistant', content: result.text });
156
+ }
157
+ // Update token tracking
158
+ const usage = {
159
+ input: result.usage?.inputTokens ?? 0,
160
+ output: result.usage?.outputTokens ?? 0,
161
+ };
162
+ this.state.totalTokens.input += usage.input;
163
+ this.state.totalTokens.output += usage.output;
164
+ return {
165
+ text: result.text,
166
+ steps: result.steps.length,
167
+ usage,
168
+ toolCalls,
169
+ finishReason: result.finishReason,
170
+ };
171
+ }
172
+ /**
173
+ * Compact conversation history by summarizing older messages.
174
+ *
175
+ * Keeps the most recent messages and replaces older ones with a summary.
176
+ * Uses the same model with a summarization prompt.
177
+ */
178
+ async compactHistory() {
179
+ if (!this.model || this.state.messages.length < 10)
180
+ return;
181
+ const keepRecent = 10;
182
+ const oldMessages = this.state.messages.slice(0, -keepRecent);
183
+ const recentMessages = this.state.messages.slice(-keepRecent);
184
+ // Build a simple summary of old messages
185
+ const summaryParts = [];
186
+ for (const msg of oldMessages) {
187
+ const content = typeof msg.content === 'string'
188
+ ? msg.content.substring(0, 200)
189
+ : JSON.stringify(msg.content).substring(0, 200);
190
+ summaryParts.push(`[${msg.role}]: ${content}`);
191
+ }
192
+ const summaryText = `Previous conversation summary (${oldMessages.length} messages compressed):\n${summaryParts.join('\n')}`;
193
+ this.state.messages = [
194
+ { role: 'assistant', content: summaryText },
195
+ ...recentMessages,
196
+ ];
197
+ }
198
+ }
199
+ //# sourceMappingURL=agent-runner.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runner.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/agent-runner.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Crewly Agent API Client
3
+ *
4
+ * Lightweight HTTP client for calling the Crewly backend REST API.
5
+ * Replaces the bash curl wrapper used by orchestrator skill scripts
6
+ * with direct fetch() calls for in-process tool execution.
7
+ *
8
+ * @module services/agent/crewly-agent/api-client
9
+ */
10
+ import { type ApiCallResult } from './types.js';
11
+ /**
12
+ * HTTP client for the Crewly backend REST API.
13
+ *
14
+ * Each tool in the ToolRegistry uses this client to make API calls
15
+ * instead of shelling out to bash scripts.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const client = new CrewlyApiClient('http://localhost:8787', 'crewly-orc');
20
+ * const result = await client.get('/teams');
21
+ * const result2 = await client.post('/terminal/agent-sam/deliver', { message: 'Hello' });
22
+ * ```
23
+ */
24
+ export declare class CrewlyApiClient {
25
+ private baseUrl;
26
+ private sessionName;
27
+ private timeoutMs;
28
+ /**
29
+ * Create a new API client instance.
30
+ *
31
+ * @param baseUrl - Base URL for the Crewly API (e.g., 'http://localhost:8787')
32
+ * @param sessionName - Agent session name for the X-Agent-Session header
33
+ * @param timeoutMs - Request timeout in milliseconds
34
+ */
35
+ constructor(baseUrl?: string, sessionName?: string, timeoutMs?: number);
36
+ /**
37
+ * Make a GET request to the Crewly API.
38
+ *
39
+ * @param endpoint - API endpoint path (e.g., '/teams')
40
+ * @returns API call result with parsed JSON data
41
+ */
42
+ get<T = unknown>(endpoint: string): Promise<ApiCallResult<T>>;
43
+ /**
44
+ * Make a POST request to the Crewly API.
45
+ *
46
+ * @param endpoint - API endpoint path (e.g., '/terminal/agent-sam/deliver')
47
+ * @param body - Request body to send as JSON
48
+ * @returns API call result with parsed JSON data
49
+ */
50
+ post<T = unknown>(endpoint: string, body: unknown): Promise<ApiCallResult<T>>;
51
+ /**
52
+ * Make a DELETE request to the Crewly API.
53
+ *
54
+ * @param endpoint - API endpoint path (e.g., '/schedule/check-123')
55
+ * @returns API call result with parsed JSON data
56
+ */
57
+ delete<T = unknown>(endpoint: string): Promise<ApiCallResult<T>>;
58
+ /**
59
+ * Internal request method handling fetch, timeout, and error mapping.
60
+ *
61
+ * @param method - HTTP method
62
+ * @param endpoint - API endpoint path
63
+ * @param body - Optional request body
64
+ * @returns Parsed API call result
65
+ */
66
+ private request;
67
+ }
68
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;OAMG;gBAED,OAAO,GAAE,MAA2C,EACpD,WAAW,GAAE,MAAqB,EAClC,SAAS,GAAE,MAA6C;IAO1D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAInE;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAInF;;;;;OAKG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAItE;;;;;;;OAOG;YACW,OAAO;CAwDtB"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Crewly Agent API Client
3
+ *
4
+ * Lightweight HTTP client for calling the Crewly backend REST API.
5
+ * Replaces the bash curl wrapper used by orchestrator skill scripts
6
+ * with direct fetch() calls for in-process tool execution.
7
+ *
8
+ * @module services/agent/crewly-agent/api-client
9
+ */
10
+ import { CREWLY_AGENT_DEFAULTS } from './types.js';
11
+ /**
12
+ * HTTP client for the Crewly backend REST API.
13
+ *
14
+ * Each tool in the ToolRegistry uses this client to make API calls
15
+ * instead of shelling out to bash scripts.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const client = new CrewlyApiClient('http://localhost:8787', 'crewly-orc');
20
+ * const result = await client.get('/teams');
21
+ * const result2 = await client.post('/terminal/agent-sam/deliver', { message: 'Hello' });
22
+ * ```
23
+ */
24
+ export class CrewlyApiClient {
25
+ baseUrl;
26
+ sessionName;
27
+ timeoutMs;
28
+ /**
29
+ * Create a new API client instance.
30
+ *
31
+ * @param baseUrl - Base URL for the Crewly API (e.g., 'http://localhost:8787')
32
+ * @param sessionName - Agent session name for the X-Agent-Session header
33
+ * @param timeoutMs - Request timeout in milliseconds
34
+ */
35
+ constructor(baseUrl = CREWLY_AGENT_DEFAULTS.API_BASE_URL, sessionName = 'crewly-orc', timeoutMs = CREWLY_AGENT_DEFAULTS.API_TIMEOUT_MS) {
36
+ this.baseUrl = baseUrl.replace(/\/$/, '');
37
+ this.sessionName = sessionName;
38
+ this.timeoutMs = timeoutMs;
39
+ }
40
+ /**
41
+ * Make a GET request to the Crewly API.
42
+ *
43
+ * @param endpoint - API endpoint path (e.g., '/teams')
44
+ * @returns API call result with parsed JSON data
45
+ */
46
+ async get(endpoint) {
47
+ return this.request('GET', endpoint);
48
+ }
49
+ /**
50
+ * Make a POST request to the Crewly API.
51
+ *
52
+ * @param endpoint - API endpoint path (e.g., '/terminal/agent-sam/deliver')
53
+ * @param body - Request body to send as JSON
54
+ * @returns API call result with parsed JSON data
55
+ */
56
+ async post(endpoint, body) {
57
+ return this.request('POST', endpoint, body);
58
+ }
59
+ /**
60
+ * Make a DELETE request to the Crewly API.
61
+ *
62
+ * @param endpoint - API endpoint path (e.g., '/schedule/check-123')
63
+ * @returns API call result with parsed JSON data
64
+ */
65
+ async delete(endpoint) {
66
+ return this.request('DELETE', endpoint);
67
+ }
68
+ /**
69
+ * Internal request method handling fetch, timeout, and error mapping.
70
+ *
71
+ * @param method - HTTP method
72
+ * @param endpoint - API endpoint path
73
+ * @param body - Optional request body
74
+ * @returns Parsed API call result
75
+ */
76
+ async request(method, endpoint, body) {
77
+ const url = `${this.baseUrl}/api${endpoint}`;
78
+ const controller = new AbortController();
79
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
80
+ try {
81
+ const headers = {
82
+ 'Content-Type': 'application/json',
83
+ };
84
+ if (this.sessionName) {
85
+ headers['X-Agent-Session'] = this.sessionName;
86
+ }
87
+ const init = {
88
+ method,
89
+ headers,
90
+ signal: controller.signal,
91
+ };
92
+ if (body !== undefined) {
93
+ init.body = JSON.stringify(body);
94
+ }
95
+ const response = await fetch(url, init);
96
+ const responseBody = await response.text();
97
+ let data;
98
+ try {
99
+ const parsed = JSON.parse(responseBody);
100
+ data = parsed.data !== undefined ? parsed.data : parsed;
101
+ }
102
+ catch {
103
+ data = responseBody;
104
+ }
105
+ if (response.ok) {
106
+ return { success: true, data, status: response.status };
107
+ }
108
+ return {
109
+ success: false,
110
+ error: typeof data === 'object' && data !== null && 'error' in data
111
+ ? String(data.error)
112
+ : `HTTP ${response.status}`,
113
+ status: response.status,
114
+ };
115
+ }
116
+ catch (error) {
117
+ if (error instanceof Error && error.name === 'AbortError') {
118
+ return { success: false, error: `Request timeout after ${this.timeoutMs}ms`, status: 0 };
119
+ }
120
+ return {
121
+ success: false,
122
+ error: error instanceof Error ? error.message : String(error),
123
+ status: 0,
124
+ };
125
+ }
126
+ finally {
127
+ clearTimeout(timeout);
128
+ }
129
+ }
130
+ }
131
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Crewly Auditor Tool Registry
3
+ *
4
+ * Read-only tools for the Auditor agent. These tools allow the auditor
5
+ * to observe agent activity, read logs, check task alignment, and write
6
+ * structured bug reports — without any ability to modify system state.
7
+ *
8
+ * @module services/agent/crewly-agent/auditor-tools
9
+ */
10
+ import type { CrewlyApiClient } from './api-client.js';
11
+ import type { ToolDefinition } from './types.js';
12
+ /**
13
+ * Create the auditor tool set for the Crewly Auditor agent.
14
+ *
15
+ * All tools are read-only except `write_audit_report` which appends
16
+ * to the audit log file.
17
+ *
18
+ * @param client - API client for Crewly REST API calls
19
+ * @param projectPath - Project root path for file operations
20
+ * @returns Object of named tools for the auditor agent
21
+ */
22
+ export declare function createAuditorTools(client: CrewlyApiClient, projectPath: string): Record<string, ToolDefinition>;
23
+ /**
24
+ * Get the list of auditor tool names.
25
+ *
26
+ * @returns Array of auditor tool name strings
27
+ */
28
+ export declare function getAuditorToolNames(): string[];
29
+ //# sourceMappingURL=auditor-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditor-tools.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/auditor-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA4MhC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAM9C"}