crewly 1.13.0 → 1.13.1

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 (597) hide show
  1. package/config/skills/_common/complete-body-shape.test.sh +113 -0
  2. package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
  3. package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
  4. package/config/skills/agent/core/accept-task/execute.sh +30 -5
  5. package/config/skills/agent/core/block-task/execute.sh +59 -6
  6. package/config/skills/agent/core/complete-task/SKILL.md +37 -5
  7. package/config/skills/agent/core/complete-task/execute.sh +40 -9
  8. package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
  9. package/config/skills/agent/core/create-task/SKILL.md +33 -0
  10. package/config/skills/agent/core/create-task/execute.sh +82 -23
  11. package/config/skills/agent/core/delegate-task/execute.sh +46 -0
  12. package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
  13. package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
  14. package/config/skills/agent/core/handoff-task/execute.sh +8 -1
  15. package/config/skills/agent/core/report-status/SKILL.md +26 -0
  16. package/config/skills/agent/core/report-status/execute.sh +40 -5
  17. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  18. package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
  19. package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
  20. package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
  21. package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
  22. package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
  23. package/config/skills/team-leader/delegate-task/execute.sh +132 -43
  24. package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
  25. package/config/vitest-exclude.constants.ts +56 -0
  26. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  27. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -3
  28. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  29. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/slack/slack.controller.js +18 -15
  31. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
  33. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  34. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +19 -10
  35. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  36. package/dist/backend/backend/src/index.d.ts.map +1 -1
  37. package/dist/backend/backend/src/index.js +20 -0
  38. package/dist/backend/backend/src/index.js.map +1 -1
  39. package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
  40. package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
  41. package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
  42. package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -0
  43. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/agent/agent-registration.service.js +25 -0
  45. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  46. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  47. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +9 -1
  48. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  49. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +42 -3
  50. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +22 -1
  52. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  53. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
  54. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +40 -0
  56. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  57. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
  58. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
  60. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  61. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
  62. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
  64. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  65. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +13 -1
  66. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +84 -5
  68. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  69. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +14 -0
  70. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
  72. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  73. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  74. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +268 -36
  76. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
  78. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  79. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +39 -2
  81. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  82. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  83. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  84. package/dist/backend/backend/src/types/v2/index.js +1 -1
  85. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  86. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +181 -1
  87. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  88. package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
  89. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  90. package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
  91. package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
  92. package/dist/backend/backend/src/utils/build-provenance.js +211 -0
  93. package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
  94. package/dist/backend/build-info.json +4 -0
  95. package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
  96. package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
  97. package/dist/backend/config/vitest-exclude.constants.js +55 -0
  98. package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
  99. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
  100. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
  101. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
  102. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
  103. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
  104. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
  105. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
  106. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
  107. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
  108. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
  109. package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
  110. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
  111. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
  112. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
  113. package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
  114. package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
  115. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
  116. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
  117. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
  118. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
  119. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
  120. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
  121. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
  122. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
  123. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
  124. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
  125. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
  126. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
  127. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
  128. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
  129. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
  130. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
  131. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
  132. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
  133. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
  134. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
  135. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
  136. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
  137. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
  138. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
  139. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
  140. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
  141. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
  142. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
  143. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
  144. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
  145. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
  146. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
  147. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
  148. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
  149. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
  150. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
  151. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
  152. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
  153. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
  154. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
  155. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  156. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  157. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
  158. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  159. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
  160. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
  161. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
  162. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
  163. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
  164. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
  165. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
  166. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
  167. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
  168. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
  169. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
  170. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
  171. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
  172. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
  173. package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
  174. package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
  175. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
  176. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
  177. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
  178. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
  179. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
  180. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
  181. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
  182. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
  183. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
  184. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  185. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
  186. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  187. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
  188. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
  189. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
  190. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
  191. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
  192. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
  193. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
  194. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
  195. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
  196. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
  197. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
  198. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
  199. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
  200. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
  201. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
  202. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
  203. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  204. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  205. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  206. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  207. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
  208. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
  209. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
  210. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
  211. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  212. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  213. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  214. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  215. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  216. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  217. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
  218. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  219. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
  220. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
  221. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
  222. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
  223. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  224. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  225. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  226. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  227. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
  228. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
  229. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
  230. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
  231. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  232. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  233. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  234. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  235. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
  236. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  237. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
  238. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  239. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  240. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  241. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
  242. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  243. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
  244. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
  245. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
  246. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
  247. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
  248. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
  249. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
  250. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
  251. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
  252. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
  253. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
  254. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
  255. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
  256. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  257. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
  258. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  259. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  260. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  261. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  262. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  263. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
  264. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  265. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
  266. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  267. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
  268. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
  269. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
  270. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
  271. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  272. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  273. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  274. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  275. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
  276. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  277. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
  278. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  279. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
  280. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
  281. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
  282. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
  283. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  284. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  285. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  286. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  287. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +737 -0
  288. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
  289. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1213 -0
  290. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
  291. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
  292. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
  293. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
  294. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
  295. package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
  296. package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
  297. package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
  298. package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
  299. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
  300. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  301. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
  302. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  303. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
  304. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
  305. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
  306. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
  307. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
  308. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
  309. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
  310. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
  311. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +208 -0
  312. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
  313. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +405 -0
  314. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
  315. package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
  316. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
  317. package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
  318. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
  319. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
  320. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
  321. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
  322. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
  323. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
  324. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
  325. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
  326. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
  327. package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
  328. package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
  329. package/dist/cli/backend/src/services/mcp-client.js +302 -0
  330. package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
  331. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
  332. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
  333. package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
  334. package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
  335. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
  336. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
  337. package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
  338. package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
  339. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
  340. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
  341. package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
  342. package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
  343. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
  344. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
  345. package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
  346. package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
  347. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
  348. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
  349. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
  350. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
  351. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
  352. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
  353. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
  354. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
  355. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
  356. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
  357. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
  358. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
  359. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
  360. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
  361. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
  362. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
  363. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
  364. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
  365. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
  366. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
  367. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
  368. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
  369. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
  370. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
  371. package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
  372. package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
  373. package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
  374. package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
  375. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
  376. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
  377. package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
  378. package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
  379. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
  380. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
  381. package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
  382. package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
  383. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
  384. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
  385. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
  386. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
  387. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
  388. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
  389. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
  390. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
  391. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
  392. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
  393. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
  394. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
  395. package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
  396. package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
  397. package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
  398. package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
  399. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
  400. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
  401. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
  402. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
  403. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
  404. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
  405. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
  406. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
  407. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
  408. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
  409. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
  410. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
  411. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
  412. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
  413. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
  414. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
  415. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
  416. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
  417. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
  418. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
  419. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
  420. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
  421. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
  422. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
  423. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
  424. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
  425. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
  426. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
  427. package/dist/cli/backend/src/services/session/index.d.ts +47 -0
  428. package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
  429. package/dist/cli/backend/src/services/session/index.js +50 -0
  430. package/dist/cli/backend/src/services/session/index.js.map +1 -0
  431. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
  432. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
  433. package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
  434. package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
  435. package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
  436. package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
  437. package/dist/cli/backend/src/services/session/pty/index.js +11 -0
  438. package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
  439. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
  440. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
  441. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
  442. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
  443. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
  444. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
  445. package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
  446. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
  447. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
  448. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
  449. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
  450. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
  451. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
  452. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
  453. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
  454. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
  455. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
  456. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
  457. package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
  458. package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
  459. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
  460. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
  461. package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
  462. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
  463. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
  464. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
  465. package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
  466. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
  467. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
  468. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
  469. package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
  470. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
  471. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
  472. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
  473. package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
  474. package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
  475. package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
  476. package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
  477. package/dist/cli/backend/src/services/settings/role.service.js +728 -0
  478. package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
  479. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
  480. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
  481. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
  482. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
  483. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
  484. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
  485. package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
  486. package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
  487. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
  488. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
  489. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1928 -0
  490. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
  491. package/dist/cli/backend/src/services/slack/slack.service.d.ts +315 -0
  492. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
  493. package/dist/cli/backend/src/services/slack/slack.service.js +1094 -0
  494. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
  495. package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
  496. package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
  497. package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
  498. package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
  499. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  500. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  501. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +268 -36
  502. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  503. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
  504. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
  505. package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
  506. package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
  507. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
  508. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
  509. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
  510. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
  511. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
  512. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
  513. package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
  514. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
  515. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
  516. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
  517. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
  518. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
  519. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
  520. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
  521. package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
  522. package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
  523. package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
  524. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
  525. package/dist/cli/backend/src/services/v3/request.service.js +534 -0
  526. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
  527. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
  528. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
  529. package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
  530. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
  531. package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
  532. package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
  533. package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
  534. package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
  535. package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
  536. package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
  537. package/dist/cli/backend/src/types/intent-task.types.js +403 -0
  538. package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
  539. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
  540. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
  541. package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
  542. package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
  543. package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
  544. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
  545. package/dist/cli/backend/src/types/v2/index.js +22 -0
  546. package/dist/cli/backend/src/types/v2/index.js.map +1 -0
  547. package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
  548. package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
  549. package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
  550. package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
  551. package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
  552. package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
  553. package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
  554. package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
  555. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
  556. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
  557. package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
  558. package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
  559. package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
  560. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
  561. package/dist/cli/backend/src/types/v2/request.types.js +179 -0
  562. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
  563. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
  564. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  565. package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
  566. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  567. package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
  568. package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
  569. package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
  570. package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
  571. package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
  572. package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
  573. package/dist/cli/backend/src/utils/async.utils.js +80 -0
  574. package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
  575. package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
  576. package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
  577. package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
  578. package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
  579. package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
  580. package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
  581. package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
  582. package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
  583. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
  584. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
  585. package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
  586. package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
  587. package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
  588. package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
  589. package/dist/cli/config/vitest-exclude.constants.js +55 -0
  590. package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
  591. package/frontend/dist/assets/index-890d3f9d.js +4961 -0
  592. package/frontend/dist/index.html +1 -1
  593. package/package.json +2 -2
  594. package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +174 -30
  595. package/packages/crewly-agent/src/runtime/agent-runner.service.ts +121 -6
  596. package/packages/crewly-agent/src/runtime/types.ts +56 -5
  597. package/frontend/dist/assets/index-aa737fd3.js +0 -5254
@@ -0,0 +1,713 @@
1
+ /**
2
+ * V2 Mission & MissionPolicy Type Definitions
3
+ *
4
+ * A Mission represents a team's long-term objective. Missions drive
5
+ * autonomous work independent of user Requests. MissionPolicy governs
6
+ * what a team can do autonomously under a Mission.
7
+ *
8
+ * @module types/v2/mission.types
9
+ */
10
+ import { v4 as uuidv4 } from 'uuid';
11
+ /** All valid MissionStatus values. */
12
+ export const MISSION_STATUSES = [
13
+ 'active',
14
+ 'paused',
15
+ 'completed',
16
+ 'cancelled',
17
+ ];
18
+ /** Terminal mission statuses. */
19
+ export const TERMINAL_MISSION_STATUSES = new Set([
20
+ 'completed',
21
+ 'cancelled',
22
+ ]);
23
+ /** Valid mission status transitions. */
24
+ export const MISSION_TRANSITIONS = {
25
+ active: new Set(['paused', 'completed', 'cancelled']),
26
+ paused: new Set(['active', 'cancelled']),
27
+ completed: new Set(),
28
+ cancelled: new Set(),
29
+ };
30
+ /** All valid MissionLevel values, ordered top → bottom of the cascade. */
31
+ export const MISSION_LEVELS = ['company', 'team', 'project'];
32
+ /**
33
+ * Numeric depth of each cascade tier (company = 0, team = 1, project = 2).
34
+ * Used to enforce the "child is exactly one tier below parent" rule.
35
+ */
36
+ export const MISSION_LEVEL_DEPTH = {
37
+ company: 0,
38
+ team: 1,
39
+ project: 2,
40
+ };
41
+ /** Depth threshold at or beyond which a mission is treated as `project` level. */
42
+ export const PROJECT_LEVEL_DEPTH = 2;
43
+ /**
44
+ * Checks whether a string is a valid MissionLevel.
45
+ *
46
+ * @param value - Candidate string
47
+ * @returns `true` if `value` is one of `company` | `team` | `project`
48
+ */
49
+ export function isValidMissionLevel(value) {
50
+ return MISSION_LEVELS.includes(value);
51
+ }
52
+ /**
53
+ * Validates a single downward cascade step: a child level may only sit exactly
54
+ * one tier below its parent, and `company` must be a root (no parent).
55
+ *
56
+ * Adjacency matrix:
57
+ * | child | required parent | parentMissionId |
58
+ * |---------|-----------------|-------------------|
59
+ * | company | — | must be undefined |
60
+ * | team | company | required |
61
+ * | project | team | required |
62
+ *
63
+ * @param childLevel - The level of the child mission
64
+ * @param parentLevel - The level of the parent mission, or `undefined` if no parent
65
+ * @returns `null` if the pairing is legal, otherwise a human-readable reason
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * validateLevelLink('team', 'company'); // null
70
+ * validateLevelLink('company', 'team'); // "A company mission cannot have a parent"
71
+ * ```
72
+ */
73
+ export function validateLevelLink(childLevel, parentLevel) {
74
+ if (childLevel === 'company') {
75
+ return parentLevel === undefined
76
+ ? null
77
+ : 'A company mission cannot have a parent';
78
+ }
79
+ if (parentLevel === undefined) {
80
+ return `A ${childLevel} mission requires a parent mission`;
81
+ }
82
+ const expectedDepth = MISSION_LEVEL_DEPTH[childLevel] - 1;
83
+ if (MISSION_LEVEL_DEPTH[parentLevel] !== expectedDepth) {
84
+ return `A ${childLevel} mission must have a ${MISSION_LEVELS[expectedDepth]} parent, not a ${parentLevel} parent`;
85
+ }
86
+ return null;
87
+ }
88
+ /** All valid ProposalState values. */
89
+ export const PROPOSAL_STATES = [
90
+ 'draft',
91
+ 'pending_approval',
92
+ 'approved',
93
+ 'rejected',
94
+ ];
95
+ /**
96
+ * Legal proposal-state transitions.
97
+ *
98
+ * - draft → pending_approval
99
+ * - pending_approval → approved | rejected
100
+ * - approved → (terminal)
101
+ * - rejected → draft (owner can ask for a redraft)
102
+ */
103
+ export const PROPOSAL_TRANSITIONS = {
104
+ draft: new Set(['pending_approval']),
105
+ pending_approval: new Set(['approved', 'rejected']),
106
+ approved: new Set(),
107
+ rejected: new Set(['draft']),
108
+ };
109
+ /**
110
+ * Checks whether a string is a valid ProposalState.
111
+ *
112
+ * @param value - Candidate string
113
+ * @returns `true` if `value` is one of the four proposal states
114
+ */
115
+ export function isValidProposalState(value) {
116
+ return PROPOSAL_STATES.includes(value);
117
+ }
118
+ /**
119
+ * Checks whether a proposal-state transition is legal.
120
+ *
121
+ * @param from - Current proposal state
122
+ * @param to - Proposed next proposal state
123
+ * @returns `true` if `from → to` is an allowed transition
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * isValidProposalTransition('pending_approval', 'approved'); // true
128
+ * isValidProposalTransition('approved', 'draft'); // false
129
+ * ```
130
+ */
131
+ export function isValidProposalTransition(from, to) {
132
+ return PROPOSAL_TRANSITIONS[from].has(to);
133
+ }
134
+ /** All valid MissionPriority values (ordered most → least important). */
135
+ export const MISSION_PRIORITIES = [
136
+ 'critical',
137
+ 'high',
138
+ 'medium',
139
+ 'low',
140
+ ];
141
+ /**
142
+ * Numeric rank for sorting missions by priority (lower rank = higher priority).
143
+ * Missing priority is treated as `low`.
144
+ */
145
+ export const MISSION_PRIORITY_RANK = {
146
+ critical: 0,
147
+ high: 1,
148
+ medium: 2,
149
+ low: 3,
150
+ };
151
+ /** All valid escalation conditions. */
152
+ export const ESCALATION_CONDITIONS = [
153
+ 'cost_exceeded',
154
+ 'time_exceeded',
155
+ 'failure_count',
156
+ 'scope_change',
157
+ 'security_concern',
158
+ ];
159
+ /** All valid PhaseGateApproval values. */
160
+ export const PHASE_GATE_APPROVALS = [
161
+ 'none',
162
+ 'team_lead',
163
+ 'human',
164
+ ];
165
+ // ---------------------------------------------------------------------------
166
+ // Default ExecutionCadence values
167
+ // ---------------------------------------------------------------------------
168
+ /**
169
+ * Conservative cadence — slow, human-gated, business hours only.
170
+ */
171
+ export const CONSERVATIVE_CADENCE = {
172
+ reviewSchedule: '0 9 * * 1',
173
+ dailyItemLimit: 3,
174
+ workHours: {
175
+ startHour: 9,
176
+ endHour: 17,
177
+ timezone: 'UTC',
178
+ activeDays: [1, 2, 3, 4, 5],
179
+ },
180
+ phaseGateApproval: 'human',
181
+ requireVerificationGate: true,
182
+ };
183
+ /**
184
+ * Moderate cadence — steady flow, TL-gated phases, extended hours.
185
+ */
186
+ export const MODERATE_CADENCE = {
187
+ reviewSchedule: '0 9 * * 1,4',
188
+ dailyItemLimit: 10,
189
+ workHours: {
190
+ startHour: 8,
191
+ endHour: 20,
192
+ timezone: 'UTC',
193
+ activeDays: [1, 2, 3, 4, 5],
194
+ },
195
+ phaseGateApproval: 'team_lead',
196
+ requireVerificationGate: true,
197
+ };
198
+ /**
199
+ * Autonomous cadence — fast, self-advancing, 24/7.
200
+ */
201
+ export const AUTONOMOUS_CADENCE = {
202
+ reviewSchedule: '0 9 * * *',
203
+ dailyItemLimit: 0,
204
+ workHours: null,
205
+ phaseGateApproval: 'none',
206
+ requireVerificationGate: false,
207
+ };
208
+ /** All valid policy actions. */
209
+ export const POLICY_ACTIONS = [
210
+ 'create_task',
211
+ 'reprioritize_task',
212
+ 'close_task',
213
+ 'deploy_staging',
214
+ 'deploy_prod',
215
+ 'spend_money',
216
+ 'change_user_visible_behavior',
217
+ 'replan_mission',
218
+ 'advance_phase',
219
+ 'adjust_kr_target',
220
+ ];
221
+ /**
222
+ * Maps PolicyAction to the corresponding MissionPolicy boolean field.
223
+ */
224
+ export const ACTION_TO_POLICY_FIELD = {
225
+ create_task: 'canCreateTasks',
226
+ reprioritize_task: 'canReprioritizeTasks',
227
+ close_task: 'canCloseTasks',
228
+ deploy_staging: 'canDeployToStaging',
229
+ deploy_prod: 'canDeployToProd',
230
+ spend_money: 'canSpendMoney',
231
+ change_user_visible_behavior: 'canChangeUserVisibleBehaviorWithoutReview',
232
+ replan_mission: 'canReplanMission',
233
+ advance_phase: 'canAdvancePhase',
234
+ adjust_kr_target: 'canAdjustKRTargets',
235
+ };
236
+ // ---------------------------------------------------------------------------
237
+ // Default Policies (Templates)
238
+ // ---------------------------------------------------------------------------
239
+ /**
240
+ * Conservative policy — all capabilities disabled, human approval for everything.
241
+ */
242
+ export const CONSERVATIVE_POLICY = {
243
+ canCreateTasks: false,
244
+ canReprioritizeTasks: false,
245
+ canCloseTasks: false,
246
+ canDeployToStaging: false,
247
+ canDeployToProd: false,
248
+ canSpendMoney: false,
249
+ canChangeUserVisibleBehaviorWithoutReview: false,
250
+ maxParallelExecutions: 1,
251
+ escalationRules: [],
252
+ executionCadence: CONSERVATIVE_CADENCE,
253
+ };
254
+ /**
255
+ * Moderate policy — can create and close tasks, but no deploy or spend.
256
+ */
257
+ export const MODERATE_POLICY = {
258
+ canCreateTasks: true,
259
+ canReprioritizeTasks: true,
260
+ canCloseTasks: true,
261
+ canDeployToStaging: false,
262
+ canDeployToProd: false,
263
+ canSpendMoney: false,
264
+ canChangeUserVisibleBehaviorWithoutReview: false,
265
+ maxParallelExecutions: 3,
266
+ escalationRules: [
267
+ { condition: 'failure_count', threshold: 3, escalateTo: 'team_lead', action: 'notify' },
268
+ ],
269
+ executionCadence: MODERATE_CADENCE,
270
+ };
271
+ /**
272
+ * Autonomous policy — most capabilities enabled, but no prod deploy.
273
+ */
274
+ export const AUTONOMOUS_POLICY = {
275
+ canCreateTasks: true,
276
+ canReprioritizeTasks: true,
277
+ canCloseTasks: true,
278
+ canDeployToStaging: true,
279
+ canDeployToProd: false,
280
+ canSpendMoney: true,
281
+ canChangeUserVisibleBehaviorWithoutReview: false,
282
+ maxParallelExecutions: 5,
283
+ escalationRules: [
284
+ { condition: 'cost_exceeded', threshold: 50, escalateTo: 'user', action: 'pause' },
285
+ { condition: 'failure_count', threshold: 5, escalateTo: 'team_lead', action: 'notify' },
286
+ { condition: 'security_concern', threshold: 1, escalateTo: 'user', action: 'block' },
287
+ ],
288
+ executionCadence: AUTONOMOUS_CADENCE,
289
+ };
290
+ // ---------------------------------------------------------------------------
291
+ // Type Guards
292
+ // ---------------------------------------------------------------------------
293
+ /**
294
+ * Checks whether a string is a valid MissionStatus.
295
+ */
296
+ export function isValidMissionStatus(value) {
297
+ return MISSION_STATUSES.includes(value);
298
+ }
299
+ /**
300
+ * Checks whether a string is a valid PolicyAction.
301
+ */
302
+ export function isValidPolicyAction(value) {
303
+ return POLICY_ACTIONS.includes(value);
304
+ }
305
+ /**
306
+ * Checks whether a string is a valid EscalationCondition.
307
+ */
308
+ export function isValidEscalationCondition(value) {
309
+ return ESCALATION_CONDITIONS.includes(value);
310
+ }
311
+ /**
312
+ * Checks whether a mission status transition is valid.
313
+ */
314
+ export function isValidMissionTransition(from, to) {
315
+ return MISSION_TRANSITIONS[from].has(to);
316
+ }
317
+ /**
318
+ * Validates an EscalationRule.
319
+ */
320
+ export function isValidEscalationRule(rule) {
321
+ if (typeof rule !== 'object' || rule === null)
322
+ return false;
323
+ const obj = rule;
324
+ return (typeof obj.condition === 'string' &&
325
+ isValidEscalationCondition(obj.condition) &&
326
+ typeof obj.threshold === 'number' &&
327
+ obj.threshold >= 0 &&
328
+ typeof obj.escalateTo === 'string' &&
329
+ ['user', 'orchestrator', 'team_lead'].includes(obj.escalateTo) &&
330
+ typeof obj.action === 'string' &&
331
+ ['pause', 'notify', 'block'].includes(obj.action));
332
+ }
333
+ /**
334
+ * Checks whether a string is a valid PhaseGateApproval.
335
+ */
336
+ export function isValidPhaseGateApproval(value) {
337
+ return PHASE_GATE_APPROVALS.includes(value);
338
+ }
339
+ /**
340
+ * Validates a WorkHoursWindow object.
341
+ */
342
+ export function isValidWorkHoursWindow(value) {
343
+ if (typeof value !== 'object' || value === null)
344
+ return false;
345
+ const obj = value;
346
+ return (typeof obj.startHour === 'number' &&
347
+ Number.isInteger(obj.startHour) &&
348
+ obj.startHour >= 0 && obj.startHour <= 23 &&
349
+ typeof obj.endHour === 'number' &&
350
+ Number.isInteger(obj.endHour) &&
351
+ obj.endHour >= 0 && obj.endHour <= 23 &&
352
+ typeof obj.timezone === 'string' &&
353
+ obj.timezone.length > 0 &&
354
+ Array.isArray(obj.activeDays) &&
355
+ obj.activeDays.every((d) => typeof d === 'number' && Number.isInteger(d) && d >= 0 && d <= 6));
356
+ }
357
+ /**
358
+ * Validates an ExecutionCadence object.
359
+ */
360
+ export function isValidExecutionCadence(value) {
361
+ if (typeof value !== 'object' || value === null)
362
+ return false;
363
+ const obj = value;
364
+ return (typeof obj.reviewSchedule === 'string' &&
365
+ obj.reviewSchedule.length > 0 &&
366
+ typeof obj.dailyItemLimit === 'number' &&
367
+ Number.isInteger(obj.dailyItemLimit) &&
368
+ obj.dailyItemLimit >= 0 &&
369
+ (obj.workHours === null || isValidWorkHoursWindow(obj.workHours)) &&
370
+ typeof obj.phaseGateApproval === 'string' &&
371
+ isValidPhaseGateApproval(obj.phaseGateApproval) &&
372
+ typeof obj.requireVerificationGate === 'boolean');
373
+ }
374
+ /**
375
+ * Validates a MissionPolicy object.
376
+ */
377
+ export function isValidMissionPolicy(value) {
378
+ if (typeof value !== 'object' || value === null)
379
+ return false;
380
+ const obj = value;
381
+ const baseValid = (typeof obj.missionId === 'string' &&
382
+ typeof obj.canCreateTasks === 'boolean' &&
383
+ typeof obj.canReprioritizeTasks === 'boolean' &&
384
+ typeof obj.canCloseTasks === 'boolean' &&
385
+ typeof obj.canDeployToStaging === 'boolean' &&
386
+ typeof obj.canDeployToProd === 'boolean' &&
387
+ typeof obj.canSpendMoney === 'boolean' &&
388
+ typeof obj.canChangeUserVisibleBehaviorWithoutReview === 'boolean' &&
389
+ typeof obj.maxParallelExecutions === 'number' &&
390
+ obj.maxParallelExecutions > 0 &&
391
+ Array.isArray(obj.escalationRules));
392
+ if (!baseValid)
393
+ return false;
394
+ // executionCadence is optional; validate only if present
395
+ if (obj.executionCadence !== undefined && !isValidExecutionCadence(obj.executionCadence)) {
396
+ return false;
397
+ }
398
+ return true;
399
+ }
400
+ /**
401
+ * Validates that an unknown value is structurally a valid Mission.
402
+ */
403
+ export function isMission(value) {
404
+ if (typeof value !== 'object' || value === null)
405
+ return false;
406
+ const obj = value;
407
+ return (typeof obj.id === 'string' &&
408
+ typeof obj.objective === 'string' &&
409
+ typeof obj.ownerTeamId === 'string' &&
410
+ typeof obj.status === 'string' &&
411
+ isValidMissionStatus(obj.status) &&
412
+ typeof obj.createdAt === 'string' &&
413
+ Array.isArray(obj.successCriteria) &&
414
+ Array.isArray(obj.activeProjectTaskIds));
415
+ }
416
+ // ---------------------------------------------------------------------------
417
+ // Factory
418
+ // ---------------------------------------------------------------------------
419
+ /**
420
+ * Creates a default MissionPolicy for a given mission.
421
+ * Defaults to conservative (all disabled).
422
+ *
423
+ * @param missionId - The mission this policy applies to
424
+ * @param template - Optional template: 'conservative', 'moderate', 'autonomous'
425
+ * @returns A fully populated MissionPolicy
426
+ */
427
+ export function createMissionPolicy(missionId, template = 'conservative') {
428
+ const templates = {
429
+ conservative: CONSERVATIVE_POLICY,
430
+ moderate: MODERATE_POLICY,
431
+ autonomous: AUTONOMOUS_POLICY,
432
+ };
433
+ return {
434
+ missionId,
435
+ ...templates[template],
436
+ // Deep copy escalation rules to avoid shared references
437
+ escalationRules: [...templates[template].escalationRules.map(r => ({ ...r }))],
438
+ };
439
+ }
440
+ /**
441
+ * Creates a new Mission with sensible defaults.
442
+ *
443
+ * @param input - Required and optional creation fields
444
+ * @returns A fully populated Mission object
445
+ */
446
+ export function createMission(input) {
447
+ const now = new Date().toISOString();
448
+ const id = uuidv4();
449
+ const reviewSchedule = input.cadence ?? '0 9 * * 1';
450
+ const basePolicy = createMissionPolicy(id, 'conservative');
451
+ const mergedPolicy = {
452
+ ...basePolicy,
453
+ ...input.policy,
454
+ missionId: id,
455
+ // Deep copy escalation rules from the merged result
456
+ escalationRules: [...(input.policy?.escalationRules ?? basePolicy.escalationRules).map(r => ({ ...r }))],
457
+ };
458
+ // Sync reviewSchedule into executionCadence if caller provided cadence but no executionCadence
459
+ if (!mergedPolicy.executionCadence) {
460
+ mergedPolicy.executionCadence = { ...CONSERVATIVE_CADENCE, reviewSchedule };
461
+ }
462
+ else if (input.cadence && !input.policy?.executionCadence?.reviewSchedule) {
463
+ mergedPolicy.executionCadence = {
464
+ ...mergedPolicy.executionCadence,
465
+ reviewSchedule,
466
+ };
467
+ }
468
+ return {
469
+ id,
470
+ objective: input.objective,
471
+ ownerTeamId: input.ownerTeamId,
472
+ successCriteria: input.successCriteria,
473
+ currentStrategy: input.currentStrategy,
474
+ activeProjectTaskIds: [],
475
+ cadence: reviewSchedule,
476
+ policy: mergedPolicy,
477
+ status: 'active',
478
+ ownerId: input.ownerId,
479
+ createdAt: now,
480
+ updatedAt: now,
481
+ learnings: [],
482
+ period: input.period,
483
+ parentMissionId: input.parentMissionId,
484
+ level: input.level ?? (input.parentMissionId ? undefined : 'company'),
485
+ projectId: input.projectId,
486
+ approval: input.approval,
487
+ priority: input.priority,
488
+ };
489
+ }
490
+ // ---------------------------------------------------------------------------
491
+ // ExecutionCadence Helpers
492
+ // ---------------------------------------------------------------------------
493
+ /**
494
+ * Returns the effective ExecutionCadence for a mission policy.
495
+ * Falls back to CONSERVATIVE_CADENCE when no cadence is defined.
496
+ *
497
+ * @param policy - The MissionPolicy to read from
498
+ * @returns Resolved ExecutionCadence (never undefined)
499
+ */
500
+ export function getEffectiveCadence(policy) {
501
+ return policy.executionCadence ?? { ...CONSERVATIVE_CADENCE };
502
+ }
503
+ /**
504
+ * Merges a partial cadence update into an existing ExecutionCadence.
505
+ * Deep-merges workHours if both exist. Pass workHours: null to clear.
506
+ *
507
+ * @param existing - Current cadence
508
+ * @param updates - Partial fields to merge
509
+ * @returns New merged ExecutionCadence (does not mutate inputs)
510
+ */
511
+ export function mergeExecutionCadence(existing, updates) {
512
+ return {
513
+ ...existing,
514
+ ...updates,
515
+ workHours: updates.workHours === null
516
+ ? null
517
+ : updates.workHours !== undefined
518
+ ? {
519
+ ...(existing.workHours ?? { startHour: 9, endHour: 17, timezone: 'UTC', activeDays: [1, 2, 3, 4, 5] }),
520
+ ...updates.workHours,
521
+ }
522
+ : existing.workHours,
523
+ };
524
+ }
525
+ export function isPeriodActive(period, now = new Date()) {
526
+ return now >= new Date(period.startDate) && now < new Date(period.endDate);
527
+ }
528
+ export function isPeriodPast(period, now = new Date()) {
529
+ return now >= new Date(period.endDate);
530
+ }
531
+ export function isPeriodFuture(period, now = new Date()) {
532
+ return now < new Date(period.startDate);
533
+ }
534
+ /**
535
+ * Build a `monthly` MissionPeriod for a given calendar month.
536
+ *
537
+ * The period is half-open `[first day of month, first day of next month)`,
538
+ * matching the `now >= start && now < end` convention used by
539
+ * {@link isPeriodActive}. Dates are UTC so the boundaries are deterministic
540
+ * regardless of server timezone. Handles December → January year rollover.
541
+ *
542
+ * @param year - Full year, e.g. `2026`.
543
+ * @param month - 1-based month (`1` = January … `12` = December).
544
+ * @returns A `monthly` MissionPeriod with ISO8601 start/end and a `YYYY-MM` label.
545
+ *
546
+ * @example
547
+ * ```typescript
548
+ * createMonthlyPeriod(2026, 3); // March 2026: 2026-03-01 → 2026-04-01, label "2026-03"
549
+ * ```
550
+ */
551
+ export function createMonthlyPeriod(year, month) {
552
+ const start = new Date(Date.UTC(year, month - 1, 1));
553
+ // month is 1-based, so passing it as the 0-based Date month index yields the
554
+ // first day of the *next* month (Date normalizes 12 → January of year+1).
555
+ const end = new Date(Date.UTC(year, month, 1));
556
+ return {
557
+ type: 'monthly',
558
+ startDate: start.toISOString(),
559
+ endDate: end.toISOString(),
560
+ label: `${year}-${String(month).padStart(2, '0')}`,
561
+ };
562
+ }
563
+ // ---------------------------------------------------------------------------
564
+ // Mission Hierarchy Helpers
565
+ // ---------------------------------------------------------------------------
566
+ /**
567
+ * Validates a proposed parent link between a child mission and a parent.
568
+ *
569
+ * Rejects self-reference and any cycle that would be introduced by walking
570
+ * up the existing parent chain from `parentId`. The child mission itself
571
+ * does not need to exist in `byId` (useful for create-time validation).
572
+ *
573
+ * @param childId - The mission that would acquire the parent
574
+ * @param parentId - The proposed parent mission ID
575
+ * @param byId - All existing missions indexed by ID
576
+ * @returns `null` if the link is valid, otherwise a human-readable reason
577
+ *
578
+ * @example
579
+ * ```ts
580
+ * const reason = validateParentLink('m1', 'm2', new Map([['m2', m2]]));
581
+ * if (reason) throw new Error(reason);
582
+ * ```
583
+ */
584
+ export function validateParentLink(childId, parentId, byId) {
585
+ if (childId === parentId)
586
+ return 'A mission cannot be its own parent';
587
+ if (!byId.has(parentId))
588
+ return `Parent mission ${parentId} does not exist`;
589
+ // Walk up from the proposed parent; if we reach `childId`, we have a cycle.
590
+ const seen = new Set();
591
+ let cursor = parentId;
592
+ while (cursor) {
593
+ if (seen.has(cursor))
594
+ return `Parent chain contains a cycle at ${cursor}`;
595
+ if (cursor === childId)
596
+ return 'Proposed parent link would create a cycle';
597
+ seen.add(cursor);
598
+ cursor = byId.get(cursor)?.parentMissionId;
599
+ }
600
+ return null;
601
+ }
602
+ /**
603
+ * Derives a Mission's cascade level by walking its `parentMissionId` chain.
604
+ *
605
+ * Depth 0 (no parent) ⇒ `company`, depth 1 ⇒ `team`, depth ≥ 2 ⇒ `project`.
606
+ * Used to backfill `level` for legacy missions persisted before the cascade
607
+ * fields existed. Guards against cycles defensively (returns the level computed
608
+ * at the point a repeat is detected rather than looping forever).
609
+ *
610
+ * @param missionId - The mission whose level to derive
611
+ * @param byId - All missions indexed by ID (need only `id` + `parentMissionId`)
612
+ * @returns The derived MissionLevel
613
+ *
614
+ * @example
615
+ * ```ts
616
+ * deriveLevel('teamM', new Map([['teamM', { id: 'teamM', parentMissionId: 'co' }], ['co', { id: 'co' }]])); // 'team'
617
+ * ```
618
+ */
619
+ export function deriveLevel(missionId, byId) {
620
+ let depth = 0;
621
+ const seen = new Set();
622
+ let cursor = byId.get(missionId)?.parentMissionId;
623
+ while (cursor && depth < PROJECT_LEVEL_DEPTH) {
624
+ if (seen.has(cursor))
625
+ break;
626
+ seen.add(cursor);
627
+ depth += 1;
628
+ cursor = byId.get(cursor)?.parentMissionId;
629
+ }
630
+ if (depth === 0)
631
+ return 'company';
632
+ if (depth === 1)
633
+ return 'team';
634
+ return 'project';
635
+ }
636
+ /**
637
+ * Resolve a mission's effective cascade level through a SINGLE canonical rule,
638
+ * shared by every read path (cascade service, mission routes' read-migration).
639
+ *
640
+ * Prefers the mission's explicit `level`; when absent (legacy missions persisted
641
+ * before the cascade fields existed) it falls back to {@link deriveLevel}, which
642
+ * walks the `parentMissionId` chain (no parent ⇒ `company`, one parent ⇒ `team`,
643
+ * two-or-more ⇒ `project`). Centralising the fallback here guarantees the same
644
+ * document resolves to the same level no matter which code path reads it.
645
+ *
646
+ * @param mission - The mission whose level to resolve (needs `id`, optional
647
+ * `level` + `parentMissionId`)
648
+ * @param byId - All missions indexed by ID for the parent-chain walk
649
+ * @returns The resolved {@link MissionLevel}
650
+ *
651
+ * @example
652
+ * ```ts
653
+ * resolveMissionLevel({ id: 'co', }, byId); // 'company' (no parent)
654
+ * resolveMissionLevel({ id: 't', parentMissionId: 'co' }, byId); // 'team'
655
+ * ```
656
+ */
657
+ export function resolveMissionLevel(mission, byId) {
658
+ if (mission.level)
659
+ return mission.level;
660
+ return deriveLevel(mission.id, byId);
661
+ }
662
+ /**
663
+ * Combined cascade-link guard: runs the raw cycle/self-ref check
664
+ * ({@link validateParentLink}) AND the level-adjacency check
665
+ * ({@link validateLevelLink}). The parent's level is read from `byId` (its own
666
+ * `level` field, falling back to {@link deriveLevel} when absent).
667
+ *
668
+ * `validateParentLink` keeps its original signature for callers that only need
669
+ * the cycle check.
670
+ *
671
+ * @param childId - The mission that would acquire the parent
672
+ * @param childLevel - The proposed level of the child mission
673
+ * @param parentId - The proposed parent mission ID, or `undefined` for a root
674
+ * @param byId - All existing missions indexed by ID
675
+ * @returns `null` if the link is valid, otherwise a human-readable reason
676
+ *
677
+ * @example
678
+ * ```ts
679
+ * const reason = validateCascadeLink('p1', 'project', 't1', byId);
680
+ * if (reason) throw new Error(reason);
681
+ * ```
682
+ */
683
+ export function validateCascadeLink(childId, childLevel, parentId, byId) {
684
+ if (parentId === undefined) {
685
+ return validateLevelLink(childLevel, undefined);
686
+ }
687
+ const cycleReason = validateParentLink(childId, parentId, byId);
688
+ if (cycleReason)
689
+ return cycleReason;
690
+ const parent = byId.get(parentId);
691
+ const parentLevel = parent?.level ?? deriveLevel(parentId, byId);
692
+ return validateLevelLink(childLevel, parentLevel);
693
+ }
694
+ /**
695
+ * Sort missions by status (active first), then by priority rank, then by recency.
696
+ *
697
+ * @param missions - Missions to sort (not mutated)
698
+ * @returns New array sorted by status → priority → createdAt desc
699
+ */
700
+ export function sortMissionsByPriority(missions) {
701
+ return [...missions].sort((a, b) => {
702
+ if (a.status === 'active' && b.status !== 'active')
703
+ return -1;
704
+ if (a.status !== 'active' && b.status === 'active')
705
+ return 1;
706
+ const rankA = MISSION_PRIORITY_RANK[a.priority ?? 'low'];
707
+ const rankB = MISSION_PRIORITY_RANK[b.priority ?? 'low'];
708
+ if (rankA !== rankB)
709
+ return rankA - rankB;
710
+ return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
711
+ });
712
+ }
713
+ //# sourceMappingURL=mission.types.js.map