@openclaw/nextcloud-talk 2026.10.10 → 2026.11.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.
- package/dist/.setup/api-BF9Pu6Yv.mjs +3 -0
- package/dist/.setup/{channel-D9tHRtkv.mjs → channel-AgVv-cc1.mjs} +65 -34
- package/dist/.setup/{doctor-contract-CkWQa5uZ.mjs → doctor-contract-DwH950tH.mjs} +12 -6
- package/dist/.setup/{runtime-api-DSz4xBAm.mjs → runtime-api-DVkVOUSo.mjs} +2 -1
- package/dist/.setup/secret-contract-Be0kL8Gz.mjs +20 -0
- package/dist/.setup/secret-contract-api-Crkkicb7.mjs +3 -0
- package/dist/api.js +2 -1
- package/dist/channel-plugin-api.js +2 -1
- package/dist/configured-state.js +4 -6
- package/dist/doctor-contract-api.js +2 -1
- package/dist/index.js +2 -1
- package/dist/runtime-api.js +2 -1
- package/dist/secret-contract-api.js +2 -1
- package/dist/setup-entry.js +4 -3
- package/package.json +4 -4
- package/dist/.setup/api-BgnUYkO3.mjs +0 -2
- package/dist/.setup/secret-contract-BHyPrmz3.mjs +0 -14
- package/dist/.setup/secret-contract-api-CKCDZ3m8.mjs +0 -2
- package/dist/.source-module-urls/3332e832383d54fca83a3cfe8961ecdecf361c1eec0972c99f00a876d9481d98.json +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as __exportAll, n as legacyConfigRules, o as __reExport, r as normalizeCompatibilityConfig } from "./doctor-contract-
|
|
1
|
+
import { a as __exportAll, n as legacyConfigRules, o as __reExport, r as normalizeCompatibilityConfig } from "./doctor-contract-DwH950tH.mjs";
|
|
2
2
|
import { listNextcloudTalkAccountIds, mergeNextcloudTalkAccountConfig, resolveDefaultNextcloudTalkAccountId } from "../configured-state.js";
|
|
3
|
-
import { a as logInboundDrop, c as warnMissingProviderGroupPolicyFallbackOnce, i as fetchWithSsrFGuard, l as getNextcloudTalkRuntime, n as createChannelPairingController, o as resolveAllowlistProviderRuntimeGroupPolicy, r as deliverFormattedTextWithAttachments, s as resolveDefaultGroupPolicy, t as GROUP_POLICY_BLOCKED_LABEL, u as getOptionalNextcloudTalkRuntime } from "./runtime-api-
|
|
4
|
-
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-
|
|
3
|
+
import { a as logInboundDrop, c as warnMissingProviderGroupPolicyFallbackOnce, i as fetchWithSsrFGuard, l as getNextcloudTalkRuntime, n as createChannelPairingController, o as resolveAllowlistProviderRuntimeGroupPolicy, r as deliverFormattedTextWithAttachments, s as resolveDefaultGroupPolicy, t as GROUP_POLICY_BLOCKED_LABEL, u as getOptionalNextcloudTalkRuntime } from "./runtime-api-DVkVOUSo.mjs";
|
|
4
|
+
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-Be0kL8Gz.mjs";
|
|
5
5
|
import { describeWebhookAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
6
6
|
import { buildChannelOutboundSessionRoute, createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
7
7
|
import { createLoggedPairingApprovalNotifier, createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
|
|
@@ -52,7 +52,7 @@ import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
|
|
|
52
52
|
import { applyAccountNameToChannelSection, baseUrlTextInput, createPromptParsedAllowFromForAccount, createSetupTranslator, createStandardChannelSetupStatus, defineTokenCredential, formatDocsLink, patchScopedAccountConfig, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
53
53
|
import { createSetupInputPresenceValidator, createSetupTranslator as createSetupTranslator$1, mergeAllowFromEntries } from "openclaw/plugin-sdk/setup-runtime";
|
|
54
54
|
import { formatDocsLink as formatDocsLink$1 } from "openclaw/plugin-sdk/setup-tools";
|
|
55
|
-
|
|
55
|
+
//#region extensions/nextcloud-talk/src/api-credentials.ts
|
|
56
56
|
function resolveNextcloudTalkApiCredentialsResult(params) {
|
|
57
57
|
const apiUser = params.apiUser?.trim();
|
|
58
58
|
if (!apiUser) return { status: "missing" };
|
|
@@ -84,7 +84,8 @@ function resolveNextcloudTalkApiCredentials(params) {
|
|
|
84
84
|
const result = resolveNextcloudTalkApiCredentialsResult(params);
|
|
85
85
|
return result.status === "available" ? result.value : void 0;
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
//#endregion
|
|
88
|
+
//#region extensions/nextcloud-talk/src/accounts.ts
|
|
88
89
|
function resolveNextcloudTalkSecret(accountId, merged) {
|
|
89
90
|
const configuredSecret = resolveSecretInputString({
|
|
90
91
|
value: merged.botSecret,
|
|
@@ -177,7 +178,8 @@ function inspectNextcloudTalkAccount(params) {
|
|
|
177
178
|
function isNextcloudTalkAccountConfigured(account) {
|
|
178
179
|
return Boolean(account.tokenStatus !== "missing" && account.baseUrl?.trim());
|
|
179
180
|
}
|
|
180
|
-
|
|
181
|
+
//#endregion
|
|
182
|
+
//#region extensions/nextcloud-talk/src/approval-auth.ts
|
|
181
183
|
function normalizeNextcloudTalkApproverId(value) {
|
|
182
184
|
return normalizeOptionalLowercaseString(String(value).trim().replace(/^(nextcloud-talk|nc-talk|nc):/i, ""));
|
|
183
185
|
}
|
|
@@ -191,7 +193,8 @@ const nextcloudTalkApprovalAuth = createChannelApprovalAuth({
|
|
|
191
193
|
},
|
|
192
194
|
normalizeApprover: normalizeNextcloudTalkApproverId
|
|
193
195
|
}).approvalAuth;
|
|
194
|
-
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region extensions/nextcloud-talk/src/guarded-response.ts
|
|
195
198
|
async function readNextcloudTalkErrorBody(response, ...credentials) {
|
|
196
199
|
try {
|
|
197
200
|
let body = await readProviderTextResponse(response, "Nextcloud Talk error", {
|
|
@@ -204,7 +207,8 @@ async function readNextcloudTalkErrorBody(response, ...credentials) {
|
|
|
204
207
|
return "";
|
|
205
208
|
}
|
|
206
209
|
}
|
|
207
|
-
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region extensions/nextcloud-talk/src/signature.ts
|
|
208
212
|
const SIGNATURE_HEADER = "x-nextcloud-talk-signature";
|
|
209
213
|
const RANDOM_HEADER = "x-nextcloud-talk-random";
|
|
210
214
|
const BACKEND_HEADER = "x-nextcloud-talk-backend";
|
|
@@ -241,7 +245,8 @@ function generateNextcloudTalkSignature(params) {
|
|
|
241
245
|
signature: createHmac("sha256", secret).update(random + body).digest("hex")
|
|
242
246
|
};
|
|
243
247
|
}
|
|
244
|
-
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region extensions/nextcloud-talk/src/bot-preflight.ts
|
|
245
250
|
const BOT_FEATURE_RESPONSE = 2;
|
|
246
251
|
function normalizeUrlForMatch(value) {
|
|
247
252
|
const trimmed = value?.trim() ?? "";
|
|
@@ -342,7 +347,8 @@ async function probeNextcloudTalkBotResponseFeature(params) {
|
|
|
342
347
|
};
|
|
343
348
|
}
|
|
344
349
|
}
|
|
345
|
-
|
|
350
|
+
//#endregion
|
|
351
|
+
//#region extensions/nextcloud-talk/src/channel.adapters.ts
|
|
346
352
|
const nextcloudTalkConfigAdapter = createScopedChannelConfigAdapter({
|
|
347
353
|
sectionKey: "nextcloud-talk",
|
|
348
354
|
listAccountIds: listNextcloudTalkAccountIds,
|
|
@@ -382,7 +388,8 @@ const nextcloudTalkPairingTextAdapter = {
|
|
|
382
388
|
message: "OpenClaw: your access has been approved.",
|
|
383
389
|
normalizeAllowEntry: createPairingPrefixStripper(/^(nextcloud-talk|nc-talk|nc):/i, (entry) => normalizeLowercaseStringOrEmpty(entry))
|
|
384
390
|
};
|
|
385
|
-
|
|
391
|
+
//#endregion
|
|
392
|
+
//#region extensions/nextcloud-talk/src/config-schema.ts
|
|
386
393
|
const NextcloudTalkRoomSchema = buildGroupEntrySchema({ allowFrom: z.array(z.string()).optional() }).omit({ toolsBySender: true });
|
|
387
394
|
const NextcloudTalkNetworkSchema = z.object({
|
|
388
395
|
/** Dangerous opt-in for self-hosted Nextcloud Talk on trusted private/internal hosts. */
|
|
@@ -426,7 +433,8 @@ const NextcloudTalkConfigSchema = buildMultiAccountChannelSchema(NextcloudTalkAc
|
|
|
426
433
|
});
|
|
427
434
|
}
|
|
428
435
|
});
|
|
429
|
-
|
|
436
|
+
//#endregion
|
|
437
|
+
//#region src/gateway/gateway-http-route-contracts.ts
|
|
430
438
|
const GATEWAY_PROBE_ROUTES = /* @__PURE__ */ new Map([
|
|
431
439
|
["/health", "live"],
|
|
432
440
|
["/healthz", "live"],
|
|
@@ -442,7 +450,8 @@ function classifyGatewayProbePath(pathname) {
|
|
|
442
450
|
}
|
|
443
451
|
return "outside";
|
|
444
452
|
}
|
|
445
|
-
|
|
453
|
+
//#endregion
|
|
454
|
+
//#region packages/normalization-core/src/string-coerce.ts
|
|
446
455
|
/** Trims string input and returns null for non-strings or empty strings. */
|
|
447
456
|
function normalizeNullableString(value) {
|
|
448
457
|
if (typeof value !== "string") return null;
|
|
@@ -461,11 +470,13 @@ function normalizeOptionalLowercaseString$1(value) {
|
|
|
461
470
|
function normalizeLowercaseStringOrEmpty$1(value) {
|
|
462
471
|
return normalizeOptionalLowercaseString$1(value) ?? "";
|
|
463
472
|
}
|
|
464
|
-
|
|
473
|
+
//#endregion
|
|
474
|
+
//#region src/plugins/http-path-prefix.ts
|
|
465
475
|
function prefixMatchPath(pathname, prefix) {
|
|
466
476
|
return pathname === prefix || pathname.startsWith(`${prefix}/`) || pathname.startsWith(`${prefix}%`);
|
|
467
477
|
}
|
|
468
|
-
|
|
478
|
+
//#endregion
|
|
479
|
+
//#region src/gateway/security-path.ts
|
|
469
480
|
const MAX_PATH_DECODE_PASSES = 32;
|
|
470
481
|
function normalizePathSeparators(pathname) {
|
|
471
482
|
const collapsed = pathname.replace(/\/{2,}/g, "/");
|
|
@@ -518,7 +529,8 @@ function canonicalizePathForSecurity(pathname) {
|
|
|
518
529
|
};
|
|
519
530
|
}
|
|
520
531
|
const PROTECTED_PLUGIN_ROUTE_PREFIXES = ["/api/channels"];
|
|
521
|
-
|
|
532
|
+
//#endregion
|
|
533
|
+
//#region src/gateway/server/plugins-http/path-context.ts
|
|
522
534
|
function normalizeProtectedPrefix(prefix) {
|
|
523
535
|
const collapsed = normalizeLowercaseStringOrEmpty$1(prefix).replace(/\/{2,}/g, "/");
|
|
524
536
|
if (collapsed.length <= 1) return collapsed || "/";
|
|
@@ -544,7 +556,8 @@ function resolvePluginRoutePathContext(pathname) {
|
|
|
544
556
|
rawNormalizedPath: canonical.rawNormalizedPath
|
|
545
557
|
};
|
|
546
558
|
}
|
|
547
|
-
|
|
559
|
+
//#endregion
|
|
560
|
+
//#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/gateway-config-runtime
|
|
548
561
|
var gateway_config_runtime_exports = /* @__PURE__ */ __exportAll({
|
|
549
562
|
classifyGatewayProbePath: () => classifyGatewayProbePath,
|
|
550
563
|
isProtectedPluginRoutePathFromContext: () => isProtectedPluginRoutePathFromContext,
|
|
@@ -552,7 +565,8 @@ var gateway_config_runtime_exports = /* @__PURE__ */ __exportAll({
|
|
|
552
565
|
});
|
|
553
566
|
import * as import_openclaw_plugin_sdk_gateway_config_runtime from "openclaw/plugin-sdk/gateway-config-runtime";
|
|
554
567
|
__reExport(gateway_config_runtime_exports, import_openclaw_plugin_sdk_gateway_config_runtime);
|
|
555
|
-
|
|
568
|
+
//#endregion
|
|
569
|
+
//#region extensions/nextcloud-talk/src/webhook-route.ts
|
|
556
570
|
const DEFAULT_NEXTCLOUD_TALK_WEBHOOK_PATH = "/nextcloud-talk-webhook";
|
|
557
571
|
function resolveNextcloudTalkLegacyWebhook(config) {
|
|
558
572
|
const listener = config.legacyWebhook;
|
|
@@ -568,7 +582,8 @@ function describeNextcloudTalkWebhookRouteConflict(path, gatewayPort) {
|
|
|
568
582
|
if (!reason) return;
|
|
569
583
|
return `Webhook path "${path}" ${reason} and cannot receive Nextcloud callbacks on the Gateway port. Set webhookPath to "${DEFAULT_NEXTCLOUD_TALK_WEBHOOK_PATH}" and update the Nextcloud bot callback and reverse-proxy upstream to Gateway port ${gatewayPort}${DEFAULT_NEXTCLOUD_TALK_WEBHOOK_PATH}.`;
|
|
570
584
|
}
|
|
571
|
-
|
|
585
|
+
//#endregion
|
|
586
|
+
//#region extensions/nextcloud-talk/src/doctor.ts
|
|
572
587
|
function sanitizeLegacyReplaySegment(value) {
|
|
573
588
|
const trimmed = value.trim();
|
|
574
589
|
if (!trimmed) return "default";
|
|
@@ -631,7 +646,8 @@ const nextcloudTalkDoctor = {
|
|
|
631
646
|
};
|
|
632
647
|
}
|
|
633
648
|
};
|
|
634
|
-
|
|
649
|
+
//#endregion
|
|
650
|
+
//#region extensions/nextcloud-talk/src/policy.ts
|
|
635
651
|
function normalizeNextcloudTalkAllowEntry(raw) {
|
|
636
652
|
return raw.trim().replace(/^(nextcloud-talk|nc-talk|nc):/i, "").toLowerCase();
|
|
637
653
|
}
|
|
@@ -710,7 +726,8 @@ function resolveNextcloudTalkGroupRequireMention(params) {
|
|
|
710
726
|
path: exactPath
|
|
711
727
|
});
|
|
712
728
|
}
|
|
713
|
-
|
|
729
|
+
//#endregion
|
|
730
|
+
//#region extensions/nextcloud-talk/src/room-info.ts
|
|
714
731
|
const ROOM_CACHE_TTL_MS = 3e5;
|
|
715
732
|
const ROOM_CACHE_ERROR_TTL_MS = 3e4;
|
|
716
733
|
const ROOM_CACHE_MAX_ENTRIES = 1e3;
|
|
@@ -788,7 +805,8 @@ async function resolveNextcloudTalkRoomKind(params) {
|
|
|
788
805
|
await release();
|
|
789
806
|
}
|
|
790
807
|
}
|
|
791
|
-
|
|
808
|
+
//#endregion
|
|
809
|
+
//#region extensions/nextcloud-talk/src/normalize.ts
|
|
792
810
|
function stripNextcloudTalkTargetPrefix(raw) {
|
|
793
811
|
return raw.trim().replace(/^(nextcloud-talk|nc-talk|nc):/i, "").trim().replace(/^room:/i, "").trim() || void 0;
|
|
794
812
|
}
|
|
@@ -802,7 +820,8 @@ function looksLikeNextcloudTalkTargetId(raw) {
|
|
|
802
820
|
if (/^(nextcloud-talk|nc-talk|nc|room):/i.test(trimmed)) return true;
|
|
803
821
|
return /^[a-z0-9]{8,}$/i.test(trimmed);
|
|
804
822
|
}
|
|
805
|
-
|
|
823
|
+
//#endregion
|
|
824
|
+
//#region extensions/nextcloud-talk/src/send.ts
|
|
806
825
|
const NEXTCLOUD_TALK_ERROR_SNIPPET_MAX_CHARS = 200;
|
|
807
826
|
const NEXTCLOUD_TALK_SEND_TIMEOUT_MS = 3e4;
|
|
808
827
|
/** Collapses and caps an already-redacted error body for display. */
|
|
@@ -948,7 +967,8 @@ async function sendReactionNextcloudTalk(roomToken, messageId, reaction, opts) {
|
|
|
948
967
|
await release();
|
|
949
968
|
}
|
|
950
969
|
}
|
|
951
|
-
|
|
970
|
+
//#endregion
|
|
971
|
+
//#region extensions/nextcloud-talk/src/inbound.ts
|
|
952
972
|
const CHANNEL_ID = "nextcloud-talk";
|
|
953
973
|
function hasAllowEntries(entries) {
|
|
954
974
|
return normalizeNextcloudTalkAllowlist(entries).length > 0;
|
|
@@ -1312,7 +1332,8 @@ async function migrateNextcloudTalkLegacyReplayState(params) {
|
|
|
1312
1332
|
await params.store.clear();
|
|
1313
1333
|
return migrated;
|
|
1314
1334
|
}
|
|
1315
|
-
|
|
1335
|
+
//#endregion
|
|
1336
|
+
//#region extensions/nextcloud-talk/src/monitor.ts
|
|
1316
1337
|
const PREAUTH_WEBHOOK_MAX_BODY_BYTES = 65536;
|
|
1317
1338
|
const NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_HEADER = "x-openclaw-delivery-accepted";
|
|
1318
1339
|
const NEXTCLOUD_TALK_WEBHOOK_ACCEPTED_VALUE = "durable";
|
|
@@ -1534,7 +1555,8 @@ function registerNextcloudTalkWebhook(target) {
|
|
|
1534
1555
|
throw error;
|
|
1535
1556
|
}
|
|
1536
1557
|
}
|
|
1537
|
-
|
|
1558
|
+
//#endregion
|
|
1559
|
+
//#region extensions/nextcloud-talk/src/webhook-spool.ts
|
|
1538
1560
|
const NEXTCLOUD_TALK_INGRESS_POLL_INTERVAL_MS = 500;
|
|
1539
1561
|
function describeIgnoredWebhookEvent(rawEvent) {
|
|
1540
1562
|
const envelope = parseRawObject(rawEvent);
|
|
@@ -1691,7 +1713,8 @@ function createNextcloudTalkWebhookSpool(options) {
|
|
|
1691
1713
|
}
|
|
1692
1714
|
};
|
|
1693
1715
|
}
|
|
1694
|
-
|
|
1716
|
+
//#endregion
|
|
1717
|
+
//#region extensions/nextcloud-talk/src/monitor-runtime.ts
|
|
1695
1718
|
function normalizeOrigin(value) {
|
|
1696
1719
|
return URL.parse(value)?.origin.toLowerCase() ?? null;
|
|
1697
1720
|
}
|
|
@@ -1785,7 +1808,8 @@ async function monitorNextcloudTalkProvider(opts) {
|
|
|
1785
1808
|
if (legacyListener) logger.info(`[nextcloud-talk:${account.accountId}] legacy webhook listener ${legacyListener.host}:${legacyListener.port} forwards to the Gateway route. After verifying the callback or proxy upstream uses the Gateway port, remove the legacyWebhook pin; use legacyWebhook: false to override an inherited endpoint.`);
|
|
1786
1809
|
return { stop };
|
|
1787
1810
|
}
|
|
1788
|
-
|
|
1811
|
+
//#endregion
|
|
1812
|
+
//#region extensions/nextcloud-talk/src/gateway.ts
|
|
1789
1813
|
const nextcloudTalkGatewayAdapter = {
|
|
1790
1814
|
startAccount: async (ctx) => {
|
|
1791
1815
|
const account = ctx.account;
|
|
@@ -1831,7 +1855,8 @@ const nextcloudTalkGatewayAdapter = {
|
|
|
1831
1855
|
};
|
|
1832
1856
|
}
|
|
1833
1857
|
};
|
|
1834
|
-
|
|
1858
|
+
//#endregion
|
|
1859
|
+
//#region extensions/nextcloud-talk/src/message-actions.ts
|
|
1835
1860
|
const providerId = "nextcloud-talk";
|
|
1836
1861
|
function isAccountConfigured(account) {
|
|
1837
1862
|
return Boolean(account.enabled && account.secret?.trim() && account.baseUrl?.trim());
|
|
@@ -1884,7 +1909,8 @@ const nextcloudTalkMessageActions = {
|
|
|
1884
1909
|
throw new Error(`Action ${action} not supported for ${providerId}.`);
|
|
1885
1910
|
}
|
|
1886
1911
|
};
|
|
1887
|
-
|
|
1912
|
+
//#endregion
|
|
1913
|
+
//#region extensions/nextcloud-talk/src/message-adapter.ts
|
|
1888
1914
|
function sendNextcloudTalkMessage(ctx, text = ctx.text) {
|
|
1889
1915
|
return sendMessageNextcloudTalk(ctx.to, text, {
|
|
1890
1916
|
accountId: ctx.accountId ?? void 0,
|
|
@@ -1906,7 +1932,8 @@ const nextcloudTalkMessageAdapter = defineChannelMessageAdapter({
|
|
|
1906
1932
|
media: (ctx) => sendNextcloudTalkMessage(ctx, ctx.mediaUrl ? `${ctx.text}\n\nAttachment: ${ctx.mediaUrl}` : ctx.text)
|
|
1907
1933
|
}
|
|
1908
1934
|
});
|
|
1909
|
-
|
|
1935
|
+
//#endregion
|
|
1936
|
+
//#region extensions/nextcloud-talk/src/session-route.ts
|
|
1910
1937
|
function resolveNextcloudTalkOutboundSessionRoute(params) {
|
|
1911
1938
|
const roomId = stripNextcloudTalkTargetPrefix(params.target);
|
|
1912
1939
|
if (!roomId) return null;
|
|
@@ -1925,7 +1952,8 @@ function resolveNextcloudTalkOutboundSessionRoute(params) {
|
|
|
1925
1952
|
to: `nextcloud-talk:${roomId}`
|
|
1926
1953
|
});
|
|
1927
1954
|
}
|
|
1928
|
-
|
|
1955
|
+
//#endregion
|
|
1956
|
+
//#region extensions/nextcloud-talk/src/setup-core.ts
|
|
1929
1957
|
const t$1 = createSetupTranslator$1();
|
|
1930
1958
|
const channel$1 = "nextcloud-talk";
|
|
1931
1959
|
function normalizeNextcloudTalkBaseUrl(value) {
|
|
@@ -2086,7 +2114,8 @@ const nextcloudTalkSetupContract = defineChannelSetupContract({
|
|
|
2086
2114
|
},
|
|
2087
2115
|
legacyAdapter: nextcloudTalkSetupAdapter
|
|
2088
2116
|
});
|
|
2089
|
-
|
|
2117
|
+
//#endregion
|
|
2118
|
+
//#region extensions/nextcloud-talk/src/setup-surface.ts
|
|
2090
2119
|
const t = createSetupTranslator();
|
|
2091
2120
|
const channel = "nextcloud-talk";
|
|
2092
2121
|
const CONFIGURE_API_FLAG = "__nextcloudTalkConfigureApiCredentials";
|
|
@@ -2214,7 +2243,8 @@ const nextcloudTalkSetupWizard = {
|
|
|
2214
2243
|
dmPolicy: nextcloudTalkDmPolicy,
|
|
2215
2244
|
disable: (cfg) => setSetupChannelEnabled(cfg, channel, false)
|
|
2216
2245
|
};
|
|
2217
|
-
|
|
2246
|
+
//#endregion
|
|
2247
|
+
//#region extensions/nextcloud-talk/src/channel.ts
|
|
2218
2248
|
const meta = {
|
|
2219
2249
|
id: "nextcloud-talk",
|
|
2220
2250
|
label: "Nextcloud Talk",
|
|
@@ -2367,4 +2397,5 @@ const nextcloudTalkPlugin = createChatChannelPlugin({
|
|
|
2367
2397
|
}
|
|
2368
2398
|
}
|
|
2369
2399
|
});
|
|
2400
|
+
//#endregion
|
|
2370
2401
|
export { nextcloudTalkPlugin as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { hasConfiguredNextcloudTalkChannelState, listNextcloudTalkAccountIds, mergeNextcloudTalkAccountConfig } from "../configured-state.js";
|
|
2
|
-
|
|
2
|
+
//#region \0rolldown/runtime.js
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -24,7 +24,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
24
24
|
return to;
|
|
25
25
|
};
|
|
26
26
|
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
27
|
-
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region packages/normalization-core/src/record-coerce.ts
|
|
28
29
|
/** Type guard for non-array object records at browser-safe boundaries. */
|
|
29
30
|
function isRecord(value) {
|
|
30
31
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
@@ -33,7 +34,8 @@ function isRecord(value) {
|
|
|
33
34
|
function asNullableRecord(value) {
|
|
34
35
|
return isRecord(value) ? value : null;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/config/channel-config-normalization.ts
|
|
37
39
|
/** Applies one channel-specific doctor migration to every object-shaped account. */
|
|
38
40
|
function normalizeChannelAccounts(params) {
|
|
39
41
|
const rawAccounts = asNullableRecord(params.entry.accounts);
|
|
@@ -109,7 +111,8 @@ function normalizeChannelConfigEntries(params) {
|
|
|
109
111
|
changes
|
|
110
112
|
};
|
|
111
113
|
}
|
|
112
|
-
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/plugin-sdk/legacy-webhook-listener-migration.ts
|
|
113
116
|
/** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
|
|
114
117
|
function createLegacyWebhookListenerDoctorContract(params) {
|
|
115
118
|
const portKey = params.portKey ?? "webhookPort";
|
|
@@ -179,11 +182,13 @@ function createLegacyWebhookListenerDoctorContract(params) {
|
|
|
179
182
|
}
|
|
180
183
|
};
|
|
181
184
|
}
|
|
182
|
-
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
|
|
183
187
|
var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
|
|
184
188
|
import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
|
|
185
189
|
__reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
|
|
186
|
-
|
|
190
|
+
//#endregion
|
|
191
|
+
//#region extensions/nextcloud-talk/src/doctor-contract.ts
|
|
187
192
|
const webhookContract = createLegacyWebhookListenerDoctorContract({
|
|
188
193
|
channelKey: "nextcloud-talk",
|
|
189
194
|
defaultHost: "0.0.0.0",
|
|
@@ -215,4 +220,5 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
215
220
|
historicalWebhookAccountIds: webhook.historicalWebhookAccountIds
|
|
216
221
|
};
|
|
217
222
|
}
|
|
223
|
+
//#endregion
|
|
218
224
|
export { __exportAll as a, normalizeHistoricalWebhookConfig as i, legacyConfigRules as n, __reExport as o, normalizeCompatibilityConfig as r, historicalWebhookListener as t };
|
|
@@ -4,9 +4,10 @@ import { GROUP_POLICY_BLOCKED_LABEL, resolveAllowlistProviderRuntimeGroupPolicy,
|
|
|
4
4
|
import { deliverFormattedTextWithAttachments } from "openclaw/plugin-sdk/reply-payload";
|
|
5
5
|
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
6
6
|
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
|
|
7
|
-
|
|
7
|
+
//#region extensions/nextcloud-talk/src/runtime.ts
|
|
8
8
|
const { setRuntime: setNextcloudTalkRuntime, getRuntime: getNextcloudTalkRuntime, tryGetRuntime: getOptionalNextcloudTalkRuntime } = createPluginRuntimeStore({
|
|
9
9
|
pluginId: "nextcloud-talk",
|
|
10
10
|
errorMessage: "Nextcloud Talk runtime not initialized"
|
|
11
11
|
});
|
|
12
|
+
//#endregion
|
|
12
13
|
export { logInboundDrop as a, warnMissingProviderGroupPolicyFallbackOnce as c, setNextcloudTalkRuntime as d, fetchWithSsrFGuard as i, getNextcloudTalkRuntime as l, createChannelPairingController as n, resolveAllowlistProviderRuntimeGroupPolicy as o, deliverFormattedTextWithAttachments as r, resolveDefaultGroupPolicy as s, GROUP_POLICY_BLOCKED_LABEL as t, getOptionalNextcloudTalkRuntime as u };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { hasConfiguredNextcloudAccount } from "../configured-state.js";
|
|
2
|
+
import { collectSimpleChannelFieldAssignments, createChannelSecretContract } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
|
|
3
|
+
//#region extensions/nextcloud-talk/src/secret-contract.ts
|
|
4
|
+
const channelSecrets = createChannelSecretContract({
|
|
5
|
+
channelKey: "nextcloud-talk",
|
|
6
|
+
account: ["apiPassword", "botSecret"],
|
|
7
|
+
channel: ["apiPassword", "botSecret"],
|
|
8
|
+
hasImplicitDefaultAccount: ({ context }) => hasConfiguredNextcloudAccount(context.sourceConfig.channels?.["nextcloud-talk"], context.env),
|
|
9
|
+
collect(params) {
|
|
10
|
+
for (const field of ["botSecret", "apiPassword"]) collectSimpleChannelFieldAssignments({
|
|
11
|
+
...params,
|
|
12
|
+
field,
|
|
13
|
+
topInactiveReason: `no enabled Nextcloud Talk surface inherits this top-level ${field}.`,
|
|
14
|
+
accountInactiveReason: "Nextcloud Talk account is disabled."
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const { secretTargetRegistryEntries, collectRuntimeConfigAssignments } = channelSecrets;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
|
package/dist/api.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as nextcloudTalkPlugin } from "./.setup/channel-AgVv-cc1.mjs";
|
|
2
|
+
export { nextcloudTalkPlugin };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as nextcloudTalkPlugin } from "./.setup/channel-AgVv-cc1.mjs";
|
|
2
|
+
export { nextcloudTalkPlugin };
|
package/dist/configured-state.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, hasConfiguredAccountValue, normalizeAccountId } from "openclaw/plugin-sdk/account-core";
|
|
2
|
-
|
|
2
|
+
//#region extensions/nextcloud-talk/configured-state.ts
|
|
3
3
|
const { listAccountIds: listNextcloudTalkAccountIds, resolveDefaultAccountId: resolveDefaultNextcloudTalkAccountId, resolveAccountConfig: mergeNextcloudTalkAccountConfig } = createAccountListHelpers("nextcloud-talk", {
|
|
4
4
|
normalizeAccountId,
|
|
5
5
|
omitKeys: ["defaultAccount"],
|
|
6
|
-
hasImplicitDefaultAccount: (cfg) =>
|
|
7
|
-
const channel = cfg.channels?.["nextcloud-talk"];
|
|
8
|
-
return Boolean(channel?.baseUrl?.trim() && (hasConfiguredAccountValue(channel.botSecret) || channel.botSecretFile?.trim() || process.env.NEXTCLOUD_TALK_BOT_SECRET?.trim()));
|
|
9
|
-
}
|
|
6
|
+
hasImplicitDefaultAccount: (cfg) => hasConfiguredNextcloudAccount(cfg.channels?.["nextcloud-talk"], process.env)
|
|
10
7
|
});
|
|
11
8
|
function hasConfiguredNextcloudAccount(account, env) {
|
|
12
9
|
return Boolean(account?.baseUrl?.trim() && (hasConfiguredAccountValue(account.botSecret) || hasConfiguredAccountValue(account.botSecretFile) || hasConfiguredAccountValue(env.NEXTCLOUD_TALK_BOT_SECRET)));
|
|
@@ -20,4 +17,5 @@ function hasConfiguredNextcloudTalkChannelState(params) {
|
|
|
20
17
|
}
|
|
21
18
|
return Object.entries(channel?.accounts ?? {}).some(([accountId, account]) => accountId !== DEFAULT_ACCOUNT_ID && account.enabled !== false && hasConfiguredNextcloudAccount(mergeNextcloudTalkAccountConfig(params.cfg, accountId), {}));
|
|
22
19
|
}
|
|
23
|
-
|
|
20
|
+
//#endregion
|
|
21
|
+
export { hasConfiguredNextcloudAccount, hasConfiguredNextcloudTalkChannelState, listNextcloudTalkAccountIds, mergeNextcloudTalkAccountConfig, resolveDefaultNextcloudTalkAccountId };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { i as normalizeHistoricalWebhookConfig, n as legacyConfigRules, r as normalizeCompatibilityConfig, t as historicalWebhookListener } from "./.setup/doctor-contract-DwH950tH.mjs";
|
|
2
|
+
export { historicalWebhookListener, legacyConfigRules, normalizeCompatibilityConfig, normalizeHistoricalWebhookConfig };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
2
|
-
|
|
2
|
+
//#region extensions/nextcloud-talk/index.ts
|
|
3
3
|
var nextcloud_talk_default = defineBundledChannelEntry({
|
|
4
4
|
id: "nextcloud-talk",
|
|
5
5
|
name: "Nextcloud Talk",
|
|
@@ -18,4 +18,5 @@ var nextcloud_talk_default = defineBundledChannelEntry({
|
|
|
18
18
|
exportName: "setNextcloudTalkRuntime"
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
|
+
//#endregion
|
|
21
22
|
export { nextcloud_talk_default as default };
|
package/dist/runtime-api.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { a as logInboundDrop, c as warnMissingProviderGroupPolicyFallbackOnce, d as setNextcloudTalkRuntime, i as fetchWithSsrFGuard, n as createChannelPairingController, o as resolveAllowlistProviderRuntimeGroupPolicy, r as deliverFormattedTextWithAttachments, s as resolveDefaultGroupPolicy, t as GROUP_POLICY_BLOCKED_LABEL } from "./.setup/runtime-api-DVkVOUSo.mjs";
|
|
2
|
+
export { GROUP_POLICY_BLOCKED_LABEL, createChannelPairingController, deliverFormattedTextWithAttachments, fetchWithSsrFGuard, logInboundDrop, resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, setNextcloudTalkRuntime, warnMissingProviderGroupPolicyFallbackOnce };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./.setup/secret-contract-Be0kL8Gz.mjs";
|
|
2
|
+
export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
|
package/dist/setup-entry.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
|
|
3
|
+
//#region extensions/nextcloud-talk/setup-entry.ts
|
|
4
4
|
var setup_entry_default = defineBundledChannelSetupEntry({
|
|
5
5
|
importMetaUrl: import.meta.url,
|
|
6
6
|
plugin: {
|
|
7
|
-
specifier: fileURLToPath(new URL(".setup/api-
|
|
7
|
+
specifier: fileURLToPath(new URL(".setup/api-BF9Pu6Yv.mjs", import.meta.url).href),
|
|
8
8
|
exportName: "nextcloudTalkPlugin"
|
|
9
9
|
},
|
|
10
10
|
secrets: {
|
|
11
|
-
specifier: fileURLToPath(new URL(".setup/secret-contract-api-
|
|
11
|
+
specifier: fileURLToPath(new URL(".setup/secret-contract-api-Crkkicb7.mjs", import.meta.url).href),
|
|
12
12
|
exportName: "channelSecrets"
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
|
+
//#endregion
|
|
15
16
|
export { setup_entry_default as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/nextcloud-talk",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.11.2",
|
|
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.
|
|
11
|
+
"openclaw": ">=2026.11.2"
|
|
12
12
|
},
|
|
13
13
|
"peerDependenciesMeta": {
|
|
14
14
|
"openclaw": {
|
|
@@ -130,10 +130,10 @@
|
|
|
130
130
|
"minHostVersion": ">=2026.4.10"
|
|
131
131
|
},
|
|
132
132
|
"compat": {
|
|
133
|
-
"pluginApi": ">=2026.
|
|
133
|
+
"pluginApi": ">=2026.11.2"
|
|
134
134
|
},
|
|
135
135
|
"build": {
|
|
136
|
-
"openclawVersion": "2026.
|
|
136
|
+
"openclawVersion": "2026.11.2"
|
|
137
137
|
},
|
|
138
138
|
"release": {
|
|
139
139
|
"publishToClawHub": true,
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createSimpleChannelSecretContract } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
|
|
2
|
-
// extensions/nextcloud-talk/src/secret-contract.ts
|
|
3
|
-
const channelSecrets = createSimpleChannelSecretContract({
|
|
4
|
-
channelKey: "nextcloud-talk",
|
|
5
|
-
label: "Nextcloud Talk",
|
|
6
|
-
accountFields: ["apiPassword", "botSecret"],
|
|
7
|
-
channelFields: ["apiPassword", "botSecret"],
|
|
8
|
-
mode: {
|
|
9
|
-
kind: "surface-inheritance",
|
|
10
|
-
collectionFields: ["botSecret", "apiPassword"]
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
const { secretTargetRegistryEntries, collectRuntimeConfigAssignments } = channelSecrets;
|
|
14
|
-
export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"entries":[{"output":"api.js","source":"extensions/nextcloud-talk/api.ts"},{"output":"channel-plugin-api.js","source":"extensions/nextcloud-talk/channel-plugin-api.ts"},{"output":"configured-state.js","source":"extensions/nextcloud-talk/configured-state.ts"},{"output":"doctor-contract-api.js","source":"extensions/nextcloud-talk/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/nextcloud-talk/index.ts"},{"output":"runtime-api.js","source":"extensions/nextcloud-talk/runtime-api.ts"},{"output":"secret-contract-api.js","source":"extensions/nextcloud-talk/secret-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/nextcloud-talk/setup-entry.ts"}],"chunks":[{"output":".setup/api-BgnUYkO3.mjs","sha256":"945cc048854654a4ada1853cc1aed051db4abccd2daabf3096f074f9e81fd970","facadeSource":"extensions/nextcloud-talk/api.ts","sources":[]},{"output":".setup/channel-D9tHRtkv.mjs","sha256":"899d4001d61c145d8eb353d4b5e91260c9c3ef8f1f4cc885c76486dd6e73d5d0","facadeSource":null,"sources":["extensions/nextcloud-talk/src/accounts.ts","extensions/nextcloud-talk/src/api-credentials.ts","extensions/nextcloud-talk/src/approval-auth.ts","extensions/nextcloud-talk/src/bot-preflight.ts","extensions/nextcloud-talk/src/channel.adapters.ts","extensions/nextcloud-talk/src/channel.ts","extensions/nextcloud-talk/src/config-schema.ts","extensions/nextcloud-talk/src/doctor.ts","extensions/nextcloud-talk/src/gateway.ts","extensions/nextcloud-talk/src/guarded-response.ts","extensions/nextcloud-talk/src/inbound.ts","extensions/nextcloud-talk/src/message-actions.ts","extensions/nextcloud-talk/src/message-adapter.ts","extensions/nextcloud-talk/src/monitor-runtime.ts","extensions/nextcloud-talk/src/monitor.ts","extensions/nextcloud-talk/src/normalize.ts","extensions/nextcloud-talk/src/policy.ts","extensions/nextcloud-talk/src/replay-migration-contract.ts","extensions/nextcloud-talk/src/room-info.ts","extensions/nextcloud-talk/src/send.ts","extensions/nextcloud-talk/src/session-route.ts","extensions/nextcloud-talk/src/setup-core.ts","extensions/nextcloud-talk/src/setup-surface.ts","extensions/nextcloud-talk/src/signature.ts","extensions/nextcloud-talk/src/webhook-route.ts","extensions/nextcloud-talk/src/webhook-spool-state.ts","extensions/nextcloud-talk/src/webhook-spool.ts","packages/normalization-core/src/string-coerce.ts","src/gateway/gateway-http-route-contracts.ts","src/gateway/security-path.ts","src/gateway/server/plugins-http/path-context.ts","src/plugins/http-path-prefix.ts"]},{"output":".setup/doctor-contract-CkWQa5uZ.mjs","sha256":"b580887eb445ab10c67ee1a057982cd3be79d68e2c3440b3f2a46f2a8852c55b","facadeSource":null,"sources":["extensions/nextcloud-talk/src/doctor-contract.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":".setup/runtime-api-DSz4xBAm.mjs","sha256":"79e7b7e7515c5d1f25e7b68e5414e33205303525bab418b7c6dc5e213fd0720c","facadeSource":null,"sources":["extensions/nextcloud-talk/src/runtime.ts"]},{"output":".setup/secret-contract-api-CKCDZ3m8.mjs","sha256":"933a73cbc5f8e153d60c80ea144877ff4103c0c6b5f4d2fb06597a1cb8714297","facadeSource":"extensions/nextcloud-talk/secret-contract-api.ts","sources":[]},{"output":".setup/secret-contract-BHyPrmz3.mjs","sha256":"5f6db1b8c1dca4ba0353e9ab2c801f210de8e341d9d4b766f0dfda338024bd71","facadeSource":null,"sources":["extensions/nextcloud-talk/src/secret-contract.ts"]},{"output":"api.js","sha256":"62e2b17453728f9567dc0394c6ae4b5bba68a906a7f4f63071ad317d2c9d8c5c","facadeSource":"extensions/nextcloud-talk/api.ts","sources":[]},{"output":"channel-plugin-api.js","sha256":"62e2b17453728f9567dc0394c6ae4b5bba68a906a7f4f63071ad317d2c9d8c5c","facadeSource":"extensions/nextcloud-talk/channel-plugin-api.ts","sources":[]},{"output":"configured-state.js","sha256":"6b5a8e74636ef9d9248d993b87f8fc2086b5407fb6bd94e02be183293db99a2d","facadeSource":"extensions/nextcloud-talk/configured-state.ts","sources":["extensions/nextcloud-talk/configured-state.ts"]},{"output":"doctor-contract-api.js","sha256":"71237fb5c510be1302851b9fb7b264dd4e0d0095be206e50ffce4b5890ace54f","facadeSource":"extensions/nextcloud-talk/doctor-contract-api.ts","sources":[]},{"output":"index.js","sha256":"16bcc875626f7dd3bc4c1195210f856deaa9c3757abe5cea2a1d90cb2877cd22","facadeSource":"extensions/nextcloud-talk/index.ts","sources":["extensions/nextcloud-talk/index.ts"]},{"output":"runtime-api.js","sha256":"9dc767e1c55c58a1e7abbefa444b966bd60321a9bd0d23a8707d49dbdd847aee","facadeSource":"extensions/nextcloud-talk/runtime-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"79a0a9fc59d00a3c7d8a9ccdd12ae4d7679ef97821b50bd5e40cbdb0de7a814a","facadeSource":"extensions/nextcloud-talk/secret-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"e8dae8c12575ca86353d6476dd9a685d4befa32fe948d12a69a89f970d1329d8","facadeSource":"extensions/nextcloud-talk/setup-entry.ts","sources":["extensions/nextcloud-talk/setup-entry.ts"]}],"unrenderedSources":["extensions/nextcloud-talk/api.ts","extensions/nextcloud-talk/channel-plugin-api.ts","extensions/nextcloud-talk/config-doctor-api.ts","extensions/nextcloud-talk/doctor-contract-api.ts","extensions/nextcloud-talk/runtime-api.ts","extensions/nextcloud-talk/secret-contract-api.ts","extensions/nextcloud-talk/src/channel-api.ts","extensions/nextcloud-talk/src/send.runtime.ts"]}
|