hedgequantx 2.5.32 → 2.5.34
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/pages/stats.js +34 -14
package/package.json
CHANGED
package/src/pages/stats.js
CHANGED
|
@@ -394,11 +394,7 @@ const showStats = async (service) => {
|
|
|
394
394
|
drawBoxHeader('AI SUPERVISION', boxWidth);
|
|
395
395
|
draw2ColHeader('AGENTS', 'PERFORMANCE', boxWidth);
|
|
396
396
|
|
|
397
|
-
// Agent info
|
|
398
|
-
const activeAgent = aiService.getActiveAgent();
|
|
399
|
-
const agentNames = aiAgents.map(a => a.name).join(', ');
|
|
400
|
-
const agentMode = aiAgents.length >= 2 ? 'CONSENSUS' : 'INDIVIDUAL';
|
|
401
|
-
const modeColor = aiAgents.length >= 2 ? chalk.magenta : chalk.cyan;
|
|
397
|
+
// Agent info (removed unused: activeAgent, agentNames, agentMode, modeColor)
|
|
402
398
|
|
|
403
399
|
// Supervision metrics
|
|
404
400
|
let totalDecisions = 0;
|
|
@@ -428,15 +424,39 @@ const showStats = async (service) => {
|
|
|
428
424
|
|
|
429
425
|
// Calculate max agent name length to fit in column (label=18 + space=1 + padding buffer)
|
|
430
426
|
const maxAgentNameLen = col1 - 20;
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
427
|
+
|
|
428
|
+
// Performance column data (right side)
|
|
429
|
+
const perfData = [
|
|
430
|
+
{ label: 'SUPERVISED ACCOUNTS:', value: chalk.white(String(supervisedAccounts)) },
|
|
431
|
+
{ label: 'SUPERVISED P&L:', value: supervisedPnL >= 0 ? chalk.green('$' + supervisedPnL.toFixed(2)) : chalk.red('$' + supervisedPnL.toFixed(2)) },
|
|
432
|
+
{ label: 'POSITIONS:', value: chalk.white(String(supervisionData.totalPositions)) },
|
|
433
|
+
{ label: 'OPEN ORDERS:', value: chalk.white(String(supervisionData.totalOrders)) },
|
|
434
|
+
{ label: 'TRADES TODAY:', value: chalk.white(String(supervisionData.totalTrades)) }
|
|
435
|
+
];
|
|
436
|
+
|
|
437
|
+
// Agents column data (left side) - each agent on its own line with ● indicator
|
|
438
|
+
const agentsData = [
|
|
439
|
+
{ label: 'CONNECTED:', value: chalk.green(String(aiAgents.length) + ' AGENT' + (aiAgents.length > 1 ? 'S' : '')) },
|
|
440
|
+
{ label: 'SESSION:', value: sessionTimeStr === 'INACTIVE' ? chalk.yellow(sessionTimeStr) : chalk.white(sessionTimeStr) }
|
|
441
|
+
];
|
|
442
|
+
|
|
443
|
+
// Add each agent as a separate line with ● indicator
|
|
444
|
+
aiAgents.forEach((agent, idx) => {
|
|
445
|
+
const agentLabel = idx === 0 ? 'AGENTS:' : '';
|
|
446
|
+
const agentName = agent.name.length > maxAgentNameLen
|
|
447
|
+
? agent.name.substring(0, maxAgentNameLen - 4) + '..'
|
|
448
|
+
: agent.name;
|
|
449
|
+
const agentDisplay = chalk.green('● ') + chalk.white(agentName);
|
|
450
|
+
agentsData.push({ label: agentLabel, value: agentDisplay });
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
// Print rows - match left and right columns
|
|
454
|
+
const maxRows = Math.max(agentsData.length, perfData.length);
|
|
455
|
+
for (let i = 0; i < maxRows; i++) {
|
|
456
|
+
const leftData = agentsData[i] || { label: '', value: '' };
|
|
457
|
+
const rightData = perfData[i] || { label: '', value: '' };
|
|
458
|
+
console.log(chalk.cyan('\u2551') + fmtRow(leftData.label, leftData.value, col1) + chalk.cyan('\u2502') + fmtRow(rightData.label, rightData.value, col2) + chalk.cyan('\u2551'));
|
|
459
|
+
}
|
|
440
460
|
|
|
441
461
|
drawBoxFooter(boxWidth);
|
|
442
462
|
}
|