@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-
|
|
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
|
-
|
|
1550
|
-
|
|
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-
|
|
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.
|
|
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.
|
|
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.
|
|
127
|
+
"pluginApi": ">=2026.7.2-beta.7"
|
|
128
128
|
},
|
|
129
129
|
"build": {
|
|
130
|
-
"openclawVersion": "2026.7.2-beta.
|
|
130
|
+
"openclawVersion": "2026.7.2-beta.7"
|
|
131
131
|
},
|
|
132
132
|
"release": {
|
|
133
133
|
"publishToClawHub": true,
|