vectra 0.12.2 → 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 (392) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +92 -100
  3. package/bin/vectra.js +3 -0
  4. package/lib/BrowserWebFetcher.d.ts +75 -0
  5. package/lib/BrowserWebFetcher.d.ts.map +1 -0
  6. package/lib/BrowserWebFetcher.js +290 -0
  7. package/lib/BrowserWebFetcher.js.map +1 -0
  8. package/lib/FileFetcher.d.ts +5 -0
  9. package/lib/FileFetcher.d.ts.map +1 -0
  10. package/lib/FileFetcher.js +89 -0
  11. package/lib/FileFetcher.js.map +1 -0
  12. package/lib/FileFetcher.spec.d.ts +2 -0
  13. package/lib/FileFetcher.spec.d.ts.map +1 -0
  14. package/lib/FileFetcher.spec.js +244 -0
  15. package/lib/FileFetcher.spec.js.map +1 -0
  16. package/lib/FolderWatcher.d.ts +91 -0
  17. package/lib/FolderWatcher.d.ts.map +1 -0
  18. package/lib/FolderWatcher.js +304 -0
  19. package/lib/FolderWatcher.js.map +1 -0
  20. package/lib/FolderWatcher.spec.d.ts +2 -0
  21. package/lib/FolderWatcher.spec.d.ts.map +1 -0
  22. package/lib/FolderWatcher.spec.js +308 -0
  23. package/lib/FolderWatcher.spec.js.map +1 -0
  24. package/lib/GPT3Tokenizer.d.ts +9 -0
  25. package/lib/GPT3Tokenizer.spec.d.ts +2 -0
  26. package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
  27. package/lib/GPT3Tokenizer.spec.js +45 -0
  28. package/lib/GPT3Tokenizer.spec.js.map +1 -0
  29. package/lib/ItemSelector.d.ts +41 -0
  30. package/lib/ItemSelector.d.ts.map +1 -0
  31. package/lib/ItemSelector.js +179 -0
  32. package/lib/ItemSelector.js.map +1 -0
  33. package/lib/ItemSelector.spec.d.ts +2 -0
  34. package/lib/ItemSelector.spec.d.ts.map +1 -0
  35. package/lib/ItemSelector.spec.js +204 -0
  36. package/lib/ItemSelector.spec.js.map +1 -0
  37. package/lib/LocalDocument.d.ts +54 -0
  38. package/lib/LocalDocument.d.ts.map +1 -1
  39. package/lib/LocalDocument.js +116 -0
  40. package/lib/LocalDocument.js.map +1 -0
  41. package/lib/LocalDocument.spec.d.ts +2 -0
  42. package/lib/LocalDocument.spec.d.ts.map +1 -0
  43. package/lib/LocalDocument.spec.js +214 -0
  44. package/lib/LocalDocument.spec.js.map +1 -0
  45. package/lib/LocalDocumentIndex.d.ts +152 -0
  46. package/lib/LocalDocumentIndex.d.ts.map +1 -1
  47. package/lib/LocalDocumentIndex.js +420 -0
  48. package/lib/LocalDocumentIndex.js.map +1 -0
  49. package/lib/LocalDocumentIndex.spec.d.ts +2 -0
  50. package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
  51. package/lib/LocalDocumentIndex.spec.js +494 -0
  52. package/lib/LocalDocumentIndex.spec.js.map +1 -0
  53. package/lib/LocalDocumentResult.d.ts +66 -0
  54. package/lib/LocalDocumentResult.d.ts.map +1 -1
  55. package/lib/LocalDocumentResult.js +376 -0
  56. package/lib/LocalDocumentResult.js.map +1 -0
  57. package/lib/LocalDocumentResult.spec.d.ts +2 -0
  58. package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
  59. package/lib/LocalDocumentResult.spec.js +373 -0
  60. package/lib/LocalDocumentResult.spec.js.map +1 -0
  61. package/lib/LocalEmbeddings.d.ts +59 -0
  62. package/lib/LocalEmbeddings.d.ts.map +1 -0
  63. package/lib/LocalEmbeddings.js +101 -0
  64. package/lib/LocalEmbeddings.js.map +1 -0
  65. package/lib/LocalEmbeddings.spec.d.ts +2 -0
  66. package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
  67. package/lib/LocalEmbeddings.spec.js +155 -0
  68. package/lib/LocalEmbeddings.spec.js.map +1 -0
  69. package/lib/LocalIndex.d.ts +159 -0
  70. package/lib/LocalIndex.d.ts.map +1 -1
  71. package/lib/LocalIndex.js +519 -0
  72. package/lib/LocalIndex.js.map +1 -0
  73. package/lib/LocalIndex.spec.d.ts +2 -0
  74. package/lib/LocalIndex.spec.js +611 -9
  75. package/lib/LocalIndex.spec.js.map +1 -1
  76. package/lib/OpenAIEmbeddings.d.ts +124 -0
  77. package/lib/OpenAIEmbeddings.d.ts.map +1 -0
  78. package/lib/OpenAIEmbeddings.js +166 -0
  79. package/lib/OpenAIEmbeddings.js.map +1 -0
  80. package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
  81. package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
  82. package/lib/OpenAIEmbeddings.spec.js +298 -0
  83. package/lib/OpenAIEmbeddings.spec.js.map +1 -0
  84. package/lib/TextSplitter.d.ts +21 -0
  85. package/lib/TextSplitter.d.ts.map +1 -1
  86. package/lib/TextSplitter.js +500 -0
  87. package/lib/TextSplitter.js.map +1 -0
  88. package/lib/TextSplitter.spec.d.ts +2 -0
  89. package/lib/TextSplitter.spec.d.ts.map +1 -0
  90. package/lib/TextSplitter.spec.js +337 -0
  91. package/lib/TextSplitter.spec.js.map +1 -0
  92. package/lib/TransformersEmbeddings.d.ts +121 -0
  93. package/lib/TransformersEmbeddings.d.ts.map +1 -0
  94. package/lib/TransformersEmbeddings.js +176 -0
  95. package/lib/TransformersEmbeddings.js.map +1 -0
  96. package/lib/TransformersEmbeddings.spec.d.ts +2 -0
  97. package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
  98. package/lib/TransformersEmbeddings.spec.js +198 -0
  99. package/lib/TransformersEmbeddings.spec.js.map +1 -0
  100. package/lib/TransformersTokenizer.d.ts +33 -0
  101. package/lib/TransformersTokenizer.d.ts.map +1 -0
  102. package/lib/TransformersTokenizer.js +44 -0
  103. package/lib/TransformersTokenizer.js.map +1 -0
  104. package/lib/TransformersTokenizer.spec.d.ts +2 -0
  105. package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
  106. package/lib/TransformersTokenizer.spec.js +112 -0
  107. package/lib/TransformersTokenizer.spec.js.map +1 -0
  108. package/lib/WebFetcher.d.ts +14 -0
  109. package/lib/WebFetcher.d.ts.map +1 -0
  110. package/lib/WebFetcher.js +238 -0
  111. package/lib/WebFetcher.js.map +1 -0
  112. package/lib/WebFetcher.spec.d.ts +2 -0
  113. package/lib/WebFetcher.spec.d.ts.map +1 -0
  114. package/lib/WebFetcher.spec.js +263 -0
  115. package/lib/WebFetcher.spec.js.map +1 -0
  116. package/lib/browser.d.ts +30 -0
  117. package/lib/browser.d.ts.map +1 -0
  118. package/lib/browser.js +52 -0
  119. package/lib/browser.js.map +1 -0
  120. package/lib/codecs/IndexCodec.d.ts +37 -0
  121. package/lib/codecs/IndexCodec.d.ts.map +1 -0
  122. package/lib/codecs/IndexCodec.js +3 -0
  123. package/lib/codecs/IndexCodec.js.map +1 -0
  124. package/lib/codecs/JsonCodec.d.ts +19 -0
  125. package/lib/codecs/JsonCodec.d.ts.map +1 -0
  126. package/lib/codecs/JsonCodec.js +35 -0
  127. package/lib/codecs/JsonCodec.js.map +1 -0
  128. package/lib/codecs/JsonCodec.spec.d.ts +2 -0
  129. package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
  130. package/lib/codecs/JsonCodec.spec.js +66 -0
  131. package/lib/codecs/JsonCodec.spec.js.map +1 -0
  132. package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
  133. package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
  134. package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
  135. package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
  136. package/lib/codecs/ProtobufCodec.d.ts +20 -0
  137. package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
  138. package/lib/codecs/ProtobufCodec.js +225 -0
  139. package/lib/codecs/ProtobufCodec.js.map +1 -0
  140. package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
  141. package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
  142. package/lib/codecs/ProtobufCodec.spec.js +155 -0
  143. package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
  144. package/lib/codecs/index.d.ts +5 -0
  145. package/lib/codecs/index.d.ts.map +1 -0
  146. package/lib/codecs/index.js +21 -0
  147. package/lib/codecs/index.js.map +1 -0
  148. package/lib/codecs/migrateIndex.d.ts +24 -0
  149. package/lib/codecs/migrateIndex.d.ts.map +1 -0
  150. package/lib/codecs/migrateIndex.js +119 -0
  151. package/lib/codecs/migrateIndex.js.map +1 -0
  152. package/lib/codecs/migrateIndex.spec.d.ts +2 -0
  153. package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
  154. package/lib/codecs/migrateIndex.spec.js +151 -0
  155. package/lib/codecs/migrateIndex.spec.js.map +1 -0
  156. package/lib/codecs/schemas/index.proto +34 -0
  157. package/lib/index.d.ts +20 -0
  158. package/lib/index.d.ts.map +1 -1
  159. package/lib/index.js +36 -0
  160. package/lib/index.js.map +1 -0
  161. package/lib/internals/Colorize.d.ts +14 -0
  162. package/lib/internals/Colorize.d.ts.map +1 -0
  163. package/lib/internals/Colorize.js +69 -0
  164. package/lib/internals/Colorize.js.map +1 -0
  165. package/lib/internals/index.d.ts +3 -0
  166. package/lib/internals/index.d.ts.map +1 -0
  167. package/lib/internals/index.js +19 -0
  168. package/lib/internals/index.js.map +1 -0
  169. package/lib/internals/types.d.ts +43 -0
  170. package/lib/internals/types.d.ts.map +1 -0
  171. package/lib/internals/types.js +3 -0
  172. package/lib/internals/types.js.map +1 -0
  173. package/lib/server/IndexManager.d.ts +78 -0
  174. package/lib/server/IndexManager.d.ts.map +1 -0
  175. package/lib/server/IndexManager.js +259 -0
  176. package/lib/server/IndexManager.js.map +1 -0
  177. package/lib/server/VectraServer.d.ts +40 -0
  178. package/lib/server/VectraServer.d.ts.map +1 -0
  179. package/lib/server/VectraServer.js +151 -0
  180. package/lib/server/VectraServer.js.map +1 -0
  181. package/lib/server/VectraServer.spec.d.ts +2 -0
  182. package/lib/server/VectraServer.spec.d.ts.map +1 -0
  183. package/lib/server/VectraServer.spec.js +322 -0
  184. package/lib/server/VectraServer.spec.js.map +1 -0
  185. package/lib/server/handlers/documentHandlers.d.ts +15 -0
  186. package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
  187. package/lib/server/handlers/documentHandlers.js +95 -0
  188. package/lib/server/handlers/documentHandlers.js.map +1 -0
  189. package/lib/server/handlers/helpers.d.ts +23 -0
  190. package/lib/server/handlers/helpers.d.ts.map +1 -0
  191. package/lib/server/handlers/helpers.js +138 -0
  192. package/lib/server/handlers/helpers.js.map +1 -0
  193. package/lib/server/handlers/index.d.ts +8 -0
  194. package/lib/server/handlers/index.d.ts.map +1 -0
  195. package/lib/server/handlers/index.js +22 -0
  196. package/lib/server/handlers/index.js.map +1 -0
  197. package/lib/server/handlers/indexHandlers.d.ts +14 -0
  198. package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
  199. package/lib/server/handlers/indexHandlers.js +85 -0
  200. package/lib/server/handlers/indexHandlers.js.map +1 -0
  201. package/lib/server/handlers/itemHandlers.d.ts +34 -0
  202. package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
  203. package/lib/server/handlers/itemHandlers.js +166 -0
  204. package/lib/server/handlers/itemHandlers.js.map +1 -0
  205. package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
  206. package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
  207. package/lib/server/handlers/lifecycleHandlers.js +31 -0
  208. package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
  209. package/lib/server/handlers/queryHandlers.d.ts +27 -0
  210. package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
  211. package/lib/server/handlers/queryHandlers.js +135 -0
  212. package/lib/server/handlers/queryHandlers.js.map +1 -0
  213. package/lib/server/handlers/statsHandlers.d.ts +17 -0
  214. package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
  215. package/lib/server/handlers/statsHandlers.js +81 -0
  216. package/lib/server/handlers/statsHandlers.js.map +1 -0
  217. package/lib/server/index.d.ts +4 -0
  218. package/lib/server/index.d.ts.map +1 -0
  219. package/lib/server/index.js +23 -0
  220. package/lib/server/index.js.map +1 -0
  221. package/lib/storage/FileStorage.d.ts +92 -0
  222. package/lib/storage/FileStorage.d.ts.map +1 -0
  223. package/lib/storage/FileStorage.js +3 -0
  224. package/lib/storage/FileStorage.js.map +1 -0
  225. package/lib/storage/FileStorageUtilities.d.ts +36 -0
  226. package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
  227. package/lib/storage/FileStorageUtilities.js +91 -0
  228. package/lib/storage/FileStorageUtilities.js.map +1 -0
  229. package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
  230. package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
  231. package/lib/storage/FileStorageUtilities.spec.js +98 -0
  232. package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
  233. package/lib/storage/FileType.d.ts +29 -0
  234. package/lib/storage/FileType.d.ts.map +1 -0
  235. package/lib/storage/FileType.js +38 -0
  236. package/lib/storage/FileType.js.map +1 -0
  237. package/lib/storage/IndexedDBStorage.d.ts +47 -0
  238. package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
  239. package/lib/storage/IndexedDBStorage.js +347 -0
  240. package/lib/storage/IndexedDBStorage.js.map +1 -0
  241. package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
  242. package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
  243. package/lib/storage/LocalFileStorage.browser.js +43 -0
  244. package/lib/storage/LocalFileStorage.browser.js.map +1 -0
  245. package/lib/storage/LocalFileStorage.d.ts +23 -0
  246. package/lib/storage/LocalFileStorage.d.ts.map +1 -0
  247. package/lib/storage/LocalFileStorage.js +152 -0
  248. package/lib/storage/LocalFileStorage.js.map +1 -0
  249. package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
  250. package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
  251. package/lib/storage/LocalFileStorage.spec.js +249 -0
  252. package/lib/storage/LocalFileStorage.spec.js.map +1 -0
  253. package/lib/storage/VirtualFileStorage.d.ts +18 -0
  254. package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
  255. package/lib/storage/VirtualFileStorage.js +178 -0
  256. package/lib/storage/VirtualFileStorage.js.map +1 -0
  257. package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
  258. package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
  259. package/lib/storage/VirtualFileStorage.spec.js +302 -0
  260. package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
  261. package/lib/storage/index.d.ts +6 -0
  262. package/lib/storage/index.d.ts.map +1 -0
  263. package/lib/storage/index.js +22 -0
  264. package/lib/storage/index.js.map +1 -0
  265. package/lib/templates/templates/csharp/README.md +48 -0
  266. package/lib/templates/templates/csharp/VectraClient.cs +234 -0
  267. package/lib/templates/templates/go/README.md +71 -0
  268. package/lib/templates/templates/go/vectra_client.go +322 -0
  269. package/lib/templates/templates/java/README.md +81 -0
  270. package/lib/templates/templates/java/VectraClient.java +232 -0
  271. package/lib/templates/templates/python/README.md +37 -0
  272. package/lib/templates/templates/python/vectra_client.py +279 -0
  273. package/lib/templates/templates/rust/Cargo.toml +14 -0
  274. package/lib/templates/templates/rust/README.md +39 -0
  275. package/lib/templates/templates/rust/build.rs +4 -0
  276. package/lib/templates/templates/rust/lib.rs +284 -0
  277. package/lib/templates/templates/typescript/README.md +96 -0
  278. package/lib/templates/templates/typescript/VectraClient.ts +374 -0
  279. package/lib/templates/typescript/VectraClient.d.ts +114 -0
  280. package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
  281. package/lib/templates/typescript/VectraClient.js +328 -0
  282. package/lib/templates/typescript/VectraClient.js.map +1 -0
  283. package/lib/types.d.ts +153 -0
  284. package/lib/types.d.ts.map +1 -0
  285. package/lib/types.js +3 -0
  286. package/lib/types.js.map +1 -0
  287. package/lib/utils/index.d.ts +2 -0
  288. package/lib/utils/index.d.ts.map +1 -0
  289. package/lib/utils/index.js +18 -0
  290. package/lib/utils/index.js.map +1 -0
  291. package/lib/utils/pathUtils.d.ts +40 -0
  292. package/lib/utils/pathUtils.d.ts.map +1 -0
  293. package/lib/utils/pathUtils.js +98 -0
  294. package/lib/utils/pathUtils.js.map +1 -0
  295. package/lib/vectra-cli.d.ts +2 -0
  296. package/lib/vectra-cli.d.ts.map +1 -1
  297. package/lib/vectra-cli.generate.spec.d.ts +2 -0
  298. package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
  299. package/lib/vectra-cli.generate.spec.js +112 -0
  300. package/lib/vectra-cli.generate.spec.js.map +1 -0
  301. package/lib/vectra-cli.js +760 -0
  302. package/lib/vectra-cli.js.map +1 -0
  303. package/lib/vectra-cli.spec.d.ts +1 -0
  304. package/lib/vectra-cli.spec.d.ts.map +1 -0
  305. package/lib/vectra-cli.spec.js +2 -0
  306. package/lib/vectra-cli.spec.js.map +1 -0
  307. package/package.json +91 -16
  308. package/proto/vectra_service.proto +276 -0
  309. package/src/BrowserWebFetcher.ts +345 -0
  310. package/src/FileFetcher.spec.ts +234 -0
  311. package/src/FileFetcher.ts +37 -25
  312. package/src/FolderWatcher.spec.ts +288 -0
  313. package/src/FolderWatcher.ts +304 -0
  314. package/src/GPT3Tokenizer.spec.ts +50 -0
  315. package/src/ItemSelector.spec.ts +252 -0
  316. package/src/ItemSelector.ts +163 -150
  317. package/src/LocalDocument.spec.ts +211 -0
  318. package/src/LocalDocument.ts +88 -94
  319. package/src/LocalDocumentIndex.spec.ts +481 -0
  320. package/src/LocalDocumentIndex.ts +39 -40
  321. package/src/LocalDocumentResult.spec.ts +373 -0
  322. package/src/LocalDocumentResult.ts +489 -319
  323. package/src/LocalEmbeddings.spec.ts +138 -0
  324. package/src/LocalEmbeddings.ts +120 -0
  325. package/src/LocalIndex.spec.ts +808 -66
  326. package/src/LocalIndex.ts +479 -429
  327. package/src/OpenAIEmbeddings.spec.ts +354 -0
  328. package/src/OpenAIEmbeddings.ts +26 -27
  329. package/src/TextSplitter.spec.ts +342 -0
  330. package/src/TextSplitter.ts +517 -532
  331. package/src/TransformersEmbeddings.spec.ts +188 -0
  332. package/src/TransformersEmbeddings.ts +232 -0
  333. package/src/TransformersTokenizer.spec.ts +143 -0
  334. package/src/TransformersTokenizer.ts +45 -0
  335. package/src/WebFetcher.spec.ts +288 -0
  336. package/src/WebFetcher.ts +184 -186
  337. package/src/browser.ts +69 -0
  338. package/src/codecs/IndexCodec.ts +40 -0
  339. package/src/codecs/JsonCodec.spec.ts +70 -0
  340. package/src/codecs/JsonCodec.ts +37 -0
  341. package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
  342. package/src/codecs/ProtobufCodec.spec.ts +166 -0
  343. package/src/codecs/ProtobufCodec.ts +193 -0
  344. package/src/codecs/index.ts +4 -0
  345. package/src/codecs/migrateIndex.spec.ts +176 -0
  346. package/src/codecs/migrateIndex.ts +125 -0
  347. package/src/codecs/schemas/index.proto +34 -0
  348. package/src/index.ts +9 -1
  349. package/src/internals/Colorize.ts +19 -16
  350. package/src/server/IndexManager.ts +243 -0
  351. package/src/server/VectraServer.spec.ts +303 -0
  352. package/src/server/VectraServer.ts +156 -0
  353. package/src/server/handlers/documentHandlers.ts +59 -0
  354. package/src/server/handlers/helpers.ts +93 -0
  355. package/src/server/handlers/index.ts +7 -0
  356. package/src/server/handlers/indexHandlers.ts +44 -0
  357. package/src/server/handlers/itemHandlers.ts +140 -0
  358. package/src/server/handlers/lifecycleHandlers.ts +26 -0
  359. package/src/server/handlers/queryHandlers.ts +96 -0
  360. package/src/server/handlers/statsHandlers.ts +38 -0
  361. package/src/server/index.ts +3 -0
  362. package/src/storage/FileStorage.ts +105 -0
  363. package/src/storage/FileStorageUtilities.spec.ts +106 -0
  364. package/src/storage/FileStorageUtilities.ts +77 -0
  365. package/src/storage/FileType.ts +61 -0
  366. package/src/storage/IndexedDBStorage.ts +365 -0
  367. package/src/storage/LocalFileStorage.browser.ts +52 -0
  368. package/src/storage/LocalFileStorage.spec.ts +292 -0
  369. package/src/storage/LocalFileStorage.ts +98 -0
  370. package/src/storage/VirtualFileStorage.spec.ts +307 -0
  371. package/src/storage/VirtualFileStorage.ts +169 -0
  372. package/src/storage/index.ts +5 -0
  373. package/src/templates/csharp/README.md +48 -0
  374. package/src/templates/csharp/VectraClient.cs +234 -0
  375. package/src/templates/go/README.md +71 -0
  376. package/src/templates/go/vectra_client.go +322 -0
  377. package/src/templates/java/README.md +81 -0
  378. package/src/templates/java/VectraClient.java +232 -0
  379. package/src/templates/python/README.md +37 -0
  380. package/src/templates/python/vectra_client.py +279 -0
  381. package/src/templates/rust/Cargo.toml +14 -0
  382. package/src/templates/rust/README.md +39 -0
  383. package/src/templates/rust/build.rs +4 -0
  384. package/src/templates/rust/lib.rs +284 -0
  385. package/src/templates/typescript/README.md +96 -0
  386. package/src/templates/typescript/VectraClient.ts +374 -0
  387. package/src/types.ts +131 -123
  388. package/src/utils/index.ts +1 -0
  389. package/src/utils/pathUtils.ts +106 -0
  390. package/src/vectra-cli.generate.spec.ts +72 -0
  391. package/src/vectra-cli.spec.ts +0 -0
  392. package/src/vectra-cli.ts +687 -246
@@ -0,0 +1,279 @@
1
+ """Vectra gRPC client — thin idiomatic wrapper over generated stubs.
2
+
3
+ Usage:
4
+ from vectra_client import VectraClient
5
+
6
+ client = VectraClient() # localhost:50051
7
+ results = client.query_documents("my-index", "search query")
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import json
13
+ from typing import Any
14
+
15
+ import grpc
16
+
17
+ # Generated stubs — run `python -m grpc_tools.protoc` to produce these:
18
+ # python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. vectra_service.proto
19
+ import vectra_service_pb2 as pb2
20
+ import vectra_service_pb2_grpc as pb2_grpc
21
+
22
+
23
+ class VectraClient:
24
+ """Idiomatic Python client for the Vectra gRPC server."""
25
+
26
+ def __init__(self, host: str = "127.0.0.1", port: int = 50051):
27
+ self._channel = grpc.insecure_channel(f"{host}:{port}")
28
+ self._stub = pb2_grpc.VectraServiceStub(self._channel)
29
+
30
+ def close(self) -> None:
31
+ self._channel.close()
32
+
33
+ def __enter__(self) -> VectraClient:
34
+ return self
35
+
36
+ def __exit__(self, *_: Any) -> None:
37
+ self.close()
38
+
39
+ # ── Index Management ──────────────────────────────────
40
+
41
+ def create_index(
42
+ self,
43
+ name: str,
44
+ *,
45
+ format: str = "json",
46
+ is_document_index: bool = False,
47
+ chunk_size: int = 512,
48
+ chunk_overlap: int = 0,
49
+ ) -> None:
50
+ doc_config = pb2.DocumentIndexConfig(
51
+ version=1,
52
+ chunk_size=chunk_size,
53
+ chunk_overlap=chunk_overlap,
54
+ ) if is_document_index else None
55
+ self._stub.CreateIndex(pb2.CreateIndexRequest(
56
+ index_name=name,
57
+ format=format,
58
+ is_document_index=is_document_index,
59
+ document_config=doc_config,
60
+ ))
61
+
62
+ def delete_index(self, name: str) -> None:
63
+ self._stub.DeleteIndex(pb2.DeleteIndexRequest(index_name=name))
64
+
65
+ def list_indexes(self) -> list[dict[str, Any]]:
66
+ resp = self._stub.ListIndexes(pb2.ListIndexesRequest())
67
+ return [
68
+ {"name": idx.name, "format": idx.format, "is_document_index": idx.is_document_index}
69
+ for idx in resp.indexes
70
+ ]
71
+
72
+ # ── Item Operations ───────────────────────────────────
73
+
74
+ def insert_item(
75
+ self,
76
+ index: str,
77
+ *,
78
+ text: str = "",
79
+ vector: list[float] | None = None,
80
+ metadata: dict[str, Any] | None = None,
81
+ id: str = "",
82
+ ) -> str:
83
+ req = pb2.InsertItemRequest(
84
+ index_name=index,
85
+ text=text,
86
+ id=id,
87
+ )
88
+ if vector:
89
+ req.vector.extend(vector)
90
+ if metadata:
91
+ _set_metadata(req.metadata, metadata)
92
+ return self._stub.InsertItem(req).id
93
+
94
+ def upsert_item(
95
+ self,
96
+ index: str,
97
+ id: str,
98
+ *,
99
+ text: str = "",
100
+ vector: list[float] | None = None,
101
+ metadata: dict[str, Any] | None = None,
102
+ ) -> str:
103
+ req = pb2.UpsertItemRequest(
104
+ index_name=index,
105
+ id=id,
106
+ text=text,
107
+ )
108
+ if vector:
109
+ req.vector.extend(vector)
110
+ if metadata:
111
+ _set_metadata(req.metadata, metadata)
112
+ return self._stub.UpsertItem(req).id
113
+
114
+ def get_item(self, index: str, id: str) -> dict[str, Any] | None:
115
+ resp = self._stub.GetItem(pb2.GetItemRequest(index_name=index, id=id))
116
+ return _item_to_dict(resp.item) if resp.HasField("item") else None
117
+
118
+ def delete_item(self, index: str, id: str) -> None:
119
+ self._stub.DeleteItem(pb2.DeleteItemRequest(index_name=index, id=id))
120
+
121
+ def list_items(
122
+ self, index: str, *, filter: dict[str, Any] | None = None
123
+ ) -> list[dict[str, Any]]:
124
+ req = pb2.ListItemsRequest(index_name=index)
125
+ if filter:
126
+ req.filter.CopyFrom(pb2.MetadataFilter(filter_json=json.dumps(filter)))
127
+ resp = self._stub.ListItems(req)
128
+ return [_item_to_dict(item) for item in resp.items]
129
+
130
+ # ── Query ─────────────────────────────────────────────
131
+
132
+ def query_items(
133
+ self,
134
+ index: str,
135
+ *,
136
+ text: str = "",
137
+ vector: list[float] | None = None,
138
+ top_k: int = 10,
139
+ filter: dict[str, Any] | None = None,
140
+ ) -> list[dict[str, Any]]:
141
+ req = pb2.QueryItemsRequest(
142
+ index_name=index,
143
+ text=text,
144
+ top_k=top_k,
145
+ )
146
+ if vector:
147
+ req.vector.extend(vector)
148
+ if filter:
149
+ req.filter.CopyFrom(pb2.MetadataFilter(filter_json=json.dumps(filter)))
150
+ resp = self._stub.QueryItems(req)
151
+ return [_item_to_dict(r) for r in resp.results]
152
+
153
+ def query_documents(
154
+ self,
155
+ index: str,
156
+ query: str,
157
+ *,
158
+ max_documents: int = 10,
159
+ max_chunks: int = 50,
160
+ filter: dict[str, Any] | None = None,
161
+ use_bm25: bool = False,
162
+ ) -> list[dict[str, Any]]:
163
+ req = pb2.QueryDocumentsRequest(
164
+ index_name=index,
165
+ query=query,
166
+ max_documents=max_documents,
167
+ max_chunks=max_chunks,
168
+ use_bm25=use_bm25,
169
+ )
170
+ if filter:
171
+ req.filter.CopyFrom(pb2.MetadataFilter(filter_json=json.dumps(filter)))
172
+ resp = self._stub.QueryDocuments(req)
173
+ return [
174
+ {
175
+ "uri": doc.uri,
176
+ "document_id": doc.document_id,
177
+ "score": doc.score,
178
+ "chunks": [
179
+ {"text": c.text, "score": c.score, "token_count": c.token_count}
180
+ for c in doc.chunks
181
+ ],
182
+ }
183
+ for doc in resp.results
184
+ ]
185
+
186
+ # ── Document Operations ───────────────────────────────
187
+
188
+ def upsert_document(
189
+ self,
190
+ index: str,
191
+ uri: str,
192
+ text: str,
193
+ *,
194
+ doc_type: str = "",
195
+ metadata: dict[str, Any] | None = None,
196
+ ) -> str:
197
+ req = pb2.UpsertDocumentRequest(
198
+ index_name=index,
199
+ uri=uri,
200
+ text=text,
201
+ doc_type=doc_type,
202
+ )
203
+ if metadata:
204
+ _set_metadata(req.metadata, metadata)
205
+ return self._stub.UpsertDocument(req).document_id
206
+
207
+ def delete_document(self, index: str, uri: str) -> None:
208
+ self._stub.DeleteDocument(pb2.DeleteDocumentRequest(index_name=index, uri=uri))
209
+
210
+ def list_documents(self, index: str) -> list[dict[str, Any]]:
211
+ resp = self._stub.ListDocuments(pb2.ListDocumentsRequest(index_name=index))
212
+ return [{"uri": d.uri, "document_id": d.document_id} for d in resp.documents]
213
+
214
+ # ── Stats ─────────────────────────────────────────────
215
+
216
+ def get_index_stats(self, index: str) -> dict[str, Any]:
217
+ resp = self._stub.GetIndexStats(pb2.GetIndexStatsRequest(index_name=index))
218
+ return {
219
+ "version": resp.version,
220
+ "format": resp.format,
221
+ "item_count": resp.item_count,
222
+ "metadata_config_count": resp.metadata_config_count,
223
+ }
224
+
225
+ def get_catalog_stats(self, index: str) -> dict[str, Any]:
226
+ resp = self._stub.GetCatalogStats(pb2.GetCatalogStatsRequest(index_name=index))
227
+ return {
228
+ "version": resp.version,
229
+ "document_count": resp.document_count,
230
+ "chunk_count": resp.chunk_count,
231
+ "metadata_counts": dict(resp.metadata_counts),
232
+ }
233
+
234
+ # ── Lifecycle ─────────────────────────────────────────
235
+
236
+ def healthcheck(self) -> dict[str, Any]:
237
+ resp = self._stub.Healthcheck(pb2.HealthcheckRequest())
238
+ return {
239
+ "status": resp.status,
240
+ "uptime_seconds": resp.uptime_seconds,
241
+ "loaded_indexes": resp.loaded_indexes,
242
+ }
243
+
244
+ def shutdown(self) -> None:
245
+ self._stub.Shutdown(pb2.ShutdownRequest())
246
+
247
+
248
+ # ── Helpers ───────────────────────────────────────────────
249
+
250
+
251
+ def _set_metadata(
252
+ proto_map: Any, metadata: dict[str, Any]
253
+ ) -> None:
254
+ for key, value in metadata.items():
255
+ if isinstance(value, bool):
256
+ proto_map[key].CopyFrom(pb2.MetadataValue(bool_value=value))
257
+ elif isinstance(value, (int, float)):
258
+ proto_map[key].CopyFrom(pb2.MetadataValue(number_value=value))
259
+ else:
260
+ proto_map[key].CopyFrom(pb2.MetadataValue(string_value=str(value)))
261
+
262
+
263
+ def _item_to_dict(item: Any) -> dict[str, Any]:
264
+ metadata: dict[str, Any] = {}
265
+ for key, val in item.metadata.items():
266
+ which = val.WhichOneof("value")
267
+ if which == "string_value":
268
+ metadata[key] = val.string_value
269
+ elif which == "number_value":
270
+ metadata[key] = val.number_value
271
+ elif which == "bool_value":
272
+ metadata[key] = val.bool_value
273
+ return {
274
+ "id": item.id,
275
+ "metadata": metadata,
276
+ "vector": list(item.vector),
277
+ "norm": item.norm,
278
+ "score": item.score,
279
+ }
@@ -0,0 +1,14 @@
1
+ [package]
2
+ name = "vectra-client"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ description = "Vectra gRPC client for Rust"
6
+ license = "MIT"
7
+
8
+ [dependencies]
9
+ tonic = "0.12"
10
+ prost = "0.13"
11
+ tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
12
+
13
+ [build-dependencies]
14
+ tonic-build = "0.12"
@@ -0,0 +1,39 @@
1
+ # Vectra Rust Client
2
+
3
+ Thin idiomatic Rust wrapper over the Vectra gRPC service.
4
+
5
+ ## Prerequisites
6
+
7
+ - Rust toolchain (`rustup`)
8
+ - `protoc` (Protocol Buffers compiler) — install via your package manager
9
+
10
+ ## Setup
11
+
12
+ 1. Copy the generated files (`vectra_service.proto`, `build.rs`, `Cargo.toml`, `lib.rs`) into your project.
13
+ 2. Place `vectra_service.proto` in the crate root (next to `Cargo.toml`).
14
+ 3. `tonic-build` in `build.rs` generates the stubs at compile time.
15
+
16
+ ## Usage
17
+
18
+ ```rust
19
+ use vectra_client::VectraClient;
20
+
21
+ #[tokio::main]
22
+ async fn main() -> Result<(), Box<dyn std::error::Error>> {
23
+ let mut client = VectraClient::connect("http://127.0.0.1:50051").await?;
24
+
25
+ // Create a document index
26
+ client.create_index("my-index", "json", true).await?;
27
+
28
+ // Add a document
29
+ client.upsert_document("my-index", "doc1.txt", "Hello world...", None, None).await?;
30
+
31
+ // Query
32
+ let results = client.query_documents("my-index", "hello", None).await?;
33
+ for doc in &results {
34
+ println!("{} (score: {:.3})", doc.uri, doc.score);
35
+ }
36
+
37
+ Ok(())
38
+ }
39
+ ```
@@ -0,0 +1,4 @@
1
+ fn main() -> Result<(), Box<dyn std::error::Error>> {
2
+ tonic_build::compile_protos("vectra_service.proto")?;
3
+ Ok(())
4
+ }
@@ -0,0 +1,284 @@
1
+ //! Vectra gRPC client — thin idiomatic wrapper over generated stubs.
2
+ //!
3
+ //! # Usage
4
+ //!
5
+ //! ```rust,no_run
6
+ //! use vectra_client::VectraClient;
7
+ //!
8
+ //! #[tokio::main]
9
+ //! async fn main() -> Result<(), Box<dyn std::error::Error>> {
10
+ //! let mut client = VectraClient::connect("http://127.0.0.1:50051").await?;
11
+ //! let results = client.query_documents("my-index", "search query", None).await?;
12
+ //! for doc in &results {
13
+ //! println!("{} (score: {:.3})", doc.uri, doc.score);
14
+ //! }
15
+ //! Ok(())
16
+ //! }
17
+ //! ```
18
+
19
+ pub mod vectra_service {
20
+ tonic::include_proto!("vectra");
21
+ }
22
+
23
+ use std::collections::HashMap;
24
+ use vectra_service::vectra_service_client::VectraServiceClient;
25
+ use vectra_service::*;
26
+
27
+ /// Idiomatic Rust client for the Vectra gRPC server.
28
+ pub struct VectraClient {
29
+ inner: VectraServiceClient<tonic::transport::Channel>,
30
+ }
31
+
32
+ impl VectraClient {
33
+ /// Connect to a Vectra gRPC server.
34
+ pub async fn connect(addr: &str) -> Result<Self, tonic::transport::Error> {
35
+ let inner = VectraServiceClient::connect(addr.to_string()).await?;
36
+ Ok(Self { inner })
37
+ }
38
+
39
+ // ── Index Management ──────────────────────────────────
40
+
41
+ pub async fn create_index(
42
+ &mut self,
43
+ name: &str,
44
+ format: &str,
45
+ is_document_index: bool,
46
+ ) -> Result<(), tonic::Status> {
47
+ let document_config = if is_document_index {
48
+ Some(DocumentIndexConfig {
49
+ version: 1,
50
+ chunk_size: 512,
51
+ chunk_overlap: 0,
52
+ embeddings_model: String::new(),
53
+ })
54
+ } else {
55
+ None
56
+ };
57
+ self.inner
58
+ .create_index(CreateIndexRequest {
59
+ index_name: name.to_string(),
60
+ format: format.to_string(),
61
+ is_document_index,
62
+ document_config,
63
+ })
64
+ .await?;
65
+ Ok(())
66
+ }
67
+
68
+ pub async fn delete_index(&mut self, name: &str) -> Result<(), tonic::Status> {
69
+ self.inner
70
+ .delete_index(DeleteIndexRequest {
71
+ index_name: name.to_string(),
72
+ })
73
+ .await?;
74
+ Ok(())
75
+ }
76
+
77
+ pub async fn list_indexes(&mut self) -> Result<Vec<IndexInfo>, tonic::Status> {
78
+ let resp = self.inner.list_indexes(ListIndexesRequest {}).await?;
79
+ Ok(resp.into_inner().indexes)
80
+ }
81
+
82
+ // ── Item Operations ───────────────────────────────────
83
+
84
+ pub async fn insert_item(
85
+ &mut self,
86
+ index: &str,
87
+ text: &str,
88
+ vector: Option<Vec<f32>>,
89
+ metadata: Option<HashMap<String, MetadataValue>>,
90
+ id: Option<&str>,
91
+ ) -> Result<String, tonic::Status> {
92
+ let resp = self
93
+ .inner
94
+ .insert_item(InsertItemRequest {
95
+ index_name: index.to_string(),
96
+ text: text.to_string(),
97
+ vector: vector.unwrap_or_default(),
98
+ metadata: metadata.unwrap_or_default(),
99
+ id: id.unwrap_or_default().to_string(),
100
+ })
101
+ .await?;
102
+ Ok(resp.into_inner().id)
103
+ }
104
+
105
+ pub async fn get_item(
106
+ &mut self,
107
+ index: &str,
108
+ id: &str,
109
+ ) -> Result<Option<ItemResult>, tonic::Status> {
110
+ let resp = self
111
+ .inner
112
+ .get_item(GetItemRequest {
113
+ index_name: index.to_string(),
114
+ id: id.to_string(),
115
+ })
116
+ .await?;
117
+ Ok(resp.into_inner().item)
118
+ }
119
+
120
+ pub async fn delete_item(&mut self, index: &str, id: &str) -> Result<(), tonic::Status> {
121
+ self.inner
122
+ .delete_item(DeleteItemRequest {
123
+ index_name: index.to_string(),
124
+ id: id.to_string(),
125
+ })
126
+ .await?;
127
+ Ok(())
128
+ }
129
+
130
+ // ── Query ─────────────────────────────────────────────
131
+
132
+ pub async fn query_items(
133
+ &mut self,
134
+ index: &str,
135
+ text: &str,
136
+ top_k: u32,
137
+ filter: Option<&str>,
138
+ ) -> Result<Vec<ItemResult>, tonic::Status> {
139
+ let resp = self
140
+ .inner
141
+ .query_items(QueryItemsRequest {
142
+ index_name: index.to_string(),
143
+ text: text.to_string(),
144
+ vector: vec![],
145
+ top_k,
146
+ filter: filter.map(|f| MetadataFilter {
147
+ filter_json: f.to_string(),
148
+ }),
149
+ })
150
+ .await?;
151
+ Ok(resp.into_inner().results)
152
+ }
153
+
154
+ pub async fn query_documents(
155
+ &mut self,
156
+ index: &str,
157
+ query: &str,
158
+ filter: Option<&str>,
159
+ ) -> Result<Vec<DocumentResult>, tonic::Status> {
160
+ self.query_documents_opts(index, query, 10, 50, filter, false)
161
+ .await
162
+ }
163
+
164
+ pub async fn query_documents_opts(
165
+ &mut self,
166
+ index: &str,
167
+ query: &str,
168
+ max_documents: u32,
169
+ max_chunks: u32,
170
+ filter: Option<&str>,
171
+ use_bm25: bool,
172
+ ) -> Result<Vec<DocumentResult>, tonic::Status> {
173
+ let resp = self
174
+ .inner
175
+ .query_documents(QueryDocumentsRequest {
176
+ index_name: index.to_string(),
177
+ query: query.to_string(),
178
+ max_documents,
179
+ max_chunks,
180
+ filter: filter.map(|f| MetadataFilter {
181
+ filter_json: f.to_string(),
182
+ }),
183
+ use_bm25,
184
+ })
185
+ .await?;
186
+ Ok(resp.into_inner().results)
187
+ }
188
+
189
+ // ── Document Operations ───────────────────────────────
190
+
191
+ pub async fn upsert_document(
192
+ &mut self,
193
+ index: &str,
194
+ uri: &str,
195
+ text: &str,
196
+ doc_type: Option<&str>,
197
+ metadata: Option<HashMap<String, MetadataValue>>,
198
+ ) -> Result<String, tonic::Status> {
199
+ let resp = self
200
+ .inner
201
+ .upsert_document(UpsertDocumentRequest {
202
+ index_name: index.to_string(),
203
+ uri: uri.to_string(),
204
+ text: text.to_string(),
205
+ doc_type: doc_type.unwrap_or_default().to_string(),
206
+ metadata: metadata.unwrap_or_default(),
207
+ })
208
+ .await?;
209
+ Ok(resp.into_inner().document_id)
210
+ }
211
+
212
+ pub async fn delete_document(&mut self, index: &str, uri: &str) -> Result<(), tonic::Status> {
213
+ self.inner
214
+ .delete_document(DeleteDocumentRequest {
215
+ index_name: index.to_string(),
216
+ uri: uri.to_string(),
217
+ })
218
+ .await?;
219
+ Ok(())
220
+ }
221
+
222
+ pub async fn list_documents(
223
+ &mut self,
224
+ index: &str,
225
+ ) -> Result<Vec<DocumentInfo>, tonic::Status> {
226
+ let resp = self
227
+ .inner
228
+ .list_documents(ListDocumentsRequest {
229
+ index_name: index.to_string(),
230
+ })
231
+ .await?;
232
+ Ok(resp.into_inner().documents)
233
+ }
234
+
235
+ // ── Stats ─────────────────────────────────────────────
236
+
237
+ pub async fn get_index_stats(
238
+ &mut self,
239
+ index: &str,
240
+ ) -> Result<GetIndexStatsResponse, tonic::Status> {
241
+ let resp = self
242
+ .inner
243
+ .get_index_stats(GetIndexStatsRequest {
244
+ index_name: index.to_string(),
245
+ })
246
+ .await?;
247
+ Ok(resp.into_inner())
248
+ }
249
+
250
+ // ── Lifecycle ─────────────────────────────────────────
251
+
252
+ pub async fn healthcheck(&mut self) -> Result<HealthcheckResponse, tonic::Status> {
253
+ let resp = self.inner.healthcheck(HealthcheckRequest {}).await?;
254
+ Ok(resp.into_inner())
255
+ }
256
+
257
+ pub async fn shutdown(&mut self) -> Result<(), tonic::Status> {
258
+ self.inner.shutdown(ShutdownRequest {}).await?;
259
+ Ok(())
260
+ }
261
+ }
262
+
263
+ // ── Helpers ───────────────────────────────────────────────
264
+
265
+ /// Create a string metadata value.
266
+ pub fn meta_string(s: &str) -> MetadataValue {
267
+ MetadataValue {
268
+ value: Some(metadata_value::Value::StringValue(s.to_string())),
269
+ }
270
+ }
271
+
272
+ /// Create a numeric metadata value.
273
+ pub fn meta_number(n: f64) -> MetadataValue {
274
+ MetadataValue {
275
+ value: Some(metadata_value::Value::NumberValue(n)),
276
+ }
277
+ }
278
+
279
+ /// Create a boolean metadata value.
280
+ pub fn meta_bool(b: bool) -> MetadataValue {
281
+ MetadataValue {
282
+ value: Some(metadata_value::Value::BoolValue(b)),
283
+ }
284
+ }