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
@@ -0,0 +1,96 @@
1
+ # Vectra TypeScript gRPC Client
2
+
3
+ A typed client wrapper for communicating with a running `vectra serve` instance over gRPC.
4
+
5
+ ## Prerequisites
6
+
7
+ - Node.js 18+
8
+ - A running Vectra gRPC server (`npx vectra serve <index>`)
9
+
10
+ ## Setup
11
+
12
+ Install the required gRPC packages:
13
+
14
+ ```bash
15
+ npm install @grpc/grpc-js @grpc/proto-loader
16
+ ```
17
+
18
+ No separate code generation step is needed — the proto file is loaded dynamically at runtime via `@grpc/proto-loader`.
19
+
20
+ ## Usage
21
+
22
+ ```typescript
23
+ import { VectraClient } from './VectraClient';
24
+
25
+ const client = new VectraClient(); // localhost:50051
26
+
27
+ // Check server health
28
+ const health = await client.healthcheck();
29
+ console.log(health.status, health.loadedIndexes);
30
+
31
+ // Query documents
32
+ const results = await client.queryDocuments('my-index', 'what is vector search?', {
33
+ maxDocuments: 5,
34
+ });
35
+ for (const doc of results) {
36
+ console.log(`${doc.uri} (score: ${doc.score})`);
37
+ for (const chunk of doc.chunks) {
38
+ console.log(` ${chunk.text}`);
39
+ }
40
+ }
41
+
42
+ // Insert an item with metadata
43
+ const id = await client.insertItem('my-index', {
44
+ text: 'hello world',
45
+ metadata: { source: 'example', priority: 1, active: true },
46
+ });
47
+
48
+ // Query items with filter
49
+ const items = await client.queryItems('my-index', {
50
+ text: 'hello',
51
+ topK: 5,
52
+ filter: { source: 'example' },
53
+ });
54
+
55
+ // Clean up
56
+ client.close();
57
+ ```
58
+
59
+ ## API
60
+
61
+ The `VectraClient` class provides typed methods for all 18 Vectra gRPC RPCs:
62
+
63
+ ### Index Management
64
+ - `createIndex(name, options?)` — Create a new index
65
+ - `deleteIndex(name)` — Delete an index
66
+ - `listIndexes()` — List all loaded indexes
67
+
68
+ ### Item Operations
69
+ - `insertItem(index, options)` — Insert a new item
70
+ - `upsertItem(index, id, options)` — Insert or update an item
71
+ - `getItem(index, id)` — Get an item by ID
72
+ - `deleteItem(index, id)` — Delete an item
73
+ - `listItems(index, filter?)` — List items with optional filter
74
+
75
+ ### Query
76
+ - `queryItems(index, options)` — Query by text or vector
77
+ - `queryDocuments(index, query, options?)` — Query documents with semantic + optional BM25
78
+
79
+ ### Document Operations
80
+ - `upsertDocument(index, uri, text, options?)` — Insert or update a document
81
+ - `deleteDocument(index, uri)` — Delete a document
82
+ - `listDocuments(index)` — List all documents
83
+
84
+ ### Stats
85
+ - `getIndexStats(index)` — Get index statistics
86
+ - `getCatalogStats(index)` — Get document catalog statistics
87
+
88
+ ### Lifecycle
89
+ - `healthcheck()` — Check server health
90
+ - `shutdown()` — Shut down the server
91
+
92
+ ## Custom Connection
93
+
94
+ ```typescript
95
+ const client = new VectraClient('192.168.1.100', 9090);
96
+ ```
@@ -0,0 +1,374 @@
1
+ /**
2
+ * Vectra gRPC client — thin idiomatic wrapper over generated stubs.
3
+ *
4
+ * Usage:
5
+ * import { VectraClient } from './VectraClient';
6
+ *
7
+ * const client = new VectraClient();
8
+ * const results = await client.queryDocuments('my-index', 'search query');
9
+ * client.close();
10
+ *
11
+ * Generate stubs first:
12
+ * npm install @grpc/grpc-js @grpc/proto-loader
13
+ * // Proto is loaded dynamically — no separate codegen step required.
14
+ */
15
+
16
+ import * as grpc from '@grpc/grpc-js';
17
+ import * as protoLoader from '@grpc/proto-loader';
18
+ import * as path from 'path';
19
+
20
+ // Load proto definition dynamically
21
+ const PROTO_PATH = path.join(__dirname, 'vectra_service.proto');
22
+ const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
23
+ keepCase: false,
24
+ longs: Number,
25
+ enums: String,
26
+ defaults: true,
27
+ oneofs: true,
28
+ });
29
+ const protoDescriptor = grpc.loadPackageDefinition(packageDefinition) as any;
30
+ const vectra = protoDescriptor.vectra;
31
+
32
+ // ── Types ────────────────────────────────────────────────
33
+
34
+ export interface MetadataValue {
35
+ stringValue?: string;
36
+ numberValue?: number;
37
+ boolValue?: boolean;
38
+ }
39
+
40
+ export interface ItemResult {
41
+ id: string;
42
+ metadata: Record<string, string | number | boolean>;
43
+ vector: number[];
44
+ norm: number;
45
+ score: number;
46
+ }
47
+
48
+ export interface DocumentResult {
49
+ uri: string;
50
+ documentId: string;
51
+ score: number;
52
+ chunks: Array<{ text: string; score: number; tokenCount: number }>;
53
+ }
54
+
55
+ export interface IndexInfo {
56
+ name: string;
57
+ format: string;
58
+ isDocumentIndex: boolean;
59
+ }
60
+
61
+ export interface IndexStats {
62
+ version: number;
63
+ format: string;
64
+ itemCount: number;
65
+ metadataConfigCount: number;
66
+ }
67
+
68
+ export interface CatalogStats {
69
+ version: number;
70
+ documentCount: number;
71
+ chunkCount: number;
72
+ metadataCounts: Record<string, number>;
73
+ }
74
+
75
+ export interface HealthcheckResult {
76
+ status: string;
77
+ uptimeSeconds: number;
78
+ loadedIndexes: string[];
79
+ }
80
+
81
+ export interface QueryDocumentsOptions {
82
+ maxDocuments?: number;
83
+ maxChunks?: number;
84
+ filter?: Record<string, any>;
85
+ useBm25?: boolean;
86
+ }
87
+
88
+ export interface QueryItemsOptions {
89
+ text?: string;
90
+ vector?: number[];
91
+ topK?: number;
92
+ filter?: Record<string, any>;
93
+ }
94
+
95
+ // ── Client ───────────────────────────────────────────────
96
+
97
+ export class VectraClient {
98
+ private readonly _client: any;
99
+
100
+ constructor(host: string = '127.0.0.1', port: number = 50051) {
101
+ this._client = new vectra.VectraService(
102
+ `${host}:${port}`,
103
+ grpc.credentials.createInsecure()
104
+ );
105
+ }
106
+
107
+ public close(): void {
108
+ this._client.close();
109
+ }
110
+
111
+ // ── Index Management ─────────────────────────────────
112
+
113
+ public createIndex(
114
+ name: string,
115
+ options?: {
116
+ format?: string;
117
+ isDocumentIndex?: boolean;
118
+ chunkSize?: number;
119
+ chunkOverlap?: number;
120
+ }
121
+ ): Promise<void> {
122
+ const req: any = { indexName: name, format: options?.format ?? 'json' };
123
+ if (options?.isDocumentIndex) {
124
+ req.isDocumentIndex = true;
125
+ req.documentConfig = {
126
+ version: 1,
127
+ chunkSize: options.chunkSize ?? 512,
128
+ chunkOverlap: options.chunkOverlap ?? 0,
129
+ };
130
+ }
131
+ return this._unary('createIndex', req);
132
+ }
133
+
134
+ public deleteIndex(name: string): Promise<void> {
135
+ return this._unary('deleteIndex', { indexName: name });
136
+ }
137
+
138
+ public async listIndexes(): Promise<IndexInfo[]> {
139
+ const resp = await this._unary('listIndexes', {});
140
+ return (resp.indexes ?? []).map((idx: any) => ({
141
+ name: idx.name,
142
+ format: idx.format,
143
+ isDocumentIndex: idx.isDocumentIndex,
144
+ }));
145
+ }
146
+
147
+ // ── Item Operations ──────────────────────────────────
148
+
149
+ public async insertItem(
150
+ index: string,
151
+ options: {
152
+ text?: string;
153
+ vector?: number[];
154
+ metadata?: Record<string, string | number | boolean>;
155
+ id?: string;
156
+ }
157
+ ): Promise<string> {
158
+ const req: any = {
159
+ indexName: index,
160
+ text: options.text ?? '',
161
+ id: options.id ?? '',
162
+ };
163
+ if (options.vector) req.vector = options.vector;
164
+ if (options.metadata) req.metadata = toProtoMetadata(options.metadata);
165
+ const resp = await this._unary('insertItem', req);
166
+ return resp.id;
167
+ }
168
+
169
+ public async upsertItem(
170
+ index: string,
171
+ id: string,
172
+ options: {
173
+ text?: string;
174
+ vector?: number[];
175
+ metadata?: Record<string, string | number | boolean>;
176
+ }
177
+ ): Promise<string> {
178
+ const req: any = {
179
+ indexName: index,
180
+ id,
181
+ text: options.text ?? '',
182
+ };
183
+ if (options.vector) req.vector = options.vector;
184
+ if (options.metadata) req.metadata = toProtoMetadata(options.metadata);
185
+ const resp = await this._unary('upsertItem', req);
186
+ return resp.id;
187
+ }
188
+
189
+ public async getItem(index: string, id: string): Promise<ItemResult | null> {
190
+ const resp = await this._unary('getItem', { indexName: index, id });
191
+ return resp.item ? itemToResult(resp.item) : null;
192
+ }
193
+
194
+ public deleteItem(index: string, id: string): Promise<void> {
195
+ return this._unary('deleteItem', { indexName: index, id });
196
+ }
197
+
198
+ public async listItems(
199
+ index: string,
200
+ filter?: Record<string, any>
201
+ ): Promise<ItemResult[]> {
202
+ const req: any = { indexName: index };
203
+ if (filter) req.filter = { filterJson: JSON.stringify(filter) };
204
+ const resp = await this._unary('listItems', req);
205
+ return (resp.items ?? []).map(itemToResult);
206
+ }
207
+
208
+ // ── Query ────────────────────────────────────────────
209
+
210
+ public async queryItems(
211
+ index: string,
212
+ options: QueryItemsOptions
213
+ ): Promise<ItemResult[]> {
214
+ const req: any = {
215
+ indexName: index,
216
+ text: options.text ?? '',
217
+ topK: options.topK ?? 10,
218
+ };
219
+ if (options.vector) req.vector = options.vector;
220
+ if (options.filter) req.filter = { filterJson: JSON.stringify(options.filter) };
221
+ const resp = await this._unary('queryItems', req);
222
+ return (resp.results ?? []).map(itemToResult);
223
+ }
224
+
225
+ public async queryDocuments(
226
+ index: string,
227
+ query: string,
228
+ options?: QueryDocumentsOptions
229
+ ): Promise<DocumentResult[]> {
230
+ const req: any = {
231
+ indexName: index,
232
+ query,
233
+ maxDocuments: options?.maxDocuments ?? 10,
234
+ maxChunks: options?.maxChunks ?? 50,
235
+ useBm25: options?.useBm25 ?? false,
236
+ };
237
+ if (options?.filter) req.filter = { filterJson: JSON.stringify(options.filter) };
238
+ const resp = await this._unary('queryDocuments', req);
239
+ return (resp.results ?? []).map((doc: any) => ({
240
+ uri: doc.uri,
241
+ documentId: doc.documentId,
242
+ score: doc.score,
243
+ chunks: (doc.chunks ?? []).map((c: any) => ({
244
+ text: c.text,
245
+ score: c.score,
246
+ tokenCount: c.tokenCount,
247
+ })),
248
+ }));
249
+ }
250
+
251
+ // ── Document Operations ──────────────────────────────
252
+
253
+ public async upsertDocument(
254
+ index: string,
255
+ uri: string,
256
+ text: string,
257
+ options?: {
258
+ docType?: string;
259
+ metadata?: Record<string, string | number | boolean>;
260
+ }
261
+ ): Promise<string> {
262
+ const req: any = {
263
+ indexName: index,
264
+ uri,
265
+ text,
266
+ docType: options?.docType ?? '',
267
+ };
268
+ if (options?.metadata) req.metadata = toProtoMetadata(options.metadata);
269
+ const resp = await this._unary('upsertDocument', req);
270
+ return resp.documentId;
271
+ }
272
+
273
+ public deleteDocument(index: string, uri: string): Promise<void> {
274
+ return this._unary('deleteDocument', { indexName: index, uri });
275
+ }
276
+
277
+ public async listDocuments(
278
+ index: string
279
+ ): Promise<Array<{ uri: string; documentId: string }>> {
280
+ const resp = await this._unary('listDocuments', { indexName: index });
281
+ return (resp.documents ?? []).map((d: any) => ({
282
+ uri: d.uri,
283
+ documentId: d.documentId,
284
+ }));
285
+ }
286
+
287
+ // ── Stats ────────────────────────────────────────────
288
+
289
+ public async getIndexStats(index: string): Promise<IndexStats> {
290
+ const resp = await this._unary('getIndexStats', { indexName: index });
291
+ return {
292
+ version: resp.version,
293
+ format: resp.format,
294
+ itemCount: resp.itemCount,
295
+ metadataConfigCount: resp.metadataConfigCount,
296
+ };
297
+ }
298
+
299
+ public async getCatalogStats(index: string): Promise<CatalogStats> {
300
+ const resp = await this._unary('getCatalogStats', { indexName: index });
301
+ return {
302
+ version: resp.version,
303
+ documentCount: resp.documentCount,
304
+ chunkCount: resp.chunkCount,
305
+ metadataCounts: resp.metadataCounts ?? {},
306
+ };
307
+ }
308
+
309
+ // ── Lifecycle ────────────────────────────────────────
310
+
311
+ public async healthcheck(): Promise<HealthcheckResult> {
312
+ const resp = await this._unary('healthcheck', {});
313
+ return {
314
+ status: resp.status,
315
+ uptimeSeconds: resp.uptimeSeconds,
316
+ loadedIndexes: resp.loadedIndexes ?? [],
317
+ };
318
+ }
319
+
320
+ public shutdown(): Promise<void> {
321
+ return this._unary('shutdown', {});
322
+ }
323
+
324
+ // ── Internals ────────────────────────────────────────
325
+
326
+ private _unary(method: string, request: any): Promise<any> {
327
+ return new Promise((resolve, reject) => {
328
+ this._client[method](request, (err: grpc.ServiceError | null, response: any) => {
329
+ if (err) reject(err);
330
+ else resolve(response);
331
+ });
332
+ });
333
+ }
334
+ }
335
+
336
+ // ── Helpers ──────────────────────────────────────────────
337
+
338
+ function toProtoMetadata(
339
+ metadata: Record<string, string | number | boolean>
340
+ ): Record<string, MetadataValue> {
341
+ const result: Record<string, MetadataValue> = {};
342
+ for (const [key, value] of Object.entries(metadata)) {
343
+ if (typeof value === 'boolean') {
344
+ result[key] = { boolValue: value };
345
+ } else if (typeof value === 'number') {
346
+ result[key] = { numberValue: value };
347
+ } else {
348
+ result[key] = { stringValue: String(value) };
349
+ }
350
+ }
351
+ return result;
352
+ }
353
+
354
+ function itemToResult(item: any): ItemResult {
355
+ const metadata: Record<string, string | number | boolean> = {};
356
+ if (item.metadata) {
357
+ for (const [key, val] of Object.entries<any>(item.metadata)) {
358
+ if (val.stringValue !== undefined && val.stringValue !== '') {
359
+ metadata[key] = val.stringValue;
360
+ } else if (val.numberValue !== undefined && val.numberValue !== 0) {
361
+ metadata[key] = val.numberValue;
362
+ } else if (val.boolValue !== undefined) {
363
+ metadata[key] = val.boolValue;
364
+ }
365
+ }
366
+ }
367
+ return {
368
+ id: item.id,
369
+ metadata,
370
+ vector: item.vector ?? [],
371
+ norm: item.norm,
372
+ score: item.score,
373
+ };
374
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Vectra gRPC client — thin idiomatic wrapper over generated stubs.
3
+ *
4
+ * Usage:
5
+ * import { VectraClient } from './VectraClient';
6
+ *
7
+ * const client = new VectraClient();
8
+ * const results = await client.queryDocuments('my-index', 'search query');
9
+ * client.close();
10
+ *
11
+ * Generate stubs first:
12
+ * npm install @grpc/grpc-js @grpc/proto-loader
13
+ * // Proto is loaded dynamically — no separate codegen step required.
14
+ */
15
+ export interface MetadataValue {
16
+ stringValue?: string;
17
+ numberValue?: number;
18
+ boolValue?: boolean;
19
+ }
20
+ export interface ItemResult {
21
+ id: string;
22
+ metadata: Record<string, string | number | boolean>;
23
+ vector: number[];
24
+ norm: number;
25
+ score: number;
26
+ }
27
+ export interface DocumentResult {
28
+ uri: string;
29
+ documentId: string;
30
+ score: number;
31
+ chunks: Array<{
32
+ text: string;
33
+ score: number;
34
+ tokenCount: number;
35
+ }>;
36
+ }
37
+ export interface IndexInfo {
38
+ name: string;
39
+ format: string;
40
+ isDocumentIndex: boolean;
41
+ }
42
+ export interface IndexStats {
43
+ version: number;
44
+ format: string;
45
+ itemCount: number;
46
+ metadataConfigCount: number;
47
+ }
48
+ export interface CatalogStats {
49
+ version: number;
50
+ documentCount: number;
51
+ chunkCount: number;
52
+ metadataCounts: Record<string, number>;
53
+ }
54
+ export interface HealthcheckResult {
55
+ status: string;
56
+ uptimeSeconds: number;
57
+ loadedIndexes: string[];
58
+ }
59
+ export interface QueryDocumentsOptions {
60
+ maxDocuments?: number;
61
+ maxChunks?: number;
62
+ filter?: Record<string, any>;
63
+ useBm25?: boolean;
64
+ }
65
+ export interface QueryItemsOptions {
66
+ text?: string;
67
+ vector?: number[];
68
+ topK?: number;
69
+ filter?: Record<string, any>;
70
+ }
71
+ export declare class VectraClient {
72
+ private readonly _client;
73
+ constructor(host?: string, port?: number);
74
+ close(): void;
75
+ createIndex(name: string, options?: {
76
+ format?: string;
77
+ isDocumentIndex?: boolean;
78
+ chunkSize?: number;
79
+ chunkOverlap?: number;
80
+ }): Promise<void>;
81
+ deleteIndex(name: string): Promise<void>;
82
+ listIndexes(): Promise<IndexInfo[]>;
83
+ insertItem(index: string, options: {
84
+ text?: string;
85
+ vector?: number[];
86
+ metadata?: Record<string, string | number | boolean>;
87
+ id?: string;
88
+ }): Promise<string>;
89
+ upsertItem(index: string, id: string, options: {
90
+ text?: string;
91
+ vector?: number[];
92
+ metadata?: Record<string, string | number | boolean>;
93
+ }): Promise<string>;
94
+ getItem(index: string, id: string): Promise<ItemResult | null>;
95
+ deleteItem(index: string, id: string): Promise<void>;
96
+ listItems(index: string, filter?: Record<string, any>): Promise<ItemResult[]>;
97
+ queryItems(index: string, options: QueryItemsOptions): Promise<ItemResult[]>;
98
+ queryDocuments(index: string, query: string, options?: QueryDocumentsOptions): Promise<DocumentResult[]>;
99
+ upsertDocument(index: string, uri: string, text: string, options?: {
100
+ docType?: string;
101
+ metadata?: Record<string, string | number | boolean>;
102
+ }): Promise<string>;
103
+ deleteDocument(index: string, uri: string): Promise<void>;
104
+ listDocuments(index: string): Promise<Array<{
105
+ uri: string;
106
+ documentId: string;
107
+ }>>;
108
+ getIndexStats(index: string): Promise<IndexStats>;
109
+ getCatalogStats(index: string): Promise<CatalogStats>;
110
+ healthcheck(): Promise<HealthcheckResult>;
111
+ shutdown(): Promise<void>;
112
+ private _unary;
113
+ }
114
+ //# sourceMappingURL=VectraClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectraClient.d.ts","sourceRoot":"","sources":["../../../src/templates/typescript/VectraClient.ts"],"names":[],"mappings":"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"}