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
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Handle-Aware Vector Store for Semantic Versioning
3
+ *
4
+ * Extends VectorStore to enable semantic similarity detection
5
+ * across MCard versions linked to handles.
6
+ *
7
+ * Key Features:
8
+ * - Link MCards to handles during indexing
9
+ * - Compare versions within a handle by semantic similarity
10
+ * - Filter searches by handle
11
+ * - Sort version history by distance to current or query
12
+ * - Automatic upgrade type classification based on semantic delta
13
+ *
14
+ * @module mcard-js/rag/HandleVectorStore
15
+ */
16
+ import { MCard } from '../model/MCard';
17
+ import { MCardVectorStore, VectorStoreConfig } from '../storage/VectorStore';
18
+ export { VectorStoreConfig } from '../storage/VectorStore';
19
+ /**
20
+ * A version in a handle's history with embedding info.
21
+ */
22
+ export interface HandleVersion {
23
+ hash: string;
24
+ versionOrder: number;
25
+ isCurrent: boolean;
26
+ createdAt: string;
27
+ parentHash?: string;
28
+ embeddingId?: number;
29
+ semanticDelta?: number;
30
+ upgradeType?: string;
31
+ }
32
+ /**
33
+ * Result from version similarity comparison.
34
+ */
35
+ export interface VersionSimilarityResult {
36
+ hash: string;
37
+ versionOrder: number;
38
+ similarityToCurrent: number;
39
+ distanceToCurrent: number;
40
+ similarityToQuery?: number;
41
+ parentHash?: string;
42
+ upgradeType?: string;
43
+ }
44
+ /**
45
+ * Classify upgrade type based on semantic similarity to parent.
46
+ *
47
+ * Thresholds:
48
+ * - >= 0.95: trivial (formatting, typo fixes)
49
+ * - 0.85 - 0.94: minor (small edits, clarifications)
50
+ * - 0.70 - 0.84: major (significant content changes)
51
+ * - < 0.70: breaking (major semantic drift)
52
+ *
53
+ * @param semanticDelta Cosine similarity to parent version
54
+ * @returns Upgrade type string
55
+ */
56
+ export declare function classifyUpgradeType(semanticDelta: number): string;
57
+ /**
58
+ * Calculate Euclidean distance between two vectors.
59
+ */
60
+ export declare function euclideanDistance(a: number[], b: number[]): number;
61
+ /**
62
+ * Extended vector store with handle-aware version similarity.
63
+ *
64
+ * This class implements the Handle-Hash Duality pattern with semantic
65
+ * awareness, enabling:
66
+ *
67
+ * - Version tracking via handles
68
+ * - Semantic similarity detection across versions
69
+ * - Intelligent upgrade classification
70
+ * - Cross-version semantic search
71
+ *
72
+ * Architecture:
73
+ * - Handles remain stable identifiers (Proxy Pattern)
74
+ * - Hashes reference immutable content (Content-Addressing)
75
+ * - Embeddings enable semantic understanding (Vector Search)
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const store = new HandleVectorStore(':memory:');
80
+ *
81
+ * // Index with handle association
82
+ * await store.indexWithHandle(mcard, 'my_document');
83
+ *
84
+ * // Get versions sorted by similarity to current
85
+ * const versions = await store.getVersionsBySimilarity('my_document');
86
+ *
87
+ * // Find versions similar to a query
88
+ * const results = await store.searchHandleVersions('my_document', 'machine learning');
89
+ * ```
90
+ */
91
+ export declare class HandleVectorStore extends MCardVectorStore {
92
+ constructor(dbPath?: string, config?: Partial<VectorStoreConfig>);
93
+ /**
94
+ * Create handle-vector bridge tables for semantic versioning.
95
+ */
96
+ private initHandleTables;
97
+ /**
98
+ * Index an MCard and associate it with a handle.
99
+ *
100
+ * This method:
101
+ * 1. Indexes the MCard content with embeddings (via base class)
102
+ * 2. Links the MCard hash to the handle with version tracking
103
+ * 3. Computes semantic delta from parent version (if exists)
104
+ * 4. Classifies the upgrade type based on similarity
105
+ *
106
+ * @param mcard MCard to index
107
+ * @param handle Handle name to associate with
108
+ * @param isCurrent Whether this is the current version
109
+ * @param chunk Whether to chunk long content
110
+ * @returns Number of vectors indexed (0 if content couldn't be indexed)
111
+ */
112
+ indexWithHandle(mcard: MCard, handle: string, isCurrent?: boolean, chunk?: boolean): Promise<number>;
113
+ /**
114
+ * Get all versions for a handle.
115
+ *
116
+ * @param handle Handle name to query
117
+ * @returns List of HandleVersion objects, ordered by version_order (0 = current)
118
+ */
119
+ getHandleVersions(handle: string): HandleVersion[];
120
+ /**
121
+ * Get all version hashes for a handle.
122
+ *
123
+ * @param handle Handle name to query
124
+ * @returns List of hashes, ordered by version_order
125
+ */
126
+ getHandleVersionHashes(handle: string): string[];
127
+ /**
128
+ * Get the current version for a handle.
129
+ *
130
+ * @param handle Handle name to query
131
+ * @returns HandleVersion for current version, or undefined if handle not found
132
+ */
133
+ getCurrentVersion(handle: string): HandleVersion | undefined;
134
+ /**
135
+ * Get versions for a handle, sorted by similarity to a reference.
136
+ *
137
+ * @param handle Handle name
138
+ * @param referenceHash Hash to compare against (default: current version)
139
+ * @param metric 'cosine' (higher = more similar) or 'euclidean' (lower = more similar)
140
+ * @returns List of VersionSimilarityResult, sorted by similarity
141
+ */
142
+ getVersionsBySimilarity(handle: string, referenceHash?: string, metric?: 'cosine' | 'euclidean'): VersionSimilarityResult[];
143
+ /**
144
+ * Search within a handle's versions by semantic query.
145
+ *
146
+ * Useful for finding which version of a document best matches
147
+ * a specific concept or topic.
148
+ *
149
+ * @param handle Handle name to filter by
150
+ * @param query Search query text
151
+ * @param k Number of results
152
+ * @returns List of VersionSimilarityResult with query similarity scores
153
+ */
154
+ searchHandleVersions(handle: string, query: string, k?: number): Promise<VersionSimilarityResult[]>;
155
+ /**
156
+ * Compute pairwise cosine similarities between all versions of a handle.
157
+ *
158
+ * Optionally caches results in the version_similarity_cache table.
159
+ *
160
+ * @param handle Handle name
161
+ * @param cache Whether to cache computed similarities
162
+ * @returns Map of (hash_a, hash_b) string key to cosine similarity
163
+ */
164
+ computeVersionDistances(handle: string, cache?: boolean): Map<string, number>;
165
+ /**
166
+ * Get embedding vector for a hash.
167
+ *
168
+ * @param hash MCard hash
169
+ * @param chunkIndex Chunk index (default 0 for first/whole chunk)
170
+ * @returns Embedding vector as array of floats, or undefined if not found
171
+ */
172
+ private getEmbedding;
173
+ /**
174
+ * List all handles with indexed versions.
175
+ *
176
+ * @returns List of unique handle names
177
+ */
178
+ listHandles(): string[];
179
+ /**
180
+ * Count versions for a handle.
181
+ *
182
+ * @param handle Handle name
183
+ * @returns Number of versions
184
+ */
185
+ countVersions(handle: string): number;
186
+ /**
187
+ * Delete all version records for a handle.
188
+ *
189
+ * Note: This only removes the handle-version associations,
190
+ * not the underlying MCard embeddings.
191
+ *
192
+ * @param handle Handle name
193
+ * @returns Number of version records deleted
194
+ */
195
+ deleteHandle(handle: string): number;
196
+ /**
197
+ * Get extended vector store information including handle stats.
198
+ */
199
+ getInfo(): Record<string, unknown>;
200
+ }
201
+ //# sourceMappingURL=HandleVectorStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleVectorStore.d.ts","sourceRoot":"","sources":["../../src/rag/HandleVectorStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAmG,MAAM,wBAAwB,CAAC;AAI9K,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAUjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAUlE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;gBAEvC,MAAM,GAAE,MAAmB,EAAE,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAKhF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;;;;;;;;;;;;OAcG;IACG,eAAe,CACjB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,OAAc,EACzB,KAAK,GAAE,OAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IAgHlB;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE;IA8BlD;;;;;OAKG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAKhD;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAsC5D;;;;;;;OAOG;IACH,uBAAuB,CACnB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,GAAE,QAAQ,GAAG,WAAsB,GAC1C,uBAAuB,EAAE;IA6D5B;;;;;;;;;;OAUG;IACG,oBAAoB,CACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,CAAC,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA2CrC;;;;;;;;OAQG;IACH,uBAAuB,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,OAAc,GACtB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAsDtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;;OAIG;IACH,WAAW,IAAI,MAAM,EAAE;IAOvB;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOrC;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAepC;;OAEG;IACM,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAqB9C"}