aurival 0.6.0 → 0.7.0
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 +110 -0
- package/dist/bot.d.ts +51 -0
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +153 -5
- package/dist/bot.js.map +1 -1
- package/dist/caps.d.ts +27 -0
- package/dist/caps.d.ts.map +1 -1
- package/dist/caps.js +29 -0
- package/dist/caps.js.map +1 -1
- package/dist/cooldown.d.ts +164 -0
- package/dist/cooldown.d.ts.map +1 -0
- package/dist/cooldown.js +221 -0
- package/dist/cooldown.js.map +1 -0
- package/dist/embeds.d.ts +38 -0
- package/dist/embeds.d.ts.map +1 -1
- package/dist/embeds.js +59 -5
- package/dist/embeds.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +22 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +81 -14
- package/dist/events.js.map +1 -1
- package/dist/http.d.ts +21 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +26 -0
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -435,6 +435,95 @@ is single-use, and acking one a second time doesn't throw locally, the server 40
|
|
|
435
435
|
The full set of showcase examples (trivia, giveaways, DJ bots, moderation reports…) is in the
|
|
436
436
|
[cookbook](https://bots.aurival.com/docs/cookbook).
|
|
437
437
|
|
|
438
|
+
## Cooldowns
|
|
439
|
+
|
|
440
|
+
A cooldown paces a command or a button. You attach it, the SDK keeps the bucket, and the wire
|
|
441
|
+
never carries it — the server does not know one exists.
|
|
442
|
+
|
|
443
|
+
```ts
|
|
444
|
+
import { Bot, Cooldown } from 'aurival';
|
|
445
|
+
|
|
446
|
+
const bot = new Bot(); // buttonCooldown: Cooldown(1, 2) already
|
|
447
|
+
|
|
448
|
+
bot.command('roll', { cooldown: { rate: 1, per: 5 } }, async (ctx) => { /* … */ });
|
|
449
|
+
bot.command('leaderboard', { cooldown: new Cooldown(3, 60, 'chat') }, async (ctx) => { /* … */ });
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**`per` is seconds, not milliseconds.** That is deliberate and it is the one place this SDK
|
|
453
|
+
departs from JS habit: `AurivalAPIError.retryAfter` is already seconds, and a developer who
|
|
454
|
+
catches one and a developer who writes a cooldown should not hold two meanings of one number.
|
|
455
|
+
|
|
456
|
+
The options object is a third form of `command()`. The two you already use —
|
|
457
|
+
`command(name, handler)` and `command(name, description, handler)` — are untouched, and
|
|
458
|
+
`description` is a field on the options object when you want all three.
|
|
459
|
+
|
|
460
|
+
Three buckets, and each one says who shares the limit:
|
|
461
|
+
|
|
462
|
+
| bucket | key | reads as |
|
|
463
|
+
| ------------------ | ------------------------------ | ----------------------------------------------- |
|
|
464
|
+
| `user` (default) | the invoking or pressing user | each person gets one every N seconds |
|
|
465
|
+
| `chat` | the conversation | this chat gets one every N seconds, whoever asks |
|
|
466
|
+
| `global` | nothing | this bot answers one every N seconds, everywhere |
|
|
467
|
+
|
|
468
|
+
A command that is refused never reaches your handler, and a refusal spends nothing — the token
|
|
469
|
+
is taken only when the call passes.
|
|
470
|
+
|
|
471
|
+
### What the member sees
|
|
472
|
+
|
|
473
|
+
One plain reply per bucket per window, then silence for the rest of it. Somebody who types
|
|
474
|
+
`/roll` eight times in five seconds gets one sentence, not eight:
|
|
475
|
+
|
|
476
|
+
```
|
|
477
|
+
Slow down. Try /roll again in 3 s.
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Replace it, or suppress it, with a hook. A registered hook owns the whole response: the SDK
|
|
481
|
+
sends nothing and the hook either replies or stays quiet. There is no return value to get right.
|
|
482
|
+
|
|
483
|
+
```ts
|
|
484
|
+
bot.onCooldown(async (ctx, retryAfter) => { // bot-level
|
|
485
|
+
await ctx.reply(`easy, ${Math.ceil(retryAfter)}s`);
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
bot.command('roll', { cooldown: { rate: 1, per: 5 }, onCooldown }, handler); // this one wins
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
`retryAfter` is seconds remaining, unrounded. The hook is called once per bucket per window too,
|
|
492
|
+
so replacing the sentence does not re-introduce the spam it existed to stop.
|
|
493
|
+
|
|
494
|
+
### Buttons already have one
|
|
495
|
+
|
|
496
|
+
Every bot ships with `Cooldown(1, 2, 'user')` on its buttons, without asking: one press every two
|
|
497
|
+
seconds per person, one bucket per person per bot. A press inside the window is answered rather
|
|
498
|
+
than handled — the presser's pending ink clears and their device shows a toast — and the button
|
|
499
|
+
stays live, because a cooldown is a wait, not a spend.
|
|
500
|
+
|
|
501
|
+
Override it where it belongs, and precedence is button, then card, then the bot default:
|
|
502
|
+
|
|
503
|
+
```ts
|
|
504
|
+
const bot = new Bot({ buttonCooldown: { rate: 1, per: 5 } }); // this bot's buttons
|
|
505
|
+
await ctx.reply({ buttons, buttonCooldown: null }); // this card's buttons, off
|
|
506
|
+
new Button({ label: 'Paint', cooldown: null }); // this one button, off
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
A per-card or per-button cooldown gets its own buckets, keyed on the message, the button id and
|
|
510
|
+
the bucket subject — button ids are unique within a message and nowhere else, so two cards that
|
|
511
|
+
both call a button `roll` never share a limit. `null` disables at any level.
|
|
512
|
+
|
|
513
|
+
A button cooldown is at most 60 seconds and is refused where you write it, not later inside an
|
|
514
|
+
ack you cannot see. Command cooldowns have no cap: `{ rate: 1, per: 3600 }` on a command is a
|
|
515
|
+
legitimate once an hour.
|
|
516
|
+
|
|
517
|
+
Link buttons are outside all of this — a link opens on the device and never round-trips, so it
|
|
518
|
+
cannot carry a cooldown and `Button.link` has no `cooldown` field.
|
|
519
|
+
|
|
520
|
+
### The caveat, said plainly
|
|
521
|
+
|
|
522
|
+
**Buckets are process memory.** They reset on restart, and they are not shared between
|
|
523
|
+
instances: a bot running two processes has two independent buckets, and a deploy clears every
|
|
524
|
+
bucket it had. Cooldowns pace a conversation. They are not a quota, and they are not the abuse
|
|
525
|
+
bound — the server keeps its own floor underneath them.
|
|
526
|
+
|
|
438
527
|
## Upgrading from 0.2.x
|
|
439
528
|
|
|
440
529
|
There is one `Context` per event family now, instead of one class for every event with most of
|
|
@@ -561,6 +650,27 @@ await ctx.edit(sent, { embeds: [new Embed({ title: 'Starting in 3…' })] });
|
|
|
561
650
|
await ctx.edit(sent, { buttons: [] }); // the row is gone, the plate stays
|
|
562
651
|
```
|
|
563
652
|
|
|
653
|
+
### Upgrading from 0.6.x
|
|
654
|
+
|
|
655
|
+
0.7.0 adds cooldowns and takes nothing away. `Cooldown` is a new export, `command()` gained a
|
|
656
|
+
third options form, `Bot` gained `buttonCooldown`, `reply()`/`send()` gained `buttonCooldown`,
|
|
657
|
+
and `Button` gained `cooldown`. Every one of them has a default that keeps 0.6.0 behaviour, with
|
|
658
|
+
**one exception you should know about**: buttons now carry `Cooldown(1, 2, 'user')` by default,
|
|
659
|
+
so a member cannot press the same bot's buttons faster than once every two seconds. That is
|
|
660
|
+
deliberate and it is on by default. If your bot's buttons are something a member is meant to
|
|
661
|
+
mash, turn it off explicitly:
|
|
662
|
+
|
|
663
|
+
```ts
|
|
664
|
+
const bot = new Bot({ buttonCooldown: null });
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
Both existing `command()` overloads keep their exact signatures, so no call you have written
|
|
668
|
+
changes shape.
|
|
669
|
+
|
|
670
|
+
Two new error classes ship with it, `CooldownWithBody` and `CooldownRetryAfterInvalid`, both
|
|
671
|
+
`InvalidRequestError`. You will not normally see either: the SDK builds the cooldown ack itself
|
|
672
|
+
and refuses an out-of-range button cooldown where you write it.
|
|
673
|
+
|
|
564
674
|
## Shadowed commands
|
|
565
675
|
|
|
566
676
|
A bot can declare up to 50 commands, the SDK refuses to connect past that.
|
package/dist/bot.d.ts
CHANGED
|
@@ -5,8 +5,20 @@ import { Context, Event } from './events.js';
|
|
|
5
5
|
import { HttpClient } from './http.js';
|
|
6
6
|
import type { AnyContext, BotContext, BotEventType, ButtonContext, ButtonEventType, EventContext, MemberContext, MemberEventType, ReactionContext, ReactionEventType } from './events.js';
|
|
7
7
|
import type { Logger } from './http.js';
|
|
8
|
+
import type { CooldownLike, CooldownOption } from './cooldown.js';
|
|
8
9
|
/** A `bot.command()` handler. */
|
|
9
10
|
export type Handler = (ctx: Context) => Promise<void> | void;
|
|
11
|
+
/**
|
|
12
|
+
* A per-command or bot-level cooldown hook (AMENDMENT-08 §4). `retryAfter`
|
|
13
|
+
* is the raw, unrounded seconds `Cooldown.check()` returned — round it
|
|
14
|
+
* yourself (`Math.max(1, Math.ceil(retryAfter))`, §5's rule) to reproduce
|
|
15
|
+
* the built-in sentence's `{n}`. Replaces the built-in "Slow down…" notice
|
|
16
|
+
* entirely: a hook that does nothing suppresses the notice, a hook that
|
|
17
|
+
* replies sends whatever it wants instead. Gated by the same once-per-window
|
|
18
|
+
* ledger as the built-in notice — a hook runs once per bucket per window,
|
|
19
|
+
* not on every refused call.
|
|
20
|
+
*/
|
|
21
|
+
export type OnCooldownHook = (ctx: Context, retryAfter: number) => Promise<void> | void;
|
|
10
22
|
/** A `member.joined` / `member.left` handler. */
|
|
11
23
|
export type MemberHandler = (ctx: MemberContext) => Promise<void> | void;
|
|
12
24
|
/** A `bot.added` / `bot.removed` handler. */
|
|
@@ -40,6 +52,32 @@ export interface BotOptions {
|
|
|
40
52
|
* keeps typing entirely in your hands (`ctx.withTyping()`). Default `true`.
|
|
41
53
|
*/
|
|
42
54
|
autoTyping?: boolean | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* The default cooldown a button press checks when neither its card nor
|
|
57
|
+
* the button itself carries one (AMENDMENT-08 §3). Defaults to `new
|
|
58
|
+
* Cooldown(1, 2.0, 'user')` — one press per user per two seconds — when
|
|
59
|
+
* omitted; pass `null` to disable it bot-wide, leaving only card/button
|
|
60
|
+
* cooldowns (if any) in effect. Bound by the same 60s cap as every other
|
|
61
|
+
* button-family cooldown, checked at construction. **Its bucket lives in
|
|
62
|
+
* process memory: it resets on every restart, and it is never shared
|
|
63
|
+
* across instances or processes** — a bot running two workers has two
|
|
64
|
+
* independent buckets (see {@link Cooldown}'s own doc comment for why).
|
|
65
|
+
*/
|
|
66
|
+
buttonCooldown?: CooldownOption | undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A command's third form: `bot.command(name, { cooldown, onCooldown,
|
|
70
|
+
* description }, handler)`. `description` here is equivalent to the
|
|
71
|
+
* two-argument string overload's — the options object is a third spelling
|
|
72
|
+
* of the same call, not a different feature (R-9's two string overloads are
|
|
73
|
+
* unchanged; this is additive). `cooldown` accepts a `Cooldown` instance or
|
|
74
|
+
* a plain `{ rate, per, bucket? }` literal, normalized at registration.
|
|
75
|
+
* Command cooldowns have no 60s cap (D13) — they never reach the wire.
|
|
76
|
+
*/
|
|
77
|
+
export interface CommandOptions {
|
|
78
|
+
description?: string | undefined;
|
|
79
|
+
cooldown?: CooldownLike | undefined;
|
|
80
|
+
onCooldown?: OnCooldownHook | undefined;
|
|
43
81
|
}
|
|
44
82
|
/**
|
|
45
83
|
* How long a command handler runs before the chat is told the bot is thinking
|
|
@@ -93,6 +131,13 @@ export declare class Bot {
|
|
|
93
131
|
*/
|
|
94
132
|
command(name: string, handler: Handler): void;
|
|
95
133
|
command(name: string, description: string, handler: Handler): void;
|
|
134
|
+
/**
|
|
135
|
+
* The options form (AMENDMENT-08 §4/seat ruling): a per-command cooldown
|
|
136
|
+
* is an option here, not a decorator. `{ cooldown, onCooldown }` beats
|
|
137
|
+
* `bot.onCooldown()` for this command alone — only one hook ever runs for
|
|
138
|
+
* a given refusal.
|
|
139
|
+
*/
|
|
140
|
+
command(name: string, options: CommandOptions, handler: Handler): void;
|
|
96
141
|
/**
|
|
97
142
|
* Register a handler for an event. Which context the handler gets follows
|
|
98
143
|
* from the type, and your editor knows it (BA-R68):
|
|
@@ -127,6 +172,12 @@ export declare class Bot {
|
|
|
127
172
|
* handler that threw, a `problem` frame, a backlog overflow.
|
|
128
173
|
*/
|
|
129
174
|
onError(fn: ErrorHook): void;
|
|
175
|
+
/**
|
|
176
|
+
* The bot-level cooldown hook (AMENDMENT-08 §4) — runs for any refused
|
|
177
|
+
* command that does not carry its own `onCooldown` option. A per-command
|
|
178
|
+
* hook always wins; only one hook ever runs for a given refusal.
|
|
179
|
+
*/
|
|
180
|
+
onCooldown(fn: OnCooldownHook): void;
|
|
130
181
|
/** Installs signal handlers and runs until SIGINT/SIGTERM or something fatal. */
|
|
131
182
|
run(): Promise<void>;
|
|
132
183
|
start(signal?: AbortSignal): Promise<void>;
|
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAQ,OAAO,EAAmC,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAc,MAAM,aAAa,CAAC;AACzD,OAAO,EAAgB,UAAU,EAAiB,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EAEf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/bot.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/** The developer-facing surface: declare commands, call run(), we hold the socket. */
|
|
2
2
|
import { Auth, KeyFile, machineLabel, pair, resolveHost } from './auth.js';
|
|
3
|
-
import { AurivalError, BotSuspended, RateLimitError, SessionSuperseded } from './errors.js';
|
|
3
|
+
import { AurivalError, BotSuspended, ButtonAlreadyUsed, NotFound, RateLimitError, SessionSuperseded } from './errors.js';
|
|
4
4
|
import { Context, Event, contextFor } from './events.js';
|
|
5
5
|
import { DEFAULT_HOST, HttpClient, defaultLogger } from './http.js';
|
|
6
|
+
import { commandCooldownNotice } from './caps.js';
|
|
7
|
+
import { Cooldown, buttonBucketKey, normalizeCooldownOption, resolveButtonCooldown, retryAfterMs, roundSeconds, subjectKey, } from './cooldown.js';
|
|
6
8
|
import { EVENT_BACKLOG_OVERFLOWED, EVENT_COMMAND_INVOKED, Socket } from './socket.js';
|
|
7
9
|
import * as status from './status.js';
|
|
8
10
|
/** Types `on()` refuses, and why — each is a STRUCTURAL case where a
|
|
@@ -118,22 +120,49 @@ export class Bot {
|
|
|
118
120
|
#http = null;
|
|
119
121
|
#quiet;
|
|
120
122
|
#autoTyping;
|
|
123
|
+
#buttonCooldown;
|
|
124
|
+
#cooldownHook = null;
|
|
121
125
|
constructor(options = {}) {
|
|
122
126
|
this.#log = options.logger ?? defaultLogger();
|
|
123
127
|
this.#host = options.host;
|
|
124
128
|
this.#keyPath = options.keyPath;
|
|
125
129
|
this.#quiet = status.isQuiet(options.quiet);
|
|
126
130
|
this.#autoTyping = options.autoTyping ?? true;
|
|
131
|
+
const resolvedButtonCooldown = normalizeCooldownOption(options.buttonCooldown, {
|
|
132
|
+
boundToButton: true,
|
|
133
|
+
});
|
|
134
|
+
this.#buttonCooldown =
|
|
135
|
+
resolvedButtonCooldown === undefined ? new Cooldown(1, 2.0, 'user') : resolvedButtonCooldown;
|
|
127
136
|
}
|
|
128
137
|
command(name, second, third) {
|
|
129
|
-
|
|
130
|
-
|
|
138
|
+
let description = '';
|
|
139
|
+
let handler;
|
|
140
|
+
let cooldownLike;
|
|
141
|
+
let onCooldownHook;
|
|
142
|
+
if (typeof second === 'string') {
|
|
143
|
+
description = second;
|
|
144
|
+
handler = third;
|
|
145
|
+
}
|
|
146
|
+
else if (typeof second === 'function') {
|
|
147
|
+
handler = second;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
description = second.description ?? '';
|
|
151
|
+
cooldownLike = second.cooldown;
|
|
152
|
+
onCooldownHook = second.onCooldown;
|
|
153
|
+
handler = third;
|
|
154
|
+
}
|
|
131
155
|
if (handler === undefined)
|
|
132
156
|
throw new AurivalError(`command(${name}) needs a handler`);
|
|
133
157
|
const key = lookupKey(name);
|
|
134
158
|
if (this.#registered.has(key))
|
|
135
159
|
status.duplicateCommand(name, this.#quiet);
|
|
136
|
-
|
|
160
|
+
const registered = { command: { name, description }, handler };
|
|
161
|
+
if (cooldownLike !== undefined)
|
|
162
|
+
registered.cooldown = Cooldown.from(cooldownLike);
|
|
163
|
+
if (onCooldownHook !== undefined)
|
|
164
|
+
registered.onCooldown = onCooldownHook;
|
|
165
|
+
this.#registered.set(key, registered);
|
|
137
166
|
}
|
|
138
167
|
on(type, handler) {
|
|
139
168
|
const reason = NEVER_DISPATCHED_TO_ON.get(type);
|
|
@@ -153,6 +182,14 @@ export class Bot {
|
|
|
153
182
|
onError(fn) {
|
|
154
183
|
this.#errorHook = fn;
|
|
155
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* The bot-level cooldown hook (AMENDMENT-08 §4) — runs for any refused
|
|
187
|
+
* command that does not carry its own `onCooldown` option. A per-command
|
|
188
|
+
* hook always wins; only one hook ever runs for a given refusal.
|
|
189
|
+
*/
|
|
190
|
+
onCooldown(fn) {
|
|
191
|
+
this.#cooldownHook = fn;
|
|
192
|
+
}
|
|
156
193
|
// -- running -----------------------------------------------------------
|
|
157
194
|
/** Installs signal handlers and runs until SIGINT/SIGTERM or something fatal. */
|
|
158
195
|
async run() {
|
|
@@ -209,7 +246,16 @@ export class Bot {
|
|
|
209
246
|
onProblem: (problem) => {
|
|
210
247
|
void this.#callErrorHook(problem, null);
|
|
211
248
|
},
|
|
212
|
-
|
|
249
|
+
// `button.pressed` always claims a handler exists, whether or not a
|
|
250
|
+
// developer ever called `on('button.pressed', ...)` — a press must
|
|
251
|
+
// reach `#handleButtonPress` so the cooldown check (and its ack on
|
|
252
|
+
// refusal) always runs, even for a bot that only sends cards and
|
|
253
|
+
// handles presses nowhere, or not yet (AMENDMENT-08 §1/§5: the button
|
|
254
|
+
// default applies to every bot with no line of code, and the presser
|
|
255
|
+
// must never be left staring at pending ink). A press that passes
|
|
256
|
+
// with no registered handler simply falls through `#handleGeneric`
|
|
257
|
+
// with nothing to call; the socket-level ack still fires either way.
|
|
258
|
+
hasHandler: (type) => type === 'button.pressed' || this.#onHandlers.has(type),
|
|
213
259
|
logger: this.#log,
|
|
214
260
|
botName: machine.bot,
|
|
215
261
|
commandCount: this.#registered.size,
|
|
@@ -303,6 +349,10 @@ export class Bot {
|
|
|
303
349
|
await this.#handleCommand(event);
|
|
304
350
|
return;
|
|
305
351
|
}
|
|
352
|
+
if (event.type === 'button.pressed') {
|
|
353
|
+
await this.#handleButtonPress(event);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
306
356
|
await this.#handleGeneric(event);
|
|
307
357
|
}
|
|
308
358
|
async #handleCommand(event) {
|
|
@@ -317,6 +367,13 @@ export class Bot {
|
|
|
317
367
|
if (this.#http === null)
|
|
318
368
|
return;
|
|
319
369
|
const ctx = Context.fromEvent(event, this.#http);
|
|
370
|
+
// AMENDMENT-08: the cooldown check runs before auto-typing and before the
|
|
371
|
+
// handler — a refused invocation never reaches either.
|
|
372
|
+
if (registered.cooldown !== undefined) {
|
|
373
|
+
const refused = await this.#handleCommandCooldown(ctx, registered);
|
|
374
|
+
if (refused)
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
320
377
|
const typing = this.#startAutoTyping(ctx);
|
|
321
378
|
try {
|
|
322
379
|
await registered.handler(ctx);
|
|
@@ -330,6 +387,97 @@ export class Bot {
|
|
|
330
387
|
await typing.stop();
|
|
331
388
|
}
|
|
332
389
|
}
|
|
390
|
+
/**
|
|
391
|
+
* A registered command's own cooldown (AMENDMENT-08 §4). Returns `true`
|
|
392
|
+
* when the invocation was refused (dispatch stops here). Its bucket key
|
|
393
|
+
* carries no message/button scope (`attachmentScope = ()`) — each
|
|
394
|
+
* command's `Cooldown` is its own instance, so nothing else could collide
|
|
395
|
+
* with it anyway.
|
|
396
|
+
*
|
|
397
|
+
* Once per bucket per window: either the per-command hook, the bot-level
|
|
398
|
+
* one, or — with neither registered — the fixed reply. A hook does not
|
|
399
|
+
* run on every refused call; it shares the same `noticeOnce` gate the
|
|
400
|
+
* built-in notice uses, so mashing a refused command inside one window
|
|
401
|
+
* produces one hook call (or one reply), not a flood of them.
|
|
402
|
+
*/
|
|
403
|
+
async #handleCommandCooldown(ctx, registered) {
|
|
404
|
+
const cooldown = registered.cooldown;
|
|
405
|
+
if (cooldown === undefined)
|
|
406
|
+
return false;
|
|
407
|
+
const key = subjectKey(cooldown.bucket, ctx.sender.id, ctx.chat.id);
|
|
408
|
+
const refusedAfterSeconds = cooldown.check(key);
|
|
409
|
+
if (refusedAfterSeconds === null)
|
|
410
|
+
return false;
|
|
411
|
+
if (!cooldown.noticeOnce(key))
|
|
412
|
+
return true;
|
|
413
|
+
// Per-command beats bot-level; only one hook ever runs.
|
|
414
|
+
const hook = registered.onCooldown ?? this.#cooldownHook;
|
|
415
|
+
if (hook !== null && hook !== undefined) {
|
|
416
|
+
try {
|
|
417
|
+
await hook(ctx, refusedAfterSeconds);
|
|
418
|
+
}
|
|
419
|
+
catch (exc) {
|
|
420
|
+
this.#log.error(`cooldown hook for ${JSON.stringify(ctx.command)} threw: ${exc instanceof Error ? (exc.stack ?? exc.message) : String(exc)}`);
|
|
421
|
+
await this.#callErrorHook(exc, ctx);
|
|
422
|
+
}
|
|
423
|
+
return true;
|
|
424
|
+
}
|
|
425
|
+
const n = roundSeconds(refusedAfterSeconds);
|
|
426
|
+
try {
|
|
427
|
+
await ctx.reply(commandCooldownNotice(ctx.command, n));
|
|
428
|
+
}
|
|
429
|
+
catch (exc) {
|
|
430
|
+
this.#log.error(`cooldown notice for ${JSON.stringify(ctx.command)} failed: ${exc instanceof Error ? (exc.stack ?? exc.message) : String(exc)}`);
|
|
431
|
+
await this.#callErrorHook(exc, ctx);
|
|
432
|
+
}
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* AMENDMENT-08 §3: resolve the pressed button's cooldown (button > card >
|
|
437
|
+
* bot default), check it, and — on refusal — send the cooldown ack
|
|
438
|
+
* instead of dispatching to any `on('button.pressed', ...)` handler. The
|
|
439
|
+
* socket still acks the underlying event exactly as it does for any other
|
|
440
|
+
* dispatch; only the handler is skipped.
|
|
441
|
+
*/
|
|
442
|
+
async #handleButtonPress(event) {
|
|
443
|
+
if (this.#http === null)
|
|
444
|
+
return;
|
|
445
|
+
const ctx = contextFor(event, this.#http);
|
|
446
|
+
const card = this.#http.cardCooldowns.lookup(ctx.message.id);
|
|
447
|
+
const resolved = resolveButtonCooldown(this.#buttonCooldown, card, ctx.button);
|
|
448
|
+
if (resolved.cooldown !== null) {
|
|
449
|
+
const scope = resolved.scoped ? { messageId: ctx.message.id, buttonId: ctx.button } : null;
|
|
450
|
+
const key = buttonBucketKey(resolved.cooldown, scope, ctx.user.id, ctx.chat.id);
|
|
451
|
+
const refusedAfterSeconds = resolved.cooldown.check(key);
|
|
452
|
+
if (refusedAfterSeconds !== null) {
|
|
453
|
+
await this.#ackButtonCooldown(ctx, retryAfterMs(refusedAfterSeconds));
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
await this.#handleGeneric(event);
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* The SDK's own automatic answer to a refused press (§5.1). Swallows
|
|
461
|
+
* `ButtonAlreadyUsed`/`NotFound` silently — a debug line, never `onError`,
|
|
462
|
+
* never thrown — because the press already resolved some other way (a
|
|
463
|
+
* double-tap, an expired row) and the cooldown refusal is moot. Every
|
|
464
|
+
* other status still goes through the normal error path.
|
|
465
|
+
*/
|
|
466
|
+
async #ackButtonCooldown(ctx, ms) {
|
|
467
|
+
if (this.#http === null)
|
|
468
|
+
return;
|
|
469
|
+
try {
|
|
470
|
+
await this.#http.ackCooldown(ctx.interaction, ms);
|
|
471
|
+
}
|
|
472
|
+
catch (exc) {
|
|
473
|
+
if (exc instanceof ButtonAlreadyUsed || exc instanceof NotFound) {
|
|
474
|
+
this.#log.debug(`cooldown ack for ${JSON.stringify(ctx.interaction)} found the press already resolved: ${exc instanceof Error ? exc.message : String(exc)}`);
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
this.#log.error(`cooldown ack for ${JSON.stringify(ctx.interaction)} failed: ${exc instanceof Error ? (exc.stack ?? exc.message) : String(exc)}`);
|
|
478
|
+
await this.#callErrorHook(exc, ctx);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
333
481
|
// -- auto-typing (SDK-41) ------------------------------------------------
|
|
334
482
|
#startAutoTyping(ctx) {
|
|
335
483
|
if (!this.#autoTyping || ctx.chat.id === '')
|
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/caps.d.ts
CHANGED
|
@@ -69,4 +69,31 @@ export declare const EMPTY_MESSAGE = "a message needs text, embeds or buttons";
|
|
|
69
69
|
* and this file.
|
|
70
70
|
*/
|
|
71
71
|
export declare const NOTHING_TO_EDIT = "an edit needs text, embeds or buttons";
|
|
72
|
+
/**
|
|
73
|
+
* AMENDMENT-08 §4: the command-cooldown notice, sent through `ctx.reply`
|
|
74
|
+
* once per bucket per window. `{name}` is the command as the developer
|
|
75
|
+
* registered it; `{n}` is `Math.max(1, Math.ceil(retryAfterSeconds))`
|
|
76
|
+
* (`cooldown.ts`'s `roundSeconds`) — the SAME rounding rule the button
|
|
77
|
+
* toast's `{n}` uses (§5.4), stated once there. Lives byte-identically in
|
|
78
|
+
* `sdk/python/aurival/caps.py` and the docs page; never a Go template, since
|
|
79
|
+
* the server has no part in a command cooldown.
|
|
80
|
+
*/
|
|
81
|
+
export declare const COMMAND_COOLDOWN_NOTICE_TEMPLATE = "Slow down. Try /{name} again in {n} s.";
|
|
82
|
+
/** Renders {@link COMMAND_COOLDOWN_NOTICE_TEMPLATE} for one refusal. */
|
|
83
|
+
export declare function commandCooldownNotice(name: string, n: number): string;
|
|
84
|
+
/**
|
|
85
|
+
* AMENDMENT-08 §5.1/§8's two new ack refusals: `cooldown` mixed with a
|
|
86
|
+
* `text`/`embeds`/`buttons` body, and a `retry_after_ms` outside
|
|
87
|
+
* `[MIN_COOLDOWN_RETRY_AFTER_MS, MAX_COOLDOWN_RETRY_AFTER_MS]`. These DO
|
|
88
|
+
* have a Go twin (`errors_v1.go`'s `CodeCooldownWithBody` /
|
|
89
|
+
* `CodeCooldownRetryAfterInvalid`, §8's table) — unlike `cooldown.ts`'s four
|
|
90
|
+
* attachment-time sentences, which never reach the wire and so are never
|
|
91
|
+
* Go's to send back. L1 has not landed `errors_v1.go`'s rows yet (verified
|
|
92
|
+
* empty on `origin/main`); these ship ahead on §8's authority, following the
|
|
93
|
+
* `NOTHING_TO_EDIT` precedent above.
|
|
94
|
+
*/
|
|
95
|
+
export declare const MIN_COOLDOWN_RETRY_AFTER_MS = 1;
|
|
96
|
+
export declare const MAX_COOLDOWN_RETRY_AFTER_MS = 60000;
|
|
97
|
+
export declare const CAP_COOLDOWN_WITH_BODY = "a cooldown ack carries no text, embeds or buttons";
|
|
98
|
+
export declare const CAP_COOLDOWN_RETRY_AFTER_INVALID = "a cooldown retry_after_ms is a whole number of milliseconds between 1 and 60000";
|
|
72
99
|
//# sourceMappingURL=caps.d.ts.map
|
package/dist/caps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caps.d.ts","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAC9E,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,4CAA4C,CAAC;AAC5E,eAAO,MAAM,sBAAsB,yCAAyC,CAAC;AAC7E,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AACrF,eAAO,MAAM,oBAAoB,mEACiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,wBAAwB,oDAAoD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,wCAAwC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,0CAA2D,CAAC;AAC9F,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,2BAA2B,4CAA4C,CAAC;AACrF,eAAO,MAAM,2BAA2B,oDAAoD,CAAC;AAC7F,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oFAC8C,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,4CAA4C,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,0CAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"caps.d.ts","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAC9E,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,4CAA4C,CAAC;AAC5E,eAAO,MAAM,sBAAsB,yCAAyC,CAAC;AAC7E,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AACrF,eAAO,MAAM,oBAAoB,mEACiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,wBAAwB,oDAAoD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,wCAAwC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,0CAA2D,CAAC;AAC9F,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,2BAA2B,4CAA4C,CAAC;AACrF,eAAO,MAAM,2BAA2B,oDAAoD,CAAC;AAC7F,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oFAC8C,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,4CAA4C,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,0CAA0C,CAAC;AAEvE;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,2CAA2C,CAAC;AAEzF,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,eAAO,MAAM,sBAAsB,sDAAsD,CAAC;AAC1F,eAAO,MAAM,gCAAgC,oFAA0I,CAAC"}
|
package/dist/caps.js
CHANGED
|
@@ -68,4 +68,33 @@ export const EMPTY_MESSAGE = 'a message needs text, embeds or buttons';
|
|
|
68
68
|
* and this file.
|
|
69
69
|
*/
|
|
70
70
|
export const NOTHING_TO_EDIT = 'an edit needs text, embeds or buttons';
|
|
71
|
+
/**
|
|
72
|
+
* AMENDMENT-08 §4: the command-cooldown notice, sent through `ctx.reply`
|
|
73
|
+
* once per bucket per window. `{name}` is the command as the developer
|
|
74
|
+
* registered it; `{n}` is `Math.max(1, Math.ceil(retryAfterSeconds))`
|
|
75
|
+
* (`cooldown.ts`'s `roundSeconds`) — the SAME rounding rule the button
|
|
76
|
+
* toast's `{n}` uses (§5.4), stated once there. Lives byte-identically in
|
|
77
|
+
* `sdk/python/aurival/caps.py` and the docs page; never a Go template, since
|
|
78
|
+
* the server has no part in a command cooldown.
|
|
79
|
+
*/
|
|
80
|
+
export const COMMAND_COOLDOWN_NOTICE_TEMPLATE = 'Slow down. Try /{name} again in {n} s.';
|
|
81
|
+
/** Renders {@link COMMAND_COOLDOWN_NOTICE_TEMPLATE} for one refusal. */
|
|
82
|
+
export function commandCooldownNotice(name, n) {
|
|
83
|
+
return COMMAND_COOLDOWN_NOTICE_TEMPLATE.replace('{name}', name).replace('{n}', String(n));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* AMENDMENT-08 §5.1/§8's two new ack refusals: `cooldown` mixed with a
|
|
87
|
+
* `text`/`embeds`/`buttons` body, and a `retry_after_ms` outside
|
|
88
|
+
* `[MIN_COOLDOWN_RETRY_AFTER_MS, MAX_COOLDOWN_RETRY_AFTER_MS]`. These DO
|
|
89
|
+
* have a Go twin (`errors_v1.go`'s `CodeCooldownWithBody` /
|
|
90
|
+
* `CodeCooldownRetryAfterInvalid`, §8's table) — unlike `cooldown.ts`'s four
|
|
91
|
+
* attachment-time sentences, which never reach the wire and so are never
|
|
92
|
+
* Go's to send back. L1 has not landed `errors_v1.go`'s rows yet (verified
|
|
93
|
+
* empty on `origin/main`); these ship ahead on §8's authority, following the
|
|
94
|
+
* `NOTHING_TO_EDIT` precedent above.
|
|
95
|
+
*/
|
|
96
|
+
export const MIN_COOLDOWN_RETRY_AFTER_MS = 1;
|
|
97
|
+
export const MAX_COOLDOWN_RETRY_AFTER_MS = 60000;
|
|
98
|
+
export const CAP_COOLDOWN_WITH_BODY = 'a cooldown ack carries no text, embeds or buttons';
|
|
99
|
+
export const CAP_COOLDOWN_RETRY_AFTER_INVALID = `a cooldown retry_after_ms is a whole number of milliseconds between ${MIN_COOLDOWN_RETRY_AFTER_MS} and ${MAX_COOLDOWN_RETRY_AFTER_MS}`;
|
|
71
100
|
//# sourceMappingURL=caps.js.map
|
package/dist/caps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caps.js","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAIjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,0CAA0C,CAAC;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,6CAA6C,CAAC;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,iDAAiD,CAAC;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAC;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,kBAAkB,aAAa,CAAC;AAC9F,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,yCAAyC,CAAC;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,iDAAiD,CAAC;AAC7F,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,iFAAiF,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"caps.js","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAIjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,0CAA0C,CAAC;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,6CAA6C,CAAC;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,iDAAiD,CAAC;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAC;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,kBAAkB,aAAa,CAAC;AAC9F,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,yCAAyC,CAAC;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,iDAAiD,CAAC;AAC7F,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,iFAAiF,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,wCAAwC,CAAC;AAEzF,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,CAAS;IAC3D,OAAO,gCAAgC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,mDAAmD,CAAC;AAC1F,MAAM,CAAC,MAAM,gCAAgC,GAAG,uEAAuE,2BAA2B,QAAQ,2BAA2B,EAAE,CAAC"}
|