vectra 0.12.3 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/README.md +92 -100
  2. package/lib/BrowserWebFetcher.d.ts +75 -0
  3. package/lib/BrowserWebFetcher.d.ts.map +1 -0
  4. package/lib/BrowserWebFetcher.js +290 -0
  5. package/lib/BrowserWebFetcher.js.map +1 -0
  6. package/lib/FileFetcher.d.ts.map +1 -1
  7. package/lib/FileFetcher.js +25 -15
  8. package/lib/FileFetcher.js.map +1 -1
  9. package/lib/FileFetcher.spec.d.ts +2 -0
  10. package/lib/FileFetcher.spec.d.ts.map +1 -0
  11. package/lib/FileFetcher.spec.js +244 -0
  12. package/lib/FileFetcher.spec.js.map +1 -0
  13. package/lib/FolderWatcher.d.ts +91 -0
  14. package/lib/FolderWatcher.d.ts.map +1 -0
  15. package/lib/FolderWatcher.js +304 -0
  16. package/lib/FolderWatcher.js.map +1 -0
  17. package/lib/FolderWatcher.spec.d.ts +2 -0
  18. package/lib/FolderWatcher.spec.d.ts.map +1 -0
  19. package/lib/FolderWatcher.spec.js +308 -0
  20. package/lib/FolderWatcher.spec.js.map +1 -0
  21. package/lib/GPT3Tokenizer.spec.d.ts +2 -0
  22. package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
  23. package/lib/GPT3Tokenizer.spec.js +45 -0
  24. package/lib/GPT3Tokenizer.spec.js.map +1 -0
  25. package/lib/ItemSelector.d.ts.map +1 -1
  26. package/lib/ItemSelector.js +19 -8
  27. package/lib/ItemSelector.js.map +1 -1
  28. package/lib/ItemSelector.spec.d.ts +2 -0
  29. package/lib/ItemSelector.spec.d.ts.map +1 -0
  30. package/lib/ItemSelector.spec.js +204 -0
  31. package/lib/ItemSelector.spec.js.map +1 -0
  32. package/lib/LocalDocument.d.ts +1 -1
  33. package/lib/LocalDocument.d.ts.map +1 -1
  34. package/lib/LocalDocument.js +5 -45
  35. package/lib/LocalDocument.js.map +1 -1
  36. package/lib/LocalDocument.spec.d.ts +2 -0
  37. package/lib/LocalDocument.spec.d.ts.map +1 -0
  38. package/lib/LocalDocument.spec.js +214 -0
  39. package/lib/LocalDocument.spec.js.map +1 -0
  40. package/lib/LocalDocumentIndex.d.ts +20 -0
  41. package/lib/LocalDocumentIndex.d.ts.map +1 -1
  42. package/lib/LocalDocumentIndex.js +16 -52
  43. package/lib/LocalDocumentIndex.js.map +1 -1
  44. package/lib/LocalDocumentIndex.spec.d.ts +2 -0
  45. package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
  46. package/lib/LocalDocumentIndex.spec.js +494 -0
  47. package/lib/LocalDocumentIndex.spec.js.map +1 -0
  48. package/lib/LocalDocumentResult.d.ts +32 -11
  49. package/lib/LocalDocumentResult.d.ts.map +1 -1
  50. package/lib/LocalDocumentResult.js +305 -257
  51. package/lib/LocalDocumentResult.js.map +1 -1
  52. package/lib/LocalDocumentResult.spec.d.ts +2 -0
  53. package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
  54. package/lib/LocalDocumentResult.spec.js +373 -0
  55. package/lib/LocalDocumentResult.spec.js.map +1 -0
  56. package/lib/LocalEmbeddings.d.ts +59 -0
  57. package/lib/LocalEmbeddings.d.ts.map +1 -0
  58. package/lib/LocalEmbeddings.js +101 -0
  59. package/lib/LocalEmbeddings.js.map +1 -0
  60. package/lib/LocalEmbeddings.spec.d.ts +2 -0
  61. package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
  62. package/lib/LocalEmbeddings.spec.js +155 -0
  63. package/lib/LocalEmbeddings.spec.js.map +1 -0
  64. package/lib/LocalIndex.d.ts +27 -18
  65. package/lib/LocalIndex.d.ts.map +1 -1
  66. package/lib/LocalIndex.js +109 -105
  67. package/lib/LocalIndex.js.map +1 -1
  68. package/lib/LocalIndex.spec.js +434 -43
  69. package/lib/LocalIndex.spec.js.map +1 -1
  70. package/lib/OpenAIEmbeddings.d.ts +4 -6
  71. package/lib/OpenAIEmbeddings.d.ts.map +1 -1
  72. package/lib/OpenAIEmbeddings.js +16 -24
  73. package/lib/OpenAIEmbeddings.js.map +1 -1
  74. package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
  75. package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
  76. package/lib/OpenAIEmbeddings.spec.js +298 -0
  77. package/lib/OpenAIEmbeddings.spec.js.map +1 -0
  78. package/lib/TextSplitter.d.ts +2 -0
  79. package/lib/TextSplitter.d.ts.map +1 -1
  80. package/lib/TextSplitter.js +154 -111
  81. package/lib/TextSplitter.js.map +1 -1
  82. package/lib/TextSplitter.spec.js +289 -61
  83. package/lib/TextSplitter.spec.js.map +1 -1
  84. package/lib/TransformersEmbeddings.d.ts +121 -0
  85. package/lib/TransformersEmbeddings.d.ts.map +1 -0
  86. package/lib/TransformersEmbeddings.js +176 -0
  87. package/lib/TransformersEmbeddings.js.map +1 -0
  88. package/lib/TransformersEmbeddings.spec.d.ts +2 -0
  89. package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
  90. package/lib/TransformersEmbeddings.spec.js +198 -0
  91. package/lib/TransformersEmbeddings.spec.js.map +1 -0
  92. package/lib/TransformersTokenizer.d.ts +33 -0
  93. package/lib/TransformersTokenizer.d.ts.map +1 -0
  94. package/lib/TransformersTokenizer.js +44 -0
  95. package/lib/TransformersTokenizer.js.map +1 -0
  96. package/lib/TransformersTokenizer.spec.d.ts +2 -0
  97. package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
  98. package/lib/TransformersTokenizer.spec.js +112 -0
  99. package/lib/TransformersTokenizer.spec.js.map +1 -0
  100. package/lib/WebFetcher.d.ts +1 -2
  101. package/lib/WebFetcher.d.ts.map +1 -1
  102. package/lib/WebFetcher.js +58 -54
  103. package/lib/WebFetcher.js.map +1 -1
  104. package/lib/WebFetcher.spec.d.ts +2 -0
  105. package/lib/WebFetcher.spec.d.ts.map +1 -0
  106. package/lib/WebFetcher.spec.js +263 -0
  107. package/lib/WebFetcher.spec.js.map +1 -0
  108. package/lib/browser.d.ts +30 -0
  109. package/lib/browser.d.ts.map +1 -0
  110. package/lib/browser.js +52 -0
  111. package/lib/browser.js.map +1 -0
  112. package/lib/codecs/IndexCodec.d.ts +37 -0
  113. package/lib/codecs/IndexCodec.d.ts.map +1 -0
  114. package/lib/codecs/IndexCodec.js +3 -0
  115. package/lib/codecs/IndexCodec.js.map +1 -0
  116. package/lib/codecs/JsonCodec.d.ts +19 -0
  117. package/lib/codecs/JsonCodec.d.ts.map +1 -0
  118. package/lib/codecs/JsonCodec.js +35 -0
  119. package/lib/codecs/JsonCodec.js.map +1 -0
  120. package/lib/codecs/JsonCodec.spec.d.ts +2 -0
  121. package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
  122. package/lib/codecs/JsonCodec.spec.js +66 -0
  123. package/lib/codecs/JsonCodec.spec.js.map +1 -0
  124. package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
  125. package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
  126. package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
  127. package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
  128. package/lib/codecs/ProtobufCodec.d.ts +20 -0
  129. package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
  130. package/lib/codecs/ProtobufCodec.js +225 -0
  131. package/lib/codecs/ProtobufCodec.js.map +1 -0
  132. package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
  133. package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
  134. package/lib/codecs/ProtobufCodec.spec.js +155 -0
  135. package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
  136. package/lib/codecs/index.d.ts +5 -0
  137. package/lib/codecs/index.d.ts.map +1 -0
  138. package/lib/codecs/index.js +21 -0
  139. package/lib/codecs/index.js.map +1 -0
  140. package/lib/codecs/migrateIndex.d.ts +24 -0
  141. package/lib/codecs/migrateIndex.d.ts.map +1 -0
  142. package/lib/codecs/migrateIndex.js +119 -0
  143. package/lib/codecs/migrateIndex.js.map +1 -0
  144. package/lib/codecs/migrateIndex.spec.d.ts +2 -0
  145. package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
  146. package/lib/codecs/migrateIndex.spec.js +151 -0
  147. package/lib/codecs/migrateIndex.spec.js.map +1 -0
  148. package/lib/codecs/schemas/index.proto +34 -0
  149. package/lib/index.d.ts +9 -1
  150. package/lib/index.d.ts.map +1 -1
  151. package/lib/index.js +9 -1
  152. package/lib/index.js.map +1 -1
  153. package/lib/internals/Colorize.d.ts.map +1 -1
  154. package/lib/internals/Colorize.js +20 -15
  155. package/lib/internals/Colorize.js.map +1 -1
  156. package/lib/server/IndexManager.d.ts +78 -0
  157. package/lib/server/IndexManager.d.ts.map +1 -0
  158. package/lib/server/IndexManager.js +259 -0
  159. package/lib/server/IndexManager.js.map +1 -0
  160. package/lib/server/VectraServer.d.ts +40 -0
  161. package/lib/server/VectraServer.d.ts.map +1 -0
  162. package/lib/server/VectraServer.js +151 -0
  163. package/lib/server/VectraServer.js.map +1 -0
  164. package/lib/server/VectraServer.spec.d.ts +2 -0
  165. package/lib/server/VectraServer.spec.d.ts.map +1 -0
  166. package/lib/server/VectraServer.spec.js +322 -0
  167. package/lib/server/VectraServer.spec.js.map +1 -0
  168. package/lib/server/handlers/documentHandlers.d.ts +15 -0
  169. package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
  170. package/lib/server/handlers/documentHandlers.js +95 -0
  171. package/lib/server/handlers/documentHandlers.js.map +1 -0
  172. package/lib/server/handlers/helpers.d.ts +23 -0
  173. package/lib/server/handlers/helpers.d.ts.map +1 -0
  174. package/lib/server/handlers/helpers.js +138 -0
  175. package/lib/server/handlers/helpers.js.map +1 -0
  176. package/lib/server/handlers/index.d.ts +8 -0
  177. package/lib/server/handlers/index.d.ts.map +1 -0
  178. package/lib/server/handlers/index.js +22 -0
  179. package/lib/server/handlers/index.js.map +1 -0
  180. package/lib/server/handlers/indexHandlers.d.ts +14 -0
  181. package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
  182. package/lib/server/handlers/indexHandlers.js +85 -0
  183. package/lib/server/handlers/indexHandlers.js.map +1 -0
  184. package/lib/server/handlers/itemHandlers.d.ts +34 -0
  185. package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
  186. package/lib/server/handlers/itemHandlers.js +166 -0
  187. package/lib/server/handlers/itemHandlers.js.map +1 -0
  188. package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
  189. package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
  190. package/lib/server/handlers/lifecycleHandlers.js +31 -0
  191. package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
  192. package/lib/server/handlers/queryHandlers.d.ts +27 -0
  193. package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
  194. package/lib/server/handlers/queryHandlers.js +135 -0
  195. package/lib/server/handlers/queryHandlers.js.map +1 -0
  196. package/lib/server/handlers/statsHandlers.d.ts +17 -0
  197. package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
  198. package/lib/server/handlers/statsHandlers.js +81 -0
  199. package/lib/server/handlers/statsHandlers.js.map +1 -0
  200. package/lib/server/index.d.ts +4 -0
  201. package/lib/server/index.d.ts.map +1 -0
  202. package/lib/server/index.js +23 -0
  203. package/lib/server/index.js.map +1 -0
  204. package/lib/storage/FileStorage.d.ts +92 -0
  205. package/lib/storage/FileStorage.d.ts.map +1 -0
  206. package/lib/storage/FileStorage.js +3 -0
  207. package/lib/storage/FileStorage.js.map +1 -0
  208. package/lib/storage/FileStorageUtilities.d.ts +36 -0
  209. package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
  210. package/lib/storage/FileStorageUtilities.js +91 -0
  211. package/lib/storage/FileStorageUtilities.js.map +1 -0
  212. package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
  213. package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
  214. package/lib/storage/FileStorageUtilities.spec.js +98 -0
  215. package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
  216. package/lib/storage/FileType.d.ts +29 -0
  217. package/lib/storage/FileType.d.ts.map +1 -0
  218. package/lib/storage/FileType.js +38 -0
  219. package/lib/storage/FileType.js.map +1 -0
  220. package/lib/storage/IndexedDBStorage.d.ts +47 -0
  221. package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
  222. package/lib/storage/IndexedDBStorage.js +347 -0
  223. package/lib/storage/IndexedDBStorage.js.map +1 -0
  224. package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
  225. package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
  226. package/lib/storage/LocalFileStorage.browser.js +43 -0
  227. package/lib/storage/LocalFileStorage.browser.js.map +1 -0
  228. package/lib/storage/LocalFileStorage.d.ts +23 -0
  229. package/lib/storage/LocalFileStorage.d.ts.map +1 -0
  230. package/lib/storage/LocalFileStorage.js +152 -0
  231. package/lib/storage/LocalFileStorage.js.map +1 -0
  232. package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
  233. package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
  234. package/lib/storage/LocalFileStorage.spec.js +249 -0
  235. package/lib/storage/LocalFileStorage.spec.js.map +1 -0
  236. package/lib/storage/VirtualFileStorage.d.ts +18 -0
  237. package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
  238. package/lib/storage/VirtualFileStorage.js +178 -0
  239. package/lib/storage/VirtualFileStorage.js.map +1 -0
  240. package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
  241. package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
  242. package/lib/storage/VirtualFileStorage.spec.js +302 -0
  243. package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
  244. package/lib/storage/index.d.ts +6 -0
  245. package/lib/storage/index.d.ts.map +1 -0
  246. package/lib/storage/index.js +22 -0
  247. package/lib/storage/index.js.map +1 -0
  248. package/lib/templates/templates/csharp/README.md +48 -0
  249. package/lib/templates/templates/csharp/VectraClient.cs +234 -0
  250. package/lib/templates/templates/go/README.md +71 -0
  251. package/lib/templates/templates/go/vectra_client.go +322 -0
  252. package/lib/templates/templates/java/README.md +81 -0
  253. package/lib/templates/templates/java/VectraClient.java +232 -0
  254. package/lib/templates/templates/python/README.md +37 -0
  255. package/lib/templates/templates/python/vectra_client.py +279 -0
  256. package/lib/templates/templates/rust/Cargo.toml +14 -0
  257. package/lib/templates/templates/rust/README.md +39 -0
  258. package/lib/templates/templates/rust/build.rs +4 -0
  259. package/lib/templates/templates/rust/lib.rs +284 -0
  260. package/lib/templates/templates/typescript/README.md +96 -0
  261. package/lib/templates/templates/typescript/VectraClient.ts +374 -0
  262. package/lib/templates/typescript/VectraClient.d.ts +114 -0
  263. package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
  264. package/lib/templates/typescript/VectraClient.js +328 -0
  265. package/lib/templates/typescript/VectraClient.js.map +1 -0
  266. package/lib/types.d.ts +7 -0
  267. package/lib/types.d.ts.map +1 -1
  268. package/lib/utils/index.d.ts +2 -0
  269. package/lib/utils/index.d.ts.map +1 -0
  270. package/lib/utils/index.js +18 -0
  271. package/lib/utils/index.js.map +1 -0
  272. package/lib/utils/pathUtils.d.ts +40 -0
  273. package/lib/utils/pathUtils.d.ts.map +1 -0
  274. package/lib/utils/pathUtils.js +98 -0
  275. package/lib/utils/pathUtils.js.map +1 -0
  276. package/lib/vectra-cli.d.ts.map +1 -1
  277. package/lib/vectra-cli.generate.spec.d.ts +2 -0
  278. package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
  279. package/lib/vectra-cli.generate.spec.js +112 -0
  280. package/lib/vectra-cli.generate.spec.js.map +1 -0
  281. package/lib/vectra-cli.js +446 -9
  282. package/lib/vectra-cli.js.map +1 -1
  283. package/lib/vectra-cli.spec.d.ts +1 -0
  284. package/lib/vectra-cli.spec.d.ts.map +1 -0
  285. package/lib/vectra-cli.spec.js +2 -0
  286. package/lib/vectra-cli.spec.js.map +1 -0
  287. package/package.json +89 -16
  288. package/proto/vectra_service.proto +276 -0
  289. package/src/BrowserWebFetcher.ts +345 -0
  290. package/src/FileFetcher.spec.ts +234 -0
  291. package/src/FileFetcher.ts +37 -25
  292. package/src/FolderWatcher.spec.ts +288 -0
  293. package/src/FolderWatcher.ts +304 -0
  294. package/src/GPT3Tokenizer.spec.ts +50 -0
  295. package/src/ItemSelector.spec.ts +252 -0
  296. package/src/ItemSelector.ts +163 -150
  297. package/src/LocalDocument.spec.ts +211 -0
  298. package/src/LocalDocument.ts +88 -94
  299. package/src/LocalDocumentIndex.spec.ts +481 -0
  300. package/src/LocalDocumentIndex.ts +39 -40
  301. package/src/LocalDocumentResult.spec.ts +373 -0
  302. package/src/LocalDocumentResult.ts +489 -319
  303. package/src/LocalEmbeddings.spec.ts +138 -0
  304. package/src/LocalEmbeddings.ts +120 -0
  305. package/src/LocalIndex.spec.ts +808 -323
  306. package/src/LocalIndex.ts +479 -430
  307. package/src/OpenAIEmbeddings.spec.ts +354 -0
  308. package/src/OpenAIEmbeddings.ts +26 -27
  309. package/src/TextSplitter.spec.ts +320 -65
  310. package/src/TextSplitter.ts +172 -115
  311. package/src/TransformersEmbeddings.spec.ts +188 -0
  312. package/src/TransformersEmbeddings.ts +232 -0
  313. package/src/TransformersTokenizer.spec.ts +143 -0
  314. package/src/TransformersTokenizer.ts +45 -0
  315. package/src/WebFetcher.spec.ts +288 -0
  316. package/src/WebFetcher.ts +184 -186
  317. package/src/browser.ts +69 -0
  318. package/src/codecs/IndexCodec.ts +40 -0
  319. package/src/codecs/JsonCodec.spec.ts +70 -0
  320. package/src/codecs/JsonCodec.ts +37 -0
  321. package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
  322. package/src/codecs/ProtobufCodec.spec.ts +166 -0
  323. package/src/codecs/ProtobufCodec.ts +193 -0
  324. package/src/codecs/index.ts +4 -0
  325. package/src/codecs/migrateIndex.spec.ts +176 -0
  326. package/src/codecs/migrateIndex.ts +125 -0
  327. package/src/codecs/schemas/index.proto +34 -0
  328. package/src/index.ts +9 -1
  329. package/src/internals/Colorize.ts +19 -16
  330. package/src/server/IndexManager.ts +243 -0
  331. package/src/server/VectraServer.spec.ts +303 -0
  332. package/src/server/VectraServer.ts +156 -0
  333. package/src/server/handlers/documentHandlers.ts +59 -0
  334. package/src/server/handlers/helpers.ts +93 -0
  335. package/src/server/handlers/index.ts +7 -0
  336. package/src/server/handlers/indexHandlers.ts +44 -0
  337. package/src/server/handlers/itemHandlers.ts +140 -0
  338. package/src/server/handlers/lifecycleHandlers.ts +26 -0
  339. package/src/server/handlers/queryHandlers.ts +96 -0
  340. package/src/server/handlers/statsHandlers.ts +38 -0
  341. package/src/server/index.ts +3 -0
  342. package/src/storage/FileStorage.ts +105 -0
  343. package/src/storage/FileStorageUtilities.spec.ts +106 -0
  344. package/src/storage/FileStorageUtilities.ts +77 -0
  345. package/src/storage/FileType.ts +61 -0
  346. package/src/storage/IndexedDBStorage.ts +365 -0
  347. package/src/storage/LocalFileStorage.browser.ts +52 -0
  348. package/src/storage/LocalFileStorage.spec.ts +292 -0
  349. package/src/storage/LocalFileStorage.ts +98 -0
  350. package/src/storage/VirtualFileStorage.spec.ts +307 -0
  351. package/src/storage/VirtualFileStorage.ts +169 -0
  352. package/src/storage/index.ts +5 -0
  353. package/src/templates/csharp/README.md +48 -0
  354. package/src/templates/csharp/VectraClient.cs +234 -0
  355. package/src/templates/go/README.md +71 -0
  356. package/src/templates/go/vectra_client.go +322 -0
  357. package/src/templates/java/README.md +81 -0
  358. package/src/templates/java/VectraClient.java +232 -0
  359. package/src/templates/python/README.md +37 -0
  360. package/src/templates/python/vectra_client.py +279 -0
  361. package/src/templates/rust/Cargo.toml +14 -0
  362. package/src/templates/rust/README.md +39 -0
  363. package/src/templates/rust/build.rs +4 -0
  364. package/src/templates/rust/lib.rs +284 -0
  365. package/src/templates/typescript/README.md +96 -0
  366. package/src/templates/typescript/VectraClient.ts +374 -0
  367. package/src/types.ts +131 -123
  368. package/src/utils/index.ts +1 -0
  369. package/src/utils/pathUtils.ts +106 -0
  370. package/src/vectra-cli.generate.spec.ts +72 -0
  371. package/src/vectra-cli.spec.ts +0 -0
  372. package/src/vectra-cli.ts +687 -246
  373. package/README.draft.md +0 -499
  374. package/README.draft.outline.md +0 -160
  375. package/README.research.md +0 -2159
package/lib/index.js CHANGED
@@ -14,15 +14,23 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./codecs"), exports);
18
+ __exportStar(require("./storage"), exports);
17
19
  __exportStar(require("./FileFetcher"), exports);
20
+ __exportStar(require("./FolderWatcher"), exports);
18
21
  __exportStar(require("./GPT3Tokenizer"), exports);
19
22
  __exportStar(require("./ItemSelector"), exports);
23
+ __exportStar(require("./LocalEmbeddings"), exports);
20
24
  __exportStar(require("./LocalIndex"), exports);
21
25
  __exportStar(require("./LocalDocument"), exports);
22
26
  __exportStar(require("./LocalDocumentIndex"), exports);
23
27
  __exportStar(require("./LocalDocumentResult"), exports);
24
- __exportStar(require("./OpenAIEmbeddings"), exports);
25
28
  __exportStar(require("./TextSplitter"), exports);
29
+ __exportStar(require("./OpenAIEmbeddings"), exports);
30
+ __exportStar(require("./TransformersEmbeddings"), exports);
31
+ __exportStar(require("./TransformersTokenizer"), exports);
26
32
  __exportStar(require("./types"), exports);
27
33
  __exportStar(require("./WebFetcher"), exports);
34
+ __exportStar(require("./server"), exports);
35
+ __exportStar(require("./utils/pathUtils"), exports);
28
36
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,kDAAgC;AAChC,iDAA+B;AAC/B,+CAA6B;AAC7B,kDAAgC;AAChC,uDAAqC;AACrC,wDAAsC;AACtC,qDAAmC;AACnC,iDAA+B;AAC/B,0CAAwB;AACxB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,gDAA8B;AAC9B,kDAAgC;AAChC,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC;AAClC,+CAA6B;AAC7B,kDAAgC;AAChC,uDAAqC;AACrC,wDAAsC;AACtC,iDAA+B;AAC/B,qDAAmC;AACnC,2DAAyC;AACzC,0DAAwC;AACxC,0CAAwB;AACxB,+CAA6B;AAC7B,2CAAyB;AACzB,oDAAkC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Colorize.d.ts","sourceRoot":"","sources":["../../src/internals/Colorize.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,QAAQ;WACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAIjC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAC,MAAM,GAAG,MAAM;WAQlC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,OAAe,EAAE,KAAK,GAAE,MAAW,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;WAyBxG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WAIjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WAIhC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;WAI5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;WAI5D,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIjD"}
1
+ {"version":3,"file":"Colorize.d.ts","sourceRoot":"","sources":["../../src/internals/Colorize.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,QAAQ;WACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAIjC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAC,MAAM,GAAG,MAAM;WAQlC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,OAAe,EAAE,KAAK,GAAE,MAAW,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;WA4BxG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WAIjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WAIhC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;WAI5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;WAI5D,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGjD"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Colorize = void 0;
4
- const colorizer = require('json-colorizer');
5
+ const colorizerModule = require('json-colorizer');
6
+ const colorizeFn = (_a = colorizerModule === null || colorizerModule === void 0 ? void 0 : colorizerModule.default) !== null && _a !== void 0 ? _a : colorizerModule;
5
7
  /**
6
8
  * @private
7
9
  */
@@ -22,20 +24,23 @@ class Colorize {
22
24
  return isBm25 ? `\x1b[34m${quote}${output}${quote}\x1b[0m` : `\x1b[32m${quote}${output}${quote}\x1b[0m`;
23
25
  }
24
26
  else if (typeof output === 'object' && output !== null) {
25
- return colorizer(output, {
26
- pretty: true,
27
- colors: {
28
- BRACE: 'white',
29
- BRACKET: 'white',
30
- COLON: 'white',
31
- COMMA: 'white',
32
- STRING_KEY: 'white',
33
- STRING_LITERAL: 'green',
34
- NUMBER_LITERAL: 'blue',
35
- BOOLEAN_LITERAL: 'blue',
36
- NULL_LITERAL: 'blue'
37
- }
38
- });
27
+ if (typeof colorizeFn === 'function') {
28
+ return colorizeFn(output, {
29
+ pretty: true,
30
+ colors: {
31
+ BRACE: 'white',
32
+ BRACKET: 'white',
33
+ COLON: 'white',
34
+ COMMA: 'white',
35
+ STRING_KEY: 'white',
36
+ STRING_LITERAL: 'green',
37
+ NUMBER_LITERAL: 'blue',
38
+ BOOLEAN_LITERAL: 'blue',
39
+ NULL_LITERAL: 'blue'
40
+ }
41
+ });
42
+ }
43
+ return JSON.stringify(output, null, 2);
39
44
  }
40
45
  else if (typeof output == 'number') {
41
46
  return `\x1b[34m${output}${units}\x1b[0m`;
@@ -1 +1 @@
1
- {"version":3,"file":"Colorize.js","sourceRoot":"","sources":["../../src/internals/Colorize.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE5C;;GAEG;AACH,MAAa,QAAQ;IACV,MAAM,CAAC,WAAW,CAAC,IAAY;QAClC,OAAO,eAAe,GAAG,IAAI,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAmB;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,aAAa,KAAK,SAAS,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,OAAO,aAAa,KAAK,CAAC,OAAO,SAAS,CAAC;QAC/C,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,MAAuB,EAAE,SAAkB,KAAK,EAAE,QAAgB,EAAE,EAAE,QAAgB,EAAE;QACzG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,MAAM,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,MAAM,GAAG,KAAK,SAAS,CAAC;QAC5G,CAAC;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC,MAAM,EAAE;gBACrB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE;oBACJ,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,OAAO;oBACd,UAAU,EAAE,OAAO;oBACnB,cAAc,EAAE,OAAO;oBACvB,cAAc,EAAE,MAAM;oBACtB,eAAe,EAAE,MAAM;oBACvB,YAAY,EAAE,MAAM;iBACvB;aACJ,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE,CAAC;YACnC,OAAO,WAAW,MAAM,GAAG,KAAK,SAAS,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,OAAO,WAAW,MAAM,SAAS,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAe;QAClC,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,OAAe;QACjC,OAAO,aAAa,OAAO,SAAS,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,OAAO,aAAa,KAAK,SAAS,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,KAAU,EAAE,QAAgB,EAAE;QAC7D,OAAO,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;IACpE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,OAAe;QACjC,OAAO,WAAW,OAAO,SAAS,CAAC;IAEvC,CAAC;CACJ;AA1DD,4BA0DC"}
1
+ {"version":3,"file":"Colorize.js","sourceRoot":"","sources":["../../src/internals/Colorize.ts"],"names":[],"mappings":";;;;AAAA,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAClD,MAAM,UAAU,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,mCAAI,eAAe,CAAC;AAE/D;;GAEG;AACH,MAAa,QAAQ;IACV,MAAM,CAAC,WAAW,CAAC,IAAY;QAClC,OAAO,eAAe,GAAG,IAAI,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAmB;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,aAAa,KAAK,SAAS,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,OAAO,aAAa,KAAK,CAAC,OAAO,SAAS,CAAC;QAC/C,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,MAAuB,EAAE,SAAkB,KAAK,EAAE,QAAgB,EAAE,EAAE,QAAgB,EAAE;QACzG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,MAAM,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,MAAM,GAAG,KAAK,SAAS,CAAC;QAC5G,CAAC;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACvD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO,UAAU,CAAC,MAAM,EAAE;oBACtB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE;wBACJ,KAAK,EAAE,OAAO;wBACd,OAAO,EAAE,OAAO;wBAChB,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,OAAO;wBACnB,cAAc,EAAE,OAAO;wBACvB,cAAc,EAAE,MAAM;wBACtB,eAAe,EAAE,MAAM;wBACvB,YAAY,EAAE,MAAM;qBACvB;iBACJ,CAAC,CAAC;YACP,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE,CAAC;YACnC,OAAO,WAAW,MAAM,GAAG,KAAK,SAAS,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,OAAO,WAAW,MAAM,SAAS,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAe;QAClC,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,OAAe;QACjC,OAAO,aAAa,OAAO,SAAS,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,OAAO,aAAa,KAAK,SAAS,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,KAAU,EAAE,QAAgB,EAAE;QAC7D,OAAO,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;IACpE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,OAAe;QACjC,OAAO,WAAW,OAAO,SAAS,CAAC;IACvC,CAAC;CACJ;AA5DD,4BA4DC"}
@@ -0,0 +1,78 @@
1
+ import { LocalIndex } from '../LocalIndex';
2
+ import { LocalDocumentIndex } from '../LocalDocumentIndex';
3
+ import { EmbeddingsModel } from '../types';
4
+ export interface ManagedIndex {
5
+ name: string;
6
+ index: LocalIndex | LocalDocumentIndex;
7
+ isDocumentIndex: boolean;
8
+ format: string;
9
+ }
10
+ export interface IndexManagerConfig {
11
+ /** Single index path (mutually exclusive with rootDir). */
12
+ indexPath?: string;
13
+ /** Root directory containing multiple index subdirectories. */
14
+ rootDir?: string;
15
+ /** Embeddings model for server-side embedding computation. */
16
+ embeddings?: EmbeddingsModel;
17
+ /** Polling interval in ms for auto-detecting new indexes (default: 3000). */
18
+ scanInterval?: number;
19
+ }
20
+ /**
21
+ * Manages loaded indexes for the gRPC server.
22
+ * Supports single-index and multi-index modes with auto-detection of new indexes.
23
+ */
24
+ export declare class IndexManager {
25
+ private readonly _config;
26
+ private readonly _indexes;
27
+ private _scanTimer?;
28
+ private _singleMode;
29
+ constructor(config: IndexManagerConfig);
30
+ /** Returns all currently loaded indexes. */
31
+ get indexes(): Map<string, ManagedIndex>;
32
+ /** Returns true if running in single-index mode. */
33
+ get isSingleMode(): boolean;
34
+ /**
35
+ * Initializes the index manager: loads existing indexes and starts auto-detection.
36
+ */
37
+ initialize(): Promise<void>;
38
+ /**
39
+ * Shuts down the index manager: stops scanning and flushes all indexes.
40
+ */
41
+ shutdown(): Promise<void>;
42
+ /**
43
+ * Gets a managed index by name.
44
+ * In single-index mode, any name (or empty string) returns the single index.
45
+ */
46
+ getIndex(name: string): ManagedIndex | undefined;
47
+ /**
48
+ * Gets a managed index, throwing NOT_FOUND-appropriate error if missing.
49
+ */
50
+ requireIndex(name: string): ManagedIndex;
51
+ /**
52
+ * Gets a managed document index, throwing if missing or not a document index.
53
+ */
54
+ requireDocumentIndex(name: string): {
55
+ managed: ManagedIndex;
56
+ docIndex: LocalDocumentIndex;
57
+ };
58
+ /**
59
+ * Creates a new index on disk and loads it.
60
+ */
61
+ createIndex(name: string, format: string, isDocumentIndex: boolean, documentConfig?: {
62
+ version?: number;
63
+ chunkSize?: number;
64
+ chunkOverlap?: number;
65
+ }): Promise<ManagedIndex>;
66
+ /**
67
+ * Deletes an index from disk and unloads it.
68
+ */
69
+ deleteIndex(name: string): Promise<void>;
70
+ /**
71
+ * Lists all loaded indexes.
72
+ */
73
+ listIndexes(): ManagedIndex[];
74
+ private loadSingleIndex;
75
+ private scanRootDir;
76
+ private loadIndex;
77
+ }
78
+ //# sourceMappingURL=IndexManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexManager.d.ts","sourceRoot":"","sources":["../../src/server/IndexManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAA4B,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAE,eAAe,EAAiB,MAAM,UAAU,CAAC;AAG1D,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IAC/B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAU;gBAEjB,MAAM,EAAE,kBAAkB;IAKtC,4CAA4C;IAC5C,IAAW,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE9C;IAED,oDAAoD;IACpD,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAStC;;;OAGG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IASvD;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAQ/C;;OAEG;IACI,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE;IAQlG;;OAEG;IACU,WAAW,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,OAAO,EACxB,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GACjF,OAAO,CAAC,YAAY,CAAC;IA+CxB;;OAEG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD;;OAEG;IACI,WAAW,IAAI,YAAY,EAAE;YAItB,eAAe;YAKf,WAAW;YAmBX,SAAS;CAgC1B"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.IndexManager = void 0;
46
+ const path = __importStar(require("path"));
47
+ const fs = __importStar(require("fs"));
48
+ const LocalIndex_1 = require("../LocalIndex");
49
+ const LocalDocumentIndex_1 = require("../LocalDocumentIndex");
50
+ const LocalFileStorage_1 = require("../storage/LocalFileStorage");
51
+ const codecs_1 = require("../codecs");
52
+ /**
53
+ * Manages loaded indexes for the gRPC server.
54
+ * Supports single-index and multi-index modes with auto-detection of new indexes.
55
+ */
56
+ class IndexManager {
57
+ constructor(config) {
58
+ this._indexes = new Map();
59
+ this._config = config;
60
+ this._singleMode = !!config.indexPath;
61
+ }
62
+ /** Returns all currently loaded indexes. */
63
+ get indexes() {
64
+ return this._indexes;
65
+ }
66
+ /** Returns true if running in single-index mode. */
67
+ get isSingleMode() {
68
+ return this._singleMode;
69
+ }
70
+ /**
71
+ * Initializes the index manager: loads existing indexes and starts auto-detection.
72
+ */
73
+ initialize() {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ var _a;
76
+ if (this._singleMode && this._config.indexPath) {
77
+ yield this.loadSingleIndex(this._config.indexPath);
78
+ }
79
+ else if (this._config.rootDir) {
80
+ yield this.scanRootDir();
81
+ // Start periodic scanning for new indexes
82
+ const interval = (_a = this._config.scanInterval) !== null && _a !== void 0 ? _a : 3000;
83
+ this._scanTimer = setInterval(() => {
84
+ this.scanRootDir().catch(() => { });
85
+ }, interval);
86
+ }
87
+ });
88
+ }
89
+ /**
90
+ * Shuts down the index manager: stops scanning and flushes all indexes.
91
+ */
92
+ shutdown() {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ if (this._scanTimer) {
95
+ clearInterval(this._scanTimer);
96
+ this._scanTimer = undefined;
97
+ }
98
+ // No special flush needed — LocalIndex writes on endUpdate()
99
+ this._indexes.clear();
100
+ });
101
+ }
102
+ /**
103
+ * Gets a managed index by name.
104
+ * In single-index mode, any name (or empty string) returns the single index.
105
+ */
106
+ getIndex(name) {
107
+ if (this._singleMode) {
108
+ // Return the single loaded index regardless of the name provided
109
+ const entries = Array.from(this._indexes.values());
110
+ return entries[0];
111
+ }
112
+ return this._indexes.get(name);
113
+ }
114
+ /**
115
+ * Gets a managed index, throwing NOT_FOUND-appropriate error if missing.
116
+ */
117
+ requireIndex(name) {
118
+ const managed = this.getIndex(name);
119
+ if (!managed) {
120
+ throw new Error(`Index not found: ${name}`);
121
+ }
122
+ return managed;
123
+ }
124
+ /**
125
+ * Gets a managed document index, throwing if missing or not a document index.
126
+ */
127
+ requireDocumentIndex(name) {
128
+ const managed = this.requireIndex(name);
129
+ if (!managed.isDocumentIndex) {
130
+ throw new Error(`Index "${name}" is not a document index`);
131
+ }
132
+ return { managed, docIndex: managed.index };
133
+ }
134
+ /**
135
+ * Creates a new index on disk and loads it.
136
+ */
137
+ createIndex(name, format, isDocumentIndex, documentConfig) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ if (this._indexes.has(name)) {
140
+ throw new Error(`Index already exists: ${name}`);
141
+ }
142
+ const rootDir = this._config.rootDir;
143
+ if (!rootDir && !this._singleMode) {
144
+ throw new Error('Cannot create index: no root directory configured');
145
+ }
146
+ const folderPath = rootDir ? path.join(rootDir, name) : name;
147
+ const storage = new LocalFileStorage_1.LocalFileStorage();
148
+ const codec = format === 'protobuf' ? new codecs_1.ProtobufCodec() : new codecs_1.JsonCodec();
149
+ let index;
150
+ if (isDocumentIndex) {
151
+ const config = {
152
+ folderPath,
153
+ storage,
154
+ codec,
155
+ embeddings: this._config.embeddings,
156
+ chunkingConfig: {
157
+ chunkSize: (documentConfig === null || documentConfig === void 0 ? void 0 : documentConfig.chunkSize) || 512,
158
+ chunkOverlap: (documentConfig === null || documentConfig === void 0 ? void 0 : documentConfig.chunkOverlap) || 0,
159
+ },
160
+ };
161
+ index = new LocalDocumentIndex_1.LocalDocumentIndex(config);
162
+ }
163
+ else {
164
+ index = new LocalIndex_1.LocalIndex(folderPath, undefined, storage, codec);
165
+ }
166
+ const createConfig = {
167
+ version: (documentConfig === null || documentConfig === void 0 ? void 0 : documentConfig.version) || 1,
168
+ deleteIfExists: false,
169
+ };
170
+ yield index.createIndex(createConfig);
171
+ const managed = {
172
+ name,
173
+ index,
174
+ isDocumentIndex,
175
+ format: format || 'json',
176
+ };
177
+ this._indexes.set(name, managed);
178
+ return managed;
179
+ });
180
+ }
181
+ /**
182
+ * Deletes an index from disk and unloads it.
183
+ */
184
+ deleteIndex(name) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ const managed = this.requireIndex(name);
187
+ yield managed.index.deleteIndex();
188
+ this._indexes.delete(name);
189
+ });
190
+ }
191
+ /**
192
+ * Lists all loaded indexes.
193
+ */
194
+ listIndexes() {
195
+ return Array.from(this._indexes.values());
196
+ }
197
+ loadSingleIndex(indexPath) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ const name = path.basename(indexPath);
200
+ yield this.loadIndex(name, indexPath);
201
+ });
202
+ }
203
+ scanRootDir() {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ const rootDir = this._config.rootDir;
206
+ if (!fs.existsSync(rootDir))
207
+ return;
208
+ const entries = fs.readdirSync(rootDir, { withFileTypes: true });
209
+ for (const entry of entries) {
210
+ if (!entry.isDirectory())
211
+ continue;
212
+ if (entry.name.startsWith('.'))
213
+ continue;
214
+ if (this._indexes.has(entry.name))
215
+ continue;
216
+ const folderPath = path.join(rootDir, entry.name);
217
+ try {
218
+ yield this.loadIndex(entry.name, folderPath);
219
+ }
220
+ catch (_a) {
221
+ // Skip directories that aren't valid indexes
222
+ }
223
+ }
224
+ });
225
+ }
226
+ loadIndex(name, folderPath) {
227
+ return __awaiter(this, void 0, void 0, function* () {
228
+ const storage = new LocalFileStorage_1.LocalFileStorage();
229
+ // Detect codec — throws if no index file found
230
+ const codec = yield (0, codecs_1.detectCodec)(folderPath, storage);
231
+ const format = codec.extension === '.pb' ? 'protobuf' : 'json';
232
+ // Detect if it's a document index (has catalog file)
233
+ const hasCatalogJson = yield storage.pathExists(path.join(folderPath, 'catalog.json'));
234
+ const hasCatalogPb = yield storage.pathExists(path.join(folderPath, 'catalog.pb'));
235
+ const isDocumentIndex = hasCatalogJson || hasCatalogPb;
236
+ let index;
237
+ if (isDocumentIndex) {
238
+ index = new LocalDocumentIndex_1.LocalDocumentIndex({
239
+ folderPath,
240
+ storage,
241
+ codec,
242
+ embeddings: this._config.embeddings,
243
+ });
244
+ }
245
+ else {
246
+ index = new LocalIndex_1.LocalIndex(folderPath, undefined, storage, codec);
247
+ }
248
+ const managed = {
249
+ name,
250
+ index,
251
+ isDocumentIndex,
252
+ format,
253
+ };
254
+ this._indexes.set(name, managed);
255
+ });
256
+ }
257
+ }
258
+ exports.IndexManager = IndexManager;
259
+ //# sourceMappingURL=IndexManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexManager.js","sourceRoot":"","sources":["../../src/server/IndexManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as grpc from '@grpc/grpc-js';
2
+ import { IndexManager } from './IndexManager';
3
+ import { EmbeddingsModel } from '../types';
4
+ export interface VectraServerConfig {
5
+ /** Port to bind the gRPC server on (default: 50051). */
6
+ port?: number;
7
+ /** Single index path (mutually exclusive with rootDir). */
8
+ indexPath?: string;
9
+ /** Root directory containing multiple index subdirectories. */
10
+ rootDir?: string;
11
+ /** Embeddings model for server-side embedding computation. */
12
+ embeddings?: EmbeddingsModel;
13
+ /** Polling interval in ms for auto-detecting new indexes (default: 3000). */
14
+ scanInterval?: number;
15
+ }
16
+ /**
17
+ * gRPC server that exposes Vectra indexes over the VectraService proto.
18
+ */
19
+ export declare class VectraServer {
20
+ private readonly _config;
21
+ private readonly _indexManager;
22
+ private _server?;
23
+ private _startTime;
24
+ private _shutdownPromise?;
25
+ constructor(config: VectraServerConfig);
26
+ /** The underlying IndexManager. */
27
+ get indexManager(): IndexManager;
28
+ /** The underlying gRPC server instance. */
29
+ get server(): grpc.Server | undefined;
30
+ /**
31
+ * Starts the gRPC server and loads indexes.
32
+ * @returns The port the server is listening on.
33
+ */
34
+ start(): Promise<number>;
35
+ /**
36
+ * Gracefully shuts down the server with a 5s draining timeout.
37
+ */
38
+ shutdown(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=VectraServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectraServer.d.ts","sourceRoot":"","sources":["../../src/server/VectraServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAU3C,MAAM,WAAW,kBAAkB;IAC/B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAID;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAgB;gBAE7B,MAAM,EAAE,kBAAkB;IAWtC,mCAAmC;IACnC,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,2CAA2C;IAC3C,IAAW,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAE3C;IAED;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA6DrC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BzC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.VectraServer = void 0;
46
+ const path = __importStar(require("path"));
47
+ const grpc = __importStar(require("@grpc/grpc-js"));
48
+ const protoLoader = __importStar(require("@grpc/proto-loader"));
49
+ const IndexManager_1 = require("./IndexManager");
50
+ const handlers_1 = require("./handlers");
51
+ const DRAIN_TIMEOUT_MS = 5000;
52
+ /**
53
+ * gRPC server that exposes Vectra indexes over the VectraService proto.
54
+ */
55
+ class VectraServer {
56
+ constructor(config) {
57
+ this._startTime = 0;
58
+ this._config = config;
59
+ const managerConfig = {
60
+ indexPath: config.indexPath,
61
+ rootDir: config.rootDir,
62
+ embeddings: config.embeddings,
63
+ scanInterval: config.scanInterval,
64
+ };
65
+ this._indexManager = new IndexManager_1.IndexManager(managerConfig);
66
+ }
67
+ /** The underlying IndexManager. */
68
+ get indexManager() {
69
+ return this._indexManager;
70
+ }
71
+ /** The underlying gRPC server instance. */
72
+ get server() {
73
+ return this._server;
74
+ }
75
+ /**
76
+ * Starts the gRPC server and loads indexes.
77
+ * @returns The port the server is listening on.
78
+ */
79
+ start() {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ var _a;
82
+ this._startTime = Date.now();
83
+ // Load proto definition
84
+ const protoPath = path.resolve(__dirname, '..', '..', 'proto', 'vectra_service.proto');
85
+ const packageDefinition = protoLoader.loadSync(protoPath, {
86
+ keepCase: true,
87
+ longs: Number,
88
+ enums: String,
89
+ defaults: true,
90
+ oneofs: true,
91
+ });
92
+ const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
93
+ const vectraService = protoDescriptor.vectra.VectraService;
94
+ // Initialize index manager
95
+ yield this._indexManager.initialize();
96
+ // Create gRPC server
97
+ this._server = new grpc.Server();
98
+ // Register all handler groups
99
+ const indexHandlers = (0, handlers_1.createIndexHandlers)(this._indexManager);
100
+ const itemHandlers = (0, handlers_1.createItemHandlers)(this._indexManager, this._config.embeddings);
101
+ const queryHandlers = (0, handlers_1.createQueryHandlers)(this._indexManager, this._config.embeddings);
102
+ const documentHandlers = (0, handlers_1.createDocumentHandlers)(this._indexManager);
103
+ const statsHandlers = (0, handlers_1.createStatsHandlers)(this._indexManager);
104
+ const lifecycleHandlers = (0, handlers_1.createLifecycleHandlers)(this._indexManager, this._startTime, () => this.shutdown());
105
+ this._server.addService(vectraService.service, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, indexHandlers), itemHandlers), queryHandlers), documentHandlers), statsHandlers), lifecycleHandlers));
106
+ // Bind to localhost only
107
+ const port = (_a = this._config.port) !== null && _a !== void 0 ? _a : 50051;
108
+ const boundPort = yield new Promise((resolve, reject) => {
109
+ this._server.bindAsync(`127.0.0.1:${port}`, grpc.ServerCredentials.createInsecure(), (err, actualPort) => {
110
+ if (err) {
111
+ reject(err);
112
+ }
113
+ else {
114
+ resolve(actualPort);
115
+ }
116
+ });
117
+ });
118
+ return boundPort;
119
+ });
120
+ }
121
+ /**
122
+ * Gracefully shuts down the server with a 5s draining timeout.
123
+ */
124
+ shutdown() {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ if (this._shutdownPromise)
127
+ return this._shutdownPromise;
128
+ this._shutdownPromise = (() => __awaiter(this, void 0, void 0, function* () {
129
+ // Stop index manager scanning
130
+ yield this._indexManager.shutdown();
131
+ if (!this._server)
132
+ return;
133
+ // Try graceful shutdown with timeout
134
+ yield new Promise((resolve) => {
135
+ const timer = setTimeout(() => {
136
+ this._server.forceShutdown();
137
+ resolve();
138
+ }, DRAIN_TIMEOUT_MS);
139
+ this._server.tryShutdown((err) => {
140
+ clearTimeout(timer);
141
+ resolve();
142
+ });
143
+ });
144
+ this._server = undefined;
145
+ }))();
146
+ return this._shutdownPromise;
147
+ });
148
+ }
149
+ }
150
+ exports.VectraServer = VectraServer;
151
+ //# sourceMappingURL=VectraServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectraServer.js","sourceRoot":"","sources":["../../src/server/VectraServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VectraServer.spec.d.ts.map