@monoes/memory 1.0.15 → 1.0.17

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 (70) hide show
  1. package/README.md +12 -15
  2. package/dist/atomic-file.js +1 -1
  3. package/dist/atomic-file.js.map +1 -1
  4. package/dist/cache-manager.d.ts +1 -37
  5. package/dist/cache-manager.d.ts.map +1 -1
  6. package/dist/cache-manager.js +1 -80
  7. package/dist/cache-manager.js.map +1 -1
  8. package/dist/checkpointer.d.ts +6 -6
  9. package/dist/checkpointer.d.ts.map +1 -1
  10. package/dist/checkpointer.js +10 -10
  11. package/dist/checkpointer.js.map +1 -1
  12. package/dist/hnsw-index.d.ts +32 -1
  13. package/dist/hnsw-index.d.ts.map +1 -1
  14. package/dist/hnsw-index.js +73 -29
  15. package/dist/hnsw-index.js.map +1 -1
  16. package/dist/index.d.ts +22 -202
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +18 -332
  19. package/dist/index.js.map +1 -1
  20. package/dist/knowledge/document-chunker.d.ts.map +1 -1
  21. package/dist/knowledge/document-chunker.js +9 -3
  22. package/dist/knowledge/document-chunker.js.map +1 -1
  23. package/dist/knowledge/index.d.ts +4 -4
  24. package/dist/knowledge/index.d.ts.map +1 -1
  25. package/dist/knowledge/index.js +1 -1
  26. package/dist/knowledge/index.js.map +1 -1
  27. package/dist/knowledge/knowledge-store.d.ts.map +1 -1
  28. package/dist/knowledge/knowledge-store.js +2 -2
  29. package/dist/knowledge/knowledge-store.js.map +1 -1
  30. package/dist/math-utils.d.ts.map +1 -1
  31. package/dist/math-utils.js.map +1 -1
  32. package/dist/migration.d.ts +1 -1
  33. package/dist/migration.d.ts.map +1 -1
  34. package/dist/migration.js +11 -22
  35. package/dist/migration.js.map +1 -1
  36. package/dist/prompt-version-store.d.ts.map +1 -1
  37. package/dist/prompt-version-store.js.map +1 -1
  38. package/dist/query-builder.d.ts.map +1 -1
  39. package/dist/query-builder.js +12 -4
  40. package/dist/query-builder.js.map +1 -1
  41. package/dist/sql-backend.d.ts +103 -5
  42. package/dist/sql-backend.d.ts.map +1 -1
  43. package/dist/sql-backend.js +341 -27
  44. package/dist/sql-backend.js.map +1 -1
  45. package/dist/sql-schema.d.ts.map +1 -1
  46. package/dist/sql-schema.js +116 -47
  47. package/dist/sql-schema.js.map +1 -1
  48. package/dist/sqlite-backend.d.ts +1 -0
  49. package/dist/sqlite-backend.d.ts.map +1 -1
  50. package/dist/sqlite-backend.js +8 -3
  51. package/dist/sqlite-backend.js.map +1 -1
  52. package/dist/sqljs-backend.d.ts +9 -0
  53. package/dist/sqljs-backend.d.ts.map +1 -1
  54. package/dist/sqljs-backend.js +24 -3
  55. package/dist/sqljs-backend.js.map +1 -1
  56. package/dist/types/checkpoint.d.ts +2 -2
  57. package/dist/types/checkpoint.d.ts.map +1 -1
  58. package/dist/types.d.ts +2 -2
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/utils/jsonl-store.js +2 -2
  61. package/dist/utils/jsonl-store.js.map +1 -1
  62. package/package.json +2 -2
  63. package/dist/controller-registry.d.ts +0 -206
  64. package/dist/controller-registry.d.ts.map +0 -1
  65. package/dist/controller-registry.js +0 -497
  66. package/dist/controller-registry.js.map +0 -1
  67. package/dist/database-provider.d.ts +0 -86
  68. package/dist/database-provider.d.ts.map +0 -1
  69. package/dist/database-provider.js +0 -397
  70. package/dist/database-provider.js.map +0 -1
@@ -1,497 +0,0 @@
1
- /**
2
- * ControllerRegistry - Central controller lifecycle management for memory backend
3
- *
4
- * Wraps the configured memory backend (SQLite via better-sqlite3/sql.js as of
5
- * 2026-07; LanceDB support was fully removed) and adds CLI-specific controllers from
6
- * @monomind/memory. Manages initialization (level-based ordering), health
7
- * checks, and graceful shutdown.
8
- *
9
- * Per ADR-053: Replaces memory-initializer.js's raw sql.js usage with a unified
10
- * controller ecosystem routing all memory operations through a single backend.
11
- *
12
- * @module @monomind/memory/controller-registry
13
- */
14
- import { EventEmitter } from 'node:events';
15
- import { TieredCacheManager } from './cache-manager.js';
16
- // ===== Initialization Levels =====
17
- /**
18
- * Level-based initialization order per ADR-053.
19
- * Controllers at each level can be initialized in parallel.
20
- * Each level must complete before the next begins.
21
- */
22
- export const INIT_LEVELS = [
23
- // Level 0: Foundation - already exists
24
- { level: 0, controllers: [] },
25
- // Level 1: Core intelligence
26
- { level: 1, controllers: ['reasoningBank', 'hierarchicalMemory', 'learningBridge', 'hybridSearch', 'tieredCache'] },
27
- // Level 2: Graph & security
28
- { level: 2, controllers: ['vectorBackend', 'mutationGuard', 'gnnService'] },
29
- // Level 3: Specialization
30
- { level: 3, controllers: ['skills', 'explainableRecall', 'reflexion', 'attestationLog', 'batchOperations', 'memoryConsolidation'] },
31
- // Level 4: Causal & routing
32
- { level: 4, controllers: ['causalGraph', 'nightlyLearner', 'learningSystem', 'semanticRouter'] },
33
- // Level 5: Advanced services
34
- { level: 5, controllers: ['graphTransformer', 'sonaTrajectory', 'contextSynthesizer', 'sonaOptimizer', 'mmrDiversityRanker', 'guardedVectorBackend'] },
35
- // Level 6: Session management
36
- { level: 6, controllers: ['federatedSession', 'graphAdapter'] },
37
- ];
38
- /** Pre-computed reverse of INIT_LEVELS for shutdown ordering. */
39
- const SHUTDOWN_LEVELS = [...INIT_LEVELS].reverse();
40
- // ===== ControllerRegistry =====
41
- /**
42
- * Central registry for memory backend controller lifecycle management.
43
- *
44
- * Handles:
45
- * - Level-based initialization ordering (levels 0-6)
46
- * - Graceful degradation (each controller fails independently)
47
- * - Config-driven activation (controllers only instantiate when enabled)
48
- * - Health check aggregation across all controllers
49
- * - Ordered shutdown (reverse initialization order)
50
- *
51
- * @example
52
- * ```typescript
53
- * const registry = new ControllerRegistry();
54
- * await registry.initialize({
55
- * dbPath: './data/memory.db',
56
- * dimension: 384,
57
- * memory: {
58
- * enableHNSW: true,
59
- * learningBridge: { sonaMode: 'balanced' },
60
- * * },
61
- * });
62
- *
63
- * const reasoning = registry.get<ReasoningBank>('reasoningBank');
64
- *
65
- * await registry.shutdown();
66
- * ```
67
- */
68
- export class ControllerRegistry extends EventEmitter {
69
- controllers = new Map();
70
- backend = null;
71
- config = {};
72
- initialized = false;
73
- initTimeMs = 0;
74
- /**
75
- * Initialize all controllers in level-based order.
76
- *
77
- * Each level's controllers are initialized in parallel within the level.
78
- * Failures are isolated: a controller that fails to init is marked as
79
- * unavailable but does not block other controllers.
80
- */
81
- async initialize(config = {}) {
82
- if (this.initialized)
83
- return;
84
- this.initialized = true; // Set early to prevent concurrent re-entry
85
- this.config = config;
86
- const startTime = performance.now();
87
- // Step 1: Set up the backend
88
- this.backend = config.backend || null;
89
- // Step 3: Initialize controllers level by level
90
- for (const level of INIT_LEVELS) {
91
- const controllersToInit = level.controllers.filter((name) => this.isControllerEnabled(name));
92
- if (controllersToInit.length === 0)
93
- continue;
94
- // Initialize all controllers in this level in parallel
95
- const results = await Promise.allSettled(controllersToInit.map((name) => this.initController(name, level.level)));
96
- // Process results
97
- for (let i = 0; i < results.length; i++) {
98
- const result = results[i];
99
- const name = controllersToInit[i];
100
- if (result.status === 'rejected') {
101
- const errorMsg = result.reason instanceof Error
102
- ? result.reason.message
103
- : String(result.reason);
104
- this.controllers.set(name, {
105
- name,
106
- instance: null,
107
- level: level.level,
108
- initTimeMs: 0,
109
- enabled: false,
110
- error: errorMsg,
111
- });
112
- this.emit('controller:failed', { name, error: errorMsg, level: level.level });
113
- }
114
- }
115
- }
116
- this.initTimeMs = performance.now() - startTime;
117
- this.emit('initialized', {
118
- initTimeMs: this.initTimeMs,
119
- activeControllers: this.getActiveCount(),
120
- totalControllers: this.controllers.size,
121
- });
122
- }
123
- /**
124
- * Shutdown all controllers in reverse initialization order.
125
- */
126
- async shutdown() {
127
- if (!this.initialized)
128
- return;
129
- // Shutdown in reverse level order (SHUTDOWN_LEVELS is pre-computed at module load)
130
- for (const level of SHUTDOWN_LEVELS) {
131
- const controllersToShutdown = level.controllers
132
- .filter((name) => {
133
- const entry = this.controllers.get(name);
134
- return entry?.enabled && entry?.instance;
135
- });
136
- await Promise.allSettled(controllersToShutdown.map((name) => this.shutdownController(name)));
137
- }
138
- this.controllers.clear();
139
- this.initialized = false;
140
- // #89: shut down the backend after controller teardown. SqlBackend.shutdown
141
- // is where the final persist() happens — skipping it loses buffered writes
142
- // on process exit.
143
- if (this.backend) {
144
- try {
145
- await this.backend.shutdown();
146
- }
147
- catch (error) {
148
- this.emit('backend:shutdown-error', {
149
- error: error instanceof Error ? error.message : String(error),
150
- });
151
- }
152
- this.backend = null;
153
- }
154
- this.emit('shutdown');
155
- }
156
- /**
157
- * Get a controller instance by name.
158
- * Returns null if the controller is not initialized or unavailable.
159
- */
160
- get(name) {
161
- const entry = this.controllers.get(name);
162
- if (entry?.enabled && entry?.instance) {
163
- return entry.instance;
164
- }
165
- return null;
166
- }
167
- /**
168
- * Check if a controller is enabled and initialized.
169
- */
170
- isEnabled(name) {
171
- return this.controllers.get(name)?.enabled ?? false;
172
- }
173
- /**
174
- * Aggregate health check across all controllers.
175
- */
176
- async healthCheck() {
177
- const controllerHealth = [];
178
- for (const [name, entry] of this.controllers) {
179
- controllerHealth.push({
180
- name,
181
- status: entry.enabled
182
- ? 'healthy'
183
- : entry.error
184
- ? 'unavailable'
185
- : 'degraded',
186
- initTimeMs: entry.initTimeMs,
187
- error: entry.error,
188
- });
189
- }
190
- const storageBackendAvailable = this.backend !== null;
191
- const active = controllerHealth.filter((c) => c.status === 'healthy').length;
192
- const unavailable = controllerHealth.filter((c) => c.status === 'unavailable').length;
193
- let status = 'healthy';
194
- if (unavailable > 0 && active === 0) {
195
- status = 'unhealthy';
196
- }
197
- else if (unavailable > 0) {
198
- status = 'degraded';
199
- }
200
- return {
201
- status,
202
- controllers: controllerHealth,
203
- storageBackendAvailable,
204
- initTimeMs: this.initTimeMs,
205
- timestamp: Date.now(),
206
- activeControllers: active,
207
- totalControllers: controllerHealth.length,
208
- };
209
- }
210
- /**
211
- * Get the underlying memory backend instance.
212
- */
213
- /**
214
- * Get the memory backend.
215
- */
216
- getBackend() {
217
- return this.backend;
218
- }
219
- /**
220
- * Check if the registry is initialized.
221
- */
222
- isInitialized() {
223
- return this.initialized;
224
- }
225
- /**
226
- * Get the number of active (successfully initialized) controllers.
227
- */
228
- getActiveCount() {
229
- let count = 0;
230
- for (const entry of this.controllers.values()) {
231
- if (entry.enabled)
232
- count++;
233
- }
234
- return count;
235
- }
236
- /**
237
- * List all registered controller names and their status.
238
- */
239
- listControllers() {
240
- return Array.from(this.controllers.entries()).map(([name, entry]) => ({
241
- name,
242
- enabled: entry.enabled,
243
- level: entry.level,
244
- }));
245
- }
246
- // ===== Private Methods =====
247
- /**
248
- * Check whether a controller should be initialized based on config.
249
- */
250
- isControllerEnabled(name) {
251
- // Explicit enable/disable from config
252
- if (this.config.controllers) {
253
- const explicit = this.config.controllers[name];
254
- if (explicit !== undefined)
255
- return explicit;
256
- }
257
- // Default behavior: enable based on category
258
- switch (name) {
259
- // Core intelligence — enabled by default
260
- case 'reasoningBank':
261
- case 'learningBridge':
262
- case 'tieredCache':
263
- case 'hierarchicalMemory':
264
- return true;
265
- // Security — enabled if the memory backend is available
266
- case 'mutationGuard':
267
- case 'attestationLog':
268
- case 'vectorBackend':
269
- case 'guardedVectorBackend':
270
- return this.backend !== null;
271
- // Memory-internal controllers — only if backend available
272
- case 'skills':
273
- case 'reflexion':
274
- case 'causalGraph':
275
- case 'causalRecall':
276
- case 'learningSystem':
277
- case 'explainableRecall':
278
- case 'nightlyLearner':
279
- case 'graphTransformer':
280
- case 'graphAdapter':
281
- case 'gnnService':
282
- case 'memoryConsolidation':
283
- case 'batchOperations':
284
- case 'contextSynthesizer':
285
- case 'sonaOptimizer':
286
- case 'mmrDiversityRanker':
287
- return this.backend !== null;
288
- // SemanticRouter — auto-enable if backend available (exported since alpha.10)
289
- case 'semanticRouter':
290
- return this.backend !== null;
291
- // Optional controllers
292
- case 'hybridSearch':
293
- case 'sonaTrajectory':
294
- case 'federatedSession':
295
- return false; // Require explicit enabling
296
- default:
297
- return false;
298
- }
299
- }
300
- /**
301
- * Initialize a single controller with error isolation.
302
- */
303
- async initController(name, level) {
304
- const startTime = performance.now();
305
- try {
306
- const instance = await this.createController(name);
307
- const initTimeMs = performance.now() - startTime;
308
- this.controllers.set(name, {
309
- name,
310
- instance,
311
- level,
312
- initTimeMs,
313
- enabled: instance !== null,
314
- error: instance === null ? 'Controller returned null' : undefined,
315
- });
316
- if (instance !== null) {
317
- this.emit('controller:initialized', { name, level, initTimeMs });
318
- }
319
- }
320
- catch (error) {
321
- const errorMsg = error instanceof Error ? error.message : String(error);
322
- const initTimeMs = performance.now() - startTime;
323
- this.controllers.set(name, {
324
- name,
325
- instance: null,
326
- level,
327
- initTimeMs,
328
- enabled: false,
329
- error: errorMsg,
330
- });
331
- throw error;
332
- }
333
- }
334
- /**
335
- * Factory method to create a controller instance.
336
- * Handles CLI-layer controllers; internal controllers are
337
- * accessed via backend.getController().
338
- */
339
- async createController(name) {
340
- switch (name) {
341
- // ----- CLI-layer controllers -----
342
- case 'learningBridge':
343
- return null;
344
- case 'tieredCache': {
345
- const config = this.config.memory?.tieredCache || {};
346
- const cache = new TieredCacheManager({
347
- maxSize: config.maxSize || 10000,
348
- ttl: config.ttl || 300000,
349
- lruEnabled: true,
350
- writeThrough: false,
351
- ...config,
352
- });
353
- return cache;
354
- }
355
- case 'hybridSearch':
356
- // BM25 hybrid search — placeholder for future implementation
357
- return null;
358
- case 'semanticRouter':
359
- return null;
360
- case 'sonaTrajectory':
361
- return null;
362
- case 'hierarchicalMemory':
363
- return this.createTieredMemoryStub();
364
- case 'memoryConsolidation':
365
- return this.createConsolidationStub();
366
- case 'federatedSession':
367
- // Federated session — placeholder for Phase 4
368
- return null;
369
- // ----- internal controllers (via getController) -----
370
- // legacy backend.getController() only supports: reflexion/memory, skills, causalGraph/causal
371
- case 'reasoningBank':
372
- case 'skills':
373
- case 'reflexion':
374
- case 'causalGraph':
375
- case 'causalRecall':
376
- case 'learningSystem':
377
- case 'explainableRecall':
378
- case 'nightlyLearner':
379
- case 'graphTransformer':
380
- case 'batchOperations':
381
- case 'contextSynthesizer':
382
- case 'mmrDiversityRanker':
383
- case 'mutationGuard':
384
- case 'attestationLog':
385
- case 'gnnService':
386
- case 'sonaOptimizer':
387
- case 'guardedVectorBackend':
388
- case 'vectorBackend':
389
- case 'graphAdapter':
390
- return null;
391
- default:
392
- return null;
393
- }
394
- }
395
- /**
396
- * Shutdown a single controller gracefully.
397
- */
398
- async shutdownController(name) {
399
- const entry = this.controllers.get(name);
400
- if (!entry?.instance)
401
- return;
402
- try {
403
- const instance = entry.instance;
404
- // Try known shutdown methods (always await for safety)
405
- if (typeof instance.destroy === 'function') {
406
- await instance.destroy();
407
- }
408
- else if (typeof instance.shutdown === 'function') {
409
- await instance.shutdown();
410
- }
411
- else if (typeof instance.close === 'function') {
412
- await instance.close();
413
- }
414
- }
415
- catch {
416
- // Best-effort cleanup
417
- }
418
- entry.enabled = false;
419
- entry.instance = null;
420
- }
421
- /**
422
- * Create an EmbeddingService for controllers that need it.
423
- * Uses the config's embedding generator or creates a minimal local service.
424
- */
425
- createEmbeddingService() {
426
- // If user provided an embedding generator, wrap it
427
- if (this.config.embeddingGenerator) {
428
- return {
429
- embed: async (text) => this.config.embeddingGenerator(text),
430
- embedBatch: async (texts) => Promise.all(texts.map(t => this.config.embeddingGenerator(t))),
431
- initialize: async () => { },
432
- };
433
- }
434
- // Return a minimal stub — HierarchicalMemory falls back to manualSearch without embeddings
435
- return {
436
- embed: async () => new Float32Array(this.config.dimension || 384),
437
- embedBatch: async (texts) => texts.map(() => new Float32Array(this.config.dimension || 384)),
438
- initialize: async () => { },
439
- };
440
- }
441
- /**
442
- * Lightweight in-memory tiered store (fallback when HierarchicalMemory
443
- * cannot be initialized from legacy module).
444
- * Enforces per-tier size limits to prevent unbounded memory growth.
445
- */
446
- createTieredMemoryStub() {
447
- const MAX_PER_TIER = 5000;
448
- const tiers = {
449
- working: new Map(),
450
- episodic: new Map(),
451
- semantic: new Map(),
452
- };
453
- return {
454
- store(key, value, tier = 'working') {
455
- const t = tiers[tier] || tiers.working;
456
- // Evict oldest if at capacity
457
- if (t.size >= MAX_PER_TIER) {
458
- const oldest = t.keys().next().value;
459
- if (oldest !== undefined)
460
- t.delete(oldest);
461
- }
462
- t.set(key, { value: value.substring(0, 100_000), ts: Date.now() });
463
- },
464
- recall(query, topK = 5) {
465
- const safeTopK = Math.min(Math.max(1, topK), 100);
466
- const q = query.toLowerCase().substring(0, 10_000);
467
- const results = [];
468
- for (const [tierName, map] of Object.entries(tiers)) {
469
- for (const [key, entry] of map) {
470
- if (key.toLowerCase().includes(q) || entry.value.toLowerCase().includes(q)) {
471
- results.push({ key, value: entry.value, tier: tierName, ts: entry.ts });
472
- if (results.length >= safeTopK * 3)
473
- break; // Early exit for large stores
474
- }
475
- }
476
- }
477
- return results.sort((a, b) => b.ts - a.ts).slice(0, safeTopK);
478
- },
479
- getTierStats() {
480
- return Object.fromEntries(Object.entries(tiers).map(([name, map]) => [name, map.size]));
481
- },
482
- };
483
- }
484
- /**
485
- * No-op consolidation stub (fallback when MemoryConsolidation
486
- * cannot be initialized from legacy module).
487
- */
488
- createConsolidationStub() {
489
- return {
490
- consolidate() {
491
- return { promoted: 0, pruned: 0, timestamp: Date.now() };
492
- },
493
- };
494
- }
495
- }
496
- export default ControllerRegistry;
497
- //# sourceMappingURL=controller-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller-registry.js","sourceRoot":"","sources":["../src/controller-registry.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- /**
2
- * DatabaseProvider - Platform-aware database selection
3
- *
4
- * Automatically selects best backend:
5
- * - Linux/macOS: better-sqlite3 (native, fast)
6
- * - Windows: sql.js (WASM, universal) when native fails
7
- * - Fallback: JSON file storage
8
- *
9
- * @module v1/memory/database-provider
10
- */
11
- import { IMemoryBackend } from './types.js';
12
- /**
13
- * Available database provider types
14
- */
15
- export type DatabaseProvider = 'better-sqlite3' | 'sql.js' | 'json' | 'auto';
16
- /**
17
- * Database creation options
18
- */
19
- export interface DatabaseOptions {
20
- /** Preferred provider (auto = platform-aware selection) */
21
- provider?: DatabaseProvider;
22
- /** Enable verbose logging */
23
- verbose?: boolean;
24
- /** Enable WAL mode (better-sqlite3 only) */
25
- walMode?: boolean;
26
- /** Enable query optimization */
27
- optimize?: boolean;
28
- /** Default namespace */
29
- defaultNamespace?: string;
30
- /** Maximum entries before auto-cleanup */
31
- maxEntries?: number;
32
- /** Auto-persist interval for sql.js (milliseconds) */
33
- autoPersistInterval?: number;
34
- /** Path to sql.js WASM file */
35
- wasmPath?: string;
36
- }
37
- /**
38
- * Platform detection result
39
- */
40
- interface PlatformInfo {
41
- os: string;
42
- isWindows: boolean;
43
- isMacOS: boolean;
44
- isLinux: boolean;
45
- recommendedProvider: DatabaseProvider;
46
- }
47
- /**
48
- * Create a database instance with platform-aware provider selection
49
- *
50
- * @param path - Database file path (:memory: for in-memory)
51
- * @param options - Database configuration options
52
- * @returns Initialized database backend
53
- *
54
- * @example
55
- * ```typescript
56
- * // Auto-select best provider for platform
57
- * const db = await createDatabase('./data/memory.db');
58
- *
59
- * // Force specific provider
60
- * const db = await createDatabase('./data/memory.db', {
61
- * provider: 'sql.js'
62
- * });
63
- *
64
- * // With custom options
65
- * const db = await createDatabase('./data/memory.db', {
66
- * verbose: true,
67
- * optimize: true,
68
- * autoPersistInterval: 10000
69
- * });
70
- * ```
71
- */
72
- export declare function createDatabase(path: string, options?: DatabaseOptions): Promise<IMemoryBackend>;
73
- /**
74
- * Get platform information
75
- */
76
- export declare function getPlatformInfo(): PlatformInfo;
77
- /**
78
- * Check which providers are available
79
- */
80
- export declare function getAvailableProviders(): Promise<{
81
- betterSqlite3: boolean;
82
- sqlJs: boolean;
83
- json: boolean;
84
- }>;
85
- export {};
86
- //# sourceMappingURL=database-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-provider.d.ts","sourceRoot":"","sources":["../src/database-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,cAAc,EASf,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,gBAAgB,CAAC;CACvC;AAmGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAsEzB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAMD"}