@elizaos/plugin-google-chat 2.0.0-alpha.5 → 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.
- package/README.md +160 -0
- package/auto-enable.ts +21 -0
- package/dist/src/accounts.d.ts +16 -0
- package/dist/src/accounts.d.ts.map +1 -0
- package/dist/src/accounts.js +163 -0
- package/dist/src/accounts.js.map +1 -0
- package/dist/src/actions/index.d.ts +1 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +3 -0
- package/dist/src/actions/index.js.map +1 -0
- package/dist/src/config.d.ts +91 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +8 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/connector-account-provider.d.ts +22 -0
- package/dist/src/connector-account-provider.d.ts.map +1 -0
- package/dist/src/connector-account-provider.js +89 -0
- package/dist/src/connector-account-provider.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +66 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/index.d.ts +1 -0
- package/dist/src/providers/index.d.ts.map +1 -0
- package/dist/src/providers/index.js +3 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/service.d.ts +62 -0
- package/dist/src/service.d.ts.map +1 -0
- package/dist/src/service.js +724 -0
- package/dist/src/service.js.map +1 -0
- package/dist/src/types.d.ts +216 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +144 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/workflow-credential-provider.d.ts +21 -0
- package/dist/src/workflow-credential-provider.d.ts.map +1 -0
- package/dist/src/workflow-credential-provider.js +57 -0
- package/dist/src/workflow-credential-provider.js.map +1 -0
- package/package.json +20 -11
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1115
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|