@leverageaiapps/locus 1.1.2 → 2.0.3
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/dist/debug-logger.d.ts +19 -0
- package/dist/debug-logger.d.ts.map +1 -0
- package/dist/debug-logger.js +48 -0
- package/dist/debug-logger.js.map +1 -0
- package/dist/vortex-tunnel.d.ts.map +1 -1
- package/dist/vortex-tunnel.js +519 -5
- package/dist/vortex-tunnel.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logger - Sends logs to Debug Dashboard
|
|
3
|
+
*/
|
|
4
|
+
export declare function initDebugLogger(url?: string, session?: string): void;
|
|
5
|
+
export declare function setDebugSession(session: string): void;
|
|
6
|
+
export interface LogEntry {
|
|
7
|
+
source: 'locus' | 'vortex' | 'ios';
|
|
8
|
+
direction: 'in' | 'out';
|
|
9
|
+
type: string;
|
|
10
|
+
message: string;
|
|
11
|
+
session?: string;
|
|
12
|
+
data?: any;
|
|
13
|
+
}
|
|
14
|
+
export declare function debugLog(entry: Omit<LogEntry, 'source'> & {
|
|
15
|
+
source?: string;
|
|
16
|
+
}): void;
|
|
17
|
+
export declare const logIn: (type: string, message: string, data?: any) => void;
|
|
18
|
+
export declare const logOut: (type: string, message: string, data?: any) => void;
|
|
19
|
+
//# sourceMappingURL=debug-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../src/debug-logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAgC,EAAE,OAAO,CAAC,EAAE,MAAM,QAItF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,QAE9C;AAED,MAAM,WAAW,QAAQ;IACrB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;CACd;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,QAwB7E;AAGD,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,GAAG,SACT,CAAC;AAEvD,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,GAAG,SACT,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Debug Logger - Sends logs to Debug Dashboard
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logOut = exports.logIn = void 0;
|
|
7
|
+
exports.initDebugLogger = initDebugLogger;
|
|
8
|
+
exports.setDebugSession = setDebugSession;
|
|
9
|
+
exports.debugLog = debugLog;
|
|
10
|
+
let debugUrl = null;
|
|
11
|
+
let sessionId = null;
|
|
12
|
+
function initDebugLogger(url = 'http://localhost:4000', session) {
|
|
13
|
+
debugUrl = url;
|
|
14
|
+
sessionId = session || null;
|
|
15
|
+
console.log(`[Debug] Logger initialized: ${url}`);
|
|
16
|
+
}
|
|
17
|
+
function setDebugSession(session) {
|
|
18
|
+
sessionId = session;
|
|
19
|
+
}
|
|
20
|
+
function debugLog(entry) {
|
|
21
|
+
const fullEntry = {
|
|
22
|
+
source: entry.source || 'locus',
|
|
23
|
+
direction: entry.direction,
|
|
24
|
+
type: entry.type,
|
|
25
|
+
message: entry.message,
|
|
26
|
+
session: entry.session || sessionId || undefined,
|
|
27
|
+
data: entry.data
|
|
28
|
+
};
|
|
29
|
+
// Always log to console
|
|
30
|
+
const arrow = entry.direction === 'in' ? '←' : '→';
|
|
31
|
+
console.log(` [${fullEntry.source.toUpperCase()}] ${arrow} ${fullEntry.type}: ${fullEntry.message}`);
|
|
32
|
+
// Send to debug dashboard if configured
|
|
33
|
+
if (debugUrl) {
|
|
34
|
+
fetch(`${debugUrl}/log`, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: { 'Content-Type': 'application/json' },
|
|
37
|
+
body: JSON.stringify(fullEntry)
|
|
38
|
+
}).catch(() => {
|
|
39
|
+
// Ignore errors - dashboard might not be running
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Convenience functions
|
|
44
|
+
const logIn = (type, message, data) => debugLog({ direction: 'in', type, message, data });
|
|
45
|
+
exports.logIn = logIn;
|
|
46
|
+
const logOut = (type, message, data) => debugLog({ direction: 'out', type, message, data });
|
|
47
|
+
exports.logOut = logOut;
|
|
48
|
+
//# sourceMappingURL=debug-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../src/debug-logger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,0CAIC;AAED,0CAEC;AAWD,4BAwBC;AA9CD,IAAI,QAAQ,GAAkB,IAAI,CAAC;AACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;AAEpC,SAAgB,eAAe,CAAC,MAAc,uBAAuB,EAAE,OAAgB;IACnF,QAAQ,GAAG,GAAG,CAAC;IACf,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe;IAC3C,SAAS,GAAG,OAAO,CAAC;AACxB,CAAC;AAWD,SAAgB,QAAQ,CAAC,KAAqD;IAC1E,MAAM,SAAS,GAAa;QACxB,MAAM,EAAG,KAAK,CAAC,MAAc,IAAI,OAAO;QACxC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC;IAEF,wBAAwB;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtG,wCAAwC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,QAAQ,MAAM,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACV,iDAAiD;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,wBAAwB;AACjB,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAC/D,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAD1C,QAAA,KAAK,SACqC;AAEhD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAChE,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAD3C,QAAA,MAAM,UACqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vortex-tunnel.d.ts","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vortex-tunnel.d.ts","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"AAgEA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ElF;AA66BD,wBAAgB,UAAU,IAAI,IAAI,CAcjC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
package/dist/vortex-tunnel.js
CHANGED
|
@@ -49,11 +49,19 @@ let sessionId = null;
|
|
|
49
49
|
let gatewayUrl = null;
|
|
50
50
|
let localPort = null;
|
|
51
51
|
let heartbeatInterval = null;
|
|
52
|
+
let isReconnecting = false;
|
|
53
|
+
let reconnectAttempts = 0;
|
|
52
54
|
// Heartbeat configuration
|
|
53
|
-
const HEARTBEAT_INTERVAL_MS = 20 * 1000; // Send heartbeat every
|
|
55
|
+
const HEARTBEAT_INTERVAL_MS = 20 * 1000; // Send heartbeat every 20 seconds
|
|
56
|
+
const MAX_RECONNECT_ATTEMPTS = 100; // Max reconnect attempts (essentially unlimited for home use)
|
|
57
|
+
const MAX_RECONNECT_DELAY_MS = 60 * 1000; // Max 60 seconds between reconnect attempts
|
|
54
58
|
const MAX_PAYLOAD_SIZE = 64 * 1024 * 1024; // 64MB max message size for large file transfer
|
|
55
59
|
// Map to store pending HTTP requests
|
|
56
60
|
const pendingRequests = new Map();
|
|
61
|
+
// Current running task
|
|
62
|
+
let currentTask = null;
|
|
63
|
+
// Pending task exec responses (for command execution within tasks)
|
|
64
|
+
const pendingTaskExecs = new Map();
|
|
57
65
|
// Single shared WebSocket connection to local server
|
|
58
66
|
let sharedLocalWs = null;
|
|
59
67
|
let sharedLocalWsReady = false;
|
|
@@ -108,7 +116,10 @@ function startTunnel(port = 4020, gateway) {
|
|
|
108
116
|
console.log(' [Vortex] Tunnel disconnected');
|
|
109
117
|
stopHeartbeat();
|
|
110
118
|
tunnelWs = null;
|
|
111
|
-
cleanup
|
|
119
|
+
// Auto reconnect instead of cleanup
|
|
120
|
+
if (!isReconnecting && sessionId && gatewayUrl) {
|
|
121
|
+
attemptTunnelReconnect();
|
|
122
|
+
}
|
|
112
123
|
});
|
|
113
124
|
tunnelWs.on('error', (err) => {
|
|
114
125
|
console.error(' [Vortex] Tunnel error:', err.message);
|
|
@@ -143,10 +154,61 @@ function createSharedLocalConnection() {
|
|
|
143
154
|
sharedLocalWsReady = true;
|
|
144
155
|
});
|
|
145
156
|
sharedLocalWs.on('message', (data) => {
|
|
146
|
-
|
|
157
|
+
const dataStr = Buffer.isBuffer(data) ? data.toString() : data.toString();
|
|
158
|
+
// Check if this is task-related output (contains markers)
|
|
159
|
+
if (pendingTaskExecs.size > 0 && dataStr.includes('<<TASK_EXEC_')) {
|
|
160
|
+
processTaskOutput(dataStr);
|
|
161
|
+
// Don't forward task execution output to browsers
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Check if this is raw terminal output that might be part of task execution
|
|
165
|
+
try {
|
|
166
|
+
const msg = JSON.parse(dataStr);
|
|
167
|
+
if (msg.type === 'output' && pendingTaskExecs.size > 0) {
|
|
168
|
+
// Could be task output - check for markers
|
|
169
|
+
if (msg.data && (msg.data.includes('<<TASK_EXEC_') || currentTask)) {
|
|
170
|
+
processTaskOutput(msg.data);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Handle AI chat task responses from local server
|
|
175
|
+
if (msg.type === 'ai_chat_response' && currentTask && currentTask.type === 'ai_chat') {
|
|
176
|
+
sendToGateway({
|
|
177
|
+
type: 'task_output',
|
|
178
|
+
task_id: currentTask.id,
|
|
179
|
+
chunk: msg.content || ''
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (msg.type === 'ai_chat_complete' && currentTask && currentTask.type === 'ai_chat') {
|
|
184
|
+
sendToGateway({
|
|
185
|
+
type: 'task_complete',
|
|
186
|
+
task_id: currentTask.id,
|
|
187
|
+
success: true,
|
|
188
|
+
output: msg.full_response || currentTask.accumulatedOutput
|
|
189
|
+
});
|
|
190
|
+
currentTask = null;
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (msg.type === 'ai_chat_error' && currentTask && currentTask.type === 'ai_chat') {
|
|
194
|
+
sendToGateway({
|
|
195
|
+
type: 'task_error',
|
|
196
|
+
task_id: currentTask.id,
|
|
197
|
+
error: msg.error || 'AI chat failed'
|
|
198
|
+
});
|
|
199
|
+
currentTask = null;
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Not JSON, might be raw output
|
|
205
|
+
if (pendingTaskExecs.size > 0 && dataStr.includes('<<TASK_EXEC_')) {
|
|
206
|
+
processTaskOutput(dataStr);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Forward data from local server to all browsers through gateway (legacy mode)
|
|
147
211
|
if (tunnelWs && tunnelWs.readyState === ws_1.default.OPEN) {
|
|
148
|
-
// Local server sends JSON text, forward it directly
|
|
149
|
-
const dataStr = Buffer.isBuffer(data) ? data.toString() : data.toString();
|
|
150
212
|
tunnelWs.send(dataStr);
|
|
151
213
|
}
|
|
152
214
|
});
|
|
@@ -218,6 +280,14 @@ function handleGatewayMessage(msg) {
|
|
|
218
280
|
if (!sharedLocalWsReady) {
|
|
219
281
|
createSharedLocalConnection();
|
|
220
282
|
}
|
|
283
|
+
else {
|
|
284
|
+
// Send Ctrl+C to reset shell state in case previous session left it in a bad state
|
|
285
|
+
// (e.g., stuck in heredoc mode, waiting for input, etc.)
|
|
286
|
+
if (sharedLocalWs && sharedLocalWs.readyState === ws_1.default.OPEN) {
|
|
287
|
+
console.log(` [Vortex] Sending Ctrl+C to reset shell state`);
|
|
288
|
+
sharedLocalWs.send(JSON.stringify({ type: 'input', data: '\x03' }));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
221
291
|
break;
|
|
222
292
|
case 'client_disconnected':
|
|
223
293
|
console.log(` [Vortex] Client disconnected`);
|
|
@@ -225,6 +295,15 @@ function handleGatewayMessage(msg) {
|
|
|
225
295
|
case 'pong':
|
|
226
296
|
// Heartbeat response received, connection is alive
|
|
227
297
|
break;
|
|
298
|
+
// ============== Task Queue Protocol (v3) ==============
|
|
299
|
+
case 'task_execute':
|
|
300
|
+
// Gateway asking us to execute a task
|
|
301
|
+
handleTaskExecute(msg);
|
|
302
|
+
break;
|
|
303
|
+
case 'task_cancel':
|
|
304
|
+
// Gateway asking us to cancel a task
|
|
305
|
+
handleTaskCancel(msg.task_id);
|
|
306
|
+
break;
|
|
228
307
|
default:
|
|
229
308
|
// Forward any other message to local server (v2 protocol - direct relay)
|
|
230
309
|
// This handles input, resize, ping, etc. from browser
|
|
@@ -234,6 +313,327 @@ function handleGatewayMessage(msg) {
|
|
|
234
313
|
break;
|
|
235
314
|
}
|
|
236
315
|
}
|
|
316
|
+
// ============================================================================
|
|
317
|
+
// Task Execution (v3 Protocol)
|
|
318
|
+
// ============================================================================
|
|
319
|
+
/**
|
|
320
|
+
* Handle task execution request from Gateway
|
|
321
|
+
*/
|
|
322
|
+
async function handleTaskExecute(msg) {
|
|
323
|
+
const { task_id, task_type, payload } = msg;
|
|
324
|
+
if (currentTask && !currentTask.cancelled) {
|
|
325
|
+
// Already executing a task, shouldn't happen if gateway queues properly
|
|
326
|
+
console.error(` [Task] Error: Already executing task ${currentTask.id}`);
|
|
327
|
+
sendToGateway({
|
|
328
|
+
type: 'task_error',
|
|
329
|
+
task_id,
|
|
330
|
+
error: 'Already executing another task'
|
|
331
|
+
});
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
console.log(` [Task] Executing task ${task_id} (${task_type})`);
|
|
335
|
+
currentTask = {
|
|
336
|
+
id: task_id,
|
|
337
|
+
type: task_type,
|
|
338
|
+
payload,
|
|
339
|
+
startTime: Date.now(),
|
|
340
|
+
accumulatedOutput: '',
|
|
341
|
+
cancelled: false
|
|
342
|
+
};
|
|
343
|
+
try {
|
|
344
|
+
switch (task_type) {
|
|
345
|
+
case 'exec':
|
|
346
|
+
await executeExecTask(task_id, payload);
|
|
347
|
+
break;
|
|
348
|
+
case 'ai_chat':
|
|
349
|
+
await executeAiChatTask(task_id, payload);
|
|
350
|
+
break;
|
|
351
|
+
case 'file_read':
|
|
352
|
+
await executeFileReadTask(task_id, payload);
|
|
353
|
+
break;
|
|
354
|
+
case 'file_write':
|
|
355
|
+
await executeFileWriteTask(task_id, payload);
|
|
356
|
+
break;
|
|
357
|
+
default:
|
|
358
|
+
throw new Error(`Unknown task type: ${task_type}`);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
console.error(` [Task] Error executing task ${task_id}:`, error.message);
|
|
363
|
+
if (!currentTask?.cancelled) {
|
|
364
|
+
sendToGateway({
|
|
365
|
+
type: 'task_error',
|
|
366
|
+
task_id,
|
|
367
|
+
error: error.message
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
currentTask = null;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Handle task cancellation request
|
|
377
|
+
*/
|
|
378
|
+
function handleTaskCancel(taskId) {
|
|
379
|
+
if (currentTask && currentTask.id === taskId) {
|
|
380
|
+
console.log(` [Task] Cancelling task ${taskId}`);
|
|
381
|
+
currentTask.cancelled = true;
|
|
382
|
+
// Cancel any pending exec for this task
|
|
383
|
+
for (const [execId, pending] of pendingTaskExecs.entries()) {
|
|
384
|
+
if (pending.taskId === taskId) {
|
|
385
|
+
pending.reject(new Error('Task cancelled'));
|
|
386
|
+
pendingTaskExecs.delete(execId);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Send Ctrl+C to interrupt any running command
|
|
390
|
+
if (sharedLocalWs && sharedLocalWs.readyState === ws_1.default.OPEN) {
|
|
391
|
+
sharedLocalWs.send(JSON.stringify({ type: 'input', data: '\x03' }));
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Execute a shell command task
|
|
397
|
+
*/
|
|
398
|
+
async function executeExecTask(taskId, payload) {
|
|
399
|
+
const { command } = payload;
|
|
400
|
+
if (!command) {
|
|
401
|
+
throw new Error('No command specified');
|
|
402
|
+
}
|
|
403
|
+
if (!sharedLocalWs || sharedLocalWs.readyState !== ws_1.default.OPEN) {
|
|
404
|
+
throw new Error('Local WebSocket not connected');
|
|
405
|
+
}
|
|
406
|
+
console.log(` [Task] Executing command: ${command.substring(0, 50)}...`);
|
|
407
|
+
const result = await executeCommandWithOutput(taskId, command);
|
|
408
|
+
if (currentTask?.cancelled) {
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
sendToGateway({
|
|
412
|
+
type: 'task_complete',
|
|
413
|
+
task_id: taskId,
|
|
414
|
+
success: result.exitCode === 0,
|
|
415
|
+
output: result.output,
|
|
416
|
+
exit_code: result.exitCode
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Execute command and collect output with streaming
|
|
421
|
+
*/
|
|
422
|
+
function executeCommandWithOutput(taskId, command) {
|
|
423
|
+
return new Promise((resolve, reject) => {
|
|
424
|
+
const execId = `exec_${taskId}_${Date.now()}`;
|
|
425
|
+
const startMarker = `<<TASK_EXEC_START_${execId}>>`;
|
|
426
|
+
const endMarkerPrefix = `<<TASK_EXEC_END_${execId}>>_`;
|
|
427
|
+
pendingTaskExecs.set(execId, {
|
|
428
|
+
taskId,
|
|
429
|
+
resolve,
|
|
430
|
+
reject,
|
|
431
|
+
output: ''
|
|
432
|
+
});
|
|
433
|
+
// Set timeout
|
|
434
|
+
const timeout = setTimeout(() => {
|
|
435
|
+
const pending = pendingTaskExecs.get(execId);
|
|
436
|
+
if (pending) {
|
|
437
|
+
pendingTaskExecs.delete(execId);
|
|
438
|
+
reject(new Error('Command timed out'));
|
|
439
|
+
}
|
|
440
|
+
}, 300000); // 5 minute timeout
|
|
441
|
+
// Store timeout for cleanup
|
|
442
|
+
pendingTaskExecs.get(execId).timeout = timeout;
|
|
443
|
+
// Send wrapped command
|
|
444
|
+
const wrappedCommand = `echo '${startMarker}'; ${command}; echo '${endMarkerPrefix}'$?\n`;
|
|
445
|
+
if (sharedLocalWs && sharedLocalWs.readyState === ws_1.default.OPEN) {
|
|
446
|
+
sharedLocalWs.send(JSON.stringify({ type: 'input', data: wrappedCommand }));
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
pendingTaskExecs.delete(execId);
|
|
450
|
+
clearTimeout(timeout);
|
|
451
|
+
reject(new Error('WebSocket not connected'));
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Execute AI chat task (forward to local server for AI processing)
|
|
457
|
+
*/
|
|
458
|
+
async function executeAiChatTask(taskId, payload) {
|
|
459
|
+
// AI chat tasks are forwarded to the local web server which handles Claude API
|
|
460
|
+
// The local server will send streaming responses back
|
|
461
|
+
if (!sharedLocalWs || sharedLocalWs.readyState !== ws_1.default.OPEN) {
|
|
462
|
+
throw new Error('Local WebSocket not connected');
|
|
463
|
+
}
|
|
464
|
+
// Send AI chat request to local server
|
|
465
|
+
sharedLocalWs.send(JSON.stringify({
|
|
466
|
+
type: 'ai_chat_task',
|
|
467
|
+
task_id: taskId,
|
|
468
|
+
message: payload.message,
|
|
469
|
+
context: payload.context
|
|
470
|
+
}));
|
|
471
|
+
// The response will come through the normal WebSocket message handler
|
|
472
|
+
// which will detect ai_chat_response and forward appropriately
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Execute file read task
|
|
476
|
+
* Supports both text files (utf-8) and binary files (base64)
|
|
477
|
+
*/
|
|
478
|
+
async function executeFileReadTask(taskId, payload) {
|
|
479
|
+
const { file_path } = payload;
|
|
480
|
+
if (!file_path) {
|
|
481
|
+
throw new Error('No file path specified');
|
|
482
|
+
}
|
|
483
|
+
const fs = require('fs').promises;
|
|
484
|
+
const path = require('path');
|
|
485
|
+
try {
|
|
486
|
+
// Check if file exists and get stats
|
|
487
|
+
const stats = await fs.stat(file_path);
|
|
488
|
+
const fileName = path.basename(file_path);
|
|
489
|
+
const ext = path.extname(file_path).toLowerCase();
|
|
490
|
+
// Binary file extensions
|
|
491
|
+
const binaryExtensions = ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ico', '.webp',
|
|
492
|
+
'.pdf', '.zip', '.tar', '.gz', '.rar', '.7z',
|
|
493
|
+
'.mp3', '.mp4', '.wav', '.avi', '.mov', '.mkv',
|
|
494
|
+
'.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx',
|
|
495
|
+
'.exe', '.dll', '.so', '.dylib', '.bin'];
|
|
496
|
+
const isBinary = binaryExtensions.includes(ext);
|
|
497
|
+
if (isBinary) {
|
|
498
|
+
// Read as binary and encode to base64
|
|
499
|
+
const buffer = await fs.readFile(file_path);
|
|
500
|
+
const base64Content = buffer.toString('base64');
|
|
501
|
+
// Determine MIME type
|
|
502
|
+
const mimeTypes = {
|
|
503
|
+
'.png': 'image/png',
|
|
504
|
+
'.jpg': 'image/jpeg',
|
|
505
|
+
'.jpeg': 'image/jpeg',
|
|
506
|
+
'.gif': 'image/gif',
|
|
507
|
+
'.bmp': 'image/bmp',
|
|
508
|
+
'.webp': 'image/webp',
|
|
509
|
+
'.pdf': 'application/pdf',
|
|
510
|
+
'.zip': 'application/zip',
|
|
511
|
+
'.mp3': 'audio/mpeg',
|
|
512
|
+
'.mp4': 'video/mp4',
|
|
513
|
+
};
|
|
514
|
+
const mimeType = mimeTypes[ext] || 'application/octet-stream';
|
|
515
|
+
sendToGateway({
|
|
516
|
+
type: 'task_complete',
|
|
517
|
+
task_id: taskId,
|
|
518
|
+
success: true,
|
|
519
|
+
file_name: fileName,
|
|
520
|
+
file_path: file_path,
|
|
521
|
+
file_size: stats.size,
|
|
522
|
+
file_type: mimeType,
|
|
523
|
+
content_base64: base64Content,
|
|
524
|
+
is_binary: true
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
// Read as text
|
|
529
|
+
const content = await fs.readFile(file_path, 'utf-8');
|
|
530
|
+
sendToGateway({
|
|
531
|
+
type: 'task_complete',
|
|
532
|
+
task_id: taskId,
|
|
533
|
+
success: true,
|
|
534
|
+
file_name: fileName,
|
|
535
|
+
file_path: file_path,
|
|
536
|
+
file_size: stats.size,
|
|
537
|
+
file_content: content,
|
|
538
|
+
is_binary: false
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
catch (error) {
|
|
543
|
+
throw new Error(`Failed to read file: ${error.message}`);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Execute file write task
|
|
548
|
+
*/
|
|
549
|
+
async function executeFileWriteTask(taskId, payload) {
|
|
550
|
+
const { file_path, file_content } = payload;
|
|
551
|
+
if (!file_path || file_content === undefined) {
|
|
552
|
+
throw new Error('File path and content required');
|
|
553
|
+
}
|
|
554
|
+
const fs = require('fs').promises;
|
|
555
|
+
try {
|
|
556
|
+
await fs.writeFile(file_path, file_content, 'utf-8');
|
|
557
|
+
sendToGateway({
|
|
558
|
+
type: 'task_complete',
|
|
559
|
+
task_id: taskId,
|
|
560
|
+
success: true,
|
|
561
|
+
output: `File written: ${file_path}`
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
catch (error) {
|
|
565
|
+
throw new Error(`Failed to write file: ${error.message}`);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Process output from local WebSocket for task execution
|
|
570
|
+
* Called when we receive output that might contain task markers
|
|
571
|
+
*/
|
|
572
|
+
function processTaskOutput(data) {
|
|
573
|
+
// Check for task exec markers
|
|
574
|
+
for (const [execId, pending] of pendingTaskExecs.entries()) {
|
|
575
|
+
const startMarker = `<<TASK_EXEC_START_${execId}>>`;
|
|
576
|
+
const endMarkerPrefix = `<<TASK_EXEC_END_${execId}>>_`;
|
|
577
|
+
// Track if we've seen start marker
|
|
578
|
+
const hasSeenStart = pending.hasSeenStart || false;
|
|
579
|
+
// Check if this data contains start marker
|
|
580
|
+
if (!hasSeenStart && data.includes(startMarker)) {
|
|
581
|
+
// Extract content after start marker
|
|
582
|
+
const startIdx = data.indexOf(startMarker);
|
|
583
|
+
data = data.substring(startIdx + startMarker.length);
|
|
584
|
+
// Skip leading newlines
|
|
585
|
+
while (data.startsWith('\n') || data.startsWith('\r')) {
|
|
586
|
+
data = data.substring(1);
|
|
587
|
+
}
|
|
588
|
+
pending.hasSeenStart = true;
|
|
589
|
+
}
|
|
590
|
+
else if (!hasSeenStart) {
|
|
591
|
+
// Haven't seen start marker yet, ignore this chunk (it's command echo)
|
|
592
|
+
continue;
|
|
593
|
+
}
|
|
594
|
+
// Check for end marker first (might be in same chunk as start)
|
|
595
|
+
const endIdx = data.indexOf(endMarkerPrefix);
|
|
596
|
+
if (endIdx !== -1) {
|
|
597
|
+
// Only take content before end marker
|
|
598
|
+
const cleanOutput = data.substring(0, endIdx);
|
|
599
|
+
pending.output += cleanOutput;
|
|
600
|
+
const afterEnd = data.substring(endIdx + endMarkerPrefix.length);
|
|
601
|
+
const exitCodeMatch = afterEnd.match(/^(\d+)/);
|
|
602
|
+
const exitCode = exitCodeMatch ? parseInt(exitCodeMatch[1], 10) : 0;
|
|
603
|
+
// Clear timeout
|
|
604
|
+
if (pending.timeout) {
|
|
605
|
+
clearTimeout(pending.timeout);
|
|
606
|
+
}
|
|
607
|
+
// Send final clean output to gateway
|
|
608
|
+
const finalOutput = pending.output.trim();
|
|
609
|
+
if (currentTask && !currentTask.cancelled) {
|
|
610
|
+
sendToGateway({
|
|
611
|
+
type: 'task_output',
|
|
612
|
+
task_id: pending.taskId,
|
|
613
|
+
chunk: finalOutput,
|
|
614
|
+
is_final: true
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
// Resolve promise
|
|
618
|
+
pending.resolve({
|
|
619
|
+
output: finalOutput,
|
|
620
|
+
exitCode
|
|
621
|
+
});
|
|
622
|
+
pendingTaskExecs.delete(execId);
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
// No end marker yet, append clean data (for streaming)
|
|
626
|
+
if (currentTask && !currentTask.cancelled && data.length > 0) {
|
|
627
|
+
pending.output += data;
|
|
628
|
+
// Send streaming chunk to gateway (only clean output)
|
|
629
|
+
sendToGateway({
|
|
630
|
+
type: 'task_output',
|
|
631
|
+
task_id: pending.taskId,
|
|
632
|
+
chunk: data
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
237
637
|
/**
|
|
238
638
|
* Handle HTTP request forwarded from gateway
|
|
239
639
|
* Forward it to the local server and send response back
|
|
@@ -427,6 +827,115 @@ function stopHeartbeat() {
|
|
|
427
827
|
heartbeatInterval = null;
|
|
428
828
|
}
|
|
429
829
|
}
|
|
830
|
+
/**
|
|
831
|
+
* Attempt to reconnect tunnel with exponential backoff
|
|
832
|
+
* Keeps the same session ID so iOS doesn't need to re-scan QR code
|
|
833
|
+
*/
|
|
834
|
+
async function attemptTunnelReconnect() {
|
|
835
|
+
if (isReconnecting) {
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
838
|
+
isReconnecting = true;
|
|
839
|
+
while (reconnectAttempts < MAX_RECONNECT_ATTEMPTS) {
|
|
840
|
+
reconnectAttempts++;
|
|
841
|
+
const delay = Math.min(Math.pow(2, reconnectAttempts) * 1000, MAX_RECONNECT_DELAY_MS);
|
|
842
|
+
console.log(` [Vortex] Tunnel reconnect attempt ${reconnectAttempts}/${MAX_RECONNECT_ATTEMPTS} in ${delay / 1000}s...`);
|
|
843
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
844
|
+
try {
|
|
845
|
+
await reconnectTunnel();
|
|
846
|
+
console.log(` [Vortex] Tunnel reconnected successfully!`);
|
|
847
|
+
reconnectAttempts = 0;
|
|
848
|
+
isReconnecting = false;
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
catch (error) {
|
|
852
|
+
console.error(` [Vortex] Reconnect failed: ${error.message}`);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
console.log(` [Vortex] Max reconnect attempts reached, giving up`);
|
|
856
|
+
isReconnecting = false;
|
|
857
|
+
cleanup();
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Reconnect tunnel using existing session ID
|
|
861
|
+
*/
|
|
862
|
+
async function reconnectTunnel() {
|
|
863
|
+
if (!sessionId || !gatewayUrl || !localPort) {
|
|
864
|
+
throw new Error('Missing session info for reconnect');
|
|
865
|
+
}
|
|
866
|
+
// Re-register tunnel with gateway (session should still exist)
|
|
867
|
+
try {
|
|
868
|
+
await axios_1.default.post(`${gatewayUrl}/api/tunnel/register`, {
|
|
869
|
+
session_id: sessionId,
|
|
870
|
+
});
|
|
871
|
+
}
|
|
872
|
+
catch (e) {
|
|
873
|
+
// If session expired, we need to create a new one
|
|
874
|
+
if (e.response?.status === 404) {
|
|
875
|
+
console.log(` [Vortex] Session expired, creating new session...`);
|
|
876
|
+
// Create new session
|
|
877
|
+
const response = await axios_1.default.post(`${gatewayUrl}/api/session`, {
|
|
878
|
+
mode: 'http_proxy',
|
|
879
|
+
client_type: `LeverageAI-Agent/${process.platform}`
|
|
880
|
+
});
|
|
881
|
+
const { session_id, url } = response.data;
|
|
882
|
+
sessionId = session_id;
|
|
883
|
+
tunnelUrl = url;
|
|
884
|
+
console.log(` [Vortex] New session created: ${session_id.substring(0, 8)}...`);
|
|
885
|
+
console.log(` [Vortex] ⚠️ New URL - need to re-scan QR code: ${url}`);
|
|
886
|
+
// Register new tunnel
|
|
887
|
+
await axios_1.default.post(`${gatewayUrl}/api/tunnel/register`, {
|
|
888
|
+
session_id: session_id,
|
|
889
|
+
});
|
|
890
|
+
}
|
|
891
|
+
else {
|
|
892
|
+
throw e;
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
// Connect WebSocket to gateway
|
|
896
|
+
const wsUrl = gatewayUrl.replace('https://', 'wss://').replace('http://', 'ws://') + `/tunnel/${sessionId}`;
|
|
897
|
+
return new Promise((resolve, reject) => {
|
|
898
|
+
tunnelWs = new ws_1.default(wsUrl, {
|
|
899
|
+
maxPayload: MAX_PAYLOAD_SIZE
|
|
900
|
+
});
|
|
901
|
+
tunnelWs.on('open', () => {
|
|
902
|
+
console.log(` [Vortex] Tunnel reconnected`);
|
|
903
|
+
startHeartbeat();
|
|
904
|
+
// Recreate shared local connection
|
|
905
|
+
createSharedLocalConnection();
|
|
906
|
+
resolve();
|
|
907
|
+
});
|
|
908
|
+
tunnelWs.on('message', (data) => {
|
|
909
|
+
try {
|
|
910
|
+
const msg = JSON.parse(data.toString());
|
|
911
|
+
handleGatewayMessage(msg);
|
|
912
|
+
}
|
|
913
|
+
catch (e) {
|
|
914
|
+
console.error('[Vortex] Invalid message from gateway:', e);
|
|
915
|
+
}
|
|
916
|
+
});
|
|
917
|
+
tunnelWs.on('close', () => {
|
|
918
|
+
console.log(' [Vortex] Tunnel disconnected');
|
|
919
|
+
stopHeartbeat();
|
|
920
|
+
tunnelWs = null;
|
|
921
|
+
// Auto reconnect again
|
|
922
|
+
if (!isReconnecting && sessionId && gatewayUrl) {
|
|
923
|
+
attemptTunnelReconnect();
|
|
924
|
+
}
|
|
925
|
+
});
|
|
926
|
+
tunnelWs.on('error', (err) => {
|
|
927
|
+
console.error(' [Vortex] Tunnel error:', err.message);
|
|
928
|
+
reject(err);
|
|
929
|
+
});
|
|
930
|
+
// Timeout for connection
|
|
931
|
+
setTimeout(() => {
|
|
932
|
+
if (tunnelWs && tunnelWs.readyState !== ws_1.default.OPEN) {
|
|
933
|
+
tunnelWs.close();
|
|
934
|
+
reject(new Error('Connection timeout'));
|
|
935
|
+
}
|
|
936
|
+
}, 10000);
|
|
937
|
+
});
|
|
938
|
+
}
|
|
430
939
|
/**
|
|
431
940
|
* Clean up resources
|
|
432
941
|
*/
|
|
@@ -450,6 +959,8 @@ function cleanup() {
|
|
|
450
959
|
websocketConnections.clear();
|
|
451
960
|
}
|
|
452
961
|
function stopTunnel() {
|
|
962
|
+
// Set reconnecting to true to prevent auto-reconnect on manual stop
|
|
963
|
+
isReconnecting = true;
|
|
453
964
|
stopHeartbeat();
|
|
454
965
|
if (tunnelWs) {
|
|
455
966
|
tunnelWs.close();
|
|
@@ -458,6 +969,9 @@ function stopTunnel() {
|
|
|
458
969
|
cleanup();
|
|
459
970
|
tunnelUrl = null;
|
|
460
971
|
sessionId = null;
|
|
972
|
+
gatewayUrl = null;
|
|
973
|
+
isReconnecting = false;
|
|
974
|
+
reconnectAttempts = 0;
|
|
461
975
|
}
|
|
462
976
|
function getTunnelUrl() {
|
|
463
977
|
return tunnelUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vortex-tunnel.js","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vortex-tunnel.js","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"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"}
|