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,517 @@
1
+ /**
2
+ * Memory Service Coordinator
3
+ *
4
+ * Provides a unified interface for both agent-level and project-level memory services.
5
+ * Handles cross-cutting concerns like logging, validation, and combined context generation.
6
+ *
7
+ * @module services/memory/memory.service
8
+ */
9
+ import * as path from 'path';
10
+ import { AgentMemoryService } from './agent-memory.service.js';
11
+ import { ProjectMemoryService } from './project-memory.service.js';
12
+ import { LoggerService } from '../core/logger.service.js';
13
+ import { KnowledgeSearchService } from '../knowledge/knowledge-search.service.js';
14
+ import { safeReadJson } from '../../utils/file-io.utils.js';
15
+ import { CREWLY_CONSTANTS, MEMORY_CONSTANTS } from '../../constants.js';
16
+ /**
17
+ * Unified Memory Service Coordinator
18
+ *
19
+ * Provides a single entry point for all memory operations, coordinating
20
+ * between agent-level and project-level memory services.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const memoryService = MemoryService.getInstance();
25
+ *
26
+ * // Initialize for a session
27
+ * await memoryService.initializeForSession('dev-001', 'developer', '/path/to/project');
28
+ *
29
+ * // Remember something
30
+ * await memoryService.remember({
31
+ * agentId: 'dev-001',
32
+ * projectPath: '/path/to/project',
33
+ * content: 'Always use async/await instead of callbacks',
34
+ * category: 'pattern',
35
+ * scope: 'project',
36
+ * metadata: { title: 'Async Pattern' }
37
+ * });
38
+ *
39
+ * // Get full context for prompts
40
+ * const context = await memoryService.getFullContext('dev-001', '/path/to/project');
41
+ * ```
42
+ */
43
+ export class MemoryService {
44
+ static instance = null;
45
+ agentMemory;
46
+ projectMemory;
47
+ logger = LoggerService.getInstance().createComponentLogger('MemoryService');
48
+ /**
49
+ * Creates a new MemoryService instance
50
+ */
51
+ constructor() {
52
+ this.agentMemory = AgentMemoryService.getInstance();
53
+ this.projectMemory = ProjectMemoryService.getInstance();
54
+ }
55
+ /**
56
+ * Gets the singleton instance of MemoryService
57
+ *
58
+ * @returns The singleton MemoryService instance
59
+ */
60
+ static getInstance() {
61
+ if (!MemoryService.instance) {
62
+ MemoryService.instance = new MemoryService();
63
+ }
64
+ return MemoryService.instance;
65
+ }
66
+ /**
67
+ * Clears the singleton instance (useful for testing)
68
+ */
69
+ static clearInstance() {
70
+ MemoryService.instance = null;
71
+ AgentMemoryService.clearInstance();
72
+ ProjectMemoryService.clearInstance();
73
+ }
74
+ /**
75
+ * Gets the underlying AgentMemoryService
76
+ *
77
+ * @returns The AgentMemoryService instance
78
+ */
79
+ getAgentMemoryService() {
80
+ return this.agentMemory;
81
+ }
82
+ /**
83
+ * Gets the underlying ProjectMemoryService
84
+ *
85
+ * @returns The ProjectMemoryService instance
86
+ */
87
+ getProjectMemoryService() {
88
+ return this.projectMemory;
89
+ }
90
+ /**
91
+ * Maps RememberCategory to RoleKnowledgeCategory for agent memory
92
+ */
93
+ mapToKnowledgeCategory(category) {
94
+ switch (category) {
95
+ case 'fact':
96
+ return 'best-practice';
97
+ case 'pattern':
98
+ return 'workflow';
99
+ case 'preference':
100
+ return 'workflow';
101
+ default:
102
+ return 'best-practice';
103
+ }
104
+ }
105
+ /**
106
+ * Parses a preference string into AgentPreferences
107
+ */
108
+ parsePreference(content) {
109
+ // Simple parsing - in practice this would be more sophisticated
110
+ const preferences = {};
111
+ const lowerContent = content.toLowerCase();
112
+ if (lowerContent.includes('concise') || lowerContent.includes('brief')) {
113
+ preferences.communicationStyle = {
114
+ verbosity: 'concise',
115
+ askBeforeAction: true,
116
+ };
117
+ }
118
+ else if (lowerContent.includes('detailed') || lowerContent.includes('verbose')) {
119
+ preferences.communicationStyle = {
120
+ verbosity: 'detailed',
121
+ askBeforeAction: true,
122
+ };
123
+ }
124
+ if (lowerContent.includes('small task') || lowerContent.includes('small chunk')) {
125
+ preferences.workPatterns = { breakdownSize: 'small' };
126
+ }
127
+ else if (lowerContent.includes('large task') || lowerContent.includes('large chunk')) {
128
+ preferences.workPatterns = { breakdownSize: 'large' };
129
+ }
130
+ return preferences;
131
+ }
132
+ /**
133
+ * Checks if a learning is role-relevant (should be stored in agent memory)
134
+ */
135
+ isRoleRelevant(learning) {
136
+ const roleKeywords = [
137
+ 'always', 'never', 'should', 'must', 'prefer', 'avoid',
138
+ 'best practice', 'pattern', 'convention', 'standard',
139
+ 'remember to', 'don\'t forget', 'important to'
140
+ ];
141
+ const lowerLearning = learning.toLowerCase();
142
+ return roleKeywords.some(keyword => lowerLearning.includes(keyword));
143
+ }
144
+ /**
145
+ * Filters memories by relevance to a context
146
+ */
147
+ filterRelevant(knowledge, context, limit) {
148
+ const contextWords = context.toLowerCase().split(/\s+/);
149
+ const scored = knowledge.map(entry => {
150
+ const contentWords = entry.content.toLowerCase().split(/\s+/);
151
+ const matchCount = contextWords.filter(word => contentWords.some(cw => cw.includes(word) || word.includes(cw))).length;
152
+ return {
153
+ entry,
154
+ score: matchCount * entry.confidence,
155
+ };
156
+ });
157
+ return scored
158
+ .filter(s => s.score > 0)
159
+ .sort((a, b) => b.score - a.score)
160
+ .slice(0, limit || 10)
161
+ .map(s => `[${s.entry.category}] ${s.entry.content}`);
162
+ }
163
+ /**
164
+ * Formats search results into strings
165
+ */
166
+ formatSearchResults(results, limit) {
167
+ const formatted = [];
168
+ const maxPerType = Math.ceil((limit || 10) / 4);
169
+ results.patterns.slice(0, maxPerType).forEach(p => {
170
+ formatted.push(`[pattern] ${p.title}: ${p.description}`);
171
+ });
172
+ results.decisions.slice(0, maxPerType).forEach(d => {
173
+ formatted.push(`[decision] ${d.title}: ${d.decision}`);
174
+ });
175
+ results.gotchas.slice(0, maxPerType).forEach(g => {
176
+ formatted.push(`[gotcha] ${g.title}: ${g.problem} → ${g.solution}`);
177
+ });
178
+ results.relationships.slice(0, maxPerType).forEach(r => {
179
+ formatted.push(`[relationship] ${r.from} ${r.relationshipType} ${r.to}`);
180
+ });
181
+ return formatted.slice(0, limit || 10);
182
+ }
183
+ /**
184
+ * Combines agent and project memories into a formatted string
185
+ */
186
+ combineMemories(result) {
187
+ const sections = [];
188
+ if (result.agentMemories.length > 0) {
189
+ sections.push('### From Your Experience\n' + result.agentMemories.map(m => `- ${m}`).join('\n'));
190
+ }
191
+ if (result.projectMemories.length > 0) {
192
+ sections.push('### From Project Knowledge\n' + result.projectMemories.map(m => `- ${m}`).join('\n'));
193
+ }
194
+ if (result.knowledgeDocuments && result.knowledgeDocuments.length > 0) {
195
+ sections.push('### From Knowledge Base\n' +
196
+ result.knowledgeDocuments
197
+ .map((d) => `- **${d.title}** (${d.category}): ${d.preview}`)
198
+ .join('\n'));
199
+ }
200
+ return sections.join('\n\n');
201
+ }
202
+ // ========================= PUBLIC INTERFACE =========================
203
+ /**
204
+ * Unified remember operation - stores content in appropriate memory
205
+ *
206
+ * @param params - Remember parameters
207
+ * @returns ID of the stored memory entry
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * // Remember a pattern for the project
212
+ * await memoryService.remember({
213
+ * agentId: 'dev-001',
214
+ * projectPath: '/path/to/project',
215
+ * content: 'Use error wrapper for all API endpoints',
216
+ * category: 'pattern',
217
+ * scope: 'project',
218
+ * metadata: {
219
+ * title: 'API Error Handling',
220
+ * patternCategory: 'api',
221
+ * example: 'handleApiError(handler)'
222
+ * }
223
+ * });
224
+ * ```
225
+ */
226
+ async remember(params) {
227
+ this.logger.debug('Remember called', {
228
+ agentId: params.agentId,
229
+ scope: params.scope,
230
+ category: params.category,
231
+ });
232
+ if (params.scope === 'agent') {
233
+ return this.rememberForAgent(params);
234
+ }
235
+ else {
236
+ return this.rememberForProject(params);
237
+ }
238
+ }
239
+ /**
240
+ * Stores memory at agent level
241
+ */
242
+ async rememberForAgent(params) {
243
+ switch (params.category) {
244
+ case 'fact':
245
+ case 'pattern':
246
+ return this.agentMemory.addRoleKnowledge(params.agentId, {
247
+ category: this.mapToKnowledgeCategory(params.category),
248
+ content: params.content,
249
+ learnedFrom: params.metadata?.taskId,
250
+ confidence: 0.5,
251
+ });
252
+ case 'preference':
253
+ await this.agentMemory.updatePreferences(params.agentId, this.parsePreference(params.content));
254
+ return 'preference-updated';
255
+ default:
256
+ throw new Error(`Category '${params.category}' is not valid for agent scope. Use 'fact', 'pattern', or 'preference'.`);
257
+ }
258
+ }
259
+ /**
260
+ * Stores memory at project level
261
+ */
262
+ async rememberForProject(params) {
263
+ if (!params.projectPath) {
264
+ throw new Error('projectPath is required for project scope');
265
+ }
266
+ switch (params.category) {
267
+ case 'pattern':
268
+ return this.projectMemory.addPattern(params.projectPath, {
269
+ category: params.metadata?.patternCategory || 'other',
270
+ title: params.metadata?.title || 'Untitled Pattern',
271
+ description: params.content,
272
+ example: params.metadata?.example,
273
+ files: params.metadata?.files,
274
+ discoveredBy: params.agentId,
275
+ });
276
+ case 'decision':
277
+ return this.projectMemory.addDecision(params.projectPath, {
278
+ title: params.metadata?.title || 'Untitled Decision',
279
+ decision: params.content,
280
+ rationale: params.metadata?.rationale || '',
281
+ alternatives: params.metadata?.alternatives,
282
+ decidedBy: params.agentId,
283
+ affectedAreas: params.metadata?.affectedAreas,
284
+ });
285
+ case 'gotcha':
286
+ return this.projectMemory.addGotcha(params.projectPath, {
287
+ title: params.metadata?.title || 'Gotcha',
288
+ problem: params.content,
289
+ solution: params.metadata?.solution || '',
290
+ severity: params.metadata?.severity || 'medium',
291
+ discoveredBy: params.agentId,
292
+ });
293
+ case 'relationship':
294
+ if (!params.metadata?.targetComponent) {
295
+ throw new Error('targetComponent is required in metadata for relationship category');
296
+ }
297
+ return this.projectMemory.addRelationship(params.projectPath, {
298
+ from: params.content, // content is the source component
299
+ to: params.metadata.targetComponent,
300
+ relationshipType: params.metadata?.relationshipType || 'uses',
301
+ });
302
+ default:
303
+ throw new Error(`Category '${params.category}' is not valid for project scope. Use 'pattern', 'decision', 'gotcha', or 'relationship'.`);
304
+ }
305
+ }
306
+ /**
307
+ * Unified recall operation - retrieves relevant memories
308
+ *
309
+ * @param params - Recall parameters
310
+ * @returns Recall results from appropriate scopes
311
+ *
312
+ * @example
313
+ * ```typescript
314
+ * const memories = await memoryService.recall({
315
+ * agentId: 'dev-001',
316
+ * projectPath: '/path/to/project',
317
+ * context: 'error handling in API endpoints',
318
+ * scope: 'both',
319
+ * limit: 10
320
+ * });
321
+ * console.log(memories.combined);
322
+ * ```
323
+ */
324
+ async recall(params) {
325
+ this.logger.debug('Recall called', {
326
+ agentId: params.agentId,
327
+ scope: params.scope,
328
+ context: params.context.substring(0, 50),
329
+ });
330
+ const result = {
331
+ agentMemories: [],
332
+ projectMemories: [],
333
+ combined: '',
334
+ };
335
+ // Build parallel fetch promises
336
+ const promises = [];
337
+ // Fetch from agent memory
338
+ if (params.scope === 'agent' || params.scope === 'both') {
339
+ promises.push(this.agentMemory.getRoleKnowledge(params.agentId).then((knowledge) => {
340
+ result.agentMemories = this.filterRelevant(knowledge, params.context, params.limit);
341
+ }));
342
+ }
343
+ // Fetch from project memory
344
+ if ((params.scope === 'project' || params.scope === 'both') && params.projectPath) {
345
+ promises.push(this.projectMemory.searchAll(params.projectPath, params.context).then((searchResults) => {
346
+ result.projectMemories = this.formatSearchResults(searchResults, params.limit);
347
+ }));
348
+ }
349
+ // Fetch from knowledge base (search both global and project scopes)
350
+ promises.push(this.searchKnowledgeDocuments(params.context, params.projectPath).then((docs) => {
351
+ if (docs.length > 0) {
352
+ result.knowledgeDocuments = docs;
353
+ }
354
+ }));
355
+ await Promise.all(promises);
356
+ result.combined = this.combineMemories(result);
357
+ return result;
358
+ }
359
+ /**
360
+ * Searches knowledge documents across global and project scopes.
361
+ *
362
+ * @param context - Search query text
363
+ * @param projectPath - Optional project path for project-scoped search
364
+ * @returns Combined and deduplicated knowledge document summaries
365
+ */
366
+ async searchKnowledgeDocuments(context, projectPath) {
367
+ try {
368
+ const searchService = KnowledgeSearchService.getInstance();
369
+ const searchPromises = [
370
+ searchService.search(context, 'global'),
371
+ ];
372
+ if (projectPath) {
373
+ searchPromises.push(searchService.search(context, 'project', projectPath));
374
+ }
375
+ const results = await Promise.all(searchPromises);
376
+ const combined = results.flat();
377
+ // Deduplicate by document ID
378
+ const seen = new Set();
379
+ return combined.filter((doc) => {
380
+ if (seen.has(doc.id)) {
381
+ return false;
382
+ }
383
+ seen.add(doc.id);
384
+ return true;
385
+ });
386
+ }
387
+ catch (error) {
388
+ this.logger.warn('Failed to search knowledge documents', {
389
+ error: error instanceof Error ? error.message : String(error),
390
+ });
391
+ return [];
392
+ }
393
+ }
394
+ /**
395
+ * Generates combined context from both agent and project memory
396
+ *
397
+ * @param agentId - Agent identifier
398
+ * @param projectPath - Project path
399
+ * @returns Combined context string for prompt injection
400
+ */
401
+ async getFullContext(agentId, projectPath) {
402
+ this.logger.debug('Getting full context', { agentId, projectPath });
403
+ const [agentContext, projectContext] = await Promise.all([
404
+ this.agentMemory.generateAgentContext(agentId),
405
+ this.projectMemory.generateProjectContext(projectPath),
406
+ ]);
407
+ const sections = [];
408
+ if (agentContext) {
409
+ sections.push('# Your Agent Memory\n\n' + agentContext);
410
+ }
411
+ if (projectContext) {
412
+ sections.push('# Project Knowledge\n\n' + projectContext);
413
+ }
414
+ return sections.join('\n\n---\n\n').trim();
415
+ }
416
+ /**
417
+ * Records a learning to both project learnings and potentially agent memory
418
+ *
419
+ * @param params - Learning parameters
420
+ */
421
+ async recordLearning(params) {
422
+ this.logger.debug('Recording learning', {
423
+ agentId: params.agentId,
424
+ projectPath: params.projectPath,
425
+ });
426
+ // Record to project learnings (always)
427
+ await this.projectMemory.recordLearning(params.projectPath, params.agentId, params.agentRole, params.learning, {
428
+ relatedTask: params.relatedTask,
429
+ relatedFiles: params.relatedFiles,
430
+ });
431
+ // Also add to agent knowledge if it's role-relevant
432
+ if (this.isRoleRelevant(params.learning)) {
433
+ try {
434
+ await this.agentMemory.addRoleKnowledge(params.agentId, {
435
+ category: 'best-practice',
436
+ content: params.learning,
437
+ learnedFrom: params.relatedTask,
438
+ confidence: 0.3, // Lower initial confidence for auto-extracted
439
+ });
440
+ this.logger.debug('Also added to agent knowledge', { agentId: params.agentId });
441
+ }
442
+ catch (error) {
443
+ // Don't fail if agent memory write fails
444
+ this.logger.warn('Failed to add learning to agent memory', { error });
445
+ }
446
+ }
447
+ }
448
+ /**
449
+ * Initializes memory for a new session
450
+ *
451
+ * @param agentId - Agent identifier
452
+ * @param role - Agent's role
453
+ * @param projectPath - Project path
454
+ */
455
+ async initializeForSession(agentId, role, projectPath) {
456
+ this.logger.info('Initializing memory for session', { agentId, role, projectPath });
457
+ await Promise.all([
458
+ this.agentMemory.initializeAgent(agentId, role),
459
+ this.projectMemory.initializeProject(projectPath),
460
+ ]);
461
+ this.logger.info('Memory initialized for session', { agentId, role, projectPath });
462
+ }
463
+ /**
464
+ * Recalls knowledge from all agents that have worked on a project
465
+ *
466
+ * Reads the project's agents-index.json, then searches each agent's role
467
+ * knowledge for entries relevant to the given context. Results are merged,
468
+ * deduplicated, and sorted by relevance.
469
+ *
470
+ * @param projectPath - Absolute path to the project
471
+ * @param context - Search context for relevance filtering
472
+ * @param limit - Maximum number of results (default 20)
473
+ * @returns Array of formatted memory strings from all agents
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const teamKnowledge = await memoryService.recallFromAllAgents(
478
+ * '/projects/app',
479
+ * 'authentication middleware',
480
+ * 15,
481
+ * );
482
+ * ```
483
+ */
484
+ async recallFromAllAgents(projectPath, context, limit = 20) {
485
+ this.logger.debug('Recalling from all agents', { projectPath, context: context.substring(0, 50) });
486
+ const indexPath = path.join(projectPath, CREWLY_CONSTANTS.PATHS.CREWLY_HOME, MEMORY_CONSTANTS.PATHS.AGENTS_INDEX);
487
+ const defaultIndex = { agents: [] };
488
+ const index = await safeReadJson(indexPath, defaultIndex, this.logger);
489
+ if (index.agents.length === 0) {
490
+ return [];
491
+ }
492
+ const allMemories = [];
493
+ for (const agent of index.agents) {
494
+ try {
495
+ const knowledge = await this.agentMemory.getRoleKnowledge(agent.agentId);
496
+ const relevant = this.filterRelevant(knowledge, context, Math.ceil(limit / index.agents.length));
497
+ relevant.forEach(m => {
498
+ allMemories.push(`[${agent.role}/${agent.agentId}] ${m}`);
499
+ });
500
+ }
501
+ catch {
502
+ this.logger.debug('Failed to read knowledge for agent', { agentId: agent.agentId });
503
+ }
504
+ }
505
+ // Also include project-level knowledge
506
+ try {
507
+ const searchResults = await this.projectMemory.searchAll(projectPath, context);
508
+ const projectMemories = this.formatSearchResults(searchResults, Math.ceil(limit / 2));
509
+ allMemories.push(...projectMemories);
510
+ }
511
+ catch {
512
+ this.logger.debug('Failed to search project knowledge', { projectPath });
513
+ }
514
+ return allMemories.slice(0, limit);
515
+ }
516
+ }
517
+ //# sourceMappingURL=memory.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/memory.service.ts"],"names":[],"mappings":"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"}