@timmeck/brain-core 2.4.0 → 2.6.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/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/research/adaptive-strategy.d.ts +56 -0
- package/dist/research/adaptive-strategy.js +236 -0
- package/dist/research/adaptive-strategy.js.map +1 -0
- package/dist/research/agenda-engine.d.ts +46 -0
- package/dist/research/agenda-engine.js +264 -0
- package/dist/research/agenda-engine.js.map +1 -0
- package/dist/research/anomaly-detective.d.ts +62 -0
- package/dist/research/anomaly-detective.js +318 -0
- package/dist/research/anomaly-detective.js.map +1 -0
- package/dist/research/autonomous-scheduler.d.ts +124 -0
- package/dist/research/autonomous-scheduler.js +411 -0
- package/dist/research/autonomous-scheduler.js.map +1 -0
- package/dist/research/counterfactual-engine.d.ts +63 -0
- package/dist/research/counterfactual-engine.js +263 -0
- package/dist/research/counterfactual-engine.js.map +1 -0
- package/dist/research/cross-domain-engine.d.ts +52 -0
- package/dist/research/cross-domain-engine.js +283 -0
- package/dist/research/cross-domain-engine.js.map +1 -0
- package/dist/research/experiment-engine.d.ts +77 -0
- package/dist/research/experiment-engine.js +328 -0
- package/dist/research/experiment-engine.js.map +1 -0
- package/dist/research/journal.d.ts +62 -0
- package/dist/research/journal.js +262 -0
- package/dist/research/journal.js.map +1 -0
- package/dist/research/knowledge-distiller.d.ts +95 -0
- package/dist/research/knowledge-distiller.js +426 -0
- package/dist/research/knowledge-distiller.js.map +1 -0
- package/dist/research/self-observer.d.ts +55 -0
- package/dist/research/self-observer.js +268 -0
- package/dist/research/self-observer.js.map +1 -0
- package/package.json +2 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anomaly-detective.js","sourceRoot":"","sources":["../../src/research/anomaly-detective.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import { MetaLearningEngine } from '../meta-learning/engine.js';
|
|
3
|
+
import type { HyperParameter } from '../meta-learning/engine.js';
|
|
4
|
+
import { CausalGraph } from '../causal/engine.js';
|
|
5
|
+
import { HypothesisEngine } from '../hypothesis/engine.js';
|
|
6
|
+
export interface ResearchDiscovery {
|
|
7
|
+
id?: number;
|
|
8
|
+
type: 'causal_chain' | 'confirmed_hypothesis' | 'parameter_optimization' | 'anomaly' | 'root_cause';
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
confidence: number;
|
|
12
|
+
impact: number;
|
|
13
|
+
source: string;
|
|
14
|
+
data: Record<string, unknown>;
|
|
15
|
+
created_at?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ResearchCycleReport {
|
|
18
|
+
cycle: number;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
causalEdgesFound: number;
|
|
21
|
+
causalChainsFound: number;
|
|
22
|
+
hypothesesGenerated: number;
|
|
23
|
+
hypothesesTested: number;
|
|
24
|
+
hypothesesConfirmed: number;
|
|
25
|
+
hypothesesRejected: number;
|
|
26
|
+
parametersOptimized: number;
|
|
27
|
+
discoveriesProduced: number;
|
|
28
|
+
duration: number;
|
|
29
|
+
}
|
|
30
|
+
export interface AutonomousResearchConfig {
|
|
31
|
+
/** How often to run the full research cycle (ms). Default: 600_000 (10 min) */
|
|
32
|
+
intervalMs?: number;
|
|
33
|
+
/** Initial delay before first cycle (ms). Default: 30_000 (30s) */
|
|
34
|
+
initialDelayMs?: number;
|
|
35
|
+
/** Brain name for event attribution. */
|
|
36
|
+
brainName: string;
|
|
37
|
+
/** Hyperparameters for meta-learning. */
|
|
38
|
+
hyperParams?: HyperParameter[];
|
|
39
|
+
/** Minimum causal edge strength to produce a discovery. Default: 0.3 */
|
|
40
|
+
minCausalStrength?: number;
|
|
41
|
+
/** Maximum discoveries per cycle. Default: 10 */
|
|
42
|
+
maxDiscoveriesPerCycle?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function runResearchDiscoveryMigration(db: Database.Database): void;
|
|
45
|
+
/**
|
|
46
|
+
* Autonomous Research Scheduler: orchestrates the three research engines
|
|
47
|
+
* into a self-running discovery pipeline.
|
|
48
|
+
*
|
|
49
|
+
* Flow:
|
|
50
|
+
* 1. External code calls onLearningCycleComplete() after each learning cycle
|
|
51
|
+
* → feeds metrics into MetaLearningEngine
|
|
52
|
+
* → records causal events
|
|
53
|
+
* → records observations for hypothesis engine
|
|
54
|
+
*
|
|
55
|
+
* 2. On a timer (every intervalMs), runs a full research cycle:
|
|
56
|
+
* a. Run causal analysis → detect cause-effect relationships
|
|
57
|
+
* b. Auto-generate hypotheses from observation patterns
|
|
58
|
+
* c. Test all pending hypotheses
|
|
59
|
+
* d. Run meta-learning optimization (if enough data)
|
|
60
|
+
* e. Produce discoveries from confirmed hypotheses + causal chains
|
|
61
|
+
* f. Store everything in SQLite
|
|
62
|
+
*/
|
|
63
|
+
export declare class AutonomousResearchScheduler {
|
|
64
|
+
private db;
|
|
65
|
+
private logger;
|
|
66
|
+
private timer;
|
|
67
|
+
private delayTimer;
|
|
68
|
+
private cycleCount;
|
|
69
|
+
private running;
|
|
70
|
+
readonly metaLearning: MetaLearningEngine;
|
|
71
|
+
readonly causalGraph: CausalGraph;
|
|
72
|
+
readonly hypothesisEngine: HypothesisEngine;
|
|
73
|
+
private brainName;
|
|
74
|
+
private intervalMs;
|
|
75
|
+
private initialDelayMs;
|
|
76
|
+
private minCausalStrength;
|
|
77
|
+
private maxDiscoveriesPerCycle;
|
|
78
|
+
constructor(db: Database.Database, config: AutonomousResearchConfig);
|
|
79
|
+
/** Start the autonomous research timer. */
|
|
80
|
+
start(): void;
|
|
81
|
+
/** Stop the autonomous research timer. */
|
|
82
|
+
stop(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Call this after each learning cycle completes.
|
|
85
|
+
* Feeds the cycle results into all three research engines.
|
|
86
|
+
*/
|
|
87
|
+
onLearningCycleComplete(metrics: Record<string, number>, score: number, eventType?: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* Record a domain event for causal + hypothesis tracking.
|
|
90
|
+
* Call this from event listeners in each brain.
|
|
91
|
+
*/
|
|
92
|
+
recordEvent(eventType: string, data?: Record<string, unknown>): void;
|
|
93
|
+
/**
|
|
94
|
+
* Run one full autonomous research cycle.
|
|
95
|
+
* This is the core algorithm — the system thinking about itself.
|
|
96
|
+
*/
|
|
97
|
+
runCycle(): ResearchCycleReport;
|
|
98
|
+
/** Get all discoveries, optionally filtered by type. */
|
|
99
|
+
getDiscoveries(type?: string, limit?: number): ResearchDiscovery[];
|
|
100
|
+
/** Get cycle reports. */
|
|
101
|
+
getCycleReports(limit?: number): ResearchCycleReport[];
|
|
102
|
+
/** Get a comprehensive research status. */
|
|
103
|
+
getStatus(): {
|
|
104
|
+
cyclesCompleted: number;
|
|
105
|
+
totalDiscoveries: number;
|
|
106
|
+
discoveryBreakdown: Record<string, number>;
|
|
107
|
+
metaLearningStatus: ReturnType<MetaLearningEngine['getStatus']>;
|
|
108
|
+
causalAnalysis: ReturnType<CausalGraph['getAnalysis']>;
|
|
109
|
+
hypothesisSummary: ReturnType<HypothesisEngine['getSummary']>;
|
|
110
|
+
lastCycleReport: ResearchCycleReport | null;
|
|
111
|
+
isRunning: boolean;
|
|
112
|
+
};
|
|
113
|
+
private safeRunCycle;
|
|
114
|
+
/**
|
|
115
|
+
* Produce discoveries from research findings.
|
|
116
|
+
* This is where data becomes insight.
|
|
117
|
+
*/
|
|
118
|
+
private produceDiscoveries;
|
|
119
|
+
private findSignificantRoots;
|
|
120
|
+
private isDuplicateDiscovery;
|
|
121
|
+
private storeDiscovery;
|
|
122
|
+
private storeCycleReport;
|
|
123
|
+
private emptyReport;
|
|
124
|
+
}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
import { MetaLearningEngine } from '../meta-learning/engine.js';
|
|
3
|
+
import { CausalGraph } from '../causal/engine.js';
|
|
4
|
+
import { HypothesisEngine } from '../hypothesis/engine.js';
|
|
5
|
+
// ── Migration ───────────────────────────────────────────
|
|
6
|
+
export function runResearchDiscoveryMigration(db) {
|
|
7
|
+
db.exec(`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS research_discoveries (
|
|
9
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
10
|
+
type TEXT NOT NULL,
|
|
11
|
+
title TEXT NOT NULL,
|
|
12
|
+
description TEXT NOT NULL,
|
|
13
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
14
|
+
impact REAL NOT NULL DEFAULT 0,
|
|
15
|
+
source TEXT NOT NULL,
|
|
16
|
+
data TEXT NOT NULL DEFAULT '{}',
|
|
17
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE IF NOT EXISTS research_cycle_reports (
|
|
21
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
22
|
+
cycle INTEGER NOT NULL,
|
|
23
|
+
timestamp INTEGER NOT NULL,
|
|
24
|
+
causal_edges_found INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
causal_chains_found INTEGER NOT NULL DEFAULT 0,
|
|
26
|
+
hypotheses_generated INTEGER NOT NULL DEFAULT 0,
|
|
27
|
+
hypotheses_tested INTEGER NOT NULL DEFAULT 0,
|
|
28
|
+
hypotheses_confirmed INTEGER NOT NULL DEFAULT 0,
|
|
29
|
+
hypotheses_rejected INTEGER NOT NULL DEFAULT 0,
|
|
30
|
+
parameters_optimized INTEGER NOT NULL DEFAULT 0,
|
|
31
|
+
discoveries_produced INTEGER NOT NULL DEFAULT 0,
|
|
32
|
+
duration INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_discoveries_type ON research_discoveries(type);
|
|
37
|
+
CREATE INDEX IF NOT EXISTS idx_discoveries_confidence ON research_discoveries(confidence DESC);
|
|
38
|
+
CREATE INDEX IF NOT EXISTS idx_cycle_reports_cycle ON research_cycle_reports(cycle);
|
|
39
|
+
`);
|
|
40
|
+
}
|
|
41
|
+
// ── Scheduler ───────────────────────────────────────────
|
|
42
|
+
/**
|
|
43
|
+
* Autonomous Research Scheduler: orchestrates the three research engines
|
|
44
|
+
* into a self-running discovery pipeline.
|
|
45
|
+
*
|
|
46
|
+
* Flow:
|
|
47
|
+
* 1. External code calls onLearningCycleComplete() after each learning cycle
|
|
48
|
+
* → feeds metrics into MetaLearningEngine
|
|
49
|
+
* → records causal events
|
|
50
|
+
* → records observations for hypothesis engine
|
|
51
|
+
*
|
|
52
|
+
* 2. On a timer (every intervalMs), runs a full research cycle:
|
|
53
|
+
* a. Run causal analysis → detect cause-effect relationships
|
|
54
|
+
* b. Auto-generate hypotheses from observation patterns
|
|
55
|
+
* c. Test all pending hypotheses
|
|
56
|
+
* d. Run meta-learning optimization (if enough data)
|
|
57
|
+
* e. Produce discoveries from confirmed hypotheses + causal chains
|
|
58
|
+
* f. Store everything in SQLite
|
|
59
|
+
*/
|
|
60
|
+
export class AutonomousResearchScheduler {
|
|
61
|
+
db;
|
|
62
|
+
logger = getLogger();
|
|
63
|
+
timer = null;
|
|
64
|
+
delayTimer = null;
|
|
65
|
+
cycleCount = 0;
|
|
66
|
+
running = false;
|
|
67
|
+
metaLearning;
|
|
68
|
+
causalGraph;
|
|
69
|
+
hypothesisEngine;
|
|
70
|
+
brainName;
|
|
71
|
+
intervalMs;
|
|
72
|
+
initialDelayMs;
|
|
73
|
+
minCausalStrength;
|
|
74
|
+
maxDiscoveriesPerCycle;
|
|
75
|
+
constructor(db, config) {
|
|
76
|
+
this.db = db;
|
|
77
|
+
runResearchDiscoveryMigration(db);
|
|
78
|
+
this.brainName = config.brainName;
|
|
79
|
+
this.intervalMs = config.intervalMs ?? 600_000;
|
|
80
|
+
this.initialDelayMs = config.initialDelayMs ?? 30_000;
|
|
81
|
+
this.minCausalStrength = config.minCausalStrength ?? 0.3;
|
|
82
|
+
this.maxDiscoveriesPerCycle = config.maxDiscoveriesPerCycle ?? 10;
|
|
83
|
+
// Default hyperparameters if none provided
|
|
84
|
+
const hyperParams = config.hyperParams ?? [
|
|
85
|
+
{ name: 'learningRate', value: 0.1, min: 0.01, max: 0.5, step: 0.02 },
|
|
86
|
+
{ name: 'decayRate', value: 0.05, min: 0.01, max: 0.2, step: 0.01 },
|
|
87
|
+
{ name: 'pruneThreshold', value: 0.1, min: 0.01, max: 0.5, step: 0.02 },
|
|
88
|
+
];
|
|
89
|
+
this.metaLearning = new MetaLearningEngine(db, hyperParams);
|
|
90
|
+
this.causalGraph = new CausalGraph(db);
|
|
91
|
+
this.hypothesisEngine = new HypothesisEngine(db);
|
|
92
|
+
}
|
|
93
|
+
/** Start the autonomous research timer. */
|
|
94
|
+
start() {
|
|
95
|
+
if (this.timer)
|
|
96
|
+
return;
|
|
97
|
+
this.logger.info(`[research] Autonomous research scheduler starting (interval: ${this.intervalMs}ms, delay: ${this.initialDelayMs}ms)`);
|
|
98
|
+
if (this.initialDelayMs > 0) {
|
|
99
|
+
this.delayTimer = setTimeout(() => {
|
|
100
|
+
this.safeRunCycle();
|
|
101
|
+
this.timer = setInterval(() => this.safeRunCycle(), this.intervalMs);
|
|
102
|
+
}, this.initialDelayMs);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.timer = setInterval(() => this.safeRunCycle(), this.intervalMs);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Stop the autonomous research timer. */
|
|
109
|
+
stop() {
|
|
110
|
+
if (this.delayTimer) {
|
|
111
|
+
clearTimeout(this.delayTimer);
|
|
112
|
+
this.delayTimer = null;
|
|
113
|
+
}
|
|
114
|
+
if (this.timer) {
|
|
115
|
+
clearInterval(this.timer);
|
|
116
|
+
this.timer = null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Call this after each learning cycle completes.
|
|
121
|
+
* Feeds the cycle results into all three research engines.
|
|
122
|
+
*/
|
|
123
|
+
onLearningCycleComplete(metrics, score, eventType = 'learning:cycle_complete') {
|
|
124
|
+
// 1. Feed meta-learning
|
|
125
|
+
this.metaLearning.step(metrics, score);
|
|
126
|
+
// 2. Record causal event
|
|
127
|
+
this.causalGraph.recordEvent(this.brainName, eventType, metrics);
|
|
128
|
+
// 3. Record observations for hypothesis engine
|
|
129
|
+
for (const [key, value] of Object.entries(metrics)) {
|
|
130
|
+
this.hypothesisEngine.observe({
|
|
131
|
+
source: this.brainName,
|
|
132
|
+
type: `metric:${key}`,
|
|
133
|
+
value,
|
|
134
|
+
timestamp: Date.now(),
|
|
135
|
+
metadata: { eventType },
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
this.logger.debug(`[research] Learning cycle recorded: score=${score.toFixed(3)}, metrics=${Object.keys(metrics).length}`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Record a domain event for causal + hypothesis tracking.
|
|
142
|
+
* Call this from event listeners in each brain.
|
|
143
|
+
*/
|
|
144
|
+
recordEvent(eventType, data) {
|
|
145
|
+
this.causalGraph.recordEvent(this.brainName, eventType, data);
|
|
146
|
+
// Also record as observation with value 1 (occurrence)
|
|
147
|
+
this.hypothesisEngine.observe({
|
|
148
|
+
source: this.brainName,
|
|
149
|
+
type: eventType,
|
|
150
|
+
value: 1,
|
|
151
|
+
timestamp: Date.now(),
|
|
152
|
+
metadata: data,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Run one full autonomous research cycle.
|
|
157
|
+
* This is the core algorithm — the system thinking about itself.
|
|
158
|
+
*/
|
|
159
|
+
runCycle() {
|
|
160
|
+
if (this.running) {
|
|
161
|
+
this.logger.warn('[research] Cycle already running, skipping');
|
|
162
|
+
return this.emptyReport();
|
|
163
|
+
}
|
|
164
|
+
this.running = true;
|
|
165
|
+
this.cycleCount++;
|
|
166
|
+
const startTime = Date.now();
|
|
167
|
+
this.logger.info(`[research] ═══ Autonomous Research Cycle #${this.cycleCount} ═══`);
|
|
168
|
+
try {
|
|
169
|
+
// Phase 1: Causal Analysis — detect cause-effect relationships
|
|
170
|
+
const edges = this.causalGraph.analyze();
|
|
171
|
+
const chains = this.causalGraph.findChains();
|
|
172
|
+
this.logger.info(`[research] Phase 1: ${edges.length} causal edges, ${chains.length} chains detected`);
|
|
173
|
+
// Phase 2: Hypothesis Generation — form theories from data
|
|
174
|
+
const generated = this.hypothesisEngine.generate();
|
|
175
|
+
this.logger.info(`[research] Phase 2: ${generated.length} new hypotheses generated`);
|
|
176
|
+
// Phase 3: Hypothesis Testing — test all pending theories
|
|
177
|
+
const tested = this.hypothesisEngine.testAll();
|
|
178
|
+
const confirmed = tested.filter(t => t.newStatus === 'confirmed');
|
|
179
|
+
const rejected = tested.filter(t => t.newStatus === 'rejected');
|
|
180
|
+
this.logger.info(`[research] Phase 3: ${tested.length} tested, ${confirmed.length} confirmed, ${rejected.length} rejected`);
|
|
181
|
+
// Phase 4: Meta-Learning Optimization — tune parameters
|
|
182
|
+
const optimized = this.metaLearning.optimize();
|
|
183
|
+
if (optimized.length > 0) {
|
|
184
|
+
this.logger.info(`[research] Phase 4: ${optimized.length} parameters optimized`);
|
|
185
|
+
}
|
|
186
|
+
// Phase 5: Discovery Production — synthesize findings
|
|
187
|
+
const discoveries = this.produceDiscoveries(edges, chains, confirmed, optimized);
|
|
188
|
+
this.logger.info(`[research] Phase 5: ${discoveries.length} discoveries produced`);
|
|
189
|
+
const duration = Date.now() - startTime;
|
|
190
|
+
const report = {
|
|
191
|
+
cycle: this.cycleCount,
|
|
192
|
+
timestamp: startTime,
|
|
193
|
+
causalEdgesFound: edges.length,
|
|
194
|
+
causalChainsFound: chains.length,
|
|
195
|
+
hypothesesGenerated: generated.length,
|
|
196
|
+
hypothesesTested: tested.length,
|
|
197
|
+
hypothesesConfirmed: confirmed.length,
|
|
198
|
+
hypothesesRejected: rejected.length,
|
|
199
|
+
parametersOptimized: optimized.length,
|
|
200
|
+
discoveriesProduced: discoveries.length,
|
|
201
|
+
duration,
|
|
202
|
+
};
|
|
203
|
+
// Store cycle report
|
|
204
|
+
this.storeCycleReport(report);
|
|
205
|
+
this.logger.info(`[research] ═══ Cycle #${this.cycleCount} complete (${duration}ms) ═══`);
|
|
206
|
+
return report;
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
this.running = false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Get all discoveries, optionally filtered by type. */
|
|
213
|
+
getDiscoveries(type, limit = 20) {
|
|
214
|
+
let rows;
|
|
215
|
+
if (type) {
|
|
216
|
+
rows = this.db.prepare('SELECT * FROM research_discoveries WHERE type = ? ORDER BY confidence DESC LIMIT ?').all(type, limit);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
rows = this.db.prepare('SELECT * FROM research_discoveries ORDER BY created_at DESC LIMIT ?').all(limit);
|
|
220
|
+
}
|
|
221
|
+
return rows.map(r => ({
|
|
222
|
+
...r,
|
|
223
|
+
data: JSON.parse(r.data),
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
/** Get cycle reports. */
|
|
227
|
+
getCycleReports(limit = 20) {
|
|
228
|
+
return this.db.prepare('SELECT * FROM research_cycle_reports ORDER BY cycle DESC LIMIT ?').all(limit);
|
|
229
|
+
}
|
|
230
|
+
/** Get a comprehensive research status. */
|
|
231
|
+
getStatus() {
|
|
232
|
+
const discoveryRows = this.db.prepare('SELECT type, COUNT(*) as count FROM research_discoveries GROUP BY type').all();
|
|
233
|
+
const breakdown = {};
|
|
234
|
+
let total = 0;
|
|
235
|
+
for (const row of discoveryRows) {
|
|
236
|
+
breakdown[row.type] = row.count;
|
|
237
|
+
total += row.count;
|
|
238
|
+
}
|
|
239
|
+
const reports = this.getCycleReports(1);
|
|
240
|
+
return {
|
|
241
|
+
cyclesCompleted: this.cycleCount,
|
|
242
|
+
totalDiscoveries: total,
|
|
243
|
+
discoveryBreakdown: breakdown,
|
|
244
|
+
metaLearningStatus: this.metaLearning.getStatus(),
|
|
245
|
+
causalAnalysis: this.causalGraph.getAnalysis(),
|
|
246
|
+
hypothesisSummary: this.hypothesisEngine.getSummary(),
|
|
247
|
+
lastCycleReport: reports.length > 0 ? reports[0] : null,
|
|
248
|
+
isRunning: this.running,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// ── Private ───────────────────────────────────────────
|
|
252
|
+
safeRunCycle() {
|
|
253
|
+
try {
|
|
254
|
+
this.runCycle();
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
this.logger.error('[research] Autonomous research cycle error', { error: String(err) });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Produce discoveries from research findings.
|
|
262
|
+
* This is where data becomes insight.
|
|
263
|
+
*/
|
|
264
|
+
produceDiscoveries(edges, chains, confirmedHypotheses, optimizations) {
|
|
265
|
+
const discoveries = [];
|
|
266
|
+
// 1. Strong causal chains → discoveries
|
|
267
|
+
for (const chain of chains) {
|
|
268
|
+
if (chain.totalStrength < this.minCausalStrength)
|
|
269
|
+
continue;
|
|
270
|
+
if (discoveries.length >= this.maxDiscoveriesPerCycle)
|
|
271
|
+
break;
|
|
272
|
+
const discovery = {
|
|
273
|
+
type: 'causal_chain',
|
|
274
|
+
title: `Causal chain: ${chain.chain.join(' → ')}`,
|
|
275
|
+
description: `Events follow this causal sequence with average strength ${chain.totalStrength.toFixed(3)} and total lag ${(chain.totalLag / 1000).toFixed(1)}s`,
|
|
276
|
+
confidence: Math.min(1, chain.totalStrength),
|
|
277
|
+
impact: Math.min(1, chain.chain.length / 4),
|
|
278
|
+
source: this.brainName,
|
|
279
|
+
data: { chain: chain.chain, strength: chain.totalStrength, lagMs: chain.totalLag },
|
|
280
|
+
};
|
|
281
|
+
if (!this.isDuplicateDiscovery(discovery)) {
|
|
282
|
+
this.storeDiscovery(discovery);
|
|
283
|
+
discoveries.push(discovery);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// 2. Root causes (causal nodes that cause but aren't caused) → discoveries
|
|
287
|
+
const roots = this.findSignificantRoots(edges);
|
|
288
|
+
for (const root of roots) {
|
|
289
|
+
if (discoveries.length >= this.maxDiscoveriesPerCycle)
|
|
290
|
+
break;
|
|
291
|
+
const effects = edges.filter(e => e.cause === root.cause);
|
|
292
|
+
const discovery = {
|
|
293
|
+
type: 'root_cause',
|
|
294
|
+
title: `Root cause identified: "${root.cause}"`,
|
|
295
|
+
description: `"${root.cause}" causes ${effects.length} downstream effects with average strength ${root.avgStrength.toFixed(3)}`,
|
|
296
|
+
confidence: root.avgConfidence,
|
|
297
|
+
impact: Math.min(1, effects.length / 5),
|
|
298
|
+
source: this.brainName,
|
|
299
|
+
data: { rootCause: root.cause, effectCount: effects.length, effects: effects.map(e => e.effect) },
|
|
300
|
+
};
|
|
301
|
+
if (!this.isDuplicateDiscovery(discovery)) {
|
|
302
|
+
this.storeDiscovery(discovery);
|
|
303
|
+
discoveries.push(discovery);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// 3. Confirmed hypotheses → discoveries
|
|
307
|
+
for (const result of confirmedHypotheses) {
|
|
308
|
+
if (discoveries.length >= this.maxDiscoveriesPerCycle)
|
|
309
|
+
break;
|
|
310
|
+
const hyp = this.hypothesisEngine.get(result.hypothesisId);
|
|
311
|
+
if (!hyp)
|
|
312
|
+
continue;
|
|
313
|
+
const discovery = {
|
|
314
|
+
type: 'confirmed_hypothesis',
|
|
315
|
+
title: `Hypothesis confirmed: ${hyp.statement}`,
|
|
316
|
+
description: `Confirmed with p-value ${result.pValue.toFixed(4)}, confidence ${result.confidence.toFixed(3)} (${result.evidenceFor} supporting, ${result.evidenceAgainst} opposing observations)`,
|
|
317
|
+
confidence: result.confidence,
|
|
318
|
+
impact: Math.min(1, (result.evidenceFor + result.evidenceAgainst) / 50),
|
|
319
|
+
source: this.brainName,
|
|
320
|
+
data: {
|
|
321
|
+
hypothesisId: result.hypothesisId,
|
|
322
|
+
statement: hyp.statement,
|
|
323
|
+
type: hyp.type,
|
|
324
|
+
pValue: result.pValue,
|
|
325
|
+
evidenceFor: result.evidenceFor,
|
|
326
|
+
evidenceAgainst: result.evidenceAgainst,
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
if (!this.isDuplicateDiscovery(discovery)) {
|
|
330
|
+
this.storeDiscovery(discovery);
|
|
331
|
+
discoveries.push(discovery);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// 4. Parameter optimizations → discoveries
|
|
335
|
+
for (const opt of optimizations) {
|
|
336
|
+
if (discoveries.length >= this.maxDiscoveriesPerCycle)
|
|
337
|
+
break;
|
|
338
|
+
if (opt.confidence < 0.5)
|
|
339
|
+
continue; // only high-confidence optimizations
|
|
340
|
+
const discovery = {
|
|
341
|
+
type: 'parameter_optimization',
|
|
342
|
+
title: `Parameter "${opt.name}" optimized: ${opt.currentValue.toFixed(4)} → ${opt.recommendedValue.toFixed(4)}`,
|
|
343
|
+
description: `Expected improvement: ${(opt.expectedImprovement * 100).toFixed(1)}% (confidence: ${opt.confidence.toFixed(3)}, based on ${opt.evidence} observations)`,
|
|
344
|
+
confidence: opt.confidence,
|
|
345
|
+
impact: Math.min(1, Math.abs(opt.expectedImprovement)),
|
|
346
|
+
source: this.brainName,
|
|
347
|
+
data: {
|
|
348
|
+
parameter: opt.name,
|
|
349
|
+
oldValue: opt.currentValue,
|
|
350
|
+
newValue: opt.recommendedValue,
|
|
351
|
+
improvement: opt.expectedImprovement,
|
|
352
|
+
evidence: opt.evidence,
|
|
353
|
+
},
|
|
354
|
+
};
|
|
355
|
+
if (!this.isDuplicateDiscovery(discovery)) {
|
|
356
|
+
this.storeDiscovery(discovery);
|
|
357
|
+
discoveries.push(discovery);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return discoveries;
|
|
361
|
+
}
|
|
362
|
+
findSignificantRoots(edges) {
|
|
363
|
+
const causes = new Set(edges.map(e => e.cause));
|
|
364
|
+
const effects = new Set(edges.map(e => e.effect));
|
|
365
|
+
const roots = [...causes].filter(c => !effects.has(c));
|
|
366
|
+
return roots
|
|
367
|
+
.map(root => {
|
|
368
|
+
const rootEdges = edges.filter(e => e.cause === root);
|
|
369
|
+
const avgStrength = rootEdges.reduce((s, e) => s + e.strength, 0) / rootEdges.length;
|
|
370
|
+
const avgConfidence = rootEdges.reduce((s, e) => s + e.confidence, 0) / rootEdges.length;
|
|
371
|
+
return { cause: root, avgStrength, avgConfidence };
|
|
372
|
+
})
|
|
373
|
+
.filter(r => r.avgStrength >= this.minCausalStrength)
|
|
374
|
+
.sort((a, b) => b.avgStrength - a.avgStrength)
|
|
375
|
+
.slice(0, 5);
|
|
376
|
+
}
|
|
377
|
+
isDuplicateDiscovery(discovery) {
|
|
378
|
+
const existing = this.db.prepare('SELECT id FROM research_discoveries WHERE type = ? AND title = ?').get(discovery.type, discovery.title);
|
|
379
|
+
return !!existing;
|
|
380
|
+
}
|
|
381
|
+
storeDiscovery(discovery) {
|
|
382
|
+
this.db.prepare(`
|
|
383
|
+
INSERT INTO research_discoveries (type, title, description, confidence, impact, source, data)
|
|
384
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
385
|
+
`).run(discovery.type, discovery.title, discovery.description, discovery.confidence, discovery.impact, discovery.source, JSON.stringify(discovery.data));
|
|
386
|
+
}
|
|
387
|
+
storeCycleReport(report) {
|
|
388
|
+
this.db.prepare(`
|
|
389
|
+
INSERT INTO research_cycle_reports (cycle, timestamp, causal_edges_found, causal_chains_found,
|
|
390
|
+
hypotheses_generated, hypotheses_tested, hypotheses_confirmed, hypotheses_rejected,
|
|
391
|
+
parameters_optimized, discoveries_produced, duration)
|
|
392
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
393
|
+
`).run(report.cycle, report.timestamp, report.causalEdgesFound, report.causalChainsFound, report.hypothesesGenerated, report.hypothesesTested, report.hypothesesConfirmed, report.hypothesesRejected, report.parametersOptimized, report.discoveriesProduced, report.duration);
|
|
394
|
+
}
|
|
395
|
+
emptyReport() {
|
|
396
|
+
return {
|
|
397
|
+
cycle: this.cycleCount,
|
|
398
|
+
timestamp: Date.now(),
|
|
399
|
+
causalEdgesFound: 0,
|
|
400
|
+
causalChainsFound: 0,
|
|
401
|
+
hypothesesGenerated: 0,
|
|
402
|
+
hypothesesTested: 0,
|
|
403
|
+
hypothesesConfirmed: 0,
|
|
404
|
+
hypothesesRejected: 0,
|
|
405
|
+
parametersOptimized: 0,
|
|
406
|
+
discoveriesProduced: 0,
|
|
407
|
+
duration: 0,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=autonomous-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous-scheduler.js","sourceRoot":"","sources":["../../src/research/autonomous-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { CausalGraph } from '../causal/engine.js';
|
|
3
|
+
export interface CounterfactualQuery {
|
|
4
|
+
intervention: {
|
|
5
|
+
variable: string;
|
|
6
|
+
actual_value: unknown;
|
|
7
|
+
counterfactual_value: unknown;
|
|
8
|
+
};
|
|
9
|
+
outcome_variable: string;
|
|
10
|
+
time_range?: {
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface CounterfactualResult {
|
|
16
|
+
id?: number;
|
|
17
|
+
query: CounterfactualQuery;
|
|
18
|
+
actual_outcome: number;
|
|
19
|
+
counterfactual_outcome: number;
|
|
20
|
+
difference: number;
|
|
21
|
+
confidence_interval: [number, number];
|
|
22
|
+
confidence_level: number;
|
|
23
|
+
causal_path: string[];
|
|
24
|
+
narrative: string;
|
|
25
|
+
timestamp: number;
|
|
26
|
+
}
|
|
27
|
+
export interface InterventionImpact {
|
|
28
|
+
variable: string;
|
|
29
|
+
proposed_value: unknown;
|
|
30
|
+
current_value: unknown;
|
|
31
|
+
affected_outcomes: Array<{
|
|
32
|
+
outcome: string;
|
|
33
|
+
expected_change: number;
|
|
34
|
+
confidence: number;
|
|
35
|
+
causal_distance: number;
|
|
36
|
+
}>;
|
|
37
|
+
total_impact_score: number;
|
|
38
|
+
recommendation: string;
|
|
39
|
+
}
|
|
40
|
+
export interface CounterfactualConfig {
|
|
41
|
+
/** Default confidence level for intervals. Default: 0.8 */
|
|
42
|
+
defaultConfidence?: number;
|
|
43
|
+
/** Maximum causal path depth. Default: 5 */
|
|
44
|
+
maxPathDepth?: number;
|
|
45
|
+
}
|
|
46
|
+
export declare function runCounterfactualMigration(db: Database.Database): void;
|
|
47
|
+
export declare class CounterfactualEngine {
|
|
48
|
+
private db;
|
|
49
|
+
private causalGraph;
|
|
50
|
+
private config;
|
|
51
|
+
private log;
|
|
52
|
+
constructor(db: Database.Database, causalGraph: CausalGraph | null, config?: CounterfactualConfig);
|
|
53
|
+
/** Answer a "what if" question using causal graph and historical data. */
|
|
54
|
+
whatIf(query: CounterfactualQuery): CounterfactualResult;
|
|
55
|
+
/** Get history of past counterfactual queries. */
|
|
56
|
+
getHistory(limit?: number): CounterfactualResult[];
|
|
57
|
+
/** Estimate the impact of a proposed intervention before making it. */
|
|
58
|
+
estimateIntervention(variable: string, proposedValue: unknown, currentValue: unknown): InterventionImpact;
|
|
59
|
+
private findCausalPath;
|
|
60
|
+
private getActualOutcome;
|
|
61
|
+
private estimateCounterfactual;
|
|
62
|
+
private generateNarrative;
|
|
63
|
+
}
|