@wrongstack/telegram 0.293.0 → 0.295.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 CHANGED
@@ -52,7 +52,7 @@ you to open a credential-bearing Bot API URL.
52
52
  ### 4. Configure manually (optional)
53
53
 
54
54
  The setup command writes this configuration securely. For custom hosts, the
55
- equivalent shape in `~/.wrongstack/config.json` or `.wrongstack/config.json` is:
55
+ equivalent shape in the active `~/.wrongstack/profiles/<name>/config.json` is:
56
56
 
57
57
  ```jsonc
58
58
  {
@@ -92,6 +92,8 @@ export interface TelegramApiClientOptions {
92
92
  }
93
93
  export interface TelegramRequestOptions {
94
94
  signal?: AbortSignal | undefined;
95
+ /** Optional parse_mode override for this call. */
96
+ parseMode?: '' | 'HTML' | 'MarkdownV2' | undefined;
95
97
  }
96
98
  export interface TelegramGetUpdatesOptions extends TelegramRequestOptions {
97
99
  deadlineMs?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@wrongstack/core';
1
+ import type { Logger } from '@wrongstack/core/types';
2
2
  import type { TelegramApiMessage } from './api-client.js';
3
3
  import type { TelegramBot, TelegramBotResponse } from './bot.js';
4
4
  export interface BotOutboundOptions {
@@ -9,6 +9,21 @@ export interface BotOutboundOptions {
9
9
  readonly maxPerChat?: number;
10
10
  /** Optional override; defaults to 4 concurrent sends. */
11
11
  readonly maxConcurrency?: number;
12
+ /**
13
+ * Live getter for tokens per second on the per-chat rate limiter.
14
+ * Default: 0.33 (≈20 messages/minute, safe for groups).
15
+ * Private chats can safely use 30.
16
+ * Passed as a getter so config hot-reload takes effect on the next new
17
+ * bucket (existing buckets retain their captured parameters for the
18
+ * queue lifetime, which is the intended lifetime of the bot).
19
+ */
20
+ readonly getRateLimitTokensPerSecond?: (() => number) | undefined;
21
+ /**
22
+ * Live getter for maximum burst size on the per-chat rate limiter.
23
+ * Default: 4. Read lazily per new-bucket creation so config
24
+ * hot-reload propagates without queue rebuild.
25
+ */
26
+ readonly getRateLimitBurst?: (() => number) | undefined;
12
27
  }
13
28
  export declare class TelegramBotOutbound {
14
29
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"bot-queue.d.ts","sourceRoot":"","sources":["../src/bot-queue.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,mBAAmB;;IAM9B,YAAY,IAAI,EAAE,kBAAkB,EAenC;IAED,gFAAgF;IAC1E,UAAU,CACd,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CASlD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAW/D;IAED,KAAK,qDAEJ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;CACF"}
1
+ {"version":3,"file":"bot-queue.d.ts","sourceRoot":"","sources":["../src/bot-queue.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAClE;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CACzD;AAKD,qBAAa,mBAAmB;;IAU9B,YAAY,IAAI,EAAE,kBAAkB,EAmBnC;IAsCD,gFAAgF;IAC1E,UAAU,CACd,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CASlD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAS/D;IAED,KAAK,qDAEJ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;CACF"}
package/dist/bot.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Logger } from '@wrongstack/core';
1
+ import type { Logger } from '@wrongstack/core/types';
2
2
  import { type TelegramApiMessage } from './api-client.js';
3
3
  import type { OffsetStore } from './offset-store.js';
4
4
  import type { PollLock } from './poll-lock.js';
@@ -39,6 +39,12 @@ export interface TelegramBotOptions {
39
39
  /** Max messages to buffer for the agent to read. Default: 50. */
40
40
  bufferSize: number;
41
41
  log: Logger;
42
+ /**
43
+ * Resolved on every outbound send so live `parseMode` config changes
44
+ * (via `api.onConfigChange`) take effect without restarting the plugin.
45
+ * Empty string or `undefined` → plain text. See `TelegramPluginConfig.parseMode`.
46
+ */
47
+ getParseMode?: () => '' | 'HTML' | 'MarkdownV2' | undefined;
42
48
  /** Called for each incoming message that passes allowlist checks. */
43
49
  onMessage(msg: TelegramIncomingMessage): void;
44
50
  /**
@@ -84,6 +90,7 @@ export declare class TelegramBot {
84
90
  /** Single-poller election across wstack instances sharing this token. */
85
91
  private readonly lock?;
86
92
  private readonly standbyRetryMs;
93
+ private readonly getParseMode?;
87
94
  private standbyTimer;
88
95
  private standbyAnnounced;
89
96
  private readonly bufferMax;
package/dist/bot.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
@@ -1,56 +1,5 @@
1
- import type { TelegramPluginConfig } from './config.js';
2
- /**
3
- * Keys the Telegram plugin can apply live without restarting the bot.
4
- *
5
- * Rationale per key:
6
- * - `inboundMode` / `allowedUsers` / `allowedChats` — `processMessage`
7
- * and `dispatchCallback` re-read the allowlist on every inbound call,
8
- * so toggling the mode or editing the lists takes effect immediately.
9
- * - `notifyOnSessionEnd` / `notifyOnDelegate` — re-evaluated on each
10
- * event subscription; no in-flight state to restart.
11
- * - `longToolThresholdMs` — pure threshold read inside the tool-notify
12
- * handler; the next long-tool event uses the new value.
13
- * - `maxMessageLength` / `allowedOutboundChats` — re-read on every
14
- * `sendMessage` / outbound-target resolution, so the next send reflects
15
- * the change.
16
- * - `pollIntervalSec` — the poller reads this on each iteration of its
17
- * wait loop; the next tick uses the new interval.
18
- * - `outboundQueuePerChat` / `outboundQueueConcurrency` — the outbound
19
- * queue reads these only at construction. They are documented as
20
- * hot-reload in spirit (the queue can be re-evaluated) but the live
21
- * queue owns a stable copy. Marking them HOT would silently mislead,
22
- * so they are intentionally EXCLUDED until the queue supports
23
- * mid-flight reconfiguration. See `restart-required` below.
24
- */
25
- export declare const HOT_RELOAD_KEYS: Set<keyof TelegramPluginConfig>;
26
- /**
27
- * Keys that require restarting the Telegram plugin (or wstack itself)
28
- * for the new value to take effect.
29
- *
30
- * - `botToken` — every Telegram transport object is constructed once with
31
- * the token baked into the base URL; changing it requires a new
32
- * `TelegramBot` instance.
33
- * - `notifyChatId` — bound into the optional-allowedUsers fallback at
34
- * setup (`inboundAllowlist`) and read by every notification callback;
35
- * the inbound allowlist does not rebuild without a setup re-run.
36
- * - `offsetStoragePath` — the `OffsetStore` is opened once at setup;
37
- * changing the path would orphan any persisted cursor.
38
- * - `singleInstanceLock` — the cross-process `PollLock` is acquired at
39
- * startup; flipping this flag requires a fresh setup to acquire /
40
- * release the right lock file.
41
- * - `outboundQueuePerChat` / `outboundQueueConcurrency` — the
42
- * `OutboundQueue` reads these at construction only.
43
- */
44
- export declare const RESTART_REQUIRED_KEYS: Set<keyof TelegramPluginConfig>;
1
+ import { type TelegramPluginConfig } from './config.js';
45
2
  export type ConfigReloadClass = 'hot' | 'restart-required';
46
- /**
47
- * Classify a single key. Returns `'hot'` for keys in `HOT_RELOAD_KEYS`,
48
- * `'restart-required'` for keys in `RESTART_REQUIRED_KEYS`, and
49
- * `'restart-required'` as a conservative default for keys that are not
50
- * registered in either set — preventing a new field from silently
51
- * pretending to be hot-reloadable before the classifier is updated.
52
- */
53
- export declare function classifyReload(key: keyof TelegramPluginConfig): ConfigReloadClass;
54
3
  /**
55
4
  * Diff two configs and return the keys whose values differ, each tagged
56
5
  * with its reload classification. Keys present in `previous` but absent in
@@ -1 +1 @@
1
- {"version":3,"file":"config-classifier.d.ts","sourceRoot":"","sources":["../src/config-classifier.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,iCAU1B,CAAC;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,iCAOhC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,kBAAkB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,oBAAoB,GAAG,iBAAiB,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,oBAAoB,GACzB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAc/E"}
1
+ {"version":3,"file":"config-classifier.d.ts","sourceRoot":"","sources":["../src/config-classifier.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,kBAAkB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,oBAAoB,GACzB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAY/E"}
package/dist/config.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- import type { PluginAPI } from '@wrongstack/core';
1
+ import { type PluginAPI } from '@wrongstack/core/plugin';
2
+ import type { Config } from '@wrongstack/core/types';
2
3
  export declare const PLUGIN_NAME = "telegram";
4
+ export declare const PLUGIN_CONFIG_ALIASES: readonly ['@wrongstack/telegram'];
3
5
  export type TelegramInboundMode = 'disabled' | 'paired' | 'allowlist' | 'public';
4
6
  export interface TelegramPluginConfig {
5
7
  /** Telegram Bot API token (from @BotFather). */
@@ -54,8 +56,84 @@ export interface TelegramPluginConfig {
54
56
  outboundQueuePerChat?: number | undefined;
55
57
  /** Maximum concurrent outbound sends across all chats. Default: 4. */
56
58
  outboundQueueConcurrency?: number | undefined;
59
+ /** Permit group-chat approvals only when an explicit user allowlist also matches. */
60
+ allowGroupApprovals?: boolean | undefined;
61
+ /** Per-chat rate limit (tokens per second). Default: 0.33 (≈20 msg/min). */
62
+ rateLimitTokensPerSecond?: number | undefined;
63
+ /** Per-chat rate limit burst size. Default: 4. */
64
+ rateLimitBurst?: number | undefined;
65
+ /**
66
+ * Telegram parse mode for message text formatting. Supports:
67
+ * - `'HTML'` — `<b>bold</b>`, `<i>italic</i>`, `<a href="...">link</a>`, `<code>mono</code>`, `<pre>code block</pre>`
68
+ * - `'MarkdownV2'` — `*bold*`, `_italic_`, `[link](url)`, `` `code` ``, ```pre```
69
+ * - unset / `''` — plain text (no formatting)
70
+ */
71
+ parseMode?: '' | 'HTML' | 'MarkdownV2' | undefined;
57
72
  }
58
73
  export declare const DEFAULT_CONFIG: Required<Omit<TelegramPluginConfig, 'botToken' | 'notifyChatId' | 'offsetStoragePath'>>;
74
+ export declare const TELEGRAM_CONFIG_FIELDS: {
75
+ readonly botToken: {
76
+ readonly lifecycle: 'restart';
77
+ readonly secret: true;
78
+ };
79
+ readonly notifyChatId: {
80
+ readonly lifecycle: 'restart';
81
+ };
82
+ readonly inboundMode: {
83
+ readonly lifecycle: 'hot';
84
+ };
85
+ readonly allowedUsers: {
86
+ readonly lifecycle: 'hot';
87
+ };
88
+ readonly allowedChats: {
89
+ readonly lifecycle: 'hot';
90
+ };
91
+ readonly allowedOutboundChats: {
92
+ readonly lifecycle: 'hot';
93
+ };
94
+ readonly allowGroupApprovals: {
95
+ readonly lifecycle: 'hot';
96
+ };
97
+ readonly pollIntervalSec: {
98
+ readonly lifecycle: 'hot';
99
+ };
100
+ readonly notifyOnSessionEnd: {
101
+ readonly lifecycle: 'hot';
102
+ };
103
+ readonly longToolThresholdMs: {
104
+ readonly lifecycle: 'hot';
105
+ };
106
+ readonly notifyOnDelegate: {
107
+ readonly lifecycle: 'hot';
108
+ };
109
+ readonly maxMessageLength: {
110
+ readonly lifecycle: 'hot';
111
+ };
112
+ readonly offsetStoragePath: {
113
+ readonly lifecycle: 'immutable';
114
+ };
115
+ readonly singleInstanceLock: {
116
+ readonly lifecycle: 'restart';
117
+ };
118
+ readonly outboundQueuePerChat: {
119
+ readonly lifecycle: 'restart';
120
+ };
121
+ readonly outboundQueueConcurrency: {
122
+ readonly lifecycle: 'restart';
123
+ };
124
+ readonly rateLimitTokensPerSecond: {
125
+ readonly lifecycle: 'hot';
126
+ readonly description: 'Per-chat rate limit (tokens/sec)';
127
+ };
128
+ readonly rateLimitBurst: {
129
+ readonly lifecycle: 'hot';
130
+ readonly description: 'Per-chat rate limit burst size';
131
+ };
132
+ readonly parseMode: {
133
+ readonly lifecycle: 'hot';
134
+ readonly description: 'Telegram parse mode: HTML, MarkdownV2, or empty for plain text';
135
+ };
136
+ };
59
137
  export declare const telegramConfigSchema: {
60
138
  type: string;
61
139
  properties: {
@@ -123,6 +201,9 @@ export declare const telegramConfigSchema: {
123
201
  minimum: number;
124
202
  maximum: number;
125
203
  };
204
+ offsetStoragePath: {
205
+ type: string;
206
+ };
126
207
  singleInstanceLock: {
127
208
  type: string;
128
209
  description: string;
@@ -139,8 +220,36 @@ export declare const telegramConfigSchema: {
139
220
  maximum: number;
140
221
  description: string;
141
222
  };
223
+ allowGroupApprovals: {
224
+ type: string;
225
+ };
226
+ rateLimitTokensPerSecond: {
227
+ type: string;
228
+ minimum: number;
229
+ maximum: number;
230
+ description: string;
231
+ };
232
+ rateLimitBurst: {
233
+ type: string;
234
+ minimum: number;
235
+ maximum: number;
236
+ description: string;
237
+ };
238
+ parseMode: {
239
+ type: string;
240
+ enum: string[];
241
+ description: string;
242
+ };
142
243
  };
143
244
  required: string[];
144
245
  };
145
246
  export declare function readTelegramConfig(api: Pick<PluginAPI, 'config'> & Partial<Pick<PluginAPI, 'log'>>): Required<Omit<TelegramPluginConfig, 'notifyChatId' | 'offsetStoragePath'>> & Pick<TelegramPluginConfig, 'notifyChatId' | 'offsetStoragePath'>;
247
+ /**
248
+ * Read the Telegram config section from a raw `Config` snapshot.
249
+ * Used by `api.onConfigChange` callbacks that receive `(next: Config, prev: Config)`
250
+ * rather than a `PluginAPI`. Delegates to {@link readTelegramConfig} so the
251
+ * merge logic (legacy plugins, extension opts, inbound-mode resolution,
252
+ * defaults) stays in one place.
253
+ */
254
+ export declare function readTelegramConfigFromConfig(cfg: Config): TelegramPluginConfig;
146
255
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAIjF,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;OAIG;IACH,WAAW,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC9C,mEAAmE;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,mEAAmE;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1D,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,sEAAsE;IACtE,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAAC,CAc9E,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;YAGjB,IAAI;YAAY,WAAW;;;;;;;;;YAMrC,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAmBX,IAAI;YACJ,OAAO;YACP,OAAO;YACP,WAAW;;;YAES,IAAI;;;YACH,IAAI;YAAa,OAAO;;;YAC3B,IAAI;;;YACJ,IAAI;YAAa,OAAO;YAAO,OAAO;;;YAExD,IAAI;YACJ,WAAW;;;YAIX,IAAI;YACJ,OAAO;YACP,OAAO;YACP,WAAW;;;YAGX,IAAI;YACJ,OAAO;YACP,OAAO;YACP,WAAW;;;;CAIhB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAC/D,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,mBAAmB,CAAC,CAAC,GAC3E,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,mBAAmB,CAAC,CAuBjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Plugin } from '@wrongstack/core';
1
+ import type { Plugin } from '@wrongstack/core/types';
2
2
  import { TelegramBot } from './bot.js';
3
3
  import { TelegramBotOutbound } from './bot-queue.js';
4
4
  interface RuntimeState {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAA2B,MAAM,kBAAkB,CAAC;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AASvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAwBrD,UAAU,YAAY;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;CAC7B;AAED,QAAA,IAAI,aAAa,EAAE,YAAY,GAAG,IAAW,CAAC;AA+F9C,QAAA,MAAM,MAAM,EAAE,MAyUb,CAAC;eAEa,MAAM;AAGrB,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,MAAM,EAAgB,MAAM,wBAAwB,CAAC;AAGnF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiBvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA+BrD,UAAU,YAAY;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;CAC7B;AAED,QAAA,IAAI,aAAa,EAAE,YAAY,GAAG,IAAW,CAAC;AAiH9C,QAAA,MAAM,MAAM,EAAE,MAgab,CAAC;eAEa,MAAM;AAGrB,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC"}