@mono-agent/telegram-adapter 0.2.0 → 0.2.2
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 +2 -0
- package/dist/adapter.d.ts +35 -57
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +37 -179
- package/dist/adapter.js.map +1 -1
- package/dist/bot.d.ts +50 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +214 -0
- package/dist/bot.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -2
- package/dist/config.js.map +1 -1
- package/dist/grammy-client.d.ts +14 -0
- package/dist/grammy-client.d.ts.map +1 -0
- package/dist/grammy-client.js +103 -0
- package/dist/grammy-client.js.map +1 -0
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/message-stream.d.ts +80 -7
- package/dist/message-stream.d.ts.map +1 -1
- package/dist/message-stream.js +381 -34
- package/dist/message-stream.js.map +1 -1
- package/dist/start.d.ts +23 -34
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +25 -43
- package/dist/start.js.map +1 -1
- package/dist/telegram-error.d.ts +34 -0
- package/dist/telegram-error.d.ts.map +1 -0
- package/dist/telegram-error.js +39 -0
- package/dist/telegram-error.js.map +1 -0
- package/dist/telegram-markdown.d.ts +17 -0
- package/dist/telegram-markdown.d.ts.map +1 -0
- package/dist/telegram-markdown.js +20 -0
- package/dist/telegram-markdown.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -3
- package/dist/long-poller.d.ts +0 -55
- package/dist/long-poller.d.ts.map +0 -1
- package/dist/long-poller.js +0 -156
- package/dist/long-poller.js.map +0 -1
- package/dist/telegram-client.d.ts +0 -38
- package/dist/telegram-client.d.ts.map +0 -1
- package/dist/telegram-client.js +0 -183
- package/dist/telegram-client.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-stream.d.ts","sourceRoot":"","sources":["../src/message-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"message-stream.d.ts","sourceRoot":"","sources":["../src/message-stream.ts"],"names":[],"mappings":"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"}
|
package/dist/message-stream.js
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import { DEFAULT_EMPTY_FINAL_TEXT, DEFAULT_MAX_MESSAGE_CHARS, buildStreamingTailPreview, normalizeTrailing, splitTextByCodePoints, } from "@mono-agent/agent-contracts";
|
|
2
|
+
import { TelegramApiError } from "./telegram-error.js";
|
|
3
|
+
import { renderTelegramMarkdown } from "./telegram-markdown.js";
|
|
4
|
+
/**
|
|
5
|
+
* Raised only when a *final* delivery cannot reach Telegram after retries and
|
|
6
|
+
* the last-resort fresh send. The AI request itself already succeeded, so the
|
|
7
|
+
* adapter treats this as a degraded delivery — never as an agent failure.
|
|
8
|
+
*/
|
|
9
|
+
export class TelegramDeliveryError extends Error {
|
|
10
|
+
cause;
|
|
11
|
+
attempts;
|
|
12
|
+
constructor(message, details) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = "TelegramDeliveryError";
|
|
15
|
+
this.cause = details.cause;
|
|
16
|
+
this.attempts = details.attempts;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
2
19
|
const DEFAULT_INITIAL_STATUS_TEXT = "Thinking…";
|
|
3
20
|
const DEFAULT_EDIT_DEBOUNCE_MS = 750;
|
|
21
|
+
const DEFAULT_MAX_SEND_RETRIES = 3;
|
|
22
|
+
const DEFAULT_RETRY_CAP_MS = 60_000;
|
|
23
|
+
const DEFAULT_RETRY_BASE_DELAY_MS = 500;
|
|
4
24
|
const EMPTY_FINAL_TEXT = DEFAULT_EMPTY_FINAL_TEXT;
|
|
25
|
+
const THOUGHT_PREFIX = "💭 ";
|
|
5
26
|
export class TelegramMessageStream {
|
|
6
27
|
api;
|
|
7
28
|
chatId;
|
|
@@ -9,14 +30,23 @@ export class TelegramMessageStream {
|
|
|
9
30
|
editDebounceMs;
|
|
10
31
|
maxMessageChars;
|
|
11
32
|
replyToMessageId;
|
|
33
|
+
maxSendRetries;
|
|
34
|
+
retryCapMs;
|
|
35
|
+
retryBaseDelayMs;
|
|
36
|
+
showThoughts;
|
|
37
|
+
formatMarkdown;
|
|
38
|
+
abortSignal;
|
|
12
39
|
logger;
|
|
13
40
|
currentText = "";
|
|
41
|
+
thinkingText = "";
|
|
42
|
+
hasAnswerText = false;
|
|
14
43
|
statusText;
|
|
15
44
|
sentMessage;
|
|
16
45
|
sendMessagePromise;
|
|
17
46
|
editTimer;
|
|
18
47
|
inFlightEdit;
|
|
19
|
-
|
|
48
|
+
lastFlushedText;
|
|
49
|
+
lastFlushedMarkdown = false;
|
|
20
50
|
finished = false;
|
|
21
51
|
constructor(options) {
|
|
22
52
|
this.api = options.api;
|
|
@@ -26,6 +56,12 @@ export class TelegramMessageStream {
|
|
|
26
56
|
this.editDebounceMs = options.editDebounceMs ?? DEFAULT_EDIT_DEBOUNCE_MS;
|
|
27
57
|
this.maxMessageChars = options.maxMessageChars ?? DEFAULT_MAX_MESSAGE_CHARS;
|
|
28
58
|
this.replyToMessageId = options.replyToMessageId;
|
|
59
|
+
this.maxSendRetries = options.maxSendRetries ?? DEFAULT_MAX_SEND_RETRIES;
|
|
60
|
+
this.retryCapMs = options.retryCapMs ?? DEFAULT_RETRY_CAP_MS;
|
|
61
|
+
this.retryBaseDelayMs = options.retryBaseDelayMs ?? DEFAULT_RETRY_BASE_DELAY_MS;
|
|
62
|
+
this.showThoughts = options.showThoughts ?? true;
|
|
63
|
+
this.formatMarkdown = options.formatMarkdown ?? true;
|
|
64
|
+
this.abortSignal = options.abortSignal;
|
|
29
65
|
this.logger = options.logger;
|
|
30
66
|
if (!Number.isInteger(this.maxMessageChars) || this.maxMessageChars < 32) {
|
|
31
67
|
throw new RangeError("maxMessageChars must be an integer of at least 32.");
|
|
@@ -33,69 +69,162 @@ export class TelegramMessageStream {
|
|
|
33
69
|
if (!Number.isFinite(this.editDebounceMs) || this.editDebounceMs < 0) {
|
|
34
70
|
throw new RangeError("editDebounceMs must be a non-negative number.");
|
|
35
71
|
}
|
|
72
|
+
if (!Number.isInteger(this.maxSendRetries) || this.maxSendRetries < 0) {
|
|
73
|
+
throw new RangeError("maxSendRetries must be a non-negative integer.");
|
|
74
|
+
}
|
|
75
|
+
if (!Number.isFinite(this.retryCapMs) || this.retryCapMs < 0) {
|
|
76
|
+
throw new RangeError("retryCapMs must be a non-negative number.");
|
|
77
|
+
}
|
|
78
|
+
if (!Number.isFinite(this.retryBaseDelayMs) || this.retryBaseDelayMs < 0) {
|
|
79
|
+
throw new RangeError("retryBaseDelayMs must be a non-negative number.");
|
|
80
|
+
}
|
|
36
81
|
}
|
|
37
82
|
async status(text) {
|
|
38
83
|
this.assertOpen();
|
|
39
|
-
await this.
|
|
84
|
+
await this.awaitInFlightEdit();
|
|
40
85
|
this.statusText = normalizeTelegramText(text);
|
|
41
86
|
const hadMessage = this.sentMessage !== undefined;
|
|
42
87
|
await this.ensureMessage();
|
|
43
88
|
if (hadMessage) {
|
|
44
|
-
await this.
|
|
89
|
+
await this.deliverText(this.statusText, { final: false });
|
|
45
90
|
}
|
|
46
91
|
}
|
|
47
92
|
async append(delta) {
|
|
48
93
|
this.assertOpen();
|
|
49
|
-
await this.
|
|
94
|
+
await this.awaitInFlightEdit();
|
|
50
95
|
if (delta.length === 0) {
|
|
51
96
|
return;
|
|
52
97
|
}
|
|
53
98
|
this.currentText += delta;
|
|
99
|
+
if (!this.hasAnswerText && delta.trim().length > 0) {
|
|
100
|
+
this.hasAnswerText = true;
|
|
101
|
+
}
|
|
54
102
|
await this.ensureMessage();
|
|
55
103
|
this.scheduleEdit();
|
|
56
104
|
}
|
|
57
105
|
async replace(text) {
|
|
58
106
|
this.assertOpen();
|
|
59
|
-
await this.
|
|
107
|
+
await this.awaitInFlightEdit();
|
|
60
108
|
this.currentText = text;
|
|
109
|
+
if (text.trim().length > 0) {
|
|
110
|
+
this.hasAnswerText = true;
|
|
111
|
+
}
|
|
61
112
|
await this.ensureMessage();
|
|
62
113
|
this.scheduleEdit();
|
|
63
114
|
}
|
|
64
|
-
async
|
|
115
|
+
async event(event) {
|
|
116
|
+
this.assertOpen();
|
|
117
|
+
await this.awaitInFlightEdit();
|
|
118
|
+
if (event.type === "assistant_thought") {
|
|
119
|
+
// Reasoning is shown live as a single accumulating "💭" message, then
|
|
120
|
+
// superseded the moment the answer starts streaming.
|
|
121
|
+
if (!this.showThoughts || this.hasAnswerText || event.text.length === 0) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.thinkingText += event.text;
|
|
125
|
+
await this.ensureMessage();
|
|
126
|
+
this.scheduleEdit();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (event.type === "runtime_warning") {
|
|
130
|
+
this.logger?.warn?.("Telegram stream received runtime warning.", {
|
|
131
|
+
warningKind: event.warningKind,
|
|
132
|
+
message: event.message,
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (event.type === "tool_call_started") {
|
|
137
|
+
this.logger?.debug?.("Telegram stream received tool start event.", {
|
|
138
|
+
id: event.id,
|
|
139
|
+
name: event.name,
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (event.type === "tool_call_completed") {
|
|
144
|
+
this.logger?.debug?.("Telegram stream received tool completion event.", {
|
|
145
|
+
id: event.id,
|
|
146
|
+
name: event.name,
|
|
147
|
+
isError: event.isError === true,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async finish(finalText, options) {
|
|
65
152
|
if (this.finished) {
|
|
66
153
|
return;
|
|
67
154
|
}
|
|
68
155
|
this.finished = true;
|
|
69
156
|
if (finalText !== undefined) {
|
|
70
157
|
this.currentText = finalText;
|
|
158
|
+
if (finalText.trim().length > 0) {
|
|
159
|
+
this.hasAnswerText = true;
|
|
160
|
+
}
|
|
71
161
|
}
|
|
72
162
|
this.cancelScheduledEdit();
|
|
73
|
-
await this.throwIfAsyncError();
|
|
74
163
|
await this.awaitInFlightEdit();
|
|
75
|
-
await this.throwIfAsyncError();
|
|
76
164
|
const chunks = splitTelegramText(this.currentText, this.maxMessageChars);
|
|
77
165
|
const [firstChunk, ...remainingChunks] = chunks;
|
|
78
166
|
await this.ensureMessage();
|
|
79
|
-
|
|
167
|
+
try {
|
|
168
|
+
await this.deliverText(firstChunk ?? EMPTY_FINAL_TEXT, {
|
|
169
|
+
final: true,
|
|
170
|
+
format: options?.format ?? true,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
if (this.abortSignal?.aborted === true) {
|
|
175
|
+
// Cancelled: deliver in place if we can, but never post a brand-new
|
|
176
|
+
// message carrying content the user has already asked us to drop.
|
|
177
|
+
this.logger?.warn?.("Telegram final delivery skipped after cancellation.", {
|
|
178
|
+
error: errorMessage(error),
|
|
179
|
+
});
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
await this.lastResortSend(firstChunk ?? EMPTY_FINAL_TEXT, error);
|
|
183
|
+
}
|
|
184
|
+
if (this.abortSignal?.aborted === true) {
|
|
185
|
+
// Do not spray overflow continuation messages onto a cancelled run.
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
80
188
|
for (const chunk of remainingChunks) {
|
|
81
|
-
await this.
|
|
189
|
+
await this.sendOverflowChunk(chunk);
|
|
82
190
|
}
|
|
83
191
|
}
|
|
192
|
+
interimDisplayText() {
|
|
193
|
+
if (this.hasAnswerText || this.currentText.length > 0) {
|
|
194
|
+
return this.currentText;
|
|
195
|
+
}
|
|
196
|
+
if (this.showThoughts && this.thinkingText.length > 0) {
|
|
197
|
+
return `${THOUGHT_PREFIX}${this.thinkingText}`;
|
|
198
|
+
}
|
|
199
|
+
return this.statusText;
|
|
200
|
+
}
|
|
84
201
|
async ensureMessage() {
|
|
85
202
|
if (this.sentMessage !== undefined) {
|
|
86
203
|
return this.sentMessage;
|
|
87
204
|
}
|
|
88
205
|
if (this.sendMessagePromise === undefined) {
|
|
206
|
+
const initialText = this.statusText;
|
|
89
207
|
const params = {
|
|
90
208
|
chat_id: this.chatId,
|
|
91
|
-
text:
|
|
209
|
+
text: initialText,
|
|
92
210
|
};
|
|
93
211
|
if (this.replyToMessageId !== undefined) {
|
|
94
212
|
params.reply_to_message_id = this.replyToMessageId;
|
|
95
213
|
}
|
|
96
|
-
this.sendMessagePromise = this.api.sendMessage(params)
|
|
214
|
+
this.sendMessagePromise = this.api.sendMessage(params).then((message) => {
|
|
215
|
+
this.lastFlushedText = initialText;
|
|
216
|
+
this.lastFlushedMarkdown = false;
|
|
217
|
+
return message;
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
this.sentMessage = await this.sendMessagePromise;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
// Do not poison future sends with a rejected promise.
|
|
225
|
+
this.sendMessagePromise = undefined;
|
|
226
|
+
throw error;
|
|
97
227
|
}
|
|
98
|
-
this.sentMessage = await this.sendMessagePromise;
|
|
99
228
|
return this.sentMessage;
|
|
100
229
|
}
|
|
101
230
|
scheduleEdit() {
|
|
@@ -110,22 +239,197 @@ export class TelegramMessageStream {
|
|
|
110
239
|
}, this.editDebounceMs);
|
|
111
240
|
}
|
|
112
241
|
startInFlightEdit() {
|
|
113
|
-
const text = buildStreamingPreview(this.
|
|
114
|
-
this.inFlightEdit = this.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
242
|
+
const text = buildStreamingPreview(this.interimDisplayText(), this.maxMessageChars);
|
|
243
|
+
this.inFlightEdit = this.deliverText(text, { final: false }).catch((error) => {
|
|
244
|
+
// Interim edits are best-effort; deliverText already swallows, but guard
|
|
245
|
+
// against an abort rejection so a streaming hiccup never aborts the run.
|
|
246
|
+
this.logger?.warn?.("Telegram stream interim edit failed (ignored).", {
|
|
247
|
+
error: errorMessage(error),
|
|
118
248
|
});
|
|
119
|
-
throw error;
|
|
120
249
|
});
|
|
121
|
-
void this.inFlightEdit
|
|
250
|
+
void this.inFlightEdit;
|
|
122
251
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
252
|
+
/**
|
|
253
|
+
* Send `sourceText` to Telegram, classifying failures and recovering where
|
|
254
|
+
* possible. Interim edits (`final: false`) are best-effort and never throw;
|
|
255
|
+
* final delivery retries transient failures and throws TelegramDeliveryError
|
|
256
|
+
* only when every path is exhausted.
|
|
257
|
+
*/
|
|
258
|
+
async deliverText(sourceText, options) {
|
|
259
|
+
const normalizedSource = normalizeTelegramText(sourceText);
|
|
260
|
+
let useMarkdown = options.final && this.formatMarkdown && (options.format ?? true);
|
|
261
|
+
let renderedText = useMarkdown ? renderTelegramMarkdown(normalizedSource) : normalizedSource;
|
|
262
|
+
if (useMarkdown && countCodePoints(renderedText) > this.maxMessageChars) {
|
|
263
|
+
// MarkdownV2 escaping can expand a chunk past Telegram's size limit, but
|
|
264
|
+
// chunks are split on the source length. The plain source is within the
|
|
265
|
+
// limit, so deliver it as plain text rather than fail with
|
|
266
|
+
// "message is too long". (We never test renderedText === source to decide
|
|
267
|
+
// this: telegramify renders inline code / links back to identical bytes
|
|
268
|
+
// that still need parse_mode to render, so equality is not a plain-text
|
|
269
|
+
// signal.)
|
|
270
|
+
useMarkdown = false;
|
|
271
|
+
renderedText = normalizedSource;
|
|
272
|
+
}
|
|
273
|
+
if (renderedText === this.lastFlushedText && useMarkdown === this.lastFlushedMarkdown) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const maxAttempts = options.final ? this.maxSendRetries + 1 : 1;
|
|
277
|
+
let recreate = false;
|
|
278
|
+
let lastError;
|
|
279
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
280
|
+
try {
|
|
281
|
+
if (recreate) {
|
|
282
|
+
const sent = await this.api.sendMessage(this.buildSendParams(renderedText, useMarkdown));
|
|
283
|
+
this.sentMessage = sent;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
const message = await this.ensureMessage();
|
|
287
|
+
await this.api.editMessageText(this.buildEditParams(message, renderedText, useMarkdown));
|
|
288
|
+
}
|
|
289
|
+
this.lastFlushedText = renderedText;
|
|
290
|
+
this.lastFlushedMarkdown = useMarkdown;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
lastError = error;
|
|
295
|
+
const outcome = classifyTelegramError(error);
|
|
296
|
+
if (outcome.kind === "not_modified") {
|
|
297
|
+
this.lastFlushedText = renderedText;
|
|
298
|
+
this.lastFlushedMarkdown = useMarkdown;
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (outcome.kind === "reformat_plain" && useMarkdown) {
|
|
302
|
+
useMarkdown = false;
|
|
303
|
+
renderedText = normalizedSource;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (outcome.kind === "recreate" && this.abortSignal?.aborted !== true) {
|
|
307
|
+
recreate = true;
|
|
308
|
+
this.sentMessage = undefined;
|
|
309
|
+
this.lastFlushedText = undefined;
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (outcome.kind === "retry" && options.final && attempt < maxAttempts) {
|
|
313
|
+
await this.sleep(this.retryDelayMs(outcome.retryAfterMs, attempt));
|
|
314
|
+
if (this.abortSignal?.aborted === true) {
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (options.final) {
|
|
323
|
+
throw new TelegramDeliveryError("Telegram final delivery failed.", {
|
|
324
|
+
cause: lastError,
|
|
325
|
+
attempts: maxAttempts,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
this.logger?.warn?.("Telegram stream interim edit failed (ignored).", {
|
|
329
|
+
error: errorMessage(lastError),
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* The streamed message could not be edited or recreated in place. Post the
|
|
334
|
+
* final answer as a brand-new plain message so the user still receives it.
|
|
335
|
+
*/
|
|
336
|
+
async lastResortSend(text, cause) {
|
|
337
|
+
const normalized = normalizeTelegramText(text);
|
|
338
|
+
const maxAttempts = this.maxSendRetries + 1;
|
|
339
|
+
let lastError = cause;
|
|
340
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
341
|
+
try {
|
|
342
|
+
const sent = await this.api.sendMessage(this.buildSendParams(normalized, false));
|
|
343
|
+
this.sentMessage = sent;
|
|
344
|
+
this.lastFlushedText = normalized;
|
|
345
|
+
this.lastFlushedMarkdown = false;
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
lastError = error;
|
|
350
|
+
const outcome = classifyTelegramError(error);
|
|
351
|
+
if (outcome.kind === "retry" && attempt < maxAttempts) {
|
|
352
|
+
await this.sleep(this.retryDelayMs(outcome.retryAfterMs, attempt));
|
|
353
|
+
if (this.abortSignal?.aborted === true) {
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
throw new TelegramDeliveryError("Telegram delivery failed after fallback send.", {
|
|
362
|
+
cause: lastError,
|
|
363
|
+
attempts: maxAttempts,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
/** Overflow continuation chunks are best-effort: the primary answer already landed. */
|
|
367
|
+
async sendOverflowChunk(chunk) {
|
|
368
|
+
const normalized = normalizeTelegramText(chunk);
|
|
369
|
+
const maxAttempts = this.maxSendRetries + 1;
|
|
370
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
371
|
+
try {
|
|
372
|
+
await this.api.sendMessage(this.buildSendParams(normalized, false));
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
const outcome = classifyTelegramError(error);
|
|
377
|
+
if (outcome.kind === "retry" && attempt < maxAttempts) {
|
|
378
|
+
await this.sleep(this.retryDelayMs(outcome.retryAfterMs, attempt));
|
|
379
|
+
if (this.abortSignal?.aborted === true) {
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
this.logger?.warn?.("Telegram overflow chunk failed (ignored).", {
|
|
385
|
+
error: errorMessage(error),
|
|
386
|
+
});
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
buildEditParams(message, text, useMarkdown) {
|
|
392
|
+
const params = {
|
|
126
393
|
chat_id: this.chatId,
|
|
127
394
|
message_id: message.message_id,
|
|
128
|
-
text
|
|
395
|
+
text,
|
|
396
|
+
};
|
|
397
|
+
if (useMarkdown) {
|
|
398
|
+
params.parse_mode = "MarkdownV2";
|
|
399
|
+
}
|
|
400
|
+
return params;
|
|
401
|
+
}
|
|
402
|
+
buildSendParams(text, useMarkdown) {
|
|
403
|
+
const params = { chat_id: this.chatId, text };
|
|
404
|
+
if (useMarkdown) {
|
|
405
|
+
params.parse_mode = "MarkdownV2";
|
|
406
|
+
}
|
|
407
|
+
return params;
|
|
408
|
+
}
|
|
409
|
+
retryDelayMs(retryAfterMs, attempt) {
|
|
410
|
+
const backoff = this.retryBaseDelayMs * 2 ** (attempt - 1);
|
|
411
|
+
const chosen = retryAfterMs ?? backoff;
|
|
412
|
+
return Math.min(chosen, this.retryCapMs);
|
|
413
|
+
}
|
|
414
|
+
sleep(ms) {
|
|
415
|
+
if (ms <= 0 || this.abortSignal?.aborted === true) {
|
|
416
|
+
return Promise.resolve();
|
|
417
|
+
}
|
|
418
|
+
return new Promise((resolve) => {
|
|
419
|
+
const signal = this.abortSignal;
|
|
420
|
+
const cleanup = () => {
|
|
421
|
+
clearTimeout(timer);
|
|
422
|
+
signal?.removeEventListener("abort", onAbort);
|
|
423
|
+
};
|
|
424
|
+
const onAbort = () => {
|
|
425
|
+
cleanup();
|
|
426
|
+
resolve();
|
|
427
|
+
};
|
|
428
|
+
const timer = setTimeout(() => {
|
|
429
|
+
cleanup();
|
|
430
|
+
resolve();
|
|
431
|
+
}, ms);
|
|
432
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
129
433
|
});
|
|
130
434
|
}
|
|
131
435
|
cancelScheduledEdit() {
|
|
@@ -140,22 +444,58 @@ export class TelegramMessageStream {
|
|
|
140
444
|
this.inFlightEdit = undefined;
|
|
141
445
|
}
|
|
142
446
|
}
|
|
143
|
-
async throwIfAsyncError() {
|
|
144
|
-
if (this.inFlightEdit !== undefined) {
|
|
145
|
-
await this.awaitInFlightEdit();
|
|
146
|
-
}
|
|
147
|
-
if (this.lastAsyncError !== undefined) {
|
|
148
|
-
const error = this.lastAsyncError;
|
|
149
|
-
this.lastAsyncError = undefined;
|
|
150
|
-
throw error;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
447
|
assertOpen() {
|
|
154
448
|
if (this.finished) {
|
|
155
449
|
throw new Error("Cannot write to a finished TelegramMessageStream.");
|
|
156
450
|
}
|
|
157
451
|
}
|
|
158
452
|
}
|
|
453
|
+
/**
|
|
454
|
+
* Classify a Telegram send/edit failure into a recovery strategy. Pure and
|
|
455
|
+
* exported so the recovery policy can be unit-tested directly.
|
|
456
|
+
*/
|
|
457
|
+
export function classifyTelegramError(error) {
|
|
458
|
+
if (error instanceof TelegramApiError) {
|
|
459
|
+
const description = (error.telegramDescription ?? "").toLowerCase();
|
|
460
|
+
if (description.includes("message is not modified")) {
|
|
461
|
+
return { kind: "not_modified" };
|
|
462
|
+
}
|
|
463
|
+
if (description.includes("message to edit not found") ||
|
|
464
|
+
description.includes("message to be edited not found") ||
|
|
465
|
+
description.includes("message can't be edited") ||
|
|
466
|
+
description.includes("message_id_invalid")) {
|
|
467
|
+
return { kind: "recreate" };
|
|
468
|
+
}
|
|
469
|
+
if (description.includes("can't parse entities") ||
|
|
470
|
+
description.includes("can't find end of the entity") ||
|
|
471
|
+
description.includes("unsupported start tag") ||
|
|
472
|
+
description.includes("unclosed")) {
|
|
473
|
+
return { kind: "reformat_plain" };
|
|
474
|
+
}
|
|
475
|
+
if (error.retryAfterMs !== undefined ||
|
|
476
|
+
error.errorCode === 429 ||
|
|
477
|
+
error.status === 429 ||
|
|
478
|
+
description.includes("too many requests")) {
|
|
479
|
+
if (error.retryAfterMs !== undefined) {
|
|
480
|
+
return { kind: "retry", retryAfterMs: error.retryAfterMs };
|
|
481
|
+
}
|
|
482
|
+
return { kind: "retry" };
|
|
483
|
+
}
|
|
484
|
+
if (error.kind === "network") {
|
|
485
|
+
return { kind: "retry" };
|
|
486
|
+
}
|
|
487
|
+
if (error.kind === "aborted") {
|
|
488
|
+
return { kind: "fatal" };
|
|
489
|
+
}
|
|
490
|
+
if (error.status !== undefined && error.status >= 500) {
|
|
491
|
+
return { kind: "retry" };
|
|
492
|
+
}
|
|
493
|
+
return { kind: "fatal" };
|
|
494
|
+
}
|
|
495
|
+
// Non-TelegramApiError (e.g. a transient transport error or a test stub):
|
|
496
|
+
// retry conservatively rather than surfacing it as a hard failure.
|
|
497
|
+
return { kind: "retry" };
|
|
498
|
+
}
|
|
159
499
|
export function splitTelegramText(text, maxChars) {
|
|
160
500
|
return splitTextByCodePoints(normalizeTrailing(text, EMPTY_FINAL_TEXT), maxChars);
|
|
161
501
|
}
|
|
@@ -165,4 +505,11 @@ function buildStreamingPreview(text, maxChars) {
|
|
|
165
505
|
function normalizeTelegramText(text) {
|
|
166
506
|
return text.trimEnd();
|
|
167
507
|
}
|
|
508
|
+
/** Count Unicode code points — Telegram's message length is measured in them. */
|
|
509
|
+
function countCodePoints(text) {
|
|
510
|
+
return [...text].length;
|
|
511
|
+
}
|
|
512
|
+
function errorMessage(error) {
|
|
513
|
+
return error instanceof Error ? error.message : String(error);
|
|
514
|
+
}
|
|
168
515
|
//# sourceMappingURL=message-stream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-stream.js","sourceRoot":"","sources":["../src/message-stream.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AA8BrC,MAAM,2BAA2B,GAAG,WAAW,CAAC;AAChD,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,OAAO,qBAAqB;IACf,GAAG,CAAiB;IACpB,MAAM,CAAiB;IACvB,iBAAiB,CAAS;IAC1B,cAAc,CAAS;IACvB,eAAe,CAAS;IACxB,gBAAgB,CAAqB;IACrC,MAAM,CAA0C;IAEzD,WAAW,GAAG,EAAE,CAAC;IACjB,UAAU,CAAS;IACnB,WAAW,CAAkC;IAC7C,kBAAkB,CAA2C;IAC7D,SAAS,CAA4C;IACrD,YAAY,CAA4B;IACxC,cAAc,CAAU;IACxB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,OAAqC;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAC5C,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CACzD,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACzE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,yBAAyB,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC;QAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;QAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAkB;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACzE,MAAM,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,GAAG,MAAM,CAAC;QAEhD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC;QACrD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAIR;gBACF,OAAO,EAAE,IAAI,CAAC,MAAM;gBACpB,IAAI,EAAE,IAAI,CAAC,UAAU;aACtB,CAAC;YACF,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAChE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,8BAA8B,EAAE;gBACnD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,OAAO,qBAAqB,CAC1B,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,EACzC,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,QAAgB;IAC3D,OAAO,yBAAyB,CAC9B,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,EACzC,QAAQ,EACR,KAAK,CACN,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"message-stream.js","sourceRoot":"","sources":["../src/message-stream.ts"],"names":[],"mappings":"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"}
|