@trading-boy/cli 0.3.6 → 0.3.7

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.
Files changed (109) hide show
  1. package/dist/api-client.d.ts +5 -0
  2. package/dist/api-client.d.ts.map +1 -1
  3. package/dist/api-client.js +37 -3
  4. package/dist/api-client.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +39 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/audit.d.ts +0 -15
  9. package/dist/commands/audit.d.ts.map +1 -1
  10. package/dist/commands/audit.js +17 -79
  11. package/dist/commands/audit.js.map +1 -1
  12. package/dist/commands/behavioral.d.ts +34 -1
  13. package/dist/commands/behavioral.d.ts.map +1 -1
  14. package/dist/commands/behavioral.js +56 -76
  15. package/dist/commands/behavioral.js.map +1 -1
  16. package/dist/commands/benchmark-cmd.js +2 -2
  17. package/dist/commands/benchmark-cmd.js.map +1 -1
  18. package/dist/commands/billing.d.ts.map +1 -1
  19. package/dist/commands/billing.js +15 -10
  20. package/dist/commands/billing.js.map +1 -1
  21. package/dist/commands/catalysts.d.ts +10 -1
  22. package/dist/commands/catalysts.d.ts.map +1 -1
  23. package/dist/commands/catalysts.js +15 -84
  24. package/dist/commands/catalysts.js.map +1 -1
  25. package/dist/commands/coaching-cmd.d.ts.map +1 -1
  26. package/dist/commands/coaching-cmd.js +21 -10
  27. package/dist/commands/coaching-cmd.js.map +1 -1
  28. package/dist/commands/config-cmd.d.ts.map +1 -1
  29. package/dist/commands/config-cmd.js +35 -19
  30. package/dist/commands/config-cmd.js.map +1 -1
  31. package/dist/commands/context.d.ts +0 -7
  32. package/dist/commands/context.d.ts.map +1 -1
  33. package/dist/commands/context.js +47 -199
  34. package/dist/commands/context.js.map +1 -1
  35. package/dist/commands/decisions.d.ts +38 -2
  36. package/dist/commands/decisions.d.ts.map +1 -1
  37. package/dist/commands/decisions.js +35 -134
  38. package/dist/commands/decisions.js.map +1 -1
  39. package/dist/commands/edge-cmd.d.ts +55 -45
  40. package/dist/commands/edge-cmd.d.ts.map +1 -1
  41. package/dist/commands/edge-cmd.js +76 -32
  42. package/dist/commands/edge-cmd.js.map +1 -1
  43. package/dist/commands/edge-guard-cmd.d.ts.map +1 -1
  44. package/dist/commands/edge-guard-cmd.js +7 -3
  45. package/dist/commands/edge-guard-cmd.js.map +1 -1
  46. package/dist/commands/events.d.ts.map +1 -1
  47. package/dist/commands/events.js +78 -162
  48. package/dist/commands/events.js.map +1 -1
  49. package/dist/commands/infra.d.ts +2 -4
  50. package/dist/commands/infra.d.ts.map +1 -1
  51. package/dist/commands/infra.js +65 -163
  52. package/dist/commands/infra.js.map +1 -1
  53. package/dist/commands/journal.d.ts.map +1 -1
  54. package/dist/commands/journal.js +138 -597
  55. package/dist/commands/journal.js.map +1 -1
  56. package/dist/commands/login.js +3 -3
  57. package/dist/commands/login.js.map +1 -1
  58. package/dist/commands/narratives.d.ts.map +1 -1
  59. package/dist/commands/narratives.js +90 -311
  60. package/dist/commands/narratives.js.map +1 -1
  61. package/dist/commands/query.d.ts +0 -7
  62. package/dist/commands/query.d.ts.map +1 -1
  63. package/dist/commands/query.js +35 -157
  64. package/dist/commands/query.js.map +1 -1
  65. package/dist/commands/replay-cmd.d.ts.map +1 -1
  66. package/dist/commands/replay-cmd.js +6 -8
  67. package/dist/commands/replay-cmd.js.map +1 -1
  68. package/dist/commands/review.d.ts.map +1 -1
  69. package/dist/commands/review.js +45 -83
  70. package/dist/commands/review.js.map +1 -1
  71. package/dist/commands/risk.d.ts +29 -1
  72. package/dist/commands/risk.d.ts.map +1 -1
  73. package/dist/commands/risk.js +20 -89
  74. package/dist/commands/risk.js.map +1 -1
  75. package/dist/commands/social.d.ts +36 -2
  76. package/dist/commands/social.d.ts.map +1 -1
  77. package/dist/commands/social.js +74 -148
  78. package/dist/commands/social.js.map +1 -1
  79. package/dist/commands/strategy-cmd.d.ts.map +1 -1
  80. package/dist/commands/strategy-cmd.js +2 -4
  81. package/dist/commands/strategy-cmd.js.map +1 -1
  82. package/dist/commands/subscribe.js +4 -4
  83. package/dist/commands/subscribe.js.map +1 -1
  84. package/dist/commands/suggestions-cmd.d.ts +24 -0
  85. package/dist/commands/suggestions-cmd.d.ts.map +1 -0
  86. package/dist/commands/suggestions-cmd.js +142 -0
  87. package/dist/commands/suggestions-cmd.js.map +1 -0
  88. package/dist/commands/thesis-cmd.js +4 -4
  89. package/dist/commands/thesis-cmd.js.map +1 -1
  90. package/dist/commands/trader.d.ts +18 -1
  91. package/dist/commands/trader.d.ts.map +1 -1
  92. package/dist/commands/trader.js +105 -225
  93. package/dist/commands/trader.js.map +1 -1
  94. package/dist/commands/watch.d.ts +0 -10
  95. package/dist/commands/watch.d.ts.map +1 -1
  96. package/dist/commands/watch.js +5 -66
  97. package/dist/commands/watch.js.map +1 -1
  98. package/dist/commands/whoami.d.ts.map +1 -1
  99. package/dist/commands/whoami.js +18 -2
  100. package/dist/commands/whoami.js.map +1 -1
  101. package/dist/index.d.ts +4 -4
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +4 -4
  104. package/dist/index.js.map +1 -1
  105. package/dist/utils.d.ts +45 -0
  106. package/dist/utils.d.ts.map +1 -1
  107. package/dist/utils.js +97 -0
  108. package/dist/utils.js.map +1 -1
  109. package/package.json +5 -10
@@ -1,98 +1,10 @@
1
1
  import { Option } from 'commander';
2
2
  import chalk from 'chalk';
3
- import { getConfig, createLogger } from '@trading-boy/core';
4
- import { Neo4jClient } from '@trading-boy/graph-db';
5
- import { TimescaleClient } from '@trading-boy/timeseries-db';
3
+ import { createLogger } from '@trading-boy/core';
6
4
  import { formatConnectionError } from '../utils.js';
7
- import { isRemoteMode, apiRequest, ApiError } from '../api-client.js';
5
+ import { apiRequest, ApiError } from '../api-client.js';
8
6
  // ─── Logger ───
9
7
  const logger = createLogger('cli-query');
10
- // ─── Client Factories ───
11
- function createNeo4jClient() {
12
- const config = getConfig();
13
- return new Neo4jClient({
14
- uri: config.NEO4J_URI,
15
- username: config.NEO4J_USER,
16
- password: config.NEO4J_PASSWORD,
17
- });
18
- }
19
- function createTimescaleClient() {
20
- const config = getConfig();
21
- return new TimescaleClient({
22
- host: config.TIMESCALE_HOST,
23
- port: config.TIMESCALE_PORT,
24
- user: config.TIMESCALE_USER,
25
- password: config.TIMESCALE_PASSWORD,
26
- database: config.TIMESCALE_DB,
27
- });
28
- }
29
- // ─── Data Fetchers ───
30
- export async function fetchTokenInfo(neo4j, symbol) {
31
- // Fetch token node
32
- const tokenResult = await neo4j.runCypher('MATCH (t:Token {symbol: $symbol}) RETURN t.name AS name, t.symbol AS symbol LIMIT 1', { symbol });
33
- const tokenRecord = tokenResult.records[0];
34
- if (!tokenRecord) {
35
- return { name: null, symbol, chains: [], narratives: [] };
36
- }
37
- // Fetch chains
38
- const chainResult = await neo4j.runCypher('MATCH (t:Token {symbol: $symbol})-[:DEPLOYED_ON]->(c:Chain) RETURN c.name AS name', { symbol });
39
- const chains = chainResult.records.map((r) => r.name);
40
- // Fetch narratives
41
- const narrativeResult = await neo4j.runCypher('MATCH (t:Token {symbol: $symbol})-[:BELONGS_TO_NARRATIVE]->(n:Narrative) RETURN n.name AS name, n.status AS status', { symbol });
42
- const narratives = narrativeResult.records.map((r) => ({
43
- name: r.name,
44
- status: r.status,
45
- }));
46
- return {
47
- name: tokenRecord.name,
48
- symbol: tokenRecord.symbol ?? symbol,
49
- chains,
50
- narratives,
51
- };
52
- }
53
- export async function fetchPriceInfo(timescale, symbol) {
54
- // Latest price
55
- const latestResult = await timescale.runQuery('SELECT price_usd, time FROM price_ticks WHERE symbol = $1 ORDER BY time DESC LIMIT 1', [symbol]);
56
- if (latestResult.rows.length === 0) {
57
- return { price: null, change24h: null, lastUpdated: null };
58
- }
59
- const latestPrice = latestResult.rows[0].price_usd;
60
- const lastUpdated = latestResult.rows[0].time;
61
- // 24h ago price for change calculation
62
- const oldResult = await timescale.runQuery(`SELECT price_usd FROM price_ticks
63
- WHERE symbol = $1 AND time <= NOW() - INTERVAL '24 hours'
64
- ORDER BY time DESC LIMIT 1`, [symbol]);
65
- let change24h = null;
66
- if (oldResult.rows.length > 0) {
67
- const oldPrice = oldResult.rows[0].price_usd;
68
- if (oldPrice > 0) {
69
- change24h = ((latestPrice - oldPrice) / oldPrice) * 100;
70
- }
71
- }
72
- return { price: latestPrice, change24h, lastUpdated };
73
- }
74
- export async function fetchFundingInfo(timescale, symbol) {
75
- const result = await timescale.runQuery('SELECT funding_rate, time FROM funding_rates WHERE symbol = $1 ORDER BY time DESC LIMIT 1', [symbol + 'USDT']);
76
- if (result.rows.length === 0) {
77
- return { fundingRate: null, lastUpdated: null };
78
- }
79
- return {
80
- fundingRate: result.rows[0].funding_rate,
81
- lastUpdated: result.rows[0].time,
82
- };
83
- }
84
- export async function fetchWhaleActivity(neo4j, symbol) {
85
- const result = await neo4j.runCypher(`MATCH (w:Wallet)-[h:HOLDS]->(t:Token {symbol: $symbol})
86
- WHERE w.entityType = 'WHALE'
87
- RETURN count(w) AS count`, { symbol });
88
- const record = result.records[0];
89
- // Neo4j integers may come as objects with toNumber()
90
- const rawCount = record?.count ?? 0;
91
- const count = typeof rawCount === 'object' && rawCount !== null && 'toNumber' in rawCount
92
- ? rawCount.toNumber()
93
- : Number(rawCount);
94
- return { count };
95
- }
96
8
  // ─── Formatter ───
97
9
  export function formatQueryOutput(result) {
98
10
  const lines = [];
@@ -157,31 +69,30 @@ export function formatQueryOutput(result) {
157
69
  lines.push('');
158
70
  return lines.join('\n');
159
71
  }
160
- // ─── Main Query Logic ───
161
- export async function executeQuery(symbol) {
162
- const neo4j = createNeo4jClient();
163
- const timescale = createTimescaleClient();
164
- try {
165
- await Promise.all([neo4j.connect(), timescale.connect()]);
166
- const upperSymbol = symbol.toUpperCase();
167
- const [token, price, funding, whaleActivity] = await Promise.all([
168
- fetchTokenInfo(neo4j, upperSymbol),
169
- fetchPriceInfo(timescale, upperSymbol),
170
- fetchFundingInfo(timescale, upperSymbol),
171
- fetchWhaleActivity(neo4j, upperSymbol),
172
- ]);
173
- return { token, price, funding, whaleActivity };
174
- }
175
- finally {
176
- await Promise.all([
177
- neo4j.disconnect().catch((err) => {
178
- logger.error({ error: String(err) }, 'Failed to disconnect Neo4j');
179
- }),
180
- timescale.disconnect().catch((err) => {
181
- logger.error({ error: String(err) }, 'Failed to disconnect TimescaleDB');
182
- }),
183
- ]);
184
- }
72
+ // ─── API Response QueryResult Mapper ───
73
+ function contextToQueryResult(pkg) {
74
+ return {
75
+ token: {
76
+ name: pkg.token.name ?? null,
77
+ symbol: pkg.token.symbol,
78
+ chains: Array.isArray(pkg.token.chains) ? pkg.token.chains : [],
79
+ narratives: Array.isArray(pkg.social?.narrativeMembership)
80
+ ? pkg.social.narrativeMembership.map((n) => ({ name: n.narrative, status: n.status }))
81
+ : [],
82
+ },
83
+ price: {
84
+ price: pkg.market?.price ?? null,
85
+ change24h: pkg.market?.priceChange24h ?? null,
86
+ lastUpdated: pkg._meta?.assembledAt ? new Date(pkg._meta.assembledAt) : null,
87
+ },
88
+ funding: {
89
+ fundingRate: pkg.market?.fundingRate ?? null,
90
+ lastUpdated: null,
91
+ },
92
+ whaleActivity: {
93
+ count: pkg.onchain?.whaleTransactions24h ?? 0,
94
+ },
95
+ };
185
96
  }
186
97
  // ─── Command Registration ───
187
98
  export function registerQueryCommand(program) {
@@ -191,48 +102,15 @@ export function registerQueryCommand(program) {
191
102
  .addOption(new Option('--format <format>', 'Output format').choices(['text', 'json']).default('text'))
192
103
  .action(async (symbol, options) => {
193
104
  try {
194
- // ─── Remote API mode ───
195
- if (await isRemoteMode()) {
196
- try {
197
- const pkg = await apiRequest(`/api/v1/tokens/${encodeURIComponent(symbol.toUpperCase())}/context`);
198
- // Extract query-relevant fields from the full context package
199
- const result = {
200
- token: {
201
- name: pkg.token.name ?? null,
202
- symbol: pkg.token.symbol,
203
- chains: Array.isArray(pkg.token.chains) ? pkg.token.chains : [],
204
- narratives: Array.isArray(pkg.social?.narrativeMembership)
205
- ? pkg.social.narrativeMembership.map((n) => ({ name: n.narrative, status: n.status }))
206
- : [],
207
- },
208
- price: {
209
- price: pkg.market?.price ?? null,
210
- change24h: pkg.market?.priceChange24h ?? null,
211
- lastUpdated: pkg._meta?.assembledAt ? new Date(pkg._meta.assembledAt) : null,
212
- },
213
- funding: {
214
- fundingRate: pkg.market?.fundingRate ?? null,
215
- lastUpdated: null,
216
- },
217
- whaleActivity: {
218
- count: pkg.onchain?.whaleTransactions24h ?? 0,
219
- },
220
- };
221
- if (options.format === 'json') {
222
- console.log(JSON.stringify(result, null, 2));
223
- }
224
- else {
225
- console.log(formatQueryOutput(result));
226
- }
227
- }
228
- catch (error) {
229
- const message = error instanceof ApiError ? error.message : (error instanceof Error ? error.message : String(error));
230
- console.error(chalk.red(`Error: ${message}`));
231
- process.exitCode = 1;
232
- }
105
+ const pkg = await apiRequest(`/api/v1/tokens/${encodeURIComponent(symbol.toUpperCase())}/context`);
106
+ const result = contextToQueryResult(pkg);
107
+ // Check if the token was actually found
108
+ if (result.token.name === null && result.token.chains.length === 0 && result.price.price === null) {
109
+ console.error(chalk.red(`Error: Token not found: ${symbol.toUpperCase()}`));
110
+ console.error(chalk.dim(' Check the symbol and try again. Use a symbol like SOL, JUP, or BONK.'));
111
+ process.exitCode = 1;
233
112
  return;
234
113
  }
235
- const result = await executeQuery(symbol);
236
114
  if (options.format === 'json') {
237
115
  console.log(JSON.stringify(result, null, 2));
238
116
  }
@@ -241,13 +119,13 @@ export function registerQueryCommand(program) {
241
119
  }
242
120
  }
243
121
  catch (error) {
244
- const message = error instanceof Error ? error.message : String(error);
122
+ const message = error instanceof ApiError ? error.message : (error instanceof Error ? error.message : String(error));
245
123
  logger.error({ error: message }, 'Query failed');
246
124
  console.error(chalk.red(`Error: ${message}`));
247
125
  const guidance = formatConnectionError(message);
248
126
  if (guidance)
249
127
  console.error(guidance);
250
- process.exitCode = 1;
128
+ process.exitCode = error instanceof ApiError ? 2 : 1;
251
129
  }
252
130
  });
253
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"replay-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/replay-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAqB5C,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAsCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgE/D;AAmED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgG5D"}
1
+ {"version":3,"file":"replay-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/replay-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAsB5C,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAsCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgE/D;AA+DD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgG5D"}
@@ -2,6 +2,7 @@ import { Option } from 'commander';
2
2
  import chalk from 'chalk';
3
3
  import { createLogger } from '@trading-boy/core';
4
4
  import { isRemoteMode, apiRequest, ApiError } from '../api-client.js';
5
+ import { padRight } from '../utils.js';
5
6
  // ─── Logger ───
6
7
  const logger = createLogger('cli-replay');
7
8
  // ─── Helpers ───
@@ -80,9 +81,6 @@ function formatWinRate(rate) {
80
81
  return chalk.yellow(str);
81
82
  return chalk.red(str);
82
83
  }
83
- function padRight(str, len) {
84
- return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
85
- }
86
84
  // ─── Polling ───
87
85
  const POLL_INTERVAL_MS = 2000;
88
86
  const POLL_TIMEOUT_MS = 60000;
@@ -123,7 +121,7 @@ function handleApiError(error, context) {
123
121
  logger.error({ error: message }, context);
124
122
  console.error(chalk.red(`Error: ${message}`));
125
123
  }
126
- process.exitCode = 1;
124
+ process.exitCode = error instanceof ApiError ? 2 : 1;
127
125
  }
128
126
  // ─── Command Registration ───
129
127
  export function registerReplayCommand(program) {
@@ -160,11 +158,11 @@ export function registerReplayCommand(program) {
160
158
  process.exitCode = 1;
161
159
  return;
162
160
  }
163
- // Use dynamic import for ora (ESM spinner)
164
- const { default: ora } = await import('ora');
161
+ // Use createSpinner for TTY-aware spinners (silent when piped)
162
+ const { createSpinner } = await import('../utils.js');
165
163
  // ─── Submit replay job ───
166
164
  let jobId;
167
- const submitSpinner = ora('Submitting replay job…').start();
165
+ const submitSpinner = (await createSpinner('Submitting replay job…')).start();
168
166
  try {
169
167
  const submitted = await apiRequest('/api/v1/replay', {
170
168
  method: 'POST',
@@ -184,7 +182,7 @@ export function registerReplayCommand(program) {
184
182
  return;
185
183
  }
186
184
  // ─── Poll until complete ───
187
- const pollSpinner = ora('Running replay…').start();
185
+ const pollSpinner = (await createSpinner('Running replay…')).start();
188
186
  let finalStatus;
189
187
  try {
190
188
  finalStatus = await pollReplayJob(jobId);
@@ -1 +1 @@
1
- {"version":3,"file":"replay-cmd.js","sourceRoot":"","sources":["../../src/commands/replay-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replay-cmd.js","sourceRoot":"","sources":["../../src/commands/replay-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,iBAAiB;AAEjB,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAyE1C,kBAAkB;AAElB,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,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,qBAAqB;AAErB,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,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,MAAM,CAAC,WAAW,eAAe,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACzG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnH,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7I,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QAEzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACvH,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CACR,IAAI;YACJ,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrB,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,WAAW,CACZ,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CACR,IAAI;gBACJ,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7B,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACtC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,kBAAkB;AAElB,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,KAAK,UAAU,aAAa,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;IAE9C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAC9C,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,4BAA4B,eAAe,GAAG,IAAI,YAAY,CAAC,CAAC;AACrG,CAAC;AAED,wBAAwB;AAExB,SAAS,cAAc,CAAC,KAAc,EAAE,OAAe;IACrD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC,CAAC;gBAC3G,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC,CAAC;gBACnH,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxE,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,+BAA+B;AAE/B,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yDAAyD,CAAC;SACtE,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAChD,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC;SAClD,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC;SACzE,cAAc,CAAC,aAAa,EAAE,sCAAsC,CAAC;SACrE,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,OAAsB,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,+DAA+D;QAC/D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAEtD,4BAA4B;QAE5B,IAAI,KAAa,CAAC;QAClB,MAAM,aAAa,GAAG,CAAC,MAAM,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAA0B,gBAAgB,EAAE;gBAC5E,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,OAAO,CAAC,QAAQ;oBAC5B,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;oBACxC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE;oBAC5B,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE;iBACzB;aACF,CAAC,CAAC;YAEH,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YACxB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAClD,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,8BAA8B;QAE9B,MAAM,WAAW,GAAG,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAErE,IAAI,WAA4B,CAAC;QACjC,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC7D,cAAc,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,0BAA0B;QAE1B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,WAAW,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoWpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8K5D"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4apC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0J5D"}
@@ -2,30 +2,14 @@
2
2
  //
3
3
  // trading-boy journal review daily|weekly|monthly
4
4
  // Structured review cadence for trade journaling.
5
- import { getConfig, createLogger, } from '@trading-boy/core';
6
- import { Neo4jClient, getDecisionsWithOutcomes, getDecisionChain, } from '@trading-boy/graph-db';
7
- import { generateDailyReview, generateWeeklyReview, generateMonthlyReview, computeCalibration, brierLabel, computeProcessOutcomeMatrix, } from '@trading-boy/context-engine';
8
- import { formatConnectionError } from '../utils.js';
5
+ import { createLogger } from '@trading-boy/core';
6
+ import { formatConnectionError, padRight, truncate } from '../utils.js';
7
+ import { apiRequest, ApiError } from '../api-client.js';
9
8
  // ─── Logger ───
10
9
  const logger = createLogger('cli-review');
11
10
  // ─── Default Trader ───
12
11
  const DEFAULT_TRADER_ID = 'default';
13
- // ─── Neo4j Client Factory ───
14
- function createNeo4jClient() {
15
- const config = getConfig();
16
- return new Neo4jClient({
17
- uri: config.NEO4J_URI,
18
- username: config.NEO4J_USER,
19
- password: config.NEO4J_PASSWORD,
20
- });
21
- }
22
12
  // ─── Helpers ───
23
- function padRight(str, len) {
24
- return str.length >= len ? str.slice(0, len) : str + ' '.repeat(len - str.length);
25
- }
26
- function truncate(str, maxLen) {
27
- return str.length > maxLen ? str.slice(0, maxLen - 3) + '...' : str;
28
- }
29
13
  function formatUsd(n) {
30
14
  const sign = n >= 0 ? '+' : '';
31
15
  return `${sign}$${Math.abs(n).toFixed(0)}`;
@@ -43,6 +27,15 @@ function formatMs(ms) {
43
27
  return `${(ms / 3_600_000).toFixed(1)}h`;
44
28
  return `${(ms / 86_400_000).toFixed(1)}d`;
45
29
  }
30
+ function brierLabel(score) {
31
+ if (score <= 0.1)
32
+ return 'Excellent';
33
+ if (score <= 0.2)
34
+ return 'Good';
35
+ if (score <= 0.3)
36
+ return 'Fair';
37
+ return 'Poor';
38
+ }
46
39
  // ─── Formatters ───
47
40
  function printDailyReview(review) {
48
41
  console.log('');
@@ -127,6 +120,8 @@ function printWeeklyReview(review) {
127
120
  }
128
121
  console.log('');
129
122
  }
123
+ // Formatter for monthly review — will be used once the API endpoint ships
124
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
125
  function printMonthlyReview(review) {
131
126
  console.log('');
132
127
  console.log(`═══ Monthly Review — ${review.monthStart} to ${review.monthEnd} ═══`);
@@ -282,12 +277,9 @@ export function registerReviewCommand(journal) {
282
277
  .option('--process-first', 'Hide PnL until process is graded')
283
278
  .option('--format <format>', 'Output format (text or json)', 'text')
284
279
  .action(async (options) => {
285
- const client = createNeo4jClient();
286
280
  try {
287
- await client.connect();
288
- const date = options.date ? new Date(options.date) : new Date();
289
- const allDecisions = await getDecisionChain(client, options.trader, { limit: 500 });
290
- const review = generateDailyReview(allDecisions, date);
281
+ const date = options.date ?? new Date().toISOString().slice(0, 10);
282
+ const review = await apiRequest(`/api/v1/reviews/daily?traderId=${encodeURIComponent(options.trader)}&date=${encodeURIComponent(date)}`);
291
283
  if (options.format === 'json') {
292
284
  console.log(JSON.stringify(review, null, 2));
293
285
  }
@@ -302,13 +294,12 @@ export function registerReviewCommand(journal) {
302
294
  const message = error instanceof Error ? error.message : String(error);
303
295
  logger.error({ error: message }, 'Failed to generate daily review');
304
296
  console.error(`Error: ${message}`);
305
- const guidance = formatConnectionError(message);
306
- if (guidance)
307
- console.error(guidance);
308
- process.exitCode = 1;
309
- }
310
- finally {
311
- await client.disconnect();
297
+ if (!(error instanceof ApiError)) {
298
+ const guidance = formatConnectionError(message);
299
+ if (guidance)
300
+ console.error(guidance);
301
+ }
302
+ process.exitCode = error instanceof ApiError ? 2 : 1;
312
303
  }
313
304
  });
314
305
  // ─── journal review weekly ───
@@ -319,12 +310,9 @@ export function registerReviewCommand(journal) {
319
310
  .option('--trader <traderId>', 'Trader ID', DEFAULT_TRADER_ID)
320
311
  .option('--format <format>', 'Output format (text or json)', 'text')
321
312
  .action(async (options) => {
322
- const client = createNeo4jClient();
323
313
  try {
324
- await client.connect();
325
- const date = options.date ? new Date(options.date) : new Date();
326
- const allDecisions = await getDecisionsWithOutcomes(client, options.trader);
327
- const review = generateWeeklyReview(allDecisions, date);
314
+ const date = options.date ?? new Date().toISOString().slice(0, 10);
315
+ const review = await apiRequest(`/api/v1/reviews/weekly?traderId=${encodeURIComponent(options.trader)}&date=${encodeURIComponent(date)}`);
328
316
  if (options.format === 'json') {
329
317
  console.log(JSON.stringify(review, null, 2));
330
318
  }
@@ -336,13 +324,12 @@ export function registerReviewCommand(journal) {
336
324
  const message = error instanceof Error ? error.message : String(error);
337
325
  logger.error({ error: message }, 'Failed to generate weekly review');
338
326
  console.error(`Error: ${message}`);
339
- const guidance = formatConnectionError(message);
340
- if (guidance)
341
- console.error(guidance);
342
- process.exitCode = 1;
343
- }
344
- finally {
345
- await client.disconnect();
327
+ if (!(error instanceof ApiError)) {
328
+ const guidance = formatConnectionError(message);
329
+ if (guidance)
330
+ console.error(guidance);
331
+ }
332
+ process.exitCode = error instanceof ApiError ? 2 : 1;
346
333
  }
347
334
  });
348
335
  // ─── journal review monthly ───
@@ -353,30 +340,21 @@ export function registerReviewCommand(journal) {
353
340
  .option('--trader <traderId>', 'Trader ID', DEFAULT_TRADER_ID)
354
341
  .option('--format <format>', 'Output format (text or json)', 'text')
355
342
  .action(async (options) => {
356
- const client = createNeo4jClient();
357
343
  try {
358
- await client.connect();
359
- const date = options.date ? new Date(options.date) : new Date();
360
- const allDecisions = await getDecisionsWithOutcomes(client, options.trader);
361
- const review = generateMonthlyReview(allDecisions, date);
344
+ const date = options.date || new Date().toISOString().slice(0, 10);
345
+ const data = await apiRequest(`/api/v1/reviews/monthly?traderId=${encodeURIComponent(options.trader)}&date=${date}`);
362
346
  if (options.format === 'json') {
363
- console.log(JSON.stringify(review, null, 2));
347
+ console.log(JSON.stringify(data, null, 2));
364
348
  }
365
349
  else {
366
- printMonthlyReview(review);
350
+ printMonthlyReview(data);
367
351
  }
368
352
  }
369
353
  catch (error) {
370
354
  const message = error instanceof Error ? error.message : String(error);
371
355
  logger.error({ error: message }, 'Failed to generate monthly review');
372
356
  console.error(`Error: ${message}`);
373
- const guidance = formatConnectionError(message);
374
- if (guidance)
375
- console.error(guidance);
376
- process.exitCode = 1;
377
- }
378
- finally {
379
- await client.disconnect();
357
+ process.exitCode = error instanceof ApiError ? 2 : 1;
380
358
  }
381
359
  });
382
360
  // ─── journal review matrix ───
@@ -386,16 +364,14 @@ export function registerReviewCommand(journal) {
386
364
  .option('--trader <traderId>', 'Trader ID', DEFAULT_TRADER_ID)
387
365
  .option('--format <format>', 'Output format (text or json)', 'text')
388
366
  .action(async (options) => {
389
- const client = createNeo4jClient();
390
367
  try {
391
- await client.connect();
392
- const allDecisions = await getDecisionsWithOutcomes(client, options.trader);
393
- const matrix = computeProcessOutcomeMatrix(allDecisions);
368
+ const data = await apiRequest(`/api/v1/reviews/matrix?traderId=${encodeURIComponent(options.trader)}`);
394
369
  if (options.format === 'json') {
395
- console.log(JSON.stringify(matrix, null, 2));
370
+ console.log(JSON.stringify(data, null, 2));
396
371
  }
397
372
  else {
398
- printProcessOutcomeMatrix(matrix);
373
+ console.log('\n Process-Outcome Matrix:\n');
374
+ console.log(JSON.stringify(data, null, 2));
399
375
  console.log('');
400
376
  }
401
377
  }
@@ -403,13 +379,7 @@ export function registerReviewCommand(journal) {
403
379
  const message = error instanceof Error ? error.message : String(error);
404
380
  logger.error({ error: message }, 'Failed to generate matrix');
405
381
  console.error(`Error: ${message}`);
406
- const guidance = formatConnectionError(message);
407
- if (guidance)
408
- console.error(guidance);
409
- process.exitCode = 1;
410
- }
411
- finally {
412
- await client.disconnect();
382
+ process.exitCode = error instanceof ApiError ? 2 : 1;
413
383
  }
414
384
  });
415
385
  // ─── journal review calibration ───
@@ -419,16 +389,14 @@ export function registerReviewCommand(journal) {
419
389
  .option('--trader <traderId>', 'Trader ID', DEFAULT_TRADER_ID)
420
390
  .option('--format <format>', 'Output format (text or json)', 'text')
421
391
  .action(async (options) => {
422
- const client = createNeo4jClient();
423
392
  try {
424
- await client.connect();
425
- const allDecisions = await getDecisionsWithOutcomes(client, options.trader);
426
- const cal = computeCalibration(allDecisions);
393
+ const data = await apiRequest(`/api/v1/reviews/calibration?traderId=${encodeURIComponent(options.trader)}`);
427
394
  if (options.format === 'json') {
428
- console.log(JSON.stringify(cal, null, 2));
395
+ console.log(JSON.stringify(data, null, 2));
429
396
  }
430
397
  else {
431
- printCalibration(cal);
398
+ console.log('\n Confidence Calibration:\n');
399
+ console.log(JSON.stringify(data, null, 2));
432
400
  console.log('');
433
401
  }
434
402
  }
@@ -436,13 +404,7 @@ export function registerReviewCommand(journal) {
436
404
  const message = error instanceof Error ? error.message : String(error);
437
405
  logger.error({ error: message }, 'Failed to generate calibration');
438
406
  console.error(`Error: ${message}`);
439
- const guidance = formatConnectionError(message);
440
- if (guidance)
441
- console.error(guidance);
442
- process.exitCode = 1;
443
- }
444
- finally {
445
- await client.disconnect();
407
+ process.exitCode = error instanceof ApiError ? 2 : 1;
446
408
  }
447
409
  });
448
410
  }