@openclaw/nextcloud-talk 2026.5.14-beta.1 → 2026.5.16-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.
package/dist/api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as nextcloudTalkPlugin } from "./channel-
|
|
1
|
+
import { t as nextcloudTalkPlugin } from "./channel-CvZn7Hj1.js";
|
|
2
2
|
export { nextcloudTalkPlugin };
|
|
@@ -12,6 +12,7 @@ import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, norm
|
|
|
12
12
|
import { buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
13
13
|
import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
14
14
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
15
|
+
import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
|
|
15
16
|
import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-message";
|
|
16
17
|
import { ssrfPolicyFromPrivateNetworkOptIn, ssrfPolicyFromPrivateNetworkOptIn as ssrfPolicyFromPrivateNetworkOptIn$1 } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
17
18
|
import { readFileSync } from "node:fs";
|
|
@@ -36,8 +37,8 @@ import { WEBHOOK_RATE_LIMIT_DEFAULTS, createAuthRateLimiter, isRequestBodyLimitE
|
|
|
36
37
|
import path from "node:path";
|
|
37
38
|
import { createClaimableDedupe } from "openclaw/plugin-sdk/persistent-dedupe";
|
|
38
39
|
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, buildOutboundBaseSessionKey, normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/routing";
|
|
39
|
-
import { applyAccountNameToChannelSection, createStandardChannelSetupStatus, formatDocsLink, patchScopedAccountConfig, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
40
|
-
import { createSetupInputPresenceValidator, mergeAllowFromEntries, promptParsedAllowFromForAccount, resolveSetupAccountId } from "openclaw/plugin-sdk/setup-runtime";
|
|
40
|
+
import { applyAccountNameToChannelSection, createSetupTranslator, createStandardChannelSetupStatus, formatDocsLink, patchScopedAccountConfig, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
41
|
+
import { createSetupInputPresenceValidator, createSetupTranslator as createSetupTranslator$1, mergeAllowFromEntries, promptParsedAllowFromForAccount, resolveSetupAccountId } from "openclaw/plugin-sdk/setup-runtime";
|
|
41
42
|
import { formatDocsLink as formatDocsLink$1 } from "openclaw/plugin-sdk/setup-tools";
|
|
42
43
|
//#region extensions/nextcloud-talk/src/accounts.ts
|
|
43
44
|
function isTruthyEnvValue(value) {
|
|
@@ -295,7 +296,7 @@ async function probeNextcloudTalkBotResponseFeature(params) {
|
|
|
295
296
|
message: `Nextcloud Talk bot response feature probe failed (${response.status})${body ? `: ${body}` : ""}`
|
|
296
297
|
};
|
|
297
298
|
}
|
|
298
|
-
const payload = await response
|
|
299
|
+
const payload = await readProviderJsonResponse(response, "Nextcloud Talk bot response feature probe failed");
|
|
299
300
|
const bot = (Array.isArray(payload.ocs?.data) ? payload.ocs.data : []).find((entry) => normalizeUrlForMatch(entry.url) === webhookUrl);
|
|
300
301
|
if (!bot) return {
|
|
301
302
|
ok: false,
|
|
@@ -326,7 +327,7 @@ async function probeNextcloudTalkBotResponseFeature(params) {
|
|
|
326
327
|
return {
|
|
327
328
|
ok: false,
|
|
328
329
|
code: "request_failed",
|
|
329
|
-
message: `Nextcloud Talk bot response feature probe failed: ${formatErrorMessage(error)}`
|
|
330
|
+
message: `Nextcloud Talk bot response feature probe failed: ${error instanceof Error ? error.message : formatErrorMessage(error)}`
|
|
330
331
|
};
|
|
331
332
|
}
|
|
332
333
|
}
|
|
@@ -570,7 +571,7 @@ async function resolveNextcloudTalkRoomKind(params) {
|
|
|
570
571
|
runtime?.log?.(`nextcloud-talk: room lookup failed (${response.status}) token=${roomToken}`);
|
|
571
572
|
return;
|
|
572
573
|
}
|
|
573
|
-
const kind = resolveRoomKindFromType(coerceRoomType((await response
|
|
574
|
+
const kind = resolveRoomKindFromType(coerceRoomType((await readProviderJsonResponse(response, "Nextcloud Talk room info failed")).ocs?.data?.type));
|
|
574
575
|
roomCache.set(key, {
|
|
575
576
|
fetchedAt: Date.now(),
|
|
576
577
|
kind
|
|
@@ -1554,6 +1555,7 @@ function resolveNextcloudTalkOutboundSessionRoute(params) {
|
|
|
1554
1555
|
}
|
|
1555
1556
|
//#endregion
|
|
1556
1557
|
//#region extensions/nextcloud-talk/src/setup-core.ts
|
|
1558
|
+
const t$1 = createSetupTranslator$1();
|
|
1557
1559
|
const channel$1 = "nextcloud-talk";
|
|
1558
1560
|
function addWildcardAllowFrom(allowFrom) {
|
|
1559
1561
|
return mergeAllowFromEntries(allowFrom, ["*"]);
|
|
@@ -1611,14 +1613,14 @@ async function promptNextcloudTalkAllowFrom(params) {
|
|
|
1611
1613
|
accountId: params.accountId,
|
|
1612
1614
|
defaultAccountId: params.accountId,
|
|
1613
1615
|
prompter: params.prompter,
|
|
1614
|
-
noteTitle: "
|
|
1616
|
+
noteTitle: t$1("wizard.nextcloudTalk.userIdTitle"),
|
|
1615
1617
|
noteLines: [
|
|
1616
|
-
"
|
|
1617
|
-
"
|
|
1618
|
-
"
|
|
1619
|
-
|
|
1618
|
+
t$1("wizard.nextcloudTalk.userIdHelpAdmin"),
|
|
1619
|
+
t$1("wizard.nextcloudTalk.userIdHelpLogs"),
|
|
1620
|
+
t$1("wizard.nextcloudTalk.userIdHelpLowercase"),
|
|
1621
|
+
t$1("wizard.channels.docs", { link: formatDocsLink$1("/channels/nextcloud-talk", "nextcloud-talk") })
|
|
1620
1622
|
],
|
|
1621
|
-
message: "
|
|
1623
|
+
message: t$1("wizard.nextcloudTalk.allowFromPrompt"),
|
|
1622
1624
|
placeholder: "username",
|
|
1623
1625
|
parseEntries: (raw) => ({ entries: raw.split(/[\n,;]+/g).map(normalizeLowercaseStringOrEmpty).filter(Boolean) }),
|
|
1624
1626
|
getExistingAllowFrom: ({ cfg, accountId }) => resolveNextcloudTalkAccount({
|
|
@@ -1705,6 +1707,7 @@ const nextcloudTalkSetupAdapter = {
|
|
|
1705
1707
|
};
|
|
1706
1708
|
//#endregion
|
|
1707
1709
|
//#region extensions/nextcloud-talk/src/setup-surface.ts
|
|
1710
|
+
const t = createSetupTranslator();
|
|
1708
1711
|
const channel = "nextcloud-talk";
|
|
1709
1712
|
const CONFIGURE_API_FLAG = "__nextcloudTalkConfigureApiCredentials";
|
|
1710
1713
|
const nextcloudTalkSetupWizard = {
|
|
@@ -1712,10 +1715,10 @@ const nextcloudTalkSetupWizard = {
|
|
|
1712
1715
|
stepOrder: "text-first",
|
|
1713
1716
|
status: createStandardChannelSetupStatus({
|
|
1714
1717
|
channelLabel: "Nextcloud Talk",
|
|
1715
|
-
configuredLabel: "
|
|
1716
|
-
unconfiguredLabel: "
|
|
1717
|
-
configuredHint: "
|
|
1718
|
-
unconfiguredHint: "
|
|
1718
|
+
configuredLabel: t("wizard.channels.statusConfigured"),
|
|
1719
|
+
unconfiguredLabel: t("wizard.channels.statusNeedsSetup"),
|
|
1720
|
+
configuredHint: t("wizard.channels.statusConfigured"),
|
|
1721
|
+
unconfiguredHint: t("wizard.channels.statusSelfHostedChat"),
|
|
1719
1722
|
configuredScore: 1,
|
|
1720
1723
|
unconfiguredScore: 5,
|
|
1721
1724
|
resolveConfigured: ({ cfg, accountId }) => {
|
|
@@ -1727,14 +1730,14 @@ const nextcloudTalkSetupWizard = {
|
|
|
1727
1730
|
}
|
|
1728
1731
|
}),
|
|
1729
1732
|
introNote: {
|
|
1730
|
-
title: "
|
|
1733
|
+
title: t("wizard.nextcloudTalk.setupTitle"),
|
|
1731
1734
|
lines: [
|
|
1732
|
-
"
|
|
1733
|
-
"
|
|
1734
|
-
"
|
|
1735
|
-
"
|
|
1736
|
-
"
|
|
1737
|
-
|
|
1735
|
+
t("wizard.nextcloudTalk.helpSsh"),
|
|
1736
|
+
t("wizard.nextcloudTalk.helpInstallCommand"),
|
|
1737
|
+
t("wizard.nextcloudTalk.helpCopySecret"),
|
|
1738
|
+
t("wizard.nextcloudTalk.helpEnableRoom"),
|
|
1739
|
+
t("wizard.nextcloudTalk.helpEnvTip"),
|
|
1740
|
+
t("wizard.channels.docs", { link: formatDocsLink("/channels/nextcloud-talk", "channels/nextcloud-talk") })
|
|
1738
1741
|
],
|
|
1739
1742
|
shouldShow: ({ cfg, accountId }) => {
|
|
1740
1743
|
const account = resolveNextcloudTalkAccount({
|
|
@@ -1751,7 +1754,7 @@ const nextcloudTalkSetupWizard = {
|
|
|
1751
1754
|
});
|
|
1752
1755
|
const hasApiCredentials = Boolean(resolvedAccount.config.apiUser?.trim() && (hasConfiguredSecretInput(resolvedAccount.config.apiPassword) || resolvedAccount.config.apiPasswordFile));
|
|
1753
1756
|
if (!await prompter.confirm({
|
|
1754
|
-
message: "
|
|
1757
|
+
message: t("wizard.nextcloudTalk.configureApiCredentials"),
|
|
1755
1758
|
initialValue: hasApiCredentials
|
|
1756
1759
|
})) return;
|
|
1757
1760
|
return { credentialValues: {
|
|
@@ -1762,11 +1765,11 @@ const nextcloudTalkSetupWizard = {
|
|
|
1762
1765
|
credentials: [{
|
|
1763
1766
|
inputKey: "token",
|
|
1764
1767
|
providerHint: channel,
|
|
1765
|
-
credentialLabel: "
|
|
1768
|
+
credentialLabel: t("wizard.nextcloudTalk.botSecret"),
|
|
1766
1769
|
preferredEnvVar: "NEXTCLOUD_TALK_BOT_SECRET",
|
|
1767
|
-
envPrompt: "
|
|
1768
|
-
keepPrompt: "
|
|
1769
|
-
inputPrompt: "
|
|
1770
|
+
envPrompt: t("wizard.nextcloudTalk.botSecretEnvPrompt"),
|
|
1771
|
+
keepPrompt: t("wizard.nextcloudTalk.botSecretKeep"),
|
|
1772
|
+
inputPrompt: t("wizard.nextcloudTalk.botSecretInput"),
|
|
1770
1773
|
allowEnv: ({ accountId }) => accountId === DEFAULT_ACCOUNT_ID$1,
|
|
1771
1774
|
inspect: ({ cfg, accountId }) => {
|
|
1772
1775
|
const resolvedAccount = resolveNextcloudTalkAccount({
|
|
@@ -1791,11 +1794,11 @@ const nextcloudTalkSetupWizard = {
|
|
|
1791
1794
|
}, {
|
|
1792
1795
|
inputKey: "password",
|
|
1793
1796
|
providerHint: "nextcloud-talk-api",
|
|
1794
|
-
credentialLabel: "
|
|
1797
|
+
credentialLabel: t("wizard.nextcloudTalk.apiPassword"),
|
|
1795
1798
|
preferredEnvVar: "NEXTCLOUD_TALK_API_PASSWORD",
|
|
1796
1799
|
envPrompt: "",
|
|
1797
|
-
keepPrompt: "
|
|
1798
|
-
inputPrompt: "
|
|
1800
|
+
keepPrompt: t("wizard.nextcloudTalk.apiPasswordKeep"),
|
|
1801
|
+
inputPrompt: t("wizard.nextcloudTalk.apiPasswordInput"),
|
|
1799
1802
|
inspect: ({ cfg, accountId }) => {
|
|
1800
1803
|
const resolvedAccount = resolveNextcloudTalkAccount({
|
|
1801
1804
|
cfg,
|
|
@@ -1813,7 +1816,7 @@ const nextcloudTalkSetupWizard = {
|
|
|
1813
1816
|
}],
|
|
1814
1817
|
textInputs: [{
|
|
1815
1818
|
inputKey: "httpUrl",
|
|
1816
|
-
message: "
|
|
1819
|
+
message: t("wizard.nextcloudTalk.instanceUrlPrompt"),
|
|
1817
1820
|
currentValue: ({ cfg, accountId }) => resolveNextcloudTalkAccount({
|
|
1818
1821
|
cfg,
|
|
1819
1822
|
accountId
|
|
@@ -1824,13 +1827,13 @@ const nextcloudTalkSetupWizard = {
|
|
|
1824
1827
|
applySet: async (params) => setNextcloudTalkAccountConfig(params.cfg, params.accountId, { baseUrl: params.value })
|
|
1825
1828
|
}, {
|
|
1826
1829
|
inputKey: "userId",
|
|
1827
|
-
message: "
|
|
1830
|
+
message: t("wizard.nextcloudTalk.apiUserPrompt"),
|
|
1828
1831
|
currentValue: ({ cfg, accountId }) => resolveNextcloudTalkAccount({
|
|
1829
1832
|
cfg,
|
|
1830
1833
|
accountId
|
|
1831
1834
|
}).config.apiUser?.trim() || void 0,
|
|
1832
1835
|
shouldPrompt: ({ credentialValues }) => credentialValues[CONFIGURE_API_FLAG] === "1",
|
|
1833
|
-
validate: ({ value }) => value ? void 0 : "
|
|
1836
|
+
validate: ({ value }) => value ? void 0 : t("common.required"),
|
|
1834
1837
|
applySet: async (params) => setNextcloudTalkAccountConfig(params.cfg, params.accountId, { apiUser: params.value })
|
|
1835
1838
|
}],
|
|
1836
1839
|
dmPolicy: nextcloudTalkDmPolicy,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as nextcloudTalkPlugin } from "./channel-
|
|
1
|
+
import { t as nextcloudTalkPlugin } from "./channel-CvZn7Hj1.js";
|
|
2
2
|
export { nextcloudTalkPlugin };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/nextcloud-talk",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.16-beta.1",
|
|
4
4
|
"description": "OpenClaw Nextcloud Talk channel plugin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"openclaw": "workspace:*"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"openclaw": ">=2026.5.
|
|
15
|
+
"openclaw": ">=2026.5.16-beta.1"
|
|
16
16
|
},
|
|
17
17
|
"peerDependenciesMeta": {
|
|
18
18
|
"openclaw": {
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"minHostVersion": ">=2026.4.10"
|
|
45
45
|
},
|
|
46
46
|
"compat": {
|
|
47
|
-
"pluginApi": ">=2026.5.
|
|
47
|
+
"pluginApi": ">=2026.5.16-beta.1"
|
|
48
48
|
},
|
|
49
49
|
"build": {
|
|
50
|
-
"openclawVersion": "2026.5.
|
|
50
|
+
"openclawVersion": "2026.5.16-beta.1"
|
|
51
51
|
},
|
|
52
52
|
"release": {
|
|
53
53
|
"publishToClawHub": true,
|