@monoes/memory 1.0.0 → 1.0.1

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 (98) hide show
  1. package/README.md +20 -24
  2. package/dist/agent-memory-scope.d.ts +1 -1
  3. package/dist/agent-memory-scope.js +2 -2
  4. package/dist/agent-memory-scope.js.map +1 -1
  5. package/dist/auto-memory-bridge.d.ts +12 -12
  6. package/dist/auto-memory-bridge.d.ts.map +1 -1
  7. package/dist/auto-memory-bridge.js +24 -18
  8. package/dist/auto-memory-bridge.js.map +1 -1
  9. package/dist/cache-manager.d.ts.map +1 -1
  10. package/dist/cache-manager.js +7 -3
  11. package/dist/cache-manager.js.map +1 -1
  12. package/dist/checkpointer.d.ts.map +1 -1
  13. package/dist/checkpointer.js +14 -4
  14. package/dist/checkpointer.js.map +1 -1
  15. package/dist/controller-registry.d.ts +14 -20
  16. package/dist/controller-registry.d.ts.map +1 -1
  17. package/dist/controller-registry.js +52 -423
  18. package/dist/controller-registry.js.map +1 -1
  19. package/dist/database-provider.d.ts.map +1 -1
  20. package/dist/database-provider.js +3 -15
  21. package/dist/database-provider.js.map +1 -1
  22. package/dist/diskann-backend.d.ts.map +1 -1
  23. package/dist/diskann-backend.js +16 -4
  24. package/dist/diskann-backend.js.map +1 -1
  25. package/dist/episodic-store.js +5 -5
  26. package/dist/episodic-store.js.map +1 -1
  27. package/dist/hnsw-index.d.ts +0 -1
  28. package/dist/hnsw-index.d.ts.map +1 -1
  29. package/dist/hnsw-index.js +2 -48
  30. package/dist/hnsw-index.js.map +1 -1
  31. package/dist/hnsw-lite.d.ts.map +1 -1
  32. package/dist/hnsw-lite.js +5 -1
  33. package/dist/hnsw-lite.js.map +1 -1
  34. package/dist/hybrid-backend.d.ts +29 -31
  35. package/dist/hybrid-backend.d.ts.map +1 -1
  36. package/dist/hybrid-backend.js +153 -152
  37. package/dist/hybrid-backend.js.map +1 -1
  38. package/dist/index.d.ts +19 -31
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +24 -61
  41. package/dist/index.js.map +1 -1
  42. package/dist/lancedb-backend.d.ts +68 -0
  43. package/dist/lancedb-backend.d.ts.map +1 -0
  44. package/dist/lancedb-backend.js +468 -0
  45. package/dist/lancedb-backend.js.map +1 -0
  46. package/dist/learning-bridge.d.ts +19 -1
  47. package/dist/learning-bridge.d.ts.map +1 -1
  48. package/dist/learning-bridge.js +96 -52
  49. package/dist/learning-bridge.js.map +1 -1
  50. package/dist/math-utils.d.ts +6 -0
  51. package/dist/math-utils.d.ts.map +1 -0
  52. package/dist/math-utils.js +34 -0
  53. package/dist/math-utils.js.map +1 -0
  54. package/dist/memory-graph.d.ts +2 -0
  55. package/dist/memory-graph.d.ts.map +1 -1
  56. package/dist/memory-graph.js +22 -5
  57. package/dist/memory-graph.js.map +1 -1
  58. package/dist/migration.d.ts +5 -5
  59. package/dist/migration.d.ts.map +1 -1
  60. package/dist/migration.js +1 -1
  61. package/dist/persistent-sona.d.ts +1 -1
  62. package/dist/persistent-sona.d.ts.map +1 -1
  63. package/dist/persistent-sona.js +3 -25
  64. package/dist/persistent-sona.js.map +1 -1
  65. package/dist/rvf-backend.d.ts +2 -0
  66. package/dist/rvf-backend.d.ts.map +1 -1
  67. package/dist/rvf-backend.js +70 -62
  68. package/dist/rvf-backend.js.map +1 -1
  69. package/dist/sqlite-backend.d.ts +10 -2
  70. package/dist/sqlite-backend.d.ts.map +1 -1
  71. package/dist/sqlite-backend.js +124 -56
  72. package/dist/sqlite-backend.js.map +1 -1
  73. package/dist/sqljs-backend.d.ts +0 -1
  74. package/dist/sqljs-backend.d.ts.map +1 -1
  75. package/dist/sqljs-backend.js +3 -14
  76. package/dist/sqljs-backend.js.map +1 -1
  77. package/dist/tier-manager.d.ts.map +1 -1
  78. package/dist/tier-manager.js +10 -6
  79. package/dist/tier-manager.js.map +1 -1
  80. package/dist/tiers/contextual.d.ts +2 -0
  81. package/dist/tiers/contextual.d.ts.map +1 -1
  82. package/dist/tiers/contextual.js +8 -1
  83. package/dist/tiers/contextual.js.map +1 -1
  84. package/dist/tiers/short-term.js +4 -3
  85. package/dist/tiers/short-term.js.map +1 -1
  86. package/dist/types.d.ts +3 -1
  87. package/dist/types.d.ts.map +1 -1
  88. package/dist/types.js +1 -1
  89. package/dist/types.js.map +1 -1
  90. package/package.json +6 -3
  91. package/dist/agentdb-adapter.d.ts +0 -165
  92. package/dist/agentdb-adapter.d.ts.map +0 -1
  93. package/dist/agentdb-adapter.js +0 -836
  94. package/dist/agentdb-adapter.js.map +0 -1
  95. package/dist/agentdb-backend.d.ts +0 -218
  96. package/dist/agentdb-backend.d.ts.map +0 -1
  97. package/dist/agentdb-backend.js +0 -879
  98. package/dist/agentdb-backend.js.map +0 -1
@@ -0,0 +1,468 @@
1
+ /**
2
+ * LanceDB Backend - IMemoryBackend via @lancedb/lancedb
3
+ *
4
+ * Uses LanceDB's columnar
5
+ * format, native IVF-PQ ANN search, SQL predicate push-down, and optional
6
+ * full-text search — all in one embedded Rust engine with no server process.
7
+ *
8
+ * Loaded dynamically: install @lancedb/lancedb + apache-arrow to enable.
9
+ *
10
+ * @module v1/memory/lancedb-backend
11
+ */
12
+ import { EventEmitter } from 'node:events';
13
+ import { join } from 'node:path';
14
+ import { homedir } from 'node:os';
15
+ // ===== Optional dynamic import =====
16
+ let lancedb;
17
+ let importError = null;
18
+ async function ensureLanceDB() {
19
+ if (lancedb)
20
+ return;
21
+ if (importError)
22
+ throw importError;
23
+ try {
24
+ lancedb = await import('@lancedb/lancedb');
25
+ }
26
+ catch (err) {
27
+ importError = new Error(`LanceDB not installed. Run:\n npm install @lancedb/lancedb apache-arrow\n\nOriginal error: ${err.message}`);
28
+ throw importError;
29
+ }
30
+ }
31
+ // ===== Helpers =====
32
+ function sqlStr(s) {
33
+ return `'${s.replace(/'/g, "''")}'`;
34
+ }
35
+ function toRecord(entry, dim) {
36
+ return {
37
+ id: entry.id,
38
+ key: entry.key,
39
+ content: entry.content,
40
+ type: entry.type,
41
+ namespace: entry.namespace,
42
+ ownerId: entry.ownerId ?? '',
43
+ accessLevel: entry.accessLevel,
44
+ tagsStr: entry.tags.length ? `|${entry.tags.join('|')}|` : '||',
45
+ refsStr: JSON.stringify(entry.references ?? []),
46
+ metadataStr: JSON.stringify(entry.metadata ?? {}),
47
+ vector: entry.embedding ? Array.from(entry.embedding) : new Array(dim).fill(0),
48
+ createdAt: entry.createdAt,
49
+ updatedAt: entry.updatedAt,
50
+ lastAccessedAt: entry.lastAccessedAt,
51
+ expiresAt: entry.expiresAt ?? 0,
52
+ eventAt: entry.eventAt ?? 0,
53
+ version: entry.version,
54
+ accessCount: entry.accessCount,
55
+ importanceScore: entry.importanceScore ?? 1.0,
56
+ };
57
+ }
58
+ function fromRecord(r) {
59
+ const tags = String(r.tagsStr ?? '').split('|').filter(Boolean);
60
+ let references = [];
61
+ try {
62
+ references = JSON.parse(String(r.refsStr ?? '[]'));
63
+ }
64
+ catch { /* leave empty */ }
65
+ let metadata = {};
66
+ try {
67
+ metadata = JSON.parse(String(r.metadataStr ?? '{}'));
68
+ }
69
+ catch { /* leave empty */ }
70
+ return {
71
+ id: String(r.id),
72
+ key: String(r.key),
73
+ content: String(r.content),
74
+ type: r.type,
75
+ namespace: String(r.namespace),
76
+ ownerId: r.ownerId ? String(r.ownerId) : undefined,
77
+ accessLevel: r.accessLevel,
78
+ tags,
79
+ references,
80
+ metadata,
81
+ embedding: Array.isArray(r.vector) && r.vector.length > 0 ? new Float32Array(r.vector) : undefined,
82
+ createdAt: Number(r.createdAt),
83
+ updatedAt: Number(r.updatedAt),
84
+ lastAccessedAt: Number(r.lastAccessedAt),
85
+ expiresAt: Number(r.expiresAt) || undefined,
86
+ eventAt: Number(r.eventAt) || undefined,
87
+ version: Number(r.version),
88
+ accessCount: Number(r.accessCount),
89
+ importanceScore: Number(r.importanceScore),
90
+ };
91
+ }
92
+ function buildFilter(q) {
93
+ const conds = [];
94
+ if (q.namespace)
95
+ conds.push(`namespace = ${sqlStr(q.namespace)}`);
96
+ if (q.key)
97
+ conds.push(`key = ${sqlStr(q.key)}`);
98
+ if (q.keyPrefix)
99
+ conds.push(`starts_with(key, ${sqlStr(q.keyPrefix)})`);
100
+ if (q.memoryType)
101
+ conds.push(`type = ${sqlStr(q.memoryType)}`);
102
+ if (q.ownerId)
103
+ conds.push(`ownerId = ${sqlStr(q.ownerId)}`);
104
+ if (q.tags?.length) {
105
+ for (const t of q.tags)
106
+ conds.push(`contains(tagsStr, ${sqlStr(`|${t}|`)})`);
107
+ }
108
+ if (q.createdAfter)
109
+ conds.push(`createdAt >= ${q.createdAfter}`);
110
+ if (q.createdBefore)
111
+ conds.push(`createdAt <= ${q.createdBefore}`);
112
+ if (q.updatedAfter)
113
+ conds.push(`updatedAt >= ${q.updatedAfter}`);
114
+ if (q.updatedBefore)
115
+ conds.push(`updatedAt <= ${q.updatedBefore}`);
116
+ if (q.eventAfter)
117
+ conds.push(`eventAt >= ${q.eventAfter}`);
118
+ if (q.eventBefore)
119
+ conds.push(`eventAt <= ${q.eventBefore}`);
120
+ if (!q.includeExpired)
121
+ conds.push(`(expiresAt = 0 OR expiresAt > ${Date.now()})`);
122
+ return conds.length ? conds.join(' AND ') : '';
123
+ }
124
+ // ===== Backend =====
125
+ export class LanceDBBackend extends EventEmitter {
126
+ config;
127
+ db = null;
128
+ // table per namespace, lazy-created
129
+ tables = new Map();
130
+ ftsBuilt = new Set();
131
+ initialized = false;
132
+ queryCount = 0;
133
+ queryTotalMs = 0;
134
+ searchCount = 0;
135
+ searchTotalMs = 0;
136
+ constructor(config = {}) {
137
+ super();
138
+ this.config = {
139
+ dbPath: config.dbPath ?? join(homedir(), '.monomind', 'lancedb'),
140
+ namespace: config.namespace ?? 'default',
141
+ vectorDimension: config.vectorDimension ?? 1536,
142
+ enableFts: config.enableFts ?? false,
143
+ nProbes: config.nProbes ?? 20,
144
+ embeddingGenerator: config.embeddingGenerator,
145
+ };
146
+ }
147
+ async initialize() {
148
+ if (this.initialized)
149
+ return;
150
+ await ensureLanceDB();
151
+ this.db = await lancedb.connect(this.config.dbPath);
152
+ this.initialized = true;
153
+ this.emit('initialized');
154
+ }
155
+ async shutdown() {
156
+ this.tables.clear();
157
+ this.db = null;
158
+ this.initialized = false;
159
+ this.emit('shutdown');
160
+ }
161
+ // ===== Table management =====
162
+ /** Open an existing table. Returns null without creating if the namespace doesn't exist. */
163
+ async openExistingTable(namespace) {
164
+ if (this.tables.has(namespace))
165
+ return this.tables.get(namespace);
166
+ if (!this.initialized || !this.db)
167
+ throw new Error('LanceDBBackend not initialized — call initialize() first');
168
+ const tableNames = await this.db.tableNames();
169
+ if (!tableNames.includes(namespace))
170
+ return null;
171
+ const table = await this.db.openTable(namespace);
172
+ this.tables.set(namespace, table);
173
+ return table;
174
+ }
175
+ /** Open or create a table — call only from write paths (store, bulkInsert). */
176
+ async getTable(namespace) {
177
+ if (this.tables.has(namespace))
178
+ return this.tables.get(namespace);
179
+ if (!this.initialized || !this.db)
180
+ throw new Error('LanceDBBackend not initialized — call initialize() first');
181
+ const tableNames = await this.db.tableNames();
182
+ let table;
183
+ if (tableNames.includes(namespace)) {
184
+ table = await this.db.openTable(namespace);
185
+ }
186
+ else {
187
+ // Create with a placeholder row so the schema is fully established.
188
+ // The placeholder is deleted immediately after creation.
189
+ const dim = this.config.vectorDimension;
190
+ const placeholder = {
191
+ id: '__init__',
192
+ key: '__init__',
193
+ content: '',
194
+ type: 'working',
195
+ namespace,
196
+ ownerId: '',
197
+ accessLevel: 'private',
198
+ tagsStr: '||',
199
+ refsStr: '[]',
200
+ metadataStr: '{}',
201
+ vector: new Array(dim).fill(0),
202
+ createdAt: 0,
203
+ updatedAt: 0,
204
+ lastAccessedAt: 0,
205
+ expiresAt: 0,
206
+ eventAt: 0,
207
+ version: 0,
208
+ accessCount: 0,
209
+ importanceScore: 0,
210
+ };
211
+ table = await this.db.createTable(namespace, [placeholder]);
212
+ await table.delete(`id = '__init__'`);
213
+ }
214
+ this.tables.set(namespace, table);
215
+ return table;
216
+ }
217
+ // ===== IMemoryBackend implementation =====
218
+ async store(entry) {
219
+ const table = await this.getTable(entry.namespace);
220
+ const record = toRecord(entry, this.config.vectorDimension);
221
+ // Upsert: delete any existing row with same id, then insert
222
+ await table.delete(`id = ${sqlStr(entry.id)}`);
223
+ await table.add([record]);
224
+ // Build FTS index on first real write (LanceDB needs at least 1 row)
225
+ if (this.config.enableFts && !this.ftsBuilt.has(entry.namespace)) {
226
+ try {
227
+ await table.createIndex({
228
+ config: lancedb.Index.fts(['content', 'key']),
229
+ });
230
+ this.ftsBuilt.add(entry.namespace);
231
+ }
232
+ catch {
233
+ // FTS build is best-effort; search falls back to vector-only
234
+ }
235
+ }
236
+ this.emit('entry:stored', { id: entry.id, namespace: entry.namespace });
237
+ }
238
+ async get(id) {
239
+ // Search default namespace first, then any other open tables (deduped).
240
+ // openExistingTable is used to avoid creating phantom tables during reads.
241
+ const toSearch = [...new Set([this.config.namespace, ...this.tables.keys()])];
242
+ for (const ns of toSearch) {
243
+ try {
244
+ const table = await this.openExistingTable(ns);
245
+ if (!table)
246
+ continue;
247
+ const rows = await table.query()
248
+ .where(`id = ${sqlStr(id)}`)
249
+ .limit(1)
250
+ .toArray();
251
+ if (rows.length > 0)
252
+ return fromRecord(rows[0]);
253
+ }
254
+ catch { /* ignore per-namespace errors */ }
255
+ }
256
+ return null;
257
+ }
258
+ async getByKey(namespace, key) {
259
+ try {
260
+ const table = await this.openExistingTable(namespace);
261
+ if (!table)
262
+ return null;
263
+ const rows = await table.query()
264
+ .where(`namespace = ${sqlStr(namespace)} AND key = ${sqlStr(key)}`)
265
+ .limit(1)
266
+ .toArray();
267
+ return rows.length > 0 ? fromRecord(rows[0]) : null;
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ async update(id, update) {
274
+ const existing = await this.get(id);
275
+ if (!existing)
276
+ return null;
277
+ const updated = {
278
+ ...existing,
279
+ ...(update.content !== undefined && { content: update.content }),
280
+ ...(update.tags !== undefined && { tags: update.tags }),
281
+ ...(update.metadata !== undefined && { metadata: update.metadata }),
282
+ ...(update.accessLevel !== undefined && { accessLevel: update.accessLevel }),
283
+ ...(update.expiresAt !== undefined && { expiresAt: update.expiresAt }),
284
+ ...(update.references !== undefined && { references: update.references }),
285
+ updatedAt: Date.now(),
286
+ version: existing.version + 1,
287
+ };
288
+ await this.store(updated);
289
+ this.emit('entry:updated', { id });
290
+ return updated;
291
+ }
292
+ async delete(id) {
293
+ // Check existence first — lance.delete() returns void, can't tell if row matched
294
+ const existing = await this.get(id);
295
+ if (!existing)
296
+ return false;
297
+ try {
298
+ const table = await this.getTable(existing.namespace);
299
+ await table.delete(`id = ${sqlStr(id)}`);
300
+ this.emit('entry:deleted', { id, namespace: existing.namespace });
301
+ return true;
302
+ }
303
+ catch {
304
+ return false;
305
+ }
306
+ }
307
+ async query(query) {
308
+ const ns = query.namespace ?? this.config.namespace;
309
+ const t0 = Date.now();
310
+ try {
311
+ const table = await this.openExistingTable(ns);
312
+ if (!table)
313
+ return [];
314
+ const filter = buildFilter(query);
315
+ let q = table.query();
316
+ if (filter)
317
+ q = q.where(filter);
318
+ q = q.limit(query.limit ?? 100);
319
+ if (query.offset)
320
+ q = q.offset(query.offset);
321
+ const rows = await q.toArray();
322
+ this.queryCount++;
323
+ this.queryTotalMs += Date.now() - t0;
324
+ return rows.map(fromRecord);
325
+ }
326
+ catch {
327
+ return [];
328
+ }
329
+ }
330
+ async search(embedding, options) {
331
+ const ns = options.filters?.namespace ?? this.config.namespace;
332
+ const t0 = Date.now();
333
+ try {
334
+ const table = await this.openExistingTable(ns);
335
+ if (!table)
336
+ return [];
337
+ const queryVector = Array.from(embedding);
338
+ const k = options.k ?? 10;
339
+ // over-fetch for threshold filtering, then trim; single predicate (chaining may overwrite)
340
+ const preFilter = `namespace = ${sqlStr(ns)} AND (expiresAt = 0 OR expiresAt > ${Date.now()})`;
341
+ let q = table.search(queryVector).nprobes(this.config.nProbes).limit(k * 2).where(preFilter);
342
+ const rows = await q.toArray();
343
+ const threshold = options.threshold ?? 0;
344
+ const results = rows
345
+ .map((r) => {
346
+ // LanceDB _distance: cosine distance (0=identical, 1=orthogonal, 2=opposite)
347
+ const distance = Number(r._distance ?? 0);
348
+ const score = Math.max(0, 1 - distance);
349
+ return { entry: fromRecord(r), score, distance };
350
+ })
351
+ .filter(r => r.score >= threshold)
352
+ .slice(0, k);
353
+ this.searchCount++;
354
+ this.searchTotalMs += Date.now() - t0;
355
+ return results;
356
+ }
357
+ catch {
358
+ return [];
359
+ }
360
+ }
361
+ async bulkInsert(entries) {
362
+ if (!entries.length)
363
+ return;
364
+ // Group by namespace to minimize table opens
365
+ const byNs = new Map();
366
+ for (const e of entries) {
367
+ const list = byNs.get(e.namespace) ?? [];
368
+ list.push(e);
369
+ byNs.set(e.namespace, list);
370
+ }
371
+ const dim = this.config.vectorDimension;
372
+ for (const [ns, group] of byNs) {
373
+ const table = await this.getTable(ns);
374
+ const ids = group.map(e => sqlStr(e.id)).join(', ');
375
+ await table.delete(`id IN (${ids})`);
376
+ await table.add(group.map(e => toRecord(e, dim)));
377
+ }
378
+ }
379
+ async bulkDelete(ids) {
380
+ if (!ids.length)
381
+ return 0;
382
+ const idList = ids.map(sqlStr).join(', ');
383
+ // Count before deleting to get accurate return value (lance.delete returns void)
384
+ let deleted = 0;
385
+ for (const [ns, table] of this.tables) {
386
+ try {
387
+ const before = typeof table.countRows === 'function'
388
+ ? await table.countRows(`id IN (${idList})`)
389
+ : 0; // skip pre-count if API unavailable; return 0 (conservative)
390
+ await table.delete(`id IN (${idList})`);
391
+ deleted += before;
392
+ }
393
+ catch { /* ignore */ }
394
+ }
395
+ return deleted;
396
+ }
397
+ async count(namespace) {
398
+ const ns = namespace ?? this.config.namespace;
399
+ try {
400
+ const table = await this.openExistingTable(ns);
401
+ if (!table)
402
+ return 0;
403
+ // countRows() avoids loading all IDs into memory (available in lancedb >= 0.9)
404
+ if (typeof table.countRows === 'function') {
405
+ return await table.countRows(`namespace = ${sqlStr(ns)}`);
406
+ }
407
+ const rows = await table.query()
408
+ .where(`namespace = ${sqlStr(ns)}`)
409
+ .select(['id'])
410
+ .toArray();
411
+ return rows.length;
412
+ }
413
+ catch {
414
+ return 0;
415
+ }
416
+ }
417
+ async listNamespaces() {
418
+ try {
419
+ return await this.db.tableNames();
420
+ }
421
+ catch {
422
+ return [];
423
+ }
424
+ }
425
+ async clearNamespace(namespace) {
426
+ try {
427
+ const n = await this.count(namespace);
428
+ await this.db.dropTable(namespace);
429
+ this.tables.delete(namespace);
430
+ this.ftsBuilt.delete(namespace);
431
+ return n;
432
+ }
433
+ catch {
434
+ return 0;
435
+ }
436
+ }
437
+ async getStats() {
438
+ const namespaces = await this.listNamespaces();
439
+ const entriesByNamespace = {};
440
+ let totalEntries = 0;
441
+ for (const ns of namespaces) {
442
+ const n = await this.count(ns);
443
+ entriesByNamespace[ns] = n;
444
+ totalEntries += n;
445
+ }
446
+ return {
447
+ totalEntries,
448
+ entriesByNamespace,
449
+ entriesByType: {}, // groupby query is expensive; omit
450
+ memoryUsage: 0, // Lance manages its own columnar compression
451
+ avgQueryTime: this.queryCount ? this.queryTotalMs / this.queryCount : 0,
452
+ avgSearchTime: this.searchCount ? this.searchTotalMs / this.searchCount : 0,
453
+ };
454
+ }
455
+ async healthCheck() {
456
+ const ok = this.initialized && this.db !== null;
457
+ const status = ok ? 'healthy' : 'unhealthy';
458
+ const component = { status, latency: 0 };
459
+ return {
460
+ status,
461
+ components: { storage: component, index: component, cache: component },
462
+ timestamp: Date.now(),
463
+ issues: ok ? [] : ['LanceDB not initialized'],
464
+ recommendations: [],
465
+ };
466
+ }
467
+ }
468
+ //# sourceMappingURL=lancedb-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb-backend.js","sourceRoot":"","sources":["../src/lancedb-backend.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,8 @@ export interface LearningBridgeConfig {
47
47
  * Signature: (text: string) => Promise<number[]>
48
48
  */
49
49
  embedder?: (text: string) => Promise<number[]>;
50
+ /** Expected embedding dimension — auto-detected on first embed if not set */
51
+ embeddingDim?: number;
50
52
  }
51
53
  /** Aggregated learning statistics */
52
54
  export interface LearningStats {
@@ -88,13 +90,22 @@ export declare class LearningBridge extends EventEmitter {
88
90
  private backend;
89
91
  private config;
90
92
  private activeTrajectories;
93
+ /**
94
+ * Parallel map of entryId → the insight confidence captured at record time.
95
+ * Used as the authoritative reward/quality in consolidate() so the LoRA update
96
+ * reflects the real task outcome rather than a hardcoded default. Kept separate
97
+ * from activeTrajectories (which stays string→string) to avoid touching every
98
+ * read site of that map.
99
+ */
100
+ private trajectoryConfidence;
91
101
  private stats;
92
102
  private destroyed;
93
103
  private neuralInitPromise;
94
104
  private backfillInProgress;
105
+ private _detectedEmbeddingDim;
95
106
  constructor(backend: IMemoryBackend, config?: LearningBridgeConfig);
96
107
  /**
97
- * Notify the bridge that an insight has been recorded in AgentDB.
108
+ * Notify the bridge that an insight has been recorded in memory backend.
98
109
  * Creates a learning trajectory so the neural system can track the
99
110
  * insight's lifecycle.
100
111
  */
@@ -127,6 +138,13 @@ export declare class LearningBridge extends EventEmitter {
127
138
  getStats(): LearningStats;
128
139
  /** Tear down the bridge. Subsequent method calls become no-ops. */
129
140
  destroy(): void;
141
+ /**
142
+ * Detect and cache the actual output dimension of the injected embedder.
143
+ * On first call, probes the embedder with a short string and stores the
144
+ * resulting vector length. Subsequent calls return the cached value.
145
+ * Falls back to 768 when no embedder is configured or the probe fails.
146
+ */
147
+ private getEmbeddingDim;
130
148
  /**
131
149
  * Lazily attempt to load and initialize the NeuralLearningSystem.
132
150
  * The promise is cached so that repeated calls do not re-attempt
@@ -1 +1 @@
1
- {"version":3,"file":"learning-bridge.d.ts","sourceRoot":"","sources":["../src/learning-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning-bridge.d.ts","sourceRoot":"","sources":["../src/learning-bridge.ts"],"names":[],"mappings":"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"}