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,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"}
|