@spinabot/brigade 1.3.2 → 1.5.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 (238) hide show
  1. package/README.md +74 -11
  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 +185 -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 +118 -1
  74. package/dist/agents/channels/telegram/connection.d.ts.map +1 -1
  75. package/dist/agents/channels/telegram/connection.js +380 -8
  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/format.d.ts +17 -0
  82. package/dist/agents/channels/telegram/format.d.ts.map +1 -1
  83. package/dist/agents/channels/telegram/format.js +36 -0
  84. package/dist/agents/channels/telegram/format.js.map +1 -1
  85. package/dist/agents/channels/telegram/inbound-extras.d.ts +27 -2
  86. package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -1
  87. package/dist/agents/channels/telegram/inbound-extras.js +134 -7
  88. package/dist/agents/channels/telegram/inbound-extras.js.map +1 -1
  89. package/dist/agents/channels/telegram/inline-keyboard.d.ts +36 -0
  90. package/dist/agents/channels/telegram/inline-keyboard.d.ts.map +1 -0
  91. package/dist/agents/channels/telegram/inline-keyboard.js +62 -0
  92. package/dist/agents/channels/telegram/inline-keyboard.js.map +1 -0
  93. package/dist/agents/channels/telegram/media.d.ts +8 -0
  94. package/dist/agents/channels/telegram/media.d.ts.map +1 -1
  95. package/dist/agents/channels/telegram/media.js +30 -2
  96. package/dist/agents/channels/telegram/media.js.map +1 -1
  97. package/dist/agents/channels/telegram/plugin.d.ts.map +1 -1
  98. package/dist/agents/channels/telegram/plugin.js +7 -11
  99. package/dist/agents/channels/telegram/plugin.js.map +1 -1
  100. package/dist/agents/channels/telegram/reasoning-lane.d.ts +41 -0
  101. package/dist/agents/channels/telegram/reasoning-lane.d.ts.map +1 -0
  102. package/dist/agents/channels/telegram/reasoning-lane.js +67 -0
  103. package/dist/agents/channels/telegram/reasoning-lane.js.map +1 -0
  104. package/dist/agents/channels/telegram/socks-dispatcher.d.ts +32 -0
  105. package/dist/agents/channels/telegram/socks-dispatcher.d.ts.map +1 -0
  106. package/dist/agents/channels/telegram/socks-dispatcher.js +97 -0
  107. package/dist/agents/channels/telegram/socks-dispatcher.js.map +1 -0
  108. package/dist/agents/channels/types.adapters.d.ts +137 -4
  109. package/dist/agents/channels/types.adapters.d.ts.map +1 -1
  110. package/dist/agents/channels/types.adapters.js +2 -2
  111. package/dist/agents/channels/types.core.d.ts +26 -2
  112. package/dist/agents/channels/types.core.d.ts.map +1 -1
  113. package/dist/agents/channels/types.plugin.d.ts +25 -7
  114. package/dist/agents/channels/types.plugin.d.ts.map +1 -1
  115. package/dist/agents/channels/types.plugin.js +6 -5
  116. package/dist/agents/channels/types.plugin.js.map +1 -1
  117. package/dist/agents/channels/whatsapp/adapter.d.ts +8 -0
  118. package/dist/agents/channels/whatsapp/adapter.d.ts.map +1 -1
  119. package/dist/agents/channels/whatsapp/adapter.js +7 -4
  120. package/dist/agents/channels/whatsapp/adapter.js.map +1 -1
  121. package/dist/agents/channels/whatsapp/connection.d.ts +24 -2
  122. package/dist/agents/channels/whatsapp/connection.d.ts.map +1 -1
  123. package/dist/agents/channels/whatsapp/connection.js +26 -5
  124. package/dist/agents/channels/whatsapp/connection.js.map +1 -1
  125. package/dist/agents/channels/whatsapp/plugin.d.ts.map +1 -1
  126. package/dist/agents/channels/whatsapp/plugin.js +6 -10
  127. package/dist/agents/channels/whatsapp/plugin.js.map +1 -1
  128. package/dist/agents/extensions/activation-planner.d.ts +125 -0
  129. package/dist/agents/extensions/activation-planner.d.ts.map +1 -0
  130. package/dist/agents/extensions/activation-planner.js +221 -0
  131. package/dist/agents/extensions/activation-planner.js.map +1 -0
  132. package/dist/agents/extensions/diagnose.d.ts +84 -0
  133. package/dist/agents/extensions/diagnose.d.ts.map +1 -0
  134. package/dist/agents/extensions/diagnose.js +123 -0
  135. package/dist/agents/extensions/diagnose.js.map +1 -0
  136. package/dist/agents/extensions/discovery.d.ts +85 -7
  137. package/dist/agents/extensions/discovery.d.ts.map +1 -1
  138. package/dist/agents/extensions/discovery.js +200 -15
  139. package/dist/agents/extensions/discovery.js.map +1 -1
  140. package/dist/agents/extensions/index.d.ts +3 -2
  141. package/dist/agents/extensions/index.d.ts.map +1 -1
  142. package/dist/agents/extensions/index.js +3 -2
  143. package/dist/agents/extensions/index.js.map +1 -1
  144. package/dist/agents/extensions/install-scan.d.ts +63 -0
  145. package/dist/agents/extensions/install-scan.d.ts.map +1 -0
  146. package/dist/agents/extensions/install-scan.js +201 -0
  147. package/dist/agents/extensions/install-scan.js.map +1 -0
  148. package/dist/agents/extensions/install.d.ts +135 -0
  149. package/dist/agents/extensions/install.d.ts.map +1 -0
  150. package/dist/agents/extensions/install.js +414 -0
  151. package/dist/agents/extensions/install.js.map +1 -0
  152. package/dist/agents/extensions/loader.d.ts +13 -2
  153. package/dist/agents/extensions/loader.d.ts.map +1 -1
  154. package/dist/agents/extensions/loader.js +126 -13
  155. package/dist/agents/extensions/loader.js.map +1 -1
  156. package/dist/agents/extensions/registry.d.ts +109 -0
  157. package/dist/agents/extensions/registry.d.ts.map +1 -1
  158. package/dist/agents/extensions/registry.js +172 -0
  159. package/dist/agents/extensions/registry.js.map +1 -1
  160. package/dist/agents/extensions/sdk-alias.d.ts +45 -0
  161. package/dist/agents/extensions/sdk-alias.d.ts.map +1 -0
  162. package/dist/agents/extensions/sdk-alias.js +94 -0
  163. package/dist/agents/extensions/sdk-alias.js.map +1 -0
  164. package/dist/agents/extensions/types.d.ts +166 -1
  165. package/dist/agents/extensions/types.d.ts.map +1 -1
  166. package/dist/agents/extensions/types.js.map +1 -1
  167. package/dist/agents/tools/composio-tool.d.ts +9 -1
  168. package/dist/agents/tools/composio-tool.d.ts.map +1 -1
  169. package/dist/agents/tools/composio-tool.js +68 -4
  170. package/dist/agents/tools/composio-tool.js.map +1 -1
  171. package/dist/agents/tools/message-action-tool.d.ts +6 -1
  172. package/dist/agents/tools/message-action-tool.d.ts.map +1 -1
  173. package/dist/agents/tools/message-action-tool.js +52 -2
  174. package/dist/agents/tools/message-action-tool.js.map +1 -1
  175. package/dist/agents/tools/send-message-tool.d.ts +1 -0
  176. package/dist/agents/tools/send-message-tool.d.ts.map +1 -1
  177. package/dist/agents/tools/send-message-tool.js +56 -1
  178. package/dist/agents/tools/send-message-tool.js.map +1 -1
  179. package/dist/buildstamp.json +1 -1
  180. package/dist/channel-sdk.d.ts +28 -0
  181. package/dist/channel-sdk.d.ts.map +1 -0
  182. package/dist/channel-sdk.js +28 -0
  183. package/dist/channel-sdk.js.map +1 -0
  184. package/dist/cli/commands/channels.d.ts.map +1 -1
  185. package/dist/cli/commands/channels.js +8 -8
  186. package/dist/cli/commands/channels.js.map +1 -1
  187. package/dist/cli/commands/connect.d.ts +8 -11
  188. package/dist/cli/commands/connect.d.ts.map +1 -1
  189. package/dist/cli/commands/connect.js +157 -17
  190. package/dist/cli/commands/connect.js.map +1 -1
  191. package/dist/cli/commands/convex-cmd.d.ts +2 -1
  192. package/dist/cli/commands/convex-cmd.d.ts.map +1 -1
  193. package/dist/cli/commands/convex-cmd.js +79 -6
  194. package/dist/cli/commands/convex-cmd.js.map +1 -1
  195. package/dist/cli/commands/doctor.d.ts.map +1 -1
  196. package/dist/cli/commands/doctor.js +64 -0
  197. package/dist/cli/commands/doctor.js.map +1 -1
  198. package/dist/cli/commands/extensions.d.ts +46 -0
  199. package/dist/cli/commands/extensions.d.ts.map +1 -0
  200. package/dist/cli/commands/extensions.js +578 -0
  201. package/dist/cli/commands/extensions.js.map +1 -0
  202. package/dist/cli/commands/pairing.d.ts.map +1 -1
  203. package/dist/cli/commands/pairing.js +16 -2
  204. package/dist/cli/commands/pairing.js.map +1 -1
  205. package/dist/cli/commands/update.d.ts +17 -0
  206. package/dist/cli/commands/update.d.ts.map +1 -0
  207. package/dist/cli/commands/update.js +104 -0
  208. package/dist/cli/commands/update.js.map +1 -0
  209. package/dist/cli/program/build-program.d.ts.map +1 -1
  210. package/dist/cli/program/build-program.js +114 -1
  211. package/dist/cli/program/build-program.js.map +1 -1
  212. package/dist/config/paths.d.ts +1 -0
  213. package/dist/config/paths.d.ts.map +1 -1
  214. package/dist/config/paths.js +9 -0
  215. package/dist/config/paths.js.map +1 -1
  216. package/dist/core/server.d.ts.map +1 -1
  217. package/dist/core/server.js +134 -2
  218. package/dist/core/server.js.map +1 -1
  219. package/dist/protocol.d.ts +25 -0
  220. package/dist/protocol.d.ts.map +1 -1
  221. package/dist/protocol.js.map +1 -1
  222. package/dist/system-prompt/assembler.d.ts.map +1 -1
  223. package/dist/system-prompt/assembler.js +17 -0
  224. package/dist/system-prompt/assembler.js.map +1 -1
  225. package/dist/system-prompt/identity-defaults.d.ts +28 -0
  226. package/dist/system-prompt/identity-defaults.d.ts.map +1 -1
  227. package/dist/system-prompt/identity-defaults.js +47 -0
  228. package/dist/system-prompt/identity-defaults.js.map +1 -1
  229. package/dist/ui/editor.d.ts.map +1 -1
  230. package/dist/ui/editor.js +1 -0
  231. package/dist/ui/editor.js.map +1 -1
  232. package/dist/version.d.ts +4 -3
  233. package/dist/version.d.ts.map +1 -1
  234. package/dist/version.js +27 -5
  235. package/dist/version.js.map +1 -1
  236. package/package.json +21 -4
  237. package/scripts/build-done.mjs +11 -2
  238. package/scripts/convex-dev.mjs +28 -2
@@ -125,14 +125,23 @@
125
125
  * ──────────────────────────────────────────────────────────────────────────
126
126
  *
127
127
  * • Inline-button approvals: set `adapter.approvalCapability.sendApprovalPrompt`
128
- * (render `buildApprovalCallbackButtons(approvalId)` as native buttons whose
128
+ * (render `buildApprovalCallbackButtons({ approvalId })` as native buttons whose
129
129
  * `callback_data` is each button's `.data`). Deliver the press back as
130
130
  * `InboundMessage.callbackQuery` — the central pipeline decodes + resolves
131
131
  * it. Add `authorizeApprover` to refuse non-operator pressers.
132
- * Message actions (edit / delete / react / pin): implement
133
- * `adapter.handleAction(...)` and advertise the matching `capabilities`
134
- * flags (`edit` / `unsend` / `reactions` / `reply`). The central
135
- * `message_action` tool pre-checks the flag before calling you.
132
+ * NOTE: native-button approvals currently fire on the MULTI-ACCOUNT plugin
133
+ * path only. A single-account `ChannelAdapter` that sets `sendApprovalPrompt`
134
+ * still falls back to the text approval card today (`authorizeApprover` IS
135
+ * honored on both paths) — use the plugin path for native single-account buttons.
136
+ * • Message actions (edit / delete / react / pin): the CANONICAL path is the
137
+ * single-account `ChannelAdapter.handleAction({ conversationId, action,
138
+ * accountId?, signal? })`. Implement THAT and advertise the matching
139
+ * `capabilities` flags (`edit` / `unsend` / `reactions` / `reply`); the
140
+ * central `message_action` tool pre-checks the flag before calling you.
141
+ * NOTE: the `ChannelPlugin.actions` typed slot (`ChannelMessageActionAdapter`,
142
+ * a `{ cfg, runtime, target, … }` shape) is a DEAD slot — it is NOT consumed
143
+ * by the message-action path, so it is deprecated and no longer part of this
144
+ * barrel. Implementing it alone gives your channel NO message actions.
136
145
  * • Outbound id: return `{ messageId }` from `sendText`/`sendMedia` so the
137
146
  * agent can reference "my last message" via `message_action`.
138
147
  * • Durable token: `connect_channel` seals tokens via `sealChannelToken`;
@@ -163,6 +172,96 @@
163
172
  export {
164
173
  /** Register a channel through the extension seam: `defineModule({ id, register(b){ b.channel(adapter) } })`. */
165
174
  defineModule, } from "../extensions/types.js";
175
+ /* ───────────────────────── bundled channel metas (single source of truth) ───────────────────────── */
176
+ export {
177
+ /** WhatsApp's user-facing `ChannelMeta` — import this for your plugin's `meta` field. */
178
+ WHATSAPP_CHANNEL_META,
179
+ /** Telegram's user-facing `ChannelMeta` — import this for your plugin's `meta` field. */
180
+ TELEGRAM_CHANNEL_META,
181
+ /** Every bundled channel meta in declaration order (the meta registry seeds from this). */
182
+ BUNDLED_CHANNEL_METAS, } from "./bundled-channel-metas.js";
183
+ /* ───────────────────────── channel-meta registry + markdown gate ───────────────────────── */
184
+ export {
185
+ /** Register/replace a channel's `ChannelMeta` at runtime (external/future channels). */
186
+ registerChannelMeta,
187
+ /** Look up a registered channel's full `ChannelMeta` by id/alias (undefined if unknown). */
188
+ getRegisteredChannelPluginMeta,
189
+ /** Friendlier alias of `getRegisteredChannelPluginMeta`. */
190
+ getChatChannelMeta,
191
+ /** Every channel meta currently known (built-in + dynamic). */
192
+ listChannelMetas,
193
+ /** Drop every dynamically-registered meta — the gateway calls this on reload teardown so a
194
+ * removed channel's meta doesn't leak across the reload (built-in catalog untouched). */
195
+ clearChannelMetaRegistry, } from "./channel-meta-registry.js";
196
+ export {
197
+ /** True iff a channel renders markdown (defaults ON for an unknown channel — no regression). */
198
+ isMarkdownCapableChannel,
199
+ /** Message-channel markdown gate — also treats internal/cli/tui surfaces as markdown-capable. */
200
+ isMarkdownCapableMessageChannel, } from "./markdown-capability.js";
201
+ /* ───────────────────────── outbound addressing: the channel-messaging registry ───────────────────────── */
202
+ export {
203
+ /** Register a channel's OUTBOUND `messaging` adapter (parse/normalize/resolve). The plugin
204
+ * engine calls this so `send_message` can address by name/handle/explicit target. */
205
+ registerChannelMessagingAdapter,
206
+ /** Bulk-register every plugin's `messaging` adapter (gateway bootstrap seeds with its plugin list). */
207
+ syncChannelMessagingAdaptersFromPlugins,
208
+ /** Look up a channel's registered messaging adapter by id (undefined → raw-id passthrough). */
209
+ getChannelMessagingAdapter,
210
+ /** Turn a loose `to` into a concrete outbound target via the channel's messaging adapter (or
211
+ * return the raw `to` unchanged when none is registered). Never throws. */
212
+ resolveOutboundTarget,
213
+ /** Canonicalise an INCOMING peer id to a stable conversation/session identity via the channel's
214
+ * messaging adapter (the inverse of `resolveOutboundTarget`); returns the raw peer id unchanged
215
+ * when the channel doesn't opt in. Never throws. */
216
+ resolveInboundConversation,
217
+ /** Heuristic: does a `to` read like a human contact NAME (vs an already-concrete id)? */
218
+ looksLikeContactName,
219
+ /** Drop every dynamically-registered messaging adapter — the gateway calls this on reload teardown
220
+ * so a removed channel's adapter doesn't keep rewriting outbound targets across the reload. */
221
+ clearChannelMessagingRegistry, } from "./channel-messaging-registry.js";
222
+ /* ───────────────────────── security: the channel-security registry (supplementary DM-policy consult + audit) ───────────────────────── */
223
+ export {
224
+ /** Register a channel's SUPPLEMENTARY `security` adapter (resolveDmPolicy / collectWarnings /
225
+ * collectAuditFindings). The pipeline consults it as a TIGHTEN-ONLY overlay on top of the central
226
+ * access-control engine; the central config stays authoritative. */
227
+ registerChannelSecurityAdapter,
228
+ /** Bulk-register every plugin's `security` adapter (gateway bootstrap seeds with its plugin list). */
229
+ syncChannelSecurityAdaptersFromPlugins,
230
+ /** Look up a channel's registered security adapter by id (undefined → no supplementary opinion). */
231
+ getChannelSecurityAdapter,
232
+ /** Diagnostic — list the channel ids that registered a security adapter. */
233
+ listChannelSecurityAdapters,
234
+ /** Consult a channel's security adapter for a DM-policy opinion + reconcile it with the central
235
+ * policy under the strict TIGHTEN-ONLY rule (returns the base policy unchanged when none/null/throws). */
236
+ consultChannelDmPolicy,
237
+ /** Reconcile a central `DmPolicy` with a security adapter's `ChannelSecurityDmPolicy` opinion —
238
+ * the adapter may only TIGHTEN, never loosen. */
239
+ reconcileDmPolicy,
240
+ /** Map an author-facing `ChannelSecurityDmPolicy` onto the pipeline's `DmPolicy` vocabulary. */
241
+ securityDmPolicyToDmPolicy,
242
+ /** Tightness rank of a `DmPolicy` (higher = more restrictive) — the ladder precedence compares on. */
243
+ dmPolicyTightness,
244
+ /** Iterate registered security adapters + collect their structured audit findings (for `brigade doctor`). */
245
+ collectChannelSecurityAudit,
246
+ /** Drop every dynamically-registered security adapter — the gateway calls this on reload teardown so
247
+ * a removed channel's adapter doesn't keep TIGHTENING DM policy across the reload (security-relevant). */
248
+ clearChannelSecurityRegistry, } from "./channel-security-registry.js";
249
+ /* ───────────────────────── access-control: shared allow-from display formatter ───────────────────────── */
250
+ export {
251
+ /** Shared display formatter for a channel's allow-from list — the `/allowlist list` command + the
252
+ * `brigade channels allow list` CLI both render through this so the output is identical. A channel
253
+ * customizes rendering via the optional `ChannelConfigAdapter.formatAllowFrom` hook. */
254
+ formatAllowFrom, } from "./access-control/format-allow-from.js";
255
+ /* ───────────────────────── channel-exposure resolver (visibility surfaces) ───────────────────────── */
256
+ export {
257
+ /** Resolve a channel's `meta.exposure` (+ legacy show* flags) to concrete per-surface booleans. */
258
+ resolveChannelExposure,
259
+ /** True when the channel should appear in "configured channels" views. */
260
+ isChannelVisibleInConfiguredLists,
261
+ /** True when the channel should be offered in the setup / onboarding wizard. */
262
+ isChannelVisibleInSetup,
263
+ /** True when the channel should be surfaced in generated docs / help. */
264
+ isChannelVisibleInDocs, } from "./exposure.js";
166
265
  /* ───────────────────────── shared helper: outbound chunking ───────────────────────── */
167
266
  export {
168
267
  /**
@@ -174,7 +273,9 @@ export {
174
273
  chunkText, } from "./whatsapp/chunk.js";
175
274
  /* ───────────────────────── shared helper: inbound dedupe ───────────────────────── */
176
275
  export {
177
- /** Build a per-channel inbound dedupe cache (claim-once, LRU + TTL). */
276
+ /** Build a per-channel inbound dedupe cache (claim-once, LRU + TTL). Options:
277
+ * `{ maxEntries, ttlMs }` — the cap field is `maxEntries` (NOT `max`; a stray
278
+ * `max` type-checks but is silently ignored). */
178
279
  createDedupeCache, } from "./dedupe.js";
179
280
  /* ───────────────────────── shared helper: outbound media guard ───────────────────────── */
180
281
  export {
@@ -217,6 +318,37 @@ sealChannelToken,
217
318
  readSealedChannelToken,
218
319
  /** Provider key a channel's token is sealed under (`channel:<id>`). */
219
320
  channelSecretProvider, } from "./channel-secrets.js";
321
+ export {
322
+ /** A channel's own state dir (`~/.brigade/channels/<id>/`) — where it persists its
323
+ * auth/creds/downloaded media. Takes just the channel id; multi-account channels
324
+ * partition per account UNDER this dir themselves (`accounts/<accountId>/`). Pair
325
+ * with `ensureDir`. */
326
+ resolveChannelStateDir,
327
+ /** `mkdir -p` for a channel's state/media dirs. */
328
+ ensureDir,
329
+ /** OS cache dir for EPHEMERAL channel scratch (media temp), kept OUTSIDE `~/.brigade`. */
330
+ resolveOsCacheDir, } from "../../config/paths.js";
331
+ export {
332
+ /** Storage-mode awareness — the runtime store context, or `undefined` in filesystem mode. A
333
+ * channel that persists state branches on `tryGetRuntimeContext()?.mode === "convex"`. */
334
+ tryGetRuntimeContext, } from "../../storage/runtime-context.js";
335
+ export {
336
+ /** Load the live config off disk — a defensive fallback for `start()` when no cfg was threaded in. */
337
+ loadConfig, } from "../../core/config.js";
338
+ export {
339
+ /** Strip Brigade's internal reasoning/markers from a reply before rendering. The inbound pipeline
340
+ * already applies this centrally — use only for a bespoke reasoning-surfacing path. */
341
+ sanitizeReplyForChannel, } from "./reply-sanitizer.js";
342
+ /* ───────────────────────── central: general (non-approval) inline-button callbacks ───────────────────────── */
343
+ export {
344
+ /** Prefix a channel stamps on a general inline button's `callback_data` so the pipeline routes the
345
+ * press back as a synthetic turn (an unprefixed, non-approval callback is dropped). Pairs with the
346
+ * approval-callback codec above — approvals vs general buttons are the two inline-button lanes. */
347
+ GENERAL_CALLBACK_PREFIX,
348
+ /** True iff a callback payload is a general (prefixed) one — distinguishes it from an approval press. */
349
+ isGeneralCallbackData,
350
+ /** Decode a general callback payload back to the value the button carried. */
351
+ decodeGeneralCallbackData, } from "./general-callback.js";
220
352
  /* ───────────────────────── pipeline: the shared inbound engine ───────────────────────── */
221
353
  export {
222
354
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/agents/channels/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgKG;AAEH,4EAA4E;AAE5E,OAAO;AACN,gHAAgH;AAChH,YAAY,GACZ,MAAM,wBAAwB,CAAC;AA+DhC,0FAA0F;AAE1F,OAAO;AACN;;;;;GAKG;AACH,SAAS,GACT,MAAM,qBAAqB,CAAC;AAE7B,uFAAuF;AAEvF,OAAO;AACN,wEAAwE;AACxE,iBAAiB,GACjB,MAAM,aAAa,CAAC;AAGrB,6FAA6F;AAE7F,OAAO;AACN;;;;GAIG;AACH,yBAAyB,GACzB,MAAM,oCAAoC,CAAC;AAG5C,0FAA0F;AAE1F,OAAO;AACN,8EAA8E;AAC9E,qBAAqB,GACrB,MAAM,mCAAmC,CAAC;AAG3C,0FAA0F;AAE1F,OAAO;AACN;;;;;GAKG;AACH,gBAAgB,GAChB,MAAM,cAAc,CAAC;AAGtB,+FAA+F;AAE/F,OAAO;AACN,oGAAoG;AACpG,sBAAsB;AACtB,mGAAmG;AACnG,sBAAsB;AACtB,yEAAyE;AACzE,oBAAoB;AACpB,6FAA6F;AAC7F,4BAA4B;AAC5B,gEAAgE;AAChE,2BAA2B,GAC3B,MAAM,8BAA8B,CAAC;AAQtC,6FAA6F;AAE7F,OAAO;AACN,4FAA4F;AAC5F,gBAAgB;AAChB,+FAA+F;AAC/F,sBAAsB;AACtB,uEAAuE;AACvE,qBAAqB,GACrB,MAAM,sBAAsB,CAAC;AAsF9B,6FAA6F;AAE7F,OAAO;AACN;;;;;;;GAOG;AACH,yBAAyB;AACzB,4FAA4F;AAC5F,4BAA4B;AAC5B;;;;GAIG;AACH,oBAAoB;AACpB,sGAAsG;AACtG,OAAO,GACP,MAAM,uBAAuB,CAAC;AAY/B,gGAAgG;AAEhG,OAAO;AACN;;;;GAIG;AACH,iCAAiC;AACjC,sFAAsF;AACtF,+BAA+B;AAC/B,mGAAmG;AACnG,uBAAuB;AACvB,uFAAuF;AACvF,8BAA8B;AAC9B,6FAA6F;AAC7F,iCAAiC;AACjC,uEAAuE;AACvE,yBAAyB;AACzB,oDAAoD;AACpD,8BAA8B;AAC9B,0DAA0D;AAC1D,2BAA2B,GAC3B,MAAM,sBAAsB,CAAC;AA2B9B,+FAA+F;AAE/F,OAAO;AACN;;;;;GAKG;AACH,yBAAyB;AACzB,uFAAuF;AACvF,sBAAsB,GACtB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/agents/channels/sdk.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,11 @@ export interface ResolvedTelegramAccount {
39
39
  enabled: boolean;
40
40
  /** Bot API token, fully resolved (`${VAR}` + env fallback applied), or `""` when unset. */
41
41
  botToken: string;
42
+ /**
43
+ * Proxy URL all Telegram API calls route through, fully resolved (`${VAR}` +
44
+ * env fallback applied), or `""` for a direct connection (the default).
45
+ */
46
+ proxyUrl: string;
42
47
  verbose: boolean;
43
48
  }
44
49
  /** Is the Telegram channel switched on at all (any shape)? */
@@ -61,6 +66,26 @@ export declare function listTelegramAccountIds(cfg: BrigadeConfig): string[];
61
66
  * that keeps the channel authenticated across restarts.
62
67
  */
63
68
  export declare function resolveTelegramBotToken(cfg: BrigadeConfig, accountId?: string | null, env?: NodeJS.ProcessEnv): string;
69
+ /**
70
+ * Resolve the proxy URL all Telegram API calls should route through. Precedence:
71
+ * 1. The per-account `accounts[].proxy` (multi-account shape), `${VAR}`-resolved.
72
+ * 2. The top-level `channels.telegram.proxy`, `${VAR}`-resolved.
73
+ * 3. The first set standard proxy env var (`https_proxy` / `HTTPS_PROXY` /
74
+ * `all_proxy` / `ALL_PROXY`) — last-resort fallback.
75
+ * Returns `""` when none is configured → a DIRECT connection (the default,
76
+ * byte-unchanged from before proxy support existed).
77
+ *
78
+ * Note `${VAR}` refs are resolved here the same way `botToken` is, so an
79
+ * operator can keep the proxy (which may carry `user:pass@` creds) out of the
80
+ * committed config as `channels.telegram.proxy: "${TG_PROXY}"`.
81
+ */
82
+ export declare function resolveTelegramProxyUrl(cfg: BrigadeConfig, accountId?: string | null, env?: NodeJS.ProcessEnv): string;
83
+ /**
84
+ * Mask a proxy URL down to `scheme://host:port` (creds + path dropped) so it is
85
+ * safe to log. A malformed URL is reduced to its scheme only; an empty input
86
+ * returns "". NEVER log a raw proxy URL — it may embed `user:pass@`.
87
+ */
88
+ export declare function maskProxyUrl(proxyUrl: string): string;
64
89
  /** Resolve a per-account view of the config (defaults + token resolution filled in). */
65
90
  export declare function resolveTelegramAccount(cfg: BrigadeConfig, accountId?: string | null, env?: NodeJS.ProcessEnv): ResolvedTelegramAccount;
66
91
  /** Resolved Telegram transport config (mode + webhook details). */
@@ -82,6 +107,22 @@ export interface TelegramWebhookConfig {
82
107
  export declare function telegramWebhookConfig(cfg: BrigadeConfig, env?: NodeJS.ProcessEnv): TelegramWebhookConfig;
83
108
  /** True when forum-topic auto-labeling is enabled (`channels.telegram.autoLabelTopics`). */
84
109
  export declare function telegramAutoLabelTopics(cfg: BrigadeConfig): boolean;
110
+ /**
111
+ * True when live reply-streaming is enabled (`channels.telegram.liveStream`).
112
+ * Default OFF — the adapter delivers one final chunked message as before.
113
+ */
114
+ export declare function telegramLiveStreamEnabled(cfg: BrigadeConfig): boolean;
115
+ /**
116
+ * Resolve the streaming edit throttle in ms. Reads
117
+ * `channels.telegram.streamThrottleMs`; falls back to 1000ms. The draft-stream
118
+ * floors this at 250ms, so a too-small value is harmless.
119
+ */
120
+ export declare function telegramStreamThrottleMs(cfg: BrigadeConfig): number;
121
+ /**
122
+ * True when reasoning surfacing is enabled (`channels.telegram.surfaceReasoning`).
123
+ * Default OFF — `<think>` reasoning is stripped from channel replies as today.
124
+ */
125
+ export declare function telegramSurfaceReasoning(cfg: BrigadeConfig): boolean;
85
126
  /**
86
127
  * Resolve the idle-thread-session TTL in ms, or `null` when unset / disabled.
87
128
  * Accepts a number (ms) or a duration string (`"6h"`, `"30m"`, …). The cron
@@ -1 +1 @@
1
- {"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,QAAA,MAAM,UAAU,aAAa,CAAC;AAC9B,QAAA,MAAM,kBAAkB,YAAY,CAAC;AAErC,6DAA6D;AAC7D,QAAA,MAAM,aAAa,uBAAuB,CAAC;AAwC3C,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAqBD,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAElE;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAgBnE;AAeD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAWR;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,uBAAuB,CAWzB;AAOD,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACrC,4CAA4C;IAC5C,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,aAAa,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,qBAAqB,CAYvB;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAczE;AAED,OAAO,EACN,UAAU,IAAI,mBAAmB,EACjC,kBAAkB,IAAI,2BAA2B,EACjD,aAAa,IAAI,0BAA0B,GAC3C,CAAC"}
1
+ {"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,QAAA,MAAM,UAAU,aAAa,CAAC;AAC9B,QAAA,MAAM,kBAAkB,YAAY,CAAC;AAErC,6DAA6D;AAC7D,QAAA,MAAM,aAAa,uBAAuB,CAAC;AA0E3C,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAqBD,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAElE;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAgBnE;AAeD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAWR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAaR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,uBAAuB,CAYzB;AAOD,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACrC,4CAA4C;IAC5C,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,aAAa,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,qBAAqB,CAYvB;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEnE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAErE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAGnE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAczE;AAED,OAAO,EACN,UAAU,IAAI,mBAAmB,EACjC,kBAAkB,IAAI,2BAA2B,EACjD,aAAa,IAAI,0BAA0B,GAC3C,CAAC"}
@@ -33,6 +33,13 @@ const CHANNEL_ID = "telegram";
33
33
  const DEFAULT_ACCOUNT_ID = "default";
34
34
  /** The env var consulted as a last-resort token fallback. */
35
35
  const TOKEN_ENV_VAR = "TELEGRAM_BOT_TOKEN";
36
+ /**
37
+ * Standard proxy env vars consulted as a last-resort proxy fallback, in
38
+ * precedence order. Lower-case wins over upper-case (curl/undici convention),
39
+ * and a TLS-oriented `https_proxy` outranks the catch-all `ALL_PROXY`. These
40
+ * mirror the keys undici's own `EnvHttpProxyAgent` honours.
41
+ */
42
+ const PROXY_ENV_VARS = ["https_proxy", "HTTPS_PROXY", "all_proxy", "ALL_PROXY"];
36
43
  /** `${VAR}` secret-ref form — identical to `config/io.ts`'s SECRET_REF_PATTERN. */
37
44
  const SECRET_REF_PATTERN = /^\$\{([A-Z_][A-Z0-9_]*)\}$/;
38
45
  /** Read `channels.telegram` loosely (schema keeps it open). */
@@ -125,6 +132,54 @@ export function resolveTelegramBotToken(cfg, accountId, env = process.env) {
125
132
  return sealed;
126
133
  return (env[TOKEN_ENV_VAR] ?? "").trim();
127
134
  }
135
+ /**
136
+ * Resolve the proxy URL all Telegram API calls should route through. Precedence:
137
+ * 1. The per-account `accounts[].proxy` (multi-account shape), `${VAR}`-resolved.
138
+ * 2. The top-level `channels.telegram.proxy`, `${VAR}`-resolved.
139
+ * 3. The first set standard proxy env var (`https_proxy` / `HTTPS_PROXY` /
140
+ * `all_proxy` / `ALL_PROXY`) — last-resort fallback.
141
+ * Returns `""` when none is configured → a DIRECT connection (the default,
142
+ * byte-unchanged from before proxy support existed).
143
+ *
144
+ * Note `${VAR}` refs are resolved here the same way `botToken` is, so an
145
+ * operator can keep the proxy (which may carry `user:pass@` creds) out of the
146
+ * committed config as `channels.telegram.proxy: "${TG_PROXY}"`.
147
+ */
148
+ export function resolveTelegramProxyUrl(cfg, accountId, env = process.env) {
149
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
150
+ const slot = telegramChannelConfig(cfg);
151
+ const entry = findAccountEntry(cfg, id);
152
+ const perAccount = resolveTokenRef(entry?.proxy, env);
153
+ if (perAccount)
154
+ return perAccount;
155
+ const topLevel = resolveTokenRef(slot?.proxy, env);
156
+ if (topLevel)
157
+ return topLevel;
158
+ for (const key of PROXY_ENV_VARS) {
159
+ const value = (env[key] ?? "").trim();
160
+ if (value)
161
+ return value;
162
+ }
163
+ return "";
164
+ }
165
+ /**
166
+ * Mask a proxy URL down to `scheme://host:port` (creds + path dropped) so it is
167
+ * safe to log. A malformed URL is reduced to its scheme only; an empty input
168
+ * returns "". NEVER log a raw proxy URL — it may embed `user:pass@`.
169
+ */
170
+ export function maskProxyUrl(proxyUrl) {
171
+ const raw = (proxyUrl ?? "").trim();
172
+ if (!raw)
173
+ return "";
174
+ try {
175
+ const u = new URL(raw);
176
+ return `${u.protocol}//${u.host}`; // host includes :port; userinfo + path/query dropped
177
+ }
178
+ catch {
179
+ const scheme = /^([a-z][a-z0-9+.-]*):\/\//i.exec(raw)?.[1];
180
+ return scheme ? `${scheme}://<masked>` : "<masked>";
181
+ }
182
+ }
128
183
  /** Resolve a per-account view of the config (defaults + token resolution filled in). */
129
184
  export function resolveTelegramAccount(cfg, accountId, env = process.env) {
130
185
  const slot = telegramChannelConfig(cfg);
@@ -135,6 +190,7 @@ export function resolveTelegramAccount(cfg, accountId, env = process.env) {
135
190
  accountId: id,
136
191
  enabled,
137
192
  botToken: resolveTelegramBotToken(cfg, id, env),
193
+ proxyUrl: resolveTelegramProxyUrl(cfg, id, env),
138
194
  verbose: slot?.verbose === true,
139
195
  };
140
196
  }
@@ -163,6 +219,29 @@ export function telegramWebhookConfig(cfg, env = process.env) {
163
219
  export function telegramAutoLabelTopics(cfg) {
164
220
  return telegramChannelConfig(cfg)?.autoLabelTopics === true;
165
221
  }
222
+ /**
223
+ * True when live reply-streaming is enabled (`channels.telegram.liveStream`).
224
+ * Default OFF — the adapter delivers one final chunked message as before.
225
+ */
226
+ export function telegramLiveStreamEnabled(cfg) {
227
+ return telegramChannelConfig(cfg)?.liveStream === true;
228
+ }
229
+ /**
230
+ * Resolve the streaming edit throttle in ms. Reads
231
+ * `channels.telegram.streamThrottleMs`; falls back to 1000ms. The draft-stream
232
+ * floors this at 250ms, so a too-small value is harmless.
233
+ */
234
+ export function telegramStreamThrottleMs(cfg) {
235
+ const raw = telegramChannelConfig(cfg)?.streamThrottleMs;
236
+ return typeof raw === "number" && raw > 0 ? raw : 1000;
237
+ }
238
+ /**
239
+ * True when reasoning surfacing is enabled (`channels.telegram.surfaceReasoning`).
240
+ * Default OFF — `<think>` reasoning is stripped from channel replies as today.
241
+ */
242
+ export function telegramSurfaceReasoning(cfg) {
243
+ return telegramChannelConfig(cfg)?.surfaceReasoning === true;
244
+ }
166
245
  /**
167
246
  * Resolve the idle-thread-session TTL in ms, or `null` when unset / disabled.
168
247
  * Accepts a number (ms) or a duration string (`"6h"`, `"30m"`, …). The cron
@@ -1 +1 @@
1
- {"version":3,"file":"account-config.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAErC,6DAA6D;AAC7D,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AA8CxD,+DAA+D;AAC/D,SAAS,qBAAqB,CAAC,GAAkB;IAChD,OAAQ,GAAgE,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;AACjG,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAuB,EAAE,GAAsB;IACvE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,GAAkB;IACxD,OAAO,qBAAqB,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,sBAAsB,CAAC,GAAkB;IACxD,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IACD,0EAA0E;IAC1E,mCAAmC;IACnC,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC;AAED,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,GAAkB,EAAE,SAAiB;IAC9D,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACtC,GAAkB,EAClB,SAAyB,EACzB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC;IACnD,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,sBAAsB,CACrC,GAAkB,EAClB,SAAyB,EACzB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC;IACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,OAAO;QACN,SAAS,EAAE,EAAE;QACb,OAAO;QACP,QAAQ,EAAE,uBAAuB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;KAC/B,CAAC;AACH,CAAC;AAED,sFAAsF;AAEtF,qFAAqF;AACrF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAcjD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACpC,GAAkB,EAClB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,IAAI,GAA0B,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACnG,OAAO;QACN,IAAI;QACJ,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QAC9C,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;KACjD,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CAAC,GAAkB;IACzD,OAAO,qBAAqB,CAAC,GAAG,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAkB;IACzD,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACjH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,MAAM,CAAC;AACnB,CAAC;AAED,OAAO,EACN,UAAU,IAAI,mBAAmB,EACjC,kBAAkB,IAAI,2BAA2B,EACjD,aAAa,IAAI,0BAA0B,GAC3C,CAAC"}
1
+ {"version":3,"file":"account-config.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/account-config.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,12 @@ export interface CreateTelegramAdapterOptions {
50
50
  autoLabelTopics?: boolean;
51
51
  }
52
52
  export declare function createTelegramAdapter(opts?: CreateTelegramAdapterOptions): ChannelAdapter;
53
+ /**
54
+ * Synthesise the agent-facing note for an inbound reaction. The reaction itself
55
+ * carries no text, so the note ("<who> reacted <emoji> to message <id>") is what
56
+ * the central pipeline routes through dispatchTurn so the agent has context.
57
+ */
58
+ export declare function buildReactionNote(emojis: string[], targetMessageId: string, fromName?: string): string;
53
59
  /** Static Telegram capability flags (shared by the legacy adapter + plugin meta). */
54
60
  export declare const TELEGRAM_CAPABILITIES: ChannelCapabilities;
55
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,EACN,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAMxB,KAAK,mBAAmB,EAExB,MAAM,WAAW,CAAC;AAUnB,OAAO,EAAmB,KAAK,mBAAmB,EAA4B,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUtJ,mEAAmE;AACnE,MAAM,WAAW,4BAA4B;IAC5C,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,4BAAiC,GAAG,cAAc,CAkZ7F;AAED,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,mBAUnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtH;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,qFAAqF;IACrF,aAAa,IAAI,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;CACrD;AAgBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,EACN,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAOxB,KAAK,mBAAmB,EAExB,MAAM,WAAW,CAAC;AAiBnB,OAAO,EAAmB,KAAK,mBAAmB,EAA4B,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUtJ,mEAAmE;AACnE,MAAM,WAAW,4BAA4B;IAC5C,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,4BAAiC,GAAG,cAAc,CAsjB7F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAItG;AAED,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,mBAUnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtH;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,qFAAqF;IACrF,aAAa,IAAI,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;CACrD;AAgBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD"}