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,148 @@
1
+ export class ProgrammingLanguageDetector {
2
+ contentTypeName = "code";
3
+ detect(contentSample, lines, firstLine, fileExtension) {
4
+ const mime = this.getMimeType(contentSample, lines, firstLine, fileExtension);
5
+ return (mime && mime !== 'text/plain') ? 0.95 : 0.0;
6
+ }
7
+ getMimeType(contentSample, lines, firstLine, fileExtension) {
8
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
9
+ // 1. Python Detection
10
+ if (this.isPython(firstLine, text, lines)) {
11
+ return 'text/x-python';
12
+ }
13
+ // 2. C/C++ Detection
14
+ const cType = this.detectCFamily(text);
15
+ if (cType)
16
+ return cType;
17
+ // 3. JS/JSX Detection
18
+ const jsType = this.detectJsType(text);
19
+ if (jsType)
20
+ return jsType;
21
+ // 4. TypeScript Detection
22
+ if (this.isTypescript(text)) {
23
+ return 'text/typescript';
24
+ }
25
+ return 'text/plain';
26
+ }
27
+ isPython(firstLine, text, lines) {
28
+ // Imports
29
+ if (/^\s*import\s+(\w+|\w+\.\w+)/m.test(text) || /^\s*from\s+(\w+|\w+\.\w+)\s+import\s+/m.test(text)) {
30
+ const stdLibs = ['os', 'sys', 're', 'json', 'math', 'random', 'datetime'];
31
+ if (stdLibs.some(lib => text.includes(`import ${lib}`) || text.includes(`from ${lib}`))) {
32
+ return true;
33
+ }
34
+ }
35
+ // Shebang
36
+ if (firstLine.startsWith('#!') && firstLine.toLowerCase().includes('python'))
37
+ return true;
38
+ // Strong indicators
39
+ if (text.includes('if __name__ ==') && text.includes('__main__'))
40
+ return true;
41
+ if (/^\s*def\s+\w+\s*\(/.test(text) && !text.includes('function'))
42
+ return true;
43
+ if (/^\s*class\s+\w+\s*[\(:]/m.test(text))
44
+ return true;
45
+ if (/^\s*@\w+/m.test(text))
46
+ return true; // Decorator
47
+ // Pattern counting
48
+ let count = 0;
49
+ const patterns = [
50
+ /\bif\b.*?:/, /\belif\b.*?:/, /\belse\s*:/, /\bfor\b.*?\bin\b.*?:/,
51
+ /\bwhile\b.*?:/, /\btry\s*:/, /\bexcept\b.*?:/, /\bfinally\s*:/,
52
+ /\bNone\b/, /\bTrue\b/, /\bFalse\b/, /f["'].*?\{.*?\}["']/, // f-string
53
+ /\bdef\b/, /\bclass\b/, /\bimport\b/, /\bfrom\b/, /\blambda\b.*?:/
54
+ ];
55
+ for (const p of patterns) {
56
+ if (p.test(text))
57
+ count++;
58
+ }
59
+ // Short content heuristic
60
+ const nonEmptyLines = lines.filter(l => l.trim().length > 0).length;
61
+ if (nonEmptyLines <= 5 && count >= 1) {
62
+ return true;
63
+ }
64
+ return count >= 3;
65
+ }
66
+ detectCFamily(text) {
67
+ // C/C++ patterns
68
+ const cPatterns = [
69
+ /#include\s*<.*?>/, /#include\s*".*?"/,
70
+ /\b(int|void|char|float|double)\s+main\s*\(.*\)\s*\{/,
71
+ /\bstruct\s+\w+\s*\{/, /#define\s+\w+/,
72
+ /printf\(.*?\);/, /scanf\(.*?\);/
73
+ ];
74
+ const cppPatterns = [
75
+ /\bclass\s+\w+\s*\{/, /\bnamespace\s+\w+\s*\{/,
76
+ /\btemplate\s*<.*?>/, /::/, /\bstd::/,
77
+ /\bcout\s*<</, /\bcin\s*>>/,
78
+ /\bnew\s+\w+/, /\bdelete\s+\w+/,
79
+ /#include\s*<iostream>/
80
+ ];
81
+ let cCount = 0;
82
+ let cppCount = 0;
83
+ cPatterns.forEach(p => { if (p.test(text))
84
+ cCount++; });
85
+ cppPatterns.forEach(p => { if (p.test(text))
86
+ cppCount++; });
87
+ if (cppCount >= 2 || (cppCount >= 1 && text.includes('std::')))
88
+ return 'text/x-c++';
89
+ if (cCount >= 2)
90
+ return 'text/x-c';
91
+ return null;
92
+ }
93
+ detectJsType(text) {
94
+ // JS patterns
95
+ const jsPatterns = [
96
+ /function\s+\w+\s*\(/.test(text), // function foo(
97
+ /\bconst\s+\w+\s*=/.test(text),
98
+ /\blet\s+\w+\s*=/.test(text),
99
+ /\bvar\s+\w+\s*=/.test(text),
100
+ /\bimport\s+.*\s+from/.test(text),
101
+ /\bexport\s+/.test(text),
102
+ /\=\>\s*\{/.test(text), // Arrow func
103
+ /console\.log\(/.test(text)
104
+ ];
105
+ const jsxPatterns = [
106
+ /<\w+(>|\s+.*?>)[\s\S]*?<\/\w+>/m.test(text),
107
+ /<\w+\s+\/>/m.test(text),
108
+ /className=/.test(text),
109
+ /React\.createElement/.test(text)
110
+ ];
111
+ const jsCount = jsPatterns.filter(Boolean).length;
112
+ const jsxCount = jsxPatterns.filter(Boolean).length;
113
+ if (jsxCount > 0 && (text.includes('import React') || text.includes('from "react"')))
114
+ return 'text/jsx';
115
+ if (jsxCount >= 2)
116
+ return 'text/jsx';
117
+ if (jsCount >= 2) {
118
+ // Avoid JSON misclassification
119
+ const stripped = text.trim();
120
+ if ((stripped.startsWith('{') && stripped.endsWith('}')) || (stripped.startsWith('[') && stripped.endsWith(']'))) {
121
+ try {
122
+ JSON.parse(text);
123
+ if (jsCount < 2)
124
+ return null;
125
+ }
126
+ catch { }
127
+ }
128
+ return 'text/javascript';
129
+ }
130
+ return null;
131
+ }
132
+ isTypescript(text) {
133
+ const tsPatterns = [
134
+ /:\s*(string|number|boolean|any|void|null|undefined)\b/,
135
+ /\binterface\s+\w+\s*\{/,
136
+ /\bclass\s+\w+\s+implements\s+\w+/,
137
+ /\btype\s+\w+\s*=/,
138
+ /\b(public|private|protected)\s+/,
139
+ /\bnamespace\s+\w+\s*\{/,
140
+ /<\w+>/ // Generics (simple check)
141
+ ];
142
+ let count = 0;
143
+ tsPatterns.forEach(p => { if (p.test(text))
144
+ count++; });
145
+ return count >= 2;
146
+ }
147
+ }
148
+ //# sourceMappingURL=LanguageDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageDetector.js","sourceRoot":"","sources":["../../../src/model/detectors/LanguageDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BaseDetector } from './BaseDetector';
2
+ export declare class XMLDetector implements BaseDetector {
3
+ readonly contentTypeName = "xml";
4
+ private static readonly XML_DECLARATION;
5
+ private static readonly BASIC_TAG_PAIR;
6
+ detect(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): number;
7
+ getMimeType(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): string | null;
8
+ }
9
+ export declare class MarkdownDetector implements BaseDetector {
10
+ readonly contentTypeName = "markdown";
11
+ private static readonly MD_PATTERNS;
12
+ private static readonly SETEXT_HEADER;
13
+ detect(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): number;
14
+ getMimeType(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): string | null;
15
+ }
16
+ export declare class PlainTextDetector implements BaseDetector {
17
+ readonly contentTypeName = "text";
18
+ private static readonly IMAGE_EXTS;
19
+ detect(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): number;
20
+ getMimeType(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): string | null;
21
+ }
22
+ //# sourceMappingURL=MarkupDetectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkupDetectors.d.ts","sourceRoot":"","sources":["../../../src/model/detectors/MarkupDetectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,qBAAa,WAAY,YAAW,YAAY;IAC5C,QAAQ,CAAC,eAAe,SAAS;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAElE,MAAM,CACF,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IA0BT,WAAW,CACP,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI;CAWnB;AAKD,qBAAa,gBAAiB,YAAW,YAAY;IACjD,QAAQ,CAAC,eAAe,cAAc;IAEtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAQjC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAEpE,MAAM,CACF,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAsCT,WAAW,CACP,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI;CAGnB;AAKD,qBAAa,iBAAkB,YAAW,YAAY;IAClD,QAAQ,CAAC,eAAe,UAAU;IAClC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAA8D;IAEhG,MAAM,CACF,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IAoBT,WAAW,CACP,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI;CAGnB"}
@@ -0,0 +1,132 @@
1
+ // ─────────────────────────────────────────────────────────────────────────────
2
+ // XML Detector
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ export class XMLDetector {
5
+ contentTypeName = "xml";
6
+ static XML_DECLARATION = /^\s*<\?xml/i;
7
+ static BASIC_TAG_PAIR = /<(\w+)[^>]*>.*?<\/\1>/s;
8
+ detect(contentSample, lines, firstLine, fileExtension) {
9
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
10
+ let confidence = 0.0;
11
+ if (fileExtension && fileExtension.toLowerCase() === '.xml') {
12
+ confidence = Math.max(confidence, 0.95);
13
+ }
14
+ if (XMLDetector.XML_DECLARATION.test(firstLine) || text.trim().startsWith('<?xml')) {
15
+ confidence = Math.max(confidence, 0.95);
16
+ }
17
+ if (text.includes('<') && text.includes('>') && text.includes('</')) {
18
+ confidence = Math.max(confidence, 0.5);
19
+ if (XMLDetector.BASIC_TAG_PAIR.test(text)) {
20
+ confidence = Math.max(confidence, 0.7);
21
+ }
22
+ }
23
+ if (text.toLowerCase().includes('<!doctype html')) {
24
+ if (confidence > 0.3)
25
+ confidence -= 0.4;
26
+ }
27
+ return Math.min(Math.max(confidence, 0.0), 1.0);
28
+ }
29
+ getMimeType(contentSample, lines, firstLine, fileExtension) {
30
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
31
+ if (fileExtension === '.xml')
32
+ return 'application/xml';
33
+ if (text.toLowerCase().includes('<svg'))
34
+ return 'image/svg+xml';
35
+ if (text.toLowerCase().includes('<html') || text.toLowerCase().includes('<!doctype html'))
36
+ return 'text/html';
37
+ if (this.detect(contentSample, lines, firstLine, fileExtension) > 0.5)
38
+ return 'application/xml';
39
+ return 'text/plain';
40
+ }
41
+ }
42
+ // ─────────────────────────────────────────────────────────────────────────────
43
+ // Markdown Detector
44
+ // ─────────────────────────────────────────────────────────────────────────────
45
+ export class MarkdownDetector {
46
+ contentTypeName = "markdown";
47
+ static MD_PATTERNS = [
48
+ /^#{1,6}\s+\S+/, // ATX Headers
49
+ /^\s*[\*\+\-]\s+\S+/, // List items
50
+ /^\s*\d+\.\s+\S+/, // Ordered list items
51
+ /`{1,3}[^`]+`{1,3}/, // Inline code
52
+ /\[[^\]]+\]\([^\)]+\)/, // Links
53
+ /!\[[^\]]+\]\([^\)]+\)/, // Images
54
+ /^\s*>.*/ // Blockquotes
55
+ ];
56
+ static SETEXT_HEADER = /^.*\n(?:={3,}|-{3,})\s*$/m;
57
+ detect(contentSample, lines, firstLine, fileExtension) {
58
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
59
+ let confidence = 0.0;
60
+ if (fileExtension && ['.md', '.markdown'].includes(fileExtension.toLowerCase())) {
61
+ confidence = Math.max(confidence, 0.95);
62
+ }
63
+ let mdFeatures = 0;
64
+ if (MarkdownDetector.SETEXT_HEADER.test(text))
65
+ mdFeatures += 2;
66
+ for (const line of lines.slice(0, 20)) {
67
+ if (MarkdownDetector.MD_PATTERNS.some(p => p.test(line))) {
68
+ mdFeatures++;
69
+ }
70
+ }
71
+ const hasCodeFence = text.includes('```');
72
+ if (hasCodeFence)
73
+ mdFeatures++;
74
+ if (mdFeatures > 1 && hasCodeFence)
75
+ confidence = Math.max(confidence, 0.85);
76
+ if (mdFeatures > 3 && hasCodeFence)
77
+ confidence = Math.max(confidence, 0.95);
78
+ else if (mdFeatures > 1)
79
+ confidence = Math.max(confidence, 0.6);
80
+ else if (mdFeatures > 3)
81
+ confidence = Math.max(confidence, 0.8);
82
+ else if (mdFeatures > 5)
83
+ confidence = Math.max(confidence, 0.9);
84
+ // Negative checks
85
+ const stripped = text.trim();
86
+ if ((stripped.startsWith('{') && stripped.endsWith('}')) || (stripped.startsWith('[') && stripped.endsWith(']'))) {
87
+ try {
88
+ JSON.parse(text);
89
+ if (confidence > 0.3)
90
+ confidence -= 0.4;
91
+ }
92
+ catch { }
93
+ }
94
+ if (stripped.startsWith('<') && text.includes('<?xml')) {
95
+ if (confidence > 0.3)
96
+ confidence -= 0.4;
97
+ }
98
+ return Math.min(Math.max(confidence, 0.0), 1.0);
99
+ }
100
+ getMimeType(contentSample, lines, firstLine, fileExtension) {
101
+ return this.detect(contentSample, lines, firstLine, fileExtension) > 0.5 ? 'text/markdown' : 'text/plain';
102
+ }
103
+ }
104
+ // ─────────────────────────────────────────────────────────────────────────────
105
+ // PlainText Detector
106
+ // ─────────────────────────────────────────────────────────────────────────────
107
+ export class PlainTextDetector {
108
+ contentTypeName = "text";
109
+ static IMAGE_EXTS = ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.svg', '.webp'];
110
+ detect(contentSample, lines, firstLine, fileExtension) {
111
+ if (!contentSample && lines.length === 0)
112
+ return 0.1;
113
+ if (fileExtension) {
114
+ const ext = fileExtension.toLowerCase();
115
+ if (PlainTextDetector.IMAGE_EXTS.includes(ext) || ext === '.pdf')
116
+ return 0.0;
117
+ }
118
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
119
+ if (text.includes(',') && lines.length < 5) {
120
+ // Ambiguous CSV check
121
+ const commaLines = lines.filter(l => l.includes(',')).length;
122
+ if (commaLines > 0 && commaLines === lines.length) {
123
+ return 0.8;
124
+ }
125
+ }
126
+ return 0.15;
127
+ }
128
+ getMimeType(contentSample, lines, firstLine, fileExtension) {
129
+ return 'text/plain';
130
+ }
131
+ }
132
+ //# sourceMappingURL=MarkupDetectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkupDetectors.js","sourceRoot":"","sources":["../../../src/model/detectors/MarkupDetectors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BaseDetector } from './BaseDetector';
2
+ export declare class OBJDetector implements BaseDetector {
3
+ readonly contentTypeName = "obj";
4
+ private static readonly COMMANDS;
5
+ detect(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): number;
6
+ getMimeType(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): string | null;
7
+ }
8
+ //# sourceMappingURL=OBJDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OBJDetector.d.ts","sourceRoot":"","sources":["../../../src/model/detectors/OBJDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,WAAY,YAAW,YAAY;IAC5C,QAAQ,CAAC,eAAe,SAAS;IAGjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAEtG,MAAM,CACF,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;IA2CT,WAAW,CACP,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI;CAGnB"}
@@ -0,0 +1,48 @@
1
+ export class OBJDetector {
2
+ contentTypeName = "obj";
3
+ // Check for 'v ' (vertex), 'f ' (face), 'vn ', 'vt '
4
+ static COMMANDS = ['v ', 'vt ', 'vn ', 'f ', 'g ', 'o ', 's ', 'mtllib ', 'usemtl '];
5
+ detect(contentSample, lines, firstLine, fileExtension) {
6
+ const text = typeof contentSample === 'string' ? contentSample : new TextDecoder().decode(contentSample);
7
+ let confidence = 0.0;
8
+ if (fileExtension && fileExtension.toLowerCase() === '.obj') {
9
+ confidence = Math.max(confidence, 0.95);
10
+ }
11
+ // Check content
12
+ const validLines = lines.filter(l => l.trim().length > 0 && !l.trim().startsWith('#'));
13
+ let commandCount = 0;
14
+ // Basic check: count recognized commands
15
+ for (const line of validLines.slice(0, 20)) {
16
+ const trimmed = line.trim();
17
+ for (const cmd of OBJDetector.COMMANDS) {
18
+ if (trimmed.startsWith(cmd)) {
19
+ commandCount++;
20
+ break;
21
+ }
22
+ }
23
+ }
24
+ if (commandCount >= 2) {
25
+ // Basic confidence.
26
+ // Logic from Python:
27
+ // if distinct commands >= 4 and ratio > 0.8 -> 0.9
28
+ // etc.
29
+ // Im implementing simplified version:
30
+ if (commandCount > 10)
31
+ confidence = Math.max(confidence, 0.9);
32
+ else if (commandCount > 5)
33
+ confidence = Math.max(confidence, 0.8);
34
+ else
35
+ confidence = Math.max(confidence, 0.7);
36
+ }
37
+ // Negative check: standard code keywords
38
+ const codeKeywords = ["def ", "class ", "import ", "function ", "var ", "let ", "const "];
39
+ if (codeKeywords.some(k => text.includes(k))) {
40
+ return 0.0;
41
+ }
42
+ return Math.min(confidence, 1.0);
43
+ }
44
+ getMimeType(contentSample, lines, firstLine, fileExtension) {
45
+ return this.detect(contentSample, lines, firstLine, fileExtension) > 0.5 ? 'application/3d-obj' : 'text/plain';
46
+ }
47
+ }
48
+ //# sourceMappingURL=OBJDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OBJDetector.js","sourceRoot":"","sources":["../../../src/model/detectors/OBJDetector.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACX,eAAe,GAAG,KAAK,CAAC;IAEjC,qDAAqD;IAC7C,MAAM,CAAU,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEtG,MAAM,CACF,aAAkC,EAClC,KAAe,EACf,SAAiB,EACjB,aAAsB;QAEtB,MAAM,IAAI,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzG,IAAI,UAAU,GAAG,GAAG,CAAC;QAErB,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;YAC1D,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACvF,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACrC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,YAAY,EAAE,CAAC;oBACf,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACpB,qBAAqB;YACrB,qBAAqB;YACrB,oDAAoD;YACpD,OAAO;YACP,sCAAsC;YACtC,IAAI,YAAY,GAAG,EAAE;gBAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;iBACzD,IAAI,YAAY,GAAG,CAAC;gBAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;;gBAC7D,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1F,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CACP,aAAkC,EAClC,KAAe,EACf,SAAiB,EACjB,aAAsB;QAEtB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC;IACnH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Central registry for all content type detectors.
3
+ */
4
+ export declare class DetectorRegistry {
5
+ private detectors;
6
+ constructor();
7
+ /**
8
+ * Detect content type and return the most likely MIME type.
9
+ */
10
+ detect(contentSample: string | Uint8Array, lines: string[], firstLine: string, fileExtension?: string): string;
11
+ }
12
+ export declare const registry: DetectorRegistry;
13
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/model/detectors/registry.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,SAAS,CAAiB;;IA4BlC;;OAEG;IACH,MAAM,CACF,aAAa,EAAE,MAAM,GAAG,UAAU,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM;CAkCZ;AAED,eAAO,MAAM,QAAQ,kBAAyB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { BinarySignatureDetector } from './BinaryDetector';
2
+ import { ProgrammingLanguageDetector } from './LanguageDetector';
3
+ import { XMLDetector, MarkdownDetector, PlainTextDetector } from './MarkupDetectors';
4
+ import { JSONDetector, YAMLDetector, CSVDetector, SQLDetector } from './DataFormatDetectors';
5
+ import { OBJDetector } from './OBJDetector';
6
+ /**
7
+ * Central registry for all content type detectors.
8
+ */
9
+ export class DetectorRegistry {
10
+ detectors;
11
+ constructor() {
12
+ this.detectors = [
13
+ new BinarySignatureDetector(),
14
+ // Programming languages
15
+ new ProgrammingLanguageDetector(),
16
+ // Structured data
17
+ new XMLDetector(),
18
+ new JSONDetector(),
19
+ new OBJDetector(),
20
+ // Markup
21
+ new MarkdownDetector(),
22
+ // Data formats (lower priority)
23
+ new SQLDetector(),
24
+ new CSVDetector(),
25
+ new YAMLDetector(),
26
+ // Fallback
27
+ new PlainTextDetector()
28
+ ];
29
+ }
30
+ /**
31
+ * Detect content type and return the most likely MIME type.
32
+ */
33
+ detect(contentSample, lines, firstLine, fileExtension) {
34
+ // Handle ambiguous CSV special case (from Python logic)
35
+ const textIsString = typeof contentSample === 'string';
36
+ if (textIsString && contentSample.includes(',')) {
37
+ if (lines.length < 3) {
38
+ const commaLines = lines.filter(l => l.includes(',')).length;
39
+ if (commaLines > 0 && commaLines === lines.length) {
40
+ const delimCounts = lines.filter(l => l.trim()).map(l => (l.match(/,/g) || []).length);
41
+ if (delimCounts.length > 0 && delimCounts.every(c => c <= 2)) {
42
+ return 'text/plain';
43
+ }
44
+ }
45
+ }
46
+ }
47
+ let bestConfidence = 0.0;
48
+ let bestMime = 'text/plain';
49
+ for (const detector of this.detectors) {
50
+ const confidence = detector.detect(contentSample, lines, firstLine, fileExtension);
51
+ if (confidence > bestConfidence) {
52
+ const mime = detector.getMimeType(contentSample, lines, firstLine, fileExtension);
53
+ if (mime) {
54
+ bestConfidence = confidence;
55
+ bestMime = mime;
56
+ // Optimization: if very high confidence, stop?
57
+ // Python doesn't stop. It finds max.
58
+ if (confidence >= 0.99)
59
+ break;
60
+ }
61
+ }
62
+ }
63
+ return bestMime;
64
+ }
65
+ }
66
+ export const registry = new DetectorRegistry();
67
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/model/detectors/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Either Monad - Represents success (Right) or failure (Left)
3
+ *
4
+ * Used for error handling without exceptions
5
+ */
6
+ export declare class Either<L, R> {
7
+ private readonly _value;
8
+ private readonly _isLeft;
9
+ private constructor();
10
+ /**
11
+ * Create a Left (failure/error)
12
+ */
13
+ static left<L, R>(value: L): Either<L, R>;
14
+ /**
15
+ * Create a Right (success)
16
+ */
17
+ static right<L, R>(value: R): Either<L, R>;
18
+ /**
19
+ * Check if Left
20
+ */
21
+ get isLeft(): boolean;
22
+ /**
23
+ * Check if Right
24
+ */
25
+ get isRight(): boolean;
26
+ /**
27
+ * Get Left value (throws if Right)
28
+ */
29
+ get left(): L;
30
+ /**
31
+ * Get Right value (throws if Left)
32
+ */
33
+ get right(): R;
34
+ /**
35
+ * Monadic bind - chain operations (short-circuits on Left)
36
+ */
37
+ bind<U>(fn: (value: R) => Either<L, U>): Either<L, U>;
38
+ /**
39
+ * Map a function over Right value
40
+ */
41
+ map<U>(fn: (value: R) => U): Either<L, U>;
42
+ /**
43
+ * Get Right or default
44
+ */
45
+ getOrElse(defaultValue: R): R;
46
+ /**
47
+ * Fold: apply leftFn if Left, rightFn if Right
48
+ */
49
+ fold<U>(leftFn: (l: L) => U, rightFn: (r: R) => U): U;
50
+ }
51
+ //# sourceMappingURL=Either.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Either.d.ts","sourceRoot":"","sources":["../../src/monads/Either.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC;IAEhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF5B,OAAO;IAKP;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAIzC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1C;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC,CAGZ;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,CAGb;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAKrD;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAKzC;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;IAI7B;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;CAGxD"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Either Monad - Represents success (Right) or failure (Left)
3
+ *
4
+ * Used for error handling without exceptions
5
+ */
6
+ export class Either {
7
+ _value;
8
+ _isLeft;
9
+ constructor(_value, _isLeft) {
10
+ this._value = _value;
11
+ this._isLeft = _isLeft;
12
+ }
13
+ /**
14
+ * Create a Left (failure/error)
15
+ */
16
+ static left(value) {
17
+ return new Either(value, true);
18
+ }
19
+ /**
20
+ * Create a Right (success)
21
+ */
22
+ static right(value) {
23
+ return new Either(value, false);
24
+ }
25
+ /**
26
+ * Check if Left
27
+ */
28
+ get isLeft() {
29
+ return this._isLeft;
30
+ }
31
+ /**
32
+ * Check if Right
33
+ */
34
+ get isRight() {
35
+ return !this._isLeft;
36
+ }
37
+ /**
38
+ * Get Left value (throws if Right)
39
+ */
40
+ get left() {
41
+ if (!this._isLeft)
42
+ throw new Error('Cannot get left from Right');
43
+ return this._value;
44
+ }
45
+ /**
46
+ * Get Right value (throws if Left)
47
+ */
48
+ get right() {
49
+ if (this._isLeft)
50
+ throw new Error('Cannot get right from Left');
51
+ return this._value;
52
+ }
53
+ /**
54
+ * Monadic bind - chain operations (short-circuits on Left)
55
+ */
56
+ bind(fn) {
57
+ if (this._isLeft)
58
+ return Either.left(this._value);
59
+ return fn(this._value);
60
+ }
61
+ /**
62
+ * Map a function over Right value
63
+ */
64
+ map(fn) {
65
+ if (this._isLeft)
66
+ return Either.left(this._value);
67
+ return Either.right(fn(this._value));
68
+ }
69
+ /**
70
+ * Get Right or default
71
+ */
72
+ getOrElse(defaultValue) {
73
+ return this._isLeft ? defaultValue : this._value;
74
+ }
75
+ /**
76
+ * Fold: apply leftFn if Left, rightFn if Right
77
+ */
78
+ fold(leftFn, rightFn) {
79
+ return this._isLeft ? leftFn(this._value) : rightFn(this._value);
80
+ }
81
+ }
82
+ //# sourceMappingURL=Either.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Either.js","sourceRoot":"","sources":["../../src/monads/Either.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,MAAM;IAEM;IACA;IAFrB,YACqB,MAAa,EACb,OAAgB;QADhB,WAAM,GAAN,MAAM,CAAO;QACb,YAAO,GAAP,OAAO,CAAS;IACjC,CAAC;IAEL;;OAEG;IACH,MAAM,CAAC,IAAI,CAAO,KAAQ;QACtB,OAAO,IAAI,MAAM,CAAO,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAO,KAAQ;QACvB,OAAO,IAAI,MAAM,CAAO,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,CAAI,EAA8B;QAClC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,CAAO,IAAI,CAAC,MAAW,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,EAAmB;QACtB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,CAAO,IAAI,CAAC,MAAW,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAO,EAAE,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,YAAe;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAE,IAAI,CAAC,MAAY,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAI,CAAI,MAAmB,EAAE,OAAoB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC;IAC/E,CAAC;CACJ"}