@openclaw/discord 2026.5.2 → 2026.5.3-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-B9ujuUtS.js +89 -0
- package/dist/account-inspect-C2UEUhbG.js +81 -0
- package/dist/account-inspect-api.js +10 -0
- package/dist/accounts-BKnkNaoA.js +128 -0
- package/dist/action-runtime-api.js +2 -0
- package/dist/agent-components.runtime-DUhLr9hy.js +4 -0
- package/dist/allow-list-ek-1hMKN.js +336 -0
- package/dist/api-DzNBVTto.js +130 -0
- package/dist/api.js +24 -0
- package/dist/approval-handler.runtime-v8nzQHlT.js +426 -0
- package/dist/approval-native-DqWGp0bM.js +153 -0
- package/dist/approval-shared-DKnwwjZM.js +93 -0
- package/dist/audit-CJ92YD6J.js +102 -0
- package/dist/channel-B3aTtBj1.js +745 -0
- package/dist/channel-access-ewDxhd9q.js +62 -0
- package/dist/channel-actions-TNih7k3w.js +140 -0
- package/dist/channel-actions.runtime-CaPytiY4.js +236 -0
- package/dist/channel-api-CTSWMrnD.js +21 -0
- package/dist/channel-config-api.js +2 -0
- package/dist/channel-plugin-api.js +2 -0
- package/dist/channel.setup-Dt4tIDrl.js +336 -0
- package/dist/components-BapWDmDM.js +760 -0
- package/dist/config-api-CFZtoMaS.js +2 -0
- package/dist/config-schema-DwFkL904.js +252 -0
- package/dist/configured-state.js +6 -0
- package/dist/contract-api.js +8 -0
- package/dist/conversation-identity-BN9wSmxJ.js +31 -0
- package/dist/directory-cache-D93eSrpB.js +62 -0
- package/dist/directory-config-LyMP0sdv.js +49 -0
- package/dist/directory-contract-api.js +2 -0
- package/dist/directory-live-BQapdpkZ.js +101 -0
- package/dist/discord-D1kDh0X_.js +2751 -0
- package/dist/doctor-B2G7WqO0.js +244 -0
- package/dist/doctor-contract-D3pSutkb.js +383 -0
- package/dist/doctor-contract-api.js +2 -0
- package/dist/doctor-shared-DU8RcnF5.js +4 -0
- package/dist/format-D8TsaXxW.js +24 -0
- package/dist/gateway-registry-BKG4KIVC.js +74 -0
- package/dist/handle-action.guild-admin-BuqsSVXu.js +283 -0
- package/dist/inbound-context-e_oBBJtF.js +51 -0
- package/dist/index.js +26 -0
- package/dist/manager.runtime-M2aAa7qA.js +1019 -0
- package/dist/mentions-BPZUaFk7.js +88 -0
- package/dist/message-handler-D6JfFV3P.js +381 -0
- package/dist/message-handler.preflight-DqaF3vHm.js +1022 -0
- package/dist/message-handler.process-tl3Nwnhr.js +1124 -0
- package/dist/message-utils-Dmgu-7fC.js +512 -0
- package/dist/normalize-B-ktw-T_.js +275 -0
- package/dist/outbound-adapter-DJf9_sfH.js +451 -0
- package/dist/outbound-session-route-uHGLDP-Y.js +43 -0
- package/dist/pluralkit-voQvSN3g.js +22 -0
- package/dist/preflight-audio-BpYtUAT6.js +72 -0
- package/dist/preflight-audio.runtime-BAGmU6uO.js +7 -0
- package/dist/preview-streaming-C0O92Qqz.js +14 -0
- package/dist/probe-DcNEodPI.js +139 -0
- package/dist/probe.runtime-P-e4r1Hl.js +2 -0
- package/dist/provider-CMvXOp-3.js +8440 -0
- package/dist/provider-session.runtime-JFemrDZT.js +6 -0
- package/dist/provider.runtime-BO007oR2.js +2 -0
- package/dist/reply-delivery-D9So77a6.js +131 -0
- package/dist/resolve-allowlist-common-DqqFY_qa.js +34 -0
- package/dist/resolve-channels-CGPntufJ.js +265 -0
- package/dist/resolve-users-CDvSlW0V.js +120 -0
- package/dist/rolldown-runtime-C3SqQTfK.js +28 -0
- package/dist/route-resolution-BYiC-6Cc.js +236 -0
- package/dist/runtime-K9RT6Egn.js +8 -0
- package/dist/runtime-api.actions.js +3 -0
- package/dist/runtime-api.js +31 -0
- package/dist/runtime-api.lookup.js +7 -0
- package/dist/runtime-api.monitor-BC-XN0tY.js +6 -0
- package/dist/runtime-api.monitor.js +9 -0
- package/dist/runtime-api.send.js +6 -0
- package/dist/runtime-api.threads.js +6 -0
- package/dist/runtime-n5xZHW55.js +1001 -0
- package/dist/runtime-setter-api.js +2 -0
- package/dist/secret-config-contract-CoGryS5c.js +115 -0
- package/dist/secret-contract-api.js +2 -0
- package/dist/security-audit-Cdz2iq3m.js +120 -0
- package/dist/security-audit-contract-api.js +2 -0
- package/dist/security-audit.runtime-DBV1T1_N.js +2 -0
- package/dist/security-contract-api.js +2 -0
- package/dist/security-contract-ei3Mz8Sa.js +26 -0
- package/dist/security-doctor-CzTzpXV8.js +18 -0
- package/dist/send-B_frVn_Q.js +845 -0
- package/dist/send.components-B1EgHAds.js +468 -0
- package/dist/send.outbound-DlBAuW7y.js +211 -0
- package/dist/send.shared-Db0opnak.js +708 -0
- package/dist/sender-identity-BiSDAk2P.js +43 -0
- package/dist/session-contract-goJZckp2.js +6 -0
- package/dist/session-key-api.js +2 -0
- package/dist/session-key-normalization-Daag9II6.js +23 -0
- package/dist/setup-entry.js +11 -0
- package/dist/setup-plugin-api.js +2 -0
- package/dist/shared-CqlrJmSs.js +166 -0
- package/dist/shared-interactive-KgJjCqnB.js +79 -0
- package/dist/subagent-hooks-api.js +22 -0
- package/dist/subagent-hooks-mEK5ARfP.js +113 -0
- package/dist/system-events-Bu9jmO4W.js +34 -0
- package/dist/targets-kKlbZ4ai.js +3 -0
- package/dist/test-api.js +45 -0
- package/dist/thread-binding-api.js +4 -0
- package/dist/thread-bindings-Bj1R-6QH.js +256 -0
- package/dist/thread-bindings.discord-api-ClPMuIr8.js +184 -0
- package/dist/thread-bindings.manager-BaN0l4y8.js +535 -0
- package/dist/thread-bindings.session-updates-TTP020qQ.js +54 -0
- package/dist/thread-bindings.state-Dzu1gCE7.js +318 -0
- package/dist/threading-CWhdYHVx.js +475 -0
- package/dist/timeouts-C7jeTtGs.js +52 -0
- package/dist/timeouts.js +2 -0
- package/dist/token-D-w3Rigl.js +42 -0
- package/dist/typing-CJiowRTZ.js +15 -0
- package/package.json +14 -6
- package/account-inspect-api.ts +0 -6
- package/action-runtime-api.ts +0 -1
- package/api.ts +0 -132
- package/channel-config-api.ts +0 -1
- package/channel-plugin-api.ts +0 -3
- package/config-api.ts +0 -4
- package/configured-state.ts +0 -6
- package/contract-api.ts +0 -21
- package/directory-contract-api.ts +0 -4
- package/doctor-contract-api.ts +0 -1
- package/index.test.ts +0 -13
- package/index.ts +0 -24
- package/runtime-api.actions.ts +0 -15
- package/runtime-api.lookup.ts +0 -22
- package/runtime-api.monitor.ts +0 -50
- package/runtime-api.send.ts +0 -79
- package/runtime-api.threads.ts +0 -30
- package/runtime-api.ts +0 -180
- package/runtime-setter-api.ts +0 -3
- package/secret-contract-api.ts +0 -4
- package/security-audit-contract-api.ts +0 -1
- package/security-contract-api.ts +0 -4
- package/session-key-api.ts +0 -1
- package/setup-entry.ts +0 -9
- package/setup-plugin-api.ts +0 -3
- package/src/account-inspect.test.ts +0 -126
- package/src/account-inspect.ts +0 -132
- package/src/accounts.test.ts +0 -247
- package/src/accounts.ts +0 -196
- package/src/actions/handle-action.guild-admin.ts +0 -411
- package/src/actions/handle-action.test.ts +0 -306
- package/src/actions/handle-action.ts +0 -372
- package/src/actions/runtime.guild.ts +0 -446
- package/src/actions/runtime.messaging.messages.ts +0 -205
- package/src/actions/runtime.messaging.reactions.ts +0 -67
- package/src/actions/runtime.messaging.runtime.ts +0 -69
- package/src/actions/runtime.messaging.send.ts +0 -248
- package/src/actions/runtime.messaging.shared.ts +0 -97
- package/src/actions/runtime.messaging.ts +0 -37
- package/src/actions/runtime.moderation-shared.ts +0 -48
- package/src/actions/runtime.moderation.authz.test.ts +0 -151
- package/src/actions/runtime.moderation.ts +0 -116
- package/src/actions/runtime.presence.test.ts +0 -160
- package/src/actions/runtime.presence.ts +0 -117
- package/src/actions/runtime.shared.ts +0 -83
- package/src/actions/runtime.test.ts +0 -1087
- package/src/actions/runtime.ts +0 -87
- package/src/api-barrel.test.ts +0 -80
- package/src/api.test.ts +0 -130
- package/src/api.ts +0 -169
- package/src/approval-handler.runtime.test.ts +0 -41
- package/src/approval-handler.runtime.ts +0 -632
- package/src/approval-native.test.ts +0 -330
- package/src/approval-native.ts +0 -219
- package/src/approval-runtime.ts +0 -14
- package/src/approval-shared.ts +0 -53
- package/src/audit-core.ts +0 -141
- package/src/audit.test.ts +0 -145
- package/src/audit.ts +0 -32
- package/src/channel-actions.contract.test.ts +0 -45
- package/src/channel-actions.runtime.ts +0 -1
- package/src/channel-actions.test.ts +0 -275
- package/src/channel-actions.ts +0 -203
- package/src/channel-api.ts +0 -29
- package/src/channel.conversation.ts +0 -159
- package/src/channel.loaders.ts +0 -47
- package/src/channel.runtime.ts +0 -1
- package/src/channel.setup.ts +0 -12
- package/src/channel.test.ts +0 -571
- package/src/channel.ts +0 -629
- package/src/chunk.test.ts +0 -157
- package/src/chunk.ts +0 -321
- package/src/client.proxy.test.ts +0 -176
- package/src/client.test.ts +0 -76
- package/src/client.ts +0 -132
- package/src/component-custom-id.ts +0 -72
- package/src/components-registry.ts +0 -356
- package/src/components.builders.ts +0 -409
- package/src/components.modal.ts +0 -124
- package/src/components.parse.ts +0 -407
- package/src/components.test.ts +0 -312
- package/src/components.ts +0 -54
- package/src/components.types.ts +0 -187
- package/src/config-schema.test.ts +0 -325
- package/src/config-schema.ts +0 -6
- package/src/config-ui-hints.ts +0 -249
- package/src/conversation-identity.ts +0 -58
- package/src/delivery-retry.ts +0 -56
- package/src/directory-cache.ts +0 -116
- package/src/directory-config.ts +0 -58
- package/src/directory-contract.test.ts +0 -129
- package/src/directory-live.test.ts +0 -126
- package/src/directory-live.ts +0 -135
- package/src/doctor-contract.ts +0 -477
- package/src/doctor-shared.ts +0 -5
- package/src/doctor.test.ts +0 -405
- package/src/doctor.ts +0 -340
- package/src/draft-chunking.test.ts +0 -64
- package/src/draft-chunking.ts +0 -43
- package/src/draft-stream.test.ts +0 -159
- package/src/draft-stream.ts +0 -154
- package/src/error-body.ts +0 -38
- package/src/exec-approvals.test.ts +0 -88
- package/src/exec-approvals.ts +0 -110
- package/src/gateway-logging.test.ts +0 -98
- package/src/gateway-logging.ts +0 -67
- package/src/group-policy.ts +0 -113
- package/src/guilds.ts +0 -29
- package/src/inbound-context.contract.test.ts +0 -11
- package/src/interactive-dispatch.ts +0 -104
- package/src/internal/api.commands.ts +0 -51
- package/src/internal/api.guild.ts +0 -164
- package/src/internal/api.interactions.ts +0 -53
- package/src/internal/api.messages.ts +0 -113
- package/src/internal/api.reactions.ts +0 -38
- package/src/internal/api.test.ts +0 -262
- package/src/internal/api.ts +0 -61
- package/src/internal/api.users.ts +0 -19
- package/src/internal/api.webhooks.ts +0 -13
- package/src/internal/client.test.ts +0 -440
- package/src/internal/client.ts +0 -310
- package/src/internal/command-deploy.ts +0 -297
- package/src/internal/commands.ts +0 -188
- package/src/internal/components.base.ts +0 -65
- package/src/internal/components.message.ts +0 -279
- package/src/internal/components.modal.ts +0 -95
- package/src/internal/components.ts +0 -31
- package/src/internal/discord.ts +0 -11
- package/src/internal/embeds.ts +0 -35
- package/src/internal/entity-cache.ts +0 -98
- package/src/internal/event-queue.ts +0 -162
- package/src/internal/gateway-close-codes.ts +0 -25
- package/src/internal/gateway-dispatch.ts +0 -96
- package/src/internal/gateway-identify-limiter.ts +0 -26
- package/src/internal/gateway-lifecycle.ts +0 -61
- package/src/internal/gateway-rate-limit.ts +0 -104
- package/src/internal/gateway.test.ts +0 -603
- package/src/internal/gateway.ts +0 -476
- package/src/internal/interaction-dispatch.test.ts +0 -148
- package/src/internal/interaction-dispatch.ts +0 -162
- package/src/internal/interaction-options.ts +0 -98
- package/src/internal/interaction-response.ts +0 -53
- package/src/internal/interactions.test.ts +0 -325
- package/src/internal/interactions.ts +0 -378
- package/src/internal/listeners.ts +0 -85
- package/src/internal/live-smoke.live.test.ts +0 -26
- package/src/internal/modal-fields.ts +0 -95
- package/src/internal/payload.ts +0 -69
- package/src/internal/rest-body.ts +0 -115
- package/src/internal/rest-errors.ts +0 -88
- package/src/internal/rest-routes.ts +0 -50
- package/src/internal/rest-scheduler.ts +0 -557
- package/src/internal/rest.test.ts +0 -673
- package/src/internal/rest.ts +0 -322
- package/src/internal/schemas.ts +0 -36
- package/src/internal/structures.test.ts +0 -43
- package/src/internal/structures.ts +0 -280
- package/src/internal/test-builders.test-support.ts +0 -167
- package/src/internal/voice.ts +0 -49
- package/src/media-detection.ts +0 -28
- package/src/mentions.test.ts +0 -111
- package/src/mentions.ts +0 -147
- package/src/monitor/access-groups.ts +0 -55
- package/src/monitor/ack-reactions.ts +0 -70
- package/src/monitor/acp-bind-here.integration.test.ts +0 -211
- package/src/monitor/agent-components-auth.ts +0 -7
- package/src/monitor/agent-components-context.ts +0 -154
- package/src/monitor/agent-components-data.ts +0 -224
- package/src/monitor/agent-components-dm-auth.ts +0 -221
- package/src/monitor/agent-components-guild-auth.ts +0 -322
- package/src/monitor/agent-components-helpers.runtime.ts +0 -5
- package/src/monitor/agent-components-helpers.ts +0 -34
- package/src/monitor/agent-components-reply.ts +0 -10
- package/src/monitor/agent-components.deps.runtime.ts +0 -2
- package/src/monitor/agent-components.dispatch.ts +0 -366
- package/src/monitor/agent-components.handlers.ts +0 -303
- package/src/monitor/agent-components.modal.ts +0 -160
- package/src/monitor/agent-components.plugin-interactive.ts +0 -187
- package/src/monitor/agent-components.runtime.ts +0 -14
- package/src/monitor/agent-components.system-controls.ts +0 -211
- package/src/monitor/agent-components.ts +0 -70
- package/src/monitor/agent-components.types.ts +0 -58
- package/src/monitor/agent-components.wildcard-controls.ts +0 -168
- package/src/monitor/agent-components.wildcard.test.ts +0 -71
- package/src/monitor/allow-list.test.ts +0 -14
- package/src/monitor/allow-list.ts +0 -633
- package/src/monitor/auto-presence.test.ts +0 -156
- package/src/monitor/auto-presence.ts +0 -356
- package/src/monitor/channel-access.test.ts +0 -99
- package/src/monitor/channel-access.ts +0 -102
- package/src/monitor/commands.test.ts +0 -24
- package/src/monitor/commands.ts +0 -9
- package/src/monitor/dm-command-auth.test.ts +0 -197
- package/src/monitor/dm-command-auth.ts +0 -158
- package/src/monitor/dm-command-decision.test.ts +0 -113
- package/src/monitor/dm-command-decision.ts +0 -49
- package/src/monitor/exec-approvals.test.ts +0 -226
- package/src/monitor/exec-approvals.ts +0 -158
- package/src/monitor/format.ts +0 -45
- package/src/monitor/gateway-handle.ts +0 -34
- package/src/monitor/gateway-metadata.test.ts +0 -29
- package/src/monitor/gateway-metadata.ts +0 -298
- package/src/monitor/gateway-plugin.test.ts +0 -297
- package/src/monitor/gateway-plugin.ts +0 -294
- package/src/monitor/gateway-registry.ts +0 -37
- package/src/monitor/gateway-supervisor.test.ts +0 -150
- package/src/monitor/gateway-supervisor.ts +0 -206
- package/src/monitor/inbound-context.test-helpers.ts +0 -37
- package/src/monitor/inbound-context.test.ts +0 -106
- package/src/monitor/inbound-context.ts +0 -103
- package/src/monitor/inbound-dedupe.ts +0 -79
- package/src/monitor/inbound-job.test.ts +0 -203
- package/src/monitor/inbound-job.ts +0 -118
- package/src/monitor/listeners.queue.ts +0 -91
- package/src/monitor/listeners.reactions.ts +0 -610
- package/src/monitor/listeners.test.ts +0 -200
- package/src/monitor/listeners.ts +0 -150
- package/src/monitor/message-channel-info.ts +0 -96
- package/src/monitor/message-forwarded.ts +0 -107
- package/src/monitor/message-handler.batch-gate.test.ts +0 -22
- package/src/monitor/message-handler.batch-gate.ts +0 -19
- package/src/monitor/message-handler.bot-self-filter.test.ts +0 -68
- package/src/monitor/message-handler.context.ts +0 -406
- package/src/monitor/message-handler.dm-preflight.ts +0 -123
- package/src/monitor/message-handler.draft-preview.ts +0 -246
- package/src/monitor/message-handler.hydration.test.ts +0 -80
- package/src/monitor/message-handler.hydration.ts +0 -198
- package/src/monitor/message-handler.inbound-context.test.ts +0 -59
- package/src/monitor/message-handler.module-test-helpers.ts +0 -31
- package/src/monitor/message-handler.preflight-channel-access.ts +0 -86
- package/src/monitor/message-handler.preflight-channel-context.test.ts +0 -18
- package/src/monitor/message-handler.preflight-channel-context.ts +0 -58
- package/src/monitor/message-handler.preflight-context.ts +0 -54
- package/src/monitor/message-handler.preflight-helpers.ts +0 -164
- package/src/monitor/message-handler.preflight-history.ts +0 -23
- package/src/monitor/message-handler.preflight-logging.ts +0 -36
- package/src/monitor/message-handler.preflight-pluralkit.ts +0 -26
- package/src/monitor/message-handler.preflight-runtime.ts +0 -28
- package/src/monitor/message-handler.preflight-thread.ts +0 -49
- package/src/monitor/message-handler.preflight.acp-bindings.test.ts +0 -369
- package/src/monitor/message-handler.preflight.test-helpers.ts +0 -111
- package/src/monitor/message-handler.preflight.test.ts +0 -1623
- package/src/monitor/message-handler.preflight.ts +0 -679
- package/src/monitor/message-handler.preflight.types.ts +0 -110
- package/src/monitor/message-handler.process.test.ts +0 -1369
- package/src/monitor/message-handler.process.ts +0 -686
- package/src/monitor/message-handler.queue.test.ts +0 -496
- package/src/monitor/message-handler.routing-preflight.ts +0 -112
- package/src/monitor/message-handler.test-harness.ts +0 -99
- package/src/monitor/message-handler.test-helpers.ts +0 -75
- package/src/monitor/message-handler.ts +0 -274
- package/src/monitor/message-media.ts +0 -509
- package/src/monitor/message-run-queue.ts +0 -101
- package/src/monitor/message-text.ts +0 -171
- package/src/monitor/message-utils.test.ts +0 -1157
- package/src/monitor/message-utils.ts +0 -32
- package/src/monitor/model-picker-preferences.test.ts +0 -67
- package/src/monitor/model-picker-preferences.ts +0 -184
- package/src/monitor/model-picker.state.ts +0 -364
- package/src/monitor/model-picker.test-utils.ts +0 -26
- package/src/monitor/model-picker.test.ts +0 -794
- package/src/monitor/model-picker.ts +0 -38
- package/src/monitor/model-picker.view.ts +0 -695
- package/src/monitor/monitor.agent-components.test.ts +0 -375
- package/src/monitor/monitor.test.ts +0 -849
- package/src/monitor/monitor.threading-utils.test.ts +0 -598
- package/src/monitor/native-command-agent-reply.ts +0 -125
- package/src/monitor/native-command-arg-ui.ts +0 -233
- package/src/monitor/native-command-auth.ts +0 -308
- package/src/monitor/native-command-bypass.ts +0 -13
- package/src/monitor/native-command-context.test.ts +0 -98
- package/src/monitor/native-command-context.ts +0 -103
- package/src/monitor/native-command-dispatch.ts +0 -35
- package/src/monitor/native-command-model-picker-apply.ts +0 -177
- package/src/monitor/native-command-model-picker-interaction.ts +0 -461
- package/src/monitor/native-command-model-picker-ui.ts +0 -368
- package/src/monitor/native-command-reply.test.ts +0 -68
- package/src/monitor/native-command-reply.ts +0 -185
- package/src/monitor/native-command-route.ts +0 -91
- package/src/monitor/native-command-status.ts +0 -76
- package/src/monitor/native-command-ui.ts +0 -26
- package/src/monitor/native-command-ui.types.ts +0 -20
- package/src/monitor/native-command.args.ts +0 -45
- package/src/monitor/native-command.command-arg.test.ts +0 -99
- package/src/monitor/native-command.commands-allowfrom.test.ts +0 -490
- package/src/monitor/native-command.model-picker.test.ts +0 -767
- package/src/monitor/native-command.options.test.ts +0 -369
- package/src/monitor/native-command.options.ts +0 -153
- package/src/monitor/native-command.plugin-dispatch.test.ts +0 -961
- package/src/monitor/native-command.runtime.ts +0 -50
- package/src/monitor/native-command.status-direct.test.ts +0 -272
- package/src/monitor/native-command.test-helpers.ts +0 -64
- package/src/monitor/native-command.think-autocomplete.test.ts +0 -416
- package/src/monitor/native-command.ts +0 -700
- package/src/monitor/native-command.types.ts +0 -9
- package/src/monitor/native-interaction-channel-context.ts +0 -50
- package/src/monitor/preflight-audio.runtime.ts +0 -9
- package/src/monitor/preflight-audio.test.ts +0 -157
- package/src/monitor/preflight-audio.ts +0 -130
- package/src/monitor/presence-cache.ts +0 -61
- package/src/monitor/presence.test.ts +0 -44
- package/src/monitor/presence.ts +0 -50
- package/src/monitor/provider-session.runtime.ts +0 -12
- package/src/monitor/provider.acp.ts +0 -89
- package/src/monitor/provider.allowlist.test.ts +0 -149
- package/src/monitor/provider.allowlist.ts +0 -394
- package/src/monitor/provider.cleanup.ts +0 -41
- package/src/monitor/provider.commands.ts +0 -129
- package/src/monitor/provider.config-log.ts +0 -45
- package/src/monitor/provider.deploy-errors.ts +0 -362
- package/src/monitor/provider.deploy.ts +0 -221
- package/src/monitor/provider.interactions.ts +0 -160
- package/src/monitor/provider.lifecycle.test.ts +0 -713
- package/src/monitor/provider.lifecycle.ts +0 -552
- package/src/monitor/provider.proxy.test.ts +0 -745
- package/src/monitor/provider.rest-proxy.test.ts +0 -121
- package/src/monitor/provider.runtime.ts +0 -1
- package/src/monitor/provider.skill-dedupe.test.ts +0 -42
- package/src/monitor/provider.startup-log.ts +0 -32
- package/src/monitor/provider.startup.test.ts +0 -426
- package/src/monitor/provider.startup.ts +0 -330
- package/src/monitor/provider.test.ts +0 -1111
- package/src/monitor/provider.ts +0 -713
- package/src/monitor/reply-context.ts +0 -64
- package/src/monitor/reply-delivery.test.ts +0 -244
- package/src/monitor/reply-delivery.ts +0 -203
- package/src/monitor/rest-fetch.ts +0 -43
- package/src/monitor/route-resolution.test.ts +0 -204
- package/src/monitor/route-resolution.ts +0 -140
- package/src/monitor/sender-identity.ts +0 -81
- package/src/monitor/startup-status.test.ts +0 -30
- package/src/monitor/startup-status.ts +0 -10
- package/src/monitor/status.ts +0 -22
- package/src/monitor/system-events.ts +0 -55
- package/src/monitor/thread-bindings.config.ts +0 -35
- package/src/monitor/thread-bindings.discord-api.test.ts +0 -229
- package/src/monitor/thread-bindings.discord-api.ts +0 -310
- package/src/monitor/thread-bindings.lifecycle.test.ts +0 -1871
- package/src/monitor/thread-bindings.lifecycle.ts +0 -354
- package/src/monitor/thread-bindings.manager.ts +0 -553
- package/src/monitor/thread-bindings.messages.ts +0 -6
- package/src/monitor/thread-bindings.persona.test.ts +0 -34
- package/src/monitor/thread-bindings.persona.ts +0 -25
- package/src/monitor/thread-bindings.session-adapter.ts +0 -229
- package/src/monitor/thread-bindings.session-shared.ts +0 -59
- package/src/monitor/thread-bindings.session-updates.ts +0 -35
- package/src/monitor/thread-bindings.shared-state.test.ts +0 -36
- package/src/monitor/thread-bindings.state.ts +0 -540
- package/src/monitor/thread-bindings.ts +0 -48
- package/src/monitor/thread-bindings.types.ts +0 -83
- package/src/monitor/thread-channel-context.ts +0 -112
- package/src/monitor/thread-session-close.test.ts +0 -180
- package/src/monitor/thread-session-close.ts +0 -63
- package/src/monitor/thread-title.generate.test.ts +0 -197
- package/src/monitor/thread-title.test.ts +0 -31
- package/src/monitor/thread-title.ts +0 -181
- package/src/monitor/threading.auto-thread.test.ts +0 -327
- package/src/monitor/threading.auto-thread.ts +0 -287
- package/src/monitor/threading.cache.ts +0 -45
- package/src/monitor/threading.parent-info.test.ts +0 -156
- package/src/monitor/threading.starter.test.ts +0 -260
- package/src/monitor/threading.starter.ts +0 -287
- package/src/monitor/threading.ts +0 -20
- package/src/monitor/threading.types.ts +0 -102
- package/src/monitor/timeouts.ts +0 -84
- package/src/monitor/typing.test.ts +0 -42
- package/src/monitor/typing.ts +0 -17
- package/src/monitor.gateway.test.ts +0 -187
- package/src/monitor.gateway.ts +0 -75
- package/src/monitor.test.ts +0 -1397
- package/src/monitor.ts +0 -28
- package/src/normalize.test.ts +0 -56
- package/src/normalize.ts +0 -86
- package/src/outbound-adapter.interactive-order.test.ts +0 -64
- package/src/outbound-adapter.test-harness.ts +0 -207
- package/src/outbound-adapter.test.ts +0 -696
- package/src/outbound-adapter.ts +0 -291
- package/src/outbound-approval.ts +0 -29
- package/src/outbound-components.ts +0 -81
- package/src/outbound-payload.contract.test.ts +0 -38
- package/src/outbound-payload.ts +0 -134
- package/src/outbound-send-context.ts +0 -92
- package/src/outbound-session-route.test.ts +0 -34
- package/src/outbound-session-route.ts +0 -72
- package/src/pluralkit.test.ts +0 -67
- package/src/pluralkit.ts +0 -58
- package/src/preview-streaming.ts +0 -32
- package/src/probe.intents.test.ts +0 -94
- package/src/probe.parse-token.test.ts +0 -43
- package/src/probe.runtime.ts +0 -1
- package/src/probe.ts +0 -237
- package/src/proxy-fetch.ts +0 -92
- package/src/proxy-request-client.test.ts +0 -78
- package/src/proxy-request-client.ts +0 -21
- package/src/recipient-resolution.ts +0 -39
- package/src/resolve-allowlist-common.test.ts +0 -36
- package/src/resolve-allowlist-common.ts +0 -39
- package/src/resolve-channels.test.ts +0 -340
- package/src/resolve-channels.ts +0 -369
- package/src/resolve-users.test.ts +0 -222
- package/src/resolve-users.ts +0 -184
- package/src/retry.test.ts +0 -83
- package/src/retry.ts +0 -98
- package/src/runtime-api.ts +0 -64
- package/src/runtime.ts +0 -23
- package/src/secret-config-contract.ts +0 -140
- package/src/security-audit.runtime.ts +0 -1
- package/src/security-audit.test.ts +0 -246
- package/src/security-audit.ts +0 -208
- package/src/security-contract.ts +0 -47
- package/src/security-doctor.test.ts +0 -25
- package/src/security-doctor.ts +0 -20
- package/src/security.ts +0 -60
- package/src/send-target-parsing.ts +0 -14
- package/src/send.channels.ts +0 -139
- package/src/send.components.test.ts +0 -275
- package/src/send.components.ts +0 -381
- package/src/send.creates-thread.test.ts +0 -643
- package/src/send.emojis-stickers.ts +0 -57
- package/src/send.guild.ts +0 -170
- package/src/send.message-request.ts +0 -97
- package/src/send.messages.test.ts +0 -53
- package/src/send.messages.ts +0 -225
- package/src/send.outbound.ts +0 -413
- package/src/send.permissions.authz.test.ts +0 -188
- package/src/send.permissions.ts +0 -283
- package/src/send.reactions.ts +0 -155
- package/src/send.sends-basic-channel-messages.test.ts +0 -941
- package/src/send.shared.ts +0 -447
- package/src/send.test-harness.ts +0 -56
- package/src/send.ts +0 -82
- package/src/send.types.ts +0 -188
- package/src/send.typing.test.ts +0 -41
- package/src/send.typing.ts +0 -9
- package/src/send.voice.ts +0 -134
- package/src/send.webhook-activity.test.ts +0 -105
- package/src/send.webhook.proxy.test.ts +0 -191
- package/src/send.webhook.ts +0 -133
- package/src/session-contract.ts +0 -3
- package/src/session-key-normalization.test.ts +0 -44
- package/src/session-key-normalization.ts +0 -47
- package/src/setup-account-state.test.ts +0 -91
- package/src/setup-account-state.ts +0 -144
- package/src/setup-adapter.ts +0 -12
- package/src/setup-core.ts +0 -212
- package/src/setup-runtime-helpers.ts +0 -10
- package/src/setup-surface.test.ts +0 -137
- package/src/setup-surface.ts +0 -129
- package/src/shared-interactive.test.ts +0 -153
- package/src/shared-interactive.ts +0 -124
- package/src/shared.test.ts +0 -165
- package/src/shared.ts +0 -190
- package/src/status-issues.test.ts +0 -70
- package/src/status-issues.ts +0 -169
- package/src/subagent-hooks.test.ts +0 -432
- package/src/subagent-hooks.ts +0 -214
- package/src/target-parsing.ts +0 -53
- package/src/target-resolver.ts +0 -129
- package/src/targets.test.ts +0 -367
- package/src/targets.ts +0 -12
- package/src/test-http-helpers.ts +0 -10
- package/src/test-support/component-runtime.ts +0 -190
- package/src/test-support/config.ts +0 -7
- package/src/test-support/configured-binding-runtime.ts +0 -29
- package/src/test-support/partial-channel.ts +0 -26
- package/src/test-support/provider.test-support.ts +0 -545
- package/src/token.test.ts +0 -107
- package/src/token.ts +0 -60
- package/src/ui-colors.ts +0 -27
- package/src/ui.ts +0 -20
- package/src/voice/access.test.ts +0 -217
- package/src/voice/access.ts +0 -124
- package/src/voice/audio.ts +0 -173
- package/src/voice/capture-state.test.ts +0 -48
- package/src/voice/capture-state.ts +0 -120
- package/src/voice/command.test.ts +0 -164
- package/src/voice/command.ts +0 -283
- package/src/voice/config.ts +0 -8
- package/src/voice/manager.e2e.test.ts +0 -928
- package/src/voice/manager.ready-listener.test.ts +0 -37
- package/src/voice/manager.runtime.ts +0 -11
- package/src/voice/manager.ts +0 -691
- package/src/voice/prompt.test.ts +0 -16
- package/src/voice/prompt.ts +0 -17
- package/src/voice/receive-recovery.test.ts +0 -79
- package/src/voice/receive-recovery.ts +0 -159
- package/src/voice/sanitize.test.ts +0 -34
- package/src/voice/sanitize.ts +0 -32
- package/src/voice/sdk-runtime.ts +0 -14
- package/src/voice/segment.ts +0 -156
- package/src/voice/session.ts +0 -50
- package/src/voice/speaker-context.ts +0 -127
- package/src/voice/tts.ts +0 -125
- package/src/voice-message.test.ts +0 -234
- package/src/voice-message.ts +0 -444
- package/subagent-hooks-api.ts +0 -27
- package/test-api.ts +0 -4
- package/thread-binding-api.ts +0 -1
- package/timeouts.ts +0 -6
- package/tsconfig.json +0 -16
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { n as buildChannelConfigSchema, t as DiscordConfigSchema } from "./config-api-CFZtoMaS.js";
|
|
2
|
+
//#endregion
|
|
3
|
+
//#region extensions/discord/src/config-schema.ts
|
|
4
|
+
const DiscordChannelConfigSchema = buildChannelConfigSchema(DiscordConfigSchema, { uiHints: {
|
|
5
|
+
"": {
|
|
6
|
+
label: "Discord",
|
|
7
|
+
help: "Discord channel provider configuration for bot auth, retry policy, streaming, thread bindings, and optional voice capabilities. Keep privileged intents and advanced features disabled unless needed."
|
|
8
|
+
},
|
|
9
|
+
dmPolicy: {
|
|
10
|
+
label: "Discord DM Policy",
|
|
11
|
+
help: "Direct message access control (\"pairing\" recommended). \"open\" requires channels.discord.allowFrom=[\"*\"]."
|
|
12
|
+
},
|
|
13
|
+
"dm.policy": {
|
|
14
|
+
label: "Discord DM Policy",
|
|
15
|
+
help: "Direct message access control (\"pairing\" recommended). \"open\" requires channels.discord.allowFrom=[\"*\"] (legacy: channels.discord.dm.allowFrom)."
|
|
16
|
+
},
|
|
17
|
+
configWrites: {
|
|
18
|
+
label: "Discord Config Writes",
|
|
19
|
+
help: "Allow Discord to write config in response to channel events/commands (default: true)."
|
|
20
|
+
},
|
|
21
|
+
proxy: {
|
|
22
|
+
label: "Discord Proxy URL",
|
|
23
|
+
help: "Proxy URL for Discord gateway + API requests (app-id lookup and allowlist resolution). Set per account via channels.discord.accounts.<id>.proxy."
|
|
24
|
+
},
|
|
25
|
+
"commands.native": {
|
|
26
|
+
label: "Discord Native Commands",
|
|
27
|
+
help: "Override native commands for Discord (bool or \"auto\")."
|
|
28
|
+
},
|
|
29
|
+
"commands.nativeSkills": {
|
|
30
|
+
label: "Discord Native Skill Commands",
|
|
31
|
+
help: "Override native skill commands for Discord (bool or \"auto\")."
|
|
32
|
+
},
|
|
33
|
+
streaming: {
|
|
34
|
+
label: "Discord Streaming Mode",
|
|
35
|
+
help: "Unified Discord stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". \"progress\" maps to \"partial\" on Discord. Legacy boolean/streamMode keys are auto-mapped."
|
|
36
|
+
},
|
|
37
|
+
"streaming.mode": {
|
|
38
|
+
label: "Discord Streaming Mode",
|
|
39
|
+
help: "Canonical Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". \"progress\" maps to \"partial\" on Discord."
|
|
40
|
+
},
|
|
41
|
+
"streaming.chunkMode": {
|
|
42
|
+
label: "Discord Chunk Mode",
|
|
43
|
+
help: "Chunking mode for outbound Discord text delivery: \"length\" (default) or \"newline\"."
|
|
44
|
+
},
|
|
45
|
+
"streaming.block.enabled": {
|
|
46
|
+
label: "Discord Block Streaming Enabled",
|
|
47
|
+
help: "Enable chunked block-style Discord preview delivery when channels.discord.streaming.mode=\"block\"."
|
|
48
|
+
},
|
|
49
|
+
"streaming.block.coalesce": {
|
|
50
|
+
label: "Discord Block Streaming Coalesce",
|
|
51
|
+
help: "Merge streamed Discord block replies before final delivery."
|
|
52
|
+
},
|
|
53
|
+
"streaming.preview.chunk.minChars": {
|
|
54
|
+
label: "Discord Draft Chunk Min Chars",
|
|
55
|
+
help: "Minimum chars before emitting a Discord stream preview update when channels.discord.streaming.mode=\"block\" (default: 200)."
|
|
56
|
+
},
|
|
57
|
+
"streaming.preview.chunk.maxChars": {
|
|
58
|
+
label: "Discord Draft Chunk Max Chars",
|
|
59
|
+
help: "Target max size for a Discord stream preview chunk when channels.discord.streaming.mode=\"block\" (default: 800; clamped to channels.discord.textChunkLimit)."
|
|
60
|
+
},
|
|
61
|
+
"streaming.preview.chunk.breakPreference": {
|
|
62
|
+
label: "Discord Draft Chunk Break Preference",
|
|
63
|
+
help: "Preferred breakpoints for Discord draft chunks (paragraph | newline | sentence). Default: paragraph."
|
|
64
|
+
},
|
|
65
|
+
"streaming.preview.toolProgress": {
|
|
66
|
+
label: "Discord Draft Tool Progress",
|
|
67
|
+
help: "Show tool/progress activity in the live draft preview message (default: true). Set false to keep tool updates as separate messages."
|
|
68
|
+
},
|
|
69
|
+
"retry.attempts": {
|
|
70
|
+
label: "Discord Retry Attempts",
|
|
71
|
+
help: "Max retry attempts for outbound Discord API calls (default: 3)."
|
|
72
|
+
},
|
|
73
|
+
"retry.minDelayMs": {
|
|
74
|
+
label: "Discord Retry Min Delay (ms)",
|
|
75
|
+
help: "Minimum retry delay in ms for Discord outbound calls."
|
|
76
|
+
},
|
|
77
|
+
"retry.maxDelayMs": {
|
|
78
|
+
label: "Discord Retry Max Delay (ms)",
|
|
79
|
+
help: "Maximum retry delay cap in ms for Discord outbound calls."
|
|
80
|
+
},
|
|
81
|
+
"retry.jitter": {
|
|
82
|
+
label: "Discord Retry Jitter",
|
|
83
|
+
help: "Jitter factor (0-1) applied to Discord retry delays."
|
|
84
|
+
},
|
|
85
|
+
maxLinesPerMessage: {
|
|
86
|
+
label: "Discord Max Lines Per Message",
|
|
87
|
+
help: "Soft max line count per Discord message (default: 17)."
|
|
88
|
+
},
|
|
89
|
+
"thread.inheritParent": {
|
|
90
|
+
label: "Discord Thread Parent Inheritance",
|
|
91
|
+
help: "If true, Discord thread sessions inherit the parent channel transcript (default: false)."
|
|
92
|
+
},
|
|
93
|
+
"eventQueue.listenerTimeout": {
|
|
94
|
+
label: "Discord EventQueue Listener Timeout (ms)",
|
|
95
|
+
help: "Canonical Discord listener timeout control in ms for gateway normalization/enqueue handlers. Default is 120000 in OpenClaw; set per account via channels.discord.accounts.<id>.eventQueue.listenerTimeout."
|
|
96
|
+
},
|
|
97
|
+
"eventQueue.maxQueueSize": {
|
|
98
|
+
label: "Discord EventQueue Max Queue Size",
|
|
99
|
+
help: "Optional Discord EventQueue capacity override (max queued events before backpressure). Set per account via channels.discord.accounts.<id>.eventQueue.maxQueueSize."
|
|
100
|
+
},
|
|
101
|
+
"eventQueue.maxConcurrency": {
|
|
102
|
+
label: "Discord EventQueue Max Concurrency",
|
|
103
|
+
help: "Optional Discord EventQueue concurrency override (max concurrent handler executions). Set per account via channels.discord.accounts.<id>.eventQueue.maxConcurrency."
|
|
104
|
+
},
|
|
105
|
+
"threadBindings.enabled": {
|
|
106
|
+
label: "Discord Thread Binding Enabled",
|
|
107
|
+
help: "Enable Discord thread binding features (/focus, bound-thread routing/delivery, and thread-bound subagent sessions). Overrides session.threadBindings.enabled when set."
|
|
108
|
+
},
|
|
109
|
+
"threadBindings.idleHours": {
|
|
110
|
+
label: "Discord Thread Binding Idle Timeout (hours)",
|
|
111
|
+
help: "Inactivity window in hours for Discord thread-bound sessions (/focus and spawned thread sessions). Set 0 to disable idle auto-unfocus (default: 24). Overrides session.threadBindings.idleHours when set."
|
|
112
|
+
},
|
|
113
|
+
"threadBindings.maxAgeHours": {
|
|
114
|
+
label: "Discord Thread Binding Max Age (hours)",
|
|
115
|
+
help: "Optional hard max age in hours for Discord thread-bound sessions. Set 0 to disable hard cap (default: 0). Overrides session.threadBindings.maxAgeHours when set."
|
|
116
|
+
},
|
|
117
|
+
"threadBindings.spawnSessions": {
|
|
118
|
+
label: "Discord Thread-Bound Session Spawn",
|
|
119
|
+
help: "Allow sessions_spawn(thread=true) and ACP thread spawns to auto-create and bind Discord threads (default: true). Set false to disable for this account/channel."
|
|
120
|
+
},
|
|
121
|
+
"threadBindings.defaultSpawnContext": {
|
|
122
|
+
label: "Discord Thread Spawn Context",
|
|
123
|
+
help: "Default native subagent context for thread-bound spawns. \"fork\" starts from the requester transcript; \"isolated\" starts clean. Default: \"fork\"."
|
|
124
|
+
},
|
|
125
|
+
"ui.components.accentColor": {
|
|
126
|
+
label: "Discord Component Accent Color",
|
|
127
|
+
help: "Accent color for Discord component containers (hex). Set per account via channels.discord.accounts.<id>.ui.components.accentColor."
|
|
128
|
+
},
|
|
129
|
+
"intents.presence": {
|
|
130
|
+
label: "Discord Presence Intent",
|
|
131
|
+
help: "Enable the Guild Presences privileged intent. Must also be enabled in the Discord Developer Portal. Allows tracking user activities (e.g. Spotify). Default: false."
|
|
132
|
+
},
|
|
133
|
+
"intents.guildMembers": {
|
|
134
|
+
label: "Discord Guild Members Intent",
|
|
135
|
+
help: "Enable the Guild Members privileged intent. Must also be enabled in the Discord Developer Portal. Default: false."
|
|
136
|
+
},
|
|
137
|
+
"intents.voiceStates": {
|
|
138
|
+
label: "Discord Voice States Intent",
|
|
139
|
+
help: "Enable the Guild Voice States intent. Defaults to the effective Discord voice setting; set true only for Discord voice channel conversations."
|
|
140
|
+
},
|
|
141
|
+
gatewayInfoTimeoutMs: {
|
|
142
|
+
label: "Discord Gateway Metadata Timeout (ms)",
|
|
143
|
+
help: "Timeout for Discord /gateway/bot metadata lookup before falling back to the default gateway URL. Default is 30000; OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS can override when config is unset."
|
|
144
|
+
},
|
|
145
|
+
gatewayReadyTimeoutMs: {
|
|
146
|
+
label: "Discord Gateway READY Timeout (ms)",
|
|
147
|
+
help: "Startup wait for the Discord gateway READY event before restarting the socket. Default is 15000; OPENCLAW_DISCORD_READY_TIMEOUT_MS can override when config is unset."
|
|
148
|
+
},
|
|
149
|
+
gatewayRuntimeReadyTimeoutMs: {
|
|
150
|
+
label: "Discord Gateway Runtime READY Timeout (ms)",
|
|
151
|
+
help: "Runtime reconnect wait for the Discord gateway READY event before force-stopping the lifecycle. Default is 30000; OPENCLAW_DISCORD_RUNTIME_READY_TIMEOUT_MS can override when config is unset."
|
|
152
|
+
},
|
|
153
|
+
"voice.enabled": {
|
|
154
|
+
label: "Discord Voice Enabled",
|
|
155
|
+
help: "Enable Discord voice channel conversations. Text-only Discord configs leave voice off by default; set true to enable /vc commands and the Guild Voice States intent."
|
|
156
|
+
},
|
|
157
|
+
"voice.model": {
|
|
158
|
+
label: "Discord Voice Model",
|
|
159
|
+
help: "Optional LLM model override for Discord voice channel responses (for example openai/gpt-5.4-mini). Leave unset to inherit the routed agent model."
|
|
160
|
+
},
|
|
161
|
+
"voice.autoJoin": {
|
|
162
|
+
label: "Discord Voice Auto-Join",
|
|
163
|
+
help: "Voice channels to auto-join on startup (list of guildId/channelId entries)."
|
|
164
|
+
},
|
|
165
|
+
"voice.daveEncryption": {
|
|
166
|
+
label: "Discord Voice DAVE Encryption",
|
|
167
|
+
help: "Toggle DAVE end-to-end encryption for Discord voice joins (default: true in @discordjs/voice; Discord may require this)."
|
|
168
|
+
},
|
|
169
|
+
"voice.decryptionFailureTolerance": {
|
|
170
|
+
label: "Discord Voice Decrypt Failure Tolerance",
|
|
171
|
+
help: "Consecutive decrypt failures before DAVE attempts session recovery (passed to @discordjs/voice; default: 24)."
|
|
172
|
+
},
|
|
173
|
+
"voice.connectTimeoutMs": {
|
|
174
|
+
label: "Discord Voice Connect Timeout (ms)",
|
|
175
|
+
help: "Initial @discordjs/voice Ready wait before a join is treated as failed. Default: 30000."
|
|
176
|
+
},
|
|
177
|
+
"voice.reconnectGraceMs": {
|
|
178
|
+
label: "Discord Voice Reconnect Grace (ms)",
|
|
179
|
+
help: "Grace period for a disconnected Discord voice session to enter Signalling or Connecting before OpenClaw destroys it. Default: 15000."
|
|
180
|
+
},
|
|
181
|
+
"voice.tts": {
|
|
182
|
+
label: "Discord Voice Text-to-Speech",
|
|
183
|
+
help: "Optional TTS overrides for Discord voice playback (merged with messages.tts)."
|
|
184
|
+
},
|
|
185
|
+
"pluralkit.enabled": {
|
|
186
|
+
label: "Discord PluralKit Enabled",
|
|
187
|
+
help: "Resolve PluralKit proxied messages and treat system members as distinct senders."
|
|
188
|
+
},
|
|
189
|
+
"pluralkit.token": {
|
|
190
|
+
label: "Discord PluralKit Token",
|
|
191
|
+
help: "Optional PluralKit token for resolving private systems or members."
|
|
192
|
+
},
|
|
193
|
+
activity: {
|
|
194
|
+
label: "Discord Presence Activity",
|
|
195
|
+
help: "Discord presence activity text (defaults to custom status)."
|
|
196
|
+
},
|
|
197
|
+
status: {
|
|
198
|
+
label: "Discord Presence Status",
|
|
199
|
+
help: "Discord presence status (online, dnd, idle, invisible)."
|
|
200
|
+
},
|
|
201
|
+
"autoPresence.enabled": {
|
|
202
|
+
label: "Discord Auto Presence Enabled",
|
|
203
|
+
help: "Enable automatic Discord bot presence updates based on runtime/model availability signals. When enabled: healthy=>online, degraded/unknown=>idle, exhausted/unavailable=>dnd."
|
|
204
|
+
},
|
|
205
|
+
"autoPresence.intervalMs": {
|
|
206
|
+
label: "Discord Auto Presence Check Interval (ms)",
|
|
207
|
+
help: "How often to evaluate Discord auto-presence state in milliseconds (default: 30000)."
|
|
208
|
+
},
|
|
209
|
+
"autoPresence.minUpdateIntervalMs": {
|
|
210
|
+
label: "Discord Auto Presence Min Update Interval (ms)",
|
|
211
|
+
help: "Minimum time between actual Discord presence update calls in milliseconds (default: 15000). Prevents status spam on noisy state changes."
|
|
212
|
+
},
|
|
213
|
+
"autoPresence.healthyText": {
|
|
214
|
+
label: "Discord Auto Presence Healthy Text",
|
|
215
|
+
help: "Optional custom status text while runtime is healthy (online). If omitted, falls back to static channels.discord.activity when set."
|
|
216
|
+
},
|
|
217
|
+
"autoPresence.degradedText": {
|
|
218
|
+
label: "Discord Auto Presence Degraded Text",
|
|
219
|
+
help: "Optional custom status text while runtime/model availability is degraded or unknown (idle)."
|
|
220
|
+
},
|
|
221
|
+
"autoPresence.exhaustedText": {
|
|
222
|
+
label: "Discord Auto Presence Exhausted Text",
|
|
223
|
+
help: "Optional custom status text while runtime detects exhausted/unavailable model quota (dnd). Supports {reason} template placeholder."
|
|
224
|
+
},
|
|
225
|
+
activityType: {
|
|
226
|
+
label: "Discord Presence Activity Type",
|
|
227
|
+
help: "Discord presence activity type (0=Playing,1=Streaming,2=Listening,3=Watching,4=Custom,5=Competing)."
|
|
228
|
+
},
|
|
229
|
+
activityUrl: {
|
|
230
|
+
label: "Discord Presence Activity URL",
|
|
231
|
+
help: "Discord presence streaming URL (required for activityType=1)."
|
|
232
|
+
},
|
|
233
|
+
allowBots: {
|
|
234
|
+
label: "Discord Allow Bot Messages",
|
|
235
|
+
help: "Allow bot-authored messages to trigger Discord replies (default: false). Set \"mentions\" to only accept bot messages that mention the bot."
|
|
236
|
+
},
|
|
237
|
+
mentionAliases: {
|
|
238
|
+
label: "Discord Mention Aliases",
|
|
239
|
+
help: "Map outbound @handle text to stable Discord user IDs before sending. Set per account via channels.discord.accounts.<id>.mentionAliases."
|
|
240
|
+
},
|
|
241
|
+
token: {
|
|
242
|
+
label: "Discord Bot Token",
|
|
243
|
+
help: "Discord bot token used for gateway and REST API authentication for this provider account. Keep this secret out of committed config and rotate immediately after any leak.",
|
|
244
|
+
sensitive: true
|
|
245
|
+
},
|
|
246
|
+
applicationId: {
|
|
247
|
+
label: "Discord Application ID",
|
|
248
|
+
help: "Optional Discord application/client ID. Set this when hosted environments cannot reach Discord's application lookup endpoint during startup."
|
|
249
|
+
}
|
|
250
|
+
} });
|
|
251
|
+
//#endregion
|
|
252
|
+
export { DiscordChannelConfigSchema as t };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-D3pSutkb.js";
|
|
2
|
+
import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-CoGryS5c.js";
|
|
3
|
+
import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-ei3Mz8Sa.js";
|
|
4
|
+
import { t as deriveLegacySessionChatType } from "./session-contract-goJZckp2.js";
|
|
5
|
+
import { r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-BaN0l4y8.js";
|
|
6
|
+
import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-LyMP0sdv.js";
|
|
7
|
+
import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Cdz2iq3m.js";
|
|
8
|
+
export { collectDiscordSecurityAuditFindings, collectRuntimeConfigAssignments, collectUnsupportedSecretRefConfigCandidates, createThreadBindingManager, deriveLegacySessionChatType, __testing as discordThreadBindingTesting, legacyConfigRules, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, normalizeCompatibilityConfig, secretTargetRegistryEntries, unsupportedSecretRefSurfacePatterns };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { o as parseDiscordTarget } from "./normalize-B-ktw-T_.js";
|
|
2
|
+
import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
|
|
3
|
+
//#region extensions/discord/src/conversation-identity.ts
|
|
4
|
+
function normalizeDiscordTarget(raw, defaultKind) {
|
|
5
|
+
const trimmed = normalizeOptionalString(raw);
|
|
6
|
+
if (!trimmed) return;
|
|
7
|
+
return parseDiscordTarget(trimmed, { defaultKind })?.normalized;
|
|
8
|
+
}
|
|
9
|
+
function buildDiscordConversationIdentity(kind, rawId) {
|
|
10
|
+
const trimmed = normalizeOptionalString(rawId);
|
|
11
|
+
return trimmed ? `${kind}:${trimmed}` : void 0;
|
|
12
|
+
}
|
|
13
|
+
function resolveDiscordConversationIdentity(params) {
|
|
14
|
+
return params.isDirectMessage ? buildDiscordConversationIdentity("user", params.userId) : buildDiscordConversationIdentity("channel", params.channelId);
|
|
15
|
+
}
|
|
16
|
+
function resolveDiscordCurrentConversationIdentity(params) {
|
|
17
|
+
if (normalizeOptionalLowercaseString(params.chatType) === "direct") {
|
|
18
|
+
const senderTarget = normalizeDiscordTarget(params.from, "user");
|
|
19
|
+
if (senderTarget?.startsWith("user:")) return senderTarget;
|
|
20
|
+
}
|
|
21
|
+
for (const candidate of [
|
|
22
|
+
params.originatingTo,
|
|
23
|
+
params.commandTo,
|
|
24
|
+
params.fallbackTo
|
|
25
|
+
]) {
|
|
26
|
+
const target = normalizeDiscordTarget(candidate, "channel");
|
|
27
|
+
if (target) return target;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { resolveDiscordCurrentConversationIdentity as n, resolveDiscordConversationIdentity as t };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/text-runtime";
|
|
2
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
3
|
+
//#region extensions/discord/src/directory-cache.ts
|
|
4
|
+
const DISCORD_DIRECTORY_CACHE_MAX_ENTRIES = 4e3;
|
|
5
|
+
const DISCORD_DISCRIMINATOR_SUFFIX = /#\d{4}$/;
|
|
6
|
+
const DIRECTORY_HANDLE_CACHE = /* @__PURE__ */ new Map();
|
|
7
|
+
function normalizeAccountCacheKey(accountId) {
|
|
8
|
+
return normalizeAccountId(accountId ?? DEFAULT_ACCOUNT_ID) || DEFAULT_ACCOUNT_ID;
|
|
9
|
+
}
|
|
10
|
+
function normalizeSnowflake(value) {
|
|
11
|
+
const text = normalizeOptionalStringifiedId(value) ?? "";
|
|
12
|
+
if (!/^\d+$/.test(text)) return null;
|
|
13
|
+
return text;
|
|
14
|
+
}
|
|
15
|
+
function normalizeHandleKey(raw) {
|
|
16
|
+
let handle = normalizeOptionalString(raw) ?? "";
|
|
17
|
+
if (!handle) return null;
|
|
18
|
+
if (handle.startsWith("@")) handle = normalizeOptionalString(handle.slice(1)) ?? "";
|
|
19
|
+
if (!handle || /\s/.test(handle)) return null;
|
|
20
|
+
return normalizeLowercaseStringOrEmpty(handle);
|
|
21
|
+
}
|
|
22
|
+
function ensureAccountCache(accountId) {
|
|
23
|
+
const cacheKey = normalizeAccountCacheKey(accountId);
|
|
24
|
+
const existing = DIRECTORY_HANDLE_CACHE.get(cacheKey);
|
|
25
|
+
if (existing) return existing;
|
|
26
|
+
const created = /* @__PURE__ */ new Map();
|
|
27
|
+
DIRECTORY_HANDLE_CACHE.set(cacheKey, created);
|
|
28
|
+
return created;
|
|
29
|
+
}
|
|
30
|
+
function setCacheEntry(cache, key, userId) {
|
|
31
|
+
if (cache.has(key)) cache.delete(key);
|
|
32
|
+
cache.set(key, userId);
|
|
33
|
+
if (cache.size <= DISCORD_DIRECTORY_CACHE_MAX_ENTRIES) return;
|
|
34
|
+
const oldest = cache.keys().next();
|
|
35
|
+
if (!oldest.done) cache.delete(oldest.value);
|
|
36
|
+
}
|
|
37
|
+
function rememberDiscordDirectoryUser(params) {
|
|
38
|
+
const userId = normalizeSnowflake(params.userId);
|
|
39
|
+
if (!userId) return;
|
|
40
|
+
const cache = ensureAccountCache(params.accountId);
|
|
41
|
+
for (const candidate of params.handles) {
|
|
42
|
+
if (typeof candidate !== "string") continue;
|
|
43
|
+
const handle = normalizeHandleKey(candidate);
|
|
44
|
+
if (!handle) continue;
|
|
45
|
+
setCacheEntry(cache, handle, userId);
|
|
46
|
+
const withoutDiscriminator = handle.replace(DISCORD_DISCRIMINATOR_SUFFIX, "");
|
|
47
|
+
if (withoutDiscriminator && withoutDiscriminator !== handle) setCacheEntry(cache, withoutDiscriminator, userId);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function resolveDiscordDirectoryUserId(params) {
|
|
51
|
+
const cache = DIRECTORY_HANDLE_CACHE.get(normalizeAccountCacheKey(params.accountId));
|
|
52
|
+
if (!cache) return;
|
|
53
|
+
const handle = normalizeHandleKey(params.handle);
|
|
54
|
+
if (!handle) return;
|
|
55
|
+
const direct = cache.get(handle);
|
|
56
|
+
if (direct) return direct;
|
|
57
|
+
const withoutDiscriminator = handle.replace(DISCORD_DISCRIMINATOR_SUFFIX, "");
|
|
58
|
+
if (!withoutDiscriminator || withoutDiscriminator === handle) return;
|
|
59
|
+
return cache.get(withoutDiscriminator);
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { resolveDiscordDirectoryUserId as n, rememberDiscordDirectoryUser as t };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
|
|
2
|
+
import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-BKnkNaoA.js";
|
|
3
|
+
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
4
|
+
import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
|
|
5
|
+
//#region extensions/discord/src/directory-config.ts
|
|
6
|
+
var directory_config_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
listDiscordDirectoryGroupsFromConfig: () => listDiscordDirectoryGroupsFromConfig,
|
|
8
|
+
listDiscordDirectoryPeersFromConfig: () => listDiscordDirectoryPeersFromConfig
|
|
9
|
+
});
|
|
10
|
+
function resolveDiscordDirectoryConfigAccount(cfg, accountId) {
|
|
11
|
+
const resolvedAccountId = normalizeAccountId(accountId ?? resolveDefaultDiscordAccountId(cfg));
|
|
12
|
+
const config = mergeDiscordAccountConfig(cfg, resolvedAccountId);
|
|
13
|
+
return {
|
|
14
|
+
accountId: resolvedAccountId,
|
|
15
|
+
config,
|
|
16
|
+
allowFrom: resolveDiscordAccountAllowFrom({
|
|
17
|
+
cfg,
|
|
18
|
+
accountId: resolvedAccountId
|
|
19
|
+
}) ?? [],
|
|
20
|
+
dm: config.dm
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const listDiscordDirectoryPeersFromConfig = createResolvedDirectoryEntriesLister({
|
|
24
|
+
kind: "user",
|
|
25
|
+
resolveAccount: (cfg, accountId) => resolveDiscordDirectoryConfigAccount(cfg, accountId),
|
|
26
|
+
resolveSources: (account) => {
|
|
27
|
+
const guildUsers = Object.values(account.config.guilds ?? {}).flatMap((guild) => (guild.users ?? []).concat(Object.values(guild.channels ?? {}).flatMap((channel) => channel.users ?? [])));
|
|
28
|
+
return [
|
|
29
|
+
account.allowFrom,
|
|
30
|
+
Object.keys(account.config.dms ?? {}),
|
|
31
|
+
guildUsers
|
|
32
|
+
];
|
|
33
|
+
},
|
|
34
|
+
normalizeId: (raw) => {
|
|
35
|
+
const cleaned = (raw.match(/^<@!?(\d+)>$/)?.[1] ?? raw).replace(/^(discord|user):/i, "").trim();
|
|
36
|
+
return /^\d+$/.test(cleaned) ? `user:${cleaned}` : null;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const listDiscordDirectoryGroupsFromConfig = createResolvedDirectoryEntriesLister({
|
|
40
|
+
kind: "group",
|
|
41
|
+
resolveAccount: (cfg, accountId) => resolveDiscordDirectoryConfigAccount(cfg, accountId),
|
|
42
|
+
resolveSources: (account) => Object.values(account.config.guilds ?? {}).map((guild) => Object.keys(guild.channels ?? {})),
|
|
43
|
+
normalizeId: (raw) => {
|
|
44
|
+
const cleaned = (raw.match(/^<#(\d+)>$/)?.[1] ?? raw).replace(/^(discord|channel|group):/i, "").trim();
|
|
45
|
+
return /^\d+$/.test(cleaned) ? `channel:${cleaned}` : null;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//#endregion
|
|
49
|
+
export { listDiscordDirectoryGroupsFromConfig as n, listDiscordDirectoryPeersFromConfig as r, directory_config_exports as t };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
|
|
2
|
+
import { t as normalizeDiscordToken } from "./token-D-w3Rigl.js";
|
|
3
|
+
import { s as resolveDiscordAccount } from "./accounts-BKnkNaoA.js";
|
|
4
|
+
import { t as rememberDiscordDirectoryUser } from "./directory-cache-D93eSrpB.js";
|
|
5
|
+
import { n as fetchDiscord } from "./api-DzNBVTto.js";
|
|
6
|
+
import { a as normalizeDiscordSlug } from "./allow-list-ek-1hMKN.js";
|
|
7
|
+
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
|
|
8
|
+
//#region extensions/discord/src/directory-live.ts
|
|
9
|
+
var directory_live_exports = /* @__PURE__ */ __exportAll({
|
|
10
|
+
listDiscordDirectoryGroupsLive: () => listDiscordDirectoryGroupsLive,
|
|
11
|
+
listDiscordDirectoryPeersLive: () => listDiscordDirectoryPeersLive
|
|
12
|
+
});
|
|
13
|
+
function normalizeQuery(value) {
|
|
14
|
+
return normalizeOptionalLowercaseString(value) ?? "";
|
|
15
|
+
}
|
|
16
|
+
function buildUserRank(user) {
|
|
17
|
+
return user.bot ? 0 : 1;
|
|
18
|
+
}
|
|
19
|
+
function resolveDiscordDirectoryAccess(params) {
|
|
20
|
+
const account = resolveDiscordAccount({
|
|
21
|
+
cfg: params.cfg,
|
|
22
|
+
accountId: params.accountId
|
|
23
|
+
});
|
|
24
|
+
const token = normalizeDiscordToken(account.token, "channels.discord.token");
|
|
25
|
+
if (!token) return null;
|
|
26
|
+
return {
|
|
27
|
+
token,
|
|
28
|
+
query: normalizeQuery(params.query),
|
|
29
|
+
accountId: account.accountId
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async function listDiscordGuilds(token) {
|
|
33
|
+
return (await fetchDiscord("/users/@me/guilds", token)).filter((guild) => guild.id && guild.name);
|
|
34
|
+
}
|
|
35
|
+
async function listDiscordDirectoryGroupsLive(params) {
|
|
36
|
+
const access = resolveDiscordDirectoryAccess(params);
|
|
37
|
+
if (!access) return [];
|
|
38
|
+
const { token, query } = access;
|
|
39
|
+
const guilds = await listDiscordGuilds(token);
|
|
40
|
+
const rows = [];
|
|
41
|
+
for (const guild of guilds) {
|
|
42
|
+
const channels = await fetchDiscord(`/guilds/${guild.id}/channels`, token);
|
|
43
|
+
for (const channel of channels) {
|
|
44
|
+
const name = channel.name?.trim();
|
|
45
|
+
if (!name) continue;
|
|
46
|
+
if (query && !normalizeDiscordSlug(name).includes(normalizeDiscordSlug(query))) continue;
|
|
47
|
+
rows.push({
|
|
48
|
+
kind: "group",
|
|
49
|
+
id: `channel:${channel.id}`,
|
|
50
|
+
name,
|
|
51
|
+
handle: `#${name}`,
|
|
52
|
+
raw: channel
|
|
53
|
+
});
|
|
54
|
+
if (typeof params.limit === "number" && params.limit > 0 && rows.length >= params.limit) return rows;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return rows;
|
|
58
|
+
}
|
|
59
|
+
async function listDiscordDirectoryPeersLive(params) {
|
|
60
|
+
const access = resolveDiscordDirectoryAccess(params);
|
|
61
|
+
if (!access) return [];
|
|
62
|
+
const { token, query, accountId } = access;
|
|
63
|
+
if (!query) return [];
|
|
64
|
+
const guilds = await listDiscordGuilds(token);
|
|
65
|
+
const rows = [];
|
|
66
|
+
const limit = typeof params.limit === "number" && params.limit > 0 ? params.limit : 25;
|
|
67
|
+
for (const guild of guilds) {
|
|
68
|
+
const paramsObj = new URLSearchParams({
|
|
69
|
+
query,
|
|
70
|
+
limit: String(Math.min(limit, 100))
|
|
71
|
+
});
|
|
72
|
+
const members = await fetchDiscord(`/guilds/${guild.id}/members/search?${paramsObj.toString()}`, token);
|
|
73
|
+
for (const member of members) {
|
|
74
|
+
const user = member.user;
|
|
75
|
+
if (!user?.id) continue;
|
|
76
|
+
rememberDiscordDirectoryUser({
|
|
77
|
+
accountId,
|
|
78
|
+
userId: user.id,
|
|
79
|
+
handles: [
|
|
80
|
+
user.username,
|
|
81
|
+
user.global_name,
|
|
82
|
+
member.nick,
|
|
83
|
+
user.username ? `@${user.username}` : null
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
const name = member.nick?.trim() || user.global_name?.trim() || user.username?.trim();
|
|
87
|
+
rows.push({
|
|
88
|
+
kind: "user",
|
|
89
|
+
id: `user:${user.id}`,
|
|
90
|
+
name: name || void 0,
|
|
91
|
+
handle: user.username ? `@${user.username}` : void 0,
|
|
92
|
+
rank: buildUserRank(user),
|
|
93
|
+
raw: member
|
|
94
|
+
});
|
|
95
|
+
if (rows.length >= limit) return rows;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return rows;
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { listDiscordDirectoryGroupsLive as n, listDiscordDirectoryPeersLive as r, directory_live_exports as t };
|