@openclaw/discord 2026.10.1 → 2026.10.5-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/.setup/account-inspect-8cCu6uPG.mjs +31 -0
  2. package/dist/.setup/{accounts-HE9-mj1L.mjs → accounts-ljrzXBJi.mjs} +47 -45
  3. package/dist/.setup/{allow-list-vxkG9_JD.mjs → allow-list-B_ToXtew.mjs} +34 -101
  4. package/dist/.setup/{api-DlNUkDqj.mjs → api-CtmE1OUN.mjs} +25 -31
  5. package/dist/.setup/{approval-handler.runtime-DmnEa54W.mjs → approval-handler.runtime-D7FoZSn0.mjs} +30 -53
  6. package/dist/.setup/{approval-message-updates-B0jdSqOj.mjs → approval-message-updates-CIGByUcE.mjs} +2 -2
  7. package/dist/.setup/{audit-BpikUwN_.mjs → audit-zSawfbsN.mjs} +5 -8
  8. package/dist/.setup/{channel-Dr-AUnGt.mjs → channel-DI7DMzu0.mjs} +136 -215
  9. package/dist/.setup/{channel-access-BRp3Y-rF.mjs → channel-access-DasWY_OV.mjs} +6 -7
  10. package/dist/.setup/{channel.setup-BmNvkidb.mjs → channel.setup-DdFVN1mr.mjs} +35 -64
  11. package/dist/.setup/{components-DLJR0xU-.mjs → components-HN9052L1.mjs} +123 -146
  12. package/dist/.setup/{config-schema-BQWfnSCx.mjs → config-schema-_uBILpQf.mjs} +7 -3
  13. package/dist/.setup/{conversation-binding-route-DicJC1Lj.mjs → conversation-binding-route-DTjCBx-O.mjs} +1 -1
  14. package/dist/.setup/{directory-config-gqsdcplU.mjs → directory-config-3iVub-3m.mjs} +1 -1
  15. package/dist/.setup/{directory-live-Bipr0eUJ.mjs → directory-live-DLygQVtW.mjs} +18 -22
  16. package/dist/.setup/{discord-9gysrhzp.mjs → discord-BGqgx-yd.mjs} +686 -854
  17. package/dist/.setup/{doctor-B2bskDcF.mjs → doctor-DSrNJ7m2.mjs} +36 -47
  18. package/dist/.setup/{doctor-contract-Bg3NPAMw.mjs → doctor-contract-Bwv8EuQ_.mjs} +7 -16
  19. package/dist/.setup/{handle-action-UmkjXBfo.mjs → handle-action-CXH1h1tq.mjs} +25 -38
  20. package/dist/.setup/{handle-action.guild-admin-CB4sc9VV.mjs → handle-action.guild-admin-CHKW6PIs.mjs} +25 -31
  21. package/dist/.setup/{live-policy-config-VxexfRKo.mjs → live-policy-config-BPoB3eQi.mjs} +1 -1
  22. package/dist/.setup/{message-handler-BK69A-NB.mjs → message-handler-Ii_etru1.mjs} +9 -14
  23. package/dist/.setup/{message-handler.preflight-DFpsh90H.mjs → message-handler.preflight-C7YuSRl_.mjs} +79 -128
  24. package/dist/.setup/{message-handler.preflight-pluralkit-BXGGVmpe.mjs → message-handler.preflight-pluralkit-C3iAG--b.mjs} +6 -6
  25. package/dist/.setup/{message-handler.process-TKoqcqIP.mjs → message-handler.process-ClgWYH6o.mjs} +234 -206
  26. package/dist/.setup/{outbound-adapter-D4wRAb5S.mjs → outbound-adapter-D8OOIuKn.mjs} +73 -112
  27. package/dist/.setup/{outbound-session-route-BvBH4LC6.mjs → outbound-session-route-B0Hpwn3Q.mjs} +57 -115
  28. package/dist/.setup/output-activity-uBpMSX75.mjs +11 -0
  29. package/dist/.setup/{pluralkit-a6_NLfH9.mjs → pluralkit-B64dfq_j.mjs} +3 -1
  30. package/dist/.setup/{preflight-audio-DHGIHEpv.mjs → preflight-audio-wWgsZG5F.mjs} +1 -5
  31. package/dist/.setup/{presence-cache-Dg3_dADn.mjs → presence-cache-DCeTsL73.mjs} +3 -6
  32. package/dist/.setup/{probe-BwSKpnZf.mjs → probe-D3P1x4aN.mjs} +10 -18
  33. package/dist/.setup/{provider-YP8gN9_o.mjs → provider-D9EzOfG8.mjs} +2990 -3903
  34. package/dist/.setup/{provider-session.runtime-D1gkPxHT.mjs → provider-session.runtime-CsnRvddI.mjs} +5 -5
  35. package/dist/.setup/provider.runtime-BQVcM7Pg.mjs +2 -0
  36. package/dist/.setup/{realtime-session.runtime-BKUQBy1u.mjs → realtime-session.runtime-CxGBk8H-.mjs} +69 -98
  37. package/dist/.setup/{receive-recovery-DgkX7Qvi.mjs → receive-recovery-eVmK2_hl.mjs} +2 -12
  38. package/dist/.setup/resolve-allowlist-common-DNSsUQRF.mjs +66 -0
  39. package/dist/.setup/resolve-channels-UdT38DzU.mjs +173 -0
  40. package/dist/.setup/{resolve-users-DNrwvunm.mjs → resolve-users-DnCsrXZ_.mjs} +12 -41
  41. package/dist/.setup/{runtime-CESTexGn.mjs → runtime-CRTkKU1G.mjs} +202 -313
  42. package/dist/.setup/{runtime-DPcmPST9.mjs → runtime-DPm3gZXk.mjs} +2 -2
  43. package/dist/.setup/{secret-config-contract-uOE2J7yM.mjs → secret-config-contract-CIsH7R3B.mjs} +9 -18
  44. package/dist/.setup/{security-audit-D42cp5N7.mjs → security-audit-BFT84Uny.mjs} +1 -2
  45. package/dist/.setup/security-contract-DNyyjTZZ.mjs +19 -0
  46. package/dist/.setup/{send-CJk3VP5q.mjs → send-DbILKgcm.mjs} +184 -241
  47. package/dist/.setup/{send.components-dPljuV24.mjs → send.components-FxOS3CeP.mjs} +47 -63
  48. package/dist/.setup/{send.outbound-rOboMO_6.mjs → send.outbound-_jx4Xpd3.mjs} +178 -202
  49. package/dist/.setup/{send.receipt-DVOg2Oaw.mjs → send.receipt-BAlzXd8e.mjs} +33 -109
  50. package/dist/.setup/{send.shared-C4CN24D9.mjs → send.shared-CjQ4jbMA.mjs} +97 -153
  51. package/dist/.setup/{sender-identity-AHpUNr72.mjs → sender-identity-BNBvGt1l.mjs} +1 -1
  52. package/dist/.setup/setup-plugin-api-xfOFmxHP.mjs +3 -0
  53. package/dist/.setup/{shared-BoBnM5kM.mjs → shared-CestGDpq.mjs} +30 -20
  54. package/dist/.setup/{subagent-hooks-HH8Uy9cx.mjs → subagent-hooks-CME7dSGf.mjs} +5 -10
  55. package/dist/.setup/{system-events-Cwxaww8i.mjs → system-events-BwwSDCw4.mjs} +2 -2
  56. package/dist/.setup/target-parsing-C-HyNxcE.mjs +48 -0
  57. package/dist/.setup/{target-resolver-CSFoPQ12.mjs → target-resolver-Bse8fuTi.mjs} +11 -27
  58. package/dist/.setup/targets-DZJjkzwv.mjs +3 -0
  59. package/dist/.setup/{thread-bindings-DjQCkmsd.mjs → thread-bindings-0hPTSK14.mjs} +61 -52
  60. package/dist/.setup/{thread-bindings.manager-D2-GYZ5s.mjs → thread-bindings.manager-CdNa6UIs.mjs} +138 -211
  61. package/dist/.setup/{thread-bindings.session-updates-Bu_CGr_O.mjs → thread-bindings.session-updates-DGSljVf6.mjs} +60 -99
  62. package/dist/.setup/threading-BKe3E3tp.mjs +246 -0
  63. package/dist/.setup/{timeouts-pun7VJ02.mjs → timeouts-CuNARfyw.mjs} +10 -18
  64. package/dist/.setup/{transcripts-source-CaZQnGRH.mjs → transcripts-source-0qQYVu2H.mjs} +50 -368
  65. package/dist/.setup/{voice-runtime-DDymtIw8.mjs → voice-runtime-QlZJ4sHv.mjs} +166 -322
  66. package/dist/account-inspect-api.js +1 -1
  67. package/dist/action-runtime-api.js +1 -1
  68. package/dist/activities-api.js +77 -120
  69. package/dist/api.js +19 -18
  70. package/dist/channel-config-api.js +1 -1
  71. package/dist/channel-plugin-api.js +1 -1
  72. package/dist/directory-contract-api.js +1 -1
  73. package/dist/doctor-contract-api.js +1 -1
  74. package/dist/runtime-api.js +21 -20
  75. package/dist/secret-contract-api.js +1 -1
  76. package/dist/security-audit-contract-api.js +1 -1
  77. package/dist/security-contract-api.js +1 -1
  78. package/dist/setup-entry.js +1 -1
  79. package/dist/setup-plugin-api.js +1 -1
  80. package/dist/src/voice/audio-worker.runtime.js +38 -57
  81. package/dist/subagent-hooks-api.js +1 -1
  82. package/dist/transcripts-source-api.js +1 -1
  83. package/node_modules/discord-api-types/_generated_/rest/v10/interfaces.d.ts +21 -0
  84. package/node_modules/discord-api-types/_generated_/rest/v10/interfaces.d.ts.map +1 -1
  85. package/node_modules/discord-api-types/_generated_/rest/v9/interfaces.d.ts +21 -0
  86. package/node_modules/discord-api-types/_generated_/rest/v9/interfaces.d.ts.map +1 -1
  87. package/node_modules/discord-api-types/globals.d.ts +6 -0
  88. package/node_modules/discord-api-types/globals.d.ts.map +1 -1
  89. package/node_modules/discord-api-types/globals.js +6 -0
  90. package/node_modules/discord-api-types/globals.js.map +1 -1
  91. package/node_modules/discord-api-types/package.json +3 -3
  92. package/node_modules/discord-api-types/payloads/index.mjs +1 -0
  93. package/node_modules/discord-api-types/payloads/v10/applicationIdentityProfile.d.ts +207 -0
  94. package/node_modules/discord-api-types/payloads/v10/applicationIdentityProfile.d.ts.map +1 -0
  95. package/node_modules/discord-api-types/payloads/v10/applicationIdentityProfile.js +25 -0
  96. package/node_modules/discord-api-types/payloads/v10/applicationIdentityProfile.js.map +1 -0
  97. package/node_modules/discord-api-types/payloads/v10/autoModeration.d.ts +1 -1
  98. package/node_modules/discord-api-types/payloads/v10/autoModeration.d.ts.map +1 -1
  99. package/node_modules/discord-api-types/payloads/v10/guild.d.ts +27 -23
  100. package/node_modules/discord-api-types/payloads/v10/guild.d.ts.map +1 -1
  101. package/node_modules/discord-api-types/payloads/v10/guild.js +26 -22
  102. package/node_modules/discord-api-types/payloads/v10/guild.js.map +1 -1
  103. package/node_modules/discord-api-types/payloads/v10/index.d.ts +1 -0
  104. package/node_modules/discord-api-types/payloads/v10/index.d.ts.map +1 -1
  105. package/node_modules/discord-api-types/payloads/v10/index.js +1 -0
  106. package/node_modules/discord-api-types/payloads/v10/index.js.map +1 -1
  107. package/node_modules/discord-api-types/payloads/v10/index.mjs +1 -0
  108. package/node_modules/discord-api-types/payloads/v9/applicationIdentityProfile.d.ts +207 -0
  109. package/node_modules/discord-api-types/payloads/v9/applicationIdentityProfile.d.ts.map +1 -0
  110. package/node_modules/discord-api-types/payloads/v9/applicationIdentityProfile.js +25 -0
  111. package/node_modules/discord-api-types/payloads/v9/applicationIdentityProfile.js.map +1 -0
  112. package/node_modules/discord-api-types/payloads/v9/autoModeration.d.ts +1 -1
  113. package/node_modules/discord-api-types/payloads/v9/autoModeration.d.ts.map +1 -1
  114. package/node_modules/discord-api-types/payloads/v9/guild.d.ts +27 -23
  115. package/node_modules/discord-api-types/payloads/v9/guild.d.ts.map +1 -1
  116. package/node_modules/discord-api-types/payloads/v9/guild.js +26 -22
  117. package/node_modules/discord-api-types/payloads/v9/guild.js.map +1 -1
  118. package/node_modules/discord-api-types/payloads/v9/index.d.ts +1 -0
  119. package/node_modules/discord-api-types/payloads/v9/index.d.ts.map +1 -1
  120. package/node_modules/discord-api-types/payloads/v9/index.js +1 -0
  121. package/node_modules/discord-api-types/payloads/v9/index.js.map +1 -1
  122. package/node_modules/discord-api-types/payloads/v9/index.mjs +1 -0
  123. package/node_modules/discord-api-types/rest/common.d.ts +2 -0
  124. package/node_modules/discord-api-types/rest/common.d.ts.map +1 -1
  125. package/node_modules/discord-api-types/rest/common.js +2 -0
  126. package/node_modules/discord-api-types/rest/common.js.map +1 -1
  127. package/node_modules/discord-api-types/rest/v10/applicationIdentityProfile.d.ts +70 -0
  128. package/node_modules/discord-api-types/rest/v10/applicationIdentityProfile.d.ts.map +1 -0
  129. package/node_modules/discord-api-types/rest/v10/applicationIdentityProfile.js +3 -0
  130. package/node_modules/discord-api-types/rest/v10/applicationIdentityProfile.js.map +1 -0
  131. package/node_modules/discord-api-types/rest/v10/index.d.ts +1 -0
  132. package/node_modules/discord-api-types/rest/v10/index.d.ts.map +1 -1
  133. package/node_modules/discord-api-types/rest/v10/index.js +29 -0
  134. package/node_modules/discord-api-types/rest/v10/index.js.map +1 -1
  135. package/node_modules/discord-api-types/rest/v10/interactions.d.ts +4 -2
  136. package/node_modules/discord-api-types/rest/v10/interactions.d.ts.map +1 -1
  137. package/node_modules/discord-api-types/rest/v10/user.d.ts +2 -2
  138. package/node_modules/discord-api-types/rest/v10/user.d.ts.map +1 -1
  139. package/node_modules/discord-api-types/rest/v9/applicationIdentityProfile.d.ts +70 -0
  140. package/node_modules/discord-api-types/rest/v9/applicationIdentityProfile.d.ts.map +1 -0
  141. package/node_modules/discord-api-types/rest/v9/applicationIdentityProfile.js +3 -0
  142. package/node_modules/discord-api-types/rest/v9/applicationIdentityProfile.js.map +1 -0
  143. package/node_modules/discord-api-types/rest/v9/index.d.ts +1 -0
  144. package/node_modules/discord-api-types/rest/v9/index.d.ts.map +1 -1
  145. package/node_modules/discord-api-types/rest/v9/index.js +29 -0
  146. package/node_modules/discord-api-types/rest/v9/index.js.map +1 -1
  147. package/node_modules/discord-api-types/rest/v9/interactions.d.ts +4 -2
  148. package/node_modules/discord-api-types/rest/v9/interactions.d.ts.map +1 -1
  149. package/node_modules/discord-api-types/rest/v9/user.d.ts +2 -2
  150. package/node_modules/discord-api-types/rest/v9/user.d.ts.map +1 -1
  151. package/node_modules/discord-api-types/v10.mjs +1 -0
  152. package/node_modules/discord-api-types/v9.mjs +1 -0
  153. package/node_modules/ws/lib/websocket.js +17 -3
  154. package/node_modules/ws/package.json +1 -1
  155. package/openclaw.plugin.json +3 -6
  156. package/package.json +7 -12
  157. package/dist/.setup/account-inspect-DsER5ILV.mjs +0 -45
  158. package/dist/.setup/provider.runtime-CZ51OIgD.mjs +0 -2
  159. package/dist/.setup/resolve-allowlist-common-BUyU3C-T.mjs +0 -27
  160. package/dist/.setup/resolve-channels-DA6QlhZN.mjs +0 -246
  161. package/dist/.setup/security-contract-DSHk7I2w.mjs +0 -26
  162. package/dist/.setup/setup-plugin-api-BVlCz3fm.mjs +0 -3
  163. package/dist/.setup/targets-bqXQENmX.mjs +0 -3
  164. package/dist/control-ui/2afbdab1d3aa65a789d8a3eba666f4b1ec5df07073538fe30d6cf32093a1fb2d/index.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { Permissions, Snowflake } from '../../globals';
2
- import type { APIChannel, APIConnection, APIGuildMember, APIUser, APIApplicationRoleConnection, GuildFeature } from '../../payloads/v9/index';
2
+ import type { APIConnection, APIDMChannel, APIGuildMember, APIUser, APIApplicationRoleConnection, GuildFeature } from '../../payloads/v9/index';
3
3
  /**
4
4
  * @see {@link https://discord.com/developers/docs/resources/user#get-current-user}
5
5
  */
@@ -89,7 +89,7 @@ export interface RESTPostAPICurrentUserCreateDMChannelJSONBody {
89
89
  /**
90
90
  * @see {@link https://discord.com/developers/docs/resources/user#create-dm}
91
91
  */
92
- export type RESTPostAPICurrentUserCreateDMChannelResult = APIChannel;
92
+ export type RESTPostAPICurrentUserCreateDMChannelResult = APIDMChannel;
93
93
  /**
94
94
  * @see {@link https://discord.com/developers/docs/resources/user#get-user-connections}
95
95
  */
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,OAAO,EACP,4BAA4B,EAC5B,YAAY,EACZ,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAChD;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC9C,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,8BAA8B,EAAE,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,SAAS,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,6CAA6C;IAC7D;;OAEG;IACH,YAAY,EAAE,SAAS,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,2CAA2C,GAAG,UAAU,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,aAAa,EAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,oDAAoD,GAAG,4BAA4B,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,sDAAsD;IACtE;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,MAAM,oDAAoD,GAAG,4BAA4B,CAAC;AAEhG;;GAEG;AACH,MAAM,MAAM,uDAAuD,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,OAAO,EACP,4BAA4B,EAC5B,YAAY,EACZ,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAChD;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC9C,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,8BAA8B,EAAE,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,SAAS,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,6CAA6C;IAC7D;;OAEG;IACH,YAAY,EAAE,SAAS,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,2CAA2C,GAAG,YAAY,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,aAAa,EAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,oDAAoD,GAAG,4BAA4B,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,sDAAsD;IACtE;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,MAAM,oDAAoD,GAAG,4BAA4B,CAAC;AAEhG;;GAEG;AACH,MAAM,MAAM,uDAAuD,GAAG,SAAS,CAAC"}
@@ -12,6 +12,7 @@ export const ApplicationCommandOptionType = mod.ApplicationCommandOptionType;
12
12
  export const ApplicationCommandPermissionType = mod.ApplicationCommandPermissionType;
13
13
  export const ApplicationCommandType = mod.ApplicationCommandType;
14
14
  export const ApplicationFlags = mod.ApplicationFlags;
15
+ export const ApplicationIdentityProfileDynamicFieldType = mod.ApplicationIdentityProfileDynamicFieldType;
15
16
  export const ApplicationIntegrationType = mod.ApplicationIntegrationType;
16
17
  export const ApplicationRoleConnectionMetadataType = mod.ApplicationRoleConnectionMetadataType;
17
18
  export const ApplicationWebhookEventStatus = mod.ApplicationWebhookEventStatus;
@@ -12,6 +12,7 @@ export const ApplicationCommandOptionType = mod.ApplicationCommandOptionType;
12
12
  export const ApplicationCommandPermissionType = mod.ApplicationCommandPermissionType;
13
13
  export const ApplicationCommandType = mod.ApplicationCommandType;
14
14
  export const ApplicationFlags = mod.ApplicationFlags;
15
+ export const ApplicationIdentityProfileDynamicFieldType = mod.ApplicationIdentityProfileDynamicFieldType;
15
16
  export const ApplicationIntegrationType = mod.ApplicationIntegrationType;
16
17
  export const ApplicationRoleConnectionMetadataType = mod.ApplicationRoleConnectionMetadataType;
17
18
  export const ApplicationWebhookEventStatus = mod.ApplicationWebhookEventStatus;
@@ -75,11 +75,24 @@ class WebSocket extends EventEmitter {
75
75
  this._redirects = 0;
76
76
 
77
77
  if (protocols === undefined) {
78
- protocols = [];
78
+ if (!options || options.protocols === undefined) {
79
+ protocols = [];
80
+ } else if (Array.isArray(options.protocols)) {
81
+ protocols = options.protocols;
82
+ } else {
83
+ protocols = [options.protocols];
84
+ }
79
85
  } else if (!Array.isArray(protocols)) {
80
86
  if (typeof protocols === 'object' && protocols !== null) {
81
87
  options = protocols;
82
- protocols = [];
88
+
89
+ if (options.protocols === undefined) {
90
+ protocols = [];
91
+ } else if (Array.isArray(options.protocols)) {
92
+ protocols = options.protocols;
93
+ } else {
94
+ protocols = [options.protocols];
95
+ }
83
96
  } else {
84
97
  protocols = [protocols];
85
98
  }
@@ -318,7 +331,6 @@ class WebSocket extends EventEmitter {
318
331
  return;
319
332
  }
320
333
 
321
- this._readyState = WebSocket.CLOSING;
322
334
  this._sender.close(code, data, !this._isServer, (err) => {
323
335
  //
324
336
  // This error is handled by the `'error'` listener on the socket. We only
@@ -336,6 +348,7 @@ class WebSocket extends EventEmitter {
336
348
  }
337
349
  });
338
350
 
351
+ this._readyState = WebSocket.CLOSING;
339
352
  setCloseTimer(this);
340
353
  }
341
354
 
@@ -681,6 +694,7 @@ function initAsClient(websocket, address, protocols, options) {
681
694
  socketPath: undefined,
682
695
  hostname: undefined,
683
696
  protocol: undefined,
697
+ protocols: undefined,
684
698
  timeout: undefined,
685
699
  method: 'GET',
686
700
  host: undefined,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ws",
3
- "version": "8.21.3",
3
+ "version": "8.22.0",
4
4
  "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
5
  "keywords": [
6
6
  "HyBi",
@@ -45,9 +45,6 @@
45
45
  "additionalProperties": false,
46
46
  "properties": {}
47
47
  },
48
- "controlUi": {
49
- "entry": "dist/control-ui/2afbdab1d3aa65a789d8a3eba666f4b1ec5df07073538fe30d6cf32093a1fb2d/index.js"
50
- },
51
48
  "channelConfigs": {
52
49
  "discord": {
53
50
  "schema": {
@@ -3741,11 +3738,11 @@
3741
3738
  },
3742
3739
  "streaming": {
3743
3740
  "label": "Discord Streaming Mode",
3744
- "help": "Discord preview streaming is off by default. Set mode to \"partial\", \"block\", or \"progress\" to opt in. Run openclaw doctor --fix to migrate legacy keys."
3741
+ "help": "Discord shows useful work status by default without streaming answer text. Set mode to \"off\" for quiet final-only delivery, or \"partial\"/\"block\" for answer previews. Run openclaw doctor --fix to migrate legacy keys."
3745
3742
  },
3746
3743
  "streaming.mode": {
3747
3744
  "label": "Discord Streaming Mode",
3748
- "help": "Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". Default: \"off\"."
3745
+ "help": "Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". Default: \"progress\"; \"off\" explicitly disables progress drafts."
3749
3746
  },
3750
3747
  "streaming.chunkMode": {
3751
3748
  "label": "Discord Chunk Mode",
@@ -3797,7 +3794,7 @@
3797
3794
  },
3798
3795
  "streaming.progress.toolProgress": {
3799
3796
  "label": "Discord Progress Tool Lines",
3800
- "help": "Show individual tool activity, including intermediate failures, in progress drafts (default: false). Quiet drafts retain plans, approval requests, and authored progress text. Terminal task errors remain visible."
3797
+ "help": "Show the detailed rolling tool log (default: false). Work status, delegated-task states, plans, and authored progress remain visible without it. Set streaming.mode to off for quiet final-only delivery."
3801
3798
  },
3802
3799
  "streaming.progress.commentary": {
3803
3800
  "label": "Discord Progress Commentary",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.10.1",
3
+ "version": "2026.10.5-beta.1",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,16 +10,16 @@
10
10
  "dependencies": {
11
11
  "@discord/embedded-app-sdk": "2.5.0",
12
12
  "@discordjs/voice": "0.19.2",
13
- "discord-api-types": "0.38.55",
13
+ "discord-api-types": "0.38.56",
14
14
  "libopus-wasm": "0.4.1",
15
15
  "mdast-util-from-markdown": "2.0.3",
16
16
  "typebox": "1.3.34",
17
17
  "undici": "8.11.2",
18
- "ws": "8.21.3",
18
+ "ws": "8.22.0",
19
19
  "zod": "4.6.5"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.10.1"
22
+ "openclaw": ">=2026.10.5-beta.1"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -95,14 +95,14 @@
95
95
  "allowInvalidConfigRecovery": true
96
96
  },
97
97
  "compat": {
98
- "pluginApi": ">=2026.10.1"
98
+ "pluginApi": ">=2026.10.5-beta.1"
99
99
  },
100
100
  "build": {
101
101
  "bundledDist": false,
102
102
  "workerEntries": [
103
103
  "./src/voice/audio-worker.runtime.ts"
104
104
  ],
105
- "openclawVersion": "2026.10.1",
105
+ "openclawVersion": "2026.10.5-beta.1",
106
106
  "staticAssets": [
107
107
  {
108
108
  "source": "./assets/embedded-app-sdk.mjs",
@@ -111,17 +111,12 @@
111
111
  ]
112
112
  },
113
113
  "assetScripts": {
114
- "build": "node --import ../../scripts/tsx.mjs ../../scripts/build-discord-activity-sdk.mts && cd ../.. && node --import ./scripts/tsx.mjs scripts/build-plugin-control-ui.mts extensions/discord",
115
- "copy": "cd ../.. && node --import ./scripts/tsx.mjs scripts/build-plugin-control-ui.mts extensions/discord --copy",
116
- "buildOutputs": [
117
- "openclaw.plugin.json"
118
- ]
114
+ "build": "node --import ../../scripts/tsx.mjs ../../scripts/build-discord-activity-sdk.mts"
119
115
  },
120
116
  "release": {
121
117
  "publishToClawHub": true,
122
118
  "publishToNpm": true
123
119
  },
124
- "controlUi": "./browser/index.ts",
125
120
  "runtimeExtensions": [
126
121
  "./dist/index.js"
127
122
  ],
@@ -1,45 +0,0 @@
1
- import { _ as inspectDiscordAccountTokenState, o as mergeDiscordAccountConfig, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig, v as resolveDiscordAccountAvailability } from "./accounts-HE9-mj1L.mjs";
2
- import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
3
- import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
4
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
- //#region extensions/discord/src/account-inspect.ts
6
- function inspectDiscordAccountPrimary(params) {
7
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultDiscordAccountId(params.cfg));
8
- const merged = mergeDiscordAccountConfig(params.cfg, accountId);
9
- const enabled = params.cfg.channels?.discord?.enabled !== false && merged.enabled !== false;
10
- const accountConfig = resolveDiscordAccountConfig(params.cfg, accountId);
11
- const hasAccountToken = Boolean(accountConfig && Object.hasOwn(accountConfig, "token"));
12
- return inspectDiscordAccountTokenState({
13
- base: {
14
- accountId,
15
- enabled,
16
- name: normalizeOptionalString(merged.name)
17
- },
18
- config: merged,
19
- accountToken: accountConfig?.token,
20
- hasAccountToken,
21
- channelToken: params.cfg.channels?.discord?.token,
22
- resolveFallbackToken: () => {
23
- const envToken = accountId === DEFAULT_ACCOUNT_ID ? normalizeSecretInputString(params.envToken ?? process.env.DISCORD_BOT_TOKEN) : void 0;
24
- return {
25
- token: envToken?.replace(/^Bot\s+/i, "") ?? "",
26
- source: envToken ? "env" : "none"
27
- };
28
- }
29
- });
30
- }
31
- function inspectDiscordAccount(params) {
32
- const account = inspectDiscordAccountPrimary(params);
33
- return {
34
- ...account,
35
- ...resolveDiscordAccountAvailability({
36
- account,
37
- resolveAccounts: () => listDiscordAccountIds(params.cfg).map((accountId) => inspectDiscordAccountPrimary({
38
- ...params,
39
- accountId
40
- }))
41
- })
42
- };
43
- }
44
- //#endregion
45
- export { inspectDiscordAccount as t };
@@ -1,2 +0,0 @@
1
- import { t as monitorDiscordProvider } from "./provider-YP8gN9_o.mjs";
2
- export { monitorDiscordProvider };
@@ -1,27 +0,0 @@
1
- import { m as normalizeDiscordToken } from "./accounts-HE9-mj1L.mjs";
2
- import { o as normalizeDiscordSlug } from "./allow-list-vxkG9_JD.mjs";
3
- import { r as fetchDiscord } from "./api-DlNUkDqj.mjs";
4
- //#region extensions/discord/src/guilds.ts
5
- async function listGuilds(token, fetcher, options) {
6
- return (await fetchDiscord("/users/@me/guilds", token, fetcher, options)).filter((guild) => typeof guild.id === "string" && typeof guild.name === "string").map((guild) => ({
7
- id: guild.id,
8
- name: guild.name,
9
- slug: normalizeDiscordSlug(guild.name)
10
- }));
11
- }
12
- //#endregion
13
- //#region extensions/discord/src/resolve-allowlist-common.ts
14
- function resolveDiscordAllowlistToken(token) {
15
- return normalizeDiscordToken(token, "channels.discord.token");
16
- }
17
- function filterDiscordGuilds(guilds, params) {
18
- if (params.guildId) return guilds.filter((guild) => guild.id === params.guildId);
19
- if (params.guildName) {
20
- const slug = normalizeDiscordSlug(params.guildName);
21
- const match = slug ? guilds.find((guild) => guild.slug === slug) : void 0;
22
- return match ? [match] : [];
23
- }
24
- return guilds;
25
- }
26
- //#endregion
27
- export { resolveDiscordAllowlistToken as n, listGuilds as r, filterDiscordGuilds as t };
@@ -1,246 +0,0 @@
1
- import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { A as isDiscordThreadChannelType, o as normalizeDiscordSlug } from "./allow-list-vxkG9_JD.mjs";
3
- import { n as DiscordApiError, r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DlNUkDqj.mjs";
4
- import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-BUyU3C-T.mjs";
5
- //#region extensions/discord/src/resolve-channels.ts
6
- var resolve_channels_exports = /* @__PURE__ */ __exportAll({ resolveDiscordChannelAllowlist: () => resolveDiscordChannelAllowlist });
7
- function parseDiscordChannelInput(raw) {
8
- const trimmed = raw.trim();
9
- if (!trimmed) return {};
10
- const mention = trimmed.match(/^<#(\d+)>$/);
11
- if (mention) return { channelId: mention[1] };
12
- const channelPrefix = trimmed.match(/^(?:channel:|discord:)?(\d+)$/i);
13
- if (channelPrefix) return { channelId: channelPrefix[1] };
14
- const guildPrefix = trimmed.match(/^(?:guild:|server:)?(\d+)$/i);
15
- if (guildPrefix) return {
16
- guildId: guildPrefix[1],
17
- guildOnly: true
18
- };
19
- const split = trimmed.includes("/") ? trimmed.split("/") : trimmed.split("#");
20
- if (split.length >= 2) {
21
- const guild = split[0]?.trim();
22
- const channel = split.slice(1).join("#").trim();
23
- if (!channel) return guild ? {
24
- guild: guild.trim(),
25
- guildOnly: true
26
- } : {};
27
- if (guild && /^\d+$/.test(guild)) {
28
- if (/^\d+$/.test(channel)) return {
29
- guildId: guild,
30
- channelId: channel
31
- };
32
- return {
33
- guildId: guild,
34
- channel
35
- };
36
- }
37
- return {
38
- guild,
39
- channel
40
- };
41
- }
42
- return {
43
- guild: trimmed,
44
- guildOnly: true
45
- };
46
- }
47
- async function listGuildChannels(token, fetcher, guildId) {
48
- return (await fetchDiscord(`/guilds/${guildId}/channels`, token, fetcher, { timeoutMs: DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS })).map((channel) => {
49
- const archived = channel.thread_metadata?.archived;
50
- return {
51
- id: typeof channel.id === "string" ? channel.id : "",
52
- name: typeof channel.name === "string" ? channel.name : "",
53
- guildId,
54
- type: channel.type,
55
- archived
56
- };
57
- }).filter((channel) => Boolean(channel.id) && Boolean(channel.name));
58
- }
59
- async function fetchChannel(token, fetcher, channelId) {
60
- let raw;
61
- try {
62
- raw = await fetchDiscord(`/channels/${channelId}`, token, fetcher, { timeoutMs: DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS });
63
- } catch (err) {
64
- if (err instanceof DiscordApiError && err.status === 403) return { status: "forbidden" };
65
- if (err instanceof DiscordApiError && err.status === 404) return { status: "not-found" };
66
- throw err;
67
- }
68
- if (!raw || typeof raw.guild_id !== "string" || typeof raw.id !== "string") return { status: "invalid" };
69
- return {
70
- status: "found",
71
- channel: {
72
- id: raw.id,
73
- name: typeof raw.name === "string" ? raw.name : "",
74
- guildId: raw.guild_id,
75
- type: raw.type
76
- }
77
- };
78
- }
79
- function preferActiveMatch(candidates) {
80
- if (candidates.length === 0) return;
81
- const scored = candidates.map((channel) => {
82
- const isThread = isDiscordThreadChannelType(channel.type);
83
- return {
84
- channel,
85
- score: (Boolean(channel.archived) ? 0 : 2) + (isThread ? 0 : 1)
86
- };
87
- });
88
- scored.sort((a, b) => b.score - a.score);
89
- return scored[0]?.channel ?? candidates[0];
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
- }
102
- async function resolveDiscordChannelAllowlist(params) {
103
- const token = resolveDiscordAllowlistToken(params.token);
104
- if (!token) return params.entries.map((input) => ({
105
- input,
106
- resolved: false
107
- }));
108
- const fetcher = params.fetcher ?? fetch;
109
- const guilds = await listGuilds(token, fetcher, { timeoutMs: DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS });
110
- const channelsByGuild = /* @__PURE__ */ new Map();
111
- const getChannels = (guildId) => {
112
- const existing = channelsByGuild.get(guildId);
113
- if (existing) return existing;
114
- const promise = listGuildChannels(token, fetcher, guildId);
115
- channelsByGuild.set(guildId, promise);
116
- return promise;
117
- };
118
- const results = [];
119
- for (const input of params.entries) {
120
- const parsed = parseDiscordChannelInput(input);
121
- if (parsed.guildOnly) {
122
- const guild = filterDiscordGuilds(guilds, {
123
- guildId: parsed.guildId,
124
- guildName: parsed.guild
125
- })[0];
126
- if (guild) results.push({
127
- input,
128
- resolved: true,
129
- guildId: guild.id,
130
- guildName: guild.name
131
- });
132
- else results.push({
133
- input,
134
- resolved: false,
135
- guildId: parsed.guildId,
136
- guildName: parsed.guild
137
- });
138
- continue;
139
- }
140
- if (parsed.channelId) {
141
- const channelId = parsed.channelId;
142
- const result = await fetchChannel(token, fetcher, channelId);
143
- if (result.status === "found") {
144
- const channel = result.channel;
145
- if (parsed.guildId && parsed.guildId !== channel.guildId) {
146
- const expectedGuild = guilds.find((entry) => entry.id === parsed.guildId);
147
- const actualGuild = guilds.find((entry) => entry.id === channel.guildId);
148
- results.push({
149
- input,
150
- resolved: false,
151
- guildId: parsed.guildId,
152
- guildName: expectedGuild?.name,
153
- channelId,
154
- channelName: channel.name,
155
- note: actualGuild?.name ? `channel belongs to guild ${actualGuild.name}` : "channel belongs to a different guild"
156
- });
157
- continue;
158
- }
159
- const guild = guilds.find((entry) => entry.id === channel.guildId);
160
- results.push(resolvedChannelResult(input, channel, guild?.name));
161
- continue;
162
- }
163
- if (result.status === "not-found" && parsed.guildId) {
164
- const guild = guilds.find((entry) => entry.id === parsed.guildId);
165
- if (guild) {
166
- const match = preferActiveMatch((await getChannels(guild.id)).filter((channel) => normalizeDiscordSlug(channel.name) === normalizeDiscordSlug(channelId)));
167
- if (match) {
168
- results.push(resolvedChannelResult(input, match, guild.name));
169
- continue;
170
- }
171
- }
172
- }
173
- results.push({
174
- input,
175
- resolved: false,
176
- guildId: parsed.guildId,
177
- channelId
178
- });
179
- continue;
180
- }
181
- if (parsed.guildId || parsed.guild) {
182
- const guild = filterDiscordGuilds(guilds, {
183
- guildId: parsed.guildId,
184
- guildName: parsed.guild
185
- })[0];
186
- const channelQuery = parsed.channel?.trim();
187
- if (!guild || !channelQuery) {
188
- results.push({
189
- input,
190
- resolved: false,
191
- guildId: parsed.guildId,
192
- guildName: parsed.guild,
193
- channelName: channelQuery ?? parsed.channel
194
- });
195
- continue;
196
- }
197
- const channels = await getChannels(guild.id);
198
- const normalizedChannelQuery = normalizeDiscordSlug(channelQuery);
199
- const isNumericId = /^\d+$/.test(channelQuery);
200
- let matches = channels.filter((channel) => isNumericId ? channel.id === channelQuery : normalizeDiscordSlug(channel.name) === normalizedChannelQuery);
201
- if (isNumericId && matches.length === 0) matches = channels.filter((channel) => normalizeDiscordSlug(channel.name) === normalizedChannelQuery);
202
- const match = preferActiveMatch(matches);
203
- if (match) results.push(resolvedChannelResult(input, match, guild.name));
204
- else results.push({
205
- input,
206
- resolved: false,
207
- guildId: guild.id,
208
- guildName: guild.name,
209
- channelName: parsed.channel,
210
- note: `channel not found in guild ${guild.name}`
211
- });
212
- continue;
213
- }
214
- const channelName = input.trim().replace(/^#/, "");
215
- if (!channelName) {
216
- results.push({
217
- input,
218
- resolved: false,
219
- channelName
220
- });
221
- continue;
222
- }
223
- const candidates = [];
224
- for (const guild of guilds) {
225
- const channels = await getChannels(guild.id);
226
- for (const channel of channels) if (normalizeDiscordSlug(channel.name) === normalizeDiscordSlug(channelName)) candidates.push(channel);
227
- }
228
- const match = preferActiveMatch(candidates);
229
- if (match) {
230
- const guild = guilds.find((entry) => entry.id === match.guildId);
231
- results.push({
232
- ...resolvedChannelResult(input, match, guild?.name),
233
- note: candidates.length > 1 && guild?.name ? `matched multiple; chose ${guild.name}` : void 0
234
- });
235
- continue;
236
- }
237
- results.push({
238
- input,
239
- resolved: false,
240
- channelName
241
- });
242
- }
243
- return results;
244
- }
245
- //#endregion
246
- export { resolve_channels_exports as n, resolveDiscordChannelAllowlist as t };
@@ -1,26 +0,0 @@
1
- import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
2
- //#region extensions/discord/src/security-contract.ts
3
- const unsupportedSecretRefSurfacePatterns = ["channels.discord.threadBindings.webhookToken", "channels.discord.accounts.*.threadBindings.webhookToken"];
4
- function collectUnsupportedSecretRefConfigCandidates(raw) {
5
- if (!isRecord(raw)) return [];
6
- if (!isRecord(raw.channels) || !isRecord(raw.channels.discord)) return [];
7
- const candidates = [];
8
- const discord = raw.channels.discord;
9
- const threadBindings = isRecord(discord.threadBindings) ? discord.threadBindings : null;
10
- if (threadBindings) candidates.push({
11
- path: "channels.discord.threadBindings.webhookToken",
12
- value: threadBindings.webhookToken
13
- });
14
- const accounts = isRecord(discord.accounts) ? discord.accounts : null;
15
- if (!accounts) return candidates;
16
- for (const [accountId, account] of Object.entries(accounts)) {
17
- if (!isRecord(account) || !isRecord(account.threadBindings)) continue;
18
- candidates.push({
19
- path: `channels.discord.accounts.${accountId}.threadBindings.webhookToken`,
20
- value: account.threadBindings.webhookToken
21
- });
22
- }
23
- return candidates;
24
- }
25
- //#endregion
26
- export { unsupportedSecretRefSurfacePatterns as n, collectUnsupportedSecretRefConfigCandidates as t };
@@ -1,3 +0,0 @@
1
- import { t as discordSetupPlugin } from "./channel.setup-BmNvkidb.mjs";
2
- import "../setup-plugin-api.js";
3
- export { discordSetupPlugin };
@@ -1,3 +0,0 @@
1
- import "./send.receipt-DVOg2Oaw.mjs";
2
- import "./target-resolver-CSFoPQ12.mjs";
3
- export {};
@@ -1 +0,0 @@
1
- function l(i){return(o,s)=>{let e=document.createElement("a");e.className="plugin-session-header-link",e.target="_blank",e.rel="noopener noreferrer",e.dataset.linkReaderExternal="";let d=!1,a=()=>{d=!0,e.removeAttribute("href"),e.remove()},p=n=>{if(d)return;let t=n.presented&&!n.signal.aborted&&n.props.session?i(n.props.session):void 0,r=t?URL.parse(t.url):null;if(!t||!r||r.protocol!=="https:"&&r.protocol!=="http:"){e.removeAttribute("href"),e.remove();return}e.href=r.href,e.textContent=`${t.label} \u2197`,e.parentNode!==o&&o.append(e)};return s.signal.addEventListener("abort",a,{once:!0}),p(s),{update:p,dispose(){s.signal.removeEventListener("abort",a),a()}}}}var b={id:"discord",activate(i){return i.ui.registerAccessory({id:"conversation-origin",placement:"session-header",mount:l(({conversationLink:o})=>o&&URL.parse(o.url)?.hostname==="discord.com"?o:void 0)})}};export{b as default};