crewly 1.0.7 → 1.0.8

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 (303) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +50 -3
  3. package/config/roles/architect/prompt.md +11 -0
  4. package/config/roles/backend-developer/prompt.md +11 -0
  5. package/config/roles/designer/prompt.md +11 -0
  6. package/config/roles/developer/prompt.md +18 -4
  7. package/config/roles/frontend-developer/prompt.md +11 -0
  8. package/config/roles/fullstack-dev/prompt.md +11 -0
  9. package/config/roles/generalist/prompt.md +11 -0
  10. package/config/roles/orchestrator/prompt.md +27 -0
  11. package/config/roles/product-manager/prompt.md +18 -4
  12. package/config/roles/qa/prompt.md +11 -0
  13. package/config/roles/qa-engineer/prompt.md +11 -0
  14. package/config/roles/sales/prompt.md +11 -0
  15. package/config/roles/support/prompt.md +11 -0
  16. package/config/roles/tpm/prompt.md +11 -0
  17. package/config/skills/orchestrator/complete-task/execute.sh +1 -0
  18. package/config/templates/agent-claude-md.md +16 -0
  19. package/config/templates/research-team.json +22 -0
  20. package/config/templates/startup-team.json +22 -0
  21. package/config/templates/web-dev-team.json +22 -0
  22. package/dist/backend/backend/src/constants.d.ts +61 -1
  23. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  24. package/dist/backend/backend/src/constants.js +65 -7
  25. package/dist/backend/backend/src/constants.js.map +1 -1
  26. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +7 -0
  27. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  28. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +174 -4
  29. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  30. package/dist/backend/backend/src/index.d.ts.map +1 -1
  31. package/dist/backend/backend/src/index.js +34 -0
  32. package/dist/backend/backend/src/index.js.map +1 -1
  33. package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
  34. package/dist/backend/backend/src/routes/modules/task-management.routes.js +2 -0
  35. package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
  36. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +8 -0
  37. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/agent/agent-registration.service.js +75 -17
  39. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +222 -0
  41. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +621 -0
  43. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
  44. package/dist/backend/backend/src/services/index.d.ts +3 -0
  45. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/index.js +5 -0
  47. package/dist/backend/backend/src/services/index.js.map +1 -1
  48. package/dist/backend/backend/src/services/mcp-client.d.ts +233 -0
  49. package/dist/backend/backend/src/services/mcp-client.d.ts.map +1 -0
  50. package/dist/backend/backend/src/services/mcp-client.js +297 -0
  51. package/dist/backend/backend/src/services/mcp-client.js.map +1 -0
  52. package/dist/backend/backend/src/services/mcp-server.d.ts +167 -0
  53. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -0
  54. package/dist/backend/backend/src/services/mcp-server.js +586 -0
  55. package/dist/backend/backend/src/services/mcp-server.js.map +1 -0
  56. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +2 -0
  57. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/messaging/message-queue.service.js +6 -1
  59. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +10 -0
  61. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +94 -38
  63. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  64. package/dist/backend/backend/src/services/quality/index.d.ts +1 -0
  65. package/dist/backend/backend/src/services/quality/index.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/quality/index.js +1 -0
  67. package/dist/backend/backend/src/services/quality/index.js.map +1 -1
  68. package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts +84 -0
  69. package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts.map +1 -0
  70. package/dist/backend/backend/src/services/quality/task-output-validator.service.js +163 -0
  71. package/dist/backend/backend/src/services/quality/task-output-validator.service.js.map +1 -0
  72. package/dist/backend/backend/src/services/runtime-adapter.d.ts +234 -0
  73. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -0
  74. package/dist/backend/backend/src/services/runtime-adapter.js +180 -0
  75. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -0
  76. package/dist/backend/backend/src/types/event-bus.types.d.ts +2 -2
  77. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  78. package/dist/backend/backend/src/types/event-bus.types.js +2 -0
  79. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  80. package/dist/backend/backend/src/types/index.d.ts +1 -0
  81. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  82. package/dist/backend/backend/src/types/index.js +2 -0
  83. package/dist/backend/backend/src/types/index.js.map +1 -1
  84. package/dist/backend/backend/src/types/messaging.types.d.ts +9 -6
  85. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  86. package/dist/backend/backend/src/types/messaging.types.js +10 -3
  87. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  88. package/dist/backend/backend/src/types/task-output.types.d.ts +78 -0
  89. package/dist/backend/backend/src/types/task-output.types.d.ts.map +1 -0
  90. package/dist/backend/backend/src/types/task-output.types.js +27 -0
  91. package/dist/backend/backend/src/types/task-output.types.js.map +1 -0
  92. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +13 -0
  93. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  94. package/dist/backend/backend/src/websocket/terminal.gateway.js +12 -0
  95. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  96. package/dist/cli/backend/src/constants.d.ts +751 -0
  97. package/dist/cli/backend/src/constants.d.ts.map +1 -0
  98. package/dist/cli/backend/src/constants.js +550 -0
  99. package/dist/cli/backend/src/constants.js.map +1 -0
  100. package/dist/cli/backend/src/models/Project.d.ts +18 -0
  101. package/dist/cli/backend/src/models/Project.d.ts.map +1 -0
  102. package/dist/cli/backend/src/models/Project.js +70 -0
  103. package/dist/cli/backend/src/models/Project.js.map +1 -0
  104. package/dist/cli/backend/src/models/ScheduledMessage.d.ts +27 -0
  105. package/dist/cli/backend/src/models/ScheduledMessage.d.ts.map +1 -0
  106. package/dist/cli/backend/src/models/ScheduledMessage.js +50 -0
  107. package/dist/cli/backend/src/models/ScheduledMessage.js.map +1 -0
  108. package/dist/cli/backend/src/models/Team.d.ts +20 -0
  109. package/dist/cli/backend/src/models/Team.d.ts.map +1 -0
  110. package/dist/cli/backend/src/models/Team.js +120 -0
  111. package/dist/cli/backend/src/models/Team.js.map +1 -0
  112. package/dist/cli/backend/src/models/Ticket.d.ts +24 -0
  113. package/dist/cli/backend/src/models/Ticket.d.ts.map +1 -0
  114. package/dist/cli/backend/src/models/Ticket.js +102 -0
  115. package/dist/cli/backend/src/models/Ticket.js.map +1 -0
  116. package/dist/cli/backend/src/models/index.d.ts +5 -0
  117. package/dist/cli/backend/src/models/index.d.ts.map +1 -0
  118. package/dist/cli/backend/src/models/index.js +5 -0
  119. package/dist/cli/backend/src/models/index.js.map +1 -0
  120. package/dist/cli/backend/src/services/core/config.service.d.ts +91 -0
  121. package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -0
  122. package/dist/cli/backend/src/services/core/config.service.js +246 -0
  123. package/dist/cli/backend/src/services/core/config.service.js.map +1 -0
  124. package/dist/cli/backend/src/services/core/logger.service.d.ts +70 -0
  125. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -0
  126. package/dist/cli/backend/src/services/core/logger.service.js +350 -0
  127. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -0
  128. package/dist/cli/backend/src/services/core/storage.service.d.ts +269 -0
  129. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -0
  130. package/dist/cli/backend/src/services/core/storage.service.js +1406 -0
  131. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -0
  132. package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +92 -0
  133. package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -0
  134. package/dist/cli/backend/src/services/core/teams-backup.service.js +120 -0
  135. package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -0
  136. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +125 -0
  137. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -0
  138. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +247 -0
  139. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -0
  140. package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts +153 -0
  141. package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts.map +1 -0
  142. package/dist/cli/backend/src/services/knowledge/knowledge.service.js +409 -0
  143. package/dist/cli/backend/src/services/knowledge/knowledge.service.js.map +1 -0
  144. package/dist/cli/backend/src/services/mcp-server.d.ts +167 -0
  145. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -0
  146. package/dist/cli/backend/src/services/mcp-server.js +586 -0
  147. package/dist/cli/backend/src/services/mcp-server.js.map +1 -0
  148. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +259 -0
  149. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -0
  150. package/dist/cli/backend/src/services/memory/agent-memory.service.js +539 -0
  151. package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -0
  152. package/dist/cli/backend/src/services/memory/memory.service.d.ts +306 -0
  153. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -0
  154. package/dist/cli/backend/src/services/memory/memory.service.js +517 -0
  155. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -0
  156. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +252 -0
  157. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -0
  158. package/dist/cli/backend/src/services/memory/project-memory.service.js +600 -0
  159. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -0
  160. package/dist/cli/backend/src/types/auto-assign.types.d.ts +271 -0
  161. package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +1 -0
  162. package/dist/cli/backend/src/types/auto-assign.types.js +136 -0
  163. package/dist/cli/backend/src/types/auto-assign.types.js.map +1 -0
  164. package/dist/cli/backend/src/types/budget.types.d.ts +217 -0
  165. package/dist/cli/backend/src/types/budget.types.d.ts.map +1 -0
  166. package/dist/cli/backend/src/types/budget.types.js +82 -0
  167. package/dist/cli/backend/src/types/budget.types.js.map +1 -0
  168. package/dist/cli/backend/src/types/chat.types.d.ts +550 -0
  169. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -0
  170. package/dist/cli/backend/src/types/chat.types.js +743 -0
  171. package/dist/cli/backend/src/types/chat.types.js.map +1 -0
  172. package/dist/cli/backend/src/types/continuation.types.d.ts +237 -0
  173. package/dist/cli/backend/src/types/continuation.types.d.ts.map +1 -0
  174. package/dist/cli/backend/src/types/continuation.types.js +10 -0
  175. package/dist/cli/backend/src/types/continuation.types.js.map +1 -0
  176. package/dist/cli/backend/src/types/index.d.ts +164 -0
  177. package/dist/cli/backend/src/types/index.d.ts.map +1 -0
  178. package/dist/cli/backend/src/types/index.js +25 -0
  179. package/dist/cli/backend/src/types/index.js.map +1 -0
  180. package/dist/cli/backend/src/types/knowledge.types.d.ts +195 -0
  181. package/dist/cli/backend/src/types/knowledge.types.d.ts.map +1 -0
  182. package/dist/cli/backend/src/types/knowledge.types.js +38 -0
  183. package/dist/cli/backend/src/types/knowledge.types.js.map +1 -0
  184. package/dist/cli/backend/src/types/memory.types.d.ts +587 -0
  185. package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -0
  186. package/dist/cli/backend/src/types/memory.types.js +47 -0
  187. package/dist/cli/backend/src/types/memory.types.js.map +1 -0
  188. package/dist/cli/backend/src/types/quality-gate.types.d.ts +171 -0
  189. package/dist/cli/backend/src/types/quality-gate.types.d.ts.map +1 -0
  190. package/dist/cli/backend/src/types/quality-gate.types.js +42 -0
  191. package/dist/cli/backend/src/types/quality-gate.types.js.map +1 -0
  192. package/dist/cli/backend/src/types/role.types.d.ts +260 -0
  193. package/dist/cli/backend/src/types/role.types.d.ts.map +1 -0
  194. package/dist/cli/backend/src/types/role.types.js +238 -0
  195. package/dist/cli/backend/src/types/role.types.js.map +1 -0
  196. package/dist/cli/backend/src/types/scheduler.types.d.ts +254 -0
  197. package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -0
  198. package/dist/cli/backend/src/types/scheduler.types.js +32 -0
  199. package/dist/cli/backend/src/types/scheduler.types.js.map +1 -0
  200. package/dist/cli/backend/src/types/settings.types.d.ts +178 -0
  201. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -0
  202. package/dist/cli/backend/src/types/settings.types.js +206 -0
  203. package/dist/cli/backend/src/types/settings.types.js.map +1 -0
  204. package/dist/cli/backend/src/types/skill.types.d.ts +515 -0
  205. package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -0
  206. package/dist/cli/backend/src/types/skill.types.js +481 -0
  207. package/dist/cli/backend/src/types/skill.types.js.map +1 -0
  208. package/dist/cli/backend/src/types/sop.types.d.ts +224 -0
  209. package/dist/cli/backend/src/types/sop.types.d.ts.map +1 -0
  210. package/dist/cli/backend/src/types/sop.types.js +85 -0
  211. package/dist/cli/backend/src/types/sop.types.js.map +1 -0
  212. package/dist/cli/backend/src/types/task-output.types.d.ts +78 -0
  213. package/dist/cli/backend/src/types/task-output.types.d.ts.map +1 -0
  214. package/dist/cli/backend/src/types/task-output.types.js +27 -0
  215. package/dist/cli/backend/src/types/task-output.types.js.map +1 -0
  216. package/dist/cli/backend/src/utils/file-io.utils.d.ts +102 -0
  217. package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -0
  218. package/dist/cli/backend/src/utils/file-io.utils.js +214 -0
  219. package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -0
  220. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts +54 -0
  221. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts.map +1 -0
  222. package/dist/cli/backend/src/utils/terminal-output.utils.js +97 -0
  223. package/dist/cli/backend/src/utils/terminal-output.utils.js.map +1 -0
  224. package/dist/cli/cli/src/commands/mcp-server.d.ts +38 -0
  225. package/dist/cli/cli/src/commands/mcp-server.d.ts.map +1 -0
  226. package/dist/cli/cli/src/commands/mcp-server.js +49 -0
  227. package/dist/cli/cli/src/commands/mcp-server.js.map +1 -0
  228. package/dist/cli/cli/src/commands/onboard.d.ts +61 -7
  229. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  230. package/dist/cli/cli/src/commands/onboard.js +192 -19
  231. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  232. package/dist/cli/cli/src/commands/publish.d.ts +27 -0
  233. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -0
  234. package/dist/cli/cli/src/commands/publish.js +69 -0
  235. package/dist/cli/cli/src/commands/publish.js.map +1 -0
  236. package/dist/cli/cli/src/index.js +14 -0
  237. package/dist/cli/cli/src/index.js.map +1 -1
  238. package/dist/cli/cli/src/utils/archive-creator.d.ts +82 -0
  239. package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -0
  240. package/dist/cli/cli/src/utils/archive-creator.js +105 -0
  241. package/dist/cli/cli/src/utils/archive-creator.js.map +1 -0
  242. package/dist/cli/cli/src/utils/package-validator.d.ts +62 -0
  243. package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -0
  244. package/dist/cli/cli/src/utils/package-validator.js +122 -0
  245. package/dist/cli/cli/src/utils/package-validator.js.map +1 -0
  246. package/dist/cli/cli/src/utils/templates.d.ts +71 -0
  247. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -0
  248. package/dist/cli/cli/src/utils/templates.js +91 -0
  249. package/dist/cli/cli/src/utils/templates.js.map +1 -0
  250. package/frontend/dist/assets/{index-523c7fce.js → index-68d1eb5a.js} +71 -71
  251. package/frontend/dist/assets/{index-4c050f52.css → index-c5043a83.css} +1 -1
  252. package/frontend/dist/assets/nunito-cyrillic-400-normal-e44e669f.woff2 +0 -0
  253. package/frontend/dist/assets/nunito-cyrillic-400-normal-ff8e8bdd.woff +0 -0
  254. package/frontend/dist/assets/nunito-cyrillic-500-normal-2159679b.woff +0 -0
  255. package/frontend/dist/assets/nunito-cyrillic-500-normal-61a3b80e.woff2 +0 -0
  256. package/frontend/dist/assets/nunito-cyrillic-600-normal-ac046097.woff +0 -0
  257. package/frontend/dist/assets/nunito-cyrillic-600-normal-e61eb97b.woff2 +0 -0
  258. package/frontend/dist/assets/nunito-cyrillic-700-normal-8fcefcc9.woff2 +0 -0
  259. package/frontend/dist/assets/nunito-cyrillic-700-normal-b9684104.woff +0 -0
  260. package/frontend/dist/assets/nunito-cyrillic-800-normal-40253beb.woff +0 -0
  261. package/frontend/dist/assets/nunito-cyrillic-800-normal-d80292de.woff2 +0 -0
  262. package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-20d73ae7.woff2 +0 -0
  263. package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-d48c37c9.woff +0 -0
  264. package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-16197abd.woff +0 -0
  265. package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-9dcfe9b5.woff2 +0 -0
  266. package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-d53e9851.woff2 +0 -0
  267. package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-e3d0201f.woff +0 -0
  268. package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-5936f6ac.woff2 +0 -0
  269. package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-c8c02775.woff +0 -0
  270. package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-217b8f51.woff +0 -0
  271. package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-796cf7bd.woff2 +0 -0
  272. package/frontend/dist/assets/nunito-latin-400-normal-a5906e15.woff2 +0 -0
  273. package/frontend/dist/assets/nunito-latin-400-normal-b51e7635.woff +0 -0
  274. package/frontend/dist/assets/nunito-latin-500-normal-23ae3083.woff2 +0 -0
  275. package/frontend/dist/assets/nunito-latin-500-normal-be14dbc6.woff +0 -0
  276. package/frontend/dist/assets/nunito-latin-600-normal-06a9c8b3.woff +0 -0
  277. package/frontend/dist/assets/nunito-latin-600-normal-45f437de.woff2 +0 -0
  278. package/frontend/dist/assets/nunito-latin-700-normal-ce9107dc.woff +0 -0
  279. package/frontend/dist/assets/nunito-latin-700-normal-fa89300b.woff2 +0 -0
  280. package/frontend/dist/assets/nunito-latin-800-normal-0ca02785.woff +0 -0
  281. package/frontend/dist/assets/nunito-latin-800-normal-2363d3ed.woff2 +0 -0
  282. package/frontend/dist/assets/nunito-latin-ext-400-normal-67250a41.woff2 +0 -0
  283. package/frontend/dist/assets/nunito-latin-ext-400-normal-d7e2415e.woff +0 -0
  284. package/frontend/dist/assets/nunito-latin-ext-500-normal-06f35d1c.woff +0 -0
  285. package/frontend/dist/assets/nunito-latin-ext-500-normal-343e7adc.woff2 +0 -0
  286. package/frontend/dist/assets/nunito-latin-ext-600-normal-5a8efd17.woff +0 -0
  287. package/frontend/dist/assets/nunito-latin-ext-600-normal-a7ba5f4f.woff2 +0 -0
  288. package/frontend/dist/assets/nunito-latin-ext-700-normal-0a4e4a02.woff2 +0 -0
  289. package/frontend/dist/assets/nunito-latin-ext-700-normal-0c607961.woff +0 -0
  290. package/frontend/dist/assets/nunito-latin-ext-800-normal-39f54b55.woff2 +0 -0
  291. package/frontend/dist/assets/nunito-latin-ext-800-normal-466d0211.woff +0 -0
  292. package/frontend/dist/assets/nunito-vietnamese-400-normal-2a755616.woff2 +0 -0
  293. package/frontend/dist/assets/nunito-vietnamese-400-normal-9c01ea9f.woff +0 -0
  294. package/frontend/dist/assets/nunito-vietnamese-500-normal-452e5e08.woff +0 -0
  295. package/frontend/dist/assets/nunito-vietnamese-500-normal-dc98d965.woff2 +0 -0
  296. package/frontend/dist/assets/nunito-vietnamese-600-normal-2ffbb85f.woff +0 -0
  297. package/frontend/dist/assets/nunito-vietnamese-600-normal-cf95b95d.woff2 +0 -0
  298. package/frontend/dist/assets/nunito-vietnamese-700-normal-0e29c28c.woff2 +0 -0
  299. package/frontend/dist/assets/nunito-vietnamese-700-normal-7793b75e.woff +0 -0
  300. package/frontend/dist/assets/nunito-vietnamese-800-normal-5baf507e.woff +0 -0
  301. package/frontend/dist/assets/nunito-vietnamese-800-normal-fac6740e.woff2 +0 -0
  302. package/frontend/dist/index.html +2 -2
  303. package/package.json +15 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,eAAO,MAAM,wBAAwB;;;;;;CAAkC,CAAC;AACxE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAC;AACxD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAC;AACxD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgC,CAAC;AACpE,eAAO,MAAM,8BAA8B;;;;CAAwC,CAAC;AACpF,eAAO,MAAM,uBAAuB;;;;;;CAAiC,CAAC;AACtE,eAAO,MAAM,uBAAuB;;;;;CAAiC,CAAC;AACtE,eAAO,MAAM,iCAAiC;;;;;;CAA2C,CAAC;AAC1F,eAAO,MAAM,gCAAgC;;;;;;CAA0C,CAAC;AAGxF,eAAO,MAAM,yBAAyB,cAAqD,CAAC;AAC5F,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAGnD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAC;AAGX,eAAO,MAAM,aAAa;IACzB,sEAAsE;;;IAGtE,6EAA6E;;IAE7E,0DAA0D;;CAEjD,CAAC;AAGX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAGX,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;;;;;IASzB,wEAAwE;;IAExE,8EAA8E;;CAErE,CAAC;AAGX,eAAO,MAAM,sBAAsB;IAClC,iFAAiF;;IAEjF,6DAA6D;;IAE7D,mEAAmE;;IAEnE,+CAA+C;;IAE/C,0DAA0D;;IAE1D,oDAAoD;;IAEpD,8EAA8E;;IAE9E;6EACyE;;CAEhE,CAAC;AAGX,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAGX,eAAO,MAAM,cAAc;IAC1B,sEAAsE;;IAEtE,yEAAyE;;IAEzE,6CAA6C;;CAEpC,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;IAC5B,qFAAqF;;IAErF,0CAA0C;;IAE1C,4BAA4B;;CAEnB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;IAClC,iGAAiG;;IAEjG,0CAA0C;;IAE1C,4BAA4B;;CAEnB,CAAC;AAGX,eAAO,MAAM,wBAAwB;IACpC,oDAAoD;;IAEpD,yDAAyD;;IAEzD,2DAA2D;;IAE3D,gDAAgD;;IAEhD,6DAA6D;;IAE7D,+DAA+D;;IAE/D,kDAAkD;;IAElD,iDAAiD;;IAEjD,wFAAwF;;IAExF,iEAAiE;;IAEjE,mEAAmE;;IAEnE,6EAA6E;;IAE7E,uFAAuF;;IAEvF,iFAAiF;;IAEjF,uDAAuD;;IAEvD,0FAA0F;;IAE1F,gEAAgE;;CAEvD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,6BAA6B;IACzC,sFAAsF;;CAE7E,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC7B;;;OAGG;;IAGH;;OAEG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;OAEG;;IAGH;;;OAGG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;OAEG;;IAQH;;OAEG;;CAEM,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IACnC,sDAAsD;;IAEtD,yDAAyD;;IAEzD,sEAAsE;;IAEtE,yDAAyD;;IAEzD,6EAA6E;;IAE7E;sEACkE;;IAElE,6DAA6D;;IAE7D,uCAAuC;;IAEvC,qDAAqD;;QAEpD,6CAA6C;;QAE7C,+CAA+C;;QAE/C,0CAA0C;;QAE1C,mCAAmC;;QAEnC,0CAA0C;;QAE1C,4CAA4C;;;CAGpC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;IAC/B,mDAAmD;;IAEnD,6DAA6D;;IAE7D,mDAAmD;;IAEnD,sDAAsD;;IAEtD,0DAA0D;;IAE1D,uEAAuE;;CAE9D,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;IAClC,wDAAwD;;IAExD,4DAA4D;;IAE5D,mDAAmD;;IAEnD,4DAA4D;;CAEnD,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;IAClC,6EAA6E;;CAEpE,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;IAC3C,uDAAuD;;IAEvD,wEAAwE;;IAExE,mEAAmE;;IAEnE,uEAAuE;;CAE9D,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IACnC,wEAAwE;;IAExE,6DAA6D;;CAEpD,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;IACvC;;;;OAIG;;IAKH,8DAA8D;;IAE9D,0CAA0C;;CAEjC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB;IAClC,8DAA8D;;IAE9D,qEAAqE;;IAErE;;;;;OAKG;;IAEH;;;;;;OAMG;;CAEM,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,gCAAgC;IAC5C,6DAA6D;;IAE7D,6DAA6D;;IAE7D,yDAAyD;;IAEzD,8EAA8E;;IAE9E,6DAA6D;;IAE7D,2DAA2D;;IAE3D,8DAA8D;;IAE9D,wEAAwE;;IAExE,yDAAyD;;IAEzD,kEAAkE;;CAEzD,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;IACrC,wDAAwD;;IAExD,0DAA0D;;CAEjD,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;IAC3C,gDAAgD;;IAEhD,gEAAgE;;IAEhE,uCAAuC;;;;;;;;;CAS9B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC5B,sDAAsD;;IAEtD,mEAAmE;;IAEnE,uEAAuE;;CAE9D,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;IACjC,oEAAoE;;IAEpE,4DAA4D;;IAE5D,+FAA+F;;IAE/F;;;OAGG;;IAEH;;;;OAIG;;;;;;;;IAQH,2DAA2D;;IAE3D,2DAA2D;;IAE3D,qDAAqD;;IAErD,+DAA+D;;IAE/D,2DAA2D;;IAE3D,mEAAmE;;IAEnE,uEAAuE;;CAE9D,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;IACvC,iEAAiE;;IAEjE,kEAAkE;;IAElE,0CAA0C;;IAK1C,mEAAmE;;IAEnE,uEAAuE;;CAE9D,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;IAC/B,wCAAwC;;IAExC,uDAAuD;;IAEvD,2CAA2C;;IAE3C,mDAAmD;;IAEnD,2CAA2C;;CAElC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,iCAAiC;AACjC,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAGnF,MAAM,MAAM,WAAW,GACtB,CAAC,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACxF,MAAM,MAAM,aAAa,GACxB,CAAC,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC5F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAC7E,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC"}
@@ -0,0 +1,550 @@
1
+ /**
2
+ * Backend-specific constants
3
+ * Re-exported from the main config constants for backend use
4
+ */
5
+ // Import from config directory for cross-domain constants
6
+ import { CREWLY_CONSTANTS as CONFIG_CREWLY_CONSTANTS, AGENT_IDENTITY_CONSTANTS as CONFIG_AGENT_IDENTITY_CONSTANTS, TIMING_CONSTANTS as CONFIG_TIMING_CONSTANTS, MEMORY_CONSTANTS as CONFIG_MEMORY_CONSTANTS, CONTINUATION_CONSTANTS as CONFIG_CONTINUATION_CONSTANTS, ORCHESTRATOR_RESTART_CONSTANTS as CONFIG_ORCHESTRATOR_RESTART_CONSTANTS, AGENT_SUSPEND_CONSTANTS as CONFIG_AGENT_SUSPEND_CONSTANTS, VERSION_CHECK_CONSTANTS as CONFIG_VERSION_CHECK_CONSTANTS, AGENT_HEARTBEAT_MONITOR_CONSTANTS as CONFIG_AGENT_HEARTBEAT_MONITOR_CONSTANTS, ORCHESTRATOR_HEARTBEAT_CONSTANTS as CONFIG_ORCHESTRATOR_HEARTBEAT_CONSTANTS } from '../../config/constants.js';
7
+ // Re-export the cross-domain constants for backend use
8
+ export const AGENT_IDENTITY_CONSTANTS = CONFIG_AGENT_IDENTITY_CONSTANTS;
9
+ export const TIMING_CONSTANTS = CONFIG_TIMING_CONSTANTS;
10
+ export const MEMORY_CONSTANTS = CONFIG_MEMORY_CONSTANTS;
11
+ export const CONTINUATION_CONSTANTS = CONFIG_CONTINUATION_CONSTANTS;
12
+ export const ORCHESTRATOR_RESTART_CONSTANTS = CONFIG_ORCHESTRATOR_RESTART_CONSTANTS;
13
+ export const AGENT_SUSPEND_CONSTANTS = CONFIG_AGENT_SUSPEND_CONSTANTS;
14
+ export const VERSION_CHECK_CONSTANTS = CONFIG_VERSION_CHECK_CONSTANTS;
15
+ export const AGENT_HEARTBEAT_MONITOR_CONSTANTS = CONFIG_AGENT_HEARTBEAT_MONITOR_CONSTANTS;
16
+ export const ORCHESTRATOR_HEARTBEAT_CONSTANTS = CONFIG_ORCHESTRATOR_HEARTBEAT_CONSTANTS;
17
+ // Re-export specific constants that the backend needs from the main config
18
+ export const ORCHESTRATOR_SESSION_NAME = CONFIG_CREWLY_CONSTANTS.SESSIONS.ORCHESTRATOR_NAME;
19
+ export const ORCHESTRATOR_ROLE = 'orchestrator';
20
+ export const ORCHESTRATOR_WINDOW_NAME = 'Crewly Orchestrator';
21
+ export const AGENT_INITIALIZATION_TIMEOUT = 90000;
22
+ export const CLAUDE_INITIALIZATION_TIMEOUT = 45000;
23
+ // Merge cross-domain constants with backend-specific extensions
24
+ export const CREWLY_CONSTANTS = {
25
+ ...CONFIG_CREWLY_CONSTANTS,
26
+ // Backend-specific extensions
27
+ INIT_SCRIPTS: {
28
+ CLAUDE: 'initialize_claude.sh',
29
+ },
30
+ };
31
+ // Environment variable names (duplicated from config/constants.ts for backend use)
32
+ export const ENV_CONSTANTS = {
33
+ /** PTY session name used for agent identity and heartbeat tracking */
34
+ CREWLY_SESSION_NAME: 'CREWLY_SESSION_NAME',
35
+ CREWLY_ROLE: 'CREWLY_ROLE',
36
+ /** Base URL for the Crewly backend API (used by orchestrator bash skills) */
37
+ CREWLY_API_URL: 'CREWLY_API_URL',
38
+ /** Gemini API key for embedding-based knowledge search */
39
+ GEMINI_API_KEY: 'GEMINI_API_KEY',
40
+ };
41
+ // Agent-specific timeout values (in milliseconds)
42
+ export const AGENT_TIMEOUTS = {
43
+ ORCHESTRATOR_INITIALIZATION: 120000, // 2 minutes for orchestrator
44
+ REGULAR_AGENT_INITIALIZATION: 75000, // 75 seconds for regular agents
45
+ };
46
+ // Agent runtime types
47
+ export const RUNTIME_TYPES = {
48
+ CLAUDE_CODE: 'claude-code',
49
+ GEMINI_CLI: 'gemini-cli',
50
+ CODEX_CLI: 'codex-cli',
51
+ };
52
+ // PTY session constants
53
+ export const PTY_CONSTANTS = {
54
+ MAX_DATA_LISTENERS: 100,
55
+ MAX_EXIT_LISTENERS: 50,
56
+ DEFAULT_MAX_HISTORY_SIZE: 10 * 1024 * 1024, // 10MB
57
+ DEFAULT_SCROLLBACK: 5000,
58
+ DEFAULT_COLS: 80,
59
+ DEFAULT_ROWS: 24,
60
+ MAX_RESIZE_COLS: 1000,
61
+ MAX_RESIZE_ROWS: 1000,
62
+ /** Delay before escalating from SIGTERM to SIGKILL in forceKill (ms) */
63
+ FORCE_KILL_ESCALATION_DELAY: 500,
64
+ /** Delay before escalating from SIGTERM to SIGKILL in forceDestroyAll (ms) */
65
+ FORCE_DESTROY_ESCALATION_DELAY: 1000,
66
+ };
67
+ // Session command timing delays (in milliseconds)
68
+ export const SESSION_COMMAND_DELAYS = {
69
+ /** Delay after sending a message (allows terminal to process bracketed paste) */
70
+ MESSAGE_DELAY: 1000,
71
+ /** Delay after sending a key (allows key to be processed) */
72
+ KEY_DELAY: 200,
73
+ /** Delay after clearing command line (allows terminal to reset) */
74
+ CLEAR_COMMAND_DELAY: 100,
75
+ /** Delay after setting environment variable */
76
+ ENV_VAR_DELAY: 100,
77
+ /** Delay for Claude Code to recover from state changes */
78
+ CLAUDE_RECOVERY_DELAY: 300,
79
+ /** Delay between message delivery retry attempts */
80
+ MESSAGE_RETRY_DELAY: 1000,
81
+ /** Additional delay for Claude Code to start processing after message sent */
82
+ MESSAGE_PROCESSING_DELAY: 500,
83
+ /** Progressive re-check intervals for Claude Code delivery verification (ms).
84
+ * Total window: 500ms (processing delay) + 1000 + 2000 + 3000 = 6.5s */
85
+ CLAUDE_VERIFICATION_INTERVALS: [1000, 2000, 3000],
86
+ };
87
+ // Terminal controller constants
88
+ export const TERMINAL_CONTROLLER_CONSTANTS = {
89
+ DEFAULT_CAPTURE_LINES: 50,
90
+ MAX_CAPTURE_LINES: 500,
91
+ MAX_OUTPUT_SIZE: 16384, // 16KB max output per request
92
+ };
93
+ // Chat-related constants
94
+ export const CHAT_CONSTANTS = {
95
+ /** Regex pattern for extracting conversation ID from chat messages */
96
+ CONVERSATION_ID_PATTERN: /\[CHAT:([^\]]+)\]/,
97
+ /** Regex pattern for extracting conversation ID from response markers */
98
+ RESPONSE_CONVERSATION_ID_PATTERN: /\[CHAT_RESPONSE:([^\]]+)\]/,
99
+ /** Message format prefix for chat routing */
100
+ MESSAGE_PREFIX: 'CHAT',
101
+ };
102
+ /**
103
+ * Unified notification marker constants.
104
+ * Used by the orchestrator to send messages to chat, Slack, or both
105
+ * via a single `[NOTIFY]...[/NOTIFY]` block with a JSON payload.
106
+ */
107
+ export const NOTIFY_CONSTANTS = {
108
+ /** Regex for extracting complete [NOTIFY]...[/NOTIFY] blocks from terminal output */
109
+ MARKER_PATTERN: /\[NOTIFY\]([\s\S]*?)\[\/NOTIFY\]/g,
110
+ /** Opening marker string for detection */
111
+ OPEN_TAG: '[NOTIFY]',
112
+ /** Closing marker string */
113
+ CLOSE_TAG: '[/NOTIFY]',
114
+ };
115
+ /**
116
+ * Slack proactive notification constants.
117
+ * @deprecated Use NOTIFY_CONSTANTS instead. Legacy [SLACK_NOTIFY] markers are still
118
+ * processed for backward compatibility but new orchestrator output should use [NOTIFY].
119
+ */
120
+ export const SLACK_NOTIFY_CONSTANTS = {
121
+ /** Regex for extracting complete [SLACK_NOTIFY]...[/SLACK_NOTIFY] blocks from terminal output */
122
+ MARKER_PATTERN: /\[SLACK_NOTIFY\]([\s\S]*?)\[\/SLACK_NOTIFY\]/g,
123
+ /** Opening marker string for detection */
124
+ OPEN_TAG: '[SLACK_NOTIFY]',
125
+ /** Closing marker string */
126
+ CLOSE_TAG: '[/SLACK_NOTIFY]',
127
+ };
128
+ // Event-driven message delivery constants
129
+ export const EVENT_DELIVERY_CONSTANTS = {
130
+ /** Timeout for waiting for prompt detection (ms) */
131
+ PROMPT_DETECTION_TIMEOUT: 10000,
132
+ /** Timeout for waiting for delivery confirmation (ms) */
133
+ DELIVERY_CONFIRMATION_TIMEOUT: 5000,
134
+ /** Total timeout for message delivery with retries (ms) */
135
+ TOTAL_DELIVERY_TIMEOUT: 30000,
136
+ /** Default timeout for pattern matching (ms) */
137
+ DEFAULT_PATTERN_TIMEOUT: 30000,
138
+ /** Initial delay for terminal to echo short messages (ms) */
139
+ INITIAL_MESSAGE_DELAY: 300,
140
+ /** Extra time for multi-line paste indicator detection (ms) */
141
+ PASTE_CHECK_DELAY: 1200,
142
+ /** Delay between Enter key retry attempts (ms) */
143
+ ENTER_RETRY_DELAY: 800,
144
+ /** Maximum number of Enter key retry attempts */
145
+ MAX_ENTER_RETRIES: 3,
146
+ /** Delay after Enter retries exhausted before verifying message left input line (ms) */
147
+ POST_ENTER_VERIFICATION_DELAY: 500,
148
+ /** Maximum buffer size for terminal output collection (bytes) */
149
+ MAX_BUFFER_SIZE: 10000,
150
+ /** Minimum buffer length to consider processing detection valid */
151
+ MIN_BUFFER_FOR_PROCESSING_DETECTION: 50,
152
+ /** Timeout for waiting for agent to return to prompt before delivery (ms) */
153
+ AGENT_READY_TIMEOUT: 120000,
154
+ /** Shorter timeout for user messages (Slack/web chat) to reduce delivery delay (ms) */
155
+ USER_MESSAGE_TIMEOUT: 30000,
156
+ /** Whether to force-deliver user messages after timeout instead of re-queuing */
157
+ USER_MESSAGE_FORCE_DELIVER: true,
158
+ /** Interval for polling agent prompt readiness (ms) */
159
+ AGENT_READY_POLL_INTERVAL: 2000,
160
+ /** Interval for deep-scan polling with larger buffer when fast poll misses prompt (ms) */
161
+ DEEP_SCAN_INTERVAL: 5000,
162
+ /** Number of lines to capture for deep-scan prompt detection */
163
+ DEEP_SCAN_LINES: 500,
164
+ };
165
+ /**
166
+ * Constants for terminal content formatting.
167
+ * Used by formatMessageContent to safely process terminal output.
168
+ */
169
+ export const TERMINAL_FORMATTING_CONSTANTS = {
170
+ /** Maximum repeat count for cursor movement sequences (prevents memory exhaustion) */
171
+ MAX_CURSOR_REPEAT: 1000,
172
+ };
173
+ /**
174
+ * Terminal detection patterns for Claude Code interaction.
175
+ * These patterns are used across multiple services to detect terminal state.
176
+ */
177
+ export const TERMINAL_PATTERNS = {
178
+ /**
179
+ * Braille spinner characters used by Claude Code to indicate processing.
180
+ * Pattern: ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
181
+ */
182
+ SPINNER: /⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏/,
183
+ /**
184
+ * Claude Code's "working" indicator (filled circle).
185
+ */
186
+ WORKING_INDICATOR: /⏺/,
187
+ /**
188
+ * Combined pattern for detecting any processing activity.
189
+ * Includes spinner, working indicator, and status text.
190
+ */
191
+ PROCESSING: /⏺|⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏/,
192
+ /**
193
+ * Pattern for detecting paste indicator in bracketed paste mode.
194
+ * Appears as "[Pasted text #N +M lines]" in Claude Code.
195
+ */
196
+ PASTE_INDICATOR: /\[Pasted text/,
197
+ /**
198
+ * Pattern to detect if paste indicator is still visible (stuck state).
199
+ */
200
+ PASTE_STUCK: /\[Pasted text #\d+ \+\d+ lines\]/,
201
+ /**
202
+ * Agent prompt indicators (characters that appear at input prompts).
203
+ * Includes Claude Code (❯, >, ⏵), bash ($), and Gemini CLI (!).
204
+ */
205
+ PROMPT_CHARS: ['❯', '>', '⏵', '$', '!'],
206
+ /**
207
+ * Claude Code idle prompt detection.
208
+ * Matches:
209
+ * - ❯ or ⏵ or $ alone on a line (standard Claude Code prompt)
210
+ * - ❯❯ followed by space or end-of-line (bypass permissions prompt,
211
+ * e.g. "❯❯ bypass permissions on (shift+tab to cycle)")
212
+ */
213
+ CLAUDE_CODE_PROMPT: /(?:^|\n)\s*(?:[❯⏵$]\s*(?:\n|$)|❯❯(?:\s|$))/,
214
+ /**
215
+ * Gemini CLI idle prompt detection.
216
+ * Matches:
217
+ * - > or ! followed by a space (TUI prompt, may have placeholder text)
218
+ * - Box-drawing border (│, ┃) followed by > or ! (TUI bordered prompt)
219
+ * - "Type your message …" or "YOLO mode …" textual prompts
220
+ */
221
+ GEMINI_CLI_PROMPT: /(?:^|\n)\s*(?:[>!]\s|[│┃]\s*[>!]\s|.*?(?:Type\s+your\s+message|YOLO\s+mode))/i,
222
+ /**
223
+ * Combined prompt pattern for any runtime (union of Claude Code + Gemini CLI).
224
+ * Use runtime-specific patterns when you need to distinguish between runtimes.
225
+ */
226
+ PROMPT_STREAM: /(?:^|\n)\s*(?:[❯⏵$]\s*(?:\n|$)|❯❯(?:\s|$)|[>!]\s|[│┃]\s*[>!]\s|.*?(?:Type\s+your\s+message|YOLO\s+mode))/i,
227
+ /**
228
+ * Processing indicators including status text patterns.
229
+ */
230
+ PROCESSING_INDICATORS: [
231
+ /⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏/, // Spinner characters
232
+ /Thinking|Processing|Analyzing|Running/i, // Status text
233
+ /\[\d+\/\d+\]/, // Progress indicators like [1/3]
234
+ /\.\.\.$/, // Trailing dots indicating activity
235
+ ],
236
+ /**
237
+ * Pattern for detecting Claude Code processing with status text.
238
+ */
239
+ PROCESSING_WITH_TEXT: /thinking|processing|analyzing|⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏/i,
240
+ };
241
+ /**
242
+ * Message queue constants for sequential message processing.
243
+ * Used by the MessageQueueService for orchestrator communication.
244
+ */
245
+ export const MESSAGE_QUEUE_CONSTANTS = {
246
+ /** Maximum number of messages allowed in the queue */
247
+ MAX_QUEUE_SIZE: 100,
248
+ /** Default timeout for a single message response (ms) */
249
+ DEFAULT_MESSAGE_TIMEOUT: 120000,
250
+ /** Maximum number of completed/failed messages retained in history */
251
+ MAX_HISTORY_SIZE: 50,
252
+ /** Delay between processing consecutive messages (ms) */
253
+ INTER_MESSAGE_DELAY: 500,
254
+ /** Maximum number of requeue retries before permanently failing a message */
255
+ MAX_REQUEUE_RETRIES: 5,
256
+ /** Early ACK check timeout — if no terminal output within this window after
257
+ * delivery, the orchestrator is likely context-exhausted (ms) */
258
+ ACK_TIMEOUT: 15000,
259
+ /** Queue persistence file name (stored under crewly home) */
260
+ PERSISTENCE_FILE: 'message-queue.json',
261
+ /** Queue persistence directory name */
262
+ PERSISTENCE_DIR: 'queue',
263
+ /** Socket.IO event names for queue status updates */
264
+ SOCKET_EVENTS: {
265
+ /** Emitted when a new message is enqueued */
266
+ MESSAGE_ENQUEUED: 'queue:message_enqueued',
267
+ /** Emitted when a message starts processing */
268
+ MESSAGE_PROCESSING: 'queue:message_processing',
269
+ /** Emitted when a message is completed */
270
+ MESSAGE_COMPLETED: 'queue:message_completed',
271
+ /** Emitted when a message fails */
272
+ MESSAGE_FAILED: 'queue:message_failed',
273
+ /** Emitted when a message is cancelled */
274
+ MESSAGE_CANCELLED: 'queue:message_cancelled',
275
+ /** Emitted with full queue status update */
276
+ STATUS_UPDATE: 'queue:status_update',
277
+ },
278
+ };
279
+ /**
280
+ * Event bus constants for the agent event pub/sub system.
281
+ * Used by EventBusService for subscription management and notification delivery.
282
+ */
283
+ export const EVENT_BUS_CONSTANTS = {
284
+ /** Default subscription time-to-live in minutes */
285
+ DEFAULT_SUBSCRIPTION_TTL_MINUTES: 30,
286
+ /** Maximum allowed subscription TTL in minutes (24 hours) */
287
+ MAX_SUBSCRIPTION_TTL_MINUTES: 1440,
288
+ /** Maximum subscriptions per subscriber session */
289
+ MAX_SUBSCRIPTIONS_PER_SESSION: 50,
290
+ /** Maximum total subscriptions across all sessions */
291
+ MAX_TOTAL_SUBSCRIPTIONS: 200,
292
+ /** Interval for cleaning up expired subscriptions (ms) */
293
+ CLEANUP_INTERVAL: 60000,
294
+ /** Prefix for event notification messages delivered to orchestrator */
295
+ EVENT_MESSAGE_PREFIX: 'EVENT',
296
+ };
297
+ /**
298
+ * Constants for Slack thread file storage.
299
+ * Used by SlackThreadStoreService to persist thread conversations
300
+ * and agent-thread associations.
301
+ */
302
+ export const SLACK_THREAD_CONSTANTS = {
303
+ /** Directory name under crewly home for thread files */
304
+ STORAGE_DIR: 'slack-threads',
305
+ /** JSON file mapping agents to their originating threads */
306
+ AGENT_INDEX_FILE: 'agent-index.json',
307
+ /** File extension for thread conversation files */
308
+ FILE_EXTENSION: '.md',
309
+ /** Maximum age for thread files before cleanup (30 days) */
310
+ MAX_THREAD_AGE_MS: 30 * 24 * 60 * 60 * 1000,
311
+ };
312
+ /**
313
+ * Constants for Slack bridge fallback delivery.
314
+ * When the reply-slack skill doesn't deliver within the wait window,
315
+ * the bridge sends the response directly as a fallback.
316
+ */
317
+ export const SLACK_BRIDGE_CONSTANTS = {
318
+ /** Time to wait for the reply-slack skill to deliver before fallback (ms) */
319
+ SKILL_DELIVERY_WAIT_MS: 10_000,
320
+ };
321
+ /**
322
+ * Constants for NOTIFY Slack delivery reconciliation.
323
+ * Used by NotifyReconciliationService to retry failed Slack deliveries
324
+ * using persisted chat messages as the source of truth.
325
+ */
326
+ export const NOTIFY_RECONCILIATION_CONSTANTS = {
327
+ /** Interval between reconciliation runs (5 minutes) */
328
+ RECONCILIATION_INTERVAL_MS: 5 * 60 * 1000,
329
+ /** Maximum age of messages to consider for reconciliation (24 hours) */
330
+ MAX_MESSAGE_AGE_MS: 24 * 60 * 60 * 1000,
331
+ /** Maximum number of delivery attempts before marking as failed */
332
+ MAX_DELIVERY_ATTEMPTS: 5,
333
+ /** Delay before first reconciliation run after startup (30 seconds) */
334
+ STARTUP_DELAY_MS: 30 * 1000,
335
+ };
336
+ /**
337
+ * Constants for Claude Code session resume via /resume slash command.
338
+ * Used when restarting agents that were previously running before a backend restart.
339
+ */
340
+ export const CLAUDE_RESUME_CONSTANTS = {
341
+ /** Delay after sending /resume for the session picker to appear (ms) */
342
+ SESSION_PICKER_DELAY_MS: 3000,
343
+ /** Timeout for Claude to resume and return to prompt (ms) */
344
+ RESUME_READY_TIMEOUT_MS: 30000,
345
+ };
346
+ /**
347
+ * Constants for Gemini CLI shell mode detection and escape.
348
+ * Gemini CLI enters "shell mode" when it receives a `!` prefix or via `/shell`.
349
+ * In shell mode, input is executed as shell commands instead of being sent to the model.
350
+ * The prompt changes from `>` to `!` (or `$` in some versions).
351
+ */
352
+ export const GEMINI_SHELL_MODE_CONSTANTS = {
353
+ /**
354
+ * Patterns that indicate Gemini CLI is in shell mode.
355
+ * Matches `!` prompt char (with optional box-drawing border) when NOT followed
356
+ * by typical chat prompt indicators like "Type your message".
357
+ */
358
+ SHELL_MODE_PROMPT_PATTERNS: [
359
+ /[│┃]\s*!\s*[│┃]/, // Box-bordered shell prompt: │ ! │
360
+ /[│┃]\s*!\s+\S/, // Box-bordered shell prompt with text: │ ! command │
361
+ ],
362
+ /** Delay after sending Escape to wait for mode switch (ms) */
363
+ ESCAPE_DELAY_MS: 500,
364
+ /** Maximum attempts to exit shell mode */
365
+ MAX_ESCAPE_ATTEMPTS: 3,
366
+ };
367
+ /**
368
+ * Constants for runtime exit detection monitoring.
369
+ * Used by RuntimeExitMonitorService to detect when an agent CLI exits.
370
+ */
371
+ export const RUNTIME_EXIT_CONSTANTS = {
372
+ /** Maximum rolling buffer size for terminal output (bytes) */
373
+ MAX_BUFFER_SIZE: 8192,
374
+ /** Debounce delay after exit pattern match before confirming (ms) */
375
+ CONFIRMATION_DELAY_MS: 500,
376
+ /**
377
+ * Grace period after monitoring start to ignore false positives (ms).
378
+ * Set to 0 because exit patterns (e.g. "Agent powering down",
379
+ * "Interaction Summary") are specific enough to not appear during
380
+ * normal runtime initialization output.
381
+ */
382
+ STARTUP_GRACE_PERIOD_MS: 0,
383
+ /**
384
+ * Grace period for API activity before confirming a runtime exit (ms).
385
+ * If the agent made an API call within this window, the exit detection
386
+ * is treated as a false positive and skipped. This prevents false
387
+ * restarts when agents are actively calling skills/APIs but happen to
388
+ * produce PTY output that matches exit patterns.
389
+ */
390
+ API_ACTIVITY_GRACE_PERIOD_MS: 120_000,
391
+ };
392
+ /**
393
+ * Constants for context window monitoring and auto-recovery.
394
+ * Used by ContextWindowMonitorService to detect when an agent's Claude Code
395
+ * session is running low on context and trigger proactive warnings or recovery.
396
+ */
397
+ export const CONTEXT_WINDOW_MONITOR_CONSTANTS = {
398
+ /** Interval for periodic stale detection and cleanup (ms) */
399
+ CHECK_INTERVAL_MS: 30_000,
400
+ /** Context usage threshold for yellow (warning) level (%) */
401
+ YELLOW_THRESHOLD_PERCENT: 70,
402
+ /** Context usage threshold for red (danger) level (%) */
403
+ RED_THRESHOLD_PERCENT: 85,
404
+ /** Context usage threshold for critical level (%) — triggers auto-recovery */
405
+ CRITICAL_THRESHOLD_PERCENT: 95,
406
+ /** Whether auto-recovery is enabled at critical threshold */
407
+ AUTO_RECOVERY_ENABLED: true,
408
+ /** Maximum recovery attempts within the cooldown window */
409
+ MAX_RECOVERIES_PER_WINDOW: 2,
410
+ /** Cooldown window for recovery rate limiting (30 minutes) */
411
+ COOLDOWN_WINDOW_MS: 30 * 60 * 1000,
412
+ /** Grace period after monitoring start to ignore early readings (ms) */
413
+ STARTUP_GRACE_PERIOD_MS: 60_000,
414
+ /** Maximum rolling buffer size for PTY output (bytes) */
415
+ MAX_BUFFER_SIZE: 4096,
416
+ /** Threshold for considering a context state stale (5 minutes) */
417
+ STALE_DETECTION_THRESHOLD_MS: 5 * 60 * 1000,
418
+ };
419
+ /**
420
+ * Constants for sub-agent message queue.
421
+ * Used by SubAgentMessageQueue to buffer messages for agents that haven't
422
+ * completed initialization (status !== 'active') yet.
423
+ */
424
+ export const SUB_AGENT_QUEUE_CONSTANTS = {
425
+ /** Maximum messages per agent before dropping oldest */
426
+ MAX_QUEUE_SIZE: 50,
427
+ /** Delay between flushed messages on registration (ms) */
428
+ FLUSH_INTER_MESSAGE_DELAY: 2000,
429
+ };
430
+ /**
431
+ * Constants for proactive system resource monitoring and alerting.
432
+ * Used by SystemResourceAlertService to poll metrics, check thresholds,
433
+ * and send user-facing notifications before resources are exhausted.
434
+ */
435
+ export const SYSTEM_RESOURCE_ALERT_CONSTANTS = {
436
+ /** Polling interval for resource checks (ms) */
437
+ POLL_INTERVAL: 60000, // 1 minute
438
+ /** Cooldown between repeated alerts for the same metric (ms) */
439
+ ALERT_COOLDOWN: 600000, // 10 minutes
440
+ /** Thresholds for triggering alerts */
441
+ THRESHOLDS: {
442
+ DISK_WARNING: 85, // 85% used
443
+ DISK_CRITICAL: 95, // 95% used
444
+ MEMORY_WARNING: 85, // 85% used
445
+ MEMORY_CRITICAL: 95, // 95% used
446
+ CPU_WARNING: 80, // load avg 80% of cores
447
+ CPU_CRITICAL: 95, // load avg 95% of cores
448
+ },
449
+ };
450
+ /**
451
+ * Shared Slack API limits used by both image and file upload services.
452
+ */
453
+ export const SLACK_API_LIMITS = {
454
+ /** Maximum allowed file size (20 MB — Slack limit) */
455
+ MAX_FILE_SIZE: 20 * 1024 * 1024,
456
+ /** Maximum number of retry attempts for Slack API 429 responses */
457
+ UPLOAD_MAX_RETRIES: 3,
458
+ /** Default backoff delay (ms) when no Retry-After header is present */
459
+ UPLOAD_DEFAULT_BACKOFF_MS: 5000,
460
+ };
461
+ /**
462
+ * Constants for Slack image download and temporary storage.
463
+ * Used by SlackImageService to validate, download, and manage
464
+ * images sent by users in Slack messages.
465
+ */
466
+ export const SLACK_IMAGE_CONSTANTS = {
467
+ /** Temp directory for downloaded images (relative to ~/.crewly/) */
468
+ TEMP_DIR: 'tmp/slack-images',
469
+ /** Maximum allowed file size for image downloads (20 MB) */
470
+ MAX_FILE_SIZE: SLACK_API_LIMITS.MAX_FILE_SIZE,
471
+ /** Supported image MIME types for download (SVG excluded — not accepted by LLM vision APIs) */
472
+ SUPPORTED_MIMES: ['image/png', 'image/jpeg', 'image/gif', 'image/webp'],
473
+ /**
474
+ * Expected Content-Type prefixes for valid image responses from Slack.
475
+ * Used to detect when Slack returns an HTML error page instead of an image.
476
+ */
477
+ VALID_RESPONSE_CONTENT_TYPES: ['image/'],
478
+ /**
479
+ * Magic byte signatures for supported image formats.
480
+ * Used to verify that a downloaded file is actually an image
481
+ * (Slack can return 200 OK with an HTML body when auth fails).
482
+ */
483
+ IMAGE_MAGIC_BYTES: {
484
+ PNG: [0x89, 0x50, 0x4E, 0x47], // \x89PNG
485
+ JPEG: [0xFF, 0xD8, 0xFF], // JPEG SOI marker
486
+ GIF87: [0x47, 0x49, 0x46, 0x38, 0x37], // GIF87a
487
+ GIF89: [0x47, 0x49, 0x46, 0x38, 0x39], // GIF89a
488
+ WEBP_RIFF: [0x52, 0x49, 0x46, 0x46], // RIFF (WebP container)
489
+ },
490
+ /** Interval for cleaning up expired temp files (1 hour) */
491
+ CLEANUP_INTERVAL: 60 * 60 * 1000,
492
+ /** Maximum age for temp files before cleanup (24 hours) */
493
+ FILE_TTL: 24 * 60 * 60 * 1000,
494
+ /** Maximum concurrent image downloads per message */
495
+ MAX_CONCURRENT_DOWNLOADS: 3,
496
+ /** Warning threshold for temp directory total size (500 MB) */
497
+ MAX_TEMP_DIR_SIZE: 500 * 1024 * 1024,
498
+ /** Maximum redirect hops to follow during file download */
499
+ MAX_DOWNLOAD_REDIRECTS: 5,
500
+ /** Maximum number of retry attempts for Slack API 429 responses */
501
+ UPLOAD_MAX_RETRIES: SLACK_API_LIMITS.UPLOAD_MAX_RETRIES,
502
+ /** Default backoff delay (ms) when no Retry-After header is present */
503
+ UPLOAD_DEFAULT_BACKOFF_MS: SLACK_API_LIMITS.UPLOAD_DEFAULT_BACKOFF_MS,
504
+ };
505
+ /**
506
+ * Constants for generic file uploads to Slack channels.
507
+ * Used by the upload-file endpoint and send-pdf-to-slack skill
508
+ * to validate and upload arbitrary file types (PDF, images, docs, etc.).
509
+ */
510
+ export const SLACK_FILE_UPLOAD_CONSTANTS = {
511
+ /** Temp directory for generated PDFs (relative to ~/.crewly/) */
512
+ TEMP_DIR: 'tmp/slack-pdfs',
513
+ /** Maximum allowed file size for uploads (20 MB — Slack limit) */
514
+ MAX_FILE_SIZE: SLACK_API_LIMITS.MAX_FILE_SIZE,
515
+ /** File extensions accepted for upload */
516
+ SUPPORTED_EXTENSIONS: [
517
+ '.pdf', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg',
518
+ '.txt', '.csv', '.doc', '.docx', '.xls', '.xlsx',
519
+ ],
520
+ /** Maximum number of retry attempts for Slack API 429 responses */
521
+ UPLOAD_MAX_RETRIES: SLACK_API_LIMITS.UPLOAD_MAX_RETRIES,
522
+ /** Default backoff delay (ms) when no Retry-After header is present */
523
+ UPLOAD_DEFAULT_BACKOFF_MS: SLACK_API_LIMITS.UPLOAD_DEFAULT_BACKOFF_MS,
524
+ };
525
+ /**
526
+ * Constants for Gemini embedding-based knowledge search.
527
+ * Used by KnowledgeSearchService when GEMINI_API_KEY is configured.
528
+ */
529
+ export const EMBEDDING_CONSTANTS = {
530
+ /** Gemini embedding model identifier */
531
+ GEMINI_MODEL: 'text-embedding-004',
532
+ /** Base endpoint for Gemini generative language API */
533
+ GEMINI_ENDPOINT: 'https://generativelanguage.googleapis.com/v1beta/models',
534
+ /** Timeout for embedding API calls (ms) */
535
+ TIMEOUT_MS: 10000,
536
+ /** Maximum documents to embed in a single batch */
537
+ MAX_BATCH_SIZE: 20,
538
+ /** Expected embedding vector dimensions */
539
+ EMBEDDING_DIMENSIONS: 768,
540
+ };
541
+ /**
542
+ * Message source identifiers for the queue processor.
543
+ * Determines delivery strategy (timeouts, retry behavior).
544
+ */
545
+ export const MESSAGE_SOURCES = {
546
+ SLACK: 'slack',
547
+ WEB_CHAT: 'web_chat',
548
+ SYSTEM_EVENT: 'system_event',
549
+ };
550
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Project } from '../types/index.js';
2
+ export declare class ProjectModel implements Project {
3
+ id: string;
4
+ name: string;
5
+ path: string;
6
+ teams: Record<string, string[]>;
7
+ status: 'active' | 'paused' | 'completed' | 'stopped';
8
+ createdAt: string;
9
+ updatedAt: string;
10
+ constructor(data: Partial<Project>);
11
+ updateStatus(status: Project['status']): void;
12
+ assignTeam(teamId: string, role: string): void;
13
+ unassignTeam(teamId: string, role?: string): void;
14
+ getAssignedTeams(): string[];
15
+ toJSON(): Project;
16
+ static fromJSON(data: Project): ProjectModel;
17
+ }
18
+ //# sourceMappingURL=Project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../../../../backend/src/models/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,YAAa,YAAW,OAAO;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;IAUlC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IAK7C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAU9C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBjD,gBAAgB,IAAI,MAAM,EAAE;IAI5B,MAAM,IAAI,OAAO;IAYjB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY;CAG7C"}
@@ -0,0 +1,70 @@
1
+ export class ProjectModel {
2
+ id;
3
+ name;
4
+ path;
5
+ teams;
6
+ status;
7
+ createdAt;
8
+ updatedAt;
9
+ constructor(data) {
10
+ this.id = data.id || '';
11
+ this.name = data.name || '';
12
+ this.path = data.path || '';
13
+ this.teams = data.teams || {};
14
+ this.status = data.status || 'stopped';
15
+ this.createdAt = data.createdAt || new Date().toISOString();
16
+ this.updatedAt = data.updatedAt || new Date().toISOString();
17
+ }
18
+ updateStatus(status) {
19
+ this.status = status;
20
+ this.updatedAt = new Date().toISOString();
21
+ }
22
+ assignTeam(teamId, role) {
23
+ if (!this.teams[role]) {
24
+ this.teams[role] = [];
25
+ }
26
+ if (!this.teams[role].includes(teamId)) {
27
+ this.teams[role].push(teamId);
28
+ }
29
+ this.updatedAt = new Date().toISOString();
30
+ }
31
+ unassignTeam(teamId, role) {
32
+ if (role) {
33
+ // Unassign from specific role
34
+ if (this.teams[role]) {
35
+ this.teams[role] = this.teams[role].filter(id => id !== teamId);
36
+ if (this.teams[role].length === 0) {
37
+ delete this.teams[role];
38
+ }
39
+ }
40
+ }
41
+ else {
42
+ // Unassign from all roles
43
+ for (const [currentRole, teamIds] of Object.entries(this.teams)) {
44
+ this.teams[currentRole] = teamIds.filter(id => id !== teamId);
45
+ if (this.teams[currentRole].length === 0) {
46
+ delete this.teams[currentRole];
47
+ }
48
+ }
49
+ }
50
+ this.updatedAt = new Date().toISOString();
51
+ }
52
+ getAssignedTeams() {
53
+ return Object.values(this.teams).flat();
54
+ }
55
+ toJSON() {
56
+ return {
57
+ id: this.id,
58
+ name: this.name,
59
+ path: this.path,
60
+ teams: this.teams,
61
+ status: this.status,
62
+ createdAt: this.createdAt,
63
+ updatedAt: this.updatedAt,
64
+ };
65
+ }
66
+ static fromJSON(data) {
67
+ return new ProjectModel(data);
68
+ }
69
+ }
70
+ //# sourceMappingURL=Project.js.map