vectra 0.12.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +92 -100
  3. package/bin/vectra.js +3 -0
  4. package/lib/BrowserWebFetcher.d.ts +75 -0
  5. package/lib/BrowserWebFetcher.d.ts.map +1 -0
  6. package/lib/BrowserWebFetcher.js +290 -0
  7. package/lib/BrowserWebFetcher.js.map +1 -0
  8. package/lib/FileFetcher.d.ts +5 -0
  9. package/lib/FileFetcher.d.ts.map +1 -0
  10. package/lib/FileFetcher.js +89 -0
  11. package/lib/FileFetcher.js.map +1 -0
  12. package/lib/FileFetcher.spec.d.ts +2 -0
  13. package/lib/FileFetcher.spec.d.ts.map +1 -0
  14. package/lib/FileFetcher.spec.js +244 -0
  15. package/lib/FileFetcher.spec.js.map +1 -0
  16. package/lib/FolderWatcher.d.ts +91 -0
  17. package/lib/FolderWatcher.d.ts.map +1 -0
  18. package/lib/FolderWatcher.js +304 -0
  19. package/lib/FolderWatcher.js.map +1 -0
  20. package/lib/FolderWatcher.spec.d.ts +2 -0
  21. package/lib/FolderWatcher.spec.d.ts.map +1 -0
  22. package/lib/FolderWatcher.spec.js +308 -0
  23. package/lib/FolderWatcher.spec.js.map +1 -0
  24. package/lib/GPT3Tokenizer.d.ts +9 -0
  25. package/lib/GPT3Tokenizer.spec.d.ts +2 -0
  26. package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
  27. package/lib/GPT3Tokenizer.spec.js +45 -0
  28. package/lib/GPT3Tokenizer.spec.js.map +1 -0
  29. package/lib/ItemSelector.d.ts +41 -0
  30. package/lib/ItemSelector.d.ts.map +1 -0
  31. package/lib/ItemSelector.js +179 -0
  32. package/lib/ItemSelector.js.map +1 -0
  33. package/lib/ItemSelector.spec.d.ts +2 -0
  34. package/lib/ItemSelector.spec.d.ts.map +1 -0
  35. package/lib/ItemSelector.spec.js +204 -0
  36. package/lib/ItemSelector.spec.js.map +1 -0
  37. package/lib/LocalDocument.d.ts +54 -0
  38. package/lib/LocalDocument.d.ts.map +1 -1
  39. package/lib/LocalDocument.js +116 -0
  40. package/lib/LocalDocument.js.map +1 -0
  41. package/lib/LocalDocument.spec.d.ts +2 -0
  42. package/lib/LocalDocument.spec.d.ts.map +1 -0
  43. package/lib/LocalDocument.spec.js +214 -0
  44. package/lib/LocalDocument.spec.js.map +1 -0
  45. package/lib/LocalDocumentIndex.d.ts +152 -0
  46. package/lib/LocalDocumentIndex.d.ts.map +1 -1
  47. package/lib/LocalDocumentIndex.js +420 -0
  48. package/lib/LocalDocumentIndex.js.map +1 -0
  49. package/lib/LocalDocumentIndex.spec.d.ts +2 -0
  50. package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
  51. package/lib/LocalDocumentIndex.spec.js +494 -0
  52. package/lib/LocalDocumentIndex.spec.js.map +1 -0
  53. package/lib/LocalDocumentResult.d.ts +66 -0
  54. package/lib/LocalDocumentResult.d.ts.map +1 -1
  55. package/lib/LocalDocumentResult.js +376 -0
  56. package/lib/LocalDocumentResult.js.map +1 -0
  57. package/lib/LocalDocumentResult.spec.d.ts +2 -0
  58. package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
  59. package/lib/LocalDocumentResult.spec.js +373 -0
  60. package/lib/LocalDocumentResult.spec.js.map +1 -0
  61. package/lib/LocalEmbeddings.d.ts +59 -0
  62. package/lib/LocalEmbeddings.d.ts.map +1 -0
  63. package/lib/LocalEmbeddings.js +101 -0
  64. package/lib/LocalEmbeddings.js.map +1 -0
  65. package/lib/LocalEmbeddings.spec.d.ts +2 -0
  66. package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
  67. package/lib/LocalEmbeddings.spec.js +155 -0
  68. package/lib/LocalEmbeddings.spec.js.map +1 -0
  69. package/lib/LocalIndex.d.ts +159 -0
  70. package/lib/LocalIndex.d.ts.map +1 -1
  71. package/lib/LocalIndex.js +519 -0
  72. package/lib/LocalIndex.js.map +1 -0
  73. package/lib/LocalIndex.spec.d.ts +2 -0
  74. package/lib/LocalIndex.spec.js +611 -9
  75. package/lib/LocalIndex.spec.js.map +1 -1
  76. package/lib/OpenAIEmbeddings.d.ts +124 -0
  77. package/lib/OpenAIEmbeddings.d.ts.map +1 -0
  78. package/lib/OpenAIEmbeddings.js +166 -0
  79. package/lib/OpenAIEmbeddings.js.map +1 -0
  80. package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
  81. package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
  82. package/lib/OpenAIEmbeddings.spec.js +298 -0
  83. package/lib/OpenAIEmbeddings.spec.js.map +1 -0
  84. package/lib/TextSplitter.d.ts +21 -0
  85. package/lib/TextSplitter.d.ts.map +1 -1
  86. package/lib/TextSplitter.js +500 -0
  87. package/lib/TextSplitter.js.map +1 -0
  88. package/lib/TextSplitter.spec.d.ts +2 -0
  89. package/lib/TextSplitter.spec.d.ts.map +1 -0
  90. package/lib/TextSplitter.spec.js +337 -0
  91. package/lib/TextSplitter.spec.js.map +1 -0
  92. package/lib/TransformersEmbeddings.d.ts +121 -0
  93. package/lib/TransformersEmbeddings.d.ts.map +1 -0
  94. package/lib/TransformersEmbeddings.js +176 -0
  95. package/lib/TransformersEmbeddings.js.map +1 -0
  96. package/lib/TransformersEmbeddings.spec.d.ts +2 -0
  97. package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
  98. package/lib/TransformersEmbeddings.spec.js +198 -0
  99. package/lib/TransformersEmbeddings.spec.js.map +1 -0
  100. package/lib/TransformersTokenizer.d.ts +33 -0
  101. package/lib/TransformersTokenizer.d.ts.map +1 -0
  102. package/lib/TransformersTokenizer.js +44 -0
  103. package/lib/TransformersTokenizer.js.map +1 -0
  104. package/lib/TransformersTokenizer.spec.d.ts +2 -0
  105. package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
  106. package/lib/TransformersTokenizer.spec.js +112 -0
  107. package/lib/TransformersTokenizer.spec.js.map +1 -0
  108. package/lib/WebFetcher.d.ts +14 -0
  109. package/lib/WebFetcher.d.ts.map +1 -0
  110. package/lib/WebFetcher.js +238 -0
  111. package/lib/WebFetcher.js.map +1 -0
  112. package/lib/WebFetcher.spec.d.ts +2 -0
  113. package/lib/WebFetcher.spec.d.ts.map +1 -0
  114. package/lib/WebFetcher.spec.js +263 -0
  115. package/lib/WebFetcher.spec.js.map +1 -0
  116. package/lib/browser.d.ts +30 -0
  117. package/lib/browser.d.ts.map +1 -0
  118. package/lib/browser.js +52 -0
  119. package/lib/browser.js.map +1 -0
  120. package/lib/codecs/IndexCodec.d.ts +37 -0
  121. package/lib/codecs/IndexCodec.d.ts.map +1 -0
  122. package/lib/codecs/IndexCodec.js +3 -0
  123. package/lib/codecs/IndexCodec.js.map +1 -0
  124. package/lib/codecs/JsonCodec.d.ts +19 -0
  125. package/lib/codecs/JsonCodec.d.ts.map +1 -0
  126. package/lib/codecs/JsonCodec.js +35 -0
  127. package/lib/codecs/JsonCodec.js.map +1 -0
  128. package/lib/codecs/JsonCodec.spec.d.ts +2 -0
  129. package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
  130. package/lib/codecs/JsonCodec.spec.js +66 -0
  131. package/lib/codecs/JsonCodec.spec.js.map +1 -0
  132. package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
  133. package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
  134. package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
  135. package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
  136. package/lib/codecs/ProtobufCodec.d.ts +20 -0
  137. package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
  138. package/lib/codecs/ProtobufCodec.js +225 -0
  139. package/lib/codecs/ProtobufCodec.js.map +1 -0
  140. package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
  141. package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
  142. package/lib/codecs/ProtobufCodec.spec.js +155 -0
  143. package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
  144. package/lib/codecs/index.d.ts +5 -0
  145. package/lib/codecs/index.d.ts.map +1 -0
  146. package/lib/codecs/index.js +21 -0
  147. package/lib/codecs/index.js.map +1 -0
  148. package/lib/codecs/migrateIndex.d.ts +24 -0
  149. package/lib/codecs/migrateIndex.d.ts.map +1 -0
  150. package/lib/codecs/migrateIndex.js +119 -0
  151. package/lib/codecs/migrateIndex.js.map +1 -0
  152. package/lib/codecs/migrateIndex.spec.d.ts +2 -0
  153. package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
  154. package/lib/codecs/migrateIndex.spec.js +151 -0
  155. package/lib/codecs/migrateIndex.spec.js.map +1 -0
  156. package/lib/codecs/schemas/index.proto +34 -0
  157. package/lib/index.d.ts +20 -0
  158. package/lib/index.d.ts.map +1 -1
  159. package/lib/index.js +36 -0
  160. package/lib/index.js.map +1 -0
  161. package/lib/internals/Colorize.d.ts +14 -0
  162. package/lib/internals/Colorize.d.ts.map +1 -0
  163. package/lib/internals/Colorize.js +69 -0
  164. package/lib/internals/Colorize.js.map +1 -0
  165. package/lib/internals/index.d.ts +3 -0
  166. package/lib/internals/index.d.ts.map +1 -0
  167. package/lib/internals/index.js +19 -0
  168. package/lib/internals/index.js.map +1 -0
  169. package/lib/internals/types.d.ts +43 -0
  170. package/lib/internals/types.d.ts.map +1 -0
  171. package/lib/internals/types.js +3 -0
  172. package/lib/internals/types.js.map +1 -0
  173. package/lib/server/IndexManager.d.ts +78 -0
  174. package/lib/server/IndexManager.d.ts.map +1 -0
  175. package/lib/server/IndexManager.js +259 -0
  176. package/lib/server/IndexManager.js.map +1 -0
  177. package/lib/server/VectraServer.d.ts +40 -0
  178. package/lib/server/VectraServer.d.ts.map +1 -0
  179. package/lib/server/VectraServer.js +151 -0
  180. package/lib/server/VectraServer.js.map +1 -0
  181. package/lib/server/VectraServer.spec.d.ts +2 -0
  182. package/lib/server/VectraServer.spec.d.ts.map +1 -0
  183. package/lib/server/VectraServer.spec.js +322 -0
  184. package/lib/server/VectraServer.spec.js.map +1 -0
  185. package/lib/server/handlers/documentHandlers.d.ts +15 -0
  186. package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
  187. package/lib/server/handlers/documentHandlers.js +95 -0
  188. package/lib/server/handlers/documentHandlers.js.map +1 -0
  189. package/lib/server/handlers/helpers.d.ts +23 -0
  190. package/lib/server/handlers/helpers.d.ts.map +1 -0
  191. package/lib/server/handlers/helpers.js +138 -0
  192. package/lib/server/handlers/helpers.js.map +1 -0
  193. package/lib/server/handlers/index.d.ts +8 -0
  194. package/lib/server/handlers/index.d.ts.map +1 -0
  195. package/lib/server/handlers/index.js +22 -0
  196. package/lib/server/handlers/index.js.map +1 -0
  197. package/lib/server/handlers/indexHandlers.d.ts +14 -0
  198. package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
  199. package/lib/server/handlers/indexHandlers.js +85 -0
  200. package/lib/server/handlers/indexHandlers.js.map +1 -0
  201. package/lib/server/handlers/itemHandlers.d.ts +34 -0
  202. package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
  203. package/lib/server/handlers/itemHandlers.js +166 -0
  204. package/lib/server/handlers/itemHandlers.js.map +1 -0
  205. package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
  206. package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
  207. package/lib/server/handlers/lifecycleHandlers.js +31 -0
  208. package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
  209. package/lib/server/handlers/queryHandlers.d.ts +27 -0
  210. package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
  211. package/lib/server/handlers/queryHandlers.js +135 -0
  212. package/lib/server/handlers/queryHandlers.js.map +1 -0
  213. package/lib/server/handlers/statsHandlers.d.ts +17 -0
  214. package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
  215. package/lib/server/handlers/statsHandlers.js +81 -0
  216. package/lib/server/handlers/statsHandlers.js.map +1 -0
  217. package/lib/server/index.d.ts +4 -0
  218. package/lib/server/index.d.ts.map +1 -0
  219. package/lib/server/index.js +23 -0
  220. package/lib/server/index.js.map +1 -0
  221. package/lib/storage/FileStorage.d.ts +92 -0
  222. package/lib/storage/FileStorage.d.ts.map +1 -0
  223. package/lib/storage/FileStorage.js +3 -0
  224. package/lib/storage/FileStorage.js.map +1 -0
  225. package/lib/storage/FileStorageUtilities.d.ts +36 -0
  226. package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
  227. package/lib/storage/FileStorageUtilities.js +91 -0
  228. package/lib/storage/FileStorageUtilities.js.map +1 -0
  229. package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
  230. package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
  231. package/lib/storage/FileStorageUtilities.spec.js +98 -0
  232. package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
  233. package/lib/storage/FileType.d.ts +29 -0
  234. package/lib/storage/FileType.d.ts.map +1 -0
  235. package/lib/storage/FileType.js +38 -0
  236. package/lib/storage/FileType.js.map +1 -0
  237. package/lib/storage/IndexedDBStorage.d.ts +47 -0
  238. package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
  239. package/lib/storage/IndexedDBStorage.js +347 -0
  240. package/lib/storage/IndexedDBStorage.js.map +1 -0
  241. package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
  242. package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
  243. package/lib/storage/LocalFileStorage.browser.js +43 -0
  244. package/lib/storage/LocalFileStorage.browser.js.map +1 -0
  245. package/lib/storage/LocalFileStorage.d.ts +23 -0
  246. package/lib/storage/LocalFileStorage.d.ts.map +1 -0
  247. package/lib/storage/LocalFileStorage.js +152 -0
  248. package/lib/storage/LocalFileStorage.js.map +1 -0
  249. package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
  250. package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
  251. package/lib/storage/LocalFileStorage.spec.js +249 -0
  252. package/lib/storage/LocalFileStorage.spec.js.map +1 -0
  253. package/lib/storage/VirtualFileStorage.d.ts +18 -0
  254. package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
  255. package/lib/storage/VirtualFileStorage.js +178 -0
  256. package/lib/storage/VirtualFileStorage.js.map +1 -0
  257. package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
  258. package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
  259. package/lib/storage/VirtualFileStorage.spec.js +302 -0
  260. package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
  261. package/lib/storage/index.d.ts +6 -0
  262. package/lib/storage/index.d.ts.map +1 -0
  263. package/lib/storage/index.js +22 -0
  264. package/lib/storage/index.js.map +1 -0
  265. package/lib/templates/templates/csharp/README.md +48 -0
  266. package/lib/templates/templates/csharp/VectraClient.cs +234 -0
  267. package/lib/templates/templates/go/README.md +71 -0
  268. package/lib/templates/templates/go/vectra_client.go +322 -0
  269. package/lib/templates/templates/java/README.md +81 -0
  270. package/lib/templates/templates/java/VectraClient.java +232 -0
  271. package/lib/templates/templates/python/README.md +37 -0
  272. package/lib/templates/templates/python/vectra_client.py +279 -0
  273. package/lib/templates/templates/rust/Cargo.toml +14 -0
  274. package/lib/templates/templates/rust/README.md +39 -0
  275. package/lib/templates/templates/rust/build.rs +4 -0
  276. package/lib/templates/templates/rust/lib.rs +284 -0
  277. package/lib/templates/templates/typescript/README.md +96 -0
  278. package/lib/templates/templates/typescript/VectraClient.ts +374 -0
  279. package/lib/templates/typescript/VectraClient.d.ts +114 -0
  280. package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
  281. package/lib/templates/typescript/VectraClient.js +328 -0
  282. package/lib/templates/typescript/VectraClient.js.map +1 -0
  283. package/lib/types.d.ts +153 -0
  284. package/lib/types.d.ts.map +1 -0
  285. package/lib/types.js +3 -0
  286. package/lib/types.js.map +1 -0
  287. package/lib/utils/index.d.ts +2 -0
  288. package/lib/utils/index.d.ts.map +1 -0
  289. package/lib/utils/index.js +18 -0
  290. package/lib/utils/index.js.map +1 -0
  291. package/lib/utils/pathUtils.d.ts +40 -0
  292. package/lib/utils/pathUtils.d.ts.map +1 -0
  293. package/lib/utils/pathUtils.js +98 -0
  294. package/lib/utils/pathUtils.js.map +1 -0
  295. package/lib/vectra-cli.d.ts +2 -0
  296. package/lib/vectra-cli.d.ts.map +1 -1
  297. package/lib/vectra-cli.generate.spec.d.ts +2 -0
  298. package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
  299. package/lib/vectra-cli.generate.spec.js +112 -0
  300. package/lib/vectra-cli.generate.spec.js.map +1 -0
  301. package/lib/vectra-cli.js +760 -0
  302. package/lib/vectra-cli.js.map +1 -0
  303. package/lib/vectra-cli.spec.d.ts +1 -0
  304. package/lib/vectra-cli.spec.d.ts.map +1 -0
  305. package/lib/vectra-cli.spec.js +2 -0
  306. package/lib/vectra-cli.spec.js.map +1 -0
  307. package/package.json +91 -16
  308. package/proto/vectra_service.proto +276 -0
  309. package/src/BrowserWebFetcher.ts +345 -0
  310. package/src/FileFetcher.spec.ts +234 -0
  311. package/src/FileFetcher.ts +37 -25
  312. package/src/FolderWatcher.spec.ts +288 -0
  313. package/src/FolderWatcher.ts +304 -0
  314. package/src/GPT3Tokenizer.spec.ts +50 -0
  315. package/src/ItemSelector.spec.ts +252 -0
  316. package/src/ItemSelector.ts +163 -150
  317. package/src/LocalDocument.spec.ts +211 -0
  318. package/src/LocalDocument.ts +88 -94
  319. package/src/LocalDocumentIndex.spec.ts +481 -0
  320. package/src/LocalDocumentIndex.ts +39 -40
  321. package/src/LocalDocumentResult.spec.ts +373 -0
  322. package/src/LocalDocumentResult.ts +489 -319
  323. package/src/LocalEmbeddings.spec.ts +138 -0
  324. package/src/LocalEmbeddings.ts +120 -0
  325. package/src/LocalIndex.spec.ts +808 -66
  326. package/src/LocalIndex.ts +479 -429
  327. package/src/OpenAIEmbeddings.spec.ts +354 -0
  328. package/src/OpenAIEmbeddings.ts +26 -27
  329. package/src/TextSplitter.spec.ts +342 -0
  330. package/src/TextSplitter.ts +517 -532
  331. package/src/TransformersEmbeddings.spec.ts +188 -0
  332. package/src/TransformersEmbeddings.ts +232 -0
  333. package/src/TransformersTokenizer.spec.ts +143 -0
  334. package/src/TransformersTokenizer.ts +45 -0
  335. package/src/WebFetcher.spec.ts +288 -0
  336. package/src/WebFetcher.ts +184 -186
  337. package/src/browser.ts +69 -0
  338. package/src/codecs/IndexCodec.ts +40 -0
  339. package/src/codecs/JsonCodec.spec.ts +70 -0
  340. package/src/codecs/JsonCodec.ts +37 -0
  341. package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
  342. package/src/codecs/ProtobufCodec.spec.ts +166 -0
  343. package/src/codecs/ProtobufCodec.ts +193 -0
  344. package/src/codecs/index.ts +4 -0
  345. package/src/codecs/migrateIndex.spec.ts +176 -0
  346. package/src/codecs/migrateIndex.ts +125 -0
  347. package/src/codecs/schemas/index.proto +34 -0
  348. package/src/index.ts +9 -1
  349. package/src/internals/Colorize.ts +19 -16
  350. package/src/server/IndexManager.ts +243 -0
  351. package/src/server/VectraServer.spec.ts +303 -0
  352. package/src/server/VectraServer.ts +156 -0
  353. package/src/server/handlers/documentHandlers.ts +59 -0
  354. package/src/server/handlers/helpers.ts +93 -0
  355. package/src/server/handlers/index.ts +7 -0
  356. package/src/server/handlers/indexHandlers.ts +44 -0
  357. package/src/server/handlers/itemHandlers.ts +140 -0
  358. package/src/server/handlers/lifecycleHandlers.ts +26 -0
  359. package/src/server/handlers/queryHandlers.ts +96 -0
  360. package/src/server/handlers/statsHandlers.ts +38 -0
  361. package/src/server/index.ts +3 -0
  362. package/src/storage/FileStorage.ts +105 -0
  363. package/src/storage/FileStorageUtilities.spec.ts +106 -0
  364. package/src/storage/FileStorageUtilities.ts +77 -0
  365. package/src/storage/FileType.ts +61 -0
  366. package/src/storage/IndexedDBStorage.ts +365 -0
  367. package/src/storage/LocalFileStorage.browser.ts +52 -0
  368. package/src/storage/LocalFileStorage.spec.ts +292 -0
  369. package/src/storage/LocalFileStorage.ts +98 -0
  370. package/src/storage/VirtualFileStorage.spec.ts +307 -0
  371. package/src/storage/VirtualFileStorage.ts +169 -0
  372. package/src/storage/index.ts +5 -0
  373. package/src/templates/csharp/README.md +48 -0
  374. package/src/templates/csharp/VectraClient.cs +234 -0
  375. package/src/templates/go/README.md +71 -0
  376. package/src/templates/go/vectra_client.go +322 -0
  377. package/src/templates/java/README.md +81 -0
  378. package/src/templates/java/VectraClient.java +232 -0
  379. package/src/templates/python/README.md +37 -0
  380. package/src/templates/python/vectra_client.py +279 -0
  381. package/src/templates/rust/Cargo.toml +14 -0
  382. package/src/templates/rust/README.md +39 -0
  383. package/src/templates/rust/build.rs +4 -0
  384. package/src/templates/rust/lib.rs +284 -0
  385. package/src/templates/typescript/README.md +96 -0
  386. package/src/templates/typescript/VectraClient.ts +374 -0
  387. package/src/types.ts +131 -123
  388. package/src/utils/index.ts +1 -0
  389. package/src/utils/pathUtils.ts +106 -0
  390. package/src/vectra-cli.generate.spec.ts +72 -0
  391. package/src/vectra-cli.spec.ts +0 -0
  392. package/src/vectra-cli.ts +687 -246
@@ -0,0 +1,494 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const pathUtils_1 = __importDefault(require("./utils/pathUtils"));
16
+ const node_assert_1 = require("node:assert");
17
+ const mocha_1 = require("mocha");
18
+ const LocalDocumentIndex_1 = require("./LocalDocumentIndex");
19
+ class FakeEmbeddings {
20
+ constructor() {
21
+ this.maxTokens = 10;
22
+ this.createEmbeddingsCalls = [];
23
+ this.createEmbeddingsResponses = [];
24
+ }
25
+ createEmbeddings(inputs) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ this.createEmbeddingsCalls.push(inputs);
28
+ if (this.createEmbeddingsResponses.length > 0) {
29
+ return this.createEmbeddingsResponses.shift();
30
+ }
31
+ const arr = Array.isArray(inputs) ? inputs : [inputs];
32
+ return { status: 'success', output: arr.map(() => [0.1, 0.2]) };
33
+ });
34
+ }
35
+ }
36
+ class SimpleTokenizer {
37
+ encode(text) {
38
+ return Array.from(text).map(ch => ch.charCodeAt(0));
39
+ }
40
+ decode(tokens) {
41
+ return tokens.map(t => String.fromCharCode(t)).join('');
42
+ }
43
+ }
44
+ class FakeStorage {
45
+ constructor() {
46
+ this.files = new Map();
47
+ this.folders = new Set();
48
+ this.pathExistsCalls = [];
49
+ this.readFileCalls = [];
50
+ this.upsertFileCalls = [];
51
+ this.deleteFileCalls = [];
52
+ this.createdFolders = [];
53
+ this.deletedFolders = [];
54
+ this.createdFiles = [];
55
+ }
56
+ createFile(filePath, content) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ if (this.files.has(filePath))
59
+ throw new Error('File already exists');
60
+ this.createdFiles.push(filePath);
61
+ const text = Buffer.isBuffer(content) ? content.toString('utf8') : content;
62
+ this.files.set(filePath, text);
63
+ });
64
+ }
65
+ createFolder(folderPath) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ this.createdFolders.push(folderPath);
68
+ this.folders.add(folderPath);
69
+ });
70
+ }
71
+ deleteFile(filePath) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ this.deleteFileCalls.push(filePath);
74
+ if (!this.files.has(filePath)) {
75
+ throw new Error('File not found');
76
+ }
77
+ this.files.delete(filePath);
78
+ });
79
+ }
80
+ deleteFolder(folderPath) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ this.deletedFolders.push(folderPath);
83
+ for (const key of [...this.files.keys()]) {
84
+ if (key.startsWith(folderPath))
85
+ this.files.delete(key);
86
+ }
87
+ this.folders.delete(folderPath);
88
+ });
89
+ }
90
+ getDetails(fileOrFolderPath) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ if (this.folders.has(fileOrFolderPath)) {
93
+ return { name: pathUtils_1.default.basename(fileOrFolderPath), path: fileOrFolderPath, isFolder: true };
94
+ }
95
+ if (this.files.has(fileOrFolderPath)) {
96
+ return { name: pathUtils_1.default.basename(fileOrFolderPath), path: fileOrFolderPath, isFolder: false };
97
+ }
98
+ throw new Error('Path not found');
99
+ });
100
+ }
101
+ listFiles(folderPath_1) {
102
+ return __awaiter(this, arguments, void 0, function* (folderPath, filter = 'all') {
103
+ const results = [];
104
+ for (const f of this.folders) {
105
+ const parent = pathUtils_1.default.dirname(f);
106
+ if (parent === folderPath) {
107
+ if (filter === 'all' || filter === 'folders') {
108
+ results.push({ name: pathUtils_1.default.basename(f), path: f, isFolder: true });
109
+ }
110
+ }
111
+ }
112
+ for (const f of this.files.keys()) {
113
+ const parent = pathUtils_1.default.dirname(f);
114
+ if (parent === folderPath) {
115
+ if (filter === 'all' || filter === 'files') {
116
+ results.push({ name: pathUtils_1.default.basename(f), path: f, isFolder: false });
117
+ }
118
+ }
119
+ }
120
+ return results;
121
+ });
122
+ }
123
+ pathExists(fileOrFolderPath) {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ this.pathExistsCalls.push(fileOrFolderPath);
126
+ return this.files.has(fileOrFolderPath) || this.folders.has(fileOrFolderPath);
127
+ });
128
+ }
129
+ readFile(filePath) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ this.readFileCalls.push(filePath);
132
+ if (!this.files.has(filePath))
133
+ throw new Error('File not found');
134
+ return Buffer.from(this.files.get(filePath), 'utf8');
135
+ });
136
+ }
137
+ upsertFile(filePath, content) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const text = Buffer.isBuffer(content) ? content.toString('utf8') : content;
140
+ this.upsertFileCalls.push({ path: filePath, content: text });
141
+ this.files.set(filePath, text);
142
+ });
143
+ }
144
+ }
145
+ (0, mocha_1.describe)('LocalDocumentIndex', () => {
146
+ let storage;
147
+ let embeddings;
148
+ let tokenizer;
149
+ let index;
150
+ const folderPath = '/fake/path';
151
+ const indexJsonPath = pathUtils_1.default.join(folderPath, 'index.json');
152
+ (0, mocha_1.beforeEach)(() => {
153
+ storage = new FakeStorage();
154
+ embeddings = new FakeEmbeddings();
155
+ tokenizer = new SimpleTokenizer();
156
+ storage.files.set(indexJsonPath, JSON.stringify({ version: 1, metadata_config: {}, items: [] }));
157
+ const config = { folderPath, embeddings, tokenizer, storage };
158
+ index = new LocalDocumentIndex_1.LocalDocumentIndex(config);
159
+ });
160
+ (0, mocha_1.describe)('constructor and getters', () => {
161
+ (0, mocha_1.it)('uses defaults when not provided (GPT3Tokenizer, undefined embeddings)', () => {
162
+ const idx = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath });
163
+ node_assert_1.strict.equal(idx.tokenizer.constructor.name, 'GPT3Tokenizer');
164
+ node_assert_1.strict.equal(idx.embeddings, undefined);
165
+ });
166
+ (0, mocha_1.it)('uses provided tokenizer and embeddings', () => {
167
+ const fakeTok = new SimpleTokenizer();
168
+ const idx = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, tokenizer: fakeTok, embeddings, storage });
169
+ node_assert_1.strict.equal(idx.tokenizer, fakeTok);
170
+ node_assert_1.strict.equal(idx.embeddings, embeddings);
171
+ });
172
+ });
173
+ (0, mocha_1.describe)('isCatalogCreated', () => {
174
+ (0, mocha_1.it)('returns true if catalog.json exists at correct path', () => __awaiter(void 0, void 0, void 0, function* () {
175
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
176
+ storage.files.set(catalogPath, '{}');
177
+ const exists = yield index.isCatalogCreated();
178
+ node_assert_1.strict.equal(exists, true);
179
+ node_assert_1.strict.equal(storage.pathExistsCalls[0], catalogPath);
180
+ }));
181
+ (0, mocha_1.it)('returns false if catalog.json does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
182
+ const exists = yield index.isCatalogCreated();
183
+ node_assert_1.strict.equal(exists, false);
184
+ }));
185
+ });
186
+ (0, mocha_1.describe)('loadIndexData', () => {
187
+ (0, mocha_1.it)('early returns if catalog already loaded (no catalog read)', () => __awaiter(void 0, void 0, void 0, function* () {
188
+ index._catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
189
+ yield index.loadIndexData(); // base will read index.json; catalog should not be read
190
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
191
+ const catalogReads = storage.readFileCalls.filter(p => p === catalogPath).length;
192
+ node_assert_1.strict.equal(catalogReads, 0);
193
+ }));
194
+ (0, mocha_1.it)('loads existing catalog from storage', () => __awaiter(void 0, void 0, void 0, function* () {
195
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
196
+ const catalogData = JSON.stringify({ version: 1, count: 2, uriToId: { a: 'id1' }, idToUri: { id1: 'a' } });
197
+ storage.files.set(catalogPath, catalogData);
198
+ const loaded = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, storage, tokenizer });
199
+ (storage.files).set(indexJsonPath, JSON.stringify({ version: 1, metadata_config: {}, items: [] }));
200
+ yield loaded.loadIndexData();
201
+ node_assert_1.strict.deepEqual(loaded._catalog, JSON.parse(catalogData));
202
+ }));
203
+ (0, mocha_1.it)('creates new catalog if none exists and persists it', () => __awaiter(void 0, void 0, void 0, function* () {
204
+ const newIndex = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, storage, tokenizer });
205
+ yield newIndex.loadIndexData();
206
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
207
+ (0, node_assert_1.strict)(storage.upsertFileCalls.some(c => c.path === catalogPath));
208
+ const catalog = newIndex._catalog;
209
+ node_assert_1.strict.equal(catalog.version, 1);
210
+ node_assert_1.strict.equal(catalog.count, 0);
211
+ node_assert_1.strict.deepEqual(catalog.uriToId, {});
212
+ node_assert_1.strict.deepEqual(catalog.idToUri, {});
213
+ }));
214
+ (0, mocha_1.it)('wraps error when failing to create catalog', () => __awaiter(void 0, void 0, void 0, function* () {
215
+ const failing = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, storage, tokenizer });
216
+ const orig = storage.upsertFile.bind(storage);
217
+ storage.upsertFile = (p, c) => __awaiter(void 0, void 0, void 0, function* () {
218
+ if (p.endsWith('catalog.json'))
219
+ throw new Error('disk error');
220
+ return orig(p, c);
221
+ });
222
+ yield node_assert_1.strict.rejects(failing.loadIndexData(), /Error creating document catalog: Error: disk error/);
223
+ }));
224
+ });
225
+ (0, mocha_1.describe)('getDocumentId and getDocumentUri', () => {
226
+ (0, mocha_1.beforeEach)(() => {
227
+ index._catalog = { version: 1, count: 1, uriToId: { doc1: 'id1' }, idToUri: { id1: 'doc1' } };
228
+ });
229
+ (0, mocha_1.it)('returns id for known uri', () => __awaiter(void 0, void 0, void 0, function* () {
230
+ node_assert_1.strict.equal(yield index.getDocumentId('doc1'), 'id1');
231
+ }));
232
+ (0, mocha_1.it)('returns undefined for unknown uri', () => __awaiter(void 0, void 0, void 0, function* () {
233
+ node_assert_1.strict.equal(yield index.getDocumentId('nope'), undefined);
234
+ }));
235
+ (0, mocha_1.it)('returns uri for known id', () => __awaiter(void 0, void 0, void 0, function* () {
236
+ node_assert_1.strict.equal(yield index.getDocumentUri('id1'), 'doc1');
237
+ }));
238
+ (0, mocha_1.it)('returns undefined for unknown id', () => __awaiter(void 0, void 0, void 0, function* () {
239
+ node_assert_1.strict.equal(yield index.getDocumentUri('nope'), undefined);
240
+ }));
241
+ });
242
+ (0, mocha_1.describe)('getCatalogStats', () => {
243
+ (0, mocha_1.it)('returns catalog stats merged with index stats', () => __awaiter(void 0, void 0, void 0, function* () {
244
+ index._catalog = { version: 1, count: 2, uriToId: {}, idToUri: {} };
245
+ index.getIndexStats = () => __awaiter(void 0, void 0, void 0, function* () { return ({ items: 5, metadata_config: { indexed: ['a'] } }); });
246
+ const stats = yield index.getCatalogStats();
247
+ node_assert_1.strict.equal(stats.version, 1);
248
+ node_assert_1.strict.equal(stats.documents, 2);
249
+ node_assert_1.strict.equal(stats.chunks, 5);
250
+ node_assert_1.strict.deepEqual(stats.metadata_config, { indexed: ['a'] });
251
+ }));
252
+ });
253
+ (0, mocha_1.describe)('deleteDocument', () => {
254
+ (0, mocha_1.it)('returns early if document not found', () => __awaiter(void 0, void 0, void 0, function* () {
255
+ const result = yield index.deleteDocument('missing');
256
+ node_assert_1.strict.equal(result, undefined);
257
+ }));
258
+ (0, mocha_1.it)('successfully deletes chunks, updates catalog, and removes files', () => __awaiter(void 0, void 0, void 0, function* () {
259
+ const uri = 'doc://one';
260
+ const documentId = 'id-1';
261
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: documentId }, idToUri: { [documentId]: uri } };
262
+ storage.files.set(pathUtils_1.default.join(folderPath, `${documentId}.txt`), 'hello');
263
+ storage.files.set(pathUtils_1.default.join(folderPath, `${documentId}.json`), '{"k":"v"}');
264
+ index.listItemsByMetadata = () => __awaiter(void 0, void 0, void 0, function* () { return [{ id: 'chunk-1', metadata: { documentId } }]; });
265
+ index.deleteItem = () => __awaiter(void 0, void 0, void 0, function* () { });
266
+ yield index.deleteDocument(uri);
267
+ (0, node_assert_1.strict)(!storage.files.has(pathUtils_1.default.join(folderPath, `${documentId}.txt`)));
268
+ (0, node_assert_1.strict)(!storage.files.has(pathUtils_1.default.join(folderPath, `${documentId}.json`)));
269
+ node_assert_1.strict.equal(index._catalog.count, 0);
270
+ node_assert_1.strict.equal(index._catalog.uriToId[uri], undefined);
271
+ node_assert_1.strict.equal(index._catalog.idToUri[documentId], undefined);
272
+ }));
273
+ (0, mocha_1.it)('cancels update and throws when deleteItem fails', () => __awaiter(void 0, void 0, void 0, function* () {
274
+ const uri = 'doc://err';
275
+ const documentId = 'id-err';
276
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: documentId }, idToUri: { [documentId]: uri } };
277
+ index.listItemsByMetadata = () => __awaiter(void 0, void 0, void 0, function* () { return [{ id: 'chunk-1', metadata: { documentId } }]; });
278
+ index.deleteItem = () => __awaiter(void 0, void 0, void 0, function* () { throw new Error('delete error'); });
279
+ yield node_assert_1.strict.rejects(index.deleteDocument(uri), /Error deleting document "doc:\/\/err": Error: delete error/);
280
+ }));
281
+ (0, mocha_1.it)('wraps error when deleting text file fails and ignores metadata deletion failures', () => __awaiter(void 0, void 0, void 0, function* () {
282
+ const uri = 'doc://bad-delete';
283
+ const documentId = 'id-text-err';
284
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: documentId }, idToUri: { [documentId]: uri } };
285
+ index.listItemsByMetadata = () => __awaiter(void 0, void 0, void 0, function* () { return []; });
286
+ index.deleteItem = () => __awaiter(void 0, void 0, void 0, function* () { });
287
+ const originalDelete = storage.deleteFile.bind(storage);
288
+ storage.deleteFile = (filePath) => __awaiter(void 0, void 0, void 0, function* () {
289
+ if (filePath.endsWith('.txt'))
290
+ throw new Error('delete text error');
291
+ return originalDelete(filePath);
292
+ });
293
+ yield node_assert_1.strict.rejects(index.deleteDocument(uri), /Error removing text file for document "doc:\/\/bad-delete" from disk: Error: delete text error/);
294
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: documentId }, idToUri: { [documentId]: uri } };
295
+ storage.files.set(pathUtils_1.default.join(folderPath, `${documentId}.txt`), 'x');
296
+ storage.files.set(pathUtils_1.default.join(folderPath, `${documentId}.json`), '{}');
297
+ storage.deleteFile = (filePath) => __awaiter(void 0, void 0, void 0, function* () {
298
+ if (filePath.endsWith('.json'))
299
+ throw new Error('delete json error');
300
+ return originalDelete(filePath);
301
+ });
302
+ yield index.deleteDocument(uri);
303
+ (0, node_assert_1.strict)(!storage.files.has(pathUtils_1.default.join(folderPath, `${documentId}.txt`)));
304
+ }));
305
+ });
306
+ (0, mocha_1.describe)('upsertDocument', () => {
307
+ (0, mocha_1.it)('throws if embeddings not configured', () => __awaiter(void 0, void 0, void 0, function* () {
308
+ const idx = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, storage, tokenizer });
309
+ yield node_assert_1.strict.rejects(idx.upsertDocument('uri', 'text'), /Embeddings model not configured/);
310
+ }));
311
+ (0, mocha_1.it)('deletes existing document when re-inserting same uri', () => __awaiter(void 0, void 0, void 0, function* () {
312
+ const uri = 'doc://exists';
313
+ const existingId = 'doc-1';
314
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: existingId }, idToUri: { [existingId]: uri } };
315
+ let deleteCalled = false;
316
+ index.deleteDocument = () => __awaiter(void 0, void 0, void 0, function* () { deleteCalled = true; });
317
+ index.insertItem = () => __awaiter(void 0, void 0, void 0, function* () { });
318
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.01, 0.02]] });
319
+ const doc = yield index.upsertDocument(uri, 'hello world');
320
+ (0, node_assert_1.strict)(deleteCalled);
321
+ node_assert_1.strict.equal(doc.uri, uri);
322
+ }));
323
+ (0, mocha_1.it)('infers docType from uri when not provided and writes files, updates catalog', () => __awaiter(void 0, void 0, void 0, function* () {
324
+ index.insertItem = () => __awaiter(void 0, void 0, void 0, function* () { });
325
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.1, 0.2]] });
326
+ const metadata = { author: 'test' };
327
+ const doc = yield index.upsertDocument('file.md', 'content here', undefined, metadata);
328
+ const textPath = pathUtils_1.default.join(folderPath, `${doc.id}.txt`);
329
+ const metaPath = pathUtils_1.default.join(folderPath, `${doc.id}.json`);
330
+ (0, node_assert_1.strict)(storage.files.has(textPath));
331
+ (0, node_assert_1.strict)(storage.files.has(metaPath));
332
+ node_assert_1.strict.equal(index._catalog.count, 1);
333
+ node_assert_1.strict.equal(index._catalog.idToUri[doc.id], 'file.md');
334
+ node_assert_1.strict.equal(index._catalog.uriToId['file.md'], doc.id);
335
+ }));
336
+ (0, mocha_1.it)('batches chunk embeddings using embeddings.maxTokens and calls createEmbeddings per batch', () => __awaiter(void 0, void 0, void 0, function* () {
337
+ const longText = 'a '.repeat(30);
338
+ const calls = [];
339
+ embeddings.createEmbeddings = (inputs) => __awaiter(void 0, void 0, void 0, function* () {
340
+ calls.push(inputs);
341
+ const arr = Array.isArray(inputs) ? inputs : [inputs];
342
+ return { status: 'success', output: arr.map(() => [0.1, 0.2]) };
343
+ });
344
+ index.insertItem = () => __awaiter(void 0, void 0, void 0, function* () { });
345
+ yield index.upsertDocument('file.txt', longText);
346
+ (0, node_assert_1.strict)(calls.length > 1);
347
+ }));
348
+ (0, mocha_1.it)('wraps embedding generation errors and non-success statuses', () => __awaiter(void 0, void 0, void 0, function* () {
349
+ embeddings.createEmbeddings = () => __awaiter(void 0, void 0, void 0, function* () { throw new Error('fail'); });
350
+ yield node_assert_1.strict.rejects(index.upsertDocument('u', 't'), /Error generating embeddings: Error: fail/);
351
+ embeddings.createEmbeddings = () => __awaiter(void 0, void 0, void 0, function* () { return ({ status: 'error', message: 'bad' }); });
352
+ yield node_assert_1.strict.rejects(index.upsertDocument('u', 't'), /Error generating embeddings: bad/);
353
+ }));
354
+ (0, mocha_1.it)('cancels update and throws when insertItem fails', () => __awaiter(void 0, void 0, void 0, function* () {
355
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.1, 0.2]] });
356
+ index.insertItem = () => __awaiter(void 0, void 0, void 0, function* () { throw new Error('insert error'); });
357
+ yield node_assert_1.strict.rejects(index.upsertDocument('u', 't'), /Error adding document "u": Error: insert error/);
358
+ }));
359
+ });
360
+ (0, mocha_1.describe)('listDocuments', () => {
361
+ (0, mocha_1.it)('returns empty list when no chunks', () => __awaiter(void 0, void 0, void 0, function* () {
362
+ index.listItems = () => __awaiter(void 0, void 0, void 0, function* () { return []; });
363
+ const docs = yield index.listDocuments();
364
+ node_assert_1.strict.deepEqual(docs, []);
365
+ }));
366
+ (0, mocha_1.it)('groups chunks per document and produces LocalDocumentResult', () => __awaiter(void 0, void 0, void 0, function* () {
367
+ const docId = 'idx-1';
368
+ const uri = 'doc://1';
369
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: docId }, idToUri: { [docId]: uri } };
370
+ index.listItems = () => __awaiter(void 0, void 0, void 0, function* () {
371
+ return [
372
+ { id: 'c1', metadata: { documentId: docId, startPos: 0, endPos: 9 }, vector: [0], norm: 1 },
373
+ { id: 'c2', metadata: { documentId: docId, startPos: 10, endPos: 19 }, vector: [0], norm: 1 },
374
+ ];
375
+ });
376
+ const docs = yield index.listDocuments();
377
+ node_assert_1.strict.equal(docs.length, 1);
378
+ node_assert_1.strict.equal(docs[0].id, docId);
379
+ node_assert_1.strict.equal(docs[0].uri, uri);
380
+ node_assert_1.strict.ok(docs[0].score >= 0);
381
+ }));
382
+ });
383
+ (0, mocha_1.describe)('queryDocuments', () => {
384
+ (0, mocha_1.it)('throws if embeddings not configured', () => __awaiter(void 0, void 0, void 0, function* () {
385
+ const idx = new LocalDocumentIndex_1.LocalDocumentIndex({ folderPath, storage, tokenizer });
386
+ yield node_assert_1.strict.rejects(idx.queryDocuments('q'), /Embeddings model not configured/);
387
+ }));
388
+ (0, mocha_1.it)('uses default options, normalizes query for embeddings, and forwards to queryItems', () => __awaiter(void 0, void 0, void 0, function* () {
389
+ let received;
390
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.5, 0.6]] });
391
+ index.queryItems = (emb, q, maxChunks, filter, isBm25) => __awaiter(void 0, void 0, void 0, function* () {
392
+ received = { emb, query: q, maxChunks, filter, isBm25 };
393
+ return [];
394
+ });
395
+ yield index.queryDocuments('a\nb\nc');
396
+ (0, node_assert_1.strict)(received);
397
+ node_assert_1.strict.equal(received.query, 'a\nb\nc');
398
+ node_assert_1.strict.equal(received.maxChunks, 50);
399
+ node_assert_1.strict.equal(received.filter, undefined);
400
+ node_assert_1.strict.equal(received.isBm25, undefined);
401
+ const lastEmbCall = embeddings.createEmbeddingsCalls.pop().toString();
402
+ node_assert_1.strict.equal(lastEmbCall, 'a b c');
403
+ }));
404
+ (0, mocha_1.it)('wraps errors in query embedding generation and non-success status', () => __awaiter(void 0, void 0, void 0, function* () {
405
+ embeddings.createEmbeddings = () => __awaiter(void 0, void 0, void 0, function* () { throw new Error('fail'); });
406
+ yield node_assert_1.strict.rejects(index.queryDocuments('q'), /Error generating embeddings for query: Error: fail/);
407
+ embeddings.createEmbeddings = () => __awaiter(void 0, void 0, void 0, function* () { return ({ status: 'error', message: 'bad' }); });
408
+ yield node_assert_1.strict.rejects(index.queryDocuments('q'), /Error generating embeddings for query: bad/);
409
+ }));
410
+ (0, mocha_1.it)('groups results by document, sorts by score, returns top N, and forwards filter/isBm25', () => __awaiter(void 0, void 0, void 0, function* () {
411
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.9, 0.8]] });
412
+ const docId1 = 'd1', docId2 = 'd2';
413
+ index._catalog = { version: 1, count: 2, uriToId: {}, idToUri: { [docId1]: 'u1', [docId2]: 'u2' } };
414
+ let forwarded = { filter: undefined, isBm25: undefined };
415
+ index.queryItems = (_e, q, k, f, isBm25) => __awaiter(void 0, void 0, void 0, function* () {
416
+ forwarded.filter = f;
417
+ forwarded.isBm25 = isBm25;
418
+ return [
419
+ { item: { id: 'c1', metadata: { documentId: docId1 }, vector: [0], norm: 1 }, score: 0.85 },
420
+ { item: { id: 'c2', metadata: { documentId: docId2 }, vector: [0], norm: 1 }, score: 0.95 },
421
+ { item: { id: 'c3', metadata: { documentId: docId1 }, vector: [0], norm: 1 }, score: 0.8 },
422
+ ];
423
+ });
424
+ const results = yield index.queryDocuments('q', { maxDocuments: 1, filter: { key: 'v' }, isBm25: true });
425
+ node_assert_1.strict.equal(results.length, 1);
426
+ node_assert_1.strict.equal(results[0].id, docId2);
427
+ node_assert_1.strict.deepEqual(forwarded.filter, { key: 'v' });
428
+ node_assert_1.strict.equal(forwarded.isBm25, true);
429
+ }));
430
+ });
431
+ (0, mocha_1.describe)('update transaction overrides', () => {
432
+ (0, mocha_1.it)('beginUpdate clones catalog; cancelUpdate clears; endUpdate persists and clears new catalog', () => __awaiter(void 0, void 0, void 0, function* () {
433
+ index._catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
434
+ yield index.beginUpdate();
435
+ node_assert_1.strict.notEqual(index._newCatalog, index._catalog);
436
+ node_assert_1.strict.deepEqual(index._newCatalog, index._catalog);
437
+ index.cancelUpdate();
438
+ node_assert_1.strict.equal(index._newCatalog, undefined);
439
+ yield index.beginUpdate();
440
+ index._newCatalog.count = 1;
441
+ yield index.endUpdate();
442
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
443
+ (0, node_assert_1.strict)(storage.upsertFileCalls.some(c => c.path === catalogPath));
444
+ node_assert_1.strict.equal(index._newCatalog, undefined);
445
+ node_assert_1.strict.equal(index._catalog.count, 1);
446
+ }));
447
+ (0, mocha_1.it)('endUpdate wraps storage errors when saving catalog', () => __awaiter(void 0, void 0, void 0, function* () {
448
+ index._catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
449
+ yield index.beginUpdate();
450
+ const orig = storage.upsertFile.bind(storage);
451
+ storage.upsertFile = (p, c) => __awaiter(void 0, void 0, void 0, function* () {
452
+ if (p.endsWith('index.json'))
453
+ return orig(p, c);
454
+ if (p.endsWith('catalog.json'))
455
+ throw new Error('fail');
456
+ return orig(p, c);
457
+ });
458
+ yield node_assert_1.strict.rejects(index.endUpdate(), /Error saving document catalog: Error: fail/);
459
+ (0, node_assert_1.strict)(index._newCatalog);
460
+ }));
461
+ (0, mocha_1.it)('createIndex calls super then loads catalog', () => __awaiter(void 0, void 0, void 0, function* () {
462
+ let loadCalled = false;
463
+ index.loadIndexData = () => __awaiter(void 0, void 0, void 0, function* () { loadCalled = true; });
464
+ yield index.createIndex({ version: 1, deleteIfExists: true }); // ensure we don't fail if index.json exists [[2]]
465
+ (0, node_assert_1.strict)(loadCalled);
466
+ }));
467
+ });
468
+ (0, mocha_1.describe)('file path correctness across operations', () => {
469
+ (0, mocha_1.it)('uses correct joined paths for catalog, text, and metadata files', () => __awaiter(void 0, void 0, void 0, function* () {
470
+ const uri = 'doc://paths.txt';
471
+ const docId = 'id-paths';
472
+ index._catalog = { version: 1, count: 1, uriToId: { [uri]: docId }, idToUri: { [docId]: uri } };
473
+ storage.files.set(pathUtils_1.default.join(folderPath, `${docId}.txt`), 'text');
474
+ storage.files.set(pathUtils_1.default.join(folderPath, `${docId}.json`), '{}');
475
+ index.listItemsByMetadata = () => __awaiter(void 0, void 0, void 0, function* () { return []; });
476
+ index.deleteItem = () => __awaiter(void 0, void 0, void 0, function* () { });
477
+ yield index.deleteDocument(uri);
478
+ (0, node_assert_1.strict)(storage.deleteFileCalls.includes(pathUtils_1.default.join(folderPath, `${docId}.txt`)));
479
+ (0, node_assert_1.strict)(storage.deleteFileCalls.includes(pathUtils_1.default.join(folderPath, `${docId}.json`)));
480
+ index.insertItem = () => __awaiter(void 0, void 0, void 0, function* () { });
481
+ embeddings.createEmbeddingsResponses.push({ status: 'success', output: [[0.1, 0.2]] });
482
+ const newDoc = yield index.upsertDocument(uri, 'text', 'txt', { key: 'value' });
483
+ const metaPath = pathUtils_1.default.join(folderPath, `${newDoc.id}.json`);
484
+ const textPath = pathUtils_1.default.join(folderPath, `${newDoc.id}.txt`);
485
+ (0, node_assert_1.strict)(storage.upsertFileCalls.some(c => c.path === metaPath));
486
+ (0, node_assert_1.strict)(storage.upsertFileCalls.some(c => c.path === textPath));
487
+ yield index.beginUpdate();
488
+ yield index.endUpdate();
489
+ const catalogPath = pathUtils_1.default.join(folderPath, 'catalog.json');
490
+ (0, node_assert_1.strict)(storage.upsertFileCalls.some(c => c.path === catalogPath));
491
+ }));
492
+ });
493
+ });
494
+ //# sourceMappingURL=LocalDocumentIndex.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalDocumentIndex.spec.js","sourceRoot":"","sources":["../src/LocalDocumentIndex.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { LocalDocument } from "./LocalDocument";
2
+ import { LocalDocumentIndex } from "./LocalDocumentIndex";
3
+ import { QueryResult, DocumentChunkMetadata, Tokenizer, DocumentTextSection } from "./types";
4
+ /**
5
+ * Represents a search result for a document stored on disk.
6
+ */
7
+ export declare class LocalDocumentResult extends LocalDocument {
8
+ private readonly _chunks;
9
+ private readonly _tokenizer;
10
+ private readonly _score;
11
+ static readonly CONNECTOR = "\n\n...\n\n";
12
+ /**
13
+ * @private
14
+ * Internal constructor for `LocalDocumentResult` instances.
15
+ */
16
+ constructor(index: LocalDocumentIndex, id: string, uri: string, chunks: QueryResult<DocumentChunkMetadata>[], tokenizer: Tokenizer);
17
+ /**
18
+ * Returns the chunks of the document that matched the query.
19
+ */
20
+ get chunks(): QueryResult<DocumentChunkMetadata>[];
21
+ /**
22
+ * Returns the average score of the document result.
23
+ */
24
+ get score(): number;
25
+ /**
26
+ * Helper: robust check for BM25-marked chunks.
27
+ */
28
+ protected isBm25Chunk(chunk: QueryResult<DocumentChunkMetadata>): boolean;
29
+ /**
30
+ * A small, testable packer that mimics the old `renderAllSections()` behavior
31
+ * but exposes the internal flush logic so all branches are coverable.
32
+ */
33
+ protected createAllSectionsPacker(): {
34
+ flush: () => void;
35
+ pushChunkTokens: (tokens: number[], score: number, isBm25Chunk: boolean) => void;
36
+ getSections: () => DocumentTextSection[];
37
+ __testSetState: (state: {
38
+ currentTokens?: number[];
39
+ currentScores?: number[];
40
+ currentIsBm25AllTrue?: boolean;
41
+ }) => void;
42
+ };
43
+ /**
44
+ * Renders all of the results chunks as spans of text (sections.)
45
+ * @remarks
46
+ * - Chunks are sorted by document order.
47
+ * - Multiple small chunks are packed into a single section up to maxTokens.
48
+ * - Oversized chunks are split into multiple sections, each carrying the chunk's score.
49
+ * - When multiple chunks are packed, section score is the arithmetic mean of packed chunks' scores.
50
+ */
51
+ renderAllSections(maxTokens: number): Promise<DocumentTextSection[]>;
52
+ /**
53
+ * Testable helper: build a single fallback section from the top-scoring chunk,
54
+ * truncated to exactly maxTokens tokens.
55
+ */
56
+ protected buildFallbackTopChunkSection(docText: string, chunks: QueryResult<DocumentChunkMetadata>[], isBm25: boolean, maxTokens: number): DocumentTextSection[];
57
+ /**
58
+ * Internal helper: builds sections for either semantic or BM25 chunk lists using a heatmap.
59
+ */
60
+ protected buildSectionsFor(docText: string, chunks: QueryResult<DocumentChunkMetadata>[], isBm25: boolean, maxTokens: number, maxSections: number, overlappingChunks: boolean): DocumentTextSection[];
61
+ /**
62
+ * Renders the top spans of text (sections) of the document based on the query result.
63
+ */
64
+ renderSections(maxTokens: number, maxSections: number, overlappingChunks?: boolean): Promise<DocumentTextSection[]>;
65
+ }
66
+ //# sourceMappingURL=LocalDocumentResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalDocumentResult.d.ts","sourceRoot":"","sources":["../src/LocalDocumentResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE7F;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;OAGG;gBACgB,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS;IAWzI;;OAEG;IACH,IAAW,MAAM,IAAI,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAExD;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;;;;;OAMG;IACU,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgEjF;;;;;;;;OAQG;IACU,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgN7H,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;CAM1B"}
1
+ {"version":3,"file":"LocalDocumentResult.d.ts","sourceRoot":"","sources":["../src/LocalDocumentResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,gBAAuB,SAAS,iBAAiB;IAEjD;;;OAGG;gBAED,KAAK,EAAE,kBAAkB,EACzB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAC5C,SAAS,EAAE,SAAS;IAYtB;;OAEG;IACH,IAAW,MAAM,IAAI,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAExD;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,OAAO;IAKzE;;;OAGG;IACH,SAAS,CAAC,uBAAuB;;kCAkCrB,MAAM,EAAE,SACT,MAAM,eACA,OAAO;;gCAWS;YAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;YACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;YACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;SAChC;;IAaH;;;;;;;OAOG;IACU,iBAAiB,CAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiEjC;;;OAGG;IACH,SAAS,CAAC,4BAA4B,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,mBAAmB,EAAE;IAyBxB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,GACzB,mBAAmB,EAAE;IAwOxB;;OAEG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,UAAO,GACvB,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAuClC"}