@ebowwa/channel-telegram 1.14.8 → 1.14.9
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/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +159 -19
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +185 -19
- package/src/plugin.ts +215 -75
package/dist/index.d.ts
CHANGED
|
@@ -30,12 +30,21 @@ export interface TelegramConfig {
|
|
|
30
30
|
tools?: Tool[];
|
|
31
31
|
/** Optional conversations file path */
|
|
32
32
|
conversationsFile?: string;
|
|
33
|
+
/** Enable native streaming using sendMessageDraft API (Bot API 9.5+) */
|
|
34
|
+
nativeStreaming?: boolean;
|
|
35
|
+
/** Streaming mode: 'partial' (default), 'block', or 'progress' */
|
|
36
|
+
streamingMode?: "partial" | "block" | "progress";
|
|
37
|
+
/** Debounce interval for streaming updates (ms), default: 100 */
|
|
38
|
+
streamingDebounceMs?: number;
|
|
33
39
|
}
|
|
34
40
|
export declare function createTelegramConfigFromEnv(): TelegramConfig;
|
|
35
41
|
export declare class TelegramChannel {
|
|
36
42
|
readonly id: ChannelId;
|
|
37
43
|
readonly label = "Telegram";
|
|
38
44
|
readonly capabilities: ChannelCapabilities;
|
|
45
|
+
readonly nativeStreaming: boolean;
|
|
46
|
+
readonly streamingMode: "partial" | "block" | "progress";
|
|
47
|
+
readonly streamingDebounceMs: number;
|
|
39
48
|
private bot;
|
|
40
49
|
private config;
|
|
41
50
|
private memory;
|
|
@@ -43,6 +52,7 @@ export declare class TelegramChannel {
|
|
|
43
52
|
private messageHandler?;
|
|
44
53
|
private typingIntervals;
|
|
45
54
|
private connected;
|
|
55
|
+
private activeStreams;
|
|
46
56
|
constructor(config: TelegramConfig);
|
|
47
57
|
start(): Promise<void>;
|
|
48
58
|
stop(): Promise<void>;
|
|
@@ -79,6 +89,31 @@ export declare class TelegramChannel {
|
|
|
79
89
|
* Stop typing indicator.
|
|
80
90
|
*/
|
|
81
91
|
stopTypingIndicator(chatId: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* Start a streaming message session.
|
|
94
|
+
* Returns a streamId for subsequent updates.
|
|
95
|
+
*/
|
|
96
|
+
startStream(chatId: number): string;
|
|
97
|
+
/**
|
|
98
|
+
* Update streaming message content.
|
|
99
|
+
* Uses sendMessageDraft for native streaming (Bot API 9.5+) or
|
|
100
|
+
* falls back to sendMessage + editMessageText for older APIs.
|
|
101
|
+
*/
|
|
102
|
+
updateStream(streamId: string, text: string, options?: TelegramBot.SendMessageOptions): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Finalize streaming message.
|
|
105
|
+
* Commits the final text and cleans up stream state.
|
|
106
|
+
*/
|
|
107
|
+
finalizeStream(streamId: string, finalText: string, options?: TelegramBot.SendMessageOptions): Promise<number | undefined>;
|
|
108
|
+
/**
|
|
109
|
+
* Cancel an active stream.
|
|
110
|
+
*/
|
|
111
|
+
cancelStream(streamId: string): void;
|
|
112
|
+
/**
|
|
113
|
+
* Native sendMessageDraft implementation (Bot API 9.5+).
|
|
114
|
+
* Falls back to editMessageText if API not available.
|
|
115
|
+
*/
|
|
116
|
+
private sendMessageDraftNative;
|
|
82
117
|
/**
|
|
83
118
|
* Check if user/chat is allowed.
|
|
84
119
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAGxB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAqBvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -60,25 +60,10 @@ export function createTelegramConfigFromEnv() {
|
|
|
60
60
|
export class TelegramChannel {
|
|
61
61
|
id;
|
|
62
62
|
label = "Telegram";
|
|
63
|
-
capabilities
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
replies: true,
|
|
68
|
-
threads: false,
|
|
69
|
-
reactions: true,
|
|
70
|
-
editing: true,
|
|
71
|
-
streaming: false,
|
|
72
|
-
},
|
|
73
|
-
media: {
|
|
74
|
-
maxFileSize: 50 * 1024 * 1024, // 50MB
|
|
75
|
-
supportedMimeTypes: ["image/*", "video/*", "audio/*", "application/pdf"],
|
|
76
|
-
},
|
|
77
|
-
rateLimits: {
|
|
78
|
-
messagesPerMinute: 30,
|
|
79
|
-
charactersPerMessage: 4096,
|
|
80
|
-
},
|
|
81
|
-
};
|
|
63
|
+
capabilities;
|
|
64
|
+
nativeStreaming;
|
|
65
|
+
streamingMode;
|
|
66
|
+
streamingDebounceMs;
|
|
82
67
|
bot;
|
|
83
68
|
config;
|
|
84
69
|
memory;
|
|
@@ -86,12 +71,38 @@ export class TelegramChannel {
|
|
|
86
71
|
messageHandler;
|
|
87
72
|
typingIntervals = new Map();
|
|
88
73
|
connected = false;
|
|
74
|
+
// Streaming state
|
|
75
|
+
activeStreams = new Map();
|
|
89
76
|
constructor(config) {
|
|
90
77
|
this.config = config;
|
|
91
78
|
this.id = createChannelId("telegram", "default");
|
|
92
79
|
this.bot = new TelegramBot(config.botToken, { polling: false });
|
|
93
80
|
this.memory = new ConversationMemory(config.conversationsFile);
|
|
94
81
|
this.tools = config.tools || [];
|
|
82
|
+
// Native streaming configuration
|
|
83
|
+
this.nativeStreaming = config.nativeStreaming ?? false;
|
|
84
|
+
this.streamingMode = config.streamingMode ?? "partial";
|
|
85
|
+
this.streamingDebounceMs = config.streamingDebounceMs ?? 100;
|
|
86
|
+
// Capabilities depend on nativeStreaming config
|
|
87
|
+
this.capabilities = {
|
|
88
|
+
supports: {
|
|
89
|
+
text: true,
|
|
90
|
+
media: true,
|
|
91
|
+
replies: true,
|
|
92
|
+
threads: false,
|
|
93
|
+
reactions: true,
|
|
94
|
+
editing: true,
|
|
95
|
+
streaming: this.nativeStreaming,
|
|
96
|
+
},
|
|
97
|
+
media: {
|
|
98
|
+
maxFileSize: 50 * 1024 * 1024, // 50MB
|
|
99
|
+
supportedMimeTypes: ["image/*", "video/*", "audio/*", "application/pdf"],
|
|
100
|
+
},
|
|
101
|
+
rateLimits: {
|
|
102
|
+
messagesPerMinute: 30,
|
|
103
|
+
charactersPerMessage: 4096,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
95
106
|
}
|
|
96
107
|
// ============================================================
|
|
97
108
|
// ChannelConnector Implementation
|
|
@@ -197,6 +208,135 @@ export class TelegramChannel {
|
|
|
197
208
|
this.typingIntervals.delete(chatId);
|
|
198
209
|
}
|
|
199
210
|
}
|
|
211
|
+
// ============================================================
|
|
212
|
+
// Native Streaming (Bot API 9.5+)
|
|
213
|
+
// ============================================================
|
|
214
|
+
/**
|
|
215
|
+
* Start a streaming message session.
|
|
216
|
+
* Returns a streamId for subsequent updates.
|
|
217
|
+
*/
|
|
218
|
+
startStream(chatId) {
|
|
219
|
+
const streamId = `${chatId}:${Date.now()}`;
|
|
220
|
+
this.activeStreams.set(streamId, { lastText: "", lastUpdate: 0 });
|
|
221
|
+
return streamId;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Update streaming message content.
|
|
225
|
+
* Uses sendMessageDraft for native streaming (Bot API 9.5+) or
|
|
226
|
+
* falls back to sendMessage + editMessageText for older APIs.
|
|
227
|
+
*/
|
|
228
|
+
async updateStream(streamId, text, options) {
|
|
229
|
+
const stream = this.activeStreams.get(streamId);
|
|
230
|
+
if (!stream) {
|
|
231
|
+
console.error(`[TelegramChannel] No active stream: ${streamId}`);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
235
|
+
const now = Date.now();
|
|
236
|
+
// Debounce updates
|
|
237
|
+
if (now - stream.lastUpdate < this.streamingDebounceMs && text === stream.lastText) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
stream.lastText = text;
|
|
241
|
+
stream.lastUpdate = now;
|
|
242
|
+
try {
|
|
243
|
+
if (this.nativeStreaming) {
|
|
244
|
+
// Use sendMessageDraft for native streaming (Bot API 9.5+)
|
|
245
|
+
await this.sendMessageDraftNative(chatId, text, options);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
// Fallback: sendMessage + editMessageText
|
|
249
|
+
if (!stream.messageId) {
|
|
250
|
+
// First message: send new
|
|
251
|
+
const result = await this.bot.sendMessage(chatId, text, options);
|
|
252
|
+
stream.messageId = result.message_id;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// Subsequent updates: edit
|
|
256
|
+
await this.bot.editMessageText(text, {
|
|
257
|
+
chat_id: chatId,
|
|
258
|
+
message_id: stream.messageId,
|
|
259
|
+
parse_mode: options?.parse_mode,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
console.error(`[TelegramChannel] Stream update error: ${error.message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Finalize streaming message.
|
|
270
|
+
* Commits the final text and cleans up stream state.
|
|
271
|
+
*/
|
|
272
|
+
async finalizeStream(streamId, finalText, options) {
|
|
273
|
+
const stream = this.activeStreams.get(streamId);
|
|
274
|
+
if (!stream) {
|
|
275
|
+
console.error(`[TelegramChannel] No active stream: ${streamId}`);
|
|
276
|
+
return undefined;
|
|
277
|
+
}
|
|
278
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
279
|
+
try {
|
|
280
|
+
if (this.nativeStreaming) {
|
|
281
|
+
// Final commit with sendMessageDraft
|
|
282
|
+
await this.sendMessageDraftNative(chatId, finalText, options, true);
|
|
283
|
+
}
|
|
284
|
+
else if (stream.messageId) {
|
|
285
|
+
// Final edit for fallback mode
|
|
286
|
+
await this.bot.editMessageText(finalText, {
|
|
287
|
+
chat_id: chatId,
|
|
288
|
+
message_id: stream.messageId,
|
|
289
|
+
parse_mode: options?.parse_mode,
|
|
290
|
+
});
|
|
291
|
+
return stream.messageId;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
console.error(`[TelegramChannel] Stream finalize error: ${error.message}`);
|
|
296
|
+
}
|
|
297
|
+
finally {
|
|
298
|
+
this.activeStreams.delete(streamId);
|
|
299
|
+
}
|
|
300
|
+
return stream.messageId;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Cancel an active stream.
|
|
304
|
+
*/
|
|
305
|
+
cancelStream(streamId) {
|
|
306
|
+
const stream = this.activeStreams.get(streamId);
|
|
307
|
+
if (stream?.messageId) {
|
|
308
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
309
|
+
this.bot.deleteMessage(chatId, stream.messageId).catch(() => { });
|
|
310
|
+
}
|
|
311
|
+
this.activeStreams.delete(streamId);
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Native sendMessageDraft implementation (Bot API 9.5+).
|
|
315
|
+
* Falls back to editMessageText if API not available.
|
|
316
|
+
*/
|
|
317
|
+
async sendMessageDraftNative(chatId, text, options, finalize = false) {
|
|
318
|
+
try {
|
|
319
|
+
// Try native sendMessageDraft API (Bot API 9.5+)
|
|
320
|
+
// Note: node-telegram-bot-api may not have this method yet,
|
|
321
|
+
// so we use the raw API call
|
|
322
|
+
await this.bot.sendMessage(chatId, text, {
|
|
323
|
+
...options,
|
|
324
|
+
// @ts-expect-error - sendMessageDraft is new in Bot API 9.5
|
|
325
|
+
draft: !finalize,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
// If draft mode not supported, fall back silently
|
|
330
|
+
const errMsg = error.message;
|
|
331
|
+
if (errMsg.includes("draft") || errMsg.includes("Bad Request")) {
|
|
332
|
+
// API doesn't support draft mode, use regular send
|
|
333
|
+
await this.bot.sendMessage(chatId, text, options);
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
200
340
|
/**
|
|
201
341
|
* Check if user/chat is allowed.
|
|
202
342
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAQL,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAW,MAAM,qBAAqB,CAAC;AAGnE,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AAE/D,oEAAoE;AACpE,WAAW;AACX,0BAA0B;AAC1B,oBAAoB;AACpB,kBAAkB;AAClB,2BAA2B;AAC3B,8BAA8B;AAC9B,wBAAwB;AACxB,8DAA8D;AAE9D,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAE/D,6BAA6B;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnE,0BAA0B;AAC1B,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAuB1B,MAAM,UAAU,2BAA2B;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB;QACrD,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB;QACrD,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAC7C,YAAY;QACZ,YAAY;QACZ,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KAClD,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,MAAM,OAAO,eAAe;IACjB,EAAE,CAAY;IACd,KAAK,GAAG,UAAU,CAAC;IACnB,YAAY,CAAsB;IAClC,eAAe,CAAU;IACzB,aAAa,CAAmC;IAChD,mBAAmB,CAAS;IAE7B,GAAG,CAAc;IACjB,MAAM,CAAiB;IACvB,MAAM,CAAqB;IAC3B,KAAK,CAAS;IACd,cAAc,CAAkB;IAChC,eAAe,GAAgC,IAAI,GAAG,EAAE,CAAC;IACzD,SAAS,GAAG,KAAK,CAAC;IAC1B,kBAAkB;IACV,aAAa,GAA8E,IAAI,GAAG,EAAE,CAAC;IAE7G,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAEhC,iCAAiC;QACjC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,GAAG,CAAC;QAE7D,gDAAgD;QAChD,IAAI,CAAC,YAAY,GAAG;YAClB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,CAAC,eAAe;aAChC;YACD,KAAK,EAAE;gBACL,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;gBACtC,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC;aACzE;YACD,UAAU,EAAE;gBACV,iBAAiB,EAAE,EAAE;gBACrB,oBAAoB,EAAE,IAAI;aAC3B;SACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,kCAAkC;IAClC,+DAA+D;IAE/D,KAAK,CAAC,KAAK;QACT,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,gBAAgB;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC/C,OAAO,EAAE;gBACP,QAAQ,EAAE,GAAG;gBACb,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE;oBACN,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;iBACrF;aACF;SACF,CAAC,CAAC;QAEH,6BAA6B;QAC7B,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvD,wBAAwB;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,kCAAkC;QAClC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAuB;QAC/B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,QAAyB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAgC,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+DAA+D;IAC/D,iBAAiB;IACjB,+DAA+D;IAE/D;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,OAAwC;QACtF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAc;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,kCAAkC;IAClC,+DAA+D;IAE/D;;;OAGG;IACH,WAAW,CAAC,MAAc;QACxB,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,IAAY,EACZ,OAAwC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,mBAAmB;QACnB,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;QAExB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,2DAA2D;gBAC3D,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtB,0BAA0B;oBAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBACjE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,2BAA2B;oBAC3B,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE;wBACnC,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,MAAM,CAAC,SAAS;wBAC5B,UAAU,EAAE,OAAO,EAAE,UAAU;qBAChC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA2C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,OAAwC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,qCAAqC;gBACrC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5B,+BAA+B;gBAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE;oBACxC,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,MAAM,CAAC,SAAS;oBAC5B,UAAU,EAAE,OAAO,EAAE,UAAU;iBAChC,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,SAAS,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4CAA6C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAAgB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAClC,MAAc,EACd,IAAY,EACZ,OAAwC,EACxC,QAAQ,GAAG,KAAK;QAEhB,IAAI,CAAC;YACH,iDAAiD;YACjD,4DAA4D;YAC5D,6BAA6B;YAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;gBACvC,GAAG,OAAO;gBACV,4DAA4D;gBAC5D,KAAK,EAAE,CAAC,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kDAAkD;YAClD,MAAM,MAAM,GAAI,KAAe,CAAC,OAAO,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/D,mDAAmD;gBACnD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAe,EAAE,MAAe;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+DAA+D;IAC/D,6BAA6B;IAC7B,+DAA+D;IAEvD,oBAAoB;QAC1B,6DAA6D;QAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO;YAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAE7G,0BAA0B;YAC1B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACpD,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;oBACzD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,UAAW,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,OAAO;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO;YAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC/C,yBAAyB;YACxB,OAAe,CAAC,IAAI,GAAG,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACpD,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY;QACX,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE;gBAC1C,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;oBACjC,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;iBACjD;gBACD,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE;gBACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;aAChE,CAAC;YAEF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,KAAK,CAAC,EAAE;gBACnB,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;oBAC9B,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;iBAC9C;gBACD,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;gBACzD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;aAC/B,CAAC;YAEF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;oBAC3D,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YAC3B,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;YAClD,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE;YAC3D,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACtD,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACnD,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5D,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACpD,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;YAC/D,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACzD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC9D,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE;YAC9D,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACvD,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACtD,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE;SACzD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,GAAwB;QACnD,MAAM,MAAM,GAAkB;YAC5B,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtD,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;YAC5B,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM;YACjE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;SACjC,CAAC;QAEF,MAAM,OAAO,GAAmB;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;YACjC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC;QAEF,6CAA6C;QAC7C,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1E,sBAAsB;QACtB,IAAI,SAA6B,CAAC;QAClC,IAAI,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC;YAClE,SAAS,GAAG,gBAAgB,SAAS,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;QACzF,CAAC;QAED,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE;YACpC,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpC,MAAM;YACN,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxE,OAAO;YACP,OAAO,EAAE,GAAG,CAAC,gBAAgB;gBAC3B,CAAC,CAAC;oBACE,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE;oBACrD,SAAS,EAAE,aAAa;iBACzB;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,OAAoD;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,IAAY,EACZ,OAAwC;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM;YACR,CAAC;YAED,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACzD,IAAI,UAAU,GAAG,IAAI;gBAAE,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,UAAU,GAAG,IAAI;gBAAE,UAAU,GAAG,UAAU,CAAC;YAE/C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YAC5C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AAED,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAE/D,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAC;IAE7C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9C,oCAAoC;IACpC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,2DAA2D;AAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebowwa/channel-telegram",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.9",
|
|
4
4
|
"description": "Pure Telegram protocol adapter implementing ChannelConnector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@ebowwa/channel-core": "^1.4.3",
|
|
44
|
-
"@ebowwa/channel-types": "^0.2.
|
|
44
|
+
"@ebowwa/channel-types": "^0.2.3",
|
|
45
45
|
"node-telegram-bot-api": "^0.66.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
package/src/index.ts
CHANGED
|
@@ -76,6 +76,12 @@ export interface TelegramConfig {
|
|
|
76
76
|
tools?: Tool[];
|
|
77
77
|
/** Optional conversations file path */
|
|
78
78
|
conversationsFile?: string;
|
|
79
|
+
/** Enable native streaming using sendMessageDraft API (Bot API 9.5+) */
|
|
80
|
+
nativeStreaming?: boolean;
|
|
81
|
+
/** Streaming mode: 'partial' (default), 'block', or 'progress' */
|
|
82
|
+
streamingMode?: "partial" | "block" | "progress";
|
|
83
|
+
/** Debounce interval for streaming updates (ms), default: 100 */
|
|
84
|
+
streamingDebounceMs?: number;
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
export function createTelegramConfigFromEnv(): TelegramConfig {
|
|
@@ -105,25 +111,10 @@ export function createTelegramConfigFromEnv(): TelegramConfig {
|
|
|
105
111
|
export class TelegramChannel {
|
|
106
112
|
readonly id: ChannelId;
|
|
107
113
|
readonly label = "Telegram";
|
|
108
|
-
readonly capabilities: ChannelCapabilities
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
replies: true,
|
|
113
|
-
threads: false,
|
|
114
|
-
reactions: true,
|
|
115
|
-
editing: true,
|
|
116
|
-
streaming: false,
|
|
117
|
-
},
|
|
118
|
-
media: {
|
|
119
|
-
maxFileSize: 50 * 1024 * 1024, // 50MB
|
|
120
|
-
supportedMimeTypes: ["image/*", "video/*", "audio/*", "application/pdf"],
|
|
121
|
-
},
|
|
122
|
-
rateLimits: {
|
|
123
|
-
messagesPerMinute: 30,
|
|
124
|
-
charactersPerMessage: 4096,
|
|
125
|
-
},
|
|
126
|
-
};
|
|
114
|
+
readonly capabilities: ChannelCapabilities;
|
|
115
|
+
readonly nativeStreaming: boolean;
|
|
116
|
+
readonly streamingMode: "partial" | "block" | "progress";
|
|
117
|
+
readonly streamingDebounceMs: number;
|
|
127
118
|
|
|
128
119
|
private bot: TelegramBot;
|
|
129
120
|
private config: TelegramConfig;
|
|
@@ -132,6 +123,8 @@ export class TelegramChannel {
|
|
|
132
123
|
private messageHandler?: MessageHandler;
|
|
133
124
|
private typingIntervals: Map<number, NodeJS.Timeout> = new Map();
|
|
134
125
|
private connected = false;
|
|
126
|
+
// Streaming state
|
|
127
|
+
private activeStreams: Map<string, { messageId?: number; lastText: string; lastUpdate: number }> = new Map();
|
|
135
128
|
|
|
136
129
|
constructor(config: TelegramConfig) {
|
|
137
130
|
this.config = config;
|
|
@@ -139,6 +132,32 @@ export class TelegramChannel {
|
|
|
139
132
|
this.bot = new TelegramBot(config.botToken, { polling: false });
|
|
140
133
|
this.memory = new ConversationMemory(config.conversationsFile);
|
|
141
134
|
this.tools = config.tools || [];
|
|
135
|
+
|
|
136
|
+
// Native streaming configuration
|
|
137
|
+
this.nativeStreaming = config.nativeStreaming ?? false;
|
|
138
|
+
this.streamingMode = config.streamingMode ?? "partial";
|
|
139
|
+
this.streamingDebounceMs = config.streamingDebounceMs ?? 100;
|
|
140
|
+
|
|
141
|
+
// Capabilities depend on nativeStreaming config
|
|
142
|
+
this.capabilities = {
|
|
143
|
+
supports: {
|
|
144
|
+
text: true,
|
|
145
|
+
media: true,
|
|
146
|
+
replies: true,
|
|
147
|
+
threads: false,
|
|
148
|
+
reactions: true,
|
|
149
|
+
editing: true,
|
|
150
|
+
streaming: this.nativeStreaming,
|
|
151
|
+
},
|
|
152
|
+
media: {
|
|
153
|
+
maxFileSize: 50 * 1024 * 1024, // 50MB
|
|
154
|
+
supportedMimeTypes: ["image/*", "video/*", "audio/*", "application/pdf"],
|
|
155
|
+
},
|
|
156
|
+
rateLimits: {
|
|
157
|
+
messagesPerMinute: 30,
|
|
158
|
+
charactersPerMessage: 4096,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
142
161
|
}
|
|
143
162
|
|
|
144
163
|
// ============================================================
|
|
@@ -265,6 +284,153 @@ export class TelegramChannel {
|
|
|
265
284
|
}
|
|
266
285
|
}
|
|
267
286
|
|
|
287
|
+
// ============================================================
|
|
288
|
+
// Native Streaming (Bot API 9.5+)
|
|
289
|
+
// ============================================================
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Start a streaming message session.
|
|
293
|
+
* Returns a streamId for subsequent updates.
|
|
294
|
+
*/
|
|
295
|
+
startStream(chatId: number): string {
|
|
296
|
+
const streamId = `${chatId}:${Date.now()}`;
|
|
297
|
+
this.activeStreams.set(streamId, { lastText: "", lastUpdate: 0 });
|
|
298
|
+
return streamId;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Update streaming message content.
|
|
303
|
+
* Uses sendMessageDraft for native streaming (Bot API 9.5+) or
|
|
304
|
+
* falls back to sendMessage + editMessageText for older APIs.
|
|
305
|
+
*/
|
|
306
|
+
async updateStream(
|
|
307
|
+
streamId: string,
|
|
308
|
+
text: string,
|
|
309
|
+
options?: TelegramBot.SendMessageOptions
|
|
310
|
+
): Promise<void> {
|
|
311
|
+
const stream = this.activeStreams.get(streamId);
|
|
312
|
+
if (!stream) {
|
|
313
|
+
console.error(`[TelegramChannel] No active stream: ${streamId}`);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
318
|
+
const now = Date.now();
|
|
319
|
+
|
|
320
|
+
// Debounce updates
|
|
321
|
+
if (now - stream.lastUpdate < this.streamingDebounceMs && text === stream.lastText) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
stream.lastText = text;
|
|
326
|
+
stream.lastUpdate = now;
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
if (this.nativeStreaming) {
|
|
330
|
+
// Use sendMessageDraft for native streaming (Bot API 9.5+)
|
|
331
|
+
await this.sendMessageDraftNative(chatId, text, options);
|
|
332
|
+
} else {
|
|
333
|
+
// Fallback: sendMessage + editMessageText
|
|
334
|
+
if (!stream.messageId) {
|
|
335
|
+
// First message: send new
|
|
336
|
+
const result = await this.bot.sendMessage(chatId, text, options);
|
|
337
|
+
stream.messageId = result.message_id;
|
|
338
|
+
} else {
|
|
339
|
+
// Subsequent updates: edit
|
|
340
|
+
await this.bot.editMessageText(text, {
|
|
341
|
+
chat_id: chatId,
|
|
342
|
+
message_id: stream.messageId,
|
|
343
|
+
parse_mode: options?.parse_mode,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
} catch (error) {
|
|
348
|
+
console.error(`[TelegramChannel] Stream update error: ${(error as Error).message}`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Finalize streaming message.
|
|
354
|
+
* Commits the final text and cleans up stream state.
|
|
355
|
+
*/
|
|
356
|
+
async finalizeStream(
|
|
357
|
+
streamId: string,
|
|
358
|
+
finalText: string,
|
|
359
|
+
options?: TelegramBot.SendMessageOptions
|
|
360
|
+
): Promise<number | undefined> {
|
|
361
|
+
const stream = this.activeStreams.get(streamId);
|
|
362
|
+
if (!stream) {
|
|
363
|
+
console.error(`[TelegramChannel] No active stream: ${streamId}`);
|
|
364
|
+
return undefined;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
368
|
+
|
|
369
|
+
try {
|
|
370
|
+
if (this.nativeStreaming) {
|
|
371
|
+
// Final commit with sendMessageDraft
|
|
372
|
+
await this.sendMessageDraftNative(chatId, finalText, options, true);
|
|
373
|
+
} else if (stream.messageId) {
|
|
374
|
+
// Final edit for fallback mode
|
|
375
|
+
await this.bot.editMessageText(finalText, {
|
|
376
|
+
chat_id: chatId,
|
|
377
|
+
message_id: stream.messageId,
|
|
378
|
+
parse_mode: options?.parse_mode,
|
|
379
|
+
});
|
|
380
|
+
return stream.messageId;
|
|
381
|
+
}
|
|
382
|
+
} catch (error) {
|
|
383
|
+
console.error(`[TelegramChannel] Stream finalize error: ${(error as Error).message}`);
|
|
384
|
+
} finally {
|
|
385
|
+
this.activeStreams.delete(streamId);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
return stream.messageId;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Cancel an active stream.
|
|
393
|
+
*/
|
|
394
|
+
cancelStream(streamId: string): void {
|
|
395
|
+
const stream = this.activeStreams.get(streamId);
|
|
396
|
+
if (stream?.messageId) {
|
|
397
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
398
|
+
this.bot.deleteMessage(chatId, stream.messageId).catch(() => {});
|
|
399
|
+
}
|
|
400
|
+
this.activeStreams.delete(streamId);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Native sendMessageDraft implementation (Bot API 9.5+).
|
|
405
|
+
* Falls back to editMessageText if API not available.
|
|
406
|
+
*/
|
|
407
|
+
private async sendMessageDraftNative(
|
|
408
|
+
chatId: number,
|
|
409
|
+
text: string,
|
|
410
|
+
options?: TelegramBot.SendMessageOptions,
|
|
411
|
+
finalize = false
|
|
412
|
+
): Promise<void> {
|
|
413
|
+
try {
|
|
414
|
+
// Try native sendMessageDraft API (Bot API 9.5+)
|
|
415
|
+
// Note: node-telegram-bot-api may not have this method yet,
|
|
416
|
+
// so we use the raw API call
|
|
417
|
+
await this.bot.sendMessage(chatId, text, {
|
|
418
|
+
...options,
|
|
419
|
+
// @ts-expect-error - sendMessageDraft is new in Bot API 9.5
|
|
420
|
+
draft: !finalize,
|
|
421
|
+
});
|
|
422
|
+
} catch (error) {
|
|
423
|
+
// If draft mode not supported, fall back silently
|
|
424
|
+
const errMsg = (error as Error).message;
|
|
425
|
+
if (errMsg.includes("draft") || errMsg.includes("Bad Request")) {
|
|
426
|
+
// API doesn't support draft mode, use regular send
|
|
427
|
+
await this.bot.sendMessage(chatId, text, options);
|
|
428
|
+
} else {
|
|
429
|
+
throw error;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
268
434
|
/**
|
|
269
435
|
* Check if user/chat is allowed.
|
|
270
436
|
*/
|
package/src/plugin.ts
CHANGED
|
@@ -38,6 +38,12 @@ export interface ResolvedTelegramAccount {
|
|
|
38
38
|
allowedUsers?: number[];
|
|
39
39
|
allowedChats?: number[];
|
|
40
40
|
pollingInterval: number;
|
|
41
|
+
/** Enable native streaming using sendMessageDraft API (Bot API 9.5+) */
|
|
42
|
+
nativeStreaming?: boolean;
|
|
43
|
+
/** Streaming mode: 'partial' (default), 'block', or 'progress' */
|
|
44
|
+
streamingMode?: "partial" | "block" | "progress";
|
|
45
|
+
/** Debounce interval for streaming updates (ms), default: 100 */
|
|
46
|
+
streamingDebounceMs?: number;
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
// ============================================================
|
|
@@ -69,6 +75,9 @@ export const telegramConfigAdapter: ChannelConfigAdapter<ResolvedTelegramAccount
|
|
|
69
75
|
allowedUsers: config.allowedUsers as number[] | undefined,
|
|
70
76
|
allowedChats: config.allowedChats as number[] | undefined,
|
|
71
77
|
pollingInterval: (config.pollingInterval as number) || 1000,
|
|
78
|
+
nativeStreaming: (config.nativeStreaming as boolean) ?? false,
|
|
79
|
+
streamingMode: (config.streamingMode as "partial" | "block" | "progress") ?? "partial",
|
|
80
|
+
streamingDebounceMs: (config.streamingDebounceMs as number) ?? 100,
|
|
72
81
|
};
|
|
73
82
|
},
|
|
74
83
|
|
|
@@ -84,90 +93,200 @@ export const telegramConfigAdapter: ChannelConfigAdapter<ResolvedTelegramAccount
|
|
|
84
93
|
// ============================================================
|
|
85
94
|
|
|
86
95
|
const createOutboundAdapter = (
|
|
87
|
-
getBot: () => TelegramBot | null
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
chunker: (text, limit) => {
|
|
93
|
-
// Simple chunking - could be smarter with markdown
|
|
94
|
-
const chunks: string[] = [];
|
|
95
|
-
for (let i = 0; i < text.length; i += limit) {
|
|
96
|
-
chunks.push(text.slice(i, i + limit));
|
|
97
|
-
}
|
|
98
|
-
return { chunks, totalChunks: chunks.length };
|
|
99
|
-
},
|
|
96
|
+
getBot: () => TelegramBot | null,
|
|
97
|
+
getAccount: () => ResolvedTelegramAccount | null
|
|
98
|
+
): ChannelOutboundAdapter<ResolvedTelegramAccount> => {
|
|
99
|
+
// Active streams for streaming support
|
|
100
|
+
const activeStreams = new Map<string, { messageId?: number; lastText: string; lastUpdate: number }>();
|
|
100
101
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
return {
|
|
103
|
+
deliveryMode: "direct",
|
|
104
|
+
textChunkLimit: 4096,
|
|
105
|
+
|
|
106
|
+
chunker: (text, limit) => {
|
|
107
|
+
// Simple chunking - could be smarter with markdown
|
|
108
|
+
const chunks: string[] = [];
|
|
109
|
+
for (let i = 0; i < text.length; i += limit) {
|
|
110
|
+
chunks.push(text.slice(i, i + limit));
|
|
111
|
+
}
|
|
112
|
+
return { chunks, totalChunks: chunks.length };
|
|
113
|
+
},
|
|
106
114
|
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
115
|
+
sendText: async ({ to, text, accountId, account, replyToId, threadId }) => {
|
|
116
|
+
const bot = getBot();
|
|
117
|
+
if (!bot) {
|
|
118
|
+
return { success: false, error: "Bot not initialized", timestamp: new Date() };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
const chatId = parseInt(to, 10);
|
|
123
|
+
const options: TelegramBot.SendMessageOptions = {
|
|
124
|
+
parse_mode: "Markdown",
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
if (replyToId) {
|
|
128
|
+
options.reply_to_message_id = parseInt(replyToId, 10);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (threadId) {
|
|
132
|
+
options.message_thread_id = parseInt(threadId, 10);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const result = await bot.sendMessage(chatId, text, options);
|
|
112
136
|
|
|
113
|
-
|
|
114
|
-
|
|
137
|
+
return {
|
|
138
|
+
success: true,
|
|
139
|
+
messageId: result.message_id.toString(),
|
|
140
|
+
timestamp: new Date(),
|
|
141
|
+
};
|
|
142
|
+
} catch (error) {
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: (error as Error).message,
|
|
146
|
+
timestamp: new Date(),
|
|
147
|
+
};
|
|
115
148
|
}
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
// Streaming support
|
|
152
|
+
startStream: async ({ to }) => {
|
|
153
|
+
const streamId = `${to}:${Date.now()}`;
|
|
154
|
+
activeStreams.set(streamId, { lastText: "", lastUpdate: 0 });
|
|
155
|
+
return streamId;
|
|
156
|
+
},
|
|
116
157
|
|
|
117
|
-
|
|
118
|
-
|
|
158
|
+
updateStream: async ({ streamId, text, options }) => {
|
|
159
|
+
const stream = activeStreams.get(streamId);
|
|
160
|
+
if (!stream) return;
|
|
161
|
+
|
|
162
|
+
const bot = getBot();
|
|
163
|
+
const account = getAccount();
|
|
164
|
+
if (!bot || !account) return;
|
|
165
|
+
|
|
166
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
167
|
+
const now = Date.now();
|
|
168
|
+
const debounceMs = account.streamingDebounceMs ?? 100;
|
|
169
|
+
|
|
170
|
+
// Debounce updates
|
|
171
|
+
if (now - stream.lastUpdate < debounceMs && text === stream.lastText) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
stream.lastText = text;
|
|
176
|
+
stream.lastUpdate = now;
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
if (account.nativeStreaming) {
|
|
180
|
+
// Use sendMessageDraft for native streaming (Bot API 9.5+)
|
|
181
|
+
await bot.sendMessage(chatId, text, {
|
|
182
|
+
parse_mode: options?.parseMode as "Markdown" | "HTML",
|
|
183
|
+
// @ts-expect-error - sendMessageDraft is new in Bot API 9.5
|
|
184
|
+
draft: true,
|
|
185
|
+
});
|
|
186
|
+
} else {
|
|
187
|
+
// Fallback: sendMessage + editMessageText
|
|
188
|
+
if (!stream.messageId) {
|
|
189
|
+
const result = await bot.sendMessage(chatId, text, {
|
|
190
|
+
parse_mode: options?.parseMode as "Markdown" | "HTML",
|
|
191
|
+
});
|
|
192
|
+
stream.messageId = result.message_id;
|
|
193
|
+
} else {
|
|
194
|
+
await bot.editMessageText(text, {
|
|
195
|
+
chat_id: chatId,
|
|
196
|
+
message_id: stream.messageId,
|
|
197
|
+
parse_mode: options?.parseMode as "Markdown" | "HTML",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
} catch (error) {
|
|
202
|
+
console.error(`[TelegramOutbound] Stream update error: ${(error as Error).message}`);
|
|
119
203
|
}
|
|
204
|
+
},
|
|
120
205
|
|
|
121
|
-
|
|
206
|
+
finalizeStream: async ({ streamId, finalText, options }) => {
|
|
207
|
+
const stream = activeStreams.get(streamId);
|
|
208
|
+
if (!stream) return undefined;
|
|
209
|
+
|
|
210
|
+
const bot = getBot();
|
|
211
|
+
const account = getAccount();
|
|
212
|
+
if (!bot || !account) return undefined;
|
|
213
|
+
|
|
214
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
215
|
+
let messageId = stream.messageId;
|
|
216
|
+
|
|
217
|
+
try {
|
|
218
|
+
if (account.nativeStreaming) {
|
|
219
|
+
// Final commit with sendMessageDraft
|
|
220
|
+
const result = await bot.sendMessage(chatId, finalText, {
|
|
221
|
+
parse_mode: options?.parseMode as "Markdown" | "HTML",
|
|
222
|
+
// @ts-expect-error - sendMessageDraft is new in Bot API 9.5
|
|
223
|
+
draft: false,
|
|
224
|
+
});
|
|
225
|
+
messageId = result.message_id;
|
|
226
|
+
} else if (stream.messageId) {
|
|
227
|
+
// Final edit for fallback mode
|
|
228
|
+
await bot.editMessageText(finalText, {
|
|
229
|
+
chat_id: chatId,
|
|
230
|
+
message_id: stream.messageId,
|
|
231
|
+
parse_mode: options?.parseMode as "Markdown" | "HTML",
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
} catch (error) {
|
|
235
|
+
console.error(`[TelegramOutbound] Stream finalize error: ${(error as Error).message}`);
|
|
236
|
+
} finally {
|
|
237
|
+
activeStreams.delete(streamId);
|
|
238
|
+
}
|
|
122
239
|
|
|
123
|
-
return
|
|
124
|
-
|
|
125
|
-
messageId: result.message_id.toString(),
|
|
126
|
-
timestamp: new Date(),
|
|
127
|
-
};
|
|
128
|
-
} catch (error) {
|
|
129
|
-
return {
|
|
130
|
-
success: false,
|
|
131
|
-
error: (error as Error).message,
|
|
132
|
-
timestamp: new Date(),
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
},
|
|
240
|
+
return messageId?.toString();
|
|
241
|
+
},
|
|
136
242
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
243
|
+
cancelStream: async ({ streamId }) => {
|
|
244
|
+
const stream = activeStreams.get(streamId);
|
|
245
|
+
if (stream?.messageId) {
|
|
246
|
+
const bot = getBot();
|
|
247
|
+
if (bot) {
|
|
248
|
+
const chatId = parseInt(streamId.split(":")[0], 10);
|
|
249
|
+
await bot.deleteMessage(chatId, stream.messageId).catch(() => {});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
activeStreams.delete(streamId);
|
|
253
|
+
},
|
|
142
254
|
|
|
143
|
-
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (mediaType === "image") {
|
|
148
|
-
result = await bot.sendPhoto(chatId, mediaUrl, { caption: text });
|
|
149
|
-
} else if (mediaType === "video") {
|
|
150
|
-
result = await bot.sendVideo(chatId, mediaUrl, { caption: text });
|
|
151
|
-
} else if (mediaType === "audio") {
|
|
152
|
-
result = await bot.sendAudio(chatId, mediaUrl, { caption: text });
|
|
153
|
-
} else {
|
|
154
|
-
result = await bot.sendDocument(chatId, mediaUrl, { caption: text });
|
|
255
|
+
sendMedia: async ({ to, text, mediaUrl, mediaType, accountId, account }) => {
|
|
256
|
+
const bot = getBot();
|
|
257
|
+
if (!bot) {
|
|
258
|
+
return { success: false, error: "Bot not initialized", timestamp: new Date() };
|
|
155
259
|
}
|
|
156
260
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
261
|
+
try {
|
|
262
|
+
const chatId = parseInt(to, 10);
|
|
263
|
+
let result: TelegramBot.Message;
|
|
264
|
+
|
|
265
|
+
if (mediaType === "image") {
|
|
266
|
+
result = await bot.sendPhoto(chatId, mediaUrl, { caption: text });
|
|
267
|
+
} else if (mediaType === "video") {
|
|
268
|
+
result = await bot.sendVideo(chatId, mediaUrl, { caption: text });
|
|
269
|
+
} else if (mediaType === "audio") {
|
|
270
|
+
result = await bot.sendAudio(chatId, mediaUrl, { caption: text });
|
|
271
|
+
} else {
|
|
272
|
+
result = await bot.sendDocument(chatId, mediaUrl, { caption: text });
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return {
|
|
276
|
+
success: true,
|
|
277
|
+
messageId: result.message_id.toString(),
|
|
278
|
+
timestamp: new Date(),
|
|
279
|
+
};
|
|
280
|
+
} catch (error) {
|
|
281
|
+
return {
|
|
282
|
+
success: false,
|
|
283
|
+
error: (error as Error).message,
|
|
284
|
+
timestamp: new Date(),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
};
|
|
171
290
|
|
|
172
291
|
// ============================================================
|
|
173
292
|
// THREADING ADAPTER
|
|
@@ -265,10 +384,16 @@ const createGatewayAdapter = (
|
|
|
265
384
|
// ============================================================
|
|
266
385
|
|
|
267
386
|
export function createTelegramPlugin(
|
|
268
|
-
config: {
|
|
387
|
+
config: {
|
|
388
|
+
botToken?: string;
|
|
389
|
+
nativeStreaming?: boolean;
|
|
390
|
+
streamingMode?: "partial" | "block" | "progress";
|
|
391
|
+
streamingDebounceMs?: number;
|
|
392
|
+
} = {},
|
|
269
393
|
TelegramBotClass?: typeof TelegramBot
|
|
270
394
|
): ChannelPlugin<ResolvedTelegramAccount> {
|
|
271
395
|
let bot: TelegramBot | null = null;
|
|
396
|
+
let account: ResolvedTelegramAccount | null = null;
|
|
272
397
|
|
|
273
398
|
const createBot = (token: string): TelegramBot => {
|
|
274
399
|
if (!TelegramBotClass) {
|
|
@@ -277,6 +402,11 @@ export function createTelegramPlugin(
|
|
|
277
402
|
return new TelegramBotClass(token, { polling: true });
|
|
278
403
|
};
|
|
279
404
|
|
|
405
|
+
// Native streaming configuration
|
|
406
|
+
const nativeStreaming = config.nativeStreaming ?? false;
|
|
407
|
+
const streamingMode = config.streamingMode ?? "partial";
|
|
408
|
+
const streamingDebounceMs = config.streamingDebounceMs ?? 100;
|
|
409
|
+
|
|
280
410
|
return {
|
|
281
411
|
id: "telegram",
|
|
282
412
|
meta: telegramMeta,
|
|
@@ -289,7 +419,7 @@ export function createTelegramPlugin(
|
|
|
289
419
|
threads: true,
|
|
290
420
|
reactions: true,
|
|
291
421
|
editing: true,
|
|
292
|
-
streaming:
|
|
422
|
+
streaming: nativeStreaming,
|
|
293
423
|
buttons: true,
|
|
294
424
|
},
|
|
295
425
|
nativeCommands: true,
|
|
@@ -303,9 +433,19 @@ export function createTelegramPlugin(
|
|
|
303
433
|
},
|
|
304
434
|
},
|
|
305
435
|
config: telegramConfigAdapter,
|
|
306
|
-
outbound: createOutboundAdapter(
|
|
436
|
+
outbound: createOutboundAdapter(
|
|
437
|
+
() => bot,
|
|
438
|
+
() => account
|
|
439
|
+
),
|
|
307
440
|
gateway: createGatewayAdapter((token) => {
|
|
308
441
|
bot = createBot(token);
|
|
442
|
+
account = {
|
|
443
|
+
botToken: token,
|
|
444
|
+
pollingInterval: 1000,
|
|
445
|
+
nativeStreaming,
|
|
446
|
+
streamingMode,
|
|
447
|
+
streamingDebounceMs,
|
|
448
|
+
};
|
|
309
449
|
return bot;
|
|
310
450
|
}),
|
|
311
451
|
threading: telegramThreadingAdapter,
|