crewly 1.20.106 → 1.20.108

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 +42 -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 +148 -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 +271 -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 +443 -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 +383 -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 +175 -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 +42 -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 +148 -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 +271 -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 +443 -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 +383 -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 +175 -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,566 @@
1
+ /**
2
+ * TicketIntakeService — the single intake point of the ticket loop
3
+ * (specs/ticket-loop.md, Phase 1 §1).
4
+ *
5
+ * Every surface the owner talks on (Slack team channels and shared rooms,
6
+ * Slack agent DMs, chat-v2 — which covers the dashboard, portal and phone —
7
+ * and the legacy chat + legacy Slack bridge) hands its inbound owner message
8
+ * to {@link TicketIntakeService.intake}. The service decides, with one shared
9
+ * gate, whether the message:
10
+ *
11
+ * - opens a new ticket (a `Request` with a TKT number, `kind`, `origin`,
12
+ * `assignee`) and posts ONE receipt where it was said;
13
+ * - is a follow-up in a thread that already has an open ticket, and is
14
+ * appended to that ticket's discussion instead;
15
+ * - is "不用记" (don't track) and dismisses the ticket it answers;
16
+ * - is noise (trivial ack, file only, a question, agent-authored) and is
17
+ * ignored.
18
+ *
19
+ * Creation goes through {@link RequestService.create}, so `request:created`
20
+ * still fires and the decompose + SLA subscribers keep working unchanged.
21
+ *
22
+ * @module services/v3/ticket-intake.service
23
+ */
24
+ import * as path from 'path';
25
+ import { LoggerService } from '../core/logger.service.js';
26
+ import { modifyJsonFile } from '../../utils/file-io.utils.js';
27
+ import { TICKET_CONSTANTS } from '../../constants.js';
28
+ import { TERMINAL_REQUEST_STATUSES, isValidRequestTransition, } from '../../types/v2/request.types.js';
29
+ import { formatTicketNumber, parseTicketNumber, deriveBoardColumn, ticketPriorityLabel, inferTicketKind, uniqueTicketIdFromTexts, } from '../../types/v2/ticket.types.js';
30
+ // ---------------------------------------------------------------------------
31
+ // Suppression gate (moved here from SlackOrchestratorBridge so every channel
32
+ // uses the same rules)
33
+ // ---------------------------------------------------------------------------
34
+ /**
35
+ * Trimmed-text regex for trivial acknowledgement messages — anchored,
36
+ * case-insensitive, allows trailing punctuation. Matches "ok", "好的",
37
+ * "thx", "👍", etc.
38
+ */
39
+ const TRIVIAL_ACK_PATTERN = /^(ok|okay|好的|好|收到|thx|thanks|thank you|谢谢|多谢|👍|✅|got it|sure|yes|是|对|对的|嗯|嗯嗯|行)\W*$/iu;
40
+ /**
41
+ * Trimmed-text regex matching the synthetic `[Slack File: …]` lines the
42
+ * Slack bridge appends for uploaded files.
43
+ */
44
+ const FILE_REFERENCE_LINE = /\[Slack File:[^\]]*\]\.?/g;
45
+ /** CJK ideographs, kana and hangul count double towards the length gate. */
46
+ const WIDE_CHAR = /[぀-ヿ㐀-䶿一-鿿가-힯]/u;
47
+ /**
48
+ * Length of a text for the length gate, counting wide (CJK) characters twice:
49
+ * a Chinese sentence says as much in 7 characters as an English one in 14.
50
+ *
51
+ * @param text - Trimmed text
52
+ * @returns Weighted length
53
+ */
54
+ export function weightedTextLength(text) {
55
+ let n = 0;
56
+ for (const ch of text)
57
+ n += WIDE_CHAR.test(ch) ? 2 : 1;
58
+ return n;
59
+ }
60
+ /**
61
+ * Gate 1 — trivial acknowledgement or too short to be a request.
62
+ *
63
+ * @param rawText - Message text
64
+ * @returns `'trivial_or_short'` when suppressed, else null
65
+ */
66
+ export function suppressTrivialOrShort(rawText) {
67
+ const trimmed = rawText.trim();
68
+ if (weightedTextLength(trimmed) < TICKET_CONSTANTS.MIN_WEIGHTED_TEXT_LENGTH || TRIVIAL_ACK_PATTERN.test(trimmed)) {
69
+ return 'trivial_or_short';
70
+ }
71
+ return null;
72
+ }
73
+ /**
74
+ * Gate 3 — only file references (or only attachments), no narrative.
75
+ *
76
+ * @param rawText - Message text (may carry `[Slack File: …]` lines)
77
+ * @param hasAttachments - Whether the message carried files
78
+ * @returns `'file_only'` when suppressed, else null
79
+ */
80
+ export function suppressFileOnly(rawText, hasAttachments = false) {
81
+ const trimmed = rawText.trim();
82
+ const hadReference = FILE_REFERENCE_LINE.test(trimmed);
83
+ FILE_REFERENCE_LINE.lastIndex = 0;
84
+ const narrative = trimmed.replace(FILE_REFERENCE_LINE, '').trim();
85
+ if ((hadReference || hasAttachments) && narrative.length === 0)
86
+ return 'file_only';
87
+ return null;
88
+ }
89
+ /**
90
+ * Whether a message is the "don't track" action.
91
+ *
92
+ * @param text - Message text
93
+ * @returns True for "不用记" and its variants
94
+ */
95
+ export function isDismissText(text) {
96
+ return TICKET_CONSTANTS.DISMISS_PATTERN.test(text);
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // Service
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Single intake point for owner messages → tickets. See module docs.
103
+ */
104
+ export class TicketIntakeService {
105
+ deps;
106
+ logger;
107
+ sinks = {};
108
+ /** Serialises intake so two messages in one thread cannot both open a ticket. */
109
+ chain = Promise.resolve();
110
+ /**
111
+ * @param deps - Request store and optional WorkItem lookup
112
+ */
113
+ constructor(deps) {
114
+ this.deps = deps;
115
+ this.logger = LoggerService.getInstance().createComponentLogger('TicketIntake');
116
+ }
117
+ /**
118
+ * Register the receipt poster for a surface.
119
+ *
120
+ * @param kind - `slack` or `chat-v2`
121
+ * @param sink - The poster, or null to remove
122
+ */
123
+ setReceiptSink(kind, sink) {
124
+ if (sink)
125
+ this.sinks[kind] = sink;
126
+ else
127
+ delete this.sinks[kind];
128
+ }
129
+ /**
130
+ * Spec entry point: take one inbound message.
131
+ *
132
+ * @param message - The message
133
+ * @returns The ticket the message now belongs to (new, appended-to or
134
+ * dedupe hit), or null when it opened nothing
135
+ */
136
+ async intake(message) {
137
+ const outcome = await this.intakeWithOutcome(message);
138
+ return outcome.action === 'created' || outcome.action === 'appended' || outcome.action === 'duplicate'
139
+ ? outcome.ticket
140
+ : null;
141
+ }
142
+ /**
143
+ * Take one inbound message and say what happened to it.
144
+ *
145
+ * Never throws: a failure is logged and reported as `ignored`, because
146
+ * intake must never stop a message from being delivered.
147
+ *
148
+ * @param message - The message
149
+ * @returns The outcome
150
+ */
151
+ intakeWithOutcome(message) {
152
+ const run = this.chain.then(() => this.process(message));
153
+ this.chain = run.catch(() => undefined);
154
+ return run.catch((err) => {
155
+ this.logger.warn('Ticket intake failed (message still delivered)', {
156
+ ref: message.origin.ref,
157
+ error: err instanceof Error ? err.message : String(err),
158
+ });
159
+ return { action: 'ignored', reason: 'error' };
160
+ });
161
+ }
162
+ /**
163
+ * The gate, in order. See module docs.
164
+ *
165
+ * @param message - The message
166
+ * @returns The outcome
167
+ */
168
+ async process(message) {
169
+ if (!message.isOwner)
170
+ return this.ignored(message, 'not_owner');
171
+ const text = (message.text ?? '').trim();
172
+ const all = await this.deps.requests.listAll();
173
+ // "不用记" — the owner undoing the ticket this message answers.
174
+ if (isDismissText(text)) {
175
+ const target = this.findDismissTarget(all, message);
176
+ if (!target)
177
+ return this.ignored(message, 'dismiss_without_ticket');
178
+ const result = await this.dismissTicket(target);
179
+ if (!result.ok)
180
+ return this.ignored(message, `dismiss_${result.reason}`);
181
+ return { action: 'dismissed', ticket: result.ticket };
182
+ }
183
+ // Same message twice (Slack redelivery, two event types).
184
+ const duplicate = all.find((r) => r.sourceConversationItemId === message.origin.ref);
185
+ if (duplicate)
186
+ return { action: 'duplicate', ticket: duplicate };
187
+ // A follow-up in a thread that already has a ticket.
188
+ const threadTicket = this.findThreadTicket(all, message);
189
+ if (threadTicket) {
190
+ if (TERMINAL_REQUEST_STATUSES.has(threadTicket.status)) {
191
+ // Only a dismissed thread stays quiet; a finished one may open a new ticket.
192
+ if (threadTicket.tags.includes(TICKET_CONSTANTS.DISMISSED_TAG)) {
193
+ return this.ignored(message, 'thread_dismissed');
194
+ }
195
+ }
196
+ else {
197
+ return this.appendToTicket(threadTicket, message, text);
198
+ }
199
+ }
200
+ const trivial = suppressTrivialOrShort(text);
201
+ if (trivial)
202
+ return this.ignored(message, trivial);
203
+ const fileOnly = suppressFileOnly(text, (message.attachments?.length ?? 0) > 0);
204
+ if (fileOnly)
205
+ return this.ignored(message, fileOnly);
206
+ // Lazy: v3-data pulls in the pool and storage singletons, which the Slack
207
+ // modules that import this service must not load at module time.
208
+ const { classifyIntent, generateRequestTitle } = await import('./v3-data.service.js');
209
+ const { intentLevel, intentCategory } = classifyIntent(text);
210
+ if (intentCategory === 'query')
211
+ return this.ignored(message, 'query');
212
+ if (intentLevel === 'L0')
213
+ return this.ignored(message, 'not_actionable');
214
+ const ticketNumber = await this.nextTicketNumber(all);
215
+ const tags = [...new Set([TICKET_CONSTANTS.TAG, message.origin.channel, ...(message.tags ?? [])])];
216
+ const ticket = await this.deps.requests.create({
217
+ sourceConversationItemId: message.origin.ref,
218
+ title: generateRequestTitle(text, intentCategory),
219
+ description: text,
220
+ priority: 'normal',
221
+ tags,
222
+ intentLevel,
223
+ intentCategory,
224
+ ticketNumber,
225
+ kind: inferTicketKind(text),
226
+ origin: message.origin,
227
+ ...(message.targetAgent ? { assignee: message.targetAgent } : {}),
228
+ });
229
+ this.logger.info('Ticket created', {
230
+ tkt: formatTicketNumber(ticketNumber),
231
+ id: ticket.id,
232
+ channel: message.origin.channel,
233
+ assignee: message.targetAgent,
234
+ });
235
+ if (message.receipt)
236
+ void this.postReceipt(ticket, message.receipt);
237
+ return { action: 'created', ticket };
238
+ }
239
+ /**
240
+ * Log and build an `ignored` outcome.
241
+ *
242
+ * @param message - The message
243
+ * @param reason - Why
244
+ * @returns The outcome
245
+ */
246
+ ignored(message, reason) {
247
+ this.logger.debug('Message did not open a ticket', { ref: message.origin.ref, channel: message.origin.channel, reason });
248
+ return { action: 'ignored', reason };
249
+ }
250
+ /**
251
+ * The ticket already living in this message's thread, if any (open or not).
252
+ *
253
+ * @param all - Every Request
254
+ * @param message - The message
255
+ * @returns The newest ticket in the thread, or null
256
+ */
257
+ findThreadTicket(all, message) {
258
+ const threadRef = message.origin.threadRef;
259
+ const legacy = message.legacyThreadParentRef;
260
+ const matches = all.filter((r) => (threadRef && r.origin?.threadRef === threadRef) ||
261
+ (legacy && r.sourceConversationItemId === legacy));
262
+ if (matches.length === 0)
263
+ return null;
264
+ // Prefer an open ticket; otherwise the newest (listAll is newest-first).
265
+ return matches.find((r) => !TERMINAL_REQUEST_STATUSES.has(r.status)) ?? matches[0];
266
+ }
267
+ /**
268
+ * The ticket a "不用记" is aimed at: the open ticket in its thread, else the
269
+ * newest open ticket opened recently in the same conversation.
270
+ *
271
+ * @param all - Every Request
272
+ * @param message - The dismiss message
273
+ * @returns The ticket, or null
274
+ */
275
+ findDismissTarget(all, message) {
276
+ const inThread = this.findThreadTicket(all, message);
277
+ if (inThread && !TERMINAL_REQUEST_STATUSES.has(inThread.status))
278
+ return inThread;
279
+ const conversation = message.conversationRef;
280
+ if (!conversation)
281
+ return null;
282
+ const cutoff = this.now().getTime() - TICKET_CONSTANTS.DISMISS_LOOKBACK_MS;
283
+ return (all.find((r) => typeof r.ticketNumber === 'number' &&
284
+ !TERMINAL_REQUEST_STATUSES.has(r.status) &&
285
+ this.conversationMatches(r, conversation) &&
286
+ Date.parse(r.createdAt) >= cutoff) ?? null);
287
+ }
288
+ /**
289
+ * Whether a ticket was opened in a conversation. Thread refs are built as
290
+ * `<conversationRef>:<thread root>` (see ticket-channel-hooks), so the
291
+ * conversation is a prefix of the thread.
292
+ *
293
+ * @param r - Ticket
294
+ * @param conversation - Conversation ref
295
+ * @returns True when it was
296
+ */
297
+ conversationMatches(r, conversation) {
298
+ return !!r.origin?.threadRef && r.origin.threadRef.startsWith(`${conversation}:`);
299
+ }
300
+ /**
301
+ * Append a follow-up to a ticket's discussion.
302
+ *
303
+ * Trivial follow-ups ("好的") are not written, but the message still belongs
304
+ * to the ticket (so the delivered copy carries its marker).
305
+ *
306
+ * @param ticket - The open ticket
307
+ * @param message - The follow-up
308
+ * @param text - Trimmed text
309
+ * @returns `appended` outcome
310
+ */
311
+ async appendToTicket(ticket, message, text) {
312
+ if (suppressTrivialOrShort(text) || text.length === 0)
313
+ return { action: 'appended', ticket };
314
+ const discussion = [
315
+ ...(ticket.discussion ?? []),
316
+ {
317
+ at: this.now().toISOString(),
318
+ author: message.origin.authorName ?? message.origin.author,
319
+ text,
320
+ ref: message.origin.ref,
321
+ },
322
+ ];
323
+ const updated = await this.deps.requests.update(ticket.id, { discussion });
324
+ this.logger.debug('Follow-up appended to ticket', { id: ticket.id, ref: message.origin.ref });
325
+ return { action: 'appended', ticket: updated };
326
+ }
327
+ /**
328
+ * Hand out the next ticket number. Monotonic per data dir: an atomic counter
329
+ * file next to the Request files, updated under a lock. The first call seeds
330
+ * it from the highest number already on disk.
331
+ *
332
+ * @param all - Every Request (for seeding)
333
+ * @returns The new number
334
+ */
335
+ async nextTicketNumber(all) {
336
+ const counterPath = path.join(this.deps.requests.getRequestsDir(), TICKET_CONSTANTS.COUNTER_FILENAME);
337
+ const maxExisting = all.reduce((m, r) => (typeof r.ticketNumber === 'number' && r.ticketNumber > m ? r.ticketNumber : m), 0);
338
+ const data = await modifyJsonFile(counterPath, { last: -1 }, (current) => {
339
+ const last = typeof current?.last === 'number' ? current.last : -1;
340
+ // Never hand out a number that is already on disk, even if the counter
341
+ // file was lost or restored from an older backup.
342
+ return { last: Math.max(last, maxExisting) + 1 };
343
+ });
344
+ return data.last;
345
+ }
346
+ /**
347
+ * Post the receipt and remember where it landed. Runs after intake returns
348
+ * so delivery is not held up by Slack. If the owner dismissed the ticket
349
+ * before the receipt landed, the receipt is edited straight away.
350
+ *
351
+ * @param ticket - New ticket
352
+ * @param target - Where to post
353
+ */
354
+ async postReceipt(ticket, target) {
355
+ const sink = this.sinks[target.kind];
356
+ if (!sink) {
357
+ this.logger.debug('No receipt sink for surface', { kind: target.kind, id: ticket.id });
358
+ return;
359
+ }
360
+ try {
361
+ const receipt = await sink.post(ticket, target);
362
+ if (!receipt)
363
+ return;
364
+ const current = await this.deps.requests.getById(ticket.id);
365
+ if (!current)
366
+ return;
367
+ const updated = await this.deps.requests.update(ticket.id, { receipt });
368
+ if (current.status === 'cancelled')
369
+ await sink.markDismissed(updated, receipt);
370
+ }
371
+ catch (err) {
372
+ this.logger.warn('Ticket receipt could not be posted', {
373
+ id: ticket.id,
374
+ kind: target.kind,
375
+ error: err instanceof Error ? err.message : String(err),
376
+ });
377
+ }
378
+ }
379
+ // -------------------------------------------------------------------------
380
+ // Dismiss / lookup / list
381
+ // -------------------------------------------------------------------------
382
+ /**
383
+ * "不用记": cancel a ticket, tag it `dismissed`, and edit its receipt.
384
+ *
385
+ * @param ref - `TKT-123`, `123` or the ticket id
386
+ * @returns What happened
387
+ */
388
+ async dismiss(ref) {
389
+ const run = this.chain.then(async () => {
390
+ const ticket = await this.resolve(ref);
391
+ if (!ticket)
392
+ return { ok: false, reason: 'not_found' };
393
+ return this.dismissTicket(ticket);
394
+ });
395
+ this.chain = run.catch(() => undefined);
396
+ return run;
397
+ }
398
+ /**
399
+ * Dismiss a loaded ticket (see {@link dismiss}).
400
+ *
401
+ * @param ticket - The ticket
402
+ * @returns What happened
403
+ */
404
+ async dismissTicket(ticket) {
405
+ if (ticket.status === 'cancelled')
406
+ return { ok: true, ticket, alreadyDismissed: true };
407
+ if (ticket.status === 'done')
408
+ return { ok: false, reason: 'already_done', ticket };
409
+ if (!isValidRequestTransition(ticket.status, 'cancelled')) {
410
+ return { ok: false, reason: 'invalid_transition', ticket };
411
+ }
412
+ const tags = [...new Set([...ticket.tags, TICKET_CONSTANTS.DISMISSED_TAG])];
413
+ const updated = await this.deps.requests.update(ticket.id, { status: 'cancelled', tags });
414
+ this.logger.info('Ticket dismissed (不用记)', {
415
+ tkt: typeof ticket.ticketNumber === 'number' ? formatTicketNumber(ticket.ticketNumber) : null,
416
+ id: ticket.id,
417
+ });
418
+ if (updated.receipt) {
419
+ const sink = this.sinks[updated.receipt.kind];
420
+ if (sink) {
421
+ await sink.markDismissed(updated, updated.receipt).catch((err) => {
422
+ this.logger.warn('Receipt could not be marked dismissed', {
423
+ id: ticket.id,
424
+ error: err instanceof Error ? err.message : String(err),
425
+ });
426
+ });
427
+ }
428
+ }
429
+ return { ok: true, ticket: updated, alreadyDismissed: false };
430
+ }
431
+ /**
432
+ * Find a ticket by `TKT-123`, `123` or id.
433
+ *
434
+ * @param ref - The reference
435
+ * @returns The ticket, or null
436
+ */
437
+ async resolve(ref) {
438
+ const trimmed = (ref ?? '').trim();
439
+ if (!trimmed)
440
+ return null;
441
+ const byId = await this.deps.requests.getById(trimmed);
442
+ if (byId)
443
+ return byId;
444
+ const n = parseTicketNumber(trimmed);
445
+ if (n === null)
446
+ return null;
447
+ const all = await this.deps.requests.listAll();
448
+ return all.find((r) => r.ticketNumber === n) ?? null;
449
+ }
450
+ /**
451
+ * Board-shaped ticket list.
452
+ *
453
+ * @param query - Filters
454
+ * @returns Rows (newest first) and per-column counts over the filtered set
455
+ */
456
+ async list(query = {}) {
457
+ const all = await this.deps.requests.listAll();
458
+ const q = query.q?.trim().toLowerCase();
459
+ const rows = [];
460
+ for (const r of all) {
461
+ if (!query.includeLegacy && typeof r.ticketNumber !== 'number')
462
+ continue;
463
+ const item = await this.toListItem(r);
464
+ if (query.kind && item.kind !== query.kind)
465
+ continue;
466
+ if (q && ![item.tkt ?? '', item.title, item.description].some((s) => s.toLowerCase().includes(q)))
467
+ continue;
468
+ rows.push(item);
469
+ }
470
+ const columns = {
471
+ idea: 0,
472
+ todo: 0,
473
+ in_progress: 0,
474
+ blocked: 0,
475
+ to_review: 0,
476
+ done: 0,
477
+ cancelled: 0,
478
+ };
479
+ for (const row of rows)
480
+ columns[row.column] += 1;
481
+ const tickets = query.column
482
+ ? rows.filter((row) => row.column === query.column)
483
+ // Cancelled tickets are hidden unless asked for (searchable via column=cancelled).
484
+ : rows.filter((row) => row.column !== 'cancelled');
485
+ return { tickets, columns };
486
+ }
487
+ /**
488
+ * Shape one Request as a board row.
489
+ *
490
+ * @param r - The Request
491
+ * @returns The row
492
+ */
493
+ async toListItem(r) {
494
+ const workItems = [];
495
+ if (this.deps.findWorkItem) {
496
+ for (const id of r.workItemIds) {
497
+ const wi = await this.deps.findWorkItem(id).catch(() => null);
498
+ if (wi)
499
+ workItems.push(wi);
500
+ }
501
+ }
502
+ const kind = r.kind ?? 'feature';
503
+ return {
504
+ id: r.id,
505
+ tkt: typeof r.ticketNumber === 'number' ? formatTicketNumber(r.ticketNumber) : null,
506
+ ticketNumber: typeof r.ticketNumber === 'number' ? r.ticketNumber : null,
507
+ title: r.title,
508
+ description: r.description,
509
+ kind,
510
+ column: deriveBoardColumn({ status: r.status, kind, requiresConfirmation: r.requiresConfirmation }, workItems),
511
+ status: r.status,
512
+ priority: r.priority,
513
+ priorityLabel: ticketPriorityLabel(r.priority),
514
+ origin: r.origin ?? null,
515
+ assignee: r.assignee ?? null,
516
+ workItemIds: r.workItemIds,
517
+ tags: r.tags,
518
+ createdAt: r.createdAt,
519
+ updatedAt: r.updatedAt,
520
+ };
521
+ }
522
+ /**
523
+ * Current time (injectable for tests).
524
+ *
525
+ * @returns Now
526
+ */
527
+ now() {
528
+ return this.deps.now ? this.deps.now() : new Date();
529
+ }
530
+ }
531
+ /**
532
+ * The ticket an agent's current turn is about, from the `[TICKET:…]` markers
533
+ * in the messages delivered into that turn.
534
+ *
535
+ * @param tracker - The in-flight turn tracker
536
+ * @param sessionName - The agent creating a WorkItem
537
+ * @returns The ticket id, or null when the turn has none or several tickets
538
+ */
539
+ export function resolveTicketIdForSession(tracker, sessionName) {
540
+ const turn = tracker.snapshot().find((t) => t.sessionName === sessionName);
541
+ if (!turn)
542
+ return null;
543
+ return uniqueTicketIdFromTexts(turn.messages.map((m) => `${m.text}\n${m.originalContent ?? ''}`));
544
+ }
545
+ // ---------------------------------------------------------------------------
546
+ // Singleton
547
+ // ---------------------------------------------------------------------------
548
+ let instance = null;
549
+ /**
550
+ * Install the process-wide intake (composition root).
551
+ *
552
+ * @param service - The service, or null to clear (tests)
553
+ */
554
+ export function setTicketIntakeService(service) {
555
+ instance = service;
556
+ }
557
+ /**
558
+ * The process-wide intake, or null before boot wired it. Callers skip ticket
559
+ * intake when null — a message is always delivered either way.
560
+ *
561
+ * @returns The service or null
562
+ */
563
+ export function getTicketIntakeService() {
564
+ return instance;
565
+ }
566
+ //# sourceMappingURL=ticket-intake.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket-intake.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/ticket-intake.service.ts"],"names":[],"mappings":"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"}
@@ -413,6 +413,12 @@ export interface SlackOutgoingMessage {
413
413
  * same reply is not stored twice.
414
414
  */
415
415
  skipChatV2Mirror?: boolean;
416
+ /**
417
+ * The caller is probing candidate channels and expects some to be
418
+ * unreachable (notification fallback). Such failures do not count
419
+ * toward the outbound reachability health.
420
+ */
421
+ reachabilityProbe?: boolean;
416
422
  }
417
423
  /**
418
424
  * One Crewly team bound to one Slack channel (and the chat-v2 huddle that
@@ -657,6 +663,29 @@ export interface SlackServiceStatus {
657
663
  degraded?: boolean;
658
664
  /** Why the integration is degraded, e.g. "invalid_auth" or "ECONNREFUSED". */
659
665
  degradedReason?: string;
666
+ /**
667
+ * Outbound posts the connected bot could not deliver because it cannot see
668
+ * the channel (`channel_not_found` / `not_in_channel`), counted since the
669
+ * last successful post. Present only while such failures are outstanding.
670
+ * Reaching the threshold sets `degraded` (#753).
671
+ */
672
+ deliveryFailures?: SlackDeliveryFailureSummary;
673
+ }
674
+ /**
675
+ * Outstanding outbound reachability failures (see
676
+ * {@link SlackServiceStatus.deliveryFailures}).
677
+ */
678
+ export interface SlackDeliveryFailureSummary {
679
+ /** Consecutive failing posts since the last success. */
680
+ consecutive: number;
681
+ /** Slack error code of the latest failure. */
682
+ code: string;
683
+ /** Distinct channel ids that failed (most recent last, capped). */
684
+ channels: string[];
685
+ /** When the first failure of this run happened (ISO). */
686
+ since: string;
687
+ /** When the latest failure happened (ISO). */
688
+ lastAt: string;
660
689
  }
661
690
  /**
662
691
  * Valid notification urgency levels