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 @@
1
+ {"version":3,"file":"GPT3Tokenizer.spec.d.ts","sourceRoot":"","sources":["../src/GPT3Tokenizer.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_assert_1 = require("node:assert");
4
+ const mocha_1 = require("mocha");
5
+ const GPT3Tokenizer_1 = require("../src/GPT3Tokenizer");
6
+ (0, mocha_1.describe)('GPT3Tokenizer', () => {
7
+ const tokenizer = new GPT3Tokenizer_1.GPT3Tokenizer();
8
+ (0, mocha_1.it)('encodes empty string to [] and decodes [] to empty string', () => {
9
+ const tokens = tokenizer.encode('');
10
+ node_assert_1.strict.deepEqual(tokens, [], 'encode("") should return []');
11
+ const text = tokenizer.decode([]);
12
+ node_assert_1.strict.equal(text, '', 'decode([]) should return empty string');
13
+ });
14
+ (0, mocha_1.it)('round-trips various strings including unicode and punctuation', () => {
15
+ const samples = [
16
+ 'Hello, world!',
17
+ 'Café 😊 こんにちは 𠜎𠜱𠝹𠱓',
18
+ 'Newlines\nand\ttabs with multiple spaces.',
19
+ '--- *** ===='
20
+ ];
21
+ for (const s of samples) {
22
+ const tokens = tokenizer.encode(s);
23
+ const decoded = tokenizer.decode(tokens);
24
+ node_assert_1.strict.equal(decoded, s, `decode(encode(s)) should equal s for: ${JSON.stringify(s)}`);
25
+ // Validate token array shape: array of non-negative integers
26
+ node_assert_1.strict.ok(Array.isArray(tokens), 'encode should return an array');
27
+ for (const t of tokens) {
28
+ node_assert_1.strict.equal(typeof t, 'number', 'each token should be a number');
29
+ node_assert_1.strict.ok(Number.isInteger(t), 'each token should be an integer');
30
+ node_assert_1.strict.ok(t >= 0, 'each token should be non-negative');
31
+ }
32
+ // Encoding should be stable across calls for the same input
33
+ const tokens2 = tokenizer.encode(s);
34
+ node_assert_1.strict.deepEqual(tokens2, tokens, 'encode should be deterministic for the same input');
35
+ }
36
+ });
37
+ (0, mocha_1.it)('produces non-empty tokens for typical non-empty input', () => {
38
+ const s = 'This is a simple test.';
39
+ const tokens = tokenizer.encode(s);
40
+ node_assert_1.strict.ok(tokens.length > 0, 'expected some tokens for non-empty input');
41
+ const decoded = tokenizer.decode(tokens);
42
+ node_assert_1.strict.equal(decoded, s, 'decoded text should match original input');
43
+ });
44
+ });
45
+ //# sourceMappingURL=GPT3Tokenizer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GPT3Tokenizer.spec.js","sourceRoot":"","sources":["../src/GPT3Tokenizer.spec.ts"],"names":[],"mappings":";;AAAA,6CAA+C;AAC/C,iCAAqC;AACrC,wDAAqD;AAErD,IAAA,gBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,SAAS,GAAG,IAAI,6BAAa,EAAE,CAAC;IAEtC,IAAA,UAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,oBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,oBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,uCAAuC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,OAAO,GAAG;YACd,eAAe;YACf,wBAAwB;YACxB,+CAA+C;YAC/C,cAAc;SACf,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,oBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,yCAAyC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEvF,6DAA6D;YAC7D,oBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,oBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;gBAClE,oBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;gBAClE,oBAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACzD,CAAC;YAED,4DAA4D;YAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,oBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,mDAAmD,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,wBAAwB,CAAC;QACnC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,oBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,oBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,0CAA0C,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { MetadataFilter, MetadataTypes } from './types';
2
+ export declare class ItemSelector {
3
+ /**
4
+ * Returns the similarity between two vectors using the cosine similarity.
5
+ * @param vector1 Vector 1
6
+ * @param vector2 Vector 2
7
+ * @returns Similarity between the two vectors
8
+ */
9
+ static cosineSimilarity(vector1: number[], vector2: number[]): number;
10
+ /**
11
+ * Normalizes a vector.
12
+ * @remarks
13
+ * The norm of a vector is the square root of the sum of the squares of the elements.
14
+ * The LocalIndex pre-normalizes all vectors to improve performance.
15
+ * @param vector Vector to normalize
16
+ * @returns Normalized vector
17
+ */
18
+ static normalize(vector: number[]): number;
19
+ /**
20
+ * Returns the similarity between two vectors using cosine similarity.
21
+ * @remarks
22
+ * The LocalIndex pre-normalizes all vectors to improve performance.
23
+ * This method uses the pre-calculated norms to improve performance.
24
+ * @param vector1 Vector 1
25
+ * @param norm1 Norm of vector 1
26
+ * @param vector2 Vector 2
27
+ * @param norm2 Norm of vector 2
28
+ * @returns Similarity between the two vectors
29
+ */
30
+ static normalizedCosineSimilarity(vector1: number[], norm1: number, vector2: number[], norm2: number): number;
31
+ /**
32
+ * Applies a filter to the metadata of an item.
33
+ * @param metadata Metadata of the item
34
+ * @param filter Filter to apply
35
+ * @returns True if the item matches the filter, false otherwise
36
+ */
37
+ static select(metadata: Record<string, MetadataTypes>, filter: MetadataFilter): boolean;
38
+ private static dotProduct;
39
+ private static metadataFilter;
40
+ }
41
+ //# sourceMappingURL=ItemSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemSelector.d.ts","sourceRoot":"","sources":["../src/ItemSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,qBAAa,YAAY;IACvB;;;;;OAKG;WACW,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;IAenE;;;;;;;OAOG;WACW,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;IAYxC;;;;;;;;;;OAUG;WACW,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM;IAS3G;;;;;OAKG;WACW,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;IAqC9F,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,MAAM,CAAC,cAAc;CA+D9B"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ItemSelector = void 0;
4
+ class ItemSelector {
5
+ /**
6
+ * Returns the similarity between two vectors using the cosine similarity.
7
+ * @param vector1 Vector 1
8
+ * @param vector2 Vector 2
9
+ * @returns Similarity between the two vectors
10
+ */
11
+ static cosineSimilarity(vector1, vector2) {
12
+ // Use only the overlapping portion of both vectors (dot and norms)
13
+ const minLen = Math.min(vector1.length, vector2.length);
14
+ const v1 = vector1.slice(0, minLen);
15
+ const v2 = vector2.slice(0, minLen);
16
+ const norm1 = this.normalize(v1);
17
+ const norm2 = this.normalize(v2);
18
+ if (norm1 === 0 || norm2 === 0) {
19
+ return NaN;
20
+ }
21
+ return this.dotProduct(v1, v2) / (norm1 * norm2);
22
+ }
23
+ /**
24
+ * Normalizes a vector.
25
+ * @remarks
26
+ * The norm of a vector is the square root of the sum of the squares of the elements.
27
+ * The LocalIndex pre-normalizes all vectors to improve performance.
28
+ * @param vector Vector to normalize
29
+ * @returns Normalized vector
30
+ */
31
+ static normalize(vector) {
32
+ // Initialize a variable to store the sum of the squares
33
+ let sum = 0;
34
+ // Loop through the elements of the array
35
+ for (let i = 0; i < vector.length; i++) {
36
+ // Square the element and add it to the sum
37
+ sum += vector[i] * vector[i];
38
+ }
39
+ // Return the square root of the sum
40
+ return Math.sqrt(sum);
41
+ }
42
+ /**
43
+ * Returns the similarity between two vectors using cosine similarity.
44
+ * @remarks
45
+ * The LocalIndex pre-normalizes all vectors to improve performance.
46
+ * This method uses the pre-calculated norms to improve performance.
47
+ * @param vector1 Vector 1
48
+ * @param norm1 Norm of vector 1
49
+ * @param vector2 Vector 2
50
+ * @param norm2 Norm of vector 2
51
+ * @returns Similarity between the two vectors
52
+ */
53
+ static normalizedCosineSimilarity(vector1, norm1, vector2, norm2) {
54
+ // Explicitly return NaN if either norm is zero
55
+ if (norm1 === 0 || norm2 === 0) {
56
+ return NaN;
57
+ }
58
+ // Return the quotient of the dot product and the product of the norms
59
+ return this.dotProduct(vector1, vector2) / (norm1 * norm2);
60
+ }
61
+ /**
62
+ * Applies a filter to the metadata of an item.
63
+ * @param metadata Metadata of the item
64
+ * @param filter Filter to apply
65
+ * @returns True if the item matches the filter, false otherwise
66
+ */
67
+ static select(metadata, filter) {
68
+ // Treat null/undefined and {} as "no filter"
69
+ if (filter == null || (typeof filter === 'object' && Object.keys(filter).length === 0)) {
70
+ return true;
71
+ }
72
+ for (const key in filter) {
73
+ switch (key) {
74
+ case '$and':
75
+ if (!filter[key].every((f) => this.select(metadata, f))) {
76
+ return false;
77
+ }
78
+ break;
79
+ case '$or':
80
+ if (!filter[key].some((f) => this.select(metadata, f))) {
81
+ return false;
82
+ }
83
+ break;
84
+ default:
85
+ const value = filter[key];
86
+ if (value === undefined || value === null) {
87
+ return false;
88
+ }
89
+ else if (typeof value == 'object') {
90
+ if (!this.metadataFilter(metadata[key], value)) {
91
+ return false;
92
+ }
93
+ }
94
+ else {
95
+ if (metadata[key] !== value) {
96
+ return false;
97
+ }
98
+ }
99
+ break;
100
+ }
101
+ }
102
+ return true;
103
+ }
104
+ static dotProduct(arr1, arr2) {
105
+ // Use only overlapping indices to avoid NaN when lengths differ
106
+ const minLen = Math.min(arr1.length, arr2.length);
107
+ let sum = 0;
108
+ for (let i = 0; i < minLen; i++) {
109
+ sum += arr1[i] * arr2[i];
110
+ }
111
+ return sum;
112
+ }
113
+ static metadataFilter(value, filter) {
114
+ if (value === undefined || value === null) {
115
+ return false;
116
+ }
117
+ for (const key in filter) {
118
+ switch (key) {
119
+ case '$eq':
120
+ if (value !== filter[key]) {
121
+ return false;
122
+ }
123
+ break;
124
+ case '$ne':
125
+ if (value === filter[key]) {
126
+ return false;
127
+ }
128
+ break;
129
+ case '$gt':
130
+ if (typeof value != 'number' || value <= filter[key]) {
131
+ return false;
132
+ }
133
+ break;
134
+ case '$gte':
135
+ if (typeof value != 'number' || value < filter[key]) {
136
+ return false;
137
+ }
138
+ break;
139
+ case '$lt':
140
+ if (typeof value != 'number' || value >= filter[key]) {
141
+ return false;
142
+ }
143
+ break;
144
+ case '$lte':
145
+ if (typeof value != 'number' || value > filter[key]) {
146
+ return false;
147
+ }
148
+ break;
149
+ case '$in':
150
+ if (typeof value == 'boolean') {
151
+ return false;
152
+ }
153
+ else if (typeof value == 'string' && !filter[key].includes(value)) {
154
+ return false;
155
+ }
156
+ else if (!filter[key].some(val => typeof val == 'string' && val.includes(value))) {
157
+ return false;
158
+ }
159
+ break;
160
+ case '$nin':
161
+ if (typeof value == 'boolean') {
162
+ return false;
163
+ }
164
+ else if (typeof value == 'string' && filter[key].includes(value)) {
165
+ return false;
166
+ }
167
+ else if (filter[key].some(val => typeof val == 'string' && val.includes(value))) {
168
+ return false;
169
+ }
170
+ break;
171
+ default:
172
+ return value === filter[key];
173
+ }
174
+ }
175
+ return true;
176
+ }
177
+ }
178
+ exports.ItemSelector = ItemSelector;
179
+ //# sourceMappingURL=ItemSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemSelector.js","sourceRoot":"","sources":["../src/ItemSelector.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IACvB;;;;;OAKG;IACI,MAAM,CAAC,gBAAgB,CAAC,OAAiB,EAAE,OAAiB;QACjE,mEAAmE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,SAAS,CAAC,MAAgB;QACtC,wDAAwD;QACxD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,2CAA2C;YAC3C,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,oCAAoC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,0BAA0B,CAAC,OAAiB,EAAE,KAAa,EAAE,OAAiB,EAAE,KAAa;QACzG,+CAA+C;QAC/C,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,sEAAsE;QACtE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAC,QAAuC,EAAE,MAAsB;QAClF,6CAA6C;QAC7C,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,MAAM;oBACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,KAAK,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzE,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxE,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR;oBACE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC1C,OAAO,KAAK,CAAC;oBACf,CAAC;yBAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;wBACpC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAuB,CAAC,EAAE,CAAC;4BACjE,OAAO,KAAK,CAAC;wBACf,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;4BAC5B,OAAO,KAAK,CAAC;wBACf,CAAC;oBACH,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,IAAc,EAAE,IAAc;QACtD,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,KAAoB,EAAE,MAAsB;QACxE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,KAAK;oBACR,IAAI,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC1B,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC1B,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC;wBACtD,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC;wBACrD,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC;wBACtD,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC;wBACrD,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;yBAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrE,OAAO,KAAK,CAAC;oBACf,CAAC;yBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC,EAAE,CAAC;wBAC9F,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;yBACI,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClE,OAAO,KAAK,CAAC;oBACf,CAAC;yBACI,IAAI,MAAM,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC,EAAE,CAAC;wBAC3F,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;gBACR;oBACE,OAAO,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlLD,oCAkLC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ItemSelector.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemSelector.spec.d.ts","sourceRoot":"","sources":["../src/ItemSelector.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_assert_1 = require("node:assert");
4
+ const ItemSelector_1 = require("./ItemSelector");
5
+ function almostEqual(actual, expected, eps = 1e-12) {
6
+ node_assert_1.strict.ok(Math.abs(actual - expected) <= eps, `actual ${actual} not within ${eps} of expected ${expected}`);
7
+ }
8
+ describe('ItemSelector', () => {
9
+ describe('normalize', () => {
10
+ it('returns correct norm for typical vector', () => {
11
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.normalize([3, 4]), 5);
12
+ });
13
+ it('handles negatives', () => {
14
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.normalize([-2, -3]), Math.sqrt(13));
15
+ });
16
+ it('returns 0 for zero vector', () => {
17
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.normalize([0, 0]), 0);
18
+ });
19
+ it('returns 0 for empty vector', () => {
20
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.normalize([]), 0);
21
+ });
22
+ });
23
+ describe('cosineSimilarity', () => {
24
+ it('returns ~1 for identical vectors', () => {
25
+ const actual = ItemSelector_1.ItemSelector.cosineSimilarity([1, 2], [1, 2]);
26
+ almostEqual(actual, 1);
27
+ });
28
+ it('returns ~0 for orthogonal vectors', () => {
29
+ const actual = ItemSelector_1.ItemSelector.cosineSimilarity([1, 0], [0, 1]);
30
+ almostEqual(actual, 0);
31
+ });
32
+ it('returns ~-1 for opposite vectors', () => {
33
+ const actual = ItemSelector_1.ItemSelector.cosineSimilarity([1, 0], [-1, 0]);
34
+ almostEqual(actual, -1);
35
+ });
36
+ it('returns NaN if one vector is zero', () => {
37
+ node_assert_1.strict.ok(Number.isNaN(ItemSelector_1.ItemSelector.cosineSimilarity([0, 0], [1, 2])));
38
+ });
39
+ it('returns NaN if both vectors are zero', () => {
40
+ node_assert_1.strict.ok(Number.isNaN(ItemSelector_1.ItemSelector.cosineSimilarity([0, 0], [0, 0])));
41
+ });
42
+ it('handles different lengths by ignoring extra elements (including in norms)', () => {
43
+ const v1 = [1, 2, 3];
44
+ const v2 = [4, 5];
45
+ const minLen = Math.min(v1.length, v2.length);
46
+ const dot = v1.slice(0, minLen).reduce((sum, val, i) => sum + val * v2[i], 0);
47
+ const norm1 = ItemSelector_1.ItemSelector.normalize(v1.slice(0, minLen));
48
+ const norm2 = ItemSelector_1.ItemSelector.normalize(v2.slice(0, minLen));
49
+ const expected = dot / (norm1 * norm2);
50
+ const result = ItemSelector_1.ItemSelector.cosineSimilarity(v1, v2);
51
+ almostEqual(result, expected);
52
+ });
53
+ });
54
+ describe('normalizedCosineSimilarity', () => {
55
+ it('returns correct similarity with valid norms', () => {
56
+ const v1 = [1, 2];
57
+ const v2 = [2, 3];
58
+ const norm1 = ItemSelector_1.ItemSelector.normalize(v1);
59
+ const norm2 = ItemSelector_1.ItemSelector.normalize(v2);
60
+ const expected = (v1[0] * v2[0] + v1[1] * v2[1]) / (norm1 * norm2);
61
+ const actual = ItemSelector_1.ItemSelector.normalizedCosineSimilarity(v1, norm1, v2, norm2);
62
+ almostEqual(actual, expected);
63
+ });
64
+ it('returns NaN if norm1 is zero', () => {
65
+ node_assert_1.strict.ok(Number.isNaN(ItemSelector_1.ItemSelector.normalizedCosineSimilarity([1, 2], 0, [2, 3], 1)));
66
+ });
67
+ it('returns NaN if norm2 is zero', () => {
68
+ node_assert_1.strict.ok(Number.isNaN(ItemSelector_1.ItemSelector.normalizedCosineSimilarity([1, 2], 1, [2, 3], 0)));
69
+ });
70
+ });
71
+ describe('select', () => {
72
+ it('returns true for empty filter object', () => {
73
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({ a: 1 }, {}), true);
74
+ });
75
+ it('returns false if unknown key and metadata missing key', () => {
76
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({}, { unknown: 'value' }), false);
77
+ });
78
+ it('returns true if unknown key and metadata has equal value', () => {
79
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({ unknown: 'value' }, { unknown: 'value' }), true);
80
+ });
81
+ it('returns false if filter value is undefined or null', () => {
82
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({ name: 'alice' }, { name: undefined }), false);
83
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({ name: 'alice' }, { name: null }), false);
84
+ });
85
+ it('handles $and with all subfilters passing', () => {
86
+ const filter = { $and: [{ a: 1 }, { b: 2 }] };
87
+ const metadata = { a: 1, b: 2 };
88
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filter), true);
89
+ });
90
+ it('handles $and with one subfilter failing', () => {
91
+ const filter = { $and: [{ a: 1 }, { b: 3 }] };
92
+ const metadata = { a: 1, b: 2 };
93
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filter), false);
94
+ });
95
+ it('handles empty $and array', () => {
96
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({}, { $and: [] }), true);
97
+ });
98
+ it('handles nested $and/$or combinations', () => {
99
+ const filter = { $and: [{ $or: [{ a: 1 }, { b: 2 }] }, { c: 3 }] };
100
+ const metadata1 = { a: 1, c: 3 };
101
+ const metadata2 = { b: 2, c: 3 };
102
+ const metadata3 = { a: 1, c: 4 };
103
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata1, filter), true);
104
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata2, filter), true);
105
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata3, filter), false);
106
+ });
107
+ it('handles $or with at least one subfilter passing', () => {
108
+ const filter = { $or: [{ a: 1 }, { b: 2 }] };
109
+ const metadata = { a: 1, b: 3 };
110
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filter), true);
111
+ });
112
+ it('handles $or with all subfilters failing', () => {
113
+ const filter = { $or: [{ a: 2 }, { b: 3 }] };
114
+ const metadata = { a: 1, b: 2 };
115
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filter), false);
116
+ });
117
+ it('handles empty $or array', () => {
118
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({}, { $or: [] }), false);
119
+ });
120
+ it('handles metadataFilter numeric comparisons', () => {
121
+ const metadata = { num: 5, str: 'hello' };
122
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $eq: 5 } }), true);
123
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $eq: 4 } }), false);
124
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $ne: 4 } }), true);
125
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $ne: 5 } }), false);
126
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $gt: 4 } }), true);
127
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $gt: 5 } }), false);
128
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $gt: 4.9 } }), true);
129
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { str: { $gt: 'a' } }), false);
130
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $gte: 5 } }), true);
131
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $gte: 6 } }), false);
132
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { str: { $gte: 'a' } }), false);
133
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $lt: 6 } }), true);
134
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $lt: 5 } }), false);
135
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { str: { $lt: 'z' } }), false);
136
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $lte: 5 } }), true);
137
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { num: { $lte: 4 } }), false);
138
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { str: { $lte: 'z' } }), false);
139
+ });
140
+ it('$in behavior matches implementation (booleans false, exact match for strings, substring for strings, numbers via substring in array strings)', () => {
141
+ const metadataBool = { val: true };
142
+ const metadataStr = { val: 'foo' };
143
+ const metadataStr2 = { val: 'oo' };
144
+ const metadataNum = { val: 42 };
145
+ const arrStr = ['foo', 'bar'];
146
+ const arrMixedNo = ['foobar', 'baz'];
147
+ const arrMixedYes = ['x42y', 'baz'];
148
+ // boolean always false
149
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataBool, { val: { $in: ['foo'] } }), false);
150
+ // string exact includes
151
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataStr, { val: { $in: arrStr } }), true);
152
+ // string not included
153
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataStr2, { val: { $in: arrStr } }), false);
154
+ // number: true only if some array string includes the number as a substring
155
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataNum, { val: { $in: arrMixedNo } }), false);
156
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataNum, { val: { $in: arrMixedYes } }), true);
157
+ // array of numbers does not include string '42'
158
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select({ val: '42' }, { val: { $in: [1, 2] } }), false);
159
+ });
160
+ it('$nin behavior matches implementation (booleans false, blocks exact/substring for strings, numbers only blocked by substring in array strings)', () => {
161
+ const metadataBool = { val: true };
162
+ const metadataStr = { val: 'foo' };
163
+ const metadataStrSub = { val: 'oo' };
164
+ const metadataNum = { val: 42 };
165
+ const arrStr = ['foo', 'bar'];
166
+ const arrMixedNo = ['foobar', 'baz'];
167
+ const arrMixedYes = ['baz', 'z42z'];
168
+ const arrNum = [42];
169
+ // boolean always false
170
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataBool, { val: { $nin: ['foo'] } }), false);
171
+ // string exact match present -> false
172
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataStr, { val: { $nin: arrStr } }), false);
173
+ // string is a substring of an element -> false
174
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataStrSub, { val: { $nin: arrMixedNo } }), false);
175
+ // number: true if no array string includes the number as substring
176
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataNum, { val: { $nin: arrMixedNo } }), true);
177
+ // number: false if some array string includes the number as substring
178
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataNum, { val: { $nin: arrMixedYes } }), false);
179
+ // array of numbers does not block number (implementation detail)
180
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadataNum, { val: { $nin: arrNum } }), true);
181
+ });
182
+ it('handles default operator fall-through (unknown operator compares equality to its value)', () => {
183
+ const metadata = { field: 'bar' };
184
+ // Unknown operator compares metadata value to the operator's value
185
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { field: { $foo: 'bar' } }), true);
186
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { field: { $foo: 'baz' } }), false);
187
+ // Direct scalar equality
188
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { field: 'bar' }), true);
189
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { field: 'baz' }), false);
190
+ });
191
+ it('returns false if metadata key missing in object filter', () => {
192
+ const metadata = {};
193
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, { age: { $gt: 18 } }), false);
194
+ });
195
+ it('handles multi-field filter with mixed scalar and operator filters', () => {
196
+ const metadata = { a: 1, b: 2, c: 3 };
197
+ const filter = { a: 1, b: { $gt: 1 }, c: { $lt: 4 } };
198
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filter), true);
199
+ const filterFail = { a: 1, b: { $gt: 2 }, c: { $lt: 4 } };
200
+ node_assert_1.strict.equal(ItemSelector_1.ItemSelector.select(metadata, filterFail), false);
201
+ });
202
+ });
203
+ });
204
+ //# sourceMappingURL=ItemSelector.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemSelector.spec.js","sourceRoot":"","sources":["../src/ItemSelector.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { MetadataTypes } from './types';
2
+ import { LocalDocumentIndex } from './LocalDocumentIndex';
3
+ /**
4
+ * Represents an indexed document stored on disk.
5
+ */
6
+ export declare class LocalDocument {
7
+ private readonly _index;
8
+ private readonly _id;
9
+ private readonly _uri;
10
+ private _metadata;
11
+ private _text;
12
+ /**
13
+ * Creates a new `LocalDocument` instance.
14
+ * @param index Parent index that contains the document.
15
+ * @param id ID of the document.
16
+ * @param uri URI of the document.
17
+ */
18
+ constructor(index: LocalDocumentIndex, id: string, uri: string);
19
+ /**
20
+ * Returns the folder path where the document is stored.
21
+ */
22
+ get folderPath(): string;
23
+ /**
24
+ * Returns the ID of the document.
25
+ */
26
+ get id(): string;
27
+ /**
28
+ * Returns the URI of the document.
29
+ */
30
+ get uri(): string;
31
+ /**
32
+ * Returns the length of the document in tokens.
33
+ * @remarks
34
+ * This value will be estimated for documents longer then 40k bytes.
35
+ * @returns Length of the document in tokens.
36
+ */
37
+ getLength(): Promise<number>;
38
+ /**
39
+ * Determines if the document has additional metadata stored on disk.
40
+ * @returns True if the document has metadata; otherwise, false.
41
+ */
42
+ hasMetadata(): Promise<boolean>;
43
+ /**
44
+ * Loads the metadata for the document from disk.
45
+ * @returns Metadata for the document.
46
+ */
47
+ loadMetadata(): Promise<Record<string, MetadataTypes>>;
48
+ /**
49
+ * Loads the text for the document from disk.
50
+ * @returns Text for the document.
51
+ */
52
+ loadText(): Promise<string>;
53
+ }
54
+ //# sourceMappingURL=LocalDocument.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalDocument.d.ts","sourceRoot":"","sources":["../src/LocalDocument.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,KAAK,CAAmB;IAEhC;;;;;OAKG;gBACgB,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAMrE;;OAEG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;OAEG;IACH,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;IACU,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,CAAC;IAmBlE;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAW3C"}
1
+ {"version":3,"file":"LocalDocument.d.ts","sourceRoot":"","sources":["../src/LocalDocument.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,KAAK,CAAqB;IAElC;;;;;OAKG;gBACgB,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAMrE;;OAEG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;OAEG;IACH,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;IACU,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAmBnE;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAWzC"}