@timmeck/brain-core 2.5.0 → 2.7.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/dashboard/research-server.d.ts +11 -0
- package/dist/dashboard/research-server.js +47 -0
- package/dist/dashboard/research-server.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +21 -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/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/research-orchestrator.d.ts +68 -0
- package/dist/research/research-orchestrator.js +228 -0
- package/dist/research/research-orchestrator.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 +1 -1
- package/research-dashboard.html +735 -0
|
@@ -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,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
|
+
}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
// ── Migration ───────────────────────────────────────────
|
|
3
|
+
export function runCounterfactualMigration(db) {
|
|
4
|
+
db.exec(`
|
|
5
|
+
CREATE TABLE IF NOT EXISTS counterfactual_queries (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
query TEXT NOT NULL,
|
|
8
|
+
actual_outcome REAL NOT NULL,
|
|
9
|
+
counterfactual_outcome REAL NOT NULL,
|
|
10
|
+
difference REAL NOT NULL,
|
|
11
|
+
confidence_interval TEXT NOT NULL,
|
|
12
|
+
confidence_level REAL NOT NULL,
|
|
13
|
+
causal_path TEXT NOT NULL,
|
|
14
|
+
narrative TEXT NOT NULL,
|
|
15
|
+
timestamp INTEGER NOT NULL,
|
|
16
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
17
|
+
);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_cf_timestamp ON counterfactual_queries(timestamp);
|
|
19
|
+
`);
|
|
20
|
+
}
|
|
21
|
+
// ── Engine ──────────────────────────────────────────────
|
|
22
|
+
export class CounterfactualEngine {
|
|
23
|
+
db;
|
|
24
|
+
causalGraph;
|
|
25
|
+
config;
|
|
26
|
+
log = getLogger();
|
|
27
|
+
constructor(db, causalGraph, config) {
|
|
28
|
+
this.db = db;
|
|
29
|
+
this.causalGraph = causalGraph;
|
|
30
|
+
this.config = {
|
|
31
|
+
defaultConfidence: config?.defaultConfidence ?? 0.8,
|
|
32
|
+
maxPathDepth: config?.maxPathDepth ?? 5,
|
|
33
|
+
};
|
|
34
|
+
runCounterfactualMigration(db);
|
|
35
|
+
}
|
|
36
|
+
/** Answer a "what if" question using causal graph and historical data. */
|
|
37
|
+
whatIf(query) {
|
|
38
|
+
const timestamp = Date.now();
|
|
39
|
+
// 1. Find causal path from intervention variable to outcome
|
|
40
|
+
const causalPath = this.findCausalPath(query.intervention.variable, query.outcome_variable);
|
|
41
|
+
// 2. Get actual outcome from historical data
|
|
42
|
+
const actualOutcome = this.getActualOutcome(query.outcome_variable, query.time_range);
|
|
43
|
+
// 3. Estimate counterfactual outcome using causal model
|
|
44
|
+
const { estimate, confidence, interval } = this.estimateCounterfactual(query, causalPath, actualOutcome);
|
|
45
|
+
// 4. Generate narrative
|
|
46
|
+
const narrative = this.generateNarrative(query, actualOutcome, estimate, causalPath);
|
|
47
|
+
const result = {
|
|
48
|
+
query,
|
|
49
|
+
actual_outcome: actualOutcome,
|
|
50
|
+
counterfactual_outcome: estimate,
|
|
51
|
+
difference: estimate - actualOutcome,
|
|
52
|
+
confidence_interval: interval,
|
|
53
|
+
confidence_level: confidence,
|
|
54
|
+
causal_path: causalPath,
|
|
55
|
+
narrative,
|
|
56
|
+
timestamp,
|
|
57
|
+
};
|
|
58
|
+
// Persist
|
|
59
|
+
this.db.prepare(`
|
|
60
|
+
INSERT INTO counterfactual_queries
|
|
61
|
+
(query, actual_outcome, counterfactual_outcome, difference, confidence_interval,
|
|
62
|
+
confidence_level, causal_path, narrative, timestamp)
|
|
63
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
64
|
+
`).run(JSON.stringify(query), result.actual_outcome, result.counterfactual_outcome, result.difference, JSON.stringify(result.confidence_interval), result.confidence_level, JSON.stringify(result.causal_path), result.narrative, timestamp);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/** Get history of past counterfactual queries. */
|
|
68
|
+
getHistory(limit = 10) {
|
|
69
|
+
return this.db.prepare(`
|
|
70
|
+
SELECT * FROM counterfactual_queries ORDER BY timestamp DESC LIMIT ?
|
|
71
|
+
`).all(limit).map(row => ({
|
|
72
|
+
id: row.id,
|
|
73
|
+
query: JSON.parse(row.query),
|
|
74
|
+
actual_outcome: row.actual_outcome,
|
|
75
|
+
counterfactual_outcome: row.counterfactual_outcome,
|
|
76
|
+
difference: row.difference,
|
|
77
|
+
confidence_interval: JSON.parse(row.confidence_interval),
|
|
78
|
+
confidence_level: row.confidence_level,
|
|
79
|
+
causal_path: JSON.parse(row.causal_path),
|
|
80
|
+
narrative: row.narrative,
|
|
81
|
+
timestamp: row.timestamp,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
/** Estimate the impact of a proposed intervention before making it. */
|
|
85
|
+
estimateIntervention(variable, proposedValue, currentValue) {
|
|
86
|
+
if (!this.causalGraph) {
|
|
87
|
+
return {
|
|
88
|
+
variable,
|
|
89
|
+
proposed_value: proposedValue,
|
|
90
|
+
current_value: currentValue,
|
|
91
|
+
affected_outcomes: [],
|
|
92
|
+
total_impact_score: 0,
|
|
93
|
+
recommendation: 'Cannot estimate — causal graph not available.',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Find all downstream effects
|
|
97
|
+
const effects = this.causalGraph.getEffects(variable);
|
|
98
|
+
const affectedOutcomes = [];
|
|
99
|
+
for (const edge of effects) {
|
|
100
|
+
// Estimate change propagation
|
|
101
|
+
const valueDiff = typeof proposedValue === 'number' && typeof currentValue === 'number'
|
|
102
|
+
? (proposedValue - currentValue) / Math.max(Math.abs(currentValue), 1e-10)
|
|
103
|
+
: 0;
|
|
104
|
+
const expectedChange = valueDiff * edge.strength * edge.direction;
|
|
105
|
+
affectedOutcomes.push({
|
|
106
|
+
outcome: edge.effect,
|
|
107
|
+
expected_change: expectedChange,
|
|
108
|
+
confidence: edge.confidence,
|
|
109
|
+
causal_distance: 1,
|
|
110
|
+
});
|
|
111
|
+
// Check second-order effects
|
|
112
|
+
const secondOrder = this.causalGraph.getEffects(edge.effect);
|
|
113
|
+
for (const e2 of secondOrder) {
|
|
114
|
+
if (e2.effect === variable)
|
|
115
|
+
continue; // Skip cycles
|
|
116
|
+
affectedOutcomes.push({
|
|
117
|
+
outcome: e2.effect,
|
|
118
|
+
expected_change: expectedChange * e2.strength * e2.direction,
|
|
119
|
+
confidence: edge.confidence * e2.confidence,
|
|
120
|
+
causal_distance: 2,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const totalImpact = affectedOutcomes.reduce((sum, o) => sum + Math.abs(o.expected_change) * o.confidence, 0);
|
|
125
|
+
let recommendation;
|
|
126
|
+
if (affectedOutcomes.length === 0) {
|
|
127
|
+
recommendation = 'No known causal effects. Safe to change but impact unknown.';
|
|
128
|
+
}
|
|
129
|
+
else if (affectedOutcomes.every(o => o.expected_change >= 0)) {
|
|
130
|
+
recommendation = 'All known effects are positive. Recommended to proceed.';
|
|
131
|
+
}
|
|
132
|
+
else if (affectedOutcomes.every(o => o.expected_change <= 0)) {
|
|
133
|
+
recommendation = 'All known effects are negative. Not recommended.';
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const posImpact = affectedOutcomes.filter(o => o.expected_change > 0).reduce((s, o) => s + o.expected_change * o.confidence, 0);
|
|
137
|
+
const negImpact = affectedOutcomes.filter(o => o.expected_change < 0).reduce((s, o) => s + Math.abs(o.expected_change) * o.confidence, 0);
|
|
138
|
+
recommendation = posImpact > negImpact
|
|
139
|
+
? `Mixed effects but net positive (${(posImpact - negImpact).toFixed(2)}). Consider proceeding with monitoring.`
|
|
140
|
+
: `Mixed effects with net negative impact (${(negImpact - posImpact).toFixed(2)}). Caution advised.`;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
variable,
|
|
144
|
+
proposed_value: proposedValue,
|
|
145
|
+
current_value: currentValue,
|
|
146
|
+
affected_outcomes: affectedOutcomes.sort((a, b) => Math.abs(b.expected_change) - Math.abs(a.expected_change)),
|
|
147
|
+
total_impact_score: totalImpact,
|
|
148
|
+
recommendation,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
findCausalPath(from, to) {
|
|
152
|
+
if (!this.causalGraph)
|
|
153
|
+
return [from, to];
|
|
154
|
+
// BFS through causal graph
|
|
155
|
+
const visited = new Set();
|
|
156
|
+
const queue = [{ node: from, path: [from] }];
|
|
157
|
+
visited.add(from);
|
|
158
|
+
while (queue.length > 0) {
|
|
159
|
+
const current = queue.shift();
|
|
160
|
+
if (current.node === to)
|
|
161
|
+
return current.path;
|
|
162
|
+
if (current.path.length >= this.config.maxPathDepth)
|
|
163
|
+
continue;
|
|
164
|
+
const effects = this.causalGraph.getEffects(current.node);
|
|
165
|
+
for (const edge of effects) {
|
|
166
|
+
if (!visited.has(edge.effect)) {
|
|
167
|
+
visited.add(edge.effect);
|
|
168
|
+
queue.push({ node: edge.effect, path: [...current.path, edge.effect] });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return [from, to]; // No path found, assume direct
|
|
173
|
+
}
|
|
174
|
+
getActualOutcome(variable, timeRange) {
|
|
175
|
+
// Try to get from causal events
|
|
176
|
+
let sql = `
|
|
177
|
+
SELECT AVG(CAST(json_extract(data, '$.value') AS REAL)) as avg_val,
|
|
178
|
+
COUNT(*) as count
|
|
179
|
+
FROM causal_events WHERE type = ?
|
|
180
|
+
`;
|
|
181
|
+
const params = [variable];
|
|
182
|
+
if (timeRange) {
|
|
183
|
+
sql += ` AND timestamp BETWEEN ? AND ?`;
|
|
184
|
+
params.push(timeRange.start, timeRange.end);
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const row = this.db.prepare(sql).get(...params);
|
|
188
|
+
if (row.avg_val !== null)
|
|
189
|
+
return row.avg_val;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Table might not exist
|
|
193
|
+
}
|
|
194
|
+
// Fallback: count events as a proxy
|
|
195
|
+
try {
|
|
196
|
+
let countSql = `SELECT COUNT(*) as c FROM causal_events WHERE type = ?`;
|
|
197
|
+
const countParams = [variable];
|
|
198
|
+
if (timeRange) {
|
|
199
|
+
countSql += ` AND timestamp BETWEEN ? AND ?`;
|
|
200
|
+
countParams.push(timeRange.start, timeRange.end);
|
|
201
|
+
}
|
|
202
|
+
const count = this.db.prepare(countSql).get(...countParams);
|
|
203
|
+
return count.c;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return 0;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
estimateCounterfactual(query, causalPath, actualOutcome) {
|
|
210
|
+
if (!this.causalGraph || causalPath.length < 2) {
|
|
211
|
+
// No causal model — assume linear relationship
|
|
212
|
+
const ratio = typeof query.intervention.counterfactual_value === 'number' &&
|
|
213
|
+
typeof query.intervention.actual_value === 'number' &&
|
|
214
|
+
query.intervention.actual_value !== 0
|
|
215
|
+
? query.intervention.counterfactual_value / query.intervention.actual_value
|
|
216
|
+
: 1;
|
|
217
|
+
const estimate = actualOutcome * ratio;
|
|
218
|
+
const spread = Math.abs(estimate - actualOutcome) * 0.5;
|
|
219
|
+
return {
|
|
220
|
+
estimate,
|
|
221
|
+
confidence: 0.3,
|
|
222
|
+
interval: [estimate - spread, estimate + spread],
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// Use causal path to estimate propagation
|
|
226
|
+
let cumulativeEffect = 1;
|
|
227
|
+
let cumulativeConfidence = 1;
|
|
228
|
+
for (let i = 0; i < causalPath.length - 1; i++) {
|
|
229
|
+
const edges = this.causalGraph.getEffects(causalPath[i])
|
|
230
|
+
.filter(e => e.effect === causalPath[i + 1]);
|
|
231
|
+
if (edges.length > 0) {
|
|
232
|
+
const edge = edges[0];
|
|
233
|
+
cumulativeEffect *= edge.strength * edge.direction;
|
|
234
|
+
cumulativeConfidence *= edge.confidence;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
cumulativeEffect *= 0.5; // Unknown link — assume weak
|
|
238
|
+
cumulativeConfidence *= 0.3;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Compute value difference
|
|
242
|
+
const valueDiff = typeof query.intervention.counterfactual_value === 'number' &&
|
|
243
|
+
typeof query.intervention.actual_value === 'number'
|
|
244
|
+
? query.intervention.counterfactual_value - query.intervention.actual_value
|
|
245
|
+
: 0;
|
|
246
|
+
const estimate = actualOutcome + valueDiff * cumulativeEffect;
|
|
247
|
+
const spread = Math.abs(estimate - actualOutcome) * (1 - cumulativeConfidence);
|
|
248
|
+
return {
|
|
249
|
+
estimate,
|
|
250
|
+
confidence: cumulativeConfidence,
|
|
251
|
+
interval: [estimate - spread, estimate + spread],
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
generateNarrative(query, actual, counterfactual, path) {
|
|
255
|
+
const diff = counterfactual - actual;
|
|
256
|
+
const pctDiff = actual !== 0 ? ((diff / actual) * 100).toFixed(1) : 'N/A';
|
|
257
|
+
const direction = diff > 0 ? 'higher' : diff < 0 ? 'lower' : 'the same';
|
|
258
|
+
const pathStr = path.length > 2 ? ` via ${path.slice(1, -1).join(' → ')}` : '';
|
|
259
|
+
return `If ${query.intervention.variable} had been ${query.intervention.counterfactual_value} instead of ${query.intervention.actual_value}, ` +
|
|
260
|
+
`${query.outcome_variable} would have been ${direction} at ${counterfactual.toFixed(2)} (actual: ${actual.toFixed(2)}, ${pctDiff}% change)${pathStr}.`;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=counterfactual-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"counterfactual-engine.js","sourceRoot":"","sources":["../../src/research/counterfactual-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
export interface CrossDomainCorrelation {
|
|
3
|
+
id?: number;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
source_brain: string;
|
|
6
|
+
source_event: string;
|
|
7
|
+
target_brain: string;
|
|
8
|
+
target_event: string;
|
|
9
|
+
correlation: number;
|
|
10
|
+
lag_seconds: number;
|
|
11
|
+
p_value: number;
|
|
12
|
+
effect_size: number;
|
|
13
|
+
direction: 'positive' | 'negative';
|
|
14
|
+
narrative: string;
|
|
15
|
+
sample_size: number;
|
|
16
|
+
confirmed: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface CrossDomainEvent {
|
|
19
|
+
brain: string;
|
|
20
|
+
event_type: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
data?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface CrossDomainConfig {
|
|
25
|
+
/** Time window for correlation analysis (ms). Default: 7_200_000 (2h) */
|
|
26
|
+
windowMs?: number;
|
|
27
|
+
/** Minimum correlation strength. Default: 0.3 */
|
|
28
|
+
minCorrelation?: number;
|
|
29
|
+
/** Significance level. Default: 0.05 */
|
|
30
|
+
alpha?: number;
|
|
31
|
+
/** Maximum events to keep. Default: 10000 */
|
|
32
|
+
maxEvents?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function runCrossDomainMigration(db: Database.Database): void;
|
|
35
|
+
export declare class CrossDomainEngine {
|
|
36
|
+
private db;
|
|
37
|
+
private config;
|
|
38
|
+
private log;
|
|
39
|
+
constructor(db: Database.Database, config?: CrossDomainConfig);
|
|
40
|
+
/** Record an event from a brain. */
|
|
41
|
+
recordEvent(brain: string, eventType: string, data?: Record<string, unknown>): void;
|
|
42
|
+
/** Run cross-domain correlation analysis. */
|
|
43
|
+
analyze(): CrossDomainCorrelation[];
|
|
44
|
+
/** Get all found correlations. */
|
|
45
|
+
getCorrelations(limit?: number): CrossDomainCorrelation[];
|
|
46
|
+
/** Generate a narrative summary of the most important cross-domain findings. */
|
|
47
|
+
getNarrative(): string;
|
|
48
|
+
private computeCorrelation;
|
|
49
|
+
private generateNarrative;
|
|
50
|
+
private persistCorrelation;
|
|
51
|
+
private rowToCorrelation;
|
|
52
|
+
}
|