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
package/src/types.ts CHANGED
@@ -4,17 +4,17 @@
4
4
  * An AI model that can be used to create embeddings.
5
5
  */
6
6
  export interface EmbeddingsModel {
7
- /**
8
- * Maximum number of tokens
9
- */
10
- readonly maxTokens: number;
11
-
12
- /**
13
- * Creates embeddings for the given inputs.
14
- * @param inputs Text inputs to create embeddings for.
15
- * @returns A `EmbeddingsResponse` with a status and the generated embeddings or a message when an error occurs.
16
- */
17
- createEmbeddings(inputs: string|string[]): Promise<EmbeddingsResponse>;
7
+ /**
8
+ * Maximum number of tokens
9
+ */
10
+ readonly maxTokens: number;
11
+
12
+ /**
13
+ * Creates embeddings for the given inputs.
14
+ * @param inputs Text inputs to create embeddings for.
15
+ * @returns A `EmbeddingsResponse` with a status and the generated embeddings or a message when an error occurs.
16
+ */
17
+ createEmbeddings(inputs: string | string[]): Promise<EmbeddingsResponse>;
18
18
  }
19
19
 
20
20
  /**
@@ -30,147 +30,155 @@ export type EmbeddingsResponseStatus = 'success' | 'error' | 'rate_limited' | 'c
30
30
  * Response returned by a `EmbeddingsClient`.
31
31
  */
32
32
  export interface EmbeddingsResponse {
33
- /**
34
- * Status of the embeddings response.
35
- */
36
- status: EmbeddingsResponseStatus;
37
-
38
- /**
39
- * Optional. Embeddings for the given inputs.
40
- */
41
- output?: number[][];
42
-
43
- /**
44
- * Optional. Message when status is not equal to `success`.
45
- */
46
- message?: string;
47
-
48
- /**
49
- * Optional. Model used to create the embeddings.
50
- */
51
- model?: string;
52
-
53
- /**
54
- * Optional. Usage statistics for the request.
55
- */
56
- usage?: Record<string, any>;
33
+ /**
34
+ * Status of the embeddings response.
35
+ */
36
+ status: EmbeddingsResponseStatus;
37
+
38
+ /**
39
+ * Optional. Embeddings for the given inputs.
40
+ */
41
+ output?: number[][];
42
+
43
+ /**
44
+ * Optional. Message when status is not equal to `success`.
45
+ */
46
+ message?: string;
47
+
48
+ /**
49
+ * Optional. Model used to create the embeddings.
50
+ */
51
+ model?: string;
52
+
53
+ /**
54
+ * Optional. Usage statistics for the request.
55
+ */
56
+ usage?: Record<string, any>;
57
57
  }
58
58
 
59
59
  export interface TextChunk {
60
- text: string;
61
- tokens: number[];
62
- startPos: number;
63
- endPos: number;
64
- startOverlap: number[];
65
- endOverlap: number[];
60
+ text: string;
61
+ tokens: number[];
62
+ startPos: number;
63
+ endPos: number;
64
+ startOverlap: number[];
65
+ endOverlap: number[];
66
66
  }
67
67
 
68
68
  export interface TextFetcher {
69
- fetch(uri: string, onDocument: (uri: string, text: string, docType?: string) => Promise<boolean>): Promise<boolean>;
69
+ fetch(uri: string, onDocument: (uri: string, text: string, docType?: string) => Promise<boolean>): Promise<boolean>;
70
70
  }
71
71
 
72
72
  export interface IndexStats {
73
- version: number;
74
- metadata_config: {
75
- indexed?: string[];
76
- };
77
- items: number;
73
+ version: number;
74
+ metadata_config: {
75
+ indexed?: string[];
76
+ };
77
+ items: number;
78
78
  }
79
79
 
80
- export interface IndexItem<TMetadata = Record<string,MetadataTypes>> {
81
- id: string;
82
- metadata: TMetadata;
83
- vector: number[];
84
- norm: number;
85
- metadataFile?: string;
80
+ export interface IndexItem<TMetadata = Record<string, MetadataTypes>> {
81
+ id: string;
82
+ metadata: TMetadata;
83
+ vector: number[];
84
+ norm: number;
85
+ metadataFile?: string;
86
86
  }
87
87
 
88
88
  export interface MetadataFilter {
89
89
 
90
- /**
91
- * Equal to (number, string, boolean)
92
- */
93
- '$eq'?: number|string|boolean;
94
-
95
- /**
96
- * Not equal to (number, string, boolean)
97
- */
98
- '$ne'?: number|string|boolean;
99
-
100
- /**
101
- * Greater than (number)
102
- */
103
- '$gt'?: number;
104
-
105
- /**
106
- * Greater than or equal to (number)
107
- */
108
- '$gte'?: number;
109
-
110
- /**
111
- * Less than (number)
112
- */
113
- '$lt'?: number;
114
-
115
- /**
116
- * Less than or equal to (number)
117
- */
118
- '$lte'?: number;
119
-
120
- /**
121
- * In array (string or number)
122
- */
123
- '$in'?: (number|string)[];
124
-
125
- /**
126
- * Not in array (string or number)
127
- */
128
- '$nin'?: (number|string)[];
129
-
130
- /**
131
- * AND (MetadataFilter[])
132
- */
133
- '$and'?: MetadataFilter[];
134
-
135
- /**
136
- * OR (MetadataFilter[])
137
- */
138
- '$or'?: MetadataFilter[];
139
-
140
- [key: string]: unknown;
90
+ /**
91
+ * Equal to (number, string, boolean)
92
+ */
93
+ '$eq'?: number | string | boolean;
94
+
95
+ /**
96
+ * Not equal to (number, string, boolean)
97
+ */
98
+ '$ne'?: number | string | boolean;
99
+
100
+ /**
101
+ * Greater than (number)
102
+ */
103
+ '$gt'?: number;
104
+
105
+ /**
106
+ * Greater than or equal to (number)
107
+ */
108
+ '$gte'?: number;
109
+
110
+ /**
111
+ * Less than (number)
112
+ */
113
+ '$lt'?: number;
114
+
115
+ /**
116
+ * Less than or equal to (number)
117
+ */
118
+ '$lte'?: number;
119
+
120
+ /**
121
+ * In array (string or number)
122
+ */
123
+ '$in'?: (number | string)[];
124
+
125
+ /**
126
+ * Not in array (string or number)
127
+ */
128
+ '$nin'?: (number | string)[];
129
+
130
+ /**
131
+ * AND (MetadataFilter[])
132
+ */
133
+ '$and'?: MetadataFilter[];
134
+
135
+ /**
136
+ * OR (MetadataFilter[])
137
+ */
138
+ '$or'?: MetadataFilter[];
139
+
140
+ [key: string]: unknown;
141
141
  }
142
142
 
143
- export type MetadataTypes = number|string|boolean;
143
+ export type MetadataTypes = number | string | boolean;
144
144
 
145
- export interface QueryResult<TMetadata = Record<string,MetadataTypes>> {
146
- item: IndexItem<TMetadata>;
147
- score: number;
145
+ export interface QueryResult<TMetadata = Record<string, MetadataTypes>> {
146
+ item: IndexItem<TMetadata>;
147
+ score: number;
148
148
  }
149
149
 
150
150
  export interface Tokenizer {
151
- decode(tokens: number[]): string;
152
- encode(text: string): number[];
151
+ decode(tokens: number[]): string;
152
+ encode(text: string): number[];
153
153
  }
154
154
 
155
155
  export interface DocumentChunkMetadata {
156
- documentId: string;
157
- startPos: number;
158
- endPos: number;
159
- [key: string]: MetadataTypes;
156
+ documentId: string;
157
+ startPos: number;
158
+ endPos: number;
159
+ [key: string]: MetadataTypes;
160
160
  }
161
161
 
162
162
  export interface DocumentCatalogStats {
163
+ version: number;
164
+ documents: number;
165
+ chunks: number;
166
+ metadata_config: {
167
+ indexed?: string[];
168
+ };
169
+ }
170
+
171
+ export interface DocumentTextSection {
172
+ text: string;
173
+ tokenCount: number;
174
+ score: number;
175
+ isBm25: boolean;
176
+ }
177
+
178
+ export interface IndexData {
163
179
  version: number;
164
- documents: number;
165
- chunks: number;
166
180
  metadata_config: {
167
181
  indexed?: string[];
168
182
  };
183
+ items: IndexItem[];
169
184
  }
170
-
171
- export interface DocumentTextSection {
172
- text: string;
173
- tokenCount: number;
174
- score: number;
175
- isBm25: boolean;
176
- }
@@ -0,0 +1 @@
1
+ export * from './pathUtils';
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Universal path utilities that work in Node, Browser, and Electron.
3
+ * Replaces Node's 'path' module for cross-platform compatibility.
4
+ */
5
+ export const pathUtils = {
6
+ /**
7
+ * Path separator. Always '/' for consistency across platforms.
8
+ */
9
+ sep: '/' as const,
10
+ /**
11
+ * Join path segments together.
12
+ */
13
+ join(...parts: string[]): string {
14
+ return parts
15
+ .map((part, i) => {
16
+ if (i === 0) return part.replace(/[/\\]+$/, '');
17
+ return part.replace(/^[/\\]+|[/\\]+$/g, '');
18
+ })
19
+ .filter(Boolean)
20
+ .join('/');
21
+ },
22
+
23
+ /**
24
+ * Get the last portion of a path.
25
+ */
26
+ basename(filePath: string, ext?: string): string {
27
+ const base = filePath.split(/[/\\]/).pop() || '';
28
+ if (ext && base.endsWith(ext)) {
29
+ return base.slice(0, -ext.length);
30
+ }
31
+ return base;
32
+ },
33
+
34
+ /**
35
+ * Get the directory name of a path.
36
+ */
37
+ dirname(filePath: string): string {
38
+ const parts = filePath.split(/[/\\]/);
39
+ parts.pop();
40
+ return parts.join('/') || '.';
41
+ },
42
+
43
+ /**
44
+ * Get the extension of the path.
45
+ */
46
+ extname(filePath: string): string {
47
+ const base = pathUtils.basename(filePath);
48
+ const dotIndex = base.lastIndexOf('.');
49
+ return dotIndex > 0 ? base.slice(dotIndex) : '';
50
+ },
51
+
52
+ /**
53
+ * Normalize a path, resolving '..' and '.' segments.
54
+ */
55
+ normalize(filePath: string): string {
56
+ const isAbsolute = filePath.startsWith('/') || /^[a-zA-Z]:/.test(filePath);
57
+ const parts = filePath.split(/[/\\]/);
58
+ const result: string[] = [];
59
+
60
+ for (const part of parts) {
61
+ if (part === '..') {
62
+ result.pop();
63
+ } else if (part !== '.' && part !== '') {
64
+ result.push(part);
65
+ }
66
+ }
67
+
68
+ return (isAbsolute && !(/^[a-zA-Z]:/.test(filePath)) ? '/' : '') + result.join('/');
69
+ },
70
+
71
+ /**
72
+ * Determine if a path is absolute.
73
+ */
74
+ isAbsolute(filePath: string): boolean {
75
+ return filePath.startsWith('/') || /^[a-zA-Z]:[/\\]/.test(filePath);
76
+ },
77
+
78
+ /**
79
+ * Get the relative path from one path to another.
80
+ */
81
+ relative(from: string, to: string): string {
82
+ const fromParts = pathUtils.normalize(from).split('/').filter(Boolean);
83
+ const toParts = pathUtils.normalize(to).split('/').filter(Boolean);
84
+
85
+ // Find common prefix
86
+ let commonLength = 0;
87
+ while (
88
+ commonLength < fromParts.length &&
89
+ commonLength < toParts.length &&
90
+ fromParts[commonLength] === toParts[commonLength]
91
+ ) {
92
+ commonLength++;
93
+ }
94
+
95
+ // Build relative path
96
+ const upCount = fromParts.length - commonLength;
97
+ const relativeParts = [
98
+ ...Array(upCount).fill('..'),
99
+ ...toParts.slice(commonLength)
100
+ ];
101
+
102
+ return relativeParts.join('/') || '.';
103
+ }
104
+ };
105
+
106
+ export default pathUtils;
@@ -0,0 +1,72 @@
1
+ import * as assert from 'assert';
2
+ import * as fs from 'fs/promises';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import { execSync } from 'child_process';
6
+
7
+ describe('vectra generate', () => {
8
+ let tmpDir: string;
9
+ const projectRoot = process.cwd();
10
+
11
+ beforeEach(async () => {
12
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'vectra-gen-'));
13
+ });
14
+
15
+ afterEach(async () => {
16
+ await fs.rm(tmpDir, { recursive: true, force: true });
17
+ });
18
+
19
+ const languages = ['python', 'csharp', 'rust', 'go', 'java', 'typescript'] as const;
20
+
21
+ for (const lang of languages) {
22
+ it(`should generate ${lang} bindings`, async () => {
23
+ const outputDir = path.join(tmpDir, lang);
24
+ const binPath = path.join(projectRoot, 'bin', 'vectra.js');
25
+ execSync(`node "${binPath}" generate --language ${lang} --output "${outputDir}"`, {
26
+ cwd: projectRoot,
27
+ timeout: 15000,
28
+ });
29
+
30
+ // Verify proto file was copied
31
+ const protoPath = path.join(outputDir, 'vectra_service.proto');
32
+ const protoStat = await fs.stat(protoPath);
33
+ assert.ok(protoStat.isFile(), 'vectra_service.proto should exist');
34
+
35
+ // Verify README was copied
36
+ const readmePath = path.join(outputDir, 'README.md');
37
+ const readmeStat = await fs.stat(readmePath);
38
+ assert.ok(readmeStat.isFile(), 'README.md should exist');
39
+
40
+ // Language-specific checks
41
+ const files = await fs.readdir(outputDir);
42
+ if (lang === 'python') {
43
+ assert.ok(files.includes('vectra_client.py'), 'should have vectra_client.py');
44
+ } else if (lang === 'csharp') {
45
+ assert.ok(files.includes('VectraClient.cs'), 'should have VectraClient.cs');
46
+ } else if (lang === 'rust') {
47
+ assert.ok(files.includes('lib.rs'), 'should have lib.rs');
48
+ assert.ok(files.includes('Cargo.toml'), 'should have Cargo.toml');
49
+ assert.ok(files.includes('build.rs'), 'should have build.rs');
50
+ } else if (lang === 'go') {
51
+ assert.ok(files.includes('vectra_client.go'), 'should have vectra_client.go');
52
+ } else if (lang === 'java') {
53
+ assert.ok(files.includes('VectraClient.java'), 'should have VectraClient.java');
54
+ } else if (lang === 'typescript') {
55
+ assert.ok(files.includes('VectraClient.ts'), 'should have VectraClient.ts');
56
+ }
57
+ });
58
+ }
59
+
60
+ it('should create output directory if it does not exist', async () => {
61
+ const outputDir = path.join(tmpDir, 'nested', 'deep', 'dir');
62
+ const binPath = path.join(projectRoot, 'bin', 'vectra.js');
63
+ execSync(`node "${binPath}" generate --language python --output "${outputDir}"`, {
64
+ cwd: projectRoot,
65
+ timeout: 15000,
66
+ });
67
+
68
+ const files = await fs.readdir(outputDir);
69
+ assert.ok(files.includes('vectra_service.proto'));
70
+ assert.ok(files.includes('vectra_client.py'));
71
+ });
72
+ });
File without changes