@spinabot/brigade 1.3.1 → 1.4.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.
Files changed (231) hide show
  1. package/README.md +54 -10
  2. package/convex/config.d.ts +2 -2
  3. package/convex/extensions.d.ts +2 -2
  4. package/convex/logs.d.ts +2 -2
  5. package/convex/memory.d.ts +7 -7
  6. package/convex/messages.d.ts +4 -4
  7. package/convex/schema.d.ts +17 -17
  8. package/convex/subagents.d.ts +12 -12
  9. package/dist/agents/agent-loop.d.ts +1 -0
  10. package/dist/agents/agent-loop.d.ts.map +1 -1
  11. package/dist/agents/agent-loop.js +1 -1
  12. package/dist/agents/agent-loop.js.map +1 -1
  13. package/dist/agents/channels/access-control/format-allow-from.d.ts +50 -0
  14. package/dist/agents/channels/access-control/format-allow-from.d.ts.map +1 -0
  15. package/dist/agents/channels/access-control/format-allow-from.js +64 -0
  16. package/dist/agents/channels/access-control/format-allow-from.js.map +1 -0
  17. package/dist/agents/channels/access-control/index.d.ts +2 -1
  18. package/dist/agents/channels/access-control/index.d.ts.map +1 -1
  19. package/dist/agents/channels/access-control/index.js +2 -1
  20. package/dist/agents/channels/access-control/index.js.map +1 -1
  21. package/dist/agents/channels/access-control/store.d.ts +15 -0
  22. package/dist/agents/channels/access-control/store.d.ts.map +1 -1
  23. package/dist/agents/channels/access-control/store.js +44 -1
  24. package/dist/agents/channels/access-control/store.js.map +1 -1
  25. package/dist/agents/channels/bundled-channel-metas.d.ts +26 -0
  26. package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -0
  27. package/dist/agents/channels/bundled-channel-metas.js +44 -0
  28. package/dist/agents/channels/bundled-channel-metas.js.map +1 -0
  29. package/dist/agents/channels/channel-messaging-registry.d.ts +130 -0
  30. package/dist/agents/channels/channel-messaging-registry.d.ts.map +1 -0
  31. package/dist/agents/channels/channel-messaging-registry.js +211 -0
  32. package/dist/agents/channels/channel-messaging-registry.js.map +1 -0
  33. package/dist/agents/channels/channel-meta-registry.d.ts +60 -0
  34. package/dist/agents/channels/channel-meta-registry.d.ts.map +1 -0
  35. package/dist/agents/channels/channel-meta-registry.js +128 -0
  36. package/dist/agents/channels/channel-meta-registry.js.map +1 -0
  37. package/dist/agents/channels/channel-security-registry.d.ts +138 -0
  38. package/dist/agents/channels/channel-security-registry.d.ts.map +1 -0
  39. package/dist/agents/channels/channel-security-registry.js +265 -0
  40. package/dist/agents/channels/channel-security-registry.js.map +1 -0
  41. package/dist/agents/channels/exposure.d.ts +44 -0
  42. package/dist/agents/channels/exposure.d.ts.map +1 -0
  43. package/dist/agents/channels/exposure.js +48 -0
  44. package/dist/agents/channels/exposure.js.map +1 -0
  45. package/dist/agents/channels/general-callback.d.ts +25 -0
  46. package/dist/agents/channels/general-callback.d.ts.map +1 -0
  47. package/dist/agents/channels/general-callback.js +31 -0
  48. package/dist/agents/channels/general-callback.js.map +1 -0
  49. package/dist/agents/channels/inbound-pipeline.d.ts +9 -0
  50. package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
  51. package/dist/agents/channels/inbound-pipeline.js +429 -39
  52. package/dist/agents/channels/inbound-pipeline.js.map +1 -1
  53. package/dist/agents/channels/markdown-capability.d.ts +44 -0
  54. package/dist/agents/channels/markdown-capability.d.ts.map +1 -0
  55. package/dist/agents/channels/markdown-capability.js +66 -0
  56. package/dist/agents/channels/markdown-capability.js.map +1 -0
  57. package/dist/agents/channels/sdk.d.ts +170 -10
  58. package/dist/agents/channels/sdk.d.ts.map +1 -1
  59. package/dist/agents/channels/sdk.js +138 -6
  60. package/dist/agents/channels/sdk.js.map +1 -1
  61. package/dist/agents/channels/telegram/account-config.d.ts +41 -0
  62. package/dist/agents/channels/telegram/account-config.d.ts.map +1 -1
  63. package/dist/agents/channels/telegram/account-config.js +79 -0
  64. package/dist/agents/channels/telegram/account-config.js.map +1 -1
  65. package/dist/agents/channels/telegram/adapter.d.ts +6 -0
  66. package/dist/agents/channels/telegram/adapter.d.ts.map +1 -1
  67. package/dist/agents/channels/telegram/adapter.js +178 -6
  68. package/dist/agents/channels/telegram/adapter.js.map +1 -1
  69. package/dist/agents/channels/telegram/allowed-updates.d.ts +14 -5
  70. package/dist/agents/channels/telegram/allowed-updates.d.ts.map +1 -1
  71. package/dist/agents/channels/telegram/allowed-updates.js +8 -4
  72. package/dist/agents/channels/telegram/allowed-updates.js.map +1 -1
  73. package/dist/agents/channels/telegram/connection.d.ts +108 -1
  74. package/dist/agents/channels/telegram/connection.d.ts.map +1 -1
  75. package/dist/agents/channels/telegram/connection.js +219 -3
  76. package/dist/agents/channels/telegram/connection.js.map +1 -1
  77. package/dist/agents/channels/telegram/draft-stream.d.ts +98 -0
  78. package/dist/agents/channels/telegram/draft-stream.d.ts.map +1 -0
  79. package/dist/agents/channels/telegram/draft-stream.js +222 -0
  80. package/dist/agents/channels/telegram/draft-stream.js.map +1 -0
  81. package/dist/agents/channels/telegram/inbound-extras.d.ts +10 -1
  82. package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -1
  83. package/dist/agents/channels/telegram/inbound-extras.js +66 -0
  84. package/dist/agents/channels/telegram/inbound-extras.js.map +1 -1
  85. package/dist/agents/channels/telegram/inline-keyboard.d.ts +36 -0
  86. package/dist/agents/channels/telegram/inline-keyboard.d.ts.map +1 -0
  87. package/dist/agents/channels/telegram/inline-keyboard.js +62 -0
  88. package/dist/agents/channels/telegram/inline-keyboard.js.map +1 -0
  89. package/dist/agents/channels/telegram/plugin.d.ts.map +1 -1
  90. package/dist/agents/channels/telegram/plugin.js +7 -11
  91. package/dist/agents/channels/telegram/plugin.js.map +1 -1
  92. package/dist/agents/channels/telegram/reasoning-lane.d.ts +41 -0
  93. package/dist/agents/channels/telegram/reasoning-lane.d.ts.map +1 -0
  94. package/dist/agents/channels/telegram/reasoning-lane.js +67 -0
  95. package/dist/agents/channels/telegram/reasoning-lane.js.map +1 -0
  96. package/dist/agents/channels/telegram/socks-dispatcher.d.ts +32 -0
  97. package/dist/agents/channels/telegram/socks-dispatcher.d.ts.map +1 -0
  98. package/dist/agents/channels/telegram/socks-dispatcher.js +97 -0
  99. package/dist/agents/channels/telegram/socks-dispatcher.js.map +1 -0
  100. package/dist/agents/channels/types.adapters.d.ts +137 -4
  101. package/dist/agents/channels/types.adapters.d.ts.map +1 -1
  102. package/dist/agents/channels/types.adapters.js +2 -2
  103. package/dist/agents/channels/types.core.d.ts +26 -2
  104. package/dist/agents/channels/types.core.d.ts.map +1 -1
  105. package/dist/agents/channels/types.plugin.d.ts +25 -7
  106. package/dist/agents/channels/types.plugin.d.ts.map +1 -1
  107. package/dist/agents/channels/types.plugin.js +6 -5
  108. package/dist/agents/channels/types.plugin.js.map +1 -1
  109. package/dist/agents/channels/whatsapp/adapter.d.ts +8 -0
  110. package/dist/agents/channels/whatsapp/adapter.d.ts.map +1 -1
  111. package/dist/agents/channels/whatsapp/adapter.js +7 -4
  112. package/dist/agents/channels/whatsapp/adapter.js.map +1 -1
  113. package/dist/agents/channels/whatsapp/connection.d.ts +24 -2
  114. package/dist/agents/channels/whatsapp/connection.d.ts.map +1 -1
  115. package/dist/agents/channels/whatsapp/connection.js +26 -5
  116. package/dist/agents/channels/whatsapp/connection.js.map +1 -1
  117. package/dist/agents/channels/whatsapp/plugin.d.ts.map +1 -1
  118. package/dist/agents/channels/whatsapp/plugin.js +6 -10
  119. package/dist/agents/channels/whatsapp/plugin.js.map +1 -1
  120. package/dist/agents/extensions/activation-planner.d.ts +125 -0
  121. package/dist/agents/extensions/activation-planner.d.ts.map +1 -0
  122. package/dist/agents/extensions/activation-planner.js +221 -0
  123. package/dist/agents/extensions/activation-planner.js.map +1 -0
  124. package/dist/agents/extensions/diagnose.d.ts +84 -0
  125. package/dist/agents/extensions/diagnose.d.ts.map +1 -0
  126. package/dist/agents/extensions/diagnose.js +123 -0
  127. package/dist/agents/extensions/diagnose.js.map +1 -0
  128. package/dist/agents/extensions/discovery.d.ts +85 -7
  129. package/dist/agents/extensions/discovery.d.ts.map +1 -1
  130. package/dist/agents/extensions/discovery.js +200 -15
  131. package/dist/agents/extensions/discovery.js.map +1 -1
  132. package/dist/agents/extensions/index.d.ts +3 -2
  133. package/dist/agents/extensions/index.d.ts.map +1 -1
  134. package/dist/agents/extensions/index.js +3 -2
  135. package/dist/agents/extensions/index.js.map +1 -1
  136. package/dist/agents/extensions/install-scan.d.ts +63 -0
  137. package/dist/agents/extensions/install-scan.d.ts.map +1 -0
  138. package/dist/agents/extensions/install-scan.js +201 -0
  139. package/dist/agents/extensions/install-scan.js.map +1 -0
  140. package/dist/agents/extensions/install.d.ts +135 -0
  141. package/dist/agents/extensions/install.d.ts.map +1 -0
  142. package/dist/agents/extensions/install.js +414 -0
  143. package/dist/agents/extensions/install.js.map +1 -0
  144. package/dist/agents/extensions/loader.d.ts +13 -2
  145. package/dist/agents/extensions/loader.d.ts.map +1 -1
  146. package/dist/agents/extensions/loader.js +126 -13
  147. package/dist/agents/extensions/loader.js.map +1 -1
  148. package/dist/agents/extensions/registry.d.ts +109 -0
  149. package/dist/agents/extensions/registry.d.ts.map +1 -1
  150. package/dist/agents/extensions/registry.js +172 -0
  151. package/dist/agents/extensions/registry.js.map +1 -1
  152. package/dist/agents/extensions/sdk-alias.d.ts +45 -0
  153. package/dist/agents/extensions/sdk-alias.d.ts.map +1 -0
  154. package/dist/agents/extensions/sdk-alias.js +94 -0
  155. package/dist/agents/extensions/sdk-alias.js.map +1 -0
  156. package/dist/agents/extensions/types.d.ts +155 -1
  157. package/dist/agents/extensions/types.d.ts.map +1 -1
  158. package/dist/agents/extensions/types.js.map +1 -1
  159. package/dist/agents/tools/composio-tool.d.ts +9 -1
  160. package/dist/agents/tools/composio-tool.d.ts.map +1 -1
  161. package/dist/agents/tools/composio-tool.js +68 -4
  162. package/dist/agents/tools/composio-tool.js.map +1 -1
  163. package/dist/agents/tools/message-action-tool.d.ts +6 -1
  164. package/dist/agents/tools/message-action-tool.d.ts.map +1 -1
  165. package/dist/agents/tools/message-action-tool.js +52 -2
  166. package/dist/agents/tools/message-action-tool.js.map +1 -1
  167. package/dist/agents/tools/send-message-tool.d.ts +1 -0
  168. package/dist/agents/tools/send-message-tool.d.ts.map +1 -1
  169. package/dist/agents/tools/send-message-tool.js +56 -1
  170. package/dist/agents/tools/send-message-tool.js.map +1 -1
  171. package/dist/buildstamp.json +1 -1
  172. package/dist/channel-sdk.d.ts +28 -0
  173. package/dist/channel-sdk.d.ts.map +1 -0
  174. package/dist/channel-sdk.js +28 -0
  175. package/dist/channel-sdk.js.map +1 -0
  176. package/dist/cli/commands/channels.d.ts.map +1 -1
  177. package/dist/cli/commands/channels.js +8 -8
  178. package/dist/cli/commands/channels.js.map +1 -1
  179. package/dist/cli/commands/connect.d.ts +8 -11
  180. package/dist/cli/commands/connect.d.ts.map +1 -1
  181. package/dist/cli/commands/connect.js +157 -17
  182. package/dist/cli/commands/connect.js.map +1 -1
  183. package/dist/cli/commands/doctor.d.ts.map +1 -1
  184. package/dist/cli/commands/doctor.js +64 -0
  185. package/dist/cli/commands/doctor.js.map +1 -1
  186. package/dist/cli/commands/extensions.d.ts +46 -0
  187. package/dist/cli/commands/extensions.d.ts.map +1 -0
  188. package/dist/cli/commands/extensions.js +578 -0
  189. package/dist/cli/commands/extensions.js.map +1 -0
  190. package/dist/cli/commands/gateway.d.ts.map +1 -1
  191. package/dist/cli/commands/gateway.js +6 -0
  192. package/dist/cli/commands/gateway.js.map +1 -1
  193. package/dist/cli/commands/pairing.d.ts.map +1 -1
  194. package/dist/cli/commands/pairing.js +16 -2
  195. package/dist/cli/commands/pairing.js.map +1 -1
  196. package/dist/cli/commands/update.d.ts +17 -0
  197. package/dist/cli/commands/update.d.ts.map +1 -0
  198. package/dist/cli/commands/update.js +104 -0
  199. package/dist/cli/commands/update.js.map +1 -0
  200. package/dist/cli/program/build-program.d.ts.map +1 -1
  201. package/dist/cli/program/build-program.js +113 -0
  202. package/dist/cli/program/build-program.js.map +1 -1
  203. package/dist/config/paths.d.ts +1 -0
  204. package/dist/config/paths.d.ts.map +1 -1
  205. package/dist/config/paths.js +9 -0
  206. package/dist/config/paths.js.map +1 -1
  207. package/dist/core/gateway-probe.d.ts.map +1 -1
  208. package/dist/core/gateway-probe.js +9 -1
  209. package/dist/core/gateway-probe.js.map +1 -1
  210. package/dist/core/server.d.ts.map +1 -1
  211. package/dist/core/server.js +134 -2
  212. package/dist/core/server.js.map +1 -1
  213. package/dist/protocol.d.ts +25 -0
  214. package/dist/protocol.d.ts.map +1 -1
  215. package/dist/protocol.js.map +1 -1
  216. package/dist/system-prompt/assembler.d.ts.map +1 -1
  217. package/dist/system-prompt/assembler.js +17 -0
  218. package/dist/system-prompt/assembler.js.map +1 -1
  219. package/dist/system-prompt/identity-defaults.d.ts +28 -0
  220. package/dist/system-prompt/identity-defaults.d.ts.map +1 -1
  221. package/dist/system-prompt/identity-defaults.js +47 -0
  222. package/dist/system-prompt/identity-defaults.js.map +1 -1
  223. package/dist/ui/editor.d.ts.map +1 -1
  224. package/dist/ui/editor.js +1 -0
  225. package/dist/ui/editor.js.map +1 -1
  226. package/dist/version.d.ts +4 -3
  227. package/dist/version.d.ts.map +1 -1
  228. package/dist/version.js +27 -5
  229. package/dist/version.js.map +1 -1
  230. package/package.json +21 -4
  231. package/scripts/build-done.mjs +11 -2
@@ -23,7 +23,10 @@ import { loadConfig } from "../../../core/config.js";
23
23
  // OutboundSendOptions) and `chunkText` now come from one place instead of
24
24
  // scattered `../../extensions/types.js` + `../whatsapp/chunk.js` paths.
25
25
  import { chunkText, } from "../sdk.js";
26
- import { listTelegramAccountIds, resolveTelegramBotToken, telegramChannelEnabled, telegramWebhookConfig, TELEGRAM_CHANNEL_ID, TELEGRAM_DEFAULT_ACCOUNT_ID, } from "./account-config.js";
26
+ import { listTelegramAccountIds, resolveTelegramBotToken, resolveTelegramProxyUrl, telegramChannelEnabled, telegramLiveStreamEnabled, telegramStreamThrottleMs, telegramSurfaceReasoning, telegramWebhookConfig, TELEGRAM_CHANNEL_ID, TELEGRAM_DEFAULT_ACCOUNT_ID, } from "./account-config.js";
27
+ import { createDraftStream } from "./draft-stream.js";
28
+ import { buildTelegramInlineKeyboard } from "./inline-keyboard.js";
29
+ import { splitTelegramReasoning } from "./reasoning-lane.js";
27
30
  import { buildTelegramApprovalKeyboard, buildTelegramApprovalText } from "./approval-native.js";
28
31
  import { connectTelegram } from "./connection.js";
29
32
  import { markdownToTelegramHtml, telegramHtmlIsEmpty } from "./format.js";
@@ -88,9 +91,15 @@ export function createTelegramAdapter(opts = {}) {
88
91
  // registers the webhook on connect; the gateway HTTP route feeds updates
89
92
  // via `feedWebhookUpdate` (wired by the module when webhook is active).
90
93
  const transport = telegramWebhookConfig(cfg, lastEnv);
94
+ // Optional proxy: per-account → top-level `channels.telegram.proxy` →
95
+ // `HTTPS_PROXY`/`ALL_PROXY` env. Empty → direct connection (the default).
96
+ // On a network where `api.telegram.org` is blocked, this routes every
97
+ // Telegram API call through a reachable http(s) proxy.
98
+ const proxyUrl = resolveTelegramProxyUrl(cfg, accountId, lastEnv);
91
99
  connection = await connectImpl({
92
100
  token,
93
101
  accountId,
102
+ ...(proxyUrl ? { proxyUrl } : {}),
94
103
  ...(opts.commandMenu && opts.commandMenu.length > 0 ? { commandMenu: opts.commandMenu } : {}),
95
104
  ...(opts.allowedUpdates && opts.allowedUpdates.length > 0 ? { allowedUpdates: opts.allowedUpdates } : {}),
96
105
  ...(transport.mode === "webhook"
@@ -135,12 +144,38 @@ export function createTelegramAdapter(opts = {}) {
135
144
  threadId: msg.threadId,
136
145
  mentions: msg.mentions,
137
146
  replyTo: msg.replyTo,
147
+ // Edit + forward provenance ride through so the central pipeline /
148
+ // agent see "this was an edit" / "this was forwarded from X".
149
+ ...(msg.edited ? { edited: true } : {}),
150
+ ...(msg.forwarded ? { forwarded: msg.forwarded } : {}),
138
151
  // Deferred media thunk rides through untouched — the pipeline
139
152
  // resolves it only after the access gate admits the sender.
140
153
  resolveMedia: msg.resolveMedia,
141
154
  raw: msg.raw,
142
155
  });
143
156
  },
157
+ // Inbound reaction (`message_reaction`) → synthesise a short note and
158
+ // route it through the SAME inbound pipeline as a normal message so
159
+ // the access gate + routing apply uniformly. The note carries the
160
+ // added emoji(s) + the target message id so the agent has context.
161
+ onReaction: (msg) => {
162
+ if (!msg.reaction)
163
+ return;
164
+ const note = buildReactionNote(msg.reaction.emojis, msg.reaction.targetMessageId, msg.fromName);
165
+ void ctx.onInbound({
166
+ channel: TELEGRAM_CHANNEL_ID,
167
+ accountId,
168
+ conversationId: msg.conversationId,
169
+ from: msg.from,
170
+ ...(msg.fromName !== undefined ? { fromName: msg.fromName } : {}),
171
+ text: note,
172
+ chatType: msg.chatType,
173
+ isGroup: msg.chatType === "group",
174
+ ...(msg.threadId !== undefined ? { threadId: msg.threadId } : {}),
175
+ reaction: msg.reaction,
176
+ raw: msg.raw,
177
+ });
178
+ },
144
179
  // Inline-button press → emit an InboundMessage carrying `callbackQuery`
145
180
  // so the central pipeline's approval-callback path resolves it. The
146
181
  // connection has already acked the press via `answerCallbackQuery`.
@@ -203,40 +238,139 @@ export function createTelegramAdapter(opts = {}) {
203
238
  throw new Error("Telegram token is invalid — run `brigade channels add --channel telegram` with a new token, then retry.");
204
239
  }
205
240
  const threadId = opts?.threadId;
241
+ // Native reply target (Telegram `reply_parameters.message_id`). Applied
242
+ // to the FIRST chunk only — quoting every chunk of a long reply would
243
+ // render a chain of quoted messages. Omitted → unquoted send (unchanged).
244
+ const replyToMessageId = opts?.replyToId;
206
245
  // Chunk on the RAW markdown so fences/paragraphs aren't shredded, then
207
246
  // convert each chunk to Telegram HTML and send. A chunk whose HTML is
208
247
  // empty (syntax-only) or that Telegram rejects with a parse error is
209
248
  // re-sent as plain text.
210
249
  const chunks = chunkText(text, { limit: TELEGRAM_TEXT_LIMIT });
250
+ let first = true;
211
251
  for (const chunk of chunks) {
252
+ // Only the first chunk carries the reply quote.
253
+ const replyOpt = first && replyToMessageId ? { replyToMessageId } : {};
212
254
  const html = markdownToTelegramHtml(chunk);
213
255
  if (telegramHtmlIsEmpty(html)) {
214
256
  // Nothing renderable — send the raw chunk as plain text (if it has any).
215
257
  if (chunk.trim().length > 0) {
216
- await connection.sendText(conversationId, chunk, { threadId });
258
+ await connection.sendText(conversationId, chunk, { threadId, ...replyOpt });
259
+ first = false;
217
260
  }
218
261
  continue;
219
262
  }
220
263
  try {
221
- await connection.sendText(conversationId, html, { html: true, threadId });
264
+ await connection.sendText(conversationId, html, { html: true, threadId, ...replyOpt });
222
265
  }
223
266
  catch (err) {
224
267
  const msg = err instanceof Error ? err.message : String(err);
225
268
  if (PARSE_ERROR_RE.test(msg) && chunk.trim().length > 0) {
226
269
  // HTML failed to parse — fall back to the plain chunk.
227
- await connection.sendText(conversationId, chunk, { threadId });
270
+ await connection.sendText(conversationId, chunk, { threadId, ...replyOpt });
228
271
  }
229
272
  else {
230
273
  throw err;
231
274
  }
232
275
  }
276
+ first = false;
233
277
  }
234
278
  },
279
+ /**
280
+ * Open a LIVE reply stream — the gateway feeds the accumulating answer text
281
+ * via `update()`, this edits one Telegram message in place (throttled
282
+ * ~1×/sec), and `finalize()` settles it on turn end. Returns `null` when
283
+ * streaming is disabled in config (`channels.telegram.liveStream` is not
284
+ * true) OR the connection isn't live, so the pipeline falls back to the
285
+ * single final `sendText` — byte-unchanged from before streaming existed.
286
+ *
287
+ * Each draft chunk is rendered through the SAME markdown→HTML converter the
288
+ * final path uses; a chunk whose HTML is empty/unparseable streams as plain
289
+ * text. When the running answer exceeds 4096 chars the stream finalizes the
290
+ * current message at a boundary and rolls overflow into a new message.
291
+ */
292
+ beginReplyStream(conversationId, sendOpts) {
293
+ if (!connection)
294
+ return null;
295
+ if (tokenInvalid || connection.isTokenInvalid())
296
+ return null;
297
+ const cfg = lastConfig;
298
+ if (!cfg || !telegramLiveStreamEnabled(cfg))
299
+ return null;
300
+ const conn = connection;
301
+ const threadId = sendOpts?.threadId;
302
+ const stream = createDraftStream({
303
+ transport: {
304
+ async sendMessage(text, o) {
305
+ const sent = await conn.sendText(conversationId, text, {
306
+ ...(o.parseMode === "HTML" ? { html: true } : {}),
307
+ ...(o.threadId !== undefined ? { threadId: o.threadId } : {}),
308
+ });
309
+ return { messageId: sent.messageId };
310
+ },
311
+ async editMessageText(messageId, text, o) {
312
+ await conn.editMessageText(conversationId, String(messageId), text, {
313
+ ...(o.parseMode === "HTML" ? { html: true } : {}),
314
+ });
315
+ },
316
+ },
317
+ throttleMs: telegramStreamThrottleMs(cfg),
318
+ maxChars: TELEGRAM_TEXT_LIMIT,
319
+ // Render each draft chunk to Telegram HTML; fall back to plain text
320
+ // when the HTML is empty (syntax-only) so a half-streamed fence
321
+ // never wedges the edit.
322
+ renderText: (chunk) => {
323
+ const html = markdownToTelegramHtml(chunk);
324
+ if (telegramHtmlIsEmpty(html))
325
+ return { text: chunk };
326
+ return { text: html, parseMode: "HTML" };
327
+ },
328
+ });
329
+ return {
330
+ update: (text) => stream.update(text),
331
+ async finalize(finalText) {
332
+ await stream.finalize(finalText);
333
+ const ids = stream.messageIds();
334
+ const last = ids[ids.length - 1];
335
+ return last !== undefined ? { messageId: String(last) } : undefined;
336
+ },
337
+ stop: () => stream.stop(),
338
+ };
339
+ },
340
+ /**
341
+ * OPTIONAL reasoning lane (default OFF). When `channels.telegram.
342
+ * surfaceReasoning` is true, split the raw reply's `<think>` trace out and
343
+ * send it as a separate `🧠 Reasoning:` message BEFORE the answer. When the
344
+ * config gate is off (the default) OR the reply carried no reasoning, this
345
+ * sends NOTHING — the answer message the pipeline sends afterward is
346
+ * byte-identical either way.
347
+ */
348
+ async deliverReasoning(conversationId, rawReply, sendOpts) {
349
+ if (!connection)
350
+ return;
351
+ if (tokenInvalid || connection.isTokenInvalid())
352
+ return;
353
+ const cfg = lastConfig;
354
+ if (!cfg || !telegramSurfaceReasoning(cfg))
355
+ return;
356
+ const { reasoningText } = splitTelegramReasoning(rawReply ?? "");
357
+ if (!reasoningText)
358
+ return;
359
+ // Reuse the adapter's own chunk+HTML send path so a long reasoning trace
360
+ // is chunked at 4096 and formatted consistently with replies.
361
+ await adapter.sendText(conversationId, reasoningText, sendOpts);
362
+ },
235
363
  // Telegram ids are numeric user/chat ids and @usernames, so the pairing
236
- // challenge card uses the "Your username" line.
237
- pairing: { idLabel: "username" },
364
+ // challenge card uses the "Your username" line. The bot is a SEPARATE
365
+ // account from the operator (unlike WhatsApp), so ownership is bootstrapped
366
+ // from the first CLI `pairing approve` — see `botIsSeparateFromOperator`.
367
+ pairing: { idLabel: "username", botIsSeparateFromOperator: true },
238
368
  // Token-based setup wizard — `brigade channels add --channel telegram`
239
369
  // prompts for the bot token and writes `channels.telegram.botToken`.
370
+ // Proxy is intentionally NOT a wizard prompt (it's a rare, optional knob,
371
+ // and the wizard treats every credential as required): set it directly as
372
+ // `channels.telegram.proxy: "http://host:port"` (or `"${TG_PROXY}"`) or via
373
+ // the `HTTPS_PROXY` / `ALL_PROXY` env var when api.telegram.org is blocked.
240
374
  setup: {
241
375
  credentialKeys: [
242
376
  {
@@ -385,6 +519,34 @@ export function createTelegramAdapter(opts = {}) {
385
519
  });
386
520
  return { ok: true, messageId: String(sent.messageId) };
387
521
  }
522
+ case "topic-create": {
523
+ // Create a forum topic in this supergroup; return the new thread
524
+ // id as messageId so the agent can immediately send into it.
525
+ const created = await connection.createForumTopic(p.conversationId, a.name, {
526
+ ...(a.iconColor !== undefined ? { iconColor: a.iconColor } : {}),
527
+ ...(a.iconCustomEmojiId !== undefined ? { iconCustomEmojiId: a.iconCustomEmojiId } : {}),
528
+ });
529
+ return { ok: true, messageId: created.threadId };
530
+ }
531
+ case "buttons": {
532
+ // Send a NEW message with a general inline keyboard. The button
533
+ // data is prefixed/sanitized by the keyboard builder; a press
534
+ // arrives as `callbackQuery` and routes through the pipeline as a
535
+ // turn (the central approval path declines a general payload).
536
+ const keyboard = buildTelegramInlineKeyboard(a.buttons.map((row) => row.map((b) => ({ text: b.text, data: b.data }))));
537
+ if (!keyboard) {
538
+ return { ok: false, error: "no usable buttons (each needs a label + a data token ≤ ~60 bytes)" };
539
+ }
540
+ // Render the body to Telegram HTML like the reply path; the
541
+ // interactive send is verbatim, so format here then mark html.
542
+ const html = markdownToTelegramHtml(a.text);
543
+ const useHtml = !telegramHtmlIsEmpty(html);
544
+ const sent = await connection.sendInteractive(p.conversationId, useHtml ? html : a.text, keyboard, {
545
+ ...(useHtml ? { html: true } : {}),
546
+ ...(a.threadId !== undefined ? { threadId: a.threadId } : {}),
547
+ });
548
+ return { ok: true, messageId: String(sent.messageId) };
549
+ }
388
550
  default:
389
551
  return { ok: false, error: `unsupported action kind` };
390
552
  }
@@ -426,6 +588,16 @@ export function createTelegramAdapter(opts = {}) {
426
588
  }
427
589
  return adapter;
428
590
  }
591
+ /**
592
+ * Synthesise the agent-facing note for an inbound reaction. The reaction itself
593
+ * carries no text, so the note ("<who> reacted <emoji> to message <id>") is what
594
+ * the central pipeline routes through dispatchTurn so the agent has context.
595
+ */
596
+ export function buildReactionNote(emojis, targetMessageId, fromName) {
597
+ const who = fromName?.trim() || "Someone";
598
+ const emoji = emojis.join(" ");
599
+ return `${who} reacted ${emoji} to message ${targetMessageId}.`;
600
+ }
429
601
  /** Static Telegram capability flags (shared by the legacy adapter + plugin meta). */
430
602
  export const TELEGRAM_CAPABILITIES = {
431
603
  chatTypes: ["direct", "group", "thread"],
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/adapter.ts"],"names":[],"mappings":"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"}
@@ -27,18 +27,27 @@
27
27
  * names (no NUL / control bytes — these are fixed string literals).
28
28
  */
29
29
  /** One Telegram update kind Brigade may subscribe. */
30
- export type TelegramAllowedUpdate = "message" | "callback_query" | "message_reaction" | "edited_message";
30
+ export type TelegramAllowedUpdate = "message" | "callback_query" | "message_reaction" | "edited_message" | "channel_post";
31
31
  /** Options gating the conditional update kinds. */
32
32
  export interface ResolveTelegramAllowedUpdatesOptions {
33
- /** Subscribe `message_reaction` (inbound reaction events). Default false. */
33
+ /**
34
+ * Subscribe `message_reaction` (inbound reaction events). Default TRUE — the
35
+ * connection now routes reactions through the pipeline. Pass `false` to opt
36
+ * out (`message_reaction` is the one kind Telegram does NOT deliver under a
37
+ * default/empty `allowed_updates`, so it must be requested explicitly).
38
+ */
34
39
  reactions?: boolean;
35
- /** Subscribe `edited_message` (inbound message edits). Default false. */
40
+ /** Subscribe `edited_message` (inbound message edits). Default TRUE. */
36
41
  editedMessages?: boolean;
42
+ /** Subscribe `channel_post` (posts in channels the bot administers). Default TRUE. */
43
+ channelPosts?: boolean;
37
44
  }
38
45
  /**
39
46
  * Resolve the `allowed_updates` list Brigade's Telegram poller/webhook should
40
- * request. `message` + `callback_query` are always present; reactions / edited
41
- * messages are added only when explicitly enabled. Deduped + stable order.
47
+ * request. `message` + `callback_query` are always present; `message_reaction`,
48
+ * `edited_message`, and `channel_post` are now requested by DEFAULT (the
49
+ * connection routes all three) and can be opted out individually. Deduped +
50
+ * stable order.
42
51
  */
43
52
  export declare function resolveTelegramAllowedUpdates(opts?: ResolveTelegramAllowedUpdatesOptions): TelegramAllowedUpdate[];
44
53
  //# sourceMappingURL=allowed-updates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"allowed-updates.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/allowed-updates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,sDAAsD;AACtD,MAAM,MAAM,qBAAqB,GAC9B,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,CAAC;AAEpB,mDAAmD;AACnD,MAAM,WAAW,oCAAoC;IACpD,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,IAAI,GAAE,oCAAyC,GAC7C,qBAAqB,EAAE,CAczB"}
1
+ {"version":3,"file":"allowed-updates.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/allowed-updates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,sDAAsD;AACtD,MAAM,MAAM,qBAAqB,GAC9B,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,CAAC;AAElB,mDAAmD;AACnD,MAAM,WAAW,oCAAoC;IACpD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC5C,IAAI,GAAE,oCAAyC,GAC7C,qBAAqB,EAAE,CAezB"}
@@ -28,15 +28,19 @@
28
28
  */
29
29
  /**
30
30
  * Resolve the `allowed_updates` list Brigade's Telegram poller/webhook should
31
- * request. `message` + `callback_query` are always present; reactions / edited
32
- * messages are added only when explicitly enabled. Deduped + stable order.
31
+ * request. `message` + `callback_query` are always present; `message_reaction`,
32
+ * `edited_message`, and `channel_post` are now requested by DEFAULT (the
33
+ * connection routes all three) and can be opted out individually. Deduped +
34
+ * stable order.
33
35
  */
34
36
  export function resolveTelegramAllowedUpdates(opts = {}) {
35
37
  const out = ["message", "callback_query"];
36
- if (opts.reactions)
38
+ if (opts.reactions !== false)
37
39
  out.push("message_reaction");
38
- if (opts.editedMessages)
40
+ if (opts.editedMessages !== false)
39
41
  out.push("edited_message");
42
+ if (opts.channelPosts !== false)
43
+ out.push("channel_post");
40
44
  // De-dupe defensively (the base list is already unique, but a future caller
41
45
  // could pass overlapping flags) while preserving first-seen order.
42
46
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"allowed-updates.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/allowed-updates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAiBH;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC5C,OAA6C,EAAE;IAE/C,MAAM,GAAG,GAA4B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,cAAc;QAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"allowed-updates.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/allowed-updates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAyBH;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC5C,OAA6C,EAAE;IAE/C,MAAM,GAAG,GAA4B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -33,7 +33,7 @@
33
33
  * subscribed — Brigade's approvals are central TEXT replies handled in
34
34
  * `inbound-pipeline.ts`, so `allowed_updates` only needs message updates.
35
35
  */
36
- import { type InboundMediaAttachment, type InboundReplyContext, type OutboundMedia } from "../sdk.js";
36
+ import { type InboundForwardContext, type InboundMediaAttachment, type InboundReplyContext, type OutboundMedia } from "../sdk.js";
37
37
  import type { Message, Update } from "@grammyjs/types";
38
38
  /**
39
39
  * Jittered exponential backoff for reconnect attempt `attempt` (0-based).
@@ -83,6 +83,19 @@ export interface TgInboundMessage {
83
83
  data: string;
84
84
  callbackId: string;
85
85
  };
86
+ /** True when this inbound is an `edited_message` (text carries the NEW text). */
87
+ edited?: boolean;
88
+ /** Forwarded-message provenance, when this message was forwarded from elsewhere. */
89
+ forwarded?: InboundForwardContext;
90
+ /**
91
+ * Inbound reaction context — present ONLY when this inbound is a
92
+ * `message_reaction` update (not a typed message). `emojis` are the newly-
93
+ * ADDED reaction emoji(s); `targetMessageId` is the message they landed on.
94
+ */
95
+ reaction?: {
96
+ emojis: string[];
97
+ targetMessageId: string;
98
+ };
86
99
  /** Raw grammY message (for adapters that need more). */
87
100
  raw: Message;
88
101
  }
@@ -144,6 +157,11 @@ export interface TelegramBotLike {
144
157
  unpinChatMessage?(chatId: string | number, opts?: Record<string, unknown>): Promise<boolean>;
145
158
  /** Rename a forum topic (thread auto-labeling). */
146
159
  editForumTopic?(chatId: string | number, messageThreadId: number, opts?: Record<string, unknown>): Promise<boolean>;
160
+ /** Create a forum topic; returns the new topic's `message_thread_id`. */
161
+ createForumTopic?(chatId: string | number, name: string, opts?: Record<string, unknown>): Promise<{
162
+ message_thread_id: number;
163
+ name?: string;
164
+ }>;
147
165
  /** Register the bot's `/` command menu (native command surface). */
148
166
  setMyCommands?(commands: Array<{
149
167
  command: string;
@@ -168,6 +186,21 @@ export interface TelegramBotLike {
168
186
  callbackQuery?: TelegramCallbackQuery;
169
187
  answerCallbackQuery: (opts?: Record<string, unknown>) => Promise<unknown>;
170
188
  }) => unknown): void;
189
+ /** An `edited_message` update (the edit carries the new text). */
190
+ on(filter: "edited_message", handler: (ctx: {
191
+ update: Update;
192
+ editedMessage?: Message;
193
+ }) => unknown): void;
194
+ /** A `channel_post` update (a post in a channel the bot is admin of). */
195
+ on(filter: "channel_post", handler: (ctx: {
196
+ update: Update;
197
+ channelPost?: Message;
198
+ }) => unknown): void;
199
+ /** A `message_reaction` update (someone added/removed an emoji reaction). */
200
+ on(filter: "message_reaction", handler: (ctx: {
201
+ update: Update;
202
+ messageReaction?: TelegramMessageReaction;
203
+ }) => unknown): void;
171
204
  /** Stop the bot (grammY). */
172
205
  stop(): Promise<void> | void;
173
206
  }
@@ -192,6 +225,39 @@ export interface TelegramCallbackQuery {
192
225
  };
193
226
  message?: Message;
194
227
  }
228
+ /** A Telegram `message_reaction` update payload (the subset Brigade reads). */
229
+ export interface TelegramMessageReaction {
230
+ chat: {
231
+ id: number | string;
232
+ type?: string;
233
+ title?: string;
234
+ is_forum?: boolean;
235
+ };
236
+ message_id: number;
237
+ user?: {
238
+ id?: number;
239
+ is_bot?: boolean;
240
+ username?: string;
241
+ first_name?: string;
242
+ last_name?: string;
243
+ };
244
+ actor_chat?: {
245
+ id?: number;
246
+ title?: string;
247
+ username?: string;
248
+ };
249
+ date?: number;
250
+ /** Reactions present BEFORE this update — used to diff the newly-added ones. */
251
+ old_reaction: Array<{
252
+ type: string;
253
+ emoji?: string;
254
+ }>;
255
+ /** Reactions present AFTER this update. */
256
+ new_reaction: Array<{
257
+ type: string;
258
+ emoji?: string;
259
+ }>;
260
+ }
195
261
  /** A grammY-runner-like handle (what `run(bot)` returns). */
196
262
  interface RunnerLike {
197
263
  isRunning(): boolean;
@@ -203,6 +269,16 @@ export interface ConnectTelegramArgs {
203
269
  token: string;
204
270
  /** Account namespace stamped on inbounds (single-account v1 → "default"). */
205
271
  accountId?: string;
272
+ /**
273
+ * Optional proxy URL all Telegram API calls (incl. `getMe` + `getUpdates`)
274
+ * route through. Use it on networks where `api.telegram.org` is blocked.
275
+ * Form: `http(s)://[user:pass@]host:port` for an HTTP CONNECT proxy, or
276
+ * `socks5://[user:pass@]host:port` (also `socks://` / `socks4://` /
277
+ * `socks5h://`) for a SOCKS proxy. When omitted/empty the connection is DIRECT
278
+ * (unchanged default). HTTP(S) proxies use an `undici` ProxyAgent; SOCKS
279
+ * proxies use a SOCKS-aware `undici` Agent (see `socks-dispatcher.ts`).
280
+ */
281
+ proxyUrl?: string;
206
282
  /** Called once `getMe` succeeds and polling starts. */
207
283
  onConnected?: () => void;
208
284
  /** Called when the token is rejected (401) — terminal, re-token required. */
@@ -217,6 +293,13 @@ export interface ConnectTelegramArgs {
217
293
  * omitted, callback updates are still acked + de-duplicated but not routed.
218
294
  */
219
295
  onCallbackQuery?: (msg: TgInboundMessage) => void;
296
+ /**
297
+ * Called for every inbound `message_reaction` (someone added an emoji
298
+ * reaction). The normalized inbound carries `reaction: { emojis,
299
+ * targetMessageId }` and no text. Optional — when omitted, reaction updates
300
+ * are de-duplicated but not routed.
301
+ */
302
+ onReaction?: (msg: TgInboundMessage) => void;
220
303
  /**
221
304
  * The `allowed_updates` list to request from `getUpdates`. Defaults to the
222
305
  * minimal `["message", "callback_query"]` set (see `allowed-updates.ts`).
@@ -302,6 +385,15 @@ export interface TelegramConnection {
302
385
  unpinMessage(chatId: string, messageId?: string): Promise<void>;
303
386
  /** Rename a forum topic (thread auto-labeling). Best-effort. */
304
387
  editForumTopic(chatId: string, threadId: string, name: string): Promise<void>;
388
+ /**
389
+ * Create a forum topic in a supergroup. Returns the new topic's thread id (as
390
+ * a string) so the caller can immediately send into it. Throws when the bot
391
+ * build / chat doesn't support forum topics or the name is invalid.
392
+ */
393
+ createForumTopic(chatId: string, name: string, opts?: TelegramCreateForumTopicOpts): Promise<{
394
+ threadId: string;
395
+ name: string;
396
+ }>;
305
397
  /** Ack an inline-button press (`answerCallbackQuery`). Best-effort. */
306
398
  answerCallback(callbackId: string, text?: string): Promise<void>;
307
399
  /**
@@ -343,11 +435,26 @@ export interface TelegramSendTextOpts {
343
435
  html?: boolean;
344
436
  /** Forum-topic thread id. */
345
437
  threadId?: string;
438
+ /**
439
+ * Native reply target — the Telegram `message_id` this send should quote.
440
+ * Mapped to `reply_parameters: { message_id, allow_sending_without_reply }`
441
+ * so the message renders as a native reply. Best-effort: a vanished target
442
+ * still delivers (Telegram drops the quote rather than erroring) because
443
+ * `allow_sending_without_reply` is set. Omitted → an ordinary, unquoted send.
444
+ */
445
+ replyToMessageId?: string;
346
446
  }
347
447
  export interface TelegramSendMediaOpts {
348
448
  /** Forum-topic thread id. */
349
449
  threadId?: string;
350
450
  }
451
+ /** Optional `createForumTopic` knobs (icon color / custom emoji). */
452
+ export interface TelegramCreateForumTopicOpts {
453
+ /** RGB color of the topic icon (one of Telegram's allowed palette ints). */
454
+ iconColor?: number;
455
+ /** Custom-emoji id for the topic icon. */
456
+ iconCustomEmojiId?: string;
457
+ }
351
458
  /** 401 Unauthorized → the bot token is wrong / revoked (terminal). */
352
459
  export declare function isTelegramUnauthorized(err: unknown): boolean;
353
460
  /** 409 Conflict on getUpdates → another poller or a webhook is active. */