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.
Files changed (99) hide show
  1. package/README.md +331 -0
  2. package/dist/bot/commands.d.ts +41 -0
  3. package/dist/bot/commands.d.ts.map +1 -0
  4. package/dist/bot/commands.js +231 -0
  5. package/dist/bot/commands.js.map +1 -0
  6. package/dist/bot/formatting.d.ts +62 -0
  7. package/dist/bot/formatting.d.ts.map +1 -0
  8. package/dist/bot/formatting.js +295 -0
  9. package/dist/bot/formatting.js.map +1 -0
  10. package/dist/bot/telegram.d.ts +93 -0
  11. package/dist/bot/telegram.d.ts.map +1 -0
  12. package/dist/bot/telegram.js +378 -0
  13. package/dist/bot/telegram.js.map +1 -0
  14. package/dist/bot/types.d.ts +28 -0
  15. package/dist/bot/types.d.ts.map +1 -0
  16. package/dist/bot/types.js +5 -0
  17. package/dist/bot/types.js.map +1 -0
  18. package/dist/bridge/daemon.d.ts +93 -0
  19. package/dist/bridge/daemon.d.ts.map +1 -0
  20. package/dist/bridge/daemon.js +626 -0
  21. package/dist/bridge/daemon.js.map +1 -0
  22. package/dist/bridge/index.d.ts +10 -0
  23. package/dist/bridge/index.d.ts.map +1 -0
  24. package/dist/bridge/index.js +9 -0
  25. package/dist/bridge/index.js.map +1 -0
  26. package/dist/bridge/injector.d.ts +97 -0
  27. package/dist/bridge/injector.d.ts.map +1 -0
  28. package/dist/bridge/injector.js +289 -0
  29. package/dist/bridge/injector.js.map +1 -0
  30. package/dist/bridge/session.d.ts +108 -0
  31. package/dist/bridge/session.d.ts.map +1 -0
  32. package/dist/bridge/session.js +381 -0
  33. package/dist/bridge/session.js.map +1 -0
  34. package/dist/bridge/socket.d.ts +97 -0
  35. package/dist/bridge/socket.d.ts.map +1 -0
  36. package/dist/bridge/socket.js +436 -0
  37. package/dist/bridge/socket.js.map +1 -0
  38. package/dist/bridge/types.d.ts +38 -0
  39. package/dist/bridge/types.d.ts.map +1 -0
  40. package/dist/bridge/types.js +5 -0
  41. package/dist/bridge/types.js.map +1 -0
  42. package/dist/cli.d.ts +7 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +332 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/hooks/handler.d.ts +94 -0
  47. package/dist/hooks/handler.d.ts.map +1 -0
  48. package/dist/hooks/handler.js +431 -0
  49. package/dist/hooks/handler.js.map +1 -0
  50. package/dist/hooks/index.d.ts +8 -0
  51. package/dist/hooks/index.d.ts.map +1 -0
  52. package/dist/hooks/index.js +7 -0
  53. package/dist/hooks/index.js.map +1 -0
  54. package/dist/hooks/installer.d.ts +46 -0
  55. package/dist/hooks/installer.d.ts.map +1 -0
  56. package/dist/hooks/installer.js +317 -0
  57. package/dist/hooks/installer.js.map +1 -0
  58. package/dist/hooks/types.d.ts +88 -0
  59. package/dist/hooks/types.d.ts.map +1 -0
  60. package/dist/hooks/types.js +6 -0
  61. package/dist/hooks/types.js.map +1 -0
  62. package/dist/index.d.ts +19 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +20 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/service/doctor.d.ts +10 -0
  67. package/dist/service/doctor.d.ts.map +1 -0
  68. package/dist/service/doctor.js +424 -0
  69. package/dist/service/doctor.js.map +1 -0
  70. package/dist/service/manager.d.ts +48 -0
  71. package/dist/service/manager.d.ts.map +1 -0
  72. package/dist/service/manager.js +584 -0
  73. package/dist/service/manager.js.map +1 -0
  74. package/dist/service/setup.d.ts +10 -0
  75. package/dist/service/setup.d.ts.map +1 -0
  76. package/dist/service/setup.js +266 -0
  77. package/dist/service/setup.js.map +1 -0
  78. package/dist/utils/chunker.d.ts +24 -0
  79. package/dist/utils/chunker.d.ts.map +1 -0
  80. package/dist/utils/chunker.js +123 -0
  81. package/dist/utils/chunker.js.map +1 -0
  82. package/dist/utils/config.d.ts +48 -0
  83. package/dist/utils/config.d.ts.map +1 -0
  84. package/dist/utils/config.js +154 -0
  85. package/dist/utils/config.js.map +1 -0
  86. package/dist/utils/logger.d.ts +7 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +28 -0
  89. package/dist/utils/logger.js.map +1 -0
  90. package/package.json +88 -0
  91. package/postinstall.cjs +76 -0
  92. package/scripts/claude-wrapper.sh +122 -0
  93. package/scripts/doctor.sh +433 -0
  94. package/scripts/get-chat-id.sh +64 -0
  95. package/scripts/global-hooks.sh +39 -0
  96. package/scripts/install.sh +831 -0
  97. package/scripts/start-daemon.sh +49 -0
  98. package/scripts/telegram-hook.sh +449 -0
  99. package/scripts/uninstall.sh +261 -0
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Telegram Bot Implementation
3
+ * Core bot using grammY with rate limiting and message queue
4
+ */
5
+ import { Bot, session, GrammyError, HttpError } from 'grammy';
6
+ import { InlineKeyboard } from 'grammy';
7
+ import { loadConfig } from '../utils/config.js';
8
+ import { chunkMessage } from '../utils/chunker.js';
9
+ import logger from '../utils/logger.js';
10
+ /**
11
+ * Message queue for rate limiting
12
+ */
13
+ class MessageQueue {
14
+ queue = [];
15
+ processing = false;
16
+ rateLimit;
17
+ constructor(rateLimit = 1) {
18
+ this.rateLimit = rateLimit;
19
+ }
20
+ add(item) {
21
+ this.queue.push({
22
+ ...item,
23
+ retries: 0,
24
+ createdAt: new Date()
25
+ });
26
+ this.process();
27
+ }
28
+ async process() {
29
+ if (this.processing || this.queue.length === 0)
30
+ return;
31
+ this.processing = true;
32
+ while (this.queue.length > 0) {
33
+ const item = this.queue.shift();
34
+ try {
35
+ await this.sendItem(item);
36
+ }
37
+ catch (error) {
38
+ if (item.retries < 3) {
39
+ item.retries++;
40
+ // Exponential backoff
41
+ await this.delay(1000 * Math.pow(2, item.retries));
42
+ this.queue.unshift(item);
43
+ }
44
+ else {
45
+ logger.error('Failed to send message after retries', { error });
46
+ }
47
+ }
48
+ // Rate limiting delay
49
+ await this.delay(1000 / this.rateLimit);
50
+ }
51
+ this.processing = false;
52
+ }
53
+ async sendItem(_item) {
54
+ // Implemented by TelegramBot class
55
+ throw new Error('sendItem must be implemented');
56
+ }
57
+ delay(ms) {
58
+ return new Promise(resolve => setTimeout(resolve, ms));
59
+ }
60
+ setHandler(handler) {
61
+ this.sendItem = handler;
62
+ }
63
+ }
64
+ /**
65
+ * Telegram Bot Class
66
+ */
67
+ export class TelegramBot {
68
+ bot;
69
+ config;
70
+ messageQueue;
71
+ running = false;
72
+ messageHandlers = [];
73
+ callbackHandlers = [];
74
+ constructor(config) {
75
+ this.config = config || loadConfig();
76
+ this.bot = new Bot(this.config.botToken);
77
+ this.messageQueue = new MessageQueue(this.config.rateLimit);
78
+ this.setupMiddleware();
79
+ this.setupErrorHandling();
80
+ this.setupMessageQueueHandler();
81
+ }
82
+ /**
83
+ * Setup middleware
84
+ */
85
+ setupMiddleware() {
86
+ // Session middleware
87
+ this.bot.use(session({
88
+ initial: () => ({
89
+ attachedSessionId: null,
90
+ muted: false,
91
+ lastActivity: Date.now()
92
+ })
93
+ }));
94
+ // Security: Only respond to configured chat
95
+ this.bot.use(async (ctx, next) => {
96
+ const chatId = ctx.chat?.id;
97
+ if (chatId && chatId !== this.config.chatId) {
98
+ logger.warn('Unauthorized access attempt', { chatId });
99
+ await ctx.reply('⛔ Unauthorized. This bot is private.');
100
+ return;
101
+ }
102
+ // Update activity timestamp
103
+ if (ctx.session) {
104
+ ctx.session.lastActivity = Date.now();
105
+ }
106
+ await next();
107
+ });
108
+ }
109
+ /**
110
+ * Setup error handling
111
+ */
112
+ setupErrorHandling() {
113
+ this.bot.catch((err) => {
114
+ const ctx = err.ctx;
115
+ const error = err.error;
116
+ logger.error('Bot error', {
117
+ updateType: ctx.update.update_id,
118
+ error: error instanceof Error ? error.message : String(error)
119
+ });
120
+ if (error instanceof GrammyError) {
121
+ logger.error('Telegram API error', {
122
+ code: error.error_code,
123
+ description: error.description
124
+ });
125
+ }
126
+ else if (error instanceof HttpError) {
127
+ logger.error('Network error', { error: error.message });
128
+ }
129
+ });
130
+ }
131
+ /**
132
+ * Setup message queue handler
133
+ */
134
+ setupMessageQueueHandler() {
135
+ this.messageQueue.setHandler(async (item) => {
136
+ const threadId = item.threadId || item.options?.threadId;
137
+ const parseMode = item.options?.parseMode || 'Markdown';
138
+ try {
139
+ if (item.buttons && item.buttons.length > 0) {
140
+ const keyboard = new InlineKeyboard();
141
+ item.buttons.forEach((btn, idx) => {
142
+ keyboard.text(btn.text, btn.callbackData);
143
+ if ((idx + 1) % 2 === 0)
144
+ keyboard.row();
145
+ });
146
+ await this.bot.api.sendMessage(item.chatId, item.text, {
147
+ parse_mode: parseMode,
148
+ disable_notification: item.options?.disableNotification,
149
+ message_thread_id: threadId,
150
+ reply_markup: keyboard
151
+ });
152
+ }
153
+ else {
154
+ await this.bot.api.sendMessage(item.chatId, item.text, {
155
+ parse_mode: parseMode,
156
+ disable_notification: item.options?.disableNotification,
157
+ message_thread_id: threadId
158
+ });
159
+ }
160
+ }
161
+ catch (error) {
162
+ // If Markdown parsing failed, retry without parse_mode (plain text)
163
+ if (error instanceof GrammyError && error.error_code === 400 &&
164
+ error.description.includes("can't parse entities")) {
165
+ logger.warn('Markdown parsing failed, retrying as plain text', {
166
+ error: error.description
167
+ });
168
+ // Strip markdown formatting for plain text fallback
169
+ const plainText = item.text
170
+ .replace(/\*\*/g, '') // Remove bold **
171
+ .replace(/\*/g, '') // Remove italic *
172
+ .replace(/`/g, "'") // Replace backticks with quotes
173
+ .replace(/_/g, ''); // Remove underscores
174
+ if (item.buttons && item.buttons.length > 0) {
175
+ const keyboard = new InlineKeyboard();
176
+ item.buttons.forEach((btn, idx) => {
177
+ keyboard.text(btn.text, btn.callbackData);
178
+ if ((idx + 1) % 2 === 0)
179
+ keyboard.row();
180
+ });
181
+ await this.bot.api.sendMessage(item.chatId, plainText, {
182
+ disable_notification: item.options?.disableNotification,
183
+ message_thread_id: threadId,
184
+ reply_markup: keyboard
185
+ });
186
+ }
187
+ else {
188
+ await this.bot.api.sendMessage(item.chatId, plainText, {
189
+ disable_notification: item.options?.disableNotification,
190
+ message_thread_id: threadId
191
+ });
192
+ }
193
+ }
194
+ else {
195
+ throw error; // Re-throw other errors for retry logic
196
+ }
197
+ }
198
+ });
199
+ }
200
+ /**
201
+ * Start the bot
202
+ */
203
+ async start() {
204
+ if (this.running) {
205
+ logger.warn('Bot already running');
206
+ return;
207
+ }
208
+ logger.info('Starting Telegram bot...');
209
+ this.running = true;
210
+ // Start long polling
211
+ this.bot.start({
212
+ onStart: (botInfo) => {
213
+ logger.info(`Bot started: @${botInfo.username}`);
214
+ }
215
+ });
216
+ }
217
+ /**
218
+ * Stop the bot
219
+ */
220
+ async stop() {
221
+ if (!this.running)
222
+ return;
223
+ logger.info('Stopping Telegram bot...');
224
+ this.running = false;
225
+ await this.bot.stop();
226
+ }
227
+ /**
228
+ * Send a message (queued with rate limiting)
229
+ */
230
+ async sendMessage(text, options, threadId) {
231
+ // Chunk long messages
232
+ const chunks = chunkMessage(text, { maxLength: this.config.chunkSize });
233
+ for (const chunk of chunks) {
234
+ this.messageQueue.add({
235
+ chatId: this.config.chatId,
236
+ text: chunk,
237
+ options,
238
+ threadId: threadId || options?.threadId
239
+ });
240
+ }
241
+ }
242
+ /**
243
+ * Send message with inline buttons
244
+ */
245
+ async sendWithButtons(text, buttons, options, threadId) {
246
+ this.messageQueue.add({
247
+ chatId: this.config.chatId,
248
+ text,
249
+ options,
250
+ buttons,
251
+ threadId: threadId || options?.threadId
252
+ });
253
+ }
254
+ // Valid forum topic icon colors (Telegram API requirement)
255
+ static TOPIC_COLORS = [
256
+ 0x6FB9F0, // Blue
257
+ 0xFFD67E, // Yellow
258
+ 0xCB86DB, // Purple
259
+ 0x8EEE98, // Green
260
+ 0xFF93B2, // Pink
261
+ 0xFB6F5F // Red
262
+ ];
263
+ /**
264
+ * Create a forum topic for a session
265
+ * Returns the thread ID if successful, null if not supported
266
+ */
267
+ async createForumTopic(name, colorIndex = 0) {
268
+ if (!this.config.useThreads) {
269
+ return null;
270
+ }
271
+ try {
272
+ // Use a valid color from the allowed list
273
+ const iconColor = TelegramBot.TOPIC_COLORS[colorIndex % TelegramBot.TOPIC_COLORS.length];
274
+ const result = await this.bot.api.createForumTopic(this.config.chatId, name, { icon_color: iconColor });
275
+ logger.info('Created forum topic', { name, threadId: result.message_thread_id });
276
+ return result.message_thread_id;
277
+ }
278
+ catch (error) {
279
+ // Forum topics not supported (not a supergroup with topics enabled)
280
+ logger.debug('Forum topics not supported', { error });
281
+ return null;
282
+ }
283
+ }
284
+ /**
285
+ * Close a forum topic
286
+ */
287
+ async closeForumTopic(threadId) {
288
+ try {
289
+ await this.bot.api.closeForumTopic(this.config.chatId, threadId);
290
+ logger.info('Closed forum topic', { threadId });
291
+ return true;
292
+ }
293
+ catch (error) {
294
+ logger.debug('Failed to close forum topic', { threadId, error });
295
+ return false;
296
+ }
297
+ }
298
+ /**
299
+ * Register text message handler
300
+ */
301
+ onMessage(handler) {
302
+ this.messageHandlers.push(handler);
303
+ // Only register once
304
+ if (this.messageHandlers.length === 1) {
305
+ this.bot.on('message:text', (ctx) => {
306
+ const text = ctx.message.text;
307
+ const chatId = ctx.chat.id;
308
+ const threadId = ctx.message.message_thread_id;
309
+ // Skip commands
310
+ if (text.startsWith('/'))
311
+ return;
312
+ this.messageHandlers.forEach(h => h(text, chatId, threadId));
313
+ });
314
+ }
315
+ }
316
+ /**
317
+ * Register callback query handler
318
+ */
319
+ onCallback(handler) {
320
+ this.callbackHandlers.push(handler);
321
+ // Only register once
322
+ if (this.callbackHandlers.length === 1) {
323
+ this.bot.on('callback_query:data', async (ctx) => {
324
+ const data = ctx.callbackQuery.data;
325
+ const chatId = ctx.chat?.id;
326
+ if (chatId) {
327
+ this.callbackHandlers.forEach(h => h(data, chatId));
328
+ }
329
+ await ctx.answerCallbackQuery();
330
+ });
331
+ }
332
+ }
333
+ /**
334
+ * Get the underlying grammY bot instance
335
+ */
336
+ getBot() {
337
+ return this.bot;
338
+ }
339
+ /**
340
+ * Check if bot is running
341
+ */
342
+ isRunning() {
343
+ return this.running;
344
+ }
345
+ /**
346
+ * Get session data for a chat
347
+ */
348
+ getSession(_chatId) {
349
+ // Note: This would need proper session storage for production
350
+ return null;
351
+ }
352
+ /**
353
+ * Update message (for editing after button press)
354
+ */
355
+ async editMessage(messageId, text, options) {
356
+ try {
357
+ await this.bot.api.editMessageText(this.config.chatId, messageId, text, {
358
+ parse_mode: options?.parseMode || 'Markdown'
359
+ });
360
+ }
361
+ catch (error) {
362
+ logger.error('Failed to edit message', { messageId, error });
363
+ }
364
+ }
365
+ /**
366
+ * Remove inline keyboard from message
367
+ */
368
+ async removeKeyboard(messageId) {
369
+ try {
370
+ await this.bot.api.editMessageReplyMarkup(this.config.chatId, messageId, { reply_markup: undefined });
371
+ }
372
+ catch (error) {
373
+ logger.error('Failed to remove keyboard', { messageId, error });
374
+ }
375
+ }
376
+ }
377
+ export default TelegramBot;
378
+ //# sourceMappingURL=telegram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/bot/telegram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Telegram Bot Types
3
+ */
4
+ export interface SendOptions {
5
+ parseMode?: 'Markdown' | 'MarkdownV2' | 'HTML';
6
+ disableNotification?: boolean;
7
+ replyToMessageId?: number;
8
+ threadId?: number;
9
+ }
10
+ export interface InlineButton {
11
+ text: string;
12
+ callbackData: string;
13
+ }
14
+ export interface BotSession {
15
+ attachedSessionId: string | null;
16
+ muted: boolean;
17
+ lastActivity: Date;
18
+ }
19
+ export interface MessageQueueItem {
20
+ chatId: number;
21
+ text: string;
22
+ options?: SendOptions;
23
+ buttons?: InlineButton[];
24
+ threadId?: number;
25
+ retries: number;
26
+ createdAt: Date;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bot/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Telegram Bot Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bot/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Bridge Daemon
3
+ * Central coordinator for Claude Code ↔ Telegram bridge
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { TelegramMirrorConfig } from '../utils/config.js';
7
+ /**
8
+ * Bridge Daemon Class
9
+ * Orchestrates all components
10
+ */
11
+ export declare class BridgeDaemon extends EventEmitter {
12
+ private config;
13
+ private bot;
14
+ private socket;
15
+ private sessions;
16
+ private injector;
17
+ private running;
18
+ private cleanupInterval;
19
+ private sessionThreads;
20
+ private sessionTmuxTargets;
21
+ private recentTelegramInputs;
22
+ private toolInputCache;
23
+ private compactingSessions;
24
+ constructor(config?: TelegramMirrorConfig);
25
+ /**
26
+ * Start the daemon
27
+ */
28
+ start(): Promise<void>;
29
+ /**
30
+ * Setup socket message handlers (CLI → Telegram)
31
+ */
32
+ private setupSocketHandlers;
33
+ /**
34
+ * Check if text is a stop/interrupt command
35
+ */
36
+ private isStopCommand;
37
+ /**
38
+ * Setup bot message handlers (Telegram → CLI)
39
+ */
40
+ private setupBotHandlers;
41
+ private handleSessionStart;
42
+ /**
43
+ * Format topic name for a session
44
+ */
45
+ private formatTopicName;
46
+ /**
47
+ * Ensure a session exists (create on-the-fly if needed)
48
+ * This handles the case where events arrive before session_start.
49
+ *
50
+ * IMPORTANT: This function ONLY creates the session entry in the database.
51
+ * Topic creation is the responsibility of handleSessionStart() alone.
52
+ * Messages arriving before the topic is created will go to General.
53
+ */
54
+ private ensureSessionExists;
55
+ /**
56
+ * Get thread ID for a session
57
+ */
58
+ private getSessionThreadId;
59
+ private handleSessionEnd;
60
+ private handleAgentResponse;
61
+ private handleToolStart;
62
+ /**
63
+ * Truncate file path to show basename and parent
64
+ */
65
+ private truncatePath;
66
+ private handleToolResult;
67
+ private handleUserInput;
68
+ private handleApprovalRequest;
69
+ private handleError;
70
+ private handlePreCompact;
71
+ private handleCompactComplete;
72
+ /**
73
+ * Stop the daemon
74
+ */
75
+ stop(): Promise<void>;
76
+ /**
77
+ * Check if daemon is running
78
+ */
79
+ isRunning(): boolean;
80
+ /**
81
+ * Get daemon status
82
+ */
83
+ getStatus(): {
84
+ running: boolean;
85
+ clients: number;
86
+ sessions: {
87
+ activeSessions: number;
88
+ pendingApprovals: number;
89
+ };
90
+ };
91
+ }
92
+ export default BridgeDaemon;
93
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/bridge/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,EAAc,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAYtE;;;GAGG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,cAAc,CAA+E;IACrG,OAAO,CAAC,kBAAkB,CAA0B;gBAExC,MAAM,CAAC,EAAE,oBAAoB;IASzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8G5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8E3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,gBAAgB;YA4GV,kBAAkB;IAkEhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;;;;;;OAOG;YACW,mBAAmB;IAmCjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;YAeZ,gBAAgB;YA0BhB,mBAAmB;YASnB,eAAe;IA6D7B;;OAEG;IACH,OAAO,CAAC,YAAY;YAMN,gBAAgB;YAehB,eAAe;YAsCf,qBAAqB;YAgBrB,WAAW;YASX,gBAAgB;YAqBhB,qBAAqB;IAenC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,CAAC;KAChE;CAOF;AAED,eAAe,YAAY,CAAC"}