vectra 0.12.3 → 0.14.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 (375) hide show
  1. package/README.md +92 -100
  2. package/lib/BrowserWebFetcher.d.ts +75 -0
  3. package/lib/BrowserWebFetcher.d.ts.map +1 -0
  4. package/lib/BrowserWebFetcher.js +290 -0
  5. package/lib/BrowserWebFetcher.js.map +1 -0
  6. package/lib/FileFetcher.d.ts.map +1 -1
  7. package/lib/FileFetcher.js +25 -15
  8. package/lib/FileFetcher.js.map +1 -1
  9. package/lib/FileFetcher.spec.d.ts +2 -0
  10. package/lib/FileFetcher.spec.d.ts.map +1 -0
  11. package/lib/FileFetcher.spec.js +244 -0
  12. package/lib/FileFetcher.spec.js.map +1 -0
  13. package/lib/FolderWatcher.d.ts +91 -0
  14. package/lib/FolderWatcher.d.ts.map +1 -0
  15. package/lib/FolderWatcher.js +304 -0
  16. package/lib/FolderWatcher.js.map +1 -0
  17. package/lib/FolderWatcher.spec.d.ts +2 -0
  18. package/lib/FolderWatcher.spec.d.ts.map +1 -0
  19. package/lib/FolderWatcher.spec.js +308 -0
  20. package/lib/FolderWatcher.spec.js.map +1 -0
  21. package/lib/GPT3Tokenizer.spec.d.ts +2 -0
  22. package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
  23. package/lib/GPT3Tokenizer.spec.js +45 -0
  24. package/lib/GPT3Tokenizer.spec.js.map +1 -0
  25. package/lib/ItemSelector.d.ts.map +1 -1
  26. package/lib/ItemSelector.js +19 -8
  27. package/lib/ItemSelector.js.map +1 -1
  28. package/lib/ItemSelector.spec.d.ts +2 -0
  29. package/lib/ItemSelector.spec.d.ts.map +1 -0
  30. package/lib/ItemSelector.spec.js +204 -0
  31. package/lib/ItemSelector.spec.js.map +1 -0
  32. package/lib/LocalDocument.d.ts +1 -1
  33. package/lib/LocalDocument.d.ts.map +1 -1
  34. package/lib/LocalDocument.js +5 -45
  35. package/lib/LocalDocument.js.map +1 -1
  36. package/lib/LocalDocument.spec.d.ts +2 -0
  37. package/lib/LocalDocument.spec.d.ts.map +1 -0
  38. package/lib/LocalDocument.spec.js +214 -0
  39. package/lib/LocalDocument.spec.js.map +1 -0
  40. package/lib/LocalDocumentIndex.d.ts +20 -0
  41. package/lib/LocalDocumentIndex.d.ts.map +1 -1
  42. package/lib/LocalDocumentIndex.js +16 -52
  43. package/lib/LocalDocumentIndex.js.map +1 -1
  44. package/lib/LocalDocumentIndex.spec.d.ts +2 -0
  45. package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
  46. package/lib/LocalDocumentIndex.spec.js +494 -0
  47. package/lib/LocalDocumentIndex.spec.js.map +1 -0
  48. package/lib/LocalDocumentResult.d.ts +32 -11
  49. package/lib/LocalDocumentResult.d.ts.map +1 -1
  50. package/lib/LocalDocumentResult.js +305 -257
  51. package/lib/LocalDocumentResult.js.map +1 -1
  52. package/lib/LocalDocumentResult.spec.d.ts +2 -0
  53. package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
  54. package/lib/LocalDocumentResult.spec.js +373 -0
  55. package/lib/LocalDocumentResult.spec.js.map +1 -0
  56. package/lib/LocalEmbeddings.d.ts +59 -0
  57. package/lib/LocalEmbeddings.d.ts.map +1 -0
  58. package/lib/LocalEmbeddings.js +101 -0
  59. package/lib/LocalEmbeddings.js.map +1 -0
  60. package/lib/LocalEmbeddings.spec.d.ts +2 -0
  61. package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
  62. package/lib/LocalEmbeddings.spec.js +155 -0
  63. package/lib/LocalEmbeddings.spec.js.map +1 -0
  64. package/lib/LocalIndex.d.ts +27 -18
  65. package/lib/LocalIndex.d.ts.map +1 -1
  66. package/lib/LocalIndex.js +109 -105
  67. package/lib/LocalIndex.js.map +1 -1
  68. package/lib/LocalIndex.spec.js +434 -43
  69. package/lib/LocalIndex.spec.js.map +1 -1
  70. package/lib/OpenAIEmbeddings.d.ts +4 -6
  71. package/lib/OpenAIEmbeddings.d.ts.map +1 -1
  72. package/lib/OpenAIEmbeddings.js +16 -24
  73. package/lib/OpenAIEmbeddings.js.map +1 -1
  74. package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
  75. package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
  76. package/lib/OpenAIEmbeddings.spec.js +298 -0
  77. package/lib/OpenAIEmbeddings.spec.js.map +1 -0
  78. package/lib/TextSplitter.d.ts +2 -0
  79. package/lib/TextSplitter.d.ts.map +1 -1
  80. package/lib/TextSplitter.js +154 -111
  81. package/lib/TextSplitter.js.map +1 -1
  82. package/lib/TextSplitter.spec.js +289 -61
  83. package/lib/TextSplitter.spec.js.map +1 -1
  84. package/lib/TransformersEmbeddings.d.ts +121 -0
  85. package/lib/TransformersEmbeddings.d.ts.map +1 -0
  86. package/lib/TransformersEmbeddings.js +176 -0
  87. package/lib/TransformersEmbeddings.js.map +1 -0
  88. package/lib/TransformersEmbeddings.spec.d.ts +2 -0
  89. package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
  90. package/lib/TransformersEmbeddings.spec.js +198 -0
  91. package/lib/TransformersEmbeddings.spec.js.map +1 -0
  92. package/lib/TransformersTokenizer.d.ts +33 -0
  93. package/lib/TransformersTokenizer.d.ts.map +1 -0
  94. package/lib/TransformersTokenizer.js +44 -0
  95. package/lib/TransformersTokenizer.js.map +1 -0
  96. package/lib/TransformersTokenizer.spec.d.ts +2 -0
  97. package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
  98. package/lib/TransformersTokenizer.spec.js +112 -0
  99. package/lib/TransformersTokenizer.spec.js.map +1 -0
  100. package/lib/WebFetcher.d.ts +1 -2
  101. package/lib/WebFetcher.d.ts.map +1 -1
  102. package/lib/WebFetcher.js +58 -54
  103. package/lib/WebFetcher.js.map +1 -1
  104. package/lib/WebFetcher.spec.d.ts +2 -0
  105. package/lib/WebFetcher.spec.d.ts.map +1 -0
  106. package/lib/WebFetcher.spec.js +263 -0
  107. package/lib/WebFetcher.spec.js.map +1 -0
  108. package/lib/browser.d.ts +30 -0
  109. package/lib/browser.d.ts.map +1 -0
  110. package/lib/browser.js +52 -0
  111. package/lib/browser.js.map +1 -0
  112. package/lib/codecs/IndexCodec.d.ts +37 -0
  113. package/lib/codecs/IndexCodec.d.ts.map +1 -0
  114. package/lib/codecs/IndexCodec.js +3 -0
  115. package/lib/codecs/IndexCodec.js.map +1 -0
  116. package/lib/codecs/JsonCodec.d.ts +19 -0
  117. package/lib/codecs/JsonCodec.d.ts.map +1 -0
  118. package/lib/codecs/JsonCodec.js +35 -0
  119. package/lib/codecs/JsonCodec.js.map +1 -0
  120. package/lib/codecs/JsonCodec.spec.d.ts +2 -0
  121. package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
  122. package/lib/codecs/JsonCodec.spec.js +66 -0
  123. package/lib/codecs/JsonCodec.spec.js.map +1 -0
  124. package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
  125. package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
  126. package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
  127. package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
  128. package/lib/codecs/ProtobufCodec.d.ts +20 -0
  129. package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
  130. package/lib/codecs/ProtobufCodec.js +225 -0
  131. package/lib/codecs/ProtobufCodec.js.map +1 -0
  132. package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
  133. package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
  134. package/lib/codecs/ProtobufCodec.spec.js +155 -0
  135. package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
  136. package/lib/codecs/index.d.ts +5 -0
  137. package/lib/codecs/index.d.ts.map +1 -0
  138. package/lib/codecs/index.js +21 -0
  139. package/lib/codecs/index.js.map +1 -0
  140. package/lib/codecs/migrateIndex.d.ts +24 -0
  141. package/lib/codecs/migrateIndex.d.ts.map +1 -0
  142. package/lib/codecs/migrateIndex.js +119 -0
  143. package/lib/codecs/migrateIndex.js.map +1 -0
  144. package/lib/codecs/migrateIndex.spec.d.ts +2 -0
  145. package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
  146. package/lib/codecs/migrateIndex.spec.js +151 -0
  147. package/lib/codecs/migrateIndex.spec.js.map +1 -0
  148. package/lib/codecs/schemas/index.proto +34 -0
  149. package/lib/index.d.ts +9 -1
  150. package/lib/index.d.ts.map +1 -1
  151. package/lib/index.js +9 -1
  152. package/lib/index.js.map +1 -1
  153. package/lib/internals/Colorize.d.ts.map +1 -1
  154. package/lib/internals/Colorize.js +20 -15
  155. package/lib/internals/Colorize.js.map +1 -1
  156. package/lib/server/IndexManager.d.ts +78 -0
  157. package/lib/server/IndexManager.d.ts.map +1 -0
  158. package/lib/server/IndexManager.js +259 -0
  159. package/lib/server/IndexManager.js.map +1 -0
  160. package/lib/server/VectraServer.d.ts +40 -0
  161. package/lib/server/VectraServer.d.ts.map +1 -0
  162. package/lib/server/VectraServer.js +151 -0
  163. package/lib/server/VectraServer.js.map +1 -0
  164. package/lib/server/VectraServer.spec.d.ts +2 -0
  165. package/lib/server/VectraServer.spec.d.ts.map +1 -0
  166. package/lib/server/VectraServer.spec.js +322 -0
  167. package/lib/server/VectraServer.spec.js.map +1 -0
  168. package/lib/server/handlers/documentHandlers.d.ts +15 -0
  169. package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
  170. package/lib/server/handlers/documentHandlers.js +95 -0
  171. package/lib/server/handlers/documentHandlers.js.map +1 -0
  172. package/lib/server/handlers/helpers.d.ts +23 -0
  173. package/lib/server/handlers/helpers.d.ts.map +1 -0
  174. package/lib/server/handlers/helpers.js +138 -0
  175. package/lib/server/handlers/helpers.js.map +1 -0
  176. package/lib/server/handlers/index.d.ts +8 -0
  177. package/lib/server/handlers/index.d.ts.map +1 -0
  178. package/lib/server/handlers/index.js +22 -0
  179. package/lib/server/handlers/index.js.map +1 -0
  180. package/lib/server/handlers/indexHandlers.d.ts +14 -0
  181. package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
  182. package/lib/server/handlers/indexHandlers.js +85 -0
  183. package/lib/server/handlers/indexHandlers.js.map +1 -0
  184. package/lib/server/handlers/itemHandlers.d.ts +34 -0
  185. package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
  186. package/lib/server/handlers/itemHandlers.js +166 -0
  187. package/lib/server/handlers/itemHandlers.js.map +1 -0
  188. package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
  189. package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
  190. package/lib/server/handlers/lifecycleHandlers.js +31 -0
  191. package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
  192. package/lib/server/handlers/queryHandlers.d.ts +27 -0
  193. package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
  194. package/lib/server/handlers/queryHandlers.js +135 -0
  195. package/lib/server/handlers/queryHandlers.js.map +1 -0
  196. package/lib/server/handlers/statsHandlers.d.ts +17 -0
  197. package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
  198. package/lib/server/handlers/statsHandlers.js +81 -0
  199. package/lib/server/handlers/statsHandlers.js.map +1 -0
  200. package/lib/server/index.d.ts +4 -0
  201. package/lib/server/index.d.ts.map +1 -0
  202. package/lib/server/index.js +23 -0
  203. package/lib/server/index.js.map +1 -0
  204. package/lib/storage/FileStorage.d.ts +92 -0
  205. package/lib/storage/FileStorage.d.ts.map +1 -0
  206. package/lib/storage/FileStorage.js +3 -0
  207. package/lib/storage/FileStorage.js.map +1 -0
  208. package/lib/storage/FileStorageUtilities.d.ts +36 -0
  209. package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
  210. package/lib/storage/FileStorageUtilities.js +91 -0
  211. package/lib/storage/FileStorageUtilities.js.map +1 -0
  212. package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
  213. package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
  214. package/lib/storage/FileStorageUtilities.spec.js +98 -0
  215. package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
  216. package/lib/storage/FileType.d.ts +29 -0
  217. package/lib/storage/FileType.d.ts.map +1 -0
  218. package/lib/storage/FileType.js +38 -0
  219. package/lib/storage/FileType.js.map +1 -0
  220. package/lib/storage/IndexedDBStorage.d.ts +47 -0
  221. package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
  222. package/lib/storage/IndexedDBStorage.js +347 -0
  223. package/lib/storage/IndexedDBStorage.js.map +1 -0
  224. package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
  225. package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
  226. package/lib/storage/LocalFileStorage.browser.js +43 -0
  227. package/lib/storage/LocalFileStorage.browser.js.map +1 -0
  228. package/lib/storage/LocalFileStorage.d.ts +23 -0
  229. package/lib/storage/LocalFileStorage.d.ts.map +1 -0
  230. package/lib/storage/LocalFileStorage.js +152 -0
  231. package/lib/storage/LocalFileStorage.js.map +1 -0
  232. package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
  233. package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
  234. package/lib/storage/LocalFileStorage.spec.js +249 -0
  235. package/lib/storage/LocalFileStorage.spec.js.map +1 -0
  236. package/lib/storage/VirtualFileStorage.d.ts +18 -0
  237. package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
  238. package/lib/storage/VirtualFileStorage.js +178 -0
  239. package/lib/storage/VirtualFileStorage.js.map +1 -0
  240. package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
  241. package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
  242. package/lib/storage/VirtualFileStorage.spec.js +302 -0
  243. package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
  244. package/lib/storage/index.d.ts +6 -0
  245. package/lib/storage/index.d.ts.map +1 -0
  246. package/lib/storage/index.js +22 -0
  247. package/lib/storage/index.js.map +1 -0
  248. package/lib/templates/templates/csharp/README.md +48 -0
  249. package/lib/templates/templates/csharp/VectraClient.cs +234 -0
  250. package/lib/templates/templates/go/README.md +71 -0
  251. package/lib/templates/templates/go/vectra_client.go +322 -0
  252. package/lib/templates/templates/java/README.md +81 -0
  253. package/lib/templates/templates/java/VectraClient.java +232 -0
  254. package/lib/templates/templates/python/README.md +37 -0
  255. package/lib/templates/templates/python/vectra_client.py +279 -0
  256. package/lib/templates/templates/rust/Cargo.toml +14 -0
  257. package/lib/templates/templates/rust/README.md +39 -0
  258. package/lib/templates/templates/rust/build.rs +4 -0
  259. package/lib/templates/templates/rust/lib.rs +284 -0
  260. package/lib/templates/templates/typescript/README.md +96 -0
  261. package/lib/templates/templates/typescript/VectraClient.ts +374 -0
  262. package/lib/templates/typescript/VectraClient.d.ts +114 -0
  263. package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
  264. package/lib/templates/typescript/VectraClient.js +328 -0
  265. package/lib/templates/typescript/VectraClient.js.map +1 -0
  266. package/lib/types.d.ts +7 -0
  267. package/lib/types.d.ts.map +1 -1
  268. package/lib/utils/index.d.ts +2 -0
  269. package/lib/utils/index.d.ts.map +1 -0
  270. package/lib/utils/index.js +18 -0
  271. package/lib/utils/index.js.map +1 -0
  272. package/lib/utils/pathUtils.d.ts +40 -0
  273. package/lib/utils/pathUtils.d.ts.map +1 -0
  274. package/lib/utils/pathUtils.js +98 -0
  275. package/lib/utils/pathUtils.js.map +1 -0
  276. package/lib/vectra-cli.d.ts.map +1 -1
  277. package/lib/vectra-cli.generate.spec.d.ts +2 -0
  278. package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
  279. package/lib/vectra-cli.generate.spec.js +112 -0
  280. package/lib/vectra-cli.generate.spec.js.map +1 -0
  281. package/lib/vectra-cli.js +446 -9
  282. package/lib/vectra-cli.js.map +1 -1
  283. package/lib/vectra-cli.spec.d.ts +1 -0
  284. package/lib/vectra-cli.spec.d.ts.map +1 -0
  285. package/lib/vectra-cli.spec.js +2 -0
  286. package/lib/vectra-cli.spec.js.map +1 -0
  287. package/package.json +89 -16
  288. package/proto/vectra_service.proto +276 -0
  289. package/src/BrowserWebFetcher.ts +345 -0
  290. package/src/FileFetcher.spec.ts +234 -0
  291. package/src/FileFetcher.ts +37 -25
  292. package/src/FolderWatcher.spec.ts +288 -0
  293. package/src/FolderWatcher.ts +304 -0
  294. package/src/GPT3Tokenizer.spec.ts +50 -0
  295. package/src/ItemSelector.spec.ts +252 -0
  296. package/src/ItemSelector.ts +163 -150
  297. package/src/LocalDocument.spec.ts +211 -0
  298. package/src/LocalDocument.ts +88 -94
  299. package/src/LocalDocumentIndex.spec.ts +481 -0
  300. package/src/LocalDocumentIndex.ts +39 -40
  301. package/src/LocalDocumentResult.spec.ts +373 -0
  302. package/src/LocalDocumentResult.ts +489 -319
  303. package/src/LocalEmbeddings.spec.ts +138 -0
  304. package/src/LocalEmbeddings.ts +120 -0
  305. package/src/LocalIndex.spec.ts +808 -323
  306. package/src/LocalIndex.ts +479 -430
  307. package/src/OpenAIEmbeddings.spec.ts +354 -0
  308. package/src/OpenAIEmbeddings.ts +26 -27
  309. package/src/TextSplitter.spec.ts +320 -65
  310. package/src/TextSplitter.ts +172 -115
  311. package/src/TransformersEmbeddings.spec.ts +188 -0
  312. package/src/TransformersEmbeddings.ts +232 -0
  313. package/src/TransformersTokenizer.spec.ts +143 -0
  314. package/src/TransformersTokenizer.ts +45 -0
  315. package/src/WebFetcher.spec.ts +288 -0
  316. package/src/WebFetcher.ts +184 -186
  317. package/src/browser.ts +69 -0
  318. package/src/codecs/IndexCodec.ts +40 -0
  319. package/src/codecs/JsonCodec.spec.ts +70 -0
  320. package/src/codecs/JsonCodec.ts +37 -0
  321. package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
  322. package/src/codecs/ProtobufCodec.spec.ts +166 -0
  323. package/src/codecs/ProtobufCodec.ts +193 -0
  324. package/src/codecs/index.ts +4 -0
  325. package/src/codecs/migrateIndex.spec.ts +176 -0
  326. package/src/codecs/migrateIndex.ts +125 -0
  327. package/src/codecs/schemas/index.proto +34 -0
  328. package/src/index.ts +9 -1
  329. package/src/internals/Colorize.ts +19 -16
  330. package/src/server/IndexManager.ts +243 -0
  331. package/src/server/VectraServer.spec.ts +303 -0
  332. package/src/server/VectraServer.ts +156 -0
  333. package/src/server/handlers/documentHandlers.ts +59 -0
  334. package/src/server/handlers/helpers.ts +93 -0
  335. package/src/server/handlers/index.ts +7 -0
  336. package/src/server/handlers/indexHandlers.ts +44 -0
  337. package/src/server/handlers/itemHandlers.ts +140 -0
  338. package/src/server/handlers/lifecycleHandlers.ts +26 -0
  339. package/src/server/handlers/queryHandlers.ts +96 -0
  340. package/src/server/handlers/statsHandlers.ts +38 -0
  341. package/src/server/index.ts +3 -0
  342. package/src/storage/FileStorage.ts +105 -0
  343. package/src/storage/FileStorageUtilities.spec.ts +106 -0
  344. package/src/storage/FileStorageUtilities.ts +77 -0
  345. package/src/storage/FileType.ts +61 -0
  346. package/src/storage/IndexedDBStorage.ts +365 -0
  347. package/src/storage/LocalFileStorage.browser.ts +52 -0
  348. package/src/storage/LocalFileStorage.spec.ts +292 -0
  349. package/src/storage/LocalFileStorage.ts +98 -0
  350. package/src/storage/VirtualFileStorage.spec.ts +307 -0
  351. package/src/storage/VirtualFileStorage.ts +169 -0
  352. package/src/storage/index.ts +5 -0
  353. package/src/templates/csharp/README.md +48 -0
  354. package/src/templates/csharp/VectraClient.cs +234 -0
  355. package/src/templates/go/README.md +71 -0
  356. package/src/templates/go/vectra_client.go +322 -0
  357. package/src/templates/java/README.md +81 -0
  358. package/src/templates/java/VectraClient.java +232 -0
  359. package/src/templates/python/README.md +37 -0
  360. package/src/templates/python/vectra_client.py +279 -0
  361. package/src/templates/rust/Cargo.toml +14 -0
  362. package/src/templates/rust/README.md +39 -0
  363. package/src/templates/rust/build.rs +4 -0
  364. package/src/templates/rust/lib.rs +284 -0
  365. package/src/templates/typescript/README.md +96 -0
  366. package/src/templates/typescript/VectraClient.ts +374 -0
  367. package/src/types.ts +131 -123
  368. package/src/utils/index.ts +1 -0
  369. package/src/utils/pathUtils.ts +106 -0
  370. package/src/vectra-cli.generate.spec.ts +72 -0
  371. package/src/vectra-cli.spec.ts +0 -0
  372. package/src/vectra-cli.ts +687 -246
  373. package/README.draft.md +0 -499
  374. package/README.draft.outline.md +0 -160
  375. package/README.research.md +0 -2159
package/lib/browser.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * Browser entry point for Vectra.
4
+ *
5
+ * This module exports only browser-compatible components.
6
+ * Node-specific components (LocalFileStorage, FileFetcher, WebFetcher) are excluded.
7
+ *
8
+ * For browser usage:
9
+ * - Use `VirtualFileStorage` for in-memory storage (ephemeral)
10
+ * - Use `IndexedDBStorage` for persistent browser storage
11
+ * - Use `BrowserWebFetcher` for fetching web content
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.pathUtils = exports.BrowserWebFetcher = exports.IndexedDBStorage = exports.VirtualFileStorage = exports.FileStorageUtilities = exports.ItemSelector = exports.TransformersTokenizer = exports.TransformersEmbeddings = exports.OpenAIEmbeddings = exports.GPT3Tokenizer = exports.TextSplitter = exports.LocalDocumentResult = exports.LocalDocument = exports.LocalDocumentIndex = exports.LocalIndex = void 0;
15
+ // Core index classes
16
+ var LocalIndex_1 = require("./LocalIndex");
17
+ Object.defineProperty(exports, "LocalIndex", { enumerable: true, get: function () { return LocalIndex_1.LocalIndex; } });
18
+ var LocalDocumentIndex_1 = require("./LocalDocumentIndex");
19
+ Object.defineProperty(exports, "LocalDocumentIndex", { enumerable: true, get: function () { return LocalDocumentIndex_1.LocalDocumentIndex; } });
20
+ // Document classes
21
+ var LocalDocument_1 = require("./LocalDocument");
22
+ Object.defineProperty(exports, "LocalDocument", { enumerable: true, get: function () { return LocalDocument_1.LocalDocument; } });
23
+ var LocalDocumentResult_1 = require("./LocalDocumentResult");
24
+ Object.defineProperty(exports, "LocalDocumentResult", { enumerable: true, get: function () { return LocalDocumentResult_1.LocalDocumentResult; } });
25
+ // Text processing
26
+ var TextSplitter_1 = require("./TextSplitter");
27
+ Object.defineProperty(exports, "TextSplitter", { enumerable: true, get: function () { return TextSplitter_1.TextSplitter; } });
28
+ var GPT3Tokenizer_1 = require("./GPT3Tokenizer");
29
+ Object.defineProperty(exports, "GPT3Tokenizer", { enumerable: true, get: function () { return GPT3Tokenizer_1.GPT3Tokenizer; } });
30
+ // Embeddings
31
+ var OpenAIEmbeddings_1 = require("./OpenAIEmbeddings");
32
+ Object.defineProperty(exports, "OpenAIEmbeddings", { enumerable: true, get: function () { return OpenAIEmbeddings_1.OpenAIEmbeddings; } });
33
+ var TransformersEmbeddings_1 = require("./TransformersEmbeddings");
34
+ Object.defineProperty(exports, "TransformersEmbeddings", { enumerable: true, get: function () { return TransformersEmbeddings_1.TransformersEmbeddings; } });
35
+ var TransformersTokenizer_1 = require("./TransformersTokenizer");
36
+ Object.defineProperty(exports, "TransformersTokenizer", { enumerable: true, get: function () { return TransformersTokenizer_1.TransformersTokenizer; } });
37
+ // Query utilities
38
+ var ItemSelector_1 = require("./ItemSelector");
39
+ Object.defineProperty(exports, "ItemSelector", { enumerable: true, get: function () { return ItemSelector_1.ItemSelector; } });
40
+ var FileStorageUtilities_1 = require("./storage/FileStorageUtilities");
41
+ Object.defineProperty(exports, "FileStorageUtilities", { enumerable: true, get: function () { return FileStorageUtilities_1.FileStorageUtilities; } });
42
+ var VirtualFileStorage_1 = require("./storage/VirtualFileStorage");
43
+ Object.defineProperty(exports, "VirtualFileStorage", { enumerable: true, get: function () { return VirtualFileStorage_1.VirtualFileStorage; } });
44
+ var IndexedDBStorage_1 = require("./storage/IndexedDBStorage");
45
+ Object.defineProperty(exports, "IndexedDBStorage", { enumerable: true, get: function () { return IndexedDBStorage_1.IndexedDBStorage; } });
46
+ // Browser-compatible fetcher
47
+ var BrowserWebFetcher_1 = require("./BrowserWebFetcher");
48
+ Object.defineProperty(exports, "BrowserWebFetcher", { enumerable: true, get: function () { return BrowserWebFetcher_1.BrowserWebFetcher; } });
49
+ // Utilities
50
+ var pathUtils_1 = require("./utils/pathUtils");
51
+ Object.defineProperty(exports, "pathUtils", { enumerable: true, get: function () { return pathUtils_1.pathUtils; } });
52
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,qBAAqB;AACrB,2CAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,2DAA0G;AAAjG,wHAAA,kBAAkB,OAAA;AAE3B,mBAAmB;AACnB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,kBAAkB;AAClB,+CAAkE;AAAzD,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,aAAa;AACb,uDAM4B;AALxB,oHAAA,gBAAgB,OAAA;AAMpB,mEAAiG;AAAxF,gIAAA,sBAAsB,OAAA;AAC/B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAE9B,kBAAkB;AAClB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAuBrB,uEAAsE;AAA7D,4HAAA,oBAAoB,OAAA;AAE7B,mEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AAEzB,6BAA6B;AAC7B,yDAAiF;AAAxE,sHAAA,iBAAiB,OAAA;AAE1B,YAAY;AACZ,+CAA8C;AAArC,sGAAA,SAAS,OAAA"}
@@ -0,0 +1,37 @@
1
+ import { IndexData, MetadataTypes } from '../types';
2
+ /**
3
+ * Catalog structure for document indexes.
4
+ */
5
+ export interface DocumentCatalog {
6
+ version: number;
7
+ count: number;
8
+ uriToId: {
9
+ [uri: string]: string;
10
+ };
11
+ idToUri: {
12
+ [id: string]: string;
13
+ };
14
+ }
15
+ /**
16
+ * Abstraction for index serialization format.
17
+ * @remarks
18
+ * Implementations control how index data, catalogs, and metadata are
19
+ * serialized to and from Buffers written by the storage backend.
20
+ */
21
+ export interface IndexCodec {
22
+ /** File extension used for index files (e.g., '.json', '.pb') */
23
+ readonly extension: string;
24
+ /** Serialize IndexData to a Buffer for writing to storage */
25
+ serializeIndex(data: IndexData): Buffer;
26
+ /** Deserialize a Buffer read from storage into IndexData */
27
+ deserializeIndex(buffer: Buffer): IndexData;
28
+ /** Serialize a DocumentCatalog to a Buffer */
29
+ serializeCatalog(catalog: DocumentCatalog): Buffer;
30
+ /** Deserialize a Buffer into a DocumentCatalog */
31
+ deserializeCatalog(buffer: Buffer): DocumentCatalog;
32
+ /** Serialize arbitrary metadata to a Buffer */
33
+ serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
34
+ /** Deserialize a Buffer into metadata */
35
+ deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
36
+ }
37
+ //# sourceMappingURL=IndexCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/IndexCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACvB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,6DAA6D;IAC7D,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAExC,4DAA4D;IAC5D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,8CAA8C;IAC9C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAEnD,kDAAkD;IAClD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IAEpD,+CAA+C;IAC/C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;IAEnE,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtE"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IndexCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexCodec.js","sourceRoot":"","sources":["../../src/codecs/IndexCodec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { IndexData, MetadataTypes } from '../types';
2
+ import { DocumentCatalog, IndexCodec } from './IndexCodec';
3
+ /**
4
+ * JSON codec — default serialization format.
5
+ * @remarks
6
+ * Wraps the existing JSON.stringify/JSON.parse behavior. This preserves
7
+ * full backward compatibility with indexes created before the codec
8
+ * abstraction was introduced.
9
+ */
10
+ export declare class JsonCodec implements IndexCodec {
11
+ readonly extension = ".json";
12
+ serializeIndex(data: IndexData): Buffer;
13
+ deserializeIndex(buffer: Buffer): IndexData;
14
+ serializeCatalog(catalog: DocumentCatalog): Buffer;
15
+ deserializeCatalog(buffer: Buffer): DocumentCatalog;
16
+ serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
17
+ deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
18
+ }
19
+ //# sourceMappingURL=JsonCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/JsonCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,SAAU,YAAW,UAAU;IACxC,QAAQ,CAAC,SAAS,WAAW;IAE7B,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAIvC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAI3C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAIlD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAInD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM;IAIlE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGrE"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonCodec = void 0;
4
+ /**
5
+ * JSON codec — default serialization format.
6
+ * @remarks
7
+ * Wraps the existing JSON.stringify/JSON.parse behavior. This preserves
8
+ * full backward compatibility with indexes created before the codec
9
+ * abstraction was introduced.
10
+ */
11
+ class JsonCodec {
12
+ constructor() {
13
+ this.extension = '.json';
14
+ }
15
+ serializeIndex(data) {
16
+ return Buffer.from(JSON.stringify(data), 'utf-8');
17
+ }
18
+ deserializeIndex(buffer) {
19
+ return JSON.parse(buffer.toString('utf-8'));
20
+ }
21
+ serializeCatalog(catalog) {
22
+ return Buffer.from(JSON.stringify(catalog), 'utf-8');
23
+ }
24
+ deserializeCatalog(buffer) {
25
+ return JSON.parse(buffer.toString('utf-8'));
26
+ }
27
+ serializeMetadata(metadata) {
28
+ return Buffer.from(JSON.stringify(metadata), 'utf-8');
29
+ }
30
+ deserializeMetadata(buffer) {
31
+ return JSON.parse(buffer.toString('utf-8'));
32
+ }
33
+ }
34
+ exports.JsonCodec = JsonCodec;
35
+ //# sourceMappingURL=JsonCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonCodec.js","sourceRoot":"","sources":["../../src/codecs/JsonCodec.ts"],"names":[],"mappings":";;;AAGA;;;;;;GAMG;AACH,MAAa,SAAS;IAAtB;QACa,cAAS,GAAG,OAAO,CAAC;IAyBjC,CAAC;IAvBG,cAAc,CAAC,IAAe;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,OAAwB;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,QAAuC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mBAAmB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ;AA1BD,8BA0BC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JsonCodec.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonCodec.spec.d.ts","sourceRoot":"","sources":["../../src/codecs/JsonCodec.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_assert_1 = __importDefault(require("node:assert"));
7
+ const JsonCodec_1 = require("./JsonCodec");
8
+ describe('JsonCodec', () => {
9
+ const codec = new JsonCodec_1.JsonCodec();
10
+ it('has .json extension', () => {
11
+ node_assert_1.default.equal(codec.extension, '.json');
12
+ });
13
+ describe('serializeIndex / deserializeIndex', () => {
14
+ it('round-trips IndexData', () => {
15
+ const data = {
16
+ version: 1,
17
+ metadata_config: { indexed: ['category'] },
18
+ items: [
19
+ { id: 'a', metadata: { category: 'food', score: 0.9 }, vector: [1.5, 2.5, 3.5], norm: 4.5 },
20
+ { id: 'b', metadata: {}, vector: [0, 0, 0], norm: 0, metadataFile: 'ext.json' },
21
+ ],
22
+ };
23
+ const buf = codec.serializeIndex(data);
24
+ node_assert_1.default.ok(Buffer.isBuffer(buf));
25
+ const result = codec.deserializeIndex(buf);
26
+ node_assert_1.default.deepStrictEqual(result, data);
27
+ });
28
+ it('handles empty items', () => {
29
+ const data = { version: 2, metadata_config: {}, items: [] };
30
+ const result = codec.deserializeIndex(codec.serializeIndex(data));
31
+ node_assert_1.default.deepStrictEqual(result, data);
32
+ });
33
+ });
34
+ describe('serializeCatalog / deserializeCatalog', () => {
35
+ it('round-trips DocumentCatalog', () => {
36
+ const catalog = {
37
+ version: 1,
38
+ count: 2,
39
+ uriToId: { 'http://a': 'id-a', 'http://b': 'id-b' },
40
+ idToUri: { 'id-a': 'http://a', 'id-b': 'http://b' },
41
+ };
42
+ const buf = codec.serializeCatalog(catalog);
43
+ node_assert_1.default.ok(Buffer.isBuffer(buf));
44
+ const result = codec.deserializeCatalog(buf);
45
+ node_assert_1.default.deepStrictEqual(result, catalog);
46
+ });
47
+ it('handles empty catalog', () => {
48
+ const catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
49
+ const result = codec.deserializeCatalog(codec.serializeCatalog(catalog));
50
+ node_assert_1.default.deepStrictEqual(result, catalog);
51
+ });
52
+ });
53
+ describe('serializeMetadata / deserializeMetadata', () => {
54
+ it('round-trips metadata with all types', () => {
55
+ const metadata = { name: 'test', score: 42, active: true };
56
+ const buf = codec.serializeMetadata(metadata);
57
+ const result = codec.deserializeMetadata(buf);
58
+ node_assert_1.default.deepStrictEqual(result, metadata);
59
+ });
60
+ it('handles empty metadata', () => {
61
+ const result = codec.deserializeMetadata(codec.serializeMetadata({}));
62
+ node_assert_1.default.deepStrictEqual(result, {});
63
+ });
64
+ });
65
+ });
66
+ //# sourceMappingURL=JsonCodec.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonCodec.spec.js","sourceRoot":"","sources":["../../src/codecs/JsonCodec.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=LocalIndex.protobuf.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalIndex.protobuf.spec.d.ts","sourceRoot":"","sources":["../../src/codecs/LocalIndex.protobuf.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_assert_1 = __importDefault(require("node:assert"));
16
+ const LocalIndex_1 = require("../LocalIndex");
17
+ const storage_1 = require("../storage");
18
+ const ProtobufCodec_1 = require("./ProtobufCodec");
19
+ describe('LocalIndex with ProtobufCodec', () => {
20
+ const codec = new ProtobufCodec_1.ProtobufCodec();
21
+ it('creates index with .pb extension', () => __awaiter(void 0, void 0, void 0, function* () {
22
+ const storage = new storage_1.VirtualFileStorage();
23
+ const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
24
+ node_assert_1.default.equal(index.indexName, 'index.pb');
25
+ yield index.createIndex();
26
+ node_assert_1.default.equal(yield index.isIndexCreated(), true);
27
+ }));
28
+ it('full CRUD operations produce correct results', () => __awaiter(void 0, void 0, void 0, function* () {
29
+ const storage = new storage_1.VirtualFileStorage();
30
+ const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
31
+ yield index.createIndex();
32
+ // Insert
33
+ yield index.insertItem({ id: 'a', vector: [1, 0, 0], metadata: { cat: 'x' } });
34
+ yield index.insertItem({ id: 'b', vector: [0, 1, 0], metadata: { cat: 'y' } });
35
+ // List
36
+ const items = yield index.listItems();
37
+ node_assert_1.default.equal(items.length, 2);
38
+ node_assert_1.default.equal(items[0].id, 'a');
39
+ // Get
40
+ const item = yield index.getItem('a');
41
+ node_assert_1.default.ok(item);
42
+ node_assert_1.default.equal(item.metadata.cat, 'x');
43
+ // Query
44
+ const results = yield index.queryItems([1, 0, 0], '', 1);
45
+ node_assert_1.default.equal(results.length, 1);
46
+ node_assert_1.default.equal(results[0].item.id, 'a');
47
+ // Upsert
48
+ yield index.upsertItem({ id: 'a', vector: [0, 0, 1], metadata: { cat: 'z' } });
49
+ const updated = yield index.getItem('a');
50
+ node_assert_1.default.equal(updated === null || updated === void 0 ? void 0 : updated.metadata.cat, 'z');
51
+ // Delete
52
+ yield index.deleteItem('b');
53
+ const remaining = yield index.listItems();
54
+ node_assert_1.default.equal(remaining.length, 1);
55
+ node_assert_1.default.equal(remaining[0].id, 'a');
56
+ // Stats
57
+ const stats = yield index.getIndexStats();
58
+ node_assert_1.default.equal(stats.items, 1);
59
+ }));
60
+ it('batch insert works', () => __awaiter(void 0, void 0, void 0, function* () {
61
+ const storage = new storage_1.VirtualFileStorage();
62
+ const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
63
+ yield index.createIndex();
64
+ yield index.batchInsertItems([
65
+ { id: '1', vector: [1, 0, 0] },
66
+ { id: '2', vector: [0, 1, 0] },
67
+ { id: '3', vector: [0, 0, 1] },
68
+ ]);
69
+ const items = yield index.listItems();
70
+ node_assert_1.default.equal(items.length, 3);
71
+ }));
72
+ it('metadata filtering works with protobuf storage', () => __awaiter(void 0, void 0, void 0, function* () {
73
+ const storage = new storage_1.VirtualFileStorage();
74
+ const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
75
+ yield index.createIndex();
76
+ yield index.batchInsertItems([
77
+ { id: '1', vector: [1, 0], metadata: { category: 'food' } },
78
+ { id: '2', vector: [0, 1], metadata: { category: 'drink' } },
79
+ ]);
80
+ const food = yield index.listItemsByMetadata({ category: { $eq: 'food' } });
81
+ node_assert_1.default.equal(food.length, 1);
82
+ node_assert_1.default.equal(food[0].id, '1');
83
+ }));
84
+ it('external metadata files use .pb extension', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ const storage = new storage_1.VirtualFileStorage();
86
+ const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
87
+ yield index.createIndex({ version: 1, metadata_config: { indexed: ['keep'] } });
88
+ yield index.insertItem({ id: 'm1', vector: [1], metadata: { keep: 'x', extra: 'y' } });
89
+ const items = yield index.listItems();
90
+ const stored = items.find(i => i.id === 'm1');
91
+ node_assert_1.default.ok(stored.metadataFile);
92
+ node_assert_1.default.ok(stored.metadataFile.endsWith('.pb'), `Expected .pb extension, got: ${stored.metadataFile}`);
93
+ }));
94
+ it('persists and reloads across instances', () => __awaiter(void 0, void 0, void 0, function* () {
95
+ const storage = new storage_1.VirtualFileStorage();
96
+ // First instance: create and populate
97
+ const idx1 = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
98
+ yield idx1.createIndex();
99
+ yield idx1.insertItem({ id: 'persist', vector: [1, 2, 3], metadata: { key: 'val' } });
100
+ // Second instance: should read persisted data
101
+ const idx2 = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
102
+ const item = yield idx2.getItem('persist');
103
+ node_assert_1.default.ok(item);
104
+ node_assert_1.default.equal(item.id, 'persist');
105
+ node_assert_1.default.equal(item.metadata.key, 'val');
106
+ }));
107
+ });
108
+ //# sourceMappingURL=LocalIndex.protobuf.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalIndex.protobuf.spec.js","sourceRoot":"","sources":["../../src/codecs/LocalIndex.protobuf.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { IndexData, MetadataTypes } from '../types';
2
+ import { DocumentCatalog, IndexCodec } from './IndexCodec';
3
+ /**
4
+ * Protocol Buffers codec — opt-in binary format.
5
+ * @remarks
6
+ * Vectors are stored as packed float32 arrays (~50% smaller than JSON).
7
+ * Norms are stored as float64 to avoid compounding rounding error.
8
+ * Requires the `protobufjs` package to be installed.
9
+ */
10
+ export declare class ProtobufCodec implements IndexCodec {
11
+ readonly extension = ".pb";
12
+ constructor();
13
+ serializeIndex(data: IndexData): Buffer;
14
+ deserializeIndex(buffer: Buffer): IndexData;
15
+ serializeCatalog(catalog: DocumentCatalog): Buffer;
16
+ deserializeCatalog(buffer: Buffer): DocumentCatalog;
17
+ serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
18
+ deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
19
+ }
20
+ //# sourceMappingURL=ProtobufCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtobufCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/ProtobufCodec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA2F3D;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC5C,QAAQ,CAAC,SAAS,SAAS;;IAO3B,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAgBvC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAmB3C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAelD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAkBnD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM;IAalE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGrE"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProtobufCodec = void 0;
37
+ const path = __importStar(require("path"));
38
+ let protobuf;
39
+ function loadProtobuf() {
40
+ if (!protobuf) {
41
+ try {
42
+ protobuf = require('protobufjs');
43
+ }
44
+ catch (_a) {
45
+ throw new Error("ProtobufCodec requires the 'protobufjs' package. Install it with: npm install protobufjs");
46
+ }
47
+ }
48
+ return protobuf;
49
+ }
50
+ // Cached proto root — loaded once per process
51
+ let cachedRoot;
52
+ function getRoot() {
53
+ if (!cachedRoot) {
54
+ const pb = loadProtobuf();
55
+ cachedRoot = pb.loadSync(path.join(__dirname, 'schemas', 'index.proto'));
56
+ }
57
+ return cachedRoot;
58
+ }
59
+ /** Convert MetadataTypes value to protobuf MetadataValue shape */
60
+ function toProtoMetadataValue(value) {
61
+ if (typeof value === 'string')
62
+ return { stringValue: value };
63
+ if (typeof value === 'number')
64
+ return { numberValue: value };
65
+ if (typeof value === 'boolean')
66
+ return { boolValue: value };
67
+ return { stringValue: String(value) };
68
+ }
69
+ /** Convert protobuf MetadataValue back to MetadataTypes */
70
+ function fromProtoMetadataValue(mv) {
71
+ if (mv.stringValue !== undefined && mv.stringValue !== '')
72
+ return mv.stringValue;
73
+ if (mv.numberValue !== undefined && mv.numberValue !== 0)
74
+ return mv.numberValue;
75
+ if (mv.boolValue !== undefined && mv.boolValue !== false)
76
+ return mv.boolValue;
77
+ // Disambiguate zero-value fields by checking which oneof field is set
78
+ if (mv.value === 'boolValue')
79
+ return false;
80
+ if (mv.value === 'numberValue')
81
+ return 0;
82
+ if (mv.value === 'stringValue')
83
+ return '';
84
+ // Fallback — proto3 defaults make this tricky; prefer string empty
85
+ return '';
86
+ }
87
+ /** Convert JS IndexItem to proto-friendly shape */
88
+ function toProtoItem(item) {
89
+ const metadata = {};
90
+ if (item.metadata) {
91
+ for (const [k, v] of Object.entries(item.metadata)) {
92
+ metadata[k] = toProtoMetadataValue(v);
93
+ }
94
+ }
95
+ const out = {
96
+ id: item.id,
97
+ metadata,
98
+ vector: item.vector,
99
+ norm: item.norm,
100
+ };
101
+ if (item.metadataFile) {
102
+ out.metadataFile = item.metadataFile;
103
+ }
104
+ return out;
105
+ }
106
+ /** Convert proto IndexItem back to JS IndexItem */
107
+ function fromProtoItem(pi) {
108
+ const metadata = {};
109
+ if (pi.metadata) {
110
+ for (const [k, v] of Object.entries(pi.metadata)) {
111
+ metadata[k] = fromProtoMetadataValue(v);
112
+ }
113
+ }
114
+ // proto packed float → JS number[]; ensure plain array
115
+ const vector = pi.vector ? Array.from(pi.vector) : [];
116
+ const item = {
117
+ id: pi.id,
118
+ metadata,
119
+ vector,
120
+ norm: pi.norm,
121
+ };
122
+ if (pi.metadataFile) {
123
+ item.metadataFile = pi.metadataFile;
124
+ }
125
+ return item;
126
+ }
127
+ /**
128
+ * Protocol Buffers codec — opt-in binary format.
129
+ * @remarks
130
+ * Vectors are stored as packed float32 arrays (~50% smaller than JSON).
131
+ * Norms are stored as float64 to avoid compounding rounding error.
132
+ * Requires the `protobufjs` package to be installed.
133
+ */
134
+ class ProtobufCodec {
135
+ constructor() {
136
+ this.extension = '.pb';
137
+ // Eagerly validate that protobufjs is available
138
+ loadProtobuf();
139
+ }
140
+ serializeIndex(data) {
141
+ var _a, _b;
142
+ const root = getRoot();
143
+ const IndexDataMsg = root.lookupType('IndexData');
144
+ const payload = {
145
+ version: data.version,
146
+ metadataConfig: {
147
+ indexed: (_b = (_a = data.metadata_config) === null || _a === void 0 ? void 0 : _a.indexed) !== null && _b !== void 0 ? _b : [],
148
+ },
149
+ items: data.items.map(toProtoItem),
150
+ };
151
+ const err = IndexDataMsg.verify(payload);
152
+ if (err)
153
+ throw new Error(`Protobuf verify error: ${err}`);
154
+ const message = IndexDataMsg.create(payload);
155
+ return Buffer.from(IndexDataMsg.encode(message).finish());
156
+ }
157
+ deserializeIndex(buffer) {
158
+ var _a, _b;
159
+ const root = getRoot();
160
+ const IndexDataMsg = root.lookupType('IndexData');
161
+ const decoded = IndexDataMsg.decode(new Uint8Array(buffer));
162
+ const obj = IndexDataMsg.toObject(decoded, {
163
+ longs: Number,
164
+ enums: String,
165
+ defaults: true,
166
+ oneofs: true,
167
+ });
168
+ return {
169
+ version: obj.version,
170
+ metadata_config: {
171
+ indexed: (_b = (_a = obj.metadataConfig) === null || _a === void 0 ? void 0 : _a.indexed) !== null && _b !== void 0 ? _b : [],
172
+ },
173
+ items: (obj.items || []).map(fromProtoItem),
174
+ };
175
+ }
176
+ serializeCatalog(catalog) {
177
+ const root = getRoot();
178
+ const CatalogMsg = root.lookupType('DocumentCatalog');
179
+ const payload = {
180
+ version: catalog.version,
181
+ count: catalog.count,
182
+ uriToId: catalog.uriToId,
183
+ idToUri: catalog.idToUri,
184
+ };
185
+ const err = CatalogMsg.verify(payload);
186
+ if (err)
187
+ throw new Error(`Protobuf verify error: ${err}`);
188
+ const message = CatalogMsg.create(payload);
189
+ return Buffer.from(CatalogMsg.encode(message).finish());
190
+ }
191
+ deserializeCatalog(buffer) {
192
+ const root = getRoot();
193
+ const CatalogMsg = root.lookupType('DocumentCatalog');
194
+ const decoded = CatalogMsg.decode(new Uint8Array(buffer));
195
+ const obj = CatalogMsg.toObject(decoded, {
196
+ longs: Number,
197
+ enums: String,
198
+ defaults: true,
199
+ oneofs: true,
200
+ });
201
+ return {
202
+ version: obj.version,
203
+ count: obj.count,
204
+ uriToId: obj.uriToId || {},
205
+ idToUri: obj.idToUri || {},
206
+ };
207
+ }
208
+ serializeMetadata(metadata) {
209
+ // Metadata is a flat key-value map. We encode it as a JSON buffer
210
+ // wrapped in a simple length-prefixed envelope to stay self-describing
211
+ // while keeping the main index binary.
212
+ //
213
+ // We reuse the IndexItem metadata map encoding for consistency:
214
+ // encode as { entries: map<string, MetadataValue> }.
215
+ // However, since there's no standalone proto message for this,
216
+ // we just use JSON for external metadata files — the size savings
217
+ // from protobuf on small metadata objects are negligible.
218
+ return Buffer.from(JSON.stringify(metadata), 'utf-8');
219
+ }
220
+ deserializeMetadata(buffer) {
221
+ return JSON.parse(buffer.toString('utf-8'));
222
+ }
223
+ }
224
+ exports.ProtobufCodec = ProtobufCodec;
225
+ //# sourceMappingURL=ProtobufCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtobufCodec.js","sourceRoot":"","sources":["../../src/codecs/ProtobufCodec.ts"],"names":[],"mappings":"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"}