crewly 1.20.106 → 1.20.107

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 (548) hide show
  1. package/README.md +22 -12
  2. package/config/constants.ts +43 -0
  3. package/config/index.ts +2 -0
  4. package/config/skills/_common/lib.sh +55 -2
  5. package/config/skills/_common/lib.test.sh +58 -1
  6. package/config/skills/_common/task-pool-body-shape.test.sh +60 -0
  7. package/config/skills/agent/core/cancel-followup/execute.sh +18 -3
  8. package/config/skills/agent/core/cancel-followup/execute.test.sh +73 -0
  9. package/config/skills/agent/core/complete-task/execute.sh +1 -1
  10. package/config/skills/agent/core/create-intent-tasks/execute.sh +1 -1
  11. package/config/skills/agent/core/create-task/SKILL.md +1 -0
  12. package/config/skills/agent/core/create-task/execute.sh +10 -0
  13. package/config/skills/agent/core/decompose-intent/execute.sh +1 -1
  14. package/config/skills/agent/core/handoff-task/execute.sh +1 -1
  15. package/config/skills/agent/core/list-my-followups/SKILL.md +1 -1
  16. package/config/skills/agent/core/list-my-followups/execute.sh +25 -3
  17. package/config/skills/agent/core/list-my-followups/execute.test.sh +72 -0
  18. package/config/skills/agent/core/poll-tasks/execute.sh +3 -3
  19. package/config/skills/agent/core/reply-channel/SKILL.md +1 -1
  20. package/config/skills/agent/core/report-progress/execute.sh +1 -1
  21. package/config/skills/agent/core/report-status/execute.sh +1 -1
  22. package/config/skills/agent/core/slack-post/SKILL.md +1 -1
  23. package/config/skills/agent/core/update-intent-task/execute.sh +1 -1
  24. package/config/skills/agent/marketing/brand-onboarding/execute.sh +1 -1
  25. package/config/skills/agent/marketing/submit-for-approval/execute.sh +1 -1
  26. package/config/skills/agent/remote-browser/SOP-google-flow-video.md +1 -1
  27. package/config/skills/agent/remote-browser/execute.sh +33 -1
  28. package/config/skills/agent/remote-browser/execute.test.sh +62 -0
  29. package/config/skills/agent/screenshot-compare/execute.sh +1 -1
  30. package/config/skills/agent/transcribe-audio/SKILL.md +1 -1
  31. package/config/skills/agent/transcribe-audio/execute.sh +1 -1
  32. package/config/skills/agent/transcribe-audio/instructions.md +1 -1
  33. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  34. package/config/skills/orchestrator/get-tasks/SKILL.md +7 -1
  35. package/config/skills/orchestrator/get-tasks/execute.sh +51 -28
  36. package/config/skills/orchestrator/get-tasks/execute.test.sh +67 -0
  37. package/config/skills/orchestrator/heartbeat/execute.sh +2 -2
  38. package/config/skills/orchestrator/list-missions/execute.sh +1 -1
  39. package/config/skills/orchestrator/list-missions/execute.test.sh +38 -11
  40. package/config/skills/team-leader/decompose-goal/SKILL.md +1 -0
  41. package/config/skills/team-leader/decompose-goal/execute.sh +17 -2
  42. package/config/skills/team-leader/delegate-task/SKILL.md +1 -0
  43. package/config/skills/team-leader/delegate-task/execute.sh +6 -2
  44. package/dist/backend/backend/src/constants.d.ts +199 -2
  45. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  46. package/dist/backend/backend/src/constants.js +190 -3
  47. package/dist/backend/backend/src/constants.js.map +1 -1
  48. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +33 -0
  49. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  50. package/dist/backend/backend/src/controllers/browser/browser.controller.js +176 -9
  51. package/dist/backend/backend/src/controllers/browser/browser.controller.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 +38 -35
  54. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  55. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +10 -45
  56. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  57. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +40 -89
  58. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  59. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +2 -1
  60. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  61. package/dist/backend/backend/src/controllers/session/session.controller.js +21 -0
  62. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  63. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/slack/slack.controller.js +51 -3
  65. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts +23 -0
  67. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts.map +1 -0
  68. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js +35 -0
  69. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js.map +1 -0
  70. package/dist/backend/backend/src/controllers/system/system.controller.d.ts +5 -3
  71. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  72. package/dist/backend/backend/src/controllers/system/system.controller.js +27 -6
  73. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  74. package/dist/backend/backend/src/controllers/system/system.routes.d.ts.map +1 -1
  75. package/dist/backend/backend/src/controllers/system/system.routes.js +3 -0
  76. package/dist/backend/backend/src/controllers/system/system.routes.js.map +1 -1
  77. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  78. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +29 -1
  79. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  80. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  81. package/dist/backend/backend/src/controllers/team/team.controller.js +86 -6
  82. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  83. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +41 -0
  84. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -0
  85. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +135 -0
  86. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -0
  87. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +18 -0
  88. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -0
  89. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +25 -0
  90. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -0
  91. package/dist/backend/backend/src/index.d.ts +70 -1
  92. package/dist/backend/backend/src/index.d.ts.map +1 -1
  93. package/dist/backend/backend/src/index.js +352 -71
  94. package/dist/backend/backend/src/index.js.map +1 -1
  95. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  96. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  97. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  98. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +128 -0
  99. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -0
  100. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +200 -0
  101. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -0
  102. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  103. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +3 -1
  105. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  107. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/agent/agent-registration.service.js +61 -4
  109. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  111. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +62 -1
  113. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  114. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  116. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  117. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  118. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +0 -2
  120. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  121. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  122. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  123. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +113 -10
  124. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  125. package/dist/backend/backend/src/services/agent/restore-filter.d.ts +12 -0
  126. package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/agent/restore-filter.js +19 -0
  128. package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
  129. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  131. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  132. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  133. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  134. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  135. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  136. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +57 -5
  137. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +98 -18
  139. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  140. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +12 -1
  141. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  142. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +25 -4
  143. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  144. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +2 -1
  145. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -1
  146. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +5 -1
  147. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -1
  148. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +38 -0
  149. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/browser/browser-session.service.js +34 -0
  151. package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  153. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  154. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  155. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  156. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +7 -2
  158. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
  159. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  160. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  162. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  163. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +63 -0
  164. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -0
  165. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +72 -0
  166. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -0
  167. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  168. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  169. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  170. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  171. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  172. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +6 -1
  173. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  174. package/dist/backend/backend/src/services/core/retry.util.d.ts +5 -0
  175. package/dist/backend/backend/src/services/core/retry.util.d.ts.map +1 -1
  176. package/dist/backend/backend/src/services/core/retry.util.js +2 -2
  177. package/dist/backend/backend/src/services/core/retry.util.js.map +1 -1
  178. package/dist/backend/backend/src/services/factory.service.js +3 -3
  179. package/dist/backend/backend/src/services/factory.service.js.map +1 -1
  180. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +24 -1
  182. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  183. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +9 -0
  184. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +55 -0
  186. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  187. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  188. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  190. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  191. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  192. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  193. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  194. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  195. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +22 -16
  197. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
  198. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +11 -1
  199. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
  200. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  201. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +9 -9
  202. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  203. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  204. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  205. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  206. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  207. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +153 -0
  208. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -0
  209. package/dist/backend/backend/src/services/restart/interrupted-turns.js +279 -0
  210. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -0
  211. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  212. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  213. package/dist/backend/backend/src/services/restart/restart-drain.service.js +298 -0
  214. package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -0
  215. package/dist/backend/backend/src/services/restart/turn-probe.d.ts +52 -0
  216. package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -0
  217. package/dist/backend/backend/src/services/restart/turn-probe.js +61 -0
  218. package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -0
  219. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  220. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  221. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  222. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  223. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +2 -0
  224. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  225. package/dist/backend/backend/src/services/session/pty/pty-session.js +53 -1
  226. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  227. package/dist/backend/backend/src/services/session/session-binding.d.ts +125 -0
  228. package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -0
  229. package/dist/backend/backend/src/services/session/session-binding.js +183 -0
  230. package/dist/backend/backend/src/services/session/session-binding.js.map +1 -0
  231. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  232. package/dist/backend/backend/src/services/session/session-handoff.service.js +19 -0
  233. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  234. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  235. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  237. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts +4 -3
  239. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -1
  240. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +4 -3
  241. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -1
  242. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +72 -7
  243. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  244. package/dist/backend/backend/src/services/slack/slack-initializer.js +185 -23
  245. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  246. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  247. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  248. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  249. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  250. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts +59 -0
  251. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts.map +1 -0
  252. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js +69 -0
  253. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js.map +1 -0
  254. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  255. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  256. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +64 -3
  257. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  258. package/dist/backend/backend/src/services/slack/slack.service.d.ts +33 -1
  259. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  260. package/dist/backend/backend/src/services/slack/slack.service.js +129 -4
  261. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  262. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts +108 -0
  263. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts.map +1 -0
  264. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js +193 -0
  265. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js.map +1 -0
  266. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  267. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  268. package/dist/backend/backend/src/services/task-pool/pool-storage.js +30 -0
  269. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  270. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  271. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  272. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +55 -1
  273. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  274. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +7 -0
  275. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +32 -1
  277. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  278. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  279. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +4 -3
  280. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  281. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  282. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +12 -0
  283. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  284. package/dist/backend/backend/src/services/v3/request.service.d.ts +7 -0
  285. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  286. package/dist/backend/backend/src/services/v3/request.service.js +17 -0
  287. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  288. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  289. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  290. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  291. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  292. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  293. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  294. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +566 -0
  295. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  296. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  297. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +3 -3
  298. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  299. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -4
  300. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  301. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +40 -10
  302. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  303. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +1 -0
  304. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  305. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +3 -3
  306. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  307. package/dist/backend/backend/src/types/slack.types.d.ts +29 -0
  308. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  309. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  310. package/dist/backend/backend/src/types/thread-status.types.d.ts +26 -0
  311. package/dist/backend/backend/src/types/thread-status.types.d.ts.map +1 -1
  312. package/dist/backend/backend/src/types/thread-status.types.js +17 -0
  313. package/dist/backend/backend/src/types/thread-status.types.js.map +1 -1
  314. package/dist/backend/backend/src/types/v2/index.d.ts +3 -2
  315. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  316. package/dist/backend/backend/src/types/v2/index.js +1 -1
  317. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  318. package/dist/backend/backend/src/types/v2/request.types.d.ts +39 -3
  319. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  320. package/dist/backend/backend/src/types/v2/request.types.js +11 -2
  321. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  322. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +173 -0
  323. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  324. package/dist/backend/backend/src/types/v2/ticket.types.js +203 -0
  325. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -0
  326. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +26 -0
  327. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  328. package/dist/backend/backend/src/utils/agent-caller.utils.js +40 -3
  329. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  330. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  331. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  332. package/dist/backend/backend/src/utils/gemini-auth-settings.js +104 -0
  333. package/dist/backend/backend/src/utils/gemini-auth-settings.js.map +1 -0
  334. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts +56 -0
  335. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  336. package/dist/backend/backend/src/utils/local-api-url.utils.js +80 -0
  337. package/dist/backend/backend/src/utils/local-api-url.utils.js.map +1 -0
  338. package/dist/backend/build-info.json +2 -2
  339. package/dist/backend/config/constants.d.ts +40 -0
  340. package/dist/backend/config/constants.d.ts.map +1 -1
  341. package/dist/backend/config/constants.js +41 -0
  342. package/dist/backend/config/constants.js.map +1 -1
  343. package/dist/backend/config/index.d.ts +4 -2
  344. package/dist/backend/config/index.d.ts.map +1 -1
  345. package/dist/backend/config/index.js +2 -2
  346. package/dist/backend/config/index.js.map +1 -1
  347. package/dist/cli/backend/src/constants.d.ts +199 -2
  348. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  349. package/dist/cli/backend/src/constants.js +190 -3
  350. package/dist/cli/backend/src/constants.js.map +1 -1
  351. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  352. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  353. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +3 -1
  354. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  355. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  356. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  357. package/dist/cli/backend/src/services/agent/agent-registration.service.js +61 -4
  358. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  359. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  360. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  361. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +62 -1
  362. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  363. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  364. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  365. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  366. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  367. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  368. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +0 -2
  369. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  370. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  371. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  372. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +113 -10
  373. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  374. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  375. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  376. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  377. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  378. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  379. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  380. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  381. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  382. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  383. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  384. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  385. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  386. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  387. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  388. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  389. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  390. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  391. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  392. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  393. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  394. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  395. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  396. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  397. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  398. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  399. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  400. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  401. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  402. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  403. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  404. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  405. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  406. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  407. package/dist/cli/backend/src/services/restart/restart-drain.service.js +298 -0
  408. package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -0
  409. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  410. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  411. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  412. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  413. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +2 -0
  414. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/session/pty/pty-session.js +53 -1
  416. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  417. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  418. package/dist/cli/backend/src/services/session/session-handoff.service.js +19 -0
  419. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  420. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  421. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  422. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  423. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  424. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  425. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  426. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  427. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  428. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  429. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  430. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +64 -3
  431. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  432. package/dist/cli/backend/src/services/slack/slack.service.d.ts +33 -1
  433. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  434. package/dist/cli/backend/src/services/slack/slack.service.js +129 -4
  435. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  436. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  437. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  438. package/dist/cli/backend/src/services/task-pool/pool-storage.js +30 -0
  439. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  440. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  441. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  442. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +55 -1
  443. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  444. package/dist/cli/backend/src/services/v3/request.service.d.ts +7 -0
  445. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  446. package/dist/cli/backend/src/services/v3/request.service.js +17 -0
  447. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  448. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  449. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  450. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  451. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  452. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  453. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  454. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +566 -0
  455. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  456. package/dist/cli/backend/src/types/slack.types.d.ts +29 -0
  457. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  458. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  459. package/dist/cli/backend/src/types/thread-status.types.d.ts +26 -0
  460. package/dist/cli/backend/src/types/thread-status.types.d.ts.map +1 -1
  461. package/dist/cli/backend/src/types/thread-status.types.js +17 -0
  462. package/dist/cli/backend/src/types/thread-status.types.js.map +1 -1
  463. package/dist/cli/backend/src/types/v2/index.d.ts +3 -2
  464. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  465. package/dist/cli/backend/src/types/v2/index.js +1 -1
  466. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  467. package/dist/cli/backend/src/types/v2/request.types.d.ts +39 -3
  468. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  469. package/dist/cli/backend/src/types/v2/request.types.js +11 -2
  470. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  471. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +173 -0
  472. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  473. package/dist/cli/backend/src/types/v2/ticket.types.js +203 -0
  474. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -0
  475. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  476. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  477. package/dist/cli/backend/src/utils/gemini-auth-settings.js +104 -0
  478. package/dist/cli/backend/src/utils/gemini-auth-settings.js.map +1 -0
  479. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts +56 -0
  480. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  481. package/dist/cli/backend/src/utils/local-api-url.utils.js +80 -0
  482. package/dist/cli/backend/src/utils/local-api-url.utils.js.map +1 -0
  483. package/dist/cli/cli/src/commands/doctor.d.ts +73 -2
  484. package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -1
  485. package/dist/cli/cli/src/commands/doctor.js +250 -8
  486. package/dist/cli/cli/src/commands/doctor.js.map +1 -1
  487. package/dist/cli/cli/src/commands/install.js +2 -0
  488. package/dist/cli/cli/src/commands/install.js.map +1 -1
  489. package/dist/cli/cli/src/commands/onboard.d.ts +68 -0
  490. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  491. package/dist/cli/cli/src/commands/onboard.js +149 -18
  492. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  493. package/dist/cli/cli/src/commands/service.d.ts +6 -0
  494. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  495. package/dist/cli/cli/src/commands/service.js +152 -50
  496. package/dist/cli/cli/src/commands/service.js.map +1 -1
  497. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  498. package/dist/cli/cli/src/commands/start.js +25 -80
  499. package/dist/cli/cli/src/commands/start.js.map +1 -1
  500. package/dist/cli/cli/src/commands/status.d.ts +17 -1
  501. package/dist/cli/cli/src/commands/status.d.ts.map +1 -1
  502. package/dist/cli/cli/src/commands/status.js +133 -68
  503. package/dist/cli/cli/src/commands/status.js.map +1 -1
  504. package/dist/cli/cli/src/commands/stop.d.ts +28 -1
  505. package/dist/cli/cli/src/commands/stop.d.ts.map +1 -1
  506. package/dist/cli/cli/src/commands/stop.js +260 -100
  507. package/dist/cli/cli/src/commands/stop.js.map +1 -1
  508. package/dist/cli/cli/src/index.js +3 -2
  509. package/dist/cli/cli/src/index.js.map +1 -1
  510. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts +68 -0
  511. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts.map +1 -0
  512. package/dist/cli/cli/src/scripts/ensure-node-pty.js +167 -0
  513. package/dist/cli/cli/src/scripts/ensure-node-pty.js.map +1 -0
  514. package/dist/cli/cli/src/utils/backend-status.d.ts +175 -0
  515. package/dist/cli/cli/src/utils/backend-status.d.ts.map +1 -0
  516. package/dist/cli/cli/src/utils/backend-status.js +322 -0
  517. package/dist/cli/cli/src/utils/backend-status.js.map +1 -0
  518. package/dist/cli/cli/src/utils/marketplace.d.ts +31 -2
  519. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  520. package/dist/cli/cli/src/utils/marketplace.js +78 -20
  521. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  522. package/dist/cli/cli/src/utils/native-toolchain.d.ts +53 -8
  523. package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -1
  524. package/dist/cli/cli/src/utils/native-toolchain.js +107 -15
  525. package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -1
  526. package/dist/cli/cli/src/utils/process-cleanup.d.ts +38 -6
  527. package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -1
  528. package/dist/cli/cli/src/utils/process-cleanup.js +83 -53
  529. package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -1
  530. package/dist/cli/cli/src/utils/runtime-auth.d.ts +130 -0
  531. package/dist/cli/cli/src/utils/runtime-auth.d.ts.map +1 -0
  532. package/dist/cli/cli/src/utils/runtime-auth.js +248 -0
  533. package/dist/cli/cli/src/utils/runtime-auth.js.map +1 -0
  534. package/dist/cli/cli/src/utils/safe-shutdown.d.ts +137 -0
  535. package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -0
  536. package/dist/cli/cli/src/utils/safe-shutdown.js +236 -0
  537. package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -0
  538. package/dist/cli/config/constants.d.ts +40 -0
  539. package/dist/cli/config/constants.d.ts.map +1 -1
  540. package/dist/cli/config/constants.js +41 -0
  541. package/dist/cli/config/constants.js.map +1 -1
  542. package/dist/cli/config/index.d.ts +4 -2
  543. package/dist/cli/config/index.d.ts.map +1 -1
  544. package/dist/cli/config/index.js +2 -2
  545. package/dist/cli/config/index.js.map +1 -1
  546. package/frontend/dist/assets/{index-488339c1.js → index-f7b99e81.js} +222 -222
  547. package/frontend/dist/index.html +1 -1
  548. package/package.json +4 -4
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Is an AI runtime (Claude Code, Codex, Gemini CLI) installed AND logged in?
3
+ *
4
+ * `crewly doctor` used to say "All checks passed" on machines where no agent
5
+ * could ever start (#779). An agent needs a runtime binary on PATH and a
6
+ * saved login; without the login it stops at a sign-in screen.
7
+ *
8
+ * Detection only reads files and environment variable NAMES; it never prints
9
+ * or returns a secret value.
10
+ *
11
+ * - Claude Code: first-run setup finished (`hasCompletedOnboarding`, the #782
12
+ * check) plus a credential: an OAuth account in its config, an API key in
13
+ * its config, a credentials file, an `apiKeyHelper`, or an auth env var.
14
+ * - Codex: `$CODEX_HOME/auth.json` (default `~/.codex`) holds tokens or an
15
+ * API key (written by `codex login`).
16
+ * - Gemini CLI: an auth method saved in `~/.gemini/settings.json` with its
17
+ * credential present, or a Gemini API key Crewly can hand it — Crewly then
18
+ * pre-selects "Use Gemini API Key" at launch (#781).
19
+ *
20
+ * @module cli/utils/runtime-auth
21
+ */
22
+ /** Result for one runtime. */
23
+ export interface RuntimeAuthStatus {
24
+ /** Stable id: `claude`, `codex`, `gemini` */
25
+ id: RuntimeId;
26
+ /** Display name */
27
+ displayName: string;
28
+ /** Binary on PATH */
29
+ installed: boolean;
30
+ /** Installed and a usable login was found */
31
+ loggedIn: boolean;
32
+ /** What was found (never a secret) */
33
+ detail: string;
34
+ /** Command that fixes it (install and/or log in) */
35
+ fix: string;
36
+ }
37
+ /** Runtimes doctor checks. */
38
+ export type RuntimeId = 'claude' | 'codex' | 'gemini';
39
+ /** Inputs, injectable for tests. */
40
+ export interface RuntimeAuthDeps {
41
+ /** PATH lookup */
42
+ which: (bin: string) => boolean;
43
+ /** Home directory */
44
+ homeDir: string;
45
+ /** Environment */
46
+ env: NodeJS.ProcessEnv;
47
+ }
48
+ /** Static facts about each runtime. */
49
+ export declare const RUNTIME_AUTH_INFO: {
50
+ readonly claude: {
51
+ readonly displayName: "Claude Code";
52
+ readonly bin: "claude";
53
+ readonly install: "npm install -g @anthropic-ai/claude-code";
54
+ readonly login: "run `claude` once in a terminal: choose a theme and log in (or /login)";
55
+ /** Env vars that authenticate Claude Code without a saved login */
56
+ readonly authEnv: readonly ["ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN", "CLAUDE_CODE_OAUTH_TOKEN", "CLAUDE_CODE_USE_BEDROCK", "CLAUDE_CODE_USE_VERTEX"];
57
+ readonly configDirEnv: "CLAUDE_CONFIG_DIR";
58
+ readonly configFile: ".claude.json";
59
+ readonly onboardedKey: "hasCompletedOnboarding";
60
+ /** Config keys that record a login */
61
+ readonly loginKeys: readonly ["oauthAccount", "primaryApiKey"];
62
+ /** Claude's data directory under $HOME (unless CLAUDE_CONFIG_DIR is set) */
63
+ readonly dataDir: ".claude";
64
+ /** Credentials file (Linux; macOS keeps it in the Keychain) */
65
+ readonly credentialsFile: ".credentials.json";
66
+ readonly settingsFile: "settings.json";
67
+ };
68
+ readonly codex: {
69
+ readonly displayName: "Codex CLI";
70
+ readonly bin: "codex";
71
+ readonly install: "npm install -g @openai/codex";
72
+ readonly login: "codex login (API key: printenv OPENAI_API_KEY | codex login --with-api-key)";
73
+ readonly homeEnv: "CODEX_HOME";
74
+ readonly homeDir: ".codex";
75
+ readonly authFile: "auth.json";
76
+ };
77
+ readonly gemini: {
78
+ readonly displayName: "Gemini CLI";
79
+ readonly bin: "gemini";
80
+ readonly install: "npm install -g @google/gemini-cli";
81
+ readonly login: "run `gemini` once and choose \"Login with Google\", or set GEMINI_API_KEY (or add a Gemini key in Crewly Settings)";
82
+ /** Env vars Crewly reads a Gemini key from (API_KEY_ENV_VARS.gemini) */
83
+ readonly keyEnv: readonly ["GOOGLE_GENERATIVE_AI_API_KEY", "GEMINI_API_KEY"];
84
+ readonly settingsFile: string;
85
+ readonly oauthCredsFile: string;
86
+ /** Gemini's Google-login auth types */
87
+ readonly googleLoginTypes: readonly ["oauth-personal", "login-with-google"];
88
+ /** Crewly settings file holding API keys */
89
+ readonly crewlySettingsFile: string;
90
+ /** Runtime id under apiKeys.runtimeOverrides */
91
+ readonly crewlyRuntimeId: "gemini-cli";
92
+ };
93
+ };
94
+ /**
95
+ * Claude Code login state.
96
+ *
97
+ * @param deps - Inputs
98
+ * @returns Status
99
+ */
100
+ export declare function checkClaudeAuth(deps: RuntimeAuthDeps): RuntimeAuthStatus;
101
+ /**
102
+ * Codex CLI login state.
103
+ *
104
+ * @param deps - Inputs
105
+ * @returns Status
106
+ */
107
+ export declare function checkCodexAuth(deps: RuntimeAuthDeps): RuntimeAuthStatus;
108
+ /**
109
+ * Whether Crewly has a Gemini API key it hands to Gemini sessions (settings
110
+ * global key or a gemini-cli runtime override, else the env).
111
+ *
112
+ * @param deps - Inputs
113
+ * @returns Where the key comes from, or null
114
+ */
115
+ export declare function findCrewlyGeminiKey(deps: RuntimeAuthDeps): string | null;
116
+ /**
117
+ * Gemini CLI login state.
118
+ *
119
+ * @param deps - Inputs
120
+ * @returns Status
121
+ */
122
+ export declare function checkGeminiAuth(deps: RuntimeAuthDeps): RuntimeAuthStatus;
123
+ /**
124
+ * Check every runtime.
125
+ *
126
+ * @param deps - Inputs
127
+ * @returns Claude, Codex, Gemini — in that order
128
+ */
129
+ export declare function checkRuntimeAuth(deps: RuntimeAuthDeps): RuntimeAuthStatus[];
130
+ //# sourceMappingURL=runtime-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-auth.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/runtime-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,8BAA8B;AAC9B,MAAM,WAAW,iBAAiB;IACjC,6CAA6C;IAC7C,EAAE,EAAE,SAAS,CAAC;IACd,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,8BAA8B;AAC9B,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC/B,kBAAkB;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACvB;AAED,uCAAuC;AACvC,eAAO,MAAM,iBAAiB;;;;;;QAM5B,mEAAmE;;;;;QAKnE,sCAAsC;;QAEtC,4EAA4E;;QAE5E,+DAA+D;;;;;;;;;;;;;;;;;;QAkB/D,wEAAwE;;;;QAIxE,uCAAuC;;QAEvC,4CAA4C;;QAE5C,gDAAgD;;;CAGxC,CAAC;AAkDX;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAgCxE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAYvE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAexE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAiCxE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAE3E"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Is an AI runtime (Claude Code, Codex, Gemini CLI) installed AND logged in?
3
+ *
4
+ * `crewly doctor` used to say "All checks passed" on machines where no agent
5
+ * could ever start (#779). An agent needs a runtime binary on PATH and a
6
+ * saved login; without the login it stops at a sign-in screen.
7
+ *
8
+ * Detection only reads files and environment variable NAMES; it never prints
9
+ * or returns a secret value.
10
+ *
11
+ * - Claude Code: first-run setup finished (`hasCompletedOnboarding`, the #782
12
+ * check) plus a credential: an OAuth account in its config, an API key in
13
+ * its config, a credentials file, an `apiKeyHelper`, or an auth env var.
14
+ * - Codex: `$CODEX_HOME/auth.json` (default `~/.codex`) holds tokens or an
15
+ * API key (written by `codex login`).
16
+ * - Gemini CLI: an auth method saved in `~/.gemini/settings.json` with its
17
+ * credential present, or a Gemini API key Crewly can hand it — Crewly then
18
+ * pre-selects "Use Gemini API Key" at launch (#781).
19
+ *
20
+ * @module cli/utils/runtime-auth
21
+ */
22
+ import * as fs from 'fs';
23
+ import * as path from 'path';
24
+ import { GEMINI_API_KEY_AUTH_TYPE, LEGACY_AUTH_TYPE_KEY, } from '../../../backend/src/utils/gemini-auth-settings.js';
25
+ /** Static facts about each runtime. */
26
+ export const RUNTIME_AUTH_INFO = {
27
+ claude: {
28
+ displayName: 'Claude Code',
29
+ bin: 'claude',
30
+ install: 'npm install -g @anthropic-ai/claude-code',
31
+ login: 'run `claude` once in a terminal: choose a theme and log in (or /login)',
32
+ /** Env vars that authenticate Claude Code without a saved login */
33
+ authEnv: ['ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'CLAUDE_CODE_OAUTH_TOKEN', 'CLAUDE_CODE_USE_BEDROCK', 'CLAUDE_CODE_USE_VERTEX'],
34
+ configDirEnv: 'CLAUDE_CONFIG_DIR',
35
+ configFile: '.claude.json',
36
+ onboardedKey: 'hasCompletedOnboarding',
37
+ /** Config keys that record a login */
38
+ loginKeys: ['oauthAccount', 'primaryApiKey'],
39
+ /** Claude's data directory under $HOME (unless CLAUDE_CONFIG_DIR is set) */
40
+ dataDir: '.claude',
41
+ /** Credentials file (Linux; macOS keeps it in the Keychain) */
42
+ credentialsFile: '.credentials.json',
43
+ settingsFile: 'settings.json',
44
+ },
45
+ codex: {
46
+ displayName: 'Codex CLI',
47
+ bin: 'codex',
48
+ install: 'npm install -g @openai/codex',
49
+ login: 'codex login (API key: printenv OPENAI_API_KEY | codex login --with-api-key)',
50
+ homeEnv: 'CODEX_HOME',
51
+ homeDir: '.codex',
52
+ authFile: 'auth.json',
53
+ },
54
+ gemini: {
55
+ displayName: 'Gemini CLI',
56
+ bin: 'gemini',
57
+ install: 'npm install -g @google/gemini-cli',
58
+ login: 'run `gemini` once and choose "Login with Google", or set GEMINI_API_KEY (or add a Gemini key in Crewly Settings)',
59
+ /** Env vars Crewly reads a Gemini key from (API_KEY_ENV_VARS.gemini) */
60
+ keyEnv: ['GOOGLE_GENERATIVE_AI_API_KEY', 'GEMINI_API_KEY'],
61
+ settingsFile: path.join('.gemini', 'settings.json'),
62
+ oauthCredsFile: path.join('.gemini', 'oauth_creds.json'),
63
+ /** Gemini's Google-login auth types */
64
+ googleLoginTypes: ['oauth-personal', 'login-with-google'],
65
+ /** Crewly settings file holding API keys */
66
+ crewlySettingsFile: path.join('.crewly', 'settings.json'),
67
+ /** Runtime id under apiKeys.runtimeOverrides */
68
+ crewlyRuntimeId: 'gemini-cli',
69
+ },
70
+ };
71
+ /**
72
+ * Read and parse a JSON object file.
73
+ *
74
+ * @param file - Path
75
+ * @returns The object, or null when missing / unreadable / not an object
76
+ */
77
+ function readJsonObject(file) {
78
+ try {
79
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
80
+ return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ /**
87
+ * Whether a value is present (non-empty string or non-null object).
88
+ *
89
+ * @param value - Candidate
90
+ * @returns True when set
91
+ */
92
+ function isSet(value) {
93
+ if (typeof value === 'string')
94
+ return value.trim().length > 0;
95
+ return value !== null && typeof value === 'object';
96
+ }
97
+ /**
98
+ * First env var name (from `names`) that has a value.
99
+ *
100
+ * @param env - Environment
101
+ * @param names - Candidate names
102
+ * @returns The name, or null
103
+ */
104
+ function firstSetEnv(env, names) {
105
+ return names.find((name) => isSet(env[name])) ?? null;
106
+ }
107
+ /**
108
+ * Fix command: install (when missing) and log in.
109
+ *
110
+ * @param info - Runtime facts
111
+ * @param installed - Binary present
112
+ * @returns Command text
113
+ */
114
+ function fixFor(info, installed) {
115
+ return installed ? info.login : `${info.install}, then ${info.login}`;
116
+ }
117
+ /**
118
+ * Claude Code login state.
119
+ *
120
+ * @param deps - Inputs
121
+ * @returns Status
122
+ */
123
+ export function checkClaudeAuth(deps) {
124
+ const info = RUNTIME_AUTH_INFO.claude;
125
+ const installed = deps.which(info.bin);
126
+ const base = { id: 'claude', displayName: info.displayName, installed, fix: fixFor(info, installed) };
127
+ if (!installed)
128
+ return { ...base, loggedIn: false, detail: 'not installed' };
129
+ // CLAUDE_CONFIG_DIR relocates everything: .claude.json, .credentials.json,
130
+ // settings.json. Without it: ~/.claude.json and ~/.claude/<file>.
131
+ const customDir = deps.env[info.configDirEnv];
132
+ const configDir = customDir || deps.homeDir;
133
+ const dataDir = customDir || path.join(deps.homeDir, info.dataDir);
134
+ const config = readJsonObject(path.join(configDir, info.configFile));
135
+ if (!config || config[info.onboardedKey] !== true) {
136
+ return { ...base, loggedIn: false, detail: 'installed but never set up — agents stop at its theme and login screens' };
137
+ }
138
+ const envName = firstSetEnv(deps.env, info.authEnv);
139
+ const configKey = info.loginKeys.find((key) => isSet(config[key]));
140
+ const credentials = fs.existsSync(path.join(dataDir, info.credentialsFile));
141
+ const settings = readJsonObject(path.join(dataDir, info.settingsFile));
142
+ const helper = settings ? isSet(settings.apiKeyHelper) : false;
143
+ const source = configKey === 'oauthAccount' ? 'account login'
144
+ : configKey ? 'API key login'
145
+ : credentials ? 'credentials file'
146
+ : helper ? 'apiKeyHelper'
147
+ : envName ? `$${envName}`
148
+ : null;
149
+ if (!source) {
150
+ return { ...base, loggedIn: false, detail: 'set up, but no login found (logged out?)', fix: 'run `claude` and log in with /login' };
151
+ }
152
+ return { ...base, loggedIn: true, detail: `set up and logged in (${source})` };
153
+ }
154
+ /**
155
+ * Codex CLI login state.
156
+ *
157
+ * @param deps - Inputs
158
+ * @returns Status
159
+ */
160
+ export function checkCodexAuth(deps) {
161
+ const info = RUNTIME_AUTH_INFO.codex;
162
+ const installed = deps.which(info.bin);
163
+ const base = { id: 'codex', displayName: info.displayName, installed, fix: fixFor(info, installed) };
164
+ if (!installed)
165
+ return { ...base, loggedIn: false, detail: 'not installed' };
166
+ const codexHome = deps.env[info.homeEnv] || path.join(deps.homeDir, info.homeDir);
167
+ const authFile = path.join(codexHome, info.authFile);
168
+ const auth = readJsonObject(authFile);
169
+ if (auth && isSet(auth.tokens))
170
+ return { ...base, loggedIn: true, detail: 'logged in (ChatGPT account)' };
171
+ if (auth && isSet(auth.OPENAI_API_KEY))
172
+ return { ...base, loggedIn: true, detail: 'logged in (API key)' };
173
+ return { ...base, loggedIn: false, detail: `installed but not logged in (no login in ${authFile})` };
174
+ }
175
+ /**
176
+ * Whether Crewly has a Gemini API key it hands to Gemini sessions (settings
177
+ * global key or a gemini-cli runtime override, else the env).
178
+ *
179
+ * @param deps - Inputs
180
+ * @returns Where the key comes from, or null
181
+ */
182
+ export function findCrewlyGeminiKey(deps) {
183
+ const info = RUNTIME_AUTH_INFO.gemini;
184
+ const settings = readJsonObject(path.join(deps.homeDir, info.crewlySettingsFile));
185
+ const apiKeys = settings && typeof settings.apiKeys === 'object' && settings.apiKeys !== null
186
+ ? settings.apiKeys
187
+ : null;
188
+ if (apiKeys) {
189
+ const overrides = (apiKeys.runtimeOverrides ?? {});
190
+ const override = overrides[info.crewlyRuntimeId]?.gemini;
191
+ if (override && override.source === 'custom' && isSet(override.key))
192
+ return 'Crewly settings (Gemini runtime key)';
193
+ const global = (apiKeys.global ?? {});
194
+ if (isSet(global.gemini))
195
+ return 'Crewly settings';
196
+ }
197
+ const envName = firstSetEnv(deps.env, info.keyEnv);
198
+ return envName ? `$${envName}` : null;
199
+ }
200
+ /**
201
+ * Gemini CLI login state.
202
+ *
203
+ * @param deps - Inputs
204
+ * @returns Status
205
+ */
206
+ export function checkGeminiAuth(deps) {
207
+ const info = RUNTIME_AUTH_INFO.gemini;
208
+ const installed = deps.which(info.bin);
209
+ const base = { id: 'gemini', displayName: info.displayName, installed, fix: fixFor(info, installed) };
210
+ if (!installed)
211
+ return { ...base, loggedIn: false, detail: 'not installed' };
212
+ const settings = readJsonObject(path.join(deps.homeDir, info.settingsFile));
213
+ const security = (settings?.security ?? {});
214
+ const auth = (security.auth ?? {});
215
+ const selected = [auth.selectedType, settings?.[LEGACY_AUTH_TYPE_KEY]].find((v) => typeof v === 'string' && v.length > 0) ?? null;
216
+ const key = findCrewlyGeminiKey(deps);
217
+ if (selected && info.googleLoginTypes.includes(selected)) {
218
+ return fs.existsSync(path.join(deps.homeDir, info.oauthCredsFile))
219
+ ? { ...base, loggedIn: true, detail: 'logged in (Google account)' }
220
+ : { ...base, loggedIn: false, detail: 'set to "Login with Google", but no saved Google login', fix: 'run `gemini` once and sign in with Google' };
221
+ }
222
+ if (selected === GEMINI_API_KEY_AUTH_TYPE || !selected) {
223
+ if (key) {
224
+ return {
225
+ ...base,
226
+ loggedIn: true,
227
+ detail: selected ? `API key (${key})` : `API key (${key}); Crewly selects "Use Gemini API Key" at launch`,
228
+ };
229
+ }
230
+ return {
231
+ ...base,
232
+ loggedIn: false,
233
+ detail: selected ? 'set to use an API key, but no Gemini API key is configured' : 'no login and no Gemini API key',
234
+ };
235
+ }
236
+ // Vertex AI, Cloud Shell, compute credentials: configured outside Gemini's files.
237
+ return { ...base, loggedIn: true, detail: `auth method "${selected}" configured` };
238
+ }
239
+ /**
240
+ * Check every runtime.
241
+ *
242
+ * @param deps - Inputs
243
+ * @returns Claude, Codex, Gemini — in that order
244
+ */
245
+ export function checkRuntimeAuth(deps) {
246
+ return [checkClaudeAuth(deps), checkCodexAuth(deps), checkGeminiAuth(deps)];
247
+ }
248
+ //# sourceMappingURL=runtime-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-auth.js","sourceRoot":"","sources":["../../../../../cli/src/utils/runtime-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Safe-shutdown helpers for the CLI.
3
+ *
4
+ * The backend drains in-flight agent turns on SIGTERM/SIGINT for up to
5
+ * CREWLY_RESTART_DRAIN_MS (default 120s). Every CLI path that stops it —
6
+ * the `start` parent's signal forwarding, `crewly stop`, `crewly service
7
+ * stop|restart|upgrade` — must wait at least that long (plus a margin for the
8
+ * rest of shutdown) before escalating to SIGKILL or starting a new instance,
9
+ * or it cuts off the very turns the drain is protecting.
10
+ *
11
+ * @module cli/utils/safe-shutdown
12
+ */
13
+ /** Pause between the two signals of a "skip the drain" request (ms), beyond the backend's dedup window. */
14
+ export declare const SKIP_DRAIN_SIGNAL_GAP_MS: number;
15
+ /** One busy agent as reported by the backend. */
16
+ export interface ReadinessBusyAgent {
17
+ session: string;
18
+ since: string;
19
+ messagePreview: string;
20
+ }
21
+ /** Body of GET /api/system/restart-readiness. */
22
+ export interface RestartReadiness {
23
+ safe: boolean;
24
+ busyAgents: ReadinessBusyAgent[];
25
+ queued: number;
26
+ draining?: boolean;
27
+ }
28
+ /**
29
+ * Resolve the backend's drain timeout from the environment.
30
+ *
31
+ * @param env - Environment
32
+ * @returns Drain timeout in ms (0 = drain disabled)
33
+ */
34
+ export declare function resolveRestartDrainMs(env?: NodeJS.ProcessEnv): number;
35
+ /**
36
+ * How long a supervisor must wait after SIGTERM before it may SIGKILL.
37
+ *
38
+ * @param env - Environment
39
+ * @returns Drain timeout plus the shutdown margin (ms)
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * resolveShutdownBudgetMs({}); // 150000
44
+ * ```
45
+ */
46
+ export declare function resolveShutdownBudgetMs(env?: NodeJS.ProcessEnv): number;
47
+ /**
48
+ * Validate an unknown JSON body as restart readiness.
49
+ *
50
+ * @param body - Parsed response body
51
+ * @returns The readiness, or null if the shape does not match
52
+ */
53
+ export declare function parseReadiness(body: unknown): RestartReadiness | null;
54
+ /**
55
+ * Ask the running backend whether a restart would cut an agent off.
56
+ *
57
+ * @param port - Backend web port
58
+ * @returns Readiness, or null when the backend does not answer (not running, older version)
59
+ */
60
+ export declare function fetchRestartReadiness(port?: number | string): Promise<RestartReadiness | null>;
61
+ /**
62
+ * Human-readable lines describing readiness, for printing before a stop.
63
+ *
64
+ * @param readiness - Readiness from the backend
65
+ * @param drainMs - Drain timeout in effect
66
+ * @returns Lines to print
67
+ */
68
+ export declare function describeReadiness(readiness: RestartReadiness, drainMs: number): string[];
69
+ /** Dependencies of {@link waitForPidExit}. */
70
+ export interface WaitForExitDeps {
71
+ /** Whether the pid is alive */
72
+ isAlive: (pid: number) => boolean | Promise<boolean>;
73
+ /** Sleep */
74
+ sleep?: (ms: number) => Promise<void>;
75
+ /** Clock */
76
+ now?: () => number;
77
+ /** Progress callback, called about every PROGRESS_INTERVAL_MS */
78
+ onProgress?: (waitedMs: number) => void;
79
+ /** Poll interval (ms) */
80
+ pollMs?: number;
81
+ }
82
+ /**
83
+ * Wait for a process to exit.
84
+ *
85
+ * @param pid - Process id
86
+ * @param timeoutMs - Maximum wait
87
+ * @param deps - Liveness check and test hooks
88
+ * @returns True if the process exited within the timeout
89
+ */
90
+ export declare function waitForPidExit(pid: number, timeoutMs: number, deps: WaitForExitDeps): Promise<boolean>;
91
+ /**
92
+ * Liveness check via signal 0.
93
+ *
94
+ * @param pid - Process id
95
+ * @returns True if the process exists
96
+ */
97
+ export declare function isPidAlive(pid: number): boolean;
98
+ /** The part of a ChildProcess the shutdown handler uses. */
99
+ export interface ShutdownChild {
100
+ /** True once any signal was sent (Node sets it after a successful kill()) — not "dead" */
101
+ killed: boolean;
102
+ exitCode: number | null;
103
+ signalCode?: NodeJS.Signals | null;
104
+ kill(signal?: NodeJS.Signals | number): boolean;
105
+ once(event: 'exit', listener: (...args: unknown[]) => void): unknown;
106
+ }
107
+ /** Options for {@link createChildShutdownHandler}. */
108
+ export interface ChildShutdownOptions {
109
+ /** Wait after SIGTERM before SIGKILL (ms) — the backend's drain plus margin */
110
+ budgetMs: number;
111
+ /** Progress / status output */
112
+ log: (message: string) => void;
113
+ /** Called once every child is gone (or the hard cap passed) */
114
+ exit: () => void;
115
+ }
116
+ /**
117
+ * Build the signal handler for a parent process (the `crewly start` CLI)
118
+ * supervising backend children.
119
+ *
120
+ * First signal: SIGTERM each live child, SIGKILL only after `budgetMs`, and
121
+ * exit once all children are gone. Later signals are forwarded as another
122
+ * SIGTERM, which the backend reads as "stop draining now" — so a second
123
+ * `kill -TERM <cli pid>` or Ctrl+C still skips the drain rather than being
124
+ * swallowed here.
125
+ *
126
+ * @param getChildren - Returns the children to stop (the restart loop swaps them)
127
+ * @param options - Budget, logger, exit hook
128
+ * @returns Signal handler
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * const onSignal = createChildShutdownHandler(() => active, { budgetMs: resolveShutdownBudgetMs(), log, exit: () => process.exit(0) });
133
+ * process.on('SIGTERM', onSignal);
134
+ * ```
135
+ */
136
+ export declare function createChildShutdownHandler(getChildren: () => readonly (ShutdownChild | null | undefined)[], options: ChildShutdownOptions): () => void;
137
+ //# sourceMappingURL=safe-shutdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-shutdown.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/safe-shutdown.ts"],"names":[],"mappings":"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"}