hedgequantx 2.7.16 → 2.7.18
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/package.json +1 -1
- package/src/app.js +10 -10
- package/src/menus/dashboard.js +10 -5
package/package.json
CHANGED
package/src/app.js
CHANGED
|
@@ -125,6 +125,7 @@ const banner = async () => {
|
|
|
125
125
|
|
|
126
126
|
const tagline = isMobile ? `HQX v${version}` : `Prop Futures Algo Trading v${version}`;
|
|
127
127
|
console.log(chalk.cyan('║') + chalk.white(centerText(tagline, innerWidth)) + chalk.cyan('║'));
|
|
128
|
+
console.log(chalk.cyan('╚' + '═'.repeat(innerWidth) + '╝'));
|
|
128
129
|
};
|
|
129
130
|
|
|
130
131
|
const getFullLogo = () => [
|
|
@@ -145,19 +146,12 @@ const getMobileLogo = () => [
|
|
|
145
146
|
['╚═╝ ╚═╝ ╚══▀▀═╝ ', '╚═╝ ╚═╝'],
|
|
146
147
|
];
|
|
147
148
|
|
|
148
|
-
const bannerClosed = async () => {
|
|
149
|
-
await banner();
|
|
150
|
-
const termWidth = process.stdout.columns || 100;
|
|
151
|
-
const boxWidth = termWidth < 60 ? Math.max(termWidth - 2, 40) : Math.max(getLogoWidth(), 98);
|
|
152
|
-
console.log(chalk.cyan('╚' + '═'.repeat(boxWidth - 2) + '╝'));
|
|
153
|
-
};
|
|
154
|
-
|
|
155
149
|
// ==================== MAIN LOOP ====================
|
|
156
150
|
|
|
157
151
|
const run = async () => {
|
|
158
152
|
try {
|
|
159
153
|
log.info('Starting HQX CLI');
|
|
160
|
-
await
|
|
154
|
+
await banner();
|
|
161
155
|
|
|
162
156
|
// Restore session
|
|
163
157
|
const spinner = ora({ text: 'Restoring session...', color: 'yellow' }).start();
|
|
@@ -192,9 +186,9 @@ const run = async () => {
|
|
|
192
186
|
const totalContentWidth = numCols * colWidth;
|
|
193
187
|
const leftMargin = Math.max(2, Math.floor((innerWidth - totalContentWidth) / 2));
|
|
194
188
|
|
|
195
|
-
console.log(chalk.cyan('
|
|
189
|
+
console.log(chalk.cyan('╔' + '═'.repeat(innerWidth) + '╗'));
|
|
196
190
|
console.log(chalk.cyan('║') + chalk.white.bold(centerText('SELECT PROPFIRM', innerWidth)) + chalk.cyan('║'));
|
|
197
|
-
console.log(chalk.cyan('
|
|
191
|
+
console.log(chalk.cyan('╠' + '═'.repeat(innerWidth) + '╣'));
|
|
198
192
|
|
|
199
193
|
const rows = Math.ceil(numbered.length / numCols);
|
|
200
194
|
for (let row = 0; row < rows; row++) {
|
|
@@ -301,6 +295,12 @@ const run = async () => {
|
|
|
301
295
|
}
|
|
302
296
|
break;
|
|
303
297
|
|
|
298
|
+
case 'aiagents':
|
|
299
|
+
console.log(chalk.yellow('\n AI Agents - Coming soon!'));
|
|
300
|
+
console.log(chalk.gray(' Configure AI trading agents for automated strategies.'));
|
|
301
|
+
await prompts.waitForEnter();
|
|
302
|
+
break;
|
|
303
|
+
|
|
304
304
|
case 'update':
|
|
305
305
|
await handleUpdate();
|
|
306
306
|
break;
|
package/src/menus/dashboard.js
CHANGED
|
@@ -30,8 +30,8 @@ const dashboardMenu = async (service) => {
|
|
|
30
30
|
return chalk.cyan('║') + content + ' '.repeat(Math.max(0, padding)) + chalk.cyan('║');
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
//
|
|
34
|
-
console.log(chalk.cyan('
|
|
33
|
+
// New box for dashboard menu
|
|
34
|
+
console.log(chalk.cyan('╔' + '═'.repeat(W) + '╗'));
|
|
35
35
|
console.log(makeLine(chalk.yellow.bold('Welcome, HQX Trader!'), 'center'));
|
|
36
36
|
console.log(chalk.cyan('╠' + '═'.repeat(W) + '╣'));
|
|
37
37
|
|
|
@@ -89,7 +89,7 @@ const dashboardMenu = async (service) => {
|
|
|
89
89
|
const menuItems = [
|
|
90
90
|
{ left: '[1] View Accounts', right: '[2] View Stats' },
|
|
91
91
|
{ left: '[+] Add Prop-Account', right: '[A] Algo-Trading' },
|
|
92
|
-
{ left: '[
|
|
92
|
+
{ left: '[I] AI Agents', right: '[U] Update HQX' },
|
|
93
93
|
];
|
|
94
94
|
|
|
95
95
|
const maxLeftLen = Math.max(...menuItems.map(m => m.left.length));
|
|
@@ -121,18 +121,23 @@ const dashboardMenu = async (service) => {
|
|
|
121
121
|
|
|
122
122
|
menuRow('[1] View Accounts', '[2] View Stats', chalk.cyan, chalk.cyan);
|
|
123
123
|
menuRow('[+] Add Prop-Account', '[A] Algo-Trading', chalk.cyan, chalk.magenta);
|
|
124
|
-
menuRow('[
|
|
124
|
+
menuRow('[I] AI Agents', '[U] Update HQX', chalk.green, chalk.yellow);
|
|
125
|
+
|
|
126
|
+
// Separator and centered Disconnect button
|
|
127
|
+
console.log(chalk.cyan('╠' + '─'.repeat(W) + '╣'));
|
|
128
|
+
console.log(makeLine(chalk.red('[X] Disconnect'), 'center'));
|
|
125
129
|
|
|
126
130
|
console.log(chalk.cyan('╚' + '═'.repeat(W) + '╝'));
|
|
127
131
|
|
|
128
132
|
// Simple input - no duplicate menu
|
|
129
|
-
const input = await prompts.textInput(chalk.cyan('Select (1/2/+/A/U/X)'));
|
|
133
|
+
const input = await prompts.textInput(chalk.cyan('Select (1/2/+/A/I/U/X)'));
|
|
130
134
|
|
|
131
135
|
const actionMap = {
|
|
132
136
|
'1': 'accounts',
|
|
133
137
|
'2': 'stats',
|
|
134
138
|
'+': 'add_prop_account',
|
|
135
139
|
'a': 'algotrading',
|
|
140
|
+
'i': 'aiagents',
|
|
136
141
|
'u': 'update',
|
|
137
142
|
'x': 'disconnect'
|
|
138
143
|
};
|