@trading-boy/cli 0.3.6 → 1.2.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/dist/api-client.d.ts +5 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +37 -3
- package/dist/api-client.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +42 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/audit.d.ts +0 -15
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +17 -79
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/behavioral.d.ts +34 -1
- package/dist/commands/behavioral.d.ts.map +1 -1
- package/dist/commands/behavioral.js +56 -76
- package/dist/commands/behavioral.js.map +1 -1
- package/dist/commands/benchmark-cmd.js +2 -2
- package/dist/commands/benchmark-cmd.js.map +1 -1
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +15 -10
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/catalysts.d.ts +10 -1
- package/dist/commands/catalysts.d.ts.map +1 -1
- package/dist/commands/catalysts.js +15 -84
- package/dist/commands/catalysts.js.map +1 -1
- package/dist/commands/coaching-cmd.d.ts.map +1 -1
- package/dist/commands/coaching-cmd.js +21 -10
- package/dist/commands/coaching-cmd.js.map +1 -1
- package/dist/commands/config-cmd.d.ts.map +1 -1
- package/dist/commands/config-cmd.js +39 -23
- package/dist/commands/config-cmd.js.map +1 -1
- package/dist/commands/context.d.ts +0 -7
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +51 -199
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/decisions.d.ts +38 -2
- package/dist/commands/decisions.d.ts.map +1 -1
- package/dist/commands/decisions.js +35 -134
- package/dist/commands/decisions.js.map +1 -1
- package/dist/commands/edge-cmd.d.ts +55 -45
- package/dist/commands/edge-cmd.d.ts.map +1 -1
- package/dist/commands/edge-cmd.js +76 -32
- package/dist/commands/edge-cmd.js.map +1 -1
- package/dist/commands/edge-guard-cmd.d.ts.map +1 -1
- package/dist/commands/edge-guard-cmd.js +7 -3
- package/dist/commands/edge-guard-cmd.js.map +1 -1
- package/dist/commands/events.d.ts.map +1 -1
- package/dist/commands/events.js +78 -162
- package/dist/commands/events.js.map +1 -1
- package/dist/commands/infra.d.ts +2 -4
- package/dist/commands/infra.d.ts.map +1 -1
- package/dist/commands/infra.js +65 -163
- package/dist/commands/infra.js.map +1 -1
- package/dist/commands/journal.d.ts.map +1 -1
- package/dist/commands/journal.js +138 -597
- package/dist/commands/journal.js.map +1 -1
- package/dist/commands/login.js +3 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/narratives.d.ts.map +1 -1
- package/dist/commands/narratives.js +91 -311
- package/dist/commands/narratives.js.map +1 -1
- package/dist/commands/query.d.ts +0 -7
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +35 -157
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/replay-cmd.d.ts.map +1 -1
- package/dist/commands/replay-cmd.js +6 -8
- package/dist/commands/replay-cmd.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +45 -83
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/risk.d.ts +29 -1
- package/dist/commands/risk.d.ts.map +1 -1
- package/dist/commands/risk.js +20 -89
- package/dist/commands/risk.js.map +1 -1
- package/dist/commands/social.d.ts +36 -2
- package/dist/commands/social.d.ts.map +1 -1
- package/dist/commands/social.js +74 -148
- package/dist/commands/social.js.map +1 -1
- package/dist/commands/strategy-cmd.d.ts.map +1 -1
- package/dist/commands/strategy-cmd.js +2 -4
- package/dist/commands/strategy-cmd.js.map +1 -1
- package/dist/commands/subscribe.js +4 -4
- package/dist/commands/subscribe.js.map +1 -1
- package/dist/commands/suggestions-cmd.d.ts +24 -0
- package/dist/commands/suggestions-cmd.d.ts.map +1 -0
- package/dist/commands/suggestions-cmd.js +142 -0
- package/dist/commands/suggestions-cmd.js.map +1 -0
- package/dist/commands/thesis-cmd.js +4 -4
- package/dist/commands/thesis-cmd.js.map +1 -1
- package/dist/commands/trader.d.ts +18 -1
- package/dist/commands/trader.d.ts.map +1 -1
- package/dist/commands/trader.js +363 -218
- package/dist/commands/trader.js.map +1 -1
- package/dist/commands/watch.d.ts +0 -10
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +5 -66
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +18 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +45 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -1
- package/package.json +15 -18
package/dist/commands/infra.js
CHANGED
|
@@ -1,176 +1,77 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
1
2
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { createLogger } from '@trading-boy/core';
|
|
4
|
+
import { padRight } from '../utils.js';
|
|
5
|
+
import { getApiBase } from '../api-client.js';
|
|
5
6
|
// ─── Logger ───
|
|
6
7
|
const logger = createLogger('cli-infra');
|
|
7
|
-
// ─── Client Factories ───
|
|
8
|
-
function createNeo4jClient() {
|
|
9
|
-
const config = getConfig();
|
|
10
|
-
return new Neo4jClient({
|
|
11
|
-
uri: config.NEO4J_URI,
|
|
12
|
-
username: config.NEO4J_USER,
|
|
13
|
-
password: config.NEO4J_PASSWORD,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function createTimescaleClient() {
|
|
17
|
-
const config = getConfig();
|
|
18
|
-
return new TimescaleClient({
|
|
19
|
-
host: config.TIMESCALE_HOST,
|
|
20
|
-
port: config.TIMESCALE_PORT,
|
|
21
|
-
user: config.TIMESCALE_USER,
|
|
22
|
-
password: config.TIMESCALE_PASSWORD,
|
|
23
|
-
database: config.TIMESCALE_DB,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
// ─── Redis Minimal Client ───
|
|
27
|
-
/**
|
|
28
|
-
* Minimal Redis client for health checking.
|
|
29
|
-
* Uses dynamic import of ioredis to avoid hard dependency.
|
|
30
|
-
* Falls back to raw TCP check if ioredis is unavailable.
|
|
31
|
-
*/
|
|
32
|
-
async function checkRedisHealth(redisUrl) {
|
|
33
|
-
try {
|
|
34
|
-
// Try a simple TCP connection check by parsing the URL
|
|
35
|
-
const url = new URL(redisUrl);
|
|
36
|
-
const host = url.hostname || 'localhost';
|
|
37
|
-
const port = parseInt(url.port || '6379', 10);
|
|
38
|
-
// Use net module for a basic TCP health check
|
|
39
|
-
const { createConnection } = await import('node:net');
|
|
40
|
-
return new Promise((resolve) => {
|
|
41
|
-
const socket = createConnection({ host, port, timeout: 3000 }, () => {
|
|
42
|
-
// Connected — send PING command
|
|
43
|
-
socket.write('*1\r\n$4\r\nPING\r\n');
|
|
44
|
-
});
|
|
45
|
-
let data = '';
|
|
46
|
-
socket.on('data', (chunk) => {
|
|
47
|
-
data += chunk.toString();
|
|
48
|
-
if (data.includes('+PONG') || data.includes('$4\r\nPONG')) {
|
|
49
|
-
socket.destroy();
|
|
50
|
-
resolve({ healthy: true, message: 'Connected', host, port });
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
socket.on('timeout', () => {
|
|
54
|
-
socket.destroy();
|
|
55
|
-
resolve({ healthy: false, message: 'Connection timed out', host, port });
|
|
56
|
-
});
|
|
57
|
-
socket.on('error', (err) => {
|
|
58
|
-
socket.destroy();
|
|
59
|
-
resolve({ healthy: false, message: err.message, host, port });
|
|
60
|
-
});
|
|
61
|
-
// Fallback timeout
|
|
62
|
-
setTimeout(() => {
|
|
63
|
-
socket.destroy();
|
|
64
|
-
resolve({ healthy: false, message: 'Connection timed out', host, port });
|
|
65
|
-
}, 5000);
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
return {
|
|
70
|
-
healthy: false,
|
|
71
|
-
message: err instanceof Error ? err.message : String(err),
|
|
72
|
-
host: 'unknown',
|
|
73
|
-
port: 0,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
8
|
// ─── Health Check Logic ───
|
|
78
9
|
/**
|
|
79
|
-
* Check
|
|
10
|
+
* Check infrastructure health via the API /health endpoint.
|
|
11
|
+
* Falls back to a basic connectivity check if the API is unreachable.
|
|
80
12
|
*/
|
|
81
|
-
async function
|
|
82
|
-
const
|
|
83
|
-
try {
|
|
84
|
-
await client.connect();
|
|
85
|
-
const healthy = await client.healthCheck();
|
|
86
|
-
const config = getConfig();
|
|
87
|
-
return {
|
|
88
|
-
name: 'Neo4j',
|
|
89
|
-
healthy,
|
|
90
|
-
message: healthy ? 'Connected' : 'Health check failed',
|
|
91
|
-
details: config.NEO4J_URI,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
return {
|
|
96
|
-
name: 'Neo4j',
|
|
97
|
-
healthy: false,
|
|
98
|
-
message: err instanceof Error ? err.message : String(err),
|
|
99
|
-
details: getConfig().NEO4J_URI,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
finally {
|
|
103
|
-
await client.disconnect().catch(() => { });
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Check TimescaleDB health by connecting and running a health check.
|
|
108
|
-
*/
|
|
109
|
-
async function checkTimescaleHealth() {
|
|
110
|
-
const client = createTimescaleClient();
|
|
13
|
+
export async function checkInfraStatus() {
|
|
14
|
+
const apiBase = getApiBase();
|
|
111
15
|
try {
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
16
|
+
// Call the API health endpoint directly (no auth needed)
|
|
17
|
+
const response = await fetch(`${apiBase}/health`);
|
|
18
|
+
const data = (await response.json());
|
|
19
|
+
const services = [
|
|
20
|
+
{
|
|
21
|
+
name: 'API Server',
|
|
22
|
+
healthy: response.ok,
|
|
23
|
+
message: response.ok ? 'Connected' : `Status: ${response.status}`,
|
|
24
|
+
details: apiBase,
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
// Parse individual service statuses from the health response
|
|
28
|
+
if (data.services) {
|
|
29
|
+
if (data.services.neo4j) {
|
|
30
|
+
services.push({
|
|
31
|
+
name: 'Neo4j',
|
|
32
|
+
healthy: data.services.neo4j.status === 'ok',
|
|
33
|
+
message: data.services.neo4j.status === 'ok' ? 'Connected' : (data.services.neo4j.error ?? 'Unhealthy'),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (data.services.timescale) {
|
|
37
|
+
services.push({
|
|
38
|
+
name: 'TimescaleDB',
|
|
39
|
+
healthy: data.services.timescale.status === 'ok',
|
|
40
|
+
message: data.services.timescale.status === 'ok' ? 'Connected' : (data.services.timescale.error ?? 'Unhealthy'),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (data.services.redis) {
|
|
44
|
+
services.push({
|
|
45
|
+
name: 'Redis',
|
|
46
|
+
healthy: data.services.redis.status === 'ok',
|
|
47
|
+
message: data.services.redis.status === 'ok' ? 'Connected' : (data.services.redis.error ?? 'Unhealthy'),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
116
51
|
return {
|
|
117
|
-
|
|
118
|
-
healthy,
|
|
119
|
-
message: healthy ? 'Connected' : 'Health check failed',
|
|
120
|
-
details: `${hostPort}/${config.TIMESCALE_DB}`,
|
|
52
|
+
services,
|
|
53
|
+
overallHealthy: services.every((s) => s.healthy),
|
|
121
54
|
};
|
|
122
55
|
}
|
|
123
|
-
catch (
|
|
124
|
-
|
|
125
|
-
const hostPort = `${config.TIMESCALE_HOST}:${config.TIMESCALE_PORT}`;
|
|
56
|
+
catch (error) {
|
|
57
|
+
// API is unreachable
|
|
126
58
|
return {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
59
|
+
services: [
|
|
60
|
+
{
|
|
61
|
+
name: 'API Server',
|
|
62
|
+
healthy: false,
|
|
63
|
+
message: error instanceof Error ? error.message : String(error),
|
|
64
|
+
details: apiBase,
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
overallHealthy: false,
|
|
131
68
|
};
|
|
132
69
|
}
|
|
133
|
-
finally {
|
|
134
|
-
await client.disconnect().catch(() => { });
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Check Redis health by connecting and sending a PING.
|
|
139
|
-
*/
|
|
140
|
-
async function checkRedisServiceHealth() {
|
|
141
|
-
const config = getConfig();
|
|
142
|
-
const result = await checkRedisHealth(config.REDIS_URL);
|
|
143
|
-
return {
|
|
144
|
-
name: 'Redis',
|
|
145
|
-
healthy: result.healthy,
|
|
146
|
-
message: result.message,
|
|
147
|
-
details: `${result.host}:${result.port}`,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Check all infrastructure services and return a status report.
|
|
152
|
-
*/
|
|
153
|
-
export async function checkInfraStatus() {
|
|
154
|
-
const results = await Promise.all([
|
|
155
|
-
checkNeo4jHealth(),
|
|
156
|
-
checkTimescaleHealth(),
|
|
157
|
-
checkRedisServiceHealth(),
|
|
158
|
-
]);
|
|
159
|
-
return {
|
|
160
|
-
services: results,
|
|
161
|
-
overallHealthy: results.every((r) => r.healthy),
|
|
162
|
-
};
|
|
163
70
|
}
|
|
164
71
|
// ─── Formatter ───
|
|
165
|
-
/**
|
|
166
|
-
* Format the status indicator for a service.
|
|
167
|
-
*/
|
|
168
72
|
function formatStatusIndicator(healthy) {
|
|
169
73
|
return healthy ? chalk.green('\u2713 UP') : chalk.red('\u2717 DOWN');
|
|
170
74
|
}
|
|
171
|
-
/**
|
|
172
|
-
* Format the full infra status output.
|
|
173
|
-
*/
|
|
174
75
|
export function formatInfraStatus(result) {
|
|
175
76
|
const lines = [];
|
|
176
77
|
lines.push('');
|
|
@@ -185,7 +86,6 @@ export function formatInfraStatus(result) {
|
|
|
185
86
|
}
|
|
186
87
|
}
|
|
187
88
|
lines.push('');
|
|
188
|
-
// Overall status
|
|
189
89
|
if (result.overallHealthy) {
|
|
190
90
|
lines.push(` ${chalk.green.bold('All services healthy.')}`);
|
|
191
91
|
}
|
|
@@ -203,12 +103,18 @@ export function registerInfraCommand(program) {
|
|
|
203
103
|
.description('Infrastructure management commands');
|
|
204
104
|
infra
|
|
205
105
|
.command('status')
|
|
206
|
-
.description('Check health of
|
|
207
|
-
.
|
|
106
|
+
.description('Check health of API server and underlying infrastructure')
|
|
107
|
+
.addOption(new Option('--format <format>', 'Output format').choices(['text', 'json']).default('text'))
|
|
108
|
+
.action(async (options) => {
|
|
208
109
|
try {
|
|
209
110
|
console.log(chalk.gray(' Checking infrastructure health...'));
|
|
210
111
|
const result = await checkInfraStatus();
|
|
211
|
-
|
|
112
|
+
if (options.format === 'json') {
|
|
113
|
+
console.log(JSON.stringify(result, null, 2));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(formatInfraStatus(result));
|
|
117
|
+
}
|
|
212
118
|
if (!result.overallHealthy) {
|
|
213
119
|
process.exitCode = 1;
|
|
214
120
|
}
|
|
@@ -221,8 +127,4 @@ export function registerInfraCommand(program) {
|
|
|
221
127
|
}
|
|
222
128
|
});
|
|
223
129
|
}
|
|
224
|
-
// ─── Helpers ───
|
|
225
|
-
function padRight(str, len) {
|
|
226
|
-
return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
|
|
227
|
-
}
|
|
228
130
|
//# sourceMappingURL=infra.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/commands/infra.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/commands/infra.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/commands/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/commands/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAW5C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4R7D"}
|