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,140 @@
1
+ /**
2
+ * Hierarchy Escalation Monitor
3
+ *
4
+ * Runtime wiring for {@link HierarchyEscalationService}, which documents
5
+ * the "TL unresponsive → bypass to the orchestrator" rule but had no
6
+ * consumers: nothing recorded TL responses, nothing checked the timeout,
7
+ * nothing routed the bypass.
8
+ *
9
+ * The signal we have today for "a worker escalated to their TL" is the
10
+ * verification handoff: `task:done_by_worker` puts a WorkItem in the TL's
11
+ * court, and `task:verified` / `task:rejected` is the TL's response. So:
12
+ *
13
+ * - `task:done_by_worker` → remember `{ workItemId, workerSession, since }`
14
+ * - `task:verified|rejected` → forget it; `recordTLResponse(tlSession)`
15
+ * - every {@link DEFAULT_SWEEP_INTERVAL_MS}: for each pending handoff
16
+ * older than {@link DEFAULT_TL_ACK_TIMEOUT_MS} whose WI is still
17
+ * `done_by_worker`, resolve the worker's TL from the team hierarchy,
18
+ * call `handleTLUnresponsive` (publishes `hierarchy:escalation`) and
19
+ * enqueue an `[ESCALATION]` system event to the orchestrator — once
20
+ * per WorkItem.
21
+ *
22
+ * What is still missing for a fuller implementation: an explicit
23
+ * "TL acknowledged" signal distinct from the verdict (a TL who has *seen*
24
+ * the item but is still reviewing looks identical to one who is gone),
25
+ * and inclusion of non-verification escalations (a worker's free-text
26
+ * report-status escalation does not produce a WorkItem the monitor can
27
+ * track).
28
+ *
29
+ * @module services/hierarchy/hierarchy-escalation-monitor.service
30
+ */
31
+ import { type ComponentLogger } from '../core/logger.service.js';
32
+ import { HierarchyEscalationService } from './hierarchy-escalation.service.js';
33
+ import type { EventBusService } from '../event-bus/event-bus.service.js';
34
+ import type { Team } from '../../types/index.js';
35
+ import type { WorkItem } from '../../types/v2/work-item.types.js';
36
+ import { MESSAGE_SOURCES } from '../../constants.js';
37
+ /** How long a TL may sit on a worker's handoff before the bypass fires. */
38
+ export declare const DEFAULT_TL_ACK_TIMEOUT_MS: number;
39
+ /** Cadence of the pending-handoff sweep. */
40
+ export declare const DEFAULT_SWEEP_INTERVAL_MS: number;
41
+ /** Conversation id stamped on the orchestrator-bound bypass message. */
42
+ export declare const HIERARCHY_ESCALATION_CONVERSATION_ID = "system_hierarchy_escalation";
43
+ /** Envelope prefix for the bypass message. */
44
+ export declare const HIERARCHY_ESCALATION_ENVELOPE_PREFIX = "[ESCALATION]";
45
+ /** Minimal pool surface. */
46
+ export interface HierarchyMonitorTaskPool {
47
+ findWorkItem(id: string): Promise<WorkItem | null | undefined>;
48
+ }
49
+ /** Minimal queue surface. */
50
+ export interface HierarchyMonitorMessageQueue {
51
+ enqueue(input: {
52
+ content: string;
53
+ conversationId: string;
54
+ source: typeof MESSAGE_SOURCES.SYSTEM_EVENT;
55
+ targetSession?: string;
56
+ sourceMetadata?: Record<string, unknown>;
57
+ }): unknown;
58
+ }
59
+ /** Injectable dependencies. */
60
+ export interface HierarchyEscalationMonitorDependencies {
61
+ eventBus: EventBusService;
62
+ messageQueue: HierarchyMonitorMessageQueue;
63
+ taskPool?: HierarchyMonitorTaskPool;
64
+ getTeams?: () => Promise<Team[]>;
65
+ escalation?: HierarchyEscalationService;
66
+ logger?: ComponentLogger;
67
+ now?: () => Date;
68
+ /** Override the TL acknowledgement timeout (ms). */
69
+ ackTimeoutMs?: number;
70
+ /** Override the sweep cadence (ms). `0` disables the timer (tests call `sweep()`). */
71
+ sweepIntervalMs?: number;
72
+ }
73
+ /** Outcome of one sweep. */
74
+ export interface HierarchySweepResult {
75
+ pending: number;
76
+ escalated: string[];
77
+ cleared: string[];
78
+ }
79
+ /**
80
+ * Tracks worker→TL handoffs and bypasses an unresponsive TL. See module docs.
81
+ */
82
+ export declare class HierarchyEscalationMonitor {
83
+ private readonly eventBus;
84
+ private readonly messageQueue;
85
+ private readonly taskPool;
86
+ private readonly getTeams;
87
+ private readonly escalation;
88
+ private readonly logger;
89
+ private readonly now;
90
+ private readonly ackTimeoutMs;
91
+ private readonly sweepIntervalMs;
92
+ private readonly pending;
93
+ private readonly escalated;
94
+ private unsubscribers;
95
+ private timer;
96
+ private started;
97
+ private readonly pendingDispatches;
98
+ constructor(deps: HierarchyEscalationMonitorDependencies);
99
+ /**
100
+ * Production wiring helper.
101
+ *
102
+ * @param eventBus - Live event bus
103
+ * @param messageQueue - Orchestrator message queue
104
+ * @returns A monitor ready to `start()`
105
+ */
106
+ static boot(eventBus: EventBusService, messageQueue: HierarchyMonitorMessageQueue): HierarchyEscalationMonitor;
107
+ /** Subscribe + arm the sweep timer. Idempotent. */
108
+ start(): void;
109
+ /** Detach subscriptions and stop the timer. Idempotent. */
110
+ stop(): void;
111
+ /** Await in-flight event handlers. Test affordance. */
112
+ flushPending(): Promise<void>;
113
+ /** Number of handoffs currently awaiting a TL verdict. */
114
+ get pendingCount(): number;
115
+ private safeDispatch;
116
+ /** `task:done_by_worker` — open a pending handoff keyed on the WI. */
117
+ private onOpen;
118
+ /** `task:verified|rejected|cancelled` — the TL (or system) responded. */
119
+ private onClose;
120
+ /**
121
+ * Escalate every pending handoff older than the ack timeout whose WI is
122
+ * still waiting on the TL. Safe to call directly (tests, ops).
123
+ *
124
+ * @returns Summary of what happened
125
+ */
126
+ sweep(): Promise<HierarchySweepResult>;
127
+ /** Fire the documented bypass for one stale handoff. */
128
+ private escalate;
129
+ /** Publish `hierarchy:escalation` for the TL-at-root case (target = orchestrator). */
130
+ private publishBypassEvent;
131
+ /**
132
+ * Resolve a worker session to its team, member record and team lead. The
133
+ * TL is the worker's `parentMemberId` when set, else the team's canonical
134
+ * lead via {@link pickTeamLead}. Returns `null` when the session is not a
135
+ * team member.
136
+ */
137
+ private resolveChain;
138
+ private rememberEscalated;
139
+ }
140
+ //# sourceMappingURL=hierarchy-escalation-monitor.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy-escalation-monitor.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/hierarchy/hierarchy-escalation-monitor.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ /**
2
+ * Hierarchy Escalation Monitor
3
+ *
4
+ * Runtime wiring for {@link HierarchyEscalationService}, which documents
5
+ * the "TL unresponsive → bypass to the orchestrator" rule but had no
6
+ * consumers: nothing recorded TL responses, nothing checked the timeout,
7
+ * nothing routed the bypass.
8
+ *
9
+ * The signal we have today for "a worker escalated to their TL" is the
10
+ * verification handoff: `task:done_by_worker` puts a WorkItem in the TL's
11
+ * court, and `task:verified` / `task:rejected` is the TL's response. So:
12
+ *
13
+ * - `task:done_by_worker` → remember `{ workItemId, workerSession, since }`
14
+ * - `task:verified|rejected` → forget it; `recordTLResponse(tlSession)`
15
+ * - every {@link DEFAULT_SWEEP_INTERVAL_MS}: for each pending handoff
16
+ * older than {@link DEFAULT_TL_ACK_TIMEOUT_MS} whose WI is still
17
+ * `done_by_worker`, resolve the worker's TL from the team hierarchy,
18
+ * call `handleTLUnresponsive` (publishes `hierarchy:escalation`) and
19
+ * enqueue an `[ESCALATION]` system event to the orchestrator — once
20
+ * per WorkItem.
21
+ *
22
+ * What is still missing for a fuller implementation: an explicit
23
+ * "TL acknowledged" signal distinct from the verdict (a TL who has *seen*
24
+ * the item but is still reviewing looks identical to one who is gone),
25
+ * and inclusion of non-verification escalations (a worker's free-text
26
+ * report-status escalation does not produce a WorkItem the monitor can
27
+ * track).
28
+ *
29
+ * @module services/hierarchy/hierarchy-escalation-monitor.service
30
+ */
31
+ import { LoggerService } from '../core/logger.service.js';
32
+ import { StorageService } from '../core/storage.service.js';
33
+ import { TaskPoolService } from '../task-pool/task-pool.service.js';
34
+ import { HierarchyEscalationService } from './hierarchy-escalation.service.js';
35
+ import { pickTeamLead } from '../../utils/team.utils.js';
36
+ import { formatError } from '../../utils/format-error.js';
37
+ import { MESSAGE_SOURCES, ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
38
+ // ---------------------------------------------------------------------------
39
+ // Constants
40
+ // ---------------------------------------------------------------------------
41
+ /** How long a TL may sit on a worker's handoff before the bypass fires. */
42
+ export const DEFAULT_TL_ACK_TIMEOUT_MS = 15 * 60 * 1000;
43
+ /** Cadence of the pending-handoff sweep. */
44
+ export const DEFAULT_SWEEP_INTERVAL_MS = 5 * 60 * 1000;
45
+ /** Conversation id stamped on the orchestrator-bound bypass message. */
46
+ export const HIERARCHY_ESCALATION_CONVERSATION_ID = 'system_hierarchy_escalation';
47
+ /** Envelope prefix for the bypass message. */
48
+ export const HIERARCHY_ESCALATION_ENVELOPE_PREFIX = '[ESCALATION]';
49
+ /** Bounded size of the escalated-WI dedup list. */
50
+ const ESCALATED_DEDUP_CAPACITY = 1000;
51
+ /** WorkItem status meaning "waiting on the TL". */
52
+ const AWAITING_TL_STATUS = 'done_by_worker';
53
+ /** Events that open a pending handoff. */
54
+ const OPEN_EVENTS = ['task:done_by_worker'];
55
+ /** Events that close a pending handoff (the TL responded). */
56
+ const CLOSE_EVENTS = ['task:verified', 'task:rejected', 'task:cancelled'];
57
+ // ---------------------------------------------------------------------------
58
+ // Monitor
59
+ // ---------------------------------------------------------------------------
60
+ /**
61
+ * Tracks worker→TL handoffs and bypasses an unresponsive TL. See module docs.
62
+ */
63
+ export class HierarchyEscalationMonitor {
64
+ eventBus;
65
+ messageQueue;
66
+ taskPool;
67
+ getTeams;
68
+ escalation;
69
+ logger;
70
+ now;
71
+ ackTimeoutMs;
72
+ sweepIntervalMs;
73
+ pending = new Map();
74
+ escalated = [];
75
+ unsubscribers = [];
76
+ timer = null;
77
+ started = false;
78
+ pendingDispatches = new Set();
79
+ constructor(deps) {
80
+ this.eventBus = deps.eventBus;
81
+ this.messageQueue = deps.messageQueue;
82
+ this.taskPool = deps.taskPool ?? TaskPoolService.getInstance();
83
+ this.getTeams = deps.getTeams ?? (() => StorageService.getInstance().getTeams());
84
+ this.escalation = deps.escalation ?? HierarchyEscalationService.getInstance();
85
+ this.logger =
86
+ deps.logger ??
87
+ LoggerService.getInstance().createComponentLogger('HierarchyEscalationMonitor');
88
+ this.now = deps.now ?? (() => new Date());
89
+ this.ackTimeoutMs = deps.ackTimeoutMs ?? DEFAULT_TL_ACK_TIMEOUT_MS;
90
+ this.sweepIntervalMs = deps.sweepIntervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
91
+ }
92
+ /**
93
+ * Production wiring helper.
94
+ *
95
+ * @param eventBus - Live event bus
96
+ * @param messageQueue - Orchestrator message queue
97
+ * @returns A monitor ready to `start()`
98
+ */
99
+ static boot(eventBus, messageQueue) {
100
+ return new HierarchyEscalationMonitor({ eventBus, messageQueue });
101
+ }
102
+ /** Subscribe + arm the sweep timer. Idempotent. */
103
+ start() {
104
+ if (this.started)
105
+ return;
106
+ this.started = true;
107
+ this.escalation.setEventBus(this.eventBus);
108
+ this.escalation.setUnresponsiveTimeout(this.ackTimeoutMs);
109
+ for (const type of OPEN_EVENTS) {
110
+ this.unsubscribers.push(this.eventBus.onInProcess(type, (e) => this.safeDispatch(e, this.onOpen)));
111
+ }
112
+ for (const type of CLOSE_EVENTS) {
113
+ this.unsubscribers.push(this.eventBus.onInProcess(type, (e) => this.safeDispatch(e, this.onClose)));
114
+ }
115
+ if (this.sweepIntervalMs > 0) {
116
+ this.timer = setInterval(() => {
117
+ this.sweep().catch((err) => {
118
+ this.logger.warn('Hierarchy escalation sweep failed', { error: formatError(err) });
119
+ });
120
+ }, this.sweepIntervalMs);
121
+ this.timer.unref?.();
122
+ }
123
+ this.logger.info('HierarchyEscalationMonitor started', {
124
+ ackTimeoutMs: this.ackTimeoutMs,
125
+ sweepIntervalMs: this.sweepIntervalMs,
126
+ });
127
+ }
128
+ /** Detach subscriptions and stop the timer. Idempotent. */
129
+ stop() {
130
+ for (const u of this.unsubscribers) {
131
+ try {
132
+ u();
133
+ }
134
+ catch (err) {
135
+ this.logger.warn('HierarchyEscalationMonitor unsubscribe threw', { error: formatError(err) });
136
+ }
137
+ }
138
+ this.unsubscribers = [];
139
+ if (this.timer) {
140
+ clearInterval(this.timer);
141
+ this.timer = null;
142
+ }
143
+ this.started = false;
144
+ }
145
+ /** Await in-flight event handlers. Test affordance. */
146
+ async flushPending() {
147
+ while (this.pendingDispatches.size > 0) {
148
+ await Promise.allSettled(Array.from(this.pendingDispatches));
149
+ }
150
+ }
151
+ /** Number of handoffs currently awaiting a TL verdict. */
152
+ get pendingCount() {
153
+ return this.pending.size;
154
+ }
155
+ // -------------------------------------------------------------------------
156
+ // Event handlers
157
+ // -------------------------------------------------------------------------
158
+ safeDispatch(event, handler) {
159
+ const promise = (async () => {
160
+ try {
161
+ await handler(event);
162
+ }
163
+ catch (err) {
164
+ this.logger.warn('HierarchyEscalationMonitor handler threw — swallowed', {
165
+ eventType: event.type,
166
+ eventId: event.id,
167
+ error: formatError(err),
168
+ });
169
+ }
170
+ })();
171
+ this.pendingDispatches.add(promise);
172
+ promise.finally(() => this.pendingDispatches.delete(promise));
173
+ return promise;
174
+ }
175
+ /** `task:done_by_worker` — open a pending handoff keyed on the WI. */
176
+ onOpen = async (event) => {
177
+ if (!event.workItemId)
178
+ return;
179
+ const wi = await this.taskPool.findWorkItem(event.workItemId);
180
+ if (!wi || !wi.target)
181
+ return;
182
+ this.pending.set(wi.id, {
183
+ workItemId: wi.id,
184
+ workerSession: wi.target,
185
+ since: this.now().getTime(),
186
+ });
187
+ };
188
+ /** `task:verified|rejected|cancelled` — the TL (or system) responded. */
189
+ onClose = async (event) => {
190
+ if (!event.workItemId)
191
+ return;
192
+ const handoff = this.pending.get(event.workItemId);
193
+ this.pending.delete(event.workItemId);
194
+ if (!handoff || event.type === 'task:cancelled')
195
+ return;
196
+ const resolved = await this.resolveChain(handoff.workerSession);
197
+ if (resolved?.teamLead) {
198
+ this.escalation.recordTLResponse(resolved.teamLead.sessionName);
199
+ }
200
+ };
201
+ // -------------------------------------------------------------------------
202
+ // Sweep
203
+ // -------------------------------------------------------------------------
204
+ /**
205
+ * Escalate every pending handoff older than the ack timeout whose WI is
206
+ * still waiting on the TL. Safe to call directly (tests, ops).
207
+ *
208
+ * @returns Summary of what happened
209
+ */
210
+ async sweep() {
211
+ const nowMs = this.now().getTime();
212
+ const result = { pending: this.pending.size, escalated: [], cleared: [] };
213
+ for (const handoff of Array.from(this.pending.values())) {
214
+ if (nowMs - handoff.since < this.ackTimeoutMs)
215
+ continue;
216
+ const wi = await this.taskPool.findWorkItem(handoff.workItemId);
217
+ if (!wi || wi.status !== AWAITING_TL_STATUS) {
218
+ // Resolved out-of-band (or gone) — nothing to escalate.
219
+ this.pending.delete(handoff.workItemId);
220
+ result.cleared.push(handoff.workItemId);
221
+ continue;
222
+ }
223
+ if (this.escalated.includes(handoff.workItemId)) {
224
+ this.pending.delete(handoff.workItemId);
225
+ continue;
226
+ }
227
+ try {
228
+ await this.escalate(handoff, wi);
229
+ result.escalated.push(handoff.workItemId);
230
+ }
231
+ catch (err) {
232
+ this.logger.warn('Hierarchy escalation failed for handoff', {
233
+ workItemId: handoff.workItemId,
234
+ error: formatError(err),
235
+ });
236
+ }
237
+ finally {
238
+ this.pending.delete(handoff.workItemId);
239
+ }
240
+ }
241
+ return result;
242
+ }
243
+ /** Fire the documented bypass for one stale handoff. */
244
+ async escalate(handoff, wi) {
245
+ this.rememberEscalated(handoff.workItemId);
246
+ const chain = await this.resolveChain(handoff.workerSession);
247
+ const waitedMin = Math.round((this.now().getTime() - handoff.since) / 60_000);
248
+ const message = `Team lead has not acted on "${wi.title}" (${wi.id}) submitted by ${handoff.workerSession} ` +
249
+ `${waitedMin} min ago — bypassing to the orchestrator.`;
250
+ let target = ORCHESTRATOR_SESSION_NAME;
251
+ if (chain?.teamLead && chain.worker) {
252
+ const routed = this.escalation.handleTLUnresponsive(chain.teamLead.sessionName, chain.worker, chain.team.members, wi.id, message, { teamId: chain.team.id, teamName: chain.team.name });
253
+ // The service routes to the TL's parent when one exists and publishes
254
+ // `hierarchy:escalation` itself. A TL at the top of its team's tree
255
+ // (the common shape) has no parent inside the team, so the service
256
+ // returns null without publishing — the orchestrator is the documented
257
+ // fallback and we publish the event here so subscribers still see it.
258
+ if (routed?.target.sessionName) {
259
+ target = routed.target.sessionName;
260
+ }
261
+ else {
262
+ this.publishBypassEvent(chain.team, chain.worker, chain.teamLead, wi.id);
263
+ }
264
+ }
265
+ this.messageQueue.enqueue({
266
+ content: `${HIERARCHY_ESCALATION_ENVELOPE_PREFIX} ${message}`,
267
+ conversationId: HIERARCHY_ESCALATION_CONVERSATION_ID,
268
+ source: MESSAGE_SOURCES.SYSTEM_EVENT,
269
+ targetSession: target,
270
+ sourceMetadata: {
271
+ workItemId: wi.id,
272
+ workerSession: handoff.workerSession,
273
+ teamLeadSession: chain?.teamLead?.sessionName,
274
+ teamId: chain?.team.id,
275
+ reason: 'tl_unresponsive',
276
+ },
277
+ });
278
+ this.logger.info('Hierarchy escalation: TL unresponsive — bypassed', {
279
+ workItemId: wi.id,
280
+ workerSession: handoff.workerSession,
281
+ teamLeadSession: chain?.teamLead?.sessionName,
282
+ target,
283
+ });
284
+ }
285
+ /** Publish `hierarchy:escalation` for the TL-at-root case (target = orchestrator). */
286
+ publishBypassEvent(team, worker, teamLead, taskId) {
287
+ try {
288
+ this.eventBus.publish({
289
+ id: `hierarchy:escalation:${taskId}`,
290
+ type: 'hierarchy:escalation',
291
+ timestamp: this.now().toISOString(),
292
+ teamId: team.id,
293
+ teamName: team.name,
294
+ memberId: worker.id,
295
+ memberName: worker.name,
296
+ sessionName: worker.sessionName,
297
+ previousValue: teamLead.sessionName,
298
+ newValue: ORCHESTRATOR_SESSION_NAME,
299
+ changedField: 'hierarchyAction',
300
+ taskId,
301
+ hierarchyLevel: worker.hierarchyLevel,
302
+ parentMemberId: worker.parentMemberId,
303
+ });
304
+ }
305
+ catch (err) {
306
+ this.logger.warn('hierarchy:escalation publish threw', { taskId, error: formatError(err) });
307
+ }
308
+ }
309
+ // -------------------------------------------------------------------------
310
+ // Helpers
311
+ // -------------------------------------------------------------------------
312
+ /**
313
+ * Resolve a worker session to its team, member record and team lead. The
314
+ * TL is the worker's `parentMemberId` when set, else the team's canonical
315
+ * lead via {@link pickTeamLead}. Returns `null` when the session is not a
316
+ * team member.
317
+ */
318
+ async resolveChain(workerSession) {
319
+ let teams;
320
+ try {
321
+ teams = await this.getTeams();
322
+ }
323
+ catch (err) {
324
+ this.logger.warn('Team lookup failed during hierarchy escalation', { error: formatError(err) });
325
+ return null;
326
+ }
327
+ for (const team of teams) {
328
+ const worker = team.members.find((m) => m.sessionName === workerSession);
329
+ if (!worker)
330
+ continue;
331
+ const parent = worker.parentMemberId
332
+ ? (team.members.find((m) => m.id === worker.parentMemberId) ?? null)
333
+ : null;
334
+ const teamLead = parent ?? pickTeamLead(team);
335
+ // A worker who IS the lead has nobody above them inside the team.
336
+ return { team, worker, teamLead: teamLead && teamLead.id !== worker.id ? teamLead : null };
337
+ }
338
+ return null;
339
+ }
340
+ rememberEscalated(workItemId) {
341
+ this.escalated.push(workItemId);
342
+ if (this.escalated.length > ESCALATED_DEDUP_CAPACITY)
343
+ this.escalated.shift();
344
+ }
345
+ }
346
+ //# sourceMappingURL=hierarchy-escalation-monitor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy-escalation-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/hierarchy/hierarchy-escalation-monitor.service.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,18 @@ export interface TokenUsageEvent {
22
22
  model: string;
23
23
  /** Optional task ID for per-task tracking */
24
24
  taskId?: string;
25
+ /**
26
+ * Portion of `input` the provider served from its prompt cache (billed at
27
+ * a fraction of the input rate). Absent when the runtime cannot tell.
28
+ */
29
+ cachedInput?: number;
30
+ /** Model round-trips the run took (agentic steps). Absent when unknown. */
31
+ steps?: number;
32
+ }
33
+ /** Optional per-event detail beyond the raw input/output counts. */
34
+ export interface TokenUsageDetail {
35
+ cachedInput?: number;
36
+ steps?: number;
25
37
  }
26
38
  /**
27
39
  * Per-session token usage record containing all events and aggregates
@@ -37,6 +49,8 @@ export interface SessionUsageRecord {
37
49
  totalOutput: number;
38
50
  /** Number of usage events recorded */
39
51
  eventCount: number;
52
+ /** Total cached (cache-hit) input tokens across all events; absent on records written before 2026-09-18 */
53
+ totalCachedInput?: number;
40
54
  /** Individual usage events */
41
55
  events: TokenUsageEvent[];
42
56
  }
@@ -65,6 +79,8 @@ export interface SessionUsageSummary {
65
79
  totalOutput: number;
66
80
  /** Number of events */
67
81
  eventCount: number;
82
+ /** Total cache-hit input tokens, when the runtime reports them */
83
+ totalCachedInput?: number;
68
84
  /** Computed cost in USD based on model pricing */
69
85
  cost: number;
70
86
  /** Per-model breakdown of token usage */
@@ -90,16 +106,22 @@ export interface ModelUsageBreakdown {
90
106
  export declare const TOKEN_COSTS: Record<string, {
91
107
  input: number;
92
108
  output: number;
109
+ cachedInput?: number;
93
110
  }>;
94
111
  /**
95
112
  * Calculate the cost for a given number of tokens and model.
96
113
  *
97
- * @param inputTokens - Number of input tokens (excluding cache tokens)
114
+ * When the model has a `cachedInput` rate and the caller passes how many of
115
+ * the input tokens were cache hits, those tokens are billed at the hit rate
116
+ * and only the remainder at the full input rate.
117
+ *
118
+ * @param inputTokens - Total input tokens for the call(s), cache hits included
98
119
  * @param outputTokens - Number of output tokens
99
120
  * @param model - Model identifier
121
+ * @param cachedInputTokens - Portion of `inputTokens` served from cache (default 0)
100
122
  * @returns Cost in USD
101
123
  */
102
- export declare function calculateCost(inputTokens: number, outputTokens: number, model: string): number;
124
+ export declare function calculateCost(inputTokens: number, outputTokens: number, model: string, cachedInputTokens?: number): number;
103
125
  /**
104
126
  * Set a cost override for a session. When present, getSummary() uses this
105
127
  * instead of recalculating from events.
@@ -159,8 +181,10 @@ export declare class TokenUsageService {
159
181
  * @param input - Number of input tokens consumed
160
182
  * @param output - Number of output tokens generated
161
183
  * @param model - AI model identifier used
184
+ * @param taskId - Optional task the usage belongs to
185
+ * @param detail - Optional cache-hit and step counts for this event
162
186
  */
163
- recordUsage(sessionName: string, agentId: string, input: number, output: number, model: string, taskId?: string): void;
187
+ recordUsage(sessionName: string, agentId: string, input: number, output: number, model: string, taskId?: string, detail?: TokenUsageDetail): void;
164
188
  /**
165
189
  * Set a cache-aware cost override for a session.
166
190
  * Used when the caller has pre-calculated cost with proper cache pricing.
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/token-usage.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-usage.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/token-usage.service.ts"],"names":[],"mappings":"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"}