crewly 1.20.105 → 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 (580) 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/todo-add/SKILL.md +64 -0
  24. package/config/skills/agent/core/todo-add/execute.sh +84 -0
  25. package/config/skills/agent/core/todo-add/execute.test.sh +76 -0
  26. package/config/skills/agent/core/todo-lists/SKILL.md +58 -0
  27. package/config/skills/agent/core/todo-lists/execute.sh +70 -0
  28. package/config/skills/agent/core/todo-lists/execute.test.sh +77 -0
  29. package/config/skills/agent/core/todo-tasks/SKILL.md +59 -0
  30. package/config/skills/agent/core/todo-tasks/execute.sh +78 -0
  31. package/config/skills/agent/core/todo-tasks/execute.test.sh +74 -0
  32. package/config/skills/agent/core/todo-update/SKILL.md +63 -0
  33. package/config/skills/agent/core/todo-update/execute.sh +115 -0
  34. package/config/skills/agent/core/todo-update/execute.test.sh +82 -0
  35. package/config/skills/agent/core/update-intent-task/execute.sh +1 -1
  36. package/config/skills/agent/marketing/brand-onboarding/execute.sh +1 -1
  37. package/config/skills/agent/marketing/submit-for-approval/execute.sh +1 -1
  38. package/config/skills/agent/remote-browser/SOP-google-flow-video.md +1 -1
  39. package/config/skills/agent/remote-browser/execute.sh +33 -1
  40. package/config/skills/agent/remote-browser/execute.test.sh +62 -0
  41. package/config/skills/agent/screenshot-compare/execute.sh +1 -1
  42. package/config/skills/agent/transcribe-audio/SKILL.md +1 -1
  43. package/config/skills/agent/transcribe-audio/execute.sh +1 -1
  44. package/config/skills/agent/transcribe-audio/instructions.md +1 -1
  45. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  46. package/config/skills/orchestrator/get-tasks/SKILL.md +7 -1
  47. package/config/skills/orchestrator/get-tasks/execute.sh +51 -28
  48. package/config/skills/orchestrator/get-tasks/execute.test.sh +67 -0
  49. package/config/skills/orchestrator/heartbeat/execute.sh +2 -2
  50. package/config/skills/orchestrator/list-missions/execute.sh +1 -1
  51. package/config/skills/orchestrator/list-missions/execute.test.sh +38 -11
  52. package/config/skills/team-leader/decompose-goal/SKILL.md +1 -0
  53. package/config/skills/team-leader/decompose-goal/execute.sh +17 -2
  54. package/config/skills/team-leader/delegate-task/SKILL.md +1 -0
  55. package/config/skills/team-leader/delegate-task/execute.sh +6 -2
  56. package/dist/backend/backend/src/constants.d.ts +264 -2
  57. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  58. package/dist/backend/backend/src/constants.js +255 -3
  59. package/dist/backend/backend/src/constants.js.map +1 -1
  60. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +33 -0
  61. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  62. package/dist/backend/backend/src/controllers/browser/browser.controller.js +176 -9
  63. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  64. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/chat/chat.controller.js +38 -35
  66. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +10 -45
  68. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  69. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +40 -89
  70. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  71. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +51 -0
  72. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -0
  73. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +223 -0
  74. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -0
  75. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts +25 -0
  76. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -0
  77. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +42 -0
  78. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -0
  79. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +2 -1
  80. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  81. package/dist/backend/backend/src/controllers/session/session.controller.js +21 -0
  82. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  83. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  84. package/dist/backend/backend/src/controllers/slack/slack.controller.js +51 -3
  85. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  86. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts +23 -0
  87. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts.map +1 -0
  88. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js +35 -0
  89. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js.map +1 -0
  90. package/dist/backend/backend/src/controllers/system/system.controller.d.ts +5 -3
  91. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  92. package/dist/backend/backend/src/controllers/system/system.controller.js +27 -6
  93. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  94. package/dist/backend/backend/src/controllers/system/system.routes.d.ts.map +1 -1
  95. package/dist/backend/backend/src/controllers/system/system.routes.js +3 -0
  96. package/dist/backend/backend/src/controllers/system/system.routes.js.map +1 -1
  97. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  98. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +29 -1
  99. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  100. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  101. package/dist/backend/backend/src/controllers/team/team.controller.js +86 -6
  102. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  103. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +41 -0
  104. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -0
  105. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +135 -0
  106. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -0
  107. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +18 -0
  108. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -0
  109. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +25 -0
  110. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -0
  111. package/dist/backend/backend/src/index.d.ts +70 -1
  112. package/dist/backend/backend/src/index.d.ts.map +1 -1
  113. package/dist/backend/backend/src/index.js +352 -71
  114. package/dist/backend/backend/src/index.js.map +1 -1
  115. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  116. package/dist/backend/backend/src/routes/api.routes.js +6 -0
  117. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  118. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +128 -0
  119. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -0
  120. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +200 -0
  121. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -0
  122. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  123. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +3 -1
  125. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  127. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  128. package/dist/backend/backend/src/services/agent/agent-registration.service.js +61 -4
  129. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  130. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  131. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +62 -1
  133. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  134. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  136. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  138. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +0 -2
  140. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  141. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  142. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +113 -10
  144. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  145. package/dist/backend/backend/src/services/agent/restore-filter.d.ts +12 -0
  146. package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/agent/restore-filter.js +19 -0
  148. package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
  149. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  151. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  153. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  154. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  155. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  156. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +57 -5
  157. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  158. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +98 -18
  159. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  160. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +12 -1
  161. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  162. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +25 -4
  163. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  164. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +2 -1
  165. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +5 -1
  167. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +38 -0
  169. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
  170. package/dist/backend/backend/src/services/browser/browser-session.service.js +34 -0
  171. package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
  172. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  173. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  175. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  176. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
  177. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +7 -2
  178. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
  179. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  180. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  182. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  183. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +63 -0
  184. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -0
  185. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +72 -0
  186. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -0
  187. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  188. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  190. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  191. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +6 -1
  193. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/connector/connector-access.service.d.ts +2 -2
  195. package/dist/backend/backend/src/services/connector/connector-access.service.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/connector/connector-access.service.js +2 -2
  197. package/dist/backend/backend/src/services/connector/connector-access.service.js.map +1 -1
  198. package/dist/backend/backend/src/services/core/retry.util.d.ts +5 -0
  199. package/dist/backend/backend/src/services/core/retry.util.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/core/retry.util.js +2 -2
  201. package/dist/backend/backend/src/services/core/retry.util.js.map +1 -1
  202. package/dist/backend/backend/src/services/factory.service.js +3 -3
  203. package/dist/backend/backend/src/services/factory.service.js.map +1 -1
  204. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +24 -1
  206. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  207. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +9 -0
  208. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  209. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +55 -0
  210. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  211. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  212. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  213. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  214. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  215. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  216. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  217. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  218. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  219. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +250 -0
  220. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -0
  221. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +367 -0
  222. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -0
  223. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +116 -0
  224. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -0
  225. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +220 -0
  226. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -0
  227. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
  228. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +22 -16
  229. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
  230. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +11 -1
  231. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
  232. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  233. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +9 -9
  234. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  235. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  236. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  237. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  238. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  239. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +153 -0
  240. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -0
  241. package/dist/backend/backend/src/services/restart/interrupted-turns.js +279 -0
  242. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -0
  243. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  244. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  245. package/dist/backend/backend/src/services/restart/restart-drain.service.js +298 -0
  246. package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -0
  247. package/dist/backend/backend/src/services/restart/turn-probe.d.ts +52 -0
  248. package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -0
  249. package/dist/backend/backend/src/services/restart/turn-probe.js +61 -0
  250. package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -0
  251. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  252. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  253. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  254. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  255. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +2 -0
  256. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  257. package/dist/backend/backend/src/services/session/pty/pty-session.js +53 -1
  258. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  259. package/dist/backend/backend/src/services/session/session-binding.d.ts +125 -0
  260. package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -0
  261. package/dist/backend/backend/src/services/session/session-binding.js +183 -0
  262. package/dist/backend/backend/src/services/session/session-binding.js.map +1 -0
  263. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  264. package/dist/backend/backend/src/services/session/session-handoff.service.js +19 -0
  265. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  266. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  267. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  268. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  269. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  270. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts +4 -3
  271. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -1
  272. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +4 -3
  273. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -1
  274. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +72 -7
  275. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/slack/slack-initializer.js +185 -23
  277. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  278. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  279. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  280. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  281. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  282. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts +59 -0
  283. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts.map +1 -0
  284. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js +69 -0
  285. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js.map +1 -0
  286. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  287. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +64 -3
  289. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  290. package/dist/backend/backend/src/services/slack/slack.service.d.ts +33 -1
  291. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/slack/slack.service.js +129 -4
  293. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts +108 -0
  295. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts.map +1 -0
  296. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js +193 -0
  297. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js.map +1 -0
  298. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  299. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  300. package/dist/backend/backend/src/services/task-pool/pool-storage.js +30 -0
  301. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  302. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  303. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  304. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +55 -1
  305. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  306. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +7 -0
  307. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  308. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +32 -1
  309. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  310. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  311. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +4 -3
  312. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  313. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +12 -0
  315. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  316. package/dist/backend/backend/src/services/v3/request.service.d.ts +7 -0
  317. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/v3/request.service.js +17 -0
  319. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  321. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  322. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  323. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  324. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  325. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  326. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +566 -0
  327. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  328. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  329. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +3 -3
  330. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  331. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -4
  332. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  333. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +40 -10
  334. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  335. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +1 -0
  336. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +3 -3
  338. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  339. package/dist/backend/backend/src/types/slack.types.d.ts +29 -0
  340. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  341. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  342. package/dist/backend/backend/src/types/thread-status.types.d.ts +26 -0
  343. package/dist/backend/backend/src/types/thread-status.types.d.ts.map +1 -1
  344. package/dist/backend/backend/src/types/thread-status.types.js +17 -0
  345. package/dist/backend/backend/src/types/thread-status.types.js.map +1 -1
  346. package/dist/backend/backend/src/types/v2/index.d.ts +3 -2
  347. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  348. package/dist/backend/backend/src/types/v2/index.js +1 -1
  349. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  350. package/dist/backend/backend/src/types/v2/request.types.d.ts +39 -3
  351. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  352. package/dist/backend/backend/src/types/v2/request.types.js +11 -2
  353. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  354. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +173 -0
  355. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  356. package/dist/backend/backend/src/types/v2/ticket.types.js +203 -0
  357. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -0
  358. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +26 -0
  359. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  360. package/dist/backend/backend/src/utils/agent-caller.utils.js +40 -3
  361. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  362. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  363. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  364. package/dist/backend/backend/src/utils/gemini-auth-settings.js +104 -0
  365. package/dist/backend/backend/src/utils/gemini-auth-settings.js.map +1 -0
  366. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts +56 -0
  367. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  368. package/dist/backend/backend/src/utils/local-api-url.utils.js +80 -0
  369. package/dist/backend/backend/src/utils/local-api-url.utils.js.map +1 -0
  370. package/dist/backend/build-info.json +2 -2
  371. package/dist/backend/config/constants.d.ts +40 -0
  372. package/dist/backend/config/constants.d.ts.map +1 -1
  373. package/dist/backend/config/constants.js +41 -0
  374. package/dist/backend/config/constants.js.map +1 -1
  375. package/dist/backend/config/index.d.ts +4 -2
  376. package/dist/backend/config/index.d.ts.map +1 -1
  377. package/dist/backend/config/index.js +2 -2
  378. package/dist/backend/config/index.js.map +1 -1
  379. package/dist/cli/backend/src/constants.d.ts +264 -2
  380. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  381. package/dist/cli/backend/src/constants.js +255 -3
  382. package/dist/cli/backend/src/constants.js.map +1 -1
  383. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  384. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  385. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +3 -1
  386. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  387. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  388. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  389. package/dist/cli/backend/src/services/agent/agent-registration.service.js +61 -4
  390. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  391. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  392. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  393. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +62 -1
  394. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  395. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  396. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  397. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  398. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  399. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  400. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +0 -2
  401. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  402. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  403. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  404. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +113 -10
  405. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  406. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  407. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  408. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  409. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  410. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  411. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  412. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  413. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  414. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  416. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  417. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  418. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  419. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  420. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  421. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  422. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  423. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  424. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  425. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  426. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  427. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  428. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  429. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  430. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  431. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  432. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  433. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  434. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  435. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  436. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  437. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  438. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  439. package/dist/cli/backend/src/services/restart/restart-drain.service.js +298 -0
  440. package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -0
  441. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  442. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  443. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  444. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  445. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +2 -0
  446. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  447. package/dist/cli/backend/src/services/session/pty/pty-session.js +53 -1
  448. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  449. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  450. package/dist/cli/backend/src/services/session/session-handoff.service.js +19 -0
  451. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  452. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  453. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  454. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  455. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  456. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  457. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  458. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  459. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  460. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  461. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  462. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +64 -3
  463. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  464. package/dist/cli/backend/src/services/slack/slack.service.d.ts +33 -1
  465. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  466. package/dist/cli/backend/src/services/slack/slack.service.js +129 -4
  467. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  468. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  469. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  470. package/dist/cli/backend/src/services/task-pool/pool-storage.js +30 -0
  471. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  472. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  473. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  474. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +55 -1
  475. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  476. package/dist/cli/backend/src/services/v3/request.service.d.ts +7 -0
  477. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  478. package/dist/cli/backend/src/services/v3/request.service.js +17 -0
  479. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  480. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  481. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  482. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  483. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  484. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  485. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  486. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +566 -0
  487. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  488. package/dist/cli/backend/src/types/slack.types.d.ts +29 -0
  489. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  490. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  491. package/dist/cli/backend/src/types/thread-status.types.d.ts +26 -0
  492. package/dist/cli/backend/src/types/thread-status.types.d.ts.map +1 -1
  493. package/dist/cli/backend/src/types/thread-status.types.js +17 -0
  494. package/dist/cli/backend/src/types/thread-status.types.js.map +1 -1
  495. package/dist/cli/backend/src/types/v2/index.d.ts +3 -2
  496. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  497. package/dist/cli/backend/src/types/v2/index.js +1 -1
  498. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  499. package/dist/cli/backend/src/types/v2/request.types.d.ts +39 -3
  500. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  501. package/dist/cli/backend/src/types/v2/request.types.js +11 -2
  502. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  503. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +173 -0
  504. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  505. package/dist/cli/backend/src/types/v2/ticket.types.js +203 -0
  506. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -0
  507. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  508. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  509. package/dist/cli/backend/src/utils/gemini-auth-settings.js +104 -0
  510. package/dist/cli/backend/src/utils/gemini-auth-settings.js.map +1 -0
  511. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts +56 -0
  512. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  513. package/dist/cli/backend/src/utils/local-api-url.utils.js +80 -0
  514. package/dist/cli/backend/src/utils/local-api-url.utils.js.map +1 -0
  515. package/dist/cli/cli/src/commands/doctor.d.ts +73 -2
  516. package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -1
  517. package/dist/cli/cli/src/commands/doctor.js +250 -8
  518. package/dist/cli/cli/src/commands/doctor.js.map +1 -1
  519. package/dist/cli/cli/src/commands/install.js +2 -0
  520. package/dist/cli/cli/src/commands/install.js.map +1 -1
  521. package/dist/cli/cli/src/commands/onboard.d.ts +68 -0
  522. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  523. package/dist/cli/cli/src/commands/onboard.js +149 -18
  524. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  525. package/dist/cli/cli/src/commands/service.d.ts +6 -0
  526. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  527. package/dist/cli/cli/src/commands/service.js +152 -50
  528. package/dist/cli/cli/src/commands/service.js.map +1 -1
  529. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  530. package/dist/cli/cli/src/commands/start.js +25 -80
  531. package/dist/cli/cli/src/commands/start.js.map +1 -1
  532. package/dist/cli/cli/src/commands/status.d.ts +17 -1
  533. package/dist/cli/cli/src/commands/status.d.ts.map +1 -1
  534. package/dist/cli/cli/src/commands/status.js +133 -68
  535. package/dist/cli/cli/src/commands/status.js.map +1 -1
  536. package/dist/cli/cli/src/commands/stop.d.ts +28 -1
  537. package/dist/cli/cli/src/commands/stop.d.ts.map +1 -1
  538. package/dist/cli/cli/src/commands/stop.js +260 -100
  539. package/dist/cli/cli/src/commands/stop.js.map +1 -1
  540. package/dist/cli/cli/src/index.js +3 -2
  541. package/dist/cli/cli/src/index.js.map +1 -1
  542. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts +68 -0
  543. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts.map +1 -0
  544. package/dist/cli/cli/src/scripts/ensure-node-pty.js +167 -0
  545. package/dist/cli/cli/src/scripts/ensure-node-pty.js.map +1 -0
  546. package/dist/cli/cli/src/utils/backend-status.d.ts +175 -0
  547. package/dist/cli/cli/src/utils/backend-status.d.ts.map +1 -0
  548. package/dist/cli/cli/src/utils/backend-status.js +322 -0
  549. package/dist/cli/cli/src/utils/backend-status.js.map +1 -0
  550. package/dist/cli/cli/src/utils/marketplace.d.ts +31 -2
  551. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  552. package/dist/cli/cli/src/utils/marketplace.js +78 -20
  553. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  554. package/dist/cli/cli/src/utils/native-toolchain.d.ts +53 -8
  555. package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -1
  556. package/dist/cli/cli/src/utils/native-toolchain.js +107 -15
  557. package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -1
  558. package/dist/cli/cli/src/utils/process-cleanup.d.ts +38 -6
  559. package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -1
  560. package/dist/cli/cli/src/utils/process-cleanup.js +83 -53
  561. package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -1
  562. package/dist/cli/cli/src/utils/runtime-auth.d.ts +130 -0
  563. package/dist/cli/cli/src/utils/runtime-auth.d.ts.map +1 -0
  564. package/dist/cli/cli/src/utils/runtime-auth.js +248 -0
  565. package/dist/cli/cli/src/utils/runtime-auth.js.map +1 -0
  566. package/dist/cli/cli/src/utils/safe-shutdown.d.ts +137 -0
  567. package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -0
  568. package/dist/cli/cli/src/utils/safe-shutdown.js +236 -0
  569. package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -0
  570. package/dist/cli/config/constants.d.ts +40 -0
  571. package/dist/cli/config/constants.d.ts.map +1 -1
  572. package/dist/cli/config/constants.js +41 -0
  573. package/dist/cli/config/constants.js.map +1 -1
  574. package/dist/cli/config/index.d.ts +4 -2
  575. package/dist/cli/config/index.d.ts.map +1 -1
  576. package/dist/cli/config/index.js +2 -2
  577. package/dist/cli/config/index.js.map +1 -1
  578. package/frontend/dist/assets/{index-1fd45a2a.js → index-f7b99e81.js} +262 -262
  579. package/frontend/dist/index.html +1 -1
  580. package/package.json +4 -4
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Ticket type definitions (specs/ticket-loop.md).
3
+ *
4
+ * A ticket IS a {@link Request} with a few extra fields — no new store. This
5
+ * module holds those fields' types plus the pure helpers every surface needs:
6
+ * number formatting / parsing, the delivered-message marker, priority labels
7
+ * and the derived board column.
8
+ *
9
+ * @module types/v2/ticket.types
10
+ */
11
+ import { TICKET_CONSTANTS } from '../../constants.js';
12
+ /** All valid {@link TicketKind} values. */
13
+ export const TICKET_KINDS = ['issue', 'feature', 'idea'];
14
+ /** All board columns in display order. */
15
+ export const TICKET_BOARD_COLUMNS = [
16
+ 'idea',
17
+ 'todo',
18
+ 'in_progress',
19
+ 'blocked',
20
+ 'to_review',
21
+ 'done',
22
+ 'cancelled',
23
+ ];
24
+ // ---------------------------------------------------------------------------
25
+ // Ticket number helpers
26
+ // ---------------------------------------------------------------------------
27
+ /** `TKT-12`, `tkt 12`, `TKT-012` → 12. */
28
+ const TICKET_NUMBER_REF = /^\s*tkt[-\s_]?(\d+)\s*$/i;
29
+ /** Bare digits → ticket number. */
30
+ const BARE_NUMBER_REF = /^\s*(\d+)\s*$/;
31
+ /**
32
+ * Render a ticket number for display.
33
+ *
34
+ * @param n - Ticket number
35
+ * @returns `TKT-` + the number zero-padded to three digits
36
+ *
37
+ * @example
38
+ * formatTicketNumber(7) // 'TKT-007'
39
+ * formatTicketNumber(1234) // 'TKT-1234'
40
+ */
41
+ export function formatTicketNumber(n) {
42
+ return `${TICKET_CONSTANTS.NUMBER_PREFIX}${String(Math.max(0, Math.floor(n))).padStart(TICKET_CONSTANTS.NUMBER_PAD, '0')}`;
43
+ }
44
+ /**
45
+ * Parse a ticket reference into a number, when it is one.
46
+ *
47
+ * @param ref - `TKT-123`, `tkt-123` or `123`
48
+ * @returns The number, or null when `ref` is not a number-style reference
49
+ */
50
+ export function parseTicketNumber(ref) {
51
+ const m = TICKET_NUMBER_REF.exec(ref) ?? BARE_NUMBER_REF.exec(ref);
52
+ if (!m)
53
+ return null;
54
+ const n = Number.parseInt(m[1], 10);
55
+ return Number.isFinite(n) && n > 0 ? n : null;
56
+ }
57
+ /**
58
+ * Whether a string is a `TKT-123` style reference (not a bare number).
59
+ *
60
+ * @param ref - Candidate reference
61
+ * @returns True for `TKT-…` references
62
+ */
63
+ export function isTicketNumberRef(ref) {
64
+ return TICKET_NUMBER_REF.test(ref);
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Delivered-message marker
68
+ // ---------------------------------------------------------------------------
69
+ /** `[TICKET:TKT-123 <uuid>]` */
70
+ const TICKET_MARKER = /\[TICKET:(TKT-\d+) ([A-Za-z0-9-]+)\]/g;
71
+ /**
72
+ * Build the marker added to a message delivered to an agent, so the agent
73
+ * (and `addToPool`) know which ticket the message belongs to.
74
+ *
75
+ * @param ticket - The ticket (needs id + ticketNumber)
76
+ * @returns `[TICKET:TKT-123 <id>]`, or '' when the ticket has no number
77
+ */
78
+ export function formatTicketMarker(ticket) {
79
+ if (typeof ticket.ticketNumber !== 'number')
80
+ return '';
81
+ return `[TICKET:${formatTicketNumber(ticket.ticketNumber)} ${ticket.id}]`;
82
+ }
83
+ /**
84
+ * Every ticket marker in a delivered text, in order, de-duplicated by id.
85
+ *
86
+ * @param text - Delivered text
87
+ * @returns Referenced tickets
88
+ */
89
+ export function parseTicketMarkers(text) {
90
+ const out = [];
91
+ const seen = new Set();
92
+ for (const m of text.matchAll(TICKET_MARKER)) {
93
+ if (seen.has(m[2]))
94
+ continue;
95
+ seen.add(m[2]);
96
+ out.push({ tkt: m[1], id: m[2] });
97
+ }
98
+ return out;
99
+ }
100
+ /**
101
+ * The one ticket a set of delivered texts refers to.
102
+ *
103
+ * Used to link a WorkItem to the ticket of the turn that created it. When the
104
+ * turn holds messages from two different tickets there is no way to tell which
105
+ * one the WorkItem is for, so nothing is linked (the agent can still pass
106
+ * `--request-id`).
107
+ *
108
+ * @param texts - Texts delivered in the current turn
109
+ * @returns The ticket id, or null when none or more than one ticket is referenced
110
+ */
111
+ export function uniqueTicketIdFromTexts(texts) {
112
+ const ids = new Set();
113
+ for (const t of texts) {
114
+ for (const ref of parseTicketMarkers(t))
115
+ ids.add(ref.id);
116
+ }
117
+ return ids.size === 1 ? [...ids][0] : null;
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // Priority + board
121
+ // ---------------------------------------------------------------------------
122
+ /**
123
+ * Map the internal priority to the displayed P-label.
124
+ *
125
+ * @param priority - Request priority
126
+ * @returns P0 (urgent) … P3 (low)
127
+ */
128
+ export function ticketPriorityLabel(priority) {
129
+ switch (priority) {
130
+ case 'urgent':
131
+ return 'P0';
132
+ case 'high':
133
+ return 'P1';
134
+ case 'low':
135
+ return 'P3';
136
+ default:
137
+ return 'P2';
138
+ }
139
+ }
140
+ /** WorkItem statuses that count as terminal success for "to review". */
141
+ const WORK_ITEM_SUCCESS = new Set(['done', 'verified']);
142
+ /**
143
+ * Derive the board column of a ticket (never stored).
144
+ *
145
+ * @param request - The ticket
146
+ * @param workItems - Its WorkItems, when known (missing ones are ignored)
147
+ * @returns Board column
148
+ */
149
+ export function deriveBoardColumn(request, workItems = []) {
150
+ if (request.status === 'done')
151
+ return 'done';
152
+ if (request.status === 'cancelled')
153
+ return 'cancelled';
154
+ // Work finished and the owner has to look at it — ahead of "blocked", which
155
+ // `waiting_confirmation` otherwise maps to.
156
+ if (request.requiresConfirmation &&
157
+ workItems.length > 0 &&
158
+ workItems.every((w) => WORK_ITEM_SUCCESS.has(w.status))) {
159
+ return 'to_review';
160
+ }
161
+ switch (request.status) {
162
+ case 'blocked':
163
+ case 'waiting_confirmation':
164
+ return 'blocked';
165
+ case 'running':
166
+ return 'in_progress';
167
+ case 'open':
168
+ return request.kind === 'idea' ? 'idea' : 'todo';
169
+ default:
170
+ return 'todo';
171
+ }
172
+ }
173
+ /**
174
+ * Whether a string is a valid board column.
175
+ *
176
+ * @param value - Candidate
177
+ * @returns True when it is a {@link TicketBoardColumn}
178
+ */
179
+ export function isTicketBoardColumn(value) {
180
+ return TICKET_BOARD_COLUMNS.includes(value);
181
+ }
182
+ /**
183
+ * Whether a string is a valid ticket kind.
184
+ *
185
+ * @param value - Candidate
186
+ * @returns True when it is a {@link TicketKind}
187
+ */
188
+ export function isTicketKind(value) {
189
+ return TICKET_KINDS.includes(value);
190
+ }
191
+ /**
192
+ * Pick the kind of a new ticket from its text.
193
+ *
194
+ * Default `feature`; a 🐛 makes it an `issue` (the Phase 4 bug button sends
195
+ * one). `idea` is only set explicitly (the Phase 4 `ticket-idea` skill).
196
+ *
197
+ * @param text - Message text
198
+ * @returns The kind
199
+ */
200
+ export function inferTicketKind(text) {
201
+ return text.includes('🐛') ? 'issue' : 'feature';
202
+ }
203
+ //# sourceMappingURL=ticket.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Pre-select Gemini CLI's authentication method.
3
+ *
4
+ * Interactive Gemini CLI reads its auth method only from settings
5
+ * (`security.auth.selectedType`). With none saved it opens the
6
+ * "How would you like to authenticate for this project?" dialog on every
7
+ * launch, even when GEMINI_API_KEY is set ("Existing API key detected ...
8
+ * Select 'Gemini API Key' option to use it"). Non-interactive runs fall back
9
+ * to the environment, which is why `gemini` looks fine when run by hand
10
+ * without a terminal but a Crewly-launched session stalls on the dialog and
11
+ * never reaches its ready prompt.
12
+ *
13
+ * Verified against Gemini CLI 0.61.0 in a clean HOME: no saved method +
14
+ * GEMINI_API_KEY -> auth dialog at 2s; `selectedType: "gemini-api-key"` ->
15
+ * ready prompt at 2s.
16
+ *
17
+ * @module utils/gemini-auth-settings
18
+ */
19
+ /** Gemini CLI's value for "Use Gemini API Key". */
20
+ export declare const GEMINI_API_KEY_AUTH_TYPE = "gemini-api-key";
21
+ /** Top-level key older Gemini CLI settings (v1 schema) used for the auth method. */
22
+ export declare const LEGACY_AUTH_TYPE_KEY = "selectedAuthType";
23
+ /** What {@link ensureGeminiApiKeyAuthSelected} did. */
24
+ export type GeminiAuthSeedResult =
25
+ /** No method was saved; "Use Gemini API Key" is now selected. */
26
+ 'seeded'
27
+ /** A method was already saved (the user's choice); left untouched. */
28
+ | 'kept'
29
+ /** The settings file exists but is not plain JSON; left untouched. */
30
+ | 'unparseable'
31
+ /** Reading or writing failed; nothing changed. */
32
+ | 'error';
33
+ /** Minimal logger accepted by this module. */
34
+ export interface GeminiAuthSettingsLogger {
35
+ warn(message: string, meta?: Record<string, unknown>): void;
36
+ info(message: string, meta?: Record<string, unknown>): void;
37
+ }
38
+ /**
39
+ * Path of Gemini CLI's user settings file.
40
+ *
41
+ * @returns `~/.gemini/settings.json`
42
+ */
43
+ export declare function getDefaultGeminiUserSettingsPath(): string;
44
+ /**
45
+ * Select "Use Gemini API Key" in Gemini's user settings when no auth method
46
+ * has been chosen yet.
47
+ *
48
+ * Call only when a Gemini API key is actually available to the session.
49
+ * Never overrides an existing choice (e.g. Login with Google), never rewrites
50
+ * a file it cannot parse, and preserves every other setting.
51
+ *
52
+ * @param logger - Optional logger
53
+ * @param settingsPath - Override for tests; defaults to ~/.gemini/settings.json
54
+ * @returns What was done
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * if (apiKey) await ensureGeminiApiKeyAuthSelected(logger);
59
+ * ```
60
+ */
61
+ export declare function ensureGeminiApiKeyAuthSelected(logger?: GeminiAuthSettingsLogger, settingsPath?: string): Promise<GeminiAuthSeedResult>;
62
+ //# sourceMappingURL=gemini-auth-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-auth-settings.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/gemini-auth-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,uDAAuD;AACvD,MAAM,MAAM,oBAAoB;AAC/B,iEAAiE;AAC/D,QAAQ;AACV,sEAAsE;GACpE,MAAM;AACR,sEAAsE;GACpE,aAAa;AACf,kDAAkD;GAChD,OAAO,CAAC;AAEX,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,8BAA8B,CACnD,MAAM,CAAC,EAAE,wBAAwB,EACjC,YAAY,GAAE,MAA2C,GACvD,OAAO,CAAC,oBAAoB,CAAC,CAmD/B"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Pre-select Gemini CLI's authentication method.
3
+ *
4
+ * Interactive Gemini CLI reads its auth method only from settings
5
+ * (`security.auth.selectedType`). With none saved it opens the
6
+ * "How would you like to authenticate for this project?" dialog on every
7
+ * launch, even when GEMINI_API_KEY is set ("Existing API key detected ...
8
+ * Select 'Gemini API Key' option to use it"). Non-interactive runs fall back
9
+ * to the environment, which is why `gemini` looks fine when run by hand
10
+ * without a terminal but a Crewly-launched session stalls on the dialog and
11
+ * never reaches its ready prompt.
12
+ *
13
+ * Verified against Gemini CLI 0.61.0 in a clean HOME: no saved method +
14
+ * GEMINI_API_KEY -> auth dialog at 2s; `selectedType: "gemini-api-key"` ->
15
+ * ready prompt at 2s.
16
+ *
17
+ * @module utils/gemini-auth-settings
18
+ */
19
+ import { promises as fsPromises } from 'fs';
20
+ import * as os from 'os';
21
+ import * as path from 'path';
22
+ /** Gemini CLI's value for "Use Gemini API Key". */
23
+ export const GEMINI_API_KEY_AUTH_TYPE = 'gemini-api-key';
24
+ /** Top-level key older Gemini CLI settings (v1 schema) used for the auth method. */
25
+ export const LEGACY_AUTH_TYPE_KEY = 'selectedAuthType';
26
+ /**
27
+ * Path of Gemini CLI's user settings file.
28
+ *
29
+ * @returns `~/.gemini/settings.json`
30
+ */
31
+ export function getDefaultGeminiUserSettingsPath() {
32
+ return path.join(os.homedir(), '.gemini', 'settings.json');
33
+ }
34
+ /**
35
+ * Select "Use Gemini API Key" in Gemini's user settings when no auth method
36
+ * has been chosen yet.
37
+ *
38
+ * Call only when a Gemini API key is actually available to the session.
39
+ * Never overrides an existing choice (e.g. Login with Google), never rewrites
40
+ * a file it cannot parse, and preserves every other setting.
41
+ *
42
+ * @param logger - Optional logger
43
+ * @param settingsPath - Override for tests; defaults to ~/.gemini/settings.json
44
+ * @returns What was done
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * if (apiKey) await ensureGeminiApiKeyAuthSelected(logger);
49
+ * ```
50
+ */
51
+ export async function ensureGeminiApiKeyAuthSelected(logger, settingsPath = getDefaultGeminiUserSettingsPath()) {
52
+ let settings = {};
53
+ try {
54
+ const raw = await fsPromises.readFile(settingsPath, 'utf8');
55
+ if (raw.trim()) {
56
+ try {
57
+ const parsed = JSON.parse(raw);
58
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
59
+ logger?.warn('Gemini settings are not a JSON object; not pre-selecting auth', { settingsPath });
60
+ return 'unparseable';
61
+ }
62
+ settings = parsed;
63
+ }
64
+ catch {
65
+ // Gemini accepts comments in settings.json; rewriting would drop them.
66
+ logger?.warn('Gemini settings could not be parsed as JSON; not pre-selecting auth', { settingsPath });
67
+ return 'unparseable';
68
+ }
69
+ }
70
+ }
71
+ catch (error) {
72
+ if (error.code !== 'ENOENT') {
73
+ logger?.warn('Could not read Gemini settings; not pre-selecting auth', { settingsPath, error: String(error) });
74
+ return 'error';
75
+ }
76
+ }
77
+ const security = (settings.security ?? {});
78
+ const auth = (security.auth ?? {});
79
+ if (typeof auth.selectedType === 'string' && auth.selectedType.length > 0) {
80
+ return 'kept';
81
+ }
82
+ // Older Gemini CLI versions saved the choice at the top level. Gemini
83
+ // migrates it on load, so adding the new key next to it would override it.
84
+ if (typeof settings[LEGACY_AUTH_TYPE_KEY] === 'string' && settings[LEGACY_AUTH_TYPE_KEY].length > 0) {
85
+ return 'kept';
86
+ }
87
+ const updated = {
88
+ ...settings,
89
+ security: { ...security, auth: { ...auth, selectedType: GEMINI_API_KEY_AUTH_TYPE } },
90
+ };
91
+ try {
92
+ await fsPromises.mkdir(path.dirname(settingsPath), { recursive: true });
93
+ await fsPromises.writeFile(settingsPath, `${JSON.stringify(updated, null, 2)}\n`, 'utf8');
94
+ logger?.info('Pre-selected "Use Gemini API Key" in Gemini settings so the auth dialog does not block startup', {
95
+ settingsPath,
96
+ });
97
+ return 'seeded';
98
+ }
99
+ catch (error) {
100
+ logger?.warn('Could not write Gemini settings; the auth dialog may appear', { settingsPath, error: String(error) });
101
+ return 'error';
102
+ }
103
+ }
104
+ //# sourceMappingURL=gemini-auth-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-auth-settings.js","sourceRoot":"","sources":["../../../../../backend/src/utils/gemini-auth-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The one place the backend's own API address comes from.
3
+ *
4
+ * Agents (`CREWLY_API_URL` in their PTY env), the in-process crewly-agent
5
+ * runtime, skills spawned by the server, and the server's own
6
+ * server-to-server calls (reconciler wake, auto-claim, dispatch writes) all
7
+ * need to reach THIS instance. They used to hard-code
8
+ * `WEB_CONSTANTS.PORTS.BACKEND` (8787), so an instance started with
9
+ * `crewly start -p 8797` handed its agents the default port and every skill
10
+ * call went to the wrong server — or to another Crewly on 8787 (#777).
11
+ *
12
+ * The server records its resolved listen port at construction
13
+ * ({@link setLocalApiPort}); everything else asks {@link getLocalApiPort} /
14
+ * {@link getLocalApiBaseUrl}. Before that (tests, scripts) the accessor
15
+ * falls back to `WEB_PORT`, then the default.
16
+ *
17
+ * `CREWLY_API_URL` in the backend's OWN environment is deliberately NOT
18
+ * consulted: a backend launched from inside an agent shell inherits that
19
+ * agent's URL, which points at a different instance.
20
+ *
21
+ * @module utils/local-api-url
22
+ */
23
+ /**
24
+ * Parse a port value, rejecting anything that is not an integer in 1..65535.
25
+ *
26
+ * @param value - Candidate port (number or numeric string)
27
+ * @returns The port, or null when invalid
28
+ */
29
+ export declare function parsePort(value: unknown): number | null;
30
+ /**
31
+ * Record the port this server listens on. Called once by the server with its
32
+ * resolved `webPort` (from `-p` / `WEB_PORT` / default).
33
+ *
34
+ * @param port - The listen port
35
+ * @throws {Error} When the port is not a valid TCP port
36
+ */
37
+ export declare function setLocalApiPort(port: number): void;
38
+ /**
39
+ * The port this Crewly instance's API is served on.
40
+ *
41
+ * @returns The recorded running port, else a valid `WEB_PORT`, else the default
42
+ */
43
+ export declare function getLocalApiPort(): number;
44
+ /**
45
+ * Base URL of this instance's API, e.g. `http://localhost:8797` — the value
46
+ * agents receive as `CREWLY_API_URL`. Paths are appended by the caller
47
+ * (`${getLocalApiBaseUrl()}/api/teams`).
48
+ *
49
+ * @returns The base URL without a trailing slash
50
+ */
51
+ export declare function getLocalApiBaseUrl(): string;
52
+ /**
53
+ * Forget the recorded port (tests only).
54
+ */
55
+ export declare function resetLocalApiPortForTesting(): void;
56
+ //# sourceMappingURL=local-api-url.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api-url.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/local-api-url.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The one place the backend's own API address comes from.
3
+ *
4
+ * Agents (`CREWLY_API_URL` in their PTY env), the in-process crewly-agent
5
+ * runtime, skills spawned by the server, and the server's own
6
+ * server-to-server calls (reconciler wake, auto-claim, dispatch writes) all
7
+ * need to reach THIS instance. They used to hard-code
8
+ * `WEB_CONSTANTS.PORTS.BACKEND` (8787), so an instance started with
9
+ * `crewly start -p 8797` handed its agents the default port and every skill
10
+ * call went to the wrong server — or to another Crewly on 8787 (#777).
11
+ *
12
+ * The server records its resolved listen port at construction
13
+ * ({@link setLocalApiPort}); everything else asks {@link getLocalApiPort} /
14
+ * {@link getLocalApiBaseUrl}. Before that (tests, scripts) the accessor
15
+ * falls back to `WEB_PORT`, then the default.
16
+ *
17
+ * `CREWLY_API_URL` in the backend's OWN environment is deliberately NOT
18
+ * consulted: a backend launched from inside an agent shell inherits that
19
+ * agent's URL, which points at a different instance.
20
+ *
21
+ * @module utils/local-api-url
22
+ */
23
+ import { WEB_CONSTANTS } from '../constants.js';
24
+ /** Host agents use to reach the backend on the same machine. */
25
+ const LOCAL_API_HOST = 'localhost';
26
+ /** Largest valid TCP port. */
27
+ const MAX_TCP_PORT = 65535;
28
+ /** Port recorded by the running server, or null before it is known. */
29
+ let runningPort = null;
30
+ /**
31
+ * Parse a port value, rejecting anything that is not an integer in 1..65535.
32
+ *
33
+ * @param value - Candidate port (number or numeric string)
34
+ * @returns The port, or null when invalid
35
+ */
36
+ export function parsePort(value) {
37
+ const n = typeof value === 'number' ? value : typeof value === 'string' && value.trim() !== '' ? Number(value) : NaN;
38
+ return Number.isInteger(n) && n >= 1 && n <= MAX_TCP_PORT ? n : null;
39
+ }
40
+ /**
41
+ * Record the port this server listens on. Called once by the server with its
42
+ * resolved `webPort` (from `-p` / `WEB_PORT` / default).
43
+ *
44
+ * @param port - The listen port
45
+ * @throws {Error} When the port is not a valid TCP port
46
+ */
47
+ export function setLocalApiPort(port) {
48
+ const parsed = parsePort(port);
49
+ if (parsed === null) {
50
+ throw new Error(`Invalid Crewly API port: ${String(port)}`);
51
+ }
52
+ runningPort = parsed;
53
+ }
54
+ /**
55
+ * The port this Crewly instance's API is served on.
56
+ *
57
+ * @returns The recorded running port, else a valid `WEB_PORT`, else the default
58
+ */
59
+ export function getLocalApiPort() {
60
+ if (runningPort !== null)
61
+ return runningPort;
62
+ return parsePort(process.env.WEB_PORT) ?? WEB_CONSTANTS.PORTS.BACKEND;
63
+ }
64
+ /**
65
+ * Base URL of this instance's API, e.g. `http://localhost:8797` — the value
66
+ * agents receive as `CREWLY_API_URL`. Paths are appended by the caller
67
+ * (`${getLocalApiBaseUrl()}/api/teams`).
68
+ *
69
+ * @returns The base URL without a trailing slash
70
+ */
71
+ export function getLocalApiBaseUrl() {
72
+ return `http://${LOCAL_API_HOST}:${getLocalApiPort()}`;
73
+ }
74
+ /**
75
+ * Forget the recorded port (tests only).
76
+ */
77
+ export function resetLocalApiPortForTesting() {
78
+ runningPort = null;
79
+ }
80
+ //# sourceMappingURL=local-api-url.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api-url.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/local-api-url.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,gEAAgE;AAChE,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,8BAA8B;AAC9B,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,uEAAuE;AACvE,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrH,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,GAAG,MAAM,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;AACxE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,cAAc,IAAI,eAAe,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
@@ -7,8 +7,16 @@
7
7
  * rebuild them is present (server-install finding 11), and — on Linux — whether
8
8
  * the user service will survive logout.
9
9
  *
10
+ * It also checks what agents need to do anything at all (#779): the jq and
11
+ * curl the skills call, at least one AI runtime (Claude Code / Codex / Gemini
12
+ * CLI) that is installed AND logged in, and that the skill marketplace the
13
+ * installer uses is reachable. Every failure names the command that fixes it,
14
+ * and any failure makes the command exit non-zero instead of claiming a pass.
15
+ *
10
16
  * @module cli/commands/doctor
11
17
  */
18
+ import { type RuntimeAuthStatus } from '../utils/runtime-auth.js';
19
+ import { type SystemToolInfo } from './onboard.js';
12
20
  /** Severity of a doctor line. */
13
21
  export type DoctorStatus = 'ok' | 'warn' | 'fail';
14
22
  /** One line of the report. */
@@ -35,7 +43,67 @@ export interface DoctorDeps {
35
43
  homeDir?: string;
36
44
  /** Linger lookup (Linux only). */
37
45
  lingerState?: () => Promise<'yes' | 'no' | null>;
46
+ /** Effective user id lookup (defaults to `process.getuid`; absent on Windows). */
47
+ getuid?: () => number;
48
+ /** Environment override (defaults to `process.env`). */
49
+ env?: NodeJS.ProcessEnv;
50
+ /** Reachability probe for the marketplace check (defaults to an HTTPS GET). */
51
+ probeUrl?: UrlProbe;
52
+ /**
53
+ * Returns the path of a node-pty `spawn-helper` that exists but is not
54
+ * executable (every PTY spawn then fails with `posix_spawnp failed`), or null.
55
+ */
56
+ findBrokenSpawnHelper?: (packageRoot: string) => string | null;
57
+ }
58
+ /** Result of probing one URL. */
59
+ export interface UrlProbeResult {
60
+ ok: boolean;
61
+ /** `HTTP 200`, `ENOTFOUND`, `timeout`, ... */
62
+ detail: string;
38
63
  }
64
+ /** Fetches a URL and reports whether it answered 2xx. Never throws. */
65
+ export type UrlProbe = (url: string, timeoutMs: number) => Promise<UrlProbeResult>;
66
+ /**
67
+ * System tools the agent skills call. jq comes from onboarding's required
68
+ * list (#768); curl is how every skill reaches the Crewly API.
69
+ */
70
+ export declare const DOCTOR_SYSTEM_TOOLS: readonly SystemToolInfo[];
71
+ /**
72
+ * Fix hint for a native module that does not load.
73
+ *
74
+ * node-pty normally loads a prebuilt binary (#778); when it does not, either
75
+ * the install is incomplete (reinstall) or this platform has no usable
76
+ * prebuild (musl, glibc < 2.28, 32-bit ARM) and it has to be compiled.
77
+ *
78
+ * @param mod - Module name
79
+ * @param packageRoot - Crewly package root
80
+ * @param prebuildProblem - Why the prebuild cannot run on this host, if known
81
+ * @returns One-line hint
82
+ */
83
+ export declare function nativeModuleHint(mod: string, packageRoot: string, prebuildProblem?: string | null): string;
84
+ /**
85
+ * Default URL probe: HTTPS GET with a timeout; the body is discarded.
86
+ *
87
+ * @param url - URL to fetch
88
+ * @param timeoutMs - Timeout
89
+ * @returns Whether it answered 2xx, and why not
90
+ */
91
+ export declare function defaultProbeUrl(url: string, timeoutMs: number): Promise<UrlProbeResult>;
92
+ /**
93
+ * Checks for the runtimes: one line per installed runtime, plus a `runtime`
94
+ * line that fails when none is installed and logged in.
95
+ *
96
+ * @param statuses - Claude, Codex, Gemini login state
97
+ * @returns Checks
98
+ */
99
+ export declare function runtimeChecks(statuses: readonly RuntimeAuthStatus[]): DoctorCheck[];
100
+ /**
101
+ * Marketplace reachability check.
102
+ *
103
+ * @param probe - URL probe
104
+ * @returns One check: ok (all sources), warn (some), fail (none)
105
+ */
106
+ export declare function marketplaceCheck(probe: UrlProbe): Promise<DoctorCheck>;
39
107
  /**
40
108
  * Build the list of checks without printing anything.
41
109
  *
@@ -52,7 +120,10 @@ export declare function collectDoctorChecks(deps?: DoctorDeps): Promise<DoctorCh
52
120
  export declare function formatDoctorCheck(check: DoctorCheck): string[];
53
121
  /**
54
122
  * `crewly doctor` entry point. Prints the report and sets a non-zero exit
55
- * code when any check failed.
123
+ * code when any check failed; "All checks passed" only when nothing failed
124
+ * or warned.
125
+ *
126
+ * @param deps - Injection points (tests); the CLI passes none
56
127
  */
57
- export declare function doctorCommand(): Promise<void>;
128
+ export declare function doctorCommand(deps?: DoctorDeps): Promise<void>;
58
129
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../../../cli/src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;CACjD;AAiBD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoFvF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAK9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBnD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../../../cli/src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACjD,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/D;AAED,iCAAiC;AACjC,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;CACf;AAED,uEAAuE;AACvE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAcnF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,cAAc,EASxD,CAAC;AAoDF;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAQhH;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAU7F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAgCnF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB5E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+IvF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAK9D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxE"}