crewly 1.13.1 → 1.14.0

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 (424) hide show
  1. package/config/constants.ts +8 -0
  2. package/config/roles/orchestrator/prompt.md +23 -0
  3. package/config/skills/agent/core/reply-channel/SKILL.md +6 -0
  4. package/config/skills/agent/core/reply-channel/execute.sh +14 -2
  5. package/config/skills/agent/core/slack-post/SKILL.md +126 -0
  6. package/config/skills/agent/core/slack-post/execute.sh +127 -0
  7. package/config/skills/agent/remote-browser/SKILL.md +178 -0
  8. package/config/skills/agent/xiaoyuzhoufm-transcript/SKILL.md +46 -22
  9. package/config/skills/agent/xiaoyuzhoufm-transcript/execute.sh +82 -214
  10. package/config/skills/agent/xiaoyuzhoufm-transcript/skill.json +3 -3
  11. package/config/skills/orchestrator/get-team-status/SKILL.md +5 -1
  12. package/config/skills/orchestrator/get-team-status/execute.sh +28 -2
  13. package/config/slack-app-manifest.json +7 -1
  14. package/dist/backend/backend/src/config/oauth.config.d.ts +93 -19
  15. package/dist/backend/backend/src/config/oauth.config.d.ts.map +1 -1
  16. package/dist/backend/backend/src/config/oauth.config.js +121 -19
  17. package/dist/backend/backend/src/config/oauth.config.js.map +1 -1
  18. package/dist/backend/backend/src/constants.d.ts +60 -0
  19. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  20. package/dist/backend/backend/src/constants.js +74 -0
  21. package/dist/backend/backend/src/constants.js.map +1 -1
  22. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  23. package/dist/backend/backend/src/controllers/chat/chat.controller.js +33 -4
  24. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  25. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.js +27 -9
  27. package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  29. package/dist/backend/backend/src/controllers/slack/slack.controller.js +342 -0
  30. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  31. package/dist/backend/backend/src/index.d.ts.map +1 -1
  32. package/dist/backend/backend/src/index.js +23 -7
  33. package/dist/backend/backend/src/index.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +10 -0
  35. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  36. package/dist/backend/backend/src/services/agent/idle-detection.service.js +37 -0
  37. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  38. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  39. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +13 -11
  40. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  41. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +14 -0
  42. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  43. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +56 -0
  44. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  45. package/dist/backend/backend/src/services/browser/browser-services.registry.d.ts +63 -0
  46. package/dist/backend/backend/src/services/browser/browser-services.registry.d.ts.map +1 -0
  47. package/dist/backend/backend/src/services/browser/browser-services.registry.js +74 -0
  48. package/dist/backend/backend/src/services/browser/browser-services.registry.js.map +1 -0
  49. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +25 -1
  50. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +19 -7
  52. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  53. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +57 -0
  54. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +110 -1
  56. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  57. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
  58. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +43 -0
  60. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  61. package/dist/backend/backend/src/services/core/storage.service.d.ts +6 -0
  62. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/core/storage.service.js +1 -1
  64. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  65. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +6 -2
  67. package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
  68. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +14 -0
  70. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  71. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +8 -0
  72. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  73. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +31 -3
  74. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  75. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +34 -0
  76. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  77. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +99 -10
  78. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  79. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts +209 -0
  80. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -0
  81. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js +416 -0
  82. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js.map +1 -0
  83. package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +124 -0
  84. package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -0
  85. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +243 -0
  86. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -0
  87. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +11 -0
  88. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  89. package/dist/backend/backend/src/services/slack/slack-initializer.js +56 -0
  90. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  91. package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts +103 -0
  92. package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -0
  93. package/dist/backend/backend/src/services/slack/slack-mention-resolver.js +197 -0
  94. package/dist/backend/backend/src/services/slack/slack-mention-resolver.js.map +1 -0
  95. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +18 -0
  97. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  98. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +329 -0
  99. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -0
  100. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +821 -0
  101. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -0
  102. package/dist/backend/backend/src/services/slack/slack.service.d.ts +116 -1
  103. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/slack/slack.service.js +297 -3
  105. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +22 -0
  107. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +71 -0
  109. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  110. package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +20 -2
  111. package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +27 -2
  113. package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -1
  114. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts +15 -2
  115. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts.map +1 -1
  116. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js +33 -7
  117. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js.map +1 -1
  118. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +37 -0
  119. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +74 -8
  121. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -1
  122. package/dist/backend/backend/src/types/slack.types.d.ts +87 -0
  123. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  124. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  125. package/dist/backend/build-info.json +2 -2
  126. package/dist/backend/config/constants.d.ts +8 -0
  127. package/dist/backend/config/constants.d.ts.map +1 -1
  128. package/dist/backend/config/constants.js +8 -0
  129. package/dist/backend/config/constants.js.map +1 -1
  130. package/dist/cli/backend/src/config/oauth.config.d.ts +93 -19
  131. package/dist/cli/backend/src/config/oauth.config.d.ts.map +1 -1
  132. package/dist/cli/backend/src/config/oauth.config.js +121 -19
  133. package/dist/cli/backend/src/config/oauth.config.js.map +1 -1
  134. package/dist/cli/backend/src/constants.d.ts +60 -0
  135. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  136. package/dist/cli/backend/src/constants.js +74 -0
  137. package/dist/cli/backend/src/constants.js.map +1 -1
  138. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +292 -0
  139. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
  140. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +420 -0
  141. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
  142. package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
  143. package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
  144. package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
  145. package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
  146. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +57 -0
  147. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  148. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +110 -1
  149. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  150. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
  151. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  152. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +43 -0
  153. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  154. package/dist/cli/backend/src/services/core/storage.service.d.ts +6 -0
  155. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  156. package/dist/cli/backend/src/services/core/storage.service.js +1 -1
  157. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  158. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
  159. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +6 -2
  160. package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
  161. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +8 -0
  162. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  163. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +31 -3
  164. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  165. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts +209 -0
  166. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -0
  167. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js +416 -0
  168. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js.map +1 -0
  169. package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts +103 -0
  170. package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -0
  171. package/dist/cli/backend/src/services/slack/slack-mention-resolver.js +197 -0
  172. package/dist/cli/backend/src/services/slack/slack-mention-resolver.js.map +1 -0
  173. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  174. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +18 -0
  175. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  176. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +329 -0
  177. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -0
  178. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +821 -0
  179. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -0
  180. package/dist/cli/backend/src/services/slack/slack.service.d.ts +116 -1
  181. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  182. package/dist/cli/backend/src/services/slack/slack.service.js +297 -3
  183. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  184. package/dist/cli/backend/src/types/slack.types.d.ts +87 -0
  185. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  186. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  187. package/dist/cli/backend/src/utils/team.utils.d.ts +40 -0
  188. package/dist/cli/backend/src/utils/team.utils.d.ts.map +1 -0
  189. package/dist/cli/backend/src/utils/team.utils.js +66 -0
  190. package/dist/cli/backend/src/utils/team.utils.js.map +1 -0
  191. package/dist/cli/cli/src/index.js +0 -0
  192. package/dist/cli/config/constants.d.ts +8 -0
  193. package/dist/cli/config/constants.d.ts.map +1 -1
  194. package/dist/cli/config/constants.js +8 -0
  195. package/dist/cli/config/constants.js.map +1 -1
  196. package/frontend/dist/assets/{index-890d3f9d.js → index-190a957f.js} +294 -294
  197. package/frontend/dist/assets/{index-8205ea5e.css → index-88feb412.css} +1 -1
  198. package/frontend/dist/index.html +2 -2
  199. package/package.json +1 -1
  200. package/dist/backend/backend/src/controllers/knowledge/index.d.ts +0 -7
  201. package/dist/backend/backend/src/controllers/knowledge/index.d.ts.map +0 -1
  202. package/dist/backend/backend/src/controllers/knowledge/index.js +0 -7
  203. package/dist/backend/backend/src/controllers/knowledge/index.js.map +0 -1
  204. package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.d.ts +0 -71
  205. package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.d.ts.map +0 -1
  206. package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.js +0 -237
  207. package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.js.map +0 -1
  208. package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.d.ts +0 -24
  209. package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.d.ts.map +0 -1
  210. package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.js +0 -34
  211. package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.js.map +0 -1
  212. package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.d.ts +0 -91
  213. package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.d.ts.map +0 -1
  214. package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.js +0 -290
  215. package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.js.map +0 -1
  216. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +0 -169
  217. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +0 -1
  218. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +0 -1779
  219. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +0 -1
  220. package/dist/backend/backend/src/index.js.orc-bak-20260529 +0 -3130
  221. package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.d.ts +0 -27
  222. package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.d.ts.map +0 -1
  223. package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.js +0 -40
  224. package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.js.map +0 -1
  225. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +0 -513
  226. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +0 -1
  227. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +0 -1568
  228. package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +0 -1
  229. package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts +0 -86
  230. package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts.map +0 -1
  231. package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js +0 -147
  232. package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js.map +0 -1
  233. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +0 -68
  234. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +0 -1
  235. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +0 -131
  236. package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +0 -1
  237. package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts +0 -130
  238. package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +0 -1
  239. package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +0 -263
  240. package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +0 -1
  241. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +0 -74
  242. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +0 -1
  243. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +0 -140
  244. package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +0 -1
  245. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +0 -29
  246. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +0 -1
  247. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +0 -279
  248. package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +0 -1
  249. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +0 -340
  250. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +0 -1
  251. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +0 -1176
  252. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +0 -1
  253. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +0 -79
  254. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +0 -1
  255. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +0 -145
  256. package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +0 -1
  257. package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +0 -79
  258. package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +0 -1
  259. package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +0 -218
  260. package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +0 -1
  261. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +0 -16
  262. package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +0 -1
  263. package/dist/backend/backend/src/services/agent/crewly-agent/index.js +0 -16
  264. package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +0 -1
  265. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +0 -135
  266. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +0 -1
  267. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +0 -185
  268. package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +0 -1
  269. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +0 -141
  270. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +0 -1
  271. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +0 -310
  272. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +0 -1
  273. package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts +0 -91
  274. package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +0 -1
  275. package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +0 -143
  276. package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +0 -1
  277. package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +0 -103
  278. package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +0 -1
  279. package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +0 -256
  280. package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +0 -1
  281. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +0 -143
  282. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +0 -1
  283. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +0 -264
  284. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +0 -1
  285. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +0 -13
  286. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +0 -1
  287. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +0 -91
  288. package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +0 -1
  289. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +0 -135
  290. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +0 -1
  291. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +0 -1937
  292. package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +0 -1
  293. package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts +0 -429
  294. package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts.map +0 -1
  295. package/dist/backend/backend/src/services/autonomous/auto-assign.service.js +0 -852
  296. package/dist/backend/backend/src/services/autonomous/auto-assign.service.js.map +0 -1
  297. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts +0 -78
  298. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +0 -1
  299. package/dist/backend/backend/src/services/knowledge/embedding-provider.js +0 -179
  300. package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +0 -1
  301. package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts +0 -118
  302. package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +0 -1
  303. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +0 -241
  304. package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +0 -1
  305. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +0 -102
  306. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +0 -1
  307. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js +0 -118
  308. package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js.map +0 -1
  309. package/dist/backend/backend/src/services/knowledge/index.d.ts +0 -8
  310. package/dist/backend/backend/src/services/knowledge/index.d.ts.map +0 -1
  311. package/dist/backend/backend/src/services/knowledge/index.js +0 -8
  312. package/dist/backend/backend/src/services/knowledge/index.js.map +0 -1
  313. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +0 -241
  314. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +0 -1
  315. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +0 -590
  316. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +0 -1
  317. package/dist/backend/backend/src/services/knowledge/knowledge.service.d.ts +0 -153
  318. package/dist/backend/backend/src/services/knowledge/knowledge.service.d.ts.map +0 -1
  319. package/dist/backend/backend/src/services/knowledge/knowledge.service.js +0 -409
  320. package/dist/backend/backend/src/services/knowledge/knowledge.service.js.map +0 -1
  321. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts +0 -331
  322. package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +0 -1
  323. package/dist/backend/backend/src/services/knowledge/vector-store.service.js +0 -830
  324. package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +0 -1
  325. package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.d.ts +0 -115
  326. package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +0 -1
  327. package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.js +0 -215
  328. package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.js.map +0 -1
  329. package/dist/backend/backend/src/services/memory/embedding-provider.d.ts +0 -78
  330. package/dist/backend/backend/src/services/memory/embedding-provider.d.ts.map +0 -1
  331. package/dist/backend/backend/src/services/memory/embedding-provider.js +0 -185
  332. package/dist/backend/backend/src/services/memory/embedding-provider.js.map +0 -1
  333. package/dist/backend/backend/src/services/memory/vector-store.service.d.ts +0 -331
  334. package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +0 -1
  335. package/dist/backend/backend/src/services/memory/vector-store.service.js +0 -825
  336. package/dist/backend/backend/src/services/memory/vector-store.service.js.map +0 -1
  337. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +0 -171
  338. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
  339. package/dist/backend/backend/src/services/project/task-tracking.service.js +0 -725
  340. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +0 -1
  341. package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts +0 -118
  342. package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts.map +0 -1
  343. package/dist/backend/backend/src/services/v3/project-task-watcher.service.js +0 -326
  344. package/dist/backend/backend/src/services/v3/project-task-watcher.service.js.map +0 -1
  345. package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +0 -74
  346. package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +0 -1
  347. package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +0 -154
  348. package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +0 -1
  349. package/dist/backend/backend/src/services/workflow/unified-scheduler.service.d.ts +0 -234
  350. package/dist/backend/backend/src/services/workflow/unified-scheduler.service.d.ts.map +0 -1
  351. package/dist/backend/backend/src/services/workflow/unified-scheduler.service.js +0 -636
  352. package/dist/backend/backend/src/services/workflow/unified-scheduler.service.js.map +0 -1
  353. package/dist/backend/backend/src/services/workflow/unified-scheduler.types.d.ts +0 -156
  354. package/dist/backend/backend/src/services/workflow/unified-scheduler.types.d.ts.map +0 -1
  355. package/dist/backend/backend/src/services/workflow/unified-scheduler.types.js +0 -81
  356. package/dist/backend/backend/src/services/workflow/unified-scheduler.types.js.map +0 -1
  357. package/dist/backend/backend/src/types/auto-assign.types.d.ts +0 -271
  358. package/dist/backend/backend/src/types/auto-assign.types.d.ts.map +0 -1
  359. package/dist/backend/backend/src/types/auto-assign.types.js +0 -136
  360. package/dist/backend/backend/src/types/auto-assign.types.js.map +0 -1
  361. package/dist/backend/backend/src/types/knowledge.types.d.ts +0 -195
  362. package/dist/backend/backend/src/types/knowledge.types.d.ts.map +0 -1
  363. package/dist/backend/backend/src/types/knowledge.types.js +0 -38
  364. package/dist/backend/backend/src/types/knowledge.types.js.map +0 -1
  365. package/dist/backend/backend/src/utils/esm-require.utils.d.ts +0 -111
  366. package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +0 -1
  367. package/dist/backend/backend/src/utils/esm-require.utils.js +0 -124
  368. package/dist/backend/backend/src/utils/esm-require.utils.js.map +0 -1
  369. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts +0 -78
  370. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +0 -1
  371. package/dist/cli/backend/src/services/knowledge/embedding-provider.js +0 -179
  372. package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +0 -1
  373. package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts +0 -118
  374. package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +0 -1
  375. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +0 -241
  376. package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +0 -1
  377. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +0 -102
  378. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +0 -1
  379. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js +0 -118
  380. package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js.map +0 -1
  381. package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
  382. package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
  383. package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
  384. package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
  385. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +0 -241
  386. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +0 -1
  387. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +0 -590
  388. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +0 -1
  389. package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts +0 -153
  390. package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts.map +0 -1
  391. package/dist/cli/backend/src/services/knowledge/knowledge.service.js +0 -409
  392. package/dist/cli/backend/src/services/knowledge/knowledge.service.js.map +0 -1
  393. package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts +0 -159
  394. package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -1
  395. package/dist/cli/backend/src/services/knowledge/learnings-index.service.js +0 -304
  396. package/dist/cli/backend/src/services/knowledge/learnings-index.service.js.map +0 -1
  397. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts +0 -331
  398. package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +0 -1
  399. package/dist/cli/backend/src/services/knowledge/vector-store.service.js +0 -830
  400. package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +0 -1
  401. package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts +0 -115
  402. package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +0 -1
  403. package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js +0 -215
  404. package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js.map +0 -1
  405. package/dist/cli/backend/src/services/memory/embedding-provider.d.ts +0 -78
  406. package/dist/cli/backend/src/services/memory/embedding-provider.d.ts.map +0 -1
  407. package/dist/cli/backend/src/services/memory/embedding-provider.js +0 -179
  408. package/dist/cli/backend/src/services/memory/embedding-provider.js.map +0 -1
  409. package/dist/cli/backend/src/services/memory/vector-store.service.d.ts +0 -331
  410. package/dist/cli/backend/src/services/memory/vector-store.service.d.ts.map +0 -1
  411. package/dist/cli/backend/src/services/memory/vector-store.service.js +0 -814
  412. package/dist/cli/backend/src/services/memory/vector-store.service.js.map +0 -1
  413. package/dist/cli/backend/src/services/project/task-tracking.service.d.ts +0 -171
  414. package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
  415. package/dist/cli/backend/src/services/project/task-tracking.service.js +0 -725
  416. package/dist/cli/backend/src/services/project/task-tracking.service.js.map +0 -1
  417. package/dist/cli/backend/src/types/auto-assign.types.d.ts +0 -271
  418. package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +0 -1
  419. package/dist/cli/backend/src/types/auto-assign.types.js +0 -136
  420. package/dist/cli/backend/src/types/auto-assign.types.js.map +0 -1
  421. package/dist/cli/backend/src/types/knowledge.types.d.ts +0 -195
  422. package/dist/cli/backend/src/types/knowledge.types.d.ts.map +0 -1
  423. package/dist/cli/backend/src/types/knowledge.types.js +0 -38
  424. package/dist/cli/backend/src/types/knowledge.types.js.map +0 -1
@@ -1,636 +0,0 @@
1
- /**
2
- * Unified Scheduler Service
3
- *
4
- * Consolidates cron, interval, and idle-based scheduling into a single
5
- * persistent service with agent auto-start capabilities.
6
- *
7
- * Features:
8
- * - Cron schedules: standard 5-field expressions
9
- * - Interval schedules: fixed-interval triggers
10
- * - Idle schedules: trigger when agent has been idle for N minutes
11
- * - Persistent storage in ~/.crewly/unified-schedules.json
12
- * - Auto-start agents that are offline when triggered
13
- * - Auto-pause after maxConsecutiveTriggers without agent response
14
- * - Manual trigger, pause, and resume
15
- *
16
- * Runs a 60-second evaluation loop that checks all active schedules
17
- * and triggers those that are due.
18
- *
19
- * @module services/workflow/unified-scheduler.service
20
- */
21
- import { EventEmitter } from 'events';
22
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
23
- import { join } from 'path';
24
- import { homedir } from 'os';
25
- import { randomUUID } from 'crypto';
26
- import { LoggerService } from '../core/logger.service.js';
27
- import { UNIFIED_SCHEDULER_CONSTANTS, validateCreateRequest, } from './unified-scheduler.types.js';
28
- // =============================================================================
29
- // Service
30
- // =============================================================================
31
- /**
32
- * UnifiedSchedulerService manages all schedule types (cron, interval, idle)
33
- * in a single persistent store with a 60-second evaluation loop.
34
- *
35
- * Uses sendMessageToAgent (via callback) for message delivery and
36
- * supports auto-starting offline agents.
37
- */
38
- export class UnifiedSchedulerService extends EventEmitter {
39
- static instance = null;
40
- logger;
41
- storagePath;
42
- /** All schedules indexed by ID */
43
- schedules = new Map();
44
- /** Evaluation loop timer */
45
- evalTimer = null;
46
- /** Whether the eval loop is running */
47
- running = false;
48
- /** Timestamp of last evaluation cycle */
49
- lastEvaluatedAt = null;
50
- /** Total triggers since service start */
51
- totalTriggersSinceStart = 0;
52
- /**
53
- * Callback for sending messages to agents.
54
- * Set via setMessageCallback() — decouples from AgentRegistrationService.
55
- */
56
- messageCallback = null;
57
- /**
58
- * Callback for checking if an agent is online.
59
- * Set via setAgentStatusCallback().
60
- */
61
- agentStatusCallback = null;
62
- /**
63
- * Callback for starting an offline agent.
64
- * Set via setAgentStartCallback().
65
- */
66
- agentStartCallback = null;
67
- /**
68
- * Callback for checking agent idle status.
69
- * Set via setIdleCheckCallback().
70
- */
71
- idleCheckCallback = null;
72
- constructor(crewlyHome) {
73
- super();
74
- this.logger = LoggerService.getInstance().createComponentLogger('UnifiedScheduler');
75
- const home = crewlyHome ?? join(homedir(), '.crewly');
76
- this.storagePath = join(home, UNIFIED_SCHEDULER_CONSTANTS.STORAGE_FILE);
77
- }
78
- /**
79
- * Get the singleton instance.
80
- *
81
- * @param crewlyHome - Override ~/.crewly path (for testing)
82
- * @returns Service instance
83
- */
84
- static getInstance(crewlyHome) {
85
- if (!UnifiedSchedulerService.instance) {
86
- UnifiedSchedulerService.instance = new UnifiedSchedulerService(crewlyHome);
87
- }
88
- return UnifiedSchedulerService.instance;
89
- }
90
- /**
91
- * Reset the singleton (for testing).
92
- */
93
- static resetInstance() {
94
- if (UnifiedSchedulerService.instance) {
95
- UnifiedSchedulerService.instance.stop();
96
- }
97
- UnifiedSchedulerService.instance = null;
98
- }
99
- // ---------------------------------------------------------------------------
100
- // Dependency Injection (callbacks)
101
- // ---------------------------------------------------------------------------
102
- /**
103
- * Set the callback for sending messages to agents.
104
- *
105
- * @param callback - Function that sends a message to an agent by session name
106
- */
107
- setMessageCallback(callback) {
108
- this.messageCallback = callback;
109
- }
110
- /**
111
- * Set the callback for checking if an agent is online.
112
- *
113
- * @param callback - Returns true if the agent is currently active
114
- */
115
- setAgentStatusCallback(callback) {
116
- this.agentStatusCallback = callback;
117
- }
118
- /**
119
- * Set the callback for starting an offline agent.
120
- *
121
- * @param callback - Starts the agent and returns true if successful
122
- */
123
- setAgentStartCallback(callback) {
124
- this.agentStartCallback = callback;
125
- }
126
- /**
127
- * Set the callback for checking agent idle status.
128
- *
129
- * @param callback - Returns idle status and idle duration
130
- */
131
- setIdleCheckCallback(callback) {
132
- this.idleCheckCallback = callback;
133
- }
134
- // ---------------------------------------------------------------------------
135
- // Lifecycle
136
- // ---------------------------------------------------------------------------
137
- /**
138
- * Start the scheduler evaluation loop.
139
- *
140
- * Loads persisted schedules from disk and begins the 60-second
141
- * evaluation cycle.
142
- */
143
- start() {
144
- if (this.running)
145
- return;
146
- this.loadFromDisk();
147
- this.running = true;
148
- this.evalTimer = setInterval(() => {
149
- this.evaluate().catch(err => {
150
- this.logger.error('Evaluation cycle failed', {
151
- error: err instanceof Error ? err.message : String(err),
152
- });
153
- });
154
- }, UNIFIED_SCHEDULER_CONSTANTS.EVAL_INTERVAL_MS);
155
- this.logger.info('Unified Scheduler started', {
156
- scheduleCount: this.schedules.size,
157
- activeCount: this.getActiveCount(),
158
- });
159
- }
160
- /**
161
- * Stop the scheduler evaluation loop.
162
- */
163
- stop() {
164
- if (this.evalTimer) {
165
- clearInterval(this.evalTimer);
166
- this.evalTimer = null;
167
- }
168
- this.running = false;
169
- this.logger.info('Unified Scheduler stopped');
170
- }
171
- // ---------------------------------------------------------------------------
172
- // CRUD
173
- // ---------------------------------------------------------------------------
174
- /**
175
- * Create a new schedule.
176
- *
177
- * @param request - Schedule creation request
178
- * @returns Created schedule
179
- * @throws Error if validation fails
180
- */
181
- create(request) {
182
- const validationError = validateCreateRequest(request);
183
- if (validationError) {
184
- throw new Error(validationError);
185
- }
186
- const now = new Date().toISOString();
187
- const schedule = {
188
- id: randomUUID(),
189
- target: request.target,
190
- type: request.type,
191
- cron: request.cron,
192
- intervalMinutes: request.intervalMinutes,
193
- idleTimeoutMinutes: request.idleTimeoutMinutes,
194
- message: request.message,
195
- enabled: request.enabled !== false,
196
- autoStart: request.autoStart !== false,
197
- maxConsecutiveTriggers: request.maxConsecutiveTriggers ?? UNIFIED_SCHEDULER_CONSTANTS.DEFAULT_MAX_CONSECUTIVE,
198
- createdAt: now,
199
- updatedAt: now,
200
- lastTriggeredAt: null,
201
- triggerCount: 0,
202
- consecutiveTriggers: 0,
203
- status: (request.enabled !== false) ? 'active' : 'paused',
204
- };
205
- this.schedules.set(schedule.id, schedule);
206
- this.persist();
207
- this.logger.info('Schedule created', {
208
- id: schedule.id,
209
- type: schedule.type,
210
- target: schedule.target,
211
- status: schedule.status,
212
- });
213
- return schedule;
214
- }
215
- /**
216
- * Get a schedule by ID.
217
- *
218
- * @param id - Schedule ID
219
- * @returns Schedule or null
220
- */
221
- get(id) {
222
- return this.schedules.get(id) ?? null;
223
- }
224
- /**
225
- * List all schedules, optionally filtered by target session.
226
- *
227
- * @param target - Optional session name filter
228
- * @returns Array of schedules
229
- */
230
- list(target) {
231
- const all = Array.from(this.schedules.values());
232
- if (target) {
233
- return all.filter(s => s.target === target);
234
- }
235
- return all;
236
- }
237
- /**
238
- * Update an existing schedule.
239
- *
240
- * @param id - Schedule ID
241
- * @param updates - Partial update fields
242
- * @returns Updated schedule or null if not found
243
- */
244
- update(id, updates) {
245
- const schedule = this.schedules.get(id);
246
- if (!schedule)
247
- return null;
248
- if (updates.cron !== undefined)
249
- schedule.cron = updates.cron;
250
- if (updates.intervalMinutes !== undefined)
251
- schedule.intervalMinutes = updates.intervalMinutes;
252
- if (updates.idleTimeoutMinutes !== undefined)
253
- schedule.idleTimeoutMinutes = updates.idleTimeoutMinutes;
254
- if (updates.message !== undefined)
255
- schedule.message = updates.message;
256
- if (updates.autoStart !== undefined)
257
- schedule.autoStart = updates.autoStart;
258
- if (updates.maxConsecutiveTriggers !== undefined)
259
- schedule.maxConsecutiveTriggers = updates.maxConsecutiveTriggers;
260
- if (updates.enabled !== undefined) {
261
- schedule.enabled = updates.enabled;
262
- schedule.status = updates.enabled ? 'active' : 'paused';
263
- }
264
- schedule.updatedAt = new Date().toISOString();
265
- this.schedules.set(id, schedule);
266
- this.persist();
267
- return schedule;
268
- }
269
- /**
270
- * Delete a schedule.
271
- *
272
- * @param id - Schedule ID
273
- * @returns True if deleted
274
- */
275
- delete(id) {
276
- const deleted = this.schedules.delete(id);
277
- if (deleted) {
278
- this.persist();
279
- this.logger.info('Schedule deleted', { id });
280
- }
281
- return deleted;
282
- }
283
- /**
284
- * Pause a schedule.
285
- *
286
- * @param id - Schedule ID
287
- * @returns Updated schedule or null
288
- */
289
- pause(id) {
290
- const schedule = this.schedules.get(id);
291
- if (!schedule)
292
- return null;
293
- schedule.enabled = false;
294
- schedule.status = 'paused';
295
- schedule.updatedAt = new Date().toISOString();
296
- this.schedules.set(id, schedule);
297
- this.persist();
298
- this.logger.info('Schedule paused', { id, target: schedule.target });
299
- return schedule;
300
- }
301
- /**
302
- * Resume a paused schedule.
303
- *
304
- * @param id - Schedule ID
305
- * @returns Updated schedule or null
306
- */
307
- resume(id) {
308
- const schedule = this.schedules.get(id);
309
- if (!schedule)
310
- return null;
311
- schedule.enabled = true;
312
- schedule.status = 'active';
313
- schedule.consecutiveTriggers = 0;
314
- schedule.updatedAt = new Date().toISOString();
315
- this.schedules.set(id, schedule);
316
- this.persist();
317
- this.logger.info('Schedule resumed', { id, target: schedule.target });
318
- return schedule;
319
- }
320
- /**
321
- * Manually trigger a schedule now, regardless of timing.
322
- *
323
- * @param id - Schedule ID
324
- * @returns True if triggered successfully
325
- */
326
- async triggerNow(id) {
327
- const schedule = this.schedules.get(id);
328
- if (!schedule)
329
- return false;
330
- return this.executeSchedule(schedule);
331
- }
332
- // ---------------------------------------------------------------------------
333
- // Health
334
- // ---------------------------------------------------------------------------
335
- /**
336
- * Get scheduler health and statistics.
337
- *
338
- * @returns Health stats
339
- */
340
- getHealth() {
341
- const all = Array.from(this.schedules.values());
342
- const byType = { cron: 0, interval: 0, idle: 0 };
343
- let activeCount = 0;
344
- let pausedCount = 0;
345
- for (const s of all) {
346
- byType[s.type]++;
347
- if (s.status === 'active')
348
- activeCount++;
349
- if (s.status === 'paused')
350
- pausedCount++;
351
- }
352
- return {
353
- running: this.running,
354
- activeCount,
355
- pausedCount,
356
- totalCount: all.length,
357
- totalTriggers: this.totalTriggersSinceStart,
358
- lastEvaluatedAt: this.lastEvaluatedAt,
359
- byType,
360
- };
361
- }
362
- // ---------------------------------------------------------------------------
363
- // Evaluation Loop
364
- // ---------------------------------------------------------------------------
365
- /**
366
- * Evaluate all active schedules and trigger those that are due.
367
- *
368
- * Called every 60 seconds by the eval timer. Checks each schedule
369
- * type against its timing criteria and executes if due.
370
- */
371
- async evaluate() {
372
- this.lastEvaluatedAt = new Date().toISOString();
373
- const actives = Array.from(this.schedules.values()).filter(s => s.enabled && s.status === 'active');
374
- for (const schedule of actives) {
375
- try {
376
- const isDue = await this.isScheduleDue(schedule);
377
- if (isDue) {
378
- await this.executeSchedule(schedule);
379
- }
380
- }
381
- catch (err) {
382
- this.logger.error('Schedule evaluation failed', {
383
- id: schedule.id,
384
- type: schedule.type,
385
- error: err instanceof Error ? err.message : String(err),
386
- });
387
- }
388
- }
389
- }
390
- /**
391
- * Check if a schedule is due for triggering.
392
- *
393
- * @param schedule - Schedule to check
394
- * @returns True if the schedule should trigger now
395
- */
396
- async isScheduleDue(schedule) {
397
- const now = Date.now();
398
- switch (schedule.type) {
399
- case 'cron':
400
- return this.isCronDue(schedule);
401
- case 'interval': {
402
- if (!schedule.intervalMinutes)
403
- return false;
404
- const intervalMs = schedule.intervalMinutes * 60_000;
405
- const lastTrigger = schedule.lastTriggeredAt
406
- ? new Date(schedule.lastTriggeredAt).getTime()
407
- : new Date(schedule.createdAt).getTime();
408
- return (now - lastTrigger) >= intervalMs;
409
- }
410
- case 'idle': {
411
- if (!this.idleCheckCallback)
412
- return false;
413
- const timeout = schedule.idleTimeoutMinutes ?? UNIFIED_SCHEDULER_CONSTANTS.DEFAULT_IDLE_TIMEOUT_MINUTES;
414
- const { idle, idleMinutes } = await this.idleCheckCallback(schedule.target);
415
- return idle && idleMinutes >= timeout;
416
- }
417
- default:
418
- return false;
419
- }
420
- }
421
- /**
422
- * Check if a cron schedule is due (within the current evaluation window).
423
- *
424
- * Compares the cron expression against the current time.
425
- * Uses minute-level granularity (matches eval loop frequency).
426
- *
427
- * @param schedule - Cron schedule to check
428
- * @returns True if the current minute matches the cron expression
429
- */
430
- isCronDue(schedule) {
431
- if (!schedule.cron)
432
- return false;
433
- const now = new Date();
434
- const fields = schedule.cron.trim().split(/\s+/);
435
- if (fields.length !== 5)
436
- return false;
437
- const [minuteField, hourField, domField, monthField, dowField] = fields;
438
- const matchField = (field, value, max) => {
439
- if (field === '*')
440
- return true;
441
- // Handle comma-separated values
442
- const parts = field.split(',');
443
- for (const part of parts) {
444
- // Handle range (e.g., 1-5)
445
- if (part.includes('-')) {
446
- const [start, end] = part.split('-').map(Number);
447
- if (value >= start && value <= end)
448
- return true;
449
- }
450
- // Handle step (e.g., */5)
451
- else if (part.includes('/')) {
452
- const [base, step] = part.split('/');
453
- const stepNum = Number(step);
454
- const baseNum = base === '*' ? 0 : Number(base);
455
- if (stepNum > 0 && (value - baseNum) % stepNum === 0 && value >= baseNum)
456
- return true;
457
- }
458
- // Exact match
459
- else if (Number(part) === value) {
460
- return true;
461
- }
462
- }
463
- return false;
464
- };
465
- const minute = now.getMinutes();
466
- const hour = now.getHours();
467
- const dom = now.getDate();
468
- const month = now.getMonth() + 1;
469
- const dow = now.getDay();
470
- if (!matchField(minuteField, minute, 59))
471
- return false;
472
- if (!matchField(hourField, hour, 23))
473
- return false;
474
- if (!matchField(domField, dom, 31))
475
- return false;
476
- if (!matchField(monthField, month, 12))
477
- return false;
478
- if (!matchField(dowField, dow, 6))
479
- return false;
480
- // Prevent double-trigger in the same minute
481
- if (schedule.lastTriggeredAt) {
482
- const lastTrigger = new Date(schedule.lastTriggeredAt);
483
- if (lastTrigger.getMinutes() === minute &&
484
- lastTrigger.getHours() === hour &&
485
- lastTrigger.getDate() === dom) {
486
- return false;
487
- }
488
- }
489
- return true;
490
- }
491
- /**
492
- * Execute a schedule: send message to agent, handle auto-start,
493
- * track consecutive triggers, and auto-pause if limit reached.
494
- *
495
- * @param schedule - Schedule to execute
496
- * @returns True if message was delivered successfully
497
- */
498
- async executeSchedule(schedule) {
499
- this.logger.info('Triggering schedule', {
500
- id: schedule.id,
501
- type: schedule.type,
502
- target: schedule.target,
503
- triggerCount: schedule.triggerCount,
504
- });
505
- // Check if agent is online (if we have the callback)
506
- let agentOnline = true;
507
- if (this.agentStatusCallback) {
508
- agentOnline = await this.agentStatusCallback(schedule.target);
509
- }
510
- // Auto-start if offline and autoStart is enabled
511
- if (!agentOnline && schedule.autoStart && this.agentStartCallback) {
512
- this.logger.info('Auto-starting offline agent', { target: schedule.target });
513
- const started = await this.agentStartCallback(schedule.target);
514
- if (!started) {
515
- this.logger.warn('Failed to auto-start agent', { target: schedule.target });
516
- schedule.error = 'Agent auto-start failed';
517
- this.schedules.set(schedule.id, schedule);
518
- this.persist();
519
- return false;
520
- }
521
- agentOnline = true;
522
- }
523
- if (!agentOnline) {
524
- this.logger.warn('Agent offline, skipping trigger', { target: schedule.target });
525
- return false;
526
- }
527
- // Send message
528
- let success = false;
529
- if (this.messageCallback) {
530
- const result = await this.messageCallback(schedule.target, schedule.message);
531
- success = result.success;
532
- }
533
- else {
534
- this.logger.warn('No message callback set — cannot deliver message');
535
- }
536
- // Update tracking
537
- const now = new Date().toISOString();
538
- schedule.lastTriggeredAt = now;
539
- schedule.triggerCount++;
540
- schedule.updatedAt = now;
541
- this.totalTriggersSinceStart++;
542
- if (success) {
543
- schedule.consecutiveTriggers++;
544
- }
545
- // Auto-pause if consecutive trigger limit reached
546
- if (schedule.consecutiveTriggers >= schedule.maxConsecutiveTriggers) {
547
- schedule.status = 'paused';
548
- schedule.enabled = false;
549
- schedule.error = `Auto-paused after ${schedule.consecutiveTriggers} consecutive triggers without agent response`;
550
- this.logger.warn('Schedule auto-paused (max consecutive triggers)', {
551
- id: schedule.id,
552
- target: schedule.target,
553
- consecutiveTriggers: schedule.consecutiveTriggers,
554
- });
555
- }
556
- this.schedules.set(schedule.id, schedule);
557
- this.persist();
558
- this.emit('triggered', { scheduleId: schedule.id, target: schedule.target, success });
559
- return success;
560
- }
561
- /**
562
- * Reset the consecutive trigger counter for a target agent.
563
- *
564
- * Called when an agent shows activity (e.g., sends a message, completes a task).
565
- * This prevents auto-pausing schedules for responsive agents.
566
- *
567
- * @param target - Agent session name
568
- */
569
- resetConsecutiveTriggers(target) {
570
- for (const schedule of this.schedules.values()) {
571
- if (schedule.target === target && schedule.consecutiveTriggers > 0) {
572
- schedule.consecutiveTriggers = 0;
573
- this.schedules.set(schedule.id, schedule);
574
- }
575
- }
576
- this.persist();
577
- }
578
- // ---------------------------------------------------------------------------
579
- // Persistence
580
- // ---------------------------------------------------------------------------
581
- /**
582
- * Save all schedules to disk.
583
- */
584
- persist() {
585
- try {
586
- const dir = this.storagePath.replace(/\/[^/]+$/, '');
587
- if (!existsSync(dir)) {
588
- mkdirSync(dir, { recursive: true });
589
- }
590
- const store = {
591
- version: UNIFIED_SCHEDULER_CONSTANTS.SCHEMA_VERSION,
592
- updatedAt: new Date().toISOString(),
593
- schedules: Array.from(this.schedules.values()),
594
- };
595
- writeFileSync(this.storagePath, JSON.stringify(store, null, 2), 'utf-8');
596
- }
597
- catch (err) {
598
- this.logger.error('Failed to persist schedules', {
599
- error: err instanceof Error ? err.message : String(err),
600
- });
601
- }
602
- }
603
- /**
604
- * Load schedules from disk.
605
- */
606
- loadFromDisk() {
607
- try {
608
- if (!existsSync(this.storagePath))
609
- return;
610
- const raw = readFileSync(this.storagePath, 'utf-8');
611
- const store = JSON.parse(raw);
612
- this.schedules.clear();
613
- for (const schedule of store.schedules) {
614
- this.schedules.set(schedule.id, schedule);
615
- }
616
- this.logger.info('Loaded schedules from disk', {
617
- count: this.schedules.size,
618
- });
619
- }
620
- catch (err) {
621
- this.logger.error('Failed to load schedules from disk', {
622
- error: err instanceof Error ? err.message : String(err),
623
- });
624
- }
625
- }
626
- // ---------------------------------------------------------------------------
627
- // Helpers
628
- // ---------------------------------------------------------------------------
629
- /**
630
- * Get count of active schedules.
631
- */
632
- getActiveCount() {
633
- return Array.from(this.schedules.values()).filter(s => s.status === 'active').length;
634
- }
635
- }
636
- //# sourceMappingURL=unified-scheduler.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unified-scheduler.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/workflow/unified-scheduler.service.ts"],"names":[],"mappings":"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"}