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,431 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Claude Code Hook Handler
4
+ * Captures hook events and sends to bridge daemon
5
+ */
6
+ import { hostname as getHostname, homedir } from 'os';
7
+ import { execSync } from 'child_process';
8
+ import { existsSync, writeFileSync, unlinkSync, mkdirSync } from 'fs';
9
+ import { join } from 'path';
10
+ import { SocketClient, DEFAULT_SOCKET_PATH } from '../bridge/socket.js';
11
+ /**
12
+ * Hook Handler Class
13
+ * Processes Claude Code hook events and forwards to bridge
14
+ */
15
+ export class HookHandler {
16
+ client;
17
+ config;
18
+ connected = false;
19
+ sessionId;
20
+ constructor(config = {}) {
21
+ this.config = {
22
+ socketPath: config.socketPath || DEFAULT_SOCKET_PATH,
23
+ sessionId: config.sessionId,
24
+ verbose: config.verbose || process.env.TELEGRAM_MIRROR_VERBOSE === 'true'
25
+ };
26
+ this.client = new SocketClient(this.config.socketPath);
27
+ this.sessionId = this.config.sessionId || this.generateSessionId();
28
+ }
29
+ /**
30
+ * Generate a unique session ID
31
+ */
32
+ generateSessionId() {
33
+ const timestamp = Date.now().toString(36);
34
+ const random = Math.random().toString(36).slice(2, 8);
35
+ return `hook-${timestamp}-${random}`;
36
+ }
37
+ /**
38
+ * Connect to bridge daemon
39
+ */
40
+ async connect() {
41
+ try {
42
+ await this.client.connect();
43
+ this.connected = true;
44
+ return true;
45
+ }
46
+ catch (error) {
47
+ // Bridge not running - gracefully continue
48
+ if (this.config.verbose) {
49
+ console.error('[telegram-hook] Bridge not available:', error.message);
50
+ }
51
+ return false;
52
+ }
53
+ }
54
+ /**
55
+ * Disconnect from bridge
56
+ */
57
+ disconnect() {
58
+ this.client.disconnect();
59
+ this.connected = false;
60
+ }
61
+ /**
62
+ * Send message to bridge
63
+ */
64
+ send(message) {
65
+ if (!this.connected)
66
+ return false;
67
+ return this.client.send(message);
68
+ }
69
+ /**
70
+ * Handle session start (first hook event)
71
+ */
72
+ async handleSessionStart(projectDir) {
73
+ if (!await this.connect())
74
+ return;
75
+ const hostname = getHostname();
76
+ const tmuxInfo = this.detectTmuxSession();
77
+ this.send({
78
+ type: 'session_start',
79
+ sessionId: this.sessionId,
80
+ timestamp: new Date().toISOString(),
81
+ content: 'Claude Code session started',
82
+ metadata: {
83
+ projectDir: projectDir || process.cwd(),
84
+ hostname,
85
+ tmuxSession: tmuxInfo.session,
86
+ tmuxPane: tmuxInfo.pane,
87
+ tmuxTarget: tmuxInfo.target
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Detect current tmux session and pane
93
+ */
94
+ detectTmuxSession() {
95
+ // Check if we're inside tmux
96
+ if (!process.env.TMUX) {
97
+ return { session: null, pane: null, target: null };
98
+ }
99
+ try {
100
+ const session = execSync('tmux display-message -p "#S"', { encoding: 'utf8' }).trim();
101
+ const pane = execSync('tmux display-message -p "#P"', { encoding: 'utf8' }).trim();
102
+ const windowIndex = execSync('tmux display-message -p "#I"', { encoding: 'utf8' }).trim();
103
+ // Full target for send-keys: session:window.pane
104
+ const target = `${session}:${windowIndex}.${pane}`;
105
+ return { session, pane, target };
106
+ }
107
+ catch {
108
+ return { session: null, pane: null, target: null };
109
+ }
110
+ }
111
+ /**
112
+ * Handle session end
113
+ */
114
+ handleSessionEnd() {
115
+ if (!this.connected)
116
+ return;
117
+ this.send({
118
+ type: 'session_end',
119
+ sessionId: this.sessionId,
120
+ timestamp: new Date().toISOString(),
121
+ content: 'Claude Code session ended'
122
+ });
123
+ this.disconnect();
124
+ }
125
+ /**
126
+ * Handle Stop hook
127
+ */
128
+ handleStop(event) {
129
+ if (!this.connected)
130
+ return;
131
+ // Send final response if available
132
+ if (event.transcript_summary) {
133
+ this.send({
134
+ type: 'agent_response',
135
+ sessionId: this.sessionId,
136
+ timestamp: event.timestamp,
137
+ content: event.transcript_summary
138
+ });
139
+ }
140
+ // Send session end
141
+ this.send({
142
+ type: 'session_end',
143
+ sessionId: this.sessionId,
144
+ timestamp: event.timestamp,
145
+ content: 'Session stopped'
146
+ });
147
+ }
148
+ /**
149
+ * Handle PreToolUse hook
150
+ * Returns approval decision if interactive mode enabled
151
+ */
152
+ async handlePreToolUse(event) {
153
+ if (!this.connected)
154
+ return null;
155
+ // Check if this tool requires approval
156
+ const requiresApproval = this.toolRequiresApproval(event.tool_name, event.tool_input);
157
+ if (requiresApproval) {
158
+ // Format approval request
159
+ const toolDescription = this.formatToolDescription(event.tool_name, event.tool_input);
160
+ this.send({
161
+ type: 'approval_request',
162
+ sessionId: this.sessionId,
163
+ timestamp: event.timestamp,
164
+ content: toolDescription,
165
+ metadata: {
166
+ tool: event.tool_name,
167
+ input: event.tool_input,
168
+ hookId: event.hook_id
169
+ }
170
+ });
171
+ // Wait for response from bridge
172
+ try {
173
+ const response = await this.client.sendAndWait({
174
+ type: 'approval_request',
175
+ sessionId: this.sessionId,
176
+ timestamp: event.timestamp,
177
+ content: toolDescription,
178
+ metadata: { hookId: event.hook_id }
179
+ }, 300000); // 5 minute timeout
180
+ if (response.type === 'approval_response') {
181
+ return { decision: response.content === 'approve' ? 'approve' : 'reject' };
182
+ }
183
+ }
184
+ catch (error) {
185
+ // Timeout or error - default to approve
186
+ if (this.config.verbose) {
187
+ console.error('[telegram-hook] Approval timeout, defaulting to approve');
188
+ }
189
+ }
190
+ }
191
+ return null;
192
+ }
193
+ /**
194
+ * Handle PostToolUse hook
195
+ */
196
+ handlePostToolUse(event) {
197
+ if (!this.connected)
198
+ return;
199
+ // Only send if verbose mode or significant output
200
+ if (this.config.verbose || this.isSignificantOutput(event.tool_output)) {
201
+ this.send({
202
+ type: 'tool_result',
203
+ sessionId: this.sessionId,
204
+ timestamp: event.timestamp,
205
+ content: event.tool_output || event.tool_error || 'No output',
206
+ metadata: {
207
+ tool: event.tool_name,
208
+ input: event.tool_input,
209
+ error: event.tool_error
210
+ }
211
+ });
212
+ }
213
+ }
214
+ /**
215
+ * Handle Notification hook
216
+ */
217
+ handleNotification(event) {
218
+ if (!this.connected)
219
+ return;
220
+ // Map notification levels
221
+ const type = event.level === 'error' ? 'error' : 'agent_response';
222
+ this.send({
223
+ type,
224
+ sessionId: this.sessionId,
225
+ timestamp: event.timestamp,
226
+ content: event.message,
227
+ metadata: { level: event.level }
228
+ });
229
+ }
230
+ /**
231
+ * Handle UserPromptSubmit hook
232
+ */
233
+ handleUserPromptSubmit(event) {
234
+ if (!this.connected)
235
+ return;
236
+ // Mirror user prompts to Telegram
237
+ this.send({
238
+ type: 'user_input',
239
+ sessionId: this.sessionId,
240
+ timestamp: event.timestamp,
241
+ content: event.prompt,
242
+ metadata: { source: 'cli' }
243
+ });
244
+ }
245
+ /**
246
+ * Handle agent text response (assistant message)
247
+ */
248
+ handleAgentResponse(text) {
249
+ if (!this.connected)
250
+ return;
251
+ this.send({
252
+ type: 'agent_response',
253
+ sessionId: this.sessionId,
254
+ timestamp: new Date().toISOString(),
255
+ content: text
256
+ });
257
+ }
258
+ /**
259
+ * Check if tool requires approval
260
+ */
261
+ toolRequiresApproval(toolName, input) {
262
+ // Tools that modify files or execute commands need approval
263
+ const dangerousTools = ['Write', 'Edit', 'Bash', 'MultiEdit'];
264
+ if (!dangerousTools.includes(toolName)) {
265
+ return false;
266
+ }
267
+ // Additional checks for Bash
268
+ if (toolName === 'Bash') {
269
+ const command = input.command || '';
270
+ // Skip approval for safe commands
271
+ const safeCommands = ['ls', 'pwd', 'cat', 'head', 'tail', 'echo', 'grep', 'find', 'which'];
272
+ const firstWord = command.split(/\s+/)[0];
273
+ if (safeCommands.includes(firstWord)) {
274
+ return false;
275
+ }
276
+ }
277
+ return true;
278
+ }
279
+ /**
280
+ * Format tool description for approval request
281
+ */
282
+ formatToolDescription(toolName, input) {
283
+ let description = `🔧 **Tool:** \`${toolName}\`\n\n`;
284
+ switch (toolName) {
285
+ case 'Write':
286
+ description += `📝 **File:** \`${input.file_path}\`\n`;
287
+ description += `**Content preview:**\n\`\`\`\n${String(input.content).slice(0, 500)}${String(input.content).length > 500 ? '...' : ''}\n\`\`\``;
288
+ break;
289
+ case 'Edit':
290
+ description += `✏️ **File:** \`${input.file_path}\`\n`;
291
+ description += `**Old:** \`\`\`${String(input.old_string).slice(0, 200)}\`\`\`\n`;
292
+ description += `**New:** \`\`\`${String(input.new_string).slice(0, 200)}\`\`\``;
293
+ break;
294
+ case 'Bash':
295
+ description += `💻 **Command:**\n\`\`\`bash\n${input.command}\n\`\`\``;
296
+ break;
297
+ default:
298
+ description += `**Input:**\n\`\`\`json\n${JSON.stringify(input, null, 2).slice(0, 500)}\n\`\`\``;
299
+ }
300
+ return description;
301
+ }
302
+ /**
303
+ * Check if output is significant enough to send
304
+ */
305
+ isSignificantOutput(output) {
306
+ if (!output)
307
+ return false;
308
+ if (output.length < 10)
309
+ return false;
310
+ // Skip empty or minimal outputs
311
+ if (/^\s*$/.test(output))
312
+ return false;
313
+ return true;
314
+ }
315
+ /**
316
+ * Process raw hook event from stdin
317
+ */
318
+ async processEvent(event) {
319
+ switch (event.type) {
320
+ case 'Stop':
321
+ this.handleStop(event);
322
+ return null;
323
+ case 'SubagentStop':
324
+ // Just log for now
325
+ return null;
326
+ case 'PreToolUse':
327
+ const result = await this.handlePreToolUse(event);
328
+ if (result) {
329
+ // Return decision as JSON for hook script
330
+ return JSON.stringify({ decision: result.decision });
331
+ }
332
+ return null;
333
+ case 'PostToolUse':
334
+ this.handlePostToolUse(event);
335
+ return null;
336
+ case 'Notification':
337
+ this.handleNotification(event);
338
+ return null;
339
+ case 'UserPromptSubmit':
340
+ this.handleUserPromptSubmit(event);
341
+ return null;
342
+ default:
343
+ if (this.config.verbose) {
344
+ console.error('[telegram-hook] Unknown event type:', event.type);
345
+ }
346
+ return null;
347
+ }
348
+ }
349
+ }
350
+ // Session tracking file to detect first event
351
+ function getSessionTrackingPath() {
352
+ const configDir = join(homedir(), '.config', 'claude-telegram-mirror');
353
+ if (!existsSync(configDir)) {
354
+ mkdirSync(configDir, { recursive: true });
355
+ }
356
+ // Use a unique file per terminal/PTY to handle multiple sessions
357
+ const ttyId = process.env.TTY || process.env.SSH_TTY || process.ppid?.toString() || 'default';
358
+ const safeId = ttyId.replace(/[^a-zA-Z0-9]/g, '_');
359
+ return join(configDir, `.session_active_${safeId}`);
360
+ }
361
+ function isFirstEventOfSession() {
362
+ const trackingPath = getSessionTrackingPath();
363
+ if (existsSync(trackingPath)) {
364
+ return false;
365
+ }
366
+ // Mark session as started
367
+ writeFileSync(trackingPath, Date.now().toString());
368
+ return true;
369
+ }
370
+ function clearSessionTracking() {
371
+ const trackingPath = getSessionTrackingPath();
372
+ try {
373
+ if (existsSync(trackingPath)) {
374
+ unlinkSync(trackingPath);
375
+ }
376
+ }
377
+ catch {
378
+ // Ignore cleanup errors
379
+ }
380
+ }
381
+ /**
382
+ * Main CLI entry point for hook processing
383
+ */
384
+ export async function main() {
385
+ const handler = new HookHandler();
386
+ // Read event from stdin
387
+ let input = '';
388
+ process.stdin.setEncoding('utf8');
389
+ for await (const chunk of process.stdin) {
390
+ input += chunk;
391
+ }
392
+ if (!input.trim()) {
393
+ process.exit(0);
394
+ }
395
+ try {
396
+ const event = JSON.parse(input);
397
+ // Check if this is the first event of the session
398
+ const isFirstEvent = isFirstEventOfSession();
399
+ // Connect to bridge
400
+ const connected = await handler.connect();
401
+ if (!connected) {
402
+ // Bridge not running, just exit silently
403
+ process.exit(0);
404
+ }
405
+ // On first event, trigger session start
406
+ if (isFirstEvent) {
407
+ await handler.handleSessionStart(process.cwd());
408
+ }
409
+ // Clean up session tracking on Stop event
410
+ if (event.type === 'Stop') {
411
+ clearSessionTracking();
412
+ }
413
+ // Process event
414
+ const result = await handler.processEvent(event);
415
+ // Output result if any
416
+ if (result) {
417
+ process.stdout.write(result);
418
+ }
419
+ handler.disconnect();
420
+ }
421
+ catch (error) {
422
+ console.error('[telegram-hook] Error processing event:', error);
423
+ process.exit(1);
424
+ }
425
+ }
426
+ // Run if executed directly
427
+ if (import.meta.url === `file://${process.argv[1]}`) {
428
+ main().catch(console.error);
429
+ }
430
+ export default HookHandler;
431
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/hooks/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hooks Module
3
+ * Exports all hook-related functionality
4
+ */
5
+ export { HookHandler, main as processHook } from './handler.js';
6
+ export { installHooks, uninstallHooks, checkHookStatus, printHookStatus } from './installer.js';
7
+ export type { HookEventType, HookEvent, AnyHookEvent, HookHandlerConfig, HookResult, StopHookEvent, SubagentStopHookEvent, PreToolUseHookEvent, PostToolUseHookEvent, NotificationHookEvent, UserPromptSubmitHookEvent } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChG,YAAY,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hooks Module
3
+ * Exports all hook-related functionality
4
+ */
5
+ export { HookHandler, main as processHook } from './handler.js';
6
+ export { installHooks, uninstallHooks, checkHookStatus, printHookStatus } from './installer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Hook Installer
3
+ * Installs Claude Code hooks for Telegram mirror integration
4
+ */
5
+ /**
6
+ * Install Telegram hooks
7
+ */
8
+ export declare function installHooks(options?: {
9
+ force?: boolean;
10
+ project?: boolean;
11
+ }): {
12
+ success: boolean;
13
+ installed: string[];
14
+ skipped: string[];
15
+ settingsPath: string;
16
+ error?: string;
17
+ };
18
+ /**
19
+ * Uninstall Telegram hooks
20
+ */
21
+ export declare function uninstallHooks(): {
22
+ success: boolean;
23
+ removed: string[];
24
+ error?: string;
25
+ };
26
+ /**
27
+ * Check hook installation status
28
+ */
29
+ export declare function checkHookStatus(): {
30
+ installed: boolean;
31
+ hooks: string[];
32
+ scriptPath?: string;
33
+ error?: string;
34
+ };
35
+ /**
36
+ * Print hook status
37
+ */
38
+ export declare function printHookStatus(): void;
39
+ declare const _default: {
40
+ installHooks: typeof installHooks;
41
+ uninstallHooks: typeof uninstallHooks;
42
+ checkHookStatus: typeof checkHookStatus;
43
+ printHookStatus: typeof printHookStatus;
44
+ };
45
+ export default _default;
46
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/hooks/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwJH;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG;IAClF,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CA2FA;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAqDA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CA6CA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAuBtC;;;;;;;AAED,wBAKE"}