crewly 1.4.55 → 1.4.56

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 (57) hide show
  1. package/dist/backend/backend/src/constants.d.ts +36 -13
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +37 -13
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +187 -0
  6. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -0
  7. package/dist/backend/backend/src/controllers/browser/browser.controller.js +269 -0
  8. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -0
  9. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts +17 -0
  10. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -0
  11. package/dist/backend/backend/src/controllers/browser/browser.routes.js +65 -0
  12. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -0
  13. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/chat/chat.controller.js +31 -1
  15. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +23 -0
  18. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  20. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +12 -0
  21. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  22. package/dist/backend/backend/src/index.d.ts.map +1 -1
  23. package/dist/backend/backend/src/index.js +45 -0
  24. package/dist/backend/backend/src/index.js.map +1 -1
  25. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  26. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  27. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  28. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +131 -0
  29. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -0
  30. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +241 -0
  31. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -0
  32. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +13 -0
  34. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  35. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -2
  36. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  37. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +149 -43
  38. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  39. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  40. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +103 -0
  41. package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/messaging/message-replay.service.js +247 -0
  43. package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -0
  44. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +40 -0
  46. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  47. package/dist/backend/backend/src/services/slack/slack.service.js +2 -2
  48. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  49. package/dist/cli/backend/src/constants.d.ts +36 -13
  50. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  51. package/dist/cli/backend/src/constants.js +37 -13
  52. package/dist/cli/backend/src/constants.js.map +1 -1
  53. package/dist/cli/cli/src/commands/service.d.ts +9 -0
  54. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  55. package/dist/cli/cli/src/commands/service.js +76 -15
  56. package/dist/cli/cli/src/commands/service.js.map +1 -1
  57. package/package.json +1 -1
@@ -104,6 +104,8 @@ export class CloudSyncService extends EventEmitter {
104
104
  devicePollFailures = 0;
105
105
  /** Consecutive message poll failure count */
106
106
  messagePollFailures = 0;
107
+ /** Error recovery timer handle */
108
+ errorRecoveryTimer = null;
107
109
  constructor() {
108
110
  super();
109
111
  this.logger = LoggerService.getInstance().createComponentLogger('CloudSyncService');
@@ -192,6 +194,10 @@ export class CloudSyncService extends EventEmitter {
192
194
  clearInterval(this.messagePollTimer);
193
195
  this.messagePollTimer = null;
194
196
  }
197
+ if (this.errorRecoveryTimer) {
198
+ clearInterval(this.errorRecoveryTimer);
199
+ this.errorRecoveryTimer = null;
200
+ }
195
201
  this.state = 'stopped';
196
202
  this.config = null;
197
203
  this.devices = [];
@@ -266,15 +272,21 @@ export class CloudSyncService extends EventEmitter {
266
272
  throw new Error('CloudSyncService not started. Call start() first.');
267
273
  }
268
274
  const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES}`;
269
- // Cloud Sync messages endpoint expects { to, type, payload, encrypted? }
275
+ // Cloud Relay queue/send expects { toDeviceId, payload }.
276
+ // We wrap type + encrypted + actual payload into the payload field so
277
+ // the receiver can reconstruct the full IncomingMessage shape on poll.
278
+ const wrappedPayload = JSON.stringify({
279
+ type,
280
+ data: payload,
281
+ encrypted: false,
282
+ fromDeviceName: this.config.deviceName,
283
+ });
270
284
  const response = await fetch(url, {
271
285
  method: 'POST',
272
286
  headers: this.authHeaders(),
273
287
  body: JSON.stringify({
274
- to: toDeviceId,
275
- type,
276
- payload,
277
- encrypted: false,
288
+ toDeviceId,
289
+ payload: wrappedPayload,
278
290
  }),
279
291
  signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),
280
292
  });
@@ -290,16 +302,16 @@ export class CloudSyncService extends EventEmitter {
290
302
  /**
291
303
  * Send a heartbeat to the Cloud server with current device state.
292
304
  * Called periodically by the heartbeat timer.
305
+ *
306
+ * Posts to the Cloud Relay handshake endpoint (/api/v1/relay/handshake)
307
+ * which registers/updates the device with enriched metadata.
293
308
  */
294
309
  async sendHeartbeat() {
295
- if (!this.config)
310
+ if (!this.config || this.state === 'error')
296
311
  return;
297
312
  try {
298
313
  const teams = await gatherTeamSummaries();
299
- // Cloud API expects the same payload as the frontend useDeviceHeartbeat hook.
300
- // The Cloud server identifies the device from the JWT token, so we send
301
- // deviceName and teams. We also send the extended fields for richer metadata
302
- // that the Cloud API may store but does not require.
314
+ // Cloud Relay handshake expects: { deviceId, deviceName, teams, version, timestamp }
303
315
  const payload = {
304
316
  deviceId: this.config.deviceId,
305
317
  deviceName: this.config.deviceName,
@@ -309,31 +321,23 @@ export class CloudSyncService extends EventEmitter {
309
321
  teams,
310
322
  timestamp: new Date().toISOString(),
311
323
  };
312
- const authUrl = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.HEARTBEAT}`;
313
- const syncUrl = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.HEARTBEAT_SYNC}`;
314
- const bodyStr = JSON.stringify(payload);
315
- const headers = this.authHeaders();
316
- const timeout = CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS;
317
- // Send heartbeat to BOTH Cloud endpoints in parallel:
318
- // 1. Auth service (/api/devices/heartbeat) — for device discovery
319
- // 2. Relay sync handler (/api/v1/sync/heartbeat) — for message queue device registration
320
- const [authRes, syncRes] = await Promise.all([
321
- fetch(authUrl, { method: 'POST', headers, body: bodyStr, signal: AbortSignal.timeout(timeout) }),
322
- fetch(syncUrl, { method: 'POST', headers, body: bodyStr, signal: AbortSignal.timeout(timeout) }).catch(() => null),
323
- ]);
324
- if (!authRes.ok) {
324
+ const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.HEARTBEAT}`;
325
+ const response = await fetch(url, {
326
+ method: 'POST',
327
+ headers: this.authHeaders(),
328
+ body: JSON.stringify(payload),
329
+ signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),
330
+ });
331
+ if (!response.ok) {
325
332
  // On 401/403, attempt token refresh before counting as failure
326
- if (authRes.status === 401 || authRes.status === 403) {
327
- const refreshed = await this.handleAuthError(authRes.status);
333
+ if (response.status === 401 || response.status === 403) {
334
+ const refreshed = await this.handleAuthError(response.status);
328
335
  if (refreshed) {
329
336
  this.logger.info('Heartbeat will retry with refreshed token on next cycle');
330
337
  return;
331
338
  }
332
339
  }
333
- throw new Error(`Heartbeat failed: ${authRes.status}`);
334
- }
335
- if (syncRes && !syncRes.ok) {
336
- this.logger.debug('Sync heartbeat returned non-OK (non-fatal)', { status: syncRes.status });
340
+ throw new Error(`Heartbeat failed: ${response.status}`);
337
341
  }
338
342
  this.heartbeatFailures = 0;
339
343
  }
@@ -358,7 +362,7 @@ export class CloudSyncService extends EventEmitter {
358
362
  * which we normalize to the SyncDevice shape used by the frontend.
359
363
  */
360
364
  async pollDevices() {
361
- if (!this.config)
365
+ if (!this.config || this.state === 'error')
362
366
  return;
363
367
  try {
364
368
  const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.DEVICES}`;
@@ -379,8 +383,8 @@ export class CloudSyncService extends EventEmitter {
379
383
  throw new Error(`Device poll failed: ${response.status}`);
380
384
  }
381
385
  const data = await response.json();
382
- // Cloud /api/devices returns { success, data: Device[] }
383
- // Legacy /api/v1/sync/devices returned { success, devices: Device[] }
386
+ // Cloud /api/v1/relay/devices returns { success, devices: Device[] }
387
+ // Legacy endpoints returned { success, data: Device[] }
384
388
  // Support both formats for forward/backward compatibility
385
389
  const rawDevices = data.data || data.devices;
386
390
  if (!rawDevices) {
@@ -462,10 +466,11 @@ export class CloudSyncService extends EventEmitter {
462
466
  * Cloud returns messages as: `{ id, from, fromDeviceName, type, payload, encrypted, sentAt }`.
463
467
  */
464
468
  async pollMessages() {
465
- if (!this.config)
469
+ if (!this.config || this.state === 'error')
466
470
  return;
467
471
  try {
468
- const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES_POLL}?deviceId=${encodeURIComponent(this.config.deviceId)}`;
472
+ // Cloud Relay queue/poll accepts ?queueId= query param (fallback when JWT has no deviceId)
473
+ const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES_POLL}?queueId=${encodeURIComponent(this.config.deviceId)}`;
469
474
  const response = await fetch(url, {
470
475
  method: 'GET',
471
476
  headers: this.authHeaders(),
@@ -489,16 +494,36 @@ export class CloudSyncService extends EventEmitter {
489
494
  this.messagePollFailures = 0;
490
495
  return;
491
496
  }
492
- // Normalize Cloud message format to IncomingMessage shape
497
+ // Normalize Cloud Relay message format to IncomingMessage shape.
498
+ // Cloud returns: { id, fromDeviceId, payload (string), createdAt }.
499
+ // The payload may be a JSON string wrapping { type, data, encrypted, fromDeviceName }
500
+ // (sent by our sendMessage), or a raw string from legacy senders.
493
501
  const messageIds = [];
494
502
  for (const raw of rawMessages) {
503
+ let msgType = 'relay';
504
+ let msgPayload = raw.payload;
505
+ let msgEncrypted = false;
506
+ let msgFromDeviceName = '';
507
+ // Try to unwrap our wrapped payload format
508
+ try {
509
+ const parsed = typeof raw.payload === 'string' ? JSON.parse(raw.payload) : raw.payload;
510
+ if (parsed && typeof parsed === 'object' && 'type' in parsed && 'data' in parsed) {
511
+ msgType = parsed.type || 'relay';
512
+ msgPayload = parsed.data;
513
+ msgEncrypted = parsed.encrypted ?? false;
514
+ msgFromDeviceName = parsed.fromDeviceName || '';
515
+ }
516
+ }
517
+ catch {
518
+ // Not JSON or not our format — use raw payload as-is
519
+ }
495
520
  const msg = {
496
521
  id: raw.id,
497
522
  from: raw.fromDeviceId || raw.from || '',
498
- fromDeviceName: raw.fromDeviceName || '',
499
- type: raw.type || 'relay',
500
- payload: raw.payload,
501
- encrypted: raw.encrypted ?? false,
523
+ fromDeviceName: msgFromDeviceName,
524
+ type: msgType,
525
+ payload: msgPayload,
526
+ encrypted: msgEncrypted,
502
527
  sentAt: raw.createdAt || raw.sentAt || new Date().toISOString(),
503
528
  };
504
529
  this.emit('message', msg);
@@ -520,7 +545,8 @@ export class CloudSyncService extends EventEmitter {
520
545
  }
521
546
  /**
522
547
  * Acknowledge processed messages so Cloud can remove them from the queue.
523
- * Uses `deviceId` in body to identify the target message queue.
548
+ * Uses `queueId` in body to identify the target message queue (fallback
549
+ * when JWT has no deviceId claim).
524
550
  *
525
551
  * @param messageIds - Array of message IDs to acknowledge
526
552
  */
@@ -533,7 +559,7 @@ export class CloudSyncService extends EventEmitter {
533
559
  method: 'POST',
534
560
  headers: this.authHeaders(),
535
561
  body: JSON.stringify({
536
- deviceId: this.config.deviceId,
562
+ queueId: this.config.deviceId,
537
563
  messageIds,
538
564
  }),
539
565
  signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),
@@ -551,21 +577,101 @@ export class CloudSyncService extends EventEmitter {
551
577
  // -------------------------------------------------------------------------
552
578
  /**
553
579
  * Check if any failure counter has exceeded the threshold.
554
- * If so, transition to error state.
580
+ * If so, transition to error state and schedule a recovery attempt.
555
581
  */
556
582
  checkErrorThreshold() {
583
+ if (this.state === 'error')
584
+ return; // Already in error state, don't log repeatedly
557
585
  const max = CLOUD_SYNC_CONSTANTS.MAX_CONSECUTIVE_FAILURES;
558
586
  if (this.heartbeatFailures >= max ||
559
587
  this.devicePollFailures >= max ||
560
588
  this.messagePollFailures >= max) {
561
- this.logger.error('Cloud Sync entering error state after repeated failures', {
589
+ this.logger.error('Cloud Sync entering error state after repeated failures — scheduling recovery', {
562
590
  heartbeatFailures: this.heartbeatFailures,
563
591
  devicePollFailures: this.devicePollFailures,
564
592
  messagePollFailures: this.messagePollFailures,
565
593
  });
566
594
  this.state = 'error';
595
+ this.scheduleErrorRecovery();
567
596
  }
568
597
  }
598
+ /**
599
+ * Schedule periodic recovery attempts when in error state.
600
+ *
601
+ * Tries a single heartbeat every ERROR_RECOVERY_INTERVAL_MS (60s by default).
602
+ * If the heartbeat succeeds, resets all failure counters and resumes normal
603
+ * polling. This prevents permanent sync loss from transient network issues.
604
+ */
605
+ scheduleErrorRecovery() {
606
+ if (this.errorRecoveryTimer)
607
+ return; // Already scheduled
608
+ const recoveryInterval = CLOUD_SYNC_CONSTANTS.ERROR_RECOVERY_INTERVAL_MS ?? 60_000;
609
+ this.errorRecoveryTimer = setInterval(async () => {
610
+ if (this.state !== 'error' || !this.config) {
611
+ // Already recovered or stopped — cancel recovery timer
612
+ if (this.errorRecoveryTimer) {
613
+ clearInterval(this.errorRecoveryTimer);
614
+ this.errorRecoveryTimer = null;
615
+ }
616
+ return;
617
+ }
618
+ this.logger.info('Attempting Cloud Sync error recovery...');
619
+ try {
620
+ const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.HEARTBEAT}`;
621
+ const teams = await gatherTeamSummaries();
622
+ const payload = {
623
+ deviceId: this.config.deviceId,
624
+ deviceName: this.config.deviceName,
625
+ status: 'online',
626
+ version: this.version,
627
+ capabilities: ['orchestrator', 'agent-runner'],
628
+ teams,
629
+ timestamp: new Date().toISOString(),
630
+ };
631
+ const response = await fetch(url, {
632
+ method: 'POST',
633
+ headers: this.authHeaders(),
634
+ body: JSON.stringify(payload),
635
+ signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),
636
+ });
637
+ if (response.ok) {
638
+ this.logger.info('Cloud Sync recovery succeeded — resuming normal polling');
639
+ this.heartbeatFailures = 0;
640
+ this.devicePollFailures = 0;
641
+ this.messagePollFailures = 0;
642
+ this.state = 'syncing';
643
+ // Cancel recovery timer
644
+ if (this.errorRecoveryTimer) {
645
+ clearInterval(this.errorRecoveryTimer);
646
+ this.errorRecoveryTimer = null;
647
+ }
648
+ // Do an immediate device poll to refresh cached devices
649
+ this.pollDevices().catch(() => { });
650
+ }
651
+ else if (response.status === 401 || response.status === 403) {
652
+ // Try token refresh
653
+ const refreshed = await this.handleAuthError(response.status);
654
+ if (refreshed) {
655
+ this.logger.info('Token refreshed during recovery — will retry next cycle');
656
+ }
657
+ else {
658
+ this.logger.warn('Recovery heartbeat auth failed, will retry', { status: response.status });
659
+ }
660
+ }
661
+ else {
662
+ this.logger.warn('Recovery heartbeat failed, will retry', { status: response.status });
663
+ }
664
+ }
665
+ catch (error) {
666
+ this.logger.warn('Recovery attempt failed, will retry', {
667
+ error: error instanceof Error ? error.message : String(error),
668
+ });
669
+ }
670
+ }, recoveryInterval);
671
+ // Unref so the timer doesn't keep the process alive
672
+ if (this.errorRecoveryTimer.unref)
673
+ this.errorRecoveryTimer.unref();
674
+ }
569
675
  /** Guard to prevent concurrent token refresh attempts */
570
676
  tokenRefreshInProgress = false;
571
677
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-sync.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACrF,OAAQ,GAAG,CAAC,OAAkB,IAAI,SAAS,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;YACtC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC;SACvF,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IACxC,MAAM,CAAC,QAAQ,GAA4B,IAAI,CAAC;IACvC,MAAM,CAAkB;IAEzC,4BAA4B;IACpB,KAAK,GAAmB,SAAS,CAAC;IAC1C,mCAAmC;IAC3B,MAAM,GAA2B,IAAI,CAAC;IAC9C,wCAAwC;IAChC,OAAO,GAAiB,EAAE,CAAC;IACnC,4BAA4B;IACpB,OAAO,GAAG,SAAS,CAAC;IAE5B,6BAA6B;IACrB,cAAc,GAA0C,IAAI,CAAC;IACrE,+BAA+B;IACvB,eAAe,GAA0C,IAAI,CAAC;IACtE,gCAAgC;IACxB,gBAAgB,GAA0C,IAAI,CAAC;IAEvE,0CAA0C;IAClC,iBAAiB,GAAG,CAAC,CAAC;IAC9B,4CAA4C;IACpC,kBAAkB,GAAG,CAAC,CAAC;IAC/B,6CAA6C;IACrC,mBAAmB,GAAG,CAAC,CAAC;IAEhC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC9B,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;;;;;;OAOG;IACH,KAAK,CAAC,MAAuB;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,+BAA+B;QAC/B,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEjE,mCAAmC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnC,wBAAwB;QACxB,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/C,oBAAoB,CAAC,qBAAqB,CAC3C,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,WAAW,CAChC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7C,oBAAoB,CAAC,uBAAuB,CAC7C,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,WAAW,CACjC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9C,oBAAoB,CAAC,wBAAwB,CAC9C,CAAC;QAEF,oDAAoD;QACpD,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK;YAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK;YAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QAErC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAAC,CAAC;QAElG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,QAAgB;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,IAAiB,EAAE,OAAgB;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAEhF,yEAAyE;QACzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,UAAU;gBACd,IAAI;gBACJ,OAAO;gBACP,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;SACrE,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE1C,8EAA8E;YAC9E,wEAAwE;YACxE,6EAA6E;YAC7E,qDAAqD;YACrD,MAAM,OAAO,GAAqB;gBAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;gBAC9C,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACrF,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,kBAAkB,CAAC;YAExD,sDAAsD;YACtD,kEAAkE;YAClE,yFAAyF;YACzF,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC3C,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChG,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aACnH,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,+DAA+D;gBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC7D,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;wBAC5E,OAAO;oBACT,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9F,CAAC;YAED,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBACnC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,QAAQ,EAAE,IAAI,CAAC,iBAAiB;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAE5E;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAE/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;aACrE,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,+DAA+D;gBAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;wBAC9E,OAAO;oBACT,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0D,CAAC;YAE3F,yDAAyD;YACzD,sEAAsE;YACtE,0DAA0D;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,2DAA2D;gBAC3D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CACzE,CAAC;YAEF,uDAAuD;YACvD,iFAAiF;YACjF,oGAAoG;YACpG,wFAAwF;YACxF,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,cAAc,GAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;gBAC7D,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACjG,mFAAmF;gBACnF,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ;oBACpC,CAAC,CAAC,MAAM,KAAK,IAAI;oBACjB,CAAC,CAAC,KAAK,KAAK,QAAQ;oBACpB,CAAC,CAAC,KAAK,KAAK,SAAS;oBACrB,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,CAAC;gBAE3D,OAAO;oBACL,QAAQ;oBACR,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBACtE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,SAAkB;oBACzD,eAAe,EAAE,QAAQ;oBACzB,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,MAAO,CAAC,QAAQ;oBAC3C,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,YAAY,EAAE,CAAC,CAAC,YAAY;oBAC5B,yCAAyC;oBACzC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/B,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;oBAClC,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;oBACvD,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;oBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;oBAClC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;iBACrB,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,oCAAoC;YACpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC3E,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC7F,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACjE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;oBACtE,IAAI,aAAa,EAAE,CAAC;wBAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBACrC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,QAAQ,EAAE,IAAI,CAAC,kBAAkB;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4BAA4B;IAC5B,4EAA4E;IAE5E;;;;;;OAMG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,aAAa,aAAa,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE1I,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;aACrE,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,+DAA+D;gBAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;wBAC/E,OAAO;oBACT,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA2D,CAAC;YAE5F,wEAAwE;YACxE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAE/C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,0DAA0D;YAC1D,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAoB;oBAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE;oBACxC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE;oBACxC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO;oBACzB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,KAAK;oBACjC,MAAM,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBAChE,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAED,iCAAiC;YACjC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEnC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACtC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,QAAQ,EAAE,IAAI,CAAC,mBAAmB;aACnC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,WAAW,CAAC,UAAoB;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAEpF,MAAM,KAAK,CAAC,GAAG,EAAE;gBACf,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAC9B,UAAU;iBACX,CAAC;gBACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;aACrE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;gBACjD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAE5E;;;OAGG;IACK,mBAAmB;QACzB,MAAM,GAAG,GAAG,oBAAoB,CAAC,wBAAwB,CAAC;QAC1D,IACE,IAAI,CAAC,iBAAiB,IAAI,GAAG;YAC7B,IAAI,CAAC,kBAAkB,IAAI,GAAG;YAC9B,IAAI,CAAC,mBAAmB,IAAI,GAAG,EAC/B,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,EAAE;gBAC3E,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACvB,CAAC;IACH,CAAC;IAED,yDAAyD;IACjD,sBAAsB,GAAG,KAAK,CAAC;IAEvC;;;;;;;OAOG;IACK,KAAK,CAAC,eAAe,CAAC,MAAc;QAC1C,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACnD,IAAI,IAAI,CAAC,sBAAsB;YAAE,OAAO,KAAK,CAAC;QAE9C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;YAEhD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChG,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;gBAC/D,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;;;OAIG;IACK,WAAW;QACjB,OAAO;YACL,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE;YACnD,cAAc,EAAE,kBAAkB;SACnC,CAAC;IACJ,CAAC"}
1
+ {"version":3,"file":"cloud-sync.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export interface SyncTeamSummary {
39
39
  }
40
40
  /**
41
41
  * A device visible in the same Cloud account.
42
- * Populated by polling GET /api/v1/sync/devices.
42
+ * Populated by polling GET /api/v1/relay/devices.
43
43
  */
44
44
  export interface SyncDevice {
45
45
  /** Unique device identifier (UUID) */
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Message Replay Service
3
+ *
4
+ * Replays pending user messages after orchestrator restarts (#247).
5
+ * When the orchestrator goes offline (backend restart, session crash, etc.),
6
+ * user messages sent via Slack or Chat UI may be silently lost. This service
7
+ * scans chat conversation history on startup for unreplied user messages
8
+ * that arrived after the last queue persistence timestamp and re-enqueues
9
+ * them so the orchestrator can process them.
10
+ *
11
+ * Flow:
12
+ * 1. On startup, read `savedAt` from persisted queue state to determine
13
+ * when the backend last persisted state (proxy for "last alive" time).
14
+ * 2. Scan all active chat conversations for user messages sent after `savedAt`.
15
+ * 3. Filter out messages that already have an orchestrator/system reply after them.
16
+ * 4. Filter out messages already pending in the restored queue (by conversationId+content).
17
+ * 5. Enqueue surviving messages with a [REPLAYED] prefix.
18
+ *
19
+ * @module services/messaging/message-replay
20
+ */
21
+ import type { MessageQueueService } from './message-queue.service.js';
22
+ import type { ChatService } from '../chat/chat.service.js';
23
+ import type { ChatMessage } from '../../types/chat.types.js';
24
+ /**
25
+ * Result of a replay scan, containing details about what was found and replayed.
26
+ */
27
+ export interface ReplayResult {
28
+ /** Number of unreplied messages found */
29
+ foundCount: number;
30
+ /** Number of messages actually replayed (after filtering duplicates) */
31
+ replayedCount: number;
32
+ /** Number skipped because they were already in the queue */
33
+ skippedDuplicate: number;
34
+ /** The savedAt timestamp used to determine offline start */
35
+ offlineSince: string;
36
+ /** Duration the backend was offline (ms) */
37
+ offlineDurationMs: number;
38
+ }
39
+ /**
40
+ * MessageReplayService scans chat history on startup and replays
41
+ * unreplied user messages that arrived while the orchestrator was offline.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const replayService = new MessageReplayService(
46
+ * messageQueueService,
47
+ * chatService,
48
+ * '~/.crewly'
49
+ * );
50
+ * const result = await replayService.replayPendingMessages();
51
+ * if (result.replayedCount > 0) {
52
+ * logger.info(`Replayed ${result.replayedCount} missed messages`);
53
+ * }
54
+ * ```
55
+ */
56
+ export declare class MessageReplayService {
57
+ private logger;
58
+ private messageQueueService;
59
+ private chatService;
60
+ private crewlyHome;
61
+ /**
62
+ * Create a new MessageReplayService.
63
+ *
64
+ * @param messageQueueService - The message queue to enqueue replayed messages into
65
+ * @param chatService - The chat service to scan for unreplied messages
66
+ * @param crewlyHome - Path to the crewly home directory (e.g. ~/.crewly)
67
+ */
68
+ constructor(messageQueueService: MessageQueueService, chatService: ChatService, crewlyHome: string);
69
+ /**
70
+ * Scan chat history for unreplied user messages and replay them into the queue.
71
+ *
72
+ * This method should be called once during startup, after the queue has been
73
+ * restored from persisted state but before the orchestrator starts processing.
74
+ *
75
+ * @returns Result containing counts of found, replayed, and skipped messages
76
+ */
77
+ replayPendingMessages(): Promise<ReplayResult>;
78
+ /**
79
+ * Read the `savedAt` timestamp from the persisted queue state file.
80
+ * This is the proxy for "when the backend was last alive."
81
+ *
82
+ * @returns ISO timestamp string or null if no persisted state exists
83
+ */
84
+ getLastPersistedTimestamp(): Promise<string | null>;
85
+ /**
86
+ * Find user messages in a sorted message list that have no orchestrator/system
87
+ * reply after them. A message is considered "replied" if any message from the
88
+ * orchestrator or system appears after it in the conversation.
89
+ *
90
+ * @param messages - Sorted messages (oldest first) from a single conversation
91
+ * @returns Array of user messages with no subsequent reply
92
+ */
93
+ findUnrepliedUserMessages(messages: ChatMessage[]): ChatMessage[];
94
+ /**
95
+ * Infer the message source from the chat message metadata or content.
96
+ * Falls back to 'web_chat' if the source cannot be determined.
97
+ *
98
+ * @param message - The chat message to analyze
99
+ * @returns The message source string for queue enqueuing
100
+ */
101
+ private inferMessageSource;
102
+ }
103
+ //# sourceMappingURL=message-replay.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-replay.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/message-replay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;OAMG;gBAED,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM;IAQpB;;;;;;;OAOG;IACG,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC;IAkJpD;;;;;OAKG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWzD;;;;;;;OAOG;IACH,yBAAyB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAqBjE;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAiB3B"}