@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,475 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
|
|
2
|
+
import { et as createThread, ot as getChannelMessage, rt as editChannel, t as discord_exports } from "./discord-D1kDh0X_.js";
|
|
3
|
+
import { a as resolveDiscordChannelParentSafe, i as resolveDiscordChannelParentIdSafe, r as resolveDiscordChannelNameSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-ewDxhd9q.js";
|
|
4
|
+
import { s as withAbortTimeout } from "./timeouts-C7jeTtGs.js";
|
|
5
|
+
import { c as resolveDiscordChannelInfo, l as resolveDiscordMessageChannelId, n as resolveDiscordForwardedMessagesTextFromSnapshots, t as resolveDiscordEmbedText } from "./message-utils-Dmgu-7fC.js";
|
|
6
|
+
import { normalizeOptionalString, normalizeOptionalStringifiedId, truncateUtf16Safe } from "openclaw/plugin-sdk/text-runtime";
|
|
7
|
+
import { buildAgentSessionKey } from "openclaw/plugin-sdk/routing";
|
|
8
|
+
import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
|
|
9
|
+
import { resolveChannelModelOverride } from "openclaw/plugin-sdk/model-session-runtime";
|
|
10
|
+
import { completeWithPreparedSimpleCompletionModel, extractAssistantText, prepareSimpleCompletionModelForAgent } from "openclaw/plugin-sdk/simple-completion-runtime";
|
|
11
|
+
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
12
|
+
//#region extensions/discord/src/monitor/thread-title.ts
|
|
13
|
+
const DEFAULT_THREAD_TITLE_TIMEOUT_MS = 1e4;
|
|
14
|
+
const MAX_THREAD_TITLE_SOURCE_CHARS = 600;
|
|
15
|
+
const MAX_THREAD_TITLE_CHANNEL_NAME_CHARS = 120;
|
|
16
|
+
const MAX_THREAD_TITLE_CHANNEL_DESCRIPTION_CHARS = 320;
|
|
17
|
+
const DISCORD_THREAD_TITLE_MAX_TOKENS = 512;
|
|
18
|
+
const DISCORD_THREAD_TITLE_SYSTEM_PROMPT = "Generate a concise Discord thread title (3-6 words). Return only the title. Use channel context when provided and avoid redundant channel-name words unless needed for clarity.";
|
|
19
|
+
async function generateThreadTitle(params) {
|
|
20
|
+
const sourceText = params.messageText.trim();
|
|
21
|
+
if (!sourceText) return null;
|
|
22
|
+
const prepared = await prepareSimpleCompletionModelForAgent({
|
|
23
|
+
cfg: params.cfg,
|
|
24
|
+
agentId: params.agentId,
|
|
25
|
+
...params.modelRef ? { modelRef: params.modelRef } : {},
|
|
26
|
+
allowMissingApiKeyModes: ["aws-sdk"]
|
|
27
|
+
});
|
|
28
|
+
if ("error" in prepared) {
|
|
29
|
+
const modelLabel = prepared.selection ? `${prepared.selection.provider}/${prepared.selection.modelId}` : "unknown";
|
|
30
|
+
logVerbose(`thread-title: ${prepared.error} (agent=${params.agentId}, model=${modelLabel})`);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const userMessage = buildThreadTitleUserMessage({
|
|
35
|
+
sourceText: truncateThreadTitleSourceText(sourceText),
|
|
36
|
+
channelName: params.channelName,
|
|
37
|
+
channelDescription: params.channelDescription
|
|
38
|
+
});
|
|
39
|
+
const timeoutMs = resolveThreadTitleTimeoutMs(params.timeoutMs);
|
|
40
|
+
return normalizeGeneratedThreadTitle(extractAssistantText(await completeThreadTitle({
|
|
41
|
+
model: prepared.model,
|
|
42
|
+
auth: prepared.auth,
|
|
43
|
+
userMessage,
|
|
44
|
+
timeoutMs
|
|
45
|
+
}))) || null;
|
|
46
|
+
} catch (err) {
|
|
47
|
+
logVerbose(`thread-title: title generation failed for agent ${params.agentId}: ${String(err)}`);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function completeThreadTitle(params) {
|
|
52
|
+
return await withAbortTimeout({
|
|
53
|
+
timeoutMs: params.timeoutMs,
|
|
54
|
+
createTimeoutError: () => /* @__PURE__ */ new Error(`thread-title timed out after ${params.timeoutMs}ms`),
|
|
55
|
+
run: async (signal) => await completeWithPreparedSimpleCompletionModel({
|
|
56
|
+
model: params.model,
|
|
57
|
+
auth: params.auth,
|
|
58
|
+
context: {
|
|
59
|
+
systemPrompt: DISCORD_THREAD_TITLE_SYSTEM_PROMPT,
|
|
60
|
+
messages: [{
|
|
61
|
+
role: "user",
|
|
62
|
+
content: params.userMessage,
|
|
63
|
+
timestamp: Date.now()
|
|
64
|
+
}]
|
|
65
|
+
},
|
|
66
|
+
options: {
|
|
67
|
+
maxTokens: DISCORD_THREAD_TITLE_MAX_TOKENS,
|
|
68
|
+
signal
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function buildThreadTitleUserMessage(params) {
|
|
74
|
+
const channelName = normalizeTitleContextField(params.channelName, MAX_THREAD_TITLE_CHANNEL_NAME_CHARS);
|
|
75
|
+
const channelDescription = normalizeTitleContextField(params.channelDescription, MAX_THREAD_TITLE_CHANNEL_DESCRIPTION_CHARS);
|
|
76
|
+
const messageLines = [];
|
|
77
|
+
if (channelName) messageLines.push(`Channel: ${channelName}`);
|
|
78
|
+
if (channelDescription) messageLines.push(`Channel description: ${channelDescription}`);
|
|
79
|
+
messageLines.push(`Message:\n${params.sourceText}`);
|
|
80
|
+
return messageLines.join("\n\n");
|
|
81
|
+
}
|
|
82
|
+
function truncateThreadTitleSourceText(sourceText) {
|
|
83
|
+
if (sourceText.length <= MAX_THREAD_TITLE_SOURCE_CHARS) return sourceText;
|
|
84
|
+
return `${sourceText.slice(0, MAX_THREAD_TITLE_SOURCE_CHARS)}...`;
|
|
85
|
+
}
|
|
86
|
+
function resolveThreadTitleTimeoutMs(timeoutMs) {
|
|
87
|
+
return Math.max(100, Math.floor(timeoutMs ?? DEFAULT_THREAD_TITLE_TIMEOUT_MS));
|
|
88
|
+
}
|
|
89
|
+
function normalizeGeneratedThreadTitle(raw) {
|
|
90
|
+
const lines = raw.replace(/\r/g, "").split("\n");
|
|
91
|
+
let firstLine = "";
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
const trimmed = line.trim();
|
|
94
|
+
if (!trimmed) continue;
|
|
95
|
+
if (!firstLine && trimmed.startsWith("```")) continue;
|
|
96
|
+
firstLine = trimmed;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
return stripThreadTitleWrappers(firstLine);
|
|
100
|
+
}
|
|
101
|
+
function stripThreadTitleWrappers(raw) {
|
|
102
|
+
let current = raw.trim();
|
|
103
|
+
let previous = "";
|
|
104
|
+
while (current && current !== previous) {
|
|
105
|
+
previous = current;
|
|
106
|
+
current = current.replace(/^["'`]+|["'`]+$/g, "").trim();
|
|
107
|
+
current = current.replace(/^\*\*(.+)\*\*$/u, "$1").trim();
|
|
108
|
+
current = current.replace(/^__(.+)__$/u, "$1").trim();
|
|
109
|
+
current = current.replace(/^\*(.+)\*$/u, "$1").trim();
|
|
110
|
+
current = current.replace(/^_(.+)_$/u, "$1").trim();
|
|
111
|
+
current = current.replace(/^~~(.+)~~$/u, "$1").trim();
|
|
112
|
+
}
|
|
113
|
+
return current;
|
|
114
|
+
}
|
|
115
|
+
function normalizeTitleContextField(raw, maxChars) {
|
|
116
|
+
const value = raw?.trim();
|
|
117
|
+
if (!value) return;
|
|
118
|
+
const singleLine = value.replace(/\s+/g, " ");
|
|
119
|
+
if (singleLine.length <= maxChars) return singleLine;
|
|
120
|
+
return `${singleLine.slice(0, maxChars)}...`;
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region extensions/discord/src/monitor/threading.cache.ts
|
|
124
|
+
const DISCORD_THREAD_STARTER_CACHE_TTL_MS = 300 * 1e3;
|
|
125
|
+
const DISCORD_THREAD_STARTER_CACHE_MAX = 500;
|
|
126
|
+
const DISCORD_THREAD_STARTER_CACHE = /* @__PURE__ */ new Map();
|
|
127
|
+
function __resetDiscordThreadStarterCacheForTest() {
|
|
128
|
+
DISCORD_THREAD_STARTER_CACHE.clear();
|
|
129
|
+
}
|
|
130
|
+
function getCachedThreadStarter(key, now) {
|
|
131
|
+
const entry = DISCORD_THREAD_STARTER_CACHE.get(key);
|
|
132
|
+
if (!entry) return;
|
|
133
|
+
if (now - entry.updatedAt > DISCORD_THREAD_STARTER_CACHE_TTL_MS) {
|
|
134
|
+
DISCORD_THREAD_STARTER_CACHE.delete(key);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
DISCORD_THREAD_STARTER_CACHE.delete(key);
|
|
138
|
+
DISCORD_THREAD_STARTER_CACHE.set(key, {
|
|
139
|
+
...entry,
|
|
140
|
+
updatedAt: now
|
|
141
|
+
});
|
|
142
|
+
return entry.value;
|
|
143
|
+
}
|
|
144
|
+
function setCachedThreadStarter(key, value, now) {
|
|
145
|
+
DISCORD_THREAD_STARTER_CACHE.delete(key);
|
|
146
|
+
DISCORD_THREAD_STARTER_CACHE.set(key, {
|
|
147
|
+
value,
|
|
148
|
+
updatedAt: now
|
|
149
|
+
});
|
|
150
|
+
while (DISCORD_THREAD_STARTER_CACHE.size > DISCORD_THREAD_STARTER_CACHE_MAX) {
|
|
151
|
+
const iter = DISCORD_THREAD_STARTER_CACHE.keys().next();
|
|
152
|
+
if (iter.done) break;
|
|
153
|
+
DISCORD_THREAD_STARTER_CACHE.delete(iter.value);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region extensions/discord/src/monitor/threading.starter.ts
|
|
158
|
+
function isDiscordThreadType(type) {
|
|
159
|
+
return type === discord_exports.ChannelType.PublicThread || type === discord_exports.ChannelType.PrivateThread || type === discord_exports.ChannelType.AnnouncementThread;
|
|
160
|
+
}
|
|
161
|
+
function isDiscordForumParentType(parentType) {
|
|
162
|
+
return parentType === discord_exports.ChannelType.GuildForum || parentType === discord_exports.ChannelType.GuildMedia;
|
|
163
|
+
}
|
|
164
|
+
function resolveDiscordThreadChannel(params) {
|
|
165
|
+
if (!params.isGuildMessage) return null;
|
|
166
|
+
const { message, channelInfo } = params;
|
|
167
|
+
const channel = "channel" in message ? message.channel : void 0;
|
|
168
|
+
if (channel && typeof channel === "object" && "isThread" in channel && typeof channel.isThread === "function" && channel.isThread()) return channel;
|
|
169
|
+
if (!isDiscordThreadType(channelInfo?.type)) return null;
|
|
170
|
+
const messageChannelId = params.messageChannelId || resolveDiscordMessageChannelId({ message });
|
|
171
|
+
if (!messageChannelId) return null;
|
|
172
|
+
return {
|
|
173
|
+
id: messageChannelId,
|
|
174
|
+
name: channelInfo?.name ?? void 0,
|
|
175
|
+
parentId: channelInfo?.parentId ?? void 0,
|
|
176
|
+
parent: void 0,
|
|
177
|
+
ownerId: channelInfo?.ownerId ?? void 0
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async function resolveDiscordThreadParentInfo(params) {
|
|
181
|
+
const { threadChannel, channelInfo, client } = params;
|
|
182
|
+
const parent = resolveDiscordChannelParentSafe(threadChannel);
|
|
183
|
+
let parentId = resolveDiscordChannelParentIdSafe(threadChannel) ?? resolveDiscordChannelIdSafe(parent) ?? channelInfo?.parentId ?? void 0;
|
|
184
|
+
if (!parentId && threadChannel.id) parentId = (await resolveDiscordChannelInfo(client, threadChannel.id))?.parentId ?? void 0;
|
|
185
|
+
if (!parentId) return {};
|
|
186
|
+
let parentName = resolveDiscordChannelNameSafe(parent);
|
|
187
|
+
const parentInfo = await resolveDiscordChannelInfo(client, parentId);
|
|
188
|
+
parentName = parentName ?? parentInfo?.name;
|
|
189
|
+
const parentType = parentInfo?.type;
|
|
190
|
+
return {
|
|
191
|
+
id: parentId,
|
|
192
|
+
name: parentName,
|
|
193
|
+
type: parentType
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async function resolveDiscordThreadStarter(params) {
|
|
197
|
+
const cacheKey = params.channel.id;
|
|
198
|
+
const cached = getCachedThreadStarter(cacheKey, Date.now());
|
|
199
|
+
if (cached) return cached;
|
|
200
|
+
try {
|
|
201
|
+
const messageChannelId = resolveDiscordThreadStarterMessageChannelId(params);
|
|
202
|
+
if (!messageChannelId) return null;
|
|
203
|
+
const starter = await fetchDiscordThreadStarterMessage({
|
|
204
|
+
client: params.client,
|
|
205
|
+
messageChannelId,
|
|
206
|
+
threadId: params.channel.id
|
|
207
|
+
});
|
|
208
|
+
if (!starter) return null;
|
|
209
|
+
const payload = buildDiscordThreadStarterPayload({
|
|
210
|
+
starter,
|
|
211
|
+
resolveTimestampMs: params.resolveTimestampMs
|
|
212
|
+
});
|
|
213
|
+
if (!payload) return null;
|
|
214
|
+
setCachedThreadStarter(cacheKey, payload, Date.now());
|
|
215
|
+
return payload;
|
|
216
|
+
} catch {
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function resolveDiscordThreadStarterMessageChannelId(params) {
|
|
221
|
+
return isDiscordForumParentType(params.parentType) ? params.channel.id : params.parentId;
|
|
222
|
+
}
|
|
223
|
+
async function fetchDiscordThreadStarterMessage(params) {
|
|
224
|
+
const starter = await getChannelMessage(params.client.rest, params.messageChannelId, params.threadId);
|
|
225
|
+
return starter ? starter : null;
|
|
226
|
+
}
|
|
227
|
+
function buildDiscordThreadStarterPayload(params) {
|
|
228
|
+
const text = resolveDiscordThreadStarterText(params.starter);
|
|
229
|
+
if (!text) return null;
|
|
230
|
+
return {
|
|
231
|
+
text,
|
|
232
|
+
...resolveDiscordThreadStarterIdentity(params.starter),
|
|
233
|
+
timestamp: params.resolveTimestampMs(params.starter.timestamp) ?? void 0
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function resolveDiscordThreadStarterText(starter) {
|
|
237
|
+
const content = normalizeOptionalString(starter.content) ?? "";
|
|
238
|
+
const embedText = resolveDiscordEmbedText(starter.embeds?.[0]);
|
|
239
|
+
const forwardedText = resolveDiscordForwardedMessagesTextFromSnapshots(starter.message_snapshots);
|
|
240
|
+
return content || embedText || forwardedText;
|
|
241
|
+
}
|
|
242
|
+
function resolveDiscordThreadStarterIdentity(starter) {
|
|
243
|
+
return {
|
|
244
|
+
author: resolveDiscordThreadStarterAuthor(starter),
|
|
245
|
+
authorId: starter.author?.id ?? void 0,
|
|
246
|
+
authorName: starter.author?.username ?? void 0,
|
|
247
|
+
authorTag: resolveDiscordThreadStarterAuthorTag(starter.author),
|
|
248
|
+
memberRoleIds: resolveDiscordThreadStarterRoleIds(starter.member)
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function resolveDiscordThreadStarterAuthor(starter) {
|
|
252
|
+
return starter.member?.nick ?? starter.member?.displayName ?? resolveDiscordThreadStarterAuthorTag(starter.author) ?? starter.author?.username ?? starter.author?.id ?? "Unknown";
|
|
253
|
+
}
|
|
254
|
+
function resolveDiscordThreadStarterAuthorTag(author) {
|
|
255
|
+
if (!author?.username || !author.discriminator) return;
|
|
256
|
+
if (author.discriminator !== "0") return `${author.username}#${author.discriminator}`;
|
|
257
|
+
return author.username;
|
|
258
|
+
}
|
|
259
|
+
function resolveDiscordThreadStarterRoleIds(member) {
|
|
260
|
+
return Array.isArray(member?.roles) ? member.roles : void 0;
|
|
261
|
+
}
|
|
262
|
+
function resolveDiscordReplyTarget(opts) {
|
|
263
|
+
if (opts.replyToMode === "off") return;
|
|
264
|
+
const replyToId = normalizeOptionalString(opts.replyToId);
|
|
265
|
+
if (!replyToId) return;
|
|
266
|
+
if (opts.replyToMode === "all") return replyToId;
|
|
267
|
+
return opts.hasReplied ? void 0 : replyToId;
|
|
268
|
+
}
|
|
269
|
+
function sanitizeDiscordThreadName(rawName, fallbackId) {
|
|
270
|
+
return truncateUtf16Safe(truncateUtf16Safe(rawName.replace(/<@!?\d+>/g, "").replace(/<@&\d+>/g, "").replace(/<#\d+>/g, "").replace(/\s+/g, " ").trim() || `Thread ${fallbackId}`, 80), 100) || `Thread ${fallbackId}`;
|
|
271
|
+
}
|
|
272
|
+
function resolveDiscordReplyDeliveryPlan(params) {
|
|
273
|
+
const originalReplyTarget = params.replyTarget;
|
|
274
|
+
let deliverTarget = originalReplyTarget;
|
|
275
|
+
let replyTarget = originalReplyTarget;
|
|
276
|
+
if (params.createdThreadId) {
|
|
277
|
+
deliverTarget = `channel:${params.createdThreadId}`;
|
|
278
|
+
replyTarget = deliverTarget;
|
|
279
|
+
}
|
|
280
|
+
const allowReference = deliverTarget === originalReplyTarget;
|
|
281
|
+
const replyReference = createReplyReferencePlanner({
|
|
282
|
+
replyToMode: allowReference ? params.replyToMode : "off",
|
|
283
|
+
existingId: params.threadChannel ? params.messageId : void 0,
|
|
284
|
+
startId: params.messageId,
|
|
285
|
+
allowReference
|
|
286
|
+
});
|
|
287
|
+
return {
|
|
288
|
+
deliverTarget,
|
|
289
|
+
replyTarget,
|
|
290
|
+
replyReference
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
//#endregion
|
|
294
|
+
//#region extensions/discord/src/monitor/threading.auto-thread.ts
|
|
295
|
+
function resolveTrimmedDiscordMessageChannelId(params) {
|
|
296
|
+
return (params.messageChannelId || resolveDiscordMessageChannelId({ message: params.message })).trim();
|
|
297
|
+
}
|
|
298
|
+
function resolveDiscordAutoThreadContext(params) {
|
|
299
|
+
const createdThreadId = normalizeOptionalStringifiedId(params.createdThreadId) ?? "";
|
|
300
|
+
if (!createdThreadId) return null;
|
|
301
|
+
const messageChannelId = normalizeOptionalString(params.messageChannelId) ?? "";
|
|
302
|
+
if (!messageChannelId) return null;
|
|
303
|
+
const threadSessionKey = buildAgentSessionKey({
|
|
304
|
+
agentId: params.agentId,
|
|
305
|
+
channel: params.channel,
|
|
306
|
+
peer: {
|
|
307
|
+
kind: "channel",
|
|
308
|
+
id: createdThreadId
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
const parentSessionKey = buildAgentSessionKey({
|
|
312
|
+
agentId: params.agentId,
|
|
313
|
+
channel: params.channel,
|
|
314
|
+
peer: {
|
|
315
|
+
kind: "channel",
|
|
316
|
+
id: messageChannelId
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
return {
|
|
320
|
+
createdThreadId,
|
|
321
|
+
From: `${params.channel}:channel:${createdThreadId}`,
|
|
322
|
+
To: `channel:${createdThreadId}`,
|
|
323
|
+
OriginatingTo: `channel:${createdThreadId}`,
|
|
324
|
+
SessionKey: threadSessionKey,
|
|
325
|
+
ModelParentSessionKey: parentSessionKey,
|
|
326
|
+
...params.parentInheritanceEnabled === true ? { ParentSessionKey: parentSessionKey } : {}
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
async function resolveDiscordAutoThreadReplyPlan(params) {
|
|
330
|
+
const messageChannelId = resolveTrimmedDiscordMessageChannelId(params);
|
|
331
|
+
const originalReplyTarget = `channel:${params.threadChannel?.id ?? (messageChannelId || "unknown")}`;
|
|
332
|
+
const createdThreadId = await maybeCreateDiscordAutoThread({
|
|
333
|
+
client: params.client,
|
|
334
|
+
message: params.message,
|
|
335
|
+
messageChannelId: messageChannelId || void 0,
|
|
336
|
+
channel: params.channel,
|
|
337
|
+
isGuildMessage: params.isGuildMessage,
|
|
338
|
+
channelConfig: params.channelConfig,
|
|
339
|
+
threadChannel: params.threadChannel,
|
|
340
|
+
channelType: params.channelType,
|
|
341
|
+
channelName: params.channelName,
|
|
342
|
+
channelDescription: params.channelDescription,
|
|
343
|
+
baseText: params.baseText,
|
|
344
|
+
combinedBody: params.combinedBody,
|
|
345
|
+
cfg: params.cfg,
|
|
346
|
+
agentId: params.agentId
|
|
347
|
+
});
|
|
348
|
+
const deliveryPlan = resolveDiscordReplyDeliveryPlan({
|
|
349
|
+
replyTarget: originalReplyTarget,
|
|
350
|
+
replyToMode: params.replyToMode,
|
|
351
|
+
messageId: params.message.id,
|
|
352
|
+
threadChannel: params.threadChannel,
|
|
353
|
+
createdThreadId
|
|
354
|
+
});
|
|
355
|
+
const autoThreadContext = params.isGuildMessage ? resolveDiscordAutoThreadContext({
|
|
356
|
+
agentId: params.agentId,
|
|
357
|
+
channel: params.channel,
|
|
358
|
+
messageChannelId,
|
|
359
|
+
createdThreadId,
|
|
360
|
+
parentInheritanceEnabled: params.threadParentInheritanceEnabled
|
|
361
|
+
}) : null;
|
|
362
|
+
return {
|
|
363
|
+
...deliveryPlan,
|
|
364
|
+
createdThreadId,
|
|
365
|
+
autoThreadContext
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
async function maybeCreateDiscordAutoThread(params) {
|
|
369
|
+
if (!params.isGuildMessage) return;
|
|
370
|
+
if (!params.channelConfig?.autoThread) return;
|
|
371
|
+
if (params.threadChannel) return;
|
|
372
|
+
if (params.channelType === discord_exports.ChannelType.GuildForum || params.channelType === discord_exports.ChannelType.GuildMedia || params.channelType === discord_exports.ChannelType.GuildVoice || params.channelType === discord_exports.ChannelType.GuildStageVoice) return;
|
|
373
|
+
const messageChannelId = resolveTrimmedDiscordMessageChannelId(params);
|
|
374
|
+
if (!messageChannelId) return;
|
|
375
|
+
try {
|
|
376
|
+
const rawThreadSource = params.baseText || params.combinedBody || "Thread";
|
|
377
|
+
const threadName = sanitizeDiscordThreadName(rawThreadSource, params.message.id);
|
|
378
|
+
const archiveDuration = params.channelConfig?.autoArchiveDuration ? Number(params.channelConfig.autoArchiveDuration) : 60;
|
|
379
|
+
const createdId = (await createThread(params.client.rest, messageChannelId, { body: {
|
|
380
|
+
name: threadName,
|
|
381
|
+
auto_archive_duration: archiveDuration
|
|
382
|
+
} }, params.message.id))?.id || "";
|
|
383
|
+
if (createdId && params.channelConfig?.autoThreadName === "generated" && params.cfg && params.agentId) {
|
|
384
|
+
const modelRef = resolveDiscordThreadTitleModelRef({
|
|
385
|
+
cfg: params.cfg,
|
|
386
|
+
channel: params.channel,
|
|
387
|
+
agentId: params.agentId,
|
|
388
|
+
threadId: createdId,
|
|
389
|
+
messageChannelId,
|
|
390
|
+
channelName: params.channelName
|
|
391
|
+
});
|
|
392
|
+
maybeRenameDiscordAutoThread({
|
|
393
|
+
client: params.client,
|
|
394
|
+
threadId: createdId,
|
|
395
|
+
currentName: threadName,
|
|
396
|
+
fallbackId: params.message.id,
|
|
397
|
+
sourceText: rawThreadSource,
|
|
398
|
+
modelRef,
|
|
399
|
+
channelName: params.channelName,
|
|
400
|
+
channelDescription: params.channelDescription,
|
|
401
|
+
cfg: params.cfg,
|
|
402
|
+
agentId: params.agentId
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
return createdId || void 0;
|
|
406
|
+
} catch (err) {
|
|
407
|
+
logVerbose(`discord: autoThread creation failed for ${messageChannelId}/${params.message.id}: ${String(err)}`);
|
|
408
|
+
try {
|
|
409
|
+
const existingThreadId = (await getChannelMessage(params.client.rest, messageChannelId, params.message.id))?.thread?.id || "";
|
|
410
|
+
if (existingThreadId) {
|
|
411
|
+
logVerbose(`discord: autoThread reusing existing thread ${existingThreadId} on ${messageChannelId}/${params.message.id}`);
|
|
412
|
+
return existingThreadId;
|
|
413
|
+
}
|
|
414
|
+
} catch {}
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
function resolveDiscordThreadTitleModelRef(params) {
|
|
419
|
+
const channel = params.channel?.trim();
|
|
420
|
+
if (!channel) return;
|
|
421
|
+
const parentSessionKey = buildAgentSessionKey({
|
|
422
|
+
agentId: params.agentId,
|
|
423
|
+
channel,
|
|
424
|
+
peer: {
|
|
425
|
+
kind: "channel",
|
|
426
|
+
id: params.messageChannelId
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
const channelLabel = params.channelName?.trim();
|
|
430
|
+
const groupChannel = channelLabel ? `#${channelLabel}` : void 0;
|
|
431
|
+
return resolveChannelModelOverride({
|
|
432
|
+
cfg: params.cfg,
|
|
433
|
+
channel,
|
|
434
|
+
groupId: params.threadId,
|
|
435
|
+
groupChatType: "channel",
|
|
436
|
+
groupChannel,
|
|
437
|
+
groupSubject: groupChannel,
|
|
438
|
+
parentSessionKey
|
|
439
|
+
})?.model;
|
|
440
|
+
}
|
|
441
|
+
async function maybeRenameDiscordAutoThread(params) {
|
|
442
|
+
try {
|
|
443
|
+
const fallbackName = sanitizeDiscordThreadName("", params.fallbackId);
|
|
444
|
+
const generated = await generateThreadTitle({
|
|
445
|
+
cfg: params.cfg,
|
|
446
|
+
agentId: params.agentId,
|
|
447
|
+
messageText: params.sourceText,
|
|
448
|
+
modelRef: params.modelRef,
|
|
449
|
+
channelName: params.channelName,
|
|
450
|
+
channelDescription: params.channelDescription
|
|
451
|
+
});
|
|
452
|
+
if (!generated) return;
|
|
453
|
+
const nextName = sanitizeDiscordThreadName(generated, params.fallbackId);
|
|
454
|
+
if (!nextName || nextName === params.currentName || nextName === fallbackName) return;
|
|
455
|
+
await editChannel(params.client.rest, params.threadId, { body: { name: nextName } });
|
|
456
|
+
} catch (err) {
|
|
457
|
+
logVerbose(`discord: autoThread rename failed for ${params.threadId}: ${String(err)}`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
//#endregion
|
|
461
|
+
//#region extensions/discord/src/monitor/threading.ts
|
|
462
|
+
var threading_exports = /* @__PURE__ */ __exportAll({
|
|
463
|
+
__resetDiscordThreadStarterCacheForTest: () => __resetDiscordThreadStarterCacheForTest,
|
|
464
|
+
maybeCreateDiscordAutoThread: () => maybeCreateDiscordAutoThread,
|
|
465
|
+
resolveDiscordAutoThreadContext: () => resolveDiscordAutoThreadContext,
|
|
466
|
+
resolveDiscordAutoThreadReplyPlan: () => resolveDiscordAutoThreadReplyPlan,
|
|
467
|
+
resolveDiscordReplyDeliveryPlan: () => resolveDiscordReplyDeliveryPlan,
|
|
468
|
+
resolveDiscordReplyTarget: () => resolveDiscordReplyTarget,
|
|
469
|
+
resolveDiscordThreadChannel: () => resolveDiscordThreadChannel,
|
|
470
|
+
resolveDiscordThreadParentInfo: () => resolveDiscordThreadParentInfo,
|
|
471
|
+
resolveDiscordThreadStarter: () => resolveDiscordThreadStarter,
|
|
472
|
+
sanitizeDiscordThreadName: () => sanitizeDiscordThreadName
|
|
473
|
+
});
|
|
474
|
+
//#endregion
|
|
475
|
+
export { resolveDiscordThreadStarter as a, resolveDiscordThreadParentInfo as i, resolveDiscordAutoThreadReplyPlan as n, sanitizeDiscordThreadName as o, resolveDiscordReplyTarget as r, threading_exports as t };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region extensions/discord/src/monitor/timeouts.ts
|
|
2
|
+
const DISCORD_DEFAULT_LISTENER_TIMEOUT_MS = 12e4;
|
|
3
|
+
const DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS = 30 * 6e4;
|
|
4
|
+
const DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS = 6e4;
|
|
5
|
+
const DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS = 12e4;
|
|
6
|
+
function mergeAbortSignals(signals) {
|
|
7
|
+
const activeSignals = signals.filter((signal) => Boolean(signal));
|
|
8
|
+
if (activeSignals.length === 0) return;
|
|
9
|
+
if (activeSignals.length === 1) return activeSignals[0];
|
|
10
|
+
if (typeof AbortSignal.any === "function") return AbortSignal.any(activeSignals);
|
|
11
|
+
const fallbackController = new AbortController();
|
|
12
|
+
for (const signal of activeSignals) if (signal.aborted) {
|
|
13
|
+
fallbackController.abort();
|
|
14
|
+
return fallbackController.signal;
|
|
15
|
+
}
|
|
16
|
+
const abortFallback = () => {
|
|
17
|
+
fallbackController.abort();
|
|
18
|
+
for (const signal of activeSignals) signal.removeEventListener("abort", abortFallback);
|
|
19
|
+
};
|
|
20
|
+
for (const signal of activeSignals) signal.addEventListener("abort", abortFallback, { once: true });
|
|
21
|
+
return fallbackController.signal;
|
|
22
|
+
}
|
|
23
|
+
async function raceWithTimeout(params) {
|
|
24
|
+
let timeoutTimer;
|
|
25
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
26
|
+
timeoutTimer = setTimeout(() => resolve(params.onTimeout()), Math.max(1, params.timeoutMs));
|
|
27
|
+
timeoutTimer.unref?.();
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
return await Promise.race([params.promise, timeoutPromise]);
|
|
31
|
+
} finally {
|
|
32
|
+
if (timeoutTimer) clearTimeout(timeoutTimer);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function withAbortTimeout(params) {
|
|
36
|
+
const controller = new AbortController();
|
|
37
|
+
let timeoutTimer;
|
|
38
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
39
|
+
timeoutTimer = setTimeout(() => {
|
|
40
|
+
controller.abort();
|
|
41
|
+
reject(params.createTimeoutError());
|
|
42
|
+
}, Math.max(1, params.timeoutMs));
|
|
43
|
+
timeoutTimer.unref?.();
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
return await Promise.race([params.run(controller.signal), timeoutPromise]);
|
|
47
|
+
} finally {
|
|
48
|
+
if (timeoutTimer) clearTimeout(timeoutTimer);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { mergeAbortSignals as a, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS as i, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS as n, raceWithTimeout as o, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS as r, withAbortTimeout as s, DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS as t };
|
package/dist/timeouts.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-C7jeTtGs.js";
|
|
2
|
+
export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
2
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId, resolveAccountEntry } from "openclaw/plugin-sdk/routing";
|
|
3
|
+
//#region extensions/discord/src/token.ts
|
|
4
|
+
function normalizeDiscordToken(raw, path) {
|
|
5
|
+
const trimmed = normalizeResolvedSecretInputString({
|
|
6
|
+
value: raw,
|
|
7
|
+
path
|
|
8
|
+
});
|
|
9
|
+
if (!trimmed) return;
|
|
10
|
+
return trimmed.replace(/^Bot\s+/i, "");
|
|
11
|
+
}
|
|
12
|
+
function resolveDiscordToken(cfg, opts = {}) {
|
|
13
|
+
const accountId = normalizeAccountId(opts.accountId);
|
|
14
|
+
const discordCfg = cfg?.channels?.discord;
|
|
15
|
+
const accountCfg = resolveAccountEntry(discordCfg?.accounts, accountId);
|
|
16
|
+
const hasAccountToken = Boolean(accountCfg && Object.prototype.hasOwnProperty.call(accountCfg, "token"));
|
|
17
|
+
const accountToken = normalizeDiscordToken(accountCfg?.token ?? void 0, `channels.discord.accounts.${accountId}.token`);
|
|
18
|
+
if (accountToken) return {
|
|
19
|
+
token: accountToken,
|
|
20
|
+
source: "config"
|
|
21
|
+
};
|
|
22
|
+
if (hasAccountToken) return {
|
|
23
|
+
token: "",
|
|
24
|
+
source: "none"
|
|
25
|
+
};
|
|
26
|
+
const configToken = normalizeDiscordToken(discordCfg?.token ?? void 0, "channels.discord.token");
|
|
27
|
+
if (configToken) return {
|
|
28
|
+
token: configToken,
|
|
29
|
+
source: "config"
|
|
30
|
+
};
|
|
31
|
+
const envToken = accountId === DEFAULT_ACCOUNT_ID ? normalizeDiscordToken(opts.envToken ?? process.env.DISCORD_BOT_TOKEN, "DISCORD_BOT_TOKEN") : void 0;
|
|
32
|
+
if (envToken) return {
|
|
33
|
+
token: envToken,
|
|
34
|
+
source: "env"
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
token: "",
|
|
38
|
+
source: "none"
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { resolveDiscordToken as n, normalizeDiscordToken as t };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
|
|
2
|
+
import { ft as sendChannelTyping } from "./discord-D1kDh0X_.js";
|
|
3
|
+
import { o as raceWithTimeout } from "./timeouts-C7jeTtGs.js";
|
|
4
|
+
//#region extensions/discord/src/monitor/typing.ts
|
|
5
|
+
var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
|
|
6
|
+
const DISCORD_TYPING_START_TIMEOUT_MS = 5e3;
|
|
7
|
+
async function sendTyping(params) {
|
|
8
|
+
if ((await raceWithTimeout({
|
|
9
|
+
promise: sendChannelTyping(params.rest, params.channelId).then(() => ({ kind: "sent" })),
|
|
10
|
+
timeoutMs: DISCORD_TYPING_START_TIMEOUT_MS,
|
|
11
|
+
onTimeout: () => ({ kind: "timeout" })
|
|
12
|
+
})).kind === "timeout") throw new Error(`discord typing start timed out after ${DISCORD_TYPING_START_TIMEOUT_MS}ms`);
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { typing_exports as n, sendTyping as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/discord",
|
|
3
|
-
"version": "2026.5.2",
|
|
3
|
+
"version": "2026.5.3-beta.2",
|
|
4
4
|
"description": "OpenClaw Discord channel plugin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"openclaw": "workspace:*"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"openclaw": ">=2026.5.2"
|
|
24
|
+
"openclaw": ">=2026.5.3-beta.2"
|
|
25
25
|
},
|
|
26
26
|
"peerDependenciesMeta": {
|
|
27
27
|
"openclaw": {
|
|
@@ -65,14 +65,22 @@
|
|
|
65
65
|
"allowInvalidConfigRecovery": true
|
|
66
66
|
},
|
|
67
67
|
"compat": {
|
|
68
|
-
"pluginApi": ">=2026.5.2"
|
|
68
|
+
"pluginApi": ">=2026.5.3-beta.2"
|
|
69
69
|
},
|
|
70
70
|
"build": {
|
|
71
|
-
"openclawVersion": "2026.5.2"
|
|
71
|
+
"openclawVersion": "2026.5.3-beta.2"
|
|
72
72
|
},
|
|
73
73
|
"release": {
|
|
74
74
|
"publishToClawHub": true,
|
|
75
75
|
"publishToNpm": true
|
|
76
|
-
}
|
|
77
|
-
|
|
76
|
+
},
|
|
77
|
+
"runtimeExtensions": [
|
|
78
|
+
"./dist/index.js"
|
|
79
|
+
],
|
|
80
|
+
"runtimeSetupEntry": "./dist/setup-entry.js"
|
|
81
|
+
},
|
|
82
|
+
"files": [
|
|
83
|
+
"dist/**",
|
|
84
|
+
"openclaw.plugin.json"
|
|
85
|
+
]
|
|
78
86
|
}
|
package/account-inspect-api.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-types";
|
|
2
|
-
import { inspectDiscordAccount } from "./src/account-inspect.js";
|
|
3
|
-
|
|
4
|
-
export function inspectDiscordReadOnlyAccount(cfg: OpenClawConfig, accountId?: string | null) {
|
|
5
|
-
return inspectDiscordAccount({ cfg, accountId });
|
|
6
|
-
}
|
package/action-runtime-api.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { handleDiscordAction } from "./src/actions/runtime.js";
|