crewly 1.20.148 → 1.20.150

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 (168) hide show
  1. package/config/constants.ts +43 -0
  2. package/dist/backend/backend/src/constants.d.ts +95 -0
  3. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  4. package/dist/backend/backend/src/constants.js +79 -1
  5. package/dist/backend/backend/src/constants.js.map +1 -1
  6. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +1 -0
  7. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  8. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +22 -0
  9. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  10. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +1 -0
  11. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  12. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +2 -0
  13. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  14. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +42 -1
  16. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  17. package/dist/backend/backend/src/index.d.ts +19 -0
  18. package/dist/backend/backend/src/index.d.ts.map +1 -1
  19. package/dist/backend/backend/src/index.js +119 -1
  20. package/dist/backend/backend/src/index.js.map +1 -1
  21. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +3 -0
  23. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
  24. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
  25. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  26. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +183 -2
  27. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  28. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +70 -0
  29. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +78 -0
  31. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -1
  32. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
  34. package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  35. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
  36. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
  37. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
  38. package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
  39. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
  40. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
  42. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  43. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
  44. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
  46. package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
  47. package/dist/backend/backend/src/services/chat-v2/types.d.ts +29 -0
  48. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  50. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +200 -0
  51. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -0
  52. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +485 -0
  53. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -0
  54. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +163 -0
  55. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -0
  56. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +176 -0
  57. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -0
  58. package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts +106 -0
  59. package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/cloud/cloud-login-runner.js +238 -0
  61. package/dist/backend/backend/src/services/cloud/cloud-login-runner.js.map +1 -0
  62. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
  63. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +38 -0
  65. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  66. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
  67. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  69. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts +209 -0
  70. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts.map +1 -0
  71. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js +607 -0
  72. package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js.map +1 -0
  73. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts +167 -0
  74. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts.map +1 -0
  75. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js +127 -0
  76. package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js.map +1 -0
  77. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +4 -0
  79. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  80. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +11 -1
  82. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  83. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
  84. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +13 -0
  86. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/slack/slack-initializer.js +13 -0
  89. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  90. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  91. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
  93. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  94. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts +55 -0
  95. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts.map +1 -0
  96. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js +114 -0
  97. package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js.map +1 -0
  98. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  99. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +1 -0
  100. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  101. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +10 -0
  102. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +27 -2
  104. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  105. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +10 -0
  106. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +27 -4
  108. package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
  109. package/dist/backend/backend/src/types/slack.types.d.ts +12 -0
  110. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  111. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  112. package/dist/backend/build-info.json +2 -2
  113. package/dist/backend/config/constants.d.ts +42 -0
  114. package/dist/backend/config/constants.d.ts.map +1 -1
  115. package/dist/backend/config/constants.js +42 -0
  116. package/dist/backend/config/constants.js.map +1 -1
  117. package/dist/cli/backend/src/constants.d.ts +95 -0
  118. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  119. package/dist/cli/backend/src/constants.js +79 -1
  120. package/dist/cli/backend/src/constants.js.map +1 -1
  121. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
  122. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  123. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +183 -2
  124. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  125. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
  126. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
  127. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
  128. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
  129. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
  130. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
  131. package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
  132. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
  133. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  134. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
  135. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  136. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
  137. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
  138. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
  139. package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
  140. package/dist/cli/backend/src/services/chat-v2/types.d.ts +29 -0
  141. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -1
  142. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -1
  143. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
  144. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  145. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +38 -0
  146. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  147. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
  148. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  149. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  150. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
  151. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  152. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +13 -0
  153. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  154. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  155. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  156. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
  157. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  158. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  159. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +1 -0
  160. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  161. package/dist/cli/backend/src/types/slack.types.d.ts +12 -0
  162. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  163. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  164. package/dist/cli/config/constants.d.ts +42 -0
  165. package/dist/cli/config/constants.d.ts.map +1 -1
  166. package/dist/cli/config/constants.js +42 -0
  167. package/dist/cli/config/constants.js.map +1 -1
  168. package/package.json +1 -1
@@ -255,6 +255,35 @@ export interface ChatMessageListResult {
255
255
  prevCursor: string | null;
256
256
  channelId: string;
257
257
  }
258
+ /**
259
+ * One entry of an agent's merged timeline
260
+ * (`GET /api/chat/agents/:session/timeline`, specs/unified-conversations-cloud-store.md §A.5):
261
+ * the message plus where it happened.
262
+ */
263
+ export interface ChatTimelineItemDTO extends ChatMessageDTO {
264
+ /** Surface — slack, crewly-chat, cloud-talk, google-chat, telegram, whatsapp, system, runtime. */
265
+ source: string;
266
+ /** `in` (to an agent), `out` (from an agent), `internal`. */
267
+ direction: string;
268
+ /** `owner`, `agent`, `human`, `system`. */
269
+ senderKind: string;
270
+ /** The agent the message is to/from, when known. */
271
+ agentSession: string | null;
272
+ /** External ids (Slack workspace / channel / ts / thread, messenger ids). */
273
+ extRef: Record<string, string> | null;
274
+ /** Name of the channel the message lives in. */
275
+ channelName: string;
276
+ /** Type of that channel. */
277
+ channelType: ChatChannelType;
278
+ }
279
+ /** Response of the per-agent timeline. */
280
+ export interface ChatTimelineResult {
281
+ agentSession: string;
282
+ /** Newest first. */
283
+ items: ChatTimelineItemDTO[];
284
+ /** Pass as `cursor` to load the next (older) page; null on the last page. */
285
+ nextCursor: string | null;
286
+ }
258
287
  /** Body of `POST /channels`. */
259
288
  export interface CreateChannelInput {
260
289
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA4RhF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAIX,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IACA;IAEA;IAJlB,YACkB,IAAmB,EACnB,UAAkB,EAClC,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAe;QACnB,eAAU,GAAV,UAAU,CAAQ;QAElB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2ThF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAIX,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IACA;IAEA;IAJlB,YACkB,IAAmB,EACnB,UAAkB,EAClC,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAe;QACnB,eAAU,GAAV,UAAU,CAAQ;QAElB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Cloud disconnect notice — tells the owner on Slack when this machine has
3
+ * lost Crewly Cloud, and lets them fix it from their phone.
4
+ *
5
+ * Why: inbound Slack reaches a machine only through Cloud → relay. When a
6
+ * machine's Cloud sign-in expires (or Cloud is unreachable) its agents can
7
+ * still post, but every message to them queues in Cloud unseen. On
8
+ * 2026-09-27 a second Mac sat like that for hours; nobody was told, and the
9
+ * owner — never at the machine — could not fix it remotely.
10
+ *
11
+ * What it does, once a minute:
12
+ * 1. Detect ({@link evaluateDisconnect}): signed in (a Cloud config exists)
13
+ * AND (sync is `auth_expired` OR Cloud has not answered for 15 min).
14
+ * 2. When the sign-in is the problem, run `crewly cloud login --no-browser`
15
+ * in a PTY ({@link startCloudLogin}) — the same device pairing the owner
16
+ * would run by hand — and take the approve link it prints.
17
+ * 3. DM the owner through the Slack Web API with the bot tokens this machine
18
+ * already holds (outbound needs no Cloud), link included.
19
+ * 4. The CLI waits for the approval and saves the credentials itself; then
20
+ * CloudSync is restarted and the owner gets 「已重新连上 Cloud…」.
21
+ * If the CLI asks for typed input, the owner's reply is read straight from
22
+ * the DM (`conversations.history`) — it cannot arrive through Cloud.
23
+ *
24
+ * Rate limit: one notice per disconnect episode, repeated at most every 6 h,
25
+ * persisted under the Crewly home so a restart does not re-notify. An
26
+ * expired link is replaced by editing the same message (no new
27
+ * notification); a failed login gets one brief note and waits for the next
28
+ * window. Kill switch: `CREWLY_CLOUD_DISCONNECT_NOTICE=0`.
29
+ *
30
+ * @module services/cloud/cloud-disconnect-notice.service
31
+ */
32
+ import type { OwnerDirectDm } from '../slack/slack-owner-direct-dm.js';
33
+ import type { CloudSyncHealth } from './cloud-sync.types.js';
34
+ import { type CloudLoginHandle } from './cloud-login-runner.js';
35
+ /** Minimal logger. */
36
+ export interface DisconnectNoticeLogger {
37
+ info(message: string, meta?: Record<string, unknown>): void;
38
+ warn(message: string, meta?: Record<string, unknown>): void;
39
+ }
40
+ /** Everything the service touches outside itself. */
41
+ export interface CloudDisconnectNoticeDeps {
42
+ /** State file (`<crewlyHome>/cloud/disconnect-notice.json`) */
43
+ stateFile: string;
44
+ /** A Cloud config exists (signed in, not logged out) */
45
+ isSignedIn: () => Promise<boolean>;
46
+ /** CloudSyncService health */
47
+ getHealth: () => CloudSyncHealth;
48
+ /** This machine's name */
49
+ getDeviceName: () => Promise<string>;
50
+ /** Owner DM over the bot token, or null when Slack is not configured here */
51
+ getDm: () => OwnerDirectDm | null;
52
+ /** Start `crewly cloud login` in a PTY (throws when it cannot) */
53
+ startLogin: () => CloudLoginHandle;
54
+ /** After a successful CLI login: make sure CloudSync runs on the new credentials */
55
+ reconnect: () => Promise<boolean>;
56
+ logger: DisconnectNoticeLogger;
57
+ now: () => number;
58
+ schedule: (fn: () => void, ms: number) => unknown;
59
+ cancel: (handle: unknown) => void;
60
+ thresholdMs?: number;
61
+ repeatMs?: number;
62
+ checkIntervalMs?: number;
63
+ linkWaitMs?: number;
64
+ loginRetryMs?: number;
65
+ replyPollMs?: number;
66
+ replyMaxWaitMs?: number;
67
+ }
68
+ /** Watches the Cloud connection and DMs the owner when it is lost. */
69
+ export declare class CloudDisconnectNoticeService {
70
+ private readonly deps;
71
+ private readonly thresholdMs;
72
+ private readonly repeatMs;
73
+ private readonly checkIntervalMs;
74
+ private readonly linkWaitMs;
75
+ private readonly loginRetryMs;
76
+ private readonly replyPollMs;
77
+ private readonly replyMaxWaitMs;
78
+ private monitorStartedAt;
79
+ private timer;
80
+ private stopped;
81
+ private ticking;
82
+ private login;
83
+ private lastLoginAttemptAt;
84
+ private replyTimer;
85
+ private replyDeadline;
86
+ private lastReplyTs;
87
+ /** Where the current notice is (for reading the owner's replies) */
88
+ private notice;
89
+ /** Serialises checks and login outcomes so neither overwrites the other's state */
90
+ private chain;
91
+ /**
92
+ * @param deps - Collaborators (see {@link CloudDisconnectNoticeDeps})
93
+ */
94
+ constructor(deps: CloudDisconnectNoticeDeps);
95
+ /** Start checking every minute. */
96
+ start(): void;
97
+ /** Stop checking and kill any login run. */
98
+ stop(): void;
99
+ /**
100
+ * One check. Public for tests; the timer calls it every minute.
101
+ *
102
+ * @returns Resolves when the check (and any notice) is done
103
+ */
104
+ tick(): Promise<void>;
105
+ /**
106
+ * Run `fn` after every earlier check / login outcome has finished.
107
+ *
108
+ * @param fn - Work that reads and writes the state file
109
+ * @returns Resolves when `fn` is done (never rejects)
110
+ */
111
+ private serial;
112
+ /**
113
+ * The check itself: detect, then notify, refresh the link, or close the episode.
114
+ */
115
+ private check;
116
+ /**
117
+ * Send the notice (first of the episode, or the 6-hourly repeat).
118
+ *
119
+ * @param state - Episode state (updated in place)
120
+ * @param reason - Why
121
+ */
122
+ private sendNotice;
123
+ /**
124
+ * Whether to start a new login run and put its link into the notice:
125
+ * sign-in problem, a notice to edit, no live run, not blocked by a failed
126
+ * login, and not retried within the last few minutes.
127
+ *
128
+ * @param state - Episode state
129
+ * @param now - Now (epoch ms)
130
+ * @returns True to refresh
131
+ */
132
+ private shouldRefreshLink;
133
+ /**
134
+ * Start a login run and edit the notice to carry its link (the link in it
135
+ * is missing or has expired). Editing does not notify the owner again.
136
+ *
137
+ * @param state - Episode state (updated in place)
138
+ */
139
+ private refreshLink;
140
+ /**
141
+ * Start (or reuse) a CLI login run and wait briefly for its link.
142
+ *
143
+ * @returns The run's snapshot with a link, or null when none came
144
+ */
145
+ private ensureLoginLink;
146
+ /**
147
+ * A login run ended.
148
+ *
149
+ * @param handle - The run
150
+ * @param snapshot - How it ended
151
+ */
152
+ private onLoginFinished;
153
+ /**
154
+ * Tell the owner briefly that the login did not finish, and hold further
155
+ * login runs until the next notice window.
156
+ *
157
+ * @param state - Episode state (updated in place)
158
+ * @param detail - Owner-facing reason
159
+ */
160
+ private blockUntilNextWindow;
161
+ /**
162
+ * The episode is over: forget it and, when the owner was told and the
163
+ * machine is back, say so.
164
+ *
165
+ * @param reconnected - Back on Cloud (false = logged out on purpose)
166
+ */
167
+ private endEpisode;
168
+ /** Read the owner's DM replies while the CLI waits for typed input. */
169
+ private startReplyPolling;
170
+ /** Stop reading replies. */
171
+ private stopReplyPolling;
172
+ /**
173
+ * This machine's name (hostname fallback is the caller's job).
174
+ *
175
+ * @returns The name
176
+ */
177
+ private deviceName;
178
+ /** Schedule the next check. */
179
+ private scheduleNext;
180
+ }
181
+ /** Live hooks the server provides to {@link createCloudDisconnectNoticeService}. */
182
+ export interface CloudDisconnectNoticeWiring {
183
+ /** Crewly home (the state file lives here) */
184
+ crewlyHome: string;
185
+ /** Owner DM over this machine's bot token, or null when Slack is not configured */
186
+ getDm: () => OwnerDirectDm | null;
187
+ /** Restart CloudSync on the credentials the CLI saved */
188
+ reconnect: () => Promise<boolean>;
189
+ /** This machine's name */
190
+ getDeviceName: () => Promise<string>;
191
+ }
192
+ /**
193
+ * Build the service with the real Cloud config, CloudSync health, CLI login,
194
+ * clock and timers.
195
+ *
196
+ * @param wiring - Server hooks
197
+ * @returns The service (not started)
198
+ */
199
+ export declare function createCloudDisconnectNoticeService(wiring: CloudDisconnectNoticeWiring): CloudDisconnectNoticeService;
200
+ //# sourceMappingURL=cloud-disconnect-notice.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-disconnect-notice.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-disconnect-notice.service.ts"],"names":[],"mappings":"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"}