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,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doctor Command - Diagnostic tool for troubleshooting
|
|
3
|
+
* Checks all components and reports issues
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, statSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { homedir, hostname, platform, arch } from 'os';
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
// ANSI color codes
|
|
10
|
+
const colors = {
|
|
11
|
+
reset: '\x1b[0m',
|
|
12
|
+
bold: '\x1b[1m',
|
|
13
|
+
dim: '\x1b[2m',
|
|
14
|
+
cyan: '\x1b[36m',
|
|
15
|
+
green: '\x1b[32m',
|
|
16
|
+
yellow: '\x1b[33m',
|
|
17
|
+
red: '\x1b[31m',
|
|
18
|
+
blue: '\x1b[34m',
|
|
19
|
+
gray: '\x1b[90m',
|
|
20
|
+
};
|
|
21
|
+
function cyan(text) { return `${colors.cyan}${text}${colors.reset}`; }
|
|
22
|
+
function green(text) { return `${colors.green}${text}${colors.reset}`; }
|
|
23
|
+
function yellow(text) { return `${colors.yellow}${text}${colors.reset}`; }
|
|
24
|
+
function red(text) { return `${colors.red}${text}${colors.reset}`; }
|
|
25
|
+
function gray(text) { return `${colors.gray}${text}${colors.reset}`; }
|
|
26
|
+
function bold(text) { return `${colors.bold}${text}${colors.reset}`; }
|
|
27
|
+
const CONFIG_DIR = join(homedir(), '.config', 'claude-telegram-mirror');
|
|
28
|
+
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
29
|
+
const SOCKET_PATH = join(CONFIG_DIR, 'bridge.sock');
|
|
30
|
+
const CLAUDE_SETTINGS = join(homedir(), '.claude', 'settings.json');
|
|
31
|
+
/**
|
|
32
|
+
* Check if systemd service is installed and running
|
|
33
|
+
*/
|
|
34
|
+
function checkSystemdService() {
|
|
35
|
+
const serviceFile = join(homedir(), '.config', 'systemd', 'user', 'claude-telegram-mirror.service');
|
|
36
|
+
if (!existsSync(serviceFile)) {
|
|
37
|
+
return {
|
|
38
|
+
name: 'Systemd Service',
|
|
39
|
+
status: 'warn',
|
|
40
|
+
message: 'Service not installed',
|
|
41
|
+
details: 'Run: ctm service install'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const status = execSync('systemctl --user is-active claude-telegram-mirror 2>/dev/null', {
|
|
46
|
+
encoding: 'utf8'
|
|
47
|
+
}).trim();
|
|
48
|
+
if (status === 'active') {
|
|
49
|
+
return {
|
|
50
|
+
name: 'Systemd Service',
|
|
51
|
+
status: 'pass',
|
|
52
|
+
message: 'Running'
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
name: 'Systemd Service',
|
|
57
|
+
status: 'warn',
|
|
58
|
+
message: `Status: ${status}`,
|
|
59
|
+
details: 'Run: ctm service start'
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return {
|
|
64
|
+
name: 'Systemd Service',
|
|
65
|
+
status: 'warn',
|
|
66
|
+
message: 'Installed but not running',
|
|
67
|
+
details: 'Run: ctm service start'
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check configuration file
|
|
73
|
+
*/
|
|
74
|
+
function checkConfig() {
|
|
75
|
+
if (!existsSync(CONFIG_FILE)) {
|
|
76
|
+
// Check env vars
|
|
77
|
+
if (process.env.TELEGRAM_BOT_TOKEN && process.env.TELEGRAM_CHAT_ID) {
|
|
78
|
+
return {
|
|
79
|
+
name: 'Configuration',
|
|
80
|
+
status: 'pass',
|
|
81
|
+
message: 'Using environment variables'
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
name: 'Configuration',
|
|
86
|
+
status: 'fail',
|
|
87
|
+
message: 'No config file or env vars found',
|
|
88
|
+
details: 'Run: ctm setup'
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
|
|
93
|
+
if (!config.botToken) {
|
|
94
|
+
return {
|
|
95
|
+
name: 'Configuration',
|
|
96
|
+
status: 'fail',
|
|
97
|
+
message: 'Missing botToken in config',
|
|
98
|
+
details: 'Run: ctm setup'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (!config.chatId) {
|
|
102
|
+
return {
|
|
103
|
+
name: 'Configuration',
|
|
104
|
+
status: 'fail',
|
|
105
|
+
message: 'Missing chatId in config',
|
|
106
|
+
details: 'Run: ctm setup'
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
name: 'Configuration',
|
|
111
|
+
status: 'pass',
|
|
112
|
+
message: 'Valid config file',
|
|
113
|
+
details: CONFIG_FILE
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return {
|
|
118
|
+
name: 'Configuration',
|
|
119
|
+
status: 'fail',
|
|
120
|
+
message: 'Invalid config file',
|
|
121
|
+
details: error.message
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check Telegram connection
|
|
127
|
+
*/
|
|
128
|
+
async function checkTelegram() {
|
|
129
|
+
let token = process.env.TELEGRAM_BOT_TOKEN;
|
|
130
|
+
if (!token && existsSync(CONFIG_FILE)) {
|
|
131
|
+
try {
|
|
132
|
+
const config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
|
|
133
|
+
token = config.botToken;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Ignore
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (!token) {
|
|
140
|
+
return {
|
|
141
|
+
name: 'Telegram API',
|
|
142
|
+
status: 'fail',
|
|
143
|
+
message: 'No bot token configured'
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const response = await fetch(`https://api.telegram.org/bot${token}/getMe`);
|
|
148
|
+
const data = await response.json();
|
|
149
|
+
if (data.ok) {
|
|
150
|
+
return {
|
|
151
|
+
name: 'Telegram API',
|
|
152
|
+
status: 'pass',
|
|
153
|
+
message: `Connected as @${data.result?.username}`
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
name: 'Telegram API',
|
|
158
|
+
status: 'fail',
|
|
159
|
+
message: 'Invalid bot token'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
return {
|
|
164
|
+
name: 'Telegram API',
|
|
165
|
+
status: 'fail',
|
|
166
|
+
message: 'Network error',
|
|
167
|
+
details: error.message
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check Claude Code hooks
|
|
173
|
+
*/
|
|
174
|
+
function checkHooks() {
|
|
175
|
+
if (!existsSync(CLAUDE_SETTINGS)) {
|
|
176
|
+
return {
|
|
177
|
+
name: 'Claude Code Hooks',
|
|
178
|
+
status: 'warn',
|
|
179
|
+
message: 'Claude settings not found',
|
|
180
|
+
details: 'Run: ctm install-hooks'
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
const settings = JSON.parse(readFileSync(CLAUDE_SETTINGS, 'utf-8'));
|
|
185
|
+
const hooks = settings.hooks || {};
|
|
186
|
+
const hasPreTool = hooks.PreToolUse?.some((h) => h.command?.includes('telegram-hook'));
|
|
187
|
+
const hasPostTool = hooks.PostToolUse?.some((h) => h.command?.includes('telegram-hook'));
|
|
188
|
+
const hasNotify = hooks.Notification?.some((h) => h.command?.includes('telegram-hook'));
|
|
189
|
+
const installed = [hasPreTool, hasPostTool, hasNotify].filter(Boolean).length;
|
|
190
|
+
if (installed === 3) {
|
|
191
|
+
return {
|
|
192
|
+
name: 'Claude Code Hooks',
|
|
193
|
+
status: 'pass',
|
|
194
|
+
message: 'All hooks installed'
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (installed > 0) {
|
|
198
|
+
return {
|
|
199
|
+
name: 'Claude Code Hooks',
|
|
200
|
+
status: 'warn',
|
|
201
|
+
message: `${installed}/3 hooks installed`,
|
|
202
|
+
details: 'Run: ctm install-hooks -f'
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
name: 'Claude Code Hooks',
|
|
207
|
+
status: 'warn',
|
|
208
|
+
message: 'No hooks installed',
|
|
209
|
+
details: 'Run: ctm install-hooks'
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
return {
|
|
214
|
+
name: 'Claude Code Hooks',
|
|
215
|
+
status: 'fail',
|
|
216
|
+
message: 'Error reading Claude settings',
|
|
217
|
+
details: error.message
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Check socket file
|
|
223
|
+
*/
|
|
224
|
+
function checkSocket() {
|
|
225
|
+
if (!existsSync(SOCKET_PATH)) {
|
|
226
|
+
return {
|
|
227
|
+
name: 'Bridge Socket',
|
|
228
|
+
status: 'warn',
|
|
229
|
+
message: 'Socket not found (daemon not running?)',
|
|
230
|
+
details: 'Run: ctm start'
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
try {
|
|
234
|
+
const stats = statSync(SOCKET_PATH);
|
|
235
|
+
if (stats.isSocket()) {
|
|
236
|
+
return {
|
|
237
|
+
name: 'Bridge Socket',
|
|
238
|
+
status: 'pass',
|
|
239
|
+
message: 'Socket exists',
|
|
240
|
+
details: SOCKET_PATH
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
name: 'Bridge Socket',
|
|
245
|
+
status: 'fail',
|
|
246
|
+
message: 'Path exists but is not a socket'
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
return {
|
|
251
|
+
name: 'Bridge Socket',
|
|
252
|
+
status: 'fail',
|
|
253
|
+
message: 'Error checking socket',
|
|
254
|
+
details: error.message
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Check tmux availability (for input injection)
|
|
260
|
+
*/
|
|
261
|
+
function checkTmux() {
|
|
262
|
+
try {
|
|
263
|
+
execSync('which tmux', { stdio: 'pipe' });
|
|
264
|
+
// Check if TMUX env is set (running inside tmux)
|
|
265
|
+
if (process.env.TMUX) {
|
|
266
|
+
return {
|
|
267
|
+
name: 'Tmux',
|
|
268
|
+
status: 'pass',
|
|
269
|
+
message: 'Available and active',
|
|
270
|
+
details: 'Input injection will work'
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
// Check for any tmux sessions
|
|
274
|
+
try {
|
|
275
|
+
const sessions = execSync('tmux list-sessions 2>/dev/null', { encoding: 'utf8' });
|
|
276
|
+
const count = sessions.trim().split('\n').length;
|
|
277
|
+
return {
|
|
278
|
+
name: 'Tmux',
|
|
279
|
+
status: 'pass',
|
|
280
|
+
message: `Available (${count} session${count === 1 ? '' : 's'})`,
|
|
281
|
+
details: 'Input injection available'
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return {
|
|
286
|
+
name: 'Tmux',
|
|
287
|
+
status: 'warn',
|
|
288
|
+
message: 'Available but no sessions',
|
|
289
|
+
details: 'Start Claude Code in tmux for input injection'
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
return {
|
|
295
|
+
name: 'Tmux',
|
|
296
|
+
status: 'warn',
|
|
297
|
+
message: 'Not installed',
|
|
298
|
+
details: 'Install tmux for Telegram → CLI input injection'
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Check Node.js version
|
|
304
|
+
*/
|
|
305
|
+
function checkNodeVersion() {
|
|
306
|
+
const version = process.version;
|
|
307
|
+
const major = parseInt(version.slice(1).split('.')[0], 10);
|
|
308
|
+
if (major >= 18) {
|
|
309
|
+
return {
|
|
310
|
+
name: 'Node.js',
|
|
311
|
+
status: 'pass',
|
|
312
|
+
message: `Version ${version}`
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
name: 'Node.js',
|
|
317
|
+
status: 'fail',
|
|
318
|
+
message: `Version ${version} (requires >=18)`,
|
|
319
|
+
details: 'Update Node.js to version 18 or later'
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Print check result
|
|
324
|
+
*/
|
|
325
|
+
function printResult(result) {
|
|
326
|
+
const icons = {
|
|
327
|
+
pass: green('✓'),
|
|
328
|
+
warn: yellow('⚠'),
|
|
329
|
+
fail: red('✗'),
|
|
330
|
+
};
|
|
331
|
+
const statusColors = {
|
|
332
|
+
pass: green,
|
|
333
|
+
warn: yellow,
|
|
334
|
+
fail: red,
|
|
335
|
+
};
|
|
336
|
+
console.log(` ${icons[result.status]} ${bold(result.name)}: ${statusColors[result.status](result.message)}`);
|
|
337
|
+
if (result.details) {
|
|
338
|
+
console.log(` ${gray(result.details)}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Run all diagnostic checks
|
|
343
|
+
*/
|
|
344
|
+
export async function runDoctor() {
|
|
345
|
+
console.log('');
|
|
346
|
+
console.log(cyan('╔════════════════════════════════════════════════════════════╗'));
|
|
347
|
+
console.log(cyan('║') + bold(' Claude Telegram Mirror - Diagnostics ') + cyan('║'));
|
|
348
|
+
console.log(cyan('╚════════════════════════════════════════════════════════════╝'));
|
|
349
|
+
console.log('');
|
|
350
|
+
// System info
|
|
351
|
+
console.log(gray('─'.repeat(60)));
|
|
352
|
+
console.log(bold('System Information'));
|
|
353
|
+
console.log(gray('─'.repeat(60)));
|
|
354
|
+
console.log(` Hostname: ${cyan(hostname())}`);
|
|
355
|
+
console.log(` Platform: ${cyan(`${platform()} ${arch()}`)}`);
|
|
356
|
+
console.log(` Node.js: ${cyan(process.version)}`);
|
|
357
|
+
console.log('');
|
|
358
|
+
// Run checks
|
|
359
|
+
console.log(gray('─'.repeat(60)));
|
|
360
|
+
console.log(bold('Checks'));
|
|
361
|
+
console.log(gray('─'.repeat(60)));
|
|
362
|
+
console.log('');
|
|
363
|
+
const checks = [];
|
|
364
|
+
// Synchronous checks
|
|
365
|
+
checks.push(checkNodeVersion());
|
|
366
|
+
checks.push(checkConfig());
|
|
367
|
+
checks.push(checkHooks());
|
|
368
|
+
checks.push(checkSocket());
|
|
369
|
+
checks.push(checkTmux());
|
|
370
|
+
if (platform() === 'linux') {
|
|
371
|
+
checks.push(checkSystemdService());
|
|
372
|
+
}
|
|
373
|
+
// Async checks
|
|
374
|
+
checks.push(await checkTelegram());
|
|
375
|
+
// Print all results
|
|
376
|
+
for (const result of checks) {
|
|
377
|
+
printResult(result);
|
|
378
|
+
}
|
|
379
|
+
console.log('');
|
|
380
|
+
// Summary
|
|
381
|
+
const passed = checks.filter(c => c.status === 'pass').length;
|
|
382
|
+
const warnings = checks.filter(c => c.status === 'warn').length;
|
|
383
|
+
const failed = checks.filter(c => c.status === 'fail').length;
|
|
384
|
+
console.log(gray('─'.repeat(60)));
|
|
385
|
+
console.log(bold('Summary'));
|
|
386
|
+
console.log(gray('─'.repeat(60)));
|
|
387
|
+
if (failed === 0 && warnings === 0) {
|
|
388
|
+
console.log(green(' ✓ All checks passed! Everything looks good.'));
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
console.log(` ${green(passed.toString())} passed, ${yellow(warnings.toString())} warnings, ${red(failed.toString())} failed`);
|
|
392
|
+
if (failed > 0) {
|
|
393
|
+
console.log('');
|
|
394
|
+
console.log(red(' Some checks failed. Review the errors above.'));
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
console.log('');
|
|
398
|
+
// Quick actions
|
|
399
|
+
if (failed > 0 || warnings > 0) {
|
|
400
|
+
console.log(gray('─'.repeat(60)));
|
|
401
|
+
console.log(bold('Suggested Actions'));
|
|
402
|
+
console.log(gray('─'.repeat(60)));
|
|
403
|
+
const configCheck = checks.find(c => c.name === 'Configuration');
|
|
404
|
+
if (configCheck?.status === 'fail') {
|
|
405
|
+
console.log(` ${cyan('ctm setup')} Run interactive setup`);
|
|
406
|
+
}
|
|
407
|
+
const hooksCheck = checks.find(c => c.name === 'Claude Code Hooks');
|
|
408
|
+
if (hooksCheck?.status !== 'pass') {
|
|
409
|
+
console.log(` ${cyan('ctm install-hooks')} Install Claude Code hooks`);
|
|
410
|
+
}
|
|
411
|
+
const serviceCheck = checks.find(c => c.name === 'Systemd Service');
|
|
412
|
+
if (serviceCheck?.status !== 'pass') {
|
|
413
|
+
console.log(` ${cyan('ctm service install')} Install systemd service`);
|
|
414
|
+
console.log(` ${cyan('ctm service start')} Start the service`);
|
|
415
|
+
}
|
|
416
|
+
const socketCheck = checks.find(c => c.name === 'Bridge Socket');
|
|
417
|
+
if (socketCheck?.status !== 'pass') {
|
|
418
|
+
console.log(` ${cyan('ctm start')} Start the daemon`);
|
|
419
|
+
}
|
|
420
|
+
console.log('');
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
export default runDoctor;
|
|
424
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/service/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Manager
|
|
3
|
+
* Handles systemd (Linux) and launchd (macOS) service installation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Install the service
|
|
7
|
+
*/
|
|
8
|
+
export declare function installService(): {
|
|
9
|
+
success: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Uninstall the service
|
|
14
|
+
*/
|
|
15
|
+
export declare function uninstallService(): {
|
|
16
|
+
success: boolean;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Get service status
|
|
21
|
+
*/
|
|
22
|
+
export declare function getServiceStatus(): {
|
|
23
|
+
running: boolean;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
info: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Start the service
|
|
29
|
+
*/
|
|
30
|
+
export declare function startService(): {
|
|
31
|
+
success: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Stop the service
|
|
36
|
+
*/
|
|
37
|
+
export declare function stopService(): {
|
|
38
|
+
success: boolean;
|
|
39
|
+
message: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Restart the service
|
|
43
|
+
*/
|
|
44
|
+
export declare function restartService(): {
|
|
45
|
+
success: boolean;
|
|
46
|
+
message: string;
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/service/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyRH;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBtE;AAuFD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAWxE;AAgED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYvF;AAyDD;;GAEG;AACH,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBpE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiBnE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CActE"}
|