@actagent/googlechat 2026.6.2

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 (73) hide show
  1. package/README.md +11 -0
  2. package/actagent.plugin.json +17 -0
  3. package/api.ts +4 -0
  4. package/channel-config-api.ts +2 -0
  5. package/channel-plugin-api.ts +2 -0
  6. package/config-api.ts +3 -0
  7. package/contract-api.ts +6 -0
  8. package/directory-contract-api.ts +7 -0
  9. package/doctor-contract-api.ts +2 -0
  10. package/index.ts +21 -0
  11. package/npm-shrinkwrap.json +314 -0
  12. package/package.json +88 -0
  13. package/runtime-api.ts +61 -0
  14. package/secret-contract-api.ts +6 -0
  15. package/setup-entry.ts +14 -0
  16. package/setup-plugin-api.ts +3 -0
  17. package/src/accounts.ts +185 -0
  18. package/src/actions.test.ts +312 -0
  19. package/src/actions.ts +228 -0
  20. package/src/api.ts +346 -0
  21. package/src/approval-auth.test.ts +25 -0
  22. package/src/approval-auth.ts +38 -0
  23. package/src/approval-card-actions.test.ts +113 -0
  24. package/src/approval-card-actions.ts +307 -0
  25. package/src/approval-card-click.test.ts +279 -0
  26. package/src/approval-card-click.ts +94 -0
  27. package/src/approval-handler.runtime.test.ts +388 -0
  28. package/src/approval-handler.runtime.ts +413 -0
  29. package/src/approval-native.test.ts +399 -0
  30. package/src/approval-native.ts +246 -0
  31. package/src/auth.ts +219 -0
  32. package/src/channel-base.ts +123 -0
  33. package/src/channel-config.test.ts +174 -0
  34. package/src/channel.adapters.ts +363 -0
  35. package/src/channel.deps.runtime.ts +30 -0
  36. package/src/channel.runtime.ts +18 -0
  37. package/src/channel.setup.ts +7 -0
  38. package/src/channel.test.ts +845 -0
  39. package/src/channel.ts +214 -0
  40. package/src/config-schema.test.ts +32 -0
  41. package/src/config-schema.ts +4 -0
  42. package/src/doctor-contract.test.ts +76 -0
  43. package/src/doctor-contract.ts +181 -0
  44. package/src/doctor.ts +58 -0
  45. package/src/gateway.ts +84 -0
  46. package/src/google-auth.runtime.test.ts +571 -0
  47. package/src/google-auth.runtime.ts +570 -0
  48. package/src/group-policy.ts +18 -0
  49. package/src/monitor-access.test.ts +492 -0
  50. package/src/monitor-access.ts +466 -0
  51. package/src/monitor-durable.test.ts +40 -0
  52. package/src/monitor-durable.ts +24 -0
  53. package/src/monitor-reply-delivery.ts +162 -0
  54. package/src/monitor-routing.ts +66 -0
  55. package/src/monitor-types.ts +34 -0
  56. package/src/monitor-webhook.test.ts +670 -0
  57. package/src/monitor-webhook.ts +361 -0
  58. package/src/monitor.reply-delivery.test.ts +145 -0
  59. package/src/monitor.test.ts +389 -0
  60. package/src/monitor.ts +530 -0
  61. package/src/monitor.webhook-routing.test.ts +258 -0
  62. package/src/runtime.ts +10 -0
  63. package/src/secret-contract.test.ts +61 -0
  64. package/src/secret-contract.ts +162 -0
  65. package/src/setup-core.ts +41 -0
  66. package/src/setup-surface.ts +244 -0
  67. package/src/setup.test.ts +620 -0
  68. package/src/targets.test.ts +562 -0
  69. package/src/targets.ts +67 -0
  70. package/src/types.config.ts +4 -0
  71. package/src/types.ts +139 -0
  72. package/test-api.ts +3 -0
  73. package/tsconfig.json +16 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # ACTAgent Google Chat
2
+
3
+ Official ACTAgent channel plugin for Google Chat spaces and direct messages.
4
+
5
+ Install from ACTAgent:
6
+
7
+ ```bash
8
+ actagent plugin add @actagent/googlechat
9
+ ```
10
+
11
+ Configure the Google Chat app credentials and allowed spaces in ACTAgent. The plugin lets agents receive Google Chat events and reply through the configured app.
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "googlechat",
3
+ "name": "Google Chat",
4
+ "description": "ACTAgent Google Chat channel plugin for spaces and direct messages.",
5
+ "activation": {
6
+ "onStartup": false
7
+ },
8
+ "channels": ["googlechat"],
9
+ "channelEnvVars": {
10
+ "googlechat": ["GOOGLE_CHAT_SERVICE_ACCOUNT", "GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"]
11
+ },
12
+ "configSchema": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "properties": {}
16
+ }
17
+ }
package/api.ts ADDED
@@ -0,0 +1,4 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export { googlechatPlugin } from "./src/channel.js";
3
+ export { googlechatSetupAdapter } from "./src/setup-core.js";
4
+ export { googlechatSetupWizard } from "./src/setup-surface.js";
@@ -0,0 +1,2 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export { GoogleChatChannelConfigSchema } from "./src/config-schema.js";
@@ -0,0 +1,2 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export { googlechatPlugin } from "./src/channel.js";
package/config-api.ts ADDED
@@ -0,0 +1,3 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export { GoogleChatConfigSchema } from "actagent/plugin-sdk/bundled-channel-config-schema";
3
+ export { buildChannelConfigSchema } from "actagent/plugin-sdk/channel-config-primitives";
@@ -0,0 +1,6 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export {
3
+ collectRuntimeConfigAssignments,
4
+ secretTargetRegistryEntries,
5
+ } from "./src/secret-contract.js";
6
+ export { normalizeCompatibilityConfig, legacyConfigRules } from "./src/doctor-contract.js";
@@ -0,0 +1,7 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ import { googlechatDirectoryAdapter } from "./src/channel.adapters.js";
3
+
4
+ export const googlechatDirectoryContractPlugin = {
5
+ id: "googlechat",
6
+ directory: googlechatDirectoryAdapter,
7
+ };
@@ -0,0 +1,2 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export { normalizeCompatibilityConfig, legacyConfigRules } from "./src/doctor-contract.js";
package/index.ts ADDED
@@ -0,0 +1,21 @@
1
+ // Googlechat plugin entrypoint registers its ACTAgent integration.
2
+ import { defineBundledChannelEntry } from "actagent/plugin-sdk/channel-entry-contract";
3
+
4
+ export default defineBundledChannelEntry({
5
+ id: "googlechat",
6
+ name: "Google Chat",
7
+ description: "ACTAgent Google Chat channel plugin",
8
+ importMetaUrl: import.meta.url,
9
+ plugin: {
10
+ specifier: "./channel-plugin-api.js",
11
+ exportName: "googlechatPlugin",
12
+ },
13
+ secrets: {
14
+ specifier: "./secret-contract-api.js",
15
+ exportName: "channelSecrets",
16
+ },
17
+ runtime: {
18
+ specifier: "./runtime-api.js",
19
+ exportName: "setGoogleChatRuntime",
20
+ },
21
+ });
@@ -0,0 +1,314 @@
1
+ {
2
+ "name": "@actagent/googlechat",
3
+ "version": "2026.6.2",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@actagent/googlechat",
9
+ "version": "2026.6.2",
10
+ "dependencies": {
11
+ "gaxios": "7.1.4",
12
+ "google-auth-library": "10.6.2",
13
+ "zod": "4.4.3"
14
+ },
15
+ "peerDependencies": {
16
+ "actagent": ">=2026.6.2"
17
+ },
18
+ "peerDependenciesMeta": {
19
+ "actagent": {
20
+ "optional": true
21
+ }
22
+ }
23
+ },
24
+ "node_modules/agent-base": {
25
+ "version": "7.1.4",
26
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
27
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
28
+ "license": "MIT",
29
+ "engines": {
30
+ "node": ">= 14"
31
+ }
32
+ },
33
+ "node_modules/base64-js": {
34
+ "version": "1.5.1",
35
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
36
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
37
+ "funding": [
38
+ {
39
+ "type": "github",
40
+ "url": "https://github.com/sponsors/feross"
41
+ },
42
+ {
43
+ "type": "patreon",
44
+ "url": "https://www.patreon.com/feross"
45
+ },
46
+ {
47
+ "type": "consulting",
48
+ "url": "https://feross.org/support"
49
+ }
50
+ ],
51
+ "license": "MIT"
52
+ },
53
+ "node_modules/bignumber.js": {
54
+ "version": "9.3.1",
55
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
56
+ "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
57
+ "license": "MIT",
58
+ "engines": {
59
+ "node": "*"
60
+ }
61
+ },
62
+ "node_modules/buffer-equal-constant-time": {
63
+ "version": "1.0.1",
64
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
65
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
66
+ "license": "BSD-3-Clause"
67
+ },
68
+ "node_modules/data-uri-to-buffer": {
69
+ "version": "4.0.1",
70
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
71
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
72
+ "license": "MIT",
73
+ "engines": {
74
+ "node": ">= 12"
75
+ }
76
+ },
77
+ "node_modules/debug": {
78
+ "version": "4.4.3",
79
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
80
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
81
+ "license": "MIT",
82
+ "dependencies": {
83
+ "ms": "^2.1.3"
84
+ },
85
+ "engines": {
86
+ "node": ">=6.0"
87
+ },
88
+ "peerDependenciesMeta": {
89
+ "supports-color": {
90
+ "optional": true
91
+ }
92
+ }
93
+ },
94
+ "node_modules/ecdsa-sig-formatter": {
95
+ "version": "1.0.11",
96
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
97
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
98
+ "license": "Apache-2.0",
99
+ "dependencies": {
100
+ "safe-buffer": "^5.0.1"
101
+ }
102
+ },
103
+ "node_modules/extend": {
104
+ "version": "3.0.2",
105
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
106
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
107
+ "license": "MIT"
108
+ },
109
+ "node_modules/fetch-blob": {
110
+ "version": "3.2.0",
111
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
112
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
113
+ "funding": [
114
+ {
115
+ "type": "github",
116
+ "url": "https://github.com/sponsors/jimmywarting"
117
+ },
118
+ {
119
+ "type": "paypal",
120
+ "url": "https://paypal.me/jimmywarting"
121
+ }
122
+ ],
123
+ "license": "MIT",
124
+ "dependencies": {
125
+ "node-domexception": "^1.0.0",
126
+ "web-streams-polyfill": "^3.0.3"
127
+ },
128
+ "engines": {
129
+ "node": "^12.20 || >= 14.13"
130
+ }
131
+ },
132
+ "node_modules/formdata-polyfill": {
133
+ "version": "4.0.10",
134
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
135
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
136
+ "license": "MIT",
137
+ "dependencies": {
138
+ "fetch-blob": "^3.1.2"
139
+ },
140
+ "engines": {
141
+ "node": ">=12.20.0"
142
+ }
143
+ },
144
+ "node_modules/gaxios": {
145
+ "version": "7.1.4",
146
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz",
147
+ "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==",
148
+ "license": "Apache-2.0",
149
+ "dependencies": {
150
+ "extend": "^3.0.2",
151
+ "https-proxy-agent": "^7.0.1",
152
+ "node-fetch": "^3.3.2"
153
+ },
154
+ "engines": {
155
+ "node": ">=18"
156
+ }
157
+ },
158
+ "node_modules/gcp-metadata": {
159
+ "version": "8.1.2",
160
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz",
161
+ "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==",
162
+ "license": "Apache-2.0",
163
+ "dependencies": {
164
+ "gaxios": "^7.0.0",
165
+ "google-logging-utils": "^1.0.0",
166
+ "json-bigint": "^1.0.0"
167
+ },
168
+ "engines": {
169
+ "node": ">=18"
170
+ }
171
+ },
172
+ "node_modules/google-auth-library": {
173
+ "version": "10.6.2",
174
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz",
175
+ "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==",
176
+ "license": "Apache-2.0",
177
+ "dependencies": {
178
+ "base64-js": "^1.3.0",
179
+ "ecdsa-sig-formatter": "^1.0.11",
180
+ "gaxios": "^7.1.4",
181
+ "gcp-metadata": "8.1.2",
182
+ "google-logging-utils": "1.1.3",
183
+ "jws": "^4.0.0"
184
+ },
185
+ "engines": {
186
+ "node": ">=18"
187
+ }
188
+ },
189
+ "node_modules/google-logging-utils": {
190
+ "version": "1.1.3",
191
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz",
192
+ "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==",
193
+ "license": "Apache-2.0",
194
+ "engines": {
195
+ "node": ">=14"
196
+ }
197
+ },
198
+ "node_modules/https-proxy-agent": {
199
+ "version": "7.0.6",
200
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
201
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
202
+ "license": "MIT",
203
+ "dependencies": {
204
+ "agent-base": "^7.1.2",
205
+ "debug": "4"
206
+ },
207
+ "engines": {
208
+ "node": ">= 14"
209
+ }
210
+ },
211
+ "node_modules/json-bigint": {
212
+ "version": "1.0.0",
213
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
214
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
215
+ "license": "MIT",
216
+ "dependencies": {
217
+ "bignumber.js": "^9.0.0"
218
+ }
219
+ },
220
+ "node_modules/jwa": {
221
+ "version": "2.0.1",
222
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
223
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
224
+ "license": "MIT",
225
+ "dependencies": {
226
+ "buffer-equal-constant-time": "^1.0.1",
227
+ "ecdsa-sig-formatter": "1.0.11",
228
+ "safe-buffer": "^5.0.1"
229
+ }
230
+ },
231
+ "node_modules/jws": {
232
+ "version": "4.0.1",
233
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
234
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
235
+ "license": "MIT",
236
+ "dependencies": {
237
+ "jwa": "^2.0.1",
238
+ "safe-buffer": "^5.0.1"
239
+ }
240
+ },
241
+ "node_modules/ms": {
242
+ "version": "2.1.3",
243
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
244
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
245
+ "license": "MIT"
246
+ },
247
+ "node_modules/node-domexception": {
248
+ "name": "@nolyfill/domexception",
249
+ "version": "1.0.28",
250
+ "resolved": "https://registry.npmjs.org/@nolyfill/domexception/-/domexception-1.0.28.tgz",
251
+ "integrity": "sha512-tlc/FcYIv5i8RYsl2iDil4A0gOihaas1R5jPcIC4Zw3GhjKsVilw90aHcVlhZPTBLGBzd379S+VcnsDjd9ChiA==",
252
+ "license": "MIT",
253
+ "engines": {
254
+ "node": ">=12.4.0"
255
+ }
256
+ },
257
+ "node_modules/node-fetch": {
258
+ "version": "3.3.2",
259
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
260
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
261
+ "license": "MIT",
262
+ "dependencies": {
263
+ "data-uri-to-buffer": "^4.0.0",
264
+ "fetch-blob": "^3.1.4",
265
+ "formdata-polyfill": "^4.0.10"
266
+ },
267
+ "engines": {
268
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
269
+ },
270
+ "funding": {
271
+ "type": "opencollective",
272
+ "url": "https://opencollective.com/node-fetch"
273
+ }
274
+ },
275
+ "node_modules/safe-buffer": {
276
+ "version": "5.2.1",
277
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
278
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
279
+ "funding": [
280
+ {
281
+ "type": "github",
282
+ "url": "https://github.com/sponsors/feross"
283
+ },
284
+ {
285
+ "type": "patreon",
286
+ "url": "https://www.patreon.com/feross"
287
+ },
288
+ {
289
+ "type": "consulting",
290
+ "url": "https://feross.org/support"
291
+ }
292
+ ],
293
+ "license": "MIT"
294
+ },
295
+ "node_modules/web-streams-polyfill": {
296
+ "version": "3.3.3",
297
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
298
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
299
+ "license": "MIT",
300
+ "engines": {
301
+ "node": ">= 8"
302
+ }
303
+ },
304
+ "node_modules/zod": {
305
+ "version": "4.4.3",
306
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
307
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
308
+ "license": "MIT",
309
+ "funding": {
310
+ "url": "https://github.com/sponsors/colinhacks"
311
+ }
312
+ }
313
+ }
314
+ }
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@actagent/googlechat",
3
+ "version": "2026.6.2",
4
+ "description": "ACTAgent Google Chat channel plugin for spaces and direct messages.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/actagent/actagent"
8
+ },
9
+ "type": "module",
10
+ "dependencies": {
11
+ "gaxios": "7.1.4",
12
+ "google-auth-library": "10.6.2",
13
+ "zod": "4.4.3"
14
+ },
15
+ "devDependencies": {
16
+ "@actagent/plugin-sdk": "workspace:*",
17
+ "actagent": "workspace:*"
18
+ },
19
+ "peerDependencies": {
20
+ "actagent": "workspace:*"
21
+ },
22
+ "peerDependenciesMeta": {
23
+ "actagent": {
24
+ "optional": true
25
+ }
26
+ },
27
+ "actagent": {
28
+ "extensions": [
29
+ "./index.ts"
30
+ ],
31
+ "setupEntry": "./setup-entry.ts",
32
+ "channel": {
33
+ "id": "googlechat",
34
+ "label": "Google Chat",
35
+ "selectionLabel": "Google Chat (Chat API)",
36
+ "detailLabel": "Google Chat",
37
+ "docsPath": "/channels/googlechat",
38
+ "docsLabel": "googlechat",
39
+ "blurb": "Google Workspace Chat app with HTTP webhook.",
40
+ "aliases": [
41
+ "gchat",
42
+ "google-chat"
43
+ ],
44
+ "order": 55,
45
+ "systemImage": "message.badge",
46
+ "markdownCapable": true,
47
+ "doctorCapabilities": {
48
+ "dmAllowFromMode": "nestedOnly",
49
+ "groupModel": "route",
50
+ "groupAllowFromFallbackToAllowFrom": false,
51
+ "warnOnEmptyGroupSenderAllowlist": false
52
+ },
53
+ "cliAddOptions": [
54
+ {
55
+ "flags": "--webhook-path <path>",
56
+ "description": "Google Chat webhook path"
57
+ },
58
+ {
59
+ "flags": "--webhook-url <url>",
60
+ "description": "Google Chat webhook URL"
61
+ },
62
+ {
63
+ "flags": "--audience-type <type>",
64
+ "description": "Google Chat audience type (app-url|project-number)"
65
+ },
66
+ {
67
+ "flags": "--audience <value>",
68
+ "description": "Google Chat audience value (app URL or project number)"
69
+ }
70
+ ]
71
+ },
72
+ "install": {
73
+ "npmSpec": "@actagent/googlechat",
74
+ "defaultChoice": "npm",
75
+ "minHostVersion": ">=2026.4.10"
76
+ },
77
+ "compat": {
78
+ "pluginApi": ">=2026.6.2"
79
+ },
80
+ "build": {
81
+ "actagentVersion": "2026.6.2"
82
+ },
83
+ "release": {
84
+ "publishToACTAgentHub": true,
85
+ "publishToNpm": true
86
+ }
87
+ }
88
+ }
package/runtime-api.ts ADDED
@@ -0,0 +1,61 @@
1
+ // Private runtime barrel for the bundled Google Chat extension.
2
+ // Keep this barrel thin and avoid broad plugin-sdk surfaces during bootstrap.
3
+
4
+ export { DEFAULT_ACCOUNT_ID } from "actagent/plugin-sdk/account-id";
5
+ export {
6
+ createActionGate,
7
+ jsonResult,
8
+ readNumberParam,
9
+ readReactionParams,
10
+ readStringParam,
11
+ } from "actagent/plugin-sdk/channel-actions";
12
+ export { buildChannelConfigSchema } from "actagent/plugin-sdk/channel-config-primitives";
13
+ export type {
14
+ ChannelMessageActionAdapter,
15
+ ChannelMessageActionName,
16
+ ChannelStatusIssue,
17
+ } from "actagent/plugin-sdk/channel-contract";
18
+ export { missingTargetError } from "actagent/plugin-sdk/channel-feedback";
19
+ export {
20
+ createAccountStatusSink,
21
+ runPassiveAccountLifecycle,
22
+ } from "actagent/plugin-sdk/channel-outbound";
23
+ export { createChannelPairingController } from "actagent/plugin-sdk/channel-pairing";
24
+ export { createChannelMessageReplyPipeline } from "actagent/plugin-sdk/channel-outbound";
25
+ export { PAIRING_APPROVED_MESSAGE } from "actagent/plugin-sdk/channel-status";
26
+ export { chunkTextForOutbound } from "actagent/plugin-sdk/text-chunking";
27
+ export type { ACTAgentConfig } from "actagent/plugin-sdk/config-contracts";
28
+ export { GoogleChatConfigSchema } from "actagent/plugin-sdk/bundled-channel-config-schema";
29
+ export {
30
+ GROUP_POLICY_BLOCKED_LABEL,
31
+ resolveAllowlistProviderRuntimeGroupPolicy,
32
+ resolveDefaultGroupPolicy,
33
+ warnMissingProviderGroupPolicyFallbackOnce,
34
+ } from "actagent/plugin-sdk/runtime-group-policy";
35
+ export { isDangerousNameMatchingEnabled } from "actagent/plugin-sdk/dangerous-name-runtime";
36
+ export {
37
+ readRemoteMediaBuffer,
38
+ resolveChannelMediaMaxBytes,
39
+ } from "actagent/plugin-sdk/media-runtime";
40
+ export { loadOutboundMediaFromUrl } from "actagent/plugin-sdk/outbound-media";
41
+ export type { PluginRuntime } from "actagent/plugin-sdk/runtime-store";
42
+ export { fetchWithSsrFGuard } from "actagent/plugin-sdk/ssrf-runtime";
43
+ export type {
44
+ GoogleChatAccountConfig,
45
+ GoogleChatConfig,
46
+ } from "actagent/plugin-sdk/config-contracts";
47
+ export { extractToolSend } from "actagent/plugin-sdk/tool-send";
48
+ export { resolveInboundMentionDecision } from "actagent/plugin-sdk/channel-inbound";
49
+ export { resolveInboundRouteEnvelopeBuilderWithRuntime } from "actagent/plugin-sdk/inbound-envelope";
50
+ export { resolveWebhookPath } from "actagent/plugin-sdk/webhook-ingress";
51
+ export {
52
+ registerWebhookTargetWithPluginRoute,
53
+ resolveWebhookTargetWithAuthOrReject,
54
+ withResolvedWebhookRequestPipeline,
55
+ } from "actagent/plugin-sdk/webhook-targets";
56
+ export {
57
+ createWebhookInFlightLimiter,
58
+ readJsonWebhookBodyOrReject,
59
+ type WebhookInFlightLimiter,
60
+ } from "actagent/plugin-sdk/webhook-request-guards";
61
+ export { setGoogleChatRuntime } from "./src/runtime.js";
@@ -0,0 +1,6 @@
1
+ // Googlechat API module exposes the plugin public contract.
2
+ export {
3
+ channelSecrets,
4
+ collectRuntimeConfigAssignments,
5
+ secretTargetRegistryEntries,
6
+ } from "./src/secret-contract.js";
package/setup-entry.ts ADDED
@@ -0,0 +1,14 @@
1
+ // Googlechat plugin module implements setup entry behavior.
2
+ import { defineBundledChannelSetupEntry } from "actagent/plugin-sdk/channel-entry-contract";
3
+
4
+ export default defineBundledChannelSetupEntry({
5
+ importMetaUrl: import.meta.url,
6
+ plugin: {
7
+ specifier: "./setup-plugin-api.js",
8
+ exportName: "googlechatSetupPlugin",
9
+ },
10
+ secrets: {
11
+ specifier: "./secret-contract-api.js",
12
+ exportName: "channelSecrets",
13
+ },
14
+ });
@@ -0,0 +1,3 @@
1
+ // Keep bundled setup entry imports narrow so setup loads do not pull the
2
+ // broader Google Chat runtime plugin surface.
3
+ export { googlechatSetupPlugin } from "./src/channel.setup.js";