@timmeck/brain-core 2.15.0 → 2.17.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/api/server.js +10 -0
- package/dist/api/server.js.map +1 -1
- package/dist/codegen/code-generator.d.ts +42 -0
- package/dist/codegen/code-generator.js +225 -0
- package/dist/codegen/code-generator.js.map +1 -0
- package/dist/codegen/code-miner.d.ts +45 -0
- package/dist/codegen/code-miner.js +243 -0
- package/dist/codegen/code-miner.js.map +1 -0
- package/dist/codegen/context-builder.d.ts +15 -0
- package/dist/codegen/context-builder.js +137 -0
- package/dist/codegen/context-builder.js.map +1 -0
- package/dist/codegen/index.d.ts +5 -0
- package/dist/codegen/index.js +5 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/pattern-extractor.d.ts +25 -0
- package/dist/codegen/pattern-extractor.js +222 -0
- package/dist/codegen/pattern-extractor.js.map +1 -0
- package/dist/codegen/types.d.ts +127 -0
- package/dist/codegen/types.js +3 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/consciousness/consciousness-server.js +10 -0
- package/dist/consciousness/consciousness-server.js.map +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-server.js +10 -0
- package/dist/mcp/http-server.js.map +1 -1
- package/dist/prediction/types.d.ts +1 -1
- package/dist/research/adapters/index.d.ts +1 -0
- package/dist/research/adapters/index.js +1 -0
- package/dist/research/adapters/index.js.map +1 -1
- package/dist/research/adapters/scanner-adapter.d.ts +14 -0
- package/dist/research/adapters/scanner-adapter.js +209 -0
- package/dist/research/adapters/scanner-adapter.js.map +1 -0
- package/dist/research/data-miner.d.ts +3 -1
- package/dist/research/data-miner.js +79 -69
- package/dist/research/data-miner.js.map +1 -1
- package/dist/research/research-orchestrator.d.ts +13 -1
- package/dist/research/research-orchestrator.js +78 -2
- package/dist/research/research-orchestrator.js.map +1 -1
- package/dist/scanner/crypto-collector.d.ts +17 -0
- package/dist/scanner/crypto-collector.js +89 -0
- package/dist/scanner/crypto-collector.js.map +1 -0
- package/dist/scanner/github-collector.d.ts +22 -0
- package/dist/scanner/github-collector.js +104 -0
- package/dist/scanner/github-collector.js.map +1 -0
- package/dist/scanner/hn-collector.d.ts +17 -0
- package/dist/scanner/hn-collector.js +58 -0
- package/dist/scanner/hn-collector.js.map +1 -0
- package/dist/scanner/index.d.ts +6 -0
- package/dist/scanner/index.js +6 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/signal-scanner.d.ts +83 -0
- package/dist/scanner/signal-scanner.js +859 -0
- package/dist/scanner/signal-scanner.js.map +1 -0
- package/dist/scanner/signal-scorer.d.ts +31 -0
- package/dist/scanner/signal-scorer.js +205 -0
- package/dist/scanner/signal-scorer.js.map +1 -0
- package/dist/scanner/types.d.ts +170 -0
- package/dist/scanner/types.js +3 -0
- package/dist/scanner/types.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ export { ResearchOrchestrator } from './research/research-orchestrator.js';
|
|
|
93
93
|
export type { ResearchOrchestratorConfig } from './research/research-orchestrator.js';
|
|
94
94
|
export { DataMiner, runDataMinerMigration } from './research/data-miner.js';
|
|
95
95
|
export type { DataMinerAdapter, DataMinerEngines, DataMinerState, MineResult, MinedObservation, MinedCausalEvent, MinedMetric, MinedHypothesisObservation, MinedCrossDomainEvent } from './research/data-miner.js';
|
|
96
|
-
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter } from './research/adapters/index.js';
|
|
96
|
+
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter, ScannerDataMinerAdapter } from './research/adapters/index.js';
|
|
97
97
|
export { DreamEngine, runDreamMigration } from './dream/index.js';
|
|
98
98
|
export { DreamConsolidator } from './dream/index.js';
|
|
99
99
|
export type { DreamEngineConfig, DreamCycleReport, DreamStatus, DreamHistoryEntry, DreamTrigger, MemoryReplayResult, SynapsePruneResult, MemoryCompressionResult, MemoryCluster, ImportanceDecayResult } from './dream/index.js';
|
|
@@ -103,3 +103,14 @@ export { PredictionEngine, runPredictionMigration } from './prediction/index.js'
|
|
|
103
103
|
export { PredictionTracker } from './prediction/index.js';
|
|
104
104
|
export { holtWintersForecast, ewmaForecast, calibrateConfidence } from './prediction/index.js';
|
|
105
105
|
export type { PredictionDomain, PredictionStatus, PredictionEngineConfig, Prediction, PredictionAccuracy, PredictionSummary, ForecastResult, PredictionInput, MetricDataPoint, CalibrationBucket } from './prediction/index.js';
|
|
106
|
+
export { CodeMiner, runCodeMinerMigration } from './codegen/index.js';
|
|
107
|
+
export { PatternExtractor, runPatternExtractorMigration } from './codegen/index.js';
|
|
108
|
+
export { ContextBuilder } from './codegen/index.js';
|
|
109
|
+
export { CodeGenerator, runCodeGeneratorMigration } from './codegen/index.js';
|
|
110
|
+
export type { CodeMinerConfig, RepoContent, CodeMinerSummary, ExtractedPattern, DependencyPattern, TechStack, ProjectStructure, ReadmePattern, ContextBuilderConfig, BuiltContext, CodeGeneratorConfig, GenerationTrigger, GenerationStatus, GenerationRequest, GenerationResult, GenerationRecord, CodeGeneratorSummary, } from './codegen/index.js';
|
|
111
|
+
export { SignalScanner, runScannerMigration } from './scanner/index.js';
|
|
112
|
+
export { GitHubCollector } from './scanner/index.js';
|
|
113
|
+
export { HnCollector } from './scanner/index.js';
|
|
114
|
+
export { CryptoCollector } from './scanner/index.js';
|
|
115
|
+
export { scoreRepo, classifyLevel, classifyWithHysteresis, classifyPhase, scoreCrypto } from './scanner/index.js';
|
|
116
|
+
export type { ScannerConfig, ScannedRepo, DailyStats, HnMention, CryptoToken, ScanResult, ScannerStatus, SignalLevel, RepoPhase, ScoreBreakdown, GitHubSearchResult, GitHubRepo, HnSearchResult, HnHit, CoinGeckoMarket, CoinGeckoTrending, } from './scanner/index.js';
|
package/dist/index.js
CHANGED
|
@@ -84,7 +84,7 @@ export { AutoResponder, runAutoResponderMigration } from './research/auto-respon
|
|
|
84
84
|
export { ResearchOrchestrator } from './research/research-orchestrator.js';
|
|
85
85
|
// ── DataMiner ────────────────────────────────────────
|
|
86
86
|
export { DataMiner, runDataMinerMigration } from './research/data-miner.js';
|
|
87
|
-
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter } from './research/adapters/index.js';
|
|
87
|
+
export { BrainDataMinerAdapter, TradingDataMinerAdapter, MarketingDataMinerAdapter, ScannerDataMinerAdapter } from './research/adapters/index.js';
|
|
88
88
|
// ── Dream Mode ──────────────────────────────────────
|
|
89
89
|
export { DreamEngine, runDreamMigration } from './dream/index.js';
|
|
90
90
|
export { DreamConsolidator } from './dream/index.js';
|
|
@@ -94,4 +94,15 @@ export { ThoughtStream, ConsciousnessServer } from './consciousness/index.js';
|
|
|
94
94
|
export { PredictionEngine, runPredictionMigration } from './prediction/index.js';
|
|
95
95
|
export { PredictionTracker } from './prediction/index.js';
|
|
96
96
|
export { holtWintersForecast, ewmaForecast, calibrateConfidence } from './prediction/index.js';
|
|
97
|
+
// ── CodeGen ──────────────────────────────────────────────
|
|
98
|
+
export { CodeMiner, runCodeMinerMigration } from './codegen/index.js';
|
|
99
|
+
export { PatternExtractor, runPatternExtractorMigration } from './codegen/index.js';
|
|
100
|
+
export { ContextBuilder } from './codegen/index.js';
|
|
101
|
+
export { CodeGenerator, runCodeGeneratorMigration } from './codegen/index.js';
|
|
102
|
+
// ── Scanner ──────────────────────────────────────────────
|
|
103
|
+
export { SignalScanner, runScannerMigration } from './scanner/index.js';
|
|
104
|
+
export { GitHubCollector } from './scanner/index.js';
|
|
105
|
+
export { HnCollector } from './scanner/index.js';
|
|
106
|
+
export { CryptoCollector } from './scanner/index.js';
|
|
107
|
+
export { scoreRepo, classifyLevel, classifyWithHysteresis, classifyPhase, scoreCrypto } from './scanner/index.js';
|
|
97
108
|
//# 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":"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"}
|
package/dist/mcp/http-server.js
CHANGED
|
@@ -54,6 +54,16 @@ export class McpHttpServer {
|
|
|
54
54
|
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
55
55
|
res.end('Not Found');
|
|
56
56
|
});
|
|
57
|
+
this.server.on('error', (err) => {
|
|
58
|
+
if (err.code === 'EADDRINUSE') {
|
|
59
|
+
this.logger.warn(`MCP HTTP port ${this.port} already in use — skipping`);
|
|
60
|
+
this.server?.close();
|
|
61
|
+
this.server = null;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.logger.error(`MCP HTTP server error: ${err.message}`);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
57
67
|
this.server.listen(this.port, () => {
|
|
58
68
|
this.logger.info(`MCP HTTP server (SSE) started on http://localhost:${this.port}`);
|
|
59
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,OAAO,aAAa;IAMd;IACA;IACA;IACA;IARF,MAAM,GAAuB,IAAI,CAAC;IAClC,UAAU,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,MAAM,GAAG,SAAS,EAAE,CAAC;IAE7B,YACU,IAAY,EACZ,MAAiB,EACjB,IAA0B,EAC1B,mBAAmE;QAHnE,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAW;QACjB,SAAI,GAAJ,IAAI,CAAsB;QAC1B,wBAAmB,GAAnB,mBAAmB,CAAgD;IAC1E,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAC;YAC5E,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;YAE9D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAErE,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACjD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;oBACpB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;oBAC1B,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,KAAK;oBAChB,SAAS,EAAE;wBACT,GAAG,EAAE,MAAM;wBACX,QAAQ,EAAE,WAAW;qBACtB;oBACD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;iBAC9B,CAAC,CAAC,CAAC;gBACJ,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACrD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;gBACzE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC;gBAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAwB;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,GAAyB,EACzB,GAAwB,EACxB,GAAQ;QAER,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type PredictionDomain = 'error' | 'trade' | 'engagement' | 'metric' | 'custom';
|
|
1
|
+
export type PredictionDomain = 'error' | 'trade' | 'engagement' | 'metric' | 'custom' | 'scanner' | 'codegen';
|
|
2
2
|
export type PredictionStatus = 'pending' | 'correct' | 'wrong' | 'expired' | 'partial';
|
|
3
3
|
export interface PredictionEngineConfig {
|
|
4
4
|
brainName: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { BrainDataMinerAdapter } from './brain-adapter.js';
|
|
2
2
|
export { TradingDataMinerAdapter } from './trading-adapter.js';
|
|
3
3
|
export { MarketingDataMinerAdapter } from './marketing-adapter.js';
|
|
4
|
+
export { ScannerDataMinerAdapter } from './scanner-adapter.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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"}
|
|
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;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -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 Signal Scanner.
|
|
5
|
+
* Mines: scanned_repos, crypto_tokens.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ScannerDataMinerAdapter implements DataMinerAdapter {
|
|
8
|
+
readonly name = "scanner";
|
|
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,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataMiner adapter for the Signal Scanner.
|
|
3
|
+
* Mines: scanned_repos, crypto_tokens.
|
|
4
|
+
*/
|
|
5
|
+
export class ScannerDataMinerAdapter {
|
|
6
|
+
name = 'scanner';
|
|
7
|
+
mineObservations(db, since) {
|
|
8
|
+
const observations = [];
|
|
9
|
+
// Language distribution
|
|
10
|
+
const languages = safeAll(db, `SELECT language, COUNT(*) as cnt, AVG(signal_score) as avg_score, AVG(current_stars) as avg_stars
|
|
11
|
+
FROM scanned_repos WHERE last_scanned_at > ? AND language IS NOT NULL GROUP BY language`, [isoFromTs(since)]);
|
|
12
|
+
for (const l of languages) {
|
|
13
|
+
observations.push({
|
|
14
|
+
category: 'tool_usage',
|
|
15
|
+
event_type: 'repo:language_stats',
|
|
16
|
+
metrics: { language: l.language, count: l.cnt, avg_score: l.avg_score, avg_stars: l.avg_stars },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
// Signal level distribution
|
|
20
|
+
const levels = safeAll(db, `SELECT signal_level, COUNT(*) as cnt, AVG(signal_score) as avg_score
|
|
21
|
+
FROM scanned_repos WHERE last_scanned_at > ? GROUP BY signal_level`, [isoFromTs(since)]);
|
|
22
|
+
for (const l of levels) {
|
|
23
|
+
observations.push({
|
|
24
|
+
category: 'resolution_rate',
|
|
25
|
+
event_type: 'repo:level_stats',
|
|
26
|
+
metrics: { signal_level: l.signal_level, count: l.cnt, avg_score: l.avg_score },
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Phase distribution
|
|
30
|
+
const phases = safeAll(db, `SELECT phase, COUNT(*) as cnt, AVG(current_stars) as avg_stars
|
|
31
|
+
FROM scanned_repos WHERE last_scanned_at > ? GROUP BY phase`, [isoFromTs(since)]);
|
|
32
|
+
for (const p of phases) {
|
|
33
|
+
observations.push({
|
|
34
|
+
category: 'tool_usage',
|
|
35
|
+
event_type: 'repo:phase_stats',
|
|
36
|
+
metrics: { phase: p.phase, count: p.cnt, avg_stars: p.avg_stars },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// Crypto market stats
|
|
40
|
+
const crypto = safeGet(db, `SELECT COUNT(*) as cnt,
|
|
41
|
+
AVG(price_change_24h) as avg_change,
|
|
42
|
+
SUM(CASE WHEN ABS(price_change_24h) > 10 THEN 1 ELSE 0 END) as movers
|
|
43
|
+
FROM crypto_tokens WHERE last_scanned_at > ?`, [isoFromTs(since)]);
|
|
44
|
+
if (crypto && crypto.cnt > 0) {
|
|
45
|
+
observations.push({
|
|
46
|
+
category: 'cross_brain',
|
|
47
|
+
event_type: 'crypto:market_stats',
|
|
48
|
+
metrics: { count: crypto.cnt, avg_price_change: crypto.avg_change ?? 0, movers: crypto.movers ?? 0 },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return observations;
|
|
52
|
+
}
|
|
53
|
+
mineCausalEvents(db, since) {
|
|
54
|
+
const events = [];
|
|
55
|
+
// Velocity spikes — repos with star_velocity_24h > 50
|
|
56
|
+
const velocitySpikes = safeAll(db, `SELECT id, full_name, star_velocity_24h, signal_score
|
|
57
|
+
FROM scanned_repos WHERE last_scanned_at > ? AND star_velocity_24h > 50 LIMIT 200`, [isoFromTs(since)]);
|
|
58
|
+
for (const r of velocitySpikes) {
|
|
59
|
+
events.push({
|
|
60
|
+
source: 'scanner',
|
|
61
|
+
type: 'repo:velocity_spike',
|
|
62
|
+
data: { repoId: r.id, fullName: r.full_name, velocity: r.star_velocity_24h, score: r.signal_score },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// High score repos — signal_score >= 55
|
|
66
|
+
const highScore = safeAll(db, `SELECT id, full_name, signal_score, signal_level
|
|
67
|
+
FROM scanned_repos WHERE last_scanned_at > ? AND signal_score >= 55 LIMIT 200`, [isoFromTs(since)]);
|
|
68
|
+
for (const r of highScore) {
|
|
69
|
+
events.push({
|
|
70
|
+
source: 'scanner',
|
|
71
|
+
type: 'repo:high_score',
|
|
72
|
+
data: { repoId: r.id, fullName: r.full_name, score: r.signal_score, level: r.signal_level },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Crypto price moves — ABS(price_change_24h) > 10
|
|
76
|
+
const priceMoves = safeAll(db, `SELECT id, symbol, name, price_change_24h
|
|
77
|
+
FROM crypto_tokens WHERE last_scanned_at > ? AND ABS(price_change_24h) > 10 LIMIT 100`, [isoFromTs(since)]);
|
|
78
|
+
for (const c of priceMoves) {
|
|
79
|
+
events.push({
|
|
80
|
+
source: 'scanner',
|
|
81
|
+
type: 'crypto:price_move',
|
|
82
|
+
data: { tokenId: c.id, symbol: c.symbol, name: c.name, priceChange24h: c.price_change_24h },
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return events;
|
|
86
|
+
}
|
|
87
|
+
mineMetrics(db, since) {
|
|
88
|
+
const metrics = [];
|
|
89
|
+
const totals = safeGet(db, `SELECT COUNT(*) as total,
|
|
90
|
+
SUM(CASE WHEN signal_level = 'breakout' THEN 1 ELSE 0 END) as breakouts,
|
|
91
|
+
SUM(CASE WHEN signal_level = 'signal' THEN 1 ELSE 0 END) as signals,
|
|
92
|
+
AVG(signal_score) as avg_score,
|
|
93
|
+
AVG(star_velocity_24h) as avg_velocity
|
|
94
|
+
FROM scanned_repos WHERE last_scanned_at > ?`, [isoFromTs(since)]);
|
|
95
|
+
if (totals) {
|
|
96
|
+
metrics.push({ name: 'scanner_total_repos', value: totals.total });
|
|
97
|
+
metrics.push({ name: 'scanner_breakout_count', value: totals.breakouts ?? 0 });
|
|
98
|
+
metrics.push({ name: 'scanner_signal_count', value: totals.signals ?? 0 });
|
|
99
|
+
metrics.push({ name: 'scanner_avg_score', value: totals.avg_score ?? 0 });
|
|
100
|
+
metrics.push({ name: 'scanner_avg_velocity', value: totals.avg_velocity ?? 0 });
|
|
101
|
+
}
|
|
102
|
+
const cryptoAvg = safeGet(db, `SELECT AVG(price_change_24h) as avg_change FROM crypto_tokens WHERE last_scanned_at > ?`, [isoFromTs(since)]);
|
|
103
|
+
if (cryptoAvg?.avg_change != null) {
|
|
104
|
+
metrics.push({ name: 'scanner_crypto_avg_change', value: cryptoAvg.avg_change });
|
|
105
|
+
}
|
|
106
|
+
return metrics;
|
|
107
|
+
}
|
|
108
|
+
mineHypothesisObservations(db, since) {
|
|
109
|
+
const observations = [];
|
|
110
|
+
// Repos by language
|
|
111
|
+
const byLanguage = safeAll(db, `SELECT language, COUNT(*) as cnt, AVG(signal_score) as avg_score
|
|
112
|
+
FROM scanned_repos WHERE last_scanned_at > ? AND language IS NOT NULL GROUP BY language`, [isoFromTs(since)]);
|
|
113
|
+
for (const l of byLanguage) {
|
|
114
|
+
observations.push({
|
|
115
|
+
source: 'scanner',
|
|
116
|
+
type: 'repo:by_language',
|
|
117
|
+
value: l.cnt,
|
|
118
|
+
metadata: { language: l.language, avg_score: l.avg_score },
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// Repos by phase
|
|
122
|
+
const byPhase = safeAll(db, `SELECT phase, COUNT(*) as cnt, AVG(current_stars) as avg_stars
|
|
123
|
+
FROM scanned_repos WHERE last_scanned_at > ? GROUP BY phase`, [isoFromTs(since)]);
|
|
124
|
+
for (const p of byPhase) {
|
|
125
|
+
observations.push({
|
|
126
|
+
source: 'scanner',
|
|
127
|
+
type: 'repo:by_phase',
|
|
128
|
+
value: p.cnt,
|
|
129
|
+
metadata: { phase: p.phase, avg_stars: p.avg_stars },
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// Crypto by signal level
|
|
133
|
+
const byLevel = safeAll(db, `SELECT signal_level, COUNT(*) as cnt
|
|
134
|
+
FROM crypto_tokens WHERE last_scanned_at > ? GROUP BY signal_level`, [isoFromTs(since)]);
|
|
135
|
+
for (const l of byLevel) {
|
|
136
|
+
observations.push({
|
|
137
|
+
source: 'scanner',
|
|
138
|
+
type: 'crypto:by_level',
|
|
139
|
+
value: l.cnt,
|
|
140
|
+
metadata: { level: l.signal_level },
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return observations;
|
|
144
|
+
}
|
|
145
|
+
mineCrossDomainEvents(db, since) {
|
|
146
|
+
const events = [];
|
|
147
|
+
// Repo batch summary
|
|
148
|
+
const repoBatch = safeGet(db, `SELECT COUNT(*) as total,
|
|
149
|
+
SUM(CASE WHEN signal_level = 'breakout' THEN 1 ELSE 0 END) as breakouts,
|
|
150
|
+
SUM(CASE WHEN signal_level = 'signal' THEN 1 ELSE 0 END) as signals,
|
|
151
|
+
SUM(CASE WHEN signal_level = 'watch' THEN 1 ELSE 0 END) as watches,
|
|
152
|
+
AVG(signal_score) as avg_score
|
|
153
|
+
FROM scanned_repos WHERE last_scanned_at > ?`, [isoFromTs(since)]);
|
|
154
|
+
if (repoBatch && repoBatch.total > 0) {
|
|
155
|
+
const topLang = safeGet(db, `SELECT language FROM scanned_repos WHERE last_scanned_at > ? AND language IS NOT NULL
|
|
156
|
+
GROUP BY language ORDER BY COUNT(*) DESC LIMIT 1`, [isoFromTs(since)]);
|
|
157
|
+
events.push({
|
|
158
|
+
brain: 'scanner',
|
|
159
|
+
eventType: 'scanner:repo_batch',
|
|
160
|
+
data: {
|
|
161
|
+
total: repoBatch.total,
|
|
162
|
+
breakouts: repoBatch.breakouts ?? 0,
|
|
163
|
+
signals: repoBatch.signals ?? 0,
|
|
164
|
+
watches: repoBatch.watches ?? 0,
|
|
165
|
+
avg_score: repoBatch.avg_score ?? 0,
|
|
166
|
+
top_language: topLang?.language ?? 'unknown',
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
// Crypto batch summary
|
|
171
|
+
const cryptoBatch = safeGet(db, `SELECT COUNT(*) as total,
|
|
172
|
+
AVG(price_change_24h) as avg_change_24h,
|
|
173
|
+
SUM(CASE WHEN ABS(price_change_24h) > 10 THEN 1 ELSE 0 END) as movers_count
|
|
174
|
+
FROM crypto_tokens WHERE last_scanned_at > ?`, [isoFromTs(since)]);
|
|
175
|
+
if (cryptoBatch && cryptoBatch.total > 0) {
|
|
176
|
+
events.push({
|
|
177
|
+
brain: 'scanner',
|
|
178
|
+
eventType: 'scanner:crypto_batch',
|
|
179
|
+
data: {
|
|
180
|
+
total: cryptoBatch.total,
|
|
181
|
+
avg_change_24h: cryptoBatch.avg_change_24h ?? 0,
|
|
182
|
+
movers_count: cryptoBatch.movers_count ?? 0,
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return events;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// ── Helpers ─────────────────────────────────────────────
|
|
190
|
+
function isoFromTs(ts) {
|
|
191
|
+
return ts > 0 ? new Date(ts).toISOString() : '1970-01-01T00:00:00.000Z';
|
|
192
|
+
}
|
|
193
|
+
function safeAll(db, sql, params) {
|
|
194
|
+
try {
|
|
195
|
+
return db.prepare(sql).all(...params);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function safeGet(db, sql, params) {
|
|
202
|
+
try {
|
|
203
|
+
return db.prepare(sql).get(...params);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=scanner-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-adapter.js","sourceRoot":"","sources":["../../../src/research/adapters/scanner-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,11 +67,13 @@ export interface DataMinerState {
|
|
|
67
67
|
export declare function runDataMinerMigration(db: Database.Database): void;
|
|
68
68
|
export declare class DataMiner {
|
|
69
69
|
private db;
|
|
70
|
-
private
|
|
70
|
+
private adapters;
|
|
71
71
|
private engines;
|
|
72
72
|
private log;
|
|
73
73
|
private state;
|
|
74
74
|
constructor(db: Database.Database, adapter: DataMinerAdapter, engines: DataMinerEngines);
|
|
75
|
+
/** Register an additional adapter for mining. */
|
|
76
|
+
addAdapter(adapter: DataMinerAdapter): void;
|
|
75
77
|
/** Bootstrap: scan ALL historical data and feed into engines. Only runs once. */
|
|
76
78
|
bootstrap(): void;
|
|
77
79
|
/** Incremental mine: fetch new data since last run and feed into engines. */
|
|
@@ -17,24 +17,31 @@ export function runDataMinerMigration(db) {
|
|
|
17
17
|
// ── DataMiner ───────────────────────────────────────────
|
|
18
18
|
export class DataMiner {
|
|
19
19
|
db;
|
|
20
|
-
|
|
20
|
+
adapters;
|
|
21
21
|
engines;
|
|
22
22
|
log = getLogger();
|
|
23
23
|
state;
|
|
24
24
|
constructor(db, adapter, engines) {
|
|
25
25
|
this.db = db;
|
|
26
|
-
this.
|
|
26
|
+
this.adapters = [adapter];
|
|
27
27
|
this.engines = engines;
|
|
28
28
|
runDataMinerMigration(db);
|
|
29
29
|
this.state = this.loadState();
|
|
30
30
|
}
|
|
31
|
+
/** Register an additional adapter for mining. */
|
|
32
|
+
addAdapter(adapter) {
|
|
33
|
+
this.adapters.push(adapter);
|
|
34
|
+
this.log.info(`[data-miner] Added adapter: ${adapter.name}`);
|
|
35
|
+
}
|
|
31
36
|
/** Bootstrap: scan ALL historical data and feed into engines. Only runs once. */
|
|
32
37
|
bootstrap() {
|
|
33
38
|
if (this.state.bootstrap_complete) {
|
|
34
|
-
this.
|
|
39
|
+
const names = this.adapters.map(a => a.name).join(', ');
|
|
40
|
+
this.log.info(`[data-miner] Bootstrap already complete for ${names}`);
|
|
35
41
|
return;
|
|
36
42
|
}
|
|
37
|
-
this.
|
|
43
|
+
const names = this.adapters.map(a => a.name).join(', ');
|
|
44
|
+
this.log.info(`[data-miner] Bootstrapping ${names} — scanning all historical data...`);
|
|
38
45
|
const start = Date.now();
|
|
39
46
|
// Mine everything from epoch
|
|
40
47
|
const result = this.mineFrom(0);
|
|
@@ -42,7 +49,7 @@ export class DataMiner {
|
|
|
42
49
|
this.state.last_mined_at = Date.now();
|
|
43
50
|
this.saveState();
|
|
44
51
|
const duration = Date.now() - start;
|
|
45
|
-
this.log.info(`[data-miner] Bootstrap complete for ${
|
|
52
|
+
this.log.info(`[data-miner] Bootstrap complete for ${names} in ${duration}ms — ` +
|
|
46
53
|
`${result.observations} observations, ${result.causalEvents} causal events, ` +
|
|
47
54
|
`${result.metrics} metrics, ${result.hypothesisObs} hypothesis observations, ` +
|
|
48
55
|
`${result.crossDomain} cross-domain events`);
|
|
@@ -55,7 +62,8 @@ export class DataMiner {
|
|
|
55
62
|
this.state.last_mined_at = now;
|
|
56
63
|
this.saveState();
|
|
57
64
|
if (result.total > 0) {
|
|
58
|
-
this.
|
|
65
|
+
const names = this.adapters.map(a => a.name).join(', ');
|
|
66
|
+
this.log.info(`[data-miner] Mined ${result.total} items from ${names} ` +
|
|
59
67
|
`(obs: ${result.observations}, causal: ${result.causalEvents}, ` +
|
|
60
68
|
`metrics: ${result.metrics}, hypo: ${result.hypothesisObs}, cross: ${result.crossDomain})`);
|
|
61
69
|
}
|
|
@@ -71,76 +79,78 @@ export class DataMiner {
|
|
|
71
79
|
let metrics = 0;
|
|
72
80
|
let hypothesisObs = 0;
|
|
73
81
|
let crossDomain = 0;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
for (const adapter of this.adapters) {
|
|
83
|
+
// 1. Mine observations → SelfObserver
|
|
84
|
+
try {
|
|
85
|
+
const obs = adapter.mineObservations(this.db, since);
|
|
86
|
+
for (const o of obs) {
|
|
87
|
+
this.engines.selfObserver.record({
|
|
88
|
+
category: o.category,
|
|
89
|
+
event_type: o.event_type,
|
|
90
|
+
metrics: o.metrics,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
observations += obs.length;
|
|
94
|
+
this.state.total_observations_mined += obs.length;
|
|
83
95
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
for (const e of events) {
|
|
95
|
-
this.engines.causalGraph.recordEvent(e.source, e.type, e.data);
|
|
96
|
+
catch (err) {
|
|
97
|
+
this.log.error(`[data-miner] Error mining observations from ${adapter.name}: ${err.message}`);
|
|
98
|
+
}
|
|
99
|
+
// 2. Mine causal events → CausalGraph
|
|
100
|
+
try {
|
|
101
|
+
const events = adapter.mineCausalEvents(this.db, since);
|
|
102
|
+
if (this.engines.causalGraph) {
|
|
103
|
+
for (const e of events) {
|
|
104
|
+
this.engines.causalGraph.recordEvent(e.source, e.type, e.data);
|
|
105
|
+
}
|
|
96
106
|
}
|
|
107
|
+
causalEvents += events.length;
|
|
108
|
+
this.state.total_causal_events_mined += events.length;
|
|
97
109
|
}
|
|
98
|
-
|
|
99
|
-
|
|
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);
|
|
110
|
+
catch (err) {
|
|
111
|
+
this.log.error(`[data-miner] Error mining causal events from ${adapter.name}: ${err.message}`);
|
|
109
112
|
}
|
|
110
|
-
metrics
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
});
|
|
113
|
+
// 3. Mine metrics → AnomalyDetective
|
|
114
|
+
try {
|
|
115
|
+
const m = adapter.mineMetrics(this.db, since);
|
|
116
|
+
for (const metric of m) {
|
|
117
|
+
this.engines.anomalyDetective.recordMetric(metric.name, metric.value);
|
|
127
118
|
}
|
|
119
|
+
metrics += m.length;
|
|
128
120
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
121
|
+
catch (err) {
|
|
122
|
+
this.log.error(`[data-miner] Error mining metrics from ${adapter.name}: ${err.message}`);
|
|
123
|
+
}
|
|
124
|
+
// 4. Mine hypothesis observations → HypothesisEngine
|
|
125
|
+
try {
|
|
126
|
+
const hypo = adapter.mineHypothesisObservations(this.db, since);
|
|
127
|
+
if (this.engines.hypothesisEngine) {
|
|
128
|
+
for (const h of hypo) {
|
|
129
|
+
this.engines.hypothesisEngine.observe({
|
|
130
|
+
source: h.source,
|
|
131
|
+
type: h.type,
|
|
132
|
+
value: h.value,
|
|
133
|
+
timestamp: Date.now(),
|
|
134
|
+
metadata: h.metadata,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
hypothesisObs += hypo.length;
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
this.log.error(`[data-miner] Error mining hypothesis observations from ${adapter.name}: ${err.message}`);
|
|
142
|
+
}
|
|
143
|
+
// 5. Mine cross-domain events → CrossDomainEngine
|
|
144
|
+
try {
|
|
145
|
+
const cd = adapter.mineCrossDomainEvents(this.db, since);
|
|
146
|
+
for (const c of cd) {
|
|
147
|
+
this.engines.crossDomain.recordEvent(c.brain, c.eventType, c.data);
|
|
148
|
+
}
|
|
149
|
+
crossDomain += cd.length;
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
this.log.error(`[data-miner] Error mining cross-domain events from ${adapter.name}: ${err.message}`);
|
|
139
153
|
}
|
|
140
|
-
crossDomain = cd.length;
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
this.log.error(`[data-miner] Error mining cross-domain events: ${err.message}`);
|
|
144
154
|
}
|
|
145
155
|
const total = observations + causalEvents + metrics + hypothesisObs + crossDomain;
|
|
146
156
|
return { observations, causalEvents, metrics, hypothesisObs, crossDomain, total };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-miner.js","sourceRoot":"","sources":["../../src/research/data-miner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;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,
|
|
1
|
+
{"version":3,"file":"data-miner.js","sourceRoot":"","sources":["../../src/research/data-miner.ts"],"names":[],"mappings":"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"}
|