@timmeck/trading-brain 1.3.1 → 2.0.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 +16 -13
- package/dist/cli/commands/setup.js +92 -7
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/ipc-helper.d.ts +1 -1
- package/dist/cli/ipc-helper.js +1 -1
- package/dist/cli/ipc-helper.js.map +1 -1
- package/dist/dashboard/server.d.ts +6 -12
- package/dist/dashboard/server.js +13 -113
- package/dist/dashboard/server.js.map +1 -1
- package/dist/db/migrations/007_calibration_history.d.ts +2 -0
- package/dist/db/migrations/007_calibration_history.js +22 -0
- package/dist/db/migrations/007_calibration_history.js.map +1 -0
- package/dist/db/migrations/index.js +2 -0
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/repositories/calibration.repository.d.ts +19 -0
- package/dist/db/repositories/calibration.repository.js +33 -0
- package/dist/db/repositories/calibration.repository.js.map +1 -1
- package/dist/embeddings/engine.d.ts +34 -0
- package/dist/embeddings/engine.js +147 -0
- package/dist/embeddings/engine.js.map +1 -0
- package/dist/hooks/post-tool-use.js +1 -1
- package/dist/hooks/post-tool-use.js.map +1 -1
- package/dist/ipc/router.d.ts +8 -1
- package/dist/ipc/router.js +34 -0
- package/dist/ipc/router.js.map +1 -1
- package/dist/learning/learning-engine.js +3 -1
- package/dist/learning/learning-engine.js.map +1 -1
- package/dist/learning/pattern-extractor.js +1 -1
- package/dist/learning/pattern-extractor.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.js +66 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/services/signal.service.d.ts +44 -1
- package/dist/services/signal.service.js +76 -3
- package/dist/services/signal.service.js.map +1 -1
- package/dist/synapses/decay.js +1 -1
- package/dist/synapses/decay.js.map +1 -1
- package/dist/trading-core.d.ts +2 -0
- package/dist/trading-core.js +24 -5
- package/dist/trading-core.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@timmeck/trading-brain)
|
|
4
4
|
[](https://www.npmjs.com/package/@timmeck/trading-brain)
|
|
5
5
|
[](LICENSE)
|
|
6
|
-
[](https://github.com/timmeck/brain-ecosystem)
|
|
7
7
|
|
|
8
8
|
**Adaptive Trading Intelligence & Signal Learning System for Claude Code**
|
|
9
9
|
|
|
@@ -68,15 +68,15 @@ Without Trading Brain, every trading decision starts from zero. With Trading Bra
|
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
70
|
npm install -g @timmeck/trading-brain
|
|
71
|
+
trading setup
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
That's it. One command configures MCP and starts the daemon.
|
|
75
|
+
|
|
76
|
+
Or install globally and configure manually:
|
|
74
77
|
|
|
75
78
|
```bash
|
|
76
|
-
|
|
77
|
-
cd trading-brain
|
|
78
|
-
npm install
|
|
79
|
-
npm run build
|
|
79
|
+
npm install -g @timmeck/trading-brain
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
### Setup with Claude Code
|
|
@@ -178,6 +178,7 @@ The daemon runs background tasks: learning cycles, research analysis, synapse de
|
|
|
178
178
|
## CLI Commands
|
|
179
179
|
|
|
180
180
|
```
|
|
181
|
+
trading setup One-command setup: MCP + daemon
|
|
181
182
|
trading start Start the Trading Brain daemon
|
|
182
183
|
trading stop Stop the daemon
|
|
183
184
|
trading status Show stats (trades, rules, chains, insights, synapses)
|
|
@@ -202,6 +203,8 @@ These tools are available to Claude Code (and other MCP clients) when Trading Br
|
|
|
202
203
|
| `trading_record_outcome` | Record a trade outcome (main entry point for learning loop) |
|
|
203
204
|
| `trading_signal_weights` | Get Brain-weighted signal strengths for a signal combination |
|
|
204
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) |
|
|
205
208
|
| `trading_dca_multiplier` | Brain-recommended DCA position size multiplier |
|
|
206
209
|
| `trading_grid_params` | Brain-recommended grid trading parameters |
|
|
207
210
|
| `trading_explore` | Spreading Activation network exploration from a query node |
|
|
@@ -326,17 +329,17 @@ Each signal dimension is classified:
|
|
|
326
329
|
|
|
327
330
|
## Brain Ecosystem
|
|
328
331
|
|
|
329
|
-
Trading Brain is part of the **Brain Ecosystem** — a
|
|
332
|
+
Trading Brain is part of the **[Brain Ecosystem](https://github.com/timmeck/brain-ecosystem)** — a monorepo of MCP servers that give Claude Code persistent, self-learning memory.
|
|
330
333
|
|
|
331
334
|
| Brain | Purpose | Ports |
|
|
332
335
|
|-------|---------|-------|
|
|
333
|
-
| [Brain](https://github.com/timmeck/brain)
|
|
334
|
-
| **Trading Brain**
|
|
335
|
-
| [Marketing Brain](https://github.com/timmeck/marketing-brain) | Content strategy & engagement | 7781 / 7782 |
|
|
336
|
-
| [Brain Core](https://github.com/timmeck/brain-core)
|
|
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) | — |
|
|
337
340
|
| [Brain Hub](https://timmeck.github.io/brain-hub/) | Ecosystem landing page | — |
|
|
338
341
|
|
|
339
|
-
|
|
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.
|
|
340
343
|
|
|
341
344
|
### Cross-Brain Communication
|
|
342
345
|
|
|
@@ -350,7 +353,7 @@ The interactive HTML dashboard (`trading dashboard`) includes an Ecosystem Peers
|
|
|
350
353
|
|
|
351
354
|
If Trading Brain helps you, consider giving it a star — it helps others discover the project and keeps development going.
|
|
352
355
|
|
|
353
|
-
[](https://github.com/timmeck/brain-ecosystem)
|
|
354
357
|
[](https://github.com/sponsors/timmeck)
|
|
355
358
|
|
|
356
359
|
## License
|
|
@@ -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}/
|
|
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:
|
|
87
|
-
|
|
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
|
|
105
|
-
step(
|
|
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
|
|
151
|
-
step(
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,SAAS,IAAI,CAAC,KAAa,EAAE,MAAe;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,IAAI,CAAC,KAAa,EAAE,MAAe;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,IAAI,CAAC,KAAa,EAAE,MAAe;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,IAAI,CAAC,CAAS,EAAE,KAAa;IACpC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,YAAoB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE/J,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAE7B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,+BAA+B;QAC/B,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,CAAC;YACnB,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,SAAS,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAA4C,CAAC;QAEvF,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAqC,CAAC;QAClE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,4BAA4B,EAAE,uCAAuC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,eAAe,CAAC,GAAG;gBAC5B,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,CAAC,YAAY,CAAC;aACrB,CAAC;YACF,eAAe,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,wBAAwB,EAAE,uCAAuC,CAAC,CAAC;QAC1E,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC9B,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,8BAA8B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvF,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,EAAE,kCAAkC,CAAC,CAAC;QAChE,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACxD,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACrB,cAAc,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,wBAAwB,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAAC,MAAM,CAAC;oBACP,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;oBACvE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;wBAC5D,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAC;oBACH,KAAK,CAAC,KAAK,EAAE,CAAC;oBAEd,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAE1D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;wBACpD,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,wBAAwB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjF,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACtD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBAC7B,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,yBAAyB,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ipc-helper.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { IpcClient } from '
|
|
1
|
+
import { IpcClient } from '@timmeck/brain-core';
|
|
2
2
|
export declare function withIpc<T>(fn: (client: IpcClient) => Promise<T>): Promise<T>;
|
package/dist/cli/ipc-helper.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-helper.js","sourceRoot":"","sources":["../../src/cli/ipc-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
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
|
-
|
|
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;
|
package/dist/dashboard/server.js
CHANGED
|
@@ -1,116 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { DashboardServer } from '@timmeck/brain-core';
|
|
2
2
|
import { getEventBus } from '../utils/events.js';
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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":"AAAA,OAAO,
|
|
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,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;
|
|
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
|
}
|
|
@@ -27,6 +27,19 @@ export class CalibrationRepository {
|
|
|
27
27
|
last_calibration = datetime('now'), updated_at = datetime('now')
|
|
28
28
|
`),
|
|
29
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":"
|
|
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
|
+
}
|