crewly 1.20.153 → 1.20.155

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 (773) hide show
  1. package/README.md +21 -3
  2. package/config/constants.ts +78 -0
  3. package/config/hooks/agent-status/report.sh +78 -0
  4. package/config/hooks/control-plane-guard/pretooluse-bash.sh +241 -0
  5. package/config/orchestrator_tasks/prompts/assign-task-orchestrator-prompt-template.md +19 -49
  6. package/config/orchestrator_tasks/prompts/checkin-orchestrator-prompt-template.md +25 -125
  7. package/config/orchestrator_tasks/prompts/project-start-orchestrator-prompt-template.md +29 -100
  8. package/config/roles/orchestrator/prompt.md +18 -2
  9. package/config/roles/team-leader/prompt.md +13 -3
  10. package/config/roles/team-leader/role.json +1 -1
  11. package/config/roles/team-leader/tl-addon.md +12 -3
  12. package/config/skills/agent/core/complete-task/SKILL.md +1 -1
  13. package/config/skills/agent/core/project-tickets/SKILL.md +127 -0
  14. package/config/skills/agent/core/project-tickets/execute.sh +182 -0
  15. package/config/skills/agent/core/project-tickets/execute.test.sh +116 -0
  16. package/config/skills/agent/core/recall/SKILL.md +1 -1
  17. package/config/skills/agent/core/recall/execute.sh +7 -0
  18. package/config/skills/agent/core/report-status/SKILL.md +3 -2
  19. package/config/skills/agent/core/report-status/execute.sh +37 -15
  20. package/config/skills/agent/core/split-ticket/SKILL.md +62 -0
  21. package/config/skills/agent/core/split-ticket/execute.sh +87 -0
  22. package/config/skills/agent/core/split-ticket/execute.test.sh +77 -0
  23. package/config/skills/agent/core/standing-update/SKILL.md +96 -0
  24. package/config/skills/agent/core/standing-update/execute.sh +107 -0
  25. package/config/skills/agent/onboarding/materialize-team/SKILL.md +1 -1
  26. package/config/skills/agent/onboarding/recommend-team/SKILL.md +1 -1
  27. package/config/skills/orchestrator/delegate-task/SKILL.md +4 -3
  28. package/config/skills/orchestrator/render-verdict/SKILL.md +62 -0
  29. package/config/skills/orchestrator/render-verdict/execute.sh +47 -0
  30. package/config/skills/orchestrator/render-verdict/execute.test.sh +121 -0
  31. package/config/skills/orchestrator/wiki-migrate/SKILL.md +0 -1
  32. package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
  33. package/config/skills/team-leader/assign-ticket/SKILL.md +47 -0
  34. package/config/skills/team-leader/assign-ticket/execute.sh +59 -0
  35. package/config/skills/team-leader/assign-ticket/execute.test.sh +64 -0
  36. package/config/skills/team-leader/decompose-goal/SKILL.md +4 -4
  37. package/config/skills/team-leader/delegate-task/SKILL.md +1 -1
  38. package/config/skills/team-leader/delegate-task/execute.sh +17 -4
  39. package/config/skills/team-leader/verify-output/SKILL.md +2 -2
  40. package/config/sops/developer/git-workflow.md +1 -1
  41. package/dist/backend/backend/src/constants.d.ts +397 -1
  42. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  43. package/dist/backend/backend/src/constants.js +388 -2
  44. package/dist/backend/backend/src/constants.js.map +1 -1
  45. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +27 -0
  46. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -0
  47. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +55 -0
  48. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -0
  49. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts +13 -0
  50. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts.map +1 -0
  51. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js +19 -0
  52. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js.map +1 -0
  53. package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -12
  54. package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
  55. package/dist/backend/backend/src/controllers/api.controller.js +0 -44
  56. package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
  57. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +27 -5
  58. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
  59. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +55 -15
  60. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
  61. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
  62. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -0
  63. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
  64. package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts +13 -0
  65. package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts.map +1 -1
  66. package/dist/backend/backend/src/controllers/expert/expert.controller.js +67 -9
  67. package/dist/backend/backend/src/controllers/expert/expert.controller.js.map +1 -1
  68. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +32 -0
  69. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  70. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +122 -8
  71. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  72. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts +41 -0
  73. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -0
  74. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +146 -0
  75. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -0
  76. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts +20 -0
  77. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts.map +1 -0
  78. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js +29 -0
  79. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js.map +1 -0
  80. package/dist/backend/backend/src/controllers/project/project.controller.d.ts +2 -2
  81. package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
  82. package/dist/backend/backend/src/controllers/project/project.controller.js +24 -7
  83. package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
  84. package/dist/backend/backend/src/controllers/project/project.routes.d.ts +2 -2
  85. package/dist/backend/backend/src/controllers/project/project.routes.d.ts.map +1 -1
  86. package/dist/backend/backend/src/controllers/project/project.routes.js +3 -36
  87. package/dist/backend/backend/src/controllers/project/project.routes.js.map +1 -1
  88. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +93 -0
  89. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -0
  90. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +252 -0
  91. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -0
  92. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +34 -0
  93. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -0
  94. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +51 -0
  95. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -0
  96. package/dist/backend/backend/src/controllers/request-types.d.ts +13 -0
  97. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  98. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +49 -0
  99. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -0
  100. package/dist/backend/backend/src/controllers/standing/standing.controller.js +100 -0
  101. package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -0
  102. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +38 -0
  103. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  104. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +143 -8
  105. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  106. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
  107. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +6 -1
  108. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
  109. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +2 -0
  110. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  111. package/dist/backend/backend/src/controllers/team/team.controller.js +26 -6
  112. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  113. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
  114. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  115. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +56 -0
  116. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  117. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
  118. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
  119. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
  120. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
  121. package/dist/backend/backend/src/controllers/types.d.ts +1 -2
  122. package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
  123. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +2 -3
  124. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
  125. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +2 -3
  126. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
  127. package/dist/backend/backend/src/index.d.ts.map +1 -1
  128. package/dist/backend/backend/src/index.js +113 -7
  129. package/dist/backend/backend/src/index.js.map +1 -1
  130. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +29 -0
  131. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
  132. package/dist/backend/backend/src/middleware/api-token.middleware.js +38 -0
  133. package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
  134. package/dist/backend/backend/src/models/index.d.ts +0 -1
  135. package/dist/backend/backend/src/models/index.d.ts.map +1 -1
  136. package/dist/backend/backend/src/models/index.js +0 -1
  137. package/dist/backend/backend/src/models/index.js.map +1 -1
  138. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  139. package/dist/backend/backend/src/routes/api.routes.js +24 -3
  140. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  141. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +6 -2
  142. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -1
  143. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +6 -2
  144. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -1
  145. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +43 -1
  146. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/agent/agent-registration.service.js +129 -34
  148. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
  150. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
  151. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +231 -0
  152. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
  153. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +154 -2
  154. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +380 -22
  156. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  157. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
  158. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
  160. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  161. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +9 -1
  162. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/agent/tmux-command.service.js +12 -2
  164. package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
  165. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +9 -8
  167. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
  169. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
  170. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
  171. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
  172. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +3 -0
  173. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +3 -0
  175. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  176. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
  177. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
  178. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  179. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
  180. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  181. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
  182. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  183. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  184. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
  186. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  187. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
  188. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
  189. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
  190. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
  191. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
  192. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
  193. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
  194. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
  195. package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/ai/prompt-template.service.js +9 -7
  197. package/dist/backend/backend/src/services/ai/prompt-template.service.js.map +1 -1
  198. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  199. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
  200. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  201. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
  202. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  203. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
  204. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  205. package/dist/backend/backend/src/services/core/logger.service.d.ts +21 -0
  206. package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
  207. package/dist/backend/backend/src/services/core/logger.service.js +42 -4
  208. package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
  209. package/dist/backend/backend/src/services/core/storage.service.d.ts +1 -5
  210. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  211. package/dist/backend/backend/src/services/core/storage.service.js +5 -162
  212. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  213. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  214. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +6 -0
  215. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  216. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  217. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +15 -9
  218. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  219. package/dist/backend/backend/src/services/index.d.ts +0 -4
  220. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  221. package/dist/backend/backend/src/services/index.js +0 -4
  222. package/dist/backend/backend/src/services/index.js.map +1 -1
  223. package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts +1 -1
  224. package/dist/backend/backend/src/services/intent-task/intent-task.service.js +1 -1
  225. package/dist/backend/backend/src/services/mcp-server.d.ts +19 -6
  226. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  227. package/dist/backend/backend/src/services/mcp-server.js +46 -16
  228. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  229. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  230. package/dist/backend/backend/src/services/mcp-tool-definitions.js +3 -2
  231. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
  232. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +247 -0
  233. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
  234. package/dist/backend/backend/src/services/memory/standing-answers.service.js +534 -0
  235. package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -0
  236. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +104 -0
  237. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -0
  238. package/dist/backend/backend/src/services/memory/standing-refresh.service.js +218 -0
  239. package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -0
  240. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
  241. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  242. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +99 -1
  243. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  244. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
  245. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
  246. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js +80 -0
  247. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
  248. package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts +114 -0
  249. package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
  250. package/dist/backend/backend/src/services/monitoring/agent-attention.js +165 -0
  251. package/dist/backend/backend/src/services/monitoring/agent-attention.js.map +1 -0
  252. package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts +76 -0
  253. package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -0
  254. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +96 -0
  255. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js.map +1 -0
  256. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +1 -1
  257. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +1 -1
  258. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +13 -3
  260. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -1
  261. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -1
  262. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +0 -4
  263. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -1
  264. package/dist/backend/backend/src/services/project/project-search.service.d.ts +22 -16
  265. package/dist/backend/backend/src/services/project/project-search.service.d.ts.map +1 -1
  266. package/dist/backend/backend/src/services/project/project-search.service.js +30 -53
  267. package/dist/backend/backend/src/services/project/project-search.service.js.map +1 -1
  268. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +381 -0
  269. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -0
  270. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +839 -0
  271. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -0
  272. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
  273. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
  274. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +466 -0
  275. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
  276. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
  277. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
  278. package/dist/backend/backend/src/services/project-tickets/ticket-file.js +468 -0
  279. package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -0
  280. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
  281. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
  282. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
  283. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
  284. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
  285. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
  286. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js +83 -0
  287. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
  288. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
  289. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
  290. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js +201 -0
  291. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
  292. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +86 -22
  293. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  294. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +173 -28
  295. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  296. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +19 -1
  297. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  298. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +33 -4
  299. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  300. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +24 -12
  301. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  302. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +87 -19
  303. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  304. package/dist/backend/backend/src/services/runtime-adapter.d.ts +1 -1
  305. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  306. package/dist/backend/backend/src/services/runtime-adapter.js +5 -9
  307. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  308. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
  309. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  310. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +33 -2
  311. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  312. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +5 -0
  313. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/session/pty/pty-session.js +8 -1
  315. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  316. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
  317. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
  319. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  320. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +8 -0
  321. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  322. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  323. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +12 -2
  324. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  325. package/dist/backend/backend/src/services/session/session-command-helper.js +14 -2
  326. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  327. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts +239 -0
  328. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -0
  329. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +395 -0
  330. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -0
  331. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts +53 -0
  332. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts.map +1 -0
  333. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js +83 -0
  334. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js.map +1 -0
  335. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts +93 -0
  336. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts.map +1 -0
  337. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js +244 -0
  338. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js.map +1 -0
  339. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
  340. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  341. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +323 -53
  342. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  343. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  344. package/dist/backend/backend/src/services/template/template.service.js +11 -6
  345. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  346. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +21 -4
  347. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  348. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +53 -3
  349. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  350. package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts +85 -6
  351. package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
  352. package/dist/backend/backend/src/services/v3/escalation-router.service.js +188 -9
  353. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  354. package/dist/backend/backend/src/services/v3/escalation.service.js +1 -1
  355. package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
  356. package/dist/backend/backend/src/services/v3/mission-executor.service.js +2 -2
  357. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  358. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +184 -0
  359. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -0
  360. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +420 -0
  361. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -0
  362. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +61 -0
  363. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -0
  364. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +100 -0
  365. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -0
  366. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +36 -0
  367. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -0
  368. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +239 -0
  369. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -0
  370. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +152 -0
  371. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -0
  372. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +209 -0
  373. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -0
  374. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +194 -0
  375. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -0
  376. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js +85 -0
  377. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -0
  378. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
  379. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  380. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +15 -6
  381. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  382. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
  383. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +14 -5
  384. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
  385. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  386. package/dist/backend/backend/src/services/v3/request.service.js +2 -0
  387. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  388. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
  389. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
  390. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +172 -0
  391. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
  392. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  393. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -0
  394. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  395. package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
  396. package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
  397. package/dist/backend/backend/src/services/v3/ticket-intake-log.js +116 -0
  398. package/dist/backend/backend/src/services/v3/ticket-intake-log.js.map +1 -0
  399. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
  400. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  401. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +263 -45
  402. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  403. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +3 -1
  404. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  405. package/dist/backend/backend/src/services/v3/ticket-review.service.js +6 -2
  406. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
  407. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  408. package/dist/backend/backend/src/services/v3/v3-data.service.js +9 -3
  409. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  410. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +88 -1
  411. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  412. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +169 -5
  413. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  414. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +13 -5
  415. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  416. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +10 -9
  417. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  418. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts +241 -0
  419. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts.map +1 -0
  420. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js +511 -0
  421. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js.map +1 -0
  422. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts +70 -0
  423. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -0
  424. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +121 -0
  425. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -0
  426. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts +260 -0
  427. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
  428. package/dist/backend/backend/src/services/worktree/worktree-git.js +569 -0
  429. package/dist/backend/backend/src/services/worktree/worktree-git.js.map +1 -0
  430. package/dist/backend/backend/src/types/event-bus.types.d.ts +6 -1
  431. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  432. package/dist/backend/backend/src/types/event-bus.types.js +8 -0
  433. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  434. package/dist/backend/backend/src/types/index.d.ts +23 -18
  435. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  436. package/dist/backend/backend/src/types/index.js.map +1 -1
  437. package/dist/backend/backend/src/types/intent-task.types.d.ts +1 -1
  438. package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
  439. package/dist/backend/backend/src/types/project-ticket.types.d.ts +132 -0
  440. package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -0
  441. package/dist/backend/backend/src/types/project-ticket.types.js +120 -0
  442. package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -0
  443. package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
  444. package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
  445. package/dist/backend/backend/src/types/review-reason.types.js +1 -0
  446. package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
  447. package/dist/backend/backend/src/types/v2/index.d.ts +2 -2
  448. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  449. package/dist/backend/backend/src/types/v2/index.js +1 -1
  450. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  451. package/dist/backend/backend/src/types/v2/reconcile.types.d.ts +7 -0
  452. package/dist/backend/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
  453. package/dist/backend/backend/src/types/v2/reconcile.types.js.map +1 -1
  454. package/dist/backend/backend/src/types/v2/request.types.d.ts +18 -0
  455. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  456. package/dist/backend/backend/src/types/v2/request.types.js +1 -0
  457. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  458. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +6 -2
  459. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  460. package/dist/backend/backend/src/types/v2/ticket.types.js +1 -1
  461. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
  462. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +169 -14
  463. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  464. package/dist/backend/backend/src/types/v2/work-item.types.js +263 -44
  465. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  466. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +33 -0
  467. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  468. package/dist/backend/backend/src/utils/agent-caller.utils.js +37 -0
  469. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  470. package/dist/backend/backend/src/utils/secret-env.d.ts +61 -0
  471. package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -0
  472. package/dist/backend/backend/src/utils/secret-env.js +89 -0
  473. package/dist/backend/backend/src/utils/secret-env.js.map +1 -0
  474. package/dist/backend/build-info.json +2 -2
  475. package/dist/backend/config/constants.d.ts +71 -0
  476. package/dist/backend/config/constants.d.ts.map +1 -1
  477. package/dist/backend/config/constants.js +77 -0
  478. package/dist/backend/config/constants.js.map +1 -1
  479. package/dist/cli/backend/src/constants.d.ts +397 -1
  480. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  481. package/dist/cli/backend/src/constants.js +388 -2
  482. package/dist/cli/backend/src/constants.js.map +1 -1
  483. package/dist/cli/backend/src/models/index.d.ts +0 -1
  484. package/dist/cli/backend/src/models/index.d.ts.map +1 -1
  485. package/dist/cli/backend/src/models/index.js +0 -1
  486. package/dist/cli/backend/src/models/index.js.map +1 -1
  487. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +43 -1
  488. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  489. package/dist/cli/backend/src/services/agent/agent-registration.service.js +129 -34
  490. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  491. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
  492. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
  493. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +231 -0
  494. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
  495. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +409 -0
  496. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -0
  497. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +961 -0
  498. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -0
  499. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
  500. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  501. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
  502. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  503. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  504. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +9 -8
  505. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  506. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
  507. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
  508. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
  509. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
  510. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
  511. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
  512. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  513. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
  514. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  515. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
  516. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  517. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  518. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  519. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
  520. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  521. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
  522. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
  523. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
  524. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
  525. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
  526. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
  527. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
  528. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
  529. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
  530. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  531. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
  532. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  533. package/dist/cli/backend/src/services/core/logger.service.d.ts +21 -0
  534. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
  535. package/dist/cli/backend/src/services/core/logger.service.js +42 -4
  536. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
  537. package/dist/cli/backend/src/services/core/storage.service.d.ts +1 -5
  538. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  539. package/dist/cli/backend/src/services/core/storage.service.js +5 -162
  540. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  541. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  542. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +6 -0
  543. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  544. package/dist/cli/backend/src/services/mcp-server.d.ts +19 -6
  545. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  546. package/dist/cli/backend/src/services/mcp-server.js +46 -16
  547. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  548. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  549. package/dist/cli/backend/src/services/mcp-tool-definitions.js +3 -2
  550. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
  551. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +247 -0
  552. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
  553. package/dist/cli/backend/src/services/memory/standing-answers.service.js +534 -0
  554. package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -0
  555. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
  556. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  557. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +99 -1
  558. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  559. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
  560. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
  561. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js +80 -0
  562. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
  563. package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts +114 -0
  564. package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
  565. package/dist/cli/backend/src/services/monitoring/agent-attention.js +165 -0
  566. package/dist/cli/backend/src/services/monitoring/agent-attention.js.map +1 -0
  567. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
  568. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
  569. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +466 -0
  570. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
  571. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
  572. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
  573. package/dist/cli/backend/src/services/project-tickets/ticket-file.js +468 -0
  574. package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -0
  575. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
  576. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
  577. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
  578. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
  579. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
  580. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
  581. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js +83 -0
  582. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
  583. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
  584. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
  585. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js +201 -0
  586. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
  587. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
  588. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  589. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +33 -2
  590. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  591. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +5 -0
  592. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  593. package/dist/cli/backend/src/services/session/pty/pty-session.js +8 -1
  594. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  595. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
  596. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  597. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
  598. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  599. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +8 -0
  600. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  601. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
  602. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +12 -2
  603. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  604. package/dist/cli/backend/src/services/session/session-command-helper.js +14 -2
  605. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  606. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
  607. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  608. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +323 -53
  609. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  610. package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
  611. package/dist/cli/backend/src/services/template/template.service.js +11 -6
  612. package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
  613. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +85 -6
  614. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
  615. package/dist/cli/backend/src/services/v3/escalation-router.service.js +188 -9
  616. package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -1
  617. package/dist/cli/backend/src/services/v3/mission-executor.service.js +2 -2
  618. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
  619. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
  620. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  621. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +15 -6
  622. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  623. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  624. package/dist/cli/backend/src/services/v3/request.service.js +2 -0
  625. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  626. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
  627. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
  628. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +172 -0
  629. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
  630. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  631. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -0
  632. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  633. package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
  634. package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
  635. package/dist/cli/backend/src/services/v3/ticket-intake-log.js +116 -0
  636. package/dist/cli/backend/src/services/v3/ticket-intake-log.js.map +1 -0
  637. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
  638. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  639. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +263 -45
  640. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  641. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +3 -1
  642. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  643. package/dist/cli/backend/src/services/v3/ticket-review.service.js +6 -2
  644. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
  645. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  646. package/dist/cli/backend/src/services/v3/v3-data.service.js +9 -3
  647. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
  648. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts +260 -0
  649. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
  650. package/dist/cli/backend/src/services/worktree/worktree-git.js +569 -0
  651. package/dist/cli/backend/src/services/worktree/worktree-git.js.map +1 -0
  652. package/dist/cli/backend/src/types/event-bus.types.d.ts +6 -1
  653. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  654. package/dist/cli/backend/src/types/event-bus.types.js +8 -0
  655. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  656. package/dist/cli/backend/src/types/index.d.ts +23 -18
  657. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  658. package/dist/cli/backend/src/types/index.js.map +1 -1
  659. package/dist/cli/backend/src/types/intent-task.types.d.ts +1 -1
  660. package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -1
  661. package/dist/cli/backend/src/types/project-ticket.types.d.ts +132 -0
  662. package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -0
  663. package/dist/cli/backend/src/types/project-ticket.types.js +120 -0
  664. package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -0
  665. package/dist/cli/backend/src/types/v2/index.d.ts +2 -2
  666. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  667. package/dist/cli/backend/src/types/v2/index.js +1 -1
  668. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  669. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +7 -0
  670. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
  671. package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -1
  672. package/dist/cli/backend/src/types/v2/request.types.d.ts +18 -0
  673. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  674. package/dist/cli/backend/src/types/v2/request.types.js +1 -0
  675. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  676. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +6 -2
  677. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  678. package/dist/cli/backend/src/types/v2/ticket.types.js +1 -1
  679. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
  680. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +169 -14
  681. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  682. package/dist/cli/backend/src/types/v2/work-item.types.js +263 -44
  683. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  684. package/dist/cli/backend/src/utils/secret-env.d.ts +61 -0
  685. package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -0
  686. package/dist/cli/backend/src/utils/secret-env.js +89 -0
  687. package/dist/cli/backend/src/utils/secret-env.js.map +1 -0
  688. package/dist/cli/cli/src/commands/onboard.d.ts +1 -1
  689. package/dist/cli/cli/src/commands/onboard.js +3 -3
  690. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  691. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
  692. package/dist/cli/cli/src/commands/publish.js +4 -5
  693. package/dist/cli/cli/src/commands/publish.js.map +1 -1
  694. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  695. package/dist/cli/cli/src/commands/service.js +5 -2
  696. package/dist/cli/cli/src/commands/service.js.map +1 -1
  697. package/dist/cli/cli/src/commands/tickets.d.ts +60 -0
  698. package/dist/cli/cli/src/commands/tickets.d.ts.map +1 -0
  699. package/dist/cli/cli/src/commands/tickets.js +111 -0
  700. package/dist/cli/cli/src/commands/tickets.js.map +1 -0
  701. package/dist/cli/cli/src/index.js +12 -0
  702. package/dist/cli/cli/src/index.js.map +1 -1
  703. package/dist/cli/cli/src/utils/archive-creator.d.ts +7 -3
  704. package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -1
  705. package/dist/cli/cli/src/utils/archive-creator.js +17 -5
  706. package/dist/cli/cli/src/utils/archive-creator.js.map +1 -1
  707. package/dist/cli/cli/src/utils/cloud-submit.d.ts +1 -1
  708. package/dist/cli/cli/src/utils/cloud-submit.js +1 -1
  709. package/dist/cli/cli/src/utils/gh-submit.d.ts +10 -1
  710. package/dist/cli/cli/src/utils/gh-submit.d.ts.map +1 -1
  711. package/dist/cli/cli/src/utils/gh-submit.js +20 -4
  712. package/dist/cli/cli/src/utils/gh-submit.js.map +1 -1
  713. package/dist/cli/cli/src/utils/package-validator.d.ts +29 -6
  714. package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -1
  715. package/dist/cli/cli/src/utils/package-validator.js +88 -36
  716. package/dist/cli/cli/src/utils/package-validator.js.map +1 -1
  717. package/dist/cli/config/constants.d.ts +71 -0
  718. package/dist/cli/config/constants.d.ts.map +1 -1
  719. package/dist/cli/config/constants.js +77 -0
  720. package/dist/cli/config/constants.js.map +1 -1
  721. package/dist/cli/config/skills/marketplace-registry.d.ts +143 -0
  722. package/dist/cli/config/skills/marketplace-registry.d.ts.map +1 -0
  723. package/dist/cli/config/skills/marketplace-registry.js +192 -0
  724. package/dist/cli/config/skills/marketplace-registry.js.map +1 -0
  725. package/frontend/dist/assets/index-8d4b3ad2.js +4951 -0
  726. package/frontend/dist/assets/index-b6aded4c.css +42 -0
  727. package/frontend/dist/index.html +2 -2
  728. package/package.json +1 -1
  729. package/config/task_starters/build_e2e_test_plan_prompt.json +0 -51
  730. package/config/task_starters/build_tasks_prompt.json +0 -55
  731. package/config/task_starters/prompts/build_tasks_step1_milestone_structure.md +0 -274
  732. package/config/task_starters/prompts/e2e_test_plan_step1_build_tests.md +0 -391
  733. package/config/task_starters/prompts/e2e_test_plan_step2_run_tests.md +0 -240
  734. package/config/templates/customer-loyalty-team.json +0 -44
  735. package/config/templates/dtc-viral-content-team.json +0 -58
  736. package/config/templates/expert-innovation-team.json +0 -60
  737. package/config/templates/pragmatic-mvp-dev-team.json +0 -58
  738. package/config/templates/pro-sops/norms/content-production-pipeline.md +0 -39
  739. package/config/templates/pro-sops/norms/customer-onboarding-sop.md +0 -40
  740. package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts +0 -13
  741. package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts.map +0 -1
  742. package/dist/backend/backend/src/controllers/task-management/tickets.controller.js +0 -214
  743. package/dist/backend/backend/src/controllers/task-management/tickets.controller.js.map +0 -1
  744. package/dist/backend/backend/src/models/Ticket.d.ts +0 -24
  745. package/dist/backend/backend/src/models/Ticket.d.ts.map +0 -1
  746. package/dist/backend/backend/src/models/Ticket.js +0 -102
  747. package/dist/backend/backend/src/models/Ticket.js.map +0 -1
  748. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +0 -134
  749. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +0 -1
  750. package/dist/backend/backend/src/services/agent/task-planning.service.js +0 -291
  751. package/dist/backend/backend/src/services/agent/task-planning.service.js.map +0 -1
  752. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts +0 -71
  753. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts.map +0 -1
  754. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js +0 -304
  755. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js.map +0 -1
  756. package/dist/backend/backend/src/services/project/task-folder.service.d.ts +0 -48
  757. package/dist/backend/backend/src/services/project/task-folder.service.d.ts.map +0 -1
  758. package/dist/backend/backend/src/services/project/task-folder.service.js +0 -193
  759. package/dist/backend/backend/src/services/project/task-folder.service.js.map +0 -1
  760. package/dist/backend/backend/src/services/project/task.service.d.ts +0 -47
  761. package/dist/backend/backend/src/services/project/task.service.d.ts.map +0 -1
  762. package/dist/backend/backend/src/services/project/task.service.js +0 -253
  763. package/dist/backend/backend/src/services/project/task.service.js.map +0 -1
  764. package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts +0 -130
  765. package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts.map +0 -1
  766. package/dist/backend/backend/src/services/project/ticket-editor.service.js +0 -406
  767. package/dist/backend/backend/src/services/project/ticket-editor.service.js.map +0 -1
  768. package/dist/cli/backend/src/models/Ticket.d.ts +0 -24
  769. package/dist/cli/backend/src/models/Ticket.d.ts.map +0 -1
  770. package/dist/cli/backend/src/models/Ticket.js +0 -102
  771. package/dist/cli/backend/src/models/Ticket.js.map +0 -1
  772. package/frontend/dist/assets/index-2bdb57b9.css +0 -42
  773. package/frontend/dist/assets/index-54f1061c.js +0 -4963
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Agent Attention Registry
3
+ *
4
+ * In-process record of which agent sessions are currently blocked on a human
5
+ * (waiting_on_human, #815). The ActivityMonitor writes it on every poll; the
6
+ * reconciler reads it to build AgentHealth.waitingOnHumanSince.
7
+ *
8
+ * Kept separate from both services so neither has to import the other's
9
+ * singleton. State is in memory on purpose: after a backend restart the
10
+ * first monitor poll (≤30s) re-detects a prompt that is still on screen.
11
+ *
12
+ * KNOWN GAP (#820, filed as #851): the other direction is not yet handled —
13
+ * if the owner answers the prompt WHILE the backend is down, this registry
14
+ * comes back up empty and never learns the session was waiting. The durable
15
+ * `agent_waiting_on_human` escalation opened before the restart
16
+ * (EscalationRouterService.recordAgentWaitingOnHuman) is then never closed,
17
+ * because ActivityMonitorService.clearAttention only calls
18
+ * `resolveAgentWaitingOnHuman` when `clearWaiting()` here finds a matching
19
+ * entry. The affected WorkItem itself is unaffected — its blocked->running
20
+ * transition self-heals independently via the reconciler's next poll — only
21
+ * the owner-facing escalation record can go stale. See #851 for why this
22
+ * was documented rather than fixed inline (a correct fix costs a
23
+ * listPending() read on every poll of every non-waiting agent unless done
24
+ * as a one-time startup reconciliation instead).
25
+ *
26
+ * @module services/monitoring/agent-attention-registry
27
+ */
28
+ const entries = new Map();
29
+ /**
30
+ * Record that a session is waiting. Keeps the original `since` (and kind)
31
+ * when the session was already waiting, so the wait duration is not reset by
32
+ * each poll.
33
+ *
34
+ * @param entry - The waiting state; `since` is used only for a new wait
35
+ * @returns True when this starts a new wait, false when it continues one
36
+ */
37
+ export function markWaiting(entry) {
38
+ const existing = entries.get(entry.sessionName);
39
+ if (existing) {
40
+ entries.set(entry.sessionName, { ...entry, since: existing.since });
41
+ return false;
42
+ }
43
+ entries.set(entry.sessionName, entry);
44
+ return true;
45
+ }
46
+ /**
47
+ * Record that a session is no longer waiting.
48
+ *
49
+ * @param sessionName - The session
50
+ * @returns The entry that was cleared, or undefined when it was not waiting
51
+ */
52
+ export function clearWaiting(sessionName) {
53
+ const existing = entries.get(sessionName);
54
+ entries.delete(sessionName);
55
+ return existing;
56
+ }
57
+ /**
58
+ * Get a session's current waiting state.
59
+ *
60
+ * @param sessionName - The session
61
+ * @returns The entry, or undefined when the session is not waiting
62
+ */
63
+ export function getWaiting(sessionName) {
64
+ return entries.get(sessionName);
65
+ }
66
+ /**
67
+ * List every session currently waiting.
68
+ *
69
+ * @returns Snapshot of all waiting entries
70
+ */
71
+ export function listWaiting() {
72
+ return [...entries.values()];
73
+ }
74
+ /**
75
+ * Forget all state (tests only).
76
+ */
77
+ export function resetWaitingRegistry() {
78
+ entries.clear();
79
+ }
80
+ //# sourceMappingURL=agent-attention-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-attention-registry.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkBH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IACnC,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Agent Attention Verdict
3
+ *
4
+ * Decides, from what an agent's terminal shows, whether the agent is blocked
5
+ * on a human (an approval prompt, a trust dialog, a plan-mode menu, any
6
+ * selection dialog) rather than working or idle. See
7
+ * `specs/2026-09-26-agent-waiting-on-human.md`.
8
+ *
9
+ * Pure functions only: the caller supplies the rendered screen text and the
10
+ * latest OSC terminal title. The rules are pinned by fixture files of real
11
+ * captured screens in `__fixtures__/agent-screens/`.
12
+ *
13
+ * Signals and what each one is worth (verified 2026-09-26 on Claude Code
14
+ * 2.1.283 and Codex 0.157.1):
15
+ * - Screen text: the primary signal. A blocking dialog renders a selector
16
+ * (`❯` / `›`) plus dialog-specific text or a confirm footer.
17
+ * - OSC title: Codex writes `[ ! ] Action Required | …` while it waits and a
18
+ * braille spinner while it works, so its title votes. Claude Code writes
19
+ * `✳ <task label>` in every state, so a Claude title is a label only.
20
+ *
21
+ * @module services/monitoring/agent-attention
22
+ */
23
+ /** Overall verdict for one agent at one moment. */
24
+ export type AttentionVerdict = 'waiting_on_human' | 'busy' | 'idle';
25
+ /**
26
+ * What the agent is waiting on.
27
+ * - `permission`: a tool or command approval
28
+ * - `trust`: a folder / workspace trust dialog
29
+ * - `plan`: Claude Code's plan-approval menu
30
+ * - `menu`: some other selection dialog (onboarding, opt-in, …)
31
+ * - `unspecified`: only the terminal title said so
32
+ */
33
+ export type WaitingKind = 'permission' | 'trust' | 'plan' | 'menu' | 'unspecified';
34
+ /** What the OSC terminal title says on its own. */
35
+ export type TitleSignal = 'waiting' | 'busy' | 'none';
36
+ /** Input to {@link computeAgentAttention}. */
37
+ export interface AttentionInput {
38
+ /** Rendered screen text (ANSI allowed; it is stripped). */
39
+ screen: string;
40
+ /** Latest OSC 0/2 terminal title, if known. */
41
+ title?: string | null;
42
+ }
43
+ /** Result of {@link computeAgentAttention}. */
44
+ export interface AttentionResult {
45
+ /** The fused verdict. */
46
+ verdict: AttentionVerdict;
47
+ /** Set only when `verdict` is `waiting_on_human`. */
48
+ kind?: WaitingKind;
49
+ /** Names of the rules that fired, for logs and escalation text. */
50
+ evidence: string[];
51
+ /** Non-empty screen lines the rules examined (0 means nothing was examined). */
52
+ linesExamined: number;
53
+ /** Human-readable task label taken from the title, without status glyphs. */
54
+ titleLabel?: string;
55
+ }
56
+ /**
57
+ * Keep the bottom of the screen: the last N non-empty lines.
58
+ *
59
+ * Dialogs render at the bottom. Restricting to the bottom region keeps a
60
+ * dialog that was answered minutes ago (still in scrollback) from counting.
61
+ *
62
+ * @param screen - Rendered screen text, ANSI allowed
63
+ * @returns The bottom non-empty lines, joined with newlines, and their count
64
+ */
65
+ export declare function bottomRegion(screen: string): {
66
+ text: string;
67
+ lines: number;
68
+ };
69
+ /**
70
+ * Read the OSC terminal title.
71
+ *
72
+ * @param title - Latest OSC title, or null/undefined when unknown
73
+ * @returns The title's own signal and its label without status glyphs
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * classifyTitle('[ ! ] Action Required | ⠸ | repo'); // { signal: 'waiting', label: 'repo' }
78
+ * classifyTitle('✳ Fix login bug'); // { signal: 'none', label: 'Fix login bug' }
79
+ * ```
80
+ */
81
+ export declare function classifyTitle(title: string | null | undefined): {
82
+ signal: TitleSignal;
83
+ label: string;
84
+ };
85
+ /**
86
+ * Find a blocking dialog at the bottom of the screen.
87
+ *
88
+ * @param screen - Rendered screen text, ANSI allowed
89
+ * @returns The dialog kind (undefined when none), rule evidence, whether a
90
+ * busy marker is visible, and how many lines were examined
91
+ */
92
+ export declare function detectPromptOnScreen(screen: string): {
93
+ kind?: WaitingKind;
94
+ evidence: string[];
95
+ busy: boolean;
96
+ linesExamined: number;
97
+ };
98
+ /**
99
+ * Fuse screen and title into one attention verdict.
100
+ *
101
+ * Precedence: a dialog on screen wins (it is explicit), then a waiting title,
102
+ * then any busy signal, else idle.
103
+ *
104
+ * @param input - Rendered screen and latest title
105
+ * @returns The verdict with its evidence and the number of lines examined
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const r = computeAgentAttention({ screen: backend.captureOutput(s, 40), title });
110
+ * if (r.verdict === 'waiting_on_human') routeToOwner(r.kind);
111
+ * ```
112
+ */
113
+ export declare function computeAgentAttention(input: AttentionInput): AttentionResult;
114
+ //# sourceMappingURL=agent-attention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-attention.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnF,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC9B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC/B,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qDAAqD;IACrD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAO5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAYtG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IACrD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACtB,CA8BA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAuB5E"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Agent Attention Verdict
3
+ *
4
+ * Decides, from what an agent's terminal shows, whether the agent is blocked
5
+ * on a human (an approval prompt, a trust dialog, a plan-mode menu, any
6
+ * selection dialog) rather than working or idle. See
7
+ * `specs/2026-09-26-agent-waiting-on-human.md`.
8
+ *
9
+ * Pure functions only: the caller supplies the rendered screen text and the
10
+ * latest OSC terminal title. The rules are pinned by fixture files of real
11
+ * captured screens in `__fixtures__/agent-screens/`.
12
+ *
13
+ * Signals and what each one is worth (verified 2026-09-26 on Claude Code
14
+ * 2.1.283 and Codex 0.157.1):
15
+ * - Screen text: the primary signal. A blocking dialog renders a selector
16
+ * (`❯` / `›`) plus dialog-specific text or a confirm footer.
17
+ * - OSC title: Codex writes `[ ! ] Action Required | …` while it waits and a
18
+ * braille spinner while it works, so its title votes. Claude Code writes
19
+ * `✳ <task label>` in every state, so a Claude title is a label only.
20
+ *
21
+ * @module services/monitoring/agent-attention
22
+ */
23
+ import { stripAnsiCodes } from '../../utils/terminal-output.utils.js';
24
+ import { AGENT_ATTENTION_CONSTANTS } from '../../constants.js';
25
+ /** A selector cursor at the start of a line (Claude `❯`, Codex `›`). */
26
+ const SELECTOR_LINE = /^\s*[❯›]\s*\S/m;
27
+ /** A selector cursor on a numbered option, e.g. `❯ 1. Yes`. */
28
+ const NUMBERED_SELECTOR_LINE = /^\s*[❯›]\s*\d+\.\s+\S/m;
29
+ /** Footer lines that only selection dialogs render. */
30
+ const CONFIRM_FOOTER = /(Esc to cancel|Enter to confirm|Press enter to confirm|enter continue\s*·\s*esc back)/i;
31
+ /** Work-in-progress markers (Claude and Codex both show "esc to interrupt"). */
32
+ const BUSY_MARKER = /esc to interrupt/i;
33
+ /** Claude Code's plan-approval menu. */
34
+ const PLAN_MENU_HEADER = /(Claude has written up a plan|Ready to code\?)/i;
35
+ const PLAN_MENU_QUESTION = /Would you like to proceed\?/i;
36
+ /** Folder / workspace trust dialogs (Claude, Codex, Gemini wording). */
37
+ const TRUST_TEXT = /(trust this folder|Do you trust the files|Is this a project you (created or one you )?trust|Accessing workspace)/i;
38
+ /** Tool / command approval questions. */
39
+ const PERMISSION_TEXT = /(Do you want to proceed\?|Do you want to (make this edit|create|allow|run)|Would you like to run the following command\?|Would you like to make the following edits\?)/i;
40
+ /** Codex (and similar) title while waiting on the user. */
41
+ const TITLE_WAITING = /Action Required/i;
42
+ /** A braille spinner glyph (U+2800–U+28FF) leading the title means work in progress. */
43
+ const TITLE_SPINNER = /^\s*[⠀-⣿]/;
44
+ /** Status glyphs and markers stripped from a title to get its label. */
45
+ const TITLE_DECORATION = /^\s*(\[\s*!\s*\]\s*Action Required\s*\|\s*)?([⠀-⣿]\s*\|?\s*)?([✳✻✽✶✢·*]\s*)?/i;
46
+ /**
47
+ * Keep the bottom of the screen: the last N non-empty lines.
48
+ *
49
+ * Dialogs render at the bottom. Restricting to the bottom region keeps a
50
+ * dialog that was answered minutes ago (still in scrollback) from counting.
51
+ *
52
+ * @param screen - Rendered screen text, ANSI allowed
53
+ * @returns The bottom non-empty lines, joined with newlines, and their count
54
+ */
55
+ export function bottomRegion(screen) {
56
+ const nonEmpty = stripAnsiCodes(screen)
57
+ .split('\n')
58
+ .map((line) => line.replace(/\s+$/, ''))
59
+ .filter((line) => line.trim() !== '');
60
+ const kept = nonEmpty.slice(-AGENT_ATTENTION_CONSTANTS.BOTTOM_LINES);
61
+ return { text: kept.join('\n'), lines: kept.length };
62
+ }
63
+ /**
64
+ * Read the OSC terminal title.
65
+ *
66
+ * @param title - Latest OSC title, or null/undefined when unknown
67
+ * @returns The title's own signal and its label without status glyphs
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * classifyTitle('[ ! ] Action Required | ⠸ | repo'); // { signal: 'waiting', label: 'repo' }
72
+ * classifyTitle('✳ Fix login bug'); // { signal: 'none', label: 'Fix login bug' }
73
+ * ```
74
+ */
75
+ export function classifyTitle(title) {
76
+ if (!title || title.trim() === '') {
77
+ return { signal: 'none', label: '' };
78
+ }
79
+ const label = title.replace(TITLE_DECORATION, '').trim();
80
+ if (TITLE_WAITING.test(title)) {
81
+ return { signal: 'waiting', label };
82
+ }
83
+ if (TITLE_SPINNER.test(title)) {
84
+ return { signal: 'busy', label };
85
+ }
86
+ return { signal: 'none', label };
87
+ }
88
+ /**
89
+ * Find a blocking dialog at the bottom of the screen.
90
+ *
91
+ * @param screen - Rendered screen text, ANSI allowed
92
+ * @returns The dialog kind (undefined when none), rule evidence, whether a
93
+ * busy marker is visible, and how many lines were examined
94
+ */
95
+ export function detectPromptOnScreen(screen) {
96
+ const { text, lines } = bottomRegion(screen);
97
+ const evidence = [];
98
+ const busy = BUSY_MARKER.test(text);
99
+ const selector = SELECTOR_LINE.test(text);
100
+ const numbered = NUMBERED_SELECTOR_LINE.test(text);
101
+ const footer = CONFIRM_FOOTER.test(text);
102
+ // A selector alone is not enough: Claude renders user messages and the
103
+ // input box with `❯`, and Codex its input box with `›`.
104
+ const menuPresent = numbered || (selector && footer);
105
+ let kind;
106
+ if (PLAN_MENU_HEADER.test(text) && PLAN_MENU_QUESTION.test(text)) {
107
+ kind = 'plan';
108
+ evidence.push('screen:plan-menu');
109
+ }
110
+ else if (menuPresent && TRUST_TEXT.test(text)) {
111
+ kind = 'trust';
112
+ evidence.push('screen:trust-dialog');
113
+ }
114
+ else if (menuPresent && PERMISSION_TEXT.test(text)) {
115
+ kind = 'permission';
116
+ evidence.push('screen:permission-prompt');
117
+ }
118
+ else if (selector && footer) {
119
+ kind = 'menu';
120
+ evidence.push('screen:selection-dialog');
121
+ }
122
+ if (busy) {
123
+ evidence.push('screen:busy-marker');
124
+ }
125
+ return { kind, evidence, busy, linesExamined: lines };
126
+ }
127
+ /**
128
+ * Fuse screen and title into one attention verdict.
129
+ *
130
+ * Precedence: a dialog on screen wins (it is explicit), then a waiting title,
131
+ * then any busy signal, else idle.
132
+ *
133
+ * @param input - Rendered screen and latest title
134
+ * @returns The verdict with its evidence and the number of lines examined
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const r = computeAgentAttention({ screen: backend.captureOutput(s, 40), title });
139
+ * if (r.verdict === 'waiting_on_human') routeToOwner(r.kind);
140
+ * ```
141
+ */
142
+ export function computeAgentAttention(input) {
143
+ const screen = detectPromptOnScreen(input.screen);
144
+ const title = classifyTitle(input.title);
145
+ const evidence = [...screen.evidence];
146
+ if (title.signal !== 'none') {
147
+ evidence.push(`title:${title.signal}`);
148
+ }
149
+ const base = {
150
+ evidence,
151
+ linesExamined: screen.linesExamined,
152
+ ...(title.label ? { titleLabel: title.label } : {}),
153
+ };
154
+ if (screen.kind) {
155
+ return { verdict: 'waiting_on_human', kind: screen.kind, ...base };
156
+ }
157
+ if (title.signal === 'waiting') {
158
+ return { verdict: 'waiting_on_human', kind: 'unspecified', ...base };
159
+ }
160
+ if (screen.busy || title.signal === 'busy') {
161
+ return { verdict: 'busy', ...base };
162
+ }
163
+ return { verdict: 'idle', ...base };
164
+ }
165
+ //# sourceMappingURL=agent-attention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-attention.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Agent Hook State
3
+ *
4
+ * Latest "waiting on the user" signal per agent session, as reported by the
5
+ * Claude Code agent-status hook (`config/hooks/agent-status/report.sh`,
6
+ * POST /api/agent-hooks). #815, specs/2026-09-26-agent-status-hooks.md.
7
+ *
8
+ * This is the hook half of the waiting_on_human verdict: the activity
9
+ * monitor combines it with screen and title detection. Only identifiers are
10
+ * ever stored (event name, notification type) — never hook payload content.
11
+ *
12
+ * @module services/monitoring/agent-hook-state
13
+ */
14
+ /** What a hook event says about waiting. */
15
+ export type HookSignalState = 'waiting' | 'cleared';
16
+ /** What the agent waits on, from the hook's point of view. */
17
+ export type HookWaitingKind = 'permission' | 'menu';
18
+ /** The latest signal for one session. */
19
+ export interface HookSignal {
20
+ /** Session that reported it. */
21
+ sessionName: string;
22
+ /** Waiting or cleared. */
23
+ state: HookSignalState;
24
+ /** Set when `state` is `waiting`. */
25
+ kind?: HookWaitingKind;
26
+ /** The hook event that produced it. */
27
+ event: string;
28
+ /** The notification type, for Notification events. */
29
+ notificationType?: string;
30
+ /** ISO time it was received. */
31
+ at: string;
32
+ }
33
+ /**
34
+ * Map a hook event to a signal.
35
+ *
36
+ * - `PermissionRequest`, or `Notification` of type `permission_prompt` → waiting (permission)
37
+ * - `Notification` of type `elicitation_dialog` → waiting (menu: a question for the user)
38
+ * - `Stop`, `UserPromptSubmit`, `PostToolUse` → cleared (the prompt was answered or the turn ended)
39
+ * - anything else (e.g. `idle_prompt`: the agent is idle at its input box) → no signal
40
+ *
41
+ * @param event - Hook event name
42
+ * @param notificationType - Notification type, for Notification events
43
+ * @returns The signal state and kind, or null when the event says nothing about waiting
44
+ */
45
+ export declare function hookEventToSignal(event: string, notificationType?: string): {
46
+ state: HookSignalState;
47
+ kind?: HookWaitingKind;
48
+ } | null;
49
+ /**
50
+ * Record a hook event for a session.
51
+ *
52
+ * @param sessionName - Reporting session
53
+ * @param event - Hook event name (already validated by the caller)
54
+ * @param notificationType - Notification type, if any
55
+ * @param now - Clock (injectable for tests)
56
+ * @returns The stored signal, or null when the event carries no waiting information
57
+ */
58
+ export declare function recordHookEvent(sessionName: string, event: string, notificationType?: string, now?: Date): HookSignal | null;
59
+ /**
60
+ * Latest hook signal for a session.
61
+ *
62
+ * @param sessionName - Session
63
+ * @returns The signal, or undefined when the session never reported one
64
+ */
65
+ export declare function getHookSignal(sessionName: string): HookSignal | undefined;
66
+ /**
67
+ * Forget a session's signal (e.g. when its session ends).
68
+ *
69
+ * @param sessionName - Session
70
+ */
71
+ export declare function clearHookSignal(sessionName: string): void;
72
+ /**
73
+ * Forget everything (tests only).
74
+ */
75
+ export declare function resetHookState(): void;
76
+ //# sourceMappingURL=agent-hook-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hook-state.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-hook-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,MAAM,CAAC;AAEpD,yCAAyC;AACzC,MAAM,WAAW,UAAU;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,qCAAqC;IACrC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,MAAM,GACvB;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAS3D;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,MAAM,EACzB,GAAG,GAAE,IAAiB,GACpB,UAAU,GAAG,IAAI,CAmBnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Agent Hook State
3
+ *
4
+ * Latest "waiting on the user" signal per agent session, as reported by the
5
+ * Claude Code agent-status hook (`config/hooks/agent-status/report.sh`,
6
+ * POST /api/agent-hooks). #815, specs/2026-09-26-agent-status-hooks.md.
7
+ *
8
+ * This is the hook half of the waiting_on_human verdict: the activity
9
+ * monitor combines it with screen and title detection. Only identifiers are
10
+ * ever stored (event name, notification type) — never hook payload content.
11
+ *
12
+ * @module services/monitoring/agent-hook-state
13
+ */
14
+ import { AGENT_STATUS_HOOK_CONSTANTS } from '../../constants.js';
15
+ /**
16
+ * Map a hook event to a signal.
17
+ *
18
+ * - `PermissionRequest`, or `Notification` of type `permission_prompt` → waiting (permission)
19
+ * - `Notification` of type `elicitation_dialog` → waiting (menu: a question for the user)
20
+ * - `Stop`, `UserPromptSubmit`, `PostToolUse` → cleared (the prompt was answered or the turn ended)
21
+ * - anything else (e.g. `idle_prompt`: the agent is idle at its input box) → no signal
22
+ *
23
+ * @param event - Hook event name
24
+ * @param notificationType - Notification type, for Notification events
25
+ * @returns The signal state and kind, or null when the event says nothing about waiting
26
+ */
27
+ export function hookEventToSignal(event, notificationType) {
28
+ if (event === 'PermissionRequest')
29
+ return { state: 'waiting', kind: 'permission' };
30
+ if (event === 'Notification') {
31
+ if (notificationType === 'permission_prompt')
32
+ return { state: 'waiting', kind: 'permission' };
33
+ if (notificationType === 'elicitation_dialog')
34
+ return { state: 'waiting', kind: 'menu' };
35
+ return null;
36
+ }
37
+ if (event === 'Stop' || event === 'UserPromptSubmit' || event === 'PostToolUse')
38
+ return { state: 'cleared' };
39
+ return null;
40
+ }
41
+ const signals = new Map();
42
+ /**
43
+ * Record a hook event for a session.
44
+ *
45
+ * @param sessionName - Reporting session
46
+ * @param event - Hook event name (already validated by the caller)
47
+ * @param notificationType - Notification type, if any
48
+ * @param now - Clock (injectable for tests)
49
+ * @returns The stored signal, or null when the event carries no waiting information
50
+ */
51
+ export function recordHookEvent(sessionName, event, notificationType, now = new Date()) {
52
+ const mapped = hookEventToSignal(event, notificationType);
53
+ if (!mapped)
54
+ return null;
55
+ if (!signals.has(sessionName) && signals.size >= AGENT_STATUS_HOOK_CONSTANTS.MAX_TRACKED_SESSIONS) {
56
+ // Bounded memory: drop the oldest entry (Map keeps insertion order).
57
+ const oldest = signals.keys().next().value;
58
+ if (oldest !== undefined)
59
+ signals.delete(oldest);
60
+ }
61
+ const signal = {
62
+ sessionName,
63
+ state: mapped.state,
64
+ ...(mapped.kind ? { kind: mapped.kind } : {}),
65
+ event,
66
+ ...(notificationType ? { notificationType } : {}),
67
+ at: now.toISOString(),
68
+ };
69
+ signals.delete(sessionName);
70
+ signals.set(sessionName, signal);
71
+ return signal;
72
+ }
73
+ /**
74
+ * Latest hook signal for a session.
75
+ *
76
+ * @param sessionName - Session
77
+ * @returns The signal, or undefined when the session never reported one
78
+ */
79
+ export function getHookSignal(sessionName) {
80
+ return signals.get(sessionName);
81
+ }
82
+ /**
83
+ * Forget a session's signal (e.g. when its session ends).
84
+ *
85
+ * @param sessionName - Session
86
+ */
87
+ export function clearHookSignal(sessionName) {
88
+ signals.delete(sessionName);
89
+ }
90
+ /**
91
+ * Forget everything (tests only).
92
+ */
93
+ export function resetHookState() {
94
+ signals.clear();
95
+ }
96
+ //# sourceMappingURL=agent-hook-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hook-state.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-hook-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAwBjE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAChC,KAAa,EACb,gBAAyB;IAEzB,IAAI,KAAK,KAAK,mBAAmB;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACnF,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC9B,IAAI,gBAAgB,KAAK,mBAAmB;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC9F,IAAI,gBAAgB,KAAK,oBAAoB;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC7G,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC9B,WAAmB,EACnB,KAAa,EACb,gBAAyB,EACzB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,2BAA2B,CAAC,oBAAoB,EAAE,CAAC;QACnG,qEAAqE;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAe;QAC1B,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,KAAK;QACL,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE;KACrB,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IAClD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -215,7 +215,7 @@ function buildTeamConfig(rec, teamId, createdAt) {
215
215
  }
216
216
  /**
217
217
  * Convert a kebab-case template id → human team name
218
- * (`"dtc-viral-content-team"` → `"Dtc Viral Content Team"`).
218
+ * (`"growth-marketing-team"` → `"Growth Marketing Team"`).
219
219
  *
220
220
  * @param templateId - The kebab-case template id.
221
221
  * @returns A title-cased, space-separated name.
@@ -97,7 +97,7 @@ export interface TeamRecommendation {
97
97
  * { name: 'customer support replies', tier: 'yes-today' },
98
98
  * ],
99
99
  * });
100
- * // → templateId: 'dtc-viral-content-team', 2 agents, …
100
+ * // → templateId: 'growth-marketing-team', 2 agents, …
101
101
  * ```
102
102
  */
103
103
  export declare function recommendTeam(ctx: BusinessContext): TeamRecommendation;
@@ -1 +1 @@
1
- {"version":3,"file":"recommend-team.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AA4OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,CAmBtE;AAoED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAA4B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAEnD,CAAC"}
1
+ {"version":3,"file":"recommend-team.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAoPD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,CAmBtE;AAoED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAA4B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAEnD,CAAC"}
@@ -50,7 +50,13 @@ const HARDCODED_MAPPINGS = [
50
50
  'support',
51
51
  'content',
52
52
  ],
53
- build: (ctx) => build('ecommerce-content-support', 'dtc-viral-content-team', [
53
+ build: (ctx) => build('ecommerce-content-support',
54
+ // dtc-viral-content-team was a paid template, moved to crewly-pro
55
+ // (2026-09-28, #816). growth-marketing-team is the closest free
56
+ // substitute (it has a content-drafter role); materialize-team.ts
57
+ // provisions the team from THIS template's own roles, not from the
58
+ // RecommendedAgent[] below (that list is preview/fallback-stub only).
59
+ 'growth-marketing-team', [
54
60
  {
55
61
  role: 'content-drafter',
56
62
  responsibilities: 'Drafts weekly blog + social content tuned to your storefront and audience.',
@@ -105,7 +111,11 @@ const HARDCODED_MAPPINGS = [
105
111
  'platform',
106
112
  'mvp',
107
113
  ],
108
- build: (ctx) => build('engineering', ctx.scale === 'solo' ? 'pragmatic-mvp-dev-team' : 'web-dev-team', [
114
+ build: (ctx) => build('engineering',
115
+ // pragmatic-mvp-dev-team (the solo case) was a paid template, moved
116
+ // to crewly-pro (2026-09-28, #816). web-dev-team is free and already
117
+ // covers the non-solo case, so it now covers both.
118
+ 'web-dev-team', [
109
119
  {
110
120
  role: 'code-reviewer',
111
121
  responsibilities: 'Reviews pull requests for style, obvious bugs, and missing tests.',
@@ -207,7 +217,7 @@ const HARDCODED_MAPPINGS = [
207
217
  * { name: 'customer support replies', tier: 'yes-today' },
208
218
  * ],
209
219
  * });
210
- * // → templateId: 'dtc-viral-content-team', 2 agents, …
220
+ * // → templateId: 'growth-marketing-team', 2 agents, …
211
221
  * ```
212
222
  */
213
223
  export function recommendTeam(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"recommend-team.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend-team.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"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"}