@trading-boy/cli 0.1.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 +8 -0
- package/dist/api-client.d.ts +20 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +81 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +71 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/audit.d.ts +33 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +135 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/behavioral.d.ts +40 -0
- package/dist/commands/behavioral.d.ts.map +1 -0
- package/dist/commands/behavioral.js +369 -0
- package/dist/commands/behavioral.js.map +1 -0
- package/dist/commands/billing.d.ts +12 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +111 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/catalysts.d.ts +8 -0
- package/dist/commands/catalysts.d.ts.map +1 -0
- package/dist/commands/catalysts.js +192 -0
- package/dist/commands/catalysts.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +30 -0
- package/dist/commands/config-cmd.d.ts.map +1 -0
- package/dist/commands/config-cmd.js +265 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/context.d.ts +40 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +385 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/decisions.d.ts +21 -0
- package/dist/commands/decisions.d.ts.map +1 -0
- package/dist/commands/decisions.js +327 -0
- package/dist/commands/decisions.js.map +1 -0
- package/dist/commands/events.d.ts +3 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +201 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/infra.d.ts +22 -0
- package/dist/commands/infra.d.ts.map +1 -0
- package/dist/commands/infra.js +228 -0
- package/dist/commands/infra.js.map +1 -0
- package/dist/commands/journal.d.ts +3 -0
- package/dist/commands/journal.d.ts.map +1 -0
- package/dist/commands/journal.js +616 -0
- package/dist/commands/journal.js.map +1 -0
- package/dist/commands/login.d.ts +18 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +121 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +7 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +39 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/narratives.d.ts +3 -0
- package/dist/commands/narratives.d.ts.map +1 -0
- package/dist/commands/narratives.js +336 -0
- package/dist/commands/narratives.js.map +1 -0
- package/dist/commands/query.d.ts +39 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +212 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/review.d.ts +3 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +481 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/risk.d.ts +19 -0
- package/dist/commands/risk.d.ts.map +1 -0
- package/dist/commands/risk.js +190 -0
- package/dist/commands/risk.js.map +1 -0
- package/dist/commands/social.d.ts +9 -0
- package/dist/commands/social.d.ts.map +1 -0
- package/dist/commands/social.js +386 -0
- package/dist/commands/social.js.map +1 -0
- package/dist/commands/subscribe.d.ts +45 -0
- package/dist/commands/subscribe.d.ts.map +1 -0
- package/dist/commands/subscribe.js +259 -0
- package/dist/commands/subscribe.js.map +1 -0
- package/dist/commands/trader.d.ts +12 -0
- package/dist/commands/trader.d.ts.map +1 -0
- package/dist/commands/trader.js +265 -0
- package/dist/commands/trader.js.map +1 -0
- package/dist/commands/watch.d.ts +26 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +121 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/whoami.d.ts +14 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +73 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/credentials.d.ts +18 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +164 -0
- package/dist/credentials.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +21 -0
- package/dist/utils.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { getConfig, createLogger, EventType } from '@trading-boy/core';
|
|
4
|
+
import { formatConnectionError } from '../utils.js';
|
|
5
|
+
import { Neo4jClient, getEventsByType, getEventsByDateRange, } from '@trading-boy/graph-db';
|
|
6
|
+
// ─── Logger ───
|
|
7
|
+
const logger = createLogger('cli-catalysts');
|
|
8
|
+
// ─── Neo4j Client Factory ───
|
|
9
|
+
function createNeo4jClient() {
|
|
10
|
+
const config = getConfig();
|
|
11
|
+
return new Neo4jClient({
|
|
12
|
+
uri: config.NEO4J_URI,
|
|
13
|
+
username: config.NEO4J_USER,
|
|
14
|
+
password: config.NEO4J_PASSWORD,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
// ─── Formatters ───
|
|
18
|
+
/**
|
|
19
|
+
* Color-code severity labels.
|
|
20
|
+
*/
|
|
21
|
+
function colorSeverity(severity) {
|
|
22
|
+
switch (severity) {
|
|
23
|
+
case 'CRITICAL':
|
|
24
|
+
return chalk.bgRed.white.bold(` ${severity} `);
|
|
25
|
+
case 'HIGH':
|
|
26
|
+
return chalk.red(severity);
|
|
27
|
+
case 'MEDIUM':
|
|
28
|
+
return chalk.yellow(severity);
|
|
29
|
+
case 'LOW':
|
|
30
|
+
return chalk.green(severity);
|
|
31
|
+
default:
|
|
32
|
+
return chalk.dim(severity);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Format a date string to a short display format (YYYY-MM-DD).
|
|
37
|
+
*/
|
|
38
|
+
function formatDate(isoString) {
|
|
39
|
+
if (!isoString) {
|
|
40
|
+
return chalk.dim('no date');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return new Date(isoString).toISOString().slice(0, 10);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return isoString;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Compute days until a scheduled date.
|
|
51
|
+
*/
|
|
52
|
+
function daysUntil(isoString) {
|
|
53
|
+
if (!isoString) {
|
|
54
|
+
return chalk.dim('-');
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const date = new Date(isoString);
|
|
58
|
+
const now = new Date();
|
|
59
|
+
const diffMs = date.getTime() - now.getTime();
|
|
60
|
+
const diffDays = Math.ceil(diffMs / (1000 * 60 * 60 * 24));
|
|
61
|
+
if (diffDays < 0) {
|
|
62
|
+
return chalk.dim(`${diffDays}d ago`);
|
|
63
|
+
}
|
|
64
|
+
if (diffDays === 0) {
|
|
65
|
+
return chalk.red.bold('TODAY');
|
|
66
|
+
}
|
|
67
|
+
if (diffDays <= 3) {
|
|
68
|
+
return chalk.red(`${diffDays}d`);
|
|
69
|
+
}
|
|
70
|
+
if (diffDays <= 7) {
|
|
71
|
+
return chalk.yellow(`${diffDays}d`);
|
|
72
|
+
}
|
|
73
|
+
return chalk.white(`${diffDays}d`);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return chalk.dim('-');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format the catalysts list output.
|
|
81
|
+
*/
|
|
82
|
+
export function formatCatalystsOutput(events) {
|
|
83
|
+
const lines = [];
|
|
84
|
+
lines.push('');
|
|
85
|
+
lines.push(chalk.bold.cyan(' Upcoming Catalysts'));
|
|
86
|
+
lines.push(chalk.gray(' ' + '\u2500'.repeat(100)));
|
|
87
|
+
lines.push('');
|
|
88
|
+
if (events.length === 0) {
|
|
89
|
+
lines.push(` ${chalk.dim('No upcoming catalysts found.')}`);
|
|
90
|
+
lines.push('');
|
|
91
|
+
return lines.join('\n');
|
|
92
|
+
}
|
|
93
|
+
// Header
|
|
94
|
+
lines.push(' ' +
|
|
95
|
+
padRight('Date', 14) +
|
|
96
|
+
padRight('In', 10) +
|
|
97
|
+
padRight('Type', 22) +
|
|
98
|
+
padRight('Severity', 12) +
|
|
99
|
+
padRight('Tokens', 16) +
|
|
100
|
+
'Title');
|
|
101
|
+
lines.push(' ' + '\u2500'.repeat(100));
|
|
102
|
+
for (const event of events) {
|
|
103
|
+
const date = formatDate(event.scheduledDate);
|
|
104
|
+
const until = daysUntil(event.scheduledDate);
|
|
105
|
+
const severity = colorSeverity(event.severity);
|
|
106
|
+
const tokens = event.tokensAffected
|
|
107
|
+
? event.tokensAffected.join(', ')
|
|
108
|
+
: '-';
|
|
109
|
+
const title = truncate(event.title, 30);
|
|
110
|
+
lines.push(' ' +
|
|
111
|
+
padRight(date, 14) +
|
|
112
|
+
padRight(until, 10) +
|
|
113
|
+
padRight(event.type, 22) +
|
|
114
|
+
padRight(severity, 12) +
|
|
115
|
+
padRight(tokens, 16) +
|
|
116
|
+
title);
|
|
117
|
+
}
|
|
118
|
+
lines.push('');
|
|
119
|
+
lines.push(` ${chalk.gray(`Total: ${events.length} catalyst(s)`)}`);
|
|
120
|
+
lines.push('');
|
|
121
|
+
return lines.join('\n');
|
|
122
|
+
}
|
|
123
|
+
// ─── Command Registration ───
|
|
124
|
+
export function registerCatalystsCommand(program) {
|
|
125
|
+
program
|
|
126
|
+
.command('catalysts')
|
|
127
|
+
.description('Show upcoming catalysts and events sorted by date')
|
|
128
|
+
.option('--type <type>', `Filter by event type (${Object.values(EventType).join(', ')})`)
|
|
129
|
+
.option('--days <n>', 'Number of days to look ahead', parseIntOption, 30)
|
|
130
|
+
.option('--limit <n>', 'Maximum number of results', parseIntOption, 50)
|
|
131
|
+
.addOption(new Option('--format <format>', 'Output format').choices(['text', 'json']).default('text'))
|
|
132
|
+
.action(async (options) => {
|
|
133
|
+
// Validate event type if provided
|
|
134
|
+
if (options.type && !Object.values(EventType).includes(options.type)) {
|
|
135
|
+
console.error(chalk.red(`Error: Invalid event type "${options.type}". Valid types: ${Object.values(EventType).join(', ')}`));
|
|
136
|
+
process.exitCode = 1;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Validate --days
|
|
140
|
+
if (!Number.isFinite(options.days) || options.days <= 0) {
|
|
141
|
+
console.error(chalk.red('Error: --days must be a positive number'));
|
|
142
|
+
process.exitCode = 1;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const client = createNeo4jClient();
|
|
146
|
+
try {
|
|
147
|
+
await client.connect();
|
|
148
|
+
let events;
|
|
149
|
+
if (options.type) {
|
|
150
|
+
// Filter by specific type
|
|
151
|
+
events = await getEventsByType(client, options.type, {
|
|
152
|
+
limit: options.limit,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Date range query: now to N days from now
|
|
157
|
+
const now = new Date();
|
|
158
|
+
const endDate = new Date(now.getTime() + options.days * 24 * 60 * 60 * 1000);
|
|
159
|
+
events = await getEventsByDateRange(client, now.toISOString(), endDate.toISOString(), { limit: options.limit });
|
|
160
|
+
}
|
|
161
|
+
if (options.format === 'json') {
|
|
162
|
+
console.log(JSON.stringify(events, null, 2));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.log(formatCatalystsOutput(events));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
170
|
+
logger.error({ error: message }, 'Failed to fetch catalysts');
|
|
171
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
172
|
+
const guidance = formatConnectionError(message);
|
|
173
|
+
if (guidance)
|
|
174
|
+
console.error(guidance);
|
|
175
|
+
process.exitCode = 1;
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
await client.disconnect();
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
// ─── Helpers ───
|
|
183
|
+
function padRight(str, len) {
|
|
184
|
+
return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
|
|
185
|
+
}
|
|
186
|
+
function truncate(str, maxLen) {
|
|
187
|
+
return str.length > maxLen ? str.slice(0, maxLen - 3) + '...' : str;
|
|
188
|
+
}
|
|
189
|
+
function parseIntOption(value) {
|
|
190
|
+
return parseInt(value, 10);
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=catalysts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalysts.js","sourceRoot":"","sources":["../../src/commands/catalysts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,WAAW,EACX,eAAe,EACf,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAE/B,iBAAiB;AAEjB,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAE7C,+BAA+B;AAE/B,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,IAAI,WAAW,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,SAAS;QACrB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,QAAQ,EAAE,MAAM,CAAC,cAAc;KAChC,CAAC,CAAC;AACL,CAAC;AAED,qBAAqB;AAErB;;GAEG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B;YACE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,SAAwB;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,SAAwB;IACzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS;IACT,KAAK,CAAC,IAAI,CACR,IAAI;QACJ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpB,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtB,OAAO,CACR,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc;YACjC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,CAAC,CAAC,GAAG,CAAC;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,KAAK,CAAC,IAAI,CACR,IAAI;YACJ,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,KAAK,CACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+BAA+B;AAE/B,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,yBAAyB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACxF,MAAM,CAAC,YAAY,EAAE,8BAA8B,EAAE,cAAc,EAAE,EAAE,CAAC;SACxE,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,cAAc,EAAE,EAAE,CAAC;SACtE,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACrG,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC1C,kCAAkC;QAClC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAiB,CAAC,EAAE,CAAC;YAClF,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,8BAA8B,OAAO,CAAC,IAAI,mBAAmB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAC9G,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YAEvB,IAAI,MAAqB,CAAC;YAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,0BAA0B;gBAC1B,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE;oBACnD,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gBAE7E,MAAM,GAAG,MAAM,oBAAoB,CACjC,MAAM,EACN,GAAG,CAAC,WAAW,EAAE,EACjB,OAAO,CAAC,WAAW,EAAE,EACrB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACzB,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAWD,kBAAkB;AAElB,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,MAAc;IAC3C,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type Config } from '@trading-boy/core';
|
|
3
|
+
/**
|
|
4
|
+
* Redact a config value if it's a sensitive key.
|
|
5
|
+
* Shows first 3 chars + '****' for non-empty sensitive values.
|
|
6
|
+
*/
|
|
7
|
+
export declare function redactValue(key: string, value: string | number | boolean): string;
|
|
8
|
+
/**
|
|
9
|
+
* Format the full config for display.
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatConfigOutput(config: Config): string;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the .env file path from the project root.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveEnvPath(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Parse a .env file into a Map of key-value pairs.
|
|
18
|
+
* Preserves comments and blank lines by returning the full lines array too.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseEnvFile(filePath: string): {
|
|
21
|
+
entries: Map<string, string>;
|
|
22
|
+
lines: string[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Write a key-value pair to the .env file.
|
|
26
|
+
* If the key already exists, update the line; otherwise append.
|
|
27
|
+
*/
|
|
28
|
+
export declare function writeEnvValue(filePath: string, key: string, value: string): void;
|
|
29
|
+
export declare function registerConfigCommand(program: Command): void;
|
|
30
|
+
//# sourceMappingURL=config-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsFzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAcjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoCzD;AAID;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CA+BhG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAwBhF;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D5D"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getConfig, createLogger } from '@trading-boy/core';
|
|
3
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
// ─── Logger ───
|
|
6
|
+
const logger = createLogger('cli-config');
|
|
7
|
+
// ─── Sensitive Keys ───
|
|
8
|
+
/** Keys whose values should be redacted in `config show` output. */
|
|
9
|
+
const SENSITIVE_KEYS = new Set([
|
|
10
|
+
'NEO4J_PASSWORD',
|
|
11
|
+
'TIMESCALE_PASSWORD',
|
|
12
|
+
'REDIS_PASSWORD',
|
|
13
|
+
'HELIUS_API_KEY',
|
|
14
|
+
'COINGECKO_API_KEY',
|
|
15
|
+
'ALCHEMY_API_KEY',
|
|
16
|
+
'GLASSNODE_API_KEY',
|
|
17
|
+
'TWITTER_BEARER_TOKEN',
|
|
18
|
+
'ANTHROPIC_API_KEY',
|
|
19
|
+
'LLM_API_KEY',
|
|
20
|
+
'LLM_FALLBACK_API_KEY',
|
|
21
|
+
'BELIEF_HMAC_KEY',
|
|
22
|
+
'STRIPE_SECRET_KEY',
|
|
23
|
+
'STRIPE_WEBHOOK_SECRET',
|
|
24
|
+
'TELEGRAM_BOT_TOKEN',
|
|
25
|
+
'RESEND_API_KEY',
|
|
26
|
+
'SMTP_PASS',
|
|
27
|
+
'API_KEY_HASHES',
|
|
28
|
+
]);
|
|
29
|
+
/** Valid config keys (from the Zod schema). */
|
|
30
|
+
const VALID_KEYS = [
|
|
31
|
+
'NODE_ENV',
|
|
32
|
+
'LOG_LEVEL',
|
|
33
|
+
'NEO4J_URI',
|
|
34
|
+
'NEO4J_USER',
|
|
35
|
+
'NEO4J_PASSWORD',
|
|
36
|
+
'TIMESCALE_HOST',
|
|
37
|
+
'TIMESCALE_PORT',
|
|
38
|
+
'TIMESCALE_USER',
|
|
39
|
+
'TIMESCALE_PASSWORD',
|
|
40
|
+
'TIMESCALE_DB',
|
|
41
|
+
'REDIS_URL',
|
|
42
|
+
'REDIS_PASSWORD',
|
|
43
|
+
'HELIUS_API_KEY',
|
|
44
|
+
'COINGECKO_API_KEY',
|
|
45
|
+
'ALCHEMY_API_KEY',
|
|
46
|
+
'GLASSNODE_API_KEY',
|
|
47
|
+
'TWITTER_BEARER_TOKEN',
|
|
48
|
+
'ANTHROPIC_API_KEY',
|
|
49
|
+
'LLM_PROVIDER',
|
|
50
|
+
'LLM_API_KEY',
|
|
51
|
+
'LLM_BASE_URL',
|
|
52
|
+
'LLM_MODEL',
|
|
53
|
+
'LLM_FALLBACK_PROVIDER',
|
|
54
|
+
'LLM_FALLBACK_MODEL',
|
|
55
|
+
'LLM_FALLBACK_API_KEY',
|
|
56
|
+
'LLM_MAX_RETRIES',
|
|
57
|
+
'LLM_TIMEOUT_MS',
|
|
58
|
+
'BELIEF_HMAC_KEY',
|
|
59
|
+
'ENABLE_LLM',
|
|
60
|
+
'ENABLE_LEARNING',
|
|
61
|
+
'ENABLE_SOCIAL',
|
|
62
|
+
'API_PORT',
|
|
63
|
+
'TELEGRAM_BOT_TOKEN',
|
|
64
|
+
'TELEGRAM_ALLOWED_CHAT_IDS',
|
|
65
|
+
'RESEND_API_KEY',
|
|
66
|
+
'EMAIL_FROM_ADDRESS',
|
|
67
|
+
'EMAIL_FROM_NAME',
|
|
68
|
+
'SMTP_HOST',
|
|
69
|
+
'SMTP_PORT',
|
|
70
|
+
'SMTP_USER',
|
|
71
|
+
'SMTP_PASS',
|
|
72
|
+
'NOTIFICATION_FROM_EMAIL',
|
|
73
|
+
'STRIPE_SECRET_KEY',
|
|
74
|
+
'STRIPE_WEBHOOK_SECRET',
|
|
75
|
+
'STRIPE_PRICE_ID',
|
|
76
|
+
'APP_URL',
|
|
77
|
+
'API_KEY_HASHES',
|
|
78
|
+
'API_KEY_AUTH_ENABLED',
|
|
79
|
+
];
|
|
80
|
+
// ─── Formatters ───
|
|
81
|
+
/**
|
|
82
|
+
* Redact a config value if it's a sensitive key.
|
|
83
|
+
* Shows first 3 chars + '****' for non-empty sensitive values.
|
|
84
|
+
*/
|
|
85
|
+
export function redactValue(key, value) {
|
|
86
|
+
const strValue = String(value);
|
|
87
|
+
if (!SENSITIVE_KEYS.has(key)) {
|
|
88
|
+
return strValue;
|
|
89
|
+
}
|
|
90
|
+
// Empty values shown as placeholder
|
|
91
|
+
if (strValue === '') {
|
|
92
|
+
return chalk.dim('(empty)');
|
|
93
|
+
}
|
|
94
|
+
// Redact: show first 3 chars + ****
|
|
95
|
+
if (strValue.length <= 3) {
|
|
96
|
+
return '****';
|
|
97
|
+
}
|
|
98
|
+
return strValue.slice(0, 3) + '****';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Format the full config for display.
|
|
102
|
+
*/
|
|
103
|
+
export function formatConfigOutput(config) {
|
|
104
|
+
const lines = [];
|
|
105
|
+
lines.push('');
|
|
106
|
+
lines.push(chalk.bold.cyan(' Configuration'));
|
|
107
|
+
lines.push(chalk.gray(' ' + '\u2500'.repeat(60)));
|
|
108
|
+
lines.push('');
|
|
109
|
+
// Group config keys by category
|
|
110
|
+
const groups = [
|
|
111
|
+
{ name: 'Runtime', keys: ['NODE_ENV', 'LOG_LEVEL'] },
|
|
112
|
+
{ name: 'Neo4j', keys: ['NEO4J_URI', 'NEO4J_USER', 'NEO4J_PASSWORD'] },
|
|
113
|
+
{ name: 'TimescaleDB', keys: ['TIMESCALE_HOST', 'TIMESCALE_PORT', 'TIMESCALE_USER', 'TIMESCALE_PASSWORD', 'TIMESCALE_DB'] },
|
|
114
|
+
{ name: 'Redis', keys: ['REDIS_URL', 'REDIS_PASSWORD'] },
|
|
115
|
+
{ name: 'Data Sources', keys: ['HELIUS_API_KEY', 'COINGECKO_API_KEY', 'ALCHEMY_API_KEY', 'GLASSNODE_API_KEY', 'TWITTER_BEARER_TOKEN'] },
|
|
116
|
+
{ name: 'AI / LLM', keys: ['ANTHROPIC_API_KEY', 'LLM_PROVIDER', 'LLM_API_KEY', 'LLM_BASE_URL', 'LLM_MODEL', 'LLM_FALLBACK_PROVIDER', 'LLM_FALLBACK_MODEL', 'LLM_FALLBACK_API_KEY', 'LLM_MAX_RETRIES', 'LLM_TIMEOUT_MS', 'ENABLE_LLM'] },
|
|
117
|
+
{ name: 'Learning', keys: ['BELIEF_HMAC_KEY', 'ENABLE_LEARNING', 'ENABLE_SOCIAL'] },
|
|
118
|
+
{ name: 'API', keys: ['API_PORT', 'API_KEY_HASHES', 'API_KEY_AUTH_ENABLED'] },
|
|
119
|
+
{ name: 'Billing', keys: ['STRIPE_SECRET_KEY', 'STRIPE_WEBHOOK_SECRET', 'STRIPE_PRICE_ID', 'APP_URL'] },
|
|
120
|
+
{ name: 'Telegram', keys: ['TELEGRAM_BOT_TOKEN', 'TELEGRAM_ALLOWED_CHAT_IDS'] },
|
|
121
|
+
{ name: 'Email', keys: ['RESEND_API_KEY', 'EMAIL_FROM_ADDRESS', 'EMAIL_FROM_NAME', 'SMTP_HOST', 'SMTP_PORT', 'SMTP_USER', 'SMTP_PASS', 'NOTIFICATION_FROM_EMAIL'] },
|
|
122
|
+
];
|
|
123
|
+
const configRecord = config;
|
|
124
|
+
for (const group of groups) {
|
|
125
|
+
lines.push(chalk.bold(` ${group.name}`));
|
|
126
|
+
for (const key of group.keys) {
|
|
127
|
+
const value = configRecord[key];
|
|
128
|
+
const displayValue = value !== undefined ? redactValue(key, value) : chalk.dim('(not set)');
|
|
129
|
+
lines.push(` ${chalk.gray(padRight(key, 26))} ${displayValue}`);
|
|
130
|
+
}
|
|
131
|
+
lines.push('');
|
|
132
|
+
}
|
|
133
|
+
return lines.join('\n');
|
|
134
|
+
}
|
|
135
|
+
// ─── .env File Operations ───
|
|
136
|
+
/**
|
|
137
|
+
* Resolve the .env file path from the project root.
|
|
138
|
+
*/
|
|
139
|
+
export function resolveEnvPath() {
|
|
140
|
+
return resolve(process.cwd(), '.env');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Parse a .env file into a Map of key-value pairs.
|
|
144
|
+
* Preserves comments and blank lines by returning the full lines array too.
|
|
145
|
+
*/
|
|
146
|
+
export function parseEnvFile(filePath) {
|
|
147
|
+
const entries = new Map();
|
|
148
|
+
const lines = [];
|
|
149
|
+
if (!existsSync(filePath)) {
|
|
150
|
+
return { entries, lines };
|
|
151
|
+
}
|
|
152
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
153
|
+
const rawLines = content.split('\n');
|
|
154
|
+
for (const line of rawLines) {
|
|
155
|
+
lines.push(line);
|
|
156
|
+
const trimmed = line.trim();
|
|
157
|
+
// Skip comments and empty lines
|
|
158
|
+
if (trimmed === '' || trimmed.startsWith('#')) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const eqIndex = trimmed.indexOf('=');
|
|
162
|
+
if (eqIndex > 0) {
|
|
163
|
+
const key = trimmed.slice(0, eqIndex).trim();
|
|
164
|
+
let value = trimmed.slice(eqIndex + 1).trim();
|
|
165
|
+
// Remove surrounding quotes if present
|
|
166
|
+
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
167
|
+
value = value.slice(1, -1);
|
|
168
|
+
}
|
|
169
|
+
entries.set(key, value);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return { entries, lines };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Write a key-value pair to the .env file.
|
|
176
|
+
* If the key already exists, update the line; otherwise append.
|
|
177
|
+
*/
|
|
178
|
+
export function writeEnvValue(filePath, key, value) {
|
|
179
|
+
const { entries, lines } = parseEnvFile(filePath);
|
|
180
|
+
if (entries.has(key)) {
|
|
181
|
+
// Update existing line
|
|
182
|
+
const updatedLines = lines.map((line) => {
|
|
183
|
+
const trimmed = line.trim();
|
|
184
|
+
if (trimmed.startsWith('#') || trimmed === '')
|
|
185
|
+
return line;
|
|
186
|
+
const eqIndex = trimmed.indexOf('=');
|
|
187
|
+
if (eqIndex > 0) {
|
|
188
|
+
const lineKey = trimmed.slice(0, eqIndex).trim();
|
|
189
|
+
if (lineKey === key) {
|
|
190
|
+
return `${key}=${value}`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return line;
|
|
194
|
+
});
|
|
195
|
+
writeFileSync(filePath, updatedLines.join('\n'));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Append to end of file
|
|
199
|
+
const existing = existsSync(filePath) ? readFileSync(filePath, 'utf-8') : '';
|
|
200
|
+
const separator = existing.endsWith('\n') || existing === '' ? '' : '\n';
|
|
201
|
+
writeFileSync(filePath, existing + separator + `${key}=${value}\n`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// ─── Command Registration ───
|
|
205
|
+
export function registerConfigCommand(program) {
|
|
206
|
+
const configCmd = program
|
|
207
|
+
.command('config')
|
|
208
|
+
.description('Configuration management commands');
|
|
209
|
+
// ─── config show ───
|
|
210
|
+
configCmd
|
|
211
|
+
.command('show')
|
|
212
|
+
.description('Display current configuration (sensitive values redacted)')
|
|
213
|
+
.action(() => {
|
|
214
|
+
try {
|
|
215
|
+
const config = getConfig();
|
|
216
|
+
console.log(formatConfigOutput(config));
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
220
|
+
logger.error({ error: message }, 'Failed to load config');
|
|
221
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
222
|
+
process.exitCode = 1;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// ─── config set ───
|
|
226
|
+
configCmd
|
|
227
|
+
.command('set <key> <value>')
|
|
228
|
+
.description('Set a config value in the .env file')
|
|
229
|
+
.action((key, value) => {
|
|
230
|
+
try {
|
|
231
|
+
// Validate key
|
|
232
|
+
if (!VALID_KEYS.includes(key)) {
|
|
233
|
+
console.error(chalk.red(`Error: Unknown config key "${key}".`));
|
|
234
|
+
console.error(chalk.dim(`Valid keys: ${VALID_KEYS.join(', ')}`));
|
|
235
|
+
process.exitCode = 1;
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const envPath = resolveEnvPath();
|
|
239
|
+
writeEnvValue(envPath, key, value);
|
|
240
|
+
console.log('');
|
|
241
|
+
console.log(chalk.green(` Config updated: ${key}`));
|
|
242
|
+
if (SENSITIVE_KEYS.has(key)) {
|
|
243
|
+
console.log(` ${chalk.gray('Value:')} ${redactValue(key, value)}`);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
console.log(` ${chalk.gray('Value:')} ${value}`);
|
|
247
|
+
}
|
|
248
|
+
console.log(` ${chalk.gray('File:')} ${envPath}`);
|
|
249
|
+
console.log('');
|
|
250
|
+
console.log(chalk.dim(' Note: Restart services for changes to take effect.'));
|
|
251
|
+
console.log('');
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
255
|
+
logger.error({ error: message }, 'Failed to set config');
|
|
256
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
257
|
+
process.exitCode = 1;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
// ─── Helpers ───
|
|
262
|
+
function padRight(str, len) {
|
|
263
|
+
return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { AssembledContextPackage, MarketData, OnchainData, DefiRiskProfile, Catalysts, SocialContext, Synthesis, ContextMeta } from '@trading-boy/core';
|
|
3
|
+
/**
|
|
4
|
+
* Format the market section of a ContextPackage.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatMarketSection(market: MarketData | null): string;
|
|
7
|
+
/**
|
|
8
|
+
* Format the onchain section of a ContextPackage.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatOnchainSection(onchain: OnchainData | null): string;
|
|
11
|
+
/**
|
|
12
|
+
* Format the DeFi risk section of a ContextPackage.
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatRiskSection(defiRisk: DefiRiskProfile | null): string;
|
|
15
|
+
/**
|
|
16
|
+
* Format the catalysts section of a ContextPackage.
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatCatalystsSection(catalysts: Catalysts | null): string;
|
|
19
|
+
/**
|
|
20
|
+
* Format the social section of a ContextPackage.
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatSocialSection(social: SocialContext | null): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format the synthesis section of a ContextPackage.
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatSynthesisSection(synthesis: Synthesis | null): string;
|
|
27
|
+
/**
|
|
28
|
+
* Format the _meta section of a ContextPackage.
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatMetaSection(meta: ContextMeta): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format a full AssembledContextPackage for colored terminal output.
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatContextOutput(pkg: AssembledContextPackage): string;
|
|
35
|
+
/**
|
|
36
|
+
* Execute assembleContext and return the full package.
|
|
37
|
+
*/
|
|
38
|
+
export declare function executeContext(symbol: string): Promise<AssembledContextPackage>;
|
|
39
|
+
export declare function registerContextCommand(program: Command): void;
|
|
40
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwF7J;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAiCrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CA8BxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,MAAM,CA6B1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAuC1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAoCxE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAoC1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAiCxE;AAID;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAwBrF;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB7D"}
|