hedgequantx 2.7.16 → 2.7.17
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 +8 -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,8 @@ 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
|
+
{ left: '', right: '[X] Disconnect' },
|
|
93
94
|
];
|
|
94
95
|
|
|
95
96
|
const maxLeftLen = Math.max(...menuItems.map(m => m.left.length));
|
|
@@ -121,18 +122,20 @@ const dashboardMenu = async (service) => {
|
|
|
121
122
|
|
|
122
123
|
menuRow('[1] View Accounts', '[2] View Stats', chalk.cyan, chalk.cyan);
|
|
123
124
|
menuRow('[+] Add Prop-Account', '[A] Algo-Trading', chalk.cyan, chalk.magenta);
|
|
124
|
-
menuRow('[
|
|
125
|
+
menuRow('[I] AI Agents', '[U] Update HQX', chalk.green, chalk.yellow);
|
|
126
|
+
menuRow('', '[X] Disconnect', chalk.white, chalk.red);
|
|
125
127
|
|
|
126
128
|
console.log(chalk.cyan('╚' + '═'.repeat(W) + '╝'));
|
|
127
129
|
|
|
128
130
|
// Simple input - no duplicate menu
|
|
129
|
-
const input = await prompts.textInput(chalk.cyan('Select (1/2/+/A/U/X)'));
|
|
131
|
+
const input = await prompts.textInput(chalk.cyan('Select (1/2/+/A/I/U/X)'));
|
|
130
132
|
|
|
131
133
|
const actionMap = {
|
|
132
134
|
'1': 'accounts',
|
|
133
135
|
'2': 'stats',
|
|
134
136
|
'+': 'add_prop_account',
|
|
135
137
|
'a': 'algotrading',
|
|
138
|
+
'i': 'aiagents',
|
|
136
139
|
'u': 'update',
|
|
137
140
|
'x': 'disconnect'
|
|
138
141
|
};
|