@timmeck/brain-core 2.18.0 → 2.20.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 +142 -185
- package/dist/attention/attention-engine.d.ts +108 -0
- package/dist/attention/attention-engine.js +411 -0
- package/dist/attention/attention-engine.js.map +1 -0
- package/dist/attention/index.d.ts +2 -0
- package/dist/attention/index.js +2 -0
- package/dist/attention/index.js.map +1 -0
- package/dist/consciousness/types.d.ts +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/research/research-orchestrator.d.ts +8 -0
- package/dist/research/research-orchestrator.js +53 -5
- package/dist/research/research-orchestrator.js.map +1 -1
- package/dist/transfer/index.d.ts +2 -0
- package/dist/transfer/index.js +2 -0
- package/dist/transfer/index.js.map +1 -0
- package/dist/transfer/transfer-engine.d.ts +126 -0
- package/dist/transfer/transfer-engine.js +567 -0
- package/dist/transfer/transfer-engine.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
// ── Engine ──────────────────────────────────────────────
|
|
3
|
+
export class AttentionEngine {
|
|
4
|
+
db;
|
|
5
|
+
brainName;
|
|
6
|
+
thoughtStream = null;
|
|
7
|
+
unsubscribe = null;
|
|
8
|
+
log = getLogger();
|
|
9
|
+
// Attention state
|
|
10
|
+
scores = new Map();
|
|
11
|
+
currentContext = 'idle';
|
|
12
|
+
contextHistory = [];
|
|
13
|
+
engineWeights = new Map();
|
|
14
|
+
eventLog = [];
|
|
15
|
+
totalEvents = 0;
|
|
16
|
+
startTime = Date.now();
|
|
17
|
+
// Config
|
|
18
|
+
decayRate;
|
|
19
|
+
burstWindowMs;
|
|
20
|
+
burstThreshold;
|
|
21
|
+
// Context detection rules: tool/event patterns → context
|
|
22
|
+
static CONTEXT_RULES = [
|
|
23
|
+
{ pattern: /error|bug|fix|crash|exception|stack|debug/i, context: 'debugging' },
|
|
24
|
+
{ pattern: /trade|signal|backtest|kelly|dca|grid|risk/i, context: 'trading' },
|
|
25
|
+
{ pattern: /post|publish|campaign|schedule|hashtag|engagement|competitor/i, context: 'publishing' },
|
|
26
|
+
{ pattern: /review|pr|diff|approve|reject|codegen/i, context: 'reviewing' },
|
|
27
|
+
{ pattern: /research|hypothes|experiment|distill|agenda|journal/i, context: 'researching' },
|
|
28
|
+
{ pattern: /code|module|register|function|refactor|implement/i, context: 'coding' },
|
|
29
|
+
];
|
|
30
|
+
constructor(db, config) {
|
|
31
|
+
this.db = db;
|
|
32
|
+
this.brainName = config.brainName;
|
|
33
|
+
this.decayRate = config.decayRate ?? 0.85;
|
|
34
|
+
this.burstWindowMs = config.burstWindowMs ?? 180_000;
|
|
35
|
+
this.burstThreshold = config.burstThreshold ?? 3;
|
|
36
|
+
this.runMigration();
|
|
37
|
+
// Initialize default engine weights (equal)
|
|
38
|
+
const engines = [
|
|
39
|
+
'self_observer', 'anomaly_detective', 'cross_domain', 'adaptive_strategy',
|
|
40
|
+
'experiment', 'knowledge_distiller', 'research_agenda', 'counterfactual', 'journal',
|
|
41
|
+
];
|
|
42
|
+
for (const e of engines) {
|
|
43
|
+
this.engineWeights.set(e, 1.0);
|
|
44
|
+
}
|
|
45
|
+
// Load persisted focus timeline on startup
|
|
46
|
+
this.loadPersistedState();
|
|
47
|
+
}
|
|
48
|
+
// ── ThoughtStream integration ─────────────────────────
|
|
49
|
+
/** Wire into ThoughtStream to passively observe all engine activity. */
|
|
50
|
+
setThoughtStream(stream) {
|
|
51
|
+
// Unsubscribe from previous stream if any
|
|
52
|
+
if (this.unsubscribe)
|
|
53
|
+
this.unsubscribe();
|
|
54
|
+
this.thoughtStream = stream;
|
|
55
|
+
this.unsubscribe = stream.onThought((thought) => {
|
|
56
|
+
this.onThought(thought);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** Process a thought from any engine. */
|
|
60
|
+
onThought(thought) {
|
|
61
|
+
this.totalEvents++;
|
|
62
|
+
// Extract topic from thought content + engine
|
|
63
|
+
const topic = this.extractTopic(thought);
|
|
64
|
+
const significance = thought.significance === 'breakthrough' ? 3 : thought.significance === 'notable' ? 2 : 1;
|
|
65
|
+
// Record event
|
|
66
|
+
this.eventLog.push({ topic, timestamp: thought.timestamp, significance });
|
|
67
|
+
// Trim event log (keep last 1000)
|
|
68
|
+
if (this.eventLog.length > 1000) {
|
|
69
|
+
this.eventLog.splice(0, this.eventLog.length - 1000);
|
|
70
|
+
}
|
|
71
|
+
// Update attention score
|
|
72
|
+
this.updateScore(topic, significance);
|
|
73
|
+
// Detect context switches
|
|
74
|
+
const detectedContext = this.detectContext(thought);
|
|
75
|
+
if (detectedContext !== this.currentContext) {
|
|
76
|
+
this.switchContext(detectedContext, `${thought.engine}: ${thought.content.substring(0, 60)}`);
|
|
77
|
+
}
|
|
78
|
+
// Check urgency (burst detection)
|
|
79
|
+
this.checkUrgency(topic);
|
|
80
|
+
}
|
|
81
|
+
// ── Attention scoring ─────────────────────────────────
|
|
82
|
+
/** Update the attention score for a topic. */
|
|
83
|
+
updateScore(topic, significance) {
|
|
84
|
+
const now = Date.now();
|
|
85
|
+
const existing = this.scores.get(topic);
|
|
86
|
+
if (existing) {
|
|
87
|
+
existing.frequency++;
|
|
88
|
+
existing.impact = Math.max(existing.impact, significance);
|
|
89
|
+
existing.lastSeen = now;
|
|
90
|
+
// Recalculate composite score
|
|
91
|
+
existing.recency = 1.0; // Just seen
|
|
92
|
+
existing.score = this.computeScore(existing);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const score = {
|
|
96
|
+
topic,
|
|
97
|
+
score: significance,
|
|
98
|
+
recency: 1.0,
|
|
99
|
+
frequency: 1,
|
|
100
|
+
impact: significance,
|
|
101
|
+
urgency: 0,
|
|
102
|
+
lastSeen: now,
|
|
103
|
+
};
|
|
104
|
+
score.score = this.computeScore(score);
|
|
105
|
+
this.scores.set(topic, score);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Compute composite attention score. */
|
|
109
|
+
computeScore(s) {
|
|
110
|
+
// Weighted formula: recency × (frequency_log × impact × (1 + urgency))
|
|
111
|
+
const freqFactor = Math.log2(s.frequency + 1); // Logarithmic so it doesn't explode
|
|
112
|
+
return s.recency * freqFactor * s.impact * (1 + s.urgency);
|
|
113
|
+
}
|
|
114
|
+
/** Apply time-based decay to all attention scores. Called each feedback cycle. */
|
|
115
|
+
decay() {
|
|
116
|
+
const now = Date.now();
|
|
117
|
+
const toDelete = [];
|
|
118
|
+
for (const [topic, score] of this.scores) {
|
|
119
|
+
// Recency decays based on time since last seen
|
|
120
|
+
const ageMs = now - score.lastSeen;
|
|
121
|
+
score.recency = Math.exp(-ageMs / 600_000); // 10-min half-life
|
|
122
|
+
score.urgency *= this.decayRate;
|
|
123
|
+
score.score = this.computeScore(score);
|
|
124
|
+
// Remove very stale topics (score < 0.01)
|
|
125
|
+
if (score.score < 0.01) {
|
|
126
|
+
toDelete.push(topic);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
for (const t of toDelete) {
|
|
130
|
+
this.scores.delete(t);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// ── Context detection ─────────────────────────────────
|
|
134
|
+
/** Detect work context from a thought. */
|
|
135
|
+
detectContext(thought) {
|
|
136
|
+
const text = `${thought.engine} ${thought.content} ${thought.type}`;
|
|
137
|
+
for (const rule of AttentionEngine.CONTEXT_RULES) {
|
|
138
|
+
if (rule.pattern.test(text))
|
|
139
|
+
return rule.context;
|
|
140
|
+
}
|
|
141
|
+
return this.currentContext; // No change if nothing matches
|
|
142
|
+
}
|
|
143
|
+
/** Record a context switch. */
|
|
144
|
+
switchContext(newContext, trigger) {
|
|
145
|
+
const sw = {
|
|
146
|
+
from: this.currentContext,
|
|
147
|
+
to: newContext,
|
|
148
|
+
timestamp: Date.now(),
|
|
149
|
+
trigger,
|
|
150
|
+
};
|
|
151
|
+
this.contextHistory.push(sw);
|
|
152
|
+
// Keep last 100 switches
|
|
153
|
+
if (this.contextHistory.length > 100) {
|
|
154
|
+
this.contextHistory.splice(0, this.contextHistory.length - 100);
|
|
155
|
+
}
|
|
156
|
+
this.log.info(`[attention] Context switch: ${sw.from} → ${sw.to} (${trigger.substring(0, 40)})`);
|
|
157
|
+
this.currentContext = newContext;
|
|
158
|
+
// Persist context switch
|
|
159
|
+
this.persistContextSwitch(sw);
|
|
160
|
+
}
|
|
161
|
+
// ── Urgency detection (burst detection) ───────────────
|
|
162
|
+
/** Check if a topic has burst activity (urgency). */
|
|
163
|
+
checkUrgency(topic) {
|
|
164
|
+
const now = Date.now();
|
|
165
|
+
const windowStart = now - this.burstWindowMs;
|
|
166
|
+
const recentCount = this.eventLog.filter(e => e.topic === topic && e.timestamp > windowStart).length;
|
|
167
|
+
if (recentCount >= this.burstThreshold) {
|
|
168
|
+
const score = this.scores.get(topic);
|
|
169
|
+
if (score) {
|
|
170
|
+
const newUrgency = Math.min(3.0, recentCount / this.burstThreshold);
|
|
171
|
+
if (newUrgency > score.urgency) {
|
|
172
|
+
score.urgency = newUrgency;
|
|
173
|
+
score.score = this.computeScore(score);
|
|
174
|
+
this.log.info(`[attention] Urgency burst: "${topic}" (${recentCount} events in ${this.burstWindowMs / 1000}s)`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// ── Resource allocation ───────────────────────────────
|
|
180
|
+
/** Compute recommended engine weights based on current attention state.
|
|
181
|
+
* Engines related to high-attention topics get more weight. */
|
|
182
|
+
computeEngineWeights() {
|
|
183
|
+
const weights = [];
|
|
184
|
+
const topTopics = this.getTopTopics(5);
|
|
185
|
+
// Base weight for all engines
|
|
186
|
+
const baseWeight = 1.0;
|
|
187
|
+
// Map: which engines handle which types of attention
|
|
188
|
+
const engineTopicMap = {
|
|
189
|
+
anomaly_detective: /anomal|spike|burst|error|deviation/i,
|
|
190
|
+
self_observer: /performance|insight|observation|metric/i,
|
|
191
|
+
cross_domain: /cross|correlat|peer|brain/i,
|
|
192
|
+
experiment: /experiment|test|hypothesis|parameter/i,
|
|
193
|
+
knowledge_distiller: /knowledge|principle|pattern|distill/i,
|
|
194
|
+
adaptive_strategy: /strategy|adapt|revert|regression/i,
|
|
195
|
+
research_agenda: /agenda|research|priority|gap/i,
|
|
196
|
+
counterfactual: /counterfactual|what.if|hypothetical/i,
|
|
197
|
+
journal: /journal|reflect|discover|breakthrough/i,
|
|
198
|
+
};
|
|
199
|
+
for (const [engine, pattern] of Object.entries(engineTopicMap)) {
|
|
200
|
+
let boost = 0;
|
|
201
|
+
let reason = 'baseline';
|
|
202
|
+
for (const topic of topTopics) {
|
|
203
|
+
if (pattern.test(topic.topic)) {
|
|
204
|
+
boost += topic.score * 0.5;
|
|
205
|
+
reason = `high attention on "${topic.topic}"`;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Urgency boost
|
|
209
|
+
const urgentTopics = topTopics.filter(t => t.urgency > 1.0);
|
|
210
|
+
for (const urgent of urgentTopics) {
|
|
211
|
+
if (pattern.test(urgent.topic)) {
|
|
212
|
+
boost += urgent.urgency;
|
|
213
|
+
reason = `urgent: "${urgent.topic}"`;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const weight = baseWeight + boost;
|
|
217
|
+
this.engineWeights.set(engine, weight);
|
|
218
|
+
weights.push({ engine, weight, reason });
|
|
219
|
+
}
|
|
220
|
+
return weights.sort((a, b) => b.weight - a.weight);
|
|
221
|
+
}
|
|
222
|
+
/** Get the current weight for an engine. Orchestrator uses this to decide cycle budget. */
|
|
223
|
+
getEngineWeight(engine) {
|
|
224
|
+
return this.engineWeights.get(engine) ?? 1.0;
|
|
225
|
+
}
|
|
226
|
+
// ── Manual focus ──────────────────────────────────────
|
|
227
|
+
/** Manually set high attention on a topic (via MCP tool). */
|
|
228
|
+
setFocus(topic, intensity = 2.0) {
|
|
229
|
+
const existing = this.scores.get(topic);
|
|
230
|
+
if (existing) {
|
|
231
|
+
existing.impact = Math.max(existing.impact, intensity);
|
|
232
|
+
existing.urgency = Math.max(existing.urgency, intensity);
|
|
233
|
+
existing.lastSeen = Date.now();
|
|
234
|
+
existing.recency = 1.0;
|
|
235
|
+
existing.score = this.computeScore(existing);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
const score = {
|
|
239
|
+
topic,
|
|
240
|
+
score: intensity * 2,
|
|
241
|
+
recency: 1.0,
|
|
242
|
+
frequency: 1,
|
|
243
|
+
impact: intensity,
|
|
244
|
+
urgency: intensity,
|
|
245
|
+
lastSeen: Date.now(),
|
|
246
|
+
};
|
|
247
|
+
score.score = this.computeScore(score);
|
|
248
|
+
this.scores.set(topic, score);
|
|
249
|
+
}
|
|
250
|
+
this.thoughtStream?.emit('attention', 'focusing', `Manual focus set: "${topic}" (intensity: ${intensity})`, 'notable');
|
|
251
|
+
this.persistFocusEntry(topic);
|
|
252
|
+
}
|
|
253
|
+
// ── Query methods ─────────────────────────────────────
|
|
254
|
+
/** Get top N topics by attention score. */
|
|
255
|
+
getTopTopics(limit = 10) {
|
|
256
|
+
return Array.from(this.scores.values())
|
|
257
|
+
.sort((a, b) => b.score - a.score)
|
|
258
|
+
.slice(0, limit);
|
|
259
|
+
}
|
|
260
|
+
/** Get topics with urgency > 1.0. */
|
|
261
|
+
getUrgentTopics() {
|
|
262
|
+
return Array.from(this.scores.values())
|
|
263
|
+
.filter(s => s.urgency >= 1.0)
|
|
264
|
+
.sort((a, b) => b.urgency - a.urgency);
|
|
265
|
+
}
|
|
266
|
+
/** Get context switch history. */
|
|
267
|
+
getContextHistory(limit = 20) {
|
|
268
|
+
return this.contextHistory.slice(-limit).reverse();
|
|
269
|
+
}
|
|
270
|
+
/** Get current work context. */
|
|
271
|
+
getCurrentContext() {
|
|
272
|
+
return this.currentContext;
|
|
273
|
+
}
|
|
274
|
+
/** Get full attention status. */
|
|
275
|
+
getStatus() {
|
|
276
|
+
return {
|
|
277
|
+
currentContext: this.currentContext,
|
|
278
|
+
topTopics: this.getTopTopics(10),
|
|
279
|
+
contextHistory: this.getContextHistory(10),
|
|
280
|
+
engineWeights: Object.fromEntries(this.engineWeights),
|
|
281
|
+
urgentTopics: this.getUrgentTopics().map(t => t.topic),
|
|
282
|
+
totalEvents: this.totalEvents,
|
|
283
|
+
uptime: Date.now() - this.startTime,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/** Get focus timeline from DB. */
|
|
287
|
+
getFocusTimeline(limit = 50) {
|
|
288
|
+
const rows = this.db.prepare('SELECT topic, score, context, timestamp FROM attention_focus ORDER BY timestamp DESC LIMIT ?').all(limit);
|
|
289
|
+
return rows;
|
|
290
|
+
}
|
|
291
|
+
// ── Topic extraction ──────────────────────────────────
|
|
292
|
+
/** Extract a normalized topic from a thought. */
|
|
293
|
+
extractTopic(thought) {
|
|
294
|
+
// Use engine name + thought type as primary topic
|
|
295
|
+
const base = `${thought.engine}:${thought.type}`;
|
|
296
|
+
// Extract specific keywords for more granular tracking
|
|
297
|
+
const content = thought.content.toLowerCase();
|
|
298
|
+
// Anomaly-specific
|
|
299
|
+
if (content.includes('anomal'))
|
|
300
|
+
return 'anomaly_detection';
|
|
301
|
+
if (content.includes('breakout'))
|
|
302
|
+
return 'signal_breakout';
|
|
303
|
+
if (content.includes('hypothesis') || content.includes('hypothes'))
|
|
304
|
+
return 'hypothesis_testing';
|
|
305
|
+
if (content.includes('experiment'))
|
|
306
|
+
return 'experiment_management';
|
|
307
|
+
if (content.includes('dream') || content.includes('consolidat'))
|
|
308
|
+
return 'dream_consolidation';
|
|
309
|
+
if (content.includes('prediction') || content.includes('predict'))
|
|
310
|
+
return 'prediction_accuracy';
|
|
311
|
+
if (content.includes('knowledge') || content.includes('distill') || content.includes('principle'))
|
|
312
|
+
return 'knowledge_distillation';
|
|
313
|
+
if (content.includes('correlation'))
|
|
314
|
+
return 'cross_domain_correlation';
|
|
315
|
+
if (content.includes('autorespond') || content.includes('parameter'))
|
|
316
|
+
return 'auto_response';
|
|
317
|
+
if (content.includes('code') && content.includes('min'))
|
|
318
|
+
return 'code_mining';
|
|
319
|
+
if (content.includes('code') && content.includes('gen'))
|
|
320
|
+
return 'code_generation';
|
|
321
|
+
if (content.includes('error') || content.includes('bug'))
|
|
322
|
+
return 'error_tracking';
|
|
323
|
+
if (content.includes('trade') || content.includes('signal'))
|
|
324
|
+
return 'trade_signals';
|
|
325
|
+
if (content.includes('post') || content.includes('publish') || content.includes('engagement'))
|
|
326
|
+
return 'content_publishing';
|
|
327
|
+
if (content.includes('insight'))
|
|
328
|
+
return 'insight_generation';
|
|
329
|
+
if (content.includes('feedback cycle'))
|
|
330
|
+
return 'feedback_cycle';
|
|
331
|
+
return base;
|
|
332
|
+
}
|
|
333
|
+
// ── Persistence ───────────────────────────────────────
|
|
334
|
+
runMigration() {
|
|
335
|
+
this.db.exec(`
|
|
336
|
+
CREATE TABLE IF NOT EXISTS attention_focus (
|
|
337
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
338
|
+
topic TEXT NOT NULL,
|
|
339
|
+
score REAL NOT NULL,
|
|
340
|
+
context TEXT NOT NULL,
|
|
341
|
+
timestamp INTEGER NOT NULL
|
|
342
|
+
);
|
|
343
|
+
|
|
344
|
+
CREATE TABLE IF NOT EXISTS attention_context_switches (
|
|
345
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
346
|
+
from_context TEXT NOT NULL,
|
|
347
|
+
to_context TEXT NOT NULL,
|
|
348
|
+
trigger_text TEXT NOT NULL,
|
|
349
|
+
timestamp INTEGER NOT NULL
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
CREATE INDEX IF NOT EXISTS idx_attention_focus_ts ON attention_focus(timestamp);
|
|
353
|
+
CREATE INDEX IF NOT EXISTS idx_attention_context_ts ON attention_context_switches(timestamp);
|
|
354
|
+
`);
|
|
355
|
+
}
|
|
356
|
+
persistFocusEntry(topic) {
|
|
357
|
+
const score = this.scores.get(topic);
|
|
358
|
+
if (!score)
|
|
359
|
+
return;
|
|
360
|
+
this.db.prepare('INSERT INTO attention_focus (topic, score, context, timestamp) VALUES (?, ?, ?, ?)').run(topic, score.score, this.currentContext, Date.now());
|
|
361
|
+
}
|
|
362
|
+
persistContextSwitch(sw) {
|
|
363
|
+
this.db.prepare('INSERT INTO attention_context_switches (from_context, to_context, trigger_text, timestamp) VALUES (?, ?, ?, ?)').run(sw.from, sw.to, sw.trigger, sw.timestamp);
|
|
364
|
+
}
|
|
365
|
+
loadPersistedState() {
|
|
366
|
+
// Load recent context switches
|
|
367
|
+
const switches = this.db.prepare('SELECT from_context, to_context, trigger_text, timestamp FROM attention_context_switches ORDER BY timestamp DESC LIMIT 50').all();
|
|
368
|
+
for (const s of switches.reverse()) {
|
|
369
|
+
this.contextHistory.push({
|
|
370
|
+
from: s.from_context,
|
|
371
|
+
to: s.to_context,
|
|
372
|
+
timestamp: s.timestamp,
|
|
373
|
+
trigger: s.trigger_text,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
// Set current context from last switch
|
|
377
|
+
if (switches.length > 0) {
|
|
378
|
+
this.currentContext = switches[0].to_context;
|
|
379
|
+
}
|
|
380
|
+
// Load recent focus entries to seed scores
|
|
381
|
+
const entries = this.db.prepare('SELECT topic, score, context, timestamp FROM attention_focus ORDER BY timestamp DESC LIMIT 100').all();
|
|
382
|
+
for (const entry of entries) {
|
|
383
|
+
if (!this.scores.has(entry.topic)) {
|
|
384
|
+
const age = Date.now() - entry.timestamp;
|
|
385
|
+
const recency = Math.exp(-age / 600_000);
|
|
386
|
+
this.scores.set(entry.topic, {
|
|
387
|
+
topic: entry.topic,
|
|
388
|
+
score: entry.score * recency,
|
|
389
|
+
recency,
|
|
390
|
+
frequency: 1,
|
|
391
|
+
impact: 1,
|
|
392
|
+
urgency: 0,
|
|
393
|
+
lastSeen: entry.timestamp,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// ── Lifecycle ─────────────────────────────────────────
|
|
399
|
+
stop() {
|
|
400
|
+
if (this.unsubscribe) {
|
|
401
|
+
this.unsubscribe();
|
|
402
|
+
this.unsubscribe = null;
|
|
403
|
+
}
|
|
404
|
+
// Persist top focus entries on shutdown
|
|
405
|
+
const top = this.getTopTopics(20);
|
|
406
|
+
for (const t of top) {
|
|
407
|
+
this.persistFocusEntry(t.topic);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=attention-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention-engine.js","sourceRoot":"","sources":["../../src/attention/attention-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attention/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ThoughtType = 'perceiving' | 'analyzing' | 'discovering' | 'hypothesizing' | 'experimenting' | 'dreaming' | 'reflecting' | 'correlating' | 'predicting' | 'responding';
|
|
1
|
+
export type ThoughtType = 'perceiving' | 'analyzing' | 'discovering' | 'hypothesizing' | 'experimenting' | 'dreaming' | 'reflecting' | 'correlating' | 'predicting' | 'responding' | 'focusing';
|
|
2
2
|
export type ThoughtSignificance = 'routine' | 'notable' | 'breakthrough';
|
|
3
3
|
export interface Thought {
|
|
4
4
|
id: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -110,6 +110,10 @@ export { CodeGenerator, runCodeGeneratorMigration } from './codegen/index.js';
|
|
|
110
110
|
export { CodegenServer } from './codegen/index.js';
|
|
111
111
|
export type { CodegenServerOptions } from './codegen/index.js';
|
|
112
112
|
export type { CodeMinerConfig, RepoContent, CodeMinerSummary, ExtractedPattern, DependencyPattern, TechStack, ProjectStructure, ReadmePattern, ContextBuilderConfig, BuiltContext, CodeGeneratorConfig, GenerationTrigger, GenerationStatus, GenerationRequest, GenerationResult, GenerationRecord, CodeGeneratorSummary, } from './codegen/index.js';
|
|
113
|
+
export { AttentionEngine } from './attention/index.js';
|
|
114
|
+
export type { AttentionEngineConfig, AttentionScore, AttentionStatus, WorkContext, ContextSwitch, FocusEntry, EngineWeight, } from './attention/index.js';
|
|
115
|
+
export { TransferEngine } from './transfer/index.js';
|
|
116
|
+
export type { TransferEngineConfig, Analogy, TransferRecord, CrossDomainRule, TransferStatus, } from './transfer/index.js';
|
|
113
117
|
export { SignalScanner, runScannerMigration } from './scanner/index.js';
|
|
114
118
|
export { GitHubCollector } from './scanner/index.js';
|
|
115
119
|
export { HnCollector } from './scanner/index.js';
|
package/dist/index.js
CHANGED
|
@@ -100,6 +100,10 @@ export { PatternExtractor, runPatternExtractorMigration } from './codegen/index.
|
|
|
100
100
|
export { ContextBuilder } from './codegen/index.js';
|
|
101
101
|
export { CodeGenerator, runCodeGeneratorMigration } from './codegen/index.js';
|
|
102
102
|
export { CodegenServer } from './codegen/index.js';
|
|
103
|
+
// ── Attention Engine ──────────────────────────────────
|
|
104
|
+
export { AttentionEngine } from './attention/index.js';
|
|
105
|
+
// ── Transfer Engine ──────────────────────────────────
|
|
106
|
+
export { TransferEngine } from './transfer/index.js';
|
|
103
107
|
// ── Scanner ──────────────────────────────────────────────
|
|
104
108
|
export { SignalScanner, runScannerMigration } from './scanner/index.js';
|
|
105
109
|
export { GitHubCollector } from './scanner/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ import type { PredictionEngine } from '../prediction/prediction-engine.js';
|
|
|
18
18
|
import type { SignalScanner } from '../scanner/signal-scanner.js';
|
|
19
19
|
import type { CodeGenerator } from '../codegen/code-generator.js';
|
|
20
20
|
import type { CodeMiner } from '../codegen/code-miner.js';
|
|
21
|
+
import type { AttentionEngine } from '../attention/attention-engine.js';
|
|
22
|
+
import type { TransferEngine } from '../transfer/transfer-engine.js';
|
|
21
23
|
import { AutoResponder } from './auto-responder.js';
|
|
22
24
|
export interface ResearchOrchestratorConfig {
|
|
23
25
|
brainName: string;
|
|
@@ -49,6 +51,8 @@ export declare class ResearchOrchestrator {
|
|
|
49
51
|
private signalScanner;
|
|
50
52
|
private codeGenerator;
|
|
51
53
|
private codeMiner;
|
|
54
|
+
private attentionEngine;
|
|
55
|
+
private transferEngine;
|
|
52
56
|
private brainName;
|
|
53
57
|
private feedbackTimer;
|
|
54
58
|
private cycleCount;
|
|
@@ -73,6 +77,10 @@ export declare class ResearchOrchestrator {
|
|
|
73
77
|
setCodeGenerator(generator: CodeGenerator): void;
|
|
74
78
|
/** Set the CodeMiner — mines repo contents from GitHub for pattern analysis. */
|
|
75
79
|
setCodeMiner(miner: CodeMiner): void;
|
|
80
|
+
/** Set the AttentionEngine — dynamic focus and resource allocation. */
|
|
81
|
+
setAttentionEngine(engine: AttentionEngine): void;
|
|
82
|
+
/** Set the TransferEngine — cross-domain knowledge transfer. */
|
|
83
|
+
setTransferEngine(engine: TransferEngine): void;
|
|
76
84
|
/** Set the PredictionEngine — wires journal into it. */
|
|
77
85
|
setPredictionEngine(engine: PredictionEngine): void;
|
|
78
86
|
/** Start the autonomous feedback loop timer. */
|
|
@@ -33,6 +33,8 @@ export class ResearchOrchestrator {
|
|
|
33
33
|
signalScanner = null;
|
|
34
34
|
codeGenerator = null;
|
|
35
35
|
codeMiner = null;
|
|
36
|
+
attentionEngine = null;
|
|
37
|
+
transferEngine = null;
|
|
36
38
|
brainName;
|
|
37
39
|
feedbackTimer = null;
|
|
38
40
|
cycleCount = 0;
|
|
@@ -92,6 +94,14 @@ export class ResearchOrchestrator {
|
|
|
92
94
|
setCodeMiner(miner) {
|
|
93
95
|
this.codeMiner = miner;
|
|
94
96
|
}
|
|
97
|
+
/** Set the AttentionEngine — dynamic focus and resource allocation. */
|
|
98
|
+
setAttentionEngine(engine) {
|
|
99
|
+
this.attentionEngine = engine;
|
|
100
|
+
}
|
|
101
|
+
/** Set the TransferEngine — cross-domain knowledge transfer. */
|
|
102
|
+
setTransferEngine(engine) {
|
|
103
|
+
this.transferEngine = engine;
|
|
104
|
+
}
|
|
95
105
|
/** Set the PredictionEngine — wires journal into it. */
|
|
96
106
|
setPredictionEngine(engine) {
|
|
97
107
|
this.predictionEngine = engine;
|
|
@@ -254,6 +264,22 @@ export class ResearchOrchestrator {
|
|
|
254
264
|
this.hypothesisEngine.observe({ source: this.brainName, type: `anomaly:${a.metric}`, value: a.deviation, timestamp: now, metadata: { severity: a.severity } });
|
|
255
265
|
}
|
|
256
266
|
}
|
|
267
|
+
// 2d. Attention Engine: decay scores, compute engine weights, persist focus
|
|
268
|
+
if (this.attentionEngine) {
|
|
269
|
+
ts?.emit('attention', 'focusing', 'Updating attention scores and engine weights...');
|
|
270
|
+
this.attentionEngine.decay();
|
|
271
|
+
const weights = this.attentionEngine.computeEngineWeights();
|
|
272
|
+
const topTopics = this.attentionEngine.getTopTopics(3);
|
|
273
|
+
const urgent = this.attentionEngine.getUrgentTopics();
|
|
274
|
+
const context = this.attentionEngine.getCurrentContext();
|
|
275
|
+
if (urgent.length > 0) {
|
|
276
|
+
ts?.emit('attention', 'focusing', `Urgent: ${urgent.map(u => `"${u.topic}" (${u.urgency.toFixed(1)})`).join(', ')}`, 'notable');
|
|
277
|
+
}
|
|
278
|
+
if (topTopics.length > 0) {
|
|
279
|
+
const topStr = topTopics.map(t => `${t.topic}(${t.score.toFixed(1)})`).join(', ');
|
|
280
|
+
ts?.emit('attention', 'focusing', `Context: ${context} | Top: ${topStr} | Weights: ${weights.slice(0, 3).map(w => `${w.engine}=${w.weight.toFixed(1)}`).join(', ')}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
257
283
|
// 3. Cross-domain correlation analysis
|
|
258
284
|
ts?.emit('cross_domain', 'correlating', 'Analyzing cross-brain event correlations...');
|
|
259
285
|
const correlations = this.crossDomain.analyze();
|
|
@@ -350,6 +376,26 @@ export class ResearchOrchestrator {
|
|
|
350
376
|
ts?.emit('knowledge_distiller', 'analyzing', 'No new knowledge to distill');
|
|
351
377
|
}
|
|
352
378
|
}
|
|
379
|
+
// 6b. Cross-domain transfer analysis (after distillation, every 5 cycles)
|
|
380
|
+
if (this.transferEngine && this.cycleCount % this.distillEvery === 0) {
|
|
381
|
+
ts?.emit('transfer', 'correlating', 'Analyzing cross-domain knowledge transfers...');
|
|
382
|
+
try {
|
|
383
|
+
const { analogies, proposals } = this.transferEngine.analyze();
|
|
384
|
+
if (analogies.length > 0 || proposals.length > 0) {
|
|
385
|
+
this.log.info(`[orchestrator] Transfer: ${analogies.length} analogies, ${proposals.length} proposals`);
|
|
386
|
+
if (analogies.length > 0) {
|
|
387
|
+
const topAnalogy = analogies.sort((a, b) => b.similarity - a.similarity)[0];
|
|
388
|
+
ts?.emit('transfer', 'discovering', `Top analogy: ${topAnalogy.narrative}`, 'notable');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
ts?.emit('transfer', 'analyzing', 'No new cross-domain transfers found');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
catch (err) {
|
|
396
|
+
this.log.error(`[orchestrator] Transfer analysis error: ${err.message}`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
353
399
|
// 7. Research agenda generation (periodic)
|
|
354
400
|
if (this.cycleCount % this.agendaEvery === 0) {
|
|
355
401
|
ts?.emit('research_agenda', 'hypothesizing', 'Generating research agenda...');
|
|
@@ -558,17 +604,17 @@ export class ResearchOrchestrator {
|
|
|
558
604
|
});
|
|
559
605
|
}
|
|
560
606
|
}
|
|
561
|
-
// Dream engine
|
|
607
|
+
// Dream engine — periodic consolidation already runs every 20 cycles in step 13
|
|
608
|
+
// Only suggest if no dreams after 30 cycles (enough time for at least 1 scheduled consolidation)
|
|
562
609
|
const dream = summary.dream;
|
|
563
610
|
if (dream) {
|
|
564
611
|
const totalDreams = dream.total_dreams ?? 0;
|
|
565
|
-
if (totalDreams === 0 && this.cycleCount >
|
|
612
|
+
if (totalDreams === 0 && this.cycleCount > 30) {
|
|
566
613
|
raw.push({
|
|
567
614
|
key: 'no_dreams',
|
|
568
|
-
suggestion: 'Tell Claude: Dream Mode hat noch nie konsolidiert —
|
|
615
|
+
suggestion: 'Tell Claude: Dream Mode hat nach 30+ Cycles noch nie konsolidiert — consolidate() scheint zu scheitern.',
|
|
569
616
|
alternatives: [
|
|
570
|
-
'Tell Claude: Dream
|
|
571
|
-
'Tell Claude: Statt auf Idle zu warten — DreamEngine.consolidate() direkt im Orchestrator aufrufen, z.B. alle 20 Cycles. Brain muss nicht "schlafen" um zu konsolidieren.',
|
|
617
|
+
'Tell Claude: Dream consolidation wird alle 20 Cycles getriggert aber schlägt offenbar fehl. Logs prüfen.',
|
|
572
618
|
],
|
|
573
619
|
});
|
|
574
620
|
}
|
|
@@ -790,6 +836,8 @@ export class ResearchOrchestrator {
|
|
|
790
836
|
scanner: this.signalScanner?.getStatus() ?? null,
|
|
791
837
|
codeGenerator: this.codeGenerator?.getSummary() ?? null,
|
|
792
838
|
codeMiner: this.codeMiner?.getSummary() ?? null,
|
|
839
|
+
attention: this.attentionEngine?.getStatus() ?? null,
|
|
840
|
+
transfer: this.transferEngine?.getStatus() ?? null,
|
|
793
841
|
};
|
|
794
842
|
}
|
|
795
843
|
}
|