crewly 1.4.50 → 1.4.51

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 (32) hide show
  1. package/dist/backend/backend/src/constants.d.ts +8 -6
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +8 -6
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -1
  6. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +13 -2
  7. package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +1 -1
  9. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  10. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +8 -4
  11. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  12. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +43 -2
  13. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  14. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +176 -3
  15. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  16. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
  17. package/dist/backend/backend/src/services/cloud/cloud-initializer.js +41 -6
  18. package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
  19. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +17 -0
  20. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  21. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +64 -16
  22. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  23. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +9 -1
  24. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  26. package/dist/cli/backend/src/constants.d.ts +8 -6
  27. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  28. package/dist/cli/backend/src/constants.js +8 -6
  29. package/dist/cli/backend/src/constants.js.map +1 -1
  30. package/frontend/dist/assets/{index-28fcc469.js → index-ae0a93cb.js} +2 -2
  31. package/frontend/dist/index.html +1 -1
  32. package/package.json +1 -1
@@ -14,7 +14,7 @@ import * as os from 'os';
14
14
  import * as path from 'path';
15
15
  import { readFile, writeFile, mkdir, unlink } from 'fs/promises';
16
16
  import { LoggerService } from '../core/logger.service.js';
17
- import { CLOUD_CONSTANTS, } from '../../constants.js';
17
+ import { CLOUD_CONSTANTS, AUTH_CONSTANTS, } from '../../constants.js';
18
18
  // ---------------------------------------------------------------------------
19
19
  // Service
20
20
  // ---------------------------------------------------------------------------
@@ -32,12 +32,18 @@ export class CloudClientService {
32
32
  cloudUrl = null;
33
33
  /** Bearer token obtained during connect() */
34
34
  token = null;
35
+ /** Refresh token for auto-renewing expired access tokens */
36
+ refreshToken = null;
35
37
  /** Current connection status */
36
38
  connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.DISCONNECTED;
37
39
  /** Subscription tier reported by cloud */
38
40
  tier = CLOUD_CONSTANTS.TIERS.FREE;
39
41
  /** Timestamp of the most recent successful cloud API call */
40
42
  lastSyncAt = null;
43
+ /** Timer for proactive token refresh (fires 5 min before expiry) */
44
+ refreshTimer = null;
45
+ /** Guard to prevent concurrent refresh attempts */
46
+ refreshInProgress = false;
41
47
  constructor() {
42
48
  this.logger = LoggerService.getInstance().createComponentLogger('CloudClientService');
43
49
  }
@@ -79,7 +85,7 @@ export class CloudClientService {
79
85
  * await client.connect('https://api.crewlyai.com', 'sk-abc123');
80
86
  * ```
81
87
  */
82
- async connect(cloudUrl, token) {
88
+ async connect(cloudUrl, token, refreshToken) {
83
89
  this.logger.info('Connecting to CrewlyAI Cloud', { cloudUrl });
84
90
  const url = `${cloudUrl}${CLOUD_CONSTANTS.ENDPOINTS.AUTH_TOKEN}`;
85
91
  const response = await fetch(url, {
@@ -102,10 +108,13 @@ export class CloudClientService {
102
108
  const resolvedTier = data.data?.plan || data.tier;
103
109
  this.cloudUrl = cloudUrl;
104
110
  this.token = token;
111
+ this.refreshToken = refreshToken || this.refreshToken;
105
112
  this.tier = resolvedTier || CLOUD_CONSTANTS.TIERS.FREE;
106
113
  this.connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.CONNECTED;
107
114
  this.lastSyncAt = new Date().toISOString();
108
115
  this.logger.info('Connected to CrewlyAI Cloud', { tier: this.tier });
116
+ // Schedule proactive token refresh
117
+ this.scheduleTokenRefresh(token);
109
118
  // Persist credentials for auto-reconnect on restart
110
119
  this.persistConfig().catch((err) => {
111
120
  this.logger.warn('Failed to persist cloud config (non-fatal)', {
@@ -124,14 +133,18 @@ export class CloudClientService {
124
133
  * @param cloudUrl - Base URL of the CrewlyAI Cloud API
125
134
  * @param token - JWT access token (already verified locally)
126
135
  * @param tier - Subscription tier extracted from the JWT payload
136
+ * @param refreshToken - Optional refresh token for auto-renewal
127
137
  */
128
- connectLocal(cloudUrl, token, tier) {
138
+ connectLocal(cloudUrl, token, tier, refreshToken) {
129
139
  this.cloudUrl = cloudUrl;
130
140
  this.token = token;
141
+ this.refreshToken = refreshToken || this.refreshToken;
131
142
  this.tier = tier || CLOUD_CONSTANTS.TIERS.FREE;
132
143
  this.connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.CONNECTED;
133
144
  this.lastSyncAt = new Date().toISOString();
134
145
  this.logger.info('Connected to CrewlyAI Cloud (local verification)', { tier: this.tier });
146
+ // Schedule proactive token refresh
147
+ this.scheduleTokenRefresh(token);
135
148
  // Persist credentials for auto-reconnect on restart
136
149
  this.persistConfig().catch((err) => {
137
150
  this.logger.warn('Failed to persist cloud config (non-fatal)', {
@@ -148,9 +161,14 @@ export class CloudClientService {
148
161
  this.logger.info('Disconnecting from CrewlyAI Cloud');
149
162
  this.cloudUrl = null;
150
163
  this.token = null;
164
+ this.refreshToken = null;
151
165
  this.connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.DISCONNECTED;
152
166
  this.tier = CLOUD_CONSTANTS.TIERS.FREE;
153
167
  this.lastSyncAt = null;
168
+ if (this.refreshTimer) {
169
+ clearTimeout(this.refreshTimer);
170
+ this.refreshTimer = null;
171
+ }
154
172
  // Remove persisted config
155
173
  this.removePersistedConfig().catch((err) => {
156
174
  this.logger.warn('Failed to remove persisted cloud config (non-fatal)', {
@@ -195,6 +213,7 @@ export class CloudClientService {
195
213
  token: this.token,
196
214
  tier: this.tier,
197
215
  connectedAt: new Date().toISOString(),
216
+ ...(this.refreshToken && { refreshToken: this.refreshToken }),
198
217
  };
199
218
  const configPath = CloudClientService.getConfigPath();
200
219
  await mkdir(path.dirname(configPath), { recursive: true });
@@ -385,6 +404,152 @@ export class CloudClientService {
385
404
  return data.devices ?? [];
386
405
  }
387
406
  // -------------------------------------------------------------------------
407
+ // Token Auto-Refresh
408
+ // -------------------------------------------------------------------------
409
+ /**
410
+ * Set the refresh token for auto-renewal.
411
+ *
412
+ * Called by the connect controller after OAuth login provides a refresh token.
413
+ *
414
+ * @param refreshToken - Refresh token string
415
+ */
416
+ setRefreshToken(refreshToken) {
417
+ this.refreshToken = refreshToken;
418
+ // Re-persist config with the new refresh token
419
+ this.persistConfig().catch(() => { });
420
+ this.logger.debug('Refresh token stored');
421
+ }
422
+ /**
423
+ * Get the current access token (for CloudSyncService token updates).
424
+ *
425
+ * @returns Current access token or null
426
+ */
427
+ getToken() {
428
+ return this.token;
429
+ }
430
+ /**
431
+ * Attempt to refresh the access token using the stored refresh token.
432
+ *
433
+ * Issues a new access token locally (since both access and refresh tokens
434
+ * are signed with the same HMAC secret on this OSS instance).
435
+ *
436
+ * @returns true if refresh succeeded, false if no refresh token or refresh failed
437
+ */
438
+ async tryRefreshToken() {
439
+ if (this.refreshInProgress) {
440
+ this.logger.debug('Token refresh already in progress, skipping');
441
+ return false;
442
+ }
443
+ if (!this.refreshToken) {
444
+ this.logger.debug('No refresh token available for auto-refresh');
445
+ return false;
446
+ }
447
+ this.refreshInProgress = true;
448
+ try {
449
+ // Dynamically import to avoid circular dependency
450
+ const { verifyJwt, signJwt } = await import('../../controllers/cloud/cloud-google-auth.controller.js');
451
+ const payload = verifyJwt(this.refreshToken);
452
+ if (!payload || payload.type !== 'refresh') {
453
+ this.logger.warn('Refresh token invalid or expired — cannot auto-refresh');
454
+ this.refreshToken = null;
455
+ return false;
456
+ }
457
+ // Issue a new access token from the refresh token claims
458
+ const now = Math.floor(Date.now() / 1000);
459
+ const newAccessToken = signJwt({
460
+ sub: payload.sub,
461
+ email: payload.email || '',
462
+ name: payload.name || '',
463
+ plan: payload.plan || 'free',
464
+ iat: now,
465
+ exp: now + AUTH_CONSTANTS.JWT.ACCESS_TOKEN_EXPIRY_S,
466
+ iss: AUTH_CONSTANTS.JWT.ISSUER,
467
+ type: 'access',
468
+ });
469
+ // Update service state
470
+ this.token = newAccessToken;
471
+ this.connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.CONNECTED;
472
+ this.lastSyncAt = new Date().toISOString();
473
+ // Schedule next refresh
474
+ this.scheduleTokenRefresh(newAccessToken);
475
+ // Persist new token
476
+ await this.persistConfig();
477
+ // Update CloudSyncService with the new token (if running)
478
+ try {
479
+ const { CloudSyncService } = await import('./cloud-sync.service.js');
480
+ const syncService = CloudSyncService.getInstance();
481
+ if (syncService.isStarted()) {
482
+ syncService.updateToken(newAccessToken);
483
+ }
484
+ }
485
+ catch {
486
+ // CloudSyncService may not be available — non-fatal
487
+ }
488
+ this.logger.info('Access token auto-refreshed successfully', {
489
+ sub: payload.sub,
490
+ expiresIn: AUTH_CONSTANTS.JWT.ACCESS_TOKEN_EXPIRY_S,
491
+ });
492
+ return true;
493
+ }
494
+ catch (error) {
495
+ this.logger.warn('Token auto-refresh failed', {
496
+ error: error instanceof Error ? error.message : String(error),
497
+ });
498
+ return false;
499
+ }
500
+ finally {
501
+ this.refreshInProgress = false;
502
+ }
503
+ }
504
+ /**
505
+ * Schedule a proactive token refresh 5 minutes before expiry.
506
+ *
507
+ * Parses the JWT `exp` claim and sets a timer. If the token has
508
+ * less than 5 minutes remaining, refreshes immediately.
509
+ *
510
+ * @param token - JWT access token to extract expiry from
511
+ */
512
+ scheduleTokenRefresh(token) {
513
+ if (this.refreshTimer) {
514
+ clearTimeout(this.refreshTimer);
515
+ this.refreshTimer = null;
516
+ }
517
+ if (!this.refreshToken)
518
+ return;
519
+ try {
520
+ // Decode JWT payload to get exp (without verifying — just need the timestamp)
521
+ const parts = token.split('.');
522
+ if (parts.length !== 3)
523
+ return;
524
+ const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
525
+ const exp = payload.exp;
526
+ if (!exp)
527
+ return;
528
+ const now = Math.floor(Date.now() / 1000);
529
+ // Refresh 5 minutes (300s) before expiry
530
+ const refreshAt = exp - 300;
531
+ const delayMs = Math.max(0, (refreshAt - now) * 1000);
532
+ if (delayMs <= 0) {
533
+ // Token already near expiry — refresh immediately
534
+ this.logger.info('Access token near expiry, refreshing immediately');
535
+ this.tryRefreshToken().catch(() => { });
536
+ return;
537
+ }
538
+ this.refreshTimer = setTimeout(() => {
539
+ this.logger.info('Proactive token refresh triggered');
540
+ this.tryRefreshToken().catch(() => { });
541
+ }, delayMs);
542
+ // Unref so the timer doesn't keep the process alive
543
+ if (this.refreshTimer.unref)
544
+ this.refreshTimer.unref();
545
+ const minutesUntilRefresh = Math.round(delayMs / 60_000);
546
+ this.logger.debug('Token refresh scheduled', { minutesUntilRefresh });
547
+ }
548
+ catch {
549
+ this.logger.debug('Could not schedule token refresh (non-fatal)');
550
+ }
551
+ }
552
+ // -------------------------------------------------------------------------
388
553
  // Private helpers
389
554
  // -------------------------------------------------------------------------
390
555
  /**
@@ -428,6 +593,14 @@ export class CloudClientService {
428
593
  handleAuthFailure(context, status) {
429
594
  this.logger.warn(`Cloud token expired or revoked during ${context}`, { status });
430
595
  this.connectionStatus = CLOUD_CONSTANTS.CONNECTION_STATUS.TOKEN_EXPIRED;
596
+ // Attempt auto-refresh in background if refresh token is available
597
+ if (this.refreshToken) {
598
+ this.tryRefreshToken().then((refreshed) => {
599
+ if (refreshed) {
600
+ this.logger.info(`Token auto-refreshed after ${context} auth failure`);
601
+ }
602
+ }).catch(() => { });
603
+ }
431
604
  }
432
605
  }
433
606
  //# sourceMappingURL=cloud-client.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-client.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-client.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-client.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-client.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-initializer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,eAAe,CAAC,CAoE5E"}
1
+ {"version":3,"file":"cloud-initializer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,eAAe,CAAC,CA+G5E"}
@@ -41,14 +41,46 @@ export async function initializeCloudIfConfigured() {
41
41
  logger.info('Restoring cloud connection from persisted config', {
42
42
  cloudUrl: config.cloudUrl,
43
43
  tier: config.tier,
44
+ hasRefreshToken: !!config.refreshToken,
44
45
  });
45
- // Use connectLocal no remote API call needed for restoration.
46
- // The token was already validated when it was first stored.
47
- client.connectLocal(config.cloudUrl, config.token, config.tier || CLOUD_CONSTANTS.TIERS.FREE);
46
+ // Check if the stored access token is expired and needs refresh
47
+ let activeToken = config.token;
48
+ let tokenWasRefreshed = false;
49
+ try {
50
+ const { verifyJwt } = await import('../../controllers/cloud/cloud-google-auth.controller.js');
51
+ const payload = verifyJwt(config.token);
52
+ if (!payload) {
53
+ // Access token expired — try to refresh
54
+ if (config.refreshToken) {
55
+ logger.info('Stored access token expired, attempting auto-refresh');
56
+ // Temporarily connect with expired token + refresh token so tryRefreshToken works
57
+ client.connectLocal(config.cloudUrl, config.token, config.tier || CLOUD_CONSTANTS.TIERS.FREE, config.refreshToken);
58
+ const refreshed = await client.tryRefreshToken();
59
+ if (refreshed) {
60
+ activeToken = client.getToken() || config.token;
61
+ tokenWasRefreshed = true;
62
+ logger.info('Access token auto-refreshed on startup');
63
+ }
64
+ else {
65
+ logger.warn('Token auto-refresh failed on startup — connection may be in token_expired state');
66
+ }
67
+ }
68
+ else {
69
+ logger.warn('Stored access token expired and no refresh token available — user must re-login');
70
+ }
71
+ }
72
+ }
73
+ catch {
74
+ logger.debug('Token verification not available during startup (non-fatal)');
75
+ }
76
+ // Connect (or reconnect) with the active token
77
+ if (!tokenWasRefreshed) {
78
+ client.connectLocal(config.cloudUrl, activeToken, config.tier || CLOUD_CONSTANTS.TIERS.FREE, config.refreshToken);
79
+ }
48
80
  // Trigger relay auto-connect (same as in cloud.controller.ts connectToCloud)
49
81
  try {
50
82
  const { autoConnectRelayFromToken } = await import('../../controllers/cloud/cloud.controller.js');
51
- autoConnectRelayFromToken(config.token);
83
+ autoConnectRelayFromToken(activeToken);
52
84
  }
53
85
  catch {
54
86
  logger.debug('Relay auto-connect not available during startup (non-fatal)');
@@ -58,7 +90,7 @@ export async function initializeCloudIfConfigured() {
58
90
  const identity = await DeviceIdentityService.getInstance().getOrCreateIdentity();
59
91
  CloudSyncService.getInstance().start({
60
92
  cloudUrl: config.cloudUrl,
61
- token: config.token,
93
+ token: activeToken,
62
94
  deviceId: identity.deviceId,
63
95
  deviceName: identity.deviceName,
64
96
  });
@@ -71,7 +103,10 @@ export async function initializeCloudIfConfigured() {
71
103
  error: syncError instanceof Error ? syncError.message : String(syncError),
72
104
  });
73
105
  }
74
- logger.info('Cloud connection restored successfully', { tier: config.tier });
106
+ logger.info('Cloud connection restored successfully', {
107
+ tier: config.tier,
108
+ tokenRefreshed: tokenWasRefreshed,
109
+ });
75
110
  return { attempted: true, success: true };
76
111
  }
77
112
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-initializer.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-initializer.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-initializer.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,15 @@ export declare class CloudSyncService extends EventEmitter {
104
104
  * @returns Array of SyncDevice objects (may include offline devices)
105
105
  */
106
106
  getDevices(): SyncDevice[];
107
+ /**
108
+ * Update the authentication token used for Cloud API requests.
109
+ *
110
+ * Called by CloudClientService after a successful token refresh
111
+ * so that heartbeat, device poll, and message poll use the new token.
112
+ *
113
+ * @param newToken - New JWT access token
114
+ */
115
+ updateToken(newToken: string): void;
107
116
  /**
108
117
  * Get only online devices (excluding this device).
109
118
  *
@@ -135,15 +144,23 @@ export declare class CloudSyncService extends EventEmitter {
135
144
  /**
136
145
  * Poll the Cloud server for the current device list.
137
146
  * Updates the cached device list and emits events on changes.
147
+ *
148
+ * The Cloud server returns devices in relay format:
149
+ * `{ sessionId, role, state, pairedWith, registeredAt, lastHeartbeatAt, name }`
150
+ * which we normalize to the SyncDevice shape used by the frontend.
138
151
  */
139
152
  pollDevices(): Promise<void>;
140
153
  /**
141
154
  * Poll the Cloud server for pending messages addressed to this device.
142
155
  * Emits 'message' event for each received message, then acknowledges.
156
+ *
157
+ * The Cloud poll endpoint uses `queueId` query param (since JWT has no deviceId claim).
158
+ * Cloud returns messages as: `{ id, fromDeviceId, payload, createdAt }`.
143
159
  */
144
160
  pollMessages(): Promise<void>;
145
161
  /**
146
162
  * Acknowledge processed messages so Cloud can remove them from the queue.
163
+ * Uses `queueId` in body since the JWT has no deviceId claim.
147
164
  *
148
165
  * @param messageIds - Array of message IDs to acknowledge
149
166
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EAIV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AA8C/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAA6B;IAC1C,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAa;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAA+C;IACrE,+BAA+B;IAC/B,OAAO,CAAC,eAAe,CAA+C;IACtE,gCAAgC;IAChC,OAAO,CAAC,gBAAgB,CAA+C;IAEvE,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAAK;IAEhC,OAAO;IAKP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAW5B;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA6CpC;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAiBZ;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,QAAQ,IAAI,cAAc;IAI1B;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;OAIG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzF;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CpC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAyElC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CnC;;;;OAIG;YACW,WAAW;IA2BzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAMpB"}
1
+ {"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EAIV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AA8C/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAA6B;IAC1C,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAa;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAA+C;IACrE,+BAA+B;IAC/B,OAAO,CAAC,eAAe,CAA+C;IACtE,gCAAgC;IAChC,OAAO,CAAC,gBAAgB,CAA+C;IAEvE,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAAK;IAEhC,OAAO;IAKP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAW5B;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA6CpC;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAiBZ;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,QAAQ,IAAI,cAAc;IAI1B;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzF;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CpC;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA4FlC;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDnC;;;;;OAKG;YACW,WAAW;IA2BzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAMpB"}
@@ -223,6 +223,20 @@ export class CloudSyncService extends EventEmitter {
223
223
  getDevices() {
224
224
  return [...this.devices];
225
225
  }
226
+ /**
227
+ * Update the authentication token used for Cloud API requests.
228
+ *
229
+ * Called by CloudClientService after a successful token refresh
230
+ * so that heartbeat, device poll, and message poll use the new token.
231
+ *
232
+ * @param newToken - New JWT access token
233
+ */
234
+ updateToken(newToken) {
235
+ if (this.config) {
236
+ this.config = { ...this.config, token: newToken };
237
+ this.logger.info('CloudSyncService token updated');
238
+ }
239
+ }
226
240
  /**
227
241
  * Get only online devices (excluding this device).
228
242
  *
@@ -252,14 +266,13 @@ export class CloudSyncService extends EventEmitter {
252
266
  throw new Error('CloudSyncService not started. Call start() first.');
253
267
  }
254
268
  const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES}`;
269
+ // Cloud send endpoint expects { toDeviceId, payload (string) }
255
270
  const response = await fetch(url, {
256
271
  method: 'POST',
257
272
  headers: this.authHeaders(),
258
273
  body: JSON.stringify({
259
- to: toDeviceId,
260
- type,
261
- payload,
262
- encrypted: false,
274
+ toDeviceId,
275
+ payload: JSON.stringify({ type, data: payload, encrypted: false }),
263
276
  }),
264
277
  signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),
265
278
  });
@@ -317,6 +330,10 @@ export class CloudSyncService extends EventEmitter {
317
330
  /**
318
331
  * Poll the Cloud server for the current device list.
319
332
  * Updates the cached device list and emits events on changes.
333
+ *
334
+ * The Cloud server returns devices in relay format:
335
+ * `{ sessionId, role, state, pairedWith, registeredAt, lastHeartbeatAt, name }`
336
+ * which we normalize to the SyncDevice shape used by the frontend.
320
337
  */
321
338
  async pollDevices() {
322
339
  if (!this.config)
@@ -336,16 +353,34 @@ export class CloudSyncService extends EventEmitter {
336
353
  throw new Error('Device poll returned unsuccessful response');
337
354
  }
338
355
  const previousOnlineIds = new Set(this.devices.filter((d) => d.status === 'online').map((d) => d.deviceId));
339
- // Normalize devices: mark local, determine online status
356
+ // Normalize Cloud relay devices to SyncDevice format.
357
+ // Cloud returns: { sessionId, role, state, pairedWith, registeredAt, lastHeartbeatAt, name }
358
+ // We need: { deviceId, deviceName, status, lastHeartbeatAt, isLocal, ... }
340
359
  const offlineThreshold = CLOUD_SYNC_CONSTANTS.OFFLINE_THRESHOLD_MS;
341
360
  const now = Date.now();
342
- const updatedDevices = data.devices.map((d) => ({
343
- ...d,
344
- status: (now - new Date(d.lastHeartbeatAt).getTime() > offlineThreshold)
345
- ? 'offline'
346
- : 'online',
347
- isLocal: d.deviceId === this.config.deviceId,
348
- }));
361
+ const updatedDevices = data.devices.map((d) => {
362
+ const deviceId = d.deviceId || d.sessionId || '';
363
+ const lastSeen = d.lastHeartbeatAt || d.registeredAt || new Date().toISOString();
364
+ // Determine online/offline from heartbeat recency or from relay state
365
+ const isOnline = d.status === 'online' ||
366
+ d.state === 'paired' ||
367
+ d.state === 'waiting' ||
368
+ (now - new Date(lastSeen).getTime() <= offlineThreshold);
369
+ return {
370
+ deviceId,
371
+ deviceName: d.deviceName || d.name || `Device ${deviceId.slice(0, 8)}`,
372
+ status: isOnline ? 'online' : 'offline',
373
+ lastHeartbeatAt: lastSeen,
374
+ isLocal: deviceId === this.config.deviceId,
375
+ version: d.version,
376
+ capabilities: d.capabilities,
377
+ // Preserve relay-specific fields for the frontend
378
+ ...(d.role && { role: d.role }),
379
+ ...(d.state && { state: d.state }),
380
+ ...(d.registeredAt && { registeredAt: d.registeredAt }),
381
+ ...(d.sessionId && { sessionId: d.sessionId }),
382
+ };
383
+ });
349
384
  // Detect online/offline transitions
350
385
  const newOnlineIds = new Set(updatedDevices.filter((d) => d.status === 'online').map((d) => d.deviceId));
351
386
  for (const device of updatedDevices) {
@@ -380,12 +415,15 @@ export class CloudSyncService extends EventEmitter {
380
415
  /**
381
416
  * Poll the Cloud server for pending messages addressed to this device.
382
417
  * Emits 'message' event for each received message, then acknowledges.
418
+ *
419
+ * The Cloud poll endpoint uses `queueId` query param (since JWT has no deviceId claim).
420
+ * Cloud returns messages as: `{ id, fromDeviceId, payload, createdAt }`.
383
421
  */
384
422
  async pollMessages() {
385
423
  if (!this.config)
386
424
  return;
387
425
  try {
388
- const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES}?deviceId=${encodeURIComponent(this.config.deviceId)}&limit=50`;
426
+ const url = `${this.config.cloudUrl}${CLOUD_SYNC_CONSTANTS.ENDPOINTS.MESSAGES_POLL}?queueId=${encodeURIComponent(this.config.deviceId)}`;
389
427
  const response = await fetch(url, {
390
428
  method: 'GET',
391
429
  headers: this.authHeaders(),
@@ -399,9 +437,18 @@ export class CloudSyncService extends EventEmitter {
399
437
  this.messagePollFailures = 0;
400
438
  return;
401
439
  }
402
- // Emit each message
440
+ // Normalize Cloud message format to IncomingMessage shape
403
441
  const messageIds = [];
404
- for (const msg of data.messages) {
442
+ for (const raw of data.messages) {
443
+ const msg = {
444
+ id: raw.id,
445
+ from: raw.fromDeviceId || raw.from || '',
446
+ fromDeviceName: raw.fromDeviceName || '',
447
+ type: raw.type || 'relay',
448
+ payload: raw.payload,
449
+ encrypted: raw.encrypted ?? false,
450
+ sentAt: raw.createdAt || raw.sentAt || new Date().toISOString(),
451
+ };
405
452
  this.emit('message', msg);
406
453
  messageIds.push(msg.id);
407
454
  }
@@ -421,6 +468,7 @@ export class CloudSyncService extends EventEmitter {
421
468
  }
422
469
  /**
423
470
  * Acknowledge processed messages so Cloud can remove them from the queue.
471
+ * Uses `queueId` in body since the JWT has no deviceId claim.
424
472
  *
425
473
  * @param messageIds - Array of message IDs to acknowledge
426
474
  */
@@ -433,7 +481,7 @@ export class CloudSyncService extends EventEmitter {
433
481
  method: 'POST',
434
482
  headers: this.authHeaders(),
435
483
  body: JSON.stringify({
436
- deviceId: this.config.deviceId,
484
+ queueId: this.config.deviceId,
437
485
  messageIds,
438
486
  }),
439
487
  signal: AbortSignal.timeout(CLOUD_SYNC_CONSTANTS.REQUEST_TIMEOUT_MS),