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,337 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const mocha_1 = require("mocha");
37
+ const assert = __importStar(require("node:assert"));
38
+ const TextSplitter_1 = require("./TextSplitter");
39
+ const charTokenizer = {
40
+ encode(text) {
41
+ return Array.from(text).map(c => c.codePointAt(0));
42
+ },
43
+ decode(tokens) {
44
+ return String.fromCodePoint(...tokens);
45
+ },
46
+ };
47
+ const makeSplitter = (opts) => new TextSplitter_1.TextSplitter(Object.assign({ chunkSize: 16, chunkOverlap: 0, tokenizer: charTokenizer }, opts));
48
+ function joinTexts(chunks, sep = '') {
49
+ return chunks.map(c => c.text).join(sep);
50
+ }
51
+ (0, mocha_1.describe)('TextSplitter - full coverage suite', () => {
52
+ (0, mocha_1.describe)('constructor validation and defaults', () => {
53
+ (0, mocha_1.it)('throws when chunkSize < 1', () => {
54
+ assert.throws(() => new TextSplitter_1.TextSplitter({ chunkSize: 0 }), /chunkSize must be >= 1/);
55
+ });
56
+ (0, mocha_1.it)('throws when chunkOverlap < 0', () => {
57
+ assert.throws(() => new TextSplitter_1.TextSplitter({ chunkSize: 10, chunkOverlap: -1 }), /chunkOverlap must be >= 0/);
58
+ });
59
+ (0, mocha_1.it)('throws when chunkOverlap > chunkSize', () => {
60
+ assert.throws(() => new TextSplitter_1.TextSplitter({ chunkSize: 5, chunkOverlap: 6 }), /chunkOverlap must be <= chunkSize/);
61
+ });
62
+ (0, mocha_1.it)('works with default constructor and simple text', () => {
63
+ const splitter = new TextSplitter_1.TextSplitter();
64
+ const chunks = splitter.split('Hello world');
65
+ assert.ok(Array.isArray(chunks) && chunks.length > 0);
66
+ });
67
+ (0, mocha_1.it)('returns [] for empty input', () => {
68
+ const splitter = makeSplitter();
69
+ const chunks = splitter.split('');
70
+ assert.strictEqual(chunks.length, 0);
71
+ });
72
+ });
73
+ (0, mocha_1.describe)('basic splitting, whitespace handling, and punctuation preservation', () => {
74
+ (0, mocha_1.it)('drops pure whitespace-only input', () => {
75
+ const splitter = makeSplitter();
76
+ assert.strictEqual(splitter.split(' \t ').length, 0);
77
+ assert.strictEqual(splitter.split('\n\n').length, 0);
78
+ assert.strictEqual(splitter.split(' \n \n ').length, 0);
79
+ });
80
+ (0, mocha_1.it)('keeps leading punctuation-only chunk ("---")', () => {
81
+ const splitter = makeSplitter({ chunkSize: 3 });
82
+ const chunks = splitter.split('---');
83
+ assert.deepStrictEqual(chunks.map(c => c.text), ['---']);
84
+ });
85
+ (0, mocha_1.it)('keeps punctuation-only separators (---, ***, ====) at start, middle, end', () => {
86
+ const splitter = makeSplitter({ chunkSize: 4 });
87
+ const text = ['---', 'Hello world', '***', 'Middle', '===='].join('\n');
88
+ const chunks = splitter.split(text);
89
+ const got = chunks.map(c => c.text).join('\n');
90
+ assert.ok(got.includes('---'));
91
+ assert.ok(got.includes('***'));
92
+ assert.ok(got.includes('===='));
93
+ });
94
+ (0, mocha_1.it)('preserves frontmatter delimiters (---) with small chunkSize and zero overlap', () => {
95
+ var _a;
96
+ const splitter = makeSplitter({ chunkSize: 12 });
97
+ const md = [
98
+ '---',
99
+ 'title: Test',
100
+ 'tags: [a, b]',
101
+ '---',
102
+ '# Heading',
103
+ 'Body text goes here.',
104
+ ].join('\n');
105
+ const chunks = splitter.split(md);
106
+ const joined = joinTexts(chunks, '\n');
107
+ const delimiterCount = ((_a = joined.match(/^---$/gm)) !== null && _a !== void 0 ? _a : []).length;
108
+ assert.strictEqual(delimiterCount, 2);
109
+ });
110
+ (0, mocha_1.it)('keeps trailing punctuation-only chunk', () => {
111
+ const splitter = makeSplitter({ chunkSize: 4 });
112
+ const chunks = splitter.split('Content\n---');
113
+ assert.ok(chunks.some(c => c.text.includes('---')));
114
+ });
115
+ (0, mocha_1.it)('still returns alphanumeric chunks normally', () => {
116
+ const splitter = makeSplitter({ chunkSize: 5 });
117
+ const chunks = splitter.split('abcde fghij');
118
+ const joined = joinTexts(chunks, ' ');
119
+ assert.ok(joined.includes('abcde'));
120
+ assert.ok(joined.includes('fghij'));
121
+ });
122
+ (0, mocha_1.it)('does not regress with non-zero overlap and preserves punctuation-only chunk', () => {
123
+ const splitter = makeSplitter({ chunkSize: 5, chunkOverlap: 2 });
124
+ const chunks = splitter.split('---\nabcdef');
125
+ assert.ok(chunks.some(c => c.text.includes('---')));
126
+ });
127
+ (0, mocha_1.it)('handles multiple punctuation-only separators interleaved with content', () => {
128
+ const splitter = makeSplitter({ chunkSize: 8 });
129
+ const text = ['***', 'A', '---', 'B', '====', 'C'].join('\n');
130
+ const chunks = splitter.split(text);
131
+ const joined = joinTexts(chunks, '\n');
132
+ assert.ok(joined.includes('***'));
133
+ assert.ok(joined.includes('---'));
134
+ assert.ok(joined.includes('===='));
135
+ assert.ok(joined.includes('\nA\n'));
136
+ assert.ok(joined.includes('\nB\n'));
137
+ assert.ok(joined.includes('\nC'));
138
+ });
139
+ });
140
+ (0, mocha_1.describe)('keepSeparators vs joiner behavior and merging', () => {
141
+ (0, mocha_1.it)('when keepSeparators=false, merges adjacent content with a space joiner across newline separator', () => {
142
+ const splitter = makeSplitter({ keepSeparators: false, chunkSize: 50 });
143
+ const text = 'Hello\nWorld';
144
+ const chunks = splitter.split(text);
145
+ // Should merge into a single chunk with a space instead of newline
146
+ assert.strictEqual(chunks.length, 1);
147
+ assert.strictEqual(chunks[0].text, 'Hello World');
148
+ // startPos/endPos should reflect original indices
149
+ assert.strictEqual(chunks[0].startPos, 0);
150
+ assert.strictEqual(chunks[0].endPos, text.length - 1);
151
+ });
152
+ (0, mocha_1.it)('when keepSeparators=true, retains separators inline', () => {
153
+ const splitter = makeSplitter({ keepSeparators: true, chunkSize: 50 });
154
+ const text = 'Hello\nWorld\n';
155
+ const chunks = splitter.split(text);
156
+ const joined = joinTexts(chunks, '');
157
+ // Newlines should be preserved in output
158
+ assert.ok(joined.includes('Hello\n'));
159
+ assert.ok(joined.includes('World\n'));
160
+ });
161
+ (0, mocha_1.it)('does not merge when token budget would be exceeded', () => {
162
+ // Very small chunkSize to force non-merge
163
+ const splitter = makeSplitter({ chunkSize: 3, keepSeparators: false });
164
+ const text = 'ABCD\nEFG';
165
+ const chunks = splitter.split(text);
166
+ // Expect multiple chunks due to budget
167
+ assert.ok(chunks.length >= 2);
168
+ });
169
+ });
170
+ (0, mocha_1.describe)('custom separators and precedence over docType', () => {
171
+ (0, mocha_1.it)('custom separators override docType separators (keepSeparators=false)', () => {
172
+ const splitter = makeSplitter({ docType: 'markdown', separators: ['||'], keepSeparators: false });
173
+ const chunks = splitter.split('A||B||C');
174
+ const joined = joinTexts(chunks, '');
175
+ assert.ok(!joined.includes('||'), 'custom separator should be removed');
176
+ assert.ok(joined.includes('ABC'));
177
+ });
178
+ (0, mocha_1.it)('custom separators can be preserved with keepSeparators=true', () => {
179
+ const splitter = makeSplitter({ separators: ['||'], keepSeparators: true });
180
+ const chunks = splitter.split('A||B||C');
181
+ const joined = joinTexts(chunks, '');
182
+ assert.ok(joined.includes('A||'));
183
+ assert.ok(joined.includes('B||'));
184
+ assert.ok(joined.endsWith('C'));
185
+ });
186
+ (0, mocha_1.it)('inline separators with no surrounding whitespace are preserved/dropped based on config', () => {
187
+ const inline = '---Hello---World---';
188
+ const keep = makeSplitter({ keepSeparators: true, chunkSize: 64 });
189
+ const kept = joinTexts(keep.split(inline), '');
190
+ assert.ok(kept.includes('---Hello---World---'));
191
+ const drop = makeSplitter({ keepSeparators: false, chunkSize: 64 });
192
+ const dropped = joinTexts(drop.split(inline), '');
193
+ assert.ok(!dropped.includes('---'));
194
+ assert.ok(dropped.includes('Hello') && dropped.includes('World'));
195
+ });
196
+ (0, mocha_1.it)('multiple consecutive separators do not produce empty chunks', () => {
197
+ const splitter = makeSplitter({ keepSeparators: true, chunkSize: 64 });
198
+ const text = ['---', '***', '===='].join('\n');
199
+ const chunks = splitter.split(text);
200
+ assert.ok(chunks.length >= 3);
201
+ assert.ok(chunks.some(c => c.text.includes('---')));
202
+ assert.ok(chunks.some(c => c.text.includes('***')));
203
+ assert.ok(chunks.some(c => c.text.includes('====')));
204
+ });
205
+ });
206
+ (0, mocha_1.describe)('splitBySpaces coverage (sep === " ")', () => {
207
+ (0, mocha_1.it)('token window path: tokens.length <= chunkSize triggers single part then break', () => {
208
+ const splitter = makeSplitter({ separators: [' '], chunkSize: 100 });
209
+ const text = 'a b c';
210
+ const chunks = splitter.split(text);
211
+ // With large chunkSize and only space separator, it should come out as one chunk
212
+ assert.strictEqual(chunks.length, 1);
213
+ assert.strictEqual(chunks[0].text, text);
214
+ });
215
+ (0, mocha_1.it)('token window path: tokens.length > chunkSize triggers multiple parts', () => {
216
+ const splitter = makeSplitter({ separators: [' '], chunkSize: 4 }); // small window
217
+ const text = 'abcdefghij'; // 10 chars -> 3 parts
218
+ const chunks = splitter.split(text);
219
+ assert.ok(chunks.length >= 3, 'should produce multiple chunks from token windows');
220
+ assert.strictEqual(joinTexts(chunks, ''), text);
221
+ });
222
+ });
223
+ (0, mocha_1.describe)('base case path (no separators) and cutting in half', () => {
224
+ (0, mocha_1.it)('with separators: [] uses cut-in-half strategy and merges back under budget', () => {
225
+ const splitter = makeSplitter({ separators: [], chunkSize: 100, keepSeparators: false });
226
+ const text = 'HelloWorld';
227
+ const chunks = splitter.split(text);
228
+ // Expect merged single chunk but with a space joiner introduced by combineChunks
229
+ assert.strictEqual(chunks.length, 1);
230
+ assert.strictEqual(chunks[0].text.replace(/\s/g, ''), text);
231
+ });
232
+ (0, mocha_1.it)('optimization branch: chunk.length/6 > chunkSize triggers deeper recursion', () => {
233
+ const splitter = makeSplitter({ separators: ['\n'], chunkSize: 1 });
234
+ const text = 'x'.repeat(20); // 20/6 > 1 -> triggers optimization
235
+ const chunks = splitter.split(text);
236
+ assert.ok(chunks.length > 1, 'should split into multiple chunks under heavy optimization');
237
+ assert.strictEqual(joinTexts(chunks, ''), text);
238
+ });
239
+ });
240
+ (0, mocha_1.describe)('overlap behavior', () => {
241
+ (0, mocha_1.it)('adds startOverlap and endOverlap tokens between adjacent chunks', () => {
242
+ const chunkSize = 3;
243
+ const overlap = 2;
244
+ const splitter = makeSplitter({ chunkSize, chunkOverlap: overlap, separators: [], keepSeparators: false });
245
+ const text = 'abcdefghi'; // will be split by halves recursively then sized by budget
246
+ const chunks = splitter.split(text);
247
+ assert.ok(chunks.length >= 2);
248
+ for (let i = 1; i < chunks.length; i++) {
249
+ const prev = chunks[i - 1];
250
+ const curr = chunks[i];
251
+ const next = chunks[i + 1];
252
+ // startOverlap should match last 'overlap' tokens of prev
253
+ const prevTail = prev.tokens.slice(-overlap);
254
+ assert.deepStrictEqual(curr.startOverlap, prevTail.slice(0, curr.startOverlap.length));
255
+ // endOverlap should match first 'overlap' tokens of next (or [])
256
+ if (next) {
257
+ const nextHead = next.tokens.slice(0, overlap);
258
+ assert.deepStrictEqual(curr.endOverlap, nextHead.slice(0, curr.endOverlap.length));
259
+ }
260
+ else {
261
+ assert.deepStrictEqual(curr.endOverlap, []);
262
+ }
263
+ }
264
+ });
265
+ (0, mocha_1.it)('handles maximal overlap (chunkOverlap = chunkSize)', () => {
266
+ const chunkSize = 4;
267
+ const overlap = 4;
268
+ const splitter = makeSplitter({ chunkSize, chunkOverlap: overlap, separators: [], keepSeparators: false });
269
+ const text = 'abcdefgh';
270
+ const chunks = splitter.split(text);
271
+ assert.ok(chunks.length >= 2);
272
+ for (let i = 1; i < chunks.length; i++) {
273
+ const prevTail = chunks[i - 1].tokens.slice(-overlap);
274
+ assert.deepStrictEqual(chunks[i].startOverlap, prevTail.slice(0, chunks[i].startOverlap.length));
275
+ }
276
+ });
277
+ });
278
+ (0, mocha_1.describe)('docType-specific separators coverage', () => {
279
+ const docTypes = [
280
+ 'cpp',
281
+ 'go',
282
+ 'typescript', // covers java/c#/cs/ts/tsx/typescript grouped case
283
+ 'javascript',
284
+ 'php',
285
+ 'proto',
286
+ 'python',
287
+ 'rst',
288
+ 'ruby',
289
+ 'rust',
290
+ 'scala',
291
+ 'swift',
292
+ 'markdown',
293
+ 'latex',
294
+ 'html',
295
+ 'sol',
296
+ // default/fallback
297
+ '__default__',
298
+ ];
299
+ for (const dt of docTypes) {
300
+ (0, mocha_1.it)(`constructs with docType: ${dt}`, () => {
301
+ const opts = dt === '__default__' ? {} : { docType: dt };
302
+ const splitter = new TextSplitter_1.TextSplitter(Object.assign({ chunkSize: 64, chunkOverlap: 0, tokenizer: charTokenizer }, opts));
303
+ const chunks = splitter.split('sample');
304
+ assert.ok(chunks.length >= 1);
305
+ });
306
+ }
307
+ });
308
+ (0, mocha_1.describe)('tokenizer injection behavior', () => {
309
+ (0, mocha_1.it)('respects a custom tokenizer that alters token counts', () => {
310
+ // Tokenizer that treats every character as two tokens (simulate heavier tokenization)
311
+ const heavyTokenizer = {
312
+ encode(text) {
313
+ const out = [];
314
+ for (const c of Array.from(text)) {
315
+ const code = c.codePointAt(0);
316
+ out.push(code, code + 1); // 2 tokens per char
317
+ }
318
+ return out;
319
+ },
320
+ decode(tokens) {
321
+ // Decode by taking every other token
322
+ const chars = [];
323
+ for (let i = 0; i < tokens.length; i += 2) {
324
+ chars.push(tokens[i]);
325
+ }
326
+ return String.fromCodePoint(...chars);
327
+ },
328
+ };
329
+ const splitter = new TextSplitter_1.TextSplitter({ chunkSize: 6, chunkOverlap: 0, tokenizer: heavyTokenizer });
330
+ const text = 'abcdef'; // 6 chars -> 12 tokens -> will require splitting
331
+ const chunks = splitter.split(text);
332
+ assert.ok(chunks.length > 1, 'heavier tokenization should force more chunks');
333
+ assert.strictEqual(joinTexts(chunks, ''), text);
334
+ });
335
+ });
336
+ });
337
+ //# sourceMappingURL=TextSplitter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextSplitter.spec.js","sourceRoot":"","sources":["../src/TextSplitter.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { EmbeddingsModel, EmbeddingsResponse } from "./types";
2
+ import { TransformersTokenizer } from "./TransformersTokenizer";
3
+ /**
4
+ * Configuration options for TransformersEmbeddings.
5
+ */
6
+ export interface TransformersEmbeddingsOptions {
7
+ /**
8
+ * Optional. Model name/path to use for embeddings.
9
+ * @remarks
10
+ * Common models:
11
+ * - 'Xenova/all-MiniLM-L6-v2' (384 dimensions, fast, good quality)
12
+ * - 'Xenova/bge-small-en-v1.5' (384 dimensions, better quality)
13
+ * - 'Xenova/bge-base-en-v1.5' (768 dimensions, best quality)
14
+ * @default 'Xenova/all-MiniLM-L6-v2'
15
+ */
16
+ model?: string;
17
+ /**
18
+ * Optional. Maximum number of tokens that can be sent to the embedding model.
19
+ * @remarks
20
+ * This affects batching behavior in LocalDocumentIndex.
21
+ * Most small models support 512 tokens.
22
+ * @default 512
23
+ */
24
+ maxTokens?: number;
25
+ /**
26
+ * Optional. Device to run inference on.
27
+ * @remarks
28
+ * - 'auto': Automatically select the best available device
29
+ * - 'gpu': Use GPU (WebGPU in browser, CUDA in Node.js if available)
30
+ * - 'cpu': Use CPU (most compatible)
31
+ * - 'wasm': Use WebAssembly
32
+ * @default 'auto'
33
+ */
34
+ device?: 'auto' | 'gpu' | 'cpu' | 'wasm';
35
+ /**
36
+ * Optional. Data type for model weights.
37
+ * @remarks
38
+ * - 'fp32': Full precision (best quality, largest size)
39
+ * - 'fp16': Half precision (good quality, smaller)
40
+ * - 'q8': 8-bit quantization (good quality, smaller)
41
+ * - 'q4': 4-bit quantization (fastest, smallest, lower quality)
42
+ * @default 'fp32'
43
+ */
44
+ dtype?: 'fp32' | 'fp16' | 'q8' | 'q4';
45
+ /**
46
+ * Optional. Whether to normalize embeddings to unit length.
47
+ * @default true
48
+ */
49
+ normalize?: boolean;
50
+ /**
51
+ * Optional. Pooling strategy for token embeddings.
52
+ * @remarks
53
+ * - 'mean': Mean pooling (default, recommended)
54
+ * - 'cls': Use [CLS] token embedding
55
+ * @default 'mean'
56
+ */
57
+ pooling?: 'mean' | 'cls';
58
+ /**
59
+ * Optional. Callback for tracking model download/load progress.
60
+ */
61
+ progressCallback?: (progress: {
62
+ status: string;
63
+ progress?: number;
64
+ file?: string;
65
+ }) => void;
66
+ }
67
+ /**
68
+ * An embeddings model using Transformers.js for local, offline inference.
69
+ * @remarks
70
+ * Requires @huggingface/transformers as a peer dependency.
71
+ * Use the static `create()` method to instantiate.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const embeddings = await TransformersEmbeddings.create({
76
+ * model: 'Xenova/all-MiniLM-L6-v2'
77
+ * });
78
+ *
79
+ * const index = new LocalDocumentIndex({
80
+ * folderPath: 'my-index',
81
+ * embeddings: embeddings,
82
+ * tokenizer: embeddings.getTokenizer()
83
+ * });
84
+ * ```
85
+ */
86
+ export declare class TransformersEmbeddings implements EmbeddingsModel {
87
+ private readonly _extractor;
88
+ private readonly _tokenizer;
89
+ private readonly _options;
90
+ readonly maxTokens: number;
91
+ /**
92
+ * Private constructor - use TransformersEmbeddings.create() instead.
93
+ */
94
+ private constructor();
95
+ /**
96
+ * Creates a new TransformersEmbeddings instance.
97
+ * @param options Configuration options.
98
+ * @returns Promise resolving to initialized TransformersEmbeddings instance.
99
+ * @throws Error if @huggingface/transformers is not installed.
100
+ */
101
+ static create(options?: TransformersEmbeddingsOptions): Promise<TransformersEmbeddings>;
102
+ /**
103
+ * Returns a tokenizer that uses the same tokenization as this embedding model.
104
+ * @remarks
105
+ * Use this tokenizer with LocalDocumentIndex to ensure text chunking
106
+ * aligns with the embedding model's token boundaries.
107
+ * @returns TransformersTokenizer instance.
108
+ */
109
+ getTokenizer(): TransformersTokenizer;
110
+ /**
111
+ * Creates embeddings for the given inputs.
112
+ * @param inputs Text inputs to create embeddings for.
113
+ * @returns EmbeddingsResponse with status and generated embeddings.
114
+ */
115
+ createEmbeddings(inputs: string | string[]): Promise<EmbeddingsResponse>;
116
+ /**
117
+ * Returns the model name being used.
118
+ */
119
+ get model(): string;
120
+ }
121
+ //# sourceMappingURL=TransformersEmbeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformersEmbeddings.d.ts","sourceRoot":"","sources":["../src/TransformersEmbeddings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAYhE;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAEzC;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8H;IAEvJ,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,OAAO;IAWP;;;;;OAKG;WACiB,MAAM,CAAC,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiDpG;;;;;;OAMG;IACI,YAAY,IAAI,qBAAqB;IAI5C;;;;OAIG;IACU,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkCrF;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;CACJ"}