@timmeck/brain-core 2.34.0 → 2.35.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 CHANGED
@@ -112,7 +112,8 @@ Brain Core is the nervous system that powers all three Brain MCP servers ([Brain
112
112
  | **DreamEngine** | Offline memory consolidation — replay, prune, compress, decay |
113
113
  | **DreamConsolidator** | 4 phases: Memory Replay, Synapse Pruning, Compression, Importance Decay |
114
114
  | **ThoughtStream** | Circular buffer capturing every engine's thoughts in real-time |
115
- | **ConsciousnessServer** | HTTP + SSE server with live neural dashboard (force-directed graph) |
115
+ | **ConsciousnessServer** | HTTP + SSE server with live Consciousness Entity visualization (legacy — now part of Mission Control) |
116
+ | **Consciousness Entity** | Animated Canvas 2D visualization: mood-colored pulsing orb, organic tentacles, 8-dimension ring, ambient particles, floating thoughts, inner eye tracking attention. 6 moods (flow/excited/anxious/reflective/bored/determined). Data from EmotionalModel via `/api/emotional` |
116
117
 
117
118
  ### Code Generation & Mining
118
119
 
@@ -122,17 +123,16 @@ Brain Core is the nervous system that powers all three Brain MCP servers ([Brain
122
123
  | **ContextBuilder** | Builds system prompts from principles, anti-patterns, strategies, patterns |
123
124
  | **CodeMiner** | Mines GitHub repos: README, package.json, directory structures |
124
125
  | **PatternExtractor** | Extracts dependency, tech stack, structure, and README patterns |
125
- | **CodegenServer** | HTTP + SSE dashboard for code review with approve/reject workflow |
126
+ | **CodegenServer** | HTTP + SSE dashboard for code review (legacy now part of Mission Control) |
126
127
  | **SignalScanner** | GitHub trending repos, Hacker News, crypto signal tracking |
127
128
 
128
129
  ### Dashboards
129
130
 
130
131
  | Dashboard | Port | Description |
131
132
  |-----------|------|-------------|
132
- | **Consciousness** | 7784/7785/7786 | Live neural graph, thought stream, engine status |
133
- | **CodeGen** | 7787 | Generated code review, mined patterns, self-modification |
134
- | **Hub** | | Cross-brain status overview |
135
- | **Unified** | 7788 | Single UI for all brains with deep links |
133
+ | **Mission Control** | 7788 | Unified 7-tab dashboard: Overview, Consciousness (Entity visualization), Thoughts, CodeGen, Self-Mod, Engines, Intelligence |
134
+
135
+ <p align="center"><img src="../../docs/assets/mission-control.png" alt="Mission Control Dashboard" width="700"></p>
136
136
 
137
137
  ### Cross-Brain & Services
138
138
 
@@ -172,7 +172,7 @@ npm install @timmeck/brain-core
172
172
  import {
173
173
  createConnection, IpcServer, startMcpServer,
174
174
  ResearchOrchestrator, DreamEngine, ThoughtStream,
175
- ConsciousnessServer, PredictionEngine,
175
+ UnifiedDashboardServer, PredictionEngine,
176
176
  } from '@timmeck/brain-core';
177
177
 
178
178
  // 1. Database
@@ -190,8 +190,9 @@ dreamEngine.start();
190
190
  // 4. Consciousness
191
191
  const thoughtStream = new ThoughtStream();
192
192
  orchestrator.setThoughtStream(thoughtStream);
193
- const consciousness = new ConsciousnessServer({ port: 7790, thoughtStream, ... });
194
- consciousness.start();
193
+ // Unified Mission Control dashboard (includes Consciousness Entity, Thoughts, CodeGen, Self-Mod, Engines)
194
+ const dashboard = new UnifiedDashboardServer({ port: 7790, thoughtStream, ... });
195
+ dashboard.start();
195
196
 
196
197
  // 5. Predictions
197
198
  const prediction = new PredictionEngine(db, { brainName: 'my-brain' });
@@ -227,7 +228,7 @@ prediction.start();
227
228
  ├── Scanner ────── SignalScanner, GitHubCollector, HnCollector, CryptoCollector
228
229
  ├── Causal ─────── CausalGraph (Granger causality), HypothesisEngine
229
230
  ├── Cross-Brain ── Client, Notifier, Correlator, Subscriptions
230
- ├── Dashboard ──── Consciousness, CodeGen, Hub, Research, Unified
231
+ ├── Dashboard ──── Mission Control (Unified), Consciousness*, CodeGen*, Hub*, Research*
231
232
  ├── Services ───── Webhook, Export, Backup, Ecosystem
232
233
  ├── Memory ─────── BaseMemoryEngine, types
233
234
  ├── DB ─────────── SQLite connection (WAL mode)
@@ -238,10 +239,10 @@ prediction.start();
238
239
 
239
240
  | Brain | Version | Purpose | Ports |
240
241
  |-------|---------|---------|-------|
241
- | [Brain](../brain) | v3.33.0 | Error memory, code intelligence, full autonomy & self-modification | 7777/7778/7784/7787/7788 |
242
- | [Trading Brain](../trading-brain) | v2.28.0 | Adaptive trading intelligence with signal learning & backtesting | 7779/7780/7785 |
243
- | [Marketing Brain](../marketing-brain) | v1.29.0 | Content strategy, engagement & cross-platform optimization | 7781/7782/7783/7786 |
244
- | **Brain Core** | v2.33.0 | Shared infrastructure — 30+ engines (this package) | — |
242
+ | [Brain](../brain) | v3.34.0 | Error memory, code intelligence, full autonomy & self-modification | 7777/7778/7788 |
243
+ | [Trading Brain](../trading-brain) | v2.29.0 | Adaptive trading intelligence with signal learning & backtesting | 7779/7780 |
244
+ | [Marketing Brain](../marketing-brain) | v1.30.0 | Content strategy, engagement & cross-platform optimization | 7781/7782/7783 |
245
+ | **Brain Core** | v2.34.0 | Shared infrastructure — 30+ engines (this package) | — |
245
246
 
246
247
  ## Support
247
248
 
@@ -29,14 +29,14 @@ export class ContextBuilder {
29
29
  let antiPatternsUsed = 0;
30
30
  let patternsUsed = 0;
31
31
  // Header
32
- sections.push('Du bist ein Code-Generator im Brain Ecosystem.');
33
- sections.push('Du hast Zugriff auf das gesammelte Wissen des Brains:\n');
32
+ sections.push('You are a code generator in the Brain Ecosystem.');
33
+ sections.push('You have access to the Brain\'s accumulated knowledge:\n');
34
34
  // 1. Principles from KnowledgeDistiller
35
35
  if (this.knowledgeDistiller) {
36
36
  const domain = request.knowledge_domains?.[0];
37
37
  const principles = this.knowledgeDistiller.getPrinciples(domain, this.config.maxPrinciples);
38
38
  if (principles.length > 0) {
39
- sections.push('## Bewährte Principles');
39
+ sections.push('## Proven Principles');
40
40
  for (const p of principles) {
41
41
  sections.push(`- ${p.statement} (confidence: ${p.confidence.toFixed(2)}, success: ${(p.success_rate * 100).toFixed(0)}%)`);
42
42
  principlesUsed++;
@@ -46,9 +46,9 @@ export class ContextBuilder {
46
46
  // 2. Anti-Patterns
47
47
  const antiPatterns = this.knowledgeDistiller.getAntiPatterns(domain, this.config.maxAntiPatterns);
48
48
  if (antiPatterns.length > 0) {
49
- sections.push('## Anti-Patterns (vermeide!)');
49
+ sections.push('## Anti-Patterns (avoid!)');
50
50
  for (const ap of antiPatterns) {
51
- const alt = ap.alternative ? ` → Stattdessen: ${ap.alternative}` : '';
51
+ const alt = ap.alternative ? ` → Instead: ${ap.alternative}` : '';
52
52
  sections.push(`- ${ap.statement} (failure: ${(ap.failure_rate * 100).toFixed(0)}%)${alt}`);
53
53
  antiPatternsUsed++;
54
54
  }
@@ -57,7 +57,7 @@ export class ContextBuilder {
57
57
  // 3. Strategies
58
58
  const pkg = this.knowledgeDistiller.getPackage(domain ?? 'general');
59
59
  if (pkg.strategies && pkg.strategies.length > 0) {
60
- sections.push('## Bewährte Strategien');
60
+ sections.push('## Proven Strategies');
61
61
  for (const s of pkg.strategies.slice(0, this.config.maxStrategies)) {
62
62
  sections.push(`- ${s.description} (effectiveness: ${(s.effectiveness * 100).toFixed(0)}%)`);
63
63
  }
@@ -69,7 +69,7 @@ export class ContextBuilder {
69
69
  const deps = this.patternExtractor.getPatterns('dependency', this.config.maxPatterns);
70
70
  const stacks = this.patternExtractor.getPatterns('tech_stack', 5);
71
71
  if (deps.length > 0 || stacks.length > 0) {
72
- sections.push('## Beliebte Tech-Patterns (aus gescannten Repos)');
72
+ sections.push('## Popular Tech Patterns (from scanned repos)');
73
73
  if (deps.length > 0) {
74
74
  const depList = deps.map(d => {
75
75
  const data = JSON.parse(d.pattern_data);
@@ -83,7 +83,7 @@ export class ContextBuilder {
83
83
  const data = JSON.parse(s.pattern_data);
84
84
  return `${data.stack} (${data.count}x)`;
85
85
  }).join(', ');
86
- sections.push(`- Häufigste Stacks: ${stackList}`);
86
+ sections.push(`- Most common stacks: ${stackList}`);
87
87
  patternsUsed += stacks.length;
88
88
  }
89
89
  sections.push('');
@@ -93,7 +93,7 @@ export class ContextBuilder {
93
93
  if (this.journal) {
94
94
  const discoveries = this.journal.getEntries('discovery', this.config.maxJournalInsights);
95
95
  if (discoveries.length > 0) {
96
- sections.push('## Letzte Entdeckungen');
96
+ sections.push('## Recent Discoveries');
97
97
  for (const d of discoveries) {
98
98
  sections.push(`- ${d.title}: ${d.content.substring(0, 150)}`);
99
99
  }
@@ -118,7 +118,7 @@ export class ContextBuilder {
118
118
  if (this.selfScanner) {
119
119
  const archSummary = this.selfScanner.getArchitectureSummary();
120
120
  if (archSummary && archSummary !== 'No source files scanned yet.') {
121
- sections.push('## Eigene Codebase (Architektur-Übersicht)');
121
+ sections.push('## Own Codebase (Architecture Overview)');
122
122
  sections.push(archSummary);
123
123
  sections.push('');
124
124
  }
@@ -127,7 +127,7 @@ export class ContextBuilder {
127
127
  const content = this.selfScanner.getFileContent(request.target_file);
128
128
  if (content) {
129
129
  const truncated = content.length > 8000 ? content.substring(0, 8000) + '\n// ... (truncated)' : content;
130
- sections.push('## Aktueller Quellcode der Zieldatei');
130
+ sections.push('## Current Source Code of Target File');
131
131
  sections.push('```typescript');
132
132
  sections.push(truncated);
133
133
  sections.push('```');
@@ -136,18 +136,18 @@ export class ContextBuilder {
136
136
  }
137
137
  }
138
138
  // 8. Task section
139
- sections.push('## Aufgabe');
139
+ sections.push('## Task');
140
140
  sections.push(request.task);
141
141
  if (request.context) {
142
- sections.push(`\nZusätzlicher Kontext: ${request.context}`);
142
+ sections.push(`\nAdditional context: ${request.context}`);
143
143
  }
144
144
  if (request.target_file) {
145
- sections.push(`\nZieldatei: ${request.target_file}`);
145
+ sections.push(`\nTarget file: ${request.target_file}`);
146
146
  }
147
147
  // 9. Output instructions
148
148
  const lang = request.language ?? 'typescript';
149
- sections.push(`\nGeneriere den Code als ${lang === 'typescript' ? 'TypeScript ESM, nutze .js Extensions bei Imports' : lang}.`);
150
- sections.push('Antworte mit dem Code in einem ```code``` Block, gefolgt von einer kurzen Erklärung.');
149
+ sections.push(`\nGenerate the code as ${lang === 'typescript' ? 'TypeScript ESM, use .js extensions in imports' : lang}.`);
150
+ sections.push('Respond with the code in a ```code``` block, followed by a brief explanation.');
151
151
  const systemPrompt = sections.join('\n');
152
152
  return {
153
153
  systemPrompt,
@@ -1 +1 @@
1
- {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/codegen/context-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/codegen/context-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { ThoughtStream } from '../consciousness/thought-stream.js';
3
+ import type { MemoryPalace } from '../memory-palace/memory-palace.js';
4
+ export interface ConceptAbstractionConfig {
5
+ brainName: string;
6
+ /** Minimum Dice similarity to form a cluster. Default: 0.35 */
7
+ clusterThreshold?: number;
8
+ /** Minimum cluster size to keep. Default: 3 */
9
+ minClusterSize?: number;
10
+ /** Level-1 re-cluster threshold. Default: 0.25 */
11
+ level1Threshold?: number;
12
+ /** Level-2 re-cluster threshold. Default: 0.20 */
13
+ level2Threshold?: number;
14
+ /** Minimum word occurrence ratio for keyword extraction. Default: 0.6 */
15
+ keywordMinRatio?: number;
16
+ }
17
+ export interface ConceptDataSources {
18
+ getPrinciples: (domain?: string, limit?: number) => Array<{
19
+ id?: string | number;
20
+ statement: string;
21
+ confidence: number;
22
+ domain?: string;
23
+ }>;
24
+ getAntiPatterns: (domain?: string, limit?: number) => Array<{
25
+ id?: string | number;
26
+ statement: string;
27
+ confidence?: number;
28
+ domain?: string;
29
+ }>;
30
+ getHypotheses?: (status?: string, limit?: number) => Array<{
31
+ id?: string | number;
32
+ statement: string;
33
+ confidence?: number;
34
+ domain?: string;
35
+ }>;
36
+ }
37
+ export interface AbstractConcept {
38
+ id?: number;
39
+ title: string;
40
+ description: string;
41
+ level: number;
42
+ parentId: number | null;
43
+ domain: string;
44
+ memberCount: number;
45
+ avgConfidence: number;
46
+ avgSimilarity: number;
47
+ keywords: string[];
48
+ transferability: number;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ }
52
+ export interface ConceptMember {
53
+ conceptId: number;
54
+ memberType: MemberType;
55
+ memberId: number;
56
+ similarityToCentroid: number;
57
+ }
58
+ export type MemberType = 'principle' | 'anti_pattern' | 'strategy' | 'hypothesis' | 'concept';
59
+ export interface ConceptHistoryEntry {
60
+ cycle: number;
61
+ totalConcepts: number;
62
+ conceptsByLevel: Record<number, number>;
63
+ newCount: number;
64
+ mergedCount: number;
65
+ avgTransferability: number;
66
+ }
67
+ export interface ConceptHierarchy {
68
+ concept: AbstractConcept;
69
+ children: ConceptHierarchy[];
70
+ members: ConceptMember[];
71
+ }
72
+ export interface ConceptStatus {
73
+ totalConcepts: number;
74
+ conceptsByLevel: Record<number, number>;
75
+ avgTransferability: number;
76
+ topConcepts: AbstractConcept[];
77
+ recentHistory: ConceptHistoryEntry[];
78
+ cycleCount: number;
79
+ }
80
+ export declare function runConceptAbstractionMigration(db: Database.Database): void;
81
+ export declare class ConceptAbstraction {
82
+ private readonly db;
83
+ private readonly config;
84
+ private readonly log;
85
+ private ts;
86
+ private sources;
87
+ private cycleCount;
88
+ private readonly insertConcept;
89
+ private readonly insertMember;
90
+ private readonly insertHistory;
91
+ private readonly getConceptById;
92
+ private readonly getMembersByConcept;
93
+ private readonly getConceptsByLevelStmt;
94
+ private readonly getChildConcepts;
95
+ private readonly getTopConceptsStmt;
96
+ private readonly getTransferableStmt;
97
+ private readonly getHistoryStmt;
98
+ private readonly countConceptsStmt;
99
+ private readonly countByLevelStmt;
100
+ private readonly avgTransferabilityStmt;
101
+ private readonly clearConceptsStmt;
102
+ private readonly clearMembersStmt;
103
+ constructor(db: Database.Database, config: ConceptAbstractionConfig);
104
+ setThoughtStream(stream: ThoughtStream): void;
105
+ setDataSources(sources: ConceptDataSources): void;
106
+ /** Run concept formation: gather → cluster → hierarchy → persist */
107
+ formConcepts(): {
108
+ newConcepts: number;
109
+ totalConcepts: number;
110
+ levels: Record<number, number>;
111
+ };
112
+ getConceptsByLevel(level: number): AbstractConcept[];
113
+ getHierarchy(conceptId: number): ConceptHierarchy | null;
114
+ getMembers(conceptId: number): ConceptMember[];
115
+ getTransferableConcepts(minTransferability?: number): AbstractConcept[];
116
+ /** Register all concepts as nodes in MemoryPalace and link members. */
117
+ registerInPalace(palace: MemoryPalace): number;
118
+ getStatus(): ConceptStatus;
119
+ private gatherItems;
120
+ /** Greedy agglomerative clustering via bigram Dice similarity. */
121
+ private clusterItems;
122
+ /** Persist clusters as AbstractConcepts with members. Returns array of concept IDs. */
123
+ private persistClusters;
124
+ /** Convert persisted concepts to KnowledgeItems for re-clustering. */
125
+ private conceptsToItems;
126
+ private findConceptByTitle;
127
+ /** Bigram Dice coefficient — same algorithm as MemoryPalace and DreamConsolidator. */
128
+ private textOverlap;
129
+ private bigrams;
130
+ private generateTitle;
131
+ private generateDescription;
132
+ private extractKeywords;
133
+ private avgClusterSimilarity;
134
+ private computeTransferability;
135
+ private computeDomain;
136
+ private mostCommon;
137
+ private getTotalCount;
138
+ private getLevelCounts;
139
+ }