@timmeck/brain-core 2.34.0 → 2.35.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.
@@ -0,0 +1,532 @@
1
+ import { getLogger } from '../utils/logger.js';
2
+ // ── Migration ───────────────────────────────────────────
3
+ export function runConceptAbstractionMigration(db) {
4
+ db.exec(`
5
+ CREATE TABLE IF NOT EXISTS abstract_concepts (
6
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+ title TEXT NOT NULL,
8
+ description TEXT NOT NULL DEFAULT '',
9
+ level INTEGER NOT NULL DEFAULT 0,
10
+ parent_id INTEGER,
11
+ domain TEXT NOT NULL DEFAULT 'general',
12
+ member_count INTEGER NOT NULL DEFAULT 0,
13
+ avg_confidence REAL NOT NULL DEFAULT 0,
14
+ avg_similarity REAL NOT NULL DEFAULT 0,
15
+ keywords TEXT NOT NULL DEFAULT '[]',
16
+ transferability REAL NOT NULL DEFAULT 0,
17
+ created_at TEXT DEFAULT (datetime('now')),
18
+ updated_at TEXT DEFAULT (datetime('now')),
19
+ FOREIGN KEY (parent_id) REFERENCES abstract_concepts(id) ON DELETE SET NULL
20
+ );
21
+ CREATE INDEX IF NOT EXISTS idx_abstract_concepts_level ON abstract_concepts(level);
22
+ CREATE INDEX IF NOT EXISTS idx_abstract_concepts_parent ON abstract_concepts(parent_id);
23
+ CREATE INDEX IF NOT EXISTS idx_abstract_concepts_transferability ON abstract_concepts(transferability DESC);
24
+
25
+ CREATE TABLE IF NOT EXISTS concept_members (
26
+ concept_id INTEGER NOT NULL,
27
+ member_type TEXT NOT NULL,
28
+ member_id INTEGER NOT NULL,
29
+ similarity_to_centroid REAL NOT NULL DEFAULT 0,
30
+ PRIMARY KEY (concept_id, member_type, member_id),
31
+ FOREIGN KEY (concept_id) REFERENCES abstract_concepts(id) ON DELETE CASCADE
32
+ );
33
+ CREATE INDEX IF NOT EXISTS idx_concept_members_type ON concept_members(member_type);
34
+
35
+ CREATE TABLE IF NOT EXISTS concept_history (
36
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ cycle INTEGER NOT NULL,
38
+ total_concepts INTEGER NOT NULL DEFAULT 0,
39
+ concepts_by_level TEXT NOT NULL DEFAULT '{}',
40
+ new_count INTEGER NOT NULL DEFAULT 0,
41
+ merged_count INTEGER NOT NULL DEFAULT 0,
42
+ avg_transferability REAL NOT NULL DEFAULT 0,
43
+ created_at TEXT DEFAULT (datetime('now'))
44
+ );
45
+ CREATE INDEX IF NOT EXISTS idx_concept_history_cycle ON concept_history(cycle DESC);
46
+ `);
47
+ }
48
+ // ── Engine ──────────────────────────────────────────────
49
+ export class ConceptAbstraction {
50
+ db;
51
+ config;
52
+ log = getLogger();
53
+ ts = null;
54
+ sources = null;
55
+ cycleCount = 0;
56
+ // Prepared statements
57
+ insertConcept;
58
+ insertMember;
59
+ insertHistory;
60
+ getConceptById;
61
+ getMembersByConcept;
62
+ getConceptsByLevelStmt;
63
+ getChildConcepts;
64
+ getTopConceptsStmt;
65
+ getTransferableStmt;
66
+ getHistoryStmt;
67
+ countConceptsStmt;
68
+ countByLevelStmt;
69
+ avgTransferabilityStmt;
70
+ clearConceptsStmt;
71
+ clearMembersStmt;
72
+ constructor(db, config) {
73
+ this.db = db;
74
+ this.config = {
75
+ brainName: config.brainName,
76
+ clusterThreshold: config.clusterThreshold ?? 0.35,
77
+ minClusterSize: config.minClusterSize ?? 3,
78
+ level1Threshold: config.level1Threshold ?? 0.25,
79
+ level2Threshold: config.level2Threshold ?? 0.20,
80
+ keywordMinRatio: config.keywordMinRatio ?? 0.6,
81
+ };
82
+ runConceptAbstractionMigration(db);
83
+ this.insertConcept = db.prepare(`
84
+ INSERT INTO abstract_concepts (title, description, level, parent_id, domain, member_count, avg_confidence, avg_similarity, keywords, transferability)
85
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
86
+ `);
87
+ this.insertMember = db.prepare(`
88
+ INSERT OR REPLACE INTO concept_members (concept_id, member_type, member_id, similarity_to_centroid)
89
+ VALUES (?, ?, ?, ?)
90
+ `);
91
+ this.insertHistory = db.prepare(`
92
+ INSERT INTO concept_history (cycle, total_concepts, concepts_by_level, new_count, merged_count, avg_transferability)
93
+ VALUES (?, ?, ?, ?, ?, ?)
94
+ `);
95
+ this.getConceptById = db.prepare('SELECT * FROM abstract_concepts WHERE id = ?');
96
+ this.getMembersByConcept = db.prepare('SELECT * FROM concept_members WHERE concept_id = ?');
97
+ this.getConceptsByLevelStmt = db.prepare('SELECT * FROM abstract_concepts WHERE level = ? ORDER BY member_count DESC');
98
+ this.getChildConcepts = db.prepare('SELECT * FROM abstract_concepts WHERE parent_id = ? ORDER BY member_count DESC');
99
+ this.getTopConceptsStmt = db.prepare('SELECT * FROM abstract_concepts ORDER BY member_count DESC, transferability DESC LIMIT ?');
100
+ this.getTransferableStmt = db.prepare('SELECT * FROM abstract_concepts WHERE transferability >= ? ORDER BY transferability DESC, member_count DESC');
101
+ this.getHistoryStmt = db.prepare('SELECT * FROM concept_history ORDER BY cycle DESC LIMIT ?');
102
+ this.countConceptsStmt = db.prepare('SELECT COUNT(*) as count FROM abstract_concepts');
103
+ this.countByLevelStmt = db.prepare('SELECT level, COUNT(*) as count FROM abstract_concepts GROUP BY level');
104
+ this.avgTransferabilityStmt = db.prepare('SELECT AVG(transferability) as avg FROM abstract_concepts');
105
+ this.clearConceptsStmt = db.prepare('DELETE FROM abstract_concepts');
106
+ this.clearMembersStmt = db.prepare('DELETE FROM concept_members');
107
+ }
108
+ setThoughtStream(stream) {
109
+ this.ts = stream;
110
+ }
111
+ setDataSources(sources) {
112
+ this.sources = sources;
113
+ }
114
+ // ── Main algorithm ────────────────────────────────────
115
+ /** Run concept formation: gather → cluster → hierarchy → persist */
116
+ formConcepts() {
117
+ this.cycleCount++;
118
+ const ts = this.ts;
119
+ ts?.emit('concept_abstraction', 'analyzing', 'Forming abstract concepts from knowledge...', 'routine');
120
+ if (!this.sources) {
121
+ this.log.warn('[concept-abstraction] No data sources set');
122
+ return { newConcepts: 0, totalConcepts: 0, levels: {} };
123
+ }
124
+ // Phase 1: Gather all knowledge items
125
+ const items = this.gatherItems();
126
+ if (items.length < this.config.minClusterSize) {
127
+ ts?.emit('concept_abstraction', 'reflecting', `Not enough items to cluster (${items.length})`, 'routine');
128
+ return { newConcepts: 0, totalConcepts: this.getTotalCount(), levels: this.getLevelCounts() };
129
+ }
130
+ // Count existing before clearing
131
+ const existingCount = this.getTotalCount();
132
+ // Clear old concepts for full rebuild
133
+ this.db.transaction(() => {
134
+ this.clearMembersStmt.run();
135
+ this.clearConceptsStmt.run();
136
+ })();
137
+ // Phase 2: Cluster level 0 (concrete → abstract)
138
+ const level0Clusters = this.clusterItems(items, this.config.clusterThreshold);
139
+ const level0Concepts = this.persistClusters(level0Clusters, 0, null);
140
+ // Phase 3: Hierarchy — re-cluster level 0 concepts into level 1
141
+ let level1Concepts = [];
142
+ if (level0Concepts.length >= this.config.minClusterSize) {
143
+ const l0Items = this.conceptsToItems(level0Concepts);
144
+ const level1Clusters = this.clusterItems(l0Items, this.config.level1Threshold);
145
+ level1Concepts = this.persistClusters(level1Clusters, 1, null);
146
+ // Link level-0 → level-1 parentage
147
+ for (const cluster of level1Clusters) {
148
+ const parentId = this.findConceptByTitle(cluster.centroid.text, 1);
149
+ if (parentId) {
150
+ for (const item of cluster.items) {
151
+ if (item.type === 'concept') {
152
+ this.db.prepare('UPDATE abstract_concepts SET parent_id = ? WHERE id = ?').run(parentId, item.id);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ // Phase 3b: level 1 → level 2
159
+ let level2Concepts = [];
160
+ if (level1Concepts.length >= this.config.minClusterSize) {
161
+ const l1Items = this.conceptsToItems(level1Concepts);
162
+ const level2Clusters = this.clusterItems(l1Items, this.config.level2Threshold);
163
+ level2Concepts = this.persistClusters(level2Clusters, 2, null);
164
+ for (const cluster of level2Clusters) {
165
+ const parentId = this.findConceptByTitle(cluster.centroid.text, 2);
166
+ if (parentId) {
167
+ for (const item of cluster.items) {
168
+ if (item.type === 'concept') {
169
+ this.db.prepare('UPDATE abstract_concepts SET parent_id = ? WHERE id = ?').run(parentId, item.id);
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ const totalConcepts = this.getTotalCount();
176
+ const levels = this.getLevelCounts();
177
+ const newCount = Math.max(0, totalConcepts - existingCount);
178
+ const mergedCount = Math.max(0, existingCount - totalConcepts);
179
+ const avgTransfer = this.avgTransferabilityStmt.get()?.avg ?? 0;
180
+ // Record history
181
+ this.insertHistory.run(this.cycleCount, totalConcepts, JSON.stringify(levels), newCount, mergedCount, avgTransfer);
182
+ ts?.emit('concept_abstraction', 'discovering', `Formed ${totalConcepts} concepts (L0: ${levels[0] ?? 0}, L1: ${levels[1] ?? 0}, L2: ${levels[2] ?? 0})`, totalConcepts > 0 ? 'notable' : 'routine');
183
+ this.log.info(`[concept-abstraction] Formed ${totalConcepts} concepts across ${Object.keys(levels).length} levels`);
184
+ return { newConcepts: newCount, totalConcepts, levels };
185
+ }
186
+ // ── Queries ───────────────────────────────────────────
187
+ getConceptsByLevel(level) {
188
+ const rows = this.getConceptsByLevelStmt.all(level);
189
+ return rows.map(toAbstractConcept);
190
+ }
191
+ getHierarchy(conceptId) {
192
+ const row = this.getConceptById.get(conceptId);
193
+ if (!row)
194
+ return null;
195
+ const concept = toAbstractConcept(row);
196
+ const members = this.getMembersByConcept.all(conceptId).map(toConceptMember);
197
+ const children = this.getChildConcepts.all(conceptId).map(r => {
198
+ const child = toAbstractConcept(r);
199
+ const childMembers = this.getMembersByConcept.all(r.id).map(toConceptMember);
200
+ const grandchildren = this.getChildConcepts.all(r.id).map(gc => ({
201
+ concept: toAbstractConcept(gc),
202
+ children: [],
203
+ members: this.getMembersByConcept.all(gc.id).map(toConceptMember),
204
+ }));
205
+ return { concept: child, children: grandchildren, members: childMembers };
206
+ });
207
+ return { concept, children, members };
208
+ }
209
+ getMembers(conceptId) {
210
+ return this.getMembersByConcept.all(conceptId).map(toConceptMember);
211
+ }
212
+ getTransferableConcepts(minTransferability = 0.3) {
213
+ return this.getTransferableStmt.all(minTransferability).map(toAbstractConcept);
214
+ }
215
+ /** Register all concepts as nodes in MemoryPalace and link members. */
216
+ registerInPalace(palace) {
217
+ const concepts = this.getTopConceptsStmt.all(500).map(toAbstractConcept);
218
+ let registered = 0;
219
+ for (const concept of concepts) {
220
+ // Register concept node
221
+ palace.addConnection('concept', String(concept.id), 'concept', String(concept.id), 'related_to', 0);
222
+ // Link members → concept
223
+ const members = this.getMembers(concept.id);
224
+ for (const member of members) {
225
+ if (member.memberType !== 'concept') {
226
+ palace.addConnection(member.memberType, String(member.memberId), 'concept', String(concept.id), 'abstracted_from', member.similarityToCentroid);
227
+ }
228
+ }
229
+ // Link child concepts with 'generalizes'
230
+ if (concept.parentId) {
231
+ palace.addConnection('concept', String(concept.parentId), 'concept', String(concept.id), 'generalizes', concept.avgSimilarity);
232
+ }
233
+ registered++;
234
+ }
235
+ return registered;
236
+ }
237
+ getStatus() {
238
+ return {
239
+ totalConcepts: this.getTotalCount(),
240
+ conceptsByLevel: this.getLevelCounts(),
241
+ avgTransferability: this.avgTransferabilityStmt.get()?.avg ?? 0,
242
+ topConcepts: this.getTopConceptsStmt.all(10).map(toAbstractConcept),
243
+ recentHistory: this.getHistoryStmt.all(10).map(toHistoryEntry),
244
+ cycleCount: this.cycleCount,
245
+ };
246
+ }
247
+ // ── Private: Gathering ────────────────────────────────
248
+ gatherItems() {
249
+ const items = [];
250
+ if (!this.sources)
251
+ return items;
252
+ try {
253
+ const principles = this.sources.getPrinciples(undefined, 500);
254
+ for (const p of principles) {
255
+ items.push({
256
+ type: 'principle',
257
+ id: typeof p.id === 'string' ? parseInt(p.id, 10) || 0 : (p.id ?? 0),
258
+ text: p.statement,
259
+ confidence: p.confidence,
260
+ domain: p.domain ?? 'general',
261
+ });
262
+ }
263
+ }
264
+ catch (err) {
265
+ this.log.warn(`[concept-abstraction] Error gathering principles: ${err.message}`);
266
+ }
267
+ try {
268
+ const antiPatterns = this.sources.getAntiPatterns(undefined, 500);
269
+ for (const ap of antiPatterns) {
270
+ items.push({
271
+ type: 'anti_pattern',
272
+ id: typeof ap.id === 'string' ? parseInt(ap.id, 10) || 0 : (ap.id ?? 0),
273
+ text: ap.statement,
274
+ confidence: ap.confidence ?? 0.7,
275
+ domain: ap.domain ?? 'general',
276
+ });
277
+ }
278
+ }
279
+ catch (err) {
280
+ this.log.warn(`[concept-abstraction] Error gathering anti-patterns: ${err.message}`);
281
+ }
282
+ if (this.sources.getHypotheses) {
283
+ try {
284
+ const hypotheses = this.sources.getHypotheses('confirmed', 500);
285
+ for (const h of hypotheses) {
286
+ items.push({
287
+ type: 'hypothesis',
288
+ id: typeof h.id === 'string' ? parseInt(h.id, 10) || 0 : (h.id ?? 0),
289
+ text: h.statement,
290
+ confidence: h.confidence ?? 0.5,
291
+ domain: h.domain ?? 'general',
292
+ });
293
+ }
294
+ }
295
+ catch (err) {
296
+ this.log.warn(`[concept-abstraction] Error gathering hypotheses: ${err.message}`);
297
+ }
298
+ }
299
+ return items;
300
+ }
301
+ // ── Private: Clustering ───────────────────────────────
302
+ /** Greedy agglomerative clustering via bigram Dice similarity. */
303
+ clusterItems(items, threshold) {
304
+ const assigned = new Set();
305
+ const clusters = [];
306
+ // Sort by confidence descending — best items become centroids
307
+ const sorted = [...items].sort((a, b) => b.confidence - a.confidence);
308
+ for (let i = 0; i < sorted.length; i++) {
309
+ if (assigned.has(i))
310
+ continue;
311
+ const centroid = sorted[i];
312
+ const cluster = [centroid];
313
+ assigned.add(i);
314
+ for (let j = i + 1; j < sorted.length; j++) {
315
+ if (assigned.has(j))
316
+ continue;
317
+ const sim = this.textOverlap(centroid.text, sorted[j].text);
318
+ if (sim >= threshold) {
319
+ cluster.push(sorted[j]);
320
+ assigned.add(j);
321
+ }
322
+ }
323
+ if (cluster.length >= this.config.minClusterSize) {
324
+ clusters.push({ items: cluster, centroid });
325
+ }
326
+ }
327
+ return clusters;
328
+ }
329
+ /** Persist clusters as AbstractConcepts with members. Returns array of concept IDs. */
330
+ persistClusters(clusters, level, _parentId) {
331
+ const ids = [];
332
+ for (const cluster of clusters) {
333
+ const title = this.generateTitle(cluster);
334
+ const description = this.generateDescription(cluster);
335
+ const keywords = this.extractKeywords(cluster);
336
+ const avgConfidence = cluster.items.reduce((s, it) => s + it.confidence, 0) / cluster.items.length;
337
+ const avgSim = this.avgClusterSimilarity(cluster);
338
+ const transferability = this.computeTransferability(cluster);
339
+ const domain = this.computeDomain(cluster);
340
+ const result = this.insertConcept.run(title, description, level, null, // parent_id set later
341
+ domain, cluster.items.length, avgConfidence, avgSim, JSON.stringify(keywords), transferability);
342
+ const conceptId = Number(result.lastInsertRowid);
343
+ ids.push(conceptId);
344
+ // Insert members
345
+ for (const item of cluster.items) {
346
+ const sim = this.textOverlap(cluster.centroid.text, item.text);
347
+ this.insertMember.run(conceptId, item.type, item.id, sim);
348
+ }
349
+ }
350
+ return ids;
351
+ }
352
+ /** Convert persisted concepts to KnowledgeItems for re-clustering. */
353
+ conceptsToItems(conceptIds) {
354
+ return conceptIds.map(id => {
355
+ const row = this.getConceptById.get(id);
356
+ if (!row)
357
+ return null;
358
+ return {
359
+ type: 'concept',
360
+ id: row.id,
361
+ text: `${row.title}: ${row.description}`,
362
+ confidence: row.avg_confidence,
363
+ domain: row.domain,
364
+ };
365
+ }).filter((x) => x !== null);
366
+ }
367
+ findConceptByTitle(text, level) {
368
+ const concepts = this.getConceptsByLevelStmt.all(level);
369
+ // Find best match by title overlap
370
+ let bestId = null;
371
+ let bestSim = 0;
372
+ for (const c of concepts) {
373
+ const candidateText = `${c.title}: ${c.description}`;
374
+ const sim = this.textOverlap(text, candidateText);
375
+ if (sim > bestSim) {
376
+ bestSim = sim;
377
+ bestId = c.id;
378
+ }
379
+ }
380
+ return bestSim > 0.15 ? bestId : null;
381
+ }
382
+ // ── Private: Text analysis ────────────────────────────
383
+ /** Bigram Dice coefficient — same algorithm as MemoryPalace and DreamConsolidator. */
384
+ textOverlap(a, b) {
385
+ const aBigrams = this.bigrams(a.toLowerCase());
386
+ const bBigrams = this.bigrams(b.toLowerCase());
387
+ if (aBigrams.size === 0 || bBigrams.size === 0)
388
+ return 0;
389
+ let intersection = 0;
390
+ for (const bg of aBigrams) {
391
+ if (bBigrams.has(bg))
392
+ intersection++;
393
+ }
394
+ return (2 * intersection) / (aBigrams.size + bBigrams.size);
395
+ }
396
+ bigrams(text) {
397
+ const words = text.split(/\s+/).filter(w => w.length > 2);
398
+ const result = new Set();
399
+ for (const word of words) {
400
+ for (let i = 0; i < word.length - 1; i++) {
401
+ result.add(word.substring(i, i + 2));
402
+ }
403
+ }
404
+ return result;
405
+ }
406
+ generateTitle(cluster) {
407
+ const keywords = this.extractKeywords(cluster);
408
+ if (keywords.length >= 2)
409
+ return keywords.slice(0, 3).join(' + ');
410
+ // Fallback: use centroid's first few meaningful words
411
+ const words = cluster.centroid.text.split(/\s+/).filter(w => w.length > 3).slice(0, 4);
412
+ return words.join(' ') || 'Abstract Concept';
413
+ }
414
+ generateDescription(cluster) {
415
+ const types = new Set(cluster.items.map(i => i.type));
416
+ const typeStr = [...types].join(', ');
417
+ return `Abstraction of ${cluster.items.length} knowledge items (${typeStr}) centered around: ${cluster.centroid.text.substring(0, 120)}`;
418
+ }
419
+ extractKeywords(cluster) {
420
+ const wordCounts = new Map();
421
+ const stopwords = new Set([
422
+ 'the', 'and', 'for', 'that', 'this', 'with', 'from', 'are', 'not', 'was', 'but', 'has', 'have', 'had',
423
+ 'been', 'will', 'can', 'may', 'should', 'could', 'would', 'more', 'than', 'also', 'its', 'into',
424
+ 'when', 'where', 'which', 'their', 'them', 'then', 'there', 'these', 'those', 'being', 'each',
425
+ 'der', 'die', 'das', 'und', 'ist', 'ein', 'eine', 'den', 'dem', 'des', 'sich', 'mit', 'auf',
426
+ 'von', 'als', 'für', 'nicht', 'auch', 'nur', 'noch', 'oder', 'aber', 'nach', 'wie', 'bei',
427
+ ]);
428
+ for (const item of cluster.items) {
429
+ const words = item.text.toLowerCase().split(/\s+/).filter(w => w.length > 3 && !stopwords.has(w));
430
+ const unique = new Set(words);
431
+ for (const w of unique) {
432
+ wordCounts.set(w, (wordCounts.get(w) ?? 0) + 1);
433
+ }
434
+ }
435
+ const minOccurrence = Math.ceil(cluster.items.length * this.config.keywordMinRatio);
436
+ return [...wordCounts.entries()]
437
+ .filter(([, count]) => count >= minOccurrence)
438
+ .sort((a, b) => b[1] - a[1])
439
+ .slice(0, 8)
440
+ .map(([word]) => word);
441
+ }
442
+ avgClusterSimilarity(cluster) {
443
+ if (cluster.items.length <= 1)
444
+ return 1;
445
+ let total = 0;
446
+ let count = 0;
447
+ for (const item of cluster.items) {
448
+ if (item !== cluster.centroid) {
449
+ total += this.textOverlap(cluster.centroid.text, item.text);
450
+ count++;
451
+ }
452
+ }
453
+ return count > 0 ? total / count : 0;
454
+ }
455
+ computeTransferability(cluster) {
456
+ const domains = new Set(cluster.items.map(i => i.domain));
457
+ if (domains.size <= 1)
458
+ return 0;
459
+ // Cross-domain items / total
460
+ const mainDomain = this.mostCommon(cluster.items.map(i => i.domain));
461
+ const crossDomain = cluster.items.filter(i => i.domain !== mainDomain).length;
462
+ return crossDomain / cluster.items.length;
463
+ }
464
+ computeDomain(cluster) {
465
+ const domains = cluster.items.map(i => i.domain);
466
+ const unique = new Set(domains);
467
+ if (unique.size > 1)
468
+ return 'cross-domain';
469
+ return domains[0] ?? 'general';
470
+ }
471
+ mostCommon(arr) {
472
+ const counts = new Map();
473
+ for (const item of arr)
474
+ counts.set(item, (counts.get(item) ?? 0) + 1);
475
+ let best = arr[0] ?? 'general';
476
+ let bestCount = 0;
477
+ for (const [key, count] of counts) {
478
+ if (count > bestCount) {
479
+ best = key;
480
+ bestCount = count;
481
+ }
482
+ }
483
+ return best;
484
+ }
485
+ // ── Private: Helpers ──────────────────────────────────
486
+ getTotalCount() {
487
+ return this.countConceptsStmt.get().count;
488
+ }
489
+ getLevelCounts() {
490
+ const rows = this.countByLevelStmt.all();
491
+ const result = {};
492
+ for (const row of rows)
493
+ result[row.level] = row.count;
494
+ return result;
495
+ }
496
+ }
497
+ function toAbstractConcept(row) {
498
+ return {
499
+ id: row.id,
500
+ title: row.title,
501
+ description: row.description,
502
+ level: row.level,
503
+ parentId: row.parent_id,
504
+ domain: row.domain,
505
+ memberCount: row.member_count,
506
+ avgConfidence: row.avg_confidence,
507
+ avgSimilarity: row.avg_similarity,
508
+ keywords: JSON.parse(row.keywords),
509
+ transferability: row.transferability,
510
+ createdAt: row.created_at,
511
+ updatedAt: row.updated_at,
512
+ };
513
+ }
514
+ function toConceptMember(row) {
515
+ return {
516
+ conceptId: row.concept_id,
517
+ memberType: row.member_type,
518
+ memberId: row.member_id,
519
+ similarityToCentroid: row.similarity_to_centroid,
520
+ };
521
+ }
522
+ function toHistoryEntry(row) {
523
+ return {
524
+ cycle: row.cycle,
525
+ totalConcepts: row.total_concepts,
526
+ conceptsByLevel: JSON.parse(row.concepts_by_level),
527
+ newCount: row.new_count,
528
+ mergedCount: row.merged_count,
529
+ avgTransferability: row.avg_transferability,
530
+ };
531
+ }
532
+ //# sourceMappingURL=concept-abstraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concept-abstraction.js","sourceRoot":"","sources":["../../src/concept-abstraction/concept-abstraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-abstraction.js';
2
+ export type { ConceptAbstractionConfig, ConceptDataSources, AbstractConcept, ConceptMember, MemberType, ConceptHistoryEntry, ConceptHierarchy, ConceptStatus, } from './concept-abstraction.js';
@@ -0,0 +1,2 @@
1
+ export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-abstraction.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/concept-abstraction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -155,6 +155,8 @@ export { SelfScanner, runSelfScannerMigration } from './self-scanner/index.js';
155
155
  export type { SelfScannerConfig, SourceFile, CodeEntity, EntityType, EntityFilter, ModuleMapEntry, SelfScanResult, SelfScannerStatus, } from './self-scanner/index.js';
156
156
  export { SelfModificationEngine, runSelfModificationMigration } from './self-modification/index.js';
157
157
  export type { SelfModificationConfig, ModificationStatus, FileDiff, SelfModification, SelfModificationStatus, } from './self-modification/index.js';
158
+ export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-abstraction/index.js';
159
+ export type { ConceptAbstractionConfig, ConceptDataSources, AbstractConcept, ConceptMember, MemberType, ConceptHistoryEntry, ConceptHierarchy, ConceptStatus, } from './concept-abstraction/index.js';
158
160
  export { SignalScanner, runScannerMigration } from './scanner/index.js';
159
161
  export { GitHubCollector } from './scanner/index.js';
160
162
  export { HnCollector } from './scanner/index.js';
package/dist/index.js CHANGED
@@ -138,6 +138,8 @@ export { UnifiedDashboardServer } from './unified/index.js';
138
138
  export { SelfScanner, runSelfScannerMigration } from './self-scanner/index.js';
139
139
  // ── Self-Modification ────────────────────────────────────
140
140
  export { SelfModificationEngine, runSelfModificationMigration } from './self-modification/index.js';
141
+ // ── Concept Abstraction ─────────────────────────────────
142
+ export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-abstraction/index.js';
141
143
  // ── Scanner ──────────────────────────────────────────────
142
144
  export { SignalScanner, runScannerMigration } from './scanner/index.js';
143
145
  export { GitHubCollector } from './scanner/index.js';
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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"}
@@ -7,8 +7,8 @@ export interface MemoryPalaceConfig {
7
7
  /** Minimum strength for auto-detected connections. Default: 0.3 */
8
8
  minAutoStrength?: number;
9
9
  }
10
- export type NodeType = 'principle' | 'anti_pattern' | 'strategy' | 'hypothesis' | 'experiment' | 'journal' | 'anomaly' | 'causal_edge' | 'emergence' | 'prediction' | 'curiosity_gap';
11
- export type RelationType = 'derived_from' | 'contradicts' | 'supports' | 'caused_by' | 'tested_by' | 'related_to' | 'supersedes' | 'references';
10
+ export type NodeType = 'principle' | 'anti_pattern' | 'strategy' | 'hypothesis' | 'experiment' | 'journal' | 'anomaly' | 'causal_edge' | 'emergence' | 'prediction' | 'curiosity_gap' | 'concept';
11
+ export type RelationType = 'derived_from' | 'contradicts' | 'supports' | 'caused_by' | 'tested_by' | 'related_to' | 'supersedes' | 'references' | 'abstracted_from' | 'generalizes';
12
12
  export interface KnowledgeConnection {
13
13
  id?: number;
14
14
  sourceType: NodeType;