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.
- package/config/constants.ts +43 -0
- package/dist/backend/backend/src/constants.d.ts +95 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +79 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +22 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +2 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +42 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +19 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +119 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +3 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +183 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +70 -0
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +78 -0
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts +29 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +200 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +485 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +163 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +176 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts +106 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.js +238 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +38 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts +209 -0
- package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js +607 -0
- package/dist/backend/backend/src/services/cloud/conversation-cloud-sync.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts +167 -0
- package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js +127 -0
- package/dist/backend/backend/src/services/cloud/conversation-ingest.contract.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +4 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +11 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +13 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +13 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts +55 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js +114 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +1 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +10 -0
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +27 -2
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +10 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +27 -4
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +12 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +42 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +42 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +95 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +79 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +94 -2
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +183 -2
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +9 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts +136 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js +207 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/cloud-outbox.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +62 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +111 -4
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts +206 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js +442 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/unified-log.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts +29 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +38 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +13 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +34 -2
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +12 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/config/constants.d.ts +42 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +42 -0
- package/dist/cli/config/constants.js.map +1 -1
- 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;
|
|
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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"}
|