@timmeck/brain-core 2.7.0 → 2.8.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 +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +16 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/research/adapters/brain-adapter.d.ts +14 -0
- package/dist/research/adapters/brain-adapter.js +161 -0
- package/dist/research/adapters/brain-adapter.js.map +1 -0
- package/dist/research/adapters/index.d.ts +3 -0
- package/dist/research/adapters/index.js +4 -0
- package/dist/research/adapters/index.js.map +1 -0
- package/dist/research/adapters/marketing-adapter.d.ts +15 -0
- package/dist/research/adapters/marketing-adapter.js +196 -0
- package/dist/research/adapters/marketing-adapter.js.map +1 -0
- package/dist/research/adapters/trading-adapter.d.ts +15 -0
- package/dist/research/adapters/trading-adapter.js +165 -0
- package/dist/research/adapters/trading-adapter.js.map +1 -0
- package/dist/research/data-miner.d.ts +84 -0
- package/dist/research/data-miner.js +174 -0
- package/dist/research/data-miner.js.map +1 -0
- package/dist/research/research-orchestrator.d.ts +4 -0
- package/dist/research/research-orchestrator.js +15 -0
- package/dist/research/research-orchestrator.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -89,3 +89,6 @@ export { ResearchJournal, runJournalMigration } from './research/journal.js';
|
|
|
89
89
|
export type { JournalEntry, JournalEntryType, Significance, JournalSummary, JournalConfig } from './research/journal.js';
|
|
90
90
|
export { ResearchOrchestrator } from './research/research-orchestrator.js';
|
|
91
91
|
export type { ResearchOrchestratorConfig } from './research/research-orchestrator.js';
|
|
92
|
+
export { DataMiner, runDataMinerMigration } from './research/data-miner.js';
|
|
93
|
+
export type { DataMinerAdapter, DataMinerEngines, DataMinerState, MineResult, MinedObservation, MinedCausalEvent, MinedMetric, MinedHypothesisObservation, MinedCrossDomainEvent } from './research/data-miner.js';
|
|
94
|
+
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter } from './research/adapters/index.js';
|
package/dist/index.js
CHANGED
|
@@ -80,4 +80,7 @@ export { AnomalyDetective, runAnomalyDetectiveMigration } from './research/anoma
|
|
|
80
80
|
export { ResearchJournal, runJournalMigration } from './research/journal.js';
|
|
81
81
|
// ── Research Orchestrator ─────────────────────────────
|
|
82
82
|
export { ResearchOrchestrator } from './research/research-orchestrator.js';
|
|
83
|
+
// ── DataMiner ────────────────────────────────────────
|
|
84
|
+
export { DataMiner, runDataMinerMigration } from './research/data-miner.js';
|
|
85
|
+
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter } from './research/adapters/index.js';
|
|
83
86
|
//# sourceMappingURL=index.js.map
|
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":"AAGA,8DAA8D;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,8DAA8D;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,8DAA8D;AAC9D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElH,8DAA8D;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,8DAA8D;AAC9D,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtH,8DAA8D;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3F,8DAA8D;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,8DAA8D;AAC9D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQ/D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,6DAA6D;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,2DAA2D;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,8DAA8D;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,8DAA8D;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,6DAA6D;AAC7D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5E,6DAA6D;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,6DAA6D;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,4DAA4D;AAC5D,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGhH,4DAA4D;AAC5D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGzF,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGrE,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGrF,0DAA0D;AAC1D,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAGvG,0DAA0D;AAC1D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,0DAA0D;AAC1D,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAG/F,0DAA0D;AAC1D,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAGvG,0DAA0D;AAC1D,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGvG,0DAA0D;AAC1D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGvF,0DAA0D;AAC1D,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAGjG,0DAA0D;AAC1D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG7E,yDAAyD;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,wDAAwD;AACxD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -13,5 +13,7 @@ export interface McpServerOptions {
|
|
|
13
13
|
registerTools: (server: McpServer, ipc: IpcClient) => void;
|
|
14
14
|
/** Register MCP prompts on the server (optional) */
|
|
15
15
|
registerPrompts?: (server: McpServer, ipc: IpcClient) => void;
|
|
16
|
+
/** Callback when a tool is called — used for DataMiner/SelfObserver tracking */
|
|
17
|
+
onToolCall?: (toolName: string, durationMs: number, success: boolean) => void;
|
|
16
18
|
}
|
|
17
19
|
export declare function startMcpServer(opts: McpServerOptions): Promise<void>;
|
package/dist/mcp/server.js
CHANGED
|
@@ -51,6 +51,22 @@ export async function startMcpServer(opts) {
|
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
// Wrap IPC client to track tool calls if onToolCall callback is provided
|
|
55
|
+
if (opts.onToolCall) {
|
|
56
|
+
const originalRequest = ipc.request.bind(ipc);
|
|
57
|
+
const onToolCall = opts.onToolCall;
|
|
58
|
+
ipc.request = (method, params) => {
|
|
59
|
+
const start = Date.now();
|
|
60
|
+
let success = true;
|
|
61
|
+
return originalRequest(method, params).then((result) => { try {
|
|
62
|
+
onToolCall(method, Date.now() - start, success);
|
|
63
|
+
}
|
|
64
|
+
catch { /* best effort */ } return result; }, (err) => { success = false; try {
|
|
65
|
+
onToolCall(method, Date.now() - start, success);
|
|
66
|
+
}
|
|
67
|
+
catch { /* best effort */ } throw err; });
|
|
68
|
+
};
|
|
69
|
+
}
|
|
54
70
|
opts.registerTools(server, ipc);
|
|
55
71
|
opts.registerPrompts?.(server, ipc);
|
|
56
72
|
const transport = new StdioServerTransport();
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { DataMinerAdapter, MinedObservation, MinedCausalEvent, MinedMetric, MinedHypothesisObservation, MinedCrossDomainEvent } from '../data-miner.js';
|
|
3
|
+
/**
|
|
4
|
+
* DataMiner adapter for the main Brain.
|
|
5
|
+
* Mines: errors, solutions, code_modules, synapses, insights, git_commits, decisions.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BrainDataMinerAdapter implements DataMinerAdapter {
|
|
8
|
+
readonly name = "brain";
|
|
9
|
+
mineObservations(db: Database.Database, since: number): MinedObservation[];
|
|
10
|
+
mineCausalEvents(db: Database.Database, since: number): MinedCausalEvent[];
|
|
11
|
+
mineMetrics(db: Database.Database, since: number): MinedMetric[];
|
|
12
|
+
mineHypothesisObservations(db: Database.Database, since: number): MinedHypothesisObservation[];
|
|
13
|
+
mineCrossDomainEvents(db: Database.Database, since: number): MinedCrossDomainEvent[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataMiner adapter for the main Brain.
|
|
3
|
+
* Mines: errors, solutions, code_modules, synapses, insights, git_commits, decisions.
|
|
4
|
+
*/
|
|
5
|
+
export class BrainDataMinerAdapter {
|
|
6
|
+
name = 'brain';
|
|
7
|
+
mineObservations(db, since) {
|
|
8
|
+
const observations = [];
|
|
9
|
+
// Error type distribution
|
|
10
|
+
const errors = safeAll(db, `SELECT type, COUNT(*) as cnt, SUM(CASE WHEN resolved = 1 THEN 1 ELSE 0 END) as resolved
|
|
11
|
+
FROM errors WHERE last_seen > ? GROUP BY type`, [isoFromTs(since)]);
|
|
12
|
+
for (const e of errors) {
|
|
13
|
+
observations.push({
|
|
14
|
+
category: 'resolution_rate',
|
|
15
|
+
event_type: 'error:type_stats',
|
|
16
|
+
metrics: { type: e.type, count: e.cnt, resolved: e.resolved, resolution_rate: e.cnt > 0 ? e.resolved / e.cnt : 0 },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
// Solution success rates
|
|
20
|
+
const solutions = safeAll(db, `SELECT id, description, success_count, fail_count FROM solutions WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
21
|
+
for (const s of solutions) {
|
|
22
|
+
const total = s.success_count + s.fail_count;
|
|
23
|
+
observations.push({
|
|
24
|
+
category: 'resolution_rate',
|
|
25
|
+
event_type: 'solution:effectiveness',
|
|
26
|
+
metrics: { solution_id: s.id, success_count: s.success_count, fail_count: s.fail_count, success_rate: total > 0 ? s.success_count / total : 0 },
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Code module complexity
|
|
30
|
+
const modules = safeAll(db, `SELECT id, file_path, complexity, lines FROM code_modules WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
31
|
+
for (const m of modules) {
|
|
32
|
+
observations.push({
|
|
33
|
+
category: 'tool_usage',
|
|
34
|
+
event_type: 'module:complexity',
|
|
35
|
+
metrics: { module_id: m.id, file_path: m.file_path, complexity: m.complexity ?? 0, lines: m.lines ?? 0 },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Synapse network stats
|
|
39
|
+
const synapseStats = safeAll(db, `SELECT relationship, COUNT(*) as cnt, AVG(weight) as avg_weight
|
|
40
|
+
FROM synapses WHERE updated_at > ? GROUP BY relationship`, [isoFromTs(since)]);
|
|
41
|
+
for (const s of synapseStats) {
|
|
42
|
+
observations.push({
|
|
43
|
+
category: 'tool_usage',
|
|
44
|
+
event_type: 'synapse:network_stats',
|
|
45
|
+
metrics: { relationship: s.relationship, count: s.cnt, avg_weight: s.avg_weight },
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Insight quality
|
|
49
|
+
const insights = safeAll(db, `SELECT id, type, confidence FROM insights WHERE created_at > ?`, [isoFromTs(since)]);
|
|
50
|
+
for (const i of insights) {
|
|
51
|
+
observations.push({
|
|
52
|
+
category: 'query_quality',
|
|
53
|
+
event_type: 'insight:quality',
|
|
54
|
+
metrics: { insight_id: i.id, type: i.type, confidence: i.confidence ?? 0 },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return observations;
|
|
58
|
+
}
|
|
59
|
+
mineCausalEvents(db, since) {
|
|
60
|
+
const events = [];
|
|
61
|
+
// Errors as causal events
|
|
62
|
+
const errors = safeAll(db, `SELECT id, type, fingerprint, resolved, project_id FROM errors WHERE last_seen > ?`, [isoFromTs(since)]);
|
|
63
|
+
for (const e of errors) {
|
|
64
|
+
events.push({ source: 'brain', type: 'error:occurred', data: { errorId: e.id, errorType: e.type, fingerprint: e.fingerprint, resolved: e.resolved === 1, projectId: e.project_id } });
|
|
65
|
+
}
|
|
66
|
+
// Decisions as causal events
|
|
67
|
+
const decisions = safeAll(db, `SELECT id, title, outcome, project_id FROM decisions WHERE created_at > ?`, [isoFromTs(since)]);
|
|
68
|
+
for (const d of decisions) {
|
|
69
|
+
events.push({ source: 'brain', type: 'decision:made', data: { decisionId: d.id, title: d.title, outcome: d.outcome, projectId: d.project_id } });
|
|
70
|
+
}
|
|
71
|
+
// Git commits as causal events
|
|
72
|
+
const commits = safeAll(db, `SELECT id, hash, project_id, files_changed FROM git_commits WHERE created_at > ?`, [isoFromTs(since)]);
|
|
73
|
+
for (const c of commits) {
|
|
74
|
+
events.push({ source: 'brain', type: 'commit:pushed', data: { commitId: c.id, hash: c.hash, projectId: c.project_id, filesChanged: c.files_changed ?? 0 } });
|
|
75
|
+
}
|
|
76
|
+
return events;
|
|
77
|
+
}
|
|
78
|
+
mineMetrics(db, since) {
|
|
79
|
+
const metrics = [];
|
|
80
|
+
// Error counts by type
|
|
81
|
+
const errorCounts = safeAll(db, `SELECT type, COUNT(*) as cnt FROM errors WHERE last_seen > ? GROUP BY type`, [isoFromTs(since)]);
|
|
82
|
+
for (const e of errorCounts) {
|
|
83
|
+
metrics.push({ name: `error_count:${e.type}`, value: e.cnt });
|
|
84
|
+
}
|
|
85
|
+
// Overall resolution rate
|
|
86
|
+
const resolution = safeGet(db, `SELECT COUNT(*) as total, SUM(CASE WHEN resolved = 1 THEN 1 ELSE 0 END) as resolved FROM errors WHERE last_seen > ?`, [isoFromTs(since)]);
|
|
87
|
+
if (resolution && resolution.total > 0) {
|
|
88
|
+
metrics.push({ name: 'resolution_rate', value: resolution.resolved / resolution.total });
|
|
89
|
+
}
|
|
90
|
+
// Average module complexity
|
|
91
|
+
const complexity = safeGet(db, `SELECT AVG(complexity) as avg_complexity FROM code_modules WHERE complexity IS NOT NULL AND updated_at > ?`, [isoFromTs(since)]);
|
|
92
|
+
if (complexity?.avg_complexity != null) {
|
|
93
|
+
metrics.push({ name: 'avg_module_complexity', value: complexity.avg_complexity });
|
|
94
|
+
}
|
|
95
|
+
// Synapse count
|
|
96
|
+
const synapseCount = safeGet(db, `SELECT COUNT(*) as cnt FROM synapses WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
97
|
+
if (synapseCount) {
|
|
98
|
+
metrics.push({ name: 'synapse_count', value: synapseCount.cnt });
|
|
99
|
+
}
|
|
100
|
+
// Insight count
|
|
101
|
+
const insightCount = safeGet(db, `SELECT COUNT(*) as cnt FROM insights WHERE created_at > ?`, [isoFromTs(since)]);
|
|
102
|
+
if (insightCount) {
|
|
103
|
+
metrics.push({ name: 'insight_count', value: insightCount.cnt });
|
|
104
|
+
}
|
|
105
|
+
return metrics;
|
|
106
|
+
}
|
|
107
|
+
mineHypothesisObservations(db, since) {
|
|
108
|
+
const observations = [];
|
|
109
|
+
// Errors as hypothesis observations
|
|
110
|
+
const errors = safeAll(db, `SELECT type, COUNT(*) as cnt FROM errors WHERE last_seen > ? GROUP BY type`, [isoFromTs(since)]);
|
|
111
|
+
for (const e of errors) {
|
|
112
|
+
observations.push({ source: 'brain', type: 'error:reported', value: e.cnt, metadata: { errorType: e.type } });
|
|
113
|
+
}
|
|
114
|
+
// Solution applications
|
|
115
|
+
const solutions = safeAll(db, `SELECT success, COUNT(*) as cnt FROM error_solutions WHERE applied_at > ? GROUP BY success`, [isoFromTs(since)]);
|
|
116
|
+
for (const s of solutions) {
|
|
117
|
+
observations.push({ source: 'brain', type: s.success ? 'solution:success' : 'solution:failure', value: s.cnt });
|
|
118
|
+
}
|
|
119
|
+
// Insights by type
|
|
120
|
+
const insights = safeAll(db, `SELECT type, COUNT(*) as cnt FROM insights WHERE created_at > ? GROUP BY type`, [isoFromTs(since)]);
|
|
121
|
+
for (const i of insights) {
|
|
122
|
+
observations.push({ source: 'brain', type: 'insight:created', value: i.cnt, metadata: { insightType: i.type } });
|
|
123
|
+
}
|
|
124
|
+
return observations;
|
|
125
|
+
}
|
|
126
|
+
mineCrossDomainEvents(db, since) {
|
|
127
|
+
const events = [];
|
|
128
|
+
// Errors → cross-domain signal for error frequency
|
|
129
|
+
const errorCount = safeGet(db, `SELECT COUNT(*) as cnt FROM errors WHERE last_seen > ?`, [isoFromTs(since)]);
|
|
130
|
+
if (errorCount && errorCount.cnt > 0) {
|
|
131
|
+
events.push({ brain: 'brain', eventType: 'error:batch', data: { count: errorCount.cnt } });
|
|
132
|
+
}
|
|
133
|
+
// Insights → cross-domain signal
|
|
134
|
+
const insightCount = safeGet(db, `SELECT COUNT(*) as cnt FROM insights WHERE created_at > ?`, [isoFromTs(since)]);
|
|
135
|
+
if (insightCount && insightCount.cnt > 0) {
|
|
136
|
+
events.push({ brain: 'brain', eventType: 'insight:batch', data: { count: insightCount.cnt } });
|
|
137
|
+
}
|
|
138
|
+
return events;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// ── Helpers ─────────────────────────────────────────────
|
|
142
|
+
function isoFromTs(ts) {
|
|
143
|
+
return ts > 0 ? new Date(ts).toISOString() : '1970-01-01T00:00:00.000Z';
|
|
144
|
+
}
|
|
145
|
+
function safeAll(db, sql, params) {
|
|
146
|
+
try {
|
|
147
|
+
return db.prepare(sql).all(...params);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function safeGet(db, sql, params) {
|
|
154
|
+
try {
|
|
155
|
+
return db.prepare(sql).get(...params);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=brain-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-adapter.js","sourceRoot":"","sources":["../../../src/research/adapters/brain-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/research/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { DataMinerAdapter, MinedObservation, MinedCausalEvent, MinedMetric, MinedHypothesisObservation, MinedCrossDomainEvent } from '../data-miner.js';
|
|
3
|
+
/**
|
|
4
|
+
* DataMiner adapter for Marketing Brain.
|
|
5
|
+
* Mines: posts + engagement (platform/format performance), campaigns (goal achievement),
|
|
6
|
+
* content_templates (template effectiveness), competitor_posts (benchmarks).
|
|
7
|
+
*/
|
|
8
|
+
export declare class MarketingDataMinerAdapter implements DataMinerAdapter {
|
|
9
|
+
readonly name = "marketing-brain";
|
|
10
|
+
mineObservations(db: Database.Database, since: number): MinedObservation[];
|
|
11
|
+
mineCausalEvents(db: Database.Database, since: number): MinedCausalEvent[];
|
|
12
|
+
mineMetrics(db: Database.Database, since: number): MinedMetric[];
|
|
13
|
+
mineHypothesisObservations(db: Database.Database, since: number): MinedHypothesisObservation[];
|
|
14
|
+
mineCrossDomainEvents(db: Database.Database, since: number): MinedCrossDomainEvent[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataMiner adapter for Marketing Brain.
|
|
3
|
+
* Mines: posts + engagement (platform/format performance), campaigns (goal achievement),
|
|
4
|
+
* content_templates (template effectiveness), competitor_posts (benchmarks).
|
|
5
|
+
*/
|
|
6
|
+
export class MarketingDataMinerAdapter {
|
|
7
|
+
name = 'marketing-brain';
|
|
8
|
+
mineObservations(db, since) {
|
|
9
|
+
const observations = [];
|
|
10
|
+
// Post performance by platform
|
|
11
|
+
const platformStats = safeAll(db, `SELECT p.platform, COUNT(*) as cnt,
|
|
12
|
+
AVG(COALESCE(e.likes, 0)) as avg_likes,
|
|
13
|
+
AVG(COALESCE(e.shares, 0)) as avg_shares,
|
|
14
|
+
AVG(COALESCE(e.comments, 0)) as avg_comments
|
|
15
|
+
FROM posts p LEFT JOIN engagement e ON e.post_id = p.id
|
|
16
|
+
WHERE p.created_at > ? GROUP BY p.platform`, [isoFromTs(since)]);
|
|
17
|
+
for (const s of platformStats) {
|
|
18
|
+
observations.push({
|
|
19
|
+
category: 'tool_usage',
|
|
20
|
+
event_type: 'post:platform_stats',
|
|
21
|
+
metrics: { platform: s.platform, count: s.cnt, avg_likes: s.avg_likes, avg_shares: s.avg_shares, avg_comments: s.avg_comments },
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// Post performance by format
|
|
25
|
+
const formatStats = safeAll(db, `SELECT p.format, COUNT(*) as cnt, AVG(COALESCE(e.likes, 0)) as avg_likes
|
|
26
|
+
FROM posts p LEFT JOIN engagement e ON e.post_id = p.id
|
|
27
|
+
WHERE p.format IS NOT NULL AND p.created_at > ? GROUP BY p.format`, [isoFromTs(since)]);
|
|
28
|
+
for (const f of formatStats) {
|
|
29
|
+
observations.push({
|
|
30
|
+
category: 'tool_usage',
|
|
31
|
+
event_type: 'post:format_stats',
|
|
32
|
+
metrics: { format: f.format, count: f.cnt, avg_likes: f.avg_likes },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
// Campaign goal achievement
|
|
36
|
+
const campaigns = safeAll(db, `SELECT id, name, status, COALESCE(goal_type, 'unknown') as goal_type,
|
|
37
|
+
COALESCE(goal_target, 0) as goal_target, COALESCE(goal_current, 0) as goal_current
|
|
38
|
+
FROM campaigns WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
39
|
+
for (const c of campaigns) {
|
|
40
|
+
observations.push({
|
|
41
|
+
category: 'query_quality',
|
|
42
|
+
event_type: 'campaign:goal_progress',
|
|
43
|
+
metrics: {
|
|
44
|
+
campaign_id: c.id, name: c.name, status: c.status,
|
|
45
|
+
goal_type: c.goal_type, goal_target: c.goal_target, goal_current: c.goal_current,
|
|
46
|
+
achievement_rate: c.goal_target > 0 ? c.goal_current / c.goal_target : 0,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Template effectiveness
|
|
51
|
+
const templates = safeAll(db, `SELECT id, name, COALESCE(use_count, 0) as use_count, COALESCE(avg_engagement, 0) as avg_engagement
|
|
52
|
+
FROM content_templates WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
53
|
+
for (const t of templates) {
|
|
54
|
+
observations.push({
|
|
55
|
+
category: 'tool_usage',
|
|
56
|
+
event_type: 'template:effectiveness',
|
|
57
|
+
metrics: { template_id: t.id, name: t.name, use_count: t.use_count, avg_engagement: t.avg_engagement },
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Competitor benchmarks
|
|
61
|
+
const competitors = safeAll(db, `SELECT competitor_name, COUNT(*) as cnt, AVG(COALESCE(likes, 0)) as avg_likes
|
|
62
|
+
FROM competitor_posts WHERE created_at > ? GROUP BY competitor_name`, [isoFromTs(since)]);
|
|
63
|
+
for (const c of competitors) {
|
|
64
|
+
observations.push({
|
|
65
|
+
category: 'cross_brain',
|
|
66
|
+
event_type: 'competitor:benchmark',
|
|
67
|
+
metrics: { competitor: c.competitor_name, post_count: c.cnt, avg_likes: c.avg_likes },
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return observations;
|
|
71
|
+
}
|
|
72
|
+
mineCausalEvents(db, since) {
|
|
73
|
+
const events = [];
|
|
74
|
+
// Post publications as causal events
|
|
75
|
+
const posts = safeAll(db, `SELECT id, platform, COALESCE(format, 'unknown') as format, campaign_id
|
|
76
|
+
FROM posts WHERE published_at IS NOT NULL AND created_at > ? ORDER BY created_at LIMIT 500`, [isoFromTs(since)]);
|
|
77
|
+
for (const p of posts) {
|
|
78
|
+
events.push({
|
|
79
|
+
source: 'marketing-brain',
|
|
80
|
+
type: 'post:published',
|
|
81
|
+
data: { postId: p.id, platform: p.platform, format: p.format, campaignId: p.campaign_id },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Campaign lifecycle events
|
|
85
|
+
const campaigns = safeAll(db, `SELECT id, name, status FROM campaigns WHERE created_at > ?`, [isoFromTs(since)]);
|
|
86
|
+
for (const c of campaigns) {
|
|
87
|
+
events.push({
|
|
88
|
+
source: 'marketing-brain',
|
|
89
|
+
type: `campaign:${c.status}`,
|
|
90
|
+
data: { campaignId: c.id, name: c.name },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return events;
|
|
94
|
+
}
|
|
95
|
+
mineMetrics(db, since) {
|
|
96
|
+
const metrics = [];
|
|
97
|
+
// Total post count
|
|
98
|
+
const postCount = safeGet(db, `SELECT COUNT(*) as cnt FROM posts WHERE created_at > ?`, [isoFromTs(since)]);
|
|
99
|
+
if (postCount) {
|
|
100
|
+
metrics.push({ name: 'post_count', value: postCount.cnt });
|
|
101
|
+
}
|
|
102
|
+
// Average engagement (likes + shares + comments)
|
|
103
|
+
const avgEng = safeGet(db, `SELECT AVG(COALESCE(likes, 0) + COALESCE(shares, 0) + COALESCE(comments, 0)) as avg_total
|
|
104
|
+
FROM engagement WHERE created_at > ?`, [isoFromTs(since)]);
|
|
105
|
+
if (avgEng?.avg_total != null) {
|
|
106
|
+
metrics.push({ name: 'avg_engagement', value: avgEng.avg_total });
|
|
107
|
+
}
|
|
108
|
+
// Active campaigns
|
|
109
|
+
const activeCampaigns = safeGet(db, `SELECT COUNT(*) as cnt FROM campaigns WHERE status = 'active'`, []);
|
|
110
|
+
if (activeCampaigns) {
|
|
111
|
+
metrics.push({ name: 'active_campaigns', value: activeCampaigns.cnt });
|
|
112
|
+
}
|
|
113
|
+
// Template count
|
|
114
|
+
const templateCount = safeGet(db, `SELECT COUNT(*) as cnt FROM content_templates WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
115
|
+
if (templateCount) {
|
|
116
|
+
metrics.push({ name: 'template_count', value: templateCount.cnt });
|
|
117
|
+
}
|
|
118
|
+
// Competitor post count
|
|
119
|
+
const compCount = safeGet(db, `SELECT COUNT(*) as cnt FROM competitor_posts WHERE created_at > ?`, [isoFromTs(since)]);
|
|
120
|
+
if (compCount) {
|
|
121
|
+
metrics.push({ name: 'competitor_posts', value: compCount.cnt });
|
|
122
|
+
}
|
|
123
|
+
return metrics;
|
|
124
|
+
}
|
|
125
|
+
mineHypothesisObservations(db, since) {
|
|
126
|
+
const observations = [];
|
|
127
|
+
// Post publications by platform
|
|
128
|
+
const posts = safeAll(db, `SELECT platform, COUNT(*) as cnt FROM posts WHERE published_at IS NOT NULL AND created_at > ? GROUP BY platform`, [isoFromTs(since)]);
|
|
129
|
+
for (const p of posts) {
|
|
130
|
+
observations.push({
|
|
131
|
+
source: 'marketing-brain',
|
|
132
|
+
type: 'post:published',
|
|
133
|
+
value: p.cnt,
|
|
134
|
+
metadata: { platform: p.platform },
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// Engagement by platform
|
|
138
|
+
const engagement = safeAll(db, `SELECT p.platform, AVG(COALESCE(e.likes, 0) + COALESCE(e.shares, 0) + COALESCE(e.comments, 0)) as avg_engagement
|
|
139
|
+
FROM posts p JOIN engagement e ON e.post_id = p.id
|
|
140
|
+
WHERE p.created_at > ? GROUP BY p.platform`, [isoFromTs(since)]);
|
|
141
|
+
for (const e of engagement) {
|
|
142
|
+
observations.push({
|
|
143
|
+
source: 'marketing-brain',
|
|
144
|
+
type: 'engagement:platform',
|
|
145
|
+
value: e.avg_engagement,
|
|
146
|
+
metadata: { platform: e.platform },
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return observations;
|
|
150
|
+
}
|
|
151
|
+
mineCrossDomainEvents(db, since) {
|
|
152
|
+
const events = [];
|
|
153
|
+
// Post batch summary
|
|
154
|
+
const summary = safeGet(db, `SELECT COUNT(*) as total, SUM(CASE WHEN published_at IS NOT NULL THEN 1 ELSE 0 END) as published
|
|
155
|
+
FROM posts WHERE created_at > ?`, [isoFromTs(since)]);
|
|
156
|
+
if (summary && summary.total > 0) {
|
|
157
|
+
events.push({
|
|
158
|
+
brain: 'marketing-brain',
|
|
159
|
+
eventType: 'post:batch',
|
|
160
|
+
data: { count: summary.total, published: summary.published },
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// Campaign summary
|
|
164
|
+
const campaignSummary = safeGet(db, `SELECT COUNT(*) as total, SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) as active
|
|
165
|
+
FROM campaigns WHERE created_at > ?`, [isoFromTs(since)]);
|
|
166
|
+
if (campaignSummary && campaignSummary.total > 0) {
|
|
167
|
+
events.push({
|
|
168
|
+
brain: 'marketing-brain',
|
|
169
|
+
eventType: 'campaign:batch',
|
|
170
|
+
data: { count: campaignSummary.total, active: campaignSummary.active },
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return events;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// ── Helpers ─────────────────────────────────────────────
|
|
177
|
+
function isoFromTs(ts) {
|
|
178
|
+
return ts > 0 ? new Date(ts).toISOString() : '1970-01-01T00:00:00.000Z';
|
|
179
|
+
}
|
|
180
|
+
function safeAll(db, sql, params) {
|
|
181
|
+
try {
|
|
182
|
+
return db.prepare(sql).all(...params);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function safeGet(db, sql, params) {
|
|
189
|
+
try {
|
|
190
|
+
return db.prepare(sql).get(...params);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=marketing-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketing-adapter.js","sourceRoot":"","sources":["../../../src/research/adapters/marketing-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { DataMinerAdapter, MinedObservation, MinedCausalEvent, MinedMetric, MinedHypothesisObservation, MinedCrossDomainEvent } from '../data-miner.js';
|
|
3
|
+
/**
|
|
4
|
+
* DataMiner adapter for Trading Brain.
|
|
5
|
+
* Mines: trades (win/loss, profit, regime, pair), rules (confidence, win-rate),
|
|
6
|
+
* chains (streak patterns), calibration.
|
|
7
|
+
*/
|
|
8
|
+
export declare class TradingDataMinerAdapter implements DataMinerAdapter {
|
|
9
|
+
readonly name = "trading-brain";
|
|
10
|
+
mineObservations(db: Database.Database, since: number): MinedObservation[];
|
|
11
|
+
mineCausalEvents(db: Database.Database, since: number): MinedCausalEvent[];
|
|
12
|
+
mineMetrics(db: Database.Database, since: number): MinedMetric[];
|
|
13
|
+
mineHypothesisObservations(db: Database.Database, since: number): MinedHypothesisObservation[];
|
|
14
|
+
mineCrossDomainEvents(db: Database.Database, since: number): MinedCrossDomainEvent[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataMiner adapter for Trading Brain.
|
|
3
|
+
* Mines: trades (win/loss, profit, regime, pair), rules (confidence, win-rate),
|
|
4
|
+
* chains (streak patterns), calibration.
|
|
5
|
+
*/
|
|
6
|
+
export class TradingDataMinerAdapter {
|
|
7
|
+
name = 'trading-brain';
|
|
8
|
+
mineObservations(db, since) {
|
|
9
|
+
const observations = [];
|
|
10
|
+
// Trade outcomes by pair
|
|
11
|
+
const trades = safeAll(db, `SELECT pair, COUNT(*) as cnt, SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END) as wins,
|
|
12
|
+
SUM(COALESCE(profit, 0)) as total_profit
|
|
13
|
+
FROM trades WHERE created_at > ? GROUP BY pair`, [isoFromTs(since)]);
|
|
14
|
+
for (const t of trades) {
|
|
15
|
+
observations.push({
|
|
16
|
+
category: 'tool_usage',
|
|
17
|
+
event_type: 'trade:pair_stats',
|
|
18
|
+
metrics: { pair: t.pair, count: t.cnt, wins: t.wins, win_rate: t.cnt > 0 ? t.wins / t.cnt : 0, total_profit: t.total_profit },
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// Trade outcomes by regime
|
|
22
|
+
const regimes = safeAll(db, `SELECT COALESCE(regime, 'unknown') as regime, COUNT(*) as cnt,
|
|
23
|
+
SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END) as wins
|
|
24
|
+
FROM trades WHERE created_at > ? GROUP BY regime`, [isoFromTs(since)]);
|
|
25
|
+
for (const r of regimes) {
|
|
26
|
+
observations.push({
|
|
27
|
+
category: 'tool_usage',
|
|
28
|
+
event_type: 'trade:regime_stats',
|
|
29
|
+
metrics: { regime: r.regime, count: r.cnt, wins: r.wins, win_rate: r.cnt > 0 ? r.wins / r.cnt : 0 },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Rule confidence distribution
|
|
33
|
+
const rules = safeAll(db, `SELECT id, pattern, confidence, COALESCE(win_rate, 0) as win_rate FROM rules WHERE updated_at > ?`, [isoFromTs(since)]);
|
|
34
|
+
for (const r of rules) {
|
|
35
|
+
observations.push({
|
|
36
|
+
category: 'query_quality',
|
|
37
|
+
event_type: 'rule:confidence',
|
|
38
|
+
metrics: { rule_id: r.id, pattern: r.pattern, confidence: r.confidence, win_rate: r.win_rate },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Chain/streak patterns
|
|
42
|
+
const chains = safeAll(db, `SELECT pair, type, length FROM chains WHERE created_at > ?`, [isoFromTs(since)]);
|
|
43
|
+
for (const c of chains) {
|
|
44
|
+
observations.push({
|
|
45
|
+
category: 'tool_usage',
|
|
46
|
+
event_type: 'chain:streak',
|
|
47
|
+
metrics: { pair: c.pair, type: c.type, length: c.length },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return observations;
|
|
51
|
+
}
|
|
52
|
+
mineCausalEvents(db, since) {
|
|
53
|
+
const events = [];
|
|
54
|
+
// Individual trades as causal events
|
|
55
|
+
const trades = safeAll(db, `SELECT id, pair, win, COALESCE(profit, 0) as profit, COALESCE(regime, 'unknown') as regime, fingerprint
|
|
56
|
+
FROM trades WHERE created_at > ? ORDER BY created_at LIMIT 500`, [isoFromTs(since)]);
|
|
57
|
+
for (const t of trades) {
|
|
58
|
+
events.push({
|
|
59
|
+
source: 'trading-brain',
|
|
60
|
+
type: t.win ? 'trade:win' : 'trade:loss',
|
|
61
|
+
data: { tradeId: t.id, pair: t.pair, profit: t.profit, regime: t.regime, fingerprint: t.fingerprint },
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// Rule learning events
|
|
65
|
+
const rules = safeAll(db, `SELECT id, pattern, confidence FROM rules WHERE created_at > ?`, [isoFromTs(since)]);
|
|
66
|
+
for (const r of rules) {
|
|
67
|
+
events.push({
|
|
68
|
+
source: 'trading-brain',
|
|
69
|
+
type: 'rule:learned',
|
|
70
|
+
data: { ruleId: r.id, pattern: r.pattern, confidence: r.confidence },
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return events;
|
|
74
|
+
}
|
|
75
|
+
mineMetrics(db, since) {
|
|
76
|
+
const metrics = [];
|
|
77
|
+
// Overall win rate
|
|
78
|
+
const winRate = safeGet(db, `SELECT COUNT(*) as total, SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END) as wins FROM trades WHERE created_at > ?`, [isoFromTs(since)]);
|
|
79
|
+
if (winRate && winRate.total > 0) {
|
|
80
|
+
metrics.push({ name: 'win_rate', value: winRate.wins / winRate.total });
|
|
81
|
+
metrics.push({ name: 'trade_count', value: winRate.total });
|
|
82
|
+
}
|
|
83
|
+
// Average profit per trade
|
|
84
|
+
const profit = safeGet(db, `SELECT AVG(COALESCE(profit, 0)) as avg_profit FROM trades WHERE created_at > ?`, [isoFromTs(since)]);
|
|
85
|
+
if (profit?.avg_profit != null) {
|
|
86
|
+
metrics.push({ name: 'avg_profit', value: profit.avg_profit });
|
|
87
|
+
}
|
|
88
|
+
// Average rule confidence
|
|
89
|
+
const ruleConf = safeGet(db, `SELECT AVG(confidence) as avg_confidence FROM rules WHERE confidence IS NOT NULL AND updated_at > ?`, [isoFromTs(since)]);
|
|
90
|
+
if (ruleConf?.avg_confidence != null) {
|
|
91
|
+
metrics.push({ name: 'avg_rule_confidence', value: ruleConf.avg_confidence });
|
|
92
|
+
}
|
|
93
|
+
// Max streak length
|
|
94
|
+
const maxStreak = safeGet(db, `SELECT MAX(length) as max_length FROM chains WHERE created_at > ?`, [isoFromTs(since)]);
|
|
95
|
+
if (maxStreak?.max_length != null) {
|
|
96
|
+
metrics.push({ name: 'max_streak_length', value: maxStreak.max_length });
|
|
97
|
+
}
|
|
98
|
+
// Calibration score
|
|
99
|
+
const calibration = safeGet(db, `SELECT overall_accuracy FROM calibration ORDER BY updated_at DESC LIMIT 1`, []);
|
|
100
|
+
if (calibration?.overall_accuracy != null) {
|
|
101
|
+
metrics.push({ name: 'calibration_accuracy', value: calibration.overall_accuracy });
|
|
102
|
+
}
|
|
103
|
+
return metrics;
|
|
104
|
+
}
|
|
105
|
+
mineHypothesisObservations(db, since) {
|
|
106
|
+
const observations = [];
|
|
107
|
+
// Trade wins/losses per pair
|
|
108
|
+
const trades = safeAll(db, `SELECT pair, win, COUNT(*) as cnt FROM trades WHERE created_at > ? GROUP BY pair, win`, [isoFromTs(since)]);
|
|
109
|
+
for (const t of trades) {
|
|
110
|
+
observations.push({
|
|
111
|
+
source: 'trading-brain',
|
|
112
|
+
type: t.win ? 'trade:win' : 'trade:loss',
|
|
113
|
+
value: t.cnt,
|
|
114
|
+
metadata: { pair: t.pair },
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Chain detections
|
|
118
|
+
const chains = safeAll(db, `SELECT pair, type, length FROM chains WHERE created_at > ?`, [isoFromTs(since)]);
|
|
119
|
+
for (const c of chains) {
|
|
120
|
+
observations.push({
|
|
121
|
+
source: 'trading-brain',
|
|
122
|
+
type: 'chain:detected',
|
|
123
|
+
value: c.length,
|
|
124
|
+
metadata: { pair: c.pair, streakType: c.type },
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return observations;
|
|
128
|
+
}
|
|
129
|
+
mineCrossDomainEvents(db, since) {
|
|
130
|
+
const events = [];
|
|
131
|
+
// Trade batch summary for cross-domain
|
|
132
|
+
const summary = safeGet(db, `SELECT COUNT(*) as total, SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END) as wins,
|
|
133
|
+
SUM(COALESCE(profit, 0)) as total_profit
|
|
134
|
+
FROM trades WHERE created_at > ?`, [isoFromTs(since)]);
|
|
135
|
+
if (summary && summary.total > 0) {
|
|
136
|
+
events.push({
|
|
137
|
+
brain: 'trading-brain',
|
|
138
|
+
eventType: 'trade:batch',
|
|
139
|
+
data: { count: summary.total, wins: summary.wins, win_rate: summary.wins / summary.total, total_profit: summary.total_profit },
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return events;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ── Helpers ─────────────────────────────────────────────
|
|
146
|
+
function isoFromTs(ts) {
|
|
147
|
+
return ts > 0 ? new Date(ts).toISOString() : '1970-01-01T00:00:00.000Z';
|
|
148
|
+
}
|
|
149
|
+
function safeAll(db, sql, params) {
|
|
150
|
+
try {
|
|
151
|
+
return db.prepare(sql).all(...params);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function safeGet(db, sql, params) {
|
|
158
|
+
try {
|
|
159
|
+
return db.prepare(sql).get(...params);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=trading-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trading-adapter.js","sourceRoot":"","sources":["../../../src/research/adapters/trading-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 { CrossDomainEngine } from './cross-domain-engine.js';
|
|
5
|
+
import type { CausalGraph } from '../causal/engine.js';
|
|
6
|
+
import type { HypothesisEngine } from '../hypothesis/engine.js';
|
|
7
|
+
export interface MinedObservation {
|
|
8
|
+
category: 'tool_usage' | 'query_quality' | 'resolution_rate' | 'latency' | 'cross_brain';
|
|
9
|
+
event_type: string;
|
|
10
|
+
metrics: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface MinedCausalEvent {
|
|
13
|
+
source: string;
|
|
14
|
+
type: string;
|
|
15
|
+
data?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface MinedMetric {
|
|
18
|
+
name: string;
|
|
19
|
+
value: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MinedHypothesisObservation {
|
|
22
|
+
source: string;
|
|
23
|
+
type: string;
|
|
24
|
+
value: number;
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
export interface MinedCrossDomainEvent {
|
|
28
|
+
brain: string;
|
|
29
|
+
eventType: string;
|
|
30
|
+
data?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface MineResult {
|
|
33
|
+
observations: MinedObservation[];
|
|
34
|
+
causalEvents: MinedCausalEvent[];
|
|
35
|
+
metrics: MinedMetric[];
|
|
36
|
+
hypothesisObservations: MinedHypothesisObservation[];
|
|
37
|
+
crossDomainEvents: MinedCrossDomainEvent[];
|
|
38
|
+
}
|
|
39
|
+
export interface DataMinerAdapter {
|
|
40
|
+
/** Human-readable name for logging. */
|
|
41
|
+
readonly name: string;
|
|
42
|
+
/** Mine observations for SelfObserver from domain tables. */
|
|
43
|
+
mineObservations(db: Database.Database, since: number): MinedObservation[];
|
|
44
|
+
/** Mine causal events for CausalGraph from domain tables. */
|
|
45
|
+
mineCausalEvents(db: Database.Database, since: number): MinedCausalEvent[];
|
|
46
|
+
/** Mine metric values for AnomalyDetective from domain tables. */
|
|
47
|
+
mineMetrics(db: Database.Database, since: number): MinedMetric[];
|
|
48
|
+
/** Mine observations for HypothesisEngine from domain tables. */
|
|
49
|
+
mineHypothesisObservations(db: Database.Database, since: number): MinedHypothesisObservation[];
|
|
50
|
+
/** Mine cross-domain events for CrossDomainEngine from domain tables. */
|
|
51
|
+
mineCrossDomainEvents(db: Database.Database, since: number): MinedCrossDomainEvent[];
|
|
52
|
+
}
|
|
53
|
+
export interface DataMinerEngines {
|
|
54
|
+
selfObserver: SelfObserver;
|
|
55
|
+
anomalyDetective: AnomalyDetective;
|
|
56
|
+
crossDomain: CrossDomainEngine;
|
|
57
|
+
causalGraph?: CausalGraph;
|
|
58
|
+
hypothesisEngine?: HypothesisEngine;
|
|
59
|
+
}
|
|
60
|
+
export interface DataMinerState {
|
|
61
|
+
last_mined_at: number;
|
|
62
|
+
bootstrap_complete: boolean;
|
|
63
|
+
total_observations_mined: number;
|
|
64
|
+
total_causal_events_mined: number;
|
|
65
|
+
total_metrics_mined: number;
|
|
66
|
+
}
|
|
67
|
+
export declare function runDataMinerMigration(db: Database.Database): void;
|
|
68
|
+
export declare class DataMiner {
|
|
69
|
+
private db;
|
|
70
|
+
private adapter;
|
|
71
|
+
private engines;
|
|
72
|
+
private log;
|
|
73
|
+
private state;
|
|
74
|
+
constructor(db: Database.Database, adapter: DataMinerAdapter, engines: DataMinerEngines);
|
|
75
|
+
/** Bootstrap: scan ALL historical data and feed into engines. Only runs once. */
|
|
76
|
+
bootstrap(): void;
|
|
77
|
+
/** Incremental mine: fetch new data since last run and feed into engines. */
|
|
78
|
+
mine(): void;
|
|
79
|
+
/** Get current miner state. */
|
|
80
|
+
getState(): DataMinerState;
|
|
81
|
+
private mineFrom;
|
|
82
|
+
private loadState;
|
|
83
|
+
private saveState;
|
|
84
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
// ── Migration ───────────────────────────────────────────
|
|
3
|
+
export function runDataMinerMigration(db) {
|
|
4
|
+
db.exec(`
|
|
5
|
+
CREATE TABLE IF NOT EXISTS data_miner_state (
|
|
6
|
+
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
7
|
+
last_mined_at INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
bootstrap_complete INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
total_observations_mined INTEGER NOT NULL DEFAULT 0,
|
|
10
|
+
total_causal_events_mined INTEGER NOT NULL DEFAULT 0,
|
|
11
|
+
total_metrics_mined INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
13
|
+
);
|
|
14
|
+
INSERT OR IGNORE INTO data_miner_state (id) VALUES (1);
|
|
15
|
+
`);
|
|
16
|
+
}
|
|
17
|
+
// ── DataMiner ───────────────────────────────────────────
|
|
18
|
+
export class DataMiner {
|
|
19
|
+
db;
|
|
20
|
+
adapter;
|
|
21
|
+
engines;
|
|
22
|
+
log = getLogger();
|
|
23
|
+
state;
|
|
24
|
+
constructor(db, adapter, engines) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
this.adapter = adapter;
|
|
27
|
+
this.engines = engines;
|
|
28
|
+
runDataMinerMigration(db);
|
|
29
|
+
this.state = this.loadState();
|
|
30
|
+
}
|
|
31
|
+
/** Bootstrap: scan ALL historical data and feed into engines. Only runs once. */
|
|
32
|
+
bootstrap() {
|
|
33
|
+
if (this.state.bootstrap_complete) {
|
|
34
|
+
this.log.info(`[data-miner] Bootstrap already complete for ${this.adapter.name}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.log.info(`[data-miner] Bootstrapping ${this.adapter.name} — scanning all historical data...`);
|
|
38
|
+
const start = Date.now();
|
|
39
|
+
// Mine everything from epoch
|
|
40
|
+
const result = this.mineFrom(0);
|
|
41
|
+
this.state.bootstrap_complete = true;
|
|
42
|
+
this.state.last_mined_at = Date.now();
|
|
43
|
+
this.saveState();
|
|
44
|
+
const duration = Date.now() - start;
|
|
45
|
+
this.log.info(`[data-miner] Bootstrap complete for ${this.adapter.name} in ${duration}ms — ` +
|
|
46
|
+
`${result.observations} observations, ${result.causalEvents} causal events, ` +
|
|
47
|
+
`${result.metrics} metrics, ${result.hypothesisObs} hypothesis observations, ` +
|
|
48
|
+
`${result.crossDomain} cross-domain events`);
|
|
49
|
+
}
|
|
50
|
+
/** Incremental mine: fetch new data since last run and feed into engines. */
|
|
51
|
+
mine() {
|
|
52
|
+
const since = this.state.last_mined_at;
|
|
53
|
+
const now = Date.now();
|
|
54
|
+
const result = this.mineFrom(since);
|
|
55
|
+
this.state.last_mined_at = now;
|
|
56
|
+
this.saveState();
|
|
57
|
+
if (result.total > 0) {
|
|
58
|
+
this.log.info(`[data-miner] Mined ${result.total} items from ${this.adapter.name} ` +
|
|
59
|
+
`(obs: ${result.observations}, causal: ${result.causalEvents}, ` +
|
|
60
|
+
`metrics: ${result.metrics}, hypo: ${result.hypothesisObs}, cross: ${result.crossDomain})`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Get current miner state. */
|
|
64
|
+
getState() {
|
|
65
|
+
return { ...this.state };
|
|
66
|
+
}
|
|
67
|
+
// ── Internal ─────────────────────────────────────────
|
|
68
|
+
mineFrom(since) {
|
|
69
|
+
let observations = 0;
|
|
70
|
+
let causalEvents = 0;
|
|
71
|
+
let metrics = 0;
|
|
72
|
+
let hypothesisObs = 0;
|
|
73
|
+
let crossDomain = 0;
|
|
74
|
+
// 1. Mine observations → SelfObserver
|
|
75
|
+
try {
|
|
76
|
+
const obs = this.adapter.mineObservations(this.db, since);
|
|
77
|
+
for (const o of obs) {
|
|
78
|
+
this.engines.selfObserver.record({
|
|
79
|
+
category: o.category,
|
|
80
|
+
event_type: o.event_type,
|
|
81
|
+
metrics: o.metrics,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
observations = obs.length;
|
|
85
|
+
this.state.total_observations_mined += observations;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.log.error(`[data-miner] Error mining observations: ${err.message}`);
|
|
89
|
+
}
|
|
90
|
+
// 2. Mine causal events → CausalGraph
|
|
91
|
+
try {
|
|
92
|
+
const events = this.adapter.mineCausalEvents(this.db, since);
|
|
93
|
+
if (this.engines.causalGraph) {
|
|
94
|
+
for (const e of events) {
|
|
95
|
+
this.engines.causalGraph.recordEvent(e.source, e.type, e.data);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
causalEvents = events.length;
|
|
99
|
+
this.state.total_causal_events_mined += causalEvents;
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
this.log.error(`[data-miner] Error mining causal events: ${err.message}`);
|
|
103
|
+
}
|
|
104
|
+
// 3. Mine metrics → AnomalyDetective
|
|
105
|
+
try {
|
|
106
|
+
const m = this.adapter.mineMetrics(this.db, since);
|
|
107
|
+
for (const metric of m) {
|
|
108
|
+
this.engines.anomalyDetective.recordMetric(metric.name, metric.value);
|
|
109
|
+
}
|
|
110
|
+
metrics = m.length;
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
this.log.error(`[data-miner] Error mining metrics: ${err.message}`);
|
|
114
|
+
}
|
|
115
|
+
// 4. Mine hypothesis observations → HypothesisEngine
|
|
116
|
+
try {
|
|
117
|
+
const hypo = this.adapter.mineHypothesisObservations(this.db, since);
|
|
118
|
+
if (this.engines.hypothesisEngine) {
|
|
119
|
+
for (const h of hypo) {
|
|
120
|
+
this.engines.hypothesisEngine.observe({
|
|
121
|
+
source: h.source,
|
|
122
|
+
type: h.type,
|
|
123
|
+
value: h.value,
|
|
124
|
+
timestamp: Date.now(),
|
|
125
|
+
metadata: h.metadata,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
hypothesisObs = hypo.length;
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
this.log.error(`[data-miner] Error mining hypothesis observations: ${err.message}`);
|
|
133
|
+
}
|
|
134
|
+
// 5. Mine cross-domain events → CrossDomainEngine
|
|
135
|
+
try {
|
|
136
|
+
const cd = this.adapter.mineCrossDomainEvents(this.db, since);
|
|
137
|
+
for (const c of cd) {
|
|
138
|
+
this.engines.crossDomain.recordEvent(c.brain, c.eventType, c.data);
|
|
139
|
+
}
|
|
140
|
+
crossDomain = cd.length;
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
this.log.error(`[data-miner] Error mining cross-domain events: ${err.message}`);
|
|
144
|
+
}
|
|
145
|
+
const total = observations + causalEvents + metrics + hypothesisObs + crossDomain;
|
|
146
|
+
return { observations, causalEvents, metrics, hypothesisObs, crossDomain, total };
|
|
147
|
+
}
|
|
148
|
+
loadState() {
|
|
149
|
+
const row = this.db.prepare('SELECT * FROM data_miner_state WHERE id = 1').get();
|
|
150
|
+
if (!row) {
|
|
151
|
+
return { last_mined_at: 0, bootstrap_complete: false, total_observations_mined: 0, total_causal_events_mined: 0, total_metrics_mined: 0 };
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
last_mined_at: row.last_mined_at,
|
|
155
|
+
bootstrap_complete: row.bootstrap_complete === 1,
|
|
156
|
+
total_observations_mined: row.total_observations_mined,
|
|
157
|
+
total_causal_events_mined: row.total_causal_events_mined,
|
|
158
|
+
total_metrics_mined: row.total_metrics_mined,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
saveState() {
|
|
162
|
+
this.db.prepare(`
|
|
163
|
+
UPDATE data_miner_state SET
|
|
164
|
+
last_mined_at = ?,
|
|
165
|
+
bootstrap_complete = ?,
|
|
166
|
+
total_observations_mined = ?,
|
|
167
|
+
total_causal_events_mined = ?,
|
|
168
|
+
total_metrics_mined = ?,
|
|
169
|
+
updated_at = datetime('now')
|
|
170
|
+
WHERE id = 1
|
|
171
|
+
`).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);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=data-miner.js.map
|
|
@@ -0,0 +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;AA8E/C,2DAA2D;AAE3D,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;GAWP,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAE3D,MAAM,OAAO,SAAS;IACZ,EAAE,CAAoB;IACtB,OAAO,CAAmB;IAC1B,OAAO,CAAmB;IAC1B,GAAG,GAAG,SAAS,EAAE,CAAC;IAClB,KAAK,CAAiB;IAE9B,YAAY,EAAqB,EAAE,OAAyB,EAAE,OAAyB;QACrF,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,iFAAiF;IACjF,SAAS;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,IAAI,oCAAoC,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,uCAAuC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,QAAQ,OAAO;YAC9E,GAAG,MAAM,CAAC,YAAY,kBAAkB,MAAM,CAAC,YAAY,kBAAkB;YAC7E,GAAG,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,aAAa,4BAA4B;YAC9E,GAAG,MAAM,CAAC,WAAW,sBAAsB,CAC5C,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,sBAAsB,MAAM,CAAC,KAAK,eAAe,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG;gBACrE,SAAS,MAAM,CAAC,YAAY,aAAa,MAAM,CAAC,YAAY,IAAI;gBAChE,YAAY,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,aAAa,YAAY,MAAM,CAAC,WAAW,GAAG,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,wDAAwD;IAEhD,QAAQ,CAAC,KAAa;QAC5B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1D,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,YAAY,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,yBAAyB,IAAI,YAAY,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA6C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAuC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAClC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;wBACpC,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAuD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,CAAC;YACD,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAmD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,CAAC;QAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACpF,CAAC;IAEO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EACuF,CAAC;QAEtK,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC5I,CAAC;QAED,OAAO;YACL,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,KAAK,CAAC;YAChD,wBAAwB,EAAE,GAAG,CAAC,wBAAwB;YACtD,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;YACxD,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;SAC7C,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KASf,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACnC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EACpC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAC/B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -10,6 +10,7 @@ import { AnomalyDetective } from './anomaly-detective.js';
|
|
|
10
10
|
import { ResearchJournal } from './journal.js';
|
|
11
11
|
import type { CausalGraph } from '../causal/engine.js';
|
|
12
12
|
import type { ResearchCycleReport } from './autonomous-scheduler.js';
|
|
13
|
+
import type { DataMiner } from './data-miner.js';
|
|
13
14
|
export interface ResearchOrchestratorConfig {
|
|
14
15
|
brainName: string;
|
|
15
16
|
/** Feedback loop interval in ms. Default: 300_000 (5 min) */
|
|
@@ -31,6 +32,7 @@ export declare class ResearchOrchestrator {
|
|
|
31
32
|
readonly researchAgenda: ResearchAgendaEngine;
|
|
32
33
|
readonly anomalyDetective: AnomalyDetective;
|
|
33
34
|
readonly journal: ResearchJournal;
|
|
35
|
+
private dataMiner;
|
|
34
36
|
private brainName;
|
|
35
37
|
private feedbackTimer;
|
|
36
38
|
private cycleCount;
|
|
@@ -39,6 +41,8 @@ export declare class ResearchOrchestrator {
|
|
|
39
41
|
private reflectEvery;
|
|
40
42
|
private log;
|
|
41
43
|
constructor(db: Database.Database, config: ResearchOrchestratorConfig, causalGraph?: CausalGraph);
|
|
44
|
+
/** Set the DataMiner instance for DB-driven engine feeding. */
|
|
45
|
+
setDataMiner(miner: DataMiner): void;
|
|
42
46
|
/** Start the autonomous feedback loop timer. */
|
|
43
47
|
start(intervalMs?: number): void;
|
|
44
48
|
/** Stop the feedback loop. */
|
|
@@ -19,6 +19,7 @@ export class ResearchOrchestrator {
|
|
|
19
19
|
researchAgenda;
|
|
20
20
|
anomalyDetective;
|
|
21
21
|
journal;
|
|
22
|
+
dataMiner = null;
|
|
22
23
|
brainName;
|
|
23
24
|
feedbackTimer = null;
|
|
24
25
|
cycleCount = 0;
|
|
@@ -41,6 +42,10 @@ export class ResearchOrchestrator {
|
|
|
41
42
|
this.anomalyDetective = new AnomalyDetective(db, { brainName: config.brainName });
|
|
42
43
|
this.journal = new ResearchJournal(db, { brainName: config.brainName });
|
|
43
44
|
}
|
|
45
|
+
/** Set the DataMiner instance for DB-driven engine feeding. */
|
|
46
|
+
setDataMiner(miner) {
|
|
47
|
+
this.dataMiner = miner;
|
|
48
|
+
}
|
|
44
49
|
/** Start the autonomous feedback loop timer. */
|
|
45
50
|
start(intervalMs = 300_000) {
|
|
46
51
|
if (this.feedbackTimer)
|
|
@@ -118,6 +123,15 @@ export class ResearchOrchestrator {
|
|
|
118
123
|
this.cycleCount++;
|
|
119
124
|
const start = Date.now();
|
|
120
125
|
this.log.info(`[orchestrator] ─── Feedback Cycle #${this.cycleCount} ───`);
|
|
126
|
+
// 0. DataMiner: mine new data from DB into engines
|
|
127
|
+
if (this.dataMiner) {
|
|
128
|
+
try {
|
|
129
|
+
this.dataMiner.mine();
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
this.log.error(`[orchestrator] DataMiner error: ${err.message}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
121
135
|
// 1. Self-observer analyzes accumulated observations → insights
|
|
122
136
|
const insights = this.selfObserver.analyze();
|
|
123
137
|
if (insights.length > 0) {
|
|
@@ -202,6 +216,7 @@ export class ResearchOrchestrator {
|
|
|
202
216
|
return {
|
|
203
217
|
brainName: this.brainName,
|
|
204
218
|
feedbackCycles: this.cycleCount,
|
|
219
|
+
dataMiner: this.dataMiner?.getState() ?? null,
|
|
205
220
|
selfInsights: this.selfObserver.getInsights(undefined, 10),
|
|
206
221
|
anomalies: this.anomalyDetective.getAnomalies(undefined, 10),
|
|
207
222
|
experiments: this.experimentEngine.list(undefined, 10),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research-orchestrator.js","sourceRoot":"","sources":["../../src/research/research-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"research-orchestrator.js","sourceRoot":"","sources":["../../src/research/research-orchestrator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED