@openclaw/nextcloud-talk 2026.7.2-beta.5 → 2026.7.2-beta.7

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/api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as nextcloudTalkPlugin } from "./channel-D6MTjGj3.js";
1
+ import { t as nextcloudTalkPlugin } from "./channel-B9yquEb1.js";
2
2
  export { nextcloudTalkPlugin };
@@ -10,6 +10,7 @@ import { FormatCapabilityProfile, convertMarkdownTables, renderMarkdownWithMarke
10
10
  import { createChannelApprovalAuth } from "openclaw/plugin-sdk/approval-auth-runtime";
11
11
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { DEFAULT_ACCOUNT_ID, hasConfiguredAccountValue, normalizeAccountId, resolveAccountWithDefaultFallback } from "openclaw/plugin-sdk/account-core";
13
+ import { isTruthyEnvValue } from "openclaw/plugin-sdk/runtime-env";
13
14
  import { tryReadSecretFileSync } from "openclaw/plugin-sdk/secret-file-runtime";
14
15
  import { buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
15
16
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
@@ -39,6 +40,7 @@ import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
39
40
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
40
41
  import { createServer } from "node:http";
41
42
  import { WEBHOOK_RATE_LIMIT_DEFAULTS, createAuthRateLimiter, isRequestBodyLimitError, readRequestBodyWithLimit, requestBodyErrorToText } from "openclaw/plugin-sdk/webhook-ingress";
43
+ import { isRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
42
44
  import { jsonResult, readStringParam, resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
43
45
  import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, buildOutboundBaseSessionKey, normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/routing";
44
46
  import { createChannelDmPolicy } from "openclaw/plugin-sdk/channel-dm-policy";
@@ -78,10 +80,6 @@ function resolveNextcloudTalkApiCredentials(params) {
78
80
  }
79
81
  //#endregion
80
82
  //#region extensions/nextcloud-talk/src/accounts.ts
81
- function isTruthyEnvValue(value) {
82
- const normalized = normalizeLowercaseStringOrEmpty(value);
83
- return normalized === "true" || normalized === "1" || normalized === "yes" || normalized === "on";
84
- }
85
83
  const debugAccounts = (...args) => {
86
84
  if (isTruthyEnvValue(process.env.OPENCLAW_DEBUG_NEXTCLOUD_TALK_ACCOUNTS)) console.warn("[nextcloud-talk:accounts]", ...args);
87
85
  };
@@ -1202,9 +1200,6 @@ var NextcloudTalkWebhookPayloadError = class extends Error {
1202
1200
  this.name = "NextcloudTalkWebhookPayloadError";
1203
1201
  }
1204
1202
  };
1205
- function isRecord(value) {
1206
- return typeof value === "object" && value !== null && !Array.isArray(value);
1207
- }
1208
1203
  function parseRawObject(rawEvent) {
1209
1204
  let parsed;
1210
1205
  try {
@@ -1268,6 +1263,8 @@ async function migrateNextcloudTalkLegacyReplayState(params) {
1268
1263
  //#region extensions/nextcloud-talk/src/monitor.ts
1269
1264
  const DEFAULT_WEBHOOK_MAX_BODY_BYTES = 1024 * 1024;
1270
1265
  const PREAUTH_WEBHOOK_MAX_BODY_BYTES = 64 * 1024;
1266
+ const NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_HEADER = "x-openclaw-delivery-accepted";
1267
+ const NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_VALUE = "durable";
1271
1268
  const PREAUTH_WEBHOOK_BODY_TIMEOUT_MS = 5e3;
1272
1269
  const HEALTH_PATH = "/healthz";
1273
1270
  const WEBHOOK_AUTH_RATE_LIMIT_SCOPE = "nextcloud-talk-webhook-auth";
@@ -1376,7 +1373,7 @@ function createNextcloudTalkWebhookServer(opts) {
1376
1373
  clientIp,
1377
1374
  authRateLimiter: webhookAuthRateLimiter
1378
1375
  })) return;
1379
- await onWebhook(body);
1376
+ if (await onWebhook(body) === "accepted") res.setHeader(NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_HEADER, NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_VALUE);
1380
1377
  writeJsonResponse(res, 200);
1381
1378
  } catch (err) {
1382
1379
  if (isRequestBodyLimitError(err, "PAYLOAD_TOO_LARGE")) {
@@ -1438,11 +1435,6 @@ function createNextcloudTalkWebhookServer(opts) {
1438
1435
  //#endregion
1439
1436
  //#region extensions/nextcloud-talk/src/webhook-spool.ts
1440
1437
  const NEXTCLOUD_TALK_INGRESS_POLL_INTERVAL_MS = 500;
1441
- const NEXTCLOUD_TALK_INGRESS_PRUNE_INTERVAL_MS = 3600 * 1e3;
1442
- const NEXTCLOUD_TALK_INGRESS_COMPLETED_TTL_MS = 720 * 60 * 60 * 1e3;
1443
- const NEXTCLOUD_TALK_INGRESS_COMPLETED_MAX_ENTRIES = 1e4;
1444
- const NEXTCLOUD_TALK_INGRESS_FAILED_TTL_MS = 720 * 60 * 60 * 1e3;
1445
- const NEXTCLOUD_TALK_INGRESS_FAILED_MAX_ENTRIES = 1e4;
1446
1438
  const NextcloudTalkWebhookPayloadSchema = z.object({
1447
1439
  type: z.enum([
1448
1440
  "Create",
@@ -1546,11 +1538,8 @@ function createNextcloudTalkWebhookSpool(options) {
1546
1538
  pollIntervalMs: options.pollIntervalMs ?? NEXTCLOUD_TALK_INGRESS_POLL_INTERVAL_MS,
1547
1539
  waitForDeliveryIdleBeforeRepump: true,
1548
1540
  retention: {
1549
- pruneIntervalMs: NEXTCLOUD_TALK_INGRESS_PRUNE_INTERVAL_MS,
1550
- completedTtlMs: NEXTCLOUD_TALK_INGRESS_COMPLETED_TTL_MS,
1551
- completedMaxEntries: NEXTCLOUD_TALK_INGRESS_COMPLETED_MAX_ENTRIES,
1552
- failedTtlMs: NEXTCLOUD_TALK_INGRESS_FAILED_TTL_MS,
1553
- failedMaxEntries: NEXTCLOUD_TALK_INGRESS_FAILED_MAX_ENTRIES
1541
+ completedMaxEntries: 1e4,
1542
+ failedMaxEntries: 1e4
1554
1543
  },
1555
1544
  drain: {
1556
1545
  resolveNonRetryableFailure,
@@ -1785,6 +1774,11 @@ const nextcloudTalkMessageActions = {
1785
1774
  handleAction: async ({ action, params, cfg, accountId, toolContext }) => {
1786
1775
  if (action === "send") throw new Error("Send should be handled by outbound, not actions handler.");
1787
1776
  if (action === "react") {
1777
+ const account = resolveNextcloudTalkAccount({
1778
+ cfg,
1779
+ accountId
1780
+ });
1781
+ if (!isAccountConfigured(account)) throw new Error(`Nextcloud Talk account "${account.accountId}" is disabled or not configured.`);
1788
1782
  const target = readStringParam(params, "to", {
1789
1783
  required: true,
1790
1784
  label: "to (room token)"
@@ -1,2 +1,2 @@
1
- import { t as nextcloudTalkPlugin } from "./channel-D6MTjGj3.js";
1
+ import { t as nextcloudTalkPlugin } from "./channel-B9yquEb1.js";
2
2
  export { nextcloudTalkPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/nextcloud-talk",
3
- "version": "2026.7.2-beta.5",
3
+ "version": "2026.7.2-beta.7",
4
4
  "description": "OpenClaw Nextcloud Talk channel plugin for conversations.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "type": "module",
10
10
  "peerDependencies": {
11
- "openclaw": ">=2026.7.2-beta.5"
11
+ "openclaw": ">=2026.7.2-beta.7"
12
12
  },
13
13
  "peerDependenciesMeta": {
14
14
  "openclaw": {
@@ -124,10 +124,10 @@
124
124
  "minHostVersion": ">=2026.4.10"
125
125
  },
126
126
  "compat": {
127
- "pluginApi": ">=2026.7.2-beta.5"
127
+ "pluginApi": ">=2026.7.2-beta.7"
128
128
  },
129
129
  "build": {
130
- "openclawVersion": "2026.7.2-beta.5"
130
+ "openclawVersion": "2026.7.2-beta.7"
131
131
  },
132
132
  "release": {
133
133
  "publishToClawHub": true,