@openclaw/googlechat 2026.7.2-beta.1 → 2026.7.2-beta.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.
@@ -1,5 +1,5 @@
1
- import { l as resolveGoogleChatAccount, o as listEnabledGoogleChatAccounts } from "./channel-base-B16U1bY7.js";
2
- import { _ as sendGoogleChatMessage, p as resolveGoogleChatOutboundSpace } from "./channel.adapters-CvESEXlT.js";
1
+ import { l as resolveGoogleChatAccount, o as listEnabledGoogleChatAccounts } from "./channel-base-fY2AAQj5.js";
2
+ import { m as resolveGoogleChatOutboundSpace, v as sendGoogleChatMessage } from "./channel.adapters-Dhy4lV4f.js";
3
3
  import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
4
4
  import { jsonResult, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/channel-actions";
5
5
  //#region extensions/googlechat/src/actions.ts
package/dist/api.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as googlechatSetupAdapter, i as googlechatSetupWizard } from "./channel-base-B16U1bY7.js";
2
- import { t as googlechatPlugin } from "./channel-9ZeBzfmP.js";
1
+ import { a as googlechatSetupAdapter, i as googlechatSetupWizard } from "./channel-base-fY2AAQj5.js";
2
+ import { t as googlechatPlugin } from "./channel-CST-JKw9.js";
3
3
  export { googlechatPlugin, googlechatSetupAdapter, googlechatSetupWizard };
@@ -1,5 +1,5 @@
1
- import { l as resolveGoogleChatAccount } from "./channel-base-B16U1bY7.js";
2
- import { d as normalizeGoogleChatTarget, u as isGoogleChatUserTarget } from "./channel.adapters-CvESEXlT.js";
1
+ import { l as resolveGoogleChatAccount } from "./channel-base-fY2AAQj5.js";
2
+ import { d as isGoogleChatUserTarget, f as normalizeGoogleChatTarget } from "./channel.adapters-Dhy4lV4f.js";
3
3
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { createChannelApprovalAuth } from "openclaw/plugin-sdk/approval-auth-runtime";
5
5
  //#region extensions/googlechat/src/approval-auth.ts
@@ -1,6 +1,6 @@
1
- import { l as resolveGoogleChatAccount } from "./channel-base-B16U1bY7.js";
2
- import { A as unregisterGoogleChatApprovalCardBindings, D as registerGoogleChatApprovalCardBinding, O as registerGoogleChatManualApprovalFollowupSuppression, _ as sendGoogleChatMessage, b as GOOGLECHAT_APPROVAL_ACTION, j as unregisterGoogleChatManualApprovalFollowupSuppression, p as resolveGoogleChatOutboundSpace, v as updateGoogleChatMessage, w as createGoogleChatApprovalToken, x as buildGoogleChatApprovalActionParameters } from "./channel.adapters-CvESEXlT.js";
3
- import { n as isGoogleChatNativeApprovalClientEnabled, r as shouldHandleGoogleChatNativeApprovalRequest } from "./channel-9ZeBzfmP.js";
1
+ import { l as resolveGoogleChatAccount } from "./channel-base-fY2AAQj5.js";
2
+ import { M as unregisterGoogleChatManualApprovalFollowupSuppression, O as registerGoogleChatApprovalCardBinding, S as buildGoogleChatApprovalActionParameters, T as createGoogleChatApprovalToken, j as unregisterGoogleChatApprovalCardBindings, k as registerGoogleChatManualApprovalFollowupSuppression, m as resolveGoogleChatOutboundSpace, v as sendGoogleChatMessage, x as GOOGLECHAT_APPROVAL_ACTION, y as updateGoogleChatMessage } from "./channel.adapters-Dhy4lV4f.js";
3
+ import { n as isGoogleChatNativeApprovalClientEnabled, r as shouldHandleGoogleChatNativeApprovalRequest } from "./channel-CST-JKw9.js";
4
4
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
@@ -1,8 +1,8 @@
1
- import { c as resolveDefaultGoogleChatAccountId, l as resolveGoogleChatAccount, n as createGoogleChatPluginBase, s as listGoogleChatAccountIds, t as GOOGLECHAT_CHANNEL_ID } from "./channel-base-B16U1bY7.js";
2
- import { a as googlechatPairingTextAdapter, d as normalizeGoogleChatTarget, f as resolveGoogleChatOutboundSessionRoute, i as googlechatOutboundAdapter, l as isGoogleChatSpaceTarget, n as googlechatGroupsAdapter, o as googlechatSecurityAdapter, r as googlechatMessageAdapter, s as googlechatThreadingAdapter, t as googlechatDirectoryAdapter, u as isGoogleChatUserTarget } from "./channel.adapters-CvESEXlT.js";
1
+ import { c as resolveDefaultGoogleChatAccountId, l as resolveGoogleChatAccount, n as createGoogleChatPluginBase, s as listGoogleChatAccountIds, t as GOOGLECHAT_CHANNEL_ID } from "./channel-base-fY2AAQj5.js";
2
+ import { a as googlechatPairingTextAdapter, d as isGoogleChatUserTarget, f as normalizeGoogleChatTarget, i as googlechatOutboundAdapter, n as googlechatGroupsAdapter, o as googlechatSecurityAdapter, p as resolveGoogleChatOutboundSessionRoute, r as googlechatMessageAdapter, s as googlechatThreadingAdapter, t as googlechatDirectoryAdapter, u as isGoogleChatSpaceTarget } from "./channel.adapters-Dhy4lV4f.js";
3
3
  import { n as buildChannelConfigSchema, t as GoogleChatConfigSchema } from "./config-api-CsD0IFxF.js";
4
4
  import { t as DEFAULT_ACCOUNT_ID } from "./runtime-api-1v-DgldF.js";
5
- import { n as googleChatApprovalAuth, r as normalizeGoogleChatApproverId, t as getGoogleChatApprovalApprovers } from "./approval-auth-CMMwmCPY.js";
5
+ import { n as googleChatApprovalAuth, r as normalizeGoogleChatApproverId, t as getGoogleChatApprovalApprovers } from "./approval-auth-B2m8ckdj.js";
6
6
  import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-CvhD0eoX.js";
7
7
  import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-D__4IIu_.js";
8
8
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
@@ -15,7 +15,7 @@ import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY, createLazyChannelAp
15
15
  import { createChannelApproverDmTargetResolver, createChannelNativeOriginTargetResolver, createNativeApprovalChannelRouteGates, shouldSuppressLocalNativeExecApprovalPrompt } from "openclaw/plugin-sdk/approval-native-runtime";
16
16
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
17
17
  import { createAccountStatusSink, runPassiveAccountLifecycle } from "openclaw/plugin-sdk/channel-outbound";
18
- import { createDangerousNameMatchingMutableAllowlistWarningCollector } from "openclaw/plugin-sdk/channel-policy";
18
+ import { buildMutableAllowEntryDetector, collectStandardAllowlistLists, createDangerousNameMatchingMutableAllowlistWarningCollector } from "openclaw/plugin-sdk/channel-policy";
19
19
  import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
20
20
  //#region extensions/googlechat/src/approval-native.ts
21
21
  const DEFAULT_APPROVAL_FORWARDING_MODE = "session";
@@ -141,49 +141,30 @@ const googleChatApprovalCapability = createApproverRestrictedNativeApprovalCapab
141
141
  approvalKind,
142
142
  request
143
143
  }),
144
- load: async () => (await import("./approval-handler.runtime-DcSqrj8k.js")).googleChatApprovalNativeRuntime
144
+ load: async () => (await import("./approval-handler.runtime-DH6QCsS8.js")).googleChatApprovalNativeRuntime
145
145
  })
146
146
  });
147
- //#endregion
148
- //#region extensions/googlechat/src/doctor.ts
149
- function asObjectRecord(value) {
150
- return value && typeof value === "object" && !Array.isArray(value) ? value : null;
151
- }
152
- function isGoogleChatMutableAllowEntry(raw) {
153
- const text = raw.trim();
154
- if (!text || text === "*") return false;
155
- const withoutPrefix = text.replace(/^(googlechat|google-chat|gchat):/i, "").trim();
156
- if (!withoutPrefix) return false;
157
- return withoutPrefix.replace(/^users\//i, "").includes("@");
158
- }
159
147
  const collectGoogleChatMutableAllowlistWarnings = createDangerousNameMatchingMutableAllowlistWarningCollector({
160
148
  channel: "googlechat",
161
- detector: isGoogleChatMutableAllowEntry,
162
- collectLists: (scope) => {
163
- const lists = [{
164
- pathLabel: `${scope.prefix}.groupAllowFrom`,
165
- list: scope.account.groupAllowFrom
166
- }];
167
- const dm = asObjectRecord(scope.account.dm);
168
- if (dm) lists.push({
169
- pathLabel: `${scope.prefix}.dm.allowFrom`,
170
- list: dm.allowFrom
171
- });
172
- const groups = asObjectRecord(scope.account.groups);
173
- if (groups) for (const [groupKey, groupRaw] of Object.entries(groups)) {
174
- const group = asObjectRecord(groupRaw);
175
- if (!group) continue;
176
- lists.push({
177
- pathLabel: `${scope.prefix}.groups.${groupKey}.users`,
178
- list: group.users
179
- });
180
- }
181
- return lists;
182
- }
149
+ detector: buildMutableAllowEntryDetector({
150
+ prefixes: [
151
+ "googlechat:",
152
+ "google-chat:",
153
+ "gchat:",
154
+ "users/"
155
+ ],
156
+ stableIdPattern: /^[^@]+$/
157
+ }),
158
+ collectLists: (scope) => collectStandardAllowlistLists(scope, {
159
+ includeAllowFrom: false,
160
+ includeDm: true,
161
+ includeGroups: true,
162
+ groupField: "users"
163
+ })
183
164
  });
184
165
  //#endregion
185
166
  //#region extensions/googlechat/src/gateway.ts
186
- const loadGoogleChatChannelRuntime$1 = createLazyRuntimeNamedExport(() => import("./channel.runtime-B0u_Dy7b.js"), "googleChatChannelRuntime");
167
+ const loadGoogleChatChannelRuntime$1 = createLazyRuntimeNamedExport(() => import("./channel.runtime-CE5zWkzP.js"), "googleChatChannelRuntime");
187
168
  async function startGoogleChatGatewayAccount(ctx) {
188
169
  const account = ctx.account;
189
170
  const statusSink = createAccountStatusSink({
@@ -245,7 +226,7 @@ async function startGoogleChatGatewayAccount(ctx) {
245
226
  }
246
227
  //#endregion
247
228
  //#region extensions/googlechat/src/channel.ts
248
- const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-B0u_Dy7b.js"), "googleChatChannelRuntime");
229
+ const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-CE5zWkzP.js"), "googleChatChannelRuntime");
249
230
  const googlechatActions = {
250
231
  describeMessageTool: ({ cfg, accountId }) => {
251
232
  if ((accountId ? [resolveGoogleChatAccount({
@@ -260,7 +241,7 @@ const googlechatActions = {
260
241
  supportsAction: ({ action }) => action === "send",
261
242
  extractToolSend: ({ args }) => extractToolSend(args, "sendMessage"),
262
243
  handleAction: async (ctx) => {
263
- const { googlechatMessageActions } = await import("./actions-I93fRoRd.js");
244
+ const { googlechatMessageActions } = await import("./actions-B4nbMjmi.js");
264
245
  if (!googlechatMessageActions.handleAction) throw new Error("Google Chat actions are not available.");
265
246
  return await googlechatMessageActions.handleAction(ctx);
266
247
  }
@@ -280,6 +261,7 @@ const googlechatPlugin = createChatChannelPlugin({
280
261
  "google-chat",
281
262
  "gchat"
282
263
  ],
264
+ targetIdComparison: "case-sensitive",
283
265
  normalizeTarget: normalizeGoogleChatTarget,
284
266
  resolveOutboundSessionRoute: (params) => resolveGoogleChatOutboundSessionRoute(params),
285
267
  targetResolver: {
@@ -236,7 +236,7 @@ const googlechatSetupWizard = {
236
236
  ]
237
237
  },
238
238
  prepare: async ({ cfg, accountId, credentialValues, prompter }) => {
239
- if (accountId === DEFAULT_ACCOUNT_ID$1 && (Boolean(process.env[ENV_SERVICE_ACCOUNT]) || Boolean(process.env[ENV_SERVICE_ACCOUNT_FILE]))) {
239
+ if (accountId === DEFAULT_ACCOUNT_ID$1 && Boolean(normalizeOptionalString(process.env[ENV_SERVICE_ACCOUNT]) || normalizeOptionalString(process.env[ENV_SERVICE_ACCOUNT_FILE]))) {
240
240
  if (await prompter.confirm({
241
241
  message: t("wizard.googlechat.useEnvPrompt"),
242
242
  initialValue: true
@@ -1,2 +1,2 @@
1
- import { t as googlechatPlugin } from "./channel-9ZeBzfmP.js";
1
+ import { t as googlechatPlugin } from "./channel-CST-JKw9.js";
2
2
  export { googlechatPlugin };
@@ -1,4 +1,4 @@
1
- import { l as resolveGoogleChatAccount, r as formatGoogleChatAllowFromEntry } from "./channel-base-B16U1bY7.js";
1
+ import { l as resolveGoogleChatAccount, r as formatGoogleChatAllowFromEntry } from "./channel-base-fY2AAQj5.js";
2
2
  import { d as fetchWithSsrFGuard$1, i as chunkTextForOutbound, m as missingTargetError, r as PAIRING_APPROVED_MESSAGE } from "./runtime-api-1v-DgldF.js";
3
3
  import { buildChannelOutboundSessionRoute } from "openclaw/plugin-sdk/channel-core";
4
4
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
@@ -383,7 +383,7 @@ function resolveGoogleAuthDispatcherPolicy(input, init) {
383
383
  };
384
384
  return { init: nextInit };
385
385
  }
386
- function createGoogleAuthFetch(baseFetch) {
386
+ function createGoogleAuthFetch() {
387
387
  return async (input, init) => {
388
388
  const url = input instanceof Request ? input.url : String(input);
389
389
  const guardedOptions = resolveGoogleAuthDispatcherPolicy(input, init);
@@ -394,8 +394,7 @@ function createGoogleAuthFetch(baseFetch) {
394
394
  policy: GOOGLE_AUTH_POLICY,
395
395
  signal: guardedOptions.init?.signal ?? void 0,
396
396
  timeoutMs: GOOGLE_AUTH_FETCH_TIMEOUT_MS,
397
- url,
398
- ...baseFetch ? { fetchImpl: baseFetch } : {}
397
+ url
399
398
  });
400
399
  try {
401
400
  const body = await readGoogleAuthResponseBytes(response);
@@ -867,18 +866,23 @@ async function resolveGoogleChatOutboundSessionRoute(params) {
867
866
  }
868
867
  //#endregion
869
868
  //#region extensions/googlechat/src/group-policy.ts
870
- function resolveScopePath(params) {
871
- return params.groupId ? [params.groupId] : [];
869
+ function buildGoogleChatGroupPolicyScope(params) {
870
+ const matchKey = params.groupId && Object.hasOwn(params.tree.scopes, params.groupId) ? params.groupId : void 0;
871
+ return {
872
+ tree: params.tree,
873
+ path: matchKey ? [matchKey] : [],
874
+ matchKey
875
+ };
872
876
  }
873
877
  function resolveGoogleChatGroupRequireMention(params) {
874
- return resolveScopeRequireMention({
878
+ return resolveScopeRequireMention(buildGoogleChatGroupPolicyScope({
875
879
  tree: buildChannelGroupsScopeTree(params.cfg, "googlechat", params.accountId),
876
- path: resolveScopePath(params)
877
- });
880
+ groupId: params.groupId
881
+ }));
878
882
  }
879
883
  //#endregion
880
884
  //#region extensions/googlechat/src/channel.adapters.ts
881
- const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-B0u_Dy7b.js"), "googleChatChannelRuntime");
885
+ const loadGoogleChatChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-CE5zWkzP.js"), "googleChatChannelRuntime");
882
886
  function createGoogleChatSendReceipt(params) {
883
887
  const messageId = params.messageId?.trim();
884
888
  return createMessageReceiptFromOutboundResults({
@@ -1040,4 +1044,4 @@ const googlechatMessageAdapter = defineChannelMessageAdapter({
1040
1044
  send: { text: googlechatOutboundAdapter.attachedResults.sendText }
1041
1045
  });
1042
1046
  //#endregion
1043
- export { unregisterGoogleChatApprovalCardBindings as A, completeGoogleChatApprovalCardBinding as C, registerGoogleChatApprovalCardBinding as D, readGoogleChatApprovalActionToken as E, registerGoogleChatManualApprovalFollowupSuppression as O, claimGoogleChatApprovalCardBinding as S, getGoogleChatApprovalCardBinding as T, sendGoogleChatMessage as _, googlechatPairingTextAdapter as a, GOOGLECHAT_APPROVAL_ACTION as b, isGoogleChatGroupSpace as c, normalizeGoogleChatTarget as d, resolveGoogleChatOutboundSessionRoute as f, probeGoogleChat as g, downloadGoogleChatMedia as h, googlechatOutboundAdapter as i, unregisterGoogleChatManualApprovalFollowupSuppression as j, releaseGoogleChatApprovalCardBinding as k, isGoogleChatSpaceTarget as l, deleteGoogleChatMessage as m, googlechatGroupsAdapter as n, googlechatSecurityAdapter as o, resolveGoogleChatOutboundSpace as p, googlechatMessageAdapter as r, googlechatThreadingAdapter as s, googlechatDirectoryAdapter as t, isGoogleChatUserTarget as u, updateGoogleChatMessage as v, createGoogleChatApprovalToken as w, buildGoogleChatApprovalActionParameters as x, verifyGoogleChatRequest as y };
1047
+ export { releaseGoogleChatApprovalCardBinding as A, claimGoogleChatApprovalCardBinding as C, readGoogleChatApprovalActionToken as D, getGoogleChatApprovalCardBinding as E, unregisterGoogleChatManualApprovalFollowupSuppression as M, registerGoogleChatApprovalCardBinding as O, buildGoogleChatApprovalActionParameters as S, createGoogleChatApprovalToken as T, probeGoogleChat as _, googlechatPairingTextAdapter as a, verifyGoogleChatRequest as b, buildGoogleChatGroupPolicyScope as c, isGoogleChatUserTarget as d, normalizeGoogleChatTarget as f, downloadGoogleChatMedia as g, deleteGoogleChatMessage as h, googlechatOutboundAdapter as i, unregisterGoogleChatApprovalCardBindings as j, registerGoogleChatManualApprovalFollowupSuppression as k, isGoogleChatGroupSpace as l, resolveGoogleChatOutboundSpace as m, googlechatGroupsAdapter as n, googlechatSecurityAdapter as o, resolveGoogleChatOutboundSessionRoute as p, googlechatMessageAdapter as r, googlechatThreadingAdapter as s, googlechatDirectoryAdapter as t, isGoogleChatSpaceTarget as u, sendGoogleChatMessage as v, completeGoogleChatApprovalCardBinding as w, GOOGLECHAT_APPROVAL_ACTION as x, updateGoogleChatMessage as y };
@@ -1,12 +1,12 @@
1
- import { C as completeGoogleChatApprovalCardBinding, E as readGoogleChatApprovalActionToken, S as claimGoogleChatApprovalCardBinding, T as getGoogleChatApprovalCardBinding, _ as sendGoogleChatMessage, c as isGoogleChatGroupSpace, g as probeGoogleChat, h as downloadGoogleChatMedia, k as releaseGoogleChatApprovalCardBinding, m as deleteGoogleChatMessage, v as updateGoogleChatMessage, y as verifyGoogleChatRequest } from "./channel.adapters-CvESEXlT.js";
1
+ import { A as releaseGoogleChatApprovalCardBinding, C as claimGoogleChatApprovalCardBinding, D as readGoogleChatApprovalActionToken, E as getGoogleChatApprovalCardBinding, _ as probeGoogleChat, b as verifyGoogleChatRequest, c as buildGoogleChatGroupPolicyScope, g as downloadGoogleChatMedia, h as deleteGoogleChatMessage, l as isGoogleChatGroupSpace, v as sendGoogleChatMessage, w as completeGoogleChatApprovalCardBinding, y as updateGoogleChatMessage } from "./channel.adapters-Dhy4lV4f.js";
2
2
  import { C as resolveInboundRouteEnvelopeBuilderWithRuntime, D as warnMissingProviderGroupPolicyFallbackOnce, b as resolveAllowlistProviderRuntimeGroupPolicy, c as createChannelPairingController, f as isDangerousNameMatchingEnabled, k as getGoogleChatRuntime, n as GROUP_POLICY_BLOCKED_LABEL, w as resolveWebhookPath, x as resolveDefaultGroupPolicy } from "./runtime-api-1v-DgldF.js";
3
- import { n as googleChatApprovalAuth } from "./approval-auth-CMMwmCPY.js";
3
+ import { n as googleChatApprovalAuth } from "./approval-auth-B2m8ckdj.js";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
6
6
  import { recordChannelBotPairLoopAndCheckSuppression } from "openclaw/plugin-sdk/channel-inbound";
7
7
  import { WEBHOOK_RATE_LIMIT_DEFAULTS, createFixedWindowRateLimiter, normalizeWebhookPath, resolveRequestClientIp } from "openclaw/plugin-sdk/webhook-ingress";
8
8
  import { registerWebhookTargetWithPluginRoute, resolveWebhookTargetWithAuthOrReject, withResolvedWebhookRequestPipeline } from "openclaw/plugin-sdk/webhook-targets";
9
- import { createWebhookInFlightLimiter, readJsonWebhookBodyOrReject } from "openclaw/plugin-sdk/webhook-request-guards";
9
+ import { createWebhookInFlightLimiter, readJsonWebhookBodyOrReject, runDetachedWebhookWork } from "openclaw/plugin-sdk/webhook-request-guards";
10
10
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
11
11
  import { resolveApprovalOverGateway } from "openclaw/plugin-sdk/approval-gateway-runtime";
12
12
  import { channelIngressRoutes, createChannelIngressResolver, defineStableChannelIngressIdentity } from "openclaw/plugin-sdk/channel-ingress-runtime";
@@ -187,14 +187,21 @@ function resolveGoogleChatGroupConfig(params) {
187
187
  allowlistConfigured: false,
188
188
  deprecatedNameMatch: false
189
189
  };
190
- const entry = entries[groupId];
190
+ const { "*": fallback, ...scopes } = entries;
191
+ const scope = buildGoogleChatGroupPolicyScope({
192
+ tree: {
193
+ defaults: fallback,
194
+ scopes
195
+ },
196
+ groupId
197
+ });
198
+ const entry = scope.matchKey ? entries[scope.matchKey] : void 0;
191
199
  const normalizedGroupName = normalizeLowercaseStringOrEmpty(groupName ?? "");
192
200
  const deprecatedNameMatch = !entry && Boolean(groupName && keys.some((key) => {
193
201
  const trimmed = key.trim();
194
202
  if (!trimmed || trimmed === "*" || /^spaces\//i.test(trimmed)) return false;
195
203
  return trimmed === groupName || normalizeLowercaseStringOrEmpty(trimmed) === normalizedGroupName;
196
204
  }));
197
- const fallback = entries["*"];
198
205
  return {
199
206
  entry: deprecatedNameMatch ? void 0 : entry ?? fallback,
200
207
  allowlistConfigured: true,
@@ -713,7 +720,7 @@ function createGoogleChatWebhookRequestHandler(params) {
713
720
  }
714
721
  const dispatchTarget = selectedTarget;
715
722
  dispatchTarget.statusSink?.({ lastInboundAt: Date.now() });
716
- params.processEvent(parsedEvent, dispatchTarget).catch((err) => {
723
+ runDetachedWebhookWork(() => params.processEvent(parsedEvent, dispatchTarget)).catch((err) => {
717
724
  dispatchTarget.runtime.error?.(`[${dispatchTarget.account.accountId}] Google Chat webhook failed: ${String(err)}`);
718
725
  });
719
726
  res.statusCode = 200;
@@ -1,4 +1,4 @@
1
- import { t as googlechatDirectoryAdapter } from "./channel.adapters-CvESEXlT.js";
1
+ import { t as googlechatDirectoryAdapter } from "./channel.adapters-Dhy4lV4f.js";
2
2
  //#region extensions/googlechat/directory-contract-api.ts
3
3
  const googlechatDirectoryContractPlugin = {
4
4
  id: "googlechat",
@@ -1,4 +1,4 @@
1
- import { n as createGoogleChatPluginBase } from "./channel-base-B16U1bY7.js";
1
+ import { n as createGoogleChatPluginBase } from "./channel-base-fY2AAQj5.js";
2
2
  //#region extensions/googlechat/src/channel.setup.ts
3
3
  const googlechatSetupPlugin = createGoogleChatPluginBase();
4
4
  //#endregion
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@openclaw/googlechat",
3
- "version": "2026.7.2-beta.1",
3
+ "version": "2026.7.2-beta.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/googlechat",
9
- "version": "2026.7.2-beta.1",
9
+ "version": "2026.7.2-beta.2",
10
10
  "dependencies": {
11
11
  "google-auth-library": "10.9.0",
12
12
  "zod": "4.4.3"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.7.2-beta.1"
15
+ "openclaw": ">=2026.7.2-beta.2"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/googlechat",
3
- "version": "2026.7.2-beta.1",
3
+ "version": "2026.7.2-beta.2",
4
4
  "description": "OpenClaw Google Chat channel plugin for spaces and direct messages.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "zod": "4.4.3"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.7.2-beta.1"
15
+ "openclaw": ">=2026.7.2-beta.2"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -70,10 +70,10 @@
70
70
  "minHostVersion": ">=2026.4.10"
71
71
  },
72
72
  "compat": {
73
- "pluginApi": ">=2026.7.2-beta.1"
73
+ "pluginApi": ">=2026.7.2-beta.2"
74
74
  },
75
75
  "build": {
76
- "openclawVersion": "2026.7.2-beta.1"
76
+ "openclawVersion": "2026.7.2-beta.2"
77
77
  },
78
78
  "release": {
79
79
  "publishToClawHub": true,