@adriangalilea/utils 2.5.0 → 2.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/dist/bot/index.d.ts +1 -0
- package/dist/bot/index.d.ts.map +1 -1
- package/dist/bot/index.js +1 -0
- package/dist/bot/index.js.map +1 -1
- package/dist/bot/inline-feedback.d.ts +53 -0
- package/dist/bot/inline-feedback.d.ts.map +1 -0
- package/dist/bot/inline-feedback.js +59 -0
- package/dist/bot/inline-feedback.js.map +1 -0
- package/dist/bot/profile.d.ts +2 -0
- package/dist/bot/profile.d.ts.map +1 -1
- package/dist/bot/profile.js +4 -0
- package/dist/bot/profile.js.map +1 -1
- package/package.json +5 -1
package/dist/bot/index.d.ts
CHANGED
package/dist/bot/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
package/dist/bot/index.js
CHANGED
package/dist/bot/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline-feedback tripwire — behavioral detection for a BotFather setting the
|
|
3
|
+
* Bot API cannot see.
|
|
4
|
+
*
|
|
5
|
+
* `chosen_inline_result` delivery is gated by BotFather's inline FEEDBACK
|
|
6
|
+
* probability, which defaults to 0% and silently RESETS on bot transfer and
|
|
7
|
+
* on inline-mode toggling. At 0%, taps post the placeholder client-side but
|
|
8
|
+
* the bot never hears about them, so nothing ever fills in — and `getMe`
|
|
9
|
+
* reports nothing (the profile `expects` drift-check is blind here). The
|
|
10
|
+
* asymmetry IS measurable though: results keep getting served while a chosen
|
|
11
|
+
* event never arrives.
|
|
12
|
+
*
|
|
13
|
+
* Storage is injected as three atomic-ish ops (wire to D1/Redis/anything);
|
|
14
|
+
* this module owns the thresholds, the throttle, and the operator message.
|
|
15
|
+
* Thresholds are deliberately lazy — this is a drift alarm, not a metric.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const probe = inlineFeedbackProbe({
|
|
19
|
+
* bump: () => store.bumpInlineServed(ctx),
|
|
20
|
+
* reset: () => store.recordInlineChosen(ctx, Date.now()),
|
|
21
|
+
* markAlerted: () => store.markInlineAlerted(ctx, Date.now()),
|
|
22
|
+
* adminIds: () => deps.adminIds(),
|
|
23
|
+
* })
|
|
24
|
+
* bot.inlineQuery(async (ctx) => { …answer with results…; await probe.onServed(ctx.bot) })
|
|
25
|
+
* bot.chosenInlineResult(() => true, async (ctx) => { await probe.onChosen(); … })
|
|
26
|
+
*/
|
|
27
|
+
import type { Bot } from "gramio";
|
|
28
|
+
export interface InlineFeedbackProbeOptions {
|
|
29
|
+
/** Increment the served counter, returning the new count + when the last alert fired. */
|
|
30
|
+
bump: () => Promise<{
|
|
31
|
+
served: number;
|
|
32
|
+
lastAlertAt: number | null;
|
|
33
|
+
}>;
|
|
34
|
+
/** A chosen event arrived: feedback works, the counter starts over. */
|
|
35
|
+
reset: () => Promise<void>;
|
|
36
|
+
/** Persist that the alert fired (also zeroes the counter downstream). */
|
|
37
|
+
markAlerted: () => Promise<void>;
|
|
38
|
+
adminIds: () => Promise<readonly number[]> | readonly number[];
|
|
39
|
+
/** Served results (WITH content — empty answers prove nothing) before the alarm. Default 25. */
|
|
40
|
+
threshold?: number;
|
|
41
|
+
/** Minimum ms between alerts. Default 24h. */
|
|
42
|
+
alertEveryMs?: number;
|
|
43
|
+
/** Called with the alarm line before the DM goes out (wire your logger). */
|
|
44
|
+
onTrip?: (message: string) => void;
|
|
45
|
+
}
|
|
46
|
+
export interface InlineFeedbackProbe {
|
|
47
|
+
/** Call after answering an inline query WITH results. Never throws. */
|
|
48
|
+
onServed(bot: Bot): Promise<void>;
|
|
49
|
+
/** Call from the chosen_inline_result handler. Never throws. */
|
|
50
|
+
onChosen(): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
export declare function inlineFeedbackProbe(opts: InlineFeedbackProbeOptions): InlineFeedbackProbe;
|
|
53
|
+
//# sourceMappingURL=inline-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-feedback.d.ts","sourceRoot":"","sources":["../../src/bot/inline-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC,MAAM,WAAW,0BAA0B;IAC1C,yFAAyF;IACzF,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACpE,uEAAuE;IACvE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,yEAAyE;IACzE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IAC/D,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IACnC,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,gEAAgE;IAChE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAKD,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,0BAA0B,GAC9B,mBAAmB,CA6BrB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline-feedback tripwire — behavioral detection for a BotFather setting the
|
|
3
|
+
* Bot API cannot see.
|
|
4
|
+
*
|
|
5
|
+
* `chosen_inline_result` delivery is gated by BotFather's inline FEEDBACK
|
|
6
|
+
* probability, which defaults to 0% and silently RESETS on bot transfer and
|
|
7
|
+
* on inline-mode toggling. At 0%, taps post the placeholder client-side but
|
|
8
|
+
* the bot never hears about them, so nothing ever fills in — and `getMe`
|
|
9
|
+
* reports nothing (the profile `expects` drift-check is blind here). The
|
|
10
|
+
* asymmetry IS measurable though: results keep getting served while a chosen
|
|
11
|
+
* event never arrives.
|
|
12
|
+
*
|
|
13
|
+
* Storage is injected as three atomic-ish ops (wire to D1/Redis/anything);
|
|
14
|
+
* this module owns the thresholds, the throttle, and the operator message.
|
|
15
|
+
* Thresholds are deliberately lazy — this is a drift alarm, not a metric.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const probe = inlineFeedbackProbe({
|
|
19
|
+
* bump: () => store.bumpInlineServed(ctx),
|
|
20
|
+
* reset: () => store.recordInlineChosen(ctx, Date.now()),
|
|
21
|
+
* markAlerted: () => store.markInlineAlerted(ctx, Date.now()),
|
|
22
|
+
* adminIds: () => deps.adminIds(),
|
|
23
|
+
* })
|
|
24
|
+
* bot.inlineQuery(async (ctx) => { …answer with results…; await probe.onServed(ctx.bot) })
|
|
25
|
+
* bot.chosenInlineResult(() => true, async (ctx) => { await probe.onChosen(); … })
|
|
26
|
+
*/
|
|
27
|
+
import { notifyAdmins } from "./notify.js";
|
|
28
|
+
const DEFAULT_THRESHOLD = 25;
|
|
29
|
+
const DEFAULT_ALERT_EVERY_MS = 24 * 60 * 60 * 1000;
|
|
30
|
+
export function inlineFeedbackProbe(opts) {
|
|
31
|
+
const threshold = opts.threshold ?? DEFAULT_THRESHOLD;
|
|
32
|
+
const alertEveryMs = opts.alertEveryMs ?? DEFAULT_ALERT_EVERY_MS;
|
|
33
|
+
return {
|
|
34
|
+
async onServed(bot) {
|
|
35
|
+
try {
|
|
36
|
+
const { served, lastAlertAt } = await opts.bump();
|
|
37
|
+
if (served < threshold)
|
|
38
|
+
return;
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
if (lastAlertAt !== null && now - lastAlertAt < alertEveryMs)
|
|
41
|
+
return;
|
|
42
|
+
await opts.markAlerted();
|
|
43
|
+
const line = `inline feedback looks DISABLED: ${served} inline results served since the last chosen_inline_result`;
|
|
44
|
+
opts.onTrip?.(line);
|
|
45
|
+
const ids = await opts.adminIds();
|
|
46
|
+
await notifyAdmins(bot, ids, `⚠️ ${line}.\n` +
|
|
47
|
+
"Taps post the placeholder but the bot never hears about them, so nothing ever fills in.\n" +
|
|
48
|
+
"@BotFather → /setinlinefeedback → this bot → 100%. (It resets to 0% on bot TRANSFER and on inline-mode toggling.)");
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// best-effort: the probe must never break the inline answer path
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
async onChosen() {
|
|
55
|
+
await opts.reset().catch(() => { });
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=inline-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-feedback.js","sourceRoot":"","sources":["../../src/bot/inline-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,MAAM,UAAU,mBAAmB,CAClC,IAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACjE,OAAO;QACN,KAAK,CAAC,QAAQ,CAAC,GAAG;YACjB,IAAI,CAAC;gBACJ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClD,IAAI,MAAM,GAAG,SAAS;oBAAE,OAAO;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,WAAW,KAAK,IAAI,IAAI,GAAG,GAAG,WAAW,GAAG,YAAY;oBAAE,OAAO;gBACrE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,mCAAmC,MAAM,4DAA4D,CAAC;gBACnH,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,YAAY,CACjB,GAAyC,EACzC,GAAG,EACH,MAAM,IAAI,KAAK;oBACd,2FAA2F;oBAC3F,mHAAmH,CACpH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACR,iEAAiE;YAClE,CAAC;QACF,CAAC;QACD,KAAK,CAAC,QAAQ;YACb,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpC,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/bot/profile.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export type ProfileBot = {
|
|
|
16
16
|
username?: string;
|
|
17
17
|
supports_inline_queries?: boolean;
|
|
18
18
|
supports_guest_queries?: boolean;
|
|
19
|
+
can_connect_to_business?: boolean;
|
|
19
20
|
};
|
|
20
21
|
api: {
|
|
21
22
|
/** Optional in the type: needs gramio with Bot API 10.1+ types (declaring `photo` on an
|
|
@@ -88,6 +89,7 @@ export interface BotProfileOptions {
|
|
|
88
89
|
expects?: {
|
|
89
90
|
inline?: boolean;
|
|
90
91
|
guestQueries?: boolean;
|
|
92
|
+
secretary?: boolean;
|
|
91
93
|
};
|
|
92
94
|
/** Admins to DM on an expectation mismatch: a plain array or a live resolver. */
|
|
93
95
|
adminIds?: readonly number[] | (() => Promise<readonly number[]> | readonly number[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"AA0CA,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE7C;;kFAEkF;AAClF,KAAK,IAAI,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvC,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/profile.js
CHANGED
|
@@ -160,6 +160,10 @@ async function checkExpectations(bot, opts) {
|
|
|
160
160
|
drift.push("Guest Mode is OFF, but this bot's features depend on it.\n" +
|
|
161
161
|
"Only BotFather can enable it: @BotFather → the bot's settings → Guest Mode.");
|
|
162
162
|
}
|
|
163
|
+
if (opts.expects?.secretary && bot.info?.can_connect_to_business === false) {
|
|
164
|
+
drift.push("Secretary Mode is OFF, but this bot's features depend on it (BusinessConnection / business_message).\n" +
|
|
165
|
+
"Only BotFather can enable it: @BotFather → the bot's settings → Secretary Mode.");
|
|
166
|
+
}
|
|
163
167
|
if (drift.length === 0)
|
|
164
168
|
return;
|
|
165
169
|
const handle = bot.info?.username ? `@${bot.info.username}` : "this bot";
|
package/dist/bot/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAExC,qEAAqE;AACrE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,SAAS,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adriangalilea/utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "TypeScript utilities - logger, currency, formatter, GramIO bot plugins, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -147,6 +147,10 @@
|
|
|
147
147
|
"./llm": {
|
|
148
148
|
"types": "./dist/llm/index.d.ts",
|
|
149
149
|
"default": "./dist/llm/index.js"
|
|
150
|
+
},
|
|
151
|
+
"./bot/inline-feedback": {
|
|
152
|
+
"types": "./dist/bot/inline-feedback.d.ts",
|
|
153
|
+
"default": "./dist/bot/inline-feedback.js"
|
|
150
154
|
}
|
|
151
155
|
},
|
|
152
156
|
"files": [
|