@songsid/agend 2.2.0-beta.9 → 2.3.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -24
- package/README.zh-TW.md +40 -24
- package/dist/agent-cli.js +248 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +2 -0
- package/dist/agent-endpoint.js +28 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.d.ts +30 -0
- package/dist/agent-file-read.js +129 -0
- package/dist/agent-file-read.js.map +1 -0
- package/dist/agent-whats-new.js +20 -1
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/atomic-write.js +9 -1
- package/dist/atomic-write.js.map +1 -1
- package/dist/auth-api.d.ts +3 -1
- package/dist/auth-api.js +32 -1
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/antigravity.d.ts +33 -0
- package/dist/backend/antigravity.js +129 -21
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +3 -0
- package/dist/backend/claude-code.js +9 -0
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +33 -0
- package/dist/backend/codex-metadata.js +122 -18
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex.d.ts +3 -0
- package/dist/backend/codex.js +17 -1
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/effort-metadata.d.ts +37 -1
- package/dist/backend/effort-metadata.js +86 -15
- package/dist/backend/effort-metadata.js.map +1 -1
- package/dist/backend/grok.d.ts +3 -0
- package/dist/backend/grok.js +9 -0
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -1
- package/dist/backend/kiro.js +7 -3
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/launch-effort.d.ts +61 -0
- package/dist/backend/launch-effort.js +170 -0
- package/dist/backend/launch-effort.js.map +1 -0
- package/dist/backend/muse.js +10 -2
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +24 -0
- package/dist/backend/types.js +12 -1
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-command.d.ts +91 -0
- package/dist/backend-command.js +122 -0
- package/dist/backend-command.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +14 -0
- package/dist/channel/adapters/discord.js +66 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +26 -1
- package/dist/channel/adapters/telegram.js +98 -7
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +36 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.d.ts +2 -0
- package/dist/channel/tool-router.js +1 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/channel/types.d.ts +31 -0
- package/dist/cli.js +124 -24
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +2 -2
- package/dist/command-table.js +5 -2
- package/dist/command-table.js.map +1 -1
- package/dist/compact-watch.d.ts +86 -0
- package/dist/compact-watch.js +288 -0
- package/dist/compact-watch.js.map +1 -0
- package/dist/config-validator.js +55 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +9 -0
- package/dist/daemon.js +394 -29
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +8 -1
- package/dist/delivery-outbox.js +6 -2
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/doctor.js +7 -0
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +12 -0
- package/dist/fleet-manager.d.ts +247 -9
- package/dist/fleet-manager.js +1227 -142
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +4 -3
- package/dist/forged-envelope-scan.js +4 -3
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +4 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +258 -0
- package/dist/install-lock.d.ts +18 -1
- package/dist/install-lock.js +30 -3
- package/dist/install-lock.js.map +1 -1
- package/dist/instance-avatar.d.ts +5 -4
- package/dist/instance-avatar.js +15 -8
- package/dist/instance-avatar.js.map +1 -1
- package/dist/instance-config-impact.js +3 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.js +9 -4
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.js +2 -2
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-compact-pane.d.ts +38 -0
- package/dist/kiro-compact-pane.js +57 -0
- package/dist/kiro-compact-pane.js.map +1 -0
- package/dist/launchd-handoff.d.ts +43 -0
- package/dist/launchd-handoff.js +56 -0
- package/dist/launchd-handoff.js.map +1 -0
- package/dist/locale.js +202 -30
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +10 -2
- package/dist/log-service.js.map +1 -1
- package/dist/login-shell.d.ts +21 -0
- package/dist/login-shell.js +98 -0
- package/dist/login-shell.js.map +1 -0
- package/dist/needs-you-hub.d.ts +4 -0
- package/dist/needs-you-hub.js +31 -6
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +1 -13
- package/dist/needs-you.js +3 -37
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +32 -0
- package/dist/outbound-handlers.js +150 -45
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +76 -0
- package/dist/outbound-schemas.js +65 -4
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/provider-probe.d.ts +29 -0
- package/dist/provider-probe.js +198 -2
- package/dist/provider-probe.js.map +1 -1
- package/dist/public-web-gateway.d.ts +2 -0
- package/dist/public-web-gateway.js +25 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +1 -1
- package/dist/quickstart-api.js +8 -6
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +12 -0
- package/dist/quickstart.js +36 -6
- package/dist/quickstart.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +86 -5
- package/dist/reply-buttons-controller.js +271 -7
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/reply-buttons.d.ts +48 -3
- package/dist/reply-buttons.js +105 -10
- package/dist/reply-buttons.js.map +1 -1
- package/dist/reply-polls.d.ts +85 -0
- package/dist/reply-polls.js +154 -0
- package/dist/reply-polls.js.map +1 -0
- package/dist/repo-worktree-guard.d.ts +36 -0
- package/dist/repo-worktree-guard.js +143 -0
- package/dist/repo-worktree-guard.js.map +1 -0
- package/dist/restart-guard.d.ts +6 -3
- package/dist/restart-guard.js +6 -3
- package/dist/restart-guard.js.map +1 -1
- package/dist/restart-progress.d.ts +0 -2
- package/dist/restart-progress.js +0 -2
- package/dist/restart-progress.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +58 -1
- package/dist/scheduler/scheduler.js +176 -10
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/sd-notify.d.ts +22 -1
- package/dist/sd-notify.js +63 -10
- package/dist/sd-notify.js.map +1 -1
- package/dist/service-activation.d.ts +15 -7
- package/dist/service-activation.js +42 -26
- package/dist/service-activation.js.map +1 -1
- package/dist/service-installer.d.ts +24 -0
- package/dist/service-installer.js +49 -1
- package/dist/service-installer.js.map +1 -1
- package/dist/service-plan.d.ts +11 -0
- package/dist/service-plan.js +23 -0
- package/dist/service-plan.js.map +1 -1
- package/dist/settings-api.js +74 -1
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +8 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +16 -2
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +5 -0
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/systemd-peer-bus.d.ts +95 -0
- package/dist/systemd-peer-bus.js +430 -0
- package/dist/systemd-peer-bus.js.map +1 -0
- package/dist/systemd-runtime.d.ts +27 -1
- package/dist/systemd-runtime.js +69 -7
- package/dist/systemd-runtime.js.map +1 -1
- package/dist/tool-permissions.js +53 -3
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +72 -2
- package/dist/topic-commands.js +156 -38
- package/dist/topic-commands.js.map +1 -1
- package/dist/topic-link.d.ts +128 -0
- package/dist/topic-link.js +269 -0
- package/dist/topic-link.js.map +1 -0
- package/dist/transcript-jsonl.d.ts +7 -2
- package/dist/transcript-jsonl.js +13 -7
- package/dist/transcript-jsonl.js.map +1 -1
- package/dist/transcript-sources.js +6 -1
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/ui/app-effects.js +187 -0
- package/dist/ui/chat-commands.js +1 -0
- package/dist/ui/chat-effect-posters.js +42 -0
- package/dist/ui/chat-effects.js +72 -0
- package/dist/ui/chat-live-replies.js +58 -0
- package/dist/ui/chat-render.js +59 -14
- package/dist/ui/chat-store.js +78 -8
- package/dist/ui/chat-strings.js +43 -16
- package/dist/ui/chat-thread.js +175 -31
- package/dist/ui/chat-tour.js +18 -15
- package/dist/ui/effect-trial-controller.js +119 -0
- package/dist/ui/effect-trial-offer.js +31 -0
- package/dist/ui/effect-trial-panel.js +37 -0
- package/dist/ui/image-lightbox.js +1 -1
- package/dist/ui/panel-chat.js +101 -27
- package/dist/ui/panel-details.js +18 -5
- package/dist/ui/panel-fleet.js +18 -5
- package/dist/ui/panel-log.js +10 -10
- package/dist/ui/panel-needs.js +13 -10
- package/dist/ui/panel-settings.js +66 -12
- package/dist/ui/preview-panel.js +25 -9
- package/dist/ui/settings-appearance.js +325 -0
- package/dist/ui/settings-dialogs.js +11 -6
- package/dist/ui/settings-effects.js +201 -0
- package/dist/ui/settings-model.js +3 -1
- package/dist/ui/settings-mods.js +257 -0
- package/dist/ui/settings-owner-effects.js +80 -0
- package/dist/ui/settings-strings.js +269 -10
- package/dist/ui/settings-token.js +7 -0
- package/dist/ui/settings-wizard.js +5 -3
- package/dist/ui/shared/agend-auth.js +27 -3
- package/dist/ui/shared/agent-widget.js +248 -0
- package/dist/ui/shared/app-i18n.js +3 -1
- package/dist/ui/shared/app-prefs.js +30 -10
- package/dist/ui/shared/app-route.js +23 -1
- package/dist/ui/shared/app-session.js +1 -1
- package/dist/ui/shared/app-shell.js +29 -16
- package/dist/ui/shared/app-store.js +2 -0
- package/dist/ui/shared/app-stream.js +15 -7
- package/dist/ui/shared/app-themes.js +188 -0
- package/dist/ui/shared/app.css +266 -11
- package/dist/ui/shared/app.js +6 -0
- package/dist/ui/shared/card-strings.js +28 -0
- package/dist/ui/shared/effect-app-runtime.js +248 -0
- package/dist/ui/shared/effect-baseline.js +64 -0
- package/dist/ui/shared/effect-chat-runtime.js +154 -0
- package/dist/ui/shared/effect-cursor.js +125 -0
- package/dist/ui/shared/effect-frame.js +127 -0
- package/dist/ui/shared/effect-geometry.js +122 -0
- package/dist/ui/shared/effect-host-style.js +10 -0
- package/dist/ui/shared/effect-owner-regions.js +74 -0
- package/dist/ui/shared/effect-owner-source.js +115 -0
- package/dist/ui/shared/effect-policy.js +137 -0
- package/dist/ui/shared/effect-poster-reader.js +98 -0
- package/dist/ui/shared/effect-posters.js +117 -0
- package/dist/ui/shared/effect-profiler.js +162 -0
- package/dist/ui/shared/effect-profiles.js +65 -0
- package/dist/ui/shared/effect-registry.js +496 -0
- package/dist/ui/shared/effect-runtime-loader.js +234 -0
- package/dist/ui/shared/effect-safety.js +153 -0
- package/dist/ui/shared/effect-stock-snapshot.js +34 -0
- package/dist/ui/shared/effect-stock-trust.js +165 -0
- package/dist/ui/shared/effect-trial-source.js +103 -0
- package/dist/ui/shared/effect-trial-stage.js +147 -0
- package/dist/ui/shared/header-tools.js +35 -15
- package/dist/ui/shared/identity-card.js +202 -0
- package/dist/ui/shared/identity-color.js +261 -0
- package/dist/ui/shared/instance-nav.js +22 -14
- package/dist/ui/shared/instance-switch.js +5 -2
- package/dist/ui/shared/owner-css.js +221 -0
- package/dist/ui/shared/owner-effect-prefs.js +117 -0
- package/dist/ui/shared/panel-view.js +96 -12
- package/dist/ui/shared/signin.js +17 -9
- package/dist/ui/shared/ui-dialog.js +1 -1
- package/dist/ui/shared/ui-icons.js +3 -0
- package/dist/ui/shared/ui-menu.js +1 -1
- package/dist/ui/shared/ui-toast.js +1 -1
- package/dist/ui/shared/view-strings.js +40 -2
- package/dist/ui/signin.html +9 -3
- package/dist/update-check.d.ts +31 -0
- package/dist/update-check.js +47 -0
- package/dist/update-check.js.map +1 -1
- package/dist/update-launch.d.ts +48 -1
- package/dist/update-launch.js +159 -5
- package/dist/update-launch.js.map +1 -1
- package/dist/usage/providers.d.ts +28 -8
- package/dist/usage/providers.js +96 -41
- package/dist/usage/providers.js.map +1 -1
- package/dist/view-api.d.ts +29 -0
- package/dist/view-api.js +214 -17
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +86 -2
- package/dist/web-api.js +1160 -92
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-limits.d.ts +82 -0
- package/dist/web-appearance-limits.js +83 -0
- package/dist/web-appearance-limits.js.map +1 -0
- package/dist/web-appearance-policy.d.ts +66 -0
- package/dist/web-appearance-policy.js +94 -0
- package/dist/web-appearance-policy.js.map +1 -0
- package/dist/web-appearance-tools.d.ts +50 -0
- package/dist/web-appearance-tools.js +105 -0
- package/dist/web-appearance-tools.js.map +1 -0
- package/dist/web-appearance-view.d.ts +99 -0
- package/dist/web-appearance-view.js +163 -0
- package/dist/web-appearance-view.js.map +1 -0
- package/dist/web-appearance.d.ts +79 -0
- package/dist/web-appearance.js +298 -0
- package/dist/web-appearance.js.map +1 -0
- package/dist/web-asset-parts.d.ts +98 -0
- package/dist/web-asset-parts.js +133 -0
- package/dist/web-asset-parts.js.map +1 -0
- package/dist/web-auth.js +17 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-card.d.ts +96 -0
- package/dist/web-card.js +232 -0
- package/dist/web-card.js.map +1 -0
- package/dist/web-chat-history.d.ts +39 -1
- package/dist/web-chat-history.js +69 -9
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +39 -3
- package/dist/web-commands.js +22 -5
- package/dist/web-commands.js.map +1 -1
- package/dist/web-effect-bundle.d.ts +28 -0
- package/dist/web-effect-bundle.js +126 -0
- package/dist/web-effect-bundle.js.map +1 -0
- package/dist/web-effect-canonical.d.ts +8 -0
- package/dist/web-effect-canonical.js +27 -0
- package/dist/web-effect-canonical.js.map +1 -0
- package/dist/web-effect-library.d.ts +114 -0
- package/dist/web-effect-library.js +530 -0
- package/dist/web-effect-library.js.map +1 -0
- package/dist/web-effect-poster.d.ts +8 -0
- package/dist/web-effect-poster.js +52 -0
- package/dist/web-effect-poster.js.map +1 -0
- package/dist/web-effect-profiles.d.ts +118 -0
- package/dist/web-effect-profiles.js +180 -0
- package/dist/web-effect-profiles.js.map +1 -0
- package/dist/web-effect-service.d.ts +86 -0
- package/dist/web-effect-service.js +312 -0
- package/dist/web-effect-service.js.map +1 -0
- package/dist/web-effect-tools.d.ts +47 -0
- package/dist/web-effect-tools.js +126 -0
- package/dist/web-effect-tools.js.map +1 -0
- package/dist/web-effect-trials.d.ts +86 -0
- package/dist/web-effect-trials.js +204 -0
- package/dist/web-effect-trials.js.map +1 -0
- package/dist/web-effect-upload.d.ts +29 -0
- package/dist/web-effect-upload.js +190 -0
- package/dist/web-effect-upload.js.map +1 -0
- package/dist/web-effect-worker.d.ts +8 -0
- package/dist/web-effect-worker.js +170 -0
- package/dist/web-effect-worker.js.map +1 -0
- package/dist/web-effect.d.ts +89 -0
- package/dist/web-effect.js +132 -0
- package/dist/web-effect.js.map +1 -0
- package/dist/web-identity-color.d.ts +87 -0
- package/dist/web-identity-color.js +209 -0
- package/dist/web-identity-color.js.map +1 -0
- package/dist/web-identity-palette.d.ts +113 -0
- package/dist/web-identity-palette.js +84 -0
- package/dist/web-identity-palette.js.map +1 -0
- package/dist/web-image-meta.d.ts +25 -0
- package/dist/web-image-meta.js +200 -0
- package/dist/web-image-meta.js.map +1 -0
- package/dist/web-login.d.ts +14 -0
- package/dist/web-login.js +4 -2
- package/dist/web-login.js.map +1 -1
- package/dist/web-mod-agent.d.ts +50 -0
- package/dist/web-mod-agent.js +203 -0
- package/dist/web-mod-agent.js.map +1 -0
- package/dist/web-mod-bundle.d.ts +144 -0
- package/dist/web-mod-bundle.js +464 -0
- package/dist/web-mod-bundle.js.map +1 -0
- package/dist/web-mod-export.d.ts +59 -0
- package/dist/web-mod-export.js +79 -0
- package/dist/web-mod-export.js.map +1 -0
- package/dist/web-mod-store.d.ts +283 -0
- package/dist/web-mod-store.js +624 -0
- package/dist/web-mod-store.js.map +1 -0
- package/dist/web-org.d.ts +3 -3
- package/dist/web-org.js +11 -17
- package/dist/web-org.js.map +1 -1
- package/dist/web-owner-css-store.d.ts +180 -0
- package/dist/web-owner-css-store.js +384 -0
- package/dist/web-owner-css-store.js.map +1 -0
- package/dist/web-owner-css.d.ts +58 -0
- package/dist/web-owner-css.js +552 -0
- package/dist/web-owner-css.js.map +1 -0
- package/dist/web-prefs.d.ts +66 -0
- package/dist/web-prefs.js +243 -35
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +9 -1
- package/dist/web-preview.js +24 -7
- package/dist/web-preview.js.map +1 -1
- package/dist/web-profile.d.ts +32 -0
- package/dist/web-profile.js +132 -0
- package/dist/web-profile.js.map +1 -0
- package/dist/web-session.d.ts +14 -0
- package/dist/web-session.js +10 -0
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +18 -0
- package/dist/web-settings-patch.js +51 -0
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +1 -1
- package/dist/web-shell-routes.js +1 -1
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-theme-store.d.ts +218 -0
- package/dist/web-theme-store.js +516 -0
- package/dist/web-theme-store.js.map +1 -0
- package/dist/web-theme.d.ts +121 -0
- package/dist/web-theme.js +407 -0
- package/dist/web-theme.js.map +1 -0
- package/dist/web-upload.d.ts +119 -4
- package/dist/web-upload.js +252 -39
- package/dist/web-upload.js.map +1 -1
- package/dist/web-widget.d.ts +72 -0
- package/dist/web-widget.js +245 -0
- package/dist/web-widget.js.map +1 -0
- package/launcher/install-admission.cjs +61 -6
- package/package.json +3 -3
|
@@ -1,34 +1,67 @@
|
|
|
1
1
|
import { webHumanOrigin } from "./human-delivery-receipts.js";
|
|
2
2
|
import { t } from "./locale.js";
|
|
3
3
|
import { REPLY_BUTTON_PREFIX, newReplyButtonsId, parseReplyButtonCallback, replyButtonCallback, replyButtonsClickPlace, } from "./reply-buttons.js";
|
|
4
|
+
import { POLL_CLOSED_CALLBACK, POLL_STATUS_CALLBACK, pollCounts, pollRender, pollResultsText, pollTickMs, pollVoteNotice, pollVotersText, } from "./reply-polls.js";
|
|
4
5
|
/** Settled sets are kept a week (a page may still show the reply), then pruned. */
|
|
5
6
|
const KEEP_SETTLED_MS = 7 * 24 * 60 * 60 * 1000;
|
|
6
7
|
/** setTimeout's ceiling; a later expiry is reached by re-arming. */
|
|
7
8
|
const MAX_TIMER_MS = 2_147_483_647;
|
|
9
|
+
/** #1823: redraw spacing for an adapter that names none. */
|
|
10
|
+
const DEFAULT_POLL_EDIT_INTERVAL_MS = 3_000;
|
|
11
|
+
/** #1823: how often a web-only poll's pages are told about new votes. */
|
|
12
|
+
const WEB_POLL_PUBLISH_MS = 1_000;
|
|
13
|
+
/** #1823: how soon results the outbox could not take are offered again. */
|
|
14
|
+
const RESULTS_RETRY_MS = 30_000;
|
|
8
15
|
export class ReplyButtonsController {
|
|
9
16
|
deps;
|
|
10
17
|
timer = null;
|
|
11
18
|
stopped = false;
|
|
12
19
|
/** Claims this process is delivering right now (a sweep leaves them alone). */
|
|
13
20
|
inFlight = new Set();
|
|
21
|
+
/** #1823: per poll, its pending redraw and countdown tick. */
|
|
22
|
+
pace = new Map();
|
|
23
|
+
/** #1823: per chat, the earliest a next poll redraw may go out (monotonic): polls in one chat share its edit limit. */
|
|
24
|
+
chatNextFree = new Map();
|
|
25
|
+
resultsRetry = null;
|
|
14
26
|
constructor(deps) {
|
|
15
27
|
this.deps = deps;
|
|
16
28
|
}
|
|
17
|
-
/**
|
|
18
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Before the send: a set for these buttons, and the callbacks the platform will carry. A poll (#1823) opens here: its
|
|
31
|
+
* deadline is fixed now, and `poll` is how it looks when posted.
|
|
32
|
+
*/
|
|
33
|
+
prepare(where, buttons, poll = null) {
|
|
19
34
|
const id = newReplyButtonsId();
|
|
20
|
-
this.deps.store.create({ id, instance: where.instance, adapterId: where.adapterId, chatId: where.chatId, threadId: where.threadId ?? "", buttons: [...buttons] }, this.deps.now());
|
|
21
|
-
|
|
35
|
+
const set = this.deps.store.create({ id, instance: where.instance, adapterId: where.adapterId, chatId: where.chatId, threadId: where.threadId ?? "", buttons: [...buttons], poll }, this.deps.now());
|
|
36
|
+
const callbacks = buttons.map((b, i) => ({ id: replyButtonCallback(id, i), label: b.label }));
|
|
37
|
+
return { id, callbacks, ...(poll ? { poll: this.pollRenderOf(set, false) } : {}) };
|
|
22
38
|
}
|
|
23
39
|
/** After a confirmed send: the message the buttons are on. From now on a click there can match. */
|
|
24
40
|
bind(id, messageId) {
|
|
25
41
|
this.deps.store.bind(id, messageId);
|
|
42
|
+
const set = this.deps.store.get(id);
|
|
43
|
+
if (set?.poll)
|
|
44
|
+
this.scheduleTick(set);
|
|
26
45
|
this.arm();
|
|
27
46
|
}
|
|
28
47
|
/** A send that failed: the set never existed. */
|
|
29
48
|
discard(id) { this.deps.store.remove(id); }
|
|
49
|
+
/** #1823: how a poll looks now (open: "N answered"; closed: the tally). */
|
|
50
|
+
pollRenderOf(set, closed) {
|
|
51
|
+
return pollRender(set.buttons.map(b => b.label), set.buttons.map((_, i) => replyButtonCallback(set.id, i)), set.poll, this.deps.store.ballots(set.id), set.expiresAt, closed);
|
|
52
|
+
}
|
|
30
53
|
view(set, now = this.deps.now()) {
|
|
31
54
|
const labels = set.buttons.map(b => b.label);
|
|
55
|
+
if (set.poll) {
|
|
56
|
+
const ballots = this.deps.store.ballots(set.id);
|
|
57
|
+
const closed = set.closedAt !== null;
|
|
58
|
+
const counts = closed || set.poll.reveal === "live" ? pollCounts(labels.length, ballots) : undefined;
|
|
59
|
+
const voters = closed && set.poll.showVoters ? labels.map((_, i) => ballots.filter(b => b.options.includes(i)).map(b => b.name)) : undefined;
|
|
60
|
+
return {
|
|
61
|
+
id: set.id, labels, state: closed ? "closed" : "open",
|
|
62
|
+
poll: { deadline: set.expiresAt, answered: ballots.length, multi: set.poll.multi, reveal: set.poll.reveal, rev: now, ...(counts ? { counts } : {}), ...(voters ? { voters } : {}) },
|
|
63
|
+
};
|
|
64
|
+
}
|
|
32
65
|
if (set.deliveredAt !== null && set.chosenIndex !== null)
|
|
33
66
|
return { id: set.id, labels, state: "chosen", chosen: set.chosenIndex, by: set.chosenBy ?? "" };
|
|
34
67
|
// Settled without a delivered choice: expired, or a claim a stopped process never delivered (closed as expired).
|
|
@@ -44,6 +77,15 @@ export class ReplyButtonsController {
|
|
|
44
77
|
async handleCallback(data, adapterId) {
|
|
45
78
|
if (!data.callbackData.startsWith(REPLY_BUTTON_PREFIX))
|
|
46
79
|
return false;
|
|
80
|
+
// #1823: a poll's status button says something, it does nothing; a closed poll's options say it is closed.
|
|
81
|
+
if (data.callbackData === POLL_STATUS_CALLBACK) {
|
|
82
|
+
data.ack?.();
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (data.callbackData.startsWith(`${POLL_CLOSED_CALLBACK}:`)) {
|
|
86
|
+
data.ack?.(t("poll.closed"));
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
47
89
|
const parsed = parseReplyButtonCallback(data.callbackData);
|
|
48
90
|
const set = parsed ? this.deps.store.get(parsed.id) : null;
|
|
49
91
|
if (!parsed || !set) {
|
|
@@ -60,11 +102,38 @@ export class ReplyButtonsController {
|
|
|
60
102
|
data.ack?.(t("buttons.not_allowed"));
|
|
61
103
|
return true;
|
|
62
104
|
}
|
|
105
|
+
if (set.poll) {
|
|
106
|
+
this.vote(set.id, `${adapterId}:${data.userId}`, data.username || data.userId, parsed.index, data.ack);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
63
109
|
await this.choose(set.id, parsed.index, { userId: data.userId, username: data.username || data.userId, source: "platform", humanOrigin: data.humanOrigin }, data.ack);
|
|
64
110
|
return true;
|
|
65
111
|
}
|
|
66
|
-
/**
|
|
67
|
-
|
|
112
|
+
/**
|
|
113
|
+
* #1823: one vote. The voter alone is told what their ballot is now (Discord: ephemeral; Telegram: a toast); the
|
|
114
|
+
* message shows only "N answered" (or the counts, with `reveal: "live"`), redrawn within the platform's limits.
|
|
115
|
+
*/
|
|
116
|
+
vote(id, voter, name, index, ack) {
|
|
117
|
+
const result = this.deps.store.vote(id, voter, name, index, this.deps.now());
|
|
118
|
+
if (!result.ok) {
|
|
119
|
+
// Sent but not yet bound to its message (a click in that instant): not closed — try again in a moment.
|
|
120
|
+
const error = result.reason === "pending" ? t("poll.not_ready") : t("poll.closed");
|
|
121
|
+
ack?.(error);
|
|
122
|
+
if (result.reason === "closed")
|
|
123
|
+
void this.sweep(); // a deadline the timer has not reached yet
|
|
124
|
+
return { ok: false, error };
|
|
125
|
+
}
|
|
126
|
+
ack?.(pollVoteNotice(result.set.buttons.map(b => b.label), result.options));
|
|
127
|
+
if (result.changed)
|
|
128
|
+
this.requestRedraw(result.set);
|
|
129
|
+
return { ok: true, options: result.options };
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A click in the web chat (the caller has passed the /ui gate: a session, or the public link). On a poll (#1823) it
|
|
133
|
+
* is `voter`'s vote — a session's public handle, so each signed-in device is one voter — and the answer carries the
|
|
134
|
+
* ballot, for the page to mark the voter's own choice.
|
|
135
|
+
*/
|
|
136
|
+
async clickWeb(instance, id, index, voter) {
|
|
68
137
|
if (!/^[0-9a-f]{32}$/.test(id) || !Number.isInteger(index) || index < 0)
|
|
69
138
|
return { status: 400, error: "Malformed button" };
|
|
70
139
|
const set = this.deps.store.get(id);
|
|
@@ -72,8 +141,16 @@ export class ReplyButtonsController {
|
|
|
72
141
|
return { status: 409, error: t("reply_buttons.closed") };
|
|
73
142
|
if (set.instance !== instance)
|
|
74
143
|
return { status: 403, error: "This button belongs to another instance" };
|
|
144
|
+
if (set.poll) {
|
|
145
|
+
if (!voter)
|
|
146
|
+
return { status: 403, error: "A vote needs a signed-in session" };
|
|
147
|
+
const r = this.vote(id, voter.key, voter.name, index);
|
|
148
|
+
return r.ok ? { status: 200, options: r.options } : { status: 409, error: r.error };
|
|
149
|
+
}
|
|
75
150
|
let notice;
|
|
76
|
-
|
|
151
|
+
// #1827: the choice is the web person's (their web id and name; "web-user" when there is none) — still `via web`
|
|
152
|
+
// with no verified actor (webHumanOrigin).
|
|
153
|
+
const ok = await this.choose(id, index, { userId: voter?.userId ?? "web-user", username: voter?.name ?? "web-user", source: "web", humanOrigin: webHumanOrigin(true) }, n => { notice = n; });
|
|
77
154
|
return ok ? { status: 200 } : { status: 409, error: notice ?? t("reply_buttons.closed") };
|
|
78
155
|
}
|
|
79
156
|
/** Consume, deliver, then show it everywhere. A choice the agent could not be given is undone (the set reopens). */
|
|
@@ -149,9 +226,191 @@ export class ReplyButtonsController {
|
|
|
149
226
|
for (const set of this.deps.store.undeliveredClaims())
|
|
150
227
|
if (!this.inFlight.has(set.id))
|
|
151
228
|
await this.settle(set, true);
|
|
229
|
+
await this.sweepPolls();
|
|
152
230
|
this.deps.store.prune(now - KEEP_SETTLED_MS);
|
|
153
231
|
this.arm();
|
|
154
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* #1823: polls whose deadline came are closed (no vote counts after that), their results handed to the outbox once,
|
|
235
|
+
* and their message redrawn as closed. After a restart this also catches up: a deadline passed while AgEnD was down
|
|
236
|
+
* closes now (the results say how late), and an open poll's countdown is drawn again.
|
|
237
|
+
*/
|
|
238
|
+
async sweepPolls() {
|
|
239
|
+
for (const set of this.deps.store.pollsDue(this.deps.now())) {
|
|
240
|
+
if (this.deps.store.closePoll(set.id, this.deps.now()))
|
|
241
|
+
this.deps.logger.info({ set: set.id, instance: set.instance }, "Poll closed");
|
|
242
|
+
}
|
|
243
|
+
let owed = false;
|
|
244
|
+
for (const set of this.deps.store.pollsAwaitingResults()) {
|
|
245
|
+
const ballots = this.deps.store.ballots(set.id);
|
|
246
|
+
let admitted = false;
|
|
247
|
+
try {
|
|
248
|
+
admitted = this.deps.admitResults(set, `poll:${set.id}`, pollResultsText(set, set.poll, ballots, set.closedAt));
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
this.deps.logger.warn({ err: err.message, set: set.id }, "Poll results could not be handed to the outbox");
|
|
252
|
+
}
|
|
253
|
+
if (admitted)
|
|
254
|
+
this.deps.store.markResults(set.id, this.deps.now());
|
|
255
|
+
else
|
|
256
|
+
owed = true;
|
|
257
|
+
}
|
|
258
|
+
for (const set of this.deps.store.pollsUnsettled())
|
|
259
|
+
await this.settlePoll(set);
|
|
260
|
+
// Drawn again once per process (after a restart its countdown is stale), then paced by its own ticks.
|
|
261
|
+
for (const set of this.deps.store.openPolls())
|
|
262
|
+
if (!this.pace.has(set.id))
|
|
263
|
+
this.requestRedraw(set);
|
|
264
|
+
if (owed && this.resultsRetry === null && !this.stopped) {
|
|
265
|
+
this.resultsRetry = this.deps.setTimer(() => { this.resultsRetry = null; void this.sweep(); }, RESULTS_RETRY_MS);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* #1823: `instance` closes its own open poll before the deadline (close_poll). The close is the same one the deadline
|
|
270
|
+
* makes — once, results through the outbox, the message redrawn — and the results say it closed early.
|
|
271
|
+
*/
|
|
272
|
+
async closeEarly(instance, id) {
|
|
273
|
+
const set = this.deps.store.get(id);
|
|
274
|
+
if (!set?.poll || set.instance !== instance)
|
|
275
|
+
return { ok: false, error: "no open poll of yours has that id" };
|
|
276
|
+
if (set.messageId === null)
|
|
277
|
+
return { ok: false, error: "that poll is still being posted; try again in a moment" };
|
|
278
|
+
// The close itself is the check: of two closes (or a close and the deadline) only one changes the row.
|
|
279
|
+
if (!this.deps.store.closePoll(id, this.deps.now()))
|
|
280
|
+
return { ok: false, error: "that poll is already closed" };
|
|
281
|
+
this.deps.logger.info({ set: id, instance }, "Poll closed early");
|
|
282
|
+
await this.sweep();
|
|
283
|
+
return { ok: true, voted: this.deps.store.ballots(id).length };
|
|
284
|
+
}
|
|
285
|
+
/** #1823: a closed poll's message shows the tally, once (a failed edit is logged, not retried); with show_voters, who. */
|
|
286
|
+
async settlePoll(set) {
|
|
287
|
+
const fresh = this.deps.store.get(set.id);
|
|
288
|
+
if (!fresh?.poll || fresh.closedAt === null || fresh.settledAt !== null || fresh.messageId === null)
|
|
289
|
+
return;
|
|
290
|
+
this.deps.store.markSettled(fresh.id, this.deps.now()); // first: a concurrent settle does nothing
|
|
291
|
+
const pace = this.pace.get(fresh.id);
|
|
292
|
+
this.dropPace(fresh.id); // a redraw waiting to go now stands down
|
|
293
|
+
while (pace?.inflight)
|
|
294
|
+
await pace.inflight; // the one going lands before the closed one
|
|
295
|
+
this.deps.publish(fresh.instance, this.view(fresh));
|
|
296
|
+
const adapter = this.deps.adapterFor(fresh.adapterId);
|
|
297
|
+
if (!adapter?.renderPoll)
|
|
298
|
+
return;
|
|
299
|
+
try {
|
|
300
|
+
await adapter.renderPoll(fresh.chatId, fresh.messageId, fresh.threadId || undefined, this.pollRenderOf(fresh, true));
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
this.deps.logger.warn({ err: err.message, set: fresh.id }, "Could not show a closed poll on the platform");
|
|
304
|
+
}
|
|
305
|
+
if (!fresh.poll.showVoters)
|
|
306
|
+
return;
|
|
307
|
+
const ballots = this.deps.store.ballots(fresh.id);
|
|
308
|
+
if (!ballots.length)
|
|
309
|
+
return;
|
|
310
|
+
try {
|
|
311
|
+
await adapter.sendText(fresh.chatId, pollVotersText(fresh.buttons.map(b => b.label), ballots), { threadId: fresh.threadId || undefined, replyTo: fresh.messageId, allowedMentions: { parse: [] } });
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
this.deps.logger.warn({ err: err.message, set: fresh.id }, "Could not post a closed poll's voters");
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* #1823: redraw a poll soon, coalesced: one pending redraw per poll, and per chat no closer than the adapter's edit
|
|
319
|
+
* interval to the last one (polls in one chat share it). What is drawn is read when it goes out, not now.
|
|
320
|
+
*/
|
|
321
|
+
requestRedraw(set) {
|
|
322
|
+
if (this.stopped)
|
|
323
|
+
return;
|
|
324
|
+
const pace = this.paceOf(set.id);
|
|
325
|
+
pace.dirty = true;
|
|
326
|
+
if (pace.timer !== null)
|
|
327
|
+
return;
|
|
328
|
+
const adapter = this.deps.adapterFor(set.adapterId);
|
|
329
|
+
// Only the web chat (no platform message to edit): its pages are told as often as once a second.
|
|
330
|
+
const interval = adapter ? adapter.pollEditIntervalMs ?? DEFAULT_POLL_EDIT_INTERVAL_MS : WEB_POLL_PUBLISH_MS;
|
|
331
|
+
// The platform's limit is per chat (Telegram: the whole group, its topics included) or per thread (Discord: each
|
|
332
|
+
// channel or thread has its own bucket) — the adapter says which (#1824 review).
|
|
333
|
+
const chat = adapter?.pollRateScope === "chat" ? `${set.adapterId}\u0000${set.chatId}` : `${set.adapterId}\u0000${set.chatId}\u0000${set.threadId}`;
|
|
334
|
+
const now = this.deps.monotonic();
|
|
335
|
+
for (const [k, free] of this.chatNextFree)
|
|
336
|
+
if (free <= now)
|
|
337
|
+
this.chatNextFree.delete(k); // past slots: forgotten
|
|
338
|
+
const slot = Math.max(now, this.chatNextFree.get(chat) ?? 0, pace.lastAt ? pace.lastAt + interval : 0);
|
|
339
|
+
this.chatNextFree.set(chat, slot + interval);
|
|
340
|
+
pace.timer = this.deps.setTimer(() => { pace.timer = null; void this.redraw(set.id); }, slot - now);
|
|
341
|
+
}
|
|
342
|
+
async redraw(id) {
|
|
343
|
+
const pace = this.pace.get(id);
|
|
344
|
+
if (!pace || !pace.dirty)
|
|
345
|
+
return;
|
|
346
|
+
pace.dirty = false;
|
|
347
|
+
pace.lastAt = this.deps.monotonic();
|
|
348
|
+
// One edit at a time per poll, in order: every waiter re-checks after waking (two woken by the same edit must not
|
|
349
|
+
// both go — #1824 review).
|
|
350
|
+
while (pace.inflight)
|
|
351
|
+
await pace.inflight;
|
|
352
|
+
if (this.pace.get(id) !== pace)
|
|
353
|
+
return; // the close took it over meanwhile
|
|
354
|
+
const set = this.deps.store.get(id);
|
|
355
|
+
if (!set?.poll || set.closedAt !== null || set.messageId === null)
|
|
356
|
+
return; // closing draws its own final state
|
|
357
|
+
if (this.deps.now() >= set.expiresAt) {
|
|
358
|
+
void this.sweep();
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
this.deps.publish(set.instance, this.view(set)); // the web chat, whatever the platform
|
|
362
|
+
const adapter = this.deps.adapterFor(set.adapterId);
|
|
363
|
+
if (adapter?.renderPoll) {
|
|
364
|
+
// Kept while in flight: the close waits for it, so an open redraw never lands on top of the closed one.
|
|
365
|
+
const run = adapter.renderPoll(set.chatId, set.messageId, set.threadId || undefined, this.pollRenderOf(set, false))
|
|
366
|
+
.catch(err => { this.deps.logger.warn({ err: err.message, set: id }, "Could not redraw a poll on the platform"); });
|
|
367
|
+
pace.inflight = run;
|
|
368
|
+
await run;
|
|
369
|
+
if (pace.inflight === run)
|
|
370
|
+
pace.inflight = null;
|
|
371
|
+
}
|
|
372
|
+
if (this.pace.get(id) === pace)
|
|
373
|
+
this.scheduleTick(set); // not if the close took it over meanwhile
|
|
374
|
+
}
|
|
375
|
+
/** #1823: a platform that cannot count down by itself is redrawn as time passes, coarser the more is left. */
|
|
376
|
+
scheduleTick(set) {
|
|
377
|
+
if (this.stopped)
|
|
378
|
+
return;
|
|
379
|
+
const pace = this.paceOf(set.id);
|
|
380
|
+
if (pace.tick !== null) {
|
|
381
|
+
this.deps.clearTimer(pace.tick);
|
|
382
|
+
pace.tick = null;
|
|
383
|
+
}
|
|
384
|
+
if (!this.deps.adapterFor(set.adapterId)?.pollCountdownTicks)
|
|
385
|
+
return;
|
|
386
|
+
const left = set.expiresAt - this.deps.now();
|
|
387
|
+
if (left <= 0)
|
|
388
|
+
return;
|
|
389
|
+
// On the step's boundaries of the time left (…0:15, 0:10…), so a redraw that went out late does not shift the next.
|
|
390
|
+
const step = pollTickMs(left);
|
|
391
|
+
const delay = left % step || step;
|
|
392
|
+
if (delay >= left)
|
|
393
|
+
return; // the close draws the rest
|
|
394
|
+
pace.tick = this.deps.setTimer(() => { pace.tick = null; this.requestRedraw(set); }, delay);
|
|
395
|
+
}
|
|
396
|
+
paceOf(id) {
|
|
397
|
+
let pace = this.pace.get(id);
|
|
398
|
+
if (!pace) {
|
|
399
|
+
pace = { timer: null, tick: null, dirty: false, lastAt: 0, inflight: null };
|
|
400
|
+
this.pace.set(id, pace);
|
|
401
|
+
}
|
|
402
|
+
return pace;
|
|
403
|
+
}
|
|
404
|
+
dropPace(id) {
|
|
405
|
+
const pace = this.pace.get(id);
|
|
406
|
+
if (!pace)
|
|
407
|
+
return;
|
|
408
|
+
if (pace.timer !== null)
|
|
409
|
+
this.deps.clearTimer(pace.timer);
|
|
410
|
+
if (pace.tick !== null)
|
|
411
|
+
this.deps.clearTimer(pace.tick);
|
|
412
|
+
this.pace.delete(id);
|
|
413
|
+
}
|
|
155
414
|
/** One timer, for the next expiry. A wall-clock jump makes it fire early or late; the sweep re-reads the clock. */
|
|
156
415
|
arm() {
|
|
157
416
|
if (this.stopped)
|
|
@@ -170,6 +429,11 @@ export class ReplyButtonsController {
|
|
|
170
429
|
if (this.timer !== null)
|
|
171
430
|
this.deps.clearTimer(this.timer);
|
|
172
431
|
this.timer = null;
|
|
432
|
+
if (this.resultsRetry !== null)
|
|
433
|
+
this.deps.clearTimer(this.resultsRetry);
|
|
434
|
+
this.resultsRetry = null;
|
|
435
|
+
for (const id of [...this.pace.keys()])
|
|
436
|
+
this.dropPace(id);
|
|
173
437
|
}
|
|
174
438
|
}
|
|
175
439
|
//# sourceMappingURL=reply-buttons-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply-buttons-controller.js","sourceRoot":"","sources":["../src/reply-buttons-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAoB,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAChC,OAAO,EACL,mBAAmB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,sBAAsB,GAE9G,MAAM,oBAAoB,CAAC;AAuC5B,mFAAmF;AACnF,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,oEAAoE;AACpE,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,MAAM,OAAO,sBAAsB;IAKJ;IAJrB,KAAK,GAAY,IAAI,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;IACxB,+EAA+E;IAC9D,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,2FAA2F;IAC3F,OAAO,CAAC,KAAiF,EAAE,OAA+B;QACxH,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnL,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IACD,mGAAmG;IACnG,IAAI,CAAC,EAAU,EAAE,SAAiB;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IACD,iDAAiD;IACjD,OAAO,CAAC,EAAU,IAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,GAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC1J,iHAAiH;QACjH,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7G,CAAC;IACD,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,yGAAyG;IACzG,KAAK,CAAC,cAAc,CAAC,IAAsB,EAAE,SAAiB;QAC5D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC5E,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YACzH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,yEAAyE,CAAC,CAAC;YAC7H,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,4EAA4E,CAAC,CAAC;YACrJ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACtK,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,EAAU,EAAE,KAAa;QACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC3H,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACnE,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QACxG,IAAI,MAA0B,CAAC;QAC/B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9J,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAC5F,CAAC;IAED,oHAAoH;IAC5G,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,KAAa,EAAE,EAAmF,EAAE,GAA+B;QAClK,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC1F,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG;gBAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC;YAAC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;QAC3E,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,4CAA4C,CAAC,CAAC;QAAC,CAAC;gBACtH,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACjC,GAAG,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,GAAmB,EAAE,UAAU,GAAG,KAAK;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,kHAAkH;QAClH,4GAA4G;QAC5G,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;eAC5F,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,KAAK;YAAE,OAAO,CAAqD,mCAAmC;QAC3G,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAA6B,0CAA0C;QAClH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,kBAAkB;YAAE,OAAO;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC;QACxH,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAC3H,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,oDAAoD,CAAC,CAAC;QAAC,CAAC;IAC9I,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAED,mHAAmH;IACnH,GAAG;QACD,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"reply-buttons-controller.js","sourceRoot":"","sources":["../src/reply-buttons-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/reply-buttons.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PollBallot, type PollConfig } from "./reply-polls.js";
|
|
1
2
|
export declare const REPLY_BUTTONS_MAX = 10;
|
|
2
3
|
/** Discord's limit per label (the strictest of the three); counted in UTF-16 units, as Discord counts. */
|
|
3
4
|
export declare const REPLY_BUTTON_LABEL_MAX = 80;
|
|
@@ -64,7 +65,27 @@ export interface ReplyButtonSet {
|
|
|
64
65
|
deliveredAt: number | null;
|
|
65
66
|
/** Set when the platform message was updated to its final state (chosen / expired). */
|
|
66
67
|
settledAt: number | null;
|
|
68
|
+
/**
|
|
69
|
+
* #1823: a poll — everyone may vote until `expiresAt` (its deadline; `createdAt` is when it opened). Null: ordinary
|
|
70
|
+
* buttons, the first click answers for everyone.
|
|
71
|
+
*/
|
|
72
|
+
poll: PollConfig | null;
|
|
73
|
+
/** #1823: when the poll stopped taking votes (at or after its deadline). */
|
|
74
|
+
closedAt: number | null;
|
|
75
|
+
/** #1823: when the results were handed to the delivery outbox (idempotent per poll: the agent gets them once). */
|
|
76
|
+
resultsAt: number | null;
|
|
67
77
|
}
|
|
78
|
+
/** #1823: one click on a poll. */
|
|
79
|
+
export type VoteResult = {
|
|
80
|
+
ok: true;
|
|
81
|
+
set: ReplyButtonSet;
|
|
82
|
+
options: number[];
|
|
83
|
+
changed: boolean;
|
|
84
|
+
} | {
|
|
85
|
+
ok: false;
|
|
86
|
+
reason: "missing" | "pending" | "closed";
|
|
87
|
+
set?: ReplyButtonSet;
|
|
88
|
+
};
|
|
68
89
|
export type ConsumeResult = {
|
|
69
90
|
ok: true;
|
|
70
91
|
set: ReplyButtonSet;
|
|
@@ -79,8 +100,13 @@ export declare class ReplyButtonStore {
|
|
|
79
100
|
private db;
|
|
80
101
|
constructor(path: string);
|
|
81
102
|
close(): void;
|
|
82
|
-
/**
|
|
83
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Before the send: the set exists, unbound (a click cannot match it until the platform message is known). A poll
|
|
105
|
+
* opens now: its deadline is `seconds` from here, and its votes are timed from here.
|
|
106
|
+
*/
|
|
107
|
+
create(set: Pick<ReplyButtonSet, "id" | "instance" | "adapterId" | "chatId" | "threadId" | "buttons"> & {
|
|
108
|
+
poll?: PollConfig | null;
|
|
109
|
+
}, now: number): ReplyButtonSet;
|
|
84
110
|
/** After the send: the message the buttons are on. Only an unbound set can be bound. */
|
|
85
111
|
bind(id: string, messageId: string): boolean;
|
|
86
112
|
/** A send that failed: the set never existed for anyone. */
|
|
@@ -104,8 +130,27 @@ export declare class ReplyButtonStore {
|
|
|
104
130
|
* still being delivered is neither (#1500 review): it may yet be released.
|
|
105
131
|
*/
|
|
106
132
|
unsettled(now: number): ReplyButtonSet[];
|
|
107
|
-
/** The next expiry still to come, for the one sweep timer. */
|
|
133
|
+
/** The next expiry or poll deadline still to come, for the one sweep timer. */
|
|
108
134
|
nextExpiry(now: number): number | null;
|
|
135
|
+
/**
|
|
136
|
+
* One voter's click on a poll, already placed on its message and permitted by the caller. In one transaction: the poll
|
|
137
|
+
* must be bound, not closed and before its deadline; the voter's ballot becomes `nextBallot` of it, timed `now` when
|
|
138
|
+
* it changed (an unchanged ballot keeps its time). An emptied ballot withdraws the voter.
|
|
139
|
+
*/
|
|
140
|
+
vote(id: string, voter: string, name: string, index: number, now: number): VoteResult;
|
|
141
|
+
/** A poll's ballots, earliest change first. */
|
|
142
|
+
ballots(id: string): PollBallot[];
|
|
143
|
+
/** Stop taking votes, once: true for the one call that closed it. */
|
|
144
|
+
closePoll(id: string, now: number): boolean;
|
|
145
|
+
/** Bound polls still open whose deadline has come. */
|
|
146
|
+
pollsDue(now: number): ReplyButtonSet[];
|
|
147
|
+
/** Bound polls still taking votes (their countdowns are redrawn after a restart). */
|
|
148
|
+
openPolls(): ReplyButtonSet[];
|
|
149
|
+
/** Closed polls whose results the outbox has not taken yet (a crash, or an outbox that was not open). */
|
|
150
|
+
pollsAwaitingResults(): ReplyButtonSet[];
|
|
151
|
+
markResults(id: string, now: number): void;
|
|
152
|
+
/** Closed polls whose platform message does not show it yet. */
|
|
153
|
+
pollsUnsettled(): ReplyButtonSet[];
|
|
109
154
|
/** Sets on these messages, for the web chat's view of a reply's buttons. */
|
|
110
155
|
forMessages(instance: string, messageIds: readonly string[]): ReplyButtonSet[];
|
|
111
156
|
/** Settled sets older than `before` are history the store no longer needs. */
|