@timmeck/brain-core 2.36.24 → 2.36.26

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 (117) hide show
  1. package/dist/active-learning/__tests__/active-learning.test.d.ts +1 -0
  2. package/dist/active-learning/__tests__/active-learning.test.js +132 -0
  3. package/dist/active-learning/__tests__/active-learning.test.js.map +1 -0
  4. package/dist/active-learning/active-learner.d.ts +79 -0
  5. package/dist/active-learning/active-learner.js +224 -0
  6. package/dist/active-learning/active-learner.js.map +1 -0
  7. package/dist/active-learning/index.d.ts +2 -0
  8. package/dist/active-learning/index.js +2 -0
  9. package/dist/active-learning/index.js.map +1 -0
  10. package/dist/code-health/__tests__/code-health.test.d.ts +1 -0
  11. package/dist/code-health/__tests__/code-health.test.js +123 -0
  12. package/dist/code-health/__tests__/code-health.test.js.map +1 -0
  13. package/dist/code-health/health-monitor.d.ts +55 -0
  14. package/dist/code-health/health-monitor.js +180 -0
  15. package/dist/code-health/health-monitor.js.map +1 -0
  16. package/dist/code-health/index.d.ts +2 -0
  17. package/dist/code-health/index.js +2 -0
  18. package/dist/code-health/index.js.map +1 -0
  19. package/dist/consensus/__tests__/consensus.test.d.ts +1 -0
  20. package/dist/consensus/__tests__/consensus.test.js +159 -0
  21. package/dist/consensus/__tests__/consensus.test.js.map +1 -0
  22. package/dist/consensus/consensus-engine.d.ts +81 -0
  23. package/dist/consensus/consensus-engine.js +237 -0
  24. package/dist/consensus/consensus-engine.js.map +1 -0
  25. package/dist/consensus/index.d.ts +2 -0
  26. package/dist/consensus/index.js +2 -0
  27. package/dist/consensus/index.js.map +1 -0
  28. package/dist/feedback/__tests__/feedback-engine.test.d.ts +1 -0
  29. package/dist/feedback/__tests__/feedback-engine.test.js +156 -0
  30. package/dist/feedback/__tests__/feedback-engine.test.js.map +1 -0
  31. package/dist/feedback/feedback-engine.d.ts +61 -0
  32. package/dist/feedback/feedback-engine.js +203 -0
  33. package/dist/feedback/feedback-engine.js.map +1 -0
  34. package/dist/feedback/index.d.ts +2 -0
  35. package/dist/feedback/index.js +2 -0
  36. package/dist/feedback/index.js.map +1 -0
  37. package/dist/index.d.ts +32 -0
  38. package/dist/index.js +27 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/knowledge-graph/__tests__/knowledge-graph.test.d.ts +1 -0
  41. package/dist/knowledge-graph/__tests__/knowledge-graph.test.js +215 -0
  42. package/dist/knowledge-graph/__tests__/knowledge-graph.test.js.map +1 -0
  43. package/dist/knowledge-graph/fact-extractor.d.ts +23 -0
  44. package/dist/knowledge-graph/fact-extractor.js +70 -0
  45. package/dist/knowledge-graph/fact-extractor.js.map +1 -0
  46. package/dist/knowledge-graph/graph-engine.d.ts +78 -0
  47. package/dist/knowledge-graph/graph-engine.js +276 -0
  48. package/dist/knowledge-graph/graph-engine.js.map +1 -0
  49. package/dist/knowledge-graph/index.d.ts +4 -0
  50. package/dist/knowledge-graph/index.js +3 -0
  51. package/dist/knowledge-graph/index.js.map +1 -0
  52. package/dist/proactive/__tests__/proactive-engine.test.d.ts +1 -0
  53. package/dist/proactive/__tests__/proactive-engine.test.js +183 -0
  54. package/dist/proactive/__tests__/proactive-engine.test.js.map +1 -0
  55. package/dist/proactive/index.d.ts +2 -0
  56. package/dist/proactive/index.js +2 -0
  57. package/dist/proactive/index.js.map +1 -0
  58. package/dist/proactive/proactive-engine.d.ts +86 -0
  59. package/dist/proactive/proactive-engine.js +252 -0
  60. package/dist/proactive/proactive-engine.js.map +1 -0
  61. package/dist/rag/__tests__/rag-engine.test.d.ts +1 -0
  62. package/dist/rag/__tests__/rag-engine.test.js +235 -0
  63. package/dist/rag/__tests__/rag-engine.test.js.map +1 -0
  64. package/dist/rag/index.d.ts +4 -0
  65. package/dist/rag/index.js +3 -0
  66. package/dist/rag/index.js.map +1 -0
  67. package/dist/rag/rag-engine.d.ts +98 -0
  68. package/dist/rag/rag-engine.js +310 -0
  69. package/dist/rag/rag-engine.js.map +1 -0
  70. package/dist/rag/rag-indexer.d.ts +52 -0
  71. package/dist/rag/rag-indexer.js +144 -0
  72. package/dist/rag/rag-indexer.js.map +1 -0
  73. package/dist/research/__tests__/semantic-compressor.test.d.ts +1 -0
  74. package/dist/research/__tests__/semantic-compressor.test.js +153 -0
  75. package/dist/research/__tests__/semantic-compressor.test.js.map +1 -0
  76. package/dist/research/semantic-compressor.d.ts +55 -0
  77. package/dist/research/semantic-compressor.js +227 -0
  78. package/dist/research/semantic-compressor.js.map +1 -0
  79. package/dist/teaching/__tests__/teaching.test.d.ts +1 -0
  80. package/dist/teaching/__tests__/teaching.test.js +151 -0
  81. package/dist/teaching/__tests__/teaching.test.js.map +1 -0
  82. package/dist/teaching/curriculum.d.ts +32 -0
  83. package/dist/teaching/curriculum.js +89 -0
  84. package/dist/teaching/curriculum.js.map +1 -0
  85. package/dist/teaching/index.d.ts +4 -0
  86. package/dist/teaching/index.js +3 -0
  87. package/dist/teaching/index.js.map +1 -0
  88. package/dist/teaching/teaching-protocol.d.ts +74 -0
  89. package/dist/teaching/teaching-protocol.js +164 -0
  90. package/dist/teaching/teaching-protocol.js.map +1 -0
  91. package/dist/tool-learning/__tests__/tool-learning.test.d.ts +1 -0
  92. package/dist/tool-learning/__tests__/tool-learning.test.js +187 -0
  93. package/dist/tool-learning/__tests__/tool-learning.test.js.map +1 -0
  94. package/dist/tool-learning/index.d.ts +4 -0
  95. package/dist/tool-learning/index.js +3 -0
  96. package/dist/tool-learning/index.js.map +1 -0
  97. package/dist/tool-learning/tool-patterns.d.ts +47 -0
  98. package/dist/tool-learning/tool-patterns.js +125 -0
  99. package/dist/tool-learning/tool-patterns.js.map +1 -0
  100. package/dist/tool-learning/tool-tracker.d.ts +58 -0
  101. package/dist/tool-learning/tool-tracker.js +135 -0
  102. package/dist/tool-learning/tool-tracker.js.map +1 -0
  103. package/dist/user-model/__tests__/user-model.test.d.ts +1 -0
  104. package/dist/user-model/__tests__/user-model.test.js +142 -0
  105. package/dist/user-model/__tests__/user-model.test.js.map +1 -0
  106. package/dist/user-model/adaptive-context.d.ts +18 -0
  107. package/dist/user-model/adaptive-context.js +46 -0
  108. package/dist/user-model/adaptive-context.js.map +1 -0
  109. package/dist/user-model/index.d.ts +4 -0
  110. package/dist/user-model/index.js +3 -0
  111. package/dist/user-model/index.js.map +1 -0
  112. package/dist/user-model/user-model.d.ts +53 -0
  113. package/dist/user-model/user-model.js +204 -0
  114. package/dist/user-model/user-model.js.map +1 -0
  115. package/dist/utils/logger.js +4 -3
  116. package/dist/utils/logger.js.map +1 -1
  117. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proactive-engine.test.js","sourceRoot":"","sources":["../../../src/proactive/__tests__/proactive-engine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ProactiveEngine, runProactiveMigration } from './proactive-engine.js';
2
+ export type { ProactiveEngineConfig, ProactiveDataSources, ProactiveSuggestion, Suggestion, ProactiveStatus, } from './proactive-engine.js';
@@ -0,0 +1,2 @@
1
+ export { ProactiveEngine, runProactiveMigration } from './proactive-engine.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proactive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,86 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { ThoughtStream } from '../consciousness/thought-stream.js';
3
+ import type { LLMService } from '../llm/llm-service.js';
4
+ export interface ProactiveEngineConfig {
5
+ brainName: string;
6
+ maxSuggestionsPerHour?: number;
7
+ staleDays?: number;
8
+ recurringThreshold?: number;
9
+ }
10
+ export interface ProactiveDataSources {
11
+ db: Database.Database;
12
+ }
13
+ export interface ProactiveSuggestion {
14
+ id?: number;
15
+ type: string;
16
+ title: string;
17
+ description: string | null;
18
+ action: string | null;
19
+ priority: number;
20
+ dismissed: number;
21
+ created_at: string;
22
+ }
23
+ /** Alias for convenience */
24
+ export type Suggestion = ProactiveSuggestion;
25
+ export interface ProactiveStatus {
26
+ totalSuggestions: number;
27
+ activeSuggestions: number;
28
+ dismissedCount: number;
29
+ lastAnalysis: string | null;
30
+ }
31
+ export declare function runProactiveMigration(db: Database.Database): void;
32
+ export declare class ProactiveEngine {
33
+ private db;
34
+ private config;
35
+ private ts;
36
+ private llm;
37
+ private log;
38
+ private lastAnalysis;
39
+ private stmtInsert;
40
+ private stmtGetActive;
41
+ private stmtGetAll;
42
+ private stmtDismiss;
43
+ private stmtTotal;
44
+ private stmtActiveCount;
45
+ private stmtDismissedCount;
46
+ private stmtRecentCount;
47
+ private stmtCheckDuplicate;
48
+ constructor(db: Database.Database, config: ProactiveEngineConfig);
49
+ /** Set the ThoughtStream for consciousness integration. */
50
+ setThoughtStream(stream: ThoughtStream): void;
51
+ /** Set the LLMService for enhanced analysis. */
52
+ setLLMService(llm: LLMService): void;
53
+ /**
54
+ * Analyze data sources and create suggestions based on triggers.
55
+ * Returns number of new suggestions created.
56
+ */
57
+ analyze(dataSources: ProactiveDataSources): number;
58
+ /**
59
+ * Create a suggestion, respecting rate limits and dedup.
60
+ * Returns true if the suggestion was created, false if rate-limited or duplicate.
61
+ */
62
+ createSuggestion(type: string, title: string, description?: string, action?: string, priority?: number): boolean;
63
+ /**
64
+ * Get suggestions, sorted by priority descending.
65
+ * By default excludes dismissed suggestions.
66
+ */
67
+ getSuggestions(limit?: number, includeDismissed?: boolean): ProactiveSuggestion[];
68
+ /** Dismiss a suggestion by ID. */
69
+ dismiss(id: number): void;
70
+ /** Get engine status summary. */
71
+ getStatus(): ProactiveStatus;
72
+ /**
73
+ * Check for recurring errors: same error fingerprint appearing
74
+ * `recurringThreshold` or more times.
75
+ */
76
+ private checkRecurringErrors;
77
+ /**
78
+ * Check for stale knowledge: insights older than staleDays
79
+ * with high priority that haven't been refreshed.
80
+ */
81
+ private checkStaleKnowledge;
82
+ /**
83
+ * Check for quick wins: tools with high success rate but low usage count.
84
+ */
85
+ private checkQuickWins;
86
+ }
@@ -0,0 +1,252 @@
1
+ // ── Proactive Engine — Suggestion Generation & Management ────
2
+ //
3
+ // Analyzes data sources to proactively suggest improvements,
4
+ // flag recurring errors, stale knowledge, and quick wins.
5
+ import { getLogger } from '../utils/logger.js';
6
+ // ── Migration ───────────────────────────────────────────
7
+ export function runProactiveMigration(db) {
8
+ db.exec(`
9
+ CREATE TABLE IF NOT EXISTS proactive_suggestions (
10
+ id INTEGER PRIMARY KEY,
11
+ type TEXT NOT NULL,
12
+ title TEXT NOT NULL,
13
+ description TEXT,
14
+ action TEXT,
15
+ priority REAL DEFAULT 0.5,
16
+ dismissed INTEGER DEFAULT 0,
17
+ created_at TEXT DEFAULT (datetime('now'))
18
+ );
19
+ CREATE INDEX IF NOT EXISTS idx_proactive_type ON proactive_suggestions(type);
20
+ CREATE INDEX IF NOT EXISTS idx_proactive_dismissed ON proactive_suggestions(dismissed);
21
+ `);
22
+ }
23
+ // ── Engine ──────────────────────────────────────────────
24
+ export class ProactiveEngine {
25
+ db;
26
+ config;
27
+ ts = null;
28
+ llm = null;
29
+ log = getLogger();
30
+ lastAnalysis = null;
31
+ // Prepared statements
32
+ stmtInsert;
33
+ stmtGetActive;
34
+ stmtGetAll;
35
+ stmtDismiss;
36
+ stmtTotal;
37
+ stmtActiveCount;
38
+ stmtDismissedCount;
39
+ stmtRecentCount;
40
+ stmtCheckDuplicate;
41
+ constructor(db, config) {
42
+ this.db = db;
43
+ this.config = {
44
+ brainName: config.brainName,
45
+ maxSuggestionsPerHour: config.maxSuggestionsPerHour ?? 3,
46
+ staleDays: config.staleDays ?? 30,
47
+ recurringThreshold: config.recurringThreshold ?? 3,
48
+ };
49
+ runProactiveMigration(db);
50
+ // Prepare all statements
51
+ this.stmtInsert = db.prepare(`
52
+ INSERT INTO proactive_suggestions (type, title, description, action, priority)
53
+ VALUES (?, ?, ?, ?, ?)
54
+ `);
55
+ this.stmtGetActive = db.prepare(`
56
+ SELECT * FROM proactive_suggestions
57
+ WHERE dismissed = 0
58
+ ORDER BY priority DESC
59
+ LIMIT ?
60
+ `);
61
+ this.stmtGetAll = db.prepare(`
62
+ SELECT * FROM proactive_suggestions
63
+ ORDER BY priority DESC
64
+ LIMIT ?
65
+ `);
66
+ this.stmtDismiss = db.prepare(`
67
+ UPDATE proactive_suggestions SET dismissed = 1 WHERE id = ?
68
+ `);
69
+ this.stmtTotal = db.prepare(`
70
+ SELECT COUNT(*) AS total FROM proactive_suggestions
71
+ `);
72
+ this.stmtActiveCount = db.prepare(`
73
+ SELECT COUNT(*) AS active FROM proactive_suggestions WHERE dismissed = 0
74
+ `);
75
+ this.stmtDismissedCount = db.prepare(`
76
+ SELECT COUNT(*) AS dismissed FROM proactive_suggestions WHERE dismissed = 1
77
+ `);
78
+ this.stmtRecentCount = db.prepare(`
79
+ SELECT COUNT(*) AS cnt FROM proactive_suggestions
80
+ WHERE created_at >= datetime('now', '-1 hour')
81
+ `);
82
+ this.stmtCheckDuplicate = db.prepare(`
83
+ SELECT id FROM proactive_suggestions WHERE title = ? AND dismissed = 0 LIMIT 1
84
+ `);
85
+ this.log.info(`[proactive] Engine initialized for ${config.brainName}`);
86
+ }
87
+ /** Set the ThoughtStream for consciousness integration. */
88
+ setThoughtStream(stream) {
89
+ this.ts = stream;
90
+ }
91
+ /** Set the LLMService for enhanced analysis. */
92
+ setLLMService(llm) {
93
+ this.llm = llm;
94
+ }
95
+ /**
96
+ * Analyze data sources and create suggestions based on triggers.
97
+ * Returns number of new suggestions created.
98
+ */
99
+ analyze(dataSources) {
100
+ let created = 0;
101
+ try {
102
+ created += this.checkRecurringErrors(dataSources.db);
103
+ }
104
+ catch (err) {
105
+ this.log.debug(`[proactive] checkRecurringErrors skipped: ${err.message}`);
106
+ }
107
+ try {
108
+ created += this.checkStaleKnowledge(dataSources.db);
109
+ }
110
+ catch (err) {
111
+ this.log.debug(`[proactive] checkStaleKnowledge skipped: ${err.message}`);
112
+ }
113
+ try {
114
+ created += this.checkQuickWins(dataSources.db);
115
+ }
116
+ catch (err) {
117
+ this.log.debug(`[proactive] checkQuickWins skipped: ${err.message}`);
118
+ }
119
+ this.lastAnalysis = new Date().toISOString();
120
+ this.ts?.emit('proactive', 'analyzing', `Analysis complete: ${created} new suggestions`, created > 0 ? 'notable' : 'routine');
121
+ return created;
122
+ }
123
+ /**
124
+ * Create a suggestion, respecting rate limits and dedup.
125
+ * Returns true if the suggestion was created, false if rate-limited or duplicate.
126
+ */
127
+ createSuggestion(type, title, description, action, priority = 0.5) {
128
+ // Check rate limit
129
+ const recentCount = this.stmtRecentCount.get().cnt;
130
+ if (recentCount >= this.config.maxSuggestionsPerHour) {
131
+ this.log.debug(`[proactive] Rate limit reached (${recentCount}/${this.config.maxSuggestionsPerHour})`);
132
+ return false;
133
+ }
134
+ // Check dedup — same title not created twice if active
135
+ const existing = this.stmtCheckDuplicate.get(title);
136
+ if (existing) {
137
+ this.log.debug(`[proactive] Duplicate suggestion skipped: ${title}`);
138
+ return false;
139
+ }
140
+ this.stmtInsert.run(type, title, description ?? null, action ?? null, priority);
141
+ return true;
142
+ }
143
+ /**
144
+ * Get suggestions, sorted by priority descending.
145
+ * By default excludes dismissed suggestions.
146
+ */
147
+ getSuggestions(limit = 20, includeDismissed = false) {
148
+ if (includeDismissed) {
149
+ return this.stmtGetAll.all(limit);
150
+ }
151
+ return this.stmtGetActive.all(limit);
152
+ }
153
+ /** Dismiss a suggestion by ID. */
154
+ dismiss(id) {
155
+ this.stmtDismiss.run(id);
156
+ }
157
+ /** Get engine status summary. */
158
+ getStatus() {
159
+ const total = this.stmtTotal.get().total;
160
+ const active = this.stmtActiveCount.get().active;
161
+ const dismissed = this.stmtDismissedCount.get().dismissed;
162
+ return {
163
+ totalSuggestions: total,
164
+ activeSuggestions: active,
165
+ dismissedCount: dismissed,
166
+ lastAnalysis: this.lastAnalysis,
167
+ };
168
+ }
169
+ // ── Private Triggers ──────────────────────────────────
170
+ /**
171
+ * Check for recurring errors: same error fingerprint appearing
172
+ * `recurringThreshold` or more times.
173
+ */
174
+ checkRecurringErrors(sourceDb) {
175
+ // Check if error_memory table exists (brain-specific)
176
+ const table = sourceDb.prepare(`
177
+ SELECT name FROM sqlite_master WHERE type='table' AND name='error_memory'
178
+ `).get();
179
+ if (!table)
180
+ return 0;
181
+ const rows = sourceDb.prepare(`
182
+ SELECT fingerprint, COUNT(*) AS cnt, MAX(message) AS message
183
+ FROM error_memory
184
+ GROUP BY fingerprint
185
+ HAVING cnt >= ?
186
+ `).all(this.config.recurringThreshold);
187
+ let created = 0;
188
+ for (const row of rows) {
189
+ const ok = this.createSuggestion('recurring_error', `Fix recurring error: ${row.fingerprint}`, `Error "${row.message}" has occurred ${row.cnt} times. Consider a permanent fix.`, `Investigate error fingerprint: ${row.fingerprint}`, 0.8);
190
+ if (ok)
191
+ created++;
192
+ }
193
+ return created;
194
+ }
195
+ /**
196
+ * Check for stale knowledge: insights older than staleDays
197
+ * with high priority that haven't been refreshed.
198
+ */
199
+ checkStaleKnowledge(sourceDb) {
200
+ // Check if insights table exists
201
+ const table = sourceDb.prepare(`
202
+ SELECT name FROM sqlite_master WHERE type='table' AND name='insights'
203
+ `).get();
204
+ if (!table)
205
+ return 0;
206
+ const rows = sourceDb.prepare(`
207
+ SELECT topic, created_at, confidence
208
+ FROM insights
209
+ WHERE created_at < datetime('now', '-' || ? || ' days')
210
+ AND confidence > 0.7
211
+ ORDER BY confidence DESC
212
+ LIMIT 10
213
+ `).all(this.config.staleDays);
214
+ let created = 0;
215
+ for (const row of rows) {
216
+ const ok = this.createSuggestion('stale_knowledge', `Review stale insight: ${row.topic}`, `High-confidence insight from ${row.created_at} may be outdated. Still relevant?`, `Re-research topic: ${row.topic}`, 0.6);
217
+ if (ok)
218
+ created++;
219
+ }
220
+ return created;
221
+ }
222
+ /**
223
+ * Check for quick wins: tools with high success rate but low usage count.
224
+ */
225
+ checkQuickWins(sourceDb) {
226
+ // Check if tool_usage table exists
227
+ const table = sourceDb.prepare(`
228
+ SELECT name FROM sqlite_master WHERE type='table' AND name='tool_usage'
229
+ `).get();
230
+ if (!table)
231
+ return 0;
232
+ const rows = sourceDb.prepare(`
233
+ SELECT
234
+ tool_name,
235
+ COUNT(*) AS uses,
236
+ CAST(SUM(CASE WHEN outcome = 'success' THEN 1 ELSE 0 END) AS REAL) / COUNT(*) AS success_rate
237
+ FROM tool_usage
238
+ GROUP BY tool_name
239
+ HAVING success_rate >= 0.8 AND uses <= 5
240
+ ORDER BY success_rate DESC
241
+ LIMIT 10
242
+ `).all();
243
+ let created = 0;
244
+ for (const row of rows) {
245
+ const ok = this.createSuggestion('quick_win', `Use ${row.tool_name} more often`, `Tool "${row.tool_name}" has ${(row.success_rate * 100).toFixed(0)}% success rate but only ${row.uses} uses. Consider using it more.`, `Try ${row.tool_name} in more contexts`, 0.5);
246
+ if (ok)
247
+ created++;
248
+ }
249
+ return created;
250
+ }
251
+ }
252
+ //# sourceMappingURL=proactive-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proactive-engine.js","sourceRoot":"","sources":["../../src/proactive/proactive-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,235 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import Database from 'better-sqlite3';
3
+ vi.mock('../../utils/logger.js', () => ({
4
+ getLogger: () => ({
5
+ info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn(),
6
+ }),
7
+ }));
8
+ import { RAGEngine, runRAGMigration } from '../rag-engine.js';
9
+ import { RAGIndexer } from '../rag-indexer.js';
10
+ // ── Helpers ──────────────────────────────────────────────────
11
+ function createTestDb() {
12
+ return new Database(':memory:');
13
+ }
14
+ function createMockEmbedding(dims = 4, seed = 0) {
15
+ const arr = new Float32Array(dims);
16
+ for (let i = 0; i < dims; i++) {
17
+ arr[i] = Math.sin(seed + i);
18
+ }
19
+ // Normalize
20
+ let norm = 0;
21
+ for (let i = 0; i < dims; i++)
22
+ norm += arr[i] * arr[i];
23
+ norm = Math.sqrt(norm);
24
+ if (norm > 0)
25
+ for (let i = 0; i < dims; i++)
26
+ arr[i] /= norm;
27
+ return arr;
28
+ }
29
+ function createMockEmbeddingEngine() {
30
+ let callCount = 0;
31
+ return {
32
+ embed: vi.fn(async (_text) => createMockEmbedding(4, callCount++)),
33
+ embedBatch: vi.fn(async (texts) => texts.map((_, i) => createMockEmbedding(4, callCount + i))),
34
+ };
35
+ }
36
+ // ── RAGEngine Tests ──────────────────────────────────────────
37
+ describe('RAGEngine', () => {
38
+ let db;
39
+ beforeEach(() => { db = createTestDb(); });
40
+ afterEach(() => { try {
41
+ db.close();
42
+ }
43
+ catch { /* ignore */ } });
44
+ it('creates rag_vectors table on migration', () => {
45
+ runRAGMigration(db);
46
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='rag_vectors'").all();
47
+ expect(tables).toHaveLength(1);
48
+ });
49
+ it('migration is idempotent', () => {
50
+ runRAGMigration(db);
51
+ runRAGMigration(db);
52
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='rag_vectors'").all();
53
+ expect(tables).toHaveLength(1);
54
+ });
55
+ it('creates engine with defaults', () => {
56
+ const rag = new RAGEngine(db, { brainName: 'test' });
57
+ const status = rag.getStatus();
58
+ expect(status.totalVectors).toBe(0);
59
+ expect(status.collections).toEqual([]);
60
+ });
61
+ it('indexes a single item', async () => {
62
+ const rag = new RAGEngine(db, { brainName: 'test' });
63
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
64
+ const result = await rag.index('insights', 1, 'Test insight about TypeScript patterns');
65
+ expect(result).toBe(true);
66
+ const status = rag.getStatus();
67
+ expect(status.totalVectors).toBe(1);
68
+ expect(status.collections[0]?.collection).toBe('insights');
69
+ });
70
+ it('skips indexing when text unchanged', async () => {
71
+ const rag = new RAGEngine(db, { brainName: 'test' });
72
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
73
+ await rag.index('insights', 1, 'Same text');
74
+ const result = await rag.index('insights', 1, 'Same text');
75
+ expect(result).toBe(false);
76
+ const status = rag.getStatus();
77
+ expect(status.totalVectors).toBe(1);
78
+ });
79
+ it('updates index when text changes', async () => {
80
+ const rag = new RAGEngine(db, { brainName: 'test' });
81
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
82
+ await rag.index('insights', 1, 'Old text');
83
+ const result = await rag.index('insights', 1, 'New text');
84
+ expect(result).toBe(true);
85
+ const status = rag.getStatus();
86
+ expect(status.totalVectors).toBe(1); // Still 1, updated in place
87
+ });
88
+ it('searches and returns results sorted by similarity', async () => {
89
+ const rag = new RAGEngine(db, { brainName: 'test' });
90
+ const mockEmbed = createMockEmbeddingEngine();
91
+ rag.setEmbeddingEngine(mockEmbed);
92
+ await rag.index('insights', 1, 'TypeScript error handling');
93
+ await rag.index('insights', 2, 'JavaScript async patterns');
94
+ await rag.index('errors', 3, 'Null pointer exception');
95
+ const results = await rag.search('TypeScript error', { threshold: 0 });
96
+ expect(results.length).toBeGreaterThan(0);
97
+ // Results should be sorted by similarity descending
98
+ for (let i = 1; i < results.length; i++) {
99
+ expect(results[i - 1].similarity).toBeGreaterThanOrEqual(results[i].similarity);
100
+ }
101
+ });
102
+ it('filters by collection', async () => {
103
+ const rag = new RAGEngine(db, { brainName: 'test' });
104
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
105
+ await rag.index('insights', 1, 'An insight');
106
+ await rag.index('errors', 1, 'An error');
107
+ const results = await rag.search('test', { collections: ['insights'], threshold: 0 });
108
+ expect(results.every(r => r.collection === 'insights')).toBe(true);
109
+ });
110
+ it('respects limit', async () => {
111
+ const rag = new RAGEngine(db, { brainName: 'test' });
112
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
113
+ for (let i = 0; i < 10; i++) {
114
+ await rag.index('insights', i, `Insight number ${i}`);
115
+ }
116
+ const results = await rag.search('insight', { limit: 3, threshold: 0 });
117
+ expect(results.length).toBeLessThanOrEqual(3);
118
+ });
119
+ it('respects threshold', async () => {
120
+ const rag = new RAGEngine(db, { brainName: 'test' });
121
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
122
+ await rag.index('insights', 1, 'Test');
123
+ const highThreshold = await rag.search('completely different', { threshold: 0.99 });
124
+ // With mock embeddings, very high threshold likely returns nothing
125
+ expect(highThreshold.length).toBeLessThanOrEqual(1);
126
+ });
127
+ it('batch indexes items', async () => {
128
+ const rag = new RAGEngine(db, { brainName: 'test' });
129
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
130
+ const items = Array.from({ length: 5 }, (_, i) => ({
131
+ collection: 'insights',
132
+ sourceId: i + 1,
133
+ text: `Insight ${i + 1} about programming`,
134
+ }));
135
+ const count = await rag.indexBatch(items);
136
+ expect(count).toBe(5);
137
+ const status = rag.getStatus();
138
+ expect(status.totalVectors).toBe(5);
139
+ });
140
+ it('removes items', async () => {
141
+ const rag = new RAGEngine(db, { brainName: 'test' });
142
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
143
+ await rag.index('insights', 1, 'Test insight');
144
+ expect(rag.getStatus().totalVectors).toBe(1);
145
+ rag.remove('insights', 1);
146
+ expect(rag.getStatus().totalVectors).toBe(0);
147
+ });
148
+ it('augments query with context', () => {
149
+ const rag = new RAGEngine(db, { brainName: 'test' });
150
+ const augmented = rag.augment('How to fix?', [
151
+ { collection: 'insights', sourceId: 1, text: 'Use try-catch', similarity: 0.9 },
152
+ { collection: 'errors', sourceId: 2, text: 'NullPointer', similarity: 0.7 },
153
+ ]);
154
+ expect(augmented).toContain('Context from knowledge base');
155
+ expect(augmented).toContain('Use try-catch');
156
+ expect(augmented).toContain('How to fix?');
157
+ });
158
+ it('augment returns plain query when no context', () => {
159
+ const rag = new RAGEngine(db, { brainName: 'test' });
160
+ expect(rag.augment('test', [])).toBe('test');
161
+ });
162
+ it('returns empty results without embedding engine', async () => {
163
+ const rag = new RAGEngine(db, { brainName: 'test' });
164
+ const results = await rag.search('test');
165
+ expect(results).toEqual([]);
166
+ });
167
+ it('index returns false without embedding engine', async () => {
168
+ const rag = new RAGEngine(db, { brainName: 'test' });
169
+ const result = await rag.index('test', 1, 'text');
170
+ expect(result).toBe(false);
171
+ });
172
+ it('getCollections returns distinct collections', async () => {
173
+ const rag = new RAGEngine(db, { brainName: 'test' });
174
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
175
+ await rag.index('insights', 1, 'test');
176
+ await rag.index('errors', 1, 'test');
177
+ await rag.index('insights', 2, 'test2');
178
+ const collections = rag.getCollections();
179
+ expect(collections.sort()).toEqual(['errors', 'insights']);
180
+ });
181
+ it('stores and returns metadata', async () => {
182
+ const rag = new RAGEngine(db, { brainName: 'test' });
183
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
184
+ await rag.index('insights', 1, 'Test', { category: 'patterns', priority: 5 });
185
+ const results = await rag.search('test', { threshold: 0 });
186
+ expect(results.length).toBeGreaterThan(0);
187
+ expect(results[0]?.metadata).toEqual({ category: 'patterns', priority: 5 });
188
+ });
189
+ });
190
+ // ── RAGIndexer Tests ─────────────────────────────────────────
191
+ describe('RAGIndexer', () => {
192
+ let db;
193
+ beforeEach(() => { db = createTestDb(); });
194
+ afterEach(() => { try {
195
+ db.close();
196
+ }
197
+ catch { /* ignore */ } });
198
+ it('creates indexer without error', () => {
199
+ const indexer = new RAGIndexer(db);
200
+ expect(indexer.getStatus().totalIndexed).toBe(0);
201
+ });
202
+ it('returns 0 without RAG engine', async () => {
203
+ const indexer = new RAGIndexer(db);
204
+ const count = await indexer.indexAll();
205
+ expect(count).toBe(0);
206
+ });
207
+ it('indexes custom source', async () => {
208
+ // Create a test table
209
+ db.exec(`CREATE TABLE test_items (id INTEGER PRIMARY KEY, content TEXT, category TEXT)`);
210
+ db.prepare('INSERT INTO test_items (content, category) VALUES (?, ?)').run('Test content', 'test');
211
+ db.prepare('INSERT INTO test_items (content, category) VALUES (?, ?)').run('Another content', 'test');
212
+ const rag = new RAGEngine(db, { brainName: 'test' });
213
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
214
+ const indexer = new RAGIndexer(db);
215
+ indexer.setRAGEngine(rag);
216
+ indexer.addSource({
217
+ collection: 'test_items',
218
+ query: 'SELECT id, content, category FROM test_items',
219
+ textColumns: ['content'],
220
+ });
221
+ const count = await indexer.indexAll();
222
+ expect(count).toBe(2);
223
+ expect(indexer.getStatus().totalIndexed).toBe(2);
224
+ });
225
+ it('skips missing tables gracefully', async () => {
226
+ const rag = new RAGEngine(db, { brainName: 'test' });
227
+ rag.setEmbeddingEngine(createMockEmbeddingEngine());
228
+ const indexer = new RAGIndexer(db);
229
+ indexer.setRAGEngine(rag);
230
+ // Default sources reference tables that don't exist in test DB
231
+ const count = await indexer.indexAll();
232
+ expect(count).toBe(0);
233
+ });
234
+ });
235
+ //# sourceMappingURL=rag-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-engine.test.js","sourceRoot":"","sources":["../../../src/rag/__tests__/rag-engine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { RAGEngine, runRAGMigration } from './rag-engine.js';
2
+ export type { RAGEngineConfig, RAGSearchOptions, RAGResult, RAGIndexStats, RAGStatus } from './rag-engine.js';
3
+ export { RAGIndexer } from './rag-indexer.js';
4
+ export type { RAGIndexerConfig, IndexSource, IndexerStatus } from './rag-indexer.js';
@@ -0,0 +1,3 @@
1
+ export { RAGEngine, runRAGMigration } from './rag-engine.js';
2
+ export { RAGIndexer } from './rag-indexer.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}