claude-telegram-mirror 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +331 -0
- package/dist/bot/commands.d.ts +41 -0
- package/dist/bot/commands.d.ts.map +1 -0
- package/dist/bot/commands.js +231 -0
- package/dist/bot/commands.js.map +1 -0
- package/dist/bot/formatting.d.ts +62 -0
- package/dist/bot/formatting.d.ts.map +1 -0
- package/dist/bot/formatting.js +295 -0
- package/dist/bot/formatting.js.map +1 -0
- package/dist/bot/telegram.d.ts +93 -0
- package/dist/bot/telegram.d.ts.map +1 -0
- package/dist/bot/telegram.js +378 -0
- package/dist/bot/telegram.js.map +1 -0
- package/dist/bot/types.d.ts +28 -0
- package/dist/bot/types.d.ts.map +1 -0
- package/dist/bot/types.js +5 -0
- package/dist/bot/types.js.map +1 -0
- package/dist/bridge/daemon.d.ts +93 -0
- package/dist/bridge/daemon.d.ts.map +1 -0
- package/dist/bridge/daemon.js +626 -0
- package/dist/bridge/daemon.js.map +1 -0
- package/dist/bridge/index.d.ts +10 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +9 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/injector.d.ts +97 -0
- package/dist/bridge/injector.d.ts.map +1 -0
- package/dist/bridge/injector.js +289 -0
- package/dist/bridge/injector.js.map +1 -0
- package/dist/bridge/session.d.ts +108 -0
- package/dist/bridge/session.d.ts.map +1 -0
- package/dist/bridge/session.js +381 -0
- package/dist/bridge/session.js.map +1 -0
- package/dist/bridge/socket.d.ts +97 -0
- package/dist/bridge/socket.d.ts.map +1 -0
- package/dist/bridge/socket.js +436 -0
- package/dist/bridge/socket.js.map +1 -0
- package/dist/bridge/types.d.ts +38 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +5 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +332 -0
- package/dist/cli.js.map +1 -0
- package/dist/hooks/handler.d.ts +94 -0
- package/dist/hooks/handler.d.ts.map +1 -0
- package/dist/hooks/handler.js +431 -0
- package/dist/hooks/handler.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/installer.d.ts +46 -0
- package/dist/hooks/installer.d.ts.map +1 -0
- package/dist/hooks/installer.js +317 -0
- package/dist/hooks/installer.js.map +1 -0
- package/dist/hooks/types.d.ts +88 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +6 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/service/doctor.d.ts +10 -0
- package/dist/service/doctor.d.ts.map +1 -0
- package/dist/service/doctor.js +424 -0
- package/dist/service/doctor.js.map +1 -0
- package/dist/service/manager.d.ts +48 -0
- package/dist/service/manager.d.ts.map +1 -0
- package/dist/service/manager.js +584 -0
- package/dist/service/manager.js.map +1 -0
- package/dist/service/setup.d.ts +10 -0
- package/dist/service/setup.d.ts.map +1 -0
- package/dist/service/setup.js +266 -0
- package/dist/service/setup.js.map +1 -0
- package/dist/utils/chunker.d.ts +24 -0
- package/dist/utils/chunker.d.ts.map +1 -0
- package/dist/utils/chunker.js +123 -0
- package/dist/utils/chunker.js.map +1 -0
- package/dist/utils/config.d.ts +48 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +154 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +28 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +88 -0
- package/postinstall.cjs +76 -0
- package/scripts/claude-wrapper.sh +122 -0
- package/scripts/doctor.sh +433 -0
- package/scripts/get-chat-id.sh +64 -0
- package/scripts/global-hooks.sh +39 -0
- package/scripts/install.sh +831 -0
- package/scripts/start-daemon.sh +49 -0
- package/scripts/telegram-hook.sh +449 -0
- package/scripts/uninstall.sh +261 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/bot/formatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,OAAc,GACtB,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CASpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,OAAO,GACd,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAa,GACvB,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1E;AAmBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CA0GtE"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Formatting Utilities
|
|
3
|
+
* Formats Claude Code output for Telegram display
|
|
4
|
+
*/
|
|
5
|
+
import { chunkMessage, needsChunking } from '../utils/chunker.js';
|
|
6
|
+
// ANSI escape code pattern
|
|
7
|
+
const ANSI_REGEX = /\x1b\[[0-9;]*[a-zA-Z]/g;
|
|
8
|
+
// MarkdownV2 special characters that need escaping
|
|
9
|
+
const MARKDOWN_V2_SPECIAL = /([_*\[\]()~`>#+\-=|{}.!\\])/g;
|
|
10
|
+
/**
|
|
11
|
+
* Strip ANSI escape codes from text
|
|
12
|
+
*/
|
|
13
|
+
export function stripAnsi(text) {
|
|
14
|
+
return text.replace(ANSI_REGEX, '');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Escape special characters for MarkdownV2
|
|
18
|
+
* Note: Don't escape inside code blocks
|
|
19
|
+
*/
|
|
20
|
+
export function escapeMarkdownV2(text) {
|
|
21
|
+
// Split by code blocks to avoid escaping inside them
|
|
22
|
+
const parts = text.split(/(```[\s\S]*?```|`[^`]+`)/g);
|
|
23
|
+
return parts.map((part, index) => {
|
|
24
|
+
// Odd indices are code blocks, don't escape them
|
|
25
|
+
if (index % 2 === 1) {
|
|
26
|
+
return part;
|
|
27
|
+
}
|
|
28
|
+
// Escape special characters in regular text
|
|
29
|
+
return part.replace(MARKDOWN_V2_SPECIAL, '\\$1');
|
|
30
|
+
}).join('');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Format agent response for Telegram
|
|
34
|
+
*/
|
|
35
|
+
export function formatAgentResponse(content) {
|
|
36
|
+
const cleaned = stripAnsi(content);
|
|
37
|
+
return `🤖 *Claude:*\n\n${cleaned}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format tool execution for Telegram
|
|
41
|
+
*/
|
|
42
|
+
export function formatToolExecution(tool, input, output, verbose = true) {
|
|
43
|
+
let message = `🔧 *Tool: ${tool}*\n`;
|
|
44
|
+
if (verbose && input) {
|
|
45
|
+
const inputStr = typeof input === 'string'
|
|
46
|
+
? input
|
|
47
|
+
: JSON.stringify(input, null, 2);
|
|
48
|
+
// Truncate long inputs
|
|
49
|
+
const truncatedInput = inputStr.length > 500
|
|
50
|
+
? inputStr.slice(0, 500) + '...'
|
|
51
|
+
: inputStr;
|
|
52
|
+
message += `\n📥 Input:\n\`\`\`\n${truncatedInput}\n\`\`\`\n`;
|
|
53
|
+
}
|
|
54
|
+
if (output) {
|
|
55
|
+
const outputStr = typeof output === 'string'
|
|
56
|
+
? output
|
|
57
|
+
: JSON.stringify(output, null, 2);
|
|
58
|
+
// Truncate long outputs
|
|
59
|
+
const truncatedOutput = outputStr.length > 1000
|
|
60
|
+
? outputStr.slice(0, 1000) + '\n... (truncated)'
|
|
61
|
+
: outputStr;
|
|
62
|
+
message += `\n📤 Output:\n\`\`\`\n${stripAnsi(truncatedOutput)}\n\`\`\``;
|
|
63
|
+
}
|
|
64
|
+
return message;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Format approval request for Telegram
|
|
68
|
+
*/
|
|
69
|
+
export function formatApprovalRequest(prompt) {
|
|
70
|
+
return `⚠️ *Approval Required*\n\n${stripAnsi(prompt)}\n\nPlease respond:`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Format error message for Telegram
|
|
74
|
+
*/
|
|
75
|
+
export function formatError(error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : error;
|
|
77
|
+
return `❌ *Error:*\n\n\`\`\`\n${stripAnsi(message)}\n\`\`\``;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format session start notification
|
|
81
|
+
*/
|
|
82
|
+
export function formatSessionStart(sessionId, projectDir, hostname) {
|
|
83
|
+
let message = `🚀 *Session Started*\n\nSession ID: \`${sessionId}\``;
|
|
84
|
+
if (hostname) {
|
|
85
|
+
message += `\nHost: \`${hostname}\``;
|
|
86
|
+
}
|
|
87
|
+
if (projectDir) {
|
|
88
|
+
message += `\nProject: \`${projectDir}\``;
|
|
89
|
+
}
|
|
90
|
+
return message;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Format session end notification
|
|
94
|
+
*/
|
|
95
|
+
export function formatSessionEnd(sessionId, duration) {
|
|
96
|
+
let message = `👋 *Session Ended*\n\nSession ID: \`${sessionId}\``;
|
|
97
|
+
if (duration) {
|
|
98
|
+
const minutes = Math.floor(duration / 60000);
|
|
99
|
+
const seconds = Math.floor((duration % 60000) / 1000);
|
|
100
|
+
message += `\nDuration: ${minutes}m ${seconds}s`;
|
|
101
|
+
}
|
|
102
|
+
return message;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Format status message
|
|
106
|
+
*/
|
|
107
|
+
export function formatStatus(isActive, sessionId, muted) {
|
|
108
|
+
if (!isActive) {
|
|
109
|
+
return '📊 *Status*\n\nNo active session attached.';
|
|
110
|
+
}
|
|
111
|
+
let message = `📊 *Status*\n\n`;
|
|
112
|
+
message += `Session: \`${sessionId}\`\n`;
|
|
113
|
+
message += `Notifications: ${muted ? '🔇 Muted' : '🔔 Active'}`;
|
|
114
|
+
return message;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Format help message
|
|
118
|
+
*/
|
|
119
|
+
export function formatHelp() {
|
|
120
|
+
return `📚 *Claude Code Mirror - Commands*
|
|
121
|
+
|
|
122
|
+
/status - Show current session status
|
|
123
|
+
/sessions - List active sessions
|
|
124
|
+
/attach <id> - Attach to a session
|
|
125
|
+
/detach - Detach from current session
|
|
126
|
+
/mute - Mute notifications
|
|
127
|
+
/unmute - Resume notifications
|
|
128
|
+
/abort - Abort current session
|
|
129
|
+
/help - Show this message
|
|
130
|
+
|
|
131
|
+
*Inline Responses:*
|
|
132
|
+
Simply reply with text to send input to the attached session.
|
|
133
|
+
|
|
134
|
+
*Approval Buttons:*
|
|
135
|
+
When Claude requests permission, tap:
|
|
136
|
+
✅ Approve - Allow the action
|
|
137
|
+
❌ Reject - Deny the action
|
|
138
|
+
🛑 Abort - End the session`;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Format a message and chunk if necessary
|
|
142
|
+
*/
|
|
143
|
+
export function formatAndChunk(content, maxLength = 4000) {
|
|
144
|
+
const cleaned = stripAnsi(content);
|
|
145
|
+
if (needsChunking(cleaned, maxLength)) {
|
|
146
|
+
return chunkMessage(cleaned, { maxLength, preserveCodeBlocks: true });
|
|
147
|
+
}
|
|
148
|
+
return [cleaned];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Detect code language from content (best effort)
|
|
152
|
+
*/
|
|
153
|
+
export function detectLanguage(content) {
|
|
154
|
+
const patterns = [
|
|
155
|
+
[/^#!\/usr\/bin\/env node|^import .* from ['"]|^const .* = require\(/, 'javascript'],
|
|
156
|
+
[/^#!\/usr\/bin\/env python|^import |^from .* import |^def /, 'python'],
|
|
157
|
+
[/^package |^import ".*"|^func /, 'go'],
|
|
158
|
+
[/^use |^fn |^let mut |^impl /, 'rust'],
|
|
159
|
+
[/^#include |^int main\(|^void /, 'cpp'],
|
|
160
|
+
[/^\$ |^#.*bash|^#!/, 'bash'],
|
|
161
|
+
[/^\{[\s\S]*\}$|^\[[\s\S]*\]$/, 'json'],
|
|
162
|
+
[/^<\?xml|^<!DOCTYPE|^<html/, 'xml'],
|
|
163
|
+
];
|
|
164
|
+
for (const [pattern, lang] of patterns) {
|
|
165
|
+
if (pattern.test(content.trim())) {
|
|
166
|
+
return lang;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return '';
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Wrap content in code block with language detection
|
|
173
|
+
*/
|
|
174
|
+
export function wrapInCodeBlock(content, language) {
|
|
175
|
+
const lang = language || detectLanguage(content);
|
|
176
|
+
return `\`\`\`${lang}\n${content}\n\`\`\``;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Truncate text with ellipsis, respecting a max length
|
|
180
|
+
*/
|
|
181
|
+
function truncate(text, maxLen) {
|
|
182
|
+
if (text.length <= maxLen)
|
|
183
|
+
return text;
|
|
184
|
+
return text.slice(0, maxLen - 3) + '...';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get short filename from path
|
|
188
|
+
*/
|
|
189
|
+
function shortPath(path) {
|
|
190
|
+
const parts = path.split('/');
|
|
191
|
+
if (parts.length <= 2)
|
|
192
|
+
return path;
|
|
193
|
+
return '.../' + parts.slice(-2).join('/');
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Format tool details for mobile-friendly Telegram display
|
|
197
|
+
*/
|
|
198
|
+
export function formatToolDetails(tool, input) {
|
|
199
|
+
const data = input;
|
|
200
|
+
switch (tool) {
|
|
201
|
+
case 'Edit': {
|
|
202
|
+
const file = shortPath(String(data.file_path || ''));
|
|
203
|
+
const oldStr = String(data.old_string || '');
|
|
204
|
+
const newStr = String(data.new_string || '');
|
|
205
|
+
let msg = `✏️ *Edit*\n📄 \`${file}\`\n\n`;
|
|
206
|
+
// Show diff-style view
|
|
207
|
+
if (oldStr) {
|
|
208
|
+
msg += `➖ *Remove:*\n\`\`\`\n${truncate(oldStr, 800)}\n\`\`\`\n\n`;
|
|
209
|
+
}
|
|
210
|
+
if (newStr) {
|
|
211
|
+
msg += `➕ *Add:*\n\`\`\`\n${truncate(newStr, 800)}\n\`\`\``;
|
|
212
|
+
}
|
|
213
|
+
return msg;
|
|
214
|
+
}
|
|
215
|
+
case 'Write': {
|
|
216
|
+
const file = shortPath(String(data.file_path || ''));
|
|
217
|
+
const content = String(data.content || '');
|
|
218
|
+
const lines = content.split('\n').length;
|
|
219
|
+
let msg = `📝 *Write*\n📄 \`${file}\`\n📏 ${lines} lines\n\n`;
|
|
220
|
+
msg += `\`\`\`\n${truncate(content, 1500)}\n\`\`\``;
|
|
221
|
+
return msg;
|
|
222
|
+
}
|
|
223
|
+
case 'Read': {
|
|
224
|
+
const file = shortPath(String(data.file_path || ''));
|
|
225
|
+
let msg = `👁 *Read*\n📄 \`${file}\``;
|
|
226
|
+
if (data.offset)
|
|
227
|
+
msg += `\n📍 Line ${data.offset}`;
|
|
228
|
+
if (data.limit)
|
|
229
|
+
msg += ` (+${data.limit} lines)`;
|
|
230
|
+
return msg;
|
|
231
|
+
}
|
|
232
|
+
case 'Bash': {
|
|
233
|
+
const cmd = String(data.command || '');
|
|
234
|
+
let msg = `💻 *Bash*\n\n\`\`\`bash\n${truncate(cmd, 1500)}\n\`\`\``;
|
|
235
|
+
if (data.timeout)
|
|
236
|
+
msg += `\n⏱ Timeout: ${data.timeout}ms`;
|
|
237
|
+
return msg;
|
|
238
|
+
}
|
|
239
|
+
case 'Grep': {
|
|
240
|
+
const pattern = String(data.pattern || '');
|
|
241
|
+
const path = data.path ? shortPath(String(data.path)) : 'cwd';
|
|
242
|
+
let msg = `🔍 *Grep*\n🎯 Pattern: \`${truncate(pattern, 100)}\`\n📂 Path: \`${path}\``;
|
|
243
|
+
if (data.glob)
|
|
244
|
+
msg += `\n📋 Glob: \`${data.glob}\``;
|
|
245
|
+
return msg;
|
|
246
|
+
}
|
|
247
|
+
case 'Glob': {
|
|
248
|
+
const pattern = String(data.pattern || '');
|
|
249
|
+
const path = data.path ? shortPath(String(data.path)) : 'cwd';
|
|
250
|
+
return `📂 *Glob*\n🎯 Pattern: \`${pattern}\`\n📂 Path: \`${path}\``;
|
|
251
|
+
}
|
|
252
|
+
case 'Task': {
|
|
253
|
+
const desc = String(data.description || '');
|
|
254
|
+
const prompt = String(data.prompt || '');
|
|
255
|
+
let msg = `🤖 *Task*\n📋 ${desc}`;
|
|
256
|
+
if (prompt) {
|
|
257
|
+
msg += `\n\n\`\`\`\n${truncate(prompt, 1000)}\n\`\`\``;
|
|
258
|
+
}
|
|
259
|
+
return msg;
|
|
260
|
+
}
|
|
261
|
+
case 'WebFetch': {
|
|
262
|
+
const url = String(data.url || '');
|
|
263
|
+
const prompt = String(data.prompt || '');
|
|
264
|
+
return `🌐 *WebFetch*\n🔗 \`${truncate(url, 100)}\`\n📝 ${truncate(prompt, 200)}`;
|
|
265
|
+
}
|
|
266
|
+
case 'WebSearch': {
|
|
267
|
+
const query = String(data.query || '');
|
|
268
|
+
return `🔎 *WebSearch*\n📝 "${query}"`;
|
|
269
|
+
}
|
|
270
|
+
case 'TodoWrite': {
|
|
271
|
+
const todos = data.todos;
|
|
272
|
+
if (!todos || !Array.isArray(todos))
|
|
273
|
+
return `📋 *TodoWrite*`;
|
|
274
|
+
let msg = `📋 *TodoWrite* (${todos.length} items)\n\n`;
|
|
275
|
+
const statusEmoji = {
|
|
276
|
+
'pending': '⬜',
|
|
277
|
+
'in_progress': '🔄',
|
|
278
|
+
'completed': '✅'
|
|
279
|
+
};
|
|
280
|
+
for (const todo of todos.slice(0, 10)) {
|
|
281
|
+
const emoji = statusEmoji[todo.status] || '⬜';
|
|
282
|
+
msg += `${emoji} ${truncate(todo.content, 60)}\n`;
|
|
283
|
+
}
|
|
284
|
+
if (todos.length > 10)
|
|
285
|
+
msg += `... +${todos.length - 10} more`;
|
|
286
|
+
return msg;
|
|
287
|
+
}
|
|
288
|
+
default: {
|
|
289
|
+
// Generic JSON fallback but nicely formatted
|
|
290
|
+
const jsonStr = JSON.stringify(input, null, 2);
|
|
291
|
+
return `🔧 *${tool}*\n\n\`\`\`json\n${truncate(jsonStr, 2000)}\n\`\`\``;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/bot/formatting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot Implementation
|
|
3
|
+
* Core bot using grammY with rate limiting and message queue
|
|
4
|
+
*/
|
|
5
|
+
import { Bot, Context, SessionFlavor } from 'grammy';
|
|
6
|
+
import { TelegramMirrorConfig } from '../utils/config.js';
|
|
7
|
+
import type { SendOptions, InlineButton } from './types.js';
|
|
8
|
+
interface SessionData {
|
|
9
|
+
attachedSessionId: string | null;
|
|
10
|
+
muted: boolean;
|
|
11
|
+
lastActivity: number;
|
|
12
|
+
}
|
|
13
|
+
type BotContext = Context & SessionFlavor<SessionData>;
|
|
14
|
+
/**
|
|
15
|
+
* Telegram Bot Class
|
|
16
|
+
*/
|
|
17
|
+
export declare class TelegramBot {
|
|
18
|
+
private bot;
|
|
19
|
+
private config;
|
|
20
|
+
private messageQueue;
|
|
21
|
+
private running;
|
|
22
|
+
private messageHandlers;
|
|
23
|
+
private callbackHandlers;
|
|
24
|
+
constructor(config?: TelegramMirrorConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Setup middleware
|
|
27
|
+
*/
|
|
28
|
+
private setupMiddleware;
|
|
29
|
+
/**
|
|
30
|
+
* Setup error handling
|
|
31
|
+
*/
|
|
32
|
+
private setupErrorHandling;
|
|
33
|
+
/**
|
|
34
|
+
* Setup message queue handler
|
|
35
|
+
*/
|
|
36
|
+
private setupMessageQueueHandler;
|
|
37
|
+
/**
|
|
38
|
+
* Start the bot
|
|
39
|
+
*/
|
|
40
|
+
start(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Stop the bot
|
|
43
|
+
*/
|
|
44
|
+
stop(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Send a message (queued with rate limiting)
|
|
47
|
+
*/
|
|
48
|
+
sendMessage(text: string, options?: SendOptions, threadId?: number): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Send message with inline buttons
|
|
51
|
+
*/
|
|
52
|
+
sendWithButtons(text: string, buttons: InlineButton[], options?: SendOptions, threadId?: number): Promise<void>;
|
|
53
|
+
private static readonly TOPIC_COLORS;
|
|
54
|
+
/**
|
|
55
|
+
* Create a forum topic for a session
|
|
56
|
+
* Returns the thread ID if successful, null if not supported
|
|
57
|
+
*/
|
|
58
|
+
createForumTopic(name: string, colorIndex?: number): Promise<number | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Close a forum topic
|
|
61
|
+
*/
|
|
62
|
+
closeForumTopic(threadId: number): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Register text message handler
|
|
65
|
+
*/
|
|
66
|
+
onMessage(handler: (text: string, chatId: number, threadId?: number) => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* Register callback query handler
|
|
69
|
+
*/
|
|
70
|
+
onCallback(handler: (data: string, chatId: number) => void): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get the underlying grammY bot instance
|
|
73
|
+
*/
|
|
74
|
+
getBot(): Bot<BotContext>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if bot is running
|
|
77
|
+
*/
|
|
78
|
+
isRunning(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Get session data for a chat
|
|
81
|
+
*/
|
|
82
|
+
getSession(_chatId: number): SessionData | null;
|
|
83
|
+
/**
|
|
84
|
+
* Update message (for editing after button press)
|
|
85
|
+
*/
|
|
86
|
+
editMessage(messageId: number, text: string, options?: SendOptions): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Remove inline keyboard from message
|
|
89
|
+
*/
|
|
90
|
+
removeKeyboard(messageId: number): Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
export default TelegramBot;
|
|
93
|
+
//# sourceMappingURL=telegram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/bot/telegram.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,aAAa,EAA0B,MAAM,QAAQ,CAAC;AAEtF,OAAO,EAAc,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGtE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAG9E,UAAU,WAAW;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAiEvD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAwE;IAC/F,OAAO,CAAC,gBAAgB,CAAqD;gBAEjE,MAAM,CAAC,EAAE,oBAAoB;IAUzC;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiEhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxF;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAOzB;IAEX;;;OAGG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBpF;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAkBnF;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAkBjE;;OAEG;IACH,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;IAIzB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAK/C;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWvD;AAED,eAAe,WAAW,CAAC"}
|