crewly 1.20.195 → 1.20.196

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 (584) hide show
  1. package/config/constants.ts +68 -0
  2. package/config/hooks/agent-status/report.sh +31 -12
  3. package/config/hooks/subagent-guard/subagent.sh +25 -1
  4. package/config/roles/orchestrator/fragments/lifecycle.md +1 -1
  5. package/config/roles/orchestrator/prompt.md +3 -3
  6. package/config/skills/_common/lib.sh +28 -5
  7. package/config/skills/_common/lib.test.sh +32 -1
  8. package/config/skills/agent/core/create-intent-tasks/execute.sh +2 -0
  9. package/config/skills/agent/core/decompose-intent/execute.sh +2 -0
  10. package/config/skills/agent/core/experiment-card/SKILL.md +29 -1
  11. package/config/skills/agent/core/experiment-card/execute.sh +35 -1
  12. package/config/skills/agent/core/experiment-card/execute.test.sh +11 -0
  13. package/config/skills/agent/core/project-tickets/SKILL.md +35 -2
  14. package/config/skills/agent/core/project-tickets/execute.sh +59 -6
  15. package/config/skills/agent/core/project-tickets/execute.test.sh +24 -0
  16. package/config/skills/agent/core/send-message/execute.sh +16 -0
  17. package/config/skills/agent/core/send-message/execute.test.sh +10 -0
  18. package/config/skills/agent/core/trace-read/SKILL.md +117 -0
  19. package/config/skills/agent/core/trace-read/execute.sh +116 -0
  20. package/config/skills/agent/core/update-intent-task/execute.sh +2 -0
  21. package/config/skills/agent/marketing/submit-for-approval/execute.sh +3 -2
  22. package/config/skills/orchestrator/decompose-mission/execute.sh +2 -0
  23. package/config/skills/orchestrator/decompose-okr/execute.sh +1 -0
  24. package/config/skills/orchestrator/design-team/execute.sh +2 -0
  25. package/config/skills/orchestrator/measure-kr/execute.sh +2 -0
  26. package/config/skills/orchestrator/review-mission/execute.sh +2 -0
  27. package/config/skills/orchestrator/send-message/execute.sh +10 -2
  28. package/config/skills/orchestrator/send-message/execute.test.sh +9 -0
  29. package/config/skills/team-leader/design-checklist/execute.sh +2 -0
  30. package/dist/backend/backend/src/constants.d.ts +223 -5
  31. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  32. package/dist/backend/backend/src/constants.js +206 -6
  33. package/dist/backend/backend/src/constants.js.map +1 -1
  34. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +9 -3
  35. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +38 -5
  37. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +4 -9
  39. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +6 -14
  41. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
  42. package/dist/backend/backend/src/controllers/auth/owner-session.controller.d.ts +64 -0
  43. package/dist/backend/backend/src/controllers/auth/owner-session.controller.d.ts.map +1 -0
  44. package/dist/backend/backend/src/controllers/auth/owner-session.controller.js +164 -0
  45. package/dist/backend/backend/src/controllers/auth/owner-session.controller.js.map +1 -0
  46. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  47. package/dist/backend/backend/src/controllers/browser/browser.routes.js +18 -5
  48. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  49. package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
  50. package/dist/backend/backend/src/controllers/canva/canva.routes.js +8 -1
  51. package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
  52. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  53. package/dist/backend/backend/src/controllers/chat/chat.controller.js +10 -1
  54. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  55. package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.d.ts.map +1 -1
  56. package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js +3 -5
  57. package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js.map +1 -1
  58. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -2
  59. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
  60. package/dist/backend/backend/src/controllers/connector/connector.controller.js +17 -2
  61. package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
  62. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -1
  63. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +2 -3
  64. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -1
  65. package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts +4 -2
  66. package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts.map +1 -1
  67. package/dist/backend/backend/src/controllers/decisions/decisions.controller.js +31 -20
  68. package/dist/backend/backend/src/controllers/decisions/decisions.controller.js.map +1 -1
  69. package/dist/backend/backend/src/controllers/desktop/desktop.controller.d.ts.map +1 -1
  70. package/dist/backend/backend/src/controllers/desktop/desktop.controller.js +16 -0
  71. package/dist/backend/backend/src/controllers/desktop/desktop.controller.js.map +1 -1
  72. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  73. package/dist/backend/backend/src/controllers/google/google.controller.js +9 -5
  74. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  75. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  76. package/dist/backend/backend/src/controllers/google/google.routes.js +16 -3
  77. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  78. package/dist/backend/backend/src/controllers/harness/harness.controller.d.ts.map +1 -1
  79. package/dist/backend/backend/src/controllers/harness/harness.controller.js +3 -5
  80. package/dist/backend/backend/src/controllers/harness/harness.controller.js.map +1 -1
  81. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
  82. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +8 -1
  83. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
  84. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +1 -1
  85. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
  86. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +3 -5
  88. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -1
  90. package/dist/backend/backend/src/controllers/people/people.routes.js +3 -5
  91. package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -1
  92. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +35 -2
  93. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
  94. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +138 -4
  95. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
  96. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +2 -0
  97. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -1
  98. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +7 -1
  99. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -1
  100. package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts.map +1 -1
  101. package/dist/backend/backend/src/controllers/request/open-items.controller.js +2 -4
  102. package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
  103. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +1 -1
  104. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -1
  105. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  106. package/dist/backend/backend/src/controllers/slack/slack.controller.js +9 -0
  107. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  108. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
  109. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +11 -0
  110. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
  111. package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts +6 -4
  112. package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts.map +1 -1
  113. package/dist/backend/backend/src/controllers/system/system-control.controller.js +20 -13
  114. package/dist/backend/backend/src/controllers/system/system-control.controller.js.map +1 -1
  115. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  116. package/dist/backend/backend/src/controllers/team/team.controller.js +14 -7
  117. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  118. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  119. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +5 -7
  120. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  121. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +30 -4
  122. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -1
  123. package/dist/backend/backend/src/controllers/trace/trace.controller.js +278 -10
  124. package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -1
  125. package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.d.ts +3 -3
  126. package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.d.ts.map +1 -1
  127. package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.js +4 -2
  128. package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.js.map +1 -1
  129. package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.d.ts.map +1 -1
  130. package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js +10 -2
  131. package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js.map +1 -1
  132. package/dist/backend/backend/src/index.d.ts +34 -0
  133. package/dist/backend/backend/src/index.d.ts.map +1 -1
  134. package/dist/backend/backend/src/index.js +313 -42
  135. package/dist/backend/backend/src/index.js.map +1 -1
  136. package/dist/backend/backend/src/middleware/agent-origin-correction.d.ts +31 -0
  137. package/dist/backend/backend/src/middleware/agent-origin-correction.d.ts.map +1 -0
  138. package/dist/backend/backend/src/middleware/agent-origin-correction.js +31 -0
  139. package/dist/backend/backend/src/middleware/agent-origin-correction.js.map +1 -0
  140. package/dist/backend/backend/src/middleware/agent-origin.middleware.d.ts +6 -0
  141. package/dist/backend/backend/src/middleware/agent-origin.middleware.d.ts.map +1 -1
  142. package/dist/backend/backend/src/middleware/agent-origin.middleware.js +4 -1
  143. package/dist/backend/backend/src/middleware/agent-origin.middleware.js.map +1 -1
  144. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +20 -17
  145. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
  146. package/dist/backend/backend/src/middleware/api-token.middleware.js +27 -37
  147. package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
  148. package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts +213 -0
  149. package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts.map +1 -0
  150. package/dist/backend/backend/src/middleware/caller-identity.middleware.js +481 -0
  151. package/dist/backend/backend/src/middleware/caller-identity.middleware.js.map +1 -0
  152. package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts +67 -0
  153. package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts.map +1 -0
  154. package/dist/backend/backend/src/middleware/caller-identity.testing.js +108 -0
  155. package/dist/backend/backend/src/middleware/caller-identity.testing.js.map +1 -0
  156. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/agent/agent-registration.service.js +12 -2
  158. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  159. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +7 -5
  160. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +19 -10
  162. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  163. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  164. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +10 -1
  165. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  166. package/dist/backend/backend/src/services/agent/restore-filter.d.ts +5 -2
  167. package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
  168. package/dist/backend/backend/src/services/agent/restore-filter.js +5 -2
  169. package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
  170. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +4 -0
  172. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  173. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +29 -0
  174. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  175. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +77 -1
  176. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  177. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  179. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  180. package/dist/backend/backend/src/services/chat/chat.service.d.ts +99 -2
  181. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/chat/chat.service.js +265 -40
  183. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  184. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -5
  185. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +34 -4
  187. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +18 -11
  189. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  190. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +19 -25
  191. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  192. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -4
  193. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +8 -4
  195. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  196. package/dist/backend/backend/src/services/chat-v2/types.d.ts +0 -1
  197. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  198. package/dist/backend/backend/src/services/chat-v2/types.js +0 -1
  199. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  200. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  201. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -0
  202. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  203. package/dist/backend/backend/src/services/core/api-token.service.d.ts +28 -0
  204. package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/core/api-token.service.js +46 -0
  206. package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -1
  207. package/dist/backend/backend/src/services/core/dashboard-build.d.ts +49 -0
  208. package/dist/backend/backend/src/services/core/dashboard-build.d.ts.map +1 -0
  209. package/dist/backend/backend/src/services/core/dashboard-build.js +68 -0
  210. package/dist/backend/backend/src/services/core/dashboard-build.js.map +1 -0
  211. package/dist/backend/backend/src/services/core/owner-auth.service.d.ts +127 -0
  212. package/dist/backend/backend/src/services/core/owner-auth.service.d.ts.map +1 -0
  213. package/dist/backend/backend/src/services/core/owner-auth.service.js +205 -0
  214. package/dist/backend/backend/src/services/core/owner-auth.service.js.map +1 -0
  215. package/dist/backend/backend/src/services/core/peer-process.service.d.ts +168 -0
  216. package/dist/backend/backend/src/services/core/peer-process.service.d.ts.map +1 -0
  217. package/dist/backend/backend/src/services/core/peer-process.service.js +352 -0
  218. package/dist/backend/backend/src/services/core/peer-process.service.js.map +1 -0
  219. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +97 -1
  220. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -1
  221. package/dist/backend/backend/src/services/experiments/experiment.service.js +372 -1
  222. package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -1
  223. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -1
  224. package/dist/backend/backend/src/services/experiments/experiment.wiring.js +19 -2
  225. package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -1
  226. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
  227. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +2 -1
  228. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
  229. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +0 -8
  230. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  231. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +0 -18
  232. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  233. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +19 -0
  234. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  235. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +41 -5
  236. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  237. package/dist/backend/backend/src/services/monitoring/agent-turn-state.d.ts +184 -0
  238. package/dist/backend/backend/src/services/monitoring/agent-turn-state.d.ts.map +1 -0
  239. package/dist/backend/backend/src/services/monitoring/agent-turn-state.js +391 -0
  240. package/dist/backend/backend/src/services/monitoring/agent-turn-state.js.map +1 -0
  241. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +35 -1
  242. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
  243. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +138 -2
  244. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
  245. package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.d.ts +73 -0
  246. package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.d.ts.map +1 -0
  247. package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.js +258 -0
  248. package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.js.map +1 -0
  249. package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.d.ts +82 -0
  250. package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.d.ts.map +1 -0
  251. package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.js +141 -0
  252. package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.js.map +1 -0
  253. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts +51 -1
  254. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
  255. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +118 -2
  256. package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
  257. package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.d.ts +103 -0
  258. package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.d.ts.map +1 -0
  259. package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.js +86 -0
  260. package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.js.map +1 -0
  261. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +57 -0
  262. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  263. package/dist/backend/backend/src/services/open-items/open-items.service.js +100 -4
  264. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  265. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
  266. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +13 -0
  267. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
  268. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +36 -0
  269. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  270. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +42 -3
  271. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  272. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.d.ts.map +1 -1
  273. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js +2 -1
  274. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js.map +1 -1
  275. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +3 -0
  277. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
  278. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.d.ts +156 -0
  279. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.d.ts.map +1 -0
  280. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.js +308 -0
  281. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.js.map +1 -0
  282. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts +212 -0
  283. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts.map +1 -0
  284. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js +515 -0
  285. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js.map +1 -0
  286. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.d.ts +186 -0
  287. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.d.ts.map +1 -0
  288. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.js +341 -0
  289. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.js.map +1 -0
  290. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +309 -0
  291. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +726 -1
  293. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +34 -3
  295. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +57 -2
  297. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -1
  298. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +61 -3
  299. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -1
  300. package/dist/backend/backend/src/services/restart/interrupted-turns.js +106 -9
  301. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -1
  302. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +22 -0
  303. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -1
  304. package/dist/backend/backend/src/services/restart/restart-drain.service.js +37 -5
  305. package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -1
  306. package/dist/backend/backend/src/services/restart/supervisor-stop-budget.d.ts +62 -0
  307. package/dist/backend/backend/src/services/restart/supervisor-stop-budget.d.ts.map +1 -0
  308. package/dist/backend/backend/src/services/restart/supervisor-stop-budget.js +126 -0
  309. package/dist/backend/backend/src/services/restart/supervisor-stop-budget.js.map +1 -0
  310. package/dist/backend/backend/src/services/restart/turn-probe.d.ts +17 -2
  311. package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -1
  312. package/dist/backend/backend/src/services/restart/turn-probe.js +29 -4
  313. package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -1
  314. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
  315. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +4 -0
  316. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
  317. package/dist/backend/backend/src/services/slack/slack-auto-working.service.d.ts +29 -0
  318. package/dist/backend/backend/src/services/slack/slack-auto-working.service.d.ts.map +1 -1
  319. package/dist/backend/backend/src/services/slack/slack-auto-working.service.js +66 -3
  320. package/dist/backend/backend/src/services/slack/slack-auto-working.service.js.map +1 -1
  321. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +79 -15
  322. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  323. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +200 -41
  324. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  325. package/dist/backend/backend/src/services/slack/slack.service.d.ts +18 -0
  326. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  327. package/dist/backend/backend/src/services/slack/slack.service.js +32 -0
  328. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  329. package/dist/backend/backend/src/services/trace/trace-analysis.service.d.ts +99 -0
  330. package/dist/backend/backend/src/services/trace/trace-analysis.service.d.ts.map +1 -0
  331. package/dist/backend/backend/src/services/trace/trace-analysis.service.js +148 -0
  332. package/dist/backend/backend/src/services/trace/trace-analysis.service.js.map +1 -0
  333. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +17 -0
  334. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
  335. package/dist/backend/backend/src/services/trace/trace-context.service.js +58 -1
  336. package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -1
  337. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +4 -0
  338. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -1
  339. package/dist/backend/backend/src/services/trace/trace-http.middleware.js +32 -2
  340. package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -1
  341. package/dist/backend/backend/src/services/trace/trace-metrics.d.ts +262 -0
  342. package/dist/backend/backend/src/services/trace/trace-metrics.d.ts.map +1 -0
  343. package/dist/backend/backend/src/services/trace/trace-metrics.js +810 -0
  344. package/dist/backend/backend/src/services/trace/trace-metrics.js.map +1 -0
  345. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +48 -0
  346. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -1
  347. package/dist/backend/backend/src/services/trace/trace-recorder.js +121 -1
  348. package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -1
  349. package/dist/backend/backend/src/services/trace/trace-store.d.ts +40 -1
  350. package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -1
  351. package/dist/backend/backend/src/services/trace/trace-store.js +126 -14
  352. package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -1
  353. package/dist/backend/backend/src/services/trace/trace-summary.d.ts +77 -0
  354. package/dist/backend/backend/src/services/trace/trace-summary.d.ts.map +1 -0
  355. package/dist/backend/backend/src/services/trace/trace-summary.js +239 -0
  356. package/dist/backend/backend/src/services/trace/trace-summary.js.map +1 -0
  357. package/dist/backend/backend/src/services/trace/trace-timeline.d.ts +74 -0
  358. package/dist/backend/backend/src/services/trace/trace-timeline.d.ts.map +1 -0
  359. package/dist/backend/backend/src/services/trace/trace-timeline.js +162 -0
  360. package/dist/backend/backend/src/services/trace/trace-timeline.js.map +1 -0
  361. package/dist/backend/backend/src/services/trace/trace.types.d.ts +22 -3
  362. package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -1
  363. package/dist/backend/backend/src/services/trace/trace.types.js +20 -1
  364. package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -1
  365. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.d.ts +80 -0
  366. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.d.ts.map +1 -0
  367. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.js +184 -0
  368. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.js.map +1 -0
  369. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +7 -0
  370. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -1
  371. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +16 -0
  372. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -1
  373. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +16 -0
  374. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -1
  375. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -1
  376. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  377. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +2 -1
  378. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  379. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +8 -0
  380. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  381. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +24 -2
  382. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  383. package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.d.ts +4 -3
  384. package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.d.ts.map +1 -1
  385. package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.js +3 -2
  386. package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.js.map +1 -1
  387. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  388. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  389. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  390. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  391. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +3 -0
  392. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  393. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  394. package/dist/backend/backend/src/services/workflow/scheduler.service.js +3 -0
  395. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  396. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -1
  397. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +2 -1
  398. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -1
  399. package/dist/backend/backend/src/types/decision.types.d.ts +3 -1
  400. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  401. package/dist/backend/backend/src/types/experiment.types.d.ts +57 -0
  402. package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -1
  403. package/dist/backend/backend/src/types/experiment.types.js.map +1 -1
  404. package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts +9 -0
  405. package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
  406. package/dist/backend/backend/src/types/ticket-autopilot.types.js +14 -0
  407. package/dist/backend/backend/src/types/ticket-autopilot.types.js.map +1 -1
  408. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +4 -0
  409. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  410. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +1 -1
  411. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  412. package/dist/backend/backend/src/types/v2/work-item.types.js +1 -0
  413. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  414. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +44 -37
  415. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  416. package/dist/backend/backend/src/utils/agent-caller.utils.js +48 -42
  417. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  418. package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -1
  419. package/dist/backend/backend/src/utils/secret-env.js +8 -1
  420. package/dist/backend/backend/src/utils/secret-env.js.map +1 -1
  421. package/dist/backend/build-info.json +2 -2
  422. package/dist/backend/config/constants.d.ts +67 -0
  423. package/dist/backend/config/constants.d.ts.map +1 -1
  424. package/dist/backend/config/constants.js +67 -0
  425. package/dist/backend/config/constants.js.map +1 -1
  426. package/dist/cli/backend/src/constants.d.ts +223 -5
  427. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  428. package/dist/cli/backend/src/constants.js +206 -6
  429. package/dist/cli/backend/src/constants.js.map +1 -1
  430. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  431. package/dist/cli/backend/src/services/agent/agent-registration.service.js +12 -2
  432. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  433. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +7 -5
  434. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  435. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +19 -10
  436. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  437. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  438. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +10 -1
  439. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  440. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  441. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +4 -0
  442. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  443. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +29 -0
  444. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  445. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +77 -1
  446. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  447. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  448. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  449. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  450. package/dist/cli/backend/src/services/chat/chat.service.d.ts +99 -2
  451. package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -1
  452. package/dist/cli/backend/src/services/chat/chat.service.js +265 -40
  453. package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -1
  454. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -5
  455. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  456. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +34 -4
  457. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  458. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +18 -11
  459. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  460. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +19 -25
  461. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  462. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -4
  463. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  464. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +8 -4
  465. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  466. package/dist/cli/backend/src/services/chat-v2/types.d.ts +0 -1
  467. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -1
  468. package/dist/cli/backend/src/services/chat-v2/types.js +0 -1
  469. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -1
  470. package/dist/cli/backend/src/services/core/api-token.service.d.ts +28 -0
  471. package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -1
  472. package/dist/cli/backend/src/services/core/api-token.service.js +46 -0
  473. package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -1
  474. package/dist/cli/backend/src/services/core/owner-auth.service.d.ts +127 -0
  475. package/dist/cli/backend/src/services/core/owner-auth.service.d.ts.map +1 -0
  476. package/dist/cli/backend/src/services/core/owner-auth.service.js +205 -0
  477. package/dist/cli/backend/src/services/core/owner-auth.service.js.map +1 -0
  478. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +0 -8
  479. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  480. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +0 -18
  481. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  482. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +19 -0
  483. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  484. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +41 -5
  485. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  486. package/dist/cli/backend/src/services/monitoring/agent-turn-state.d.ts +184 -0
  487. package/dist/cli/backend/src/services/monitoring/agent-turn-state.d.ts.map +1 -0
  488. package/dist/cli/backend/src/services/monitoring/agent-turn-state.js +391 -0
  489. package/dist/cli/backend/src/services/monitoring/agent-turn-state.js.map +1 -0
  490. package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.d.ts +73 -0
  491. package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.d.ts.map +1 -0
  492. package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.js +258 -0
  493. package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.js.map +1 -0
  494. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +57 -0
  495. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  496. package/dist/cli/backend/src/services/open-items/open-items.service.js +100 -4
  497. package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
  498. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +36 -0
  499. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  500. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +42 -3
  501. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  502. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +34 -3
  503. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -1
  504. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +57 -2
  505. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -1
  506. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +22 -0
  507. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -1
  508. package/dist/cli/backend/src/services/restart/restart-drain.service.js +37 -5
  509. package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -1
  510. package/dist/cli/backend/src/services/slack/slack-auto-working.service.d.ts +29 -0
  511. package/dist/cli/backend/src/services/slack/slack-auto-working.service.d.ts.map +1 -1
  512. package/dist/cli/backend/src/services/slack/slack-auto-working.service.js +66 -3
  513. package/dist/cli/backend/src/services/slack/slack-auto-working.service.js.map +1 -1
  514. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +79 -15
  515. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  516. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +200 -41
  517. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  518. package/dist/cli/backend/src/services/slack/slack.service.d.ts +18 -0
  519. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  520. package/dist/cli/backend/src/services/slack/slack.service.js +32 -0
  521. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  522. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +17 -0
  523. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
  524. package/dist/cli/backend/src/services/trace/trace-context.service.js +58 -1
  525. package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -1
  526. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +48 -0
  527. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -1
  528. package/dist/cli/backend/src/services/trace/trace-recorder.js +121 -1
  529. package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -1
  530. package/dist/cli/backend/src/services/trace/trace-store.d.ts +40 -1
  531. package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -1
  532. package/dist/cli/backend/src/services/trace/trace-store.js +126 -14
  533. package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -1
  534. package/dist/cli/backend/src/services/trace/trace.types.d.ts +22 -3
  535. package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -1
  536. package/dist/cli/backend/src/services/trace/trace.types.js +20 -1
  537. package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -1
  538. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  539. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  540. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  541. package/dist/cli/backend/src/types/decision.types.d.ts +3 -1
  542. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  543. package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts +9 -0
  544. package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
  545. package/dist/cli/backend/src/types/ticket-autopilot.types.js +14 -0
  546. package/dist/cli/backend/src/types/ticket-autopilot.types.js.map +1 -1
  547. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +4 -0
  548. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  549. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +1 -1
  550. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  551. package/dist/cli/backend/src/types/v2/work-item.types.js +1 -0
  552. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  553. package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -1
  554. package/dist/cli/backend/src/utils/secret-env.js +8 -1
  555. package/dist/cli/backend/src/utils/secret-env.js.map +1 -1
  556. package/dist/cli/cli/src/commands/service.d.ts +12 -0
  557. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  558. package/dist/cli/cli/src/commands/service.js +36 -2
  559. package/dist/cli/cli/src/commands/service.js.map +1 -1
  560. package/dist/cli/cli/src/index.js +4 -0
  561. package/dist/cli/cli/src/index.js.map +1 -1
  562. package/dist/cli/cli/src/utils/owner-token-fetch.d.ts +41 -0
  563. package/dist/cli/cli/src/utils/owner-token-fetch.d.ts.map +1 -0
  564. package/dist/cli/cli/src/utils/owner-token-fetch.js +83 -0
  565. package/dist/cli/cli/src/utils/owner-token-fetch.js.map +1 -0
  566. package/dist/cli/cli/src/utils/safe-shutdown.d.ts +13 -3
  567. package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -1
  568. package/dist/cli/cli/src/utils/safe-shutdown.js +26 -4
  569. package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -1
  570. package/dist/cli/config/constants.d.ts +67 -0
  571. package/dist/cli/config/constants.d.ts.map +1 -1
  572. package/dist/cli/config/constants.js +67 -0
  573. package/dist/cli/config/constants.js.map +1 -1
  574. package/frontend/dist/assets/index-bfa0e2e8.css +42 -0
  575. package/frontend/dist/assets/{index-800118ca.js → index-edfa8e04.js} +285 -285
  576. package/frontend/dist/index.html +2 -2
  577. package/package.json +1 -1
  578. package/packages/crewly-agent/src/runtime/api-client.test.ts +42 -0
  579. package/packages/crewly-agent/src/runtime/api-client.ts +6 -0
  580. package/dist/backend/backend/src/services/v3/request-notification.service.d.ts +0 -52
  581. package/dist/backend/backend/src/services/v3/request-notification.service.d.ts.map +0 -1
  582. package/dist/backend/backend/src/services/v3/request-notification.service.js +0 -161
  583. package/dist/backend/backend/src/services/v3/request-notification.service.js.map +0 -1
  584. package/frontend/dist/assets/index-5e967795.css +0 -42
@@ -14,6 +14,14 @@
14
14
  * Scheduler / status pings ([SYSTEM] markers) are not persisted: their
15
15
  * producers fire again after a restart, and replaying a stale ping is noise.
16
16
  *
17
+ * A turn with no delivered message — one the runtime started on its own
18
+ * (a background subagent finishing), or background work after a turn — is
19
+ * persisted as one `work` entry per session, so its agent is still restored
20
+ * and told to continue (2026-10-02, Eve; specs/2026-10-02-restart-busy-and-resume.md).
21
+ *
22
+ * Every resumed agent gets one English note: "Crewly restarted while you were
23
+ * working on <TKT-n | this request>. Continue where you left off and deliver."
24
+ *
17
25
  * @module services/restart/interrupted-turns
18
26
  */
19
27
  import { readFileSync, writeFileSync, renameSync, mkdirSync, unlinkSync } from 'fs';
@@ -53,9 +61,48 @@ export function toInterruptedEntries(turns) {
53
61
  ...(m.sourceMetadata ? { sourceMetadata: m.sourceMetadata } : {}),
54
62
  });
55
63
  }
64
+ if (turn.messages.length === 0) {
65
+ // Working with nothing to re-deliver: a turn the runtime started on
66
+ // its own, or background work after a turn. The agent still needs to
67
+ // be brought back and told to continue. (A turn made only of [SYSTEM]
68
+ // pings is still dropped: its producers fire again.)
69
+ const label = workLabelOf(turn.lastDelivered);
70
+ out.push({
71
+ kind: 'work',
72
+ sessionName: turn.sessionName,
73
+ deliveredAt: turn.since,
74
+ text: '',
75
+ preview: turn.longRunning ? '(working: tool call or background task running)' : '(working: turn in progress)',
76
+ ...(label ? { workLabel: label } : {}),
77
+ });
78
+ }
56
79
  }
57
80
  return out;
58
81
  }
82
+ /**
83
+ * The ticket a message is about, from its `[TICKET:TKT-n …]` marker.
84
+ *
85
+ * @param text - Delivered text
86
+ * @returns `TKT-n`, or undefined
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * workLabelOf('[CHAT:x] [TICKET:TKT-194 9d34…] (…)'); // 'TKT-194'
91
+ * ```
92
+ */
93
+ export function workLabelOf(text) {
94
+ const m = /\[TICKET:(TKT-\d+)\b/.exec(text ?? '');
95
+ return m ? m[1] : undefined;
96
+ }
97
+ /**
98
+ * The one-line resume note.
99
+ *
100
+ * @param label - Ticket label, or undefined for "this request"
101
+ * @returns "Crewly restarted while you were working on … Continue where you left off and deliver."
102
+ */
103
+ export function buildResumeNote(label) {
104
+ return SAFE_RESTART.RESUME_NOTICE_TEMPLATE.replace('{work}', label && label.trim() ? label.trim() : SAFE_RESTART.RESUME_DEFAULT_WORK_LABEL);
105
+ }
59
106
  /**
60
107
  * Read the file without filtering. Missing or unreadable file → [].
61
108
  *
@@ -135,6 +182,7 @@ export function loadInterruptedTurns(filePath, now = Date.now(), maxAgeMs = SAFE
135
182
  let dropped = 0;
136
183
  for (const e of all) {
137
184
  const valid = e &&
185
+ (e.kind === undefined || e.kind === 'message' || e.kind === 'work') &&
138
186
  typeof e.sessionName === 'string' &&
139
187
  e.sessionName.length > 0 &&
140
188
  typeof e.text === 'string' &&
@@ -161,18 +209,55 @@ export function clearInterruptedTurns(filePath) {
161
209
  }
162
210
  }
163
211
  /**
164
- * Prefix a message with the resume notice, without stacking notices when a
212
+ * Prefix a message with the resume note, without stacking notes when a
165
213
  * resumed message is itself interrupted again.
166
214
  *
167
215
  * @param original - The message to resume
168
- * @returns Notice + original
216
+ * @param label - Ticket label; defaults to the message's own ticket marker
217
+ * @returns Note + header + original
169
218
  */
170
- export function buildResumeMessage(original) {
219
+ export function buildResumeMessage(original, label) {
171
220
  let body = original;
172
- while (body.startsWith(SAFE_RESTART.RESUME_NOTICE)) {
173
- body = body.slice(SAFE_RESTART.RESUME_NOTICE.length).replace(/^\s+/, '');
221
+ for (;;) {
222
+ const stripped = body.replace(SAFE_RESTART.RESUME_NOTICE_PATTERN, '');
223
+ const withoutHeader = stripped.startsWith(SAFE_RESTART.RESUME_ORIGINAL_HEADER)
224
+ ? stripped.slice(SAFE_RESTART.RESUME_ORIGINAL_HEADER.length).replace(/^\s*\n/, '')
225
+ : stripped;
226
+ if (withoutHeader === body)
227
+ break;
228
+ body = withoutHeader;
229
+ }
230
+ return `${buildResumeNote(label ?? workLabelOf(body))}\n${SAFE_RESTART.RESUME_ORIGINAL_HEADER}\n${body}`;
231
+ }
232
+ /**
233
+ * Notes for agents restored because they hold an owner promise, skipping
234
+ * agents that already get an interrupted-turn note (one note per agent).
235
+ *
236
+ * @param commitments - Open promises at boot
237
+ * @param interrupted - Interrupted entries being resumed
238
+ * @param isRunning - Whether the agent is running now (restored)
239
+ * @returns At most one note per session
240
+ */
241
+ export function planCommitmentNotes(commitments, interrupted, isRunning) {
242
+ const covered = new Set(interrupted.map((e) => e.sessionName));
243
+ const bySession = new Map();
244
+ for (const c of commitments) {
245
+ if (covered.has(c.sessionName) || !isRunning(c.sessionName))
246
+ continue;
247
+ const list = bySession.get(c.sessionName) ?? [];
248
+ list.push(c);
249
+ bySession.set(c.sessionName, list);
250
+ }
251
+ const notes = [];
252
+ for (const [sessionName, list] of bySession) {
253
+ const tickets = [...new Set(list.map((c) => c.ticket).filter((t) => !!t))];
254
+ const promises = list.map((c) => `- ${c.ticket ? `${c.ticket}: ` : ''}"${c.text.replace(/\s+/g, ' ').trim()}"`);
255
+ notes.push({
256
+ sessionName,
257
+ text: [buildResumeNote(tickets.length > 0 ? tickets.join(', ') : undefined), SAFE_RESTART.RESUME_PROMISE_HEADER, ...promises].join('\n'),
258
+ });
174
259
  }
175
- return `${SAFE_RESTART.RESUME_NOTICE}\n${body}`;
260
+ return notes;
176
261
  }
177
262
  /**
178
263
  * Whether an entry carries enough queue metadata to be re-enqueued.
@@ -206,9 +291,17 @@ export async function resumeInterruptedTurns(entries, deps) {
206
291
  const summary = { redelivered: 0, skipped: 0, failed: 0 };
207
292
  const remaining = [...entries];
208
293
  let orcReady = null;
294
+ // One note per agent: a session with a message to resume needs no extra
295
+ // "continue" note, and a session with several work entries gets one.
296
+ const withMessages = new Set(entries.filter((e) => e.kind !== 'work').map((e) => e.sessionName));
297
+ const workNoted = new Set();
209
298
  for (const entry of entries) {
210
299
  const isOrc = entry.sessionName === deps.orchestratorSession;
211
300
  try {
301
+ if (entry.kind === 'work' && (withMessages.has(entry.sessionName) || workNoted.has(entry.sessionName))) {
302
+ summary.skipped += 1;
303
+ continue;
304
+ }
212
305
  if (!isOrc && !deps.isSessionRunning(entry.sessionName)) {
213
306
  summary.skipped += 1;
214
307
  deps.logger.warn('Interrupted turn not resumed: agent is not running after restart', {
@@ -216,9 +309,9 @@ export async function resumeInterruptedTurns(entries, deps) {
216
309
  messagePreview: entry.preview,
217
310
  });
218
311
  }
219
- else if (isQueueEntry(entry)) {
312
+ else if (entry.kind !== 'work' && isQueueEntry(entry)) {
220
313
  deps.enqueue({
221
- content: buildResumeMessage(entry.originalContent),
314
+ content: buildResumeMessage(entry.originalContent, entry.workLabel ?? workLabelOf(entry.text)),
222
315
  conversationId: entry.conversationId,
223
316
  source: entry.source,
224
317
  ...(entry.sourceMetadata ? { sourceMetadata: entry.sourceMetadata } : {}),
@@ -243,7 +336,11 @@ export async function resumeInterruptedTurns(entries, deps) {
243
336
  continue;
244
337
  }
245
338
  }
246
- const result = await deps.sendMessageToAgent(entry.sessionName, buildResumeMessage(entry.text));
339
+ const isWork = entry.kind === 'work';
340
+ if (isWork)
341
+ workNoted.add(entry.sessionName);
342
+ const text = isWork ? buildResumeNote(entry.workLabel) : buildResumeMessage(entry.text, entry.workLabel);
343
+ const result = await deps.sendMessageToAgent(entry.sessionName, text);
247
344
  if (result.success) {
248
345
  summary.redelivered += 1;
249
346
  deps.logger.info('Interrupted turn re-delivered', {
@@ -1 +1 @@
1
- {"version":3,"file":"interrupted-turns.js","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/interrupted-turns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interrupted-turns.js","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/interrupted-turns.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,11 @@ export interface DrainResult {
32
32
  export interface DrainOptions {
33
33
  /** Maximum wait (ms); 0 skips the wait */
34
34
  timeoutMs: number;
35
+ /**
36
+ * Longer cap used while any agent waited on has a tool call, subagent or
37
+ * background task running (ms). Never shortens `timeoutMs`.
38
+ */
39
+ backgroundTimeoutMs?: number;
35
40
  /** Re-check interval (ms) */
36
41
  pollMs?: number;
37
42
  /** Interval for the repeated "still waiting" log line (ms) */
@@ -49,6 +54,10 @@ export interface BusyAgent {
49
54
  since: string;
50
55
  /** Preview of the most recent open delivery */
51
56
  messagePreview: string;
57
+ /** 'runtime': working without a tracked delivery (self-started turn, background work) */
58
+ origin?: 'delivery' | 'runtime';
59
+ /** A tool call, subagent or background task is running */
60
+ longRunning?: boolean;
52
61
  }
53
62
  /** Body of `GET /api/system/restart-readiness`. */
54
63
  export interface RestartReadiness {
@@ -81,6 +90,19 @@ export interface GracefulShutdownRequest {
81
90
  * ```
82
91
  */
83
92
  export declare function resolveRestartDrainMs(env?: NodeJS.ProcessEnv): number;
93
+ /**
94
+ * Resolve the longer drain cap used while agents have background work.
95
+ *
96
+ * @param env - Environment (defaults to process.env)
97
+ * @returns Cap in ms; 0 when the drain is disabled; never below the normal drain
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * resolveBackgroundDrainMs({}); // 600000
102
+ * resolveBackgroundDrainMs({ CREWLY_RESTART_DRAIN_MS: '0' }); // 0
103
+ * ```
104
+ */
105
+ export declare function resolveBackgroundDrainMs(env?: NodeJS.ProcessEnv): number;
84
106
  /**
85
107
  * Process-wide safe-restart state. Singleton.
86
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"restart-drain.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/restart-drain.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restart-drain.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/restart-drain.service.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,31 @@ export function resolveRestartDrainMs(env = process.env) {
40
40
  return SAFE_RESTART.DRAIN_TIMEOUT_MS;
41
41
  return Math.floor(parsed);
42
42
  }
43
+ /**
44
+ * Resolve the longer drain cap used while agents have background work.
45
+ *
46
+ * @param env - Environment (defaults to process.env)
47
+ * @returns Cap in ms; 0 when the drain is disabled; never below the normal drain
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * resolveBackgroundDrainMs({}); // 600000
52
+ * resolveBackgroundDrainMs({ CREWLY_RESTART_DRAIN_MS: '0' }); // 0
53
+ * ```
54
+ */
55
+ export function resolveBackgroundDrainMs(env = process.env) {
56
+ const drainMs = resolveRestartDrainMs(env);
57
+ if (drainMs === 0)
58
+ return 0;
59
+ const raw = env[SAFE_RESTART.BACKGROUND_DRAIN_ENV_VAR];
60
+ let cap = SAFE_RESTART.BACKGROUND_DRAIN_TIMEOUT_MS;
61
+ if (raw !== undefined && raw.trim() !== '') {
62
+ const parsed = Number(raw);
63
+ if (Number.isFinite(parsed) && parsed >= 0)
64
+ cap = Math.floor(parsed);
65
+ }
66
+ return Math.max(drainMs, cap);
67
+ }
43
68
  /**
44
69
  * Process-wide safe-restart state. Singleton.
45
70
  */
@@ -204,6 +229,11 @@ export class RestartDrainService {
204
229
  const t = now();
205
230
  const busy = this.tracker.getMidTurn(t);
206
231
  const waitedMs = t - start;
232
+ // Tool calls and background subagents routinely outlast the
233
+ // normal cap; wait longer for them, but never forever.
234
+ const capMs = busy.some((b) => b.longRunning)
235
+ ? Math.max(options.timeoutMs, options.backgroundTimeoutMs ?? options.timeoutMs)
236
+ : options.timeoutMs;
207
237
  if (busy.length === 0) {
208
238
  this.logger.info('Restart drain complete: no agent is mid-turn', { waitedMs });
209
239
  return { outcome: 'drained', waitedMs, remaining: [] };
@@ -215,10 +245,10 @@ export class RestartDrainService {
215
245
  });
216
246
  return { outcome: 'skipped', waitedMs, remaining: busy };
217
247
  }
218
- if (waitedMs >= options.timeoutMs) {
248
+ if (waitedMs >= capMs) {
219
249
  this.logger.warn('Restart drain timed out; these turns will be resumed after restart', {
220
250
  waitedMs,
221
- timeoutMs: options.timeoutMs,
251
+ timeoutMs: capMs,
222
252
  interrupted: busy.map(describeTurn),
223
253
  });
224
254
  return { outcome: 'timed-out', waitedMs, remaining: busy };
@@ -228,13 +258,13 @@ export class RestartDrainService {
228
258
  this.logger.info('Restart drain: waiting for agents to finish their current turn', {
229
259
  waitingOn: busy.map(describeTurn),
230
260
  waitedMs,
231
- timeoutMs: options.timeoutMs,
261
+ timeoutMs: capMs,
232
262
  hint: 'send the signal again to stop waiting',
233
263
  });
234
264
  lastLoggedKey = key;
235
265
  lastLogAt = t;
236
266
  }
237
- await this.sleepUnlessSkipped(sleep, Math.min(pollMs, options.timeoutMs - waitedMs));
267
+ await this.sleepUnlessSkipped(sleep, Math.min(pollMs, capMs - waitedMs));
238
268
  }
239
269
  }
240
270
  finally {
@@ -283,7 +313,9 @@ function toBusyAgent(turn) {
283
313
  return {
284
314
  session: turn.sessionName,
285
315
  since: new Date(turn.since).toISOString(),
286
- messagePreview: newest?.preview ?? '',
316
+ messagePreview: newest?.preview ?? (turn.longRunning ? '(working: tool call or background task running)' : '(working: turn in progress)'),
317
+ ...(turn.origin ? { origin: turn.origin } : {}),
318
+ ...(turn.longRunning ? { longRunning: true } : {}),
287
319
  };
288
320
  }
289
321
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"restart-drain.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/restart-drain.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restart-drain.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/restart-drain.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Supervisor stop budget.
3
+ *
4
+ * Under systemd, the unit's `TimeoutStopSec` decides when a stopping service
5
+ * is SIGKILLed, whatever the backend's own drain cap says. The unit is
6
+ * written at install time, so a unit from before the 10-minute background
7
+ * drain (steamfun-ops: 150 s) would SIGKILL the backend mid-drain and
8
+ * `saveInterruptedTurns` would never run (PR #1013 review). The backend
9
+ * therefore reads the live `TimeoutStopUSec` and caps its drain to it minus
10
+ * the shutdown margin.
11
+ *
12
+ * @module services/restart/supervisor-stop-budget
13
+ */
14
+ /** Dependencies (injectable for tests). */
15
+ export interface SupervisorBudgetDeps {
16
+ /** Environment */
17
+ env: NodeJS.ProcessEnv;
18
+ /** Read a file (the process's cgroup) */
19
+ readFile: (path: string) => string;
20
+ /** Run systemctl and return stdout */
21
+ systemctl: (args: string[]) => string;
22
+ }
23
+ /**
24
+ * Parse a systemd time span ("2min 30s", "150s", "500ms", "infinity").
25
+ *
26
+ * @param text - systemctl output value
27
+ * @returns Milliseconds; null for infinity or unparseable text
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * parseSystemdTimespanMs('2min 30s'); // 150000
32
+ * ```
33
+ */
34
+ export declare function parseSystemdTimespanMs(text: string): number | null;
35
+ /**
36
+ * The systemd unit a process runs in, from its /proc/self/cgroup.
37
+ *
38
+ * @param cgroup - File content
39
+ * @returns `{ unit, user }`, or null when not in a .service unit
40
+ */
41
+ export declare function systemdUnitFromCgroup(cgroup: string): {
42
+ unit: string;
43
+ user: boolean;
44
+ } | null;
45
+ /**
46
+ * How long the supervisor waits after SIGTERM before SIGKILL, when known.
47
+ *
48
+ * @param deps - Environment, file reader, systemctl runner
49
+ * @returns Milliseconds, or null when not under systemd, unlimited, or unreadable
50
+ */
51
+ export declare function resolveSupervisorStopBudgetMs(deps?: Partial<SupervisorBudgetDeps>): number | null;
52
+ /**
53
+ * Cap a drain so it ends before the supervisor SIGKILLs, leaving the margin
54
+ * for the rest of shutdown (persisting interrupted turns, PTY teardown).
55
+ *
56
+ * @param drainMs - Drain cap the backend wants
57
+ * @param budgetMs - Supervisor stop budget, or null when unlimited / unknown
58
+ * @param marginMs - Time needed after the drain
59
+ * @returns The cap to use (never negative)
60
+ */
61
+ export declare function capDrainToSupervisor(drainMs: number, budgetMs: number | null, marginMs: number): number;
62
+ //# sourceMappingURL=supervisor-stop-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor-stop-budget.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/supervisor-stop-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACpC,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,yCAAyC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,sCAAsC;IACtC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;CACtC;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAclE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAY5F;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,GAAG,IAAI,CAejG;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvG"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Supervisor stop budget.
3
+ *
4
+ * Under systemd, the unit's `TimeoutStopSec` decides when a stopping service
5
+ * is SIGKILLed, whatever the backend's own drain cap says. The unit is
6
+ * written at install time, so a unit from before the 10-minute background
7
+ * drain (steamfun-ops: 150 s) would SIGKILL the backend mid-drain and
8
+ * `saveInterruptedTurns` would never run (PR #1013 review). The backend
9
+ * therefore reads the live `TimeoutStopUSec` and caps its drain to it minus
10
+ * the shutdown margin.
11
+ *
12
+ * @module services/restart/supervisor-stop-budget
13
+ */
14
+ import { execFileSync } from 'child_process';
15
+ import { readFileSync } from 'fs';
16
+ const UNITS_MS = {
17
+ us: 0.001,
18
+ usec: 0.001,
19
+ ms: 1,
20
+ msec: 1,
21
+ s: 1000,
22
+ sec: 1000,
23
+ second: 1000,
24
+ seconds: 1000,
25
+ m: 60_000,
26
+ min: 60_000,
27
+ minute: 60_000,
28
+ minutes: 60_000,
29
+ h: 3_600_000,
30
+ hr: 3_600_000,
31
+ hour: 3_600_000,
32
+ hours: 3_600_000,
33
+ d: 86_400_000,
34
+ day: 86_400_000,
35
+ days: 86_400_000,
36
+ };
37
+ /**
38
+ * Parse a systemd time span ("2min 30s", "150s", "500ms", "infinity").
39
+ *
40
+ * @param text - systemctl output value
41
+ * @returns Milliseconds; null for infinity or unparseable text
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * parseSystemdTimespanMs('2min 30s'); // 150000
46
+ * ```
47
+ */
48
+ export function parseSystemdTimespanMs(text) {
49
+ const s = text.trim().toLowerCase();
50
+ if (!s || s === 'infinity')
51
+ return null;
52
+ if (/^\d+$/.test(s))
53
+ return Number(s) * 1000;
54
+ let total = 0;
55
+ let matched = '';
56
+ for (const m of s.matchAll(/(\d+(?:\.\d+)?)\s*([a-z]+)/g)) {
57
+ const unit = UNITS_MS[m[2]];
58
+ if (unit === undefined)
59
+ return null;
60
+ total += Number(m[1]) * unit;
61
+ matched += m[0];
62
+ }
63
+ if (matched.replace(/\s+/g, '') !== s.replace(/\s+/g, ''))
64
+ return null;
65
+ return Math.floor(total);
66
+ }
67
+ /**
68
+ * The systemd unit a process runs in, from its /proc/self/cgroup.
69
+ *
70
+ * @param cgroup - File content
71
+ * @returns `{ unit, user }`, or null when not in a .service unit
72
+ */
73
+ export function systemdUnitFromCgroup(cgroup) {
74
+ for (const line of cgroup.split('\n')) {
75
+ const path = line.split(':').slice(2).join(':');
76
+ const parts = path.split('/').filter(Boolean);
77
+ const unit = [...parts].reverse().find((p) => p.endsWith('.service'));
78
+ if (!unit)
79
+ continue;
80
+ const userManager = /^user@\d+\.service$/;
81
+ // Only the user manager itself (a login shell, not a unit of ours).
82
+ if (userManager.test(unit))
83
+ return null;
84
+ return { unit, user: parts.some((p) => userManager.test(p)) };
85
+ }
86
+ return null;
87
+ }
88
+ /**
89
+ * How long the supervisor waits after SIGTERM before SIGKILL, when known.
90
+ *
91
+ * @param deps - Environment, file reader, systemctl runner
92
+ * @returns Milliseconds, or null when not under systemd, unlimited, or unreadable
93
+ */
94
+ export function resolveSupervisorStopBudgetMs(deps) {
95
+ const env = deps?.env ?? process.env;
96
+ // systemd sets INVOCATION_ID for every unit it starts.
97
+ if (!env.INVOCATION_ID)
98
+ return null;
99
+ const readFile = deps?.readFile ?? ((p) => readFileSync(p, 'utf-8'));
100
+ const systemctl = deps?.systemctl ?? ((args) => execFileSync('systemctl', args, { encoding: 'utf-8', timeout: 3_000, stdio: ['ignore', 'pipe', 'ignore'] }));
101
+ try {
102
+ const where = systemdUnitFromCgroup(readFile('/proc/self/cgroup'));
103
+ if (!where)
104
+ return null;
105
+ const out = systemctl([...(where.user ? ['--user'] : []), 'show', '-p', 'TimeoutStopUSec', '--value', where.unit]);
106
+ return parseSystemdTimespanMs(out);
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ /**
113
+ * Cap a drain so it ends before the supervisor SIGKILLs, leaving the margin
114
+ * for the rest of shutdown (persisting interrupted turns, PTY teardown).
115
+ *
116
+ * @param drainMs - Drain cap the backend wants
117
+ * @param budgetMs - Supervisor stop budget, or null when unlimited / unknown
118
+ * @param marginMs - Time needed after the drain
119
+ * @returns The cap to use (never negative)
120
+ */
121
+ export function capDrainToSupervisor(drainMs, budgetMs, marginMs) {
122
+ if (budgetMs === null)
123
+ return drainMs;
124
+ return Math.max(0, Math.min(drainMs, budgetMs - marginMs));
125
+ }
126
+ //# sourceMappingURL=supervisor-stop-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor-stop-budget.js","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/supervisor-stop-budget.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  /**
2
2
  * Turn probe for PTY agent sessions.
3
3
  *
4
- * Decides whether an agent is mid-turn from two signals the codebase already
5
- * trusts:
4
+ * First asks the runtime (specs/2026-10-02-restart-busy-and-resume.md): a
5
+ * Claude Code turn, tool call or background subagent reported through hooks
6
+ * or the transcript is busy however silent the screen is — a long tool call
7
+ * prints nothing (2026-10-02, Eve). A delivery the runtime has not yet
8
+ * acknowledged (no hook event since it) is busy for up to
9
+ * TURN_STATE_CONSTANTS.DELIVERY_START_MS.
10
+ *
11
+ * Then falls back to two screen signals the codebase already trusts:
6
12
  * - the "esc to interrupt" status bar (`containsBusyStatusBar`), which Claude
7
13
  * Code and Codex show for the whole of a turn — thinking, streaming, and
8
14
  * while a tool runs — and remove when the turn ends;
@@ -16,6 +22,7 @@
16
22
  * @module services/restart/turn-probe
17
23
  */
18
24
  import type { TurnProbe } from './in-flight-turn-tracker.service.js';
25
+ import type { TurnVerdict } from '../monitoring/agent-turn-state.js';
19
26
  /** The session-backend calls the probe needs. */
20
27
  export interface ProbeSessionBackend {
21
28
  sessionExists(name: string): boolean;
@@ -32,6 +39,14 @@ export interface PtyTurnProbeDeps {
32
39
  quietMs?: number;
33
40
  /** Trailing lines to inspect (defaults to SAFE_RESTART.PROBE_TAIL_LINES) */
34
41
  tailLines?: number;
42
+ /** The runtime's own turn state (hooks / transcript); omitted = screen only */
43
+ getRuntimeVerdict?: (sessionName: string) => TurnVerdict;
44
+ /** Epoch ms of the session's last runtime hook event, or null when it never sent one */
45
+ getLastHookEventAt?: (sessionName: string) => number | null;
46
+ /** Runtime type of the session (enables runtime-specific busy markers) */
47
+ getRuntimeType?: (sessionName: string) => string | null | undefined;
48
+ /** Clock (tests) */
49
+ now?: () => number;
35
50
  }
36
51
  /**
37
52
  * Create a probe that inspects a PTY session.
@@ -1 +1 @@
1
- {"version":3,"file":"turn-probe.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/turn-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IACnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAChC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;IAC7C,6EAA6E;IAC7E,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAwBpE"}
1
+ {"version":3,"file":"turn-probe.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/restart/turn-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IACnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAChC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;IAC7C,6EAA6E;IAC7E,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,WAAW,CAAC;IACzD,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5D,0EAA0E;IAC1E,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpE,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CA2CpE"}