crewly 1.2.7 → 1.2.9

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 (97) hide show
  1. package/config/skills/agent/core/reply-chat/execute.sh +59 -0
  2. package/config/skills/agent/core/reply-chat/instructions.md +27 -0
  3. package/config/skills/agent/core/reply-chat/skill.json +20 -0
  4. package/config/skills/orchestrator/reply-chat/execute.sh +136 -0
  5. package/config/skills/orchestrator/reply-chat/instructions.md +53 -0
  6. package/config/skills/orchestrator/reply-chat/skill.json +20 -0
  7. package/dist/backend/backend/src/constants.d.ts +9 -0
  8. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  9. package/dist/backend/backend/src/constants.js +9 -0
  10. package/dist/backend/backend/src/constants.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  12. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +6 -3
  13. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  14. package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/settings/settings.controller.js +97 -2
  16. package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
  17. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/team/team.controller.js +149 -1
  19. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  20. package/dist/backend/backend/src/index.d.ts +5 -0
  21. package/dist/backend/backend/src/index.d.ts.map +1 -1
  22. package/dist/backend/backend/src/index.js +30 -0
  23. package/dist/backend/backend/src/index.js.map +1 -1
  24. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/agent/agent-registration.service.js +126 -86
  26. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  28. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +14 -3
  29. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  30. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +16 -2
  31. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +52 -5
  33. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +22 -9
  36. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +4 -3
  39. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +58 -2
  41. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +158 -7
  43. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -1
  44. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts +43 -0
  45. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -0
  46. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +138 -0
  47. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -0
  48. package/dist/backend/backend/src/services/messaging/response-router.service.d.ts +12 -0
  49. package/dist/backend/backend/src/services/messaging/response-router.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/messaging/response-router.service.js +27 -42
  51. package/dist/backend/backend/src/services/messaging/response-router.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +12 -3
  54. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/settings/settings.service.d.ts +9 -1
  56. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/settings/settings.service.js +12 -1
  58. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  59. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  60. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +13 -0
  61. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  62. package/dist/backend/backend/src/types/chat.types.d.ts +1 -1
  63. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  64. package/dist/backend/backend/src/types/chat.types.js +1 -1
  65. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  66. package/dist/backend/backend/src/types/settings.types.d.ts +93 -0
  67. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  68. package/dist/backend/backend/src/types/settings.types.js +131 -0
  69. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  70. package/dist/backend/backend/src/types/skill.types.js +2 -2
  71. package/dist/backend/backend/src/types/skill.types.js.map +1 -1
  72. package/dist/backend/backend/src/utils/format-error.d.ts +8 -0
  73. package/dist/backend/backend/src/utils/format-error.d.ts.map +1 -0
  74. package/dist/backend/backend/src/utils/format-error.js +10 -0
  75. package/dist/backend/backend/src/utils/format-error.js.map +1 -0
  76. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  77. package/dist/backend/backend/src/websocket/terminal.gateway.js +15 -10
  78. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  79. package/dist/cli/backend/src/constants.d.ts +9 -0
  80. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  81. package/dist/cli/backend/src/constants.js +9 -0
  82. package/dist/cli/backend/src/constants.js.map +1 -1
  83. package/dist/cli/backend/src/types/chat.types.d.ts +1 -1
  84. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  85. package/dist/cli/backend/src/types/chat.types.js +1 -1
  86. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  87. package/dist/cli/backend/src/types/settings.types.d.ts +93 -0
  88. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  89. package/dist/cli/backend/src/types/settings.types.js +131 -0
  90. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  91. package/dist/cli/backend/src/types/skill.types.js +2 -2
  92. package/dist/cli/backend/src/types/skill.types.js.map +1 -1
  93. package/frontend/dist/assets/index-58509b6a.js +4919 -0
  94. package/frontend/dist/assets/{index-dee3a3a9.css → index-ddb38eb0.css} +1 -1
  95. package/frontend/dist/index.html +2 -2
  96. package/package.json +1 -1
  97. package/frontend/dist/assets/index-5cf8820f.js +0 -4919
@@ -28,12 +28,18 @@ export class GoogleChatMessengerAdapter {
28
28
  webhookUrl = null;
29
29
  /** Service account key JSON string */
30
30
  serviceAccountKey = null;
31
- /** Access token obtained from service account (cached) */
31
+ /** Authentication mode: service_account (JWT) or adc (refresh token) */
32
+ authMode = 'service_account';
33
+ /** ADC credentials (parsed from application_default_credentials.json) */
34
+ adcCredentials = null;
35
+ /** Access token obtained from service account or ADC (cached) */
32
36
  accessToken = null;
33
37
  /** Access token expiry timestamp */
34
38
  tokenExpiresAt = 0;
35
39
  /** OAuth2 scopes for the current mode */
36
40
  tokenScopes = GOOGLE_CHAT_PUBSUB_CONSTANTS.CHAT_SCOPE;
41
+ /** Pending token refresh promise to deduplicate concurrent requests (RL2) */
42
+ pendingTokenRefresh = null;
37
43
  /** Full Pub/Sub subscription resource name (e.g. projects/PROJECT/subscriptions/SUB) */
38
44
  subscriptionName = null;
39
45
  /** GCP project ID (for Pub/Sub mode) */
@@ -63,6 +69,7 @@ export class GoogleChatMessengerAdapter {
63
69
  const projectId = config.projectId;
64
70
  const subscriptionName = config.subscriptionName;
65
71
  const onIncomingMessage = config.onIncomingMessage;
72
+ const authMode = (config.authMode === 'adc' ? 'adc' : 'service_account');
66
73
  // Webhook mode
67
74
  if (typeof webhookUrl === 'string' && webhookUrl) {
68
75
  if (!webhookUrl.startsWith('https://chat.googleapis.com/')) {
@@ -73,10 +80,35 @@ export class GoogleChatMessengerAdapter {
73
80
  this.mode = 'webhook';
74
81
  return;
75
82
  }
76
- // Pub/Sub mode or Service Account mode both require a service account key
83
+ // ADC mode use Application Default Credentials (no SA key needed)
84
+ if (authMode === 'adc') {
85
+ const adcCreds = await this.loadAdcCredentials();
86
+ this.resetState();
87
+ this.authMode = 'adc';
88
+ this.adcCredentials = adcCreds;
89
+ // Pub/Sub mode: requires projectId + subscriptionName
90
+ if (typeof projectId === 'string' && projectId &&
91
+ typeof subscriptionName === 'string' && subscriptionName) {
92
+ this.projectId = projectId;
93
+ this.subscriptionName = `projects/${projectId}/subscriptions/${subscriptionName}`;
94
+ this.tokenScopes = `${GOOGLE_CHAT_PUBSUB_CONSTANTS.CHAT_SCOPE} ${GOOGLE_CHAT_PUBSUB_CONSTANTS.PUBSUB_SCOPE}`;
95
+ this.mode = 'pubsub';
96
+ if (typeof onIncomingMessage === 'function') {
97
+ this.onIncomingMessage = onIncomingMessage;
98
+ }
99
+ this.startPubSubPull();
100
+ return;
101
+ }
102
+ // Service account mode with ADC auth (send-only)
103
+ this.mode = 'service-account';
104
+ this.tokenScopes = GOOGLE_CHAT_PUBSUB_CONSTANTS.CHAT_SCOPE;
105
+ return;
106
+ }
107
+ // Service Account mode — requires a service account key
77
108
  if (typeof serviceAccountKey === 'string' && serviceAccountKey) {
78
109
  this.validateServiceAccountKey(serviceAccountKey);
79
110
  this.resetState();
111
+ this.authMode = 'service_account';
80
112
  this.serviceAccountKey = serviceAccountKey;
81
113
  // Pub/Sub mode: requires projectId + subscriptionName
82
114
  if (typeof projectId === 'string' && projectId &&
@@ -96,7 +128,7 @@ export class GoogleChatMessengerAdapter {
96
128
  this.tokenScopes = GOOGLE_CHAT_PUBSUB_CONSTANTS.CHAT_SCOPE;
97
129
  return;
98
130
  }
99
- throw new Error('Google Chat requires either a webhookUrl or serviceAccountKey');
131
+ throw new Error('Google Chat requires either a webhookUrl, serviceAccountKey, or authMode: adc');
100
132
  }
101
133
  /**
102
134
  * Send a text message to a Google Chat space.
@@ -114,7 +146,8 @@ export class GoogleChatMessengerAdapter {
114
146
  await this.sendViaWebhook(text, options?.threadId);
115
147
  return;
116
148
  }
117
- if ((this.mode === 'service-account' || this.mode === 'pubsub') && this.serviceAccountKey) {
149
+ if ((this.mode === 'service-account' || this.mode === 'pubsub') &&
150
+ (this.serviceAccountKey || this.adcCredentials)) {
118
151
  await this.sendViaApi(channel, text, options?.threadId);
119
152
  return;
120
153
  }
@@ -131,6 +164,7 @@ export class GoogleChatMessengerAdapter {
131
164
  platform: this.platform,
132
165
  details: {
133
166
  mode: this.mode,
167
+ authMode: this.authMode,
134
168
  ...(this.mode === 'pubsub' ? {
135
169
  subscriptionName: this.subscriptionName,
136
170
  projectId: this.projectId,
@@ -332,8 +366,8 @@ export class GoogleChatMessengerAdapter {
332
366
  * @param threadName - Optional full thread name (e.g., "spaces/SPACE/threads/THREAD")
333
367
  */
334
368
  async sendViaApi(space, text, threadName) {
335
- if (!this.serviceAccountKey) {
336
- throw new Error('Service account key not configured');
369
+ if (!this.serviceAccountKey && !this.adcCredentials) {
370
+ throw new Error('No credentials configured (service account key or ADC)');
337
371
  }
338
372
  if (!space || !space.startsWith('spaces/')) {
339
373
  throw new Error('Invalid Google Chat space name. Must start with "spaces/"');
@@ -369,7 +403,7 @@ export class GoogleChatMessengerAdapter {
369
403
  /**
370
404
  * Get a valid access token, refreshing if needed.
371
405
  *
372
- * Uses a JWT-based OAuth2 flow for service accounts.
406
+ * Uses JWT-based OAuth2 for service accounts, or refresh_token flow for ADC.
373
407
  * The scope includes Pub/Sub when in pubsub mode.
374
408
  *
375
409
  * @returns Valid access token string
@@ -379,6 +413,39 @@ export class GoogleChatMessengerAdapter {
379
413
  if (this.accessToken && Date.now() < this.tokenExpiresAt - 60_000) {
380
414
  return this.accessToken;
381
415
  }
416
+ // Deduplicate concurrent refresh requests (RL2)
417
+ if (this.pendingTokenRefresh) {
418
+ return this.pendingTokenRefresh;
419
+ }
420
+ this.pendingTokenRefresh = this.refreshAccessToken();
421
+ try {
422
+ return await this.pendingTokenRefresh;
423
+ }
424
+ finally {
425
+ this.pendingTokenRefresh = null;
426
+ }
427
+ }
428
+ /**
429
+ * Perform the actual token refresh.
430
+ *
431
+ * Dispatches to the appropriate flow based on authMode:
432
+ * - `service_account`: JWT-based OAuth2 flow with SA private key
433
+ * - `adc`: Refresh token flow using ADC credentials
434
+ *
435
+ * @returns Fresh access token string
436
+ */
437
+ async refreshAccessToken() {
438
+ if (this.authMode === 'adc') {
439
+ return this.refreshAccessTokenViaAdc();
440
+ }
441
+ return this.refreshAccessTokenViaJwt();
442
+ }
443
+ /**
444
+ * Refresh access token via JWT-based OAuth2 flow (service account).
445
+ *
446
+ * @returns Fresh access token string
447
+ */
448
+ async refreshAccessTokenViaJwt() {
382
449
  if (!this.serviceAccountKey) {
383
450
  throw new Error('Service account key not configured');
384
451
  }
@@ -413,6 +480,41 @@ export class GoogleChatMessengerAdapter {
413
480
  this.tokenExpiresAt = Date.now() + data.expires_in * 1000;
414
481
  return this.accessToken;
415
482
  }
483
+ /**
484
+ * Refresh access token via ADC (Application Default Credentials).
485
+ *
486
+ * Uses the refresh_token from the ADC JSON file to obtain a new access token
487
+ * from Google's OAuth2 token endpoint. This supports credentials created by
488
+ * `gcloud auth application-default login`.
489
+ *
490
+ * @returns Fresh access token string
491
+ */
492
+ async refreshAccessTokenViaAdc() {
493
+ if (!this.adcCredentials) {
494
+ throw new Error('ADC credentials not loaded');
495
+ }
496
+ const { client_id, client_secret, refresh_token } = this.adcCredentials;
497
+ const body = new URLSearchParams({
498
+ grant_type: 'refresh_token',
499
+ client_id,
500
+ client_secret,
501
+ refresh_token,
502
+ });
503
+ const resp = await fetch('https://oauth2.googleapis.com/token', {
504
+ method: 'POST',
505
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
506
+ body: body.toString(),
507
+ signal: AbortSignal.timeout(GOOGLE_CHAT_PUBSUB_CONSTANTS.FETCH_TIMEOUT_MS),
508
+ });
509
+ if (!resp.ok) {
510
+ const details = await resp.text();
511
+ throw new Error(`ADC token refresh failed (${resp.status}): ${details}`);
512
+ }
513
+ const data = await resp.json();
514
+ this.accessToken = data.access_token;
515
+ this.tokenExpiresAt = Date.now() + data.expires_in * 1000;
516
+ return this.accessToken;
517
+ }
416
518
  // ===========================================================================
417
519
  // Helpers
418
520
  // ===========================================================================
@@ -436,6 +538,52 @@ export class GoogleChatMessengerAdapter {
436
538
  throw err;
437
539
  }
438
540
  }
541
+ /**
542
+ * Load ADC (Application Default Credentials) from the filesystem.
543
+ *
544
+ * Checks (in order):
545
+ * 1. `GOOGLE_APPLICATION_CREDENTIALS` environment variable (custom path)
546
+ * 2. Default gcloud ADC path: `~/.config/gcloud/application_default_credentials.json`
547
+ *
548
+ * @returns Parsed ADC credentials
549
+ * @throws Error if the ADC file is not found or invalid
550
+ */
551
+ async loadAdcCredentials() {
552
+ const { readFile } = await import('node:fs/promises');
553
+ const { join } = await import('node:path');
554
+ const { homedir } = await import('node:os');
555
+ const envPath = process.env.GOOGLE_APPLICATION_CREDENTIALS;
556
+ const defaultPath = join(homedir(), '.config', 'gcloud', 'application_default_credentials.json');
557
+ const credPath = envPath || defaultPath;
558
+ let raw;
559
+ try {
560
+ raw = await readFile(credPath, 'utf-8');
561
+ }
562
+ catch {
563
+ throw new Error(`ADC credentials file not found at ${credPath}. ` +
564
+ 'Run: gcloud auth application-default login --scopes=' +
565
+ 'https://www.googleapis.com/auth/chat.bot,' +
566
+ 'https://www.googleapis.com/auth/pubsub,' +
567
+ 'https://www.googleapis.com/auth/cloud-platform');
568
+ }
569
+ let parsed;
570
+ try {
571
+ parsed = JSON.parse(raw);
572
+ }
573
+ catch {
574
+ throw new Error('ADC credentials file is not valid JSON');
575
+ }
576
+ if (!parsed.client_id || !parsed.client_secret || !parsed.refresh_token) {
577
+ throw new Error('ADC credentials file must contain client_id, client_secret, and refresh_token. ' +
578
+ 'Ensure you ran gcloud auth application-default login with the correct scopes.');
579
+ }
580
+ return {
581
+ client_id: parsed.client_id,
582
+ client_secret: parsed.client_secret,
583
+ refresh_token: parsed.refresh_token,
584
+ type: parsed.type || 'authorized_user',
585
+ };
586
+ }
439
587
  /**
440
588
  * Reset all internal state to defaults.
441
589
  */
@@ -443,9 +591,12 @@ export class GoogleChatMessengerAdapter {
443
591
  this.stopPubSubPull();
444
592
  this.webhookUrl = null;
445
593
  this.serviceAccountKey = null;
594
+ this.authMode = 'service_account';
595
+ this.adcCredentials = null;
446
596
  this.accessToken = null;
447
597
  this.tokenExpiresAt = 0;
448
598
  this.tokenScopes = GOOGLE_CHAT_PUBSUB_CONSTANTS.CHAT_SCOPE;
599
+ this.pendingTokenRefresh = null;
449
600
  this.subscriptionName = null;
450
601
  this.projectId = null;
451
602
  this.onIncomingMessage = null;
@@ -1 +1 @@
1
- {"version":3,"file":"google-chat-messenger.adapter.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/messaging/adapters/google-chat-messenger.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-chat-messenger.adapter.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/messaging/adapters/google-chat-messenger.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Google Chat Initializer
3
+ *
4
+ * Handles automatic Google Chat adapter reconnection on backend restart.
5
+ * Loads saved credentials from `~/.crewly/google-chat-credentials.json`
6
+ * and reinitializes the adapter (including Pub/Sub pull loop).
7
+ *
8
+ * Follows the same pattern as `slack-initializer.ts` and
9
+ * `whatsapp-initializer.ts`.
10
+ *
11
+ * @module services/messaging/google-chat-initializer
12
+ */
13
+ import type { MessageQueueService } from './message-queue.service.js';
14
+ /**
15
+ * Result of initialization attempt
16
+ */
17
+ export interface GoogleChatInitResult {
18
+ /** Whether initialization was attempted */
19
+ attempted: boolean;
20
+ /** Whether initialization succeeded */
21
+ success: boolean;
22
+ /** Error message if failed */
23
+ error?: string;
24
+ }
25
+ /**
26
+ * Options for Google Chat initialization
27
+ */
28
+ export interface GoogleChatInitOptions {
29
+ /** Optional MessageQueueService for enqueuing incoming Pub/Sub messages */
30
+ messageQueueService?: MessageQueueService;
31
+ }
32
+ /**
33
+ * Initialize Google Chat integration from saved credentials.
34
+ *
35
+ * Designed to be called during backend startup. Checks for a saved
36
+ * credentials file and reinitializes the adapter if found. For Pub/Sub
37
+ * mode, also restarts the pull loop with the incoming message callback.
38
+ *
39
+ * @param options - Optional initialization options
40
+ * @returns Result object indicating success or failure
41
+ */
42
+ export declare function initializeGoogleChatIfConfigured(options?: GoogleChatInitOptions): Promise<GoogleChatInitResult>;
43
+ //# sourceMappingURL=google-chat-initializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-chat-initializer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/google-chat-initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAyED;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAkD/B"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Google Chat Initializer
3
+ *
4
+ * Handles automatic Google Chat adapter reconnection on backend restart.
5
+ * Loads saved credentials from `~/.crewly/google-chat-credentials.json`
6
+ * and reinitializes the adapter (including Pub/Sub pull loop).
7
+ *
8
+ * Follows the same pattern as `slack-initializer.ts` and
9
+ * `whatsapp-initializer.ts`.
10
+ *
11
+ * @module services/messaging/google-chat-initializer
12
+ */
13
+ import { promises as fs } from 'fs';
14
+ import path from 'path';
15
+ import os from 'os';
16
+ import { CREWLY_CONSTANTS, MESSAGE_SOURCES } from '../../constants.js';
17
+ import { MessengerRegistryService } from './messenger-registry.service.js';
18
+ import { GoogleChatMessengerAdapter } from './adapters/google-chat-messenger.adapter.js';
19
+ import { LoggerService } from '../core/logger.service.js';
20
+ import { formatError } from '../../utils/format-error.js';
21
+ const logger = LoggerService.getInstance().createComponentLogger('GoogleChatInitializer');
22
+ /**
23
+ * Get the path to the Google Chat credentials file.
24
+ *
25
+ * @returns Absolute path to the credentials JSON file
26
+ */
27
+ function getCredentialPath() {
28
+ return path.join(os.homedir(), CREWLY_CONSTANTS.PATHS.CREWLY_HOME, 'google-chat-credentials.json');
29
+ }
30
+ /**
31
+ * Load saved Google Chat credentials from disk.
32
+ *
33
+ * @returns Parsed credentials object or null if not found
34
+ */
35
+ async function loadSavedCredentials() {
36
+ const credPath = getCredentialPath();
37
+ try {
38
+ const raw = await fs.readFile(credPath, 'utf-8');
39
+ const parsed = JSON.parse(raw);
40
+ if (typeof parsed !== 'object' || parsed === null) {
41
+ return null;
42
+ }
43
+ return parsed;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Create the incoming message callback for Google Chat Pub/Sub mode.
51
+ *
52
+ * Replicates the same callback from `messenger.routes.ts` so that
53
+ * auto-reconnected Pub/Sub subscriptions can route messages to the
54
+ * orchestrator via the message queue.
55
+ *
56
+ * @param queueService - The message queue service to enqueue into
57
+ * @param adapter - The Google Chat adapter for sending replies
58
+ * @returns Callback function for incoming messages
59
+ */
60
+ function createIncomingCallback(queueService, adapter) {
61
+ return (msg) => {
62
+ const replyPromise = new Promise((resolve) => {
63
+ const sourceMetadata = {
64
+ channelId: msg.channelId,
65
+ userId: msg.userId,
66
+ threadId: msg.threadId,
67
+ googleChatResolve: resolve,
68
+ };
69
+ queueService.enqueue({
70
+ content: msg.text,
71
+ conversationId: msg.conversationId,
72
+ source: MESSAGE_SOURCES.GOOGLE_CHAT,
73
+ sourceMetadata,
74
+ });
75
+ });
76
+ replyPromise.then(async (response) => {
77
+ try {
78
+ await adapter.sendMessage(msg.channelId, response, { threadId: msg.threadId });
79
+ }
80
+ catch (err) {
81
+ const replyLogger = LoggerService.getInstance().createComponentLogger('GoogleChatReply');
82
+ replyLogger.error('Failed to send reply', { channelId: msg.channelId, error: formatError(err) });
83
+ }
84
+ });
85
+ };
86
+ }
87
+ /**
88
+ * Initialize Google Chat integration from saved credentials.
89
+ *
90
+ * Designed to be called during backend startup. Checks for a saved
91
+ * credentials file and reinitializes the adapter if found. For Pub/Sub
92
+ * mode, also restarts the pull loop with the incoming message callback.
93
+ *
94
+ * @param options - Optional initialization options
95
+ * @returns Result object indicating success or failure
96
+ */
97
+ export async function initializeGoogleChatIfConfigured(options) {
98
+ const savedConfig = await loadSavedCredentials();
99
+ if (!savedConfig) {
100
+ logger.info('No saved credentials found — skipping initialization');
101
+ return { attempted: false, success: false };
102
+ }
103
+ try {
104
+ logger.info('Found saved Google Chat credentials, attempting auto-reconnect', {
105
+ hasWebhookUrl: Boolean(savedConfig.webhookUrl),
106
+ hasServiceAccountKey: Boolean(savedConfig.serviceAccountKey),
107
+ hasAuthMode: Boolean(savedConfig.authMode),
108
+ hasProjectId: Boolean(savedConfig.projectId),
109
+ hasSubscriptionName: Boolean(savedConfig.subscriptionName),
110
+ });
111
+ const registry = MessengerRegistryService.getInstance();
112
+ let adapter = registry.get('google-chat');
113
+ if (!adapter) {
114
+ adapter = new GoogleChatMessengerAdapter();
115
+ registry.register(adapter);
116
+ }
117
+ // Build config from saved credentials
118
+ const config = { ...savedConfig };
119
+ // For Pub/Sub mode, inject the incoming message callback
120
+ if (config.subscriptionName && config.projectId && options?.messageQueueService) {
121
+ config.onIncomingMessage = createIncomingCallback(options.messageQueueService, adapter);
122
+ }
123
+ await adapter.initialize(config);
124
+ const status = adapter.getStatus();
125
+ logger.info('Google Chat auto-reconnect successful', {
126
+ mode: status.details?.mode,
127
+ authMode: status.details?.authMode,
128
+ pullActive: status.details?.pullActive,
129
+ });
130
+ return { attempted: true, success: true };
131
+ }
132
+ catch (error) {
133
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
134
+ logger.error('Google Chat auto-reconnect failed', { error: errorMessage });
135
+ return { attempted: true, success: false, error: errorMessage };
136
+ }
137
+ }
138
+ //# sourceMappingURL=google-chat-initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-chat-initializer.js","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/google-chat-initializer.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,18 @@ export declare class ResponseRouterService {
53
53
  * @param response - The response content
54
54
  */
55
55
  private routeToGoogleChat;
56
+ /**
57
+ * Resolve a source-specific callback stored in the message's sourceMetadata.
58
+ *
59
+ * Shared helper used by routeToSlack, routeToGoogleChat, and routeError
60
+ * to avoid duplicating the resolve-callback pattern.
61
+ *
62
+ * @param message - The QueuedMessage containing the callback in sourceMetadata
63
+ * @param response - The response string to pass to the callback
64
+ * @param callbackKey - The key in sourceMetadata that holds the resolve function
65
+ * @param label - Human-readable label for log messages (e.g. "Slack", "Google Chat")
66
+ */
67
+ private resolveCallback;
56
68
  /**
57
69
  * Route an error to the appropriate destination.
58
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"response-router.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/response-router.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAkB;;IAMhC;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwB7D;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAyBpB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAmCxD"}
1
+ {"version":3,"file":"response-router.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/response-router.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAkB;;IAMhC;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwB7D;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CA2BxD"}
@@ -8,6 +8,7 @@
8
8
  * @module services/messaging/response-router
9
9
  */
10
10
  import { LoggerService } from '../core/logger.service.js';
11
+ import { formatError } from '../../utils/format-error.js';
11
12
  /**
12
13
  * ResponseRouterService routes orchestrator responses to the appropriate
13
14
  * destination based on the message source.
@@ -75,29 +76,7 @@ export class ResponseRouterService {
75
76
  * @param response - The response content
76
77
  */
77
78
  routeToSlack(message, response) {
78
- const slackResolve = message.sourceMetadata?.slackResolve;
79
- if (typeof slackResolve === 'function') {
80
- try {
81
- slackResolve(response);
82
- this.logger.debug('Slack response resolved', {
83
- messageId: message.id,
84
- conversationId: message.conversationId,
85
- responseLength: response.length,
86
- });
87
- }
88
- catch (error) {
89
- this.logger.error('Failed to resolve Slack response', {
90
- messageId: message.id,
91
- error: error instanceof Error ? error.message : String(error),
92
- });
93
- }
94
- }
95
- else {
96
- this.logger.warn('Slack message has no slackResolve callback', {
97
- messageId: message.id,
98
- conversationId: message.conversationId,
99
- });
100
- }
79
+ this.resolveCallback(message, response, 'slackResolve', 'Slack');
101
80
  }
102
81
  /**
103
82
  * Route response to Google Chat by calling the googleChatResolve callback.
@@ -107,25 +86,39 @@ export class ResponseRouterService {
107
86
  * @param response - The response content
108
87
  */
109
88
  routeToGoogleChat(message, response) {
110
- const googleChatResolve = message.sourceMetadata?.googleChatResolve;
111
- if (typeof googleChatResolve === 'function') {
89
+ this.resolveCallback(message, response, 'googleChatResolve', 'Google Chat');
90
+ }
91
+ /**
92
+ * Resolve a source-specific callback stored in the message's sourceMetadata.
93
+ *
94
+ * Shared helper used by routeToSlack, routeToGoogleChat, and routeError
95
+ * to avoid duplicating the resolve-callback pattern.
96
+ *
97
+ * @param message - The QueuedMessage containing the callback in sourceMetadata
98
+ * @param response - The response string to pass to the callback
99
+ * @param callbackKey - The key in sourceMetadata that holds the resolve function
100
+ * @param label - Human-readable label for log messages (e.g. "Slack", "Google Chat")
101
+ */
102
+ resolveCallback(message, response, callbackKey, label) {
103
+ const resolve = message.sourceMetadata?.[callbackKey];
104
+ if (typeof resolve === 'function') {
112
105
  try {
113
- googleChatResolve(response);
114
- this.logger.debug('Google Chat response resolved', {
106
+ resolve(response);
107
+ this.logger.debug(`${label} response resolved`, {
115
108
  messageId: message.id,
116
109
  conversationId: message.conversationId,
117
110
  responseLength: response.length,
118
111
  });
119
112
  }
120
113
  catch (error) {
121
- this.logger.error('Failed to resolve Google Chat response', {
114
+ this.logger.error(`Failed to resolve ${label} response`, {
122
115
  messageId: message.id,
123
- error: error instanceof Error ? error.message : String(error),
116
+ error: formatError(error),
124
117
  });
125
118
  }
126
119
  }
127
120
  else {
128
- this.logger.warn('Google Chat message has no googleChatResolve callback', {
121
+ this.logger.warn(`${label} message has no ${callbackKey} callback`, {
129
122
  messageId: message.id,
130
123
  conversationId: message.conversationId,
131
124
  });
@@ -145,20 +138,12 @@ export class ResponseRouterService {
145
138
  error,
146
139
  });
147
140
  break;
148
- case 'slack': {
149
- const slackResolve = message.sourceMetadata?.slackResolve;
150
- if (typeof slackResolve === 'function') {
151
- slackResolve(`Error: ${error}`);
152
- }
141
+ case 'slack':
142
+ this.resolveCallback(message, `Error: ${error}`, 'slackResolve', 'Slack');
153
143
  break;
154
- }
155
- case 'google_chat': {
156
- const gchatResolve = message.sourceMetadata?.googleChatResolve;
157
- if (typeof gchatResolve === 'function') {
158
- gchatResolve(`Error: ${error}`);
159
- }
144
+ case 'google_chat':
145
+ this.resolveCallback(message, `Error: ${error}`, 'googleChatResolve', 'Google Chat');
160
146
  break;
161
- }
162
147
  case 'system_event':
163
148
  this.logger.debug('System event error routed (no-op)', {
164
149
  messageId: message.id,