@spinabot/brigade 1.3.2 → 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.
- package/README.md +54 -10
- package/convex/config.d.ts +2 -2
- package/convex/extensions.d.ts +2 -2
- package/convex/logs.d.ts +2 -2
- package/convex/memory.d.ts +7 -7
- package/convex/messages.d.ts +4 -4
- package/convex/schema.d.ts +17 -17
- package/convex/subagents.d.ts +12 -12
- package/dist/agents/agent-loop.d.ts +1 -0
- package/dist/agents/agent-loop.d.ts.map +1 -1
- package/dist/agents/agent-loop.js +1 -1
- package/dist/agents/agent-loop.js.map +1 -1
- package/dist/agents/channels/access-control/format-allow-from.d.ts +50 -0
- package/dist/agents/channels/access-control/format-allow-from.d.ts.map +1 -0
- package/dist/agents/channels/access-control/format-allow-from.js +64 -0
- package/dist/agents/channels/access-control/format-allow-from.js.map +1 -0
- package/dist/agents/channels/access-control/index.d.ts +2 -1
- package/dist/agents/channels/access-control/index.d.ts.map +1 -1
- package/dist/agents/channels/access-control/index.js +2 -1
- package/dist/agents/channels/access-control/index.js.map +1 -1
- package/dist/agents/channels/access-control/store.d.ts +15 -0
- package/dist/agents/channels/access-control/store.d.ts.map +1 -1
- package/dist/agents/channels/access-control/store.js +44 -1
- package/dist/agents/channels/access-control/store.js.map +1 -1
- package/dist/agents/channels/bundled-channel-metas.d.ts +26 -0
- package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -0
- package/dist/agents/channels/bundled-channel-metas.js +44 -0
- package/dist/agents/channels/bundled-channel-metas.js.map +1 -0
- package/dist/agents/channels/channel-messaging-registry.d.ts +130 -0
- package/dist/agents/channels/channel-messaging-registry.d.ts.map +1 -0
- package/dist/agents/channels/channel-messaging-registry.js +211 -0
- package/dist/agents/channels/channel-messaging-registry.js.map +1 -0
- package/dist/agents/channels/channel-meta-registry.d.ts +60 -0
- package/dist/agents/channels/channel-meta-registry.d.ts.map +1 -0
- package/dist/agents/channels/channel-meta-registry.js +128 -0
- package/dist/agents/channels/channel-meta-registry.js.map +1 -0
- package/dist/agents/channels/channel-security-registry.d.ts +138 -0
- package/dist/agents/channels/channel-security-registry.d.ts.map +1 -0
- package/dist/agents/channels/channel-security-registry.js +265 -0
- package/dist/agents/channels/channel-security-registry.js.map +1 -0
- package/dist/agents/channels/exposure.d.ts +44 -0
- package/dist/agents/channels/exposure.d.ts.map +1 -0
- package/dist/agents/channels/exposure.js +48 -0
- package/dist/agents/channels/exposure.js.map +1 -0
- package/dist/agents/channels/general-callback.d.ts +25 -0
- package/dist/agents/channels/general-callback.d.ts.map +1 -0
- package/dist/agents/channels/general-callback.js +31 -0
- package/dist/agents/channels/general-callback.js.map +1 -0
- package/dist/agents/channels/inbound-pipeline.d.ts +9 -0
- package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
- package/dist/agents/channels/inbound-pipeline.js +429 -39
- package/dist/agents/channels/inbound-pipeline.js.map +1 -1
- package/dist/agents/channels/markdown-capability.d.ts +44 -0
- package/dist/agents/channels/markdown-capability.d.ts.map +1 -0
- package/dist/agents/channels/markdown-capability.js +66 -0
- package/dist/agents/channels/markdown-capability.js.map +1 -0
- package/dist/agents/channels/sdk.d.ts +170 -10
- package/dist/agents/channels/sdk.d.ts.map +1 -1
- package/dist/agents/channels/sdk.js +138 -6
- package/dist/agents/channels/sdk.js.map +1 -1
- package/dist/agents/channels/telegram/account-config.d.ts +41 -0
- package/dist/agents/channels/telegram/account-config.d.ts.map +1 -1
- package/dist/agents/channels/telegram/account-config.js +79 -0
- package/dist/agents/channels/telegram/account-config.js.map +1 -1
- package/dist/agents/channels/telegram/adapter.d.ts +6 -0
- package/dist/agents/channels/telegram/adapter.d.ts.map +1 -1
- package/dist/agents/channels/telegram/adapter.js +178 -6
- package/dist/agents/channels/telegram/adapter.js.map +1 -1
- package/dist/agents/channels/telegram/allowed-updates.d.ts +14 -5
- package/dist/agents/channels/telegram/allowed-updates.d.ts.map +1 -1
- package/dist/agents/channels/telegram/allowed-updates.js +8 -4
- package/dist/agents/channels/telegram/allowed-updates.js.map +1 -1
- package/dist/agents/channels/telegram/connection.d.ts +108 -1
- package/dist/agents/channels/telegram/connection.d.ts.map +1 -1
- package/dist/agents/channels/telegram/connection.js +219 -3
- package/dist/agents/channels/telegram/connection.js.map +1 -1
- package/dist/agents/channels/telegram/draft-stream.d.ts +98 -0
- package/dist/agents/channels/telegram/draft-stream.d.ts.map +1 -0
- package/dist/agents/channels/telegram/draft-stream.js +222 -0
- package/dist/agents/channels/telegram/draft-stream.js.map +1 -0
- package/dist/agents/channels/telegram/inbound-extras.d.ts +10 -1
- package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -1
- package/dist/agents/channels/telegram/inbound-extras.js +66 -0
- package/dist/agents/channels/telegram/inbound-extras.js.map +1 -1
- package/dist/agents/channels/telegram/inline-keyboard.d.ts +36 -0
- package/dist/agents/channels/telegram/inline-keyboard.d.ts.map +1 -0
- package/dist/agents/channels/telegram/inline-keyboard.js +62 -0
- package/dist/agents/channels/telegram/inline-keyboard.js.map +1 -0
- package/dist/agents/channels/telegram/plugin.d.ts.map +1 -1
- package/dist/agents/channels/telegram/plugin.js +7 -11
- package/dist/agents/channels/telegram/plugin.js.map +1 -1
- package/dist/agents/channels/telegram/reasoning-lane.d.ts +41 -0
- package/dist/agents/channels/telegram/reasoning-lane.d.ts.map +1 -0
- package/dist/agents/channels/telegram/reasoning-lane.js +67 -0
- package/dist/agents/channels/telegram/reasoning-lane.js.map +1 -0
- package/dist/agents/channels/telegram/socks-dispatcher.d.ts +32 -0
- package/dist/agents/channels/telegram/socks-dispatcher.d.ts.map +1 -0
- package/dist/agents/channels/telegram/socks-dispatcher.js +97 -0
- package/dist/agents/channels/telegram/socks-dispatcher.js.map +1 -0
- package/dist/agents/channels/types.adapters.d.ts +137 -4
- package/dist/agents/channels/types.adapters.d.ts.map +1 -1
- package/dist/agents/channels/types.adapters.js +2 -2
- package/dist/agents/channels/types.core.d.ts +26 -2
- package/dist/agents/channels/types.core.d.ts.map +1 -1
- package/dist/agents/channels/types.plugin.d.ts +25 -7
- package/dist/agents/channels/types.plugin.d.ts.map +1 -1
- package/dist/agents/channels/types.plugin.js +6 -5
- package/dist/agents/channels/types.plugin.js.map +1 -1
- package/dist/agents/channels/whatsapp/adapter.d.ts +8 -0
- package/dist/agents/channels/whatsapp/adapter.d.ts.map +1 -1
- package/dist/agents/channels/whatsapp/adapter.js +7 -4
- package/dist/agents/channels/whatsapp/adapter.js.map +1 -1
- package/dist/agents/channels/whatsapp/connection.d.ts +24 -2
- package/dist/agents/channels/whatsapp/connection.d.ts.map +1 -1
- package/dist/agents/channels/whatsapp/connection.js +26 -5
- package/dist/agents/channels/whatsapp/connection.js.map +1 -1
- package/dist/agents/channels/whatsapp/plugin.d.ts.map +1 -1
- package/dist/agents/channels/whatsapp/plugin.js +6 -10
- package/dist/agents/channels/whatsapp/plugin.js.map +1 -1
- package/dist/agents/extensions/activation-planner.d.ts +125 -0
- package/dist/agents/extensions/activation-planner.d.ts.map +1 -0
- package/dist/agents/extensions/activation-planner.js +221 -0
- package/dist/agents/extensions/activation-planner.js.map +1 -0
- package/dist/agents/extensions/diagnose.d.ts +84 -0
- package/dist/agents/extensions/diagnose.d.ts.map +1 -0
- package/dist/agents/extensions/diagnose.js +123 -0
- package/dist/agents/extensions/diagnose.js.map +1 -0
- package/dist/agents/extensions/discovery.d.ts +85 -7
- package/dist/agents/extensions/discovery.d.ts.map +1 -1
- package/dist/agents/extensions/discovery.js +200 -15
- package/dist/agents/extensions/discovery.js.map +1 -1
- package/dist/agents/extensions/index.d.ts +3 -2
- package/dist/agents/extensions/index.d.ts.map +1 -1
- package/dist/agents/extensions/index.js +3 -2
- package/dist/agents/extensions/index.js.map +1 -1
- package/dist/agents/extensions/install-scan.d.ts +63 -0
- package/dist/agents/extensions/install-scan.d.ts.map +1 -0
- package/dist/agents/extensions/install-scan.js +201 -0
- package/dist/agents/extensions/install-scan.js.map +1 -0
- package/dist/agents/extensions/install.d.ts +135 -0
- package/dist/agents/extensions/install.d.ts.map +1 -0
- package/dist/agents/extensions/install.js +414 -0
- package/dist/agents/extensions/install.js.map +1 -0
- package/dist/agents/extensions/loader.d.ts +13 -2
- package/dist/agents/extensions/loader.d.ts.map +1 -1
- package/dist/agents/extensions/loader.js +126 -13
- package/dist/agents/extensions/loader.js.map +1 -1
- package/dist/agents/extensions/registry.d.ts +109 -0
- package/dist/agents/extensions/registry.d.ts.map +1 -1
- package/dist/agents/extensions/registry.js +172 -0
- package/dist/agents/extensions/registry.js.map +1 -1
- package/dist/agents/extensions/sdk-alias.d.ts +45 -0
- package/dist/agents/extensions/sdk-alias.d.ts.map +1 -0
- package/dist/agents/extensions/sdk-alias.js +94 -0
- package/dist/agents/extensions/sdk-alias.js.map +1 -0
- package/dist/agents/extensions/types.d.ts +155 -1
- package/dist/agents/extensions/types.d.ts.map +1 -1
- package/dist/agents/extensions/types.js.map +1 -1
- package/dist/agents/tools/composio-tool.d.ts +9 -1
- package/dist/agents/tools/composio-tool.d.ts.map +1 -1
- package/dist/agents/tools/composio-tool.js +68 -4
- package/dist/agents/tools/composio-tool.js.map +1 -1
- package/dist/agents/tools/message-action-tool.d.ts +6 -1
- package/dist/agents/tools/message-action-tool.d.ts.map +1 -1
- package/dist/agents/tools/message-action-tool.js +52 -2
- package/dist/agents/tools/message-action-tool.js.map +1 -1
- package/dist/agents/tools/send-message-tool.d.ts +1 -0
- package/dist/agents/tools/send-message-tool.d.ts.map +1 -1
- package/dist/agents/tools/send-message-tool.js +56 -1
- package/dist/agents/tools/send-message-tool.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/channel-sdk.d.ts +28 -0
- package/dist/channel-sdk.d.ts.map +1 -0
- package/dist/channel-sdk.js +28 -0
- package/dist/channel-sdk.js.map +1 -0
- package/dist/cli/commands/channels.d.ts.map +1 -1
- package/dist/cli/commands/channels.js +8 -8
- package/dist/cli/commands/channels.js.map +1 -1
- package/dist/cli/commands/connect.d.ts +8 -11
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +157 -17
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +64 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/extensions.d.ts +46 -0
- package/dist/cli/commands/extensions.d.ts.map +1 -0
- package/dist/cli/commands/extensions.js +578 -0
- package/dist/cli/commands/extensions.js.map +1 -0
- package/dist/cli/commands/pairing.d.ts.map +1 -1
- package/dist/cli/commands/pairing.js +16 -2
- package/dist/cli/commands/pairing.js.map +1 -1
- package/dist/cli/commands/update.d.ts +17 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +104 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/program/build-program.d.ts.map +1 -1
- package/dist/cli/program/build-program.js +113 -0
- package/dist/cli/program/build-program.js.map +1 -1
- package/dist/config/paths.d.ts +1 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +9 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +134 -2
- package/dist/core/server.js.map +1 -1
- package/dist/protocol.d.ts +25 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/system-prompt/assembler.d.ts.map +1 -1
- package/dist/system-prompt/assembler.js +17 -0
- package/dist/system-prompt/assembler.js.map +1 -1
- package/dist/system-prompt/identity-defaults.d.ts +28 -0
- package/dist/system-prompt/identity-defaults.d.ts.map +1 -1
- package/dist/system-prompt/identity-defaults.js +47 -0
- package/dist/system-prompt/identity-defaults.js.map +1 -1
- package/dist/ui/editor.d.ts.map +1 -1
- package/dist/ui/editor.js +1 -0
- package/dist/ui/editor.js.map +1 -1
- package/dist/version.d.ts +4 -3
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +27 -5
- package/dist/version.js.map +1 -1
- package/package.json +21 -4
- package/scripts/build-done.mjs +11 -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
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
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
|
|
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;
|
|
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;
|
|
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,
|
|
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,CAijB7F;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"}
|