@spinabot/brigade 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/convex/channels.d.ts +5 -5
- package/convex/schema.d.ts +2 -2
- package/dist/agents/agent-loop.d.ts.map +1 -1
- package/dist/agents/agent-loop.js +27 -4
- package/dist/agents/agent-loop.js.map +1 -1
- package/dist/agents/channels/approval-callback-codec.d.ts +107 -0
- package/dist/agents/channels/approval-callback-codec.d.ts.map +1 -0
- package/dist/agents/channels/approval-callback-codec.js +173 -0
- package/dist/agents/channels/approval-callback-codec.js.map +1 -0
- package/dist/agents/channels/approval-router.d.ts +77 -20
- package/dist/agents/channels/approval-router.d.ts.map +1 -1
- package/dist/agents/channels/approval-router.js +163 -37
- package/dist/agents/channels/approval-router.js.map +1 -1
- package/dist/agents/channels/backoff.d.ts +55 -0
- package/dist/agents/channels/backoff.d.ts.map +1 -0
- package/dist/agents/channels/backoff.js +47 -0
- package/dist/agents/channels/backoff.js.map +1 -0
- package/dist/agents/channels/channel-secrets.d.ts +45 -0
- package/dist/agents/channels/channel-secrets.d.ts.map +1 -0
- package/dist/agents/channels/channel-secrets.js +69 -0
- package/dist/agents/channels/channel-secrets.js.map +1 -0
- package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
- package/dist/agents/channels/inbound-pipeline.js +67 -3
- package/dist/agents/channels/inbound-pipeline.js.map +1 -1
- package/dist/agents/channels/last-sent-message.d.ts +46 -0
- package/dist/agents/channels/last-sent-message.d.ts.map +1 -0
- package/dist/agents/channels/last-sent-message.js +55 -0
- package/dist/agents/channels/last-sent-message.js.map +1 -0
- package/dist/agents/channels/manager.d.ts +52 -0
- package/dist/agents/channels/manager.d.ts.map +1 -1
- package/dist/agents/channels/manager.js +141 -31
- package/dist/agents/channels/manager.js.map +1 -1
- package/dist/agents/channels/plugin-channel-manager-facade.d.ts +13 -2
- package/dist/agents/channels/plugin-channel-manager-facade.d.ts.map +1 -1
- package/dist/agents/channels/plugin-channel-manager-facade.js +21 -0
- package/dist/agents/channels/plugin-channel-manager-facade.js.map +1 -1
- package/dist/agents/channels/sdk.d.ts +426 -0
- package/dist/agents/channels/sdk.d.ts.map +1 -0
- package/dist/agents/channels/sdk.js +274 -0
- package/dist/agents/channels/sdk.js.map +1 -0
- package/dist/agents/channels/telegram/account-config.d.ts +92 -0
- package/dist/agents/channels/telegram/account-config.d.ts.map +1 -0
- package/dist/agents/channels/telegram/account-config.js +192 -0
- package/dist/agents/channels/telegram/account-config.js.map +1 -0
- package/dist/agents/channels/telegram/adapter.d.ts +79 -0
- package/dist/agents/channels/telegram/adapter.d.ts.map +1 -0
- package/dist/agents/channels/telegram/adapter.js +475 -0
- package/dist/agents/channels/telegram/adapter.js.map +1 -0
- package/dist/agents/channels/telegram/allowed-updates.d.ts +44 -0
- package/dist/agents/channels/telegram/allowed-updates.d.ts.map +1 -0
- package/dist/agents/channels/telegram/allowed-updates.js +52 -0
- package/dist/agents/channels/telegram/allowed-updates.js.map +1 -0
- package/dist/agents/channels/telegram/approval-authorize.d.ts +41 -0
- package/dist/agents/channels/telegram/approval-authorize.d.ts.map +1 -0
- package/dist/agents/channels/telegram/approval-authorize.js +69 -0
- package/dist/agents/channels/telegram/approval-authorize.js.map +1 -0
- package/dist/agents/channels/telegram/approval-native.d.ts +68 -0
- package/dist/agents/channels/telegram/approval-native.d.ts.map +1 -0
- package/dist/agents/channels/telegram/approval-native.js +94 -0
- package/dist/agents/channels/telegram/approval-native.js.map +1 -0
- package/dist/agents/channels/telegram/command-menu.d.ts +35 -0
- package/dist/agents/channels/telegram/command-menu.d.ts.map +1 -0
- package/dist/agents/channels/telegram/command-menu.js +59 -0
- package/dist/agents/channels/telegram/command-menu.js.map +1 -0
- package/dist/agents/channels/telegram/connection.d.ts +359 -0
- package/dist/agents/channels/telegram/connection.d.ts.map +1 -0
- package/dist/agents/channels/telegram/connection.js +865 -0
- package/dist/agents/channels/telegram/connection.js.map +1 -0
- package/dist/agents/channels/telegram/format.d.ts +48 -0
- package/dist/agents/channels/telegram/format.d.ts.map +1 -0
- package/dist/agents/channels/telegram/format.js +256 -0
- package/dist/agents/channels/telegram/format.js.map +1 -0
- package/dist/agents/channels/telegram/inbound-extras.d.ts +73 -0
- package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -0
- package/dist/agents/channels/telegram/inbound-extras.js +231 -0
- package/dist/agents/channels/telegram/inbound-extras.js.map +1 -0
- package/dist/agents/channels/telegram/index.d.ts +14 -0
- package/dist/agents/channels/telegram/index.d.ts.map +1 -0
- package/dist/agents/channels/telegram/index.js +14 -0
- package/dist/agents/channels/telegram/index.js.map +1 -0
- package/dist/agents/channels/telegram/media.d.ts +68 -0
- package/dist/agents/channels/telegram/media.d.ts.map +1 -0
- package/dist/agents/channels/telegram/media.js +143 -0
- package/dist/agents/channels/telegram/media.js.map +1 -0
- package/dist/agents/channels/telegram/module.d.ts +15 -0
- package/dist/agents/channels/telegram/module.d.ts.map +1 -0
- package/dist/agents/channels/telegram/module.js +36 -0
- package/dist/agents/channels/telegram/module.js.map +1 -0
- package/dist/agents/channels/telegram/plugin.d.ts +76 -0
- package/dist/agents/channels/telegram/plugin.d.ts.map +1 -0
- package/dist/agents/channels/telegram/plugin.js +314 -0
- package/dist/agents/channels/telegram/plugin.js.map +1 -0
- package/dist/agents/channels/telegram/probe.d.ts +54 -0
- package/dist/agents/channels/telegram/probe.d.ts.map +1 -0
- package/dist/agents/channels/telegram/probe.js +95 -0
- package/dist/agents/channels/telegram/probe.js.map +1 -0
- package/dist/agents/channels/telegram/webhook.d.ts +55 -0
- package/dist/agents/channels/telegram/webhook.d.ts.map +1 -0
- package/dist/agents/channels/telegram/webhook.js +141 -0
- package/dist/agents/channels/telegram/webhook.js.map +1 -0
- package/dist/agents/extensions/modules/index.d.ts.map +1 -1
- package/dist/agents/extensions/modules/index.js +4 -0
- package/dist/agents/extensions/modules/index.js.map +1 -1
- package/dist/agents/extensions/types.d.ts +72 -2
- package/dist/agents/extensions/types.d.ts.map +1 -1
- package/dist/agents/extensions/types.js.map +1 -1
- package/dist/agents/tools/connect-channel-tool.d.ts +86 -0
- package/dist/agents/tools/connect-channel-tool.d.ts.map +1 -0
- package/dist/agents/tools/connect-channel-tool.js +398 -0
- package/dist/agents/tools/connect-channel-tool.js.map +1 -0
- package/dist/agents/tools/message-action-tool.d.ts +67 -0
- package/dist/agents/tools/message-action-tool.d.ts.map +1 -0
- package/dist/agents/tools/message-action-tool.js +216 -0
- package/dist/agents/tools/message-action-tool.js.map +1 -0
- package/dist/agents/tools/registry.d.ts.map +1 -1
- package/dist/agents/tools/registry.js +19 -0
- package/dist/agents/tools/registry.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/channels.d.ts.map +1 -1
- package/dist/cli/commands/channels.js +27 -2
- package/dist/cli/commands/channels.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +77 -27
- package/dist/core/server.js.map +1 -1
- package/dist/cron/service/state.d.ts +10 -0
- package/dist/cron/service/state.d.ts.map +1 -1
- package/dist/cron/service/state.js.map +1 -1
- package/dist/cron/service/timer.d.ts.map +1 -1
- package/dist/cron/service/timer.js +43 -14
- package/dist/cron/service/timer.js.map +1 -1
- package/dist/cron/session-reaper.d.ts +27 -0
- package/dist/cron/session-reaper.d.ts.map +1 -1
- package/dist/cron/session-reaper.js +81 -0
- package/dist/cron/session-reaper.js.map +1 -1
- package/dist/system-prompt/assembler.d.ts +14 -0
- package/dist/system-prompt/assembler.d.ts.map +1 -1
- package/dist/system-prompt/assembler.js +36 -14
- package/dist/system-prompt/assembler.js.map +1 -1
- package/package.json +22 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert markdown-style replies (Brigade agents output this by default) into
|
|
3
|
+
* Telegram's strict HTML message format (`parse_mode: "HTML"`).
|
|
4
|
+
*
|
|
5
|
+
* Telegram's HTML parser accepts ONLY a small tag allow-list — `<b> <i> <u>
|
|
6
|
+
* <s> <code> <pre> <a> <tg-spoiler> <blockquote>` (plus `<pre><code
|
|
7
|
+
* class="language-xx">` for fenced blocks). Everything else must be entity-
|
|
8
|
+
* escaped or Telegram rejects the whole message with `can't parse entities`.
|
|
9
|
+
* Critically, `&`, `<`, `>` in TEXT must be escaped, and `&`, `<`, `>`, `"` in
|
|
10
|
+
* attribute values (the `href`) must be escaped.
|
|
11
|
+
*
|
|
12
|
+
* This is a Brigade-native re-implementation: the reference converter depends on a
|
|
13
|
+
* shared markdown-IR engine Brigade doesn't carry, so the conversion is done
|
|
14
|
+
* here with a small deterministic tokenizer. It models the SHAPE of
|
|
15
|
+
* `whatsapp/format.ts` (markdown in → channel-native formatting out) but emits
|
|
16
|
+
* HTML instead of WhatsApp's sparse markers.
|
|
17
|
+
*
|
|
18
|
+
* Supported conversions:
|
|
19
|
+
* - Fenced code blocks ```lang … ``` → <pre><code class="language-lang">…</code></pre>
|
|
20
|
+
* - Inline `code` → <code>…</code>
|
|
21
|
+
* - **bold** / __bold__ → <b>…</b>
|
|
22
|
+
* - *italic* / _italic_ → <i>…</i>
|
|
23
|
+
* - ~~strike~~ → <s>…</s>
|
|
24
|
+
* - ||spoiler|| → <tg-spoiler>…</tg-spoiler>
|
|
25
|
+
* - [label](url) → <a href="url">label</a>
|
|
26
|
+
* - # headings → <b>heading</b>
|
|
27
|
+
* - `-`/`*`/`+` bullets → • bullet
|
|
28
|
+
* - > blockquote lines → <blockquote>…</blockquote>
|
|
29
|
+
* - | pipe | tables | → flattened "cell | cell" lines
|
|
30
|
+
*
|
|
31
|
+
* Pure / deterministic — no I/O, no globals.
|
|
32
|
+
*/
|
|
33
|
+
/** Escape the three characters Telegram requires escaped in HTML text nodes. */
|
|
34
|
+
export declare function escapeTelegramHtml(text: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Convert agent-style markdown into Telegram HTML. Block structure (fences,
|
|
37
|
+
* headings, bullets, blockquotes, tables) is handled line-by-line; inline
|
|
38
|
+
* markup is handled per-line by {@link renderInlineSpans}.
|
|
39
|
+
*/
|
|
40
|
+
export declare function markdownToTelegramHtml(markdown: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* True when the rendered HTML carries no visible content — only whitespace
|
|
43
|
+
* and/or empty tags. Telegram rejects an empty message body, so the send path
|
|
44
|
+
* falls back to plain text (or skips) when this returns true. Mirrors
|
|
45
|
+
* `telegramHtmlIsEmpty` intent: strip tags + entities, check for any non-space.
|
|
46
|
+
*/
|
|
47
|
+
export declare function telegramHtmlIsEmpty(html: string): boolean;
|
|
48
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AA+HD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+E/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUzD"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert markdown-style replies (Brigade agents output this by default) into
|
|
3
|
+
* Telegram's strict HTML message format (`parse_mode: "HTML"`).
|
|
4
|
+
*
|
|
5
|
+
* Telegram's HTML parser accepts ONLY a small tag allow-list — `<b> <i> <u>
|
|
6
|
+
* <s> <code> <pre> <a> <tg-spoiler> <blockquote>` (plus `<pre><code
|
|
7
|
+
* class="language-xx">` for fenced blocks). Everything else must be entity-
|
|
8
|
+
* escaped or Telegram rejects the whole message with `can't parse entities`.
|
|
9
|
+
* Critically, `&`, `<`, `>` in TEXT must be escaped, and `&`, `<`, `>`, `"` in
|
|
10
|
+
* attribute values (the `href`) must be escaped.
|
|
11
|
+
*
|
|
12
|
+
* This is a Brigade-native re-implementation: the reference converter depends on a
|
|
13
|
+
* shared markdown-IR engine Brigade doesn't carry, so the conversion is done
|
|
14
|
+
* here with a small deterministic tokenizer. It models the SHAPE of
|
|
15
|
+
* `whatsapp/format.ts` (markdown in → channel-native formatting out) but emits
|
|
16
|
+
* HTML instead of WhatsApp's sparse markers.
|
|
17
|
+
*
|
|
18
|
+
* Supported conversions:
|
|
19
|
+
* - Fenced code blocks ```lang … ``` → <pre><code class="language-lang">…</code></pre>
|
|
20
|
+
* - Inline `code` → <code>…</code>
|
|
21
|
+
* - **bold** / __bold__ → <b>…</b>
|
|
22
|
+
* - *italic* / _italic_ → <i>…</i>
|
|
23
|
+
* - ~~strike~~ → <s>…</s>
|
|
24
|
+
* - ||spoiler|| → <tg-spoiler>…</tg-spoiler>
|
|
25
|
+
* - [label](url) → <a href="url">label</a>
|
|
26
|
+
* - # headings → <b>heading</b>
|
|
27
|
+
* - `-`/`*`/`+` bullets → • bullet
|
|
28
|
+
* - > blockquote lines → <blockquote>…</blockquote>
|
|
29
|
+
* - | pipe | tables | → flattened "cell | cell" lines
|
|
30
|
+
*
|
|
31
|
+
* Pure / deterministic — no I/O, no globals.
|
|
32
|
+
*/
|
|
33
|
+
/** Escape the three characters Telegram requires escaped in HTML text nodes. */
|
|
34
|
+
export function escapeTelegramHtml(text) {
|
|
35
|
+
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
36
|
+
}
|
|
37
|
+
/** Escape an attribute value (adds `"` on top of the text escapes). */
|
|
38
|
+
function escapeTelegramHtmlAttr(text) {
|
|
39
|
+
return escapeTelegramHtml(text).replace(/"/g, """);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Render the INLINE span markup of one already-newline-free text run into
|
|
43
|
+
* Telegram HTML. Order matters: inline code is extracted first (its contents
|
|
44
|
+
* are verbatim and must not be re-scanned for emphasis), then links, then the
|
|
45
|
+
* emphasis markers. Plain text between spans is entity-escaped.
|
|
46
|
+
*/
|
|
47
|
+
function renderInlineSpans(text) {
|
|
48
|
+
// Tokenize into a flat list of {kind, ...} so we escape text exactly once and
|
|
49
|
+
// never double-process the verbatim interior of a code span / link label.
|
|
50
|
+
const out = [];
|
|
51
|
+
let i = 0;
|
|
52
|
+
const n = text.length;
|
|
53
|
+
// Accumulate plain text, flushing (escaped) when a span starts.
|
|
54
|
+
let plain = "";
|
|
55
|
+
const flushPlain = () => {
|
|
56
|
+
if (plain) {
|
|
57
|
+
out.push(renderEmphasis(plain));
|
|
58
|
+
plain = "";
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
while (i < n) {
|
|
62
|
+
const ch = text[i];
|
|
63
|
+
// Inline code: `…` — interior is verbatim (escaped, no emphasis).
|
|
64
|
+
if (ch === "`") {
|
|
65
|
+
// Find the closing backtick on the same run.
|
|
66
|
+
const close = text.indexOf("`", i + 1);
|
|
67
|
+
if (close !== -1) {
|
|
68
|
+
flushPlain();
|
|
69
|
+
const inner = text.slice(i + 1, close);
|
|
70
|
+
out.push(`<code>${escapeTelegramHtml(inner)}</code>`);
|
|
71
|
+
i = close + 1;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Markdown link: [label](url)
|
|
76
|
+
if (ch === "[") {
|
|
77
|
+
const link = matchMarkdownLink(text, i);
|
|
78
|
+
if (link) {
|
|
79
|
+
flushPlain();
|
|
80
|
+
// Label may itself contain emphasis; url is attribute-escaped.
|
|
81
|
+
out.push(`<a href="${escapeTelegramHtmlAttr(link.url)}">${renderEmphasis(link.label)}</a>`);
|
|
82
|
+
i = link.end;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
plain += ch;
|
|
87
|
+
i += 1;
|
|
88
|
+
}
|
|
89
|
+
flushPlain();
|
|
90
|
+
return out.join("");
|
|
91
|
+
}
|
|
92
|
+
/** Try to match a `[label](url)` link starting at `start` (the `[`). */
|
|
93
|
+
function matchMarkdownLink(text, start) {
|
|
94
|
+
// Find the matching `]` (no nested brackets supported — rare in agent output).
|
|
95
|
+
const labelEnd = text.indexOf("]", start + 1);
|
|
96
|
+
if (labelEnd === -1)
|
|
97
|
+
return null;
|
|
98
|
+
if (text[labelEnd + 1] !== "(")
|
|
99
|
+
return null;
|
|
100
|
+
const urlEnd = text.indexOf(")", labelEnd + 2);
|
|
101
|
+
if (urlEnd === -1)
|
|
102
|
+
return null;
|
|
103
|
+
const label = text.slice(start + 1, labelEnd);
|
|
104
|
+
const url = text.slice(labelEnd + 2, urlEnd).trim();
|
|
105
|
+
// Only honour http/https/tg/mailto links — anything else stays literal so we
|
|
106
|
+
// never emit an href Telegram will reject (and never linkify a file path).
|
|
107
|
+
if (!/^(https?:\/\/|tg:\/\/|mailto:)/i.test(url))
|
|
108
|
+
return null;
|
|
109
|
+
if (!label)
|
|
110
|
+
return null;
|
|
111
|
+
return { label, url, end: urlEnd + 1 };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Apply emphasis markers (bold / italic / strike / spoiler) to a plain text run
|
|
115
|
+
* and entity-escape everything else. The interior of each emphasis is itself
|
|
116
|
+
* run through emphasis (so `*_x_*` nests), but the recursion bottoms out on
|
|
117
|
+
* plain text which gets escaped exactly once.
|
|
118
|
+
*/
|
|
119
|
+
function renderEmphasis(text) {
|
|
120
|
+
const rules = [
|
|
121
|
+
{ re: /\*\*([^*]+?)\*\*/, open: "<b>", close: "</b>" },
|
|
122
|
+
{ re: /__([^_]+?)__/, open: "<b>", close: "</b>" },
|
|
123
|
+
{ re: /~~([^~]+?)~~/, open: "<s>", close: "</s>" },
|
|
124
|
+
{ re: /\|\|([^|]+?)\|\|/, open: "<tg-spoiler>", close: "</tg-spoiler>" },
|
|
125
|
+
// Single-char italics LAST so they don't eat the doubled forms above.
|
|
126
|
+
{ re: /\*([^*\n]+?)\*/, open: "<i>", close: "</i>" },
|
|
127
|
+
{ re: /(?<![A-Za-z0-9_])_([^_\n]+?)_(?![A-Za-z0-9_])/, open: "<i>", close: "</i>" },
|
|
128
|
+
];
|
|
129
|
+
for (const rule of rules) {
|
|
130
|
+
const m = rule.re.exec(text);
|
|
131
|
+
if (m && m.index >= 0) {
|
|
132
|
+
const before = text.slice(0, m.index);
|
|
133
|
+
const inner = m[1] ?? "";
|
|
134
|
+
const after = text.slice(m.index + m[0].length);
|
|
135
|
+
// `before` is plain (escape it), `inner` recurses, `after` recurses.
|
|
136
|
+
return escapeTelegramHtml(before) + rule.open + renderEmphasis(inner) + rule.close + renderEmphasis(after);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// No markers left — pure text.
|
|
140
|
+
return escapeTelegramHtml(text);
|
|
141
|
+
}
|
|
142
|
+
/** Render a markdown pipe-table block as flat "cell | cell" HTML lines. */
|
|
143
|
+
function renderTableBlock(block) {
|
|
144
|
+
const rows = [];
|
|
145
|
+
for (const row of block) {
|
|
146
|
+
// Drop the separator row (`| --- | :--: |`).
|
|
147
|
+
if (/^\s*\|?[\s|:-]+\|?\s*$/.test(row))
|
|
148
|
+
continue;
|
|
149
|
+
const cells = row
|
|
150
|
+
.trim()
|
|
151
|
+
.replace(/^\||\|$/g, "")
|
|
152
|
+
.split("|")
|
|
153
|
+
.map((c) => c.trim())
|
|
154
|
+
.filter(Boolean);
|
|
155
|
+
if (cells.length)
|
|
156
|
+
rows.push(cells.map((c) => renderInlineSpans(c)).join(" | "));
|
|
157
|
+
}
|
|
158
|
+
return rows.join("\n");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Convert agent-style markdown into Telegram HTML. Block structure (fences,
|
|
162
|
+
* headings, bullets, blockquotes, tables) is handled line-by-line; inline
|
|
163
|
+
* markup is handled per-line by {@link renderInlineSpans}.
|
|
164
|
+
*/
|
|
165
|
+
export function markdownToTelegramHtml(markdown) {
|
|
166
|
+
if (!markdown)
|
|
167
|
+
return "";
|
|
168
|
+
const lines = markdown.split("\n");
|
|
169
|
+
const out = [];
|
|
170
|
+
let i = 0;
|
|
171
|
+
const n = lines.length;
|
|
172
|
+
while (i < n) {
|
|
173
|
+
const line = lines[i] ?? "";
|
|
174
|
+
// Fenced code block: ```lang … ```
|
|
175
|
+
const fenceOpen = /^\s*```(.*)$/.exec(line);
|
|
176
|
+
if (fenceOpen) {
|
|
177
|
+
const lang = (fenceOpen[1] ?? "").trim();
|
|
178
|
+
const body = [];
|
|
179
|
+
i += 1;
|
|
180
|
+
let closed = false;
|
|
181
|
+
while (i < n) {
|
|
182
|
+
const inner = lines[i] ?? "";
|
|
183
|
+
if (/^\s*```\s*$/.test(inner)) {
|
|
184
|
+
closed = true;
|
|
185
|
+
i += 1;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
body.push(inner);
|
|
189
|
+
i += 1;
|
|
190
|
+
}
|
|
191
|
+
void closed; // an unterminated fence still renders what we captured
|
|
192
|
+
const langAttr = lang && /^[A-Za-z0-9+#._-]+$/.test(lang) ? ` class="language-${escapeTelegramHtmlAttr(lang)}"` : "";
|
|
193
|
+
out.push(`<pre><code${langAttr}>${escapeTelegramHtml(body.join("\n"))}</code></pre>`);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Pipe-table block: ≥2 contiguous lines that start+end with `|`.
|
|
197
|
+
if (/^\s*\|.*\|\s*$/.test(line)) {
|
|
198
|
+
const start = i;
|
|
199
|
+
while (i < n && /^\s*\|.*\|\s*$/.test(lines[i] ?? ""))
|
|
200
|
+
i += 1;
|
|
201
|
+
if (i - start >= 2) {
|
|
202
|
+
out.push(renderTableBlock(lines.slice(start, i)));
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
// A lone pipe line isn't a table — fall through to inline rendering.
|
|
206
|
+
i = start;
|
|
207
|
+
}
|
|
208
|
+
// ATX heading: # … → bold line.
|
|
209
|
+
const heading = /^(#{1,6})\s+(.+?)\s*$/.exec(line);
|
|
210
|
+
if (heading) {
|
|
211
|
+
out.push(`<b>${renderInlineSpans(heading[2] ?? "")}</b>`);
|
|
212
|
+
i += 1;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
// Blockquote: one or more leading `> ` lines collapse into a <blockquote>.
|
|
216
|
+
if (/^\s*>\s?/.test(line)) {
|
|
217
|
+
const quoted = [];
|
|
218
|
+
while (i < n && /^\s*>\s?/.test(lines[i] ?? "")) {
|
|
219
|
+
quoted.push((lines[i] ?? "").replace(/^\s*>\s?/, ""));
|
|
220
|
+
i += 1;
|
|
221
|
+
}
|
|
222
|
+
out.push(`<blockquote>${renderInlineSpans(quoted.join("\n"))}</blockquote>`);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
// Bullet list item: -, *, + → "• ".
|
|
226
|
+
const bullet = /^(\s*)[-*+]\s+(.*)$/.exec(line);
|
|
227
|
+
if (bullet) {
|
|
228
|
+
out.push(`${bullet[1] ?? ""}• ${renderInlineSpans(bullet[2] ?? "")}`);
|
|
229
|
+
i += 1;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
// Plain line — render inline markup + escape.
|
|
233
|
+
out.push(renderInlineSpans(line));
|
|
234
|
+
i += 1;
|
|
235
|
+
}
|
|
236
|
+
return out.join("\n");
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* True when the rendered HTML carries no visible content — only whitespace
|
|
240
|
+
* and/or empty tags. Telegram rejects an empty message body, so the send path
|
|
241
|
+
* falls back to plain text (or skips) when this returns true. Mirrors
|
|
242
|
+
* `telegramHtmlIsEmpty` intent: strip tags + entities, check for any non-space.
|
|
243
|
+
*/
|
|
244
|
+
export function telegramHtmlIsEmpty(html) {
|
|
245
|
+
if (!html)
|
|
246
|
+
return true;
|
|
247
|
+
// Drop tags, then decode the handful of entities we emit, then trim.
|
|
248
|
+
const withoutTags = html.replace(/<[^>]*>/g, "");
|
|
249
|
+
const decoded = withoutTags
|
|
250
|
+
.replace(/&/g, "&")
|
|
251
|
+
.replace(/</g, "<")
|
|
252
|
+
.replace(/>/g, ">")
|
|
253
|
+
.replace(/"/g, '"');
|
|
254
|
+
return decoded.trim().length === 0;
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure extractors that turn a grammY `Message` into the normalized fields
|
|
3
|
+
* Brigade's `InboundMessage` carries. No network, no side effects — every
|
|
4
|
+
* function here is deterministic over its `Message` argument so they're trivial
|
|
5
|
+
* to unit-test without a live bot.
|
|
6
|
+
*
|
|
7
|
+
* The text / mention / media-detection logic is ported nearly verbatim from
|
|
8
|
+
* the reference Telegram extension (`bot/body-helpers.ts` +
|
|
9
|
+
* `bot-handlers.media.ts`); only brand tokens and the IR-engine dependency were
|
|
10
|
+
* scrubbed. Brigade's CENTRAL inbound pipeline owns the actual ACL / mention /
|
|
11
|
+
* routing decision — these helpers only surface the raw signals it reads
|
|
12
|
+
* (`mentions`, `threadId`, `replyTo`, chat type).
|
|
13
|
+
*/
|
|
14
|
+
import type { Message } from "@grammyjs/types";
|
|
15
|
+
import type { InboundReplyContext } from "../sdk.js";
|
|
16
|
+
/** Telegram message entity (mention / link / etc.). */
|
|
17
|
+
type TelegramTextEntity = NonNullable<Message["entities"]>[number];
|
|
18
|
+
/**
|
|
19
|
+
* The text + entities a message carries. Caption-bearing media surfaces its
|
|
20
|
+
* caption (and `caption_entities`) as the text. Empty text means no entities.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getTelegramTextParts(msg: Pick<Message, "text" | "caption" | "entities" | "caption_entities">): {
|
|
23
|
+
text: string;
|
|
24
|
+
entities: TelegramTextEntity[];
|
|
25
|
+
};
|
|
26
|
+
/** Extract the agent-facing plain text (caption-aware + text_link-expanded). */
|
|
27
|
+
export declare function extractTelegramText(msg: Message): string;
|
|
28
|
+
/** Telegram chat kind → Brigade chat type. private → direct; group/supergroup → group. */
|
|
29
|
+
export declare function telegramChatType(msg: Message): "direct" | "group";
|
|
30
|
+
/** Forum-topic / thread id as a string, when the message belongs to one. */
|
|
31
|
+
export declare function telegramThreadId(msg: Message): string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Channel-native ids of accounts addressed in this message. Brigade's central
|
|
34
|
+
* group ACL treats a group message as "addressed to the bot" when the bot's
|
|
35
|
+
* own id appears in `mentions`; without this a group message never reaches the
|
|
36
|
+
* agent. So when the bot's own `@username` is mentioned (as a `mention` entity
|
|
37
|
+
* OR a standalone `@username` in the text), we surface the bot's NUMERIC id
|
|
38
|
+
* (passed in from getMe) — that's the stable handle the pipeline matches
|
|
39
|
+
* against the linked self id.
|
|
40
|
+
*
|
|
41
|
+
* Other users' `text_mention` entities (which carry a real `user.id`) are also
|
|
42
|
+
* surfaced so the pipeline can see who else was tagged. Plain `@username`
|
|
43
|
+
* mentions of OTHER users are NOT resolvable to a numeric id from the message
|
|
44
|
+
* alone (Telegram doesn't include their id), so they're dropped rather than
|
|
45
|
+
* minting a fake id.
|
|
46
|
+
*
|
|
47
|
+
* @param botUserId the bot's own numeric id (from getMe) as a string, used as
|
|
48
|
+
* the surfaced id when the bot is @-mentioned.
|
|
49
|
+
* @param botUsername the bot's own @username (without `@`), lower-cased match.
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractTelegramMentions(msg: Message, botUsername?: string, botUserId?: string): string[];
|
|
52
|
+
/** Reply-context (what message this inbound quotes), when it's a reply. */
|
|
53
|
+
export declare function extractTelegramReplyContext(msg: Message): InboundReplyContext | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Cheap presence probe — does this message carry a downloadable media envelope?
|
|
56
|
+
* Walks the same fields as the downloader but never touches the network, so the
|
|
57
|
+
* connection layer can DEFER the actual download until AFTER the central access
|
|
58
|
+
* gate admits the sender (mirrors WhatsApp's deferred-media discipline). Ported
|
|
59
|
+
* from the reference `bot-handlers.media.ts` `hasInboundMedia`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function hasInboundMedia(msg: Message): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* The `file_id` of the primary downloadable attachment (largest photo size /
|
|
64
|
+
* the single video / document / etc.). Ported from the reference
|
|
65
|
+
* `resolveInboundMediaFileId`. Returns undefined for a text-only message.
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveInboundMediaFileId(msg: Message): string | undefined;
|
|
68
|
+
/** The Brigade media-kind of the primary attachment, for the `InboundMediaAttachment.kind`. */
|
|
69
|
+
export declare function resolveInboundMediaKind(msg: Message): "image" | "video" | "audio" | "voice" | "document" | "sticker" | undefined;
|
|
70
|
+
/** A short display name for the sender (`First Last` or `@username`). */
|
|
71
|
+
export declare function buildTelegramSenderName(msg: Message): string | undefined;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=inbound-extras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound-extras.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/telegram/inbound-extras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,uDAAuD;AACvD,KAAK,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAwBnE;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,kBAAkB,CAAC,GACtE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAIlD;AAwBD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGxD;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAGjE;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGjE;AA0BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,OAAO,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAwCV;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CASzF;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU1E;AAED,+FAA+F;AAC/F,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,OAAO,GACV,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAQ5E;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMxE"}
|