@timmeck/trading-brain 1.3.0 → 1.3.2
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 +20 -12
- package/dist/cli/commands/setup.d.ts +2 -0
- package/dist/cli/commands/setup.js +197 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
- package/smithery.yaml +0 -10
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)
|
|
@@ -326,17 +327,17 @@ Each signal dimension is classified:
|
|
|
326
327
|
|
|
327
328
|
## Brain Ecosystem
|
|
328
329
|
|
|
329
|
-
Trading Brain is part of the **Brain Ecosystem** — a
|
|
330
|
+
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
331
|
|
|
331
332
|
| Brain | Purpose | Ports |
|
|
332
333
|
|-------|---------|-------|
|
|
333
|
-
| [Brain](https://github.com/timmeck/brain) v2.2.
|
|
334
|
-
| **Trading Brain** v1.3.
|
|
335
|
-
| [Marketing Brain](https://github.com/timmeck/marketing-brain) | Content strategy & engagement | 7781 / 7782 |
|
|
336
|
-
| [Brain Core](https://github.com/timmeck/brain-core) v1.6.
|
|
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) | — |
|
|
337
338
|
| [Brain Hub](https://timmeck.github.io/brain-hub/) | Ecosystem landing page | — |
|
|
338
339
|
|
|
339
|
-
|
|
340
|
+
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
341
|
|
|
341
342
|
### Cross-Brain Communication
|
|
342
343
|
|
|
@@ -346,6 +347,13 @@ Brains discover and query each other at runtime via IPC named pipes. Use `tradin
|
|
|
346
347
|
|
|
347
348
|
The interactive HTML dashboard (`trading dashboard`) includes an Ecosystem Peers section showing the live status of all connected brains.
|
|
348
349
|
|
|
350
|
+
## Support
|
|
351
|
+
|
|
352
|
+
If Trading Brain helps you, consider giving it a star — it helps others discover the project and keeps development going.
|
|
353
|
+
|
|
354
|
+
[](https://github.com/timmeck/brain-ecosystem)
|
|
355
|
+
[](https://github.com/sponsors/timmeck)
|
|
356
|
+
|
|
349
357
|
## License
|
|
350
358
|
|
|
351
359
|
[MIT](LICENSE)
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import { getDataDir } from '../../utils/paths.js';
|
|
6
|
+
import { c, icons, header, divider } from '../colors.js';
|
|
7
|
+
function pass(label, detail) {
|
|
8
|
+
const extra = detail ? ` ${c.dim(detail)}` : '';
|
|
9
|
+
console.log(` ${c.green(icons.check)} ${label}${extra}`);
|
|
10
|
+
}
|
|
11
|
+
function fail(label, detail) {
|
|
12
|
+
const extra = detail ? ` ${c.dim(detail)}` : '';
|
|
13
|
+
console.log(` ${c.red(icons.cross)} ${label}${extra}`);
|
|
14
|
+
}
|
|
15
|
+
function skip(label, detail) {
|
|
16
|
+
const extra = detail ? ` ${c.dim(detail)}` : '';
|
|
17
|
+
console.log(` ${c.dim(icons.arrow)} ${label}${extra}`);
|
|
18
|
+
}
|
|
19
|
+
function step(n, label) {
|
|
20
|
+
console.log(`\n ${c.cyan(`[${n}/5]`)} ${c.value(label)}`);
|
|
21
|
+
}
|
|
22
|
+
function readSettings(settingsPath) {
|
|
23
|
+
try {
|
|
24
|
+
const raw = fs.readFileSync(settingsPath, 'utf8');
|
|
25
|
+
return JSON.parse(raw);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function ensureDir(dir) {
|
|
32
|
+
if (!fs.existsSync(dir)) {
|
|
33
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function setupCommand() {
|
|
37
|
+
return new Command('setup')
|
|
38
|
+
.description('One-command setup: configures MCP and starts the daemon')
|
|
39
|
+
.option('--no-daemon', 'Skip starting the daemon')
|
|
40
|
+
.option('--dry-run', 'Show what would be done without making changes')
|
|
41
|
+
.action(async (opts) => {
|
|
42
|
+
console.log(header('Trading Brain Setup', icons.brain));
|
|
43
|
+
console.log();
|
|
44
|
+
console.log(` ${c.dim('Platform:')} ${c.value(process.platform)} ${c.dim('Node:')} ${c.value(process.version)} ${c.dim('Arch:')} ${c.value(process.arch)}`);
|
|
45
|
+
const settingsPath = path.join(os.homedir(), '.claude', 'settings.json');
|
|
46
|
+
const dataDir = getDataDir();
|
|
47
|
+
let settingsChanged = false;
|
|
48
|
+
let allGood = true;
|
|
49
|
+
// -- Step 1: Data Directory --
|
|
50
|
+
step(1, 'Data Directory');
|
|
51
|
+
if (fs.existsSync(dataDir)) {
|
|
52
|
+
pass('Data directory exists', dataDir);
|
|
53
|
+
}
|
|
54
|
+
else if (opts.dryRun) {
|
|
55
|
+
skip('Would create data directory', dataDir);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
ensureDir(dataDir);
|
|
59
|
+
pass('Created data directory', dataDir);
|
|
60
|
+
}
|
|
61
|
+
// -- Step 2: Claude Code settings.json --
|
|
62
|
+
step(2, 'MCP Server Configuration');
|
|
63
|
+
const claudeDir = path.join(os.homedir(), '.claude');
|
|
64
|
+
if (!opts.dryRun) {
|
|
65
|
+
ensureDir(claudeDir);
|
|
66
|
+
}
|
|
67
|
+
const settings = readSettings(settingsPath);
|
|
68
|
+
if (!settings.mcpServers) {
|
|
69
|
+
settings.mcpServers = {};
|
|
70
|
+
}
|
|
71
|
+
const mcpServers = settings.mcpServers;
|
|
72
|
+
if (mcpServers['trading-brain']) {
|
|
73
|
+
pass('MCP server already configured');
|
|
74
|
+
}
|
|
75
|
+
else if (opts.dryRun) {
|
|
76
|
+
skip('Would add MCP server entry', '"trading-brain" -> trading mcp-server');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
mcpServers['trading-brain'] = {
|
|
80
|
+
command: 'trading',
|
|
81
|
+
args: ['mcp-server'],
|
|
82
|
+
};
|
|
83
|
+
settingsChanged = true;
|
|
84
|
+
pass('Added MCP server entry', '"trading-brain" -> trading mcp-server');
|
|
85
|
+
}
|
|
86
|
+
// -- Step 3: Save Configuration --
|
|
87
|
+
step(3, 'Save Configuration');
|
|
88
|
+
if (settingsChanged && !opts.dryRun) {
|
|
89
|
+
try {
|
|
90
|
+
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf8');
|
|
91
|
+
pass('Saved settings.json', settingsPath);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
fail('Failed to save settings.json', err instanceof Error ? err.message : String(err));
|
|
95
|
+
allGood = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (opts.dryRun && settingsChanged) {
|
|
99
|
+
skip('Would save settings.json', settingsPath);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
pass('No changes needed', 'settings.json already up to date');
|
|
103
|
+
}
|
|
104
|
+
// -- Step 4: Start Daemon --
|
|
105
|
+
step(4, 'Start Daemon');
|
|
106
|
+
if (opts.daemon === false) {
|
|
107
|
+
skip('Skipped daemon start', '--no-daemon');
|
|
108
|
+
}
|
|
109
|
+
else if (opts.dryRun) {
|
|
110
|
+
skip('Would start Trading Brain daemon');
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const pidPath = path.join(dataDir, 'trading-brain.pid');
|
|
114
|
+
let alreadyRunning = false;
|
|
115
|
+
if (fs.existsSync(pidPath)) {
|
|
116
|
+
const pid = parseInt(fs.readFileSync(pidPath, 'utf8').trim(), 10);
|
|
117
|
+
try {
|
|
118
|
+
process.kill(pid, 0);
|
|
119
|
+
alreadyRunning = true;
|
|
120
|
+
pass('Daemon already running', `PID ${pid}`);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
fs.unlinkSync(pidPath);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!alreadyRunning) {
|
|
127
|
+
try {
|
|
128
|
+
const { spawn } = await import('node:child_process');
|
|
129
|
+
const entryPoint = path.resolve(import.meta.dirname, '../../index.js');
|
|
130
|
+
const child = spawn(process.execPath, [entryPoint, 'daemon'], {
|
|
131
|
+
detached: true,
|
|
132
|
+
stdio: 'ignore',
|
|
133
|
+
});
|
|
134
|
+
child.unref();
|
|
135
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
136
|
+
if (fs.existsSync(pidPath)) {
|
|
137
|
+
const pid = fs.readFileSync(pidPath, 'utf8').trim();
|
|
138
|
+
pass('Daemon started', `PID ${pid}`);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
pass('Daemon starting', 'may take a moment');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
fail('Failed to start daemon', err instanceof Error ? err.message : String(err));
|
|
146
|
+
allGood = false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// -- Step 5: Health Check --
|
|
151
|
+
step(5, 'Health Check');
|
|
152
|
+
if (opts.dryRun) {
|
|
153
|
+
skip('Would run health checks');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const dbPath = path.join(dataDir, 'trading-brain.db');
|
|
157
|
+
if (fs.existsSync(dbPath)) {
|
|
158
|
+
const stat = fs.statSync(dbPath);
|
|
159
|
+
pass('Database', `${(stat.size / 1024 / 1024).toFixed(1)} MB`);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
skip('Database', 'will be created on first daemon start');
|
|
163
|
+
}
|
|
164
|
+
const pidPath = path.join(dataDir, 'trading-brain.pid');
|
|
165
|
+
if (fs.existsSync(pidPath)) {
|
|
166
|
+
const pid = parseInt(fs.readFileSync(pidPath, 'utf8').trim(), 10);
|
|
167
|
+
try {
|
|
168
|
+
process.kill(pid, 0);
|
|
169
|
+
pass('Daemon reachable', `PID ${pid}`);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
fail('Daemon not reachable');
|
|
173
|
+
allGood = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// -- Summary --
|
|
178
|
+
console.log();
|
|
179
|
+
if (opts.dryRun) {
|
|
180
|
+
console.log(` ${icons.brain} ${c.cyan('Dry run complete.')} No changes were made.`);
|
|
181
|
+
}
|
|
182
|
+
else if (allGood) {
|
|
183
|
+
console.log(` ${icons.ok} ${c.success('Trading Brain is ready!')} All systems configured.`);
|
|
184
|
+
console.log();
|
|
185
|
+
console.log(` ${c.dim('Next steps:')}`);
|
|
186
|
+
console.log(` ${c.dim('1.')} Restart Claude Code to load the MCP server`);
|
|
187
|
+
console.log(` ${c.dim('2.')} Run ${c.cyan('trading status')} to check stats`);
|
|
188
|
+
console.log(` ${c.dim('3.')} Run ${c.cyan('trading doctor')} for a full health check`);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.log(` ${icons.warn} ${c.warn('Setup completed with warnings.')} Check the items above.`);
|
|
192
|
+
console.log(` Run ${c.cyan('trading doctor')} for a detailed health check.`);
|
|
193
|
+
}
|
|
194
|
+
console.log(`\n${divider()}`);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { configCommand } from './cli/commands/config.js';
|
|
|
13
13
|
import { doctorCommand } from './cli/commands/doctor.js';
|
|
14
14
|
import { dashboardCommand } from './cli/commands/dashboard.js';
|
|
15
15
|
import { peersCommand } from './cli/commands/peers.js';
|
|
16
|
+
import { setupCommand } from './cli/commands/setup.js';
|
|
16
17
|
import { checkForUpdate, getCurrentVersion } from './cli/update-check.js';
|
|
17
18
|
const program = new Command();
|
|
18
19
|
program
|
|
@@ -32,6 +33,7 @@ program.addCommand(configCommand());
|
|
|
32
33
|
program.addCommand(doctorCommand());
|
|
33
34
|
program.addCommand(dashboardCommand());
|
|
34
35
|
program.addCommand(peersCommand());
|
|
36
|
+
program.addCommand(setupCommand());
|
|
35
37
|
// Hidden command: run MCP server (called by Claude Code)
|
|
36
38
|
program
|
|
37
39
|
.command('mcp-server')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wEAAwE,CAAC;KACrF,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAEhC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AAEnC,yDAAyD;AACzD,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,qEAAqE;AACrE,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,mDAAmD;AACnD,cAAc,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timmeck/trading-brain",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "Adaptive trading intelligence system with Hebbian synapses, spreading activation, Wilson Score confidence, and adaptive calibration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"dev": "tsx src/index.ts",
|
|
13
|
-
"test": "vitest",
|
|
13
|
+
"test": "vitest run",
|
|
14
14
|
"lint": "eslint src/",
|
|
15
15
|
"lint:fix": "eslint src/ --fix",
|
|
16
16
|
"test:coverage": "vitest --coverage"
|
|
@@ -36,11 +36,12 @@
|
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"repository": {
|
|
38
38
|
"type": "git",
|
|
39
|
-
"url": "https://github.com/timmeck/
|
|
39
|
+
"url": "https://github.com/timmeck/brain-ecosystem",
|
|
40
|
+
"directory": "packages/trading-brain"
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
42
43
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
43
|
-
"@timmeck/brain-core": "
|
|
44
|
+
"@timmeck/brain-core": "*",
|
|
44
45
|
"better-sqlite3": "^11.7.0",
|
|
45
46
|
"chalk": "^5.6.2",
|
|
46
47
|
"commander": "^13.0.0",
|