@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.
@@ -1,7 +1,7 @@
1
- import { o as resolveGoogleChatAccount, r as listEnabledGoogleChatAccounts } from "./setup-surface-QTAQvs5Q.js";
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-CgcjzaOf.js";
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 { n as googlechatSetupAdapter, t as googlechatSetupWizard } from "./setup-surface-QTAQvs5Q.js";
2
- import { t as googlechatPlugin } from "./channel-CgcjzaOf.js";
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 { a as resolveDefaultGoogleChatAccountId, i as listGoogleChatAccountIds, n as googlechatSetupAdapter, o as resolveGoogleChatAccount, s as resolveGoogleChatConfigAccessorAccount, t as googlechatSetupWizard } from "./setup-surface-QTAQvs5Q.js";
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-5OTt6Vdl.js";
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-Ds0MRKqf.js"), "googleChatChannelRuntime");
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 = (entry) => normalizeLowercaseStringOrEmpty(entry.trim().replace(/^(googlechat|google-chat|gchat):/i, "").replace(/^user:/i, "").replace(/^users\//i, ""));
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 = { scopedAccountReplyToMode: {
143
- resolveAccount: (cfg, accountId) => resolveGoogleChatAccount({
144
- cfg,
145
- accountId
146
- }),
147
- resolveReplyToMode: (account, _chatType) => account.config.replyToMode,
148
- fallback: "off"
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-Ds0MRKqf.js"), "googleChatChannelRuntime");
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-Ds0MRKqf.js"), "googleChatChannelRuntime");
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-uM31ILpT.js");
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
- id: "googlechat",
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: "googlechat",
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: "googlechat",
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
- export { resolveDefaultGoogleChatAccountId as a, listGoogleChatAccountIds as i, googlechatSetupAdapter as n, resolveGoogleChatAccount as o, listEnabledGoogleChatAccounts as r, resolveGoogleChatConfigAccessorAccount as s, googlechatSetupWizard as t };
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-CgcjzaOf.js";
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";
@@ -1,3 +1,3 @@
1
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-5OTt6Vdl.js";
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.prototype.hasOwnProperty.call(asObjectRecord(group) ?? {}, "allow"));
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.prototype.hasOwnProperty.call(group, "allow")) continue;
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-5OTt6Vdl.js";
1
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DCNyxrqR.js";
2
2
  export { legacyConfigRules, normalizeCompatibilityConfig };
@@ -1,75 +1,5 @@
1
- import { a as resolveDefaultGoogleChatAccountId, i as listGoogleChatAccountIds, n as googlechatSetupAdapter, o as resolveGoogleChatAccount, s as resolveGoogleChatConfigAccessorAccount, t as googlechatSetupWizard } from "./setup-surface-QTAQvs5Q.js";
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 formatGoogleChatAllowFromEntry = (entry) => normalizeLowercaseStringOrEmpty(entry.trim().replace(/^(googlechat|google-chat|gchat):/i, "").replace(/^user:/i, "").replace(/^users\//i, ""));
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 };
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@openclaw/googlechat",
3
- "version": "2026.5.28",
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.28",
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.28"
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.28",
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.28"
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.28"
74
+ "pluginApi": ">=2026.5.31-beta.1"
75
75
  },
76
76
  "build": {
77
- "openclawVersion": "2026.5.28"
77
+ "openclawVersion": "2026.5.31-beta.1"
78
78
  },
79
79
  "release": {
80
80
  "publishToClawHub": true,