crewly 1.20.197 → 1.20.199

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 (319) hide show
  1. package/config/roles/orchestrator/prompt.md +8 -9
  2. package/config/roles/team-leader/prompt.md +6 -0
  3. package/config/skills/agent/computer-use/SKILL.md +16 -0
  4. package/config/skills/agent/core/ask-owner/SKILL.md +14 -0
  5. package/config/skills/agent/core/ask-owner/execute.sh +19 -1
  6. package/config/skills/agent/core/ask-owner/execute.test.sh +12 -0
  7. package/config/skills/agent/core/gmail-send/SKILL.md +16 -0
  8. package/config/skills/agent/core/reply-channel/SKILL.md +16 -0
  9. package/config/skills/agent/core/slack-post/SKILL.md +16 -0
  10. package/config/skills/agent/core/whatsapp-send/SKILL.md +16 -0
  11. package/config/skills/agent/remote-browser/SKILL.md +43 -7
  12. package/config/skills/registry.json +7 -7
  13. package/dist/backend/backend/src/constants.d.ts +159 -0
  14. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  15. package/dist/backend/backend/src/constants.js +175 -0
  16. package/dist/backend/backend/src/constants.js.map +1 -1
  17. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +12 -1
  18. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  19. package/dist/backend/backend/src/controllers/browser/browser.controller.js +118 -3
  20. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/browser/browser.routes.js +5 -1
  23. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  25. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +37 -52
  26. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  27. package/dist/backend/backend/src/controllers/system/usage.controller.d.ts +14 -0
  28. package/dist/backend/backend/src/controllers/system/usage.controller.d.ts.map +1 -1
  29. package/dist/backend/backend/src/controllers/system/usage.controller.js +35 -1
  30. package/dist/backend/backend/src/controllers/system/usage.controller.js.map +1 -1
  31. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  32. package/dist/backend/backend/src/controllers/team/team.controller.js +13 -0
  33. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  34. package/dist/backend/backend/src/index.d.ts +17 -0
  35. package/dist/backend/backend/src/index.d.ts.map +1 -1
  36. package/dist/backend/backend/src/index.js +113 -2
  37. package/dist/backend/backend/src/index.js.map +1 -1
  38. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
  39. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +5 -8
  40. package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
  41. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +12 -0
  42. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  43. package/dist/backend/backend/src/services/agent/agent-registration.service.js +275 -241
  44. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  45. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +5 -6
  47. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  48. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +6 -0
  49. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +2 -1
  51. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +12 -8
  54. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  56. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +32 -27
  57. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  58. package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts +44 -0
  59. package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/agent/owner-stopped.registry.js +54 -0
  61. package/dist/backend/backend/src/services/agent/owner-stopped.registry.js.map +1 -0
  62. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +4 -4
  63. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  64. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  65. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +4 -8
  66. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  67. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +19 -4
  68. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -5
  70. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
  71. package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +2 -2
  72. package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
  73. package/dist/backend/backend/src/services/browser/browser-approval.service.js +13 -2
  74. package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
  75. package/dist/backend/backend/src/services/browser/browser-outbound-guard.d.ts +214 -0
  76. package/dist/backend/backend/src/services/browser/browser-outbound-guard.d.ts.map +1 -0
  77. package/dist/backend/backend/src/services/browser/browser-outbound-guard.js +466 -0
  78. package/dist/backend/backend/src/services/browser/browser-outbound-guard.js.map +1 -0
  79. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +23 -2
  80. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/browser/browser-session.service.js +110 -62
  82. package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
  83. package/dist/backend/backend/src/services/browser/held-action-store.d.ts +4 -0
  84. package/dist/backend/backend/src/services/browser/held-action-store.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/browser/held-action-store.js.map +1 -1
  86. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/cloud/cloud-initializer.js +6 -8
  88. package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
  89. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +15 -1
  90. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/experiments/experiment.service.js +41 -12
  92. package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts +129 -0
  94. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -0
  95. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js +196 -0
  96. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -0
  97. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +21 -0
  98. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  99. package/dist/backend/backend/src/services/messaging/message-queue.service.js +86 -11
  100. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  101. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +46 -0
  102. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +143 -22
  104. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  105. package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -1
  106. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +5 -0
  107. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js.map +1 -1
  108. package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.d.ts +7 -0
  109. package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.d.ts.map +1 -1
  110. package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.js +21 -6
  111. package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.js.map +1 -1
  112. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +49 -2
  113. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
  114. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +160 -55
  115. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
  116. package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.d.ts +7 -0
  117. package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.d.ts.map +1 -1
  118. package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.js +21 -7
  119. package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.js.map +1 -1
  120. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +71 -1
  121. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +193 -20
  123. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  125. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +5 -9
  126. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  127. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +11 -0
  128. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  129. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +14 -0
  130. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  131. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +37 -0
  132. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  133. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +78 -0
  134. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  135. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +13 -0
  136. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  137. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  138. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +118 -105
  139. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  140. package/dist/backend/backend/src/services/session/session-command-helper.js +267 -298
  141. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  142. package/dist/backend/backend/src/services/session/tui-input-guard.d.ts +144 -0
  143. package/dist/backend/backend/src/services/session/tui-input-guard.d.ts.map +1 -0
  144. package/dist/backend/backend/src/services/session/tui-input-guard.js +312 -0
  145. package/dist/backend/backend/src/services/session/tui-input-guard.js.map +1 -0
  146. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js +5 -0
  148. package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +5 -0
  151. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +14 -0
  154. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  155. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +31 -0
  156. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +87 -4
  158. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  159. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +24 -1
  160. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/spend/spend-cap.service.js +57 -0
  162. package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
  163. package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts +37 -1
  164. package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts.map +1 -1
  165. package/dist/backend/backend/src/services/spend/spend-cap.store.js +85 -14
  166. package/dist/backend/backend/src/services/spend/spend-cap.store.js.map +1 -1
  167. package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts.map +1 -1
  168. package/dist/backend/backend/src/services/spend/spend-cap.wiring.js +1 -1
  169. package/dist/backend/backend/src/services/spend/spend-cap.wiring.js.map +1 -1
  170. package/dist/backend/backend/src/services/trace/trace-store.d.ts +3 -1
  171. package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -1
  172. package/dist/backend/backend/src/services/trace/trace-store.js +27 -15
  173. package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -1
  174. package/dist/backend/backend/src/services/trace/trace.types.d.ts +2 -2
  175. package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -1
  176. package/dist/backend/backend/src/services/trace/trace.types.js +4 -0
  177. package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -1
  178. package/dist/backend/backend/src/services/trace/turn-origin.d.ts +70 -0
  179. package/dist/backend/backend/src/services/trace/turn-origin.d.ts.map +1 -0
  180. package/dist/backend/backend/src/services/trace/turn-origin.js +198 -0
  181. package/dist/backend/backend/src/services/trace/turn-origin.js.map +1 -0
  182. package/dist/backend/backend/src/services/usage/usage-backfill.service.d.ts +96 -0
  183. package/dist/backend/backend/src/services/usage/usage-backfill.service.d.ts.map +1 -0
  184. package/dist/backend/backend/src/services/usage/usage-backfill.service.js +257 -0
  185. package/dist/backend/backend/src/services/usage/usage-backfill.service.js.map +1 -0
  186. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  187. package/dist/backend/backend/src/services/v3/kr-tracking.service.js +2 -1
  188. package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  189. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -1
  190. package/dist/backend/backend/src/services/v3/okr-cascade.service.js +2 -1
  191. package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -1
  192. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +28 -0
  193. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/workflow/cron-task.service.js +121 -68
  195. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  196. package/dist/backend/backend/src/types/slack.types.d.ts +8 -0
  197. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  198. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  199. package/dist/backend/backend/src/utils/file-io.utils.d.ts +114 -1
  200. package/dist/backend/backend/src/utils/file-io.utils.d.ts.map +1 -1
  201. package/dist/backend/backend/src/utils/file-io.utils.js +236 -6
  202. package/dist/backend/backend/src/utils/file-io.utils.js.map +1 -1
  203. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  204. package/dist/backend/backend/src/utils/terminal-string-ops.js +3 -2
  205. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
  206. package/dist/backend/build-info.json +2 -2
  207. package/dist/cli/backend/src/constants.d.ts +159 -0
  208. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  209. package/dist/cli/backend/src/constants.js +175 -0
  210. package/dist/cli/backend/src/constants.js.map +1 -1
  211. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +12 -0
  212. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  213. package/dist/cli/backend/src/services/agent/agent-registration.service.js +275 -241
  214. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  215. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  216. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +5 -6
  217. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  218. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +6 -0
  219. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  220. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +2 -1
  221. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  222. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  223. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +12 -8
  224. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  225. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  226. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +32 -27
  227. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  228. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +4 -4
  229. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  230. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  231. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +4 -8
  232. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  233. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +19 -4
  234. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
  235. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -5
  236. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
  237. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +129 -0
  238. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -0
  239. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +196 -0
  240. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -0
  241. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +21 -0
  242. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  243. package/dist/cli/backend/src/services/messaging/message-queue.service.js +86 -11
  244. package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -1
  245. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +46 -0
  246. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  247. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +143 -22
  248. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  249. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +71 -1
  250. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  251. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +193 -20
  252. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  253. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +11 -0
  254. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  255. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +14 -0
  256. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  257. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +37 -0
  258. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  259. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +78 -0
  260. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  261. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +13 -0
  262. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  263. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
  264. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +118 -105
  265. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  266. package/dist/cli/backend/src/services/session/session-command-helper.js +267 -298
  267. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  268. package/dist/cli/backend/src/services/session/tui-input-guard.d.ts +144 -0
  269. package/dist/cli/backend/src/services/session/tui-input-guard.d.ts.map +1 -0
  270. package/dist/cli/backend/src/services/session/tui-input-guard.js +312 -0
  271. package/dist/cli/backend/src/services/session/tui-input-guard.js.map +1 -0
  272. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -1
  273. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js +5 -0
  274. package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js.map +1 -1
  275. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  276. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +14 -0
  277. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  278. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +31 -0
  279. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  280. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +87 -4
  281. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  282. package/dist/cli/backend/src/services/trace/trace-store.d.ts +3 -1
  283. package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -1
  284. package/dist/cli/backend/src/services/trace/trace-store.js +27 -15
  285. package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -1
  286. package/dist/cli/backend/src/services/trace/trace.types.d.ts +2 -2
  287. package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -1
  288. package/dist/cli/backend/src/services/trace/trace.types.js +4 -0
  289. package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -1
  290. package/dist/cli/backend/src/services/trace/turn-origin.d.ts +70 -0
  291. package/dist/cli/backend/src/services/trace/turn-origin.d.ts.map +1 -0
  292. package/dist/cli/backend/src/services/trace/turn-origin.js +198 -0
  293. package/dist/cli/backend/src/services/trace/turn-origin.js.map +1 -0
  294. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  295. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +2 -1
  296. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  297. package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts +28 -0
  298. package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  299. package/dist/cli/backend/src/services/workflow/cron-task.service.js +121 -68
  300. package/dist/cli/backend/src/services/workflow/cron-task.service.js.map +1 -1
  301. package/dist/cli/backend/src/types/slack.types.d.ts +8 -0
  302. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  303. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  304. package/dist/cli/backend/src/utils/file-io.utils.d.ts +114 -1
  305. package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -1
  306. package/dist/cli/backend/src/utils/file-io.utils.js +236 -6
  307. package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -1
  308. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  309. package/dist/cli/backend/src/utils/terminal-string-ops.js +3 -2
  310. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
  311. package/package.json +1 -1
  312. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +0 -118
  313. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +0 -1
  314. package/dist/cli/backend/src/services/agent/agent-suspend.service.js +0 -304
  315. package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +0 -1
  316. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +0 -100
  317. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +0 -1
  318. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +0 -149
  319. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +0 -1
@@ -77,6 +77,25 @@ export function slackChannelNameFor(teamName, prefix = '') {
77
77
  const joined = p ? `${p}-${body}` : body;
78
78
  return joined.slice(0, SLACK_TEAM_CHANNEL_CONSTANTS.MAX_CHANNEL_NAME_LENGTH).replace(/-+$/g, '') || 'team';
79
79
  }
80
+ /**
81
+ * The machine that owns an un-@'d message in a shared room, from Cloud's
82
+ * presence snapshot alone — every machine computes the same answer from
83
+ * the same snapshot (its own agents included, judged by the snapshot, not
84
+ * by local state). The room's home machine when Cloud names it and an agent
85
+ * there is awake; otherwise the lowest instance id among machines with an
86
+ * awake room member. Null when nobody is awake (Cloud's fallback decides).
87
+ *
88
+ * @param room - Cloud's room presence
89
+ * @returns Owning instance id, or null
90
+ */
91
+ export function roomOwnerInstance(room) {
92
+ const awake = [...new Set(room.members.filter((m) => m.awake).map((m) => m.instanceId))];
93
+ if (awake.length === 0)
94
+ return null;
95
+ if (room.home && awake.includes(room.home.instanceId))
96
+ return room.home.instanceId;
97
+ return awake.sort()[0];
98
+ }
80
99
  /**
81
100
  * Whether a mapping is an ad-hoc channel (no Crewly team behind it).
82
101
  *
@@ -519,6 +538,11 @@ export class SlackTeamChannelService {
519
538
  };
520
539
  this.store = store;
521
540
  return store;
541
+ }).catch((err) => {
542
+ // Don't cache a failed read (EMFILE, a corrupt file that could not
543
+ // be copied aside): the next call tries again.
544
+ this.loading = null;
545
+ throw err;
522
546
  });
523
547
  }
524
548
  return this.loading;
@@ -1479,6 +1503,12 @@ export class SlackTeamChannelService {
1479
1503
  // Someone here holds it — including a follow-up in a thread we were
1480
1504
  // still waiting on.
1481
1505
  this.settleUnanswered(`${message.channelId}:${slackThreadTs}`);
1506
+ // The owner machine of a shared room (others deferred to it) runs the
1507
+ // one 90 s fallback: if nobody here answers, its lead is woken.
1508
+ const allOptional = (dispatch.huddleOutcomes ?? []).every((o) => o.responseMode !== 'required');
1509
+ if (presence?.ownsSharedMessage && allOptional && !handoffTo && isOwnerAuthored(message, this.deps.getOwnerUserId?.())) {
1510
+ this.watchUnanswered(message, mapping, persisted, dispatchOptions.threadId, recipients);
1511
+ }
1482
1512
  }
1483
1513
  else if (!remoteAgent) {
1484
1514
  // Never a silent no-op: say why nobody got it.
@@ -1494,8 +1524,10 @@ export class SlackTeamChannelService {
1494
1524
  handoffTo,
1495
1525
  recipients,
1496
1526
  });
1497
- if (!handoffTo && isOwnerAuthored(message, this.deps.getOwnerUserId?.())) {
1498
- this.watchUnanswered(message, mapping, persisted, dispatchOptions.threadId);
1527
+ // A message deferred to another machine is watched there, by its
1528
+ // owner, only — two machines running the fallback would answer twice.
1529
+ if (!handoffTo && !presence?.deferredElsewhere && !presence?.fallbackElsewhere && isOwnerAuthored(message, this.deps.getOwnerUserId?.())) {
1530
+ this.watchUnanswered(message, mapping, persisted, dispatchOptions.threadId, recipients);
1499
1531
  }
1500
1532
  }
1501
1533
  return { mapping, message: persisted, mentions: resolved.mentions, dispatch };
@@ -1509,7 +1541,7 @@ export class SlackTeamChannelService {
1509
1541
  * @param persisted - The huddle row it was recorded as
1510
1542
  * @param threadId - Huddle thread the replies land in
1511
1543
  */
1512
- watchUnanswered(message, mapping, persisted, threadId) {
1544
+ watchUnanswered(message, mapping, persisted, threadId, recipients = []) {
1513
1545
  const threadTs = message.threadTs || message.ts;
1514
1546
  const key = `${message.channelId}:${threadTs}`;
1515
1547
  this.settleUnanswered(key);
@@ -1524,6 +1556,7 @@ export class SlackTeamChannelService {
1524
1556
  threadTs,
1525
1557
  threadId,
1526
1558
  messageId: persisted.id,
1559
+ recipients,
1527
1560
  timer,
1528
1561
  });
1529
1562
  }
@@ -1568,6 +1601,16 @@ export class SlackTeamChannelService {
1568
1601
  try {
1569
1602
  const mapping = this.findBySlackChannelId(pending.slackChannelId);
1570
1603
  const lead = mapping ? await this.localRoomLead(mapping) : null;
1604
+ if (mapping && lead && pending.recipients.includes(lead)) {
1605
+ // The lead already holds it (delivered as optional): handing it over
1606
+ // again would deliver it twice. The owner-message watchdog nudges.
1607
+ this.logger.info('Unanswered room message: the room lead already holds it — no hand-off', {
1608
+ slackChannel: `#${mapping.slackChannelName}`,
1609
+ ts: pending.message.ts,
1610
+ lead,
1611
+ });
1612
+ return;
1613
+ }
1571
1614
  if (mapping && lead) {
1572
1615
  this.logger.warn('Nobody took an owner room message — waking the room lead here', {
1573
1616
  slackChannel: `#${mapping.slackChannelName}`,
@@ -1734,6 +1777,9 @@ export class SlackTeamChannelService {
1734
1777
  const isHere = (m) => me ? m.instanceId === me : (this.deps.isLocalAgent?.(localAgentSession(m.agentSession)) ?? false);
1735
1778
  const awakeElsewhere = room.members.some((m) => !isHere(m) && m.awake);
1736
1779
  let wakeWhenAllAsleep = null;
1780
+ // Cloud named the one machine that wakes someone: no other machine runs
1781
+ // its own 90 s fallback for this message.
1782
+ const fallbackElsewhere = !!room.fallback && !(me ? room.fallback.instanceId === me : (this.deps.isLocalAgent?.(localAgentSession(room.fallback.agentSession)) ?? false));
1737
1783
  if (room.fallback) {
1738
1784
  const here = me ? room.fallback.instanceId === me : (this.deps.isLocalAgent?.(localAgentSession(room.fallback.agentSession)) ?? false);
1739
1785
  if (here)
@@ -1752,7 +1798,44 @@ export class SlackTeamChannelService {
1752
1798
  return `${m.displayName}(${awake ? '醒着' : '在睡'},${here ? '本机' : m.deviceName})`;
1753
1799
  })
1754
1800
  .join(' · ');
1755
- return { state: { awakeHere, awakeElsewhere, wakeWhenAllAsleep }, line };
1801
+ // One machine owns an un-@'d message (2026-10-03: the Mac's and the
1802
+ // Air's "Ella" both acted on one owner message in the Mac's room). Every
1803
+ // machine computes the owner from the same Cloud snapshot.
1804
+ const owner = me ? roomOwnerInstance(room) : null;
1805
+ if (owner && owner !== me) {
1806
+ this.logger.info('Shared room: an un-@\'d message belongs to another machine — recorded, not dispatched here', {
1807
+ slackChannel: `#${mapping.slackChannelName}`,
1808
+ ts: message.ts,
1809
+ owner,
1810
+ });
1811
+ return { state: { awakeHere: [], awakeElsewhere: true, wakeWhenAllAsleep: null }, line, deferredElsewhere: true, ...(fallbackElsewhere ? { fallbackElsewhere } : {}) };
1812
+ }
1813
+ const shared = owner === me && new Set(room.members.filter((m) => m.awake).map((m) => m.instanceId)).size > 1;
1814
+ return {
1815
+ state: { awakeHere, awakeElsewhere, wakeWhenAllAsleep },
1816
+ line,
1817
+ ...(shared ? { ownsSharedMessage: true } : {}),
1818
+ ...(fallbackElsewhere ? { fallbackElsewhere } : {}),
1819
+ };
1820
+ }
1821
+ /**
1822
+ * Whether a channel message that has no room mapping on this machine (it
1823
+ * would fall through to the orchestrator) belongs to another machine's
1824
+ * room. The orchestrator must not pick it up and forward it to a local
1825
+ * agent (2026-10-03: the Air's orc routed the Mac's room message to the
1826
+ * Air's Ella).
1827
+ *
1828
+ * @param message - Inbound message
1829
+ * @returns True when another machine owns it
1830
+ */
1831
+ async sharedRoomOwnedElsewhere(message) {
1832
+ const room = message.room;
1833
+ if (!room || message.handoffTo)
1834
+ return false;
1835
+ const me = this.deps.resolveInstanceId ? await this.deps.resolveInstanceId().catch(() => null) : null;
1836
+ const isHere = (m) => me ? m.instanceId === me : (this.deps.isLocalAgent?.(localAgentSession(m.agentSession)) ?? false);
1837
+ const owner = me ? roomOwnerInstance(room) : null;
1838
+ return !!owner && owner !== me && room.members.some((m) => !isHere(m) && m.awake);
1756
1839
  }
1757
1840
  /**
1758
1841
  * Hand a room message to one agent, wherever it runs.