hedgequantx 2.6.162 → 2.7.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 +15 -88
- package/bin/cli.js +0 -11
- package/dist/lib/api.jsc +0 -0
- package/dist/lib/api2.jsc +0 -0
- package/dist/lib/core.jsc +0 -0
- package/dist/lib/core2.jsc +0 -0
- package/dist/lib/data.js +1 -1
- package/dist/lib/data.jsc +0 -0
- package/dist/lib/data2.jsc +0 -0
- package/dist/lib/decoder.jsc +0 -0
- package/dist/lib/m/mod1.jsc +0 -0
- package/dist/lib/m/mod2.jsc +0 -0
- package/dist/lib/n/r1.jsc +0 -0
- package/dist/lib/n/r2.jsc +0 -0
- package/dist/lib/n/r3.jsc +0 -0
- package/dist/lib/n/r4.jsc +0 -0
- package/dist/lib/n/r5.jsc +0 -0
- package/dist/lib/n/r6.jsc +0 -0
- package/dist/lib/n/r7.jsc +0 -0
- package/dist/lib/o/util1.jsc +0 -0
- package/dist/lib/o/util2.jsc +0 -0
- package/package.json +6 -3
- package/src/app.js +40 -162
- package/src/config/constants.js +31 -33
- package/src/config/propfirms.js +13 -217
- package/src/config/settings.js +0 -43
- package/src/lib/api.js +198 -0
- package/src/lib/api2.js +353 -0
- package/src/lib/core.js +539 -0
- package/src/lib/core2.js +341 -0
- package/src/lib/data.js +555 -0
- package/src/lib/data2.js +492 -0
- package/src/lib/decoder.js +599 -0
- package/src/lib/m/s1.js +804 -0
- package/src/lib/m/s2.js +34 -0
- package/src/lib/n/r1.js +454 -0
- package/src/lib/n/r2.js +514 -0
- package/src/lib/n/r3.js +631 -0
- package/src/lib/n/r4.js +401 -0
- package/src/lib/n/r5.js +335 -0
- package/src/lib/n/r6.js +425 -0
- package/src/lib/n/r7.js +530 -0
- package/src/lib/o/l1.js +44 -0
- package/src/lib/o/l2.js +427 -0
- package/src/lib/python-bridge.js +206 -0
- package/src/menus/connect.js +14 -176
- package/src/menus/dashboard.js +65 -110
- package/src/pages/accounts.js +18 -18
- package/src/pages/algo/copy-trading.js +210 -240
- package/src/pages/algo/index.js +41 -104
- package/src/pages/algo/one-account.js +386 -33
- package/src/pages/algo/ui.js +312 -151
- package/src/pages/orders.js +3 -3
- package/src/pages/positions.js +3 -3
- package/src/pages/stats/chart.js +74 -0
- package/src/pages/stats/display.js +228 -0
- package/src/pages/stats/index.js +236 -0
- package/src/pages/stats/metrics.js +213 -0
- package/src/pages/user.js +6 -6
- package/src/services/hqx-server/constants.js +55 -0
- package/src/services/hqx-server/index.js +401 -0
- package/src/services/hqx-server/latency.js +81 -0
- package/src/services/index.js +12 -3
- package/src/services/rithmic/accounts.js +7 -32
- package/src/services/rithmic/connection.js +1 -204
- package/src/services/rithmic/contracts.js +235 -0
- package/src/services/rithmic/handlers.js +21 -196
- package/src/services/rithmic/index.js +60 -291
- package/src/services/rithmic/market.js +31 -0
- package/src/services/rithmic/orders.js +5 -361
- package/src/services/rithmic/protobuf.js +5 -195
- package/src/services/session.js +22 -173
- package/src/ui/box.js +10 -18
- package/src/ui/index.js +1 -3
- package/src/ui/menu.js +1 -1
- package/src/utils/prompts.js +2 -2
- package/dist/lib/m/s1.js +0 -1
- package/src/menus/ai-agent-connect.js +0 -181
- package/src/menus/ai-agent-models.js +0 -219
- package/src/menus/ai-agent-oauth.js +0 -292
- package/src/menus/ai-agent-ui.js +0 -141
- package/src/menus/ai-agent.js +0 -484
- package/src/pages/algo/algo-config.js +0 -195
- package/src/pages/algo/algo-multi.js +0 -801
- package/src/pages/algo/algo-utils.js +0 -58
- package/src/pages/algo/copy-engine.js +0 -449
- package/src/pages/algo/custom-strategy.js +0 -459
- package/src/pages/algo/logger.js +0 -245
- package/src/pages/algo/smart-logs-data.js +0 -218
- package/src/pages/algo/smart-logs.js +0 -387
- package/src/pages/algo/ui-constants.js +0 -144
- package/src/pages/algo/ui-summary.js +0 -184
- package/src/pages/stats-calculations.js +0 -191
- package/src/pages/stats-ui.js +0 -381
- package/src/pages/stats.js +0 -339
- package/src/services/ai/client-analysis.js +0 -194
- package/src/services/ai/client-models.js +0 -333
- package/src/services/ai/client.js +0 -343
- package/src/services/ai/index.js +0 -384
- package/src/services/ai/oauth-anthropic.js +0 -265
- package/src/services/ai/oauth-gemini.js +0 -223
- package/src/services/ai/oauth-iflow.js +0 -269
- package/src/services/ai/oauth-openai.js +0 -233
- package/src/services/ai/oauth-qwen.js +0 -279
- package/src/services/ai/providers/index.js +0 -526
- package/src/services/ai/proxy-install.js +0 -249
- package/src/services/ai/proxy-manager.js +0 -494
- package/src/services/ai/proxy-remote.js +0 -161
- package/src/services/ai/strategy-supervisor.js +0 -1312
- package/src/services/ai/supervisor-data.js +0 -195
- package/src/services/ai/supervisor-optimize.js +0 -215
- package/src/services/ai/supervisor-sync.js +0 -178
- package/src/services/ai/supervisor-utils.js +0 -158
- package/src/services/ai/supervisor.js +0 -484
- package/src/services/ai/validation.js +0 -250
- package/src/services/hqx-server-events.js +0 -110
- package/src/services/hqx-server-handlers.js +0 -217
- package/src/services/hqx-server-latency.js +0 -136
- package/src/services/hqx-server.js +0 -403
- package/src/services/position-constants.js +0 -28
- package/src/services/position-manager.js +0 -528
- package/src/services/position-momentum.js +0 -206
- package/src/services/projectx/accounts.js +0 -142
- package/src/services/projectx/index.js +0 -443
- package/src/services/projectx/market.js +0 -172
- package/src/services/projectx/stats.js +0 -110
- package/src/services/projectx/trading.js +0 -180
- package/src/services/rithmic/latency-tracker.js +0 -182
- package/src/services/rithmic/market-data.js +0 -549
- package/src/services/rithmic/specs.js +0 -146
- package/src/services/rithmic/trade-history.js +0 -254
- package/src/services/session-history.js +0 -475
- package/src/services/strategy/hft-tick.js +0 -507
- package/src/services/strategy/recovery-math.js +0 -402
- package/src/services/tradovate/constants.js +0 -109
- package/src/services/tradovate/index.js +0 -505
- package/src/services/tradovate/market.js +0 -47
- package/src/services/tradovate/websocket.js +0 -97
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview CLIProxyAPI Installation
|
|
3
|
-
*
|
|
4
|
-
* Downloads, extracts, and configures CLIProxyAPI binary
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const https = require('https');
|
|
8
|
-
const fs = require('fs');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const os = require('os');
|
|
11
|
-
const { exec } = require('child_process');
|
|
12
|
-
|
|
13
|
-
// Configuration
|
|
14
|
-
const PROXY_VERSION = 'v6.6.84';
|
|
15
|
-
const PROXY_PORT = 8317;
|
|
16
|
-
const PROXY_DIR = path.join(os.homedir(), '.hqx', 'proxy');
|
|
17
|
-
const PROXY_BIN = path.join(PROXY_DIR, process.platform === 'win32' ? 'cli-proxy-api.exe' : 'cli-proxy-api');
|
|
18
|
-
const PROXY_CONFIG = path.join(PROXY_DIR, 'config.yaml');
|
|
19
|
-
const PROXY_AUTH_DIR = path.join(PROXY_DIR, 'auths');
|
|
20
|
-
const API_KEY = 'hqx-local-key';
|
|
21
|
-
const MANAGEMENT_KEY = 'hqx-mgmt-key';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Get download URL for current platform
|
|
25
|
-
*/
|
|
26
|
-
const getDownloadUrl = () => {
|
|
27
|
-
const platform = process.platform;
|
|
28
|
-
const arch = process.arch;
|
|
29
|
-
|
|
30
|
-
let osName, archName, ext;
|
|
31
|
-
|
|
32
|
-
if (platform === 'darwin') {
|
|
33
|
-
osName = 'darwin';
|
|
34
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
35
|
-
ext = 'tar.gz';
|
|
36
|
-
} else if (platform === 'win32') {
|
|
37
|
-
osName = 'windows';
|
|
38
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
39
|
-
ext = 'zip';
|
|
40
|
-
} else {
|
|
41
|
-
osName = 'linux';
|
|
42
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
43
|
-
ext = 'tar.gz';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const version = PROXY_VERSION.replace('v', '');
|
|
47
|
-
return `https://github.com/router-for-me/CLIProxyAPI/releases/download/${PROXY_VERSION}/CLIProxyAPI_${version}_${osName}_${archName}.${ext}`;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Check if CLIProxyAPI binary exists
|
|
52
|
-
*/
|
|
53
|
-
const isInstalled = () => {
|
|
54
|
-
return fs.existsSync(PROXY_BIN);
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Download file from URL
|
|
59
|
-
*/
|
|
60
|
-
const downloadFile = (url, dest) => {
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
const file = fs.createWriteStream(dest);
|
|
63
|
-
|
|
64
|
-
const request = (url) => {
|
|
65
|
-
https.get(url, (res) => {
|
|
66
|
-
if (res.statusCode === 302 || res.statusCode === 301) {
|
|
67
|
-
request(res.headers.location);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (res.statusCode !== 200) {
|
|
72
|
-
reject(new Error(`HTTP ${res.statusCode}`));
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
res.pipe(file);
|
|
77
|
-
file.on('finish', () => {
|
|
78
|
-
file.close();
|
|
79
|
-
resolve();
|
|
80
|
-
});
|
|
81
|
-
}).on('error', (err) => {
|
|
82
|
-
fs.unlink(dest, () => {});
|
|
83
|
-
reject(err);
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
request(url);
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Extract tar.gz archive
|
|
93
|
-
*/
|
|
94
|
-
const extractTarGz = (archive, dest) => {
|
|
95
|
-
return new Promise((resolve, reject) => {
|
|
96
|
-
exec(`tar -xzf "${archive}" -C "${dest}"`, (err) => {
|
|
97
|
-
if (err) reject(err);
|
|
98
|
-
else resolve();
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Extract zip archive (Windows)
|
|
105
|
-
*/
|
|
106
|
-
const extractZip = (archive, dest) => {
|
|
107
|
-
return new Promise((resolve, reject) => {
|
|
108
|
-
exec(`powershell -command "Expand-Archive -Path '${archive}' -DestinationPath '${dest}' -Force"`, (err) => {
|
|
109
|
-
if (err) reject(err);
|
|
110
|
-
else resolve();
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Generate config file content
|
|
117
|
-
*/
|
|
118
|
-
const getConfigContent = () => {
|
|
119
|
-
return `port: ${PROXY_PORT}
|
|
120
|
-
auth-dir: "${PROXY_AUTH_DIR}"
|
|
121
|
-
api-keys:
|
|
122
|
-
- "${API_KEY}"
|
|
123
|
-
remote-management:
|
|
124
|
-
secret-key: "${MANAGEMENT_KEY}"
|
|
125
|
-
allow-remote-management: false
|
|
126
|
-
request-retry: 3
|
|
127
|
-
quota-exceeded:
|
|
128
|
-
switch-project: true
|
|
129
|
-
switch-preview-model: true
|
|
130
|
-
`;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Download and install CLIProxyAPI
|
|
135
|
-
* @param {Function} onProgress - Progress callback (message)
|
|
136
|
-
*/
|
|
137
|
-
const install = async (onProgress = () => {}) => {
|
|
138
|
-
// Create directories
|
|
139
|
-
if (!fs.existsSync(PROXY_DIR)) {
|
|
140
|
-
fs.mkdirSync(PROXY_DIR, { recursive: true });
|
|
141
|
-
}
|
|
142
|
-
if (!fs.existsSync(PROXY_AUTH_DIR)) {
|
|
143
|
-
fs.mkdirSync(PROXY_AUTH_DIR, { recursive: true });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
onProgress('Downloading CLIProxyAPI...');
|
|
147
|
-
|
|
148
|
-
const downloadUrl = getDownloadUrl();
|
|
149
|
-
const ext = process.platform === 'win32' ? 'zip' : 'tar.gz';
|
|
150
|
-
const archivePath = path.join(PROXY_DIR, `cliproxyapi.${ext}`);
|
|
151
|
-
|
|
152
|
-
// Download
|
|
153
|
-
await downloadFile(downloadUrl, archivePath);
|
|
154
|
-
|
|
155
|
-
onProgress('Extracting...');
|
|
156
|
-
|
|
157
|
-
// Extract
|
|
158
|
-
if (ext === 'zip') {
|
|
159
|
-
await extractZip(archivePath, PROXY_DIR);
|
|
160
|
-
} else {
|
|
161
|
-
await extractTarGz(archivePath, PROXY_DIR);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Find the binary (it might be in a subdirectory)
|
|
165
|
-
const possibleBins = [
|
|
166
|
-
path.join(PROXY_DIR, 'cli-proxy-api'),
|
|
167
|
-
path.join(PROXY_DIR, 'cli-proxy-api.exe'),
|
|
168
|
-
path.join(PROXY_DIR, 'CLIProxyAPI', 'cli-proxy-api'),
|
|
169
|
-
path.join(PROXY_DIR, 'CLIProxyAPI', 'cli-proxy-api.exe')
|
|
170
|
-
];
|
|
171
|
-
|
|
172
|
-
for (const bin of possibleBins) {
|
|
173
|
-
if (fs.existsSync(bin) && bin !== PROXY_BIN) {
|
|
174
|
-
fs.renameSync(bin, PROXY_BIN);
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// Make executable (Unix)
|
|
180
|
-
if (process.platform !== 'win32') {
|
|
181
|
-
fs.chmodSync(PROXY_BIN, 0o755);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Create config file
|
|
185
|
-
fs.writeFileSync(PROXY_CONFIG, getConfigContent());
|
|
186
|
-
|
|
187
|
-
// Cleanup archive
|
|
188
|
-
fs.unlinkSync(archivePath);
|
|
189
|
-
|
|
190
|
-
onProgress('Installation complete');
|
|
191
|
-
|
|
192
|
-
return true;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Check if config has correct management key (plain text, not hashed)
|
|
197
|
-
* @returns {boolean}
|
|
198
|
-
*/
|
|
199
|
-
const isConfigValid = () => {
|
|
200
|
-
if (!fs.existsSync(PROXY_CONFIG)) return false;
|
|
201
|
-
|
|
202
|
-
try {
|
|
203
|
-
const config = fs.readFileSync(PROXY_CONFIG, 'utf8');
|
|
204
|
-
|
|
205
|
-
if (!config.includes('remote-management:') || !config.includes('secret-key:')) {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Check if key is hashed (bcrypt hashes start with $2a$, $2b$, or $2y$)
|
|
210
|
-
if (config.includes('$2a$') || config.includes('$2b$') || config.includes('$2y$')) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
if (!config.includes(MANAGEMENT_KEY)) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return true;
|
|
219
|
-
} catch (e) {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Rewrite config file with correct settings
|
|
226
|
-
*/
|
|
227
|
-
const rewriteConfig = () => {
|
|
228
|
-
if (!fs.existsSync(PROXY_DIR)) {
|
|
229
|
-
fs.mkdirSync(PROXY_DIR, { recursive: true });
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
fs.writeFileSync(PROXY_CONFIG, getConfigContent());
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
module.exports = {
|
|
236
|
-
PROXY_VERSION,
|
|
237
|
-
PROXY_PORT,
|
|
238
|
-
PROXY_DIR,
|
|
239
|
-
PROXY_BIN,
|
|
240
|
-
PROXY_CONFIG,
|
|
241
|
-
PROXY_AUTH_DIR,
|
|
242
|
-
API_KEY,
|
|
243
|
-
MANAGEMENT_KEY,
|
|
244
|
-
getDownloadUrl,
|
|
245
|
-
isInstalled,
|
|
246
|
-
install,
|
|
247
|
-
isConfigValid,
|
|
248
|
-
rewriteConfig,
|
|
249
|
-
};
|