@leverageaiapps/leverageai-agent 1.0.1 → 1.0.2
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/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +4 -4
- package/dist/session.js.map +1 -1
- package/dist/vortex-tunnel.d.ts +9 -0
- package/dist/vortex-tunnel.d.ts.map +1 -0
- package/dist/vortex-tunnel.js +355 -0
- package/dist/vortex-tunnel.js.map +1 -0
- package/package.json +2 -2
- package/public/index.html +3 -3
- package/public/js/terminal.js +4 -1
- package/public/js/voice-input.js +1 -1
package/dist/index.js
CHANGED
|
@@ -55,13 +55,17 @@ program
|
|
|
55
55
|
.option('-n, --name <name>', 'Machine name to display', process.env.HOSTNAME || 'My Computer')
|
|
56
56
|
.option('--pin <pin>', 'Set a 6-digit PIN for web access security (default: no PIN, direct access)')
|
|
57
57
|
.option('--debug-asr', 'Enable verbose ASR (voice recognition) logging')
|
|
58
|
+
.option('-g, --gateway <url>', 'Vortex gateway URL (default: https://vortex.futuretech.social)')
|
|
58
59
|
.allowUnknownOption(true)
|
|
59
60
|
.action(async (command, options) => {
|
|
60
61
|
console.log('');
|
|
61
62
|
console.log(' 🚀 LeverageAI Agent - Coding anywhere in your pocket');
|
|
62
63
|
console.log('');
|
|
63
64
|
// PIN is optional - if not provided, no authentication required
|
|
64
|
-
await (0, session_1.startSession)(options.name, options.pin, command, {
|
|
65
|
+
await (0, session_1.startSession)(options.name, options.pin, command, {
|
|
66
|
+
debugAsr: options.debugAsr,
|
|
67
|
+
gatewayUrl: options.gateway
|
|
68
|
+
});
|
|
65
69
|
});
|
|
66
70
|
program
|
|
67
71
|
.command('config')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyC;AACzC,qCAAgD;AAChD,uCAAyB;AACzB,2CAA6B;AAE7B,iCAAiC;AACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,cAAc,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;KAC7F,MAAM,CAAC,aAAa,EAAE,4EAA4E,CAAC;KACnG,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,kBAAkB,CAAC,IAAI,CAAC;KACxB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,gEAAgE;IAChE,MAAM,IAAA,sBAAY,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyC;AACzC,qCAAgD;AAChD,uCAAyB;AACzB,2CAA6B;AAE7B,iCAAiC;AACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,cAAc,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;KAC7F,MAAM,CAAC,aAAa,EAAE,4EAA4E,CAAC;KACnG,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,gEAAgE,CAAC;KAC/F,kBAAkB,CAAC,IAAI,CAAC;KACxB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,gEAAgE;IAChE,MAAM,IAAA,sBAAY,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE;QACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,OAAO;KAC9B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAA,kBAAS,EAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/session.d.ts
CHANGED
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AA6GA,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AA6GA,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIzI"}
|
package/dist/session.js
CHANGED
|
@@ -39,7 +39,7 @@ const net = __importStar(require("net"));
|
|
|
39
39
|
const http = __importStar(require("http"));
|
|
40
40
|
const pty_1 = require("./pty");
|
|
41
41
|
const web_server_1 = require("./web-server");
|
|
42
|
-
const
|
|
42
|
+
const vortex_tunnel_1 = require("./vortex-tunnel");
|
|
43
43
|
const MIN_PORT = 8000;
|
|
44
44
|
const MAX_PORT = 65535;
|
|
45
45
|
/**
|
|
@@ -167,7 +167,7 @@ async function startSession(machineName, userPin, command, options = {}) {
|
|
|
167
167
|
console.log(' Creating tunnel...');
|
|
168
168
|
let tunnelUrl;
|
|
169
169
|
try {
|
|
170
|
-
tunnelUrl = await (0,
|
|
170
|
+
tunnelUrl = await (0, vortex_tunnel_1.startTunnel)(port, options.gatewayUrl);
|
|
171
171
|
}
|
|
172
172
|
catch (error) {
|
|
173
173
|
console.log('');
|
|
@@ -233,7 +233,7 @@ async function startSession(machineName, userPin, command, options = {}) {
|
|
|
233
233
|
const cleanup = () => {
|
|
234
234
|
(0, pty_1.killPTY)();
|
|
235
235
|
(0, web_server_1.stopWebServer)();
|
|
236
|
-
(0,
|
|
236
|
+
(0, vortex_tunnel_1.stopTunnel)();
|
|
237
237
|
process.exit(0);
|
|
238
238
|
};
|
|
239
239
|
// Handle Ctrl+C
|
|
@@ -243,7 +243,7 @@ async function startSession(machineName, userPin, command, options = {}) {
|
|
|
243
243
|
catch (error) {
|
|
244
244
|
console.error(' ✗ Failed to start session:', error);
|
|
245
245
|
(0, web_server_1.stopWebServer)();
|
|
246
|
-
(0,
|
|
246
|
+
(0, vortex_tunnel_1.stopTunnel)();
|
|
247
247
|
process.exit(1);
|
|
248
248
|
}
|
|
249
249
|
}
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start Vortex tunnel
|
|
3
|
+
* Creates a session with the gateway and establishes WebSocket connection
|
|
4
|
+
*/
|
|
5
|
+
export declare function startTunnel(port?: number, gateway?: string): Promise<string>;
|
|
6
|
+
export declare function stopTunnel(): void;
|
|
7
|
+
export declare function getTunnelUrl(): string | null;
|
|
8
|
+
export declare function isTunnelRunning(): boolean;
|
|
9
|
+
//# sourceMappingURL=vortex-tunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vortex-tunnel.d.ts","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqElF;AA+PD,wBAAgB,UAAU,IAAI,IAAI,CAQjC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.startTunnel = startTunnel;
|
|
40
|
+
exports.stopTunnel = stopTunnel;
|
|
41
|
+
exports.getTunnelUrl = getTunnelUrl;
|
|
42
|
+
exports.isTunnelRunning = isTunnelRunning;
|
|
43
|
+
const axios_1 = __importDefault(require("axios"));
|
|
44
|
+
const ws_1 = __importDefault(require("ws"));
|
|
45
|
+
const http = __importStar(require("http"));
|
|
46
|
+
let tunnelWs = null;
|
|
47
|
+
let tunnelUrl = null;
|
|
48
|
+
let sessionId = null;
|
|
49
|
+
let gatewayUrl = null;
|
|
50
|
+
let localPort = null;
|
|
51
|
+
// Map to store pending HTTP requests
|
|
52
|
+
const pendingRequests = new Map();
|
|
53
|
+
/**
|
|
54
|
+
* Start Vortex tunnel
|
|
55
|
+
* Creates a session with the gateway and establishes WebSocket connection
|
|
56
|
+
*/
|
|
57
|
+
function startTunnel(port = 4020, gateway) {
|
|
58
|
+
return new Promise(async (resolve, reject) => {
|
|
59
|
+
try {
|
|
60
|
+
localPort = port;
|
|
61
|
+
gatewayUrl = gateway || process.env.VORTEX_GATEWAY || 'https://vortex.futuretech.social';
|
|
62
|
+
console.log(` [Vortex] Connecting to gateway: ${gatewayUrl}`);
|
|
63
|
+
// Step 1: Create session on gateway
|
|
64
|
+
const response = await axios_1.default.post(`${gatewayUrl}/api/session`, {
|
|
65
|
+
client_info: {
|
|
66
|
+
name: 'LeverageAI-Agent',
|
|
67
|
+
platform: process.platform,
|
|
68
|
+
type: 'http_proxy'
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
const { session_id, tunnel_url: sessionUrl, ws_url, expires_in } = response.data;
|
|
72
|
+
sessionId = session_id;
|
|
73
|
+
tunnelUrl = sessionUrl;
|
|
74
|
+
console.log(` [Vortex] Session created: ${session_id.substring(0, 8)}...`);
|
|
75
|
+
console.log(` [Vortex] Session expires in: ${expires_in}s`);
|
|
76
|
+
// Step 2: Register tunnel with gateway
|
|
77
|
+
await axios_1.default.post(`${gatewayUrl}/api/tunnel/register`, {
|
|
78
|
+
session_id: session_id,
|
|
79
|
+
});
|
|
80
|
+
// Step 3: Connect WebSocket to gateway
|
|
81
|
+
const wsUrl = gatewayUrl.replace('https://', 'wss://').replace('http://', 'ws://') + `/tunnel/${session_id}`;
|
|
82
|
+
console.log(` [Vortex] Establishing WebSocket tunnel...`);
|
|
83
|
+
tunnelWs = new ws_1.default(wsUrl);
|
|
84
|
+
tunnelWs.on('open', () => {
|
|
85
|
+
console.log(` [Vortex] Tunnel connected`);
|
|
86
|
+
resolve(tunnelUrl);
|
|
87
|
+
});
|
|
88
|
+
tunnelWs.on('message', (data) => {
|
|
89
|
+
try {
|
|
90
|
+
const msg = JSON.parse(data.toString());
|
|
91
|
+
handleGatewayMessage(msg);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
// Not JSON, might be binary data
|
|
95
|
+
console.error('[Vortex] Invalid message from gateway:', e);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
tunnelWs.on('close', () => {
|
|
99
|
+
console.log(' [Vortex] Tunnel disconnected');
|
|
100
|
+
tunnelWs = null;
|
|
101
|
+
cleanup();
|
|
102
|
+
});
|
|
103
|
+
tunnelWs.on('error', (err) => {
|
|
104
|
+
console.error(' [Vortex] Tunnel error:', err.message);
|
|
105
|
+
reject(err);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error(' [Vortex] Failed to start tunnel:', error.message);
|
|
110
|
+
if (error.response) {
|
|
111
|
+
console.error(' [Vortex] Response:', error.response.data);
|
|
112
|
+
}
|
|
113
|
+
reject(error);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Map of WebSocket connections
|
|
118
|
+
const websocketConnections = new Map();
|
|
119
|
+
/**
|
|
120
|
+
* Handle messages from the gateway
|
|
121
|
+
*/
|
|
122
|
+
function handleGatewayMessage(msg) {
|
|
123
|
+
switch (msg.type) {
|
|
124
|
+
case 'http_request':
|
|
125
|
+
// Gateway forwarded an HTTP request from browser
|
|
126
|
+
handleHttpRequest(msg);
|
|
127
|
+
break;
|
|
128
|
+
case 'websocket_connect':
|
|
129
|
+
// New WebSocket connection from browser
|
|
130
|
+
handleWebSocketConnect(msg.conn_id);
|
|
131
|
+
break;
|
|
132
|
+
case 'websocket_message':
|
|
133
|
+
// WebSocket message from browser
|
|
134
|
+
handleWebSocketMessage(msg.conn_id, msg.data);
|
|
135
|
+
break;
|
|
136
|
+
case 'websocket_binary':
|
|
137
|
+
// WebSocket binary data from browser
|
|
138
|
+
handleWebSocketBinary(msg.conn_id, msg.data);
|
|
139
|
+
break;
|
|
140
|
+
case 'websocket_disconnect':
|
|
141
|
+
// WebSocket disconnection from browser
|
|
142
|
+
handleWebSocketDisconnect(msg.conn_id);
|
|
143
|
+
break;
|
|
144
|
+
case 'client_connected':
|
|
145
|
+
console.log(` [Vortex] Client connected`);
|
|
146
|
+
break;
|
|
147
|
+
case 'client_disconnected':
|
|
148
|
+
console.log(` [Vortex] Client disconnected`);
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
// Unknown message type
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Handle HTTP request forwarded from gateway
|
|
157
|
+
* Forward it to the local server and send response back
|
|
158
|
+
*/
|
|
159
|
+
async function handleHttpRequest(msg) {
|
|
160
|
+
const { request_id, method, path, headers, body } = msg;
|
|
161
|
+
if (!localPort) {
|
|
162
|
+
sendToGateway({
|
|
163
|
+
type: 'http_response',
|
|
164
|
+
request_id,
|
|
165
|
+
status: 503,
|
|
166
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
167
|
+
body: 'Local server not configured'
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
// Remove host header to avoid conflicts
|
|
173
|
+
const requestHeaders = { ...headers };
|
|
174
|
+
delete requestHeaders.host;
|
|
175
|
+
delete requestHeaders.Host;
|
|
176
|
+
// Make request to local server
|
|
177
|
+
const options = {
|
|
178
|
+
hostname: 'localhost',
|
|
179
|
+
port: localPort,
|
|
180
|
+
path: path,
|
|
181
|
+
method: method,
|
|
182
|
+
headers: requestHeaders
|
|
183
|
+
};
|
|
184
|
+
const localReq = http.request(options, (localRes) => {
|
|
185
|
+
const chunks = [];
|
|
186
|
+
localRes.on('data', (chunk) => {
|
|
187
|
+
chunks.push(chunk);
|
|
188
|
+
});
|
|
189
|
+
localRes.on('end', () => {
|
|
190
|
+
const responseBody = Buffer.concat(chunks);
|
|
191
|
+
// Send response back to gateway
|
|
192
|
+
sendToGateway({
|
|
193
|
+
type: 'http_response',
|
|
194
|
+
request_id,
|
|
195
|
+
status: localRes.statusCode || 200,
|
|
196
|
+
headers: localRes.headers,
|
|
197
|
+
body: responseBody.toString('base64'),
|
|
198
|
+
encoding: 'base64'
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
localReq.on('error', (err) => {
|
|
203
|
+
console.error('[Vortex] Local request error:', err.message);
|
|
204
|
+
sendToGateway({
|
|
205
|
+
type: 'http_response',
|
|
206
|
+
request_id,
|
|
207
|
+
status: 502,
|
|
208
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
209
|
+
body: `Failed to connect to local server: ${err.message}`
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
// Send request body if present
|
|
213
|
+
if (body) {
|
|
214
|
+
// Decode base64 body if encoded
|
|
215
|
+
const bodyBuffer = msg.encoding === 'base64' ? Buffer.from(body, 'base64') : body;
|
|
216
|
+
localReq.write(bodyBuffer);
|
|
217
|
+
}
|
|
218
|
+
localReq.end();
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
sendToGateway({
|
|
222
|
+
type: 'http_response',
|
|
223
|
+
request_id,
|
|
224
|
+
status: 500,
|
|
225
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
226
|
+
body: `Internal error: ${error.message}`
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Handle new WebSocket connection
|
|
232
|
+
*/
|
|
233
|
+
function handleWebSocketConnect(connId) {
|
|
234
|
+
if (!localPort) {
|
|
235
|
+
sendToGateway({
|
|
236
|
+
type: 'websocket_close',
|
|
237
|
+
conn_id: connId
|
|
238
|
+
});
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
// Create WebSocket connection to local server
|
|
242
|
+
const localWs = new ws_1.default(`ws://localhost:${localPort}/ws`);
|
|
243
|
+
localWs.on('open', () => {
|
|
244
|
+
console.log(`[Vortex] Local WebSocket connected for ${connId.substring(0, 8)}...`);
|
|
245
|
+
websocketConnections.set(connId, localWs);
|
|
246
|
+
});
|
|
247
|
+
localWs.on('message', (data) => {
|
|
248
|
+
// Forward data from local server to browser through gateway
|
|
249
|
+
// Local server sends JSON text, we need to preserve it
|
|
250
|
+
if (Buffer.isBuffer(data)) {
|
|
251
|
+
sendToGateway({
|
|
252
|
+
type: 'websocket_data',
|
|
253
|
+
conn_id: connId,
|
|
254
|
+
data: data.toString('base64'),
|
|
255
|
+
binary: true
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// data is already a string (JSON), send it as-is
|
|
260
|
+
sendToGateway({
|
|
261
|
+
type: 'websocket_data',
|
|
262
|
+
conn_id: connId,
|
|
263
|
+
data: data.toString(),
|
|
264
|
+
binary: false
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
localWs.on('close', () => {
|
|
269
|
+
console.log(`[Vortex] Local WebSocket closed for ${connId.substring(0, 8)}...`);
|
|
270
|
+
websocketConnections.delete(connId);
|
|
271
|
+
sendToGateway({
|
|
272
|
+
type: 'websocket_close',
|
|
273
|
+
conn_id: connId
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
localWs.on('error', (err) => {
|
|
277
|
+
console.error(`[Vortex] Local WebSocket error for ${connId.substring(0, 8)}...`, err.message);
|
|
278
|
+
websocketConnections.delete(connId);
|
|
279
|
+
sendToGateway({
|
|
280
|
+
type: 'websocket_close',
|
|
281
|
+
conn_id: connId
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Handle WebSocket message from browser
|
|
287
|
+
*/
|
|
288
|
+
function handleWebSocketMessage(connId, data) {
|
|
289
|
+
const localWs = websocketConnections.get(connId);
|
|
290
|
+
if (localWs && localWs.readyState === ws_1.default.OPEN) {
|
|
291
|
+
localWs.send(data);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Handle WebSocket binary data from browser
|
|
296
|
+
*/
|
|
297
|
+
function handleWebSocketBinary(connId, data) {
|
|
298
|
+
const localWs = websocketConnections.get(connId);
|
|
299
|
+
if (localWs && localWs.readyState === ws_1.default.OPEN) {
|
|
300
|
+
// Decode base64 and send as binary
|
|
301
|
+
const buffer = Buffer.from(data, 'base64');
|
|
302
|
+
localWs.send(buffer);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Handle WebSocket disconnection from browser
|
|
307
|
+
*/
|
|
308
|
+
function handleWebSocketDisconnect(connId) {
|
|
309
|
+
const localWs = websocketConnections.get(connId);
|
|
310
|
+
if (localWs) {
|
|
311
|
+
localWs.close();
|
|
312
|
+
websocketConnections.delete(connId);
|
|
313
|
+
console.log(`[Vortex] WebSocket disconnected for ${connId.substring(0, 8)}...`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Send message to gateway
|
|
318
|
+
*/
|
|
319
|
+
function sendToGateway(msg) {
|
|
320
|
+
if (tunnelWs && tunnelWs.readyState === ws_1.default.OPEN) {
|
|
321
|
+
tunnelWs.send(JSON.stringify(msg));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Clean up resources
|
|
326
|
+
*/
|
|
327
|
+
function cleanup() {
|
|
328
|
+
// Clear any pending requests
|
|
329
|
+
pendingRequests.forEach(({ reject, timeout }) => {
|
|
330
|
+
clearTimeout(timeout);
|
|
331
|
+
reject(new Error('Tunnel closed'));
|
|
332
|
+
});
|
|
333
|
+
pendingRequests.clear();
|
|
334
|
+
// Close all WebSocket connections
|
|
335
|
+
websocketConnections.forEach(ws => {
|
|
336
|
+
ws.close();
|
|
337
|
+
});
|
|
338
|
+
websocketConnections.clear();
|
|
339
|
+
}
|
|
340
|
+
function stopTunnel() {
|
|
341
|
+
if (tunnelWs) {
|
|
342
|
+
tunnelWs.close();
|
|
343
|
+
tunnelWs = null;
|
|
344
|
+
}
|
|
345
|
+
cleanup();
|
|
346
|
+
tunnelUrl = null;
|
|
347
|
+
sessionId = null;
|
|
348
|
+
}
|
|
349
|
+
function getTunnelUrl() {
|
|
350
|
+
return tunnelUrl;
|
|
351
|
+
}
|
|
352
|
+
function isTunnelRunning() {
|
|
353
|
+
return tunnelWs !== null && tunnelWs.readyState === ws_1.default.OPEN;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=vortex-tunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vortex-tunnel.js","sourceRoot":"","sources":["../src/vortex-tunnel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leverageaiapps/leverageai-agent",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "CLI tool to forward terminal sessions to your mobile device via
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "CLI tool to forward terminal sessions to your mobile device via Vortex WebSocket tunnel. Code anywhere from your pocket.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"leverageaiagent": "./dist/index.js"
|
package/public/index.html
CHANGED
|
@@ -632,8 +632,8 @@
|
|
|
632
632
|
</div>
|
|
633
633
|
</div>
|
|
634
634
|
|
|
635
|
-
<script src="
|
|
636
|
-
<script src="
|
|
637
|
-
<script src="
|
|
635
|
+
<script src="js/terminal.js"></script>
|
|
636
|
+
<script src="js/terminal-asr.js"></script>
|
|
637
|
+
<script src="js/voice-input.js"></script>
|
|
638
638
|
</body>
|
|
639
639
|
</html>
|
package/public/js/terminal.js
CHANGED
|
@@ -236,7 +236,10 @@ function updateStatus(state) {
|
|
|
236
236
|
|
|
237
237
|
function connect() {
|
|
238
238
|
// WebSocket will automatically include cookies with the request
|
|
239
|
-
|
|
239
|
+
// Build WebSocket URL relative to current location
|
|
240
|
+
// Remove any trailing slash from pathname
|
|
241
|
+
const basePath = location.pathname.replace(/\/$/, '');
|
|
242
|
+
const wsUrl = location.protocol.replace('http', 'ws') + '//' + location.host + basePath + '/ws';
|
|
240
243
|
|
|
241
244
|
// For debugging - log if auth cookie exists
|
|
242
245
|
const hasCookie = document.cookie.includes('auth=');
|
package/public/js/voice-input.js
CHANGED
|
@@ -33,7 +33,7 @@ class VoiceInput {
|
|
|
33
33
|
// Check if debug mode is enabled on server
|
|
34
34
|
async checkDebugMode() {
|
|
35
35
|
try {
|
|
36
|
-
const response = await fetch('
|
|
36
|
+
const response = await fetch('api/terminal-context');
|
|
37
37
|
if (response.ok) {
|
|
38
38
|
const data = await response.json();
|
|
39
39
|
this.debugMode = data.debugAsr || false;
|