@timmeck/brain-core 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/index.d.ts +18 -0
  2. package/dist/index.js +18 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/research/adaptive-strategy.d.ts +56 -0
  5. package/dist/research/adaptive-strategy.js +236 -0
  6. package/dist/research/adaptive-strategy.js.map +1 -0
  7. package/dist/research/agenda-engine.d.ts +46 -0
  8. package/dist/research/agenda-engine.js +264 -0
  9. package/dist/research/agenda-engine.js.map +1 -0
  10. package/dist/research/anomaly-detective.d.ts +62 -0
  11. package/dist/research/anomaly-detective.js +318 -0
  12. package/dist/research/anomaly-detective.js.map +1 -0
  13. package/dist/research/counterfactual-engine.d.ts +63 -0
  14. package/dist/research/counterfactual-engine.js +263 -0
  15. package/dist/research/counterfactual-engine.js.map +1 -0
  16. package/dist/research/cross-domain-engine.d.ts +52 -0
  17. package/dist/research/cross-domain-engine.js +283 -0
  18. package/dist/research/cross-domain-engine.js.map +1 -0
  19. package/dist/research/experiment-engine.d.ts +77 -0
  20. package/dist/research/experiment-engine.js +328 -0
  21. package/dist/research/experiment-engine.js.map +1 -0
  22. package/dist/research/journal.d.ts +62 -0
  23. package/dist/research/journal.js +262 -0
  24. package/dist/research/journal.js.map +1 -0
  25. package/dist/research/knowledge-distiller.d.ts +95 -0
  26. package/dist/research/knowledge-distiller.js +426 -0
  27. package/dist/research/knowledge-distiller.js.map +1 -0
  28. package/dist/research/self-observer.d.ts +55 -0
  29. package/dist/research/self-observer.js +268 -0
  30. package/dist/research/self-observer.js.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/research/journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type Database from 'better-sqlite3';
2
+ export interface Principle {
3
+ id: string;
4
+ domain: string;
5
+ statement: string;
6
+ success_rate: number;
7
+ sample_size: number;
8
+ confidence: number;
9
+ source: string;
10
+ }
11
+ export interface AntiPattern {
12
+ id: string;
13
+ domain: string;
14
+ statement: string;
15
+ failure_rate: number;
16
+ sample_size: number;
17
+ confidence: number;
18
+ alternative: string;
19
+ }
20
+ export interface Strategy {
21
+ id: string;
22
+ domain: string;
23
+ description: string;
24
+ conditions: string[];
25
+ effectiveness: number;
26
+ evidence_count: number;
27
+ }
28
+ export interface KnowledgePackage {
29
+ id: string;
30
+ created: number;
31
+ domain: string;
32
+ principles: Principle[];
33
+ anti_patterns: AntiPattern[];
34
+ strategies: Strategy[];
35
+ confidence: number;
36
+ evidence_summary: string;
37
+ applicable_when: string[];
38
+ transferable_to: string[];
39
+ }
40
+ export interface KnowledgeEvolution {
41
+ domain: string;
42
+ period: string;
43
+ principles_added: number;
44
+ principles_removed: number;
45
+ anti_patterns_discovered: number;
46
+ strategies_changed: number;
47
+ confidence_trend: 'rising' | 'stable' | 'falling';
48
+ highlights: string[];
49
+ }
50
+ export interface KnowledgeDistillerConfig {
51
+ brainName: string;
52
+ /** Minimum evidence to extract a principle. Default: 5 */
53
+ minEvidence?: number;
54
+ /** Minimum success rate for a principle. Default: 0.7 */
55
+ minSuccessRate?: number;
56
+ /** Minimum failure rate for an anti-pattern. Default: 0.6 */
57
+ minFailureRate?: number;
58
+ }
59
+ export declare function runKnowledgeDistillerMigration(db: Database.Database): void;
60
+ export declare class KnowledgeDistiller {
61
+ private db;
62
+ private config;
63
+ private log;
64
+ constructor(db: Database.Database, config: KnowledgeDistillerConfig);
65
+ /** Distill knowledge from confirmed hypotheses, research discoveries, and strategy adaptations. */
66
+ distill(): {
67
+ principles: Principle[];
68
+ antiPatterns: AntiPattern[];
69
+ strategies: Strategy[];
70
+ };
71
+ /** Get summary of all distilled knowledge. */
72
+ getSummary(): {
73
+ principles: number;
74
+ antiPatterns: number;
75
+ strategies: number;
76
+ topPrinciples: Principle[];
77
+ avgConfidence: number;
78
+ };
79
+ /** Get principles, optionally filtered by domain. */
80
+ getPrinciples(domain?: string, limit?: number): Principle[];
81
+ /** Get anti-patterns. */
82
+ getAntiPatterns(domain?: string, limit?: number): AntiPattern[];
83
+ /** Build a transferable knowledge package for a domain. */
84
+ getPackage(domain: string): KnowledgePackage;
85
+ /** Track how knowledge has evolved over time. */
86
+ getEvolution(domain?: string, periods?: number): KnowledgeEvolution[];
87
+ private extractPrinciples;
88
+ private extractAntiPatterns;
89
+ private extractStrategies;
90
+ private suggestTransferDomains;
91
+ private upsertPrinciple;
92
+ private upsertAntiPattern;
93
+ private upsertStrategy;
94
+ private hashString;
95
+ }
@@ -0,0 +1,426 @@
1
+ import { getLogger } from '../utils/logger.js';
2
+ // ── Migration ───────────────────────────────────────────
3
+ export function runKnowledgeDistillerMigration(db) {
4
+ db.exec(`
5
+ CREATE TABLE IF NOT EXISTS knowledge_principles (
6
+ id TEXT PRIMARY KEY,
7
+ domain TEXT NOT NULL,
8
+ statement TEXT NOT NULL,
9
+ success_rate REAL NOT NULL,
10
+ sample_size INTEGER NOT NULL,
11
+ confidence REAL NOT NULL,
12
+ source TEXT NOT NULL,
13
+ created_at TEXT DEFAULT (datetime('now')),
14
+ updated_at TEXT DEFAULT (datetime('now'))
15
+ );
16
+ CREATE INDEX IF NOT EXISTS idx_kp_domain ON knowledge_principles(domain);
17
+
18
+ CREATE TABLE IF NOT EXISTS knowledge_anti_patterns (
19
+ id TEXT PRIMARY KEY,
20
+ domain TEXT NOT NULL,
21
+ statement TEXT NOT NULL,
22
+ failure_rate REAL NOT NULL,
23
+ sample_size INTEGER NOT NULL,
24
+ confidence REAL NOT NULL,
25
+ alternative TEXT NOT NULL,
26
+ created_at TEXT DEFAULT (datetime('now')),
27
+ updated_at TEXT DEFAULT (datetime('now'))
28
+ );
29
+ CREATE INDEX IF NOT EXISTS idx_kap_domain ON knowledge_anti_patterns(domain);
30
+
31
+ CREATE TABLE IF NOT EXISTS knowledge_strategies (
32
+ id TEXT PRIMARY KEY,
33
+ domain TEXT NOT NULL,
34
+ description TEXT NOT NULL,
35
+ conditions TEXT NOT NULL,
36
+ effectiveness REAL NOT NULL,
37
+ evidence_count INTEGER NOT NULL,
38
+ created_at TEXT DEFAULT (datetime('now')),
39
+ updated_at TEXT DEFAULT (datetime('now'))
40
+ );
41
+ CREATE INDEX IF NOT EXISTS idx_ks_domain ON knowledge_strategies(domain);
42
+
43
+ CREATE TABLE IF NOT EXISTS knowledge_snapshots (
44
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
45
+ timestamp INTEGER NOT NULL,
46
+ domain TEXT NOT NULL,
47
+ principles_count INTEGER NOT NULL,
48
+ anti_patterns_count INTEGER NOT NULL,
49
+ strategies_count INTEGER NOT NULL,
50
+ avg_confidence REAL NOT NULL,
51
+ created_at TEXT DEFAULT (datetime('now'))
52
+ );
53
+ `);
54
+ }
55
+ // ── Engine ──────────────────────────────────────────────
56
+ export class KnowledgeDistiller {
57
+ db;
58
+ config;
59
+ log = getLogger();
60
+ constructor(db, config) {
61
+ this.db = db;
62
+ this.config = {
63
+ brainName: config.brainName,
64
+ minEvidence: config.minEvidence ?? 5,
65
+ minSuccessRate: config.minSuccessRate ?? 0.7,
66
+ minFailureRate: config.minFailureRate ?? 0.6,
67
+ };
68
+ runKnowledgeDistillerMigration(db);
69
+ }
70
+ /** Distill knowledge from confirmed hypotheses, research discoveries, and strategy adaptations. */
71
+ distill() {
72
+ const principles = this.extractPrinciples();
73
+ const antiPatterns = this.extractAntiPatterns();
74
+ const strategies = this.extractStrategies();
75
+ // Take snapshot for evolution tracking
76
+ this.db.prepare(`
77
+ INSERT INTO knowledge_snapshots (timestamp, domain, principles_count, anti_patterns_count, strategies_count, avg_confidence)
78
+ VALUES (?, ?, ?, ?, ?, ?)
79
+ `).run(Date.now(), this.config.brainName, principles.length, antiPatterns.length, strategies.length, principles.length > 0 ? principles.reduce((s, p) => s + p.confidence, 0) / principles.length : 0);
80
+ return { principles, antiPatterns, strategies };
81
+ }
82
+ /** Get summary of all distilled knowledge. */
83
+ getSummary() {
84
+ const pCount = this.db.prepare(`SELECT COUNT(*) as c FROM knowledge_principles`).get().c;
85
+ const apCount = this.db.prepare(`SELECT COUNT(*) as c FROM knowledge_anti_patterns`).get().c;
86
+ const sCount = this.db.prepare(`SELECT COUNT(*) as c FROM knowledge_strategies`).get().c;
87
+ const topPrinciples = this.getPrinciples(undefined, 5);
88
+ const avgConf = topPrinciples.length > 0 ? topPrinciples.reduce((s, p) => s + p.confidence, 0) / topPrinciples.length : 0;
89
+ return {
90
+ principles: pCount,
91
+ antiPatterns: apCount,
92
+ strategies: sCount,
93
+ topPrinciples,
94
+ avgConfidence: avgConf,
95
+ };
96
+ }
97
+ /** Get principles, optionally filtered by domain. */
98
+ getPrinciples(domain, limit = 20) {
99
+ let sql = `SELECT * FROM knowledge_principles`;
100
+ const params = [];
101
+ if (domain) {
102
+ sql += ` WHERE domain = ?`;
103
+ params.push(domain);
104
+ }
105
+ sql += ` ORDER BY confidence DESC, success_rate DESC LIMIT ?`;
106
+ params.push(limit);
107
+ return this.db.prepare(sql).all(...params).map(r => ({
108
+ id: r.id,
109
+ domain: r.domain,
110
+ statement: r.statement,
111
+ success_rate: r.success_rate,
112
+ sample_size: r.sample_size,
113
+ confidence: r.confidence,
114
+ source: r.source,
115
+ }));
116
+ }
117
+ /** Get anti-patterns. */
118
+ getAntiPatterns(domain, limit = 20) {
119
+ let sql = `SELECT * FROM knowledge_anti_patterns`;
120
+ const params = [];
121
+ if (domain) {
122
+ sql += ` WHERE domain = ?`;
123
+ params.push(domain);
124
+ }
125
+ sql += ` ORDER BY failure_rate DESC LIMIT ?`;
126
+ params.push(limit);
127
+ return this.db.prepare(sql).all(...params).map(r => ({
128
+ id: r.id,
129
+ domain: r.domain,
130
+ statement: r.statement,
131
+ failure_rate: r.failure_rate,
132
+ sample_size: r.sample_size,
133
+ confidence: r.confidence,
134
+ alternative: r.alternative,
135
+ }));
136
+ }
137
+ /** Build a transferable knowledge package for a domain. */
138
+ getPackage(domain) {
139
+ const principles = this.getPrinciples(domain, 15);
140
+ const antiPatterns = this.getAntiPatterns(domain, 10);
141
+ const strategies = this.db.prepare(`
142
+ SELECT * FROM knowledge_strategies WHERE domain = ? ORDER BY effectiveness DESC LIMIT 10
143
+ `).all(domain).map(r => ({
144
+ id: r.id,
145
+ domain: r.domain,
146
+ description: r.description,
147
+ conditions: JSON.parse(r.conditions),
148
+ effectiveness: r.effectiveness,
149
+ evidence_count: r.evidence_count,
150
+ }));
151
+ const allConf = [...principles.map(p => p.confidence), ...antiPatterns.map(a => a.confidence)];
152
+ const avgConf = allConf.length > 0 ? allConf.reduce((a, b) => a + b, 0) / allConf.length : 0;
153
+ return {
154
+ id: `${domain}-${Date.now()}`,
155
+ created: Date.now(),
156
+ domain,
157
+ principles,
158
+ anti_patterns: antiPatterns,
159
+ strategies,
160
+ confidence: avgConf,
161
+ evidence_summary: `${principles.length} principles, ${antiPatterns.length} anti-patterns, ${strategies.length} strategies from ${this.config.brainName}`,
162
+ applicable_when: [`Working with ${domain} tasks`, `Debugging ${domain} issues`],
163
+ transferable_to: this.suggestTransferDomains(domain),
164
+ };
165
+ }
166
+ /** Track how knowledge has evolved over time. */
167
+ getEvolution(domain, periods = 5) {
168
+ const snapshots = this.db.prepare(`
169
+ SELECT * FROM knowledge_snapshots
170
+ ${domain ? 'WHERE domain = ?' : ''}
171
+ ORDER BY timestamp DESC LIMIT ?
172
+ `).all(...(domain ? [domain, periods * 2] : [periods * 2]));
173
+ if (snapshots.length < 2)
174
+ return [];
175
+ const evolutions = [];
176
+ for (let i = 0; i < snapshots.length - 1; i++) {
177
+ const current = snapshots[i];
178
+ const previous = snapshots[i + 1];
179
+ const principlesDelta = current.principles_count - previous.principles_count;
180
+ const antiPatternsDelta = current.anti_patterns_count - previous.anti_patterns_count;
181
+ const strategyDelta = current.strategies_count - previous.strategies_count;
182
+ const confCurrent = current.avg_confidence;
183
+ const confPrev = previous.avg_confidence;
184
+ const confTrend = confCurrent > confPrev + 0.02 ? 'rising' :
185
+ confCurrent < confPrev - 0.02 ? 'falling' : 'stable';
186
+ const highlights = [];
187
+ if (principlesDelta > 0)
188
+ highlights.push(`+${principlesDelta} new principles`);
189
+ if (principlesDelta < 0)
190
+ highlights.push(`${principlesDelta} principles removed (outdated)`);
191
+ if (antiPatternsDelta > 0)
192
+ highlights.push(`+${antiPatternsDelta} anti-patterns discovered`);
193
+ if (strategyDelta !== 0)
194
+ highlights.push(`${strategyDelta > 0 ? '+' : ''}${strategyDelta} strategy changes`);
195
+ evolutions.push({
196
+ domain: current.domain,
197
+ period: new Date(current.timestamp).toLocaleDateString(),
198
+ principles_added: Math.max(0, principlesDelta),
199
+ principles_removed: Math.abs(Math.min(0, principlesDelta)),
200
+ anti_patterns_discovered: Math.max(0, antiPatternsDelta),
201
+ strategies_changed: Math.abs(strategyDelta),
202
+ confidence_trend: confTrend,
203
+ highlights,
204
+ });
205
+ }
206
+ return evolutions;
207
+ }
208
+ extractPrinciples() {
209
+ const principles = [];
210
+ // Extract from confirmed hypotheses
211
+ try {
212
+ const confirmed = this.db.prepare(`
213
+ SELECT statement, type, variables, confidence, evidence_for, evidence_against
214
+ FROM hypotheses
215
+ WHERE status = 'confirmed' AND evidence_for >= ?
216
+ ORDER BY confidence DESC
217
+ `).all(this.config.minEvidence);
218
+ for (const h of confirmed) {
219
+ const total = h.evidence_for + h.evidence_against;
220
+ const successRate = h.evidence_for / Math.max(total, 1);
221
+ if (successRate < this.config.minSuccessRate)
222
+ continue;
223
+ const id = `hyp-${this.hashString(h.statement)}`;
224
+ const principle = {
225
+ id,
226
+ domain: h.type || this.config.brainName,
227
+ statement: h.statement,
228
+ success_rate: successRate,
229
+ sample_size: total,
230
+ confidence: h.confidence,
231
+ source: 'confirmed_hypothesis',
232
+ };
233
+ this.upsertPrinciple(principle);
234
+ principles.push(principle);
235
+ }
236
+ }
237
+ catch { /* hypotheses table might not exist */ }
238
+ // Extract from research discoveries
239
+ try {
240
+ const discoveries = this.db.prepare(`
241
+ SELECT title, description, confidence, type, data
242
+ FROM research_discoveries
243
+ WHERE confidence >= 0.6 AND type IN ('confirmed_hypothesis', 'causal_chain')
244
+ ORDER BY confidence DESC LIMIT 20
245
+ `).all();
246
+ for (const d of discoveries) {
247
+ const id = `disc-${this.hashString(d.title)}`;
248
+ const principle = {
249
+ id,
250
+ domain: this.config.brainName,
251
+ statement: d.title,
252
+ success_rate: d.confidence,
253
+ sample_size: 1,
254
+ confidence: d.confidence,
255
+ source: `research_discovery:${d.type}`,
256
+ };
257
+ this.upsertPrinciple(principle);
258
+ principles.push(principle);
259
+ }
260
+ }
261
+ catch { /* research_discoveries table might not exist */ }
262
+ return principles;
263
+ }
264
+ extractAntiPatterns() {
265
+ const antiPatterns = [];
266
+ // Extract from rejected hypotheses (things that don't work)
267
+ try {
268
+ const rejected = this.db.prepare(`
269
+ SELECT statement, type, evidence_for, evidence_against, confidence
270
+ FROM hypotheses
271
+ WHERE status = 'rejected' AND evidence_against >= ?
272
+ ORDER BY evidence_against DESC
273
+ `).all(this.config.minEvidence);
274
+ for (const h of rejected) {
275
+ const total = h.evidence_for + h.evidence_against;
276
+ const failureRate = h.evidence_against / Math.max(total, 1);
277
+ if (failureRate < this.config.minFailureRate)
278
+ continue;
279
+ const id = `anti-${this.hashString(h.statement)}`;
280
+ const anti = {
281
+ id,
282
+ domain: h.type || this.config.brainName,
283
+ statement: `NOT: ${h.statement}`,
284
+ failure_rate: failureRate,
285
+ sample_size: total,
286
+ confidence: h.confidence,
287
+ alternative: 'See confirmed principles for what works instead.',
288
+ };
289
+ this.upsertAntiPattern(anti);
290
+ antiPatterns.push(anti);
291
+ }
292
+ }
293
+ catch { /* hypotheses table might not exist */ }
294
+ // Extract from reverted strategy adaptations
295
+ try {
296
+ const reverted = this.db.prepare(`
297
+ SELECT strategy, parameter, old_value, new_value, reason, revert_reason
298
+ FROM strategy_adaptations
299
+ WHERE reverted = 1
300
+ ORDER BY timestamp DESC LIMIT 20
301
+ `).all();
302
+ for (const r of reverted) {
303
+ const id = `revert-${r.strategy}-${r.parameter}`;
304
+ const anti = {
305
+ id,
306
+ domain: r.strategy,
307
+ statement: `Changing ${r.parameter} from ${r.old_value} to ${r.new_value} degrades performance`,
308
+ failure_rate: 1.0,
309
+ sample_size: 1,
310
+ confidence: 0.7,
311
+ alternative: `Keep ${r.parameter} at ${r.old_value}. Reason: ${r.revert_reason ?? r.reason}`,
312
+ };
313
+ this.upsertAntiPattern(anti);
314
+ antiPatterns.push(anti);
315
+ }
316
+ }
317
+ catch { /* strategy_adaptations table might not exist */ }
318
+ return antiPatterns;
319
+ }
320
+ extractStrategies() {
321
+ const strategies = [];
322
+ // Extract from successful strategy adaptations
323
+ try {
324
+ const successful = this.db.prepare(`
325
+ SELECT strategy, parameter, old_value, new_value, reason, evidence,
326
+ performance_before, performance_after
327
+ FROM strategy_adaptations
328
+ WHERE reverted = 0 AND performance_after IS NOT NULL
329
+ AND performance_after > performance_before
330
+ ORDER BY (performance_after - performance_before) DESC LIMIT 20
331
+ `).all();
332
+ for (const s of successful) {
333
+ const improvement = s.performance_after - s.performance_before;
334
+ const id = `strat-${s.strategy}-${s.parameter}-${Date.now()}`;
335
+ const strategy = {
336
+ id,
337
+ domain: s.strategy,
338
+ description: `Set ${s.parameter} to ${s.new_value} (from ${s.old_value}) for ${(improvement * 100).toFixed(1)}% improvement`,
339
+ conditions: [s.reason],
340
+ effectiveness: improvement,
341
+ evidence_count: 1,
342
+ };
343
+ this.upsertStrategy(strategy);
344
+ strategies.push(strategy);
345
+ }
346
+ }
347
+ catch { /* strategy_adaptations table might not exist */ }
348
+ // Extract from meta-learning optimizations
349
+ try {
350
+ const optimizations = this.db.prepare(`
351
+ SELECT param_name, old_value, new_value, reason, improvement
352
+ FROM meta_learning_optimizations
353
+ WHERE improvement > 0
354
+ ORDER BY improvement DESC LIMIT 10
355
+ `).all();
356
+ for (const o of optimizations) {
357
+ const id = `meta-${o.param_name}`;
358
+ const strategy = {
359
+ id,
360
+ domain: 'meta_learning',
361
+ description: `Optimize ${o.param_name} to ${o.new_value} for ${(o.improvement * 100).toFixed(1)}% gain`,
362
+ conditions: [o.reason],
363
+ effectiveness: o.improvement,
364
+ evidence_count: 1,
365
+ };
366
+ this.upsertStrategy(strategy);
367
+ strategies.push(strategy);
368
+ }
369
+ }
370
+ catch { /* meta_learning_optimizations table might not exist */ }
371
+ return strategies;
372
+ }
373
+ suggestTransferDomains(domain) {
374
+ const allDomains = new Set();
375
+ try {
376
+ const rows = this.db.prepare(`SELECT DISTINCT domain FROM knowledge_principles`).all();
377
+ for (const r of rows)
378
+ allDomains.add(r.domain);
379
+ }
380
+ catch { /* ignore */ }
381
+ allDomains.delete(domain);
382
+ return [...allDomains].slice(0, 5);
383
+ }
384
+ upsertPrinciple(p) {
385
+ this.db.prepare(`
386
+ INSERT INTO knowledge_principles (id, domain, statement, success_rate, sample_size, confidence, source)
387
+ VALUES (?, ?, ?, ?, ?, ?, ?)
388
+ ON CONFLICT(id) DO UPDATE SET
389
+ success_rate = excluded.success_rate,
390
+ sample_size = excluded.sample_size,
391
+ confidence = excluded.confidence,
392
+ updated_at = datetime('now')
393
+ `).run(p.id, p.domain, p.statement, p.success_rate, p.sample_size, p.confidence, p.source);
394
+ }
395
+ upsertAntiPattern(a) {
396
+ this.db.prepare(`
397
+ INSERT INTO knowledge_anti_patterns (id, domain, statement, failure_rate, sample_size, confidence, alternative)
398
+ VALUES (?, ?, ?, ?, ?, ?, ?)
399
+ ON CONFLICT(id) DO UPDATE SET
400
+ failure_rate = excluded.failure_rate,
401
+ sample_size = excluded.sample_size,
402
+ confidence = excluded.confidence,
403
+ updated_at = datetime('now')
404
+ `).run(a.id, a.domain, a.statement, a.failure_rate, a.sample_size, a.confidence, a.alternative);
405
+ }
406
+ upsertStrategy(s) {
407
+ this.db.prepare(`
408
+ INSERT INTO knowledge_strategies (id, domain, description, conditions, effectiveness, evidence_count)
409
+ VALUES (?, ?, ?, ?, ?, ?)
410
+ ON CONFLICT(id) DO UPDATE SET
411
+ effectiveness = excluded.effectiveness,
412
+ evidence_count = knowledge_strategies.evidence_count + 1,
413
+ updated_at = datetime('now')
414
+ `).run(s.id, s.domain, s.description, JSON.stringify(s.conditions), s.effectiveness, s.evidence_count);
415
+ }
416
+ hashString(s) {
417
+ let hash = 0;
418
+ for (let i = 0; i < s.length; i++) {
419
+ const char = s.charCodeAt(i);
420
+ hash = ((hash << 5) - hash) + char;
421
+ hash = hash & hash;
422
+ }
423
+ return Math.abs(hash).toString(36);
424
+ }
425
+ }
426
+ //# sourceMappingURL=knowledge-distiller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-distiller.js","sourceRoot":"","sources":["../../src/research/knowledge-distiller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type Database from 'better-sqlite3';
2
+ export type ObservationCategory = 'tool_usage' | 'query_quality' | 'resolution_rate' | 'latency' | 'cross_brain';
3
+ export type InsightType = 'usage_pattern' | 'quality_issue' | 'optimization_opportunity' | 'anomaly';
4
+ export interface SelfObservation {
5
+ id?: number;
6
+ timestamp: number;
7
+ category: ObservationCategory;
8
+ event_type: string;
9
+ metrics: Record<string, unknown>;
10
+ context?: Record<string, unknown>;
11
+ }
12
+ export interface SelfInsight {
13
+ id?: number;
14
+ timestamp: number;
15
+ type: InsightType;
16
+ title: string;
17
+ description: string;
18
+ evidence: Record<string, unknown>;
19
+ confidence: number;
20
+ actionable: boolean;
21
+ }
22
+ export interface ImprovementSuggestion {
23
+ area: string;
24
+ problem: string;
25
+ suggestion: string;
26
+ evidence: Record<string, unknown>;
27
+ priority: number;
28
+ estimated_impact: string;
29
+ }
30
+ export interface SelfObserverConfig {
31
+ brainName: string;
32
+ /** Minimum observations before generating insights. Default: 10 */
33
+ minObservationsForInsight?: number;
34
+ /** How many recent observations to analyze. Default: 500 */
35
+ analysisWindow?: number;
36
+ }
37
+ export declare function runSelfObserverMigration(db: Database.Database): void;
38
+ export declare class SelfObserver {
39
+ private db;
40
+ private config;
41
+ private log;
42
+ constructor(db: Database.Database, config: SelfObserverConfig);
43
+ /** Record a self-observation about tool usage, query quality, etc. */
44
+ record(obs: Omit<SelfObservation, 'id' | 'timestamp'>): void;
45
+ /** Get observation statistics grouped by category and event type. */
46
+ getStats(): Record<string, unknown>;
47
+ /** Analyze observations and generate insights. */
48
+ analyze(): SelfInsight[];
49
+ /** Get all insights, optionally filtered by type. */
50
+ getInsights(type?: InsightType, limit?: number): SelfInsight[];
51
+ /** Generate an improvement plan based on insights. */
52
+ getImprovementPlan(): ImprovementSuggestion[];
53
+ private createInsight;
54
+ private persistInsight;
55
+ }