crewly 1.14.0 → 1.15.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 (458) hide show
  1. package/README.md +28 -0
  2. package/config/constants.ts +57 -0
  3. package/config/index.ts +6 -2
  4. package/config/roles/architect/soul.md +31 -0
  5. package/config/roles/auditor/soul.md +30 -0
  6. package/config/roles/backend-developer/soul.md +30 -0
  7. package/config/roles/content-strategist/soul.md +29 -0
  8. package/config/roles/designer/soul.md +30 -0
  9. package/config/roles/developer/soul.md +4 -1
  10. package/config/roles/frontend-developer/soul.md +28 -0
  11. package/config/roles/fullstack-dev/soul.md +28 -0
  12. package/config/roles/generalist/soul.md +28 -0
  13. package/config/roles/ops/soul.md +31 -0
  14. package/config/roles/orchestrator/fragments/lifecycle.md +2 -22
  15. package/config/roles/orchestrator/fragments/recovery.md +1 -1
  16. package/config/roles/orchestrator/prompt.md +18 -49
  17. package/config/roles/orchestrator/soul.md +2 -1
  18. package/config/roles/product-manager/prompt.md +1 -1
  19. package/config/roles/product-manager/soul.md +30 -0
  20. package/config/roles/qa/soul.md +31 -0
  21. package/config/roles/qa-engineer/soul.md +31 -0
  22. package/config/roles/researcher/soul.md +4 -1
  23. package/config/roles/sales/soul.md +30 -0
  24. package/config/roles/support/soul.md +30 -0
  25. package/config/roles/team-leader/prompt.md +1 -1
  26. package/config/roles/team-leader/soul.md +32 -0
  27. package/config/roles/tpm/soul.md +31 -0
  28. package/config/roles/ux-designer/soul.md +31 -0
  29. package/config/skills/_common/lib.sh +124 -2
  30. package/config/skills/_common/lib.test.sh +68 -1
  31. package/config/skills/orchestrator/delegate-task/SKILL.md +17 -21
  32. package/config/skills/orchestrator/delegate-task/execute.sh +18 -9
  33. package/config/skills/orchestrator/delegate-task/execute.test.sh +1 -1
  34. package/config/skills/orchestrator/wiki-migrate/SKILL.md +33 -3
  35. package/config/skills/orchestrator/wiki-migrate/compact.jq +36 -0
  36. package/config/skills/orchestrator/wiki-migrate/execute.sh +35 -5
  37. package/config/skills/orchestrator/wiki-migrate/execute.test.sh +124 -0
  38. package/config/skills/team-leader/verify-output/execute.sh +14 -6
  39. package/config/skills/team-leader/verify-output/execute.test.sh +117 -0
  40. package/dist/backend/backend/src/constants.d.ts +100 -0
  41. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  42. package/dist/backend/backend/src/constants.js +88 -1
  43. package/dist/backend/backend/src/constants.js.map +1 -1
  44. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.d.ts.map +1 -1
  45. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js +4 -6
  46. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js.map +1 -1
  47. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts +10 -0
  48. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
  49. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +78 -16
  50. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
  51. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
  52. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +11 -1
  53. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
  54. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +14 -0
  55. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  56. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +59 -0
  57. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  58. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts +9 -0
  59. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
  60. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +14 -1
  61. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
  62. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  63. package/dist/backend/backend/src/controllers/team/team.controller.js +16 -1
  64. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  65. package/dist/backend/backend/src/index.d.ts +12 -0
  66. package/dist/backend/backend/src/index.d.ts.map +1 -1
  67. package/dist/backend/backend/src/index.js +195 -9
  68. package/dist/backend/backend/src/index.js.map +1 -1
  69. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +139 -0
  70. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -0
  71. package/dist/backend/backend/src/middleware/api-token.middleware.js +301 -0
  72. package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -0
  73. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  74. package/dist/backend/backend/src/routes/api.routes.js +3 -1
  75. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  76. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +68 -0
  77. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/agent/agent-registration.service.js +280 -10
  79. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  80. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
  81. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  82. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +10 -1
  83. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  84. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
  85. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  86. package/dist/backend/backend/src/services/agent/codex-runtime.service.js +11 -1
  87. package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  88. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
  89. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  90. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
  91. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  92. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
  93. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  94. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +10 -1
  95. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  96. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
  97. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
  99. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  100. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
  101. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  102. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +50 -1
  103. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  104. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -1
  105. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  106. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -1
  107. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  108. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -0
  109. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  110. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +73 -2
  111. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  112. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +42 -0
  113. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  114. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +33 -0
  115. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  116. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
  118. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  119. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +26 -2
  120. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  121. package/dist/backend/backend/src/services/backup/backup-archive.service.js +91 -10
  122. package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
  123. package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts +15 -2
  124. package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
  125. package/dist/backend/backend/src/services/backup/backup-restore.service.js +100 -21
  126. package/dist/backend/backend/src/services/backup/backup-restore.service.js.map +1 -1
  127. package/dist/backend/backend/src/services/backup/backup.types.d.ts +85 -2
  128. package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -1
  129. package/dist/backend/backend/src/services/backup/backup.types.js +21 -0
  130. package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -1
  131. package/dist/backend/backend/src/services/backup/project-file-filter.d.ts +35 -0
  132. package/dist/backend/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
  133. package/dist/backend/backend/src/services/backup/project-file-filter.js +90 -0
  134. package/dist/backend/backend/src/services/backup/project-file-filter.js.map +1 -0
  135. package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
  136. package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
  137. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js +364 -0
  138. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
  139. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +29 -0
  140. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +42 -0
  142. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  143. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +16 -0
  144. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  145. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +22 -0
  146. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  147. package/dist/backend/backend/src/services/core/api-token.service.d.ts +78 -0
  148. package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -0
  149. package/dist/backend/backend/src/services/core/api-token.service.js +149 -0
  150. package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -0
  151. package/dist/backend/backend/src/services/core/logger.service.d.ts +10 -1
  152. package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/core/logger.service.js +18 -3
  154. package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/core/storage.service.d.ts +11 -0
  156. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/core/storage.service.js +34 -0
  158. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  159. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +7 -1
  160. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +29 -7
  162. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  163. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts +140 -0
  164. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts.map +1 -0
  165. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js +346 -0
  166. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js.map +1 -0
  167. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
  168. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  169. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +42 -7
  170. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  171. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
  172. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  173. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
  174. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  175. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +22 -15
  176. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  177. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +24 -15
  178. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  179. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +7 -1
  180. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/session/pty/pty-session.js +9 -3
  182. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  183. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +27 -0
  184. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/session/session-handoff.service.js +110 -22
  186. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  187. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  188. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +7 -1
  189. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  190. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
  191. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +132 -6
  193. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/v3/escalation-boot.d.ts +87 -0
  195. package/dist/backend/backend/src/services/v3/escalation-boot.d.ts.map +1 -0
  196. package/dist/backend/backend/src/services/v3/escalation-boot.js +128 -0
  197. package/dist/backend/backend/src/services/v3/escalation-boot.js.map +1 -0
  198. package/dist/backend/backend/src/services/v3/escalation.service.d.ts +1 -1
  199. package/dist/backend/backend/src/services/v3/escalation.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/v3/escalation.service.js +4 -4
  201. package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts +118 -0
  203. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts.map +1 -0
  204. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js +277 -0
  205. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js.map +1 -0
  206. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  207. package/dist/backend/backend/src/services/v3/kr-tracking.service.js +3 -6
  208. package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  209. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts +5 -0
  210. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  211. package/dist/backend/backend/src/services/v3/mission-executor.service.js +36 -0
  212. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  213. package/dist/backend/backend/src/services/v3/mission-paths.d.ts +69 -0
  214. package/dist/backend/backend/src/services/v3/mission-paths.d.ts.map +1 -0
  215. package/dist/backend/backend/src/services/v3/mission-paths.js +92 -0
  216. package/dist/backend/backend/src/services/v3/mission-paths.js.map +1 -0
  217. package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
  218. package/dist/backend/backend/src/services/v3/mission-period.service.js +1 -12
  219. package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
  220. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +74 -2
  221. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
  222. package/dist/backend/backend/src/services/v3/mission-reminder.service.js +251 -9
  223. package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
  224. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +6 -4
  225. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -1
  226. package/dist/backend/backend/src/services/v3/okr-cascade.service.js +11 -10
  227. package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -1
  228. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +24 -0
  229. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
  230. package/dist/backend/backend/src/services/v3/okr-review.service.js +63 -3
  231. package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
  232. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts +17 -0
  233. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  234. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +62 -13
  235. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  236. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +6 -2
  237. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  238. package/dist/backend/backend/src/services/v3/v3-data.service.js +14 -9
  239. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  240. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +14 -0
  241. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  242. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +31 -0
  243. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  244. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts +21 -0
  245. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts.map +1 -1
  246. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js +53 -3
  247. package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js.map +1 -1
  248. package/dist/backend/backend/src/types/event-bus.types.d.ts +4 -2
  249. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  250. package/dist/backend/backend/src/types/event-bus.types.js +15 -0
  251. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  252. package/dist/backend/backend/src/types/index.d.ts +16 -0
  253. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  254. package/dist/backend/backend/src/types/index.js.map +1 -1
  255. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  256. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  257. package/dist/backend/backend/src/types/v2/index.js +1 -1
  258. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  259. package/dist/backend/backend/src/types/v2/mission.types.d.ts +41 -0
  260. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  261. package/dist/backend/backend/src/types/v2/mission.types.js +29 -0
  262. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  263. package/dist/backend/backend/src/utils/network-exposure.utils.d.ts +67 -0
  264. package/dist/backend/backend/src/utils/network-exposure.utils.d.ts.map +1 -0
  265. package/dist/backend/backend/src/utils/network-exposure.utils.js +92 -0
  266. package/dist/backend/backend/src/utils/network-exposure.utils.js.map +1 -0
  267. package/dist/backend/build-info.json +2 -2
  268. package/dist/backend/config/constants.d.ts +53 -0
  269. package/dist/backend/config/constants.d.ts.map +1 -1
  270. package/dist/backend/config/constants.js +54 -0
  271. package/dist/backend/config/constants.js.map +1 -1
  272. package/dist/backend/config/index.d.ts +2 -2
  273. package/dist/backend/config/index.d.ts.map +1 -1
  274. package/dist/backend/config/index.js +6 -6
  275. package/dist/backend/config/index.js.map +1 -1
  276. package/dist/cli/backend/src/constants.d.ts +100 -0
  277. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  278. package/dist/cli/backend/src/constants.js +88 -1
  279. package/dist/cli/backend/src/constants.js.map +1 -1
  280. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +68 -0
  281. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  282. package/dist/cli/backend/src/services/agent/agent-registration.service.js +280 -10
  283. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  284. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
  285. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  286. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +10 -1
  287. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  288. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
  289. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  290. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +11 -1
  291. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  292. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
  293. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  294. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
  295. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  296. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
  297. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  298. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +10 -1
  299. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  300. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
  301. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  302. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
  303. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  304. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
  305. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  306. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +50 -1
  307. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  308. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -0
  309. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  310. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +73 -2
  311. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  312. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +42 -0
  313. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  314. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js +33 -0
  315. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  316. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  317. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
  318. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  319. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +26 -2
  320. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  321. package/dist/cli/backend/src/services/backup/backup-archive.service.js +91 -10
  322. package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
  323. package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts +15 -2
  324. package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
  325. package/dist/cli/backend/src/services/backup/backup-restore.service.js +100 -21
  326. package/dist/cli/backend/src/services/backup/backup-restore.service.js.map +1 -1
  327. package/dist/cli/backend/src/services/backup/backup.types.d.ts +85 -2
  328. package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -1
  329. package/dist/cli/backend/src/services/backup/backup.types.js +21 -0
  330. package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -1
  331. package/dist/cli/backend/src/services/backup/project-file-filter.d.ts +35 -0
  332. package/dist/cli/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
  333. package/dist/cli/backend/src/services/backup/project-file-filter.js +90 -0
  334. package/dist/cli/backend/src/services/backup/project-file-filter.js.map +1 -0
  335. package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
  336. package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
  337. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js +364 -0
  338. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
  339. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +29 -0
  340. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  341. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +42 -0
  342. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  343. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +16 -0
  344. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  345. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +22 -0
  346. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  347. package/dist/cli/backend/src/services/core/api-token.service.d.ts +78 -0
  348. package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -0
  349. package/dist/cli/backend/src/services/core/api-token.service.js +149 -0
  350. package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -0
  351. package/dist/cli/backend/src/services/core/logger.service.d.ts +10 -1
  352. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
  353. package/dist/cli/backend/src/services/core/logger.service.js +18 -3
  354. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
  355. package/dist/cli/backend/src/services/core/storage.service.d.ts +11 -0
  356. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  357. package/dist/cli/backend/src/services/core/storage.service.js +34 -0
  358. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  359. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
  360. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  361. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +42 -7
  362. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  363. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
  364. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  365. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
  366. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  367. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +7 -1
  368. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  369. package/dist/cli/backend/src/services/session/pty/pty-session.js +9 -3
  370. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  371. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +27 -0
  372. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  373. package/dist/cli/backend/src/services/session/session-handoff.service.js +110 -22
  374. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  375. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
  376. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  377. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +132 -6
  378. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  379. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  380. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +3 -6
  381. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  382. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +5 -0
  383. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  384. package/dist/cli/backend/src/services/v3/mission-executor.service.js +36 -0
  385. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
  386. package/dist/cli/backend/src/services/v3/mission-paths.d.ts +69 -0
  387. package/dist/cli/backend/src/services/v3/mission-paths.d.ts.map +1 -0
  388. package/dist/cli/backend/src/services/v3/mission-paths.js +92 -0
  389. package/dist/cli/backend/src/services/v3/mission-paths.js.map +1 -0
  390. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +6 -2
  391. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  392. package/dist/cli/backend/src/services/v3/v3-data.service.js +14 -9
  393. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
  394. package/dist/cli/backend/src/types/event-bus.types.d.ts +4 -2
  395. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  396. package/dist/cli/backend/src/types/event-bus.types.js +15 -0
  397. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  398. package/dist/cli/backend/src/types/index.d.ts +16 -0
  399. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  400. package/dist/cli/backend/src/types/index.js.map +1 -1
  401. package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
  402. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  403. package/dist/cli/backend/src/types/v2/index.js +1 -1
  404. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  405. package/dist/cli/backend/src/types/v2/mission.types.d.ts +41 -0
  406. package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -1
  407. package/dist/cli/backend/src/types/v2/mission.types.js +29 -0
  408. package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -1
  409. package/dist/cli/cli/src/commands/backup.d.ts +25 -0
  410. package/dist/cli/cli/src/commands/backup.d.ts.map +1 -1
  411. package/dist/cli/cli/src/commands/backup.js +120 -6
  412. package/dist/cli/cli/src/commands/backup.js.map +1 -1
  413. package/dist/cli/cli/src/commands/doctor.d.ts +58 -0
  414. package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -0
  415. package/dist/cli/cli/src/commands/doctor.js +163 -0
  416. package/dist/cli/cli/src/commands/doctor.js.map +1 -0
  417. package/dist/cli/cli/src/commands/service.d.ts +68 -11
  418. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  419. package/dist/cli/cli/src/commands/service.js +183 -51
  420. package/dist/cli/cli/src/commands/service.js.map +1 -1
  421. package/dist/cli/cli/src/commands/token.d.ts +53 -0
  422. package/dist/cli/cli/src/commands/token.d.ts.map +1 -0
  423. package/dist/cli/cli/src/commands/token.js +70 -0
  424. package/dist/cli/cli/src/commands/token.js.map +1 -0
  425. package/dist/cli/cli/src/index.js +40 -5
  426. package/dist/cli/cli/src/index.js.map +1 -1
  427. package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts +21 -0
  428. package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts.map +1 -0
  429. package/dist/cli/cli/src/scripts/check-native-toolchain.js +40 -0
  430. package/dist/cli/cli/src/scripts/check-native-toolchain.js.map +1 -0
  431. package/dist/cli/cli/src/utils/native-toolchain.d.ts +111 -0
  432. package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -0
  433. package/dist/cli/cli/src/utils/native-toolchain.js +146 -0
  434. package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -0
  435. package/dist/cli/cli/src/utils/package-root.d.ts +55 -0
  436. package/dist/cli/cli/src/utils/package-root.d.ts.map +1 -0
  437. package/dist/cli/cli/src/utils/package-root.js +107 -0
  438. package/dist/cli/cli/src/utils/package-root.js.map +1 -0
  439. package/dist/cli/cli/src/utils/version-check.d.ts +18 -2
  440. package/dist/cli/cli/src/utils/version-check.d.ts.map +1 -1
  441. package/dist/cli/cli/src/utils/version-check.js +51 -4
  442. package/dist/cli/cli/src/utils/version-check.js.map +1 -1
  443. package/dist/cli/config/constants.d.ts +53 -0
  444. package/dist/cli/config/constants.d.ts.map +1 -1
  445. package/dist/cli/config/constants.js +54 -0
  446. package/dist/cli/config/constants.js.map +1 -1
  447. package/dist/cli/config/index.d.ts +2 -2
  448. package/dist/cli/config/index.d.ts.map +1 -1
  449. package/dist/cli/config/index.js +6 -6
  450. package/dist/cli/config/index.js.map +1 -1
  451. package/frontend/dist/assets/index-203224f9.js +4961 -0
  452. package/frontend/dist/assets/index-dcaf6c88.css +42 -0
  453. package/frontend/dist/index.html +2 -2
  454. package/package.json +3 -2
  455. package/config/constants.d.ts.map +0 -1
  456. package/config/index.d.ts.map +0 -1
  457. package/frontend/dist/assets/index-190a957f.js +0 -4961
  458. package/frontend/dist/assets/index-88feb412.css +0 -42
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Mission Paths
3
+ *
4
+ * Single source of truth for WHERE Mission and Key Result documents live on
5
+ * disk. Before this module existed, seven services and controllers each
6
+ * carried their own `getMissionsDir()` and resolved the project root
7
+ * differently (`process.cwd()` here, `CREWLY_PROJECT_PATH` there,
8
+ * `CREWLY_MISSIONS_DIR` in exactly one place). Any deployment where those
9
+ * three disagree would have the reminder sweep, the review service and the
10
+ * REST controller reading three different stores — which is one of the
11
+ * reasons the OKR loop never closed at runtime.
12
+ *
13
+ * Precedence (highest first):
14
+ * 1. `CREWLY_MISSIONS_DIR` — absolute override of the store itself
15
+ * (used by tests to isolate a temp dir; may also be used by ops).
16
+ * 2. `CREWLY_PROJECT_PATH` — project root; store is `<root>/.crewly/missions`.
17
+ * 3. `process.cwd()` — legacy default; store is `<cwd>/.crewly/missions`.
18
+ *
19
+ * Every function here re-reads the environment on each call (no module-level
20
+ * caching) so tests that override `process.cwd` / env in `beforeEach` see the
21
+ * change without a module reload.
22
+ *
23
+ * @module services/v3/mission-paths
24
+ */
25
+ import * as path from 'path';
26
+ import { CREWLY_CONSTANTS, ENV_CONSTANTS } from '../../constants.js';
27
+ // ---------------------------------------------------------------------------
28
+ // Constants
29
+ // ---------------------------------------------------------------------------
30
+ /** Env var that overrides the missions store directory outright. */
31
+ export const MISSIONS_DIR_ENV = 'CREWLY_MISSIONS_DIR';
32
+ /** Folder under `.crewly` that holds one JSON file per Mission. */
33
+ export const MISSIONS_FOLDER = 'missions';
34
+ /** Folder under `<missionsDir>/<missionId>/` that holds one JSON per KR. */
35
+ export const KEY_RESULTS_FOLDER = 'key-results';
36
+ // ---------------------------------------------------------------------------
37
+ // Resolvers
38
+ // ---------------------------------------------------------------------------
39
+ /**
40
+ * Resolve the project root the mission store hangs off.
41
+ *
42
+ * @returns `CREWLY_PROJECT_PATH` when set, otherwise `process.cwd()`
43
+ */
44
+ export function getMissionProjectPath() {
45
+ const fromEnv = process.env[ENV_CONSTANTS.CREWLY_PROJECT_PATH];
46
+ if (fromEnv && fromEnv.length > 0)
47
+ return fromEnv;
48
+ return process.cwd();
49
+ }
50
+ /**
51
+ * Resolve the absolute missions directory.
52
+ *
53
+ * @param projectPath - Optional explicit project root. When given it is used
54
+ * instead of `CREWLY_PROJECT_PATH` / `process.cwd()`, but the
55
+ * `CREWLY_MISSIONS_DIR` override still wins so a test-isolated store is
56
+ * honoured by every caller (including services constructed with an
57
+ * explicit project path such as {@link EscalationService}).
58
+ * @returns Absolute path to the directory holding `<missionId>.json` files
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * getMissionsDir(); // "/repo/.crewly/missions"
63
+ * ```
64
+ */
65
+ export function getMissionsDir(projectPath) {
66
+ const override = process.env[MISSIONS_DIR_ENV];
67
+ if (override && override.length > 0)
68
+ return override;
69
+ const root = projectPath && projectPath.length > 0 ? projectPath : getMissionProjectPath();
70
+ return path.join(root, CREWLY_CONSTANTS.PATHS.CREWLY_HOME, MISSIONS_FOLDER);
71
+ }
72
+ /**
73
+ * Absolute path of a single mission document.
74
+ *
75
+ * @param missionId - Mission id
76
+ * @param projectPath - Optional explicit project root (see {@link getMissionsDir})
77
+ * @returns `<missionsDir>/<missionId>.json`
78
+ */
79
+ export function getMissionPath(missionId, projectPath) {
80
+ return path.join(getMissionsDir(projectPath), `${missionId}.json`);
81
+ }
82
+ /**
83
+ * Absolute path of the directory holding a mission's Key Result documents.
84
+ *
85
+ * @param missionId - Mission id
86
+ * @param projectPath - Optional explicit project root (see {@link getMissionsDir})
87
+ * @returns `<missionsDir>/<missionId>/key-results`
88
+ */
89
+ export function getKeyResultsDir(missionId, projectPath) {
90
+ return path.join(getMissionsDir(projectPath), missionId, KEY_RESULTS_FOLDER);
91
+ }
92
+ //# sourceMappingURL=mission-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-paths.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEhD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC/D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,WAAoB;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC3F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAoB;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAoB;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAC/E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mission-period.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,iCAAiC,CAAC;AA2B7F,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;OASG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkD3D;;;;;OAKG;IACG,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY7D;;;;;;;OAOG;IACG,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAa,EAC3D,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCrB;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,mBAAmB;CAYlC"}
1
+ {"version":3,"file":"mission-period.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,iCAAiC,CAAC;AAkB7F,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;OASG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkD3D;;;;;OAKG;IACG,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY7D;;;;;;;OAOG;IACG,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAa,EAC3D,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCrB;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,mBAAmB;CAYlC"}
@@ -17,21 +17,10 @@
17
17
  */
18
18
  import * as fs from 'fs/promises';
19
19
  import * as path from 'path';
20
+ import { getMissionsDir } from './mission-paths.js';
20
21
  import { LoggerService } from '../core/logger.service.js';
21
22
  import { isPeriodActive, isPeriodPast, isPeriodFuture, sortMissionsByPriority, TERMINAL_MISSION_STATUSES, } from '../../types/v2/mission.types.js';
22
23
  // ---------------------------------------------------------------------------
23
- // Constants
24
- // ---------------------------------------------------------------------------
25
- /**
26
- * Resolve the mission store directory. Defaults to `<cwd>/.crewly/missions`
27
- * (the production store). Honors the `CREWLY_MISSIONS_DIR` env override so tests
28
- * can isolate to a temp directory and never read/delete the real store — without
29
- * this override a test's cleanup would wipe production missions.
30
- */
31
- function getMissionsDir() {
32
- return process.env['CREWLY_MISSIONS_DIR'] || path.join(process.cwd(), '.crewly', 'missions');
33
- }
34
- // ---------------------------------------------------------------------------
35
24
  // Service
36
25
  // ---------------------------------------------------------------------------
37
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mission-period.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission-period.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  *
14
14
  * @module services/v3/mission-reminder.service
15
15
  */
16
+ import type { EventBusService } from '../event-bus/event-bus.service.js';
16
17
  import type { ReviewReason } from '../../types/review-reason.types.js';
17
18
  export type { ReviewReason };
18
19
  /**
@@ -39,6 +40,23 @@ export declare class MissionReminderService {
39
40
  * {@link cronParseFailureCount} for tests + (future) Prom metric.
40
41
  */
41
42
  private cronParseFailures;
43
+ /**
44
+ * Optional EventBus for `mission:stale` publication. Wired from the
45
+ * backend boot path via {@link setEventBusService}; when absent the
46
+ * stale detection still bumps `staleCycles` but publishes nothing.
47
+ */
48
+ private eventBus;
49
+ /**
50
+ * Consecutive idle sweeps per mission (no active WI + no KR measurement
51
+ * since the previous sweep). In-memory by design — a restart simply
52
+ * restarts the count, and the per-day publish id keeps the downstream
53
+ * review WI idempotent regardless.
54
+ */
55
+ private readonly idleSweeps;
56
+ /** Wall-clock of the previous sweep (for "measurement since last sweep"). */
57
+ private lastSweepAt;
58
+ /** `<missionId>:stale:<YYYY-MM-DD>` ids already published (FIFO-bounded). */
59
+ private readonly publishedStale;
42
60
  private constructor();
43
61
  /**
44
62
  * Total number of cron-parse failures observed since this service
@@ -57,6 +75,13 @@ export declare class MissionReminderService {
57
75
  private getTaskPool;
58
76
  static getInstance(): MissionReminderService;
59
77
  static resetInstance(): void;
78
+ /**
79
+ * Wire the EventBus used to publish `mission:stale`. Idempotent; pass
80
+ * `null` to disable publication (tests / CLI).
81
+ *
82
+ * @param bus - The live EventBusService, or null
83
+ */
84
+ setEventBusService(bus: EventBusService | null): void;
60
85
  /**
61
86
  * Run a full sweep of all active missions, sending Slack OKR reminders
62
87
  * AND (per REVIEW-1, Phase E pre-beta) creating cadence-driven review
@@ -83,14 +108,54 @@ export declare class MissionReminderService {
83
108
  skipped: number;
84
109
  reviewsCreated: number;
85
110
  reviewsSkipped: number;
111
+ /** Cadence boundaries where the deterministic review said `continue` — no WI raised. */
112
+ reviewsAutoContinued: number;
113
+ /** Missions flagged stale this sweep (`mission:stale` published, staleCycles bumped). */
114
+ staleFlagged: number;
86
115
  }>;
87
116
  /**
88
117
  * Result of {@link maybeCreateReviewWorkItem} — `'created'` when a new
89
118
  * review WorkItem was added to the pool, `'skipped'` when the
90
119
  * reentrancy lock or cadence boundary blocked creation, `'noop'` when
91
- * the mission has no executionCadence configured (legacy missions).
120
+ * the mission has no executionCadence configured (legacy missions),
121
+ * `'auto_continued'` when the cadence boundary fired but the
122
+ * deterministic OKR review recommended `continue` with no off-track KR
123
+ * — the review is persisted on the mission and NO WorkItem is raised.
92
124
  */
93
125
  private maybeCreateReviewWorkItem;
126
+ /**
127
+ * Run {@link MissionPeriodService.reconcile} so period-bound missions
128
+ * auto-activate / get flagged at period end. Previously nothing called
129
+ * reconcile(), so periods never advanced on their own. Failure-soft.
130
+ */
131
+ private reconcilePeriods;
132
+ /**
133
+ * Stale detector. A mission is "idle" this sweep when it has no
134
+ * non-terminal WorkItem in the pool AND no KR measurement recorded since
135
+ * the previous sweep. After {@link STALE_SWEEP_THRESHOLD} consecutive
136
+ * idle sweeps the mission's `staleCycles` is bumped, persisted, and a
137
+ * `mission:stale` event is published with the idempotent id
138
+ * `<missionId>:stale:<YYYY-MM-DD>` (once per mission per UTC day). The
139
+ * bridge turns that into a `no_active_work` review WorkItem.
140
+ *
141
+ * @returns `true` when the mission was flagged stale on this sweep
142
+ */
143
+ private detectStale;
144
+ /** Whether any KR carries a measurement taken at/after `since`. */
145
+ private hasMeasurementSince;
146
+ /**
147
+ * Run {@link OKRReviewService.executeReview} for a mission at its cadence
148
+ * boundary and fold the persisted bookkeeping (`lastReviewSummary`,
149
+ * `staleCycles`, `lastReviewAt`) back into the caller's in-memory copy.
150
+ *
151
+ * Failure-soft: any error is logged and `null` is returned so the sweep
152
+ * falls back to the legacy behaviour (create the review WI with an
153
+ * inferred reason) rather than dropping the cadence tick.
154
+ *
155
+ * @param mission - In-memory mission (mutated with the persisted fields)
156
+ * @returns The review result, or `null` if the review could not run
157
+ */
158
+ private runDeterministicReview;
94
159
  /**
95
160
  * Pick the {@link ReviewReason} for this sweep tick.
96
161
  *
@@ -137,9 +202,16 @@ export declare class MissionReminderService {
137
202
  */
138
203
  private resolveOwnerName;
139
204
  /**
140
- * Load all missions with 'active' status.
205
+ * Load all executable missions — `status: 'active'` AND approved (or
206
+ * legacy, no approval metadata). A cascade child still awaiting its
207
+ * owner's approval is skipped so it is neither reminded about nor handed
208
+ * review WorkItems before anyone said yes. See {@link isMissionExecutable}.
141
209
  */
142
210
  private loadAllActiveMissions;
211
+ /**
212
+ * Load a single mission from disk (null when missing/corrupt).
213
+ */
214
+ private loadMission;
143
215
  /**
144
216
  * Save a mission back to disk.
145
217
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mission-reminder.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-reminder.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAOvE,YAAY,EAAE,YAAY,EAAE,CAAC;AAiE7B;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO;IAMP;;;;;;OAMG;IACH,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAOnB,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAO5C,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,QAAQ,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAgFF;;;;;OAKG;YACW,yBAAyB;IAwIvC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;OAYG;YACW,sBAAsB;IAcpC;;OAEG;YACW,YAAY;IAoC1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,qBAAqB;IAuBnC;;OAEG;YACW,WAAW;CAI1B"}
1
+ {"version":3,"file":"mission-reminder.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-reminder.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAUzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAOvE,YAAY,EAAE,YAAY,EAAE,CAAC;AAuE7B;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAK;IAE9B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,6EAA6E;IAC7E,OAAO,CAAC,WAAW,CAAqB;IAExC,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,OAAO;IAMP;;;;;;OAMG;IACH,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAOnB,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAO5C,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIrD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,QAAQ,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,wFAAwF;QACxF,oBAAoB,EAAE,MAAM,CAAC;QAC7B,yFAAyF;QACzF,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAsHF;;;;;;;;OAQG;YACW,yBAAyB;IAoLvC;;;;OAIG;YACW,gBAAgB;IAa9B;;;;;;;;;;OAUG;YACW,WAAW;IAyDzB,mEAAmE;IACnE,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;;;;OAWG;YACW,sBAAsB;IAmBpC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;OAYG;YACW,sBAAsB;IAcpC;;OAEG;YACW,YAAY;IAoC1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;YACW,gBAAgB;IAqB9B;;;;;OAKG;YACW,qBAAqB;IAuBnC;;OAEG;YACW,WAAW;IASzB;;OAEG;YACW,WAAW;CAI1B"}