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,584 @@
1
+ /**
2
+ * Service Manager
3
+ * Handles systemd (Linux) and launchd (macOS) service installation
4
+ */
5
+ import { existsSync, mkdirSync, writeFileSync, unlinkSync, readFileSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { homedir, platform } from 'os';
8
+ import { execSync } from 'child_process';
9
+ const SERVICE_NAME = 'claude-telegram-mirror';
10
+ // Paths
11
+ const SYSTEMD_USER_DIR = join(homedir(), '.config', 'systemd', 'user');
12
+ const SYSTEMD_SERVICE_FILE = join(SYSTEMD_USER_DIR, `${SERVICE_NAME}.service`);
13
+ const LAUNCHD_DIR = join(homedir(), 'Library', 'LaunchAgents');
14
+ const LAUNCHD_PLIST = join(LAUNCHD_DIR, `com.claude.${SERVICE_NAME}.plist`);
15
+ const ENV_FILE = join(homedir(), '.telegram-env');
16
+ const SYSTEMD_ENV_FILE = join(homedir(), '.config', SERVICE_NAME, 'env');
17
+ /**
18
+ * Parse environment file and return clean key=value pairs
19
+ * Handles: 'export KEY=value', 'KEY="value"', inline comments
20
+ */
21
+ function parseEnvFile(filePath) {
22
+ const vars = new Map();
23
+ if (!existsSync(filePath))
24
+ return vars;
25
+ const content = readFileSync(filePath, 'utf-8');
26
+ for (const line of content.split('\n')) {
27
+ // Skip empty lines and comments
28
+ const trimmed = line.trim();
29
+ if (!trimmed || trimmed.startsWith('#'))
30
+ continue;
31
+ // Remove 'export ' prefix
32
+ let cleanLine = trimmed.replace(/^export\s+/, '');
33
+ // Remove inline comments (but not # inside quotes)
34
+ const commentMatch = cleanLine.match(/^([^#"']*(?:"[^"]*"|'[^']*')?[^#]*)#/);
35
+ if (commentMatch) {
36
+ cleanLine = commentMatch[1].trim();
37
+ }
38
+ // Split key=value
39
+ const eqIndex = cleanLine.indexOf('=');
40
+ if (eqIndex === -1)
41
+ continue;
42
+ const key = cleanLine.substring(0, eqIndex).trim();
43
+ let value = cleanLine.substring(eqIndex + 1).trim();
44
+ // Remove surrounding quotes
45
+ if ((value.startsWith('"') && value.endsWith('"')) ||
46
+ (value.startsWith("'") && value.endsWith("'"))) {
47
+ value = value.slice(1, -1);
48
+ }
49
+ if (key)
50
+ vars.set(key, value);
51
+ }
52
+ return vars;
53
+ }
54
+ /**
55
+ * Create systemd-compatible env file (no 'export', no inline comments)
56
+ */
57
+ function createSystemdEnvFile() {
58
+ const envVars = parseEnvFile(ENV_FILE);
59
+ const configDir = join(homedir(), '.config', SERVICE_NAME);
60
+ // Ensure config directory exists
61
+ if (!existsSync(configDir)) {
62
+ mkdirSync(configDir, { recursive: true, mode: 0o700 });
63
+ }
64
+ // Write systemd-compatible env file
65
+ const lines = ['# Auto-generated from ~/.telegram-env for systemd'];
66
+ for (const [key, value] of envVars) {
67
+ // Quote values that contain spaces or special characters
68
+ if (value.includes(' ') || value.includes('$') || value.includes('`')) {
69
+ lines.push(`${key}="${value}"`);
70
+ }
71
+ else {
72
+ lines.push(`${key}=${value}`);
73
+ }
74
+ }
75
+ writeFileSync(SYSTEMD_ENV_FILE, lines.join('\n') + '\n', { mode: 0o600 });
76
+ return SYSTEMD_ENV_FILE;
77
+ }
78
+ /**
79
+ * Get the path to the Node.js binary
80
+ */
81
+ function getNodePath() {
82
+ try {
83
+ return execSync('which node', { encoding: 'utf-8' }).trim();
84
+ }
85
+ catch {
86
+ return '/usr/bin/node';
87
+ }
88
+ }
89
+ /**
90
+ * Get the package directory (where dist/cli.js lives)
91
+ */
92
+ function getPackageDir() {
93
+ // This file is in src/service/manager.ts, so package root is two levels up
94
+ return join(dirname(new URL(import.meta.url).pathname), '..', '..');
95
+ }
96
+ /**
97
+ * Generate systemd service file content
98
+ */
99
+ function generateSystemdService() {
100
+ const nodeDir = getNodePath();
101
+ const packageDir = getPackageDir();
102
+ const configDir = join(homedir(), '.config', SERVICE_NAME);
103
+ return `[Unit]
104
+ Description=Claude Code Telegram Mirror Bridge
105
+ Documentation=https://github.com/robertelee78/claude-telegram-mirror
106
+ After=network-online.target
107
+ Wants=network-online.target
108
+
109
+ [Service]
110
+ Type=simple
111
+ WorkingDirectory=${packageDir}
112
+ ExecStart=${nodeDir} ${join(packageDir, 'dist', 'cli.js')} start
113
+ EnvironmentFile=${SYSTEMD_ENV_FILE}
114
+
115
+ # Restart policy
116
+ Restart=on-failure
117
+ RestartSec=10s
118
+ StartLimitInterval=300s
119
+ StartLimitBurst=5
120
+
121
+ # Logging
122
+ StandardOutput=journal
123
+ StandardError=journal
124
+ SyslogIdentifier=${SERVICE_NAME}
125
+
126
+ # Security hardening
127
+ NoNewPrivileges=true
128
+ PrivateTmp=false
129
+
130
+ # Allow writes to config directory
131
+ ReadWritePaths=${configDir}
132
+
133
+ [Install]
134
+ WantedBy=default.target
135
+ `;
136
+ }
137
+ /**
138
+ * Escape a string for XML (plist) content
139
+ */
140
+ function escapeXml(value) {
141
+ return value
142
+ .replace(/&/g, '&')
143
+ .replace(/</g, '&lt;')
144
+ .replace(/>/g, '&gt;')
145
+ .replace(/"/g, '&quot;')
146
+ .replace(/'/g, '&apos;');
147
+ }
148
+ /**
149
+ * Get the PATH that includes common Node.js install locations
150
+ */
151
+ function getMacOSPath() {
152
+ const home = homedir();
153
+ const pathDirs = [
154
+ '/usr/local/bin',
155
+ '/usr/bin',
156
+ '/bin',
157
+ '/usr/sbin',
158
+ '/sbin',
159
+ join(home, '.nvm/versions/node') + '/*/bin', // nvm
160
+ '/opt/homebrew/bin', // Homebrew on Apple Silicon
161
+ '/usr/local/opt/node/bin', // Homebrew on Intel
162
+ join(home, '.local/bin'),
163
+ ];
164
+ // Try to get current PATH and merge
165
+ const currentPath = process.env.PATH || '';
166
+ const allPaths = new Set([...pathDirs, ...currentPath.split(':')]);
167
+ return Array.from(allPaths).filter(Boolean).join(':');
168
+ }
169
+ /**
170
+ * Generate launchd plist content for macOS
171
+ */
172
+ function generateLaunchdPlist() {
173
+ const nodePath = getNodePath();
174
+ const packageDir = getPackageDir();
175
+ const home = homedir();
176
+ const configDir = join(home, '.config', SERVICE_NAME);
177
+ const logFile = join(configDir, 'daemon.log');
178
+ const errFile = join(configDir, 'daemon.err.log');
179
+ // Use parseEnvFile for proper env parsing (handles export, quotes, comments)
180
+ const envVars = parseEnvFile(ENV_FILE);
181
+ // Build environment variables section
182
+ const envLines = [];
183
+ // Always include essential environment variables
184
+ envLines.push(` <key>HOME</key>`);
185
+ envLines.push(` <string>${escapeXml(home)}</string>`);
186
+ envLines.push(` <key>PATH</key>`);
187
+ envLines.push(` <string>${escapeXml(getMacOSPath())}</string>`);
188
+ envLines.push(` <key>NODE_ENV</key>`);
189
+ envLines.push(` <string>production</string>`);
190
+ // Add user-defined environment variables from ~/.telegram-env
191
+ for (const [key, value] of envVars) {
192
+ // Skip if we already set it above
193
+ if (['HOME', 'PATH', 'NODE_ENV'].includes(key))
194
+ continue;
195
+ envLines.push(` <key>${escapeXml(key)}</key>`);
196
+ envLines.push(` <string>${escapeXml(value)}</string>`);
197
+ }
198
+ return `<?xml version="1.0" encoding="UTF-8"?>
199
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
200
+ <plist version="1.0">
201
+ <dict>
202
+ <key>Label</key>
203
+ <string>com.claude.${SERVICE_NAME}</string>
204
+
205
+ <key>ProgramArguments</key>
206
+ <array>
207
+ <string>${escapeXml(nodePath)}</string>
208
+ <string>${escapeXml(join(packageDir, 'dist', 'cli.js'))}</string>
209
+ <string>start</string>
210
+ </array>
211
+
212
+ <key>WorkingDirectory</key>
213
+ <string>${escapeXml(packageDir)}</string>
214
+
215
+ <key>EnvironmentVariables</key>
216
+ <dict>
217
+ ${envLines.join('\n')}
218
+ </dict>
219
+
220
+ <key>RunAtLoad</key>
221
+ <true/>
222
+
223
+ <key>KeepAlive</key>
224
+ <dict>
225
+ <key>SuccessfulExit</key>
226
+ <false/>
227
+ <key>Crashed</key>
228
+ <true/>
229
+ </dict>
230
+
231
+ <key>ThrottleInterval</key>
232
+ <integer>10</integer>
233
+
234
+ <key>StandardOutPath</key>
235
+ <string>${escapeXml(logFile)}</string>
236
+
237
+ <key>StandardErrorPath</key>
238
+ <string>${escapeXml(errFile)}</string>
239
+ </dict>
240
+ </plist>
241
+ `;
242
+ }
243
+ /**
244
+ * Check if running on Linux with systemd
245
+ */
246
+ function hasSystemd() {
247
+ if (platform() !== 'linux')
248
+ return false;
249
+ try {
250
+ execSync('systemctl --version', { stdio: 'ignore' });
251
+ return true;
252
+ }
253
+ catch {
254
+ return false;
255
+ }
256
+ }
257
+ /**
258
+ * Check if running on macOS
259
+ */
260
+ function isMacOS() {
261
+ return platform() === 'darwin';
262
+ }
263
+ /**
264
+ * Install the service
265
+ */
266
+ export function installService() {
267
+ // Check for environment file
268
+ if (!existsSync(ENV_FILE)) {
269
+ return {
270
+ success: false,
271
+ message: `Environment file not found: ${ENV_FILE}\n\nCreate it with:\ncat > ${ENV_FILE} << 'EOF'\nTELEGRAM_BOT_TOKEN=your-token-here\nTELEGRAM_CHAT_ID=your-chat-id\nTELEGRAM_MIRROR=true\nEOF`
272
+ };
273
+ }
274
+ if (hasSystemd()) {
275
+ return installSystemdService();
276
+ }
277
+ else if (isMacOS()) {
278
+ return installLaunchdService();
279
+ }
280
+ else {
281
+ return {
282
+ success: false,
283
+ message: 'Unsupported platform. Only Linux (systemd) and macOS (launchd) are supported.'
284
+ };
285
+ }
286
+ }
287
+ /**
288
+ * Install systemd user service (Linux)
289
+ */
290
+ function installSystemdService() {
291
+ try {
292
+ // Create systemd-compatible env file from ~/.telegram-env
293
+ const envFile = createSystemdEnvFile();
294
+ // Create systemd user directory
295
+ if (!existsSync(SYSTEMD_USER_DIR)) {
296
+ mkdirSync(SYSTEMD_USER_DIR, { recursive: true });
297
+ }
298
+ // Write service file
299
+ const serviceContent = generateSystemdService();
300
+ writeFileSync(SYSTEMD_SERVICE_FILE, serviceContent);
301
+ console.log(` Created env file: ${envFile}`);
302
+ // Reload systemd
303
+ execSync('systemctl --user daemon-reload', { stdio: 'inherit' });
304
+ // Enable service
305
+ execSync(`systemctl --user enable ${SERVICE_NAME}.service`, { stdio: 'inherit' });
306
+ return {
307
+ success: true,
308
+ message: `Service installed: ${SYSTEMD_SERVICE_FILE}
309
+
310
+ Commands:
311
+ Start: systemctl --user start ${SERVICE_NAME}
312
+ Stop: systemctl --user stop ${SERVICE_NAME}
313
+ Status: systemctl --user status ${SERVICE_NAME}
314
+ Logs: journalctl --user -u ${SERVICE_NAME} -f
315
+
316
+ To run without being logged in:
317
+ sudo loginctl enable-linger $USER`
318
+ };
319
+ }
320
+ catch (error) {
321
+ return {
322
+ success: false,
323
+ message: `Failed to install systemd service: ${error}`
324
+ };
325
+ }
326
+ }
327
+ /**
328
+ * Install launchd service (macOS)
329
+ */
330
+ function installLaunchdService() {
331
+ try {
332
+ // Create LaunchAgents directory
333
+ if (!existsSync(LAUNCHD_DIR)) {
334
+ mkdirSync(LAUNCHD_DIR, { recursive: true });
335
+ }
336
+ // Ensure config directory exists for logs
337
+ const configDir = join(homedir(), '.config', SERVICE_NAME);
338
+ if (!existsSync(configDir)) {
339
+ mkdirSync(configDir, { recursive: true });
340
+ }
341
+ // Write plist file
342
+ const plistContent = generateLaunchdPlist();
343
+ writeFileSync(LAUNCHD_PLIST, plistContent);
344
+ return {
345
+ success: true,
346
+ message: `Service installed: ${LAUNCHD_PLIST}
347
+
348
+ Commands:
349
+ Load & Start: launchctl load ${LAUNCHD_PLIST}
350
+ Start: launchctl start com.claude.${SERVICE_NAME}
351
+ Stop: launchctl stop com.claude.${SERVICE_NAME}
352
+ Unload: launchctl unload ${LAUNCHD_PLIST}
353
+ Logs: tail -f ~/.config/${SERVICE_NAME}/daemon.log`
354
+ };
355
+ }
356
+ catch (error) {
357
+ return {
358
+ success: false,
359
+ message: `Failed to install launchd service: ${error}`
360
+ };
361
+ }
362
+ }
363
+ /**
364
+ * Uninstall the service
365
+ */
366
+ export function uninstallService() {
367
+ if (hasSystemd()) {
368
+ return uninstallSystemdService();
369
+ }
370
+ else if (isMacOS()) {
371
+ return uninstallLaunchdService();
372
+ }
373
+ else {
374
+ return {
375
+ success: false,
376
+ message: 'Unsupported platform.'
377
+ };
378
+ }
379
+ }
380
+ /**
381
+ * Uninstall systemd service
382
+ */
383
+ function uninstallSystemdService() {
384
+ try {
385
+ // Stop and disable service
386
+ try {
387
+ execSync(`systemctl --user stop ${SERVICE_NAME}.service`, { stdio: 'ignore' });
388
+ execSync(`systemctl --user disable ${SERVICE_NAME}.service`, { stdio: 'ignore' });
389
+ }
390
+ catch {
391
+ // Service might not be running/enabled
392
+ }
393
+ // Remove service file
394
+ if (existsSync(SYSTEMD_SERVICE_FILE)) {
395
+ unlinkSync(SYSTEMD_SERVICE_FILE);
396
+ }
397
+ // Reload systemd
398
+ execSync('systemctl --user daemon-reload', { stdio: 'ignore' });
399
+ return {
400
+ success: true,
401
+ message: 'Service uninstalled successfully.'
402
+ };
403
+ }
404
+ catch (error) {
405
+ return {
406
+ success: false,
407
+ message: `Failed to uninstall service: ${error}`
408
+ };
409
+ }
410
+ }
411
+ /**
412
+ * Uninstall launchd service
413
+ */
414
+ function uninstallLaunchdService() {
415
+ try {
416
+ // Unload service
417
+ try {
418
+ execSync(`launchctl unload ${LAUNCHD_PLIST}`, { stdio: 'ignore' });
419
+ }
420
+ catch {
421
+ // Service might not be loaded
422
+ }
423
+ // Remove plist file
424
+ if (existsSync(LAUNCHD_PLIST)) {
425
+ unlinkSync(LAUNCHD_PLIST);
426
+ }
427
+ return {
428
+ success: true,
429
+ message: 'Service uninstalled successfully.'
430
+ };
431
+ }
432
+ catch (error) {
433
+ return {
434
+ success: false,
435
+ message: `Failed to uninstall service: ${error}`
436
+ };
437
+ }
438
+ }
439
+ /**
440
+ * Get service status
441
+ */
442
+ export function getServiceStatus() {
443
+ if (hasSystemd()) {
444
+ return getSystemdStatus();
445
+ }
446
+ else if (isMacOS()) {
447
+ return getLaunchdStatus();
448
+ }
449
+ else {
450
+ return {
451
+ running: false,
452
+ enabled: false,
453
+ info: 'Unsupported platform'
454
+ };
455
+ }
456
+ }
457
+ /**
458
+ * Get systemd service status
459
+ */
460
+ function getSystemdStatus() {
461
+ let running = false;
462
+ let enabled = false;
463
+ let info = '';
464
+ try {
465
+ const isActive = execSync(`systemctl --user is-active ${SERVICE_NAME}.service 2>/dev/null || true`, { encoding: 'utf-8' }).trim();
466
+ running = isActive === 'active';
467
+ }
468
+ catch {
469
+ running = false;
470
+ }
471
+ try {
472
+ const isEnabled = execSync(`systemctl --user is-enabled ${SERVICE_NAME}.service 2>/dev/null || true`, { encoding: 'utf-8' }).trim();
473
+ enabled = isEnabled === 'enabled';
474
+ }
475
+ catch {
476
+ enabled = false;
477
+ }
478
+ if (!existsSync(SYSTEMD_SERVICE_FILE)) {
479
+ info = 'Service not installed';
480
+ }
481
+ else {
482
+ info = `Service file: ${SYSTEMD_SERVICE_FILE}`;
483
+ }
484
+ return { running, enabled, info };
485
+ }
486
+ /**
487
+ * Get launchd service status
488
+ */
489
+ function getLaunchdStatus() {
490
+ let running = false;
491
+ const enabled = existsSync(LAUNCHD_PLIST);
492
+ let info = '';
493
+ try {
494
+ const list = execSync('launchctl list 2>/dev/null || true', { encoding: 'utf-8' });
495
+ running = list.includes(`com.claude.${SERVICE_NAME}`);
496
+ }
497
+ catch {
498
+ running = false;
499
+ }
500
+ if (!enabled) {
501
+ info = 'Service not installed';
502
+ }
503
+ else {
504
+ info = `Plist file: ${LAUNCHD_PLIST}`;
505
+ }
506
+ return { running, enabled, info };
507
+ }
508
+ /**
509
+ * Start the service
510
+ */
511
+ export function startService() {
512
+ if (hasSystemd()) {
513
+ try {
514
+ execSync(`systemctl --user start ${SERVICE_NAME}.service`, { stdio: 'inherit' });
515
+ return { success: true, message: 'Service started.' };
516
+ }
517
+ catch (error) {
518
+ return { success: false, message: `Failed to start: ${error}` };
519
+ }
520
+ }
521
+ else if (isMacOS()) {
522
+ try {
523
+ // Load if not loaded, then start
524
+ try {
525
+ execSync(`launchctl load ${LAUNCHD_PLIST}`, { stdio: 'ignore' });
526
+ }
527
+ catch {
528
+ // Already loaded
529
+ }
530
+ execSync(`launchctl start com.claude.${SERVICE_NAME}`, { stdio: 'inherit' });
531
+ return { success: true, message: 'Service started.' };
532
+ }
533
+ catch (error) {
534
+ return { success: false, message: `Failed to start: ${error}` };
535
+ }
536
+ }
537
+ return { success: false, message: 'Unsupported platform.' };
538
+ }
539
+ /**
540
+ * Stop the service
541
+ */
542
+ export function stopService() {
543
+ if (hasSystemd()) {
544
+ try {
545
+ execSync(`systemctl --user stop ${SERVICE_NAME}.service`, { stdio: 'inherit' });
546
+ return { success: true, message: 'Service stopped.' };
547
+ }
548
+ catch (error) {
549
+ return { success: false, message: `Failed to stop: ${error}` };
550
+ }
551
+ }
552
+ else if (isMacOS()) {
553
+ try {
554
+ execSync(`launchctl stop com.claude.${SERVICE_NAME}`, { stdio: 'inherit' });
555
+ return { success: true, message: 'Service stopped.' };
556
+ }
557
+ catch (error) {
558
+ return { success: false, message: `Failed to stop: ${error}` };
559
+ }
560
+ }
561
+ return { success: false, message: 'Unsupported platform.' };
562
+ }
563
+ /**
564
+ * Restart the service
565
+ */
566
+ export function restartService() {
567
+ if (hasSystemd()) {
568
+ try {
569
+ execSync(`systemctl --user restart ${SERVICE_NAME}.service`, { stdio: 'inherit' });
570
+ return { success: true, message: 'Service restarted.' };
571
+ }
572
+ catch (error) {
573
+ return { success: false, message: `Failed to restart: ${error}` };
574
+ }
575
+ }
576
+ else if (isMacOS()) {
577
+ const stopResult = stopService();
578
+ if (!stopResult.success)
579
+ return stopResult;
580
+ return startService();
581
+ }
582
+ return { success: false, message: 'Unsupported platform.' };
583
+ }
584
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/service/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Interactive Setup Wizard
3
+ * Guides users through configuring claude-telegram-mirror
4
+ */
5
+ /**
6
+ * Run interactive setup wizard
7
+ */
8
+ export declare function runSetup(): Promise<void>;
9
+ export default runSetup;
10
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/service/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsGH;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA6L9C;AAED,eAAe,QAAQ,CAAC"}