crewly 1.20.361 → 1.20.363

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 (370) hide show
  1. package/config/hooks/destructive-git-guard/guard.mjs +96 -0
  2. package/config/roles/team-leader/prompt.md +1 -1
  3. package/config/roles/team-leader/tl-addon.md +1 -1
  4. package/config/skills/agent/core/ask-owner/SKILL.md +31 -0
  5. package/config/skills/agent/core/ask-owner/execute.sh +14 -3
  6. package/config/skills/agent/core/ask-owner/execute.test.sh +8 -0
  7. package/config/skills/agent/core/gmail-read/SKILL.md +8 -0
  8. package/config/skills/agent/core/gmail-send/SKILL.md +10 -3
  9. package/config/skills/agent/core/gmail-send/execute.sh +2 -1
  10. package/config/skills/agent/core/gmail-watch-thread/SKILL.md +69 -0
  11. package/config/skills/agent/core/gmail-watch-thread/execute.sh +51 -0
  12. package/config/skills/agent/core/project-tickets/SKILL.md +12 -0
  13. package/config/skills/agent/core/project-tickets/execute.sh +13 -3
  14. package/config/skills/agent/core/project-tickets/execute.test.sh +4 -0
  15. package/config/skills/agent/core/watch-for-event/SKILL.md +22 -0
  16. package/config/skills/orchestrator/harness-login/SKILL.md +1 -1
  17. package/config/skills/team-leader/delegate-task/SKILL.md +21 -6
  18. package/config/skills/team-leader/delegate-task/execute.sh +12 -1
  19. package/dist/backend/backend/src/constants.d.ts +216 -8
  20. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  21. package/dist/backend/backend/src/constants.js +217 -9
  22. package/dist/backend/backend/src/constants.js.map +1 -1
  23. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +44 -0
  24. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  25. package/dist/backend/backend/src/controllers/google/google.controller.js +121 -3
  26. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  27. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  28. package/dist/backend/backend/src/controllers/google/google.routes.js +5 -1
  29. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  30. package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts +1 -1
  31. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +1 -1
  32. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +1 -1
  33. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
  34. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +2 -1
  35. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
  36. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  37. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +7 -4
  38. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  39. package/dist/backend/backend/src/index.d.ts.map +1 -1
  40. package/dist/backend/backend/src/index.js +114 -1
  41. package/dist/backend/backend/src/index.js.map +1 -1
  42. package/dist/backend/backend/src/services/agent/follow-through.wiring.d.ts.map +1 -1
  43. package/dist/backend/backend/src/services/agent/follow-through.wiring.js +2 -0
  44. package/dist/backend/backend/src/services/agent/follow-through.wiring.js.map +1 -1
  45. package/dist/backend/backend/src/services/agent/handover-interrupted.d.ts +76 -0
  46. package/dist/backend/backend/src/services/agent/handover-interrupted.d.ts.map +1 -0
  47. package/dist/backend/backend/src/services/agent/handover-interrupted.js +139 -0
  48. package/dist/backend/backend/src/services/agent/handover-interrupted.js.map +1 -0
  49. package/dist/backend/backend/src/services/agent/handover-pointers.d.ts +4 -0
  50. package/dist/backend/backend/src/services/agent/handover-pointers.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/agent/handover-pointers.js +11 -4
  52. package/dist/backend/backend/src/services/agent/handover-pointers.js.map +1 -1
  53. package/dist/backend/backend/src/services/agent/idle-work-guard.d.ts +3 -1
  54. package/dist/backend/backend/src/services/agent/idle-work-guard.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/agent/idle-work-guard.js +2 -0
  56. package/dist/backend/backend/src/services/agent/idle-work-guard.js.map +1 -1
  57. package/dist/backend/backend/src/services/agent/resource-mode-protection.d.ts +5 -1
  58. package/dist/backend/backend/src/services/agent/resource-mode-protection.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/agent/resource-mode-protection.js +6 -1
  60. package/dist/backend/backend/src/services/agent/resource-mode-protection.js.map +1 -1
  61. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +7 -0
  62. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +18 -1
  64. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  65. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  67. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  68. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts +8 -0
  69. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -1
  70. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js +10 -0
  71. package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -1
  72. package/dist/backend/backend/src/services/decisions/decision-card.d.ts +46 -13
  73. package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  74. package/dist/backend/backend/src/services/decisions/decision-card.js +100 -50
  75. package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
  76. package/dist/backend/backend/src/services/decisions/decision-contract.d.ts +23 -1
  77. package/dist/backend/backend/src/services/decisions/decision-contract.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/decisions/decision-contract.js +76 -4
  79. package/dist/backend/backend/src/services/decisions/decision-contract.js.map +1 -1
  80. package/dist/backend/backend/src/services/decisions/decision-wording.d.ts +167 -0
  81. package/dist/backend/backend/src/services/decisions/decision-wording.d.ts.map +1 -0
  82. package/dist/backend/backend/src/services/decisions/decision-wording.js +406 -0
  83. package/dist/backend/backend/src/services/decisions/decision-wording.js.map +1 -0
  84. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +30 -1
  85. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  86. package/dist/backend/backend/src/services/decisions/decision.service.js +44 -8
  87. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  88. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  89. package/dist/backend/backend/src/services/decisions/decision.wiring.js +17 -0
  90. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  91. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +1 -0
  93. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  94. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.d.ts +142 -0
  95. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.d.ts.map +1 -0
  96. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.js +304 -0
  97. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.js.map +1 -0
  98. package/dist/backend/backend/src/services/google/gmail-send-approval.service.d.ts +130 -0
  99. package/dist/backend/backend/src/services/google/gmail-send-approval.service.d.ts.map +1 -0
  100. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js +216 -0
  101. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js.map +1 -0
  102. package/dist/backend/backend/src/services/google/gmail-send-gate.d.ts +28 -13
  103. package/dist/backend/backend/src/services/google/gmail-send-gate.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/google/gmail-send-gate.js +82 -29
  105. package/dist/backend/backend/src/services/google/gmail-send-gate.js.map +1 -1
  106. package/dist/backend/backend/src/services/google/gmail.service.d.ts +90 -0
  107. package/dist/backend/backend/src/services/google/gmail.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/google/gmail.service.js +122 -0
  109. package/dist/backend/backend/src/services/google/gmail.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +24 -14
  111. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/harness/claude-accounts.js +35 -21
  113. package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -1
  114. package/dist/backend/backend/src/services/harness/claude-native-login.d.ts +106 -0
  115. package/dist/backend/backend/src/services/harness/claude-native-login.d.ts.map +1 -0
  116. package/dist/backend/backend/src/services/harness/claude-native-login.js +174 -0
  117. package/dist/backend/backend/src/services/harness/claude-native-login.js.map +1 -0
  118. package/dist/backend/backend/src/services/harness/claude-token-migration.service.d.ts +158 -0
  119. package/dist/backend/backend/src/services/harness/claude-token-migration.service.d.ts.map +1 -0
  120. package/dist/backend/backend/src/services/harness/claude-token-migration.service.js +283 -0
  121. package/dist/backend/backend/src/services/harness/claude-token-migration.service.js.map +1 -0
  122. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +44 -24
  123. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +96 -39
  125. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  126. package/dist/backend/backend/src/services/harness/harness-registry.js +1 -1
  127. package/dist/backend/backend/src/services/harness/harness-registry.js.map +1 -1
  128. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +2 -2
  129. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +2 -2
  130. package/dist/backend/backend/src/services/harness/harness.service.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/harness/harness.service.js +10 -1
  132. package/dist/backend/backend/src/services/harness/harness.service.js.map +1 -1
  133. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +24 -21
  134. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/harness/login-broker.service.js +50 -64
  136. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/harness/login-rules.d.ts +17 -11
  138. package/dist/backend/backend/src/services/harness/login-rules.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/harness/login-rules.js +22 -25
  140. package/dist/backend/backend/src/services/harness/login-rules.js.map +1 -1
  141. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts +79 -2
  142. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/open-items/open-item-extractor.js +194 -13
  144. package/dist/backend/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  145. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +65 -1
  146. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/open-items/open-items.service.js +140 -7
  148. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts +8 -0
  150. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/open-items/open-items.wiring.js +19 -1
  152. package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -1
  153. package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts +35 -19
  154. package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/orc/owner-completion-report.service.js +60 -63
  156. package/dist/backend/backend/src/services/orc/owner-completion-report.service.js.map +1 -1
  157. package/dist/backend/backend/src/services/orc/owner-completion-report.text.d.ts +86 -0
  158. package/dist/backend/backend/src/services/orc/owner-completion-report.text.d.ts.map +1 -0
  159. package/dist/backend/backend/src/services/orc/owner-completion-report.text.js +170 -0
  160. package/dist/backend/backend/src/services/orc/owner-completion-report.text.js.map +1 -0
  161. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts +24 -0
  162. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js +38 -1
  164. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js.map +1 -1
  165. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts +2 -0
  166. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +8 -3
  168. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
  169. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +76 -0
  170. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/orc/work-item-destination.js +83 -3
  172. package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -1
  173. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts +31 -2
  174. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts.map +1 -1
  175. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js +38 -0
  176. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js.map +1 -1
  177. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +5 -0
  178. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  179. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +30 -6
  180. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  181. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/project-tickets/ticket-file.js +6 -1
  183. package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -1
  184. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.d.ts +64 -0
  185. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.d.ts.map +1 -0
  186. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.js +93 -0
  187. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.js.map +1 -0
  188. package/dist/backend/backend/src/services/project-tickets/ticket-hold.d.ts +176 -0
  189. package/dist/backend/backend/src/services/project-tickets/ticket-hold.d.ts.map +1 -0
  190. package/dist/backend/backend/src/services/project-tickets/ticket-hold.js +301 -0
  191. package/dist/backend/backend/src/services/project-tickets/ticket-hold.js.map +1 -0
  192. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +33 -3
  193. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +50 -4
  195. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  196. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +8 -1
  197. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  198. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +26 -0
  199. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  200. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +6 -1
  201. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  202. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +3 -2
  203. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  204. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +4 -1
  206. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  207. package/dist/backend/backend/src/services/stall/background-run-detector.d.ts +56 -0
  208. package/dist/backend/backend/src/services/stall/background-run-detector.d.ts.map +1 -0
  209. package/dist/backend/backend/src/services/stall/background-run-detector.js +93 -0
  210. package/dist/backend/backend/src/services/stall/background-run-detector.js.map +1 -0
  211. package/dist/backend/backend/src/services/stall/claim-check.d.ts +60 -0
  212. package/dist/backend/backend/src/services/stall/claim-check.d.ts.map +1 -0
  213. package/dist/backend/backend/src/services/stall/claim-check.js +98 -0
  214. package/dist/backend/backend/src/services/stall/claim-check.js.map +1 -0
  215. package/dist/backend/backend/src/services/stall/in-flight-runs.store.d.ts +110 -0
  216. package/dist/backend/backend/src/services/stall/in-flight-runs.store.d.ts.map +1 -0
  217. package/dist/backend/backend/src/services/stall/in-flight-runs.store.js +109 -0
  218. package/dist/backend/backend/src/services/stall/in-flight-runs.store.js.map +1 -0
  219. package/dist/backend/backend/src/services/stall/stall-watcher.service.d.ts +490 -0
  220. package/dist/backend/backend/src/services/stall/stall-watcher.service.d.ts.map +1 -0
  221. package/dist/backend/backend/src/services/stall/stall-watcher.service.js +922 -0
  222. package/dist/backend/backend/src/services/stall/stall-watcher.service.js.map +1 -0
  223. package/dist/backend/backend/src/services/stall/stall-watcher.wiring.d.ts +98 -0
  224. package/dist/backend/backend/src/services/stall/stall-watcher.wiring.d.ts.map +1 -0
  225. package/dist/backend/backend/src/services/stall/stall-watcher.wiring.js +217 -0
  226. package/dist/backend/backend/src/services/stall/stall-watcher.wiring.js.map +1 -0
  227. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +53 -0
  228. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  229. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +162 -15
  230. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  231. package/dist/backend/backend/src/services/tl-delegation/tl-delegation.service.js +1 -1
  232. package/dist/backend/backend/src/services/tl-delegation/tl-delegation.service.js.map +1 -1
  233. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +3 -0
  234. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  235. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +5 -2
  236. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  237. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.d.ts +7 -2
  238. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.d.ts.map +1 -1
  239. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.js +11 -2
  240. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.js.map +1 -1
  241. package/dist/backend/backend/src/types/decision.types.d.ts +53 -1
  242. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  243. package/dist/backend/backend/src/types/event-bus.types.d.ts +4 -2
  244. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  245. package/dist/backend/backend/src/types/event-bus.types.js +8 -0
  246. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  247. package/dist/backend/backend/src/types/project-ticket.types.d.ts +7 -0
  248. package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -1
  249. package/dist/backend/backend/src/types/project-ticket.types.js +1 -0
  250. package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -1
  251. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +10 -1
  252. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  253. package/dist/backend/build-info.json +2 -2
  254. package/dist/cli/backend/src/constants.d.ts +216 -8
  255. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  256. package/dist/cli/backend/src/constants.js +217 -9
  257. package/dist/cli/backend/src/constants.js.map +1 -1
  258. package/dist/cli/backend/src/services/agent/handover-interrupted.d.ts +76 -0
  259. package/dist/cli/backend/src/services/agent/handover-interrupted.d.ts.map +1 -0
  260. package/dist/cli/backend/src/services/agent/handover-interrupted.js +139 -0
  261. package/dist/cli/backend/src/services/agent/handover-interrupted.js.map +1 -0
  262. package/dist/cli/backend/src/services/agent/handover-pointers.d.ts +4 -0
  263. package/dist/cli/backend/src/services/agent/handover-pointers.d.ts.map +1 -1
  264. package/dist/cli/backend/src/services/agent/handover-pointers.js +11 -4
  265. package/dist/cli/backend/src/services/agent/handover-pointers.js.map +1 -1
  266. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +7 -0
  267. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  268. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +18 -1
  269. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  270. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  271. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  272. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  273. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +8 -0
  274. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -1
  275. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +10 -0
  276. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -1
  277. package/dist/cli/backend/src/services/decisions/decision-card.d.ts +46 -13
  278. package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  279. package/dist/cli/backend/src/services/decisions/decision-card.js +100 -50
  280. package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -1
  281. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts +23 -1
  282. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts.map +1 -1
  283. package/dist/cli/backend/src/services/decisions/decision-contract.js +76 -4
  284. package/dist/cli/backend/src/services/decisions/decision-contract.js.map +1 -1
  285. package/dist/cli/backend/src/services/decisions/decision-wording.d.ts +167 -0
  286. package/dist/cli/backend/src/services/decisions/decision-wording.d.ts.map +1 -0
  287. package/dist/cli/backend/src/services/decisions/decision-wording.js +406 -0
  288. package/dist/cli/backend/src/services/decisions/decision-wording.js.map +1 -0
  289. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +30 -1
  290. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  291. package/dist/cli/backend/src/services/decisions/decision.service.js +44 -8
  292. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  293. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  294. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +1 -0
  295. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  296. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +24 -14
  297. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -1
  298. package/dist/cli/backend/src/services/harness/claude-accounts.js +35 -21
  299. package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -1
  300. package/dist/cli/backend/src/services/harness/claude-native-login.d.ts +106 -0
  301. package/dist/cli/backend/src/services/harness/claude-native-login.d.ts.map +1 -0
  302. package/dist/cli/backend/src/services/harness/claude-native-login.js +174 -0
  303. package/dist/cli/backend/src/services/harness/claude-native-login.js.map +1 -0
  304. package/dist/cli/backend/src/services/harness/claude-token-migration.service.d.ts +158 -0
  305. package/dist/cli/backend/src/services/harness/claude-token-migration.service.d.ts.map +1 -0
  306. package/dist/cli/backend/src/services/harness/claude-token-migration.service.js +283 -0
  307. package/dist/cli/backend/src/services/harness/claude-token-migration.service.js.map +1 -0
  308. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +44 -24
  309. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  310. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +96 -39
  311. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  312. package/dist/cli/backend/src/services/harness/harness-registry.js +1 -1
  313. package/dist/cli/backend/src/services/harness/harness-registry.js.map +1 -1
  314. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +2 -2
  315. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +2 -2
  316. package/dist/cli/backend/src/services/harness/harness.service.d.ts.map +1 -1
  317. package/dist/cli/backend/src/services/harness/harness.service.js +10 -1
  318. package/dist/cli/backend/src/services/harness/harness.service.js.map +1 -1
  319. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +24 -21
  320. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  321. package/dist/cli/backend/src/services/harness/login-broker.service.js +50 -64
  322. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
  323. package/dist/cli/backend/src/services/harness/login-rules.d.ts +17 -11
  324. package/dist/cli/backend/src/services/harness/login-rules.d.ts.map +1 -1
  325. package/dist/cli/backend/src/services/harness/login-rules.js +22 -25
  326. package/dist/cli/backend/src/services/harness/login-rules.js.map +1 -1
  327. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts +79 -2
  328. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  329. package/dist/cli/backend/src/services/open-items/open-item-extractor.js +194 -13
  330. package/dist/cli/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  331. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +65 -1
  332. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  333. package/dist/cli/backend/src/services/open-items/open-items.service.js +140 -7
  334. package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
  335. package/dist/cli/backend/src/services/orc/owner-completion-report.text.d.ts +86 -0
  336. package/dist/cli/backend/src/services/orc/owner-completion-report.text.d.ts.map +1 -0
  337. package/dist/cli/backend/src/services/orc/owner-completion-report.text.js +170 -0
  338. package/dist/cli/backend/src/services/orc/owner-completion-report.text.js.map +1 -0
  339. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts +76 -0
  340. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  341. package/dist/cli/backend/src/services/orc/work-item-destination.js +83 -3
  342. package/dist/cli/backend/src/services/orc/work-item-destination.js.map +1 -1
  343. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +5 -0
  344. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  345. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +30 -6
  346. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  347. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
  348. package/dist/cli/backend/src/services/project-tickets/ticket-file.js +6 -1
  349. package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -1
  350. package/dist/cli/backend/src/services/project-tickets/ticket-hold.d.ts +176 -0
  351. package/dist/cli/backend/src/services/project-tickets/ticket-hold.d.ts.map +1 -0
  352. package/dist/cli/backend/src/services/project-tickets/ticket-hold.js +301 -0
  353. package/dist/cli/backend/src/services/project-tickets/ticket-hold.js.map +1 -0
  354. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +53 -0
  355. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  356. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +162 -15
  357. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  358. package/dist/cli/backend/src/types/decision.types.d.ts +53 -1
  359. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  360. package/dist/cli/backend/src/types/event-bus.types.d.ts +4 -2
  361. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  362. package/dist/cli/backend/src/types/event-bus.types.js +8 -0
  363. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  364. package/dist/cli/backend/src/types/project-ticket.types.d.ts +7 -0
  365. package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -1
  366. package/dist/cli/backend/src/types/project-ticket.types.js +1 -0
  367. package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -1
  368. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +10 -1
  369. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  370. package/package.json +1 -1
@@ -0,0 +1,490 @@
1
+ /**
2
+ * Stall watcher (crewly#1363, crewly#1362, specs/2026-10-17-stall-watcher.md).
3
+ *
4
+ * Stalls used to be a metric only (`TRACE_CONSTANTS.STALL_MINUTES`). This
5
+ * service acts on three kinds of in-flight work, each keyed to the agent's
6
+ * own estimate when it gave one:
7
+ *
8
+ * - **Promises to the owner** (open-items commitments): at 1.5× the estimate
9
+ * past the promise with nothing posted, the agent is re-briefed once with
10
+ * the last message from someone else before the promise (the approval it
11
+ * may be re-waiting for, crewly#1361); at 3× the team lead is told once;
12
+ * when the lead has not answered in the thread within LEAD_GRACE_MS, the
13
+ * owner gets one plain line (at most one per item per day).
14
+ * - **Claimed WorkItems**: the run trace's ongoing stall (no tool calls,
15
+ * posts or worktree changes for CLAIM_STALL_MS) nudges the claimer once
16
+ * with the cause; a second window with no progress releases the claim
17
+ * (unassigned, so the route sweep hands it to the lead and then the
18
+ * orchestrator) and tells the lead. Tickets the ticket autopilot already
19
+ * watches are left to it.
20
+ * - **Background runs**: an agent saying it started something that takes a
21
+ * while ("已经开跑…预计 1 小时左右") is recorded in
22
+ * `CREWLY_HOME/in-flight-runs.json`; the agent is protected from idle stops
23
+ * and evictions until expectedBy + grace; the same ladder as promises
24
+ * applies when nothing (a file, a link, a finished / failed report) lands in
25
+ * the thread.
26
+ *
27
+ * Plus the claim check (crewly#1362): "X is doing it" told to the owner with
28
+ * no WorkItem or ticket for X within CLAIM_CHECK_WINDOW_MS gets the speaker
29
+ * one internal line; the owner hears nothing.
30
+ *
31
+ * Cost control: every line to an agent is one line and tagged; one nudge per
32
+ * agent per NUDGE_COOLDOWN_MS; the owner is never the retry loop. The first
33
+ * ARM_DELAY_MS after the first pass is a dry run (logs only).
34
+ *
35
+ * @module services/stall/stall-watcher.service
36
+ */
37
+ import { type ComponentLogger } from '../core/logger.service.js';
38
+ import type { Request } from '../../types/v2/request.types.js';
39
+ import type { WorkItem } from '../../types/v2/work-item.types.js';
40
+ import type { TaskClaim } from '../../types/v2/claim.types.js';
41
+ import { type RequestOpenItem } from '../../types/v2/open-item.types.js';
42
+ import type { StallCause } from '../trace/trace-metrics.js';
43
+ import { type ClaimableMember } from './claim-check.js';
44
+ import { type InFlightRun, type InFlightRunsStore, type StallWatcherState } from './in-flight-runs.store.js';
45
+ /** A chat-v2 message as the watcher reads it (from the thread or the live event). */
46
+ export interface StallThreadMessage {
47
+ id: string;
48
+ senderType: string;
49
+ senderId: string;
50
+ content: string;
51
+ /** Epoch ms */
52
+ createdAt: number;
53
+ /** Attachments on the post */
54
+ attachmentCount?: number;
55
+ metadata?: Record<string, unknown>;
56
+ }
57
+ /** A live chat-v2 message (the `chat_message` event). */
58
+ export interface StallIncomingMessage extends StallThreadMessage {
59
+ channelId: string;
60
+ /** Thread root; absent for a root post */
61
+ threadId?: string;
62
+ }
63
+ /** Where a conversation lives in chat-v2. */
64
+ export interface StallThreadRef {
65
+ channelId: string;
66
+ threadId: string;
67
+ }
68
+ /** An ongoing stall on a trace, as the traces service sees it. */
69
+ export interface StallSignal {
70
+ /** Length of the gap so far (ms) */
71
+ ms: number;
72
+ cause: StallCause;
73
+ detail: string;
74
+ }
75
+ /** A step of the ladder. */
76
+ export type LadderStep = 'agent' | 'lead' | 'owner';
77
+ /** The owner's language, read from the owner's own messages in the thread. */
78
+ export type OwnerLanguage = 'zh' | 'en';
79
+ /** The boot-pressure gate (same shape as the wiki maintenance one). */
80
+ export type StallBootGate = () => Promise<{
81
+ reduced: boolean;
82
+ waitedMs: number;
83
+ reason?: string;
84
+ }>;
85
+ /** Collaborators. */
86
+ export interface StallWatcherDeps {
87
+ /** Every request (tickets with open items) */
88
+ listRequests: () => Promise<Request[]>;
89
+ /** Every WorkItem */
90
+ listWorkItems: () => Promise<WorkItem[]>;
91
+ /** Active claims (running items with a holder) */
92
+ activeClaims: () => Promise<TaskClaim[]>;
93
+ /** WorkItems that belong to an in-progress project ticket (the ticket autopilot watches those) */
94
+ ticketLinkedWorkItemIds?: () => Promise<ReadonlySet<string>>;
95
+ /** Every message of a thread, oldest first */
96
+ threadMessages: (ref: StallThreadRef) => Promise<StallThreadMessage[]>;
97
+ /** The ongoing stall of the trace a claimed item (or its holder) is on, or null when it is moving */
98
+ stallOf: (ref: {
99
+ workItemId: string;
100
+ session: string;
101
+ }) => Promise<StallSignal | null>;
102
+ /** Release a stalled claim: the item goes back to the queue, unassigned */
103
+ releaseClaim: (workItemId: string, reason: string) => Promise<void>;
104
+ /** One line to an agent (wakes it); false when it could not be delivered */
105
+ deliverToAgent: (session: string, text: string) => Promise<boolean>;
106
+ /** The agent's team lead, or null */
107
+ leadOf: (session: string) => Promise<string | null>;
108
+ /** Display name ("Pia") */
109
+ displayName: (session: string) => Promise<string>;
110
+ /** One plain line to the owner (the owner-alert notifier); false when not sent */
111
+ notifyOwner: (line: string) => Promise<boolean>;
112
+ /** Stamp a ladder step on an open-items commitment, so the open-items sweep does not repeat it */
113
+ recordPromiseStep: (requestId: string, itemId: string, step: LadderStep, at: Date) => Promise<void>;
114
+ /** The speaker's teammates (for "X is doing it") */
115
+ teammatesOf: (session: string) => Promise<ClaimableMember[]>;
116
+ /** A WorkItem or ticket for `member`, created by `speaker` or the harness, within ±windowMs of `saidAt` */
117
+ assignmentExists: (speaker: string, member: string, saidAt: number, windowMs: number) => Promise<boolean>;
118
+ /** Whether a live message is a reply to the owner (claims elsewhere are not checked); absent = every agent post */
119
+ isOwnerThread?: (message: StallIncomingMessage) => Promise<boolean>;
120
+ /** Record a harness nudge on the session's trace */
121
+ trace?: (input: {
122
+ session: string;
123
+ summary: string;
124
+ workItemId?: string;
125
+ data?: Record<string, unknown>;
126
+ }) => void;
127
+ bootGate?: StallBootGate;
128
+ store: InFlightRunsStore;
129
+ now?: () => number;
130
+ env?: NodeJS.ProcessEnv;
131
+ logger?: ComponentLogger;
132
+ }
133
+ /** What one pass did. */
134
+ export interface StallTickResult {
135
+ /** Set when the pass did not run */
136
+ skipped?: 'disabled';
137
+ dryRun: boolean;
138
+ promises: {
139
+ agent: number;
140
+ lead: number;
141
+ owner: number;
142
+ };
143
+ claims: {
144
+ nudged: number;
145
+ released: number;
146
+ };
147
+ runs: {
148
+ agent: number;
149
+ lead: number;
150
+ owner: number;
151
+ cleared: number;
152
+ };
153
+ teammateClaims: {
154
+ checked: number;
155
+ nudged: number;
156
+ };
157
+ }
158
+ /**
159
+ * Clip text to one line of at most `max` characters.
160
+ *
161
+ * @param text - Text
162
+ * @param max - Max characters
163
+ * @returns Clipped text
164
+ */
165
+ export declare function clip(text: string, max: number): string;
166
+ /**
167
+ * A duration in words, in the owner's language.
168
+ *
169
+ * @param ms - Milliseconds
170
+ * @param lang - Language
171
+ * @returns "40 分钟" / "1.5 小时" / "40 minutes" / "1.5 hours"
172
+ */
173
+ export declare function durationWords(ms: number, lang?: OwnerLanguage): string;
174
+ /**
175
+ * The owner's language in a thread: Chinese when the owner's own messages
176
+ * hold more CJK characters than Latin letters, else English (CLAUDE.md:
177
+ * harness text is English; a line to the owner follows the owner).
178
+ *
179
+ * @param messages - The thread
180
+ * @returns 'zh' or 'en'
181
+ */
182
+ export declare function ownerLanguage(messages: readonly StallThreadMessage[]): OwnerLanguage;
183
+ /**
184
+ * The last message by someone other than the agent before a time: the
185
+ * approval or instruction the promise answered (crewly#1361 expectation 2).
186
+ *
187
+ * @param messages - The thread
188
+ * @param agent - The promising agent
189
+ * @param before - Epoch ms of the promise
190
+ * @returns That message, or null
191
+ */
192
+ export declare function contextBefore(messages: readonly StallThreadMessage[], agent: string, before: number): StallThreadMessage | null;
193
+ /**
194
+ * Whether a run's agent posted a deliverable or a finished / failed report in
195
+ * the thread after the run started.
196
+ *
197
+ * @param messages - The thread
198
+ * @param run - The run
199
+ * @returns True when the run is over as far as the thread shows
200
+ */
201
+ export declare function runDeliveredIn(messages: readonly StallThreadMessage[], run: Pick<InFlightRun, 'agent' | 'startedAt' | 'id'>): boolean;
202
+ /**
203
+ * The time each ladder step is due.
204
+ *
205
+ * @param madeAt - Promise / run start (ms)
206
+ * @param estimateMs - The agent's estimate
207
+ * @returns Due times (ms)
208
+ */
209
+ export declare function ladderDue(madeAt: number, estimateMs: number): {
210
+ agentDue: number;
211
+ leadDue: number;
212
+ };
213
+ /**
214
+ * The idle-stop / eviction protection reason for a session with a run in
215
+ * flight, or null.
216
+ *
217
+ * @param runs - Recorded runs
218
+ * @param session - Agent session
219
+ * @param now - Epoch ms
220
+ * @returns English reason, or null
221
+ */
222
+ export declare function runProtectionReason(runs: readonly InFlightRun[], session: string, now: number): string | null;
223
+ /**
224
+ * Whether the watcher is switched on.
225
+ *
226
+ * @param env - Environment
227
+ * @returns False when CREWLY_STALL_WATCHER=false
228
+ */
229
+ export declare function stallWatcherEnabled(env?: NodeJS.ProcessEnv): boolean;
230
+ /**
231
+ * Whether a pass is a dry run: CREWLY_STALL_WATCHER_DRY_RUN=true/false wins;
232
+ * otherwise dry until ARM_DELAY_MS after the first pass.
233
+ *
234
+ * @param armedAt - When the first pass ran (ms), or undefined
235
+ * @param now - Epoch ms
236
+ * @param env - Environment
237
+ * @returns True to only log
238
+ */
239
+ export declare function stallWatcherDryRun(armedAt: number | undefined, now: number, env?: NodeJS.ProcessEnv): boolean;
240
+ /**
241
+ * The agent-facing stall cause: the trace's label plus its detail.
242
+ *
243
+ * @param signal - Stall signal
244
+ * @returns One clause
245
+ */
246
+ export declare function causeText(signal: StallSignal): string;
247
+ /**
248
+ * The one plain line the owner gets about a promise.
249
+ *
250
+ * @param lang - Owner's language
251
+ * @param input - Names and times
252
+ * @returns The line
253
+ */
254
+ export declare function promiseOwnerLine(lang: OwnerLanguage, input: {
255
+ name: string;
256
+ what: string;
257
+ estimateMs: number;
258
+ elapsedMs: number;
259
+ leadName: string | null;
260
+ }): string;
261
+ /**
262
+ * Whether an open item is an owner decision asked in prose that has no card
263
+ * (crewly#1369): it is followed up on the promise ladder.
264
+ *
265
+ * @param item - Open item
266
+ * @returns True for an uncarded owner question with a due time
267
+ */
268
+ export declare function isUncardedOwnerQuestion(item: RequestOpenItem): boolean;
269
+ /**
270
+ * The one plain line the owner gets about a question still waiting on him.
271
+ *
272
+ * @param lang - Owner's language
273
+ * @param input - Name, question, time since
274
+ * @returns The line
275
+ */
276
+ export declare function questionOwnerLine(lang: OwnerLanguage, input: {
277
+ name: string;
278
+ what: string;
279
+ elapsedMs: number;
280
+ }): string;
281
+ /**
282
+ * The one plain line the owner gets about a background run.
283
+ *
284
+ * @param lang - Owner's language
285
+ * @param input - Names and times
286
+ * @returns The line
287
+ */
288
+ export declare function runOwnerLine(lang: OwnerLanguage, input: {
289
+ name: string;
290
+ head: string;
291
+ estimateMs: number;
292
+ elapsedMs: number;
293
+ leadName: string | null;
294
+ }): string;
295
+ /**
296
+ * The running watcher, if any.
297
+ *
298
+ * @returns The service, or null
299
+ */
300
+ export declare function getStallWatcher(): StallWatcherService | null;
301
+ /**
302
+ * Install (or clear) the process-wide watcher.
303
+ *
304
+ * @param service - The service, or null
305
+ */
306
+ export declare function setStallWatcher(service: StallWatcherService | null): void;
307
+ /**
308
+ * Watches in-flight work and climbs the agent → lead → owner ladder.
309
+ */
310
+ export declare class StallWatcherService {
311
+ private readonly deps;
312
+ private readonly logger;
313
+ private readonly now;
314
+ private readonly env;
315
+ private state;
316
+ private loaded;
317
+ private timer;
318
+ private bootTimer;
319
+ private chain;
320
+ /**
321
+ * @param deps - Collaborators
322
+ */
323
+ constructor(deps: StallWatcherDeps);
324
+ /**
325
+ * Whether the kill switch is off.
326
+ *
327
+ * @returns True when the watcher may run
328
+ */
329
+ enabled(): boolean;
330
+ /**
331
+ * Load the state file, then schedule the first pass (after the boot
332
+ * gate and BOOT_DELAY_MS) and the periodic passes. No-op when disabled.
333
+ */
334
+ start(): void;
335
+ /** Stop the passes. Safe to call more than once. */
336
+ stop(): void;
337
+ /**
338
+ * Read the state file once (later passes keep the in-memory copy).
339
+ *
340
+ * @returns The state
341
+ */
342
+ load(): Promise<StallWatcherState>;
343
+ /**
344
+ * The first pass: waits at the boot-pressure gate like the other
345
+ * maintenance passes, then ticks.
346
+ *
347
+ * @returns What the pass did
348
+ */
349
+ bootTick(): Promise<StallTickResult>;
350
+ /**
351
+ * Why an agent must not be idle-stopped or evicted right now: a run it
352
+ * announced is still expected. Synchronous, from the in-memory state.
353
+ *
354
+ * @param session - Agent session
355
+ * @returns English reason, or null
356
+ */
357
+ protectedRunReason(session: string): string | null;
358
+ /**
359
+ * The runs recorded for a session (tests and the status endpoint).
360
+ *
361
+ * @param session - Agent session
362
+ * @returns Runs, newest last
363
+ */
364
+ runsOf(session: string): InFlightRun[];
365
+ /**
366
+ * A chat-v2 message arrived. Agent posts can start a background run,
367
+ * close one (a deliverable or a finished / failed report in its thread)
368
+ * or claim that a teammate is doing something. Other posts are ignored
369
+ * here; the lead's answer is read from the thread when the ladder needs it.
370
+ *
371
+ * @param message - The message
372
+ */
373
+ onMessage(message: StallIncomingMessage): Promise<void>;
374
+ /**
375
+ * One pass over every kind of in-flight work.
376
+ *
377
+ * @returns What the pass did
378
+ */
379
+ tick(): Promise<StallTickResult>;
380
+ /**
381
+ * Run `fn` after every earlier change to the state (one writer).
382
+ *
383
+ * @param fn - Work
384
+ * @returns Its result
385
+ */
386
+ private serial;
387
+ /**
388
+ * The pass itself (under {@link serial}).
389
+ *
390
+ * @returns What it did
391
+ */
392
+ private pass;
393
+ /**
394
+ * One line to an agent, at most one per agent per NUDGE_COOLDOWN_MS.
395
+ *
396
+ * @param agent - Session
397
+ * @param text - The line
398
+ * @param now - Epoch ms
399
+ * @param dry - Dry run: log only
400
+ * @param recentNudgeAt - A nudge from elsewhere that counts for the cooldown
401
+ * @returns What happened
402
+ */
403
+ private nudgeAgent;
404
+ /**
405
+ * One line to an agent's lead.
406
+ *
407
+ * @param agent - The agent whose lead is told
408
+ * @param text - The line (built with the lead's name)
409
+ * @param dry - Dry run
410
+ * @returns The lead session when told (or would be), null when there is no lead or it failed
411
+ */
412
+ private tellLead;
413
+ /**
414
+ * Display name of a session (falls back to the session).
415
+ *
416
+ * @param session - Session
417
+ * @returns Name
418
+ */
419
+ private name;
420
+ /**
421
+ * Climb one step of the ladder for an item, when it is due.
422
+ *
423
+ * @param item - The item
424
+ * @param now - Epoch ms
425
+ * @param dry - Dry run
426
+ * @returns The step taken, or null
427
+ */
428
+ private climb;
429
+ /**
430
+ * Active commitments with a due time: the ladder keyed to the agent's
431
+ * estimate (due − made). The open-items sweep's own stamps count as steps.
432
+ *
433
+ * @param now - Epoch ms
434
+ * @param dry - Dry run
435
+ * @param result - Counters
436
+ */
437
+ private promisesPass;
438
+ /**
439
+ * The ladder item of a commitment.
440
+ *
441
+ * @param request - Its request
442
+ * @param item - The commitment
443
+ * @param madeAt - Promise time (ms)
444
+ * @param estimateMs - due − made
445
+ * @param now - Epoch ms
446
+ * @returns Ladder item
447
+ */
448
+ private promiseLadderItem;
449
+ /**
450
+ * The ladder item of an uncarded owner question: the agent is asked to
451
+ * put it on a card (or record the answer), then the lead, then the owner
452
+ * gets the question itself once.
453
+ *
454
+ * @param request - Its request
455
+ * @param item - The owner question
456
+ * @param madeAt - When it was asked (ms)
457
+ * @param estimateMs - due − asked
458
+ * @param now - Epoch ms
459
+ * @returns Ladder item
460
+ */
461
+ private questionLadderItem;
462
+ /**
463
+ * Running items with an active claim: the trace's ongoing stall nudges the
464
+ * claimer once; a second window releases the claim and tells the lead.
465
+ *
466
+ * @param now - Epoch ms
467
+ * @param dry - Dry run
468
+ * @param result - Counters
469
+ */
470
+ private claimsPass;
471
+ /**
472
+ * Runs agents announced: closed when the thread shows a deliverable or a
473
+ * report, else the same ladder as promises from the run's start.
474
+ *
475
+ * @param now - Epoch ms
476
+ * @param dry - Dry run
477
+ * @param result - Counters
478
+ */
479
+ private runsPass;
480
+ /**
481
+ * Claims past their window: a WorkItem or ticket for the teammate exists,
482
+ * or the speaker is told once. Never the owner.
483
+ *
484
+ * @param now - Epoch ms
485
+ * @param dry - Dry run
486
+ * @param result - Counters
487
+ */
488
+ private teammateClaimsPass;
489
+ }
490
+ //# sourceMappingURL=stall-watcher.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stall-watcher.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/stall/stall-watcher.service.ts"],"names":[],"mappings":"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"}