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.
- package/dist/backend/backend/src/constants.d.ts +36 -13
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +37 -13
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +187 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +269 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts +17 -0
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +65 -0
- package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +31 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +23 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +12 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +45 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +3 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +131 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +241 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +13 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -2
- 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 +149 -43
- 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 +1 -1
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +103 -0
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/message-replay.service.js +247 -0
- package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -0
- 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 +40 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +2 -2
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +36 -13
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +37 -13
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts +9 -0
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +76 -15
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- 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
|
|
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
|
-
|
|
275
|
-
|
|
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
|
|
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
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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 (
|
|
327
|
-
const refreshed = await this.handleAuthError(
|
|
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: ${
|
|
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,
|
|
383
|
-
// Legacy
|
|
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
|
-
|
|
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:
|
|
499
|
-
type:
|
|
500
|
-
payload:
|
|
501
|
-
encrypted:
|
|
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 `
|
|
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
|
-
|
|
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":"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"}
|
|
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/
|
|
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"}
|