@monoes/memory 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -24
- package/dist/agent-memory-scope.d.ts +1 -1
- package/dist/agent-memory-scope.js +2 -2
- package/dist/agent-memory-scope.js.map +1 -1
- package/dist/auto-memory-bridge.d.ts +12 -12
- package/dist/auto-memory-bridge.d.ts.map +1 -1
- package/dist/auto-memory-bridge.js +24 -18
- package/dist/auto-memory-bridge.js.map +1 -1
- package/dist/cache-manager.d.ts.map +1 -1
- package/dist/cache-manager.js +7 -3
- package/dist/cache-manager.js.map +1 -1
- package/dist/checkpointer.d.ts.map +1 -1
- package/dist/checkpointer.js +14 -4
- package/dist/checkpointer.js.map +1 -1
- package/dist/controller-registry.d.ts +14 -20
- package/dist/controller-registry.d.ts.map +1 -1
- package/dist/controller-registry.js +52 -423
- package/dist/controller-registry.js.map +1 -1
- package/dist/database-provider.d.ts.map +1 -1
- package/dist/database-provider.js +3 -15
- package/dist/database-provider.js.map +1 -1
- package/dist/diskann-backend.d.ts.map +1 -1
- package/dist/diskann-backend.js +16 -4
- package/dist/diskann-backend.js.map +1 -1
- package/dist/episodic-store.js +5 -5
- package/dist/episodic-store.js.map +1 -1
- package/dist/hnsw-index.d.ts +0 -1
- package/dist/hnsw-index.d.ts.map +1 -1
- package/dist/hnsw-index.js +2 -48
- package/dist/hnsw-index.js.map +1 -1
- package/dist/hnsw-lite.d.ts.map +1 -1
- package/dist/hnsw-lite.js +5 -1
- package/dist/hnsw-lite.js.map +1 -1
- package/dist/hybrid-backend.d.ts +29 -31
- package/dist/hybrid-backend.d.ts.map +1 -1
- package/dist/hybrid-backend.js +153 -152
- package/dist/hybrid-backend.js.map +1 -1
- package/dist/index.d.ts +19 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -61
- package/dist/index.js.map +1 -1
- package/dist/lancedb-backend.d.ts +68 -0
- package/dist/lancedb-backend.d.ts.map +1 -0
- package/dist/lancedb-backend.js +468 -0
- package/dist/lancedb-backend.js.map +1 -0
- package/dist/learning-bridge.d.ts +19 -1
- package/dist/learning-bridge.d.ts.map +1 -1
- package/dist/learning-bridge.js +96 -52
- package/dist/learning-bridge.js.map +1 -1
- package/dist/math-utils.d.ts +6 -0
- package/dist/math-utils.d.ts.map +1 -0
- package/dist/math-utils.js +34 -0
- package/dist/math-utils.js.map +1 -0
- package/dist/memory-graph.d.ts +2 -0
- package/dist/memory-graph.d.ts.map +1 -1
- package/dist/memory-graph.js +22 -5
- package/dist/memory-graph.js.map +1 -1
- package/dist/migration.d.ts +5 -5
- package/dist/migration.d.ts.map +1 -1
- package/dist/migration.js +1 -1
- package/dist/persistent-sona.d.ts +1 -1
- package/dist/persistent-sona.d.ts.map +1 -1
- package/dist/persistent-sona.js +3 -25
- package/dist/persistent-sona.js.map +1 -1
- package/dist/rvf-backend.d.ts +2 -0
- package/dist/rvf-backend.d.ts.map +1 -1
- package/dist/rvf-backend.js +70 -62
- package/dist/rvf-backend.js.map +1 -1
- package/dist/sqlite-backend.d.ts +10 -2
- package/dist/sqlite-backend.d.ts.map +1 -1
- package/dist/sqlite-backend.js +124 -56
- package/dist/sqlite-backend.js.map +1 -1
- package/dist/sqljs-backend.d.ts +0 -1
- package/dist/sqljs-backend.d.ts.map +1 -1
- package/dist/sqljs-backend.js +3 -14
- package/dist/sqljs-backend.js.map +1 -1
- package/dist/tier-manager.d.ts.map +1 -1
- package/dist/tier-manager.js +10 -6
- package/dist/tier-manager.js.map +1 -1
- package/dist/tiers/contextual.d.ts +2 -0
- package/dist/tiers/contextual.d.ts.map +1 -1
- package/dist/tiers/contextual.js +8 -1
- package/dist/tiers/contextual.js.map +1 -1
- package/dist/tiers/short-term.js +4 -3
- package/dist/tiers/short-term.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -4
- package/dist/agentdb-adapter.d.ts +0 -165
- package/dist/agentdb-adapter.d.ts.map +0 -1
- package/dist/agentdb-adapter.js +0 -836
- package/dist/agentdb-adapter.js.map +0 -1
- package/dist/agentdb-backend.d.ts +0 -218
- package/dist/agentdb-backend.d.ts.map +0 -1
- package/dist/agentdb-backend.js +0 -879
- 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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAalC,sCAAsC;AAEtC,IAAI,OAAY,CAAC;AACjB,IAAI,WAAW,GAAiB,IAAI,CAAC;AAErC,KAAK,UAAU,aAAa;IAC1B,IAAI,OAAO;QAAE,OAAO;IACpB,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,WAAW,GAAG,IAAI,KAAK,CACrB,+FAA+F,GAAG,CAAC,OAAO,EAAE,CAC7G,CAAC;QACF,MAAM,WAAW,CAAC;IACpB,CAAC;AACH,CAAC;AAwDD,sBAAsB;AAEtB,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB,EAAE,GAAW;IAC/C,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAC/D,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QAC/C,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,GAAG;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAsB;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC;QAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACvF,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAEzF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAW;QACnB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAClD,WAAW,EAAE,CAAC,CAAC,WAAkB;QACjC,IAAI;QACJ,UAAU;QACV,QAAQ;QACR,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAClG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;QACxC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS;QAC3C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS;QACvC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;QAClC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAc;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,sBAAsB;AAEtB,MAAM,OAAO,cAAe,SAAQ,YAAY;IACtC,MAAM,CAEZ;IACM,EAAE,GAAQ,IAAI,CAAC;IACvB,oCAAoC;IAC5B,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAChC,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,WAAW,GAAG,KAAK,CAAC;IACpB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,CAAC,CAAC;IACjB,WAAW,GAAG,CAAC,CAAC;IAChB,aAAa,GAAG,CAAC,CAAC;IAE1B,YAAY,SAA+B,EAAE;QAC3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;YAChE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;YACxC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,MAAM,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,+BAA+B;IAE/B,4FAA4F;IACpF,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC/G,MAAM,UAAU,GAAa,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+EAA+E;IACvE,KAAK,CAAC,QAAQ,CAAC,SAAiB;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAE/G,MAAM,UAAU,GAAa,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACxD,IAAI,KAAU,CAAC;QAEf,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,yDAAyD;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACxC,MAAM,WAAW,GAAgB;gBAC/B,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,SAAS;gBACf,SAAS;gBACT,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,CAAC;gBACjB,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,CAAC;aACnB,CAAC;YACF,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4CAA4C;IAE5C,KAAK,CAAC,KAAK,CAAC,KAAkB;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5D,4DAA4D;QAC5D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1B,qEAAqE;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,WAAW,CAAC;oBACtB,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;iBAC9C,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,wEAAwE;QACxE,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE;qBAC7B,KAAK,CAAC,QAAQ,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;qBAC3B,KAAK,CAAC,CAAC,CAAC;qBACR,OAAO,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,GAAW;QAC3C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE;iBAC7B,KAAK,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,cAAc,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;iBAClE,KAAK,CAAC,CAAC,CAAC;iBACR,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAyB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,OAAO,GAAgB;YAC3B,GAAG,QAAQ;YACX,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YAChE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5E,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YACzE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC;SAC9B,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,iFAAiF;QACjF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAkB;QAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACpD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,MAAM;gBAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM;gBAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAuB,EAAE,OAAsB;QAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAE1B,2FAA2F;YAC3F,MAAM,SAAS,GAAG,eAAe,MAAM,CAAC,EAAE,CAAC,sCAAsC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;YAC/F,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAE7F,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAmB,IAAI;iBACjC,GAAG,CAAC,CAAC,CAAsB,EAAE,EAAE;gBAC9B,6EAA6E;gBAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACxC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACnD,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;iBACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEf,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QAC5B,6CAA6C;QAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;YACrC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAa;QAC5B,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,iFAAiF;QACjF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU;oBAClD,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,MAAM,GAAG,CAAC;oBAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,6DAA6D;gBACpE,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC;gBACxC,OAAO,IAAI,MAAM,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAkB;QAC5B,MAAM,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC;YACrB,+EAA+E;YAC/E,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC1C,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,eAAe,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE;iBAC7B,KAAK,CAAC,eAAe,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;iBAClC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;iBACd,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,kBAAkB,GAA2B,EAAE,CAAC;QACtD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/B,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3B,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO;YACL,YAAY;YACZ,kBAAkB;YAClB,aAAa,EAAE,EAAS,EAAE,mCAAmC;YAC7D,WAAW,EAAE,CAAC,EAAE,6CAA6C;YAC7D,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC5E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;QAChD,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5C,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAS,CAAC;QAChD,OAAO;YACL,MAAM;YACN,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACtE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC7C,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -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
|
|
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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"learning-bridge.d.ts","sourceRoot":"","sources":["../src/learning-bridge.ts"],"names":[],"mappings":"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"}
|