@openclaw/discord 2026.9.6 → 2026.9.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/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
- package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
- package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
- package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
- package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
- package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
- package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
- package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
- package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
- package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
- package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
- package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
- package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
- package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
- package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
- package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
- package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
- package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
- package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
- package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
- package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
- package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
- package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
- package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
- package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
- package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
- package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
- package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
- package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
- package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
- package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
- package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
- package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
- package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
- package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
- package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
- package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
- package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
- package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
- package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
- package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
- package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
- package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
- package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
- package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
- package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
- package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
- package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
- package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
- package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
- package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
- package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
- package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
- package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
- package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
- package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
- package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
- package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
- package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
- package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
- package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
- package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
- package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
- package/dist/account-inspect-api.js +1 -1
- package/dist/action-runtime-api.js +1 -1
- package/dist/activities-api.js +1 -1
- package/dist/api.js +18 -18
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +4 -4
- package/dist/index.js +1 -1
- package/dist/runtime-api.js +20 -20
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-audit-contract-api.js +1 -1
- package/dist/setup-entry.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/src/voice/audio-worker.runtime.js +15 -24
- package/dist/subagent-hooks-api.js +3 -4
- package/dist/transcripts-source-api.js +1 -1
- package/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@types/node/package.json +2 -17
- package/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/openclaw.plugin.json +21 -1
- package/package.json +5 -5
- package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
- package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
- package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
- package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
- package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
- package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
- package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
- package/dist/.setup/targets-CvemhN3i.mjs +0 -3
- package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
import { s as resolveDefaultDiscordAccountId } from "./accounts-
|
|
2
|
-
import { n as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-
|
|
3
|
-
import { t as inspectDiscordAccount } from "./account-inspect-
|
|
4
|
-
import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-
|
|
5
|
-
import {
|
|
1
|
+
import { s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
|
|
2
|
+
import { n as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-p8EV179h.mjs";
|
|
3
|
+
import { t as inspectDiscordAccount } from "./account-inspect-De8hOUxG.mjs";
|
|
4
|
+
import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-B3wZ4hN-.mjs";
|
|
5
|
+
import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-CshUGl36.mjs";
|
|
6
|
+
import { n as normalizeCompatibilityConfig } from "./doctor-contract-CvvgwrrG.mjs";
|
|
6
7
|
import { t as isDiscordMutableAllowEntry } from "./security-doctor-nGgPm65L.mjs";
|
|
7
8
|
import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
|
|
8
9
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
|
-
import { asObjectRecord, collectChannelAccountScopes, collectProviderDangerousNameMatchingScopes } from "openclaw/plugin-sdk/runtime-doctor-migrations";
|
|
10
10
|
//#region extensions/discord/src/doctor.ts
|
|
11
11
|
function sanitizeForLog(value) {
|
|
12
12
|
return value.replace(/\p{Cc}+/gu, " ").trim();
|
|
13
13
|
}
|
|
14
|
-
function collectDiscordIdLists(prefix, account) {
|
|
14
|
+
function collectDiscordIdLists(prefix, account, userAllowlistsOnly = false) {
|
|
15
15
|
const refs = [{
|
|
16
16
|
pathLabel: `${prefix}.allowFrom`,
|
|
17
17
|
holder: account,
|
|
18
18
|
key: "allowFrom"
|
|
19
19
|
}];
|
|
20
|
-
const dm = asObjectRecord(account.dm);
|
|
20
|
+
const dm = (0, runtime_doctor_migrations_exports.asObjectRecord)(account.dm);
|
|
21
21
|
if (dm) {
|
|
22
22
|
refs.push({
|
|
23
23
|
pathLabel: `${prefix}.dm.allowFrom`,
|
|
24
24
|
holder: dm,
|
|
25
25
|
key: "allowFrom"
|
|
26
26
|
});
|
|
27
|
-
refs.push({
|
|
27
|
+
if (!userAllowlistsOnly) refs.push({
|
|
28
28
|
pathLabel: `${prefix}.dm.groupChannels`,
|
|
29
29
|
holder: dm,
|
|
30
30
|
key: "groupChannels"
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
const execApprovals = asObjectRecord(account.execApprovals);
|
|
34
|
-
if (execApprovals) refs.push({
|
|
33
|
+
const execApprovals = (0, runtime_doctor_migrations_exports.asObjectRecord)(account.execApprovals);
|
|
34
|
+
if (execApprovals && !userAllowlistsOnly) refs.push({
|
|
35
35
|
pathLabel: `${prefix}.execApprovals.approvers`,
|
|
36
36
|
holder: execApprovals,
|
|
37
37
|
key: "approvers"
|
|
38
38
|
});
|
|
39
|
-
const guilds = asObjectRecord(account.guilds);
|
|
39
|
+
const guilds = (0, runtime_doctor_migrations_exports.asObjectRecord)(account.guilds);
|
|
40
40
|
if (!guilds) return refs;
|
|
41
41
|
for (const guildId of Object.keys(guilds)) {
|
|
42
|
-
const guild = asObjectRecord(guilds[guildId]);
|
|
42
|
+
const guild = (0, runtime_doctor_migrations_exports.asObjectRecord)(guilds[guildId]);
|
|
43
43
|
if (!guild) continue;
|
|
44
44
|
refs.push({
|
|
45
45
|
pathLabel: `${prefix}.guilds.${guildId}.users`,
|
|
46
46
|
holder: guild,
|
|
47
47
|
key: "users"
|
|
48
48
|
});
|
|
49
|
-
refs.push({
|
|
49
|
+
if (!userAllowlistsOnly) refs.push({
|
|
50
50
|
pathLabel: `${prefix}.guilds.${guildId}.roles`,
|
|
51
51
|
holder: guild,
|
|
52
52
|
key: "roles"
|
|
53
53
|
});
|
|
54
|
-
const channels = asObjectRecord(guild.channels);
|
|
54
|
+
const channels = (0, runtime_doctor_migrations_exports.asObjectRecord)(guild.channels);
|
|
55
55
|
if (!channels) continue;
|
|
56
56
|
for (const channelId of Object.keys(channels)) {
|
|
57
|
-
const channel = asObjectRecord(channels[channelId]);
|
|
57
|
+
const channel = (0, runtime_doctor_migrations_exports.asObjectRecord)(channels[channelId]);
|
|
58
58
|
if (!channel) continue;
|
|
59
59
|
refs.push({
|
|
60
60
|
pathLabel: `${prefix}.guilds.${guildId}.channels.${channelId}.users`,
|
|
61
61
|
holder: channel,
|
|
62
62
|
key: "users"
|
|
63
63
|
});
|
|
64
|
-
refs.push({
|
|
64
|
+
if (!userAllowlistsOnly) refs.push({
|
|
65
65
|
pathLabel: `${prefix}.guilds.${guildId}.channels.${channelId}.roles`,
|
|
66
66
|
holder: channel,
|
|
67
67
|
key: "roles"
|
|
@@ -83,7 +83,7 @@ function scanDiscordNumericIdEntries(cfg) {
|
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
|
-
for (const scope of collectChannelAccountScopes({
|
|
86
|
+
for (const scope of (0, runtime_doctor_migrations_exports.collectChannelAccountScopes)({
|
|
87
87
|
cfg,
|
|
88
88
|
channelId: "discord"
|
|
89
89
|
})) for (const ref of collectDiscordIdLists(scope.prefix, scope.account)) scanList(ref.pathLabel, ref.holder[ref.key]);
|
|
@@ -135,7 +135,7 @@ function maybeRepairDiscordNumericIds(cfg, doctorFixCommand) {
|
|
|
135
135
|
});
|
|
136
136
|
if (converted > 0) changes.push(`- ${sanitizeForLog(pathLabel)}: converted ${converted} numeric ${converted === 1 ? "ID" : "IDs"} to strings`);
|
|
137
137
|
};
|
|
138
|
-
for (const scope of collectChannelAccountScopes({
|
|
138
|
+
for (const scope of (0, runtime_doctor_migrations_exports.collectChannelAccountScopes)({
|
|
139
139
|
cfg: next,
|
|
140
140
|
channelId: "discord"
|
|
141
141
|
})) for (const ref of collectDiscordIdLists(scope.prefix, scope.account)) repairList(ref.pathLabel, ref.holder, ref.key);
|
|
@@ -198,24 +198,9 @@ function collectDiscordMutableAllowlistWarnings(cfg) {
|
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
200
|
};
|
|
201
|
-
for (const scope of collectProviderDangerousNameMatchingScopes(cfg, "discord")) {
|
|
201
|
+
for (const scope of (0, runtime_doctor_migrations_exports.collectProviderDangerousNameMatchingScopes)(cfg, "discord")) {
|
|
202
202
|
if (scope.dangerousNameMatchingEnabled) continue;
|
|
203
|
-
|
|
204
|
-
const dm = asObjectRecord(scope.account.dm);
|
|
205
|
-
if (dm) addHits(`${scope.prefix}.dm.allowFrom`, dm.allowFrom);
|
|
206
|
-
const guilds = asObjectRecord(scope.account.guilds);
|
|
207
|
-
if (!guilds) continue;
|
|
208
|
-
for (const [guildId, guildRaw] of Object.entries(guilds)) {
|
|
209
|
-
const guild = asObjectRecord(guildRaw);
|
|
210
|
-
if (!guild) continue;
|
|
211
|
-
addHits(`${scope.prefix}.guilds.${guildId}.users`, guild.users);
|
|
212
|
-
const channels = asObjectRecord(guild.channels);
|
|
213
|
-
if (!channels) continue;
|
|
214
|
-
for (const [channelId, channelRaw] of Object.entries(channels)) {
|
|
215
|
-
const channel = asObjectRecord(channelRaw);
|
|
216
|
-
if (channel) addHits(`${scope.prefix}.guilds.${guildId}.channels.${channelId}.users`, channel.users);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
203
|
+
for (const ref of collectDiscordIdLists(scope.prefix, scope.account, true)) addHits(ref.pathLabel, ref.holder[ref.key]);
|
|
219
204
|
}
|
|
220
205
|
if (hits.length === 0) return [];
|
|
221
206
|
const exampleLines = hits.slice(0, 8).map((hit) => `- ${sanitizeForLog(hit.path)}: ${sanitizeForLog(hit.entry)}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-CshUGl36.mjs";
|
|
2
2
|
import { isSupportedRealtimeVoiceActivationName, normalizeRealtimeVoiceActivationNamePrefix } from "openclaw/plugin-sdk/realtime-voice-activation";
|
|
3
3
|
//#region extensions/discord/src/doctor-contract.ts
|
|
4
4
|
const LEGACY_TTS_PROVIDER_KEYS = [
|
|
@@ -14,7 +14,7 @@ const RETIRED_TUNING_KEYS = /* @__PURE__ */ new Set([
|
|
|
14
14
|
"eventQueue",
|
|
15
15
|
"retry"
|
|
16
16
|
]);
|
|
17
|
-
const streamingAliasMigration = defineChannelAliasMigration({
|
|
17
|
+
const streamingAliasMigration = (0, runtime_doctor_migrations_exports.defineChannelAliasMigration)({
|
|
18
18
|
channelId: "discord",
|
|
19
19
|
streaming: {
|
|
20
20
|
defaultMode: "off",
|
|
@@ -26,8 +26,8 @@ const streamingAliasMigration = defineChannelAliasMigration({
|
|
|
26
26
|
accounts: true
|
|
27
27
|
},
|
|
28
28
|
normalizeAccountExtra: ({ account, pathPrefix, changes }) => {
|
|
29
|
-
const accountVoice = asObjectRecord(account.voice);
|
|
30
|
-
if (!accountVoice || !migrateLegacyTtsConfig(asObjectRecord(accountVoice.tts), `${pathPrefix}.voice.tts`, changes)) return {
|
|
29
|
+
const accountVoice = (0, runtime_doctor_migrations_exports.asObjectRecord)(account.voice);
|
|
30
|
+
if (!accountVoice || !migrateLegacyTtsConfig((0, runtime_doctor_migrations_exports.asObjectRecord)(accountVoice.tts), `${pathPrefix}.voice.tts`, changes)) return {
|
|
31
31
|
entry: account,
|
|
32
32
|
changed: false
|
|
33
33
|
};
|
|
@@ -41,11 +41,11 @@ const streamingAliasMigration = defineChannelAliasMigration({
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
function hasLegacyTtsProviderKeys(value) {
|
|
44
|
-
const tts = asObjectRecord(value);
|
|
44
|
+
const tts = (0, runtime_doctor_migrations_exports.asObjectRecord)(value);
|
|
45
45
|
if (!tts) return false;
|
|
46
46
|
return LEGACY_TTS_PROVIDER_KEYS.some((key) => Object.hasOwn(tts, key));
|
|
47
47
|
}
|
|
48
|
-
const guildChannelAllowMigration = defineKeyMoveMigration({
|
|
48
|
+
const guildChannelAllowMigration = (0, runtime_doctor_migrations_exports.defineKeyMoveMigration)({
|
|
49
49
|
scope: [
|
|
50
50
|
"guilds",
|
|
51
51
|
"*",
|
|
@@ -56,21 +56,21 @@ const guildChannelAllowMigration = defineKeyMoveMigration({
|
|
|
56
56
|
to: ["enabled"]
|
|
57
57
|
});
|
|
58
58
|
function hasLegacyDiscordGuildChannelAgentId(value) {
|
|
59
|
-
const guilds = asObjectRecord(asObjectRecord(value)?.guilds);
|
|
59
|
+
const guilds = (0, runtime_doctor_migrations_exports.asObjectRecord)((0, runtime_doctor_migrations_exports.asObjectRecord)(value)?.guilds);
|
|
60
60
|
if (!guilds) return false;
|
|
61
61
|
return Object.values(guilds).some((guildValue) => {
|
|
62
|
-
const channels = asObjectRecord(asObjectRecord(guildValue)?.channels);
|
|
62
|
+
const channels = (0, runtime_doctor_migrations_exports.asObjectRecord)((0, runtime_doctor_migrations_exports.asObjectRecord)(guildValue)?.channels);
|
|
63
63
|
if (!channels) return false;
|
|
64
|
-
return Object.values(channels).some((channel) => Object.hasOwn(asObjectRecord(channel) ?? {}, "agentId"));
|
|
64
|
+
return Object.values(channels).some((channel) => Object.hasOwn((0, runtime_doctor_migrations_exports.asObjectRecord)(channel) ?? {}, "agentId"));
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
function hasUnsupportedRealtimeWakeNamesInVoice(value) {
|
|
68
|
-
const voice = asObjectRecord(value);
|
|
69
|
-
const wakeNames = asObjectRecord(voice?.realtime)?.wakeNames;
|
|
68
|
+
const voice = (0, runtime_doctor_migrations_exports.asObjectRecord)(value);
|
|
69
|
+
const wakeNames = (0, runtime_doctor_migrations_exports.asObjectRecord)(voice?.realtime)?.wakeNames;
|
|
70
70
|
return Array.isArray(wakeNames) ? wakeNames.length === 0 || wakeNames.some((wakeName) => typeof wakeName === "string" && !isSupportedRealtimeVoiceActivationName(wakeName)) : false;
|
|
71
71
|
}
|
|
72
72
|
function hasUnsupportedDiscordRealtimeWakeNames(value) {
|
|
73
|
-
const entry = asObjectRecord(value);
|
|
73
|
+
const entry = (0, runtime_doctor_migrations_exports.asObjectRecord)(value);
|
|
74
74
|
if (!entry) return false;
|
|
75
75
|
return hasUnsupportedRealtimeWakeNamesInVoice(entry.voice);
|
|
76
76
|
}
|
|
@@ -86,15 +86,15 @@ function mergeMissing(target, source) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
function getOrCreateTtsProviders(tts) {
|
|
89
|
-
const providers = asObjectRecord(tts.providers) ?? {};
|
|
89
|
+
const providers = (0, runtime_doctor_migrations_exports.asObjectRecord)(tts.providers) ?? {};
|
|
90
90
|
tts.providers = providers;
|
|
91
91
|
return providers;
|
|
92
92
|
}
|
|
93
93
|
function mergeLegacyTtsProviderConfig(tts, legacyKey, providerId) {
|
|
94
|
-
const legacyValue = asObjectRecord(tts[legacyKey]);
|
|
94
|
+
const legacyValue = (0, runtime_doctor_migrations_exports.asObjectRecord)(tts[legacyKey]);
|
|
95
95
|
if (!legacyValue) return false;
|
|
96
96
|
const providers = getOrCreateTtsProviders(tts);
|
|
97
|
-
const existing = asObjectRecord(providers[providerId]) ?? {};
|
|
97
|
+
const existing = (0, runtime_doctor_migrations_exports.asObjectRecord)(providers[providerId]) ?? {};
|
|
98
98
|
const merged = structuredClone(existing);
|
|
99
99
|
mergeMissing(merged, legacyValue);
|
|
100
100
|
providers[providerId] = merged;
|
|
@@ -104,27 +104,18 @@ function mergeLegacyTtsProviderConfig(tts, legacyKey, providerId) {
|
|
|
104
104
|
function migrateLegacyTtsConfig(tts, pathLabel, changes) {
|
|
105
105
|
if (!tts) return false;
|
|
106
106
|
let changed = false;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
changed = true;
|
|
114
|
-
}
|
|
115
|
-
if (mergeLegacyTtsProviderConfig(tts, "microsoft", "microsoft")) {
|
|
116
|
-
changes.push(`Moved ${pathLabel}.microsoft → ${pathLabel}.providers.microsoft.`);
|
|
117
|
-
changed = true;
|
|
118
|
-
}
|
|
119
|
-
if (mergeLegacyTtsProviderConfig(tts, "edge", "microsoft")) {
|
|
120
|
-
changes.push(`Moved ${pathLabel}.edge → ${pathLabel}.providers.microsoft.`);
|
|
121
|
-
changed = true;
|
|
107
|
+
for (const legacyKey of LEGACY_TTS_PROVIDER_KEYS) {
|
|
108
|
+
const providerId = legacyKey === "edge" ? "microsoft" : legacyKey;
|
|
109
|
+
if (mergeLegacyTtsProviderConfig(tts, legacyKey, providerId)) {
|
|
110
|
+
changes.push(`Moved ${pathLabel}.${legacyKey} → ${pathLabel}.providers.${providerId}.`);
|
|
111
|
+
changed = true;
|
|
112
|
+
}
|
|
122
113
|
}
|
|
123
114
|
return changed;
|
|
124
115
|
}
|
|
125
116
|
function normalizeUnsupportedRealtimeWakeNames(entry, pathPrefix, changes) {
|
|
126
|
-
const voice = asObjectRecord(entry.voice);
|
|
127
|
-
const realtime = asObjectRecord(voice?.realtime);
|
|
117
|
+
const voice = (0, runtime_doctor_migrations_exports.asObjectRecord)(entry.voice);
|
|
118
|
+
const realtime = (0, runtime_doctor_migrations_exports.asObjectRecord)(voice?.realtime);
|
|
128
119
|
const wakeNames = realtime?.wakeNames;
|
|
129
120
|
if (!voice || !realtime || !Array.isArray(wakeNames)) return {
|
|
130
121
|
entry,
|
|
@@ -179,14 +170,14 @@ function normalizeUnsupportedRealtimeWakeNames(entry, pathPrefix, changes) {
|
|
|
179
170
|
};
|
|
180
171
|
}
|
|
181
172
|
function isDiscordChannelAgentBinding(value, match) {
|
|
182
|
-
const binding = asObjectRecord(value);
|
|
183
|
-
const bindingMatch = asObjectRecord(binding?.match);
|
|
184
|
-
const peer = asObjectRecord(bindingMatch?.peer);
|
|
173
|
+
const binding = (0, runtime_doctor_migrations_exports.asObjectRecord)(value);
|
|
174
|
+
const bindingMatch = (0, runtime_doctor_migrations_exports.asObjectRecord)(binding?.match);
|
|
175
|
+
const peer = (0, runtime_doctor_migrations_exports.asObjectRecord)(bindingMatch?.peer);
|
|
185
176
|
if (!binding || !bindingMatch || !peer) return false;
|
|
186
177
|
return bindingMatch.channel === "discord" && bindingMatch.guildId === match.guildId && (match.accountId === void 0 || bindingMatch.accountId === match.accountId) && peer.kind === "channel" && peer.id === match.channelId;
|
|
187
178
|
}
|
|
188
179
|
function normalizeDiscordGuildChannelAgentIds(params) {
|
|
189
|
-
const guilds = asObjectRecord(params.entry.guilds);
|
|
180
|
+
const guilds = (0, runtime_doctor_migrations_exports.asObjectRecord)(params.entry.guilds);
|
|
190
181
|
if (!guilds) return {
|
|
191
182
|
entry: params.entry,
|
|
192
183
|
changed: false
|
|
@@ -195,13 +186,13 @@ function normalizeDiscordGuildChannelAgentIds(params) {
|
|
|
195
186
|
let changed = false;
|
|
196
187
|
const nextGuilds = { ...guilds };
|
|
197
188
|
for (const [guildId, guildValue] of Object.entries(guilds)) {
|
|
198
|
-
const guild = asObjectRecord(guildValue);
|
|
199
|
-
const channels = asObjectRecord(guild?.channels);
|
|
189
|
+
const guild = (0, runtime_doctor_migrations_exports.asObjectRecord)(guildValue);
|
|
190
|
+
const channels = (0, runtime_doctor_migrations_exports.asObjectRecord)(guild?.channels);
|
|
200
191
|
if (!guild || !channels) continue;
|
|
201
192
|
let channelsChanged = false;
|
|
202
193
|
const nextChannels = { ...channels };
|
|
203
194
|
for (const [channelId, channelValue] of Object.entries(channels)) {
|
|
204
|
-
const channel = asObjectRecord(channelValue);
|
|
195
|
+
const channel = (0, runtime_doctor_migrations_exports.asObjectRecord)(channelValue);
|
|
205
196
|
if (!channel || !Object.hasOwn(channel, "agentId")) continue;
|
|
206
197
|
const nextChannel = { ...channel };
|
|
207
198
|
const rawAgentId = nextChannel.agentId;
|
|
@@ -274,9 +265,9 @@ const legacyConfigRules = [
|
|
|
274
265
|
"accounts"
|
|
275
266
|
],
|
|
276
267
|
message: "channels.discord.accounts.<id>.voice.tts.<provider> keys (openai/elevenlabs/microsoft/edge) are legacy; use channels.discord.accounts.<id>.voice.tts.providers.<provider>. Run \"openclaw doctor --fix\".",
|
|
277
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, (accountValue) => {
|
|
278
|
-
const account = asObjectRecord(accountValue);
|
|
279
|
-
return hasLegacyTtsProviderKeys(asObjectRecord(account?.voice)?.tts);
|
|
268
|
+
match: (value) => (0, runtime_doctor_migrations_exports.hasLegacyAccountStreamingAliases)(value, (accountValue) => {
|
|
269
|
+
const account = (0, runtime_doctor_migrations_exports.asObjectRecord)(accountValue);
|
|
270
|
+
return hasLegacyTtsProviderKeys((0, runtime_doctor_migrations_exports.asObjectRecord)(account?.voice)?.tts);
|
|
280
271
|
})
|
|
281
272
|
},
|
|
282
273
|
{
|
|
@@ -291,7 +282,7 @@ const legacyConfigRules = [
|
|
|
291
282
|
"accounts"
|
|
292
283
|
],
|
|
293
284
|
message: "channels.discord.accounts.<id>.guilds.<id>.channels.<id>.allow is legacy; use channels.discord.accounts.<id>.guilds.<id>.channels.<id>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
294
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, guildChannelAllowMigration.hasLegacy)
|
|
285
|
+
match: (value) => (0, runtime_doctor_migrations_exports.hasLegacyAccountStreamingAliases)(value, guildChannelAllowMigration.hasLegacy)
|
|
295
286
|
},
|
|
296
287
|
{
|
|
297
288
|
path: ["channels", "discord"],
|
|
@@ -305,7 +296,7 @@ const legacyConfigRules = [
|
|
|
305
296
|
"accounts"
|
|
306
297
|
],
|
|
307
298
|
message: "channels.discord.accounts.<id>.guilds.<id>.channels.<id>.agentId is legacy; use top-level bindings[] with match.accountId for per-channel Discord agent routing. Run \"openclaw doctor --fix\".",
|
|
308
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, hasLegacyDiscordGuildChannelAgentId)
|
|
299
|
+
match: (value) => (0, runtime_doctor_migrations_exports.hasLegacyAccountStreamingAliases)(value, hasLegacyDiscordGuildChannelAgentId)
|
|
309
300
|
},
|
|
310
301
|
{
|
|
311
302
|
path: ["channels", "discord"],
|
|
@@ -319,7 +310,7 @@ const legacyConfigRules = [
|
|
|
319
310
|
"accounts"
|
|
320
311
|
],
|
|
321
312
|
message: "channels.discord.accounts.<id>.voice.realtime.wakeNames entries longer than two words are unsupported; use one- or two-word activation names. Run \"openclaw doctor --fix\".",
|
|
322
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, hasUnsupportedDiscordRealtimeWakeNames)
|
|
313
|
+
match: (value) => (0, runtime_doctor_migrations_exports.hasLegacyAccountStreamingAliases)(value, hasUnsupportedDiscordRealtimeWakeNames)
|
|
323
314
|
},
|
|
324
315
|
...streamingAliasMigration.legacyConfigRules
|
|
325
316
|
];
|
|
@@ -330,13 +321,13 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
330
321
|
cfg,
|
|
331
322
|
changes
|
|
332
323
|
});
|
|
333
|
-
const tuningKnobs = stripRetiredChannelKeys({
|
|
324
|
+
const tuningKnobs = (0, runtime_doctor_migrations_exports.stripRetiredChannelKeys)({
|
|
334
325
|
cfg: aliases.config,
|
|
335
326
|
channelId: "discord",
|
|
336
327
|
keys: RETIRED_TUNING_KEYS,
|
|
337
328
|
scope: "root-and-accounts"
|
|
338
329
|
});
|
|
339
|
-
const rawEntry = asObjectRecord(tuningKnobs.config.channels?.discord);
|
|
330
|
+
const rawEntry = (0, runtime_doctor_migrations_exports.asObjectRecord)(tuningKnobs.config.channels?.discord);
|
|
340
331
|
if (!rawEntry) return {
|
|
341
332
|
config: cfg,
|
|
342
333
|
changes: []
|
|
@@ -360,7 +351,7 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
360
351
|
});
|
|
361
352
|
updated = channelAgentIds.entry;
|
|
362
353
|
changed = changed || channelAgentIds.changed;
|
|
363
|
-
const accounts = normalizeChannelAccounts({
|
|
354
|
+
const accounts = (0, runtime_doctor_migrations_exports.normalizeChannelAccounts)({
|
|
364
355
|
entry: updated,
|
|
365
356
|
pathPrefix: "channels.discord",
|
|
366
357
|
changes,
|
|
@@ -387,8 +378,8 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
387
378
|
});
|
|
388
379
|
updated = accounts.entry;
|
|
389
380
|
changed = changed || accounts.changed;
|
|
390
|
-
const voice = asObjectRecord(updated.voice);
|
|
391
|
-
if (voice && migrateLegacyTtsConfig(asObjectRecord(voice.tts), "channels.discord.voice.tts", changes)) {
|
|
381
|
+
const voice = (0, runtime_doctor_migrations_exports.asObjectRecord)(updated.voice);
|
|
382
|
+
if (voice && migrateLegacyTtsConfig((0, runtime_doctor_migrations_exports.asObjectRecord)(voice.tts), "channels.discord.voice.tts", changes)) {
|
|
392
383
|
updated = {
|
|
393
384
|
...updated,
|
|
394
385
|
voice
|