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,436 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unix Domain Socket Server/Client
|
|
3
|
+
* IPC layer for Claude Code ↔ Telegram bridge
|
|
4
|
+
*/
|
|
5
|
+
import { createServer, connect } from 'net';
|
|
6
|
+
import { unlinkSync, existsSync, writeFileSync, readFileSync, mkdirSync, chmodSync } from 'fs';
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import { homedir } from 'os';
|
|
10
|
+
import logger from '../utils/logger.js';
|
|
11
|
+
// Use secure user-specific directory instead of world-writable /tmp
|
|
12
|
+
const SOCKET_DIR = join(homedir(), '.config', 'claude-telegram-mirror');
|
|
13
|
+
const DEFAULT_SOCKET_PATH = join(SOCKET_DIR, 'bridge.sock');
|
|
14
|
+
const DEFAULT_PID_PATH = join(SOCKET_DIR, 'bridge.pid');
|
|
15
|
+
/**
|
|
16
|
+
* Check if a socket is stale (file exists but no daemon listening)
|
|
17
|
+
* Returns: 'stale' | 'active' | 'none'
|
|
18
|
+
*/
|
|
19
|
+
async function checkSocketStatus(socketPath) {
|
|
20
|
+
if (!existsSync(socketPath)) {
|
|
21
|
+
return 'none';
|
|
22
|
+
}
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
const testSocket = connect(socketPath);
|
|
25
|
+
const timeout = setTimeout(() => {
|
|
26
|
+
testSocket.destroy();
|
|
27
|
+
resolve('stale'); // Timeout = no response = stale
|
|
28
|
+
}, 1000);
|
|
29
|
+
testSocket.on('connect', () => {
|
|
30
|
+
clearTimeout(timeout);
|
|
31
|
+
testSocket.destroy();
|
|
32
|
+
resolve('active'); // Connection succeeded = daemon alive
|
|
33
|
+
});
|
|
34
|
+
testSocket.on('error', (err) => {
|
|
35
|
+
clearTimeout(timeout);
|
|
36
|
+
testSocket.destroy();
|
|
37
|
+
if (err.code === 'ECONNREFUSED') {
|
|
38
|
+
resolve('stale'); // Connection refused = daemon dead
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
resolve('stale'); // Other error = assume stale
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if a PID is still running
|
|
48
|
+
*/
|
|
49
|
+
function isPidRunning(pid) {
|
|
50
|
+
try {
|
|
51
|
+
process.kill(pid, 0); // Signal 0 = check if process exists
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Acquire PID lock, returns true if lock acquired
|
|
60
|
+
*/
|
|
61
|
+
function acquirePidLock(pidPath) {
|
|
62
|
+
if (existsSync(pidPath)) {
|
|
63
|
+
try {
|
|
64
|
+
const existingPid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
65
|
+
if (!isNaN(existingPid) && isPidRunning(existingPid)) {
|
|
66
|
+
logger.warn('Another daemon instance is running', { pid: existingPid });
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Stale PID file - process not running
|
|
70
|
+
logger.info('Removing stale PID file', { stalePid: existingPid });
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Can't read PID file - remove it
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Write our PID
|
|
77
|
+
writeFileSync(pidPath, process.pid.toString());
|
|
78
|
+
logger.debug('PID lock acquired', { pid: process.pid });
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Release PID lock
|
|
83
|
+
*/
|
|
84
|
+
function releasePidLock(pidPath) {
|
|
85
|
+
if (existsSync(pidPath)) {
|
|
86
|
+
try {
|
|
87
|
+
const storedPid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
88
|
+
if (storedPid === process.pid) {
|
|
89
|
+
unlinkSync(pidPath);
|
|
90
|
+
logger.debug('PID lock released');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Ignore errors during cleanup
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Unix Socket Server
|
|
100
|
+
* Accepts connections from hook scripts and routes messages
|
|
101
|
+
*/
|
|
102
|
+
export class SocketServer extends EventEmitter {
|
|
103
|
+
server = null;
|
|
104
|
+
clients = new Map();
|
|
105
|
+
socketPath;
|
|
106
|
+
pidPath;
|
|
107
|
+
buffer = new Map();
|
|
108
|
+
constructor(socketPath = DEFAULT_SOCKET_PATH, pidPath = DEFAULT_PID_PATH) {
|
|
109
|
+
super();
|
|
110
|
+
this.socketPath = socketPath;
|
|
111
|
+
this.pidPath = pidPath;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Start listening for connections
|
|
115
|
+
* Includes stale socket detection and PID file locking
|
|
116
|
+
*/
|
|
117
|
+
async listen() {
|
|
118
|
+
// Step 0: Ensure socket directory exists with secure permissions (0o700)
|
|
119
|
+
const socketDir = join(this.socketPath, '..');
|
|
120
|
+
if (!existsSync(socketDir)) {
|
|
121
|
+
mkdirSync(socketDir, { recursive: true, mode: 0o700 });
|
|
122
|
+
logger.debug('Created socket directory', { path: socketDir, mode: '0700' });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Ensure existing directory has correct permissions
|
|
126
|
+
try {
|
|
127
|
+
chmodSync(socketDir, 0o700);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.warn('Could not set socket directory permissions', { error });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Step 1: Acquire PID lock (prevents multiple daemon instances)
|
|
134
|
+
if (!acquirePidLock(this.pidPath)) {
|
|
135
|
+
throw new Error('Another daemon instance is already running. Kill it first or check the PID file.');
|
|
136
|
+
}
|
|
137
|
+
// Register cleanup on process exit
|
|
138
|
+
const cleanup = () => {
|
|
139
|
+
releasePidLock(this.pidPath);
|
|
140
|
+
};
|
|
141
|
+
process.on('exit', cleanup);
|
|
142
|
+
process.on('SIGINT', cleanup);
|
|
143
|
+
process.on('SIGTERM', cleanup);
|
|
144
|
+
// Step 2: Check for stale socket
|
|
145
|
+
const socketStatus = await checkSocketStatus(this.socketPath);
|
|
146
|
+
if (socketStatus === 'active') {
|
|
147
|
+
releasePidLock(this.pidPath);
|
|
148
|
+
throw new Error(`Socket ${this.socketPath} is already in use by another process`);
|
|
149
|
+
}
|
|
150
|
+
if (socketStatus === 'stale') {
|
|
151
|
+
try {
|
|
152
|
+
unlinkSync(this.socketPath);
|
|
153
|
+
logger.info('Removed stale socket file', { path: this.socketPath });
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
logger.error('Failed to remove stale socket', { error });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Step 3: Start the server
|
|
160
|
+
return new Promise((resolve, reject) => {
|
|
161
|
+
this.server = createServer((socket) => {
|
|
162
|
+
this.handleConnection(socket);
|
|
163
|
+
});
|
|
164
|
+
this.server.on('error', (error) => {
|
|
165
|
+
logger.error('Socket server error', { error });
|
|
166
|
+
releasePidLock(this.pidPath);
|
|
167
|
+
this.emit('error', error);
|
|
168
|
+
reject(error);
|
|
169
|
+
});
|
|
170
|
+
this.server.listen(this.socketPath, () => {
|
|
171
|
+
// Set socket file permissions to owner-only (0o600)
|
|
172
|
+
try {
|
|
173
|
+
chmodSync(this.socketPath, 0o600);
|
|
174
|
+
logger.debug('Set socket permissions', { path: this.socketPath, mode: '0600' });
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
logger.warn('Could not set socket file permissions', { error });
|
|
178
|
+
}
|
|
179
|
+
logger.info(`Socket server listening on ${this.socketPath}`, { pid: process.pid });
|
|
180
|
+
resolve();
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Handle new client connection
|
|
186
|
+
*/
|
|
187
|
+
handleConnection(socket) {
|
|
188
|
+
const clientId = `client-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
189
|
+
this.clients.set(clientId, socket);
|
|
190
|
+
this.buffer.set(clientId, '');
|
|
191
|
+
logger.debug('Client connected', { clientId });
|
|
192
|
+
this.emit('connect', clientId);
|
|
193
|
+
socket.on('data', (data) => {
|
|
194
|
+
this.handleData(clientId, data);
|
|
195
|
+
});
|
|
196
|
+
socket.on('close', () => {
|
|
197
|
+
this.clients.delete(clientId);
|
|
198
|
+
this.buffer.delete(clientId);
|
|
199
|
+
logger.debug('Client disconnected', { clientId });
|
|
200
|
+
this.emit('disconnect', clientId);
|
|
201
|
+
});
|
|
202
|
+
socket.on('error', (error) => {
|
|
203
|
+
logger.error('Client socket error', { clientId, error });
|
|
204
|
+
this.clients.delete(clientId);
|
|
205
|
+
this.buffer.delete(clientId);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Handle incoming data (NDJSON protocol)
|
|
210
|
+
*/
|
|
211
|
+
handleData(clientId, data) {
|
|
212
|
+
let buffer = this.buffer.get(clientId) || '';
|
|
213
|
+
buffer += data.toString();
|
|
214
|
+
// Process complete lines (NDJSON)
|
|
215
|
+
const lines = buffer.split('\n');
|
|
216
|
+
this.buffer.set(clientId, lines.pop() || '');
|
|
217
|
+
for (const line of lines) {
|
|
218
|
+
if (!line.trim())
|
|
219
|
+
continue;
|
|
220
|
+
try {
|
|
221
|
+
const message = JSON.parse(line);
|
|
222
|
+
this.emit('message', message, clientId);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
logger.error('Failed to parse message', { line, error });
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Send message to specific client
|
|
231
|
+
*/
|
|
232
|
+
send(clientId, message) {
|
|
233
|
+
const socket = this.clients.get(clientId);
|
|
234
|
+
if (!socket || socket.destroyed) {
|
|
235
|
+
logger.warn('Client not found or disconnected', { clientId });
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
socket.write(JSON.stringify(message) + '\n');
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
logger.error('Failed to send message', { clientId, error });
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Broadcast message to all clients
|
|
249
|
+
*/
|
|
250
|
+
broadcast(message) {
|
|
251
|
+
const data = JSON.stringify(message) + '\n';
|
|
252
|
+
for (const [clientId, socket] of this.clients) {
|
|
253
|
+
if (!socket.destroyed) {
|
|
254
|
+
try {
|
|
255
|
+
socket.write(data);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
logger.error('Failed to broadcast to client', { clientId, error });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get connected client count
|
|
265
|
+
*/
|
|
266
|
+
getClientCount() {
|
|
267
|
+
return this.clients.size;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Close the server and release all locks
|
|
271
|
+
*/
|
|
272
|
+
close() {
|
|
273
|
+
return new Promise((resolve) => {
|
|
274
|
+
// Close all client connections
|
|
275
|
+
for (const socket of this.clients.values()) {
|
|
276
|
+
socket.destroy();
|
|
277
|
+
}
|
|
278
|
+
this.clients.clear();
|
|
279
|
+
// Close server
|
|
280
|
+
if (this.server) {
|
|
281
|
+
this.server.close(() => {
|
|
282
|
+
// Clean up socket file
|
|
283
|
+
if (existsSync(this.socketPath)) {
|
|
284
|
+
try {
|
|
285
|
+
unlinkSync(this.socketPath);
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
logger.error('Failed to clean up socket file', { error });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Release PID lock
|
|
292
|
+
releasePidLock(this.pidPath);
|
|
293
|
+
logger.info('Socket server closed');
|
|
294
|
+
resolve();
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// Still release PID lock even if server wasn't created
|
|
299
|
+
releasePidLock(this.pidPath);
|
|
300
|
+
resolve();
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Unix Socket Client
|
|
307
|
+
* Used by hook scripts to send messages to bridge
|
|
308
|
+
*/
|
|
309
|
+
export class SocketClient extends EventEmitter {
|
|
310
|
+
socket = null;
|
|
311
|
+
socketPath;
|
|
312
|
+
buffer = '';
|
|
313
|
+
reconnectTimer = null;
|
|
314
|
+
connected = false;
|
|
315
|
+
constructor(socketPath = DEFAULT_SOCKET_PATH) {
|
|
316
|
+
super();
|
|
317
|
+
this.socketPath = socketPath;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Connect to the server
|
|
321
|
+
*/
|
|
322
|
+
connect() {
|
|
323
|
+
return new Promise((resolve, reject) => {
|
|
324
|
+
this.socket = connect(this.socketPath);
|
|
325
|
+
this.socket.on('connect', () => {
|
|
326
|
+
this.connected = true;
|
|
327
|
+
logger.debug('Connected to bridge');
|
|
328
|
+
this.emit('connect');
|
|
329
|
+
resolve();
|
|
330
|
+
});
|
|
331
|
+
this.socket.on('data', (data) => {
|
|
332
|
+
this.handleData(data);
|
|
333
|
+
});
|
|
334
|
+
this.socket.on('close', () => {
|
|
335
|
+
this.connected = false;
|
|
336
|
+
logger.debug('Disconnected from bridge');
|
|
337
|
+
this.emit('disconnect');
|
|
338
|
+
});
|
|
339
|
+
this.socket.on('error', (error) => {
|
|
340
|
+
this.connected = false;
|
|
341
|
+
if (error.code === 'ENOENT') {
|
|
342
|
+
logger.warn('Bridge not running (socket not found)');
|
|
343
|
+
}
|
|
344
|
+
else if (error.code === 'ECONNREFUSED') {
|
|
345
|
+
logger.warn('Bridge refused connection');
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
logger.error('Socket error', { error });
|
|
349
|
+
}
|
|
350
|
+
this.emit('error', error);
|
|
351
|
+
reject(error);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Handle incoming data
|
|
357
|
+
*/
|
|
358
|
+
handleData(data) {
|
|
359
|
+
this.buffer += data.toString();
|
|
360
|
+
const lines = this.buffer.split('\n');
|
|
361
|
+
this.buffer = lines.pop() || '';
|
|
362
|
+
for (const line of lines) {
|
|
363
|
+
if (!line.trim())
|
|
364
|
+
continue;
|
|
365
|
+
try {
|
|
366
|
+
const message = JSON.parse(line);
|
|
367
|
+
this.emit('message', message);
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
logger.error('Failed to parse server message', { error });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Send message to server
|
|
376
|
+
*/
|
|
377
|
+
send(message) {
|
|
378
|
+
if (!this.socket || this.socket.destroyed || !this.connected) {
|
|
379
|
+
logger.warn('Not connected to bridge');
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
try {
|
|
383
|
+
this.socket.write(JSON.stringify(message) + '\n');
|
|
384
|
+
return true;
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
logger.error('Failed to send message', { error });
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Send message and wait for response
|
|
393
|
+
*/
|
|
394
|
+
sendAndWait(message, timeout = 30000) {
|
|
395
|
+
return new Promise((resolve, reject) => {
|
|
396
|
+
const timer = setTimeout(() => {
|
|
397
|
+
reject(new Error('Response timeout'));
|
|
398
|
+
}, timeout);
|
|
399
|
+
const handler = (response) => {
|
|
400
|
+
if (response.sessionId === message.sessionId) {
|
|
401
|
+
clearTimeout(timer);
|
|
402
|
+
this.off('message', handler);
|
|
403
|
+
resolve(response);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
this.on('message', handler);
|
|
407
|
+
if (!this.send(message)) {
|
|
408
|
+
clearTimeout(timer);
|
|
409
|
+
this.off('message', handler);
|
|
410
|
+
reject(new Error('Failed to send message'));
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Check if connected
|
|
416
|
+
*/
|
|
417
|
+
isConnected() {
|
|
418
|
+
return this.connected;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Disconnect from server
|
|
422
|
+
*/
|
|
423
|
+
disconnect() {
|
|
424
|
+
if (this.reconnectTimer) {
|
|
425
|
+
clearTimeout(this.reconnectTimer);
|
|
426
|
+
this.reconnectTimer = null;
|
|
427
|
+
}
|
|
428
|
+
if (this.socket) {
|
|
429
|
+
this.socket.destroy();
|
|
430
|
+
this.socket = null;
|
|
431
|
+
}
|
|
432
|
+
this.connected = false;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
export { SOCKET_DIR, DEFAULT_SOCKET_PATH, DEFAULT_PID_PATH, checkSocketStatus, isPidRunning };
|
|
436
|
+
//# sourceMappingURL=socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/bridge/socket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAGxC,oEAAoE;AACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAExD;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;QACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC5B,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,sCAAsC;QAC3D,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACpD,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,qCAAqC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,uCAAuC;YACvC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACtE,IAAI,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC9B,UAAU,CAAC,OAAO,CAAC,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IACpC,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,UAAU,CAAS;IACnB,OAAO,CAAS;IAChB,MAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEhD,YAAY,aAAqB,mBAAmB,EAAE,UAAkB,gBAAgB;QACtF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,CAAC;gBACH,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/B,iCAAiC;QACjC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,UAAU,uCAAuC,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/C,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;gBACvC,oDAAoD;gBACpD,IAAI,CAAC;oBACH,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAClC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAc;QACrC,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE9B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,QAAgB,EAAE,IAAY;QAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE1B,kCAAkC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAE3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,QAAgB,EAAE,OAAsB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAsB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAC5C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,+BAA+B;YAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAErB,eAAe;YACf,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBACrB,uBAAuB;oBACvB,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC;4BACH,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9B,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC5D,CAAC;oBACH,CAAC;oBAED,mBAAmB;oBACnB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAE7B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACpC,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,uDAAuD;gBACvD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IACpC,MAAM,GAAkB,IAAI,CAAC;IAC7B,UAAU,CAAS;IACnB,MAAM,GAAG,EAAE,CAAC;IACZ,cAAc,GAA0B,IAAI,CAAC;IAC7C,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,aAAqB,mBAAmB;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;gBACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEvB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAE3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAsB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAsB,EAAE,UAAkB,KAAK;QACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACxC,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,MAAM,OAAO,GAAG,CAAC,QAAuB,EAAE,EAAE;gBAC1C,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC7C,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC7B,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;CACF;AAED,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge Types
|
|
3
|
+
*/
|
|
4
|
+
export type MessageType = 'agent_response' | 'tool_start' | 'tool_result' | 'approval_request' | 'user_input' | 'approval_response' | 'command' | 'error' | 'session_start' | 'session_end' | 'turn_complete' | 'pre_compact';
|
|
5
|
+
export interface BridgeMessage {
|
|
6
|
+
type: MessageType;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
content: string;
|
|
10
|
+
metadata?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface Session {
|
|
13
|
+
id: string;
|
|
14
|
+
chatId: number;
|
|
15
|
+
threadId?: number;
|
|
16
|
+
hostname?: string;
|
|
17
|
+
projectDir?: string;
|
|
18
|
+
tmuxTarget?: string;
|
|
19
|
+
tmuxSocket?: string;
|
|
20
|
+
startedAt: Date;
|
|
21
|
+
lastActivity: Date;
|
|
22
|
+
status: 'active' | 'ended' | 'aborted';
|
|
23
|
+
metadata?: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface PendingApproval {
|
|
26
|
+
id: string;
|
|
27
|
+
sessionId: string;
|
|
28
|
+
prompt: string;
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
expiresAt: Date;
|
|
31
|
+
status: 'pending' | 'approved' | 'rejected' | 'expired';
|
|
32
|
+
}
|
|
33
|
+
export interface SocketClientInfo {
|
|
34
|
+
id: string;
|
|
35
|
+
connectedAt: Date;
|
|
36
|
+
sessionId?: string;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,YAAY,GACZ,mBAAmB,GACnB,SAAS,GACT,OAAO,GACP,eAAe,GACf,aAAa,GACb,eAAe,GACf,aAAa,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|