@timmeck/trading-brain 1.3.2 → 2.0.1

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 (45) hide show
  1. package/README.md +6 -4
  2. package/dist/cli/commands/setup.js +92 -7
  3. package/dist/cli/commands/setup.js.map +1 -1
  4. package/dist/cli/ipc-helper.d.ts +1 -1
  5. package/dist/cli/ipc-helper.js +1 -1
  6. package/dist/cli/ipc-helper.js.map +1 -1
  7. package/dist/dashboard/server.d.ts +6 -12
  8. package/dist/dashboard/server.js +13 -113
  9. package/dist/dashboard/server.js.map +1 -1
  10. package/dist/db/migrations/007_calibration_history.d.ts +2 -0
  11. package/dist/db/migrations/007_calibration_history.js +22 -0
  12. package/dist/db/migrations/007_calibration_history.js.map +1 -0
  13. package/dist/db/migrations/index.js +2 -0
  14. package/dist/db/migrations/index.js.map +1 -1
  15. package/dist/db/repositories/calibration.repository.d.ts +19 -0
  16. package/dist/db/repositories/calibration.repository.js +34 -1
  17. package/dist/db/repositories/calibration.repository.js.map +1 -1
  18. package/dist/embeddings/engine.d.ts +34 -0
  19. package/dist/embeddings/engine.js +147 -0
  20. package/dist/embeddings/engine.js.map +1 -0
  21. package/dist/hooks/post-tool-use.js +1 -1
  22. package/dist/hooks/post-tool-use.js.map +1 -1
  23. package/dist/ipc/router.d.ts +8 -1
  24. package/dist/ipc/router.js +35 -1
  25. package/dist/ipc/router.js.map +1 -1
  26. package/dist/learning/learning-engine.js +3 -1
  27. package/dist/learning/learning-engine.js.map +1 -1
  28. package/dist/learning/pattern-extractor.js +1 -1
  29. package/dist/learning/pattern-extractor.js.map +1 -1
  30. package/dist/mcp/tools.d.ts +1 -1
  31. package/dist/mcp/tools.js +66 -0
  32. package/dist/mcp/tools.js.map +1 -1
  33. package/dist/services/signal.service.d.ts +44 -1
  34. package/dist/services/signal.service.js +76 -3
  35. package/dist/services/signal.service.js.map +1 -1
  36. package/dist/services/strategy.service.d.ts +1 -1
  37. package/dist/services/strategy.service.js +1 -1
  38. package/dist/services/strategy.service.js.map +1 -1
  39. package/dist/synapses/decay.js +1 -1
  40. package/dist/synapses/decay.js.map +1 -1
  41. package/dist/trading-core.d.ts +2 -0
  42. package/dist/trading-core.js +24 -5
  43. package/dist/trading-core.js.map +1 -1
  44. package/dist/utils/__tests__/paths.test.js.map +1 -1
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -203,6 +203,8 @@ These tools are available to Claude Code (and other MCP clients) when Trading Br
203
203
  | `trading_record_outcome` | Record a trade outcome (main entry point for learning loop) |
204
204
  | `trading_signal_weights` | Get Brain-weighted signal strengths for a signal combination |
205
205
  | `trading_signal_confidence` | Wilson Score confidence interval for a signal pattern |
206
+ | `trading_explain_signal` | Full confidence breakdown with Wilson Score details, similar signals (new in v2.0) |
207
+ | `trading_calibration_history` | Calibration parameter changes over time (new in v2.0) |
206
208
  | `trading_dca_multiplier` | Brain-recommended DCA position size multiplier |
207
209
  | `trading_grid_params` | Brain-recommended grid trading parameters |
208
210
  | `trading_explore` | Spreading Activation network exploration from a query node |
@@ -331,10 +333,10 @@ Trading Brain is part of the **[Brain Ecosystem](https://github.com/timmeck/brai
331
333
 
332
334
  | Brain | Purpose | Ports |
333
335
  |-------|---------|-------|
334
- | [Brain](https://github.com/timmeck/brain-ecosystem/tree/main/packages/brain) v2.2.1 | Error memory, code intelligence & persistent context | 7777 / 7778 |
335
- | **Trading Brain** v1.3.2 | Adaptive trading intelligence with memory & sessions | **7779** / 7780 |
336
- | [Marketing Brain](https://github.com/timmeck/brain-ecosystem/tree/main/packages/marketing-brain) v0.5.2 | Content strategy & engagement with memory & sessions | 7781 / 7782 / 7783 |
337
- | [Brain Core](https://github.com/timmeck/brain-ecosystem/tree/main/packages/brain-core) v1.6.1 | Shared infrastructure (IPC, MCP, REST, CLI, math, synapses, memory) | — |
336
+ | [Brain](https://github.com/timmeck/brain-ecosystem/tree/main/packages/brain) v3.0.0 | Error memory, code intelligence & persistent context | 7777 / 7778 |
337
+ | **Trading Brain** v2.0.0 | Adaptive trading intelligence with memory & sessions | **7779** / 7780 |
338
+ | [Marketing Brain](https://github.com/timmeck/brain-ecosystem/tree/main/packages/marketing-brain) v1.1.0 | Content strategy & engagement with memory & sessions | 7781 / 7782 / 7783 |
339
+ | [Brain Core](https://github.com/timmeck/brain-ecosystem/tree/main/packages/brain-core) v2.0.0 | Shared infrastructure (IPC, MCP, REST, CLI, math, synapses, memory) | — |
338
340
  | [Brain Hub](https://timmeck.github.io/brain-hub/) | Ecosystem landing page | — |
339
341
 
340
342
  All packages live in the [brain-ecosystem](https://github.com/timmeck/brain-ecosystem) monorepo with npm workspaces. [Brain Core](https://www.npmjs.com/package/@timmeck/brain-core) provides shared infrastructure (IPC, MCP, REST API, CLI, math, synapse algorithms) used by all brains, eliminating ~2,800 lines of duplicated code.
@@ -2,6 +2,7 @@ import { Command } from 'commander';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import os from 'node:os';
5
+ import { execSync } from 'node:child_process';
5
6
  import { getDataDir } from '../../utils/paths.js';
6
7
  import { c, icons, header, divider } from '../colors.js';
7
8
  function pass(label, detail) {
@@ -17,7 +18,25 @@ function skip(label, detail) {
17
18
  console.log(` ${c.dim(icons.arrow)} ${label}${extra}`);
18
19
  }
19
20
  function step(n, label) {
20
- console.log(`\n ${c.cyan(`[${n}/5]`)} ${c.value(label)}`);
21
+ console.log(`\n ${c.cyan(`[${n}/6]`)} ${c.value(label)}`);
22
+ }
23
+ function resolveHookPath() {
24
+ const platform = process.platform;
25
+ try {
26
+ const prefix = execSync('npm prefix -g', { encoding: 'utf8' }).trim();
27
+ const hookRelative = 'node_modules/@timmeck/trading-brain/dist/hooks/post-tool-use.js';
28
+ if (platform === 'win32') {
29
+ return path.join(prefix, hookRelative);
30
+ }
31
+ return path.join(prefix, 'lib', hookRelative);
32
+ }
33
+ catch {
34
+ return path.resolve(import.meta.dirname, '../../hooks/post-tool-use.js');
35
+ }
36
+ }
37
+ function buildHookCommand(hookPath) {
38
+ const normalized = hookPath.replace(/\\/g, '\\\\');
39
+ return `node ${normalized}`;
21
40
  }
22
41
  function readSettings(settingsPath) {
23
42
  try {
@@ -37,6 +56,7 @@ export function setupCommand() {
37
56
  return new Command('setup')
38
57
  .description('One-command setup: configures MCP and starts the daemon')
39
58
  .option('--no-daemon', 'Skip starting the daemon')
59
+ .option('--no-hooks', 'Skip hook configuration')
40
60
  .option('--dry-run', 'Show what would be done without making changes')
41
61
  .action(async (opts) => {
42
62
  console.log(header('Trading Brain Setup', icons.brain));
@@ -83,8 +103,73 @@ export function setupCommand() {
83
103
  settingsChanged = true;
84
104
  pass('Added MCP server entry', '"trading-brain" -> trading mcp-server');
85
105
  }
86
- // -- Step 3: Save Configuration --
87
- step(3, 'Save Configuration');
106
+ // -- Step 3: PostToolUse Hook --
107
+ const hookPath = resolveHookPath();
108
+ const hookCommand = buildHookCommand(hookPath);
109
+ step(3, 'Auto-Detect Hook');
110
+ if (opts.hooks === false) {
111
+ skip('Skipped hook configuration', '--no-hooks');
112
+ }
113
+ else {
114
+ let resolvedHookPath = hookPath;
115
+ const hookFileExists = fs.existsSync(hookPath);
116
+ if (!hookFileExists) {
117
+ const fallbackPath = path.resolve(import.meta.dirname, '../../hooks/post-tool-use.js');
118
+ if (fs.existsSync(fallbackPath)) {
119
+ resolvedHookPath = fallbackPath;
120
+ pass('Hook file found', fallbackPath);
121
+ }
122
+ else {
123
+ fail('Hook file not found', `Expected at: ${hookPath}`);
124
+ console.log(` ${c.dim('Make sure @timmeck/trading-brain is installed globally: npm install -g @timmeck/trading-brain')}`);
125
+ allGood = false;
126
+ }
127
+ }
128
+ else {
129
+ pass('Hook file found', hookPath);
130
+ }
131
+ // Dry-run: verify hook is executable
132
+ if (fs.existsSync(resolvedHookPath)) {
133
+ try {
134
+ execSync(`node "${resolvedHookPath}" --dry-run`, { timeout: 5000, stdio: 'pipe' });
135
+ pass('Hook dry-run passed', 'hook is executable');
136
+ }
137
+ catch {
138
+ fail('Hook dry-run failed', `"node ${resolvedHookPath} --dry-run" returned an error`);
139
+ console.log(` ${c.dim('The hook file exists but could not be executed. Check Node.js compatibility.')}`);
140
+ allGood = false;
141
+ }
142
+ }
143
+ if (!settings.hooks) {
144
+ settings.hooks = {};
145
+ }
146
+ const hooks = settings.hooks;
147
+ if (!hooks.PostToolUse) {
148
+ hooks.PostToolUse = [];
149
+ }
150
+ const postToolUse = hooks.PostToolUse;
151
+ const hasTradingHook = postToolUse.some((h) => {
152
+ if (h.command?.includes('trading') || h.command?.includes('post-tool-use'))
153
+ return true;
154
+ return h.hooks?.some((inner) => inner.command?.includes('trading') || inner.command?.includes('post-tool-use'));
155
+ });
156
+ if (hasTradingHook) {
157
+ pass('Auto-detect hook already configured');
158
+ }
159
+ else if (opts.dryRun) {
160
+ skip('Would add PostToolUse hook', hookCommand);
161
+ }
162
+ else {
163
+ postToolUse.push({
164
+ matcher: { tool_name: 'Bash' },
165
+ hooks: [{ command: hookCommand }],
166
+ });
167
+ settingsChanged = true;
168
+ pass('Added PostToolUse hook', 'auto-detects trade outcomes from Bash commands');
169
+ }
170
+ }
171
+ // -- Step 4: Save Configuration --
172
+ step(4, 'Save Configuration');
88
173
  if (settingsChanged && !opts.dryRun) {
89
174
  try {
90
175
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf8');
@@ -101,8 +186,8 @@ export function setupCommand() {
101
186
  else {
102
187
  pass('No changes needed', 'settings.json already up to date');
103
188
  }
104
- // -- Step 4: Start Daemon --
105
- step(4, 'Start Daemon');
189
+ // -- Step 5: Start Daemon --
190
+ step(5, 'Start Daemon');
106
191
  if (opts.daemon === false) {
107
192
  skip('Skipped daemon start', '--no-daemon');
108
193
  }
@@ -147,8 +232,8 @@ export function setupCommand() {
147
232
  }
148
233
  }
149
234
  }
150
- // -- Step 5: Health Check --
151
- step(5, 'Health Check');
235
+ // -- Step 6: Health Check --
236
+ step(6, 'Health Check');
152
237
  if (opts.dryRun) {
153
238
  skip('Would run health checks');
154
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { IpcClient } from '../ipc/client.js';
1
+ import { IpcClient } from '@timmeck/brain-core';
2
2
  export declare function withIpc<T>(fn: (client: IpcClient) => Promise<T>): Promise<T>;
@@ -1,4 +1,4 @@
1
- import { IpcClient } from '../ipc/client.js';
1
+ import { IpcClient } from '@timmeck/brain-core';
2
2
  import { getPipeName } from '../utils/paths.js';
3
3
  import { c, icons } from './colors.js';
4
4
  export async function withIpc(fn) {
@@ -1 +1 @@
1
- {"version":3,"file":"ipc-helper.js","sourceRoot":"","sources":["../../src/cli/ipc-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,EAAqC;IACpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,sCAAsC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChI,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACzI,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ipc-helper.js","sourceRoot":"","sources":["../../src/cli/ipc-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,EAAqC;IACpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,sCAAsC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChI,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACzI,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -1,15 +1,9 @@
1
- export interface DashboardServerOptions {
1
+ import { DashboardServer } from '@timmeck/brain-core';
2
+ export { DashboardServer };
3
+ export type { DashboardServerOptions } from '@timmeck/brain-core';
4
+ export declare const TRADING_EVENT_NAMES: readonly ["trade:recorded", "synapse:updated", "rule:learned", "chain:detected", "insight:created", "calibration:updated"];
5
+ export declare function createTradingDashboardServer(options: {
2
6
  port: number;
3
7
  getDashboardHtml: () => string;
4
8
  getStats: () => unknown;
5
- }
6
- export declare class DashboardServer {
7
- private options;
8
- private server;
9
- private clients;
10
- private logger;
11
- constructor(options: DashboardServerOptions);
12
- start(): void;
13
- stop(): void;
14
- private broadcast;
15
- }
9
+ }): DashboardServer;
@@ -1,116 +1,16 @@
1
- import http from 'node:http';
1
+ import { DashboardServer } from '@timmeck/brain-core';
2
2
  import { getEventBus } from '../utils/events.js';
3
- import { getLogger } from '../utils/logger.js';
4
- export class DashboardServer {
5
- options;
6
- server = null;
7
- clients = new Set();
8
- logger = getLogger();
9
- constructor(options) {
10
- this.options = options;
11
- }
12
- start() {
13
- const { port, getDashboardHtml, getStats } = this.options;
14
- const bus = getEventBus();
15
- this.server = http.createServer((req, res) => {
16
- const url = new URL(req.url ?? '/', `http://localhost:${port}`);
17
- res.setHeader('Access-Control-Allow-Origin', '*');
18
- res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
19
- if (req.method === 'OPTIONS') {
20
- res.writeHead(204);
21
- res.end();
22
- return;
23
- }
24
- if (url.pathname === '/events') {
25
- res.writeHead(200, {
26
- 'Content-Type': 'text/event-stream',
27
- 'Cache-Control': 'no-cache',
28
- 'Connection': 'keep-alive',
29
- });
30
- res.write('data: {"type":"connected"}\n\n');
31
- this.clients.add(res);
32
- req.on('close', () => this.clients.delete(res));
33
- return;
34
- }
35
- if (url.pathname === '/api/stats') {
36
- const stats = getStats();
37
- res.writeHead(200, { 'Content-Type': 'application/json' });
38
- res.end(JSON.stringify(stats));
39
- return;
40
- }
41
- if (url.pathname === '/' || url.pathname === '/dashboard') {
42
- const html = getDashboardHtml();
43
- const sseScript = `
44
- <script>
45
- (function(){
46
- const evtSource = new EventSource('/events');
47
- evtSource.onmessage = function(e) {
48
- try {
49
- const data = JSON.parse(e.data);
50
- if (data.type === 'stats_update') {
51
- document.querySelectorAll('.stat-number').forEach(el => {
52
- const key = el.parentElement?.querySelector('.stat-label')?.textContent?.toLowerCase();
53
- if (key && data.stats[key] !== undefined) {
54
- el.textContent = Number(data.stats[key]).toLocaleString();
55
- }
56
- });
57
- }
58
- if (data.type === 'event') {
59
- const dot = document.querySelector('.activity-dot');
60
- if (dot) { dot.style.background = '#ff5577'; setTimeout(() => dot.style.background = '', 500); }
61
- }
62
- } catch {}
63
- };
64
- evtSource.onerror = function() { setTimeout(() => location.reload(), 5000); };
65
- })();
66
- </script>`;
67
- const liveHtml = html.replace('</body>', sseScript + '</body>');
68
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
69
- res.end(liveHtml);
70
- return;
71
- }
72
- res.writeHead(404, { 'Content-Type': 'text/plain' });
73
- res.end('Not Found');
74
- });
75
- const eventNames = [
76
- 'trade:recorded', 'synapse:updated',
77
- 'rule:learned', 'chain:detected',
78
- 'insight:created', 'calibration:updated',
79
- ];
80
- for (const eventName of eventNames) {
81
- bus.on(eventName, (data) => {
82
- this.broadcast({ type: 'event', event: eventName, data });
83
- });
84
- }
85
- setInterval(() => {
86
- if (this.clients.size > 0) {
87
- const stats = getStats();
88
- this.broadcast({ type: 'stats_update', stats });
89
- }
90
- }, 30_000);
91
- this.server.listen(port, () => {
92
- this.logger.info(`Dashboard server started on http://localhost:${port}`);
93
- });
94
- }
95
- stop() {
96
- for (const client of this.clients) {
97
- client.end();
98
- }
99
- this.clients.clear();
100
- this.server?.close();
101
- this.server = null;
102
- this.logger.info('Dashboard server stopped');
103
- }
104
- broadcast(data) {
105
- const msg = `data: ${JSON.stringify(data)}\n\n`;
106
- for (const client of this.clients) {
107
- try {
108
- client.write(msg);
109
- }
110
- catch {
111
- this.clients.delete(client);
112
- }
113
- }
114
- }
3
+ export { DashboardServer };
4
+ export const TRADING_EVENT_NAMES = [
5
+ 'trade:recorded', 'synapse:updated',
6
+ 'rule:learned', 'chain:detected',
7
+ 'insight:created', 'calibration:updated',
8
+ ];
9
+ export function createTradingDashboardServer(options) {
10
+ return new DashboardServer({
11
+ ...options,
12
+ eventNames: TRADING_EVENT_NAMES,
13
+ getEventBus: () => getEventBus(),
14
+ });
115
15
  }
116
16
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,qBAAqB;CAChC,CAAC;AAEX,MAAM,UAAU,4BAA4B,CAAC,OAI5C;IACC,OAAO,IAAI,eAAe,CAAC;QACzB,GAAG,OAAO;QACV,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,EAAmE;KAClG,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type Database from 'better-sqlite3';
2
+ export declare function up(db: Database.Database): void;
@@ -0,0 +1,22 @@
1
+ export function up(db) {
2
+ db.exec(`
3
+ CREATE TABLE IF NOT EXISTS calibration_history (
4
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
5
+ trade_count INTEGER NOT NULL,
6
+ synapse_count INTEGER NOT NULL,
7
+ learning_rate REAL NOT NULL,
8
+ weaken_penalty REAL NOT NULL,
9
+ decay_half_life_days INTEGER NOT NULL,
10
+ pattern_extraction_interval INTEGER NOT NULL,
11
+ pattern_min_samples INTEGER NOT NULL,
12
+ pattern_wilson_threshold REAL NOT NULL,
13
+ wilson_z REAL NOT NULL,
14
+ spreading_activation_decay REAL NOT NULL,
15
+ spreading_activation_threshold REAL NOT NULL,
16
+ min_activations_for_weight INTEGER NOT NULL,
17
+ min_outcomes_for_weights INTEGER NOT NULL,
18
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
19
+ );
20
+ `);
21
+ }
22
+ //# sourceMappingURL=007_calibration_history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"007_calibration_history.js","sourceRoot":"","sources":["../../../src/db/migrations/007_calibration_history.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,EAAE,CAAC,EAAqB;IACtC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBP,CAAC,CAAC;AACL,CAAC"}
@@ -5,6 +5,7 @@ import { up as learningSchema } from './003_learning.js';
5
5
  import { up as researchSchema } from './004_research.js';
6
6
  import { up as memorySchema } from './005_memory_schema.js';
7
7
  import { up as memoryFts } from './006_memory_fts.js';
8
+ import { up as calibrationHistory } from './007_calibration_history.js';
8
9
  const migrations = [
9
10
  { version: 1, name: '001_core', up: coreSchema },
10
11
  { version: 2, name: '002_synapses', up: synapsesSchema },
@@ -12,6 +13,7 @@ const migrations = [
12
13
  { version: 4, name: '004_research', up: researchSchema },
13
14
  { version: 5, name: '005_memory_schema', up: memorySchema },
14
15
  { version: 6, name: '006_memory_fts', up: memoryFts },
16
+ { version: 7, name: '007_calibration_history', up: calibrationHistory },
15
17
  ];
16
18
  function ensureMigrationsTable(db) {
17
19
  db.exec(`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,EAAE,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,EAAE,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,EAAE,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,EAAE,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,EAAE,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAQtD,MAAM,UAAU,GAAgB;IAC9B,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE;IAChD,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,YAAY,EAAE;IAC3D,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,SAAS,EAAE;CACtD,CAAC;AAEF,SAAS,qBAAqB,CAAC,EAAqB;IAClD,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAqB;IAC9C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,EAA4C,CAAC;IACzH,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,8BAA8B,cAAc,EAAE,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACjC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC;IACT,MAAM,CAAC,IAAI,CAAC,uCAAuC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,29 @@ export interface CalibrationRecord {
16
16
  last_calibration: string;
17
17
  updated_at: string;
18
18
  }
19
+ export interface CalibrationHistoryRecord {
20
+ id: number;
21
+ trade_count: number;
22
+ synapse_count: number;
23
+ learning_rate: number;
24
+ weaken_penalty: number;
25
+ decay_half_life_days: number;
26
+ pattern_extraction_interval: number;
27
+ pattern_min_samples: number;
28
+ pattern_wilson_threshold: number;
29
+ wilson_z: number;
30
+ spreading_activation_decay: number;
31
+ spreading_activation_threshold: number;
32
+ min_activations_for_weight: number;
33
+ min_outcomes_for_weights: number;
34
+ created_at: string;
35
+ }
19
36
  export declare class CalibrationRepository {
20
37
  private db;
21
38
  private stmts;
22
39
  constructor(db: Database.Database);
23
40
  save(cal: CalibrationConfig): void;
24
41
  get(): CalibrationConfig | null;
42
+ saveSnapshot(cal: CalibrationConfig, tradeCount: number, synapseCount: number): void;
43
+ getHistory(limit?: number): CalibrationHistoryRecord[];
25
44
  }
@@ -26,7 +26,20 @@ export class CalibrationRepository {
26
26
  min_outcomes_for_weights = @min_outcomes_for_weights,
27
27
  last_calibration = datetime('now'), updated_at = datetime('now')
28
28
  `),
29
- get: db.prepare('SELECT * FROM calibration WHERE id = "main"'),
29
+ get: db.prepare("SELECT * FROM calibration WHERE id = 'main'"),
30
+ insertHistory: db.prepare(`
31
+ INSERT INTO calibration_history (trade_count, synapse_count,
32
+ learning_rate, weaken_penalty, decay_half_life_days,
33
+ pattern_extraction_interval, pattern_min_samples, pattern_wilson_threshold,
34
+ wilson_z, spreading_activation_decay, spreading_activation_threshold,
35
+ min_activations_for_weight, min_outcomes_for_weights)
36
+ VALUES (@trade_count, @synapse_count,
37
+ @learning_rate, @weaken_penalty, @decay_half_life_days,
38
+ @pattern_extraction_interval, @pattern_min_samples, @pattern_wilson_threshold,
39
+ @wilson_z, @spreading_activation_decay, @spreading_activation_threshold,
40
+ @min_activations_for_weight, @min_outcomes_for_weights)
41
+ `),
42
+ getHistory: db.prepare('SELECT * FROM calibration_history ORDER BY created_at DESC LIMIT ?'),
30
43
  };
31
44
  }
32
45
  save(cal) {
@@ -62,5 +75,25 @@ export class CalibrationRepository {
62
75
  minOutcomesForWeights: row.min_outcomes_for_weights,
63
76
  };
64
77
  }
78
+ saveSnapshot(cal, tradeCount, synapseCount) {
79
+ this.stmts['insertHistory'].run({
80
+ trade_count: tradeCount,
81
+ synapse_count: synapseCount,
82
+ learning_rate: cal.learningRate,
83
+ weaken_penalty: cal.weakenPenalty,
84
+ decay_half_life_days: cal.decayHalfLifeDays,
85
+ pattern_extraction_interval: cal.patternExtractionInterval,
86
+ pattern_min_samples: cal.patternMinSamples,
87
+ pattern_wilson_threshold: cal.patternWilsonThreshold,
88
+ wilson_z: cal.wilsonZ,
89
+ spreading_activation_decay: cal.spreadingActivationDecay,
90
+ spreading_activation_threshold: cal.spreadingActivationThreshold,
91
+ min_activations_for_weight: cal.minActivationsForWeight,
92
+ min_outcomes_for_weights: cal.minOutcomesForWeights,
93
+ });
94
+ }
95
+ getHistory(limit = 20) {
96
+ return this.stmts['getHistory'].all(limit);
97
+ }
65
98
  }
66
99
  //# sourceMappingURL=calibration.repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calibration.repository.js","sourceRoot":"","sources":["../../../src/db/repositories/calibration.repository.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,qBAAqB;IAGZ;IAFZ,KAAK,CAA4B;IAEzC,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QACvC,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;OAqBlB,CAAC;YACF,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAsB;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC;YACxB,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,cAAc,EAAE,GAAG,CAAC,aAAa;YACjC,oBAAoB,EAAE,GAAG,CAAC,iBAAiB;YAC3C,2BAA2B,EAAE,GAAG,CAAC,yBAAyB;YAC1D,mBAAmB,EAAE,GAAG,CAAC,iBAAiB;YAC1C,wBAAwB,EAAE,GAAG,CAAC,sBAAsB;YACpD,QAAQ,EAAE,GAAG,CAAC,OAAO;YACrB,0BAA0B,EAAE,GAAG,CAAC,wBAAwB;YACxD,8BAA8B,EAAE,GAAG,CAAC,4BAA4B;YAChE,0BAA0B,EAAE,GAAG,CAAC,uBAAuB;YACvD,wBAAwB,EAAE,GAAG,CAAC,qBAAqB;SACpD,CAAC,CAAC;IACL,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,GAAG,EAAmC,CAAC;QACtE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB;YAC3C,yBAAyB,EAAE,GAAG,CAAC,2BAA2B;YAC1D,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;YAC1C,sBAAsB,EAAE,GAAG,CAAC,wBAAwB;YACpD,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,wBAAwB,EAAE,GAAG,CAAC,0BAA0B;YACxD,4BAA4B,EAAE,GAAG,CAAC,8BAA8B;YAChE,uBAAuB,EAAE,GAAG,CAAC,0BAA0B;YACvD,qBAAqB,EAAE,GAAG,CAAC,wBAAwB;SACpD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"calibration.repository.js","sourceRoot":"","sources":["../../../src/db/repositories/calibration.repository.ts"],"names":[],"mappings":"AAuCA,MAAM,OAAO,qBAAqB;IAGZ;IAFZ,KAAK,CAA4B;IAEzC,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QACvC,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;OAqBlB,CAAC;YACF,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC;YAC9D,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;OAWzB,CAAC;YACF,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC;SAC7F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAsB;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC;YACxB,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,cAAc,EAAE,GAAG,CAAC,aAAa;YACjC,oBAAoB,EAAE,GAAG,CAAC,iBAAiB;YAC3C,2BAA2B,EAAE,GAAG,CAAC,yBAAyB;YAC1D,mBAAmB,EAAE,GAAG,CAAC,iBAAiB;YAC1C,wBAAwB,EAAE,GAAG,CAAC,sBAAsB;YACpD,QAAQ,EAAE,GAAG,CAAC,OAAO;YACrB,0BAA0B,EAAE,GAAG,CAAC,wBAAwB;YACxD,8BAA8B,EAAE,GAAG,CAAC,4BAA4B;YAChE,0BAA0B,EAAE,GAAG,CAAC,uBAAuB;YACvD,wBAAwB,EAAE,GAAG,CAAC,qBAAqB;SACpD,CAAC,CAAC;IACL,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,GAAG,EAAmC,CAAC;QACtE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB;YAC3C,yBAAyB,EAAE,GAAG,CAAC,2BAA2B;YAC1D,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;YAC1C,sBAAsB,EAAE,GAAG,CAAC,wBAAwB;YACpD,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,wBAAwB,EAAE,GAAG,CAAC,0BAA0B;YACxD,4BAA4B,EAAE,GAAG,CAAC,8BAA8B;YAChE,uBAAuB,EAAE,GAAG,CAAC,0BAA0B;YACvD,qBAAqB,EAAE,GAAG,CAAC,wBAAwB;SACpD,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAsB,EAAE,UAAkB,EAAE,YAAoB;QAC3E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,CAAC,GAAG,CAAC;YAC/B,WAAW,EAAE,UAAU;YACvB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,cAAc,EAAE,GAAG,CAAC,aAAa;YACjC,oBAAoB,EAAE,GAAG,CAAC,iBAAiB;YAC3C,2BAA2B,EAAE,GAAG,CAAC,yBAAyB;YAC1D,mBAAmB,EAAE,GAAG,CAAC,iBAAiB;YAC1C,wBAAwB,EAAE,GAAG,CAAC,sBAAsB;YACpD,QAAQ,EAAE,GAAG,CAAC,OAAO;YACrB,0BAA0B,EAAE,GAAG,CAAC,wBAAwB;YACxD,8BAA8B,EAAE,GAAG,CAAC,4BAA4B;YAChE,0BAA0B,EAAE,GAAG,CAAC,uBAAuB;YACvD,wBAAwB,EAAE,GAAG,CAAC,qBAAqB;SACpD,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,QAAgB,EAAE;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC,GAAG,CAAC,KAAK,CAA+B,CAAC;IAC5E,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ import type Database from 'better-sqlite3';
2
+ import { BaseEmbeddingEngine } from '@timmeck/brain-core';
3
+ export interface TradingEmbeddingConfig {
4
+ enabled: boolean;
5
+ modelName?: string;
6
+ cacheDir?: string;
7
+ sweepIntervalMs: number;
8
+ batchSize: number;
9
+ }
10
+ /**
11
+ * Trading-brain-specific embedding engine.
12
+ * Extends BaseEmbeddingEngine with sweep logic for trading domain tables:
13
+ * trades, signal_combos, rules, memories, sessions, insights.
14
+ */
15
+ export declare class TradingEmbeddingEngine extends BaseEmbeddingEngine {
16
+ private config;
17
+ private db;
18
+ private sweepTimer;
19
+ private sweepIntervalMs;
20
+ private batchSize;
21
+ constructor(config: TradingEmbeddingConfig, db: Database.Database);
22
+ /** Start background embedding sweep */
23
+ start(): void;
24
+ stop(): void;
25
+ /** Compute and store embeddings for trading entries that don't have them yet */
26
+ sweep(): Promise<{
27
+ trades: number;
28
+ signals: number;
29
+ rules: number;
30
+ memories: number;
31
+ sessions: number;
32
+ insights: number;
33
+ }>;
34
+ }