@spinabot/brigade 1.1.0 → 1.2.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 (139) hide show
  1. package/convex/channels.d.ts +5 -5
  2. package/convex/schema.d.ts +2 -2
  3. package/dist/agents/agent-loop.d.ts.map +1 -1
  4. package/dist/agents/agent-loop.js +27 -4
  5. package/dist/agents/agent-loop.js.map +1 -1
  6. package/dist/agents/channels/approval-callback-codec.d.ts +107 -0
  7. package/dist/agents/channels/approval-callback-codec.d.ts.map +1 -0
  8. package/dist/agents/channels/approval-callback-codec.js +173 -0
  9. package/dist/agents/channels/approval-callback-codec.js.map +1 -0
  10. package/dist/agents/channels/approval-router.d.ts +77 -20
  11. package/dist/agents/channels/approval-router.d.ts.map +1 -1
  12. package/dist/agents/channels/approval-router.js +163 -37
  13. package/dist/agents/channels/approval-router.js.map +1 -1
  14. package/dist/agents/channels/backoff.d.ts +55 -0
  15. package/dist/agents/channels/backoff.d.ts.map +1 -0
  16. package/dist/agents/channels/backoff.js +47 -0
  17. package/dist/agents/channels/backoff.js.map +1 -0
  18. package/dist/agents/channels/channel-secrets.d.ts +45 -0
  19. package/dist/agents/channels/channel-secrets.d.ts.map +1 -0
  20. package/dist/agents/channels/channel-secrets.js +69 -0
  21. package/dist/agents/channels/channel-secrets.js.map +1 -0
  22. package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
  23. package/dist/agents/channels/inbound-pipeline.js +67 -3
  24. package/dist/agents/channels/inbound-pipeline.js.map +1 -1
  25. package/dist/agents/channels/last-sent-message.d.ts +46 -0
  26. package/dist/agents/channels/last-sent-message.d.ts.map +1 -0
  27. package/dist/agents/channels/last-sent-message.js +55 -0
  28. package/dist/agents/channels/last-sent-message.js.map +1 -0
  29. package/dist/agents/channels/manager.d.ts +52 -0
  30. package/dist/agents/channels/manager.d.ts.map +1 -1
  31. package/dist/agents/channels/manager.js +141 -31
  32. package/dist/agents/channels/manager.js.map +1 -1
  33. package/dist/agents/channels/plugin-channel-manager-facade.d.ts +13 -2
  34. package/dist/agents/channels/plugin-channel-manager-facade.d.ts.map +1 -1
  35. package/dist/agents/channels/plugin-channel-manager-facade.js +21 -0
  36. package/dist/agents/channels/plugin-channel-manager-facade.js.map +1 -1
  37. package/dist/agents/channels/sdk.d.ts +426 -0
  38. package/dist/agents/channels/sdk.d.ts.map +1 -0
  39. package/dist/agents/channels/sdk.js +274 -0
  40. package/dist/agents/channels/sdk.js.map +1 -0
  41. package/dist/agents/channels/telegram/account-config.d.ts +92 -0
  42. package/dist/agents/channels/telegram/account-config.d.ts.map +1 -0
  43. package/dist/agents/channels/telegram/account-config.js +192 -0
  44. package/dist/agents/channels/telegram/account-config.js.map +1 -0
  45. package/dist/agents/channels/telegram/adapter.d.ts +79 -0
  46. package/dist/agents/channels/telegram/adapter.d.ts.map +1 -0
  47. package/dist/agents/channels/telegram/adapter.js +475 -0
  48. package/dist/agents/channels/telegram/adapter.js.map +1 -0
  49. package/dist/agents/channels/telegram/allowed-updates.d.ts +44 -0
  50. package/dist/agents/channels/telegram/allowed-updates.d.ts.map +1 -0
  51. package/dist/agents/channels/telegram/allowed-updates.js +52 -0
  52. package/dist/agents/channels/telegram/allowed-updates.js.map +1 -0
  53. package/dist/agents/channels/telegram/approval-authorize.d.ts +41 -0
  54. package/dist/agents/channels/telegram/approval-authorize.d.ts.map +1 -0
  55. package/dist/agents/channels/telegram/approval-authorize.js +69 -0
  56. package/dist/agents/channels/telegram/approval-authorize.js.map +1 -0
  57. package/dist/agents/channels/telegram/approval-native.d.ts +68 -0
  58. package/dist/agents/channels/telegram/approval-native.d.ts.map +1 -0
  59. package/dist/agents/channels/telegram/approval-native.js +94 -0
  60. package/dist/agents/channels/telegram/approval-native.js.map +1 -0
  61. package/dist/agents/channels/telegram/command-menu.d.ts +35 -0
  62. package/dist/agents/channels/telegram/command-menu.d.ts.map +1 -0
  63. package/dist/agents/channels/telegram/command-menu.js +59 -0
  64. package/dist/agents/channels/telegram/command-menu.js.map +1 -0
  65. package/dist/agents/channels/telegram/connection.d.ts +359 -0
  66. package/dist/agents/channels/telegram/connection.d.ts.map +1 -0
  67. package/dist/agents/channels/telegram/connection.js +865 -0
  68. package/dist/agents/channels/telegram/connection.js.map +1 -0
  69. package/dist/agents/channels/telegram/format.d.ts +48 -0
  70. package/dist/agents/channels/telegram/format.d.ts.map +1 -0
  71. package/dist/agents/channels/telegram/format.js +256 -0
  72. package/dist/agents/channels/telegram/format.js.map +1 -0
  73. package/dist/agents/channels/telegram/inbound-extras.d.ts +73 -0
  74. package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -0
  75. package/dist/agents/channels/telegram/inbound-extras.js +231 -0
  76. package/dist/agents/channels/telegram/inbound-extras.js.map +1 -0
  77. package/dist/agents/channels/telegram/index.d.ts +14 -0
  78. package/dist/agents/channels/telegram/index.d.ts.map +1 -0
  79. package/dist/agents/channels/telegram/index.js +14 -0
  80. package/dist/agents/channels/telegram/index.js.map +1 -0
  81. package/dist/agents/channels/telegram/media.d.ts +68 -0
  82. package/dist/agents/channels/telegram/media.d.ts.map +1 -0
  83. package/dist/agents/channels/telegram/media.js +143 -0
  84. package/dist/agents/channels/telegram/media.js.map +1 -0
  85. package/dist/agents/channels/telegram/module.d.ts +15 -0
  86. package/dist/agents/channels/telegram/module.d.ts.map +1 -0
  87. package/dist/agents/channels/telegram/module.js +36 -0
  88. package/dist/agents/channels/telegram/module.js.map +1 -0
  89. package/dist/agents/channels/telegram/plugin.d.ts +76 -0
  90. package/dist/agents/channels/telegram/plugin.d.ts.map +1 -0
  91. package/dist/agents/channels/telegram/plugin.js +314 -0
  92. package/dist/agents/channels/telegram/plugin.js.map +1 -0
  93. package/dist/agents/channels/telegram/probe.d.ts +54 -0
  94. package/dist/agents/channels/telegram/probe.d.ts.map +1 -0
  95. package/dist/agents/channels/telegram/probe.js +95 -0
  96. package/dist/agents/channels/telegram/probe.js.map +1 -0
  97. package/dist/agents/channels/telegram/webhook.d.ts +55 -0
  98. package/dist/agents/channels/telegram/webhook.d.ts.map +1 -0
  99. package/dist/agents/channels/telegram/webhook.js +141 -0
  100. package/dist/agents/channels/telegram/webhook.js.map +1 -0
  101. package/dist/agents/extensions/modules/index.d.ts.map +1 -1
  102. package/dist/agents/extensions/modules/index.js +4 -0
  103. package/dist/agents/extensions/modules/index.js.map +1 -1
  104. package/dist/agents/extensions/types.d.ts +72 -2
  105. package/dist/agents/extensions/types.d.ts.map +1 -1
  106. package/dist/agents/extensions/types.js.map +1 -1
  107. package/dist/agents/tools/connect-channel-tool.d.ts +86 -0
  108. package/dist/agents/tools/connect-channel-tool.d.ts.map +1 -0
  109. package/dist/agents/tools/connect-channel-tool.js +398 -0
  110. package/dist/agents/tools/connect-channel-tool.js.map +1 -0
  111. package/dist/agents/tools/message-action-tool.d.ts +67 -0
  112. package/dist/agents/tools/message-action-tool.d.ts.map +1 -0
  113. package/dist/agents/tools/message-action-tool.js +216 -0
  114. package/dist/agents/tools/message-action-tool.js.map +1 -0
  115. package/dist/agents/tools/registry.d.ts.map +1 -1
  116. package/dist/agents/tools/registry.js +19 -0
  117. package/dist/agents/tools/registry.js.map +1 -1
  118. package/dist/buildstamp.json +1 -1
  119. package/dist/cli/commands/channels.d.ts.map +1 -1
  120. package/dist/cli/commands/channels.js +27 -2
  121. package/dist/cli/commands/channels.js.map +1 -1
  122. package/dist/core/server.d.ts.map +1 -1
  123. package/dist/core/server.js +77 -27
  124. package/dist/core/server.js.map +1 -1
  125. package/dist/cron/service/state.d.ts +10 -0
  126. package/dist/cron/service/state.d.ts.map +1 -1
  127. package/dist/cron/service/state.js.map +1 -1
  128. package/dist/cron/service/timer.d.ts.map +1 -1
  129. package/dist/cron/service/timer.js +43 -14
  130. package/dist/cron/service/timer.js.map +1 -1
  131. package/dist/cron/session-reaper.d.ts +27 -0
  132. package/dist/cron/session-reaper.d.ts.map +1 -1
  133. package/dist/cron/session-reaper.js +81 -0
  134. package/dist/cron/session-reaper.js.map +1 -1
  135. package/dist/system-prompt/assembler.d.ts +14 -0
  136. package/dist/system-prompt/assembler.d.ts.map +1 -1
  137. package/dist/system-prompt/assembler.js +36 -14
  138. package/dist/system-prompt/assembler.js.map +1 -1
  139. package/package.json +16 -3
@@ -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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
36
+ }
37
+ /** Escape an attribute value (adds `"` on top of the text escapes). */
38
+ function escapeTelegramHtmlAttr(text) {
39
+ return escapeTelegramHtml(text).replace(/"/g, "&quot;");
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(/&amp;/g, "&")
251
+ .replace(/&lt;/g, "<")
252
+ .replace(/&gt;/g, ">")
253
+ .replace(/&quot;/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"}