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
@@ -3464,6 +3464,35 @@ export const HANDOVER_POINTERS_CONSTANTS = {
3464
3464
  START_MARK: '<!-- handover-pointers -->',
3465
3465
  END_MARK: '<!-- /handover-pointers -->',
3466
3466
  };
3467
+ /**
3468
+ * Work a restart cut off inside an agent's conversation (crewly#1361): a
3469
+ * Claude Code transcript whose `tool_use` never received its `tool_result`
3470
+ * before the cutoff. Sub-agents (Task / Agent tool) and background or
3471
+ * long-running shell commands die with the process; the handover says so
3472
+ * instead of carrying the agent's last "still in progress" narration.
3473
+ */
3474
+ export const HANDOVER_CONSTANTS = {
3475
+ /** Heading of the section listing the interrupted work */
3476
+ INTERRUPTED_HEADING: '## Interrupted by the restart',
3477
+ /** At most this many interrupted calls are listed */
3478
+ INTERRUPTED_MAX_ITEMS: 5,
3479
+ /** Characters kept of a sub-agent's prompt / a command */
3480
+ INTERRUPTED_TEXT_MAX_CHARS: 200,
3481
+ /** Tool names that start a sub-agent inside the conversation */
3482
+ SUBAGENT_TOOLS: ['Task', 'Agent'],
3483
+ /** Tool names that run shell commands */
3484
+ SHELL_TOOLS: ['Bash'],
3485
+ /**
3486
+ * A shell command that looks long-running (a render, encode, build or a
3487
+ * command sent to the background) even without `run_in_background`
3488
+ */
3489
+ LONG_COMMAND_PATTERN: /\b(?:ffmpeg|remotion|render|encode|transcode|whisper|nohup|caffeinate|npm run build|npx tsc)\b|&\s*$|\bsleep\s+\d{3,}/i,
3490
+ /** Bullet prefixes of the section (also how the pointers header reads it back) */
3491
+ SUBAGENT_LINE_PREFIX: '- A sub-agent was running: ',
3492
+ COMMAND_LINE_PREFIX: '- A background command was running: ',
3493
+ SUBAGENT_LINE_SUFFIX: '. It did not finish and is not running now. Restart it or report that it was lost.',
3494
+ COMMAND_LINE_SUFFIX: '. It is not running now.',
3495
+ };
3467
3496
  /**
3468
3497
  * Fresh conversation per new task for Claude Code team members (never the
3469
3498
  * orchestrator): before a work item with a different root than the last one
@@ -5117,6 +5146,12 @@ export const GOOGLE_WORKSPACE_CONSTANTS = {
5117
5146
  PORTAL_CONNECT_PATH: '/portal/integrations/google',
5118
5147
  /** Metadata headers requested on Gmail search hits */
5119
5148
  GMAIL_SEARCH_HEADERS: ['From', 'To', 'Subject', 'Date'],
5149
+ /** How often watched Gmail threads are checked for replies (one history.list per tick); must stay well under the 60 s wake promise */
5150
+ GMAIL_WATCH_POLL_MS: 30_000,
5151
+ /** A thread watch is dropped this long after its last reply (or creation) so the set cannot grow forever */
5152
+ GMAIL_WATCH_EXPIRY_MS: 14 * 24 * 60 * 60 * 1000,
5153
+ /** Consecutive "account not connected" ticks before its watches are removed */
5154
+ GMAIL_WATCH_DISCONNECT_MISSES: 3,
5120
5155
  /** RFC 2045 line width for base64 message bodies */
5121
5156
  MIME_LINE_WIDTH: 76,
5122
5157
  /** Error codes shared between the token service, controller and skills */
@@ -6340,7 +6375,7 @@ export const HARNESS_CONSTANTS = {
6340
6375
  ENTER: '\r',
6341
6376
  /**
6342
6377
  * Pause between typing the user's input and pressing Enter (ms). Ink TUIs
6343
- * (Claude's `setup-token`) read one write of "code + \r" as a paste and
6378
+ * (Claude's `auth login`) read one write of "code + \r" as a paste and
6344
6379
  * swallow the Enter, leaving the code sitting at the prompt
6345
6380
  * (iriss-air.lan, 2026-10-01).
6346
6381
  */
@@ -6444,6 +6479,18 @@ export const HARNESS_CONSTANTS = {
6444
6479
  * with its own config dir (`CLAUDE_CONFIG_DIR`) and login, used as
6445
6480
  * runtime fallbacks (`claude-code@<name>`). Issue #942.
6446
6481
  */
6482
+ /**
6483
+ * Retiring the Claude sign-in tokens older Crewly versions saved
6484
+ * (claude-token-migration.service.ts).
6485
+ */
6486
+ TOKEN_MIGRATION: {
6487
+ /** Bookkeeping under CREWLY_HOME (no credential in it) */
6488
+ STATE_FILE: 'claude-token-migration.json',
6489
+ /** First run after the backend starts */
6490
+ START_DELAY_MS: 60_000,
6491
+ /** How often saved tokens are re-checked (a login done by hand is noticed) */
6492
+ RUN_INTERVAL_MS: 60 * 60_000,
6493
+ },
6447
6494
  ACCOUNTS: {
6448
6495
  /** Directory under CREWLY_HOME holding one config dir per account */
6449
6496
  DIR: 'claude-accounts',
@@ -7101,6 +7148,23 @@ export const SYSTEM_CONTROL_CONSTANTS = {
7101
7148
  RESTART_IN_PROGRESS: 'Crewly is already shutting down or restarting.',
7102
7149
  },
7103
7150
  };
7151
+ /**
7152
+ * Owner-facing wording of decision cards (crewly#1367, crewly#1369 §3): the
7153
+ * question in plain words in the owner's language, internal references only
7154
+ * in a short details line, context on merge cards.
7155
+ */
7156
+ export const DECISION_WORDING_CONSTANTS = {
7157
+ /** Max characters of one card context field (who asked, what the owner said, what changes) */
7158
+ CONTEXT_FIELD_MAX_CHARS: 200,
7159
+ /** Max characters of the context link */
7160
+ LINK_MAX_CHARS: 300,
7161
+ /** Max references shown in the card's details line */
7162
+ DETAILS_MAX_REFS: 3,
7163
+ /** Max characters of the question quoted in a one-line reminder */
7164
+ REMINDER_QUESTION_MAX_CHARS: 60,
7165
+ /** Min letters (any script) left in a question once internal references are stripped */
7166
+ QUESTION_MIN_LETTERS: 4,
7167
+ };
7104
7168
  /**
7105
7169
  * Decision cards (specs/2026-10-01-decision-cards.md): structured owner
7106
7170
  * questions posted by the responsible agent's own Slack bot as a Block Kit
@@ -7112,7 +7176,7 @@ export const DECISION_CONSTANTS = {
7112
7176
  * (buttons added/removed): open cards drawn with an older revision are
7113
7177
  * redrawn once at startup so they get the new controls (e.g. Skip, 1.20.185).
7114
7178
  */
7115
- CARD_RENDER_REV: 3,
7179
+ CARD_RENDER_REV: 4,
7116
7180
  /** Delay after startup before stale open cards are redrawn (ms) */
7117
7181
  STALE_CARD_REFRESH_DELAY_MS: 15_000,
7118
7182
  /** Gap between two card redraws, to stay under Slack's chat.update rate limit (ms) */
@@ -7176,7 +7240,7 @@ export const DECISION_CONSTANTS = {
7176
7240
  REACTION_SKIP: ['no_entry_sign', 'black_right_pointing_double_triangle_with_vertical_bar', 'next_track_button', 'track_next'],
7177
7241
  REACTION_REMIND: ['alarm_clock', 'clock9', 'hourglass'],
7178
7242
  /** Option labels that read as "no" (lower-cased, matched on the whole label or its first word) */
7179
- NO_WORDS: ['no', 'nope', "don't", 'dont', 'not now', 'skip', 'cancel', 'stop', 'reject', 'decline', 'hold', '不', '不行', '不要', '不用', '不可以', '别', '别点', '取消', '算了', '拒绝'],
7243
+ NO_WORDS: ['no', 'nope', "don't", 'dont', 'not now', 'skip', 'cancel', 'stop', 'reject', 'decline', 'hold', '不', '不行', '不要', '不用', '不可以', '别', '别点', '取消', '算了', '拒绝', '先不'],
7180
7244
  /** Free-text replies that accept the default (or first) option */
7181
7245
  YES_WORDS: ['yes', 'y', 'ok', 'okay', 'sure', 'go', 'go ahead', 'do it', 'approved', 'approve', 'lgtm', '好', '好的', '可以', '行', '同意', '批准', '没问题', '👍', '✅'],
7182
7246
  /** Free-text replies that skip a card (checked before NO_WORDS) */
@@ -7244,6 +7308,18 @@ export const OPEN_ITEMS_CONSTANTS = {
7244
7308
  DEFAULT_DUE_HOUR_LOCAL: 12,
7245
7309
  /** A commitment with no time is due this long after it was made (ms) */
7246
7310
  DEFAULT_DUE_MS: 24 * 60 * 60 * 1000,
7311
+ /**
7312
+ * A commitment with no time made live in the owner's conversation (the
7313
+ * owner is waiting for the reply) is due this long after it was made (ms).
7314
+ * Backfilled and gate-opened promises keep DEFAULT_DUE_MS (crewly#1360).
7315
+ */
7316
+ CHAT_PROMISE_DEFAULT_DUE_MS: 4 * 60 * 60 * 1000,
7317
+ /**
7318
+ * An estimate the same agent states in the same thread this long after an
7319
+ * undated promise ("预计一小时左右" a minute after "改完发你") dates that
7320
+ * promise (ms) (crewly#1360)
7321
+ */
7322
+ ESTIMATE_WINDOW_MS: 10 * 60 * 1000,
7247
7323
  /** The same words by the same agent this close together are one item (a reply recorded twice) (ms) */
7248
7324
  DUPLICATE_WINDOW_MS: 10 * 60 * 1000,
7249
7325
  /** The same agent's two promises this close together, about the same deliverable, are one (the newer stands) (ms) */
@@ -7254,6 +7330,13 @@ export const OPEN_ITEMS_CONSTANTS = {
7254
7330
  TEXT_MAX_CHARS: 300,
7255
7331
  /** Max characters of a question (the card's one line) */
7256
7332
  QUESTION_MAX_CHARS: 280,
7333
+ /**
7334
+ * A yes/no decision asked of the owner in prose ("should I close PR #12?",
7335
+ * "要不要合并?") is on file as an owner question due this long after it
7336
+ * was asked; with no answer by then the stall watcher follows up (ms)
7337
+ * (crewly#1369 gap 2).
7338
+ */
7339
+ OWNER_QUESTION_DUE_MS: 24 * 60 * 60 * 1000,
7257
7340
  /** Child WorkItems created this long before the promise still count as what it waits on (ms) */
7258
7341
  CHILD_LOOKBACK_MS: 30 * 60 * 1000,
7259
7342
  /** ...and this long after it — the agent promises, then delegates (ms). Later work is a new topic. */
@@ -7355,6 +7438,15 @@ export const WORK_ITEM_DESTINATION_CONSTANTS = {
7355
7438
  METADATA_KEY: 'origin',
7356
7439
  /** An owner turn origin newer than this (ms) still counts as the current work when no work item is running */
7357
7440
  OWNER_ORIGIN_FRESH_MS: 2 * 60 * 60 * 1000,
7441
+ /**
7442
+ * An owner origin whose request is older than this (ms) is never inherited by
7443
+ * new work, explicit or not (crewly#1357: a delegation carried an owner DM
7444
+ * from nine days earlier). A verbatim `metadata.origin` in the add body is
7445
+ * not an inheritance and is kept as given.
7446
+ */
7447
+ ORIGIN_INHERIT_MAX_AGE_MS: 2 * 60 * 60 * 1000,
7448
+ /** Tag that opens the message a delegating agent gets with a result for work it handed out */
7449
+ AGENT_RESULT_TAG: '[RESULT]',
7358
7450
  /** Max characters of the topic line of a new top-level post */
7359
7451
  TOPIC_MAX_CHARS: 120,
7360
7452
  /** The one line every prompt carries about where to answer */
@@ -7370,8 +7462,11 @@ export const OWNER_COMPLETION_REPORT_CONSTANTS = {
7370
7462
  TICK_MS: 60_000,
7371
7463
  /** A chain must stay finished this long before the report is asked for — the lead may still be handing out the next step (ms) */
7372
7464
  SETTLE_MS: 5 * 60_000,
7373
- /** Wait for the report after asking (and again after the one reminder) (ms) */
7374
- REPORT_WAIT_MS: 20 * 60_000,
7465
+ /**
7466
+ * After the one nudge, the agent has this long to post its own report before
7467
+ * the harness posts one line for it (ms) (crewly#1357)
7468
+ */
7469
+ NUDGE_GRACE_MS: 30 * 60_000,
7375
7470
  /** Chains whose first item is older than this are never reported (ms) */
7376
7471
  MAX_CHAIN_AGE_MS: 14 * 24 * 60 * 60_000,
7377
7472
  /** Finished chain records are forgotten after this long (ms) */
@@ -7382,10 +7477,14 @@ export const OWNER_COMPLETION_REPORT_CONSTANTS = {
7382
7477
  MAX_TITLES: 5,
7383
7478
  /** Max characters of one title in a message */
7384
7479
  TITLE_MAX_CHARS: 90,
7385
- /** Max evidence lines in the fallback post */
7386
- MAX_EVIDENCE_LINES: 6,
7387
- /** Max characters of one evidence line */
7388
- EVIDENCE_LINE_MAX_CHARS: 200,
7480
+ /** Max characters of one deliverable named in the fallback line */
7481
+ DELIVERABLE_MAX_CHARS: 90,
7482
+ /** Share of CJK characters in the owner's text above which the fallback line is written in Chinese */
7483
+ OWNER_LANGUAGE_CJK_MIN_RATIO: 0.2,
7484
+ /** How far back the owner's recent messages are read to pick the fallback line's language (ms) */
7485
+ OWNER_LANGUAGE_LOOKBACK_MS: 7 * 24 * 60 * 60_000,
7486
+ /** How many recent owner messages are read for that */
7487
+ OWNER_LANGUAGE_SAMPLE: 30,
7389
7488
  /** An app comment / relayed owner request stays the agent's current request this long (ms) */
7390
7489
  CONTEXT_FRESH_MS: 2 * 60 * 60 * 1000,
7391
7490
  /** Max sessions the owner-request context registry remembers */
@@ -7399,6 +7498,8 @@ export const OWNER_COMPLETION_REPORT_CONSTANTS = {
7399
7498
  export const TL_DELEGATION_CONSTANTS = {
7400
7499
  /** WorkItem.metadata / add-body field: the owner's Slack thread key a delegation answers */
7401
7500
  OWNER_THREAD_FIELD: 'ownerThread',
7501
+ /** WorkItem.metadata / add-body field: the owner's chat conversation a delegation answers (crewly#1357) */
7502
+ OWNER_CONVERSATION_FIELD: 'ownerConversation',
7402
7503
  /** A done item still lets its agent post in the owner's thread this long (ms) */
7403
7504
  DONE_THREAD_GRACE_MS: 60 * 60 * 1000,
7404
7505
  /** Claude Code tools that count as hands-on file edits */
@@ -7684,6 +7785,94 @@ export const TRACE_CONSTANTS = {
7684
7785
  /** Most ticket labels kept in a trace's tags (specs/2026-10-03-autopilot-experiments.md) */
7685
7786
  MAX_TAG_LABELS: 20,
7686
7787
  };
7788
+ /**
7789
+ * Stall watcher (crewly#1363, crewly#1362, specs/2026-10-17-stall-watcher.md):
7790
+ * acts on in-flight work that stopped moving — promises to the owner,
7791
+ * claimed WorkItems, and background runs an agent said it started — with
7792
+ * one ladder: the agent once, then its lead once, then one plain line to the
7793
+ * owner. The owner is never the retry loop.
7794
+ */
7795
+ export const STALL_WATCHER_CONSTANTS = {
7796
+ /** `=false` switches the watcher off entirely */
7797
+ ENV_KILL_SWITCH: 'CREWLY_STALL_WATCHER',
7798
+ /** `=true` / `=false` forces dry run on / off (default: dry run until armed for ARM_DELAY_MS) */
7799
+ ENV_DRY_RUN: 'CREWLY_STALL_WATCHER_DRY_RUN',
7800
+ /** State file under CREWLY_HOME: in-flight runs, ladder stamps, pending claim checks, the armed time */
7801
+ STATE_FILE: 'in-flight-runs.json',
7802
+ /** State file format version */
7803
+ STATE_VERSION: 1,
7804
+ /** How often the watcher looks (ms) */
7805
+ INTERVAL_MS: 5 * 60 * 1000,
7806
+ /** First pass this long after boot, after the boot-pressure gate (ms) */
7807
+ BOOT_DELAY_MS: 3 * 60 * 1000,
7808
+ /**
7809
+ * Like the janitor's retention deletes: the first pass records when it ran
7810
+ * and only logs; the watcher sends nothing until this long after that (ms).
7811
+ */
7812
+ ARM_DELAY_MS: 24 * 60 * 60 * 1000,
7813
+ /** The agent is re-briefed at this multiple of its own estimate past the promise / run start */
7814
+ AGENT_STEP_MULTIPLIER: 1.5,
7815
+ /** ... but never sooner than this after the promise (ms) */
7816
+ MIN_AGENT_STEP_MS: 20 * 60 * 1000,
7817
+ /** The lead is told at this multiple of the estimate */
7818
+ LEAD_STEP_MULTIPLIER: 3,
7819
+ /** The owner hears one line when the lead has not answered in the thread this long after being told (ms) */
7820
+ LEAD_GRACE_MS: 30 * 60 * 1000,
7821
+ /** At most one watcher nudge per agent per this long (ms) */
7822
+ NUDGE_COOLDOWN_MS: 30 * 60 * 1000,
7823
+ /** At most one owner line per stalled item per this long (ms) */
7824
+ OWNER_LINE_INTERVAL_MS: 24 * 60 * 60 * 1000,
7825
+ /** A background run with no duration in the text is expected back after this long (ms) */
7826
+ RUN_DEFAULT_ESTIMATE_MS: 60 * 60 * 1000,
7827
+ /** An agent with a run in flight is not idle-stopped or evicted until expectedBy + this (ms) */
7828
+ RUN_PROTECTION_GRACE_MS: 30 * 60 * 1000,
7829
+ /** A run record older than this is dropped whatever happened (ms) */
7830
+ RUN_MAX_AGE_MS: 24 * 60 * 60 * 1000,
7831
+ /** Ladder stamps of an item not seen for this long are forgotten (ms) */
7832
+ LADDER_TTL_MS: 7 * 24 * 60 * 60 * 1000,
7833
+ /** Most in-flight runs kept */
7834
+ MAX_RUNS: 200,
7835
+ /** Characters of a run's sentence kept in its record and in nudges */
7836
+ RUN_HEAD_MAX_CHARS: 160,
7837
+ /** Characters of the context message quoted in a promise re-brief */
7838
+ CONTEXT_MAX_CHARS: 300,
7839
+ /** Characters of a promise / title quoted in a nudge or an owner line */
7840
+ QUOTE_MAX_CHARS: 120,
7841
+ /**
7842
+ * A claimed WorkItem whose trace shows no progress (no tool calls, posts
7843
+ * or worktree changes) for this long is stalled; the same again after the
7844
+ * nudge releases the claim (ms). Shares the autonomy-metrics threshold.
7845
+ */
7846
+ CLAIM_STALL_MS: 30 * 60 * 1000,
7847
+ /** The claim-check window around "X is doing it": a WorkItem / ticket for X created this long before or after (ms) (crewly#1362) */
7848
+ CLAIM_CHECK_WINDOW_MS: 10 * 60 * 1000,
7849
+ /** Most pending claim checks kept */
7850
+ MAX_PENDING_CLAIMS: 200,
7851
+ /** Opens every watcher line to an agent */
7852
+ NUDGE_TAG: '[STALL]',
7853
+ /** Opens a claim-check line to an agent */
7854
+ CLAIM_CHECK_TAG: '[CLAIM-CHECK]',
7855
+ /** Title of the owner's Slack notice */
7856
+ OWNER_ALERT_TITLE: 'Stalled work',
7857
+ /**
7858
+ * An agent saying it started something that runs on its own (a render, a
7859
+ * background process, a sub-agent). Registered only together with a
7860
+ * duration the open-items parser understands ("预计 1 小时左右", "about 40 min").
7861
+ */
7862
+ BACKGROUND_RUN_PATTERN: /开跑|已经在跑|在跑了|跑起来了|在渲染|渲染中|正在渲染|正在生成|生成中|子任务在做|子\s*agent\s*在(?:做|跑)|后台(?:在)?跑|后台(?:在)?(?:做|生成|渲染)|已经启动|启动了(?:渲染|生成|任务|流程)|\bkicked off\b|\bstarted (?:the|a|another) (?:run|render|job|batch|build|export|background|sub-?agent)\b|\bis rendering\b|\brendering now\b|\brunning in the background\b|\brunning now\b|\blaunched (?:a|the|another) (?:run|render|job|batch|build|sub-?agent)\b|\bspun up (?:a|the) (?:sub-?agent|run|job)\b/iu,
7863
+ /** A later post by the same agent in the thread that reports the run finished or failed */
7864
+ RUN_FINISHED_PATTERN: /跑完|渲染完|生成完|做好了|做完了|完成了|搞定|出来了|好了[,,。!!]|失败|挂了|报错|出错|中断|没跑完|跑崩|\bdone\b|\bfinished\b|\bcompleted\b|\bfailed\b|\bcrashed\b|\berrored\b|\baborted\b|\bready\b|\bhere (?:it|they) (?:is|are)\b|\battached\b/iu,
7865
+ /** A link or a file in a post counts as a deliverable */
7866
+ DELIVERABLE_PATTERN: /https?:\/\/\S+|\S+\.(?:mp4|mov|webm|gif|png|jpe?g|pdf|zip|md|csv|xlsx?|pptx?|docx?|wav|mp3)\b/iu,
7867
+ /** Chinese verbs that make "<Name> …" a claim that the named teammate is doing the work (crewly#1362) */
7868
+ CLAIM_ZH_AFTER_NAME: '(?:已经)?(?:在做|在弄|在处理|在搞|在跟|在推进|在准备|在出|在写|在剪|在录|在改|负责|去做|来做|接了|接手|正在)',
7869
+ /** Chinese verbs that make "… <Name>" a hand-off to the named teammate */
7870
+ CLAIM_ZH_BEFORE_NAME: '(?:交给|让|叫|由|派给|丢给|转给|安排)',
7871
+ /** English verbs after the name: "Pia is (already) doing / on / making / working on it" */
7872
+ CLAIM_EN_AFTER_NAME: "(?:is|'s|has been|will be|was|are|'re)\\s+(?:already\\s+)?(?:doing|on|making|working on|handling|building|taking|taking care of|writing|producing|rendering|editing|cutting|preparing|drafting|looking into|picking (?:it|this) up)",
7873
+ /** English hand-off before the name: "handed it to Pia", "assigned this to Pia" */
7874
+ CLAIM_EN_BEFORE_NAME: '(?:handed|gave|passed|assigned|delegated|sent|routed)\\s+(?:it|this|that|the\\s+\\w+(?:\\s+\\w+)?)\\s+(?:over\\s+)?to',
7875
+ };
7687
7876
  /**
7688
7877
  * Token usage: the unit, the stats endpoint, and the Codex / Antigravity
7689
7878
  * ledgers (specs/2026-10-02-spend-cap.md).
@@ -9058,4 +9247,23 @@ export const BROWSER_PRIORITY_CONSTANTS = {
9058
9247
  ].join('\n');
9059
9248
  },
9060
9249
  };
9250
+ /**
9251
+ * Ticket holds (crewly#1369 gap 1): a ticket the owner put on hold ("do not
9252
+ * merge PR #1138") blocks follow-up work on the same PR / branch / worktree.
9253
+ * Only closing the PR and removing the worktree stays allowed.
9254
+ */
9255
+ export const TICKET_HOLD_CONSTANTS = {
9256
+ /** Labels that put a ticket on hold */
9257
+ LABELS: ['hold', 'on-hold', 'on_hold', 'held'],
9258
+ /** Prefix of the Log line written when a hold is set */
9259
+ LOG_PREFIX: 'HOLD:',
9260
+ /** Log line written when a hold is lifted */
9261
+ LIFT_LOG_LINE: 'hold lifted',
9262
+ /** Prefix of the hold reason of a ticket held because it references a held ticket */
9263
+ LINKED_PREFIX: 'held by',
9264
+ /** What may still be done about held work */
9265
+ ALLOWED_ACTIONS: 'close the PR and remove the worktree',
9266
+ /** Max characters of a hold reason quoted in a message */
9267
+ REASON_MAX_CHARS: 240,
9268
+ };
9061
9269
  //# sourceMappingURL=constants.js.map