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
package/dist/cli.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Telegram Mirror CLI
|
|
4
|
+
* Main command-line interface
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { BridgeDaemon } from './bridge/daemon.js';
|
|
8
|
+
import { installHooks, uninstallHooks, printHookStatus } from './hooks/installer.js';
|
|
9
|
+
import { loadConfig, validateConfig } from './utils/config.js';
|
|
10
|
+
import { installService, uninstallService, getServiceStatus, startService, stopService, restartService } from './service/manager.js';
|
|
11
|
+
import { runSetup } from './service/setup.js';
|
|
12
|
+
import { runDoctor } from './service/doctor.js';
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('claude-telegram-mirror')
|
|
16
|
+
.description('Mirror Claude Code sessions to Telegram')
|
|
17
|
+
.version('1.0.0');
|
|
18
|
+
/**
|
|
19
|
+
* Start command - Run the bridge daemon
|
|
20
|
+
*/
|
|
21
|
+
program
|
|
22
|
+
.command('start')
|
|
23
|
+
.description('Start the bridge daemon')
|
|
24
|
+
.option('-v, --verbose', 'Enable verbose logging')
|
|
25
|
+
.option('--foreground', 'Run in foreground (default)', true)
|
|
26
|
+
.action(async (options) => {
|
|
27
|
+
console.log('🚀 Starting Claude Code Telegram Mirror...\n');
|
|
28
|
+
// Load and validate config
|
|
29
|
+
const config = loadConfig();
|
|
30
|
+
const validation = validateConfig(config);
|
|
31
|
+
if (!validation.valid) {
|
|
32
|
+
console.error('❌ Configuration errors:');
|
|
33
|
+
validation.errors.forEach((err) => console.error(` • ${err}`));
|
|
34
|
+
console.error('\nSee: claude-telegram-mirror config --help\n');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
if (validation.warnings.length > 0) {
|
|
38
|
+
console.warn('⚠️ Warnings:');
|
|
39
|
+
validation.warnings.forEach((warn) => console.warn(` • ${warn}`));
|
|
40
|
+
console.log('');
|
|
41
|
+
}
|
|
42
|
+
// Override verbose from CLI
|
|
43
|
+
if (options.verbose) {
|
|
44
|
+
config.verbose = true;
|
|
45
|
+
}
|
|
46
|
+
// Create and start daemon
|
|
47
|
+
const daemon = new BridgeDaemon(config);
|
|
48
|
+
// Handle shutdown signals
|
|
49
|
+
const shutdown = async (signal) => {
|
|
50
|
+
console.log(`\n📴 Received ${signal}, shutting down...`);
|
|
51
|
+
await daemon.stop();
|
|
52
|
+
process.exit(0);
|
|
53
|
+
};
|
|
54
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
55
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
56
|
+
try {
|
|
57
|
+
await daemon.start();
|
|
58
|
+
console.log('✅ Bridge daemon running\n');
|
|
59
|
+
console.log('📱 Telegram chat will receive Claude Code updates');
|
|
60
|
+
console.log('💬 Reply in Telegram to send input to CLI\n');
|
|
61
|
+
console.log('Press Ctrl+C to stop\n');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error('❌ Failed to start daemon:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Status command - Show daemon status
|
|
70
|
+
*/
|
|
71
|
+
program
|
|
72
|
+
.command('status')
|
|
73
|
+
.description('Show bridge daemon status')
|
|
74
|
+
.action(() => {
|
|
75
|
+
const config = loadConfig();
|
|
76
|
+
console.log('\n📊 Claude Telegram Mirror Status\n');
|
|
77
|
+
// Check configuration
|
|
78
|
+
console.log('Configuration:');
|
|
79
|
+
console.log(` Bot Token: ${config.botToken ? '✅ Set' : '❌ Not set'}`);
|
|
80
|
+
console.log(` Chat ID: ${config.chatId ? `✅ ${config.chatId}` : '❌ Not set'}`);
|
|
81
|
+
console.log(` Enabled: ${config.enabled ? '✅ Yes' : '⚪ No'}`);
|
|
82
|
+
console.log(` Verbose: ${config.verbose ? '✅ Yes' : '⚪ No'}`);
|
|
83
|
+
console.log(` Socket: ${config.socketPath}`);
|
|
84
|
+
console.log('');
|
|
85
|
+
// Check hooks
|
|
86
|
+
printHookStatus();
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Config command - Show/set configuration
|
|
90
|
+
*/
|
|
91
|
+
program
|
|
92
|
+
.command('config')
|
|
93
|
+
.description('Show or modify configuration')
|
|
94
|
+
.option('--show', 'Show current configuration')
|
|
95
|
+
.option('--test', 'Test Telegram connection')
|
|
96
|
+
.action(async (options) => {
|
|
97
|
+
const config = loadConfig();
|
|
98
|
+
if (options.test) {
|
|
99
|
+
console.log('🔄 Testing Telegram connection...\n');
|
|
100
|
+
try {
|
|
101
|
+
const response = await fetch(`https://api.telegram.org/bot${config.botToken}/getMe`);
|
|
102
|
+
const data = await response.json();
|
|
103
|
+
if (data.ok) {
|
|
104
|
+
console.log(`✅ Bot connected: @${data.result?.username}`);
|
|
105
|
+
// Try sending a test message
|
|
106
|
+
const msgResponse = await fetch(`https://api.telegram.org/bot${config.botToken}/sendMessage`, {
|
|
107
|
+
method: 'POST',
|
|
108
|
+
headers: { 'Content-Type': 'application/json' },
|
|
109
|
+
body: JSON.stringify({
|
|
110
|
+
chat_id: config.chatId,
|
|
111
|
+
text: '🧪 Test message from Claude Telegram Mirror',
|
|
112
|
+
parse_mode: 'Markdown'
|
|
113
|
+
})
|
|
114
|
+
});
|
|
115
|
+
const msgData = await msgResponse.json();
|
|
116
|
+
if (msgData.ok) {
|
|
117
|
+
console.log('✅ Test message sent to chat');
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log('❌ Failed to send test message');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.log('❌ Invalid bot token');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error('❌ Connection failed:', error);
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// Default: show config
|
|
133
|
+
console.log('\n⚙️ Configuration\n');
|
|
134
|
+
console.log('Environment Variables:');
|
|
135
|
+
console.log(` TELEGRAM_MIRROR=${config.enabled}`);
|
|
136
|
+
console.log(` TELEGRAM_BOT_TOKEN=${config.botToken ? '[SET]' : '[NOT SET]'}`);
|
|
137
|
+
console.log(` TELEGRAM_CHAT_ID=${config.chatId || '[NOT SET]'}`);
|
|
138
|
+
console.log(` TELEGRAM_MIRROR_VERBOSE=${config.verbose}`);
|
|
139
|
+
console.log(` TELEGRAM_BRIDGE_SOCKET=${config.socketPath}`);
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log('Add to ~/.bashrc or ~/.zshrc:');
|
|
142
|
+
console.log('');
|
|
143
|
+
console.log(' export TELEGRAM_MIRROR=true');
|
|
144
|
+
console.log(' export TELEGRAM_BOT_TOKEN="your-bot-token"');
|
|
145
|
+
console.log(' export TELEGRAM_CHAT_ID="your-chat-id"');
|
|
146
|
+
console.log('');
|
|
147
|
+
});
|
|
148
|
+
/**
|
|
149
|
+
* Install hooks command
|
|
150
|
+
*/
|
|
151
|
+
program
|
|
152
|
+
.command('install-hooks')
|
|
153
|
+
.description('Install Claude Code hooks')
|
|
154
|
+
.option('-f, --force', 'Force reinstall hooks')
|
|
155
|
+
.option('-p, --project', 'Install to current project\'s .claude/settings.json (run from project directory)')
|
|
156
|
+
.action((options) => {
|
|
157
|
+
if (options.project) {
|
|
158
|
+
console.log(`📌 Installing hooks to project: ${process.cwd()}\n`);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
console.log('📌 Installing Claude Code hooks (global)...\n');
|
|
162
|
+
}
|
|
163
|
+
const result = installHooks({ force: options.force, project: options.project });
|
|
164
|
+
if (result.success) {
|
|
165
|
+
if (result.installed.length > 0) {
|
|
166
|
+
console.log('✅ Installed hooks:');
|
|
167
|
+
result.installed.forEach(h => console.log(` • ${h}`));
|
|
168
|
+
}
|
|
169
|
+
if (result.skipped.length > 0) {
|
|
170
|
+
console.log('\n⚪ Already installed:');
|
|
171
|
+
result.skipped.forEach(h => console.log(` • ${h}`));
|
|
172
|
+
}
|
|
173
|
+
console.log(`\n✅ Hooks installed to: ${result.settingsPath}\n`);
|
|
174
|
+
if (options.project) {
|
|
175
|
+
console.log('💡 Restart Claude Code in this project to activate hooks.\n');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.error('❌ Failed to install hooks:', result.error);
|
|
180
|
+
process.exit(1);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
/**
|
|
184
|
+
* Uninstall hooks command
|
|
185
|
+
*/
|
|
186
|
+
program
|
|
187
|
+
.command('uninstall-hooks')
|
|
188
|
+
.description('Remove Claude Code hooks')
|
|
189
|
+
.action(() => {
|
|
190
|
+
console.log('🗑️ Removing Claude Code hooks...\n');
|
|
191
|
+
const result = uninstallHooks();
|
|
192
|
+
if (result.success) {
|
|
193
|
+
if (result.removed.length > 0) {
|
|
194
|
+
console.log('✅ Removed hooks:');
|
|
195
|
+
result.removed.forEach(h => console.log(` • ${h}`));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log('⚪ No hooks were installed');
|
|
199
|
+
}
|
|
200
|
+
console.log('');
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
console.error('❌ Failed to remove hooks:', result.error);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
/**
|
|
208
|
+
* Hook status command
|
|
209
|
+
*/
|
|
210
|
+
program
|
|
211
|
+
.command('hooks')
|
|
212
|
+
.description('Show hook installation status')
|
|
213
|
+
.action(() => {
|
|
214
|
+
printHookStatus();
|
|
215
|
+
});
|
|
216
|
+
/**
|
|
217
|
+
* Setup command - Interactive configuration wizard
|
|
218
|
+
*/
|
|
219
|
+
program
|
|
220
|
+
.command('setup')
|
|
221
|
+
.description('Interactive setup wizard for configuring claude-telegram-mirror')
|
|
222
|
+
.action(async () => {
|
|
223
|
+
try {
|
|
224
|
+
await runSetup();
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
console.error('Setup failed:', error);
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
/**
|
|
232
|
+
* Doctor command - Diagnostic tool
|
|
233
|
+
*/
|
|
234
|
+
program
|
|
235
|
+
.command('doctor')
|
|
236
|
+
.description('Diagnose configuration and connectivity issues')
|
|
237
|
+
.action(async () => {
|
|
238
|
+
try {
|
|
239
|
+
await runDoctor();
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
console.error('Doctor failed:', error);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
/**
|
|
247
|
+
* Service management commands
|
|
248
|
+
*/
|
|
249
|
+
const serviceCmd = program
|
|
250
|
+
.command('service')
|
|
251
|
+
.description('Manage systemd/launchd service');
|
|
252
|
+
serviceCmd
|
|
253
|
+
.command('install')
|
|
254
|
+
.description('Install as a system service (systemd on Linux, launchd on macOS)')
|
|
255
|
+
.action(() => {
|
|
256
|
+
console.log('📦 Installing system service...\n');
|
|
257
|
+
const result = installService();
|
|
258
|
+
if (result.success) {
|
|
259
|
+
console.log('✅ ' + result.message);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.error('❌ ' + result.message);
|
|
263
|
+
process.exit(1);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
serviceCmd
|
|
267
|
+
.command('uninstall')
|
|
268
|
+
.description('Uninstall the system service')
|
|
269
|
+
.action(() => {
|
|
270
|
+
console.log('🗑️ Uninstalling system service...\n');
|
|
271
|
+
const result = uninstallService();
|
|
272
|
+
if (result.success) {
|
|
273
|
+
console.log('✅ ' + result.message);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
console.error('❌ ' + result.message);
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
serviceCmd
|
|
281
|
+
.command('start')
|
|
282
|
+
.description('Start the service')
|
|
283
|
+
.action(() => {
|
|
284
|
+
const result = startService();
|
|
285
|
+
if (result.success) {
|
|
286
|
+
console.log('✅ ' + result.message);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
console.error('❌ ' + result.message);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
serviceCmd
|
|
294
|
+
.command('stop')
|
|
295
|
+
.description('Stop the service')
|
|
296
|
+
.action(() => {
|
|
297
|
+
const result = stopService();
|
|
298
|
+
if (result.success) {
|
|
299
|
+
console.log('✅ ' + result.message);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
console.error('❌ ' + result.message);
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
serviceCmd
|
|
307
|
+
.command('restart')
|
|
308
|
+
.description('Restart the service')
|
|
309
|
+
.action(() => {
|
|
310
|
+
const result = restartService();
|
|
311
|
+
if (result.success) {
|
|
312
|
+
console.log('✅ ' + result.message);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
console.error('❌ ' + result.message);
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
serviceCmd
|
|
320
|
+
.command('status')
|
|
321
|
+
.description('Show service status')
|
|
322
|
+
.action(() => {
|
|
323
|
+
const status = getServiceStatus();
|
|
324
|
+
console.log('\n🔧 Service Status\n');
|
|
325
|
+
console.log(` Running: ${status.running ? '✅ Yes' : '⚪ No'}`);
|
|
326
|
+
console.log(` Enabled: ${status.enabled ? '✅ Yes' : '⚪ No'}`);
|
|
327
|
+
console.log(` Info: ${status.info}`);
|
|
328
|
+
console.log('');
|
|
329
|
+
});
|
|
330
|
+
// Parse arguments
|
|
331
|
+
program.parse();
|
|
332
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code Hook Handler
|
|
4
|
+
* Captures hook events and sends to bridge daemon
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyHookEvent, HookHandlerConfig, PreToolUseHookEvent, PostToolUseHookEvent, NotificationHookEvent, StopHookEvent, UserPromptSubmitHookEvent } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Hook Handler Class
|
|
9
|
+
* Processes Claude Code hook events and forwards to bridge
|
|
10
|
+
*/
|
|
11
|
+
export declare class HookHandler {
|
|
12
|
+
private client;
|
|
13
|
+
private config;
|
|
14
|
+
private connected;
|
|
15
|
+
private sessionId;
|
|
16
|
+
constructor(config?: Partial<HookHandlerConfig>);
|
|
17
|
+
/**
|
|
18
|
+
* Generate a unique session ID
|
|
19
|
+
*/
|
|
20
|
+
private generateSessionId;
|
|
21
|
+
/**
|
|
22
|
+
* Connect to bridge daemon
|
|
23
|
+
*/
|
|
24
|
+
connect(): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Disconnect from bridge
|
|
27
|
+
*/
|
|
28
|
+
disconnect(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Send message to bridge
|
|
31
|
+
*/
|
|
32
|
+
private send;
|
|
33
|
+
/**
|
|
34
|
+
* Handle session start (first hook event)
|
|
35
|
+
*/
|
|
36
|
+
handleSessionStart(projectDir?: string): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Detect current tmux session and pane
|
|
39
|
+
*/
|
|
40
|
+
private detectTmuxSession;
|
|
41
|
+
/**
|
|
42
|
+
* Handle session end
|
|
43
|
+
*/
|
|
44
|
+
handleSessionEnd(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Handle Stop hook
|
|
47
|
+
*/
|
|
48
|
+
handleStop(event: StopHookEvent): void;
|
|
49
|
+
/**
|
|
50
|
+
* Handle PreToolUse hook
|
|
51
|
+
* Returns approval decision if interactive mode enabled
|
|
52
|
+
*/
|
|
53
|
+
handlePreToolUse(event: PreToolUseHookEvent): Promise<{
|
|
54
|
+
decision: 'approve' | 'reject';
|
|
55
|
+
} | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Handle PostToolUse hook
|
|
58
|
+
*/
|
|
59
|
+
handlePostToolUse(event: PostToolUseHookEvent): void;
|
|
60
|
+
/**
|
|
61
|
+
* Handle Notification hook
|
|
62
|
+
*/
|
|
63
|
+
handleNotification(event: NotificationHookEvent): void;
|
|
64
|
+
/**
|
|
65
|
+
* Handle UserPromptSubmit hook
|
|
66
|
+
*/
|
|
67
|
+
handleUserPromptSubmit(event: UserPromptSubmitHookEvent): void;
|
|
68
|
+
/**
|
|
69
|
+
* Handle agent text response (assistant message)
|
|
70
|
+
*/
|
|
71
|
+
handleAgentResponse(text: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Check if tool requires approval
|
|
74
|
+
*/
|
|
75
|
+
private toolRequiresApproval;
|
|
76
|
+
/**
|
|
77
|
+
* Format tool description for approval request
|
|
78
|
+
*/
|
|
79
|
+
private formatToolDescription;
|
|
80
|
+
/**
|
|
81
|
+
* Check if output is significant enough to send
|
|
82
|
+
*/
|
|
83
|
+
private isSignificantOutput;
|
|
84
|
+
/**
|
|
85
|
+
* Process raw hook event from stdin
|
|
86
|
+
*/
|
|
87
|
+
processEvent(event: AnyHookEvent): Promise<string | null>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Main CLI entry point for hook processing
|
|
91
|
+
*/
|
|
92
|
+
export declare function main(): Promise<void>;
|
|
93
|
+
export default HookHandler;
|
|
94
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/hooks/handler.ts"],"names":[],"mappings":";AACA;;;GAGG;AAQH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAUnD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAcjC;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,OAAO,CAAC,IAAI;IAKZ;;OAEG;IACG,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAaxB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAsBtC;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IA8CtG;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAmBpD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAetD;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAa9D;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWvC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAqChE;AAmCD;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqD1C;AAOD,eAAe,WAAW,CAAC"}
|