@elizaos/plugin-google-chat 2.0.0-alpha.6 → 2.0.0-beta.1

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 (42) hide show
  1. package/README.md +160 -0
  2. package/auto-enable.ts +21 -0
  3. package/dist/src/accounts.d.ts +16 -0
  4. package/dist/src/accounts.d.ts.map +1 -0
  5. package/dist/src/accounts.js +163 -0
  6. package/dist/src/accounts.js.map +1 -0
  7. package/dist/src/actions/index.d.ts +1 -0
  8. package/dist/src/actions/index.d.ts.map +1 -0
  9. package/dist/src/actions/index.js +3 -0
  10. package/dist/src/actions/index.js.map +1 -0
  11. package/dist/src/config.d.ts +91 -0
  12. package/dist/src/config.d.ts.map +1 -0
  13. package/dist/src/config.js +8 -0
  14. package/dist/src/config.js.map +1 -0
  15. package/dist/src/connector-account-provider.d.ts +22 -0
  16. package/dist/src/connector-account-provider.d.ts.map +1 -0
  17. package/dist/src/connector-account-provider.js +89 -0
  18. package/dist/src/connector-account-provider.js.map +1 -0
  19. package/dist/src/index.d.ts +18 -0
  20. package/dist/src/index.d.ts.map +1 -0
  21. package/dist/src/index.js +66 -0
  22. package/dist/src/index.js.map +1 -0
  23. package/dist/src/providers/index.d.ts +1 -0
  24. package/dist/src/providers/index.d.ts.map +1 -0
  25. package/dist/src/providers/index.js +3 -0
  26. package/dist/src/providers/index.js.map +1 -0
  27. package/dist/src/service.d.ts +62 -0
  28. package/dist/src/service.d.ts.map +1 -0
  29. package/dist/src/service.js +724 -0
  30. package/dist/src/service.js.map +1 -0
  31. package/dist/src/types.d.ts +216 -0
  32. package/dist/src/types.d.ts.map +1 -0
  33. package/dist/src/types.js +144 -0
  34. package/dist/src/types.js.map +1 -0
  35. package/dist/src/workflow-credential-provider.d.ts +21 -0
  36. package/dist/src/workflow-credential-provider.d.ts.map +1 -0
  37. package/dist/src/workflow-credential-provider.js +57 -0
  38. package/dist/src/workflow-credential-provider.js.map +1 -0
  39. package/package.json +20 -11
  40. package/dist/index.d.ts +0 -1
  41. package/dist/index.js +0 -1115
  42. package/dist/index.js.map +0 -17
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # Google Chat Plugin for ElizaOS
2
+
3
+ Google Chat messaging integration for ElizaOS agents, providing full support for Google Workspace team communication.
4
+
5
+ ## Features
6
+
7
+ - **Messaging**: Send and receive messages in Google Chat spaces
8
+ - **Direct Messages**: Support for 1:1 DM conversations
9
+ - **Spaces**: Manage presence in Google Chat spaces
10
+ - **Threads**: Reply in threaded conversations
11
+ - **Reactions**: Add and remove emoji reactions
12
+ - **Attachments**: Upload and download media files
13
+ - **Webhook Support**: Receive messages via configurable webhook endpoint
14
+
15
+ ## Installation
16
+
17
+ ### TypeScript/JavaScript
18
+
19
+ ```bash
20
+ npm install @elizaos-plugins/plugin-google-chat
21
+ ```
22
+ ## Prerequisites
23
+
24
+ 1. **Google Cloud Project**: Create a project in the [Google Cloud Console](https://console.cloud.google.com/)
25
+
26
+ 2. **Enable Google Chat API**:
27
+ - Go to APIs & Services > Library
28
+ - Search for "Google Chat API" and enable it
29
+
30
+ 3. **Create a Chat App**:
31
+ - Go to APIs & Services > Chat API > Configuration
32
+ - Configure your Chat app with a webhook URL
33
+
34
+ 4. **Service Account**:
35
+ - Go to IAM & Admin > Service Accounts
36
+ - Create a service account with Chat API access
37
+ - Download the JSON key file
38
+
39
+ 5. **Configure the Chat App**:
40
+ - Set the App URL (webhook endpoint)
41
+ - Configure the audience type and value
42
+
43
+ ## Configuration
44
+
45
+ ### Environment Variables
46
+
47
+ | Variable | Description | Required |
48
+ |----------|-------------|----------|
49
+ | `GOOGLE_CHAT_SERVICE_ACCOUNT` | Service account JSON string | One of these |
50
+ | `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE` | Path to service account JSON file | required |
51
+ | `GOOGLE_APPLICATION_CREDENTIALS` | Default credentials path | |
52
+ | `GOOGLE_CHAT_AUDIENCE_TYPE` | Audience type: `app-url` or `project-number` | Yes |
53
+ | `GOOGLE_CHAT_AUDIENCE` | Audience value for token verification | Yes |
54
+ | `GOOGLE_CHAT_WEBHOOK_PATH` | Webhook path (default: `/googlechat`) | No |
55
+ | `GOOGLE_CHAT_SPACES` | Comma-separated list of spaces | No |
56
+ | `GOOGLE_CHAT_REQUIRE_MENTION` | Require @mention in spaces (default: `true`) | No |
57
+ | `GOOGLE_CHAT_BOT_USER` | Bot user resource name | No |
58
+ | `GOOGLE_CHAT_ENABLED` | Enable/disable plugin (default: `true`) | No |
59
+
60
+ ### Audience Configuration
61
+
62
+ **App URL (Recommended)**:
63
+ - Set `GOOGLE_CHAT_AUDIENCE_TYPE=app-url`
64
+ - Set `GOOGLE_CHAT_AUDIENCE` to your Chat app's App URL from the Cloud Console
65
+
66
+ **Project Number**:
67
+ - Set `GOOGLE_CHAT_AUDIENCE_TYPE=project-number`
68
+ - Set `GOOGLE_CHAT_AUDIENCE` to your Google Cloud project number
69
+
70
+ ## Usage
71
+
72
+ ### TypeScript
73
+
74
+ ```typescript
75
+ import googleChatPlugin from "@elizaos-plugins/plugin-google-chat";
76
+
77
+ const agent = createAgent({
78
+ plugins: [googleChatPlugin],
79
+ // ... other config
80
+ });
81
+ ```
82
+ # Register with ElizaOS runtime
83
+ ```
84
+ ## Actions
85
+
86
+ Google Chat messaging routes through the canonical `MESSAGE` action using
87
+ `source: "google-chat"`.
88
+
89
+ | Primary action | Operation | Description |
90
+ |----------------|-----------|-------------|
91
+ | `MESSAGE` | `send` | Send or thread a message in a Google Chat space |
92
+ | `MESSAGE` | `react` | Add or remove a reaction when the connector supports it |
93
+ | `MESSAGE` | `list_channels` | List spaces the bot is a member of |
94
+
95
+ ## Providers
96
+
97
+ Google Chat does not register standalone planner providers. Space and user
98
+ context is exposed through the Google Chat message connector hooks.
99
+
100
+ ## Events
101
+
102
+ | Event | Description |
103
+ |-------|-------------|
104
+ | `GOOGLE_CHAT_MESSAGE_RECEIVED` | Message received from a space |
105
+ | `GOOGLE_CHAT_MESSAGE_SENT` | Message sent successfully |
106
+ | `GOOGLE_CHAT_SPACE_JOINED` | Bot added to a space |
107
+ | `GOOGLE_CHAT_SPACE_LEFT` | Bot removed from a space |
108
+ | `GOOGLE_CHAT_REACTION_SENT` | Reaction added successfully |
109
+ | `GOOGLE_CHAT_CONNECTION_READY` | Service connected and ready |
110
+
111
+ ## Message Limits
112
+
113
+ - **Maximum message length**: 4,000 characters
114
+ - **Attachments**: 20 MB per file (configurable)
115
+ - Messages exceeding the limit are automatically chunked
116
+
117
+ ## Webhook Security
118
+
119
+ The plugin verifies incoming webhook requests using Google's authentication:
120
+
121
+ 1. **App URL mode**: Verifies ID token against the configured app URL
122
+ 2. **Project Number mode**: Verifies JWT with Google's public certificates
123
+
124
+ Requests that fail verification are rejected with 401 Unauthorized.
125
+
126
+ ## Resource Names
127
+
128
+ Google Chat uses resource names for identifying entities:
129
+
130
+ - **Spaces**: `spaces/{space_id}`
131
+ - **Messages**: `spaces/{space_id}/messages/{message_id}`
132
+ - **Users**: `users/{user_id}` or `users/app` for the bot
133
+ - **Threads**: `spaces/{space_id}/threads/{thread_id}`
134
+ - **Reactions**: `spaces/{space_id}/messages/{message_id}/reactions/{reaction_id}`
135
+
136
+ ## Troubleshooting
137
+
138
+ ### Authentication Issues
139
+
140
+ 1. Verify service account JSON is valid
141
+ 2. Check that the Chat API is enabled
142
+ 3. Ensure the service account has Chat API permissions
143
+ 4. Verify audience type and value match your Chat app configuration
144
+
145
+ ### Webhook Not Receiving Messages
146
+
147
+ 1. Verify your webhook URL is accessible from the internet
148
+ 2. Check that the webhook path matches your configuration
149
+ 3. Ensure your server responds with 200 OK to POST requests
150
+ 4. Verify the Chat app is properly configured in Cloud Console
151
+
152
+ ### Permission Denied
153
+
154
+ 1. Check service account permissions
155
+ 2. Verify the bot is added to the target space
156
+ 3. Ensure proper IAM roles are assigned
157
+
158
+ ## License
159
+
160
+ MIT License - see [LICENSE](LICENSE) for details.
package/auto-enable.ts ADDED
@@ -0,0 +1,21 @@
1
+ // Auto-enable check for @elizaos/plugin-google-chat.
2
+ //
3
+ // Plugin manifest entry-point — referenced by package.json's
4
+ // `elizaos.plugin.autoEnableModule`. Keep this module light: env reads only,
5
+ // no service init, no transitive imports of the full plugin runtime. The
6
+ // auto-enable engine loads dozens of these per boot.
7
+ import type { PluginAutoEnableContext } from "@elizaos/core";
8
+
9
+ /** Enable when a `googlechat` connector block is present and not explicitly disabled. */
10
+ export function shouldEnable(ctx: PluginAutoEnableContext): boolean {
11
+ const c = (ctx.config?.connectors as Record<string, unknown> | undefined)
12
+ ?.googlechat;
13
+ if (!c || typeof c !== "object") return false;
14
+ const config = c as Record<string, unknown>;
15
+ if (config.enabled === false) return false;
16
+ // The full per-connector field check (service account credentials / project)
17
+ // lives in the central engine's isConnectorConfigured. We delegate to a
18
+ // simple "block present + not explicitly disabled" check here; the central
19
+ // engine's stricter check remains as a fallback during migration.
20
+ return true;
21
+ }
@@ -0,0 +1,16 @@
1
+ import type { IAgentRuntime } from "@elizaos/core";
2
+ import type { GoogleChatSettings } from "./types.js";
3
+ export declare const DEFAULT_GOOGLE_CHAT_ACCOUNT_ID = "default";
4
+ export type GoogleChatAccountConfig = Partial<Omit<GoogleChatSettings, "spaces" | "accountId">> & {
5
+ accountId?: string;
6
+ id?: string;
7
+ spaces?: string[] | string;
8
+ serviceAccountKey?: string;
9
+ serviceAccountKeyFile?: string;
10
+ };
11
+ export declare function normalizeGoogleChatAccountId(accountId?: unknown): string;
12
+ export declare function listGoogleChatAccountIds(runtime: IAgentRuntime): string[];
13
+ export declare function resolveDefaultGoogleChatAccountId(runtime: IAgentRuntime): string;
14
+ export declare function readGoogleChatAccountId(...sources: unknown[]): string | undefined;
15
+ export declare function resolveGoogleChatAccountSettings(runtime: IAgentRuntime, requestedAccountId?: string | null): GoogleChatSettings;
16
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7E,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAyEF,wBAAgB,4BAA4B,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAIxE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CAuBzE;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAQhF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CA6BjF;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,aAAa,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,kBAAkB,CA2DpB"}
@@ -0,0 +1,163 @@
1
+ export const DEFAULT_GOOGLE_CHAT_ACCOUNT_ID = "default";
2
+ function stringSetting(runtime, key) {
3
+ const value = runtime.getSetting(key);
4
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
5
+ }
6
+ function envOrSetting(runtime, key) {
7
+ return stringSetting(runtime, key) ?? process.env[key];
8
+ }
9
+ function characterConfig(runtime) {
10
+ const settings = runtime.character?.settings;
11
+ const raw = settings?.googleChat ?? settings?.["google-chat"];
12
+ return raw && typeof raw === "object" ? raw : {};
13
+ }
14
+ function parseAccountsJson(runtime) {
15
+ const raw = stringSetting(runtime, "GOOGLE_CHAT_ACCOUNTS");
16
+ if (!raw)
17
+ return {};
18
+ try {
19
+ const parsed = JSON.parse(raw);
20
+ if (Array.isArray(parsed)) {
21
+ return Object.fromEntries(parsed
22
+ .filter((item) => Boolean(item) && typeof item === "object")
23
+ .map((item) => [normalizeGoogleChatAccountId(item.accountId ?? item.id), item]));
24
+ }
25
+ return parsed && typeof parsed === "object"
26
+ ? parsed
27
+ : {};
28
+ }
29
+ catch {
30
+ return {};
31
+ }
32
+ }
33
+ function allAccountConfigs(runtime) {
34
+ return {
35
+ ...(characterConfig(runtime).accounts ?? {}),
36
+ ...parseAccountsJson(runtime),
37
+ };
38
+ }
39
+ function accountConfig(runtime, accountId) {
40
+ const accounts = allAccountConfigs(runtime);
41
+ return accounts[accountId] ?? accounts[normalizeGoogleChatAccountId(accountId)] ?? {};
42
+ }
43
+ function boolValue(value, fallback = false) {
44
+ if (typeof value === "boolean")
45
+ return value;
46
+ if (typeof value === "string")
47
+ return value.trim().toLowerCase() !== "false";
48
+ return fallback;
49
+ }
50
+ function spaceList(value) {
51
+ if (Array.isArray(value))
52
+ return value.map((space) => String(space).trim()).filter(Boolean);
53
+ if (typeof value === "string") {
54
+ return value
55
+ .split(",")
56
+ .map((space) => space.trim())
57
+ .filter(Boolean);
58
+ }
59
+ return [];
60
+ }
61
+ export function normalizeGoogleChatAccountId(accountId) {
62
+ if (typeof accountId !== "string")
63
+ return DEFAULT_GOOGLE_CHAT_ACCOUNT_ID;
64
+ const trimmed = accountId.trim();
65
+ return trimmed || DEFAULT_GOOGLE_CHAT_ACCOUNT_ID;
66
+ }
67
+ export function listGoogleChatAccountIds(runtime) {
68
+ const ids = new Set();
69
+ const config = characterConfig(runtime);
70
+ if (envOrSetting(runtime, "GOOGLE_CHAT_SERVICE_ACCOUNT") ||
71
+ envOrSetting(runtime, "GOOGLE_CHAT_SERVICE_ACCOUNT_FILE") ||
72
+ process.env.GOOGLE_APPLICATION_CREDENTIALS ||
73
+ config.serviceAccount ||
74
+ config.serviceAccountFile ||
75
+ config.serviceAccountKey ||
76
+ config.serviceAccountKeyFile) {
77
+ ids.add(DEFAULT_GOOGLE_CHAT_ACCOUNT_ID);
78
+ }
79
+ for (const id of Object.keys(allAccountConfigs(runtime))) {
80
+ ids.add(normalizeGoogleChatAccountId(id));
81
+ }
82
+ return Array.from(ids.size ? ids : new Set([DEFAULT_GOOGLE_CHAT_ACCOUNT_ID])).sort((a, b) => a.localeCompare(b));
83
+ }
84
+ export function resolveDefaultGoogleChatAccountId(runtime) {
85
+ const requested = stringSetting(runtime, "GOOGLE_CHAT_DEFAULT_ACCOUNT_ID") ??
86
+ stringSetting(runtime, "GOOGLE_CHAT_ACCOUNT_ID");
87
+ if (requested)
88
+ return normalizeGoogleChatAccountId(requested);
89
+ const ids = listGoogleChatAccountIds(runtime);
90
+ return ids.includes(DEFAULT_GOOGLE_CHAT_ACCOUNT_ID) ? DEFAULT_GOOGLE_CHAT_ACCOUNT_ID : ids[0];
91
+ }
92
+ export function readGoogleChatAccountId(...sources) {
93
+ for (const source of sources) {
94
+ if (!source || typeof source !== "object")
95
+ continue;
96
+ const record = source;
97
+ const parameters = record.parameters && typeof record.parameters === "object"
98
+ ? record.parameters
99
+ : {};
100
+ const data = record.data && typeof record.data === "object"
101
+ ? record.data
102
+ : {};
103
+ const metadata = record.metadata && typeof record.metadata === "object"
104
+ ? record.metadata
105
+ : {};
106
+ const googleChat = data.googleChat && typeof data.googleChat === "object"
107
+ ? data.googleChat
108
+ : {};
109
+ const value = record.accountId ??
110
+ parameters.accountId ??
111
+ data.accountId ??
112
+ googleChat.accountId ??
113
+ metadata.accountId;
114
+ if (typeof value === "string" && value.trim())
115
+ return normalizeGoogleChatAccountId(value);
116
+ }
117
+ return undefined;
118
+ }
119
+ export function resolveGoogleChatAccountSettings(runtime, requestedAccountId) {
120
+ const accountId = normalizeGoogleChatAccountId(requestedAccountId ?? resolveDefaultGoogleChatAccountId(runtime));
121
+ const base = characterConfig(runtime);
122
+ const account = accountConfig(runtime, accountId);
123
+ const allowEnv = accountId === DEFAULT_GOOGLE_CHAT_ACCOUNT_ID;
124
+ const webhookPath = account.webhookPath ??
125
+ base.webhookPath ??
126
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_WEBHOOK_PATH") : undefined) ??
127
+ "/googlechat";
128
+ return {
129
+ accountId,
130
+ serviceAccount: account.serviceAccount ??
131
+ account.serviceAccountKey ??
132
+ base.serviceAccount ??
133
+ base.serviceAccountKey ??
134
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_SERVICE_ACCOUNT") : undefined),
135
+ serviceAccountFile: account.serviceAccountFile ??
136
+ account.serviceAccountKeyFile ??
137
+ base.serviceAccountFile ??
138
+ base.serviceAccountKeyFile ??
139
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_SERVICE_ACCOUNT_FILE") : undefined),
140
+ audienceType: (account.audienceType ??
141
+ base.audienceType ??
142
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_AUDIENCE_TYPE") : undefined) ??
143
+ "app-url"),
144
+ audience: account.audience ??
145
+ base.audience ??
146
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_AUDIENCE") : undefined) ??
147
+ "",
148
+ webhookPath: webhookPath.startsWith("/") ? webhookPath : `/${webhookPath}`,
149
+ spaces: spaceList(account.spaces ??
150
+ base.spaces ??
151
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_SPACES") : undefined)),
152
+ requireMention: boolValue(account.requireMention ??
153
+ base.requireMention ??
154
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_REQUIRE_MENTION") : undefined), true),
155
+ enabled: boolValue(account.enabled ??
156
+ base.enabled ??
157
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_ENABLED") : undefined), true),
158
+ botUser: account.botUser ??
159
+ base.botUser ??
160
+ (allowEnv ? envOrSetting(runtime, "GOOGLE_CHAT_BOT_USER") : undefined),
161
+ };
162
+ }
163
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC;AAcxD,SAAS,aAAa,CAAC,OAAsB,EAAE,GAAW;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB,EAAE,GAAW;IACvD,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,OAAsB;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,QAA+C,CAAC;IACpF,MAAM,GAAG,GAAG,QAAQ,EAAE,UAAU,IAAI,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;IAC9D,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM;iBACH,MAAM,CACL,CAAC,IAAI,EAAmC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,CACrF;iBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YACzC,CAAC,CAAE,MAAkD;YACrD,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,OAAO;QACL,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5C,GAAG,iBAAiB,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAsB,EAAE,SAAiB;IAC9D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,QAAQ,GAAG,KAAK;IACjD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;IAC7E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK;aACT,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,SAAmB;IAC9D,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,8BAA8B,CAAC;IACzE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,OAAO,IAAI,8BAA8B,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAsB;IAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,IACE,YAAY,CAAC,OAAO,EAAE,6BAA6B,CAAC;QACpD,YAAY,CAAC,OAAO,EAAE,kCAAkC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC1C,MAAM,CAAC,cAAc;QACrB,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,iBAAiB;QACxB,MAAM,CAAC,qBAAqB,EAC5B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1F,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAsB;IACtE,MAAM,SAAS,GACb,aAAa,CAAC,OAAO,EAAE,gCAAgC,CAAC;QACxD,aAAa,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACnD,IAAI,SAAS;QAAE,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAG,OAAkB;IAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACxD,CAAC,CAAE,MAAM,CAAC,UAAsC;YAChD,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC5C,CAAC,CAAE,MAAM,CAAC,IAAgC;YAC1C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,QAAQ,GACZ,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACpD,CAAC,CAAE,MAAM,CAAC,QAAoC;YAC9C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACpD,CAAC,CAAE,IAAI,CAAC,UAAsC;YAC9C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GACT,MAAM,CAAC,SAAS;YAChB,UAAU,CAAC,SAAS;YACpB,IAAI,CAAC,SAAS;YACd,UAAU,CAAC,SAAS;YACpB,QAAQ,CAAC,SAAS,CAAC;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAAsB,EACtB,kBAAkC;IAElC,MAAM,SAAS,GAAG,4BAA4B,CAC5C,kBAAkB,IAAI,iCAAiC,CAAC,OAAO,CAAC,CACjE,CAAC;IACF,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,SAAS,KAAK,8BAA8B,CAAC;IAC9D,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;QACnB,IAAI,CAAC,WAAW;QAChB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,aAAa,CAAC;IAEhB,OAAO;QACL,SAAS;QACT,cAAc,EACZ,OAAO,CAAC,cAAc;YACtB,OAAO,CAAC,iBAAiB;YACzB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,iBAAiB;YACtB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,kBAAkB,EAChB,OAAO,CAAC,kBAAkB;YAC1B,OAAO,CAAC,qBAAqB;YAC7B,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,qBAAqB;YAC1B,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY;YACjC,IAAI,CAAC,YAAY;YACjB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,SAAS,CAA2B;QACtC,QAAQ,EACN,OAAO,CAAC,QAAQ;YAChB,IAAI,CAAC,QAAQ;YACb,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,EAAE;QACJ,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE;QAC1E,MAAM,EAAE,SAAS,CACf,OAAO,CAAC,MAAM;YACZ,IAAI,CAAC,MAAM;YACX,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CACvE;QACD,cAAc,EAAE,SAAS,CACvB,OAAO,CAAC,cAAc;YACpB,IAAI,CAAC,cAAc;YACnB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAC/E,IAAI,CACL;QACD,OAAO,EAAE,SAAS,CAChB,OAAO,CAAC,OAAO;YACb,IAAI,CAAC,OAAO;YACZ,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACvE,IAAI,CACL;QACD,OAAO,EACL,OAAO,CAAC,OAAO;YACf,IAAI,CAAC,OAAO;YACZ,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // Google Chat messaging routes through MESSAGE connector hooks.
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":";AAAA,gEAAgE"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Google Chat plugin configuration types.
3
+ *
4
+ * These types define the configuration schema for the Google Chat plugin.
5
+ * Shared base types are imported from @elizaos/core.
6
+ */
7
+ import type { BlockStreamingCoalesceConfig, ChannelHeartbeatVisibilityConfig, DmConfig, DmPolicy, GroupPolicy, GroupToolPolicyBySenderConfig, GroupToolPolicyConfig, MarkdownConfig, ProviderCommandsConfig } from "@elizaos/core";
8
+ export type GoogleChatReactionNotificationMode = "off" | "own" | "all" | "allowlist";
9
+ export type GoogleChatActionConfig = {
10
+ reactions?: boolean;
11
+ sendMessage?: boolean;
12
+ /** Enable Card messages for structured responses (default: true). */
13
+ cards?: boolean;
14
+ };
15
+ export type GoogleChatSpaceConfig = {
16
+ enabled?: boolean;
17
+ requireMention?: boolean;
18
+ tools?: GroupToolPolicyConfig;
19
+ toolsBySender?: GroupToolPolicyBySenderConfig;
20
+ };
21
+ export type GoogleChatAccountConfig = {
22
+ /** Optional display name for this account (used in CLI/UI lists). */
23
+ name?: string;
24
+ /** Optional provider capability tags used for agent/runtime guidance. */
25
+ capabilities?: string[];
26
+ /** Markdown formatting overrides (tables). */
27
+ markdown?: MarkdownConfig;
28
+ /** Override native command registration for Google Chat (bool or "auto"). */
29
+ commands?: ProviderCommandsConfig;
30
+ /** Allow channel-initiated config writes (default: true). */
31
+ configWrites?: boolean;
32
+ /** If false, do not start this Google Chat account. Default: true. */
33
+ enabled?: boolean;
34
+ /**
35
+ * Path to Google service account JSON key file.
36
+ * Required for Google Chat API authentication.
37
+ */
38
+ serviceAccountKeyFile?: string;
39
+ /** Service account credentials as inline JSON (alternative to keyFile). */
40
+ serviceAccountKey?: string;
41
+ /** Project ID for Google Cloud project (auto-detected from key if not set). */
42
+ projectId?: string;
43
+ /** Webhook mode: endpoint path for Pub/Sub push (default: /google-chat/webhook). */
44
+ webhookPath?: string;
45
+ /** Pub/Sub subscription name for pull mode (alternative to webhook push). */
46
+ pubsubSubscription?: string;
47
+ /** Direct message (1:1 DM) access policy (default: pairing). */
48
+ dmPolicy?: DmPolicy;
49
+ /** Optional allowlist for Google Chat DM senders (user resource name). */
50
+ allowFrom?: Array<string | number>;
51
+ /** Optional allowlist for Google Chat space senders (user resource name). */
52
+ groupAllowFrom?: Array<string | number>;
53
+ /**
54
+ * Controls how space messages are handled:
55
+ * - "open": spaces bypass allowFrom, only @mention-gating applies
56
+ * - "disabled": block all space messages
57
+ * - "allowlist": only allow messages from senders in groupAllowFrom/allowFrom
58
+ */
59
+ groupPolicy?: GroupPolicy;
60
+ /** Max space messages to keep as history context (0 disables). */
61
+ historyLimit?: number;
62
+ /** Max DM turns to keep as history context. */
63
+ dmHistoryLimit?: number;
64
+ /** Per-DM config overrides keyed by user ID. */
65
+ dms?: Record<string, DmConfig>;
66
+ /** Outbound text chunk size (chars). Default: 4096 (Google Chat limit). */
67
+ textChunkLimit?: number;
68
+ /** Chunking mode: "length" (default) splits by size; "newline" splits on every newline. */
69
+ chunkMode?: "length" | "newline";
70
+ /** Disable block streaming for this account. */
71
+ blockStreaming?: boolean;
72
+ /** Merge streamed block replies before sending. */
73
+ blockStreamingCoalesce?: BlockStreamingCoalesceConfig;
74
+ /** Maximum media file size in MB. Default: 50. */
75
+ mediaMaxMb?: number;
76
+ /** Per-action tool gating. */
77
+ actions?: GoogleChatActionConfig;
78
+ /** Reaction notification mode (off|own|all|allowlist). Default: off. */
79
+ reactionNotifications?: GoogleChatReactionNotificationMode;
80
+ /** Allowlist for reaction notifications when mode is allowlist. */
81
+ reactionAllowlist?: Array<string | number>;
82
+ /** Per-space config overrides keyed by space name (spaces/xxx). */
83
+ spaces?: Record<string, GoogleChatSpaceConfig>;
84
+ /** Heartbeat visibility settings for this channel. */
85
+ heartbeat?: ChannelHeartbeatVisibilityConfig;
86
+ };
87
+ export type GoogleChatConfig = {
88
+ /** Optional per-account Google Chat configuration (multi-account). */
89
+ accounts?: Record<string, GoogleChatAccountConfig>;
90
+ } & GoogleChatAccountConfig;
91
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Google Chat plugin configuration types.
3
+ *
4
+ * These types define the configuration schema for the Google Chat plugin.
5
+ * Shared base types are imported from @elizaos/core.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Google Chat ConnectorAccountManager provider.
3
+ *
4
+ * Adapts the multi-account scaffolding in `accounts.ts` to the
5
+ * `ConnectorAccountProvider` contract from
6
+ * `@elizaos/core/connectors/account-manager`.
7
+ *
8
+ * Source of truth for accounts is character settings (`character.settings.googleChat`)
9
+ * + GOOGLE_CHAT_ACCOUNTS JSON env var + single-account env vars
10
+ * (GOOGLE_CHAT_SERVICE_ACCOUNT, GOOGLE_CHAT_SERVICE_ACCOUNT_FILE).
11
+ *
12
+ * AccountKey is the service-account email (best-effort extracted from the
13
+ * service-account JSON when available, otherwise the configured accountId).
14
+ * Role is `AGENT` since service-account creds authenticate the bot, not a user.
15
+ *
16
+ * Note: this overlaps with plugin-google's OAuth scopes but is a separate
17
+ * plugin scoped to Google Workspace Chat — keep separate.
18
+ */
19
+ import type { ConnectorAccountProvider, IAgentRuntime } from "@elizaos/core";
20
+ export declare const GOOGLE_CHAT_PROVIDER_ID = "google-chat";
21
+ export declare function createGoogleChatConnectorAccountProvider(runtime: IAgentRuntime): ConnectorAccountProvider;
22
+ //# sourceMappingURL=connector-account-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-account-provider.d.ts","sourceRoot":"","sources":["../../src/connector-account-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAIV,wBAAwB,EACxB,aAAa,EACd,MAAM,eAAe,CAAC;AASvB,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAsCrD,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,aAAa,GACrB,wBAAwB,CAqC1B"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Google Chat ConnectorAccountManager provider.
3
+ *
4
+ * Adapts the multi-account scaffolding in `accounts.ts` to the
5
+ * `ConnectorAccountProvider` contract from
6
+ * `@elizaos/core/connectors/account-manager`.
7
+ *
8
+ * Source of truth for accounts is character settings (`character.settings.googleChat`)
9
+ * + GOOGLE_CHAT_ACCOUNTS JSON env var + single-account env vars
10
+ * (GOOGLE_CHAT_SERVICE_ACCOUNT, GOOGLE_CHAT_SERVICE_ACCOUNT_FILE).
11
+ *
12
+ * AccountKey is the service-account email (best-effort extracted from the
13
+ * service-account JSON when available, otherwise the configured accountId).
14
+ * Role is `AGENT` since service-account creds authenticate the bot, not a user.
15
+ *
16
+ * Note: this overlaps with plugin-google's OAuth scopes but is a separate
17
+ * plugin scoped to Google Workspace Chat — keep separate.
18
+ */
19
+ import { DEFAULT_GOOGLE_CHAT_ACCOUNT_ID, listGoogleChatAccountIds, normalizeGoogleChatAccountId, resolveGoogleChatAccountSettings, } from "./accounts.js";
20
+ export const GOOGLE_CHAT_PROVIDER_ID = "google-chat";
21
+ function extractServiceAccountEmail(serviceAccount) {
22
+ if (!serviceAccount)
23
+ return undefined;
24
+ try {
25
+ const parsed = JSON.parse(serviceAccount);
26
+ return typeof parsed.client_email === "string" ? parsed.client_email : undefined;
27
+ }
28
+ catch {
29
+ return undefined;
30
+ }
31
+ }
32
+ function toConnectorAccount(settings) {
33
+ const now = Date.now();
34
+ const configured = Boolean(settings.serviceAccount || settings.serviceAccountFile);
35
+ const email = extractServiceAccountEmail(settings.serviceAccount);
36
+ return {
37
+ id: normalizeGoogleChatAccountId(settings.accountId),
38
+ provider: GOOGLE_CHAT_PROVIDER_ID,
39
+ label: email ?? settings.botUser ?? settings.accountId ?? DEFAULT_GOOGLE_CHAT_ACCOUNT_ID,
40
+ role: "AGENT",
41
+ purpose: ["messaging"],
42
+ accessGate: "open",
43
+ status: settings.enabled !== false && configured ? "connected" : "disabled",
44
+ externalId: email ?? undefined,
45
+ displayHandle: email ?? settings.botUser ?? undefined,
46
+ createdAt: now,
47
+ updatedAt: now,
48
+ metadata: {
49
+ audienceType: settings.audienceType,
50
+ audience: settings.audience ?? "",
51
+ webhookPath: settings.webhookPath,
52
+ requireMention: settings.requireMention,
53
+ botUser: settings.botUser ?? "",
54
+ },
55
+ };
56
+ }
57
+ export function createGoogleChatConnectorAccountProvider(runtime) {
58
+ return {
59
+ provider: GOOGLE_CHAT_PROVIDER_ID,
60
+ label: "Google Chat",
61
+ listAccounts: async (_manager) => {
62
+ const ids = listGoogleChatAccountIds(runtime);
63
+ if (ids.length === 0) {
64
+ return [
65
+ toConnectorAccount(resolveGoogleChatAccountSettings(runtime, DEFAULT_GOOGLE_CHAT_ACCOUNT_ID)),
66
+ ];
67
+ }
68
+ return ids.map((id) => toConnectorAccount(resolveGoogleChatAccountSettings(runtime, id)));
69
+ },
70
+ createAccount: async (input, _manager) => {
71
+ return {
72
+ ...input,
73
+ provider: GOOGLE_CHAT_PROVIDER_ID,
74
+ role: input.role ?? "AGENT",
75
+ purpose: input.purpose ?? ["messaging"],
76
+ accessGate: input.accessGate ?? "open",
77
+ status: input.status ?? "pending",
78
+ };
79
+ },
80
+ patchAccount: async (_accountId, patch, _manager) => {
81
+ return { ...patch, provider: GOOGLE_CHAT_PROVIDER_ID };
82
+ },
83
+ deleteAccount: async (_accountId, _manager) => {
84
+ // No-op at provider layer — service-account credentials live in
85
+ // character settings; deletion of those is out of band.
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=connector-account-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-account-provider.js","sourceRoot":"","sources":["../../src/connector-account-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Google Chat Plugin for ElizaOS
3
+ *
4
+ * Provides Google Chat messaging integration for ElizaOS agents,
5
+ * supporting spaces, direct messages, threads, and reactions.
6
+ */
7
+ import type { Plugin } from "@elizaos/core";
8
+ import { GoogleChatService } from "./service.js";
9
+ export * from "./accounts.js";
10
+ export * from "./types.js";
11
+ export { GoogleChatService };
12
+ /**
13
+ * Google Chat plugin definition
14
+ */
15
+ declare const googleChatPlugin: Plugin;
16
+ export default googleChatPlugin;
17
+ export type { GoogleChatAccountConfig, GoogleChatActionConfig, GoogleChatConfig, GoogleChatReactionNotificationMode, GoogleChatSpaceConfig, } from "./config.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,cAAc,eAAe,CAAC;AAI9B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;GAEG;AACH,QAAA,MAAM,gBAAgB,EAAE,MAoEvB,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAGhC,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kCAAkC,EAClC,qBAAqB,GACtB,MAAM,aAAa,CAAC"}