mcard-js 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +91 -3
  2. package/dist/model/ContentTypeInterpreter.d.ts +16 -0
  3. package/dist/model/ContentTypeInterpreter.d.ts.map +1 -0
  4. package/dist/model/ContentTypeInterpreter.js +78 -0
  5. package/dist/model/ContentTypeInterpreter.js.map +1 -0
  6. package/dist/model/GTime.d.ts +15 -0
  7. package/dist/model/GTime.d.ts.map +1 -1
  8. package/dist/model/GTime.js +44 -2
  9. package/dist/model/GTime.js.map +1 -1
  10. package/dist/model/detectors/BaseDetector.d.ts +26 -0
  11. package/dist/model/detectors/BaseDetector.d.ts.map +1 -0
  12. package/dist/model/detectors/BaseDetector.js +5 -0
  13. package/dist/model/detectors/BaseDetector.js.map +1 -0
  14. package/dist/model/detectors/BinaryDetector.d.ts +12 -0
  15. package/dist/model/detectors/BinaryDetector.d.ts.map +1 -0
  16. package/dist/model/detectors/BinaryDetector.js +82 -0
  17. package/dist/model/detectors/BinaryDetector.js.map +1 -0
  18. package/dist/model/detectors/DataFormatDetectors.d.ts +29 -0
  19. package/dist/model/detectors/DataFormatDetectors.d.ts.map +1 -0
  20. package/dist/model/detectors/DataFormatDetectors.js +223 -0
  21. package/dist/model/detectors/DataFormatDetectors.js.map +1 -0
  22. package/dist/model/detectors/LanguageDetector.d.ts +11 -0
  23. package/dist/model/detectors/LanguageDetector.d.ts.map +1 -0
  24. package/dist/model/detectors/LanguageDetector.js +148 -0
  25. package/dist/model/detectors/LanguageDetector.js.map +1 -0
  26. package/dist/model/detectors/MarkupDetectors.d.ts +22 -0
  27. package/dist/model/detectors/MarkupDetectors.d.ts.map +1 -0
  28. package/dist/model/detectors/MarkupDetectors.js +132 -0
  29. package/dist/model/detectors/MarkupDetectors.js.map +1 -0
  30. package/dist/model/detectors/OBJDetector.d.ts +8 -0
  31. package/dist/model/detectors/OBJDetector.d.ts.map +1 -0
  32. package/dist/model/detectors/OBJDetector.js +48 -0
  33. package/dist/model/detectors/OBJDetector.js.map +1 -0
  34. package/dist/model/detectors/registry.d.ts +13 -0
  35. package/dist/model/detectors/registry.d.ts.map +1 -0
  36. package/dist/model/detectors/registry.js +67 -0
  37. package/dist/model/detectors/registry.js.map +1 -0
  38. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts +20 -0
  39. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts.map +1 -0
  40. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js +42 -0
  41. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js.map +1 -0
  42. package/dist/ptr/node/CLMLoader.d.ts.map +1 -1
  43. package/dist/ptr/node/CLMLoader.js +8 -0
  44. package/dist/ptr/node/CLMLoader.js.map +1 -1
  45. package/dist/ptr/node/CLMRunner.d.ts.map +1 -1
  46. package/dist/ptr/node/CLMRunner.js +4 -3
  47. package/dist/ptr/node/CLMRunner.js.map +1 -1
  48. package/dist/ptr/node/Runtimes.d.ts +7 -0
  49. package/dist/ptr/node/Runtimes.d.ts.map +1 -1
  50. package/dist/ptr/node/Runtimes.js +94 -3
  51. package/dist/ptr/node/Runtimes.js.map +1 -1
  52. package/dist/rag/HandleVectorStore.d.ts +201 -0
  53. package/dist/rag/HandleVectorStore.d.ts.map +1 -0
  54. package/dist/rag/HandleVectorStore.js +527 -0
  55. package/dist/rag/HandleVectorStore.js.map +1 -0
  56. package/dist/rag/PersistentIndexer.d.ts +144 -0
  57. package/dist/rag/PersistentIndexer.d.ts.map +1 -0
  58. package/dist/rag/PersistentIndexer.js +275 -0
  59. package/dist/rag/PersistentIndexer.js.map +1 -0
  60. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts +87 -0
  61. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts.map +1 -0
  62. package/dist/rag/embeddings/VisionEmbeddingProvider.js +164 -0
  63. package/dist/rag/embeddings/VisionEmbeddingProvider.js.map +1 -0
  64. package/dist/rag/graph/community.d.ts +56 -0
  65. package/dist/rag/graph/community.d.ts.map +1 -0
  66. package/dist/rag/graph/community.js +247 -0
  67. package/dist/rag/graph/community.js.map +1 -0
  68. package/dist/rag/graph/extractor.d.ts +99 -0
  69. package/dist/rag/graph/extractor.d.ts.map +1 -0
  70. package/dist/rag/graph/extractor.js +210 -0
  71. package/dist/rag/graph/extractor.js.map +1 -0
  72. package/dist/rag/graph/store.d.ts +176 -0
  73. package/dist/rag/graph/store.d.ts.map +1 -0
  74. package/dist/rag/graph/store.js +504 -0
  75. package/dist/rag/graph/store.js.map +1 -0
  76. package/dist/rag/index.d.ts +19 -0
  77. package/dist/rag/index.d.ts.map +1 -0
  78. package/dist/rag/index.js +24 -0
  79. package/dist/rag/index.js.map +1 -0
  80. package/dist/rag/semanticVersioning.d.ts +187 -0
  81. package/dist/rag/semanticVersioning.d.ts.map +1 -0
  82. package/dist/rag/semanticVersioning.js +253 -0
  83. package/dist/rag/semanticVersioning.js.map +1 -0
  84. package/dist/storage/IndexedDBEngine.d.ts.map +1 -1
  85. package/dist/storage/IndexedDBEngine.js +9 -1
  86. package/dist/storage/IndexedDBEngine.js.map +1 -1
  87. package/dist/storage/SqliteNodeEngine.d.ts.map +1 -1
  88. package/dist/storage/SqliteNodeEngine.js +26 -4
  89. package/dist/storage/SqliteNodeEngine.js.map +1 -1
  90. package/dist/storage/SqliteWasmEngine.d.ts.map +1 -1
  91. package/dist/storage/SqliteWasmEngine.js +9 -1
  92. package/dist/storage/SqliteWasmEngine.js.map +1 -1
  93. package/dist/storage/StorageAdapter.d.ts +2 -0
  94. package/dist/storage/StorageAdapter.d.ts.map +1 -1
  95. package/dist/storage/VectorStore.d.ts +28 -5
  96. package/dist/storage/VectorStore.d.ts.map +1 -1
  97. package/dist/storage/VectorStore.js +110 -50
  98. package/dist/storage/VectorStore.js.map +1 -1
  99. package/dist/storage/schema.d.ts +123 -80
  100. package/dist/storage/schema.d.ts.map +1 -1
  101. package/dist/storage/schema.js +305 -217
  102. package/dist/storage/schema.js.map +1 -1
  103. package/package.json +1 -1
@@ -1,216 +1,308 @@
1
1
  /**
2
- * MCard Database Schema for JavaScript
2
+ * MCard Database Schema Loader for JavaScript/TypeScript
3
3
  *
4
- * Unified schema definitions matching the Python implementation.
5
- * These schemas ensure data compatibility between Python and JavaScript runtimes.
6
- */
7
- // ─────────────────────────────────────────────────────────────────────────────
8
- // Core MCard Storage (matches mcard/model/schema.py)
9
- // ─────────────────────────────────────────────────────────────────────────────
10
- /**
11
- * Card table for content-addressable storage.
4
+ * Singleton implementation that loads all schemas from:
5
+ * schema/mcard_schema.sql (SINGLE SOURCE OF TRUTH)
12
6
  *
13
- * Note: Python uses TEXT for content, but BLOB is more correct for binary data.
14
- * Both are compatible as SQLite treats them similarly for storage.
15
- */
16
- export const CARD_TABLE_SCHEMA = `
17
- CREATE TABLE IF NOT EXISTS card (
18
- hash TEXT PRIMARY KEY,
19
- content BLOB NOT NULL,
20
- g_time TEXT NOT NULL
21
- )
22
- `;
23
- /**
24
- * Handle registry maps UTF-8 strings to card hashes.
25
- * Provides human-readable names for content-addressed data.
26
- */
27
- export const HANDLE_REGISTRY_SCHEMA = `
28
- CREATE TABLE IF NOT EXISTS handle_registry (
29
- handle TEXT PRIMARY KEY,
30
- current_hash TEXT NOT NULL,
31
- created_at TEXT NOT NULL,
32
- updated_at TEXT NOT NULL,
33
- FOREIGN KEY (current_hash) REFERENCES card(hash)
34
- )
35
- `;
36
- /**
37
- * Handle history tracks version changes for each handle.
38
- */
39
- export const HANDLE_HISTORY_SCHEMA = `
40
- CREATE TABLE IF NOT EXISTS handle_history (
41
- id INTEGER PRIMARY KEY AUTOINCREMENT,
42
- handle TEXT NOT NULL,
43
- previous_hash TEXT NOT NULL,
44
- changed_at TEXT NOT NULL,
45
- FOREIGN KEY (handle) REFERENCES handle_registry(handle),
46
- FOREIGN KEY (previous_hash) REFERENCES card(hash)
47
- )
48
- `;
49
- /**
50
- * Index for efficient handle lookups by hash.
7
+ * This ensures schema consistency between Python and JavaScript runtimes.
8
+ *
9
+ * Usage:
10
+ * import { MCardSchema } from './schema';
11
+ *
12
+ * const schema = MCardSchema.getInstance();
13
+ * const cardSchema = schema.getTable('card');
14
+ * schema.initAllTables(db);
15
+ *
16
+ * Architecture Layers:
17
+ * Layer 1: Core Content Storage (card)
18
+ * Layer 2: Handle System (handle_registry, handle_history)
19
+ * Layer 3: Vector Storage (mcard_vector_metadata, mcard_embeddings)
20
+ * Layer 4: Semantic Versioning (handle_version_vectors, similarity_cache)
21
+ * Layer 5: Knowledge Graph (entities, relationships, communities)
22
+ *
23
+ * See: docs/architecture/Handle_Vector_Similarity_Design.md
51
24
  */
52
- export const HANDLE_INDEX_SCHEMA = `
53
- CREATE INDEX IF NOT EXISTS idx_handle_current_hash ON handle_registry(current_hash)
54
- `;
25
+ import { readFileSync, existsSync } from 'fs';
26
+ import { join, resolve } from 'path';
55
27
  // ─────────────────────────────────────────────────────────────────────────────
56
- // Vector Storage (matches mcard/rag/vector/schema.py)
28
+ // Schema File Location
57
29
  // ─────────────────────────────────────────────────────────────────────────────
58
- /**
59
- * Vector metadata table stores information about embeddings.
60
- * Links to MCard content via hash.
61
- */
62
- export const VECTOR_METADATA_SCHEMA = `
63
- CREATE TABLE IF NOT EXISTS mcard_vector_metadata (
64
- id INTEGER PRIMARY KEY AUTOINCREMENT,
65
- hash TEXT NOT NULL,
66
- model_name TEXT NOT NULL,
67
- dimensions INTEGER NOT NULL,
68
- chunk_index INTEGER DEFAULT 0,
69
- chunk_total INTEGER DEFAULT 1,
70
- chunk_text TEXT,
71
- created_at TEXT NOT NULL,
72
- UNIQUE(hash, chunk_index)
73
- )
74
- `;
75
- export const VECTOR_METADATA_INDEX = `
76
- CREATE INDEX IF NOT EXISTS idx_vector_metadata_hash
77
- ON mcard_vector_metadata(hash)
78
- `;
79
- /**
80
- * Embeddings table for fallback storage when sqlite-vec is unavailable.
81
- */
82
- export const VECTOR_EMBEDDINGS_SCHEMA = `
83
- CREATE TABLE IF NOT EXISTS mcard_embeddings (
84
- id INTEGER PRIMARY KEY AUTOINCREMENT,
85
- metadata_id INTEGER NOT NULL REFERENCES mcard_vector_metadata(id),
86
- embedding BLOB NOT NULL,
87
- UNIQUE(metadata_id)
88
- )
89
- `;
90
- /**
91
- * Full-text search table for hybrid retrieval.
92
- * Uses Porter stemming with Unicode support.
93
- */
94
- export const VECTOR_FTS_SCHEMA = `
95
- CREATE VIRTUAL TABLE IF NOT EXISTS mcard_fts USING fts5(
96
- hash,
97
- content,
98
- tokenize='porter unicode61'
99
- )
100
- `;
101
- /**
102
- * Generate sqlite-vec virtual table schema.
103
- */
104
- export function getVec0Schema(dimensions) {
105
- return `
106
- CREATE VIRTUAL TABLE IF NOT EXISTS mcard_vec USING vec0(
107
- metadata_id INTEGER PRIMARY KEY,
108
- embedding float[${dimensions}]
109
- )
110
- `;
30
+ function findSchemaPath() {
31
+ const pathsToTry = [
32
+ join(__dirname, '..', '..', '..', 'schema', 'mcard_schema.sql'),
33
+ join(__dirname, '..', '..', 'schema', 'mcard_schema.sql'),
34
+ join(process.cwd(), 'schema', 'mcard_schema.sql'),
35
+ ];
36
+ for (const path of pathsToTry) {
37
+ const resolved = resolve(path);
38
+ if (existsSync(resolved)) {
39
+ return resolved;
40
+ }
41
+ }
42
+ throw new Error(`Could not find schema/mcard_schema.sql. Tried: ${pathsToTry.join(', ')}`);
111
43
  }
44
+ const TABLE_LAYERS = {
45
+ // Layer 1: Core
46
+ 'card': 'core',
47
+ // Layer 2: Handle System
48
+ 'handle_registry': 'handle',
49
+ 'handle_history': 'handle',
50
+ // Layer 3: Vector Storage
51
+ 'mcard_vector_metadata': 'vector',
52
+ 'mcard_embeddings': 'vector',
53
+ 'mcard_fts': 'vector',
54
+ // Layer 4: Semantic Versioning
55
+ 'handle_version_vectors': 'semantic',
56
+ 'version_similarity_cache': 'semantic',
57
+ // Layer 5: Knowledge Graph
58
+ 'graph_entities': 'graph',
59
+ 'graph_relationships': 'graph',
60
+ 'graph_communities': 'graph',
61
+ 'graph_extractions': 'graph',
62
+ // Metadata
63
+ 'schema_version': 'metadata',
64
+ };
112
65
  // ─────────────────────────────────────────────────────────────────────────────
113
- // Graph Storage (matches mcard/rag/graph/schema.py)
66
+ // Singleton Schema Manager
114
67
  // ─────────────────────────────────────────────────────────────────────────────
115
68
  /**
116
- * Entity table for knowledge graph nodes.
117
- */
118
- export const GRAPH_ENTITY_SCHEMA = `
119
- CREATE TABLE IF NOT EXISTS graph_entities (
120
- id INTEGER PRIMARY KEY AUTOINCREMENT,
121
- name TEXT NOT NULL,
122
- type TEXT NOT NULL,
123
- description TEXT,
124
- source_hash TEXT NOT NULL,
125
- embedding BLOB,
126
- created_at TEXT NOT NULL,
127
- UNIQUE(name, type, source_hash)
128
- )
129
- `;
130
- export const GRAPH_ENTITY_INDEX_NAME = `
131
- CREATE INDEX IF NOT EXISTS idx_entity_name ON graph_entities(name)
132
- `;
133
- export const GRAPH_ENTITY_INDEX_TYPE = `
134
- CREATE INDEX IF NOT EXISTS idx_entity_type ON graph_entities(type)
135
- `;
136
- export const GRAPH_ENTITY_INDEX_SOURCE = `
137
- CREATE INDEX IF NOT EXISTS idx_entity_source ON graph_entities(source_hash)
138
- `;
139
- /**
140
- * Relationship table for knowledge graph edges.
141
- */
142
- export const GRAPH_RELATIONSHIP_SCHEMA = `
143
- CREATE TABLE IF NOT EXISTS graph_relationships (
144
- id INTEGER PRIMARY KEY AUTOINCREMENT,
145
- source_entity_id INTEGER NOT NULL REFERENCES graph_entities(id),
146
- target_entity_id INTEGER NOT NULL REFERENCES graph_entities(id),
147
- relationship TEXT NOT NULL,
148
- description TEXT,
149
- weight REAL DEFAULT 1.0,
150
- source_hash TEXT NOT NULL,
151
- created_at TEXT NOT NULL,
152
- UNIQUE(source_entity_id, target_entity_id, relationship, source_hash)
153
- )
154
- `;
155
- export const GRAPH_RELATIONSHIP_INDEX_SOURCE = `
156
- CREATE INDEX IF NOT EXISTS idx_rel_source ON graph_relationships(source_entity_id)
157
- `;
158
- export const GRAPH_RELATIONSHIP_INDEX_TARGET = `
159
- CREATE INDEX IF NOT EXISTS idx_rel_target ON graph_relationships(target_entity_id)
160
- `;
161
- /**
162
- * Community table for hierarchical summaries (GraphRAG).
163
- */
164
- export const GRAPH_COMMUNITY_SCHEMA = `
165
- CREATE TABLE IF NOT EXISTS graph_communities (
166
- id INTEGER PRIMARY KEY AUTOINCREMENT,
167
- level INTEGER NOT NULL DEFAULT 0,
168
- title TEXT,
169
- summary TEXT NOT NULL,
170
- embedding BLOB,
171
- member_entity_ids TEXT,
172
- parent_community_id INTEGER REFERENCES graph_communities(id),
173
- created_at TEXT NOT NULL
174
- )
175
- `;
176
- export const GRAPH_COMMUNITY_INDEX_LEVEL = `
177
- CREATE INDEX IF NOT EXISTS idx_community_level ON graph_communities(level)
178
- `;
179
- /**
180
- * Extraction tracking to avoid re-processing documents.
69
+ * Singleton class for MCard database schema management.
70
+ *
71
+ * Ensures all schema definitions come from the single source of truth:
72
+ * schema/mcard_schema.sql
181
73
  */
182
- export const GRAPH_EXTRACTION_SCHEMA = `
183
- CREATE TABLE IF NOT EXISTS graph_extractions (
184
- hash TEXT PRIMARY KEY,
185
- entity_count INTEGER DEFAULT 0,
186
- relationship_count INTEGER DEFAULT 0,
187
- extracted_at TEXT NOT NULL
188
- )
189
- `;
74
+ export class MCardSchema {
75
+ static instance = null;
76
+ schemaPath = '';
77
+ rawSql = '';
78
+ statements = [];
79
+ tables = new Map();
80
+ indexes = new Map();
81
+ loaded = false;
82
+ constructor() { }
83
+ /**
84
+ * Get the singleton instance.
85
+ */
86
+ static getInstance() {
87
+ if (!MCardSchema.instance) {
88
+ MCardSchema.instance = new MCardSchema();
89
+ MCardSchema.instance.load();
90
+ }
91
+ return MCardSchema.instance;
92
+ }
93
+ /**
94
+ * Reset the singleton (for testing).
95
+ */
96
+ static resetInstance() {
97
+ MCardSchema.instance = null;
98
+ }
99
+ load() {
100
+ if (this.loaded)
101
+ return;
102
+ this.schemaPath = findSchemaPath();
103
+ this.rawSql = readFileSync(this.schemaPath, 'utf-8');
104
+ this.statements = this.parseStatements(this.rawSql);
105
+ for (const stmt of this.statements) {
106
+ const name = this.extractName(stmt);
107
+ if (name) {
108
+ const upper = stmt.toUpperCase();
109
+ if (upper.includes('CREATE TABLE') || upper.includes('CREATE VIRTUAL TABLE')) {
110
+ this.tables.set(name.toLowerCase(), stmt);
111
+ }
112
+ else if (upper.includes('CREATE INDEX')) {
113
+ this.indexes.set(name.toLowerCase(), stmt);
114
+ }
115
+ }
116
+ }
117
+ this.loaded = true;
118
+ }
119
+ parseStatements(sql) {
120
+ // Remove block comments
121
+ sql = sql.replace(/\/\*[\s\S]*?\*\//g, '');
122
+ const statements = [];
123
+ let current = [];
124
+ for (const line of sql.split('\n')) {
125
+ // Skip line comments
126
+ const stripped = line.split('--')[0].trim();
127
+ if (!stripped)
128
+ continue;
129
+ current.push(stripped);
130
+ if (stripped.endsWith(';')) {
131
+ const statement = current.join(' ');
132
+ // Skip INSERT statements
133
+ if (!statement.trim().toUpperCase().startsWith('INSERT')) {
134
+ statements.push(statement);
135
+ }
136
+ current = [];
137
+ }
138
+ }
139
+ return statements.filter(s => s.trim());
140
+ }
141
+ extractName(statement) {
142
+ // Handle CREATE TABLE
143
+ let match = statement.match(/CREATE\s+(?:VIRTUAL\s+)?TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(\w+)/i);
144
+ if (match)
145
+ return match[1];
146
+ // Handle CREATE INDEX
147
+ match = statement.match(/CREATE\s+INDEX\s+(?:IF\s+NOT\s+EXISTS\s+)?(\w+)/i);
148
+ if (match)
149
+ return match[1];
150
+ return null;
151
+ }
152
+ // ─────────────────────────────────────────────────────────────────────────
153
+ // Schema Access
154
+ // ─────────────────────────────────────────────────────────────────────────
155
+ getSchemaPath() {
156
+ return this.schemaPath;
157
+ }
158
+ getTable(tableName) {
159
+ return this.tables.get(tableName.toLowerCase());
160
+ }
161
+ getIndex(indexName) {
162
+ return this.indexes.get(indexName.toLowerCase());
163
+ }
164
+ getAllTables() {
165
+ return new Map(this.tables);
166
+ }
167
+ getAllIndexes() {
168
+ return new Map(this.indexes);
169
+ }
170
+ getAllStatements() {
171
+ return [...this.statements];
172
+ }
173
+ getTablesByLayer(layer) {
174
+ return Object.entries(TABLE_LAYERS)
175
+ .filter(([_, l]) => l === layer)
176
+ .map(([name, _]) => name);
177
+ }
178
+ getLayerStatements(layer) {
179
+ const statements = [];
180
+ const tables = this.getTablesByLayer(layer);
181
+ // Add tables
182
+ for (const table of tables) {
183
+ const stmt = this.getTable(table);
184
+ if (stmt)
185
+ statements.push(stmt);
186
+ }
187
+ // Add indexes for these tables
188
+ for (const [_, stmt] of this.indexes) {
189
+ const match = stmt.match(/ON\s+(\w+)/i);
190
+ if (match && tables.includes(match[1].toLowerCase())) {
191
+ statements.push(stmt);
192
+ }
193
+ }
194
+ return statements;
195
+ }
196
+ // ─────────────────────────────────────────────────────────────────────────
197
+ // Database Initialization
198
+ // ─────────────────────────────────────────────────────────────────────────
199
+ execStatements(db, statements) {
200
+ for (const stmt of statements) {
201
+ db.exec(stmt);
202
+ }
203
+ return statements.length;
204
+ }
205
+ initLayer(db, layer) {
206
+ return this.execStatements(db, this.getLayerStatements(layer));
207
+ }
208
+ initCoreTables(db) {
209
+ return this.initLayer(db, 'core');
210
+ }
211
+ initHandleTables(db) {
212
+ return this.initLayer(db, 'handle');
213
+ }
214
+ initVectorTables(db, enableFts = true) {
215
+ const statements = this.getLayerStatements('vector')
216
+ .filter(s => enableFts || !s.toLowerCase().includes('fts'));
217
+ return this.execStatements(db, statements);
218
+ }
219
+ initSemanticTables(db) {
220
+ return this.initLayer(db, 'semantic');
221
+ }
222
+ initGraphTables(db) {
223
+ return this.initLayer(db, 'graph');
224
+ }
225
+ initAllTables(db, options = {}) {
226
+ const { enableFts = true, enableGraph = true, enableSemantic = true } = options;
227
+ let count = 0;
228
+ count += this.initCoreTables(db);
229
+ count += this.initHandleTables(db);
230
+ count += this.initVectorTables(db, enableFts);
231
+ if (enableSemantic) {
232
+ count += this.initSemanticTables(db);
233
+ }
234
+ if (enableGraph) {
235
+ count += this.initGraphTables(db);
236
+ }
237
+ return count;
238
+ }
239
+ initVec0Table(db, dimensions) {
240
+ db.exec(`
241
+ CREATE VIRTUAL TABLE IF NOT EXISTS mcard_vec USING vec0(
242
+ metadata_id INTEGER PRIMARY KEY,
243
+ embedding float[${dimensions}]
244
+ )
245
+ `);
246
+ }
247
+ }
190
248
  // ─────────────────────────────────────────────────────────────────────────────
191
- // Schema Collections (for bulk initialization)
249
+ // Convenience Exports (Backward Compatibility)
192
250
  // ─────────────────────────────────────────────────────────────────────────────
193
- /**
194
- * Core schemas for basic MCard storage.
195
- */
251
+ // These are lazy-loaded from the singleton
252
+ let _cachedSchemas = {};
253
+ function getSchemaInstance() {
254
+ return MCardSchema.getInstance();
255
+ }
256
+ // Core schemas
257
+ export const CARD_TABLE_SCHEMA = getSchemaInstance().getTable('card') || '';
258
+ export const HANDLE_REGISTRY_SCHEMA = getSchemaInstance().getTable('handle_registry') || '';
259
+ export const HANDLE_HISTORY_SCHEMA = getSchemaInstance().getTable('handle_history') || '';
260
+ export const HANDLE_INDEX_SCHEMA = getSchemaInstance().getIndex('idx_handle_current_hash') || '';
261
+ // Vector schemas
262
+ export const VECTOR_METADATA_SCHEMA = getSchemaInstance().getTable('mcard_vector_metadata') || '';
263
+ export const VECTOR_METADATA_INDEX = getSchemaInstance().getIndex('idx_vector_metadata_hash') || '';
264
+ export const VECTOR_EMBEDDINGS_SCHEMA = getSchemaInstance().getTable('mcard_embeddings') || '';
265
+ export const VECTOR_FTS_SCHEMA = getSchemaInstance().getTable('mcard_fts') || '';
266
+ // Semantic versioning schemas
267
+ export const HANDLE_VERSION_VECTORS_SCHEMA = getSchemaInstance().getTable('handle_version_vectors') || '';
268
+ export const HANDLE_VERSION_VECTORS_INDEXES = [
269
+ getSchemaInstance().getIndex('idx_hvv_handle'),
270
+ getSchemaInstance().getIndex('idx_hvv_hash'),
271
+ getSchemaInstance().getIndex('idx_hvv_current'),
272
+ getSchemaInstance().getIndex('idx_hvv_parent'),
273
+ ].filter(Boolean).join('; ');
274
+ export const VERSION_SIMILARITY_CACHE_SCHEMA = getSchemaInstance().getTable('version_similarity_cache') || '';
275
+ export const VERSION_SIMILARITY_CACHE_INDEX = getSchemaInstance().getIndex('idx_vsc_handle') || '';
276
+ // Graph schemas
277
+ export const GRAPH_ENTITY_SCHEMA = getSchemaInstance().getTable('graph_entities') || '';
278
+ export const GRAPH_ENTITY_INDEX_NAME = getSchemaInstance().getIndex('idx_entity_name') || '';
279
+ export const GRAPH_ENTITY_INDEX_TYPE = getSchemaInstance().getIndex('idx_entity_type') || '';
280
+ export const GRAPH_ENTITY_INDEX_SOURCE = getSchemaInstance().getIndex('idx_entity_source') || '';
281
+ export const GRAPH_RELATIONSHIP_SCHEMA = getSchemaInstance().getTable('graph_relationships') || '';
282
+ export const GRAPH_RELATIONSHIP_INDEX_SOURCE = getSchemaInstance().getIndex('idx_rel_source') || '';
283
+ export const GRAPH_RELATIONSHIP_INDEX_TARGET = getSchemaInstance().getIndex('idx_rel_target') || '';
284
+ export const GRAPH_COMMUNITY_SCHEMA = getSchemaInstance().getTable('graph_communities') || '';
285
+ export const GRAPH_COMMUNITY_INDEX_LEVEL = getSchemaInstance().getIndex('idx_community_level') || '';
286
+ export const GRAPH_EXTRACTION_SCHEMA = getSchemaInstance().getTable('graph_extractions') || '';
287
+ // Schema collections
196
288
  export const CORE_SCHEMAS = {
197
289
  card: CARD_TABLE_SCHEMA,
198
290
  handleRegistry: HANDLE_REGISTRY_SCHEMA,
199
291
  handleHistory: HANDLE_HISTORY_SCHEMA,
200
292
  handleIndex: HANDLE_INDEX_SCHEMA,
201
293
  };
202
- /**
203
- * Vector storage schemas for semantic search.
204
- */
205
294
  export const VECTOR_SCHEMAS = {
206
295
  metadata: VECTOR_METADATA_SCHEMA,
207
296
  metadataIndex: VECTOR_METADATA_INDEX,
208
297
  embeddings: VECTOR_EMBEDDINGS_SCHEMA,
209
298
  fts: VECTOR_FTS_SCHEMA,
210
299
  };
211
- /**
212
- * Graph storage schemas for knowledge graphs.
213
- */
300
+ export const SEMANTIC_SCHEMAS = {
301
+ handleVersionVectors: HANDLE_VERSION_VECTORS_SCHEMA,
302
+ handleVersionVectorsIndexes: HANDLE_VERSION_VECTORS_INDEXES,
303
+ similarityCache: VERSION_SIMILARITY_CACHE_SCHEMA,
304
+ similarityCacheIndex: VERSION_SIMILARITY_CACHE_INDEX,
305
+ };
214
306
  export const GRAPH_SCHEMAS = {
215
307
  entities: GRAPH_ENTITY_SCHEMA,
216
308
  entityIndexName: GRAPH_ENTITY_INDEX_NAME,
@@ -223,39 +315,35 @@ export const GRAPH_SCHEMAS = {
223
315
  communityIndexLevel: GRAPH_COMMUNITY_INDEX_LEVEL,
224
316
  extractions: GRAPH_EXTRACTION_SCHEMA,
225
317
  };
226
- /**
227
- * Initialize all core schemas on a database.
228
- */
318
+ // ─────────────────────────────────────────────────────────────────────────────
319
+ // Initialization Functions (use singleton internally)
320
+ // ─────────────────────────────────────────────────────────────────────────────
229
321
  export function initCoreSchemas(db) {
230
- db.exec(CORE_SCHEMAS.card);
231
- db.exec(CORE_SCHEMAS.handleRegistry);
232
- db.exec(CORE_SCHEMAS.handleHistory);
233
- db.exec(CORE_SCHEMAS.handleIndex);
322
+ const schema = MCardSchema.getInstance();
323
+ // Initialize both core (card) and handle tables (handle_registry, handle_history)
324
+ // because they are fundamental to MCard operation
325
+ schema.initCoreTables(db);
326
+ schema.initHandleTables(db);
234
327
  }
235
- /**
236
- * Initialize vector schemas on a database.
237
- */
238
328
  export function initVectorSchemas(db, enableFts = true) {
239
- db.exec(VECTOR_SCHEMAS.metadata);
240
- db.exec(VECTOR_SCHEMAS.metadataIndex);
241
- db.exec(VECTOR_SCHEMAS.embeddings);
242
- if (enableFts) {
243
- db.exec(VECTOR_SCHEMAS.fts);
244
- }
329
+ MCardSchema.getInstance().initVectorTables(db, enableFts);
330
+ }
331
+ export function initSemanticSchemas(db) {
332
+ MCardSchema.getInstance().initSemanticTables(db);
245
333
  }
246
- /**
247
- * Initialize graph schemas on a database.
248
- */
249
334
  export function initGraphSchemas(db) {
250
- db.exec(GRAPH_SCHEMAS.entities);
251
- db.exec(GRAPH_SCHEMAS.entityIndexName);
252
- db.exec(GRAPH_SCHEMAS.entityIndexType);
253
- db.exec(GRAPH_SCHEMAS.entityIndexSource);
254
- db.exec(GRAPH_SCHEMAS.relationships);
255
- db.exec(GRAPH_SCHEMAS.relIndexSource);
256
- db.exec(GRAPH_SCHEMAS.relIndexTarget);
257
- db.exec(GRAPH_SCHEMAS.communities);
258
- db.exec(GRAPH_SCHEMAS.communityIndexLevel);
259
- db.exec(GRAPH_SCHEMAS.extractions);
335
+ MCardSchema.getInstance().initGraphTables(db);
336
+ }
337
+ export function initAllSchemas(db, options = {}) {
338
+ MCardSchema.getInstance().initAllTables(db, options);
339
+ }
340
+ // Dynamic schema generator (dimensions can't come from SQL file)
341
+ export function getVec0Schema(dimensions) {
342
+ return `
343
+ CREATE VIRTUAL TABLE IF NOT EXISTS mcard_vec USING vec0(
344
+ metadata_id INTEGER PRIMARY KEY,
345
+ embedding float[${dimensions}]
346
+ )
347
+ `;
260
348
  }
261
349
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;CAMhC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;CAQrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;CASpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;CAElC,CAAC;AAEF,gFAAgF;AAChF,sDAAsD;AACtD,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;CAYrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;CAGpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;CAOvC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;CAMhC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC5C,OAAO;;;sBAGW,UAAU;;CAE/B,CAAC;AACF,CAAC;AAED,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;CAWlC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;CAEtC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;CAEtC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;CAExC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;CAYxC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG;;CAE9C,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG;;CAE9C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;CAWrC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;CAE1C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AAEF,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,IAAI,EAAE,iBAAiB;IACvB,cAAc,EAAE,sBAAsB;IACtC,aAAa,EAAE,qBAAqB;IACpC,WAAW,EAAE,mBAAmB;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,QAAQ,EAAE,sBAAsB;IAChC,aAAa,EAAE,qBAAqB;IACpC,UAAU,EAAE,wBAAwB;IACpC,GAAG,EAAE,iBAAiB;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE,uBAAuB;IACxC,iBAAiB,EAAE,yBAAyB;IAC5C,aAAa,EAAE,yBAAyB;IACxC,cAAc,EAAE,+BAA+B;IAC/C,cAAc,EAAE,+BAA+B;IAC/C,WAAW,EAAE,sBAAsB;IACnC,mBAAmB,EAAE,2BAA2B;IAChD,WAAW,EAAE,uBAAuB;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAmC;IAC/D,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAmC,EAAE,YAAqB,IAAI;IAC5F,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACZ,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAmC;IAChE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACnC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAErC,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,SAAS,cAAc;IACnB,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,kBAAkB,CAAC;KACpD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CACX,kDAAkD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;AACN,CAAC;AAQD,MAAM,YAAY,GAAgC;IAC9C,gBAAgB;IAChB,MAAM,EAAE,MAAM;IACd,yBAAyB;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,gBAAgB,EAAE,QAAQ;IAC1B,0BAA0B;IAC1B,uBAAuB,EAAE,QAAQ;IACjC,kBAAkB,EAAE,QAAQ;IAC5B,WAAW,EAAE,QAAQ;IACrB,+BAA+B;IAC/B,wBAAwB,EAAE,UAAU;IACpC,0BAA0B,EAAE,UAAU;IACtC,2BAA2B;IAC3B,gBAAgB,EAAE,OAAO;IACzB,qBAAqB,EAAE,OAAO;IAC9B,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,WAAW;IACX,gBAAgB,EAAE,UAAU;CAC/B,CAAC;AAEF,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACZ,MAAM,CAAC,QAAQ,GAAuB,IAAI,CAAC;IAE3C,UAAU,GAAW,EAAE,CAAC;IACxB,MAAM,GAAW,EAAE,CAAC;IACpB,UAAU,GAAa,EAAE,CAAC;IAC1B,MAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;IACxC,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,MAAM,GAAY,KAAK,CAAC;IAEhC,gBAAwB,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,WAAW;QACd,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;YACzC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAChB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChC,CAAC;IAEO,IAAI;QACR,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;oBAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,GAAW;QAC/B,wBAAwB;QACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,OAAO,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpC,yBAAyB;gBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,OAAO,GAAG,EAAE,CAAC;YACjB,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,WAAW,CAAC,SAAiB;QACjC,sBAAsB;QACtB,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAC/F,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,sBAAsB;QACtB,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC5E,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,gBAAgB;IAChB,4EAA4E;IAE5E,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,gBAAgB,CAAC,KAAkB;QAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,KAAkB;QACjC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE5C,aAAa;QACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,IAAI;gBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACxC,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,4EAA4E;IAC5E,0BAA0B;IAC1B,4EAA4E;IAEpE,cAAc,CAAC,EAAmC,EAAE,UAAoB;QAC5E,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,EAAmC,EAAE,KAAkB;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,cAAc,CAAC,EAAmC;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,EAAmC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CAAC,EAAmC,EAAE,YAAqB,IAAI;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB,CAAC,EAAmC;QAClD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe,CAAC,EAAmC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CACT,EAAmC,EACnC,UAII,EAAE;QAEN,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAEhF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9C,IAAI,cAAc,EAAE,CAAC;YACjB,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,EAAmC,EAAE,UAAkB;QACjE,EAAE,CAAC,IAAI,CAAC;;;kCAGkB,UAAU;;SAEnC,CAAC,CAAC;IACP,CAAC;;AAGL,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAEhF,2CAA2C;AAE3C,IAAI,cAAc,GAiBd,EAAE,CAAC;AAEP,SAAS,iBAAiB;IACtB,OAAO,WAAW,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC;AAED,eAAe;AACf,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AAEjG,iBAAiB;AACjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;AAClG,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAC/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAEjF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AAC1G,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC1C,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC9C,iBAAiB,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC5C,iBAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC/C,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;AAC9G,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAEnG,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACxF,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC7F,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AACjG,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;AACnG,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAC9F,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;AACrG,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAE/F,qBAAqB;AACrB,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,IAAI,EAAE,iBAAiB;IACvB,cAAc,EAAE,sBAAsB;IACtC,aAAa,EAAE,qBAAqB;IACpC,WAAW,EAAE,mBAAmB;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,QAAQ,EAAE,sBAAsB;IAChC,aAAa,EAAE,qBAAqB;IACpC,UAAU,EAAE,wBAAwB;IACpC,GAAG,EAAE,iBAAiB;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,oBAAoB,EAAE,6BAA6B;IACnD,2BAA2B,EAAE,8BAA8B;IAC3D,eAAe,EAAE,+BAA+B;IAChD,oBAAoB,EAAE,8BAA8B;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE,uBAAuB;IACxC,iBAAiB,EAAE,yBAAyB;IAC5C,aAAa,EAAE,yBAAyB;IACxC,cAAc,EAAE,+BAA+B;IAC/C,cAAc,EAAE,+BAA+B;IAC/C,WAAW,EAAE,sBAAsB;IACnC,mBAAmB,EAAE,2BAA2B;IAChD,WAAW,EAAE,uBAAuB;CACvC,CAAC;AAEF,gFAAgF;AAChF,sDAAsD;AACtD,gFAAgF;AAEhF,MAAM,UAAU,eAAe,CAAC,EAAmC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACzC,kFAAkF;IAClF,kDAAkD;IAClD,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAmC,EAAE,YAAqB,IAAI;IAC5F,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAmC;IACnE,WAAW,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAmC;IAChE,WAAW,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,EAAmC,EACnC,UAII,EAAE;IAEN,WAAW,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC5C,OAAO;;;sBAGW,UAAU;;CAE/B,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcard-js",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "MCard - Content-addressable storage with cryptographic hashing, handle resolution, and vector search for Node.js and browsers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",