@openclaw/googlechat 2026.5.28 → 2026.5.31-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/dist/{actions-uM31ILpT.js → actions-CZqDyDax.js} +2 -2
- package/dist/api.js +2 -2
- package/dist/{channel-CgcjzaOf.js → channel-DJdo8yPb.js} +35 -87
- package/dist/{setup-surface-QTAQvs5Q.js → channel-base-DpPD0ef1.js} +80 -2
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-Ds0MRKqf.js → channel.runtime-BeYlQtHv.js} +0 -1
- package/dist/contract-api.js +1 -1
- package/dist/{doctor-contract-5OTt6Vdl.js → doctor-contract-DCNyxrqR.js} +2 -2
- package/dist/doctor-contract-api.js +1 -1
- package/dist/setup-plugin-api.js +2 -72
- package/npm-shrinkwrap.json +3 -3
- package/package.json +4 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as resolveGoogleChatAccount, o as listEnabledGoogleChatAccounts } from "./channel-base-DpPD0ef1.js";
|
|
2
2
|
import { P as getGoogleChatRuntime } from "./runtime-api-BbVoWRxq.js";
|
|
3
3
|
import { c as sendGoogleChatMessage, o as listGoogleChatReactions, r as deleteGoogleChatReaction, t as createGoogleChatReaction, u as uploadGoogleChatAttachment } from "./api-DxtI9OoY.js";
|
|
4
|
-
import { n as resolveGoogleChatOutboundSpace } from "./channel-
|
|
4
|
+
import { n as resolveGoogleChatOutboundSpace } from "./channel-DJdo8yPb.js";
|
|
5
5
|
import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
|
|
6
6
|
import { createActionGate, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam } from "openclaw/plugin-sdk/channel-actions";
|
|
7
7
|
import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
|
package/dist/api.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as googlechatPlugin } from "./channel-
|
|
1
|
+
import { a as googlechatSetupAdapter, i as googlechatSetupWizard } from "./channel-base-DpPD0ef1.js";
|
|
2
|
+
import { t as googlechatPlugin } from "./channel-DJdo8yPb.js";
|
|
3
3
|
export { googlechatPlugin, googlechatSetupAdapter, googlechatSetupWizard };
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as resolveGoogleChatAccount, n as createGoogleChatPluginBase, r as formatGoogleChatAllowFromEntry, s as listGoogleChatAccountIds, t as GOOGLECHAT_CHANNEL_ID } from "./channel-base-DpPD0ef1.js";
|
|
2
2
|
import { T as resolveChannelMediaMaxBytes, _ as missingTargetError, a as buildChannelConfigSchema, g as loadOutboundMediaFromUrl, i as PAIRING_APPROVED_MESSAGE, o as chunkTextForOutbound, r as GoogleChatConfigSchema, t as DEFAULT_ACCOUNT_ID, x as readRemoteMediaBuffer } from "./runtime-api-BbVoWRxq.js";
|
|
3
3
|
import { a as findGoogleChatDirectMessage } from "./api-DxtI9OoY.js";
|
|
4
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
4
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DCNyxrqR.js";
|
|
5
5
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-lCMHqumt.js";
|
|
6
|
-
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
7
|
-
import { formatNormalizedAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
|
|
8
|
-
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
9
6
|
import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
10
7
|
import { buildPassiveProbedChannelStatusSummary } from "openclaw/plugin-sdk/extension-shared";
|
|
11
8
|
import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
|
|
@@ -14,6 +11,7 @@ import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
|
|
|
14
11
|
import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
15
12
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
16
13
|
import { createAccountStatusSink, createMessageReceiptFromOutboundResults, defineChannelMessageAdapter, runPassiveAccountLifecycle, sanitizeForPlainText } from "openclaw/plugin-sdk/channel-outbound";
|
|
14
|
+
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
17
15
|
import { composeAccountWarningCollectors, createAllowlistProviderOpenWarningCollector, createDangerousNameMatchingMutableAllowlistWarningCollector, resolveChannelGroupRequireMention } from "openclaw/plugin-sdk/channel-policy";
|
|
18
16
|
import { createChannelDirectoryAdapter, listResolvedDirectoryGroupEntriesFromMapKeys, listResolvedDirectoryUserEntriesFromAllowFrom } from "openclaw/plugin-sdk/directory-runtime";
|
|
19
17
|
//#region extensions/googlechat/src/targets.ts
|
|
@@ -91,7 +89,7 @@ function resolveGoogleChatGroupRequireMention(params) {
|
|
|
91
89
|
}
|
|
92
90
|
//#endregion
|
|
93
91
|
//#region extensions/googlechat/src/channel.adapters.ts
|
|
94
|
-
const loadGoogleChatChannelRuntime$2 = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
92
|
+
const loadGoogleChatChannelRuntime$2 = createLazyRuntimeNamedExport(() => import("./channel.runtime-BeYlQtHv.js"), "googleChatChannelRuntime");
|
|
95
93
|
function createGoogleChatSendReceipt(params) {
|
|
96
94
|
const messageId = params.messageId?.trim();
|
|
97
95
|
return createMessageReceiptFromOutboundResults({
|
|
@@ -105,7 +103,7 @@ function createGoogleChatSendReceipt(params) {
|
|
|
105
103
|
kind: params.kind
|
|
106
104
|
});
|
|
107
105
|
}
|
|
108
|
-
const formatAllowFromEntry =
|
|
106
|
+
const formatAllowFromEntry = formatGoogleChatAllowFromEntry;
|
|
109
107
|
const collectGoogleChatSecurityWarnings = composeAccountWarningCollectors(createAllowlistProviderOpenWarningCollector({
|
|
110
108
|
providerConfigPresent: (cfg) => cfg.channels?.googlechat !== void 0,
|
|
111
109
|
resolveGroupPolicy: (account) => account.config.groupPolicy,
|
|
@@ -139,14 +137,30 @@ const googlechatSecurityAdapter = {
|
|
|
139
137
|
},
|
|
140
138
|
collectWarnings: collectGoogleChatSecurityWarnings
|
|
141
139
|
};
|
|
142
|
-
const googlechatThreadingAdapter = {
|
|
143
|
-
|
|
144
|
-
cfg,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
140
|
+
const googlechatThreadingAdapter = {
|
|
141
|
+
scopedAccountReplyToMode: {
|
|
142
|
+
resolveAccount: (cfg, accountId) => resolveGoogleChatAccount({
|
|
143
|
+
cfg,
|
|
144
|
+
accountId
|
|
145
|
+
}),
|
|
146
|
+
resolveReplyToMode: (account, _chatType) => account.config.replyToMode,
|
|
147
|
+
fallback: "off"
|
|
148
|
+
},
|
|
149
|
+
buildToolContext: ({ cfg, accountId, context, hasRepliedRef }) => {
|
|
150
|
+
const currentChannelId = normalizeGoogleChatTarget(context.To);
|
|
151
|
+
const replyToId = normalizeOptionalString(context.ReplyToIdFull) ?? normalizeOptionalString(context.ReplyToId);
|
|
152
|
+
return {
|
|
153
|
+
currentChannelId,
|
|
154
|
+
currentMessageId: replyToId,
|
|
155
|
+
currentThreadTs: replyToId,
|
|
156
|
+
replyToMode: resolveGoogleChatAccount({
|
|
157
|
+
cfg,
|
|
158
|
+
accountId
|
|
159
|
+
}).config.replyToMode,
|
|
160
|
+
hasRepliedRef
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
};
|
|
150
164
|
const googlechatPairingTextAdapter = {
|
|
151
165
|
idLabel: "googlechatUserId",
|
|
152
166
|
message: PAIRING_APPROVED_MESSAGE,
|
|
@@ -332,7 +346,7 @@ const collectGoogleChatMutableAllowlistWarnings = createDangerousNameMatchingMut
|
|
|
332
346
|
});
|
|
333
347
|
//#endregion
|
|
334
348
|
//#region extensions/googlechat/src/gateway.ts
|
|
335
|
-
const loadGoogleChatChannelRuntime$1 = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
349
|
+
const loadGoogleChatChannelRuntime$1 = createLazyRuntimeNamedExport(() => import("./channel.runtime-BeYlQtHv.js"), "googleChatChannelRuntime");
|
|
336
350
|
async function startGoogleChatGatewayAccount(ctx) {
|
|
337
351
|
const account = ctx.account;
|
|
338
352
|
const statusSink = createAccountStatusSink({
|
|
@@ -372,43 +386,7 @@ async function startGoogleChatGatewayAccount(ctx) {
|
|
|
372
386
|
}
|
|
373
387
|
//#endregion
|
|
374
388
|
//#region extensions/googlechat/src/channel.ts
|
|
375
|
-
const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
376
|
-
const meta = {
|
|
377
|
-
id: "googlechat",
|
|
378
|
-
label: "Google Chat",
|
|
379
|
-
selectionLabel: "Google Chat (Chat API)",
|
|
380
|
-
docsPath: "/channels/googlechat",
|
|
381
|
-
docsLabel: "googlechat",
|
|
382
|
-
blurb: "Google Workspace Chat app with HTTP webhook.",
|
|
383
|
-
aliases: ["gchat", "google-chat"],
|
|
384
|
-
order: 55,
|
|
385
|
-
detailLabel: "Google Chat",
|
|
386
|
-
systemImage: "message.badge",
|
|
387
|
-
markdownCapable: true
|
|
388
|
-
};
|
|
389
|
-
const googleChatConfigAdapter = createScopedChannelConfigAdapter({
|
|
390
|
-
sectionKey: "googlechat",
|
|
391
|
-
listAccountIds: listGoogleChatAccountIds,
|
|
392
|
-
resolveAccount: adaptScopedAccountAccessor(resolveGoogleChatAccount),
|
|
393
|
-
resolveAccessorAccount: resolveGoogleChatConfigAccessorAccount,
|
|
394
|
-
defaultAccountId: resolveDefaultGoogleChatAccountId,
|
|
395
|
-
clearBaseFields: [
|
|
396
|
-
"serviceAccount",
|
|
397
|
-
"serviceAccountFile",
|
|
398
|
-
"audienceType",
|
|
399
|
-
"audience",
|
|
400
|
-
"webhookPath",
|
|
401
|
-
"webhookUrl",
|
|
402
|
-
"botUser",
|
|
403
|
-
"name"
|
|
404
|
-
],
|
|
405
|
-
resolveAllowFrom: (account) => account.config.dm?.allowFrom,
|
|
406
|
-
formatAllowFrom: (allowFrom) => formatNormalizedAllowFromEntries({
|
|
407
|
-
allowFrom,
|
|
408
|
-
normalizeEntry: formatAllowFromEntry
|
|
409
|
-
}),
|
|
410
|
-
resolveDefaultTo: (account) => account.config.defaultTo
|
|
411
|
-
});
|
|
389
|
+
const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-BeYlQtHv.js"), "googleChatChannelRuntime");
|
|
412
390
|
const googlechatActions = {
|
|
413
391
|
describeMessageTool: ({ cfg, accountId }) => {
|
|
414
392
|
const accounts = accountId ? [resolveGoogleChatAccount({
|
|
@@ -428,44 +406,14 @@ const googlechatActions = {
|
|
|
428
406
|
},
|
|
429
407
|
extractToolSend: ({ args }) => extractToolSend(args, "sendMessage"),
|
|
430
408
|
handleAction: async (ctx) => {
|
|
431
|
-
const { googlechatMessageActions } = await import("./actions-
|
|
409
|
+
const { googlechatMessageActions } = await import("./actions-CZqDyDax.js");
|
|
432
410
|
if (!googlechatMessageActions.handleAction) throw new Error("Google Chat actions are not available.");
|
|
433
411
|
return await googlechatMessageActions.handleAction(ctx);
|
|
434
412
|
}
|
|
435
413
|
};
|
|
436
414
|
const googlechatPlugin = createChatChannelPlugin({
|
|
437
415
|
base: {
|
|
438
|
-
|
|
439
|
-
meta: { ...meta },
|
|
440
|
-
setup: googlechatSetupAdapter,
|
|
441
|
-
setupWizard: googlechatSetupWizard,
|
|
442
|
-
capabilities: {
|
|
443
|
-
chatTypes: [
|
|
444
|
-
"direct",
|
|
445
|
-
"group",
|
|
446
|
-
"thread"
|
|
447
|
-
],
|
|
448
|
-
reactions: true,
|
|
449
|
-
threads: true,
|
|
450
|
-
media: true,
|
|
451
|
-
nativeCommands: false,
|
|
452
|
-
blockStreaming: true
|
|
453
|
-
},
|
|
454
|
-
streaming: { blockStreamingCoalesceDefaults: {
|
|
455
|
-
minChars: 1500,
|
|
456
|
-
idleMs: 1e3
|
|
457
|
-
} },
|
|
458
|
-
reload: { configPrefixes: ["channels.googlechat"] },
|
|
459
|
-
configSchema: buildChannelConfigSchema(GoogleChatConfigSchema),
|
|
460
|
-
config: {
|
|
461
|
-
...googleChatConfigAdapter,
|
|
462
|
-
isConfigured: (account) => account.credentialSource !== "none",
|
|
463
|
-
describeAccount: (account) => describeAccountSnapshot({
|
|
464
|
-
account,
|
|
465
|
-
configured: account.credentialSource !== "none",
|
|
466
|
-
extra: { credentialSource: account.credentialSource }
|
|
467
|
-
})
|
|
468
|
-
},
|
|
416
|
+
...createGoogleChatPluginBase({ configSchema: buildChannelConfigSchema(GoogleChatConfigSchema) }),
|
|
469
417
|
approvalCapability: googleChatApprovalAuth,
|
|
470
418
|
secrets: {
|
|
471
419
|
secretTargetRegistryEntries,
|
|
@@ -533,14 +481,14 @@ const googlechatPlugin = createChatChannelPlugin({
|
|
|
533
481
|
if (!enabled || !configured) return [];
|
|
534
482
|
const issues = [];
|
|
535
483
|
if (!entry.audience) issues.push({
|
|
536
|
-
channel:
|
|
484
|
+
channel: GOOGLECHAT_CHANNEL_ID,
|
|
537
485
|
accountId,
|
|
538
486
|
kind: "config",
|
|
539
487
|
message: "Google Chat audience is missing (set channels.googlechat.audience).",
|
|
540
488
|
fix: "Set channels.googlechat.audienceType and channels.googlechat.audience."
|
|
541
489
|
});
|
|
542
490
|
if (!entry.audienceType) issues.push({
|
|
543
|
-
channel:
|
|
491
|
+
channel: GOOGLECHAT_CHANNEL_ID,
|
|
544
492
|
accountId,
|
|
545
493
|
kind: "config",
|
|
546
494
|
message: "Google Chat audienceType is missing (app-url or project-number).",
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { safeParseJsonWithSchema, safeParseWithSchema } from "openclaw/plugin-sdk/extension-shared";
|
|
2
|
-
import { normalizeOptionalString, normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, normalizeAccountId, resolveAccountEntry, resolveMergedAccountConfig } from "openclaw/plugin-sdk/account-resolution";
|
|
4
4
|
import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
|
|
5
5
|
import { isSecretRef } from "openclaw/plugin-sdk/secret-input";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
+
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
8
|
+
import { formatNormalizedAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
|
|
9
|
+
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
7
10
|
import { createPatchedAccountSetupAdapter, createSetupInputPresenceValidator } from "openclaw/plugin-sdk/setup-runtime";
|
|
8
11
|
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, addWildcardAllowFrom, applySetupAccountConfigPatch, createPromptParsedAllowFromForAccount, createSetupTranslator, createStandardChannelSetupStatus, formatDocsLink, mergeAllowFromEntries, migrateBaseNameToDefaultAccount, splitSetupEntries } from "openclaw/plugin-sdk/setup";
|
|
9
12
|
//#region extensions/googlechat/src/accounts.ts
|
|
@@ -318,4 +321,79 @@ const googlechatSetupWizard = {
|
|
|
318
321
|
dmPolicy: googlechatDmPolicy
|
|
319
322
|
};
|
|
320
323
|
//#endregion
|
|
321
|
-
|
|
324
|
+
//#region extensions/googlechat/src/channel-base.ts
|
|
325
|
+
const GOOGLECHAT_CHANNEL_ID = "googlechat";
|
|
326
|
+
const googlechatMeta = {
|
|
327
|
+
id: GOOGLECHAT_CHANNEL_ID,
|
|
328
|
+
label: "Google Chat",
|
|
329
|
+
selectionLabel: "Google Chat (Chat API)",
|
|
330
|
+
docsPath: "/channels/googlechat",
|
|
331
|
+
docsLabel: "googlechat",
|
|
332
|
+
blurb: "Google Workspace Chat app with HTTP webhook.",
|
|
333
|
+
aliases: ["gchat", "google-chat"],
|
|
334
|
+
order: 55,
|
|
335
|
+
detailLabel: "Google Chat",
|
|
336
|
+
systemImage: "message.badge",
|
|
337
|
+
markdownCapable: true
|
|
338
|
+
};
|
|
339
|
+
const formatGoogleChatAllowFromEntry = (entry) => normalizeLowercaseStringOrEmpty(entry.trim().replace(/^(googlechat|google-chat|gchat):/i, "").replace(/^user:/i, "").replace(/^users\//i, ""));
|
|
340
|
+
const googleChatConfigAdapter = createScopedChannelConfigAdapter({
|
|
341
|
+
sectionKey: GOOGLECHAT_CHANNEL_ID,
|
|
342
|
+
listAccountIds: listGoogleChatAccountIds,
|
|
343
|
+
resolveAccount: adaptScopedAccountAccessor(resolveGoogleChatAccount),
|
|
344
|
+
resolveAccessorAccount: resolveGoogleChatConfigAccessorAccount,
|
|
345
|
+
defaultAccountId: resolveDefaultGoogleChatAccountId,
|
|
346
|
+
clearBaseFields: [
|
|
347
|
+
"serviceAccount",
|
|
348
|
+
"serviceAccountFile",
|
|
349
|
+
"audienceType",
|
|
350
|
+
"audience",
|
|
351
|
+
"webhookPath",
|
|
352
|
+
"webhookUrl",
|
|
353
|
+
"botUser",
|
|
354
|
+
"name"
|
|
355
|
+
],
|
|
356
|
+
resolveAllowFrom: (account) => account.config.dm?.allowFrom,
|
|
357
|
+
formatAllowFrom: (allowFrom) => formatNormalizedAllowFromEntries({
|
|
358
|
+
allowFrom,
|
|
359
|
+
normalizeEntry: formatGoogleChatAllowFromEntry
|
|
360
|
+
}),
|
|
361
|
+
resolveDefaultTo: (account) => account.config.defaultTo
|
|
362
|
+
});
|
|
363
|
+
function createGoogleChatPluginBase(params = {}) {
|
|
364
|
+
return {
|
|
365
|
+
id: GOOGLECHAT_CHANNEL_ID,
|
|
366
|
+
meta: { ...googlechatMeta },
|
|
367
|
+
setup: googlechatSetupAdapter,
|
|
368
|
+
setupWizard: googlechatSetupWizard,
|
|
369
|
+
capabilities: {
|
|
370
|
+
chatTypes: [
|
|
371
|
+
"direct",
|
|
372
|
+
"group",
|
|
373
|
+
"thread"
|
|
374
|
+
],
|
|
375
|
+
reactions: true,
|
|
376
|
+
threads: true,
|
|
377
|
+
media: true,
|
|
378
|
+
nativeCommands: false,
|
|
379
|
+
blockStreaming: true
|
|
380
|
+
},
|
|
381
|
+
streaming: { blockStreamingCoalesceDefaults: {
|
|
382
|
+
minChars: 1500,
|
|
383
|
+
idleMs: 1e3
|
|
384
|
+
} },
|
|
385
|
+
reload: { configPrefixes: ["channels.googlechat"] },
|
|
386
|
+
...params.configSchema ? { configSchema: params.configSchema } : {},
|
|
387
|
+
config: {
|
|
388
|
+
...googleChatConfigAdapter,
|
|
389
|
+
isConfigured: (account) => account.credentialSource !== "none",
|
|
390
|
+
describeAccount: (account) => describeAccountSnapshot({
|
|
391
|
+
account,
|
|
392
|
+
configured: account.credentialSource !== "none",
|
|
393
|
+
extra: { credentialSource: account.credentialSource }
|
|
394
|
+
})
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
//#endregion
|
|
399
|
+
export { googlechatSetupAdapter as a, resolveGoogleChatAccount as c, googlechatSetupWizard as i, createGoogleChatPluginBase as n, listEnabledGoogleChatAccounts as o, formatGoogleChatAllowFromEntry as r, listGoogleChatAccountIds as s, GOOGLECHAT_CHANNEL_ID as t };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as googlechatPlugin } from "./channel-
|
|
1
|
+
import { t as googlechatPlugin } from "./channel-DJdo8yPb.js";
|
|
2
2
|
export { googlechatPlugin };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "./setup-surface-QTAQvs5Q.js";
|
|
2
1
|
import { E as resolveDefaultGroupPolicy, M as warnMissingProviderGroupPolicyFallbackOnce, O as resolveInboundRouteEnvelopeBuilderWithRuntime, P as getGoogleChatRuntime, k as resolveWebhookPath, m as isDangerousNameMatchingEnabled, n as GROUP_POLICY_BLOCKED_LABEL, u as createChannelPairingController, w as resolveAllowlistProviderRuntimeGroupPolicy } from "./runtime-api-BbVoWRxq.js";
|
|
3
2
|
import { c as sendGoogleChatMessage, d as verifyGoogleChatRequest, i as downloadGoogleChatMedia, l as updateGoogleChatMessage, n as deleteGoogleChatMessage, s as probeGoogleChat, u as uploadGoogleChatAttachment } from "./api-DxtI9OoY.js";
|
|
4
3
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
package/dist/contract-api.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
1
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DCNyxrqR.js";
|
|
2
2
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-lCMHqumt.js";
|
|
3
3
|
export { collectRuntimeConfigAssignments, legacyConfigRules, normalizeCompatibilityConfig, secretTargetRegistryEntries };
|
|
@@ -6,7 +6,7 @@ function hasLegacyGoogleChatStreamMode(value) {
|
|
|
6
6
|
function hasLegacyGoogleChatGroupAllowAlias(value) {
|
|
7
7
|
const groups = asObjectRecord(asObjectRecord(value)?.groups);
|
|
8
8
|
if (!groups) return false;
|
|
9
|
-
return Object.values(groups).some((group) => Object.
|
|
9
|
+
return Object.values(groups).some((group) => Object.hasOwn(asObjectRecord(group) ?? {}, "allow"));
|
|
10
10
|
}
|
|
11
11
|
function hasLegacyAccountAliases(value, match) {
|
|
12
12
|
const accounts = asObjectRecord(value);
|
|
@@ -18,7 +18,7 @@ function normalizeGoogleChatGroups(params) {
|
|
|
18
18
|
const nextGroups = { ...params.groups };
|
|
19
19
|
for (const [groupId, groupValue] of Object.entries(params.groups)) {
|
|
20
20
|
const group = asObjectRecord(groupValue);
|
|
21
|
-
if (!group || !Object.
|
|
21
|
+
if (!group || !Object.hasOwn(group, "allow")) continue;
|
|
22
22
|
const nextGroup = { ...group };
|
|
23
23
|
if (nextGroup.enabled === void 0) {
|
|
24
24
|
nextGroup.enabled = group.allow;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
1
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DCNyxrqR.js";
|
|
2
2
|
export { legacyConfigRules, normalizeCompatibilityConfig };
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,75 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
3
|
-
import { formatNormalizedAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
|
|
4
|
-
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
5
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
1
|
+
import { n as createGoogleChatPluginBase } from "./channel-base-DpPD0ef1.js";
|
|
6
2
|
//#region extensions/googlechat/src/channel.setup.ts
|
|
7
|
-
const
|
|
8
|
-
const googlechatSetupPlugin = {
|
|
9
|
-
id: "googlechat",
|
|
10
|
-
meta: {
|
|
11
|
-
id: "googlechat",
|
|
12
|
-
label: "Google Chat",
|
|
13
|
-
selectionLabel: "Google Chat (Chat API)",
|
|
14
|
-
docsPath: "/channels/googlechat",
|
|
15
|
-
docsLabel: "googlechat",
|
|
16
|
-
blurb: "Google Workspace Chat app with HTTP webhook.",
|
|
17
|
-
aliases: ["gchat", "google-chat"],
|
|
18
|
-
order: 55,
|
|
19
|
-
detailLabel: "Google Chat",
|
|
20
|
-
systemImage: "message.badge",
|
|
21
|
-
markdownCapable: true
|
|
22
|
-
},
|
|
23
|
-
setup: googlechatSetupAdapter,
|
|
24
|
-
setupWizard: googlechatSetupWizard,
|
|
25
|
-
capabilities: {
|
|
26
|
-
chatTypes: [
|
|
27
|
-
"direct",
|
|
28
|
-
"group",
|
|
29
|
-
"thread"
|
|
30
|
-
],
|
|
31
|
-
reactions: true,
|
|
32
|
-
threads: true,
|
|
33
|
-
media: true,
|
|
34
|
-
nativeCommands: false,
|
|
35
|
-
blockStreaming: true
|
|
36
|
-
},
|
|
37
|
-
streaming: { blockStreamingCoalesceDefaults: {
|
|
38
|
-
minChars: 1500,
|
|
39
|
-
idleMs: 1e3
|
|
40
|
-
} },
|
|
41
|
-
reload: { configPrefixes: ["channels.googlechat"] },
|
|
42
|
-
config: {
|
|
43
|
-
...createScopedChannelConfigAdapter({
|
|
44
|
-
sectionKey: "googlechat",
|
|
45
|
-
listAccountIds: listGoogleChatAccountIds,
|
|
46
|
-
resolveAccount: adaptScopedAccountAccessor(resolveGoogleChatAccount),
|
|
47
|
-
resolveAccessorAccount: resolveGoogleChatConfigAccessorAccount,
|
|
48
|
-
defaultAccountId: resolveDefaultGoogleChatAccountId,
|
|
49
|
-
clearBaseFields: [
|
|
50
|
-
"serviceAccount",
|
|
51
|
-
"serviceAccountFile",
|
|
52
|
-
"audienceType",
|
|
53
|
-
"audience",
|
|
54
|
-
"webhookPath",
|
|
55
|
-
"webhookUrl",
|
|
56
|
-
"botUser",
|
|
57
|
-
"name"
|
|
58
|
-
],
|
|
59
|
-
resolveAllowFrom: (account) => account.config.dm?.allowFrom,
|
|
60
|
-
formatAllowFrom: (allowFrom) => formatNormalizedAllowFromEntries({
|
|
61
|
-
allowFrom,
|
|
62
|
-
normalizeEntry: formatGoogleChatAllowFromEntry
|
|
63
|
-
}),
|
|
64
|
-
resolveDefaultTo: (account) => account.config.defaultTo
|
|
65
|
-
}),
|
|
66
|
-
isConfigured: (account) => account.credentialSource !== "none",
|
|
67
|
-
describeAccount: (account) => describeAccountSnapshot({
|
|
68
|
-
account,
|
|
69
|
-
configured: account.credentialSource !== "none",
|
|
70
|
-
extra: { credentialSource: account.credentialSource }
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
};
|
|
3
|
+
const googlechatSetupPlugin = createGoogleChatPluginBase();
|
|
74
4
|
//#endregion
|
|
75
5
|
export { googlechatSetupPlugin };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/googlechat",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.31-beta.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/googlechat",
|
|
9
|
-
"version": "2026.5.
|
|
9
|
+
"version": "2026.5.31-beta.1",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"gaxios": "7.1.4",
|
|
12
12
|
"google-auth-library": "10.6.2",
|
|
13
13
|
"zod": "4.4.3"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"openclaw": ">=2026.5.
|
|
16
|
+
"openclaw": ">=2026.5.31-beta.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependenciesMeta": {
|
|
19
19
|
"openclaw": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/googlechat",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.31-beta.1",
|
|
4
4
|
"description": "OpenClaw Google Chat channel plugin for spaces and direct messages.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"zod": "4.4.3"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"openclaw": ">=2026.5.
|
|
16
|
+
"openclaw": ">=2026.5.31-beta.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependenciesMeta": {
|
|
19
19
|
"openclaw": {
|
|
@@ -71,10 +71,10 @@
|
|
|
71
71
|
"minHostVersion": ">=2026.4.10"
|
|
72
72
|
},
|
|
73
73
|
"compat": {
|
|
74
|
-
"pluginApi": ">=2026.5.
|
|
74
|
+
"pluginApi": ">=2026.5.31-beta.1"
|
|
75
75
|
},
|
|
76
76
|
"build": {
|
|
77
|
-
"openclawVersion": "2026.5.
|
|
77
|
+
"openclawVersion": "2026.5.31-beta.1"
|
|
78
78
|
},
|
|
79
79
|
"release": {
|
|
80
80
|
"publishToClawHub": true,
|