@openclaw/nextcloud-talk 2026.5.31-beta.2 → 2026.5.31-beta.4
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-5flc23d2.js";
|
|
2
2
|
export { nextcloudTalkPlugin };
|
|
@@ -916,7 +916,7 @@ async function handleNextcloudTalkInbound(params) {
|
|
|
916
916
|
providerKey: "nextcloud-talk",
|
|
917
917
|
accountId: account.accountId,
|
|
918
918
|
blockedLabel: GROUP_POLICY_BLOCKED_LABEL.room,
|
|
919
|
-
log: (
|
|
919
|
+
log: (messageValue) => runtime.log?.(messageValue)
|
|
920
920
|
});
|
|
921
921
|
const commandAuthorized = access.commandAccess.authorized;
|
|
922
922
|
const accessReason = access.ingress.reasonCode === "route_blocked" ? "route blocked" : access.senderAccess.reasonCode;
|
|
@@ -958,7 +958,7 @@ async function handleNextcloudTalkInbound(params) {
|
|
|
958
958
|
}
|
|
959
959
|
if (access.commandAccess.shouldBlockControlCommand) {
|
|
960
960
|
logInboundDrop({
|
|
961
|
-
log: (
|
|
961
|
+
log: (messageLocal) => runtime.log?.(messageLocal),
|
|
962
962
|
channel: CHANNEL_ID,
|
|
963
963
|
reason: "control command (unauthorized)",
|
|
964
964
|
target: senderId
|
|
@@ -1216,83 +1216,85 @@ function createNextcloudTalkWebhookServer(opts) {
|
|
|
1216
1216
|
exemptLoopback: false,
|
|
1217
1217
|
pruneIntervalMs: authRateLimitWindowMs
|
|
1218
1218
|
});
|
|
1219
|
-
const server = createServer(
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
}
|
|
1225
|
-
if (req.url !== path || req.method !== "POST") {
|
|
1226
|
-
res.writeHead(404);
|
|
1227
|
-
res.end();
|
|
1228
|
-
return;
|
|
1229
|
-
}
|
|
1230
|
-
const clientIp = req.socket.remoteAddress ?? "unknown";
|
|
1231
|
-
if (!webhookAuthRateLimiter.check(clientIp, WEBHOOK_AUTH_RATE_LIMIT_SCOPE).allowed) {
|
|
1232
|
-
res.writeHead(429);
|
|
1233
|
-
res.end("Too Many Requests");
|
|
1234
|
-
return;
|
|
1235
|
-
}
|
|
1236
|
-
try {
|
|
1237
|
-
const headers = validateWebhookHeaders({
|
|
1238
|
-
req,
|
|
1239
|
-
res,
|
|
1240
|
-
isBackendAllowed
|
|
1241
|
-
});
|
|
1242
|
-
if (!headers) return;
|
|
1243
|
-
const body = await readBody(req, maxBodyBytes);
|
|
1244
|
-
if (!verifyWebhookSignature({
|
|
1245
|
-
headers,
|
|
1246
|
-
body,
|
|
1247
|
-
secret,
|
|
1248
|
-
res,
|
|
1249
|
-
clientIp,
|
|
1250
|
-
authRateLimiter: webhookAuthRateLimiter
|
|
1251
|
-
})) return;
|
|
1252
|
-
const decoded = decodeWebhookCreateMessage({
|
|
1253
|
-
body,
|
|
1254
|
-
res
|
|
1255
|
-
});
|
|
1256
|
-
if (decoded.kind === "invalid") return;
|
|
1257
|
-
if (decoded.kind === "ignore") {
|
|
1258
|
-
writeJsonResponse(res, 200);
|
|
1219
|
+
const server = createServer((req, res) => {
|
|
1220
|
+
(async () => {
|
|
1221
|
+
if (req.url === HEALTH_PATH) {
|
|
1222
|
+
res.writeHead(200, { "Content-Type": "text/plain" });
|
|
1223
|
+
res.end("ok");
|
|
1259
1224
|
return;
|
|
1260
1225
|
}
|
|
1261
|
-
|
|
1262
|
-
|
|
1226
|
+
if (req.url !== path || req.method !== "POST") {
|
|
1227
|
+
res.writeHead(404);
|
|
1228
|
+
res.end();
|
|
1229
|
+
return;
|
|
1230
|
+
}
|
|
1231
|
+
const clientIp = req.socket.remoteAddress ?? "unknown";
|
|
1232
|
+
if (!webhookAuthRateLimiter.check(clientIp, WEBHOOK_AUTH_RATE_LIMIT_SCOPE).allowed) {
|
|
1233
|
+
res.writeHead(429);
|
|
1234
|
+
res.end("Too Many Requests");
|
|
1235
|
+
return;
|
|
1236
|
+
}
|
|
1237
|
+
try {
|
|
1238
|
+
const headers = validateWebhookHeaders({
|
|
1239
|
+
req,
|
|
1240
|
+
res,
|
|
1241
|
+
isBackendAllowed
|
|
1242
|
+
});
|
|
1243
|
+
if (!headers) return;
|
|
1244
|
+
const body = await readBody(req, maxBodyBytes);
|
|
1245
|
+
if (!verifyWebhookSignature({
|
|
1246
|
+
headers,
|
|
1247
|
+
body,
|
|
1248
|
+
secret,
|
|
1249
|
+
res,
|
|
1250
|
+
clientIp,
|
|
1251
|
+
authRateLimiter: webhookAuthRateLimiter
|
|
1252
|
+
})) return;
|
|
1253
|
+
const decoded = decodeWebhookCreateMessage({
|
|
1254
|
+
body,
|
|
1255
|
+
res
|
|
1256
|
+
});
|
|
1257
|
+
if (decoded.kind === "invalid") return;
|
|
1258
|
+
if (decoded.kind === "ignore") {
|
|
1259
|
+
writeJsonResponse(res, 200);
|
|
1260
|
+
return;
|
|
1261
|
+
}
|
|
1262
|
+
const message = decoded.message;
|
|
1263
|
+
if (processMessage) {
|
|
1264
|
+
writeJsonResponse(res, 200);
|
|
1265
|
+
try {
|
|
1266
|
+
await processMessage(message);
|
|
1267
|
+
} catch (err) {
|
|
1268
|
+
onError?.(err instanceof Error ? err : new Error(formatError(err)));
|
|
1269
|
+
}
|
|
1270
|
+
return;
|
|
1271
|
+
}
|
|
1272
|
+
if (shouldProcessMessage) {
|
|
1273
|
+
if (!await shouldProcessMessage(message)) {
|
|
1274
|
+
writeJsonResponse(res, 200);
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1263
1278
|
writeJsonResponse(res, 200);
|
|
1264
1279
|
try {
|
|
1265
|
-
await
|
|
1280
|
+
await onMessage(message);
|
|
1266
1281
|
} catch (err) {
|
|
1267
1282
|
onError?.(err instanceof Error ? err : new Error(formatError(err)));
|
|
1268
1283
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
if (!await shouldProcessMessage(message)) {
|
|
1273
|
-
writeJsonResponse(res, 200);
|
|
1284
|
+
} catch (err) {
|
|
1285
|
+
if (isRequestBodyLimitError(err, "PAYLOAD_TOO_LARGE")) {
|
|
1286
|
+
writeWebhookError(res, 413, WEBHOOK_ERRORS.payloadTooLarge);
|
|
1274
1287
|
return;
|
|
1275
1288
|
}
|
|
1289
|
+
if (isRequestBodyLimitError(err, "REQUEST_BODY_TIMEOUT")) {
|
|
1290
|
+
writeWebhookError(res, 408, requestBodyErrorToText("REQUEST_BODY_TIMEOUT"));
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
const error = err instanceof Error ? err : new Error(formatError(err));
|
|
1294
|
+
onError?.(error);
|
|
1295
|
+
writeWebhookError(res, 500, WEBHOOK_ERRORS.internalServerError);
|
|
1276
1296
|
}
|
|
1277
|
-
|
|
1278
|
-
try {
|
|
1279
|
-
await onMessage(message);
|
|
1280
|
-
} catch (err) {
|
|
1281
|
-
onError?.(err instanceof Error ? err : new Error(formatError(err)));
|
|
1282
|
-
}
|
|
1283
|
-
} catch (err) {
|
|
1284
|
-
if (isRequestBodyLimitError(err, "PAYLOAD_TOO_LARGE")) {
|
|
1285
|
-
writeWebhookError(res, 413, WEBHOOK_ERRORS.payloadTooLarge);
|
|
1286
|
-
return;
|
|
1287
|
-
}
|
|
1288
|
-
if (isRequestBodyLimitError(err, "REQUEST_BODY_TIMEOUT")) {
|
|
1289
|
-
writeWebhookError(res, 408, requestBodyErrorToText("REQUEST_BODY_TIMEOUT"));
|
|
1290
|
-
return;
|
|
1291
|
-
}
|
|
1292
|
-
const error = err instanceof Error ? err : new Error(formatError(err));
|
|
1293
|
-
onError?.(error);
|
|
1294
|
-
writeWebhookError(res, 500, WEBHOOK_ERRORS.internalServerError);
|
|
1295
|
-
}
|
|
1297
|
+
})();
|
|
1296
1298
|
});
|
|
1297
1299
|
const start = () => {
|
|
1298
1300
|
return new Promise((resolve) => {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as nextcloudTalkPlugin } from "./channel-
|
|
1
|
+
import { t as nextcloudTalkPlugin } from "./channel-5flc23d2.js";
|
|
2
2
|
export { nextcloudTalkPlugin };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/nextcloud-talk",
|
|
3
|
-
"version": "2026.5.31-beta.
|
|
3
|
+
"version": "2026.5.31-beta.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/nextcloud-talk",
|
|
9
|
-
"version": "2026.5.31-beta.
|
|
9
|
+
"version": "2026.5.31-beta.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"zod": "4.4.3"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"openclaw": ">=2026.5.31-beta.
|
|
14
|
+
"openclaw": ">=2026.5.31-beta.4"
|
|
15
15
|
},
|
|
16
16
|
"peerDependenciesMeta": {
|
|
17
17
|
"openclaw": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/nextcloud-talk",
|
|
3
|
-
"version": "2026.5.31-beta.
|
|
3
|
+
"version": "2026.5.31-beta.4",
|
|
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.5.31-beta.
|
|
11
|
+
"openclaw": ">=2026.5.31-beta.4"
|
|
12
12
|
},
|
|
13
13
|
"peerDependenciesMeta": {
|
|
14
14
|
"openclaw": {
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"minHostVersion": ">=2026.4.10"
|
|
41
41
|
},
|
|
42
42
|
"compat": {
|
|
43
|
-
"pluginApi": ">=2026.5.31-beta.
|
|
43
|
+
"pluginApi": ">=2026.5.31-beta.4"
|
|
44
44
|
},
|
|
45
45
|
"build": {
|
|
46
|
-
"openclawVersion": "2026.5.31-beta.
|
|
46
|
+
"openclawVersion": "2026.5.31-beta.4"
|
|
47
47
|
},
|
|
48
48
|
"release": {
|
|
49
49
|
"publishToClawHub": true,
|