@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.
Files changed (150) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
  3. package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
  4. package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
  5. package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
  6. package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
  7. package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
  8. package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
  9. package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
  10. package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
  11. package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
  12. package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
  13. package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
  14. package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
  15. package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
  16. package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
  17. package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
  18. package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
  19. package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
  20. package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
  21. package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
  22. package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
  23. package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
  24. package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
  25. package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
  26. package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
  27. package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
  28. package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
  29. package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
  30. package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
  31. package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
  32. package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
  33. package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
  34. package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
  35. package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
  36. package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
  37. package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
  38. package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
  39. package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
  40. package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
  41. package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
  42. package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
  43. package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
  44. package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
  45. package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
  46. package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
  47. package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
  48. package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
  49. package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
  50. package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
  51. package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
  52. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
  53. package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
  54. package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
  55. package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
  56. package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
  57. package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
  58. package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
  59. package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
  60. package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
  61. package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
  62. package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
  63. package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
  64. package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
  65. package/dist/account-inspect-api.js +1 -1
  66. package/dist/action-runtime-api.js +1 -1
  67. package/dist/activities-api.js +1 -1
  68. package/dist/api.js +18 -18
  69. package/dist/channel-config-api.js +1 -1
  70. package/dist/channel-plugin-api.js +1 -1
  71. package/dist/directory-contract-api.js +1 -1
  72. package/dist/doctor-contract-api.js +4 -4
  73. package/dist/index.js +1 -1
  74. package/dist/runtime-api.js +20 -20
  75. package/dist/secret-contract-api.js +1 -1
  76. package/dist/security-audit-contract-api.js +1 -1
  77. package/dist/setup-entry.js +1 -1
  78. package/dist/setup-plugin-api.js +1 -1
  79. package/dist/src/voice/audio-worker.runtime.js +15 -24
  80. package/dist/subagent-hooks-api.js +3 -4
  81. package/dist/transcripts-source-api.js +1 -1
  82. package/node_modules/@types/node/README.md +2 -2
  83. package/node_modules/@types/node/child_process.d.ts +1 -1
  84. package/node_modules/@types/node/crypto.d.ts +20 -8
  85. package/node_modules/@types/node/ffi.d.ts +14 -0
  86. package/node_modules/@types/node/http2.d.ts +3 -2
  87. package/node_modules/@types/node/net.d.ts +16 -4
  88. package/node_modules/@types/node/package.json +2 -17
  89. package/node_modules/@types/node/process.d.ts +1 -0
  90. package/node_modules/@types/node/quic.d.ts +39 -1
  91. package/node_modules/@types/node/stream/iter.d.ts +9 -12
  92. package/node_modules/@types/node/test/reporters.d.ts +1 -0
  93. package/node_modules/@types/node/test.d.ts +72 -0
  94. package/node_modules/@types/node/tls.d.ts +14 -10
  95. package/node_modules/@types/node/vm.d.ts +2 -1
  96. package/node_modules/@types/node/worker_threads.d.ts +4 -1
  97. package/node_modules/typebox/build/compile/code.mjs +1 -2
  98. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  99. package/node_modules/typebox/build/format/iri.mjs +16 -9
  100. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  101. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  102. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  103. package/node_modules/typebox/build/guard/index.mjs +6 -0
  104. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  105. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  106. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  107. package/node_modules/typebox/build/schema/build.mjs +2 -3
  108. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  109. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  110. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  111. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  112. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  113. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  114. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  115. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  116. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  117. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  118. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  119. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  120. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  121. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  122. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  123. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  124. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  125. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  126. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  127. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  128. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  129. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  130. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  131. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  132. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  133. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  134. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  135. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  136. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  137. package/node_modules/typebox/package.json +1 -1
  138. package/node_modules/typebox/readme.md +3 -1
  139. package/openclaw.plugin.json +21 -1
  140. package/package.json +5 -5
  141. package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
  142. package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
  143. package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
  144. package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
  145. package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
  146. package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
  147. package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
  148. package/dist/.setup/targets-CvemhN3i.mjs +0 -3
  149. package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
  150. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -0,0 +1,6 @@
1
+ import { i as createNoopThreadBindingManager, t as createThreadBindingManager } from "./thread-bindings.manager-DN-NissX.mjs";
2
+ import { c as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-D7TfgjR_.mjs";
3
+ import { t as createDiscordMessageHandler } from "./message-handler-B-Jk4oDk.mjs";
4
+ import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
5
+ import { getAcpSessionManager, isAcpRuntimeError } from "openclaw/plugin-sdk/acp-runtime";
6
+ export { createDiscordMessageHandler, createNoopThreadBindingManager, createThreadBindingManager, getAcpSessionManager, isAcpRuntimeError, reconcileAcpThreadBindingsOnStartup, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled };
@@ -0,0 +1,2 @@
1
+ import { t as monitorDiscordProvider } from "./provider-B_G5hASF.mjs";
2
+ export { monitorDiscordProvider };
@@ -1,11 +1,12 @@
1
- import { a as buildProviderConfigOverrides, o as buildProviderConfigs } from "./transcripts-source-DVegW0WI.mjs";
2
- import { S as setDiscordAudioOutputStatus, _ as getDiscordAudioOutputStatus, d as createDiscordPcmToRealtimeConverter, g as admitDiscordAudioInput, h as DiscordAudioOutputStatus, v as releaseDiscordAudioInput, y as restoreDiscordAudioError } from "./receive-recovery-DHst8WRx.mjs";
3
- import { n as discordRealtimeVoiceSecretOwnerId } from "./secret-config-contract-DFu9hfU8.mjs";
4
- import { a as handleDiscordVoiceAgentControlToolCall, c as formatRealtimeInterruptionLog, d as shouldLogRealtimeVerboseEvent, i as formatVoiceIngressPrompt, l as formatRealtimeLifecycleLog, n as DiscordRealtimeRecording, o as logDiscordVoiceAgentControlResult, r as logVoiceVerbose, s as maybeControlDiscordVoiceAgentRun, u as formatVoiceLogPreview } from "./voice-runtime-elTtjEIG.mjs";
1
+ import { _ as releaseDiscordAudioInput, g as getDiscordAudioOutputStatus, h as admitDiscordAudioInput, m as DiscordAudioOutputStatus, u as createDiscordPcmToRealtimeConverter, v as restoreDiscordAudioError, x as setDiscordAudioOutputStatus } from "./receive-recovery-CHPOsnLc.mjs";
2
+ import { n as discordRealtimeVoiceSecretOwnerId } from "./secret-config-contract-uOE2J7yM.mjs";
3
+ import { g as logVoiceVerbose } from "./provider-B_G5hASF.mjs";
4
+ import { a as logDiscordVoiceAgentControlResult, c as formatRealtimeLifecycleLog, i as handleDiscordVoiceAgentControlToolCall, l as formatVoiceLogPreview, n as DiscordRealtimeRecording, o as maybeControlDiscordVoiceAgentRun, r as formatVoiceIngressPrompt, s as formatRealtimeInterruptionLog, u as shouldLogRealtimeVerboseEvent } from "./voice-runtime-B46rcwrG.mjs";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
7
7
  import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
8
8
  import { formatErrorMessage as formatErrorMessage$1, readErrorName, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
9
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
10
  import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
10
11
  import { sliceUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
11
12
  import { MessageChannel } from "node:worker_threads";
@@ -384,16 +385,16 @@ var DiscordRealtimeConsults = class {
384
385
  const outcome = classifyRealtimeVoiceConsultToolCall(event.args, { retainedExactSpeechTexts: this.params.playback.retainedExactSpeechTexts() });
385
386
  switch (outcome.kind) {
386
387
  case "exact-speech-echo":
387
- logger$3.info(`discord voice: realtime exact speech consult bypassed call=${callId || "unknown"} answerChars=${outcome.text.length}`);
388
+ logger$3.info(`discord voice: realtime exact speech consult bypassed call=${callId} answerChars=${outcome.text.length}`);
388
389
  await session.submitToolResult(callId, { text: outcome.text });
389
390
  return;
390
391
  case "malformed":
391
- logger$3.warn(`discord voice: realtime consult rejected malformed args call=${callId || "unknown"}: ${outcome.error}`);
392
+ logger$3.warn(`discord voice: realtime consult rejected malformed args call=${callId}: ${outcome.error}`);
392
393
  await session.submitToolResult(callId, { error: outcome.error });
393
394
  return;
394
395
  }
395
396
  const consultMessage = outcome.message;
396
- logger$3.info(`discord voice: realtime consult requested call=${callId || "unknown"} voiceSession=${this.params.entry.voiceSessionKey} supervisorSession=${this.params.entry.route.sessionKey} agent=${this.params.entry.route.agentId} question=${formatVoiceLogPreview(consultMessage)}`);
397
+ logger$3.info(`discord voice: realtime consult requested call=${callId} voiceSession=${this.params.entry.voiceSessionKey} supervisorSession=${this.params.entry.route.sessionKey} agent=${this.params.entry.route.agentId} question=${formatVoiceLogPreview(consultMessage)}`);
397
398
  const nativeConsult = this.params.harness.forcedConsults.recordNativeConsult(event.args, callId);
398
399
  if (nativeConsult.kind === "already_delivered" && this.params.harness.forcedConsults.isCancelled(nativeConsult.handle)) {
399
400
  await this.submitTerminalRealtimeToolResult(callId, session, CANCELLED_CONSULT_RESULT);
@@ -417,14 +418,22 @@ var DiscordRealtimeConsults = class {
417
418
  }
418
419
  if (!context) {
419
420
  context = this.params.turns.consumePendingSpeakerContext();
420
- if (context) recent = this.rememberRecentAgentProxyConsultContext(consultMessage, context, {
421
- ...callId === "unknown" ? {} : { id: `native-consult:${callId}` },
422
- started: true
423
- });
421
+ if (context) {
422
+ recent = this.params.harness.forcedConsults.prepare(consultMessage, {
423
+ context: {
424
+ speaker: context,
425
+ providerEpoch: this.params.providerEpoch(),
426
+ delivery: "provider"
427
+ },
428
+ ...callId === "unknown" ? {} : { id: `native-consult:${callId}` }
429
+ });
430
+ if (!recent) throw new Error("Discord realtime consult context requires a non-empty question");
431
+ this.params.harness.forcedConsults.markStarted(recent);
432
+ }
424
433
  }
425
434
  const state = recent?.context;
426
435
  if (!context || !state) {
427
- logger$3.warn(`discord voice: realtime consult has no speaker context call=${callId || "unknown"}`);
436
+ logger$3.warn(`discord voice: realtime consult has no speaker context call=${callId}`);
428
437
  await session.submitToolResult(callId, { error: "No Discord speaker context available" });
429
438
  return;
430
439
  }
@@ -475,7 +484,7 @@ var DiscordRealtimeConsults = class {
475
484
  }
476
485
  if (!this.params.isAgentProxy()) return;
477
486
  if (usesRealtimeAgentHandoff) {
478
- if (pendingForcedConsult) this.schedulePreparedForcedAgentProxyConsult(pendingForcedConsult);
487
+ if (pendingForcedConsult) this.params.harness.forcedConsults.schedule(pendingForcedConsult, DISCORD_REALTIME_FORCED_CONSULT_FALLBACK_DELAY_MS, (handle) => void this.runForcedAgentProxyConsult(handle));
479
488
  return;
480
489
  }
481
490
  this.talkback.enqueue(acceptedText, fallbackSpeakerContext);
@@ -553,9 +562,6 @@ var DiscordRealtimeConsults = class {
553
562
  delivery: "provider"
554
563
  } });
555
564
  }
556
- schedulePreparedForcedAgentProxyConsult(pending) {
557
- this.params.harness.forcedConsults.schedule(pending, DISCORD_REALTIME_FORCED_CONSULT_FALLBACK_DELAY_MS, (handle) => void this.runForcedAgentProxyConsult(handle));
558
- }
559
565
  async runForcedAgentProxyConsult(pending) {
560
566
  this.params.harness.forcedConsults.markStarted(pending);
561
567
  const state = pending.context;
@@ -590,19 +596,6 @@ var DiscordRealtimeConsults = class {
590
596
  this.params.playback.enqueueExactSpeechMessage(text);
591
597
  }
592
598
  }
593
- rememberRecentAgentProxyConsultContext(question, context, options = {}) {
594
- const handle = this.params.harness.forcedConsults.prepare(question, {
595
- context: {
596
- speaker: context,
597
- providerEpoch: this.params.providerEpoch(),
598
- delivery: "provider"
599
- },
600
- ...options.id ? { id: options.id } : {}
601
- });
602
- if (!handle) throw new Error("Discord realtime consult context requires a non-empty question");
603
- if (options.started) this.params.harness.forcedConsults.markStarted(handle);
604
- return handle;
605
- }
606
599
  trackAgentProxyConsult(recent, promise) {
607
600
  const state = recent?.context;
608
601
  if (recent) this.params.harness.forcedConsults.markStarted(recent);
@@ -1099,8 +1092,9 @@ var DiscordRealtimePlayback = class {
1099
1092
  /** Accept completed consult ownership without starting provider work during transport cleanup. */
1100
1093
  retainExactSpeechMessage(text) {
1101
1094
  if (!text.trim()) return false;
1102
- const retainedMessages = this.queuedExactSpeechMessages.length + (this.exactSpeechState.status === "active" ? 1 : 0);
1103
- const retainedBytes = this.queuedExactSpeechMessages.reduce((total, message) => total + Buffer.byteLength(message, "utf8"), 0) + Buffer.byteLength(this.exactSpeechState.status === "active" ? this.exactSpeechState.message : "", "utf8");
1095
+ const retained = this.retainedExactSpeechTexts();
1096
+ const retainedMessages = retained.length;
1097
+ const retainedBytes = retained.reduce((total, message) => total + Buffer.byteLength(message, "utf8"), 0);
1104
1098
  const incomingBytes = Buffer.byteLength(text, "utf8");
1105
1099
  if (retainedMessages >= DISCORD_REALTIME_MAX_RETAINED_RESPONSES || retainedBytes + incomingBytes > DISCORD_REALTIME_MAX_RETAINED_EXACT_SPEECH_BYTES) {
1106
1100
  this.stopAfterPlaybackFailure("exact-speech-overflow", /* @__PURE__ */ new Error(`Discord realtime exact speech overflow: retained=${retainedMessages} retainedBytes=${retainedBytes} incomingBytes=${incomingBytes}`));
@@ -1209,7 +1203,6 @@ var DiscordRealtimePlayback = class {
1209
1203
  const logContext = `guild=${this.params.entry.guildId} channel=${this.params.entry.channelId}`;
1210
1204
  const output = new DiscordRealtimeOutput({
1211
1205
  player: this.params.player,
1212
- logContext,
1213
1206
  continuous: this.isContinuousOutput(),
1214
1207
  onStart: () => {
1215
1208
  this.params.harness.outputActivity.markPlaybackStarted();
@@ -1264,10 +1257,6 @@ var DiscordRealtimePlayback = class {
1264
1257
  };
1265
1258
  //#endregion
1266
1259
  //#region extensions/discord/src/voice/realtime-speaker-config.ts
1267
- function readProviderConfigString(config, key) {
1268
- const value = config[key];
1269
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
1270
- }
1271
1260
  /** Resolve the same provider, voice catalog, and policies for initial and replacement connections. */
1272
1261
  function resolveDiscordRealtimeSpeakerConfig(params) {
1273
1262
  const { realtimeConfig, isAgentProxy } = params;
@@ -1278,11 +1267,14 @@ function resolveDiscordRealtimeSpeakerConfig(params) {
1278
1267
  if (canonicalProviderId) ownerProviderIds.add(canonicalProviderId);
1279
1268
  for (const providerId of ownerProviderIds) assertSecretOwnerAvailable("capability", discordRealtimeVoiceSecretOwnerId(params.accountId, providerId));
1280
1269
  }
1270
+ const configuredVoice = realtimeConfig?.speakerVoice || realtimeConfig?.speakerVoiceId;
1281
1271
  const resolved = resolveConfiguredRealtimeVoiceProvider({
1282
1272
  configuredProviderId: realtimeConfig?.provider,
1283
- providerConfigs: buildProviderConfigs(realtimeConfig),
1273
+ providerConfigs: { ...realtimeConfig?.providers },
1284
1274
  providerConfigOverrides: {
1285
- ...buildProviderConfigOverrides(realtimeConfig),
1275
+ ...realtimeConfig?.model ? { model: realtimeConfig.model } : {},
1276
+ ...configuredVoice ? { voice: configuredVoice } : {},
1277
+ ...typeof realtimeConfig?.minBargeInAudioEndMs === "number" ? { minBargeInAudioEndMs: realtimeConfig.minBargeInAudioEndMs } : {},
1286
1278
  ...params.voiceOverride ? {
1287
1279
  voice: params.voiceOverride,
1288
1280
  speakerVoice: params.voiceOverride
@@ -1300,14 +1292,14 @@ function resolveDiscordRealtimeSpeakerConfig(params) {
1300
1292
  });
1301
1293
  assertSecretOwnerAvailable("capability", discordRealtimeVoiceSecretOwnerId(params.accountId, resolved.provider.id));
1302
1294
  const capabilities = resolved.capabilities;
1303
- const model = readProviderConfigString(resolved.providerConfig, "model") ?? resolved.provider.defaultModel;
1295
+ const model = normalizeOptionalString(resolved.providerConfig.model) ?? resolved.provider.defaultModel;
1304
1296
  const voices = [...capabilities?.voices ?? (model ? capabilities?.voicesByModel?.[model] : void 0) ?? resolved.provider.voices ?? []];
1305
1297
  const publicConfig = projectInternalRealtimeVoicePublicConfig({
1306
1298
  provider: resolved.provider,
1307
1299
  providerConfig: resolved.providerConfig,
1308
1300
  config: {
1309
1301
  model,
1310
- voice: readProviderConfigString(resolved.providerConfig, "speakerVoice") ?? readProviderConfigString(resolved.providerConfig, "voice")
1302
+ voice: normalizeOptionalString(resolved.providerConfig.speakerVoice) ?? normalizeOptionalString(resolved.providerConfig.voice)
1311
1303
  }
1312
1304
  });
1313
1305
  const selection = {
@@ -1358,7 +1350,7 @@ function resolveDiscordRealtimeSpeakerConfig(params) {
1358
1350
  bargeIn,
1359
1351
  minBargeInAudioEndMs,
1360
1352
  resolvedModel: model,
1361
- resolvedVoice: readProviderConfigString(resolved.providerConfig, "voice")
1353
+ resolvedVoice: normalizeOptionalString(resolved.providerConfig.voice)
1362
1354
  };
1363
1355
  }
1364
1356
  //#endregion
@@ -1366,9 +1358,6 @@ function resolveDiscordRealtimeSpeakerConfig(params) {
1366
1358
  const logger$1 = createSubsystemLogger("discord/voice");
1367
1359
  const DISCORD_REALTIME_DUPLICATE_ERROR_SUPPRESS_MS = 6e4;
1368
1360
  const discordRealtimeTalkPayload = () => ({});
1369
- function isDiscordAgentProxyVoiceMode(mode) {
1370
- return mode === "agent-proxy";
1371
- }
1372
1361
  var DiscordRealtimeSpeakerSession = class {
1373
1362
  constructor(params) {
1374
1363
  this.params = params;
@@ -1391,7 +1380,12 @@ var DiscordRealtimeSpeakerSession = class {
1391
1380
  this.inputIdleListeners = /* @__PURE__ */ new Set();
1392
1381
  this.lastActivityAt = Date.now();
1393
1382
  this.outputEnabled = !params.standby;
1394
- this.recording = this.createRecording();
1383
+ const recordingEpoch = this.providerContinuityEpoch;
1384
+ this.recording = new DiscordRealtimeRecording({
1385
+ entry: this.params.entry,
1386
+ isCurrent: () => this.lifecycle.status !== "stopped" && this.providerContinuityEpoch === recordingEpoch,
1387
+ warn: (message) => logger$1.warn(message)
1388
+ });
1395
1389
  this.harness = createRealtimeVoiceSessionHarness({
1396
1390
  talk: {
1397
1391
  sessionId: this.params.sessionId,
@@ -1462,7 +1456,7 @@ var DiscordRealtimeSpeakerSession = class {
1462
1456
  debounceMs: () => this.realtimeConfig?.debounceMs,
1463
1457
  entry: this.params.entry,
1464
1458
  harness: this.harness,
1465
- isAgentProxy: () => isDiscordAgentProxyVoiceMode(this.params.mode) && !this.handlesAgentConsult,
1459
+ isAgentProxy: () => this.params.mode === "agent-proxy" && !this.handlesAgentConsult,
1466
1460
  isWakeNameRequired: () => this.isWakeNameRequired(),
1467
1461
  playback: this.playback,
1468
1462
  providerEpoch: () => this.providerContinuityEpoch,
@@ -1485,7 +1479,7 @@ var DiscordRealtimeSpeakerSession = class {
1485
1479
  agentId: this.params.entry.route.agentId,
1486
1480
  cfg: this.params.cfg,
1487
1481
  realtimeConfig: this.realtimeConfig,
1488
- isAgentProxy: isDiscordAgentProxyVoiceMode(this.params.mode),
1482
+ isAgentProxy: this.params.mode === "agent-proxy",
1489
1483
  bootstrapContextInstructions: this.params.bootstrapContextInstructions,
1490
1484
  voiceOverride: this.params.voiceOverride,
1491
1485
  conversationHistory: this.params.conversationHistory
@@ -1791,14 +1785,6 @@ var DiscordRealtimeSpeakerSession = class {
1791
1785
  this.turns.resetProviderContinuity();
1792
1786
  this.playback.resetProviderContinuity(reason);
1793
1787
  }
1794
- createRecording() {
1795
- const epoch = this.providerContinuityEpoch;
1796
- return new DiscordRealtimeRecording({
1797
- entry: this.params.entry,
1798
- isCurrent: () => this.lifecycle.status !== "stopped" && this.providerContinuityEpoch === epoch,
1799
- warn: (message) => logger$1.warn(message)
1800
- });
1801
- }
1802
1788
  logRealtimeError(message) {
1803
1789
  const now = Date.now();
1804
1790
  if (this.lastRealtimeError?.message === message && now - this.lastRealtimeError.lastLoggedAt < DISCORD_REALTIME_DUPLICATE_ERROR_SUPPRESS_MS) {
@@ -479,9 +479,6 @@ function resetVoiceReceiveRecoveryState(state) {
479
479
  state.decryptFailureCount = 0;
480
480
  state.lastDecryptFailureAt = 0;
481
481
  }
482
- function finishVoiceDecryptRecovery(state) {
483
- state.decryptRecoveryInFlight = false;
484
- }
485
482
  function isDaveReinitializing(session) {
486
483
  return session.reinitializing === true;
487
484
  }
@@ -514,4 +511,4 @@ function enableDaveReceivePassthrough(params) {
514
511
  }
515
512
  }
516
513
  //#endregion
517
- export { setDiscordAudioOutputStatus as S, getDiscordAudioOutputStatus as _, finishVoiceDecryptRecovery as a, retireDiscordAudioOutput as b, resetVoiceReceiveRecoveryState as c, createDiscordPcmToRealtimeConverter as d, createRealtimePcmToDiscordConverter as f, admitDiscordAudioInput as g, DiscordAudioOutputStatus as h, enableDaveReceivePassthrough as i, createDiscordOpusEncodeStream as l, writeVoiceWavFile as m, analyzeVoiceReceiveError as n, noteVoiceDecryptFailure as o, decodeOpusStreamChunks as p, createVoiceReceiveRecoveryState as r, recoverDaveZeroTransition as s, DECRYPT_FAILURE_WINDOW_MS as t, createDiscordOpusPlaybackStream as u, releaseDiscordAudioInput as v, serializeDiscordAudioError as x, restoreDiscordAudioError as y };
514
+ export { releaseDiscordAudioInput as _, noteVoiceDecryptFailure as a, serializeDiscordAudioError as b, createDiscordOpusEncodeStream as c, createRealtimePcmToDiscordConverter as d, decodeOpusStreamChunks as f, getDiscordAudioOutputStatus as g, admitDiscordAudioInput as h, enableDaveReceivePassthrough as i, createDiscordOpusPlaybackStream as l, DiscordAudioOutputStatus as m, analyzeVoiceReceiveError as n, recoverDaveZeroTransition as o, writeVoiceWavFile as p, createVoiceReceiveRecoveryState as r, resetVoiceReceiveRecoveryState as s, DECRYPT_FAILURE_WINDOW_MS as t, createDiscordPcmToRealtimeConverter as u, restoreDiscordAudioError as v, setDiscordAudioOutputStatus as x, retireDiscordAudioOutput as y };
@@ -1,6 +1,6 @@
1
- import { o as normalizeDiscordSlug } from "./channel-type-DKnjV1XW.mjs";
2
- import { m as normalizeDiscordToken } from "./accounts-CwJQoLjM.mjs";
3
- import { r as fetchDiscord } from "./api-CBK9zcq5.mjs";
1
+ import { o as normalizeDiscordSlug } from "./channel-type-DRCrEMss.mjs";
2
+ import { m as normalizeDiscordToken } from "./accounts-ChaMcixG.mjs";
3
+ import { r as fetchDiscord } from "./api-DVbJwZVt.mjs";
4
4
  //#region extensions/discord/src/guilds.ts
5
5
  async function listGuilds(token, fetcher, options) {
6
6
  return (await fetchDiscord("/users/@me/guilds", token, fetcher, options)).filter((guild) => typeof guild.id === "string" && typeof guild.name === "string").map((guild) => ({
@@ -14,9 +14,6 @@ async function listGuilds(token, fetcher, options) {
14
14
  function resolveDiscordAllowlistToken(token) {
15
15
  return normalizeDiscordToken(token, "channels.discord.token");
16
16
  }
17
- function buildDiscordUnresolvedResults(entries, buildResult) {
18
- return entries.map(buildResult);
19
- }
20
17
  function findDiscordGuildByName(guilds, input) {
21
18
  const slug = normalizeDiscordSlug(input);
22
19
  if (!slug) return;
@@ -31,4 +28,4 @@ function filterDiscordGuilds(guilds, params) {
31
28
  return guilds;
32
29
  }
33
30
  //#endregion
34
- export { listGuilds as i, filterDiscordGuilds as n, resolveDiscordAllowlistToken as r, buildDiscordUnresolvedResults as t };
31
+ export { resolveDiscordAllowlistToken as n, listGuilds as r, filterDiscordGuilds as t };
@@ -1,7 +1,7 @@
1
- import { Ut as __exportAll } from "./discord-BXpHW-cu.mjs";
2
- import { o as normalizeDiscordSlug, t as isDiscordThreadChannelType } from "./channel-type-DKnjV1XW.mjs";
3
- import { n as DiscordApiError, r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-CBK9zcq5.mjs";
4
- import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-CwMBzbx9.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
+ import { o as normalizeDiscordSlug, t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
3
+ import { n as DiscordApiError, r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DVbJwZVt.mjs";
4
+ import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-DPdRggu5.mjs";
5
5
  //#region extensions/discord/src/resolve-channels.ts
6
6
  var resolve_channels_exports = /* @__PURE__ */ __exportAll({ resolveDiscordChannelAllowlist: () => resolveDiscordChannelAllowlist });
7
7
  function parseDiscordChannelInput(raw) {
@@ -12,7 +12,7 @@ function parseDiscordChannelInput(raw) {
12
12
  const channelPrefix = trimmed.match(/^(?:channel:|discord:)?(\d+)$/i);
13
13
  if (channelPrefix) return { channelId: channelPrefix[1] };
14
14
  const guildPrefix = trimmed.match(/^(?:guild:|server:)?(\d+)$/i);
15
- if (guildPrefix && !trimmed.includes("/") && !trimmed.includes("#")) return {
15
+ if (guildPrefix) return {
16
16
  guildId: guildPrefix[1],
17
17
  guildOnly: true
18
18
  };
@@ -88,9 +88,20 @@ function preferActiveMatch(candidates) {
88
88
  scored.sort((a, b) => b.score - a.score);
89
89
  return scored[0]?.channel ?? candidates[0];
90
90
  }
91
+ function resolvedChannelResult(input, channel, guildName) {
92
+ return {
93
+ input,
94
+ resolved: true,
95
+ guildId: channel.guildId,
96
+ guildName,
97
+ channelId: channel.id,
98
+ channelName: channel.name,
99
+ archived: channel.archived
100
+ };
101
+ }
91
102
  async function resolveDiscordChannelAllowlist(params) {
92
103
  const token = resolveDiscordAllowlistToken(params.token);
93
- if (!token) return buildDiscordUnresolvedResults(params.entries, (input) => ({
104
+ if (!token) return params.entries.map((input) => ({
94
105
  input,
95
106
  resolved: false
96
107
  }));
@@ -146,15 +157,7 @@ async function resolveDiscordChannelAllowlist(params) {
146
157
  continue;
147
158
  }
148
159
  const guild = guilds.find((entry) => entry.id === channel.guildId);
149
- results.push({
150
- input,
151
- resolved: true,
152
- guildId: channel.guildId,
153
- guildName: guild?.name,
154
- channelId: channel.id,
155
- channelName: channel.name,
156
- archived: channel.archived
157
- });
160
+ results.push(resolvedChannelResult(input, channel, guild?.name));
158
161
  continue;
159
162
  }
160
163
  if (result.status === "not-found" && parsed.guildId) {
@@ -162,15 +165,7 @@ async function resolveDiscordChannelAllowlist(params) {
162
165
  if (guild) {
163
166
  const match = preferActiveMatch((await getChannels(guild.id)).filter((channel) => normalizeDiscordSlug(channel.name) === normalizeDiscordSlug(channelId)));
164
167
  if (match) {
165
- results.push({
166
- input,
167
- resolved: true,
168
- guildId: guild.id,
169
- guildName: guild.name,
170
- channelId: match.id,
171
- channelName: match.name,
172
- archived: match.archived
173
- });
168
+ results.push(resolvedChannelResult(input, match, guild.name));
174
169
  continue;
175
170
  }
176
171
  }
@@ -205,15 +200,7 @@ async function resolveDiscordChannelAllowlist(params) {
205
200
  let matches = channels.filter((channel) => isNumericId ? channel.id === channelQuery : normalizeDiscordSlug(channel.name) === normalizedChannelQuery);
206
201
  if (isNumericId && matches.length === 0) matches = channels.filter((channel) => normalizeDiscordSlug(channel.name) === normalizedChannelQuery);
207
202
  const match = preferActiveMatch(matches);
208
- if (match) results.push({
209
- input,
210
- resolved: true,
211
- guildId: guild.id,
212
- guildName: guild.name,
213
- channelId: match.id,
214
- channelName: match.name,
215
- archived: match.archived
216
- });
203
+ if (match) results.push(resolvedChannelResult(input, match, guild.name));
217
204
  else results.push({
218
205
  input,
219
206
  resolved: false,
@@ -242,13 +229,7 @@ async function resolveDiscordChannelAllowlist(params) {
242
229
  if (match) {
243
230
  const guild = guilds.find((entry) => entry.id === match.guildId);
244
231
  results.push({
245
- input,
246
- resolved: true,
247
- guildId: match.guildId,
248
- guildName: guild?.name,
249
- channelId: match.id,
250
- channelName: match.name,
251
- archived: match.archived,
232
+ ...resolvedChannelResult(input, match, guild?.name),
252
233
  note: candidates.length > 1 && guild?.name ? `matched multiple; chose ${guild.name}` : void 0
253
234
  });
254
235
  continue;
@@ -1,6 +1,6 @@
1
- import { Ut as __exportAll } from "./discord-BXpHW-cu.mjs";
2
- import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-CBK9zcq5.mjs";
3
- import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-CwMBzbx9.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
+ import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DVbJwZVt.mjs";
3
+ import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-DPdRggu5.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/discord/src/resolve-users.ts
6
6
  var resolve_users_exports = /* @__PURE__ */ __exportAll({ resolveDiscordUserAllowlist: () => resolveDiscordUserAllowlist });
@@ -45,7 +45,7 @@ function scoreDiscordMember(member, query) {
45
45
  }
46
46
  async function resolveDiscordUserAllowlist(params) {
47
47
  const token = resolveDiscordAllowlistToken(params.token);
48
- if (!token) return buildDiscordUnresolvedResults(params.entries, (input) => ({
48
+ if (!token) return params.entries.map((input) => ({
49
49
  input,
50
50
  resolved: false
51
51
  }));
@@ -1,6 +1,6 @@
1
- import { v as RateLimitError } from "./discord-BXpHW-cu.mjs";
2
- import { parseStrictNonNegativeInteger, resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
1
+ import { v as RateLimitError } from "./discord-0xJYfdDD.mjs";
3
2
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
3
+ import { parseStrictNonNegativeInteger, resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
4
4
  import { collectErrorGraphCandidates, extractErrorCode, formatErrorMessage, readErrorName } from "openclaw/plugin-sdk/error-runtime";
5
5
  import { classifyTransientNetworkErrorCode, createChannelApiRetryRunner, resolveRetryConfig, retryAsync } from "openclaw/plugin-sdk/retry-runtime";
6
6
  import { buildMessagingTarget, parseMentionPrefixOrAtUserTarget, requireTargetKind } from "openclaw/plugin-sdk/channel-targets";
@@ -692,4 +692,4 @@ function createDiscordRetryRunner(params) {
692
692
  };
693
693
  }
694
694
  //#endregion
695
- export { normalizeDiscordMessagingTarget as _, recordDiscordMessageCreateAmbiguity as a, resolveDiscordChannelId as b, createDiscordSendReceiptFromResults as c, createReusableDiscordReplyReference as d, resolveDiscordReplyMessageId as f, matchesDiscordToolContextTarget as g, looksLikeDiscordTargetId as h, hasDiscordMessageCreateAmbiguity as i, createDiscordSendResult as l, allowFromContainsDiscordUserId as m, classifyDiscordDeliveryFailure as n, chunkDiscordTextWithMode as o, resolveDiscordReplyReference as p, createDiscordRetryRunner as r, createDiscordSendReceipt as s, canFallbackDiscordWebhookSend as t, toDiscordOutboundDeliveryResult as u, normalizeDiscordOutboundTarget as v, parseDiscordTarget as y };
695
+ export { matchesDiscordToolContextTarget as _, recordDiscordMessageCreateAmbiguity as a, parseDiscordTarget as b, createDiscordSendReceipt as c, toDiscordOutboundDeliveryResult as d, createReusableDiscordReplyReference as f, looksLikeDiscordTargetId as g, allowFromContainsDiscordUserId as h, hasDiscordMessageCreateAmbiguity as i, createDiscordSendReceiptFromResults as l, resolveDiscordReplyReference as m, classifyDiscordDeliveryFailure as n, chunkDiscordTextWithMode as o, resolveDiscordReplyMessageId as p, createDiscordRetryRunner as r, findGraphemeChunkEnd as s, canFallbackDiscordWebhookSend as t, createDiscordSendResult as u, normalizeDiscordMessagingTarget as v, resolveDiscordChannelId as x, normalizeDiscordOutboundTarget as y };
@@ -0,0 +1,28 @@
1
+ import "node:module";
2
+ //#region \0rolldown/runtime.js
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __exportAll = (all, no_symbols) => {
8
+ let target = {};
9
+ for (var name in all) __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true
12
+ });
13
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
14
+ return target;
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
18
+ key = keys[i];
19
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
20
+ get: ((k) => from[k]).bind(null, key),
21
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
22
+ });
23
+ }
24
+ return to;
25
+ };
26
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
27
+ //#endregion
28
+ export { __reExport as n, __exportAll as t };