mcard-js 2.1.12 → 2.1.13

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 (362) hide show
  1. package/README.md +14 -0
  2. package/dist/hash/HashValidator.d.ts +14 -0
  3. package/dist/hash/HashValidator.d.ts.map +1 -0
  4. package/dist/hash/HashValidator.js +57 -0
  5. package/dist/hash/HashValidator.js.map +1 -0
  6. package/dist/index.d.ts +29 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +38 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/model/CardCollection.d.ts +92 -0
  11. package/dist/model/CardCollection.d.ts.map +1 -0
  12. package/dist/model/CardCollection.js +217 -0
  13. package/dist/model/CardCollection.js.map +1 -0
  14. package/dist/model/ContentTypeInterpreter.d.ts +23 -0
  15. package/dist/model/ContentTypeInterpreter.d.ts.map +1 -0
  16. package/dist/model/ContentTypeInterpreter.js +140 -0
  17. package/dist/model/ContentTypeInterpreter.js.map +1 -0
  18. package/dist/model/EventProducer.d.ts +10 -0
  19. package/dist/model/EventProducer.d.ts.map +1 -0
  20. package/dist/model/EventProducer.js +46 -0
  21. package/dist/model/EventProducer.js.map +1 -0
  22. package/dist/model/GTime.d.ts +44 -0
  23. package/dist/model/GTime.d.ts.map +1 -0
  24. package/dist/model/GTime.js +91 -0
  25. package/dist/model/GTime.js.map +1 -0
  26. package/dist/model/Handle.d.ts +37 -0
  27. package/dist/model/Handle.d.ts.map +1 -0
  28. package/dist/model/Handle.js +90 -0
  29. package/dist/model/Handle.js.map +1 -0
  30. package/dist/model/MCard.d.ts +43 -0
  31. package/dist/model/MCard.d.ts.map +1 -0
  32. package/dist/model/MCard.js +76 -0
  33. package/dist/model/MCard.js.map +1 -0
  34. package/dist/model/constants.d.ts +45 -0
  35. package/dist/model/constants.d.ts.map +1 -0
  36. package/dist/model/constants.js +27 -0
  37. package/dist/model/constants.js.map +1 -0
  38. package/dist/model/detectors/BaseDetector.d.ts +26 -0
  39. package/dist/model/detectors/BaseDetector.d.ts.map +1 -0
  40. package/dist/model/detectors/BaseDetector.js +5 -0
  41. package/dist/model/detectors/BaseDetector.js.map +1 -0
  42. package/dist/model/detectors/BinaryDetector.d.ts +12 -0
  43. package/dist/model/detectors/BinaryDetector.d.ts.map +1 -0
  44. package/dist/model/detectors/BinaryDetector.js +82 -0
  45. package/dist/model/detectors/BinaryDetector.js.map +1 -0
  46. package/dist/model/detectors/ContentTypeInterpreter.d.ts +11 -0
  47. package/dist/model/detectors/ContentTypeInterpreter.d.ts.map +1 -0
  48. package/dist/model/detectors/ContentTypeInterpreter.js +51 -0
  49. package/dist/model/detectors/ContentTypeInterpreter.js.map +1 -0
  50. package/dist/model/detectors/DataFormatDetectors.d.ts +29 -0
  51. package/dist/model/detectors/DataFormatDetectors.d.ts.map +1 -0
  52. package/dist/model/detectors/DataFormatDetectors.js +223 -0
  53. package/dist/model/detectors/DataFormatDetectors.js.map +1 -0
  54. package/dist/model/detectors/LanguageDetector.d.ts +11 -0
  55. package/dist/model/detectors/LanguageDetector.d.ts.map +1 -0
  56. package/dist/model/detectors/LanguageDetector.js +148 -0
  57. package/dist/model/detectors/LanguageDetector.js.map +1 -0
  58. package/dist/model/detectors/MarkupDetectors.d.ts +22 -0
  59. package/dist/model/detectors/MarkupDetectors.d.ts.map +1 -0
  60. package/dist/model/detectors/MarkupDetectors.js +132 -0
  61. package/dist/model/detectors/MarkupDetectors.js.map +1 -0
  62. package/dist/model/detectors/OBJDetector.d.ts +8 -0
  63. package/dist/model/detectors/OBJDetector.d.ts.map +1 -0
  64. package/dist/model/detectors/OBJDetector.js +48 -0
  65. package/dist/model/detectors/OBJDetector.js.map +1 -0
  66. package/dist/model/detectors/registry.d.ts +13 -0
  67. package/dist/model/detectors/registry.d.ts.map +1 -0
  68. package/dist/model/detectors/registry.js +67 -0
  69. package/dist/model/detectors/registry.js.map +1 -0
  70. package/dist/monads/Either.d.ts +51 -0
  71. package/dist/monads/Either.d.ts.map +1 -0
  72. package/dist/monads/Either.js +82 -0
  73. package/dist/monads/Either.js.map +1 -0
  74. package/dist/monads/IO.d.ts +38 -0
  75. package/dist/monads/IO.d.ts.map +1 -0
  76. package/dist/monads/IO.js +66 -0
  77. package/dist/monads/IO.js.map +1 -0
  78. package/dist/monads/Maybe.d.ts +45 -0
  79. package/dist/monads/Maybe.d.ts.map +1 -0
  80. package/dist/monads/Maybe.js +73 -0
  81. package/dist/monads/Maybe.js.map +1 -0
  82. package/dist/monads/Reader.d.ts +29 -0
  83. package/dist/monads/Reader.d.ts.map +1 -0
  84. package/dist/monads/Reader.js +44 -0
  85. package/dist/monads/Reader.js.map +1 -0
  86. package/dist/monads/State.d.ts +33 -0
  87. package/dist/monads/State.d.ts.map +1 -0
  88. package/dist/monads/State.js +50 -0
  89. package/dist/monads/State.js.map +1 -0
  90. package/dist/monads/Writer.d.ts +29 -0
  91. package/dist/monads/Writer.d.ts.map +1 -0
  92. package/dist/monads/Writer.js +46 -0
  93. package/dist/monads/Writer.js.map +1 -0
  94. package/dist/ptr/FaroSidecar.d.ts +56 -0
  95. package/dist/ptr/FaroSidecar.d.ts.map +1 -0
  96. package/dist/ptr/FaroSidecar.js +102 -0
  97. package/dist/ptr/FaroSidecar.js.map +1 -0
  98. package/dist/ptr/LensProtocol.d.ts +84 -0
  99. package/dist/ptr/LensProtocol.d.ts.map +1 -0
  100. package/dist/ptr/LensProtocol.js +98 -0
  101. package/dist/ptr/LensProtocol.js.map +1 -0
  102. package/dist/ptr/SandboxWorker.d.ts +54 -0
  103. package/dist/ptr/SandboxWorker.d.ts.map +1 -0
  104. package/dist/ptr/SandboxWorker.js +172 -0
  105. package/dist/ptr/SandboxWorker.js.map +1 -0
  106. package/dist/ptr/common_types.d.ts +39 -0
  107. package/dist/ptr/common_types.d.ts.map +1 -0
  108. package/dist/ptr/common_types.js +12 -0
  109. package/dist/ptr/common_types.js.map +1 -0
  110. package/dist/ptr/lambda/AlphaConversion.d.ts +42 -0
  111. package/dist/ptr/lambda/AlphaConversion.d.ts.map +1 -0
  112. package/dist/ptr/lambda/AlphaConversion.js +244 -0
  113. package/dist/ptr/lambda/AlphaConversion.js.map +1 -0
  114. package/dist/ptr/lambda/BetaReduction.d.ts +73 -0
  115. package/dist/ptr/lambda/BetaReduction.d.ts.map +1 -0
  116. package/dist/ptr/lambda/BetaReduction.js +322 -0
  117. package/dist/ptr/lambda/BetaReduction.js.map +1 -0
  118. package/dist/ptr/lambda/EtaConversion.d.ts +65 -0
  119. package/dist/ptr/lambda/EtaConversion.d.ts.map +1 -0
  120. package/dist/ptr/lambda/EtaConversion.js +228 -0
  121. package/dist/ptr/lambda/EtaConversion.js.map +1 -0
  122. package/dist/ptr/lambda/FreeVariables.d.ts +44 -0
  123. package/dist/ptr/lambda/FreeVariables.d.ts.map +1 -0
  124. package/dist/ptr/lambda/FreeVariables.js +207 -0
  125. package/dist/ptr/lambda/FreeVariables.js.map +1 -0
  126. package/dist/ptr/lambda/LambdaRuntime.d.ts +80 -0
  127. package/dist/ptr/lambda/LambdaRuntime.d.ts.map +1 -0
  128. package/dist/ptr/lambda/LambdaRuntime.js +433 -0
  129. package/dist/ptr/lambda/LambdaRuntime.js.map +1 -0
  130. package/dist/ptr/lambda/LambdaTerm.d.ts +95 -0
  131. package/dist/ptr/lambda/LambdaTerm.d.ts.map +1 -0
  132. package/dist/ptr/lambda/LambdaTerm.js +159 -0
  133. package/dist/ptr/lambda/LambdaTerm.js.map +1 -0
  134. package/dist/ptr/lambda/index.d.ts +24 -0
  135. package/dist/ptr/lambda/index.d.ts.map +1 -0
  136. package/dist/ptr/lambda/index.js +34 -0
  137. package/dist/ptr/lambda/index.js.map +1 -0
  138. package/dist/ptr/llm/Config.d.ts +57 -0
  139. package/dist/ptr/llm/Config.d.ts.map +1 -0
  140. package/dist/ptr/llm/Config.js +183 -0
  141. package/dist/ptr/llm/Config.js.map +1 -0
  142. package/dist/ptr/llm/LLMRuntime.d.ts +35 -0
  143. package/dist/ptr/llm/LLMRuntime.d.ts.map +1 -0
  144. package/dist/ptr/llm/LLMRuntime.js +176 -0
  145. package/dist/ptr/llm/LLMRuntime.js.map +1 -0
  146. package/dist/ptr/llm/providers/LLMProvider.d.ts +43 -0
  147. package/dist/ptr/llm/providers/LLMProvider.d.ts.map +1 -0
  148. package/dist/ptr/llm/providers/LLMProvider.js +31 -0
  149. package/dist/ptr/llm/providers/LLMProvider.js.map +1 -0
  150. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts +22 -0
  151. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts.map +1 -0
  152. package/dist/ptr/llm/providers/MLCLLMProvider.js +155 -0
  153. package/dist/ptr/llm/providers/MLCLLMProvider.js.map +1 -0
  154. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts +20 -0
  155. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts.map +1 -0
  156. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js +42 -0
  157. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js.map +1 -0
  158. package/dist/ptr/llm/providers/OllamaProvider.d.ts +21 -0
  159. package/dist/ptr/llm/providers/OllamaProvider.d.ts.map +1 -0
  160. package/dist/ptr/llm/providers/OllamaProvider.js +158 -0
  161. package/dist/ptr/llm/providers/OllamaProvider.js.map +1 -0
  162. package/dist/ptr/llm/providers/WebLLMProvider.d.ts +22 -0
  163. package/dist/ptr/llm/providers/WebLLMProvider.d.ts.map +1 -0
  164. package/dist/ptr/llm/providers/WebLLMProvider.js +151 -0
  165. package/dist/ptr/llm/providers/WebLLMProvider.js.map +1 -0
  166. package/dist/ptr/node/Action.d.ts +426 -0
  167. package/dist/ptr/node/Action.d.ts.map +1 -0
  168. package/dist/ptr/node/Action.js +711 -0
  169. package/dist/ptr/node/Action.js.map +1 -0
  170. package/dist/ptr/node/CLMLoader.d.ts +18 -0
  171. package/dist/ptr/node/CLMLoader.d.ts.map +1 -0
  172. package/dist/ptr/node/CLMLoader.js +18 -0
  173. package/dist/ptr/node/CLMLoader.js.map +1 -0
  174. package/dist/ptr/node/CLMRunner.d.ts +34 -0
  175. package/dist/ptr/node/CLMRunner.d.ts.map +1 -0
  176. package/dist/ptr/node/CLMRunner.js +36 -0
  177. package/dist/ptr/node/CLMRunner.js.map +1 -0
  178. package/dist/ptr/node/FileSystemUtils.d.ts +40 -0
  179. package/dist/ptr/node/FileSystemUtils.d.ts.map +1 -0
  180. package/dist/ptr/node/FileSystemUtils.js +170 -0
  181. package/dist/ptr/node/FileSystemUtils.js.map +1 -0
  182. package/dist/ptr/node/NetworkConfig.d.ts +191 -0
  183. package/dist/ptr/node/NetworkConfig.d.ts.map +1 -0
  184. package/dist/ptr/node/NetworkConfig.js +8 -0
  185. package/dist/ptr/node/NetworkConfig.js.map +1 -0
  186. package/dist/ptr/node/NetworkRuntime.d.ts +38 -0
  187. package/dist/ptr/node/NetworkRuntime.d.ts.map +1 -0
  188. package/dist/ptr/node/NetworkRuntime.js +871 -0
  189. package/dist/ptr/node/NetworkRuntime.js.map +1 -0
  190. package/dist/ptr/node/P2PChatSession.d.ts +53 -0
  191. package/dist/ptr/node/P2PChatSession.d.ts.map +1 -0
  192. package/dist/ptr/node/P2PChatSession.js +154 -0
  193. package/dist/ptr/node/P2PChatSession.js.map +1 -0
  194. package/dist/ptr/node/RuntimeInterface.d.ts +4 -0
  195. package/dist/ptr/node/RuntimeInterface.d.ts.map +1 -0
  196. package/dist/ptr/node/RuntimeInterface.js +2 -0
  197. package/dist/ptr/node/RuntimeInterface.js.map +1 -0
  198. package/dist/ptr/node/Runtimes.d.ts +34 -0
  199. package/dist/ptr/node/Runtimes.d.ts.map +1 -0
  200. package/dist/ptr/node/Runtimes.js +38 -0
  201. package/dist/ptr/node/Runtimes.js.map +1 -0
  202. package/dist/ptr/node/SignalingServer.d.ts +37 -0
  203. package/dist/ptr/node/SignalingServer.d.ts.map +1 -0
  204. package/dist/ptr/node/SignalingServer.js +218 -0
  205. package/dist/ptr/node/SignalingServer.js.map +1 -0
  206. package/dist/ptr/node/cli.d.ts +3 -0
  207. package/dist/ptr/node/cli.d.ts.map +1 -0
  208. package/dist/ptr/node/cli.js +266 -0
  209. package/dist/ptr/node/cli.js.map +1 -0
  210. package/dist/ptr/node/clm/builtins/handle.d.ts +14 -0
  211. package/dist/ptr/node/clm/builtins/handle.d.ts.map +1 -0
  212. package/dist/ptr/node/clm/builtins/handle.js +177 -0
  213. package/dist/ptr/node/clm/builtins/handle.js.map +1 -0
  214. package/dist/ptr/node/clm/builtins/index.d.ts +20 -0
  215. package/dist/ptr/node/clm/builtins/index.d.ts.map +1 -0
  216. package/dist/ptr/node/clm/builtins/index.js +60 -0
  217. package/dist/ptr/node/clm/builtins/index.js.map +1 -0
  218. package/dist/ptr/node/clm/index.d.ts +25 -0
  219. package/dist/ptr/node/clm/index.d.ts.map +1 -0
  220. package/dist/ptr/node/clm/index.js +28 -0
  221. package/dist/ptr/node/clm/index.js.map +1 -0
  222. package/dist/ptr/node/clm/loader.d.ts +25 -0
  223. package/dist/ptr/node/clm/loader.d.ts.map +1 -0
  224. package/dist/ptr/node/clm/loader.js +146 -0
  225. package/dist/ptr/node/clm/loader.js.map +1 -0
  226. package/dist/ptr/node/clm/multiruntime.d.ts +9 -0
  227. package/dist/ptr/node/clm/multiruntime.d.ts.map +1 -0
  228. package/dist/ptr/node/clm/multiruntime.js +121 -0
  229. package/dist/ptr/node/clm/multiruntime.js.map +1 -0
  230. package/dist/ptr/node/clm/runner.d.ts +70 -0
  231. package/dist/ptr/node/clm/runner.d.ts.map +1 -0
  232. package/dist/ptr/node/clm/runner.js +324 -0
  233. package/dist/ptr/node/clm/runner.js.map +1 -0
  234. package/dist/ptr/node/clm/types.d.ts +166 -0
  235. package/dist/ptr/node/clm/types.d.ts.map +1 -0
  236. package/dist/ptr/node/clm/types.js +5 -0
  237. package/dist/ptr/node/clm/types.js.map +1 -0
  238. package/dist/ptr/node/clm/utils.d.ts +29 -0
  239. package/dist/ptr/node/clm/utils.d.ts.map +1 -0
  240. package/dist/ptr/node/clm/utils.js +88 -0
  241. package/dist/ptr/node/clm/utils.js.map +1 -0
  242. package/dist/ptr/node/network/HttpClient.d.ts +14 -0
  243. package/dist/ptr/node/network/HttpClient.d.ts.map +1 -0
  244. package/dist/ptr/node/network/HttpClient.js +139 -0
  245. package/dist/ptr/node/network/HttpClient.js.map +1 -0
  246. package/dist/ptr/node/network/MCardSerialization.d.ts +19 -0
  247. package/dist/ptr/node/network/MCardSerialization.d.ts.map +1 -0
  248. package/dist/ptr/node/network/MCardSerialization.js +41 -0
  249. package/dist/ptr/node/network/MCardSerialization.js.map +1 -0
  250. package/dist/ptr/node/network/NetworkInfrastructure.d.ts +37 -0
  251. package/dist/ptr/node/network/NetworkInfrastructure.d.ts.map +1 -0
  252. package/dist/ptr/node/network/NetworkInfrastructure.js +121 -0
  253. package/dist/ptr/node/network/NetworkInfrastructure.js.map +1 -0
  254. package/dist/ptr/node/network/NetworkSecurity.d.ts +24 -0
  255. package/dist/ptr/node/network/NetworkSecurity.d.ts.map +1 -0
  256. package/dist/ptr/node/network/NetworkSecurity.js +104 -0
  257. package/dist/ptr/node/network/NetworkSecurity.js.map +1 -0
  258. package/dist/ptr/node/runtimes/base.d.ts +31 -0
  259. package/dist/ptr/node/runtimes/base.d.ts.map +1 -0
  260. package/dist/ptr/node/runtimes/base.js +33 -0
  261. package/dist/ptr/node/runtimes/base.js.map +1 -0
  262. package/dist/ptr/node/runtimes/binary.d.ts +10 -0
  263. package/dist/ptr/node/runtimes/binary.d.ts.map +1 -0
  264. package/dist/ptr/node/runtimes/binary.js +16 -0
  265. package/dist/ptr/node/runtimes/binary.js.map +1 -0
  266. package/dist/ptr/node/runtimes/factory.d.ts +22 -0
  267. package/dist/ptr/node/runtimes/factory.d.ts.map +1 -0
  268. package/dist/ptr/node/runtimes/factory.js +152 -0
  269. package/dist/ptr/node/runtimes/factory.js.map +1 -0
  270. package/dist/ptr/node/runtimes/index.d.ts +28 -0
  271. package/dist/ptr/node/runtimes/index.d.ts.map +1 -0
  272. package/dist/ptr/node/runtimes/index.js +30 -0
  273. package/dist/ptr/node/runtimes/index.js.map +1 -0
  274. package/dist/ptr/node/runtimes/javascript.d.ts +22 -0
  275. package/dist/ptr/node/runtimes/javascript.d.ts.map +1 -0
  276. package/dist/ptr/node/runtimes/javascript.js +125 -0
  277. package/dist/ptr/node/runtimes/javascript.js.map +1 -0
  278. package/dist/ptr/node/runtimes/lean.d.ts +10 -0
  279. package/dist/ptr/node/runtimes/lean.d.ts.map +1 -0
  280. package/dist/ptr/node/runtimes/lean.js +60 -0
  281. package/dist/ptr/node/runtimes/lean.js.map +1 -0
  282. package/dist/ptr/node/runtimes/loader.d.ts +21 -0
  283. package/dist/ptr/node/runtimes/loader.d.ts.map +1 -0
  284. package/dist/ptr/node/runtimes/loader.js +126 -0
  285. package/dist/ptr/node/runtimes/loader.js.map +1 -0
  286. package/dist/ptr/node/runtimes/python.d.ts +14 -0
  287. package/dist/ptr/node/runtimes/python.d.ts.map +1 -0
  288. package/dist/ptr/node/runtimes/python.js +100 -0
  289. package/dist/ptr/node/runtimes/python.js.map +1 -0
  290. package/dist/ptr/node/runtimes/wasm.d.ts +10 -0
  291. package/dist/ptr/node/runtimes/wasm.d.ts.map +1 -0
  292. package/dist/ptr/node/runtimes/wasm.js +55 -0
  293. package/dist/ptr/node/runtimes/wasm.js.map +1 -0
  294. package/dist/rag/GraphRAGEngine.d.ts +26 -0
  295. package/dist/rag/GraphRAGEngine.d.ts.map +1 -0
  296. package/dist/rag/GraphRAGEngine.js +166 -0
  297. package/dist/rag/GraphRAGEngine.js.map +1 -0
  298. package/dist/rag/HandleVectorStore.d.ts +201 -0
  299. package/dist/rag/HandleVectorStore.d.ts.map +1 -0
  300. package/dist/rag/HandleVectorStore.js +527 -0
  301. package/dist/rag/HandleVectorStore.js.map +1 -0
  302. package/dist/rag/PersistentIndexer.d.ts +148 -0
  303. package/dist/rag/PersistentIndexer.d.ts.map +1 -0
  304. package/dist/rag/PersistentIndexer.js +302 -0
  305. package/dist/rag/PersistentIndexer.js.map +1 -0
  306. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts +87 -0
  307. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts.map +1 -0
  308. package/dist/rag/embeddings/VisionEmbeddingProvider.js +164 -0
  309. package/dist/rag/embeddings/VisionEmbeddingProvider.js.map +1 -0
  310. package/dist/rag/graph/community.d.ts +56 -0
  311. package/dist/rag/graph/community.d.ts.map +1 -0
  312. package/dist/rag/graph/community.js +247 -0
  313. package/dist/rag/graph/community.js.map +1 -0
  314. package/dist/rag/graph/extractor.d.ts +99 -0
  315. package/dist/rag/graph/extractor.d.ts.map +1 -0
  316. package/dist/rag/graph/extractor.js +210 -0
  317. package/dist/rag/graph/extractor.js.map +1 -0
  318. package/dist/rag/graph/store.d.ts +176 -0
  319. package/dist/rag/graph/store.d.ts.map +1 -0
  320. package/dist/rag/graph/store.js +504 -0
  321. package/dist/rag/graph/store.js.map +1 -0
  322. package/dist/rag/index.d.ts +20 -0
  323. package/dist/rag/index.d.ts.map +1 -0
  324. package/dist/rag/index.js +26 -0
  325. package/dist/rag/index.js.map +1 -0
  326. package/dist/rag/semanticVersioning.d.ts +187 -0
  327. package/dist/rag/semanticVersioning.d.ts.map +1 -0
  328. package/dist/rag/semanticVersioning.js +253 -0
  329. package/dist/rag/semanticVersioning.js.map +1 -0
  330. package/dist/storage/IndexedDBEngine.d.ts +33 -0
  331. package/dist/storage/IndexedDBEngine.d.ts.map +1 -0
  332. package/dist/storage/IndexedDBEngine.js +198 -0
  333. package/dist/storage/IndexedDBEngine.js.map +1 -0
  334. package/dist/storage/SqliteNodeEngine.d.ts +123 -0
  335. package/dist/storage/SqliteNodeEngine.d.ts.map +1 -0
  336. package/dist/storage/SqliteNodeEngine.js +385 -0
  337. package/dist/storage/SqliteNodeEngine.js.map +1 -0
  338. package/dist/storage/SqliteWasmEngine.d.ts +60 -0
  339. package/dist/storage/SqliteWasmEngine.d.ts.map +1 -0
  340. package/dist/storage/SqliteWasmEngine.js +193 -0
  341. package/dist/storage/SqliteWasmEngine.js.map +1 -0
  342. package/dist/storage/StorageAdapter.d.ts +42 -0
  343. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  344. package/dist/storage/StorageAdapter.js +2 -0
  345. package/dist/storage/StorageAdapter.js.map +1 -0
  346. package/dist/storage/VectorStore.d.ts +202 -0
  347. package/dist/storage/VectorStore.d.ts.map +1 -0
  348. package/dist/storage/VectorStore.js +557 -0
  349. package/dist/storage/VectorStore.js.map +1 -0
  350. package/dist/storage/schema.d.ts +162 -0
  351. package/dist/storage/schema.d.ts.map +1 -0
  352. package/dist/storage/schema.js +373 -0
  353. package/dist/storage/schema.js.map +1 -0
  354. package/dist/util/FileIO.d.ts +44 -0
  355. package/dist/util/FileIO.d.ts.map +1 -0
  356. package/dist/util/FileIO.js +203 -0
  357. package/dist/util/FileIO.js.map +1 -0
  358. package/dist/util/Loader.d.ts +34 -0
  359. package/dist/util/Loader.d.ts.map +1 -0
  360. package/dist/util/Loader.js +168 -0
  361. package/dist/util/Loader.js.map +1 -0
  362. package/package.json +2 -1
@@ -0,0 +1,193 @@
1
+ /**
2
+ * SqliteWasmEngine - SQLite WASM backend using sql.js
3
+ *
4
+ * Provides full SQL support with FTS5 and same schema as Python implementation.
5
+ * Persistence via IndexedDB or OPFS.
6
+ */
7
+ import { MCard } from '../model/MCard';
8
+ import { validateHandle } from '../model/Handle';
9
+ import { CORE_SCHEMAS } from './schema';
10
+ /**
11
+ * SqliteWasmEngine - Full SQL support via sql.js
12
+ */
13
+ export class SqliteWasmEngine {
14
+ db = null;
15
+ SQL = null;
16
+ /**
17
+ * Initialize the database
18
+ * @param wasmUrl URL to sql-wasm.wasm file (optional, defaults to CDN)
19
+ * @param existingData Optional existing database as Uint8Array
20
+ */
21
+ async init(wasmUrl, existingData) {
22
+ // Dynamically import sql.js
23
+ const initSqlJs = (await import('sql.js')).default;
24
+ const SQL = await initSqlJs({
25
+ locateFile: (file) => wasmUrl || `https://sql.js.org/dist/${file}`
26
+ });
27
+ this.SQL = SQL;
28
+ this.db = existingData
29
+ ? new SQL.Database(existingData)
30
+ : new SQL.Database();
31
+ // Create tables using shared schema definitions
32
+ this.db.run(CORE_SCHEMAS.card);
33
+ this.db.run(CORE_SCHEMAS.handleRegistry);
34
+ this.db.run(CORE_SCHEMAS.handleHistory);
35
+ this.db.run(CORE_SCHEMAS.handleIndex);
36
+ }
37
+ ensureDb() {
38
+ if (!this.db)
39
+ throw new Error('Database not initialized. Call init() first.');
40
+ return this.db;
41
+ }
42
+ /**
43
+ * Export database as Uint8Array (for persistence)
44
+ */
45
+ export() {
46
+ return this.ensureDb().export();
47
+ }
48
+ /**
49
+ * Get raw sql.js Database for use with VectorStore adapter.
50
+ *
51
+ * Example:
52
+ * const vecStore = createWasmVectorStore(engine.getRawDb());
53
+ */
54
+ getRawDb() {
55
+ return this.ensureDb();
56
+ }
57
+ // =========== Card Operations ===========
58
+ async add(card) {
59
+ const db = this.ensureDb();
60
+ db.run('INSERT OR REPLACE INTO card (hash, content, g_time) VALUES (?, ?, ?)', [card.hash, card.content, card.g_time]);
61
+ return card.hash;
62
+ }
63
+ async get(hash) {
64
+ const db = this.ensureDb();
65
+ const result = db.exec(`SELECT hash, content, g_time FROM card WHERE hash = '${hash}'`);
66
+ if (result.length === 0 || result[0].values.length === 0)
67
+ return null;
68
+ const [h, content, g_time] = result[0].values[0];
69
+ return MCard.fromData(new Uint8Array(content), h, g_time);
70
+ }
71
+ async delete(hash) {
72
+ this.ensureDb().run('DELETE FROM card WHERE hash = ?', [hash]);
73
+ }
74
+ async getPage(pageNumber, pageSize) {
75
+ const db = this.ensureDb();
76
+ const totalItems = await this.count();
77
+ const totalPages = Math.ceil(totalItems / pageSize);
78
+ const offset = (pageNumber - 1) * pageSize;
79
+ const result = db.exec(`SELECT hash, content, g_time FROM card LIMIT ${pageSize} OFFSET ${offset}`);
80
+ const items = (result[0]?.values || []).map(([h, content, g_time]) => MCard.fromData(new Uint8Array(content), h, g_time));
81
+ return {
82
+ items,
83
+ totalItems,
84
+ pageNumber,
85
+ pageSize,
86
+ totalPages,
87
+ hasNext: pageNumber < totalPages,
88
+ hasPrevious: pageNumber > 1
89
+ };
90
+ }
91
+ async count() {
92
+ const result = this.ensureDb().exec('SELECT COUNT(*) FROM card');
93
+ return result[0]?.values[0]?.[0] || 0;
94
+ }
95
+ async searchByHash(hashPrefix) {
96
+ const db = this.ensureDb();
97
+ const stmt = db.prepare('SELECT hash, content, g_time FROM card WHERE hash LIKE ?');
98
+ stmt.bind([`${hashPrefix}%`]);
99
+ const items = [];
100
+ while (stmt.step()) {
101
+ const row = stmt.get();
102
+ items.push(MCard.fromData(new Uint8Array(row[1]), row[0], row[2]));
103
+ }
104
+ stmt.free();
105
+ return items;
106
+ }
107
+ async search(query, pageNumber, pageSize) {
108
+ const db = this.ensureDb();
109
+ const offset = (pageNumber - 1) * pageSize;
110
+ const pattern = `%${query}%`;
111
+ // Count
112
+ let stmt = db.prepare('SELECT COUNT(*) FROM card WHERE CAST(content AS TEXT) LIKE ?');
113
+ stmt.bind([pattern]);
114
+ stmt.step();
115
+ const totalItems = stmt.get()[0];
116
+ stmt.free();
117
+ const totalPages = Math.ceil(totalItems / pageSize);
118
+ // Query
119
+ stmt = db.prepare('SELECT hash, content, g_time FROM card WHERE CAST(content AS TEXT) LIKE ? LIMIT ? OFFSET ?');
120
+ stmt.bind([pattern, pageSize, offset]);
121
+ const items = [];
122
+ while (stmt.step()) {
123
+ const row = stmt.get();
124
+ items.push(MCard.fromData(new Uint8Array(row[1]), row[0], row[2]));
125
+ }
126
+ stmt.free();
127
+ return {
128
+ items,
129
+ totalItems,
130
+ pageNumber,
131
+ pageSize,
132
+ totalPages,
133
+ hasNext: pageNumber < totalPages,
134
+ hasPrevious: pageNumber > 1
135
+ };
136
+ }
137
+ async getAll() {
138
+ const result = this.ensureDb().exec('SELECT hash, content, g_time FROM card');
139
+ return (result[0]?.values || []).map(([h, content, g_time]) => MCard.fromData(new Uint8Array(content), h, g_time));
140
+ }
141
+ async clear() {
142
+ const db = this.ensureDb();
143
+ db.run('DELETE FROM card');
144
+ db.run('DELETE FROM handle_registry');
145
+ db.run('DELETE FROM handle_history');
146
+ }
147
+ // =========== Handle Operations ===========
148
+ async registerHandle(handle, hash) {
149
+ const db = this.ensureDb();
150
+ const normalized = validateHandle(handle);
151
+ const existing = db.exec(`SELECT handle FROM handle_registry WHERE handle = '${normalized}'`);
152
+ if (existing.length > 0 && existing[0].values.length > 0) {
153
+ throw new Error(`Handle '${handle}' already exists.`);
154
+ }
155
+ const now = new Date().toISOString();
156
+ db.run('INSERT INTO handle_registry (handle, current_hash, created_at, updated_at) VALUES (?, ?, ?, ?)', [normalized, hash, now, now]);
157
+ }
158
+ async resolveHandle(handle) {
159
+ const normalized = validateHandle(handle);
160
+ const result = this.ensureDb().exec(`SELECT current_hash FROM handle_registry WHERE handle = '${normalized}'`);
161
+ return result[0]?.values[0]?.[0] || null;
162
+ }
163
+ async getByHandle(handle) {
164
+ const hash = await this.resolveHandle(handle);
165
+ if (!hash)
166
+ return null;
167
+ return this.get(hash);
168
+ }
169
+ async updateHandle(handle, newHash) {
170
+ const db = this.ensureDb();
171
+ const normalized = validateHandle(handle);
172
+ const existing = db.exec(`SELECT current_hash FROM handle_registry WHERE handle = '${normalized}'`);
173
+ if (existing.length === 0 || existing[0].values.length === 0) {
174
+ throw new Error(`Handle '${handle}' not found.`);
175
+ }
176
+ const previousHash = existing[0].values[0][0];
177
+ const now = new Date().toISOString();
178
+ // Record history
179
+ db.run('INSERT INTO handle_history (handle, previous_hash, changed_at) VALUES (?, ?, ?)', [normalized, previousHash, now]);
180
+ // Update handle
181
+ db.run('UPDATE handle_registry SET current_hash = ?, updated_at = ? WHERE handle = ?', [newHash, now, normalized]);
182
+ return previousHash;
183
+ }
184
+ async getHandleHistory(handle) {
185
+ const normalized = validateHandle(handle);
186
+ const result = this.ensureDb().exec(`SELECT previous_hash, changed_at FROM handle_history WHERE handle = '${normalized}' ORDER BY id DESC`);
187
+ return (result[0]?.values || []).map(([previousHash, changedAt]) => ({
188
+ previousHash: previousHash,
189
+ changedAt: changedAt
190
+ }));
191
+ }
192
+ }
193
+ //# sourceMappingURL=SqliteWasmEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWasmEngine.js","sourceRoot":"","sources":["../../src/storage/SqliteWasmEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { MCard } from '../model/MCard';
2
+ /**
3
+ * Page - Pagination container for query results
4
+ */
5
+ export interface Page<T> {
6
+ items: T[];
7
+ totalItems: number;
8
+ pageNumber: number;
9
+ pageSize: number;
10
+ totalPages: number;
11
+ hasNext: boolean;
12
+ hasPrevious: boolean;
13
+ }
14
+ /**
15
+ * StorageEngine - Abstract interface for storage backends
16
+ *
17
+ * Implementations: IndexedDBEngine, SqliteWasmEngine
18
+ */
19
+ export interface StorageEngine {
20
+ add(card: MCard): Promise<string>;
21
+ get(hash: string): Promise<MCard | null>;
22
+ delete(hash: string): Promise<void>;
23
+ searchByHash(hashPrefix: string): Promise<MCard[]>;
24
+ getPage(pageNumber: number, pageSize: number): Promise<Page<MCard>>;
25
+ search(query: string, pageNumber: number, pageSize: number): Promise<Page<MCard>>;
26
+ getAll(): Promise<MCard[]>;
27
+ count(): Promise<number>;
28
+ clear(): Promise<void>;
29
+ registerHandle(handle: string, hash: string): Promise<void>;
30
+ resolveHandle(handle: string): Promise<string | null>;
31
+ getByHandle(handle: string): Promise<MCard | null>;
32
+ updateHandle(handle: string, newHash: string): Promise<string>;
33
+ getHandleHistory(handle: string): Promise<{
34
+ previousHash: string;
35
+ changedAt: string;
36
+ }[]>;
37
+ pruneHandleHistory?(handle: string, options: {
38
+ olderThan?: string;
39
+ deleteAll?: boolean;
40
+ }): Promise<number>;
41
+ }
42
+ //# sourceMappingURL=StorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapter.d.ts","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC;IACnB,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAE1B,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IACzF,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9G"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapter.js","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * MCard Vector Store for JavaScript
3
+ *
4
+ * SQLite-based vector storage for semantic search using sqlite-vec extension.
5
+ * Compatible with the Python MCardVectorStore implementation.
6
+ */
7
+ import Database from 'better-sqlite3';
8
+ export interface VectorDbStatement {
9
+ run: (...params: unknown[]) => {
10
+ lastInsertRowid?: number | bigint;
11
+ changes?: number;
12
+ };
13
+ all: (...params: unknown[]) => any[];
14
+ get: (...params: unknown[]) => any;
15
+ loadVecExtension?: (dimensions: number) => boolean;
16
+ }
17
+ export interface VectorDb {
18
+ exec(sql: string): void;
19
+ prepare(sql: string): VectorDbStatement;
20
+ }
21
+ export declare class BetterSqliteAdapter implements VectorDb {
22
+ private db;
23
+ constructor(db: Database.Database);
24
+ exec(sql: string): void;
25
+ prepare(sql: string): {
26
+ run: (...params: unknown[]) => Database.RunResult;
27
+ all: (...params: unknown[]) => unknown[];
28
+ get: (...params: unknown[]) => unknown;
29
+ loadVecExtension: (dimensions: number) => boolean;
30
+ };
31
+ }
32
+ export interface VectorStoreConfig {
33
+ /** Embedding model name (for Ollama) */
34
+ embeddingModel: string;
35
+ /** Vector dimensions (default: 768 for nomic-embed-text) */
36
+ dimensions: number;
37
+ /** Ollama base URL */
38
+ ollamaBaseUrl: string;
39
+ /** Chunk size for long documents */
40
+ chunkSize: number;
41
+ /** Chunk overlap */
42
+ chunkOverlap: number;
43
+ /** Enable FTS hybrid search */
44
+ enableHybridSearch: boolean;
45
+ }
46
+ export declare const DEFAULT_VECTOR_CONFIG: VectorStoreConfig;
47
+ export interface EmbeddingProvider {
48
+ embed(text: string): Promise<number[]>;
49
+ embedBatch?(texts: string[]): Promise<number[][]>;
50
+ modelName?: string;
51
+ dimensions?: number;
52
+ }
53
+ /**
54
+ * Serialize a float array to bytes (little-endian float32).
55
+ */
56
+ export declare function serializeVector(vector: number[]): Buffer;
57
+ /**
58
+ * Deserialize bytes to a float array.
59
+ */
60
+ export declare function deserializeVector(buffer: Buffer): number[];
61
+ /**
62
+ * Calculate cosine similarity between two vectors.
63
+ */
64
+ export declare function cosineSimilarity(a: number[], b: number[]): number;
65
+ export interface VectorSearchResult {
66
+ hash: string;
67
+ score: number;
68
+ content?: string;
69
+ chunkIndex?: number;
70
+ metadata?: Record<string, unknown>;
71
+ }
72
+ export declare class MCardVectorStore {
73
+ protected db: VectorDb;
74
+ protected config: VectorStoreConfig;
75
+ protected hasVecExtension: boolean;
76
+ /**
77
+ * Construct a vector store.
78
+ *
79
+ * - Node.js: pass a string path (uses better-sqlite3 under the hood)
80
+ * - Advanced: pass a VectorDb adapter (e.g., SqlJsVectorAdapter for WASM)
81
+ */
82
+ constructor(dbOrPath?: string | VectorDb, config?: Partial<VectorStoreConfig>);
83
+ /**
84
+ * Initialize database tables.
85
+ * Uses schema from the unified MCardSchema singleton (schema/mcard_schema.sql).
86
+ */
87
+ private initDatabase;
88
+ /**
89
+ * Fallback initialization for browser/WASM environments.
90
+ * Uses exported constants from schema.ts which are loaded from the SQL file.
91
+ */
92
+ private initDatabaseFallback;
93
+ /**
94
+ * Try to load sqlite-vec extension.
95
+ */
96
+ private tryLoadVecExtension;
97
+ /**
98
+ * Generate embedding using Ollama.
99
+ */
100
+ embed(text: string): Promise<number[]>;
101
+ /**
102
+ * Index content with its embedding.
103
+ */
104
+ index(hash: string, content: string, metadata?: Record<string, unknown>, chunk?: boolean): Promise<number>;
105
+ /**
106
+ * Search for similar content.
107
+ */
108
+ search(query: string, k?: number): Promise<VectorSearchResult[]>;
109
+ /**
110
+ * Search using sqlite-vec KNN.
111
+ */
112
+ private searchWithVec;
113
+ /**
114
+ * Fallback brute-force similarity search.
115
+ */
116
+ private searchFallback;
117
+ /**
118
+ * Hybrid search combining vector and FTS.
119
+ */
120
+ hybridSearch(query: string, k?: number, vectorWeight?: number): Promise<VectorSearchResult[]>;
121
+ /**
122
+ * Split text into overlapping chunks.
123
+ */
124
+ private chunkText;
125
+ /**
126
+ * Get count of indexed vectors.
127
+ */
128
+ count(): number;
129
+ /**
130
+ * Get list of all indexed hashes (distinct)
131
+ */
132
+ getIndexedHashes(): Promise<string[]>;
133
+ /**
134
+ * Count unique indexed cards
135
+ */
136
+ countUnique(): number;
137
+ /**
138
+ * Delete vectors for a hash.
139
+ */
140
+ delete(hash: string): number;
141
+ /**
142
+ * Clear all vectors.
143
+ */
144
+ clear(): void;
145
+ /**
146
+ * Check if sqlite-vec extension is available.
147
+ */
148
+ hasVectorExtension(): boolean;
149
+ /**
150
+ * Get information about the vector store.
151
+ */
152
+ getInfo(): Record<string, unknown>;
153
+ /**
154
+ * Close the database connection.
155
+ */
156
+ close(): void;
157
+ }
158
+ /**
159
+ * Minimal shape of a sql.js Database for adapter purposes.
160
+ * We intentionally keep this loose to avoid tight coupling to sql.js types.
161
+ */
162
+ export interface SqlJsDatabaseLike {
163
+ run(sql: string, params?: unknown[]): void;
164
+ exec(sql: string): {
165
+ columns: string[];
166
+ values: unknown[][];
167
+ }[];
168
+ prepare(sql: string): any;
169
+ }
170
+ /**
171
+ * Adapter for sql.js / SQLite WASM so VectorStore can run in the browser.
172
+ *
173
+ * NOTE: Parameter binding and stepping are left as a TODO because the exact
174
+ * sql.js API usage (bind/step/getAsObject) depends on how you want to map
175
+ * VectorDb semantics to sql.js. For now, this adapter is scaffolding that
176
+ * shows where to integrate sql.js.
177
+ */
178
+ export declare class SqlJsVectorAdapter implements VectorDb {
179
+ private db;
180
+ constructor(db: SqlJsDatabaseLike);
181
+ exec(sql: string): void;
182
+ prepare(_sql: string): {
183
+ run: (..._params: unknown[]) => {
184
+ lastInsertRowid?: number;
185
+ changes?: number;
186
+ };
187
+ all: (..._params: unknown[]) => any[];
188
+ get: (..._params: unknown[]) => any;
189
+ loadVecExtension: (_dimensions: number) => boolean;
190
+ };
191
+ }
192
+ /**
193
+ * Factory to create a VectorStore backed by SqliteWasmEngine/sql.js.
194
+ *
195
+ * Example usage (browser):
196
+ *
197
+ * const engine = new SqliteWasmEngine();
198
+ * await engine.init(wasmUrl, existingData);
199
+ * const vecStore = createWasmVectorStore(engine.getRawDb());
200
+ */
201
+ export declare function createWasmVectorStore(wasmDb: SqlJsDatabaseLike, config?: Partial<VectorStoreConfig>): MCardVectorStore;
202
+ //# sourceMappingURL=VectorStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorStore.d.ts","sourceRoot":"","sources":["../../src/storage/VectorStore.ts"],"names":[],"mappings":"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"}