@timmeck/brain-core 2.31.2 → 2.33.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/codegen-dashboard.html +222 -1
- package/dist/codegen/codegen-server.d.ts +5 -0
- package/dist/codegen/codegen-server.js +106 -1
- package/dist/codegen/codegen-server.js.map +1 -1
- package/dist/codegen/context-builder.d.ts +4 -0
- package/dist/codegen/context-builder.js +26 -2
- package/dist/codegen/context-builder.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/research/bootstrap-service.d.ts +57 -0
- package/dist/research/bootstrap-service.js +325 -0
- package/dist/research/bootstrap-service.js.map +1 -0
- package/dist/research/data-miner.d.ts +1 -0
- package/dist/research/data-miner.js +22 -5
- package/dist/research/data-miner.js.map +1 -1
- package/dist/research/research-orchestrator.d.ts +14 -0
- package/dist/research/research-orchestrator.js +140 -0
- package/dist/research/research-orchestrator.js.map +1 -1
- package/dist/self-modification/index.d.ts +2 -0
- package/dist/self-modification/index.js +2 -0
- package/dist/self-modification/index.js.map +1 -0
- package/dist/self-modification/self-modification-engine.d.ts +93 -0
- package/dist/self-modification/self-modification-engine.js +588 -0
- package/dist/self-modification/self-modification-engine.js.map +1 -0
- package/dist/self-scanner/index.d.ts +2 -0
- package/dist/self-scanner/index.js +2 -0
- package/dist/self-scanner/index.js.map +1 -0
- package/dist/self-scanner/self-scanner.d.ts +99 -0
- package/dist/self-scanner/self-scanner.js +397 -0
- package/dist/self-scanner/self-scanner.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { SelfObserver } from './self-observer.js';
|
|
3
|
+
import type { AnomalyDetective } from './anomaly-detective.js';
|
|
4
|
+
import type { ResearchJournal } from './journal.js';
|
|
5
|
+
import type { HypothesisEngine } from '../hypothesis/engine.js';
|
|
6
|
+
import type { PredictionEngine } from '../prediction/prediction-engine.js';
|
|
7
|
+
import type { ParameterRegistry } from '../metacognition/parameter-registry.js';
|
|
8
|
+
export interface BootstrapConfig {
|
|
9
|
+
brainName: string;
|
|
10
|
+
engineCount: number;
|
|
11
|
+
mcpToolCount: number;
|
|
12
|
+
version: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BootstrapEngines {
|
|
15
|
+
selfObserver?: SelfObserver;
|
|
16
|
+
anomalyDetective?: AnomalyDetective;
|
|
17
|
+
journal?: ResearchJournal;
|
|
18
|
+
hypothesisEngine?: HypothesisEngine;
|
|
19
|
+
predictionEngine?: PredictionEngine;
|
|
20
|
+
parameterRegistry?: ParameterRegistry;
|
|
21
|
+
}
|
|
22
|
+
export interface BootstrapState {
|
|
23
|
+
bootstrapped: boolean;
|
|
24
|
+
bootstrapped_at: number | null;
|
|
25
|
+
observations_seeded: number;
|
|
26
|
+
journal_entries_seeded: number;
|
|
27
|
+
hypotheses_seeded: number;
|
|
28
|
+
predictions_seeded: number;
|
|
29
|
+
updated_at: string;
|
|
30
|
+
}
|
|
31
|
+
export interface BootstrapResult {
|
|
32
|
+
alreadyBootstrapped: boolean;
|
|
33
|
+
observations: number;
|
|
34
|
+
journalEntries: number;
|
|
35
|
+
hypotheses: number;
|
|
36
|
+
predictions: number;
|
|
37
|
+
metrics: number;
|
|
38
|
+
}
|
|
39
|
+
export declare function runBootstrapMigration(db: Database.Database): void;
|
|
40
|
+
export declare class BootstrapService {
|
|
41
|
+
private db;
|
|
42
|
+
private config;
|
|
43
|
+
private engines;
|
|
44
|
+
private log;
|
|
45
|
+
constructor(db: Database.Database, config: BootstrapConfig);
|
|
46
|
+
/** Wire engines after construction — missing engines are gracefully skipped. */
|
|
47
|
+
setEngines(engines: BootstrapEngines): void;
|
|
48
|
+
/** Run the 5-phase bootstrap. Idempotent — only runs once. */
|
|
49
|
+
bootstrap(): BootstrapResult;
|
|
50
|
+
/** Get current bootstrap state. */
|
|
51
|
+
getState(): BootstrapState;
|
|
52
|
+
private seedObservations;
|
|
53
|
+
private seedJournal;
|
|
54
|
+
private seedHypotheses;
|
|
55
|
+
private seedPredictions;
|
|
56
|
+
private seedMetrics;
|
|
57
|
+
}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
// ── Known research tables ───────────────────────────────
|
|
3
|
+
const RESEARCH_TABLES = [
|
|
4
|
+
'self_observations', 'self_insights', 'research_journal', 'hypotheses', 'observations',
|
|
5
|
+
'anomalies', 'metric_history', 'experiments', 'knowledge_base', 'research_agenda',
|
|
6
|
+
'cross_domain_events', 'cross_domain_correlations', 'causal_events', 'causal_edges',
|
|
7
|
+
'predictions', 'prediction_metrics', 'dream_history',
|
|
8
|
+
];
|
|
9
|
+
// ── Migration ───────────────────────────────────────────
|
|
10
|
+
export function runBootstrapMigration(db) {
|
|
11
|
+
db.exec(`
|
|
12
|
+
CREATE TABLE IF NOT EXISTS bootstrap_state (
|
|
13
|
+
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
14
|
+
bootstrapped INTEGER NOT NULL DEFAULT 0,
|
|
15
|
+
bootstrapped_at INTEGER,
|
|
16
|
+
observations_seeded INTEGER NOT NULL DEFAULT 0,
|
|
17
|
+
journal_entries_seeded INTEGER NOT NULL DEFAULT 0,
|
|
18
|
+
hypotheses_seeded INTEGER NOT NULL DEFAULT 0,
|
|
19
|
+
predictions_seeded INTEGER NOT NULL DEFAULT 0,
|
|
20
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
21
|
+
);
|
|
22
|
+
INSERT OR IGNORE INTO bootstrap_state (id) VALUES (1);
|
|
23
|
+
`);
|
|
24
|
+
}
|
|
25
|
+
// ── BootstrapService ────────────────────────────────────
|
|
26
|
+
export class BootstrapService {
|
|
27
|
+
db;
|
|
28
|
+
config;
|
|
29
|
+
engines = {};
|
|
30
|
+
log = getLogger();
|
|
31
|
+
constructor(db, config) {
|
|
32
|
+
this.db = db;
|
|
33
|
+
this.config = config;
|
|
34
|
+
runBootstrapMigration(db);
|
|
35
|
+
}
|
|
36
|
+
/** Wire engines after construction — missing engines are gracefully skipped. */
|
|
37
|
+
setEngines(engines) {
|
|
38
|
+
this.engines = engines;
|
|
39
|
+
}
|
|
40
|
+
/** Run the 5-phase bootstrap. Idempotent — only runs once. */
|
|
41
|
+
bootstrap() {
|
|
42
|
+
const state = this.getState();
|
|
43
|
+
if (state.bootstrapped) {
|
|
44
|
+
this.log.info(`[bootstrap] Already bootstrapped at ${state.bootstrapped_at}`);
|
|
45
|
+
return { alreadyBootstrapped: true, observations: 0, journalEntries: 0, hypotheses: 0, predictions: 0, metrics: 0 };
|
|
46
|
+
}
|
|
47
|
+
this.log.info(`[bootstrap] Starting cold-start bootstrap for ${this.config.brainName}...`);
|
|
48
|
+
const start = Date.now();
|
|
49
|
+
const observations = this.seedObservations();
|
|
50
|
+
const journalEntries = this.seedJournal();
|
|
51
|
+
const hypotheses = this.seedHypotheses();
|
|
52
|
+
const predictions = this.seedPredictions();
|
|
53
|
+
const metrics = this.seedMetrics();
|
|
54
|
+
// Mark as bootstrapped
|
|
55
|
+
this.db.prepare(`
|
|
56
|
+
UPDATE bootstrap_state SET
|
|
57
|
+
bootstrapped = 1,
|
|
58
|
+
bootstrapped_at = ?,
|
|
59
|
+
observations_seeded = ?,
|
|
60
|
+
journal_entries_seeded = ?,
|
|
61
|
+
hypotheses_seeded = ?,
|
|
62
|
+
predictions_seeded = ?,
|
|
63
|
+
updated_at = datetime('now')
|
|
64
|
+
WHERE id = 1
|
|
65
|
+
`).run(Date.now(), observations, journalEntries, hypotheses, predictions);
|
|
66
|
+
const duration = Date.now() - start;
|
|
67
|
+
this.log.info(`[bootstrap] Complete in ${duration}ms: ${observations} observations, ${journalEntries} journal, ` +
|
|
68
|
+
`${hypotheses} hypotheses, ${predictions} predictions, ${metrics} metrics seeded`);
|
|
69
|
+
return { alreadyBootstrapped: false, observations, journalEntries, hypotheses, predictions, metrics };
|
|
70
|
+
}
|
|
71
|
+
/** Get current bootstrap state. */
|
|
72
|
+
getState() {
|
|
73
|
+
const row = this.db.prepare('SELECT * FROM bootstrap_state WHERE id = 1').get();
|
|
74
|
+
if (!row) {
|
|
75
|
+
return { bootstrapped: false, bootstrapped_at: null, observations_seeded: 0, journal_entries_seeded: 0, hypotheses_seeded: 0, predictions_seeded: 0, updated_at: '' };
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
bootstrapped: row.bootstrapped === 1,
|
|
79
|
+
bootstrapped_at: row.bootstrapped_at,
|
|
80
|
+
observations_seeded: row.observations_seeded,
|
|
81
|
+
journal_entries_seeded: row.journal_entries_seeded,
|
|
82
|
+
hypotheses_seeded: row.hypotheses_seeded,
|
|
83
|
+
predictions_seeded: row.predictions_seeded,
|
|
84
|
+
updated_at: row.updated_at,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// ── Phase 1: Seed Observations ────────────────────────
|
|
88
|
+
seedObservations() {
|
|
89
|
+
if (!this.engines.selfObserver)
|
|
90
|
+
return 0;
|
|
91
|
+
let count = 0;
|
|
92
|
+
// 1a. DB table sizes — count rows in known research tables
|
|
93
|
+
for (const table of RESEARCH_TABLES) {
|
|
94
|
+
try {
|
|
95
|
+
const row = this.db.prepare(`SELECT COUNT(*) as cnt FROM ${table}`).get();
|
|
96
|
+
this.engines.selfObserver.record({
|
|
97
|
+
category: 'tool_usage',
|
|
98
|
+
event_type: `table_size:${table}`,
|
|
99
|
+
metrics: { row_count: row.cnt, table },
|
|
100
|
+
});
|
|
101
|
+
count++;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Table doesn't exist yet — skip
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// 1b. Parameter landscape — read up to 15 parameters
|
|
108
|
+
if (this.engines.parameterRegistry) {
|
|
109
|
+
try {
|
|
110
|
+
const params = this.engines.parameterRegistry.list();
|
|
111
|
+
const toSeed = params.slice(0, 15);
|
|
112
|
+
for (const p of toSeed) {
|
|
113
|
+
this.engines.selfObserver.record({
|
|
114
|
+
category: 'tool_usage',
|
|
115
|
+
event_type: `parameter:${p.engine}.${p.name}`,
|
|
116
|
+
metrics: { value: p.value, min: p.min, max: p.max },
|
|
117
|
+
});
|
|
118
|
+
count++;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// ParameterRegistry not ready
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// 1c. System state — 5 observations
|
|
126
|
+
const systemObs = [
|
|
127
|
+
{ event_type: 'system:engine_count', metrics: { count: this.config.engineCount } },
|
|
128
|
+
{ event_type: 'system:mcp_tool_count', metrics: { count: this.config.mcpToolCount } },
|
|
129
|
+
{ event_type: 'system:startup_time', metrics: { timestamp: Date.now() } },
|
|
130
|
+
{ event_type: 'system:memory_rss', metrics: { bytes: process.memoryUsage().rss } },
|
|
131
|
+
{ event_type: 'system:version', metrics: { version: this.config.version, brain: this.config.brainName } },
|
|
132
|
+
];
|
|
133
|
+
for (const obs of systemObs) {
|
|
134
|
+
this.engines.selfObserver.record({
|
|
135
|
+
category: 'tool_usage',
|
|
136
|
+
event_type: obs.event_type,
|
|
137
|
+
metrics: obs.metrics,
|
|
138
|
+
});
|
|
139
|
+
count++;
|
|
140
|
+
}
|
|
141
|
+
this.log.info(`[bootstrap] Phase 1: ${count} observations seeded`);
|
|
142
|
+
return count;
|
|
143
|
+
}
|
|
144
|
+
// ── Phase 2: Seed Journal ─────────────────────────────
|
|
145
|
+
seedJournal() {
|
|
146
|
+
if (!this.engines.journal)
|
|
147
|
+
return 0;
|
|
148
|
+
let count = 0;
|
|
149
|
+
const { brainName, version, engineCount, mcpToolCount } = this.config;
|
|
150
|
+
// Entry 1: Brain initialized
|
|
151
|
+
this.engines.journal.write({
|
|
152
|
+
type: 'milestone',
|
|
153
|
+
title: `${brainName} initialized (v${version})`,
|
|
154
|
+
content: `Brain started with ${engineCount} engines and ${mcpToolCount} MCP tools. Cold-start bootstrap active.`,
|
|
155
|
+
tags: [brainName, 'bootstrap', 'init'],
|
|
156
|
+
references: [],
|
|
157
|
+
significance: 'notable',
|
|
158
|
+
data: { version, engineCount, mcpToolCount, phase: 'bootstrap' },
|
|
159
|
+
});
|
|
160
|
+
count++;
|
|
161
|
+
// Entry 2: Architecture baseline
|
|
162
|
+
const tableCounts = {};
|
|
163
|
+
for (const table of RESEARCH_TABLES) {
|
|
164
|
+
try {
|
|
165
|
+
const row = this.db.prepare(`SELECT COUNT(*) as cnt FROM ${table}`).get();
|
|
166
|
+
tableCounts[table] = row.cnt;
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// skip
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.engines.journal.write({
|
|
173
|
+
type: 'discovery',
|
|
174
|
+
title: 'Architecture baseline recorded',
|
|
175
|
+
content: `Database has ${Object.keys(tableCounts).length} research tables. ${JSON.stringify(tableCounts)}`,
|
|
176
|
+
tags: [brainName, 'bootstrap', 'baseline'],
|
|
177
|
+
references: [],
|
|
178
|
+
significance: 'routine',
|
|
179
|
+
data: { tableCounts },
|
|
180
|
+
});
|
|
181
|
+
count++;
|
|
182
|
+
// Entry 3: Cold-start bootstrap complete
|
|
183
|
+
this.engines.journal.write({
|
|
184
|
+
type: 'discovery',
|
|
185
|
+
title: 'Cold-start bootstrap complete',
|
|
186
|
+
content: 'Initial seed data generated from self-introspection. Engines should now have enough data to produce output from cycle 1.',
|
|
187
|
+
tags: [brainName, 'bootstrap', 'cold-start'],
|
|
188
|
+
references: [],
|
|
189
|
+
significance: 'routine',
|
|
190
|
+
data: { phase: 'complete' },
|
|
191
|
+
});
|
|
192
|
+
count++;
|
|
193
|
+
// Entry 4: Parameter count (only if registry available)
|
|
194
|
+
if (this.engines.parameterRegistry) {
|
|
195
|
+
try {
|
|
196
|
+
const params = this.engines.parameterRegistry.list();
|
|
197
|
+
this.engines.journal.write({
|
|
198
|
+
type: 'discovery',
|
|
199
|
+
title: `${params.length} tunable parameters registered`,
|
|
200
|
+
content: `ParameterRegistry contains ${params.length} parameters across ${new Set(params.map(p => p.engine)).size} engines.`,
|
|
201
|
+
tags: [brainName, 'bootstrap', 'parameters'],
|
|
202
|
+
references: [],
|
|
203
|
+
significance: 'routine',
|
|
204
|
+
data: { parameterCount: params.length },
|
|
205
|
+
});
|
|
206
|
+
count++;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// skip
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
this.log.info(`[bootstrap] Phase 2: ${count} journal entries seeded`);
|
|
213
|
+
return count;
|
|
214
|
+
}
|
|
215
|
+
// ── Phase 3: Seed Hypotheses ──────────────────────────
|
|
216
|
+
seedHypotheses() {
|
|
217
|
+
if (!this.engines.hypothesisEngine)
|
|
218
|
+
return 0;
|
|
219
|
+
let count = 0;
|
|
220
|
+
const seeds = [
|
|
221
|
+
{
|
|
222
|
+
statement: 'Higher dream.prune_threshold leads to fewer but higher-quality memories',
|
|
223
|
+
variables: ['dream.prune_threshold', 'memory_quality'],
|
|
224
|
+
condition: { type: 'correlation', params: { strategy: 'bootstrap_seed', domain: 'dream' } },
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
statement: 'Attention decay rate correlates with focus duration',
|
|
228
|
+
variables: ['attention.decay_rate', 'focus_duration'],
|
|
229
|
+
condition: { type: 'correlation', params: { strategy: 'bootstrap_seed', domain: 'attention' } },
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
statement: 'More observation types lead to more hypotheses per cycle',
|
|
233
|
+
variables: ['observation_type_count', 'hypothesis_per_cycle'],
|
|
234
|
+
condition: { type: 'correlation', params: { strategy: 'bootstrap_seed', domain: 'hypothesis' } },
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
statement: 'Journal entry count grows linearly over cycles',
|
|
238
|
+
variables: ['journal_entries', 'cycle_count'],
|
|
239
|
+
condition: { type: 'threshold', params: { strategy: 'bootstrap_seed', domain: 'journal' } },
|
|
240
|
+
},
|
|
241
|
+
];
|
|
242
|
+
for (const seed of seeds) {
|
|
243
|
+
// Duplicate check
|
|
244
|
+
const existing = this.db.prepare("SELECT id FROM hypotheses WHERE statement = ? AND status != 'rejected'").get(seed.statement);
|
|
245
|
+
if (existing)
|
|
246
|
+
continue;
|
|
247
|
+
try {
|
|
248
|
+
this.engines.hypothesisEngine.propose({
|
|
249
|
+
statement: seed.statement,
|
|
250
|
+
type: 'correlation',
|
|
251
|
+
source: 'bootstrap',
|
|
252
|
+
variables: seed.variables,
|
|
253
|
+
condition: seed.condition,
|
|
254
|
+
});
|
|
255
|
+
count++;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
// skip
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
this.log.info(`[bootstrap] Phase 3: ${count} hypotheses seeded`);
|
|
262
|
+
return count;
|
|
263
|
+
}
|
|
264
|
+
// ── Phase 4: Seed Predictions ─────────────────────────
|
|
265
|
+
seedPredictions() {
|
|
266
|
+
if (!this.engines.predictionEngine)
|
|
267
|
+
return 0;
|
|
268
|
+
let count = 0;
|
|
269
|
+
const now = Date.now();
|
|
270
|
+
const metricsToSeed = ['journal_entries', 'observation_count', 'hypothesis_count'];
|
|
271
|
+
for (const metric of metricsToSeed) {
|
|
272
|
+
// Seed 5 data points with slightly varying values over the last 5 intervals
|
|
273
|
+
for (let i = 4; i >= 0; i--) {
|
|
274
|
+
const timestamp = now - (i * 300_000); // 5-min intervals
|
|
275
|
+
const baseValue = metric === 'journal_entries' ? 3 + i : metric === 'observation_count' ? 10 + i * 2 : 1 + i;
|
|
276
|
+
this.db.prepare(`
|
|
277
|
+
INSERT INTO prediction_metrics (metric, value, domain, timestamp) VALUES (?, ?, ?, ?)
|
|
278
|
+
`).run(metric, baseValue, 'metric', timestamp);
|
|
279
|
+
count++;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
this.log.info(`[bootstrap] Phase 4: ${count} prediction data points seeded`);
|
|
283
|
+
return count;
|
|
284
|
+
}
|
|
285
|
+
// ── Phase 5: Seed Metrics ─────────────────────────────
|
|
286
|
+
seedMetrics() {
|
|
287
|
+
if (!this.engines.anomalyDetective)
|
|
288
|
+
return 0;
|
|
289
|
+
let count = 0;
|
|
290
|
+
const now = Date.now();
|
|
291
|
+
const anomalyMetrics = ['insight_count', 'anomaly_count', 'cycle_duration_ms', 'journal_entries', 'hypothesis_count'];
|
|
292
|
+
for (const metric of anomalyMetrics) {
|
|
293
|
+
// Seed 5 baseline data points over the last 5 intervals
|
|
294
|
+
for (let i = 4; i >= 0; i--) {
|
|
295
|
+
const timestamp = now - (i * 300_000);
|
|
296
|
+
let baseValue;
|
|
297
|
+
switch (metric) {
|
|
298
|
+
case 'insight_count':
|
|
299
|
+
baseValue = 1 + Math.floor(i * 0.5);
|
|
300
|
+
break;
|
|
301
|
+
case 'anomaly_count':
|
|
302
|
+
baseValue = 0;
|
|
303
|
+
break;
|
|
304
|
+
case 'cycle_duration_ms':
|
|
305
|
+
baseValue = 150 + i * 10;
|
|
306
|
+
break;
|
|
307
|
+
case 'journal_entries':
|
|
308
|
+
baseValue = 3 + i;
|
|
309
|
+
break;
|
|
310
|
+
case 'hypothesis_count':
|
|
311
|
+
baseValue = 1 + i;
|
|
312
|
+
break;
|
|
313
|
+
default: baseValue = 0;
|
|
314
|
+
}
|
|
315
|
+
this.db.prepare(`
|
|
316
|
+
INSERT INTO metric_history (metric, value, timestamp) VALUES (?, ?, ?)
|
|
317
|
+
`).run(metric, baseValue, timestamp);
|
|
318
|
+
count++;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
this.log.info(`[bootstrap] Phase 5: ${count} anomaly baseline metrics seeded`);
|
|
322
|
+
return count;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=bootstrap-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-service.js","sourceRoot":"","sources":["../../src/research/bootstrap-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,7 @@ export interface DataMinerEngines {
|
|
|
60
60
|
export interface DataMinerState {
|
|
61
61
|
last_mined_at: number;
|
|
62
62
|
bootstrap_complete: boolean;
|
|
63
|
+
bootstrap_attempts: number;
|
|
63
64
|
total_observations_mined: number;
|
|
64
65
|
total_causal_events_mined: number;
|
|
65
66
|
total_metrics_mined: number;
|
|
@@ -6,6 +6,7 @@ export function runDataMinerMigration(db) {
|
|
|
6
6
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
7
7
|
last_mined_at INTEGER NOT NULL DEFAULT 0,
|
|
8
8
|
bootstrap_complete INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
bootstrap_attempts INTEGER NOT NULL DEFAULT 0,
|
|
9
10
|
total_observations_mined INTEGER NOT NULL DEFAULT 0,
|
|
10
11
|
total_causal_events_mined INTEGER NOT NULL DEFAULT 0,
|
|
11
12
|
total_metrics_mined INTEGER NOT NULL DEFAULT 0,
|
|
@@ -13,6 +14,13 @@ export function runDataMinerMigration(db) {
|
|
|
13
14
|
);
|
|
14
15
|
INSERT OR IGNORE INTO data_miner_state (id) VALUES (1);
|
|
15
16
|
`);
|
|
17
|
+
// Graceful ALTER TABLE for existing DBs
|
|
18
|
+
try {
|
|
19
|
+
db.exec('ALTER TABLE data_miner_state ADD COLUMN bootstrap_attempts INTEGER NOT NULL DEFAULT 0');
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Column already exists
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
// ── DataMiner ───────────────────────────────────────────
|
|
18
26
|
export class DataMiner {
|
|
@@ -41,15 +49,22 @@ export class DataMiner {
|
|
|
41
49
|
return;
|
|
42
50
|
}
|
|
43
51
|
const names = this.adapters.map(a => a.name).join(', ');
|
|
44
|
-
this.
|
|
52
|
+
this.state.bootstrap_attempts++;
|
|
53
|
+
this.log.info(`[data-miner] Bootstrapping ${names} — attempt ${this.state.bootstrap_attempts}, scanning all historical data...`);
|
|
45
54
|
const start = Date.now();
|
|
46
55
|
// Mine everything from epoch
|
|
47
56
|
const result = this.mineFrom(0);
|
|
48
|
-
|
|
57
|
+
// Only mark complete if we actually mined something, OR safety valve after 10 attempts
|
|
58
|
+
if (result.total > 0 || this.state.bootstrap_attempts >= 10) {
|
|
59
|
+
this.state.bootstrap_complete = true;
|
|
60
|
+
if (result.total === 0) {
|
|
61
|
+
this.log.info(`[data-miner] Safety valve: marking bootstrap complete after ${this.state.bootstrap_attempts} attempts with 0 items (BootstrapService will seed data instead)`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
49
64
|
this.state.last_mined_at = Date.now();
|
|
50
65
|
this.saveState();
|
|
51
66
|
const duration = Date.now() - start;
|
|
52
|
-
this.log.info(`[data-miner] Bootstrap complete for ${names} in ${duration}ms — ` +
|
|
67
|
+
this.log.info(`[data-miner] Bootstrap ${this.state.bootstrap_complete ? 'complete' : 'incomplete (0 items)'} for ${names} in ${duration}ms — ` +
|
|
53
68
|
`${result.observations} observations, ${result.causalEvents} causal events, ` +
|
|
54
69
|
`${result.metrics} metrics, ${result.hypothesisObs} hypothesis observations, ` +
|
|
55
70
|
`${result.crossDomain} cross-domain events`);
|
|
@@ -158,11 +173,12 @@ export class DataMiner {
|
|
|
158
173
|
loadState() {
|
|
159
174
|
const row = this.db.prepare('SELECT * FROM data_miner_state WHERE id = 1').get();
|
|
160
175
|
if (!row) {
|
|
161
|
-
return { last_mined_at: 0, bootstrap_complete: false, total_observations_mined: 0, total_causal_events_mined: 0, total_metrics_mined: 0 };
|
|
176
|
+
return { last_mined_at: 0, bootstrap_complete: false, bootstrap_attempts: 0, total_observations_mined: 0, total_causal_events_mined: 0, total_metrics_mined: 0 };
|
|
162
177
|
}
|
|
163
178
|
return {
|
|
164
179
|
last_mined_at: row.last_mined_at,
|
|
165
180
|
bootstrap_complete: row.bootstrap_complete === 1,
|
|
181
|
+
bootstrap_attempts: row.bootstrap_attempts ?? 0,
|
|
166
182
|
total_observations_mined: row.total_observations_mined,
|
|
167
183
|
total_causal_events_mined: row.total_causal_events_mined,
|
|
168
184
|
total_metrics_mined: row.total_metrics_mined,
|
|
@@ -173,12 +189,13 @@ export class DataMiner {
|
|
|
173
189
|
UPDATE data_miner_state SET
|
|
174
190
|
last_mined_at = ?,
|
|
175
191
|
bootstrap_complete = ?,
|
|
192
|
+
bootstrap_attempts = ?,
|
|
176
193
|
total_observations_mined = ?,
|
|
177
194
|
total_causal_events_mined = ?,
|
|
178
195
|
total_metrics_mined = ?,
|
|
179
196
|
updated_at = datetime('now')
|
|
180
197
|
WHERE id = 1
|
|
181
|
-
`).run(this.state.last_mined_at, this.state.bootstrap_complete ? 1 : 0, this.state.total_observations_mined, this.state.total_causal_events_mined, this.state.total_metrics_mined);
|
|
198
|
+
`).run(this.state.last_mined_at, this.state.bootstrap_complete ? 1 : 0, this.state.bootstrap_attempts, this.state.total_observations_mined, this.state.total_causal_events_mined, this.state.total_metrics_mined);
|
|
182
199
|
}
|
|
183
200
|
}
|
|
184
201
|
//# sourceMappingURL=data-miner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-miner.js","sourceRoot":"","sources":["../../src/research/data-miner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-miner.js","sourceRoot":"","sources":["../../src/research/data-miner.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,9 @@ import type { GoalEngine } from '../goals/goal-engine.js';
|
|
|
36
36
|
import type { EvolutionEngine } from '../metacognition/evolution-engine.js';
|
|
37
37
|
import type { ReasoningEngine } from '../reasoning/reasoning-engine.js';
|
|
38
38
|
import type { EmotionalModel } from '../emotional/emotional-model.js';
|
|
39
|
+
import type { SelfScanner } from '../self-scanner/self-scanner.js';
|
|
40
|
+
import type { SelfModificationEngine } from '../self-modification/self-modification-engine.js';
|
|
41
|
+
import type { BootstrapService } from './bootstrap-service.js';
|
|
39
42
|
import { AutoResponder } from './auto-responder.js';
|
|
40
43
|
export interface ResearchOrchestratorConfig {
|
|
41
44
|
brainName: string;
|
|
@@ -86,6 +89,9 @@ export declare class ResearchOrchestrator {
|
|
|
86
89
|
private evolutionEngine;
|
|
87
90
|
private reasoningEngine;
|
|
88
91
|
private emotionalModel;
|
|
92
|
+
private selfScanner;
|
|
93
|
+
private selfModificationEngine;
|
|
94
|
+
private bootstrapService;
|
|
89
95
|
private brainName;
|
|
90
96
|
private feedbackTimer;
|
|
91
97
|
private cycleCount;
|
|
@@ -146,6 +152,12 @@ export declare class ResearchOrchestrator {
|
|
|
146
152
|
/** Set the ReasoningEngine — multi-step logical inference chains. */
|
|
147
153
|
setReasoningEngine(engine: ReasoningEngine): void;
|
|
148
154
|
setEmotionalModel(model: EmotionalModel): void;
|
|
155
|
+
/** Set the SelfScanner — indexes own source code for self-modification context. */
|
|
156
|
+
setSelfScanner(scanner: SelfScanner): void;
|
|
157
|
+
/** Set the SelfModificationEngine — generates and applies code changes autonomously. */
|
|
158
|
+
setSelfModificationEngine(engine: SelfModificationEngine): void;
|
|
159
|
+
/** Set the BootstrapService — seeds initial data on first cycle. */
|
|
160
|
+
setBootstrapService(service: BootstrapService): void;
|
|
149
161
|
/** Set the PredictionEngine — wires journal into it. */
|
|
150
162
|
setPredictionEngine(engine: PredictionEngine): void;
|
|
151
163
|
/** Start the autonomous feedback loop timer. */
|
|
@@ -192,6 +204,8 @@ export declare class ResearchOrchestrator {
|
|
|
192
204
|
/** Append improvement suggestions to ~/.brain/improvement-requests.md.
|
|
193
205
|
* Skips writing if suggestions are identical to the last write (dedup). */
|
|
194
206
|
private writeSuggestionsToFile;
|
|
207
|
+
/** Find a concrete self-improvement suggestion that maps to specific files. */
|
|
208
|
+
private findActionableSuggestion;
|
|
195
209
|
/** Get a comprehensive research summary for dashboards/API. */
|
|
196
210
|
getSummary(): Record<string, unknown>;
|
|
197
211
|
}
|